summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers')
-rw-r--r--src/mame/drivers/1942.cpp117
-rw-r--r--src/mame/drivers/1943.cpp70
-rw-r--r--src/mame/drivers/1945kiii.cpp73
-rw-r--r--src/mame/drivers/20pacgal.cpp144
-rw-r--r--src/mame/drivers/24cdjuke.cpp30
-rw-r--r--src/mame/drivers/2mindril.cpp41
-rw-r--r--src/mame/drivers/30test.cpp36
-rw-r--r--src/mame/drivers/39in1.cpp25
-rw-r--r--src/mame/drivers/3do.cpp23
-rw-r--r--src/mame/drivers/3x3puzzl.cpp35
-rw-r--r--src/mame/drivers/4004clk.cpp53
-rw-r--r--src/mame/drivers/40love.cpp135
-rw-r--r--src/mame/drivers/4dpi.cpp13
-rw-r--r--src/mame/drivers/4enlinea.cpp46
-rw-r--r--src/mame/drivers/4enraya.cpp64
-rw-r--r--src/mame/drivers/4roses.cpp13
-rw-r--r--src/mame/drivers/5clown.cpp58
-rw-r--r--src/mame/drivers/68ksbc.cpp13
-rw-r--r--src/mame/drivers/8080bw.cpp635
-rw-r--r--src/mame/drivers/88games.cpp60
-rw-r--r--src/mame/drivers/a5105.cpp55
-rw-r--r--src/mame/drivers/a51xx.cpp46
-rw-r--r--src/mame/drivers/a6809.cpp21
-rw-r--r--src/mame/drivers/a7150.cpp109
-rw-r--r--src/mame/drivers/a7800.cpp27
-rw-r--r--src/mame/drivers/aa310.cpp17
-rw-r--r--src/mame/drivers/abc1600.cpp54
-rw-r--r--src/mame/drivers/abc80.cpp36
-rw-r--r--src/mame/drivers/abc80x.cpp147
-rw-r--r--src/mame/drivers/ac1.cpp43
-rw-r--r--src/mame/drivers/accomm.cpp49
-rw-r--r--src/mame/drivers/ace.cpp69
-rw-r--r--src/mame/drivers/aceex.cpp7
-rw-r--r--src/mame/drivers/acefruit.cpp54
-rw-r--r--src/mame/drivers/aces1.cpp32
-rw-r--r--src/mame/drivers/acesp.cpp20
-rw-r--r--src/mame/drivers/acommand.cpp51
-rw-r--r--src/mame/drivers/acrnsys1.cpp13
-rw-r--r--src/mame/drivers/actfancr.cpp98
-rw-r--r--src/mame/drivers/acvirus.cpp9
-rw-r--r--src/mame/drivers/adam.cpp38
-rw-r--r--src/mame/drivers/adp.cpp149
-rw-r--r--src/mame/drivers/advision.cpp18
-rw-r--r--src/mame/drivers/aeroboto.cpp64
-rw-r--r--src/mame/drivers/aerofgt.cpp767
-rw-r--r--src/mame/drivers/agat.cpp48
-rw-r--r--src/mame/drivers/aim65.cpp29
-rw-r--r--src/mame/drivers/aim65_40.cpp21
-rw-r--r--src/mame/drivers/airbustr.cpp116
-rw-r--r--src/mame/drivers/airraid.cpp94
-rw-r--r--src/mame/drivers/ajax.cpp67
-rw-r--r--src/mame/drivers/akaiax80.cpp31
-rw-r--r--src/mame/drivers/albazc.cpp35
-rw-r--r--src/mame/drivers/albazg.cpp46
-rw-r--r--src/mame/drivers/aleck64.cpp73
-rw-r--r--src/mame/drivers/alesis.cpp79
-rw-r--r--src/mame/drivers/alesis_qs.cpp7
-rw-r--r--src/mame/drivers/alg.cpp77
-rw-r--r--src/mame/drivers/alien.cpp15
-rw-r--r--src/mame/drivers/aliens.cpp57
-rw-r--r--src/mame/drivers/alinvade.cpp39
-rw-r--r--src/mame/drivers/allied.cpp25
-rw-r--r--src/mame/drivers/alpha68k.cpp321
-rw-r--r--src/mame/drivers/alphasma.cpp47
-rw-r--r--src/mame/drivers/alphatpx.cpp132
-rw-r--r--src/mame/drivers/alphatro.cpp107
-rw-r--r--src/mame/drivers/altair.cpp26
-rw-r--r--src/mame/drivers/alto2.cpp23
-rw-r--r--src/mame/drivers/altos2.cpp30
-rw-r--r--src/mame/drivers/altos486.cpp36
-rw-r--r--src/mame/drivers/altos5.cpp64
-rw-r--r--src/mame/drivers/altos8600.cpp101
-rw-r--r--src/mame/drivers/alvg.cpp11
-rw-r--r--src/mame/drivers/amaticmg.cpp84
-rw-r--r--src/mame/drivers/ambush.cpp77
-rw-r--r--src/mame/drivers/amerihok.cpp18
-rw-r--r--src/mame/drivers/amico2k.cpp15
-rw-r--r--src/mame/drivers/amiga.cpp412
-rw-r--r--src/mame/drivers/ampex.cpp29
-rw-r--r--src/mame/drivers/ampoker2.cpp58
-rw-r--r--src/mame/drivers/ampro.cpp30
-rw-r--r--src/mame/drivers/ampscarp.cpp7
-rw-r--r--src/mame/drivers/amspdwy.cpp53
-rw-r--r--src/mame/drivers/amstr_pc.cpp56
-rw-r--r--src/mame/drivers/amstrad.cpp28
-rw-r--r--src/mame/drivers/amusco.cpp32
-rw-r--r--src/mame/drivers/amust.cpp44
-rw-r--r--src/mame/drivers/anes.cpp40
-rw-r--r--src/mame/drivers/angelkds.cpp91
-rw-r--r--src/mame/drivers/anzterm.cpp9
-rw-r--r--src/mame/drivers/apc.cpp52
-rw-r--r--src/mame/drivers/apexc.cpp9
-rw-r--r--src/mame/drivers/apf.cpp38
-rw-r--r--src/mame/drivers/apogee.cpp19
-rw-r--r--src/mame/drivers/apollo.cpp364
-rw-r--r--src/mame/drivers/apple1.cpp13
-rw-r--r--src/mame/drivers/apple2.cpp42
-rw-r--r--src/mame/drivers/apple2e.cpp345
-rw-r--r--src/mame/drivers/apple2gs.cpp5
-rw-r--r--src/mame/drivers/apple3.cpp7
-rw-r--r--src/mame/drivers/applix.cpp91
-rw-r--r--src/mame/drivers/appoooh.cpp65
-rw-r--r--src/mame/drivers/apricot.cpp46
-rw-r--r--src/mame/drivers/apricotf.cpp32
-rw-r--r--src/mame/drivers/apricotp.cpp66
-rw-r--r--src/mame/drivers/aquarium.cpp67
-rw-r--r--src/mame/drivers/aquarius.cpp36
-rw-r--r--src/mame/drivers/arabian.cpp26
-rw-r--r--src/mame/drivers/arachnid.cpp19
-rw-r--r--src/mame/drivers/arcadecl.cpp45
-rw-r--r--src/mame/drivers/arcadia.cpp9
-rw-r--r--src/mame/drivers/argo.cpp24
-rw-r--r--src/mame/drivers/argox.cpp12
-rw-r--r--src/mame/drivers/argus.cpp180
-rw-r--r--src/mame/drivers/aristmk4.cpp118
-rw-r--r--src/mame/drivers/aristmk5.cpp115
-rw-r--r--src/mame/drivers/aristmk6.cpp44
-rw-r--r--src/mame/drivers/arkanoid.cpp157
-rw-r--r--src/mame/drivers/armedf.cpp389
-rw-r--r--src/mame/drivers/arsystems.cpp72
-rw-r--r--src/mame/drivers/artmagic.cpp166
-rw-r--r--src/mame/drivers/ashnojoe.cpp71
-rw-r--r--src/mame/drivers/asst128.cpp24
-rw-r--r--src/mame/drivers/asterix.cpp64
-rw-r--r--src/mame/drivers/asteroid.cpp123
-rw-r--r--src/mame/drivers/astinvad.cpp62
-rw-r--r--src/mame/drivers/astrafr.cpp28
-rw-r--r--src/mame/drivers/astrcorp.cpp126
-rw-r--r--src/mame/drivers/astrocde.cpp275
-rw-r--r--src/mame/drivers/astrof.cpp115
-rw-r--r--src/mame/drivers/astrohome.cpp18
-rw-r--r--src/mame/drivers/astropc.cpp14
-rw-r--r--src/mame/drivers/asuka.cpp218
-rw-r--r--src/mame/drivers/at.cpp172
-rw-r--r--src/mame/drivers/atari400.cpp175
-rw-r--r--src/mame/drivers/atari_s1.cpp81
-rw-r--r--src/mame/drivers/atari_s2.cpp116
-rw-r--r--src/mame/drivers/atarifb.cpp164
-rw-r--r--src/mame/drivers/atarig1.cpp45
-rw-r--r--src/mame/drivers/atarig42.cpp51
-rw-r--r--src/mame/drivers/atarigt.cpp47
-rw-r--r--src/mame/drivers/atarigx2.cpp47
-rw-r--r--src/mame/drivers/atarist.cpp215
-rw-r--r--src/mame/drivers/atarisy1.cpp72
-rw-r--r--src/mame/drivers/atarisy2.cpp82
-rw-r--r--src/mame/drivers/atarisy4.cpp63
-rw-r--r--src/mame/drivers/atetris.cpp107
-rw-r--r--src/mame/drivers/atm.cpp53
-rw-r--r--src/mame/drivers/atom.cpp53
-rw-r--r--src/mame/drivers/atpci.cpp24
-rw-r--r--src/mame/drivers/atronic.cpp18
-rw-r--r--src/mame/drivers/att4425.cpp32
-rw-r--r--src/mame/drivers/att630.cpp19
-rw-r--r--src/mame/drivers/attache.cpp101
-rw-r--r--src/mame/drivers/attckufo.cpp35
-rw-r--r--src/mame/drivers/atvtrack.cpp64
-rw-r--r--src/mame/drivers/aussiebyte.cpp78
-rw-r--r--src/mame/drivers/avalnche.cpp52
-rw-r--r--src/mame/drivers/avigo.cpp61
-rw-r--r--src/mame/drivers/avt.cpp38
-rw-r--r--src/mame/drivers/ax20.cpp32
-rw-r--r--src/mame/drivers/aztarac.cpp46
-rw-r--r--src/mame/drivers/b16.cpp32
-rw-r--r--src/mame/drivers/b2m.cpp67
-rw-r--r--src/mame/drivers/babbage.cpp26
-rw-r--r--src/mame/drivers/backfire.cpp47
-rw-r--r--src/mame/drivers/badlands.cpp56
-rw-r--r--src/mame/drivers/badlandsbl.cpp58
-rw-r--r--src/mame/drivers/bagman.cpp71
-rw-r--r--src/mame/drivers/balsente.cpp89
-rw-r--r--src/mame/drivers/banctec.cpp28
-rw-r--r--src/mame/drivers/bankp.cpp38
-rw-r--r--src/mame/drivers/baraduke.cpp59
-rw-r--r--src/mame/drivers/barni.cpp37
-rw-r--r--src/mame/drivers/bartop52.cpp17
-rw-r--r--src/mame/drivers/basic52.cpp24
-rw-r--r--src/mame/drivers/batman.cpp51
-rw-r--r--src/mame/drivers/battlane.cpp27
-rw-r--r--src/mame/drivers/battlera.cpp50
-rw-r--r--src/mame/drivers/battlex.cpp55
-rw-r--r--src/mame/drivers/battlnts.cpp56
-rw-r--r--src/mame/drivers/bbc.cpp216
-rw-r--r--src/mame/drivers/bbcbc.cpp32
-rw-r--r--src/mame/drivers/bbusters.cpp125
-rw-r--r--src/mame/drivers/bcs3.cpp51
-rw-r--r--src/mame/drivers/beaminv.cpp28
-rw-r--r--src/mame/drivers/beathead.cpp55
-rw-r--r--src/mame/drivers/bebox.cpp78
-rw-r--r--src/mame/drivers/beehive.cpp30
-rw-r--r--src/mame/drivers/beezer.cpp63
-rw-r--r--src/mame/drivers/belatra.cpp7
-rw-r--r--src/mame/drivers/berzerk.cpp85
-rw-r--r--src/mame/drivers/besta.cpp17
-rw-r--r--src/mame/drivers/bestleag.cpp39
-rw-r--r--src/mame/drivers/beta.cpp11
-rw-r--r--src/mame/drivers/bfcobra.cpp86
-rw-r--r--src/mame/drivers/bfm_ad5.cpp19
-rw-r--r--src/mame/drivers/bfm_sc1.cpp75
-rw-r--r--src/mame/drivers/bfm_sc2.cpp108
-rw-r--r--src/mame/drivers/bfm_sc4.cpp16
-rw-r--r--src/mame/drivers/bfm_sc5.cpp73
-rw-r--r--src/mame/drivers/bfm_swp.cpp9
-rw-r--r--src/mame/drivers/bfmsys83.cpp7
-rw-r--r--src/mame/drivers/bfmsys85.cpp41
-rw-r--r--src/mame/drivers/bgt.cpp14
-rw-r--r--src/mame/drivers/big10.cpp30
-rw-r--r--src/mame/drivers/bigbord2.cpp54
-rw-r--r--src/mame/drivers/bigevglf.cpp127
-rw-r--r--src/mame/drivers/bigstrkb.cpp67
-rw-r--r--src/mame/drivers/binbug.cpp60
-rw-r--r--src/mame/drivers/bingo.cpp27
-rw-r--r--src/mame/drivers/bingoc.cpp75
-rw-r--r--src/mame/drivers/bingoman.cpp12
-rw-r--r--src/mame/drivers/bingor.cpp79
-rw-r--r--src/mame/drivers/bingowav.cpp62
-rw-r--r--src/mame/drivers/bionicc.cpp56
-rw-r--r--src/mame/drivers/bishi.cpp39
-rw-r--r--src/mame/drivers/bitgraph.cpp66
-rw-r--r--src/mame/drivers/bk.cpp58
-rw-r--r--src/mame/drivers/bking.cpp122
-rw-r--r--src/mame/drivers/blackt96.cpp44
-rw-r--r--src/mame/drivers/bladestl.cpp64
-rw-r--r--src/mame/drivers/blitz68k.cpp504
-rw-r--r--src/mame/drivers/blktiger.cpp108
-rw-r--r--src/mame/drivers/blmbycar.cpp82
-rw-r--r--src/mame/drivers/blockade.cpp28
-rw-r--r--src/mame/drivers/blockhl.cpp59
-rw-r--r--src/mame/drivers/blockout.cpp97
-rw-r--r--src/mame/drivers/bloodbro.cpp109
-rw-r--r--src/mame/drivers/blstroid.cpp47
-rw-r--r--src/mame/drivers/blueprnt.cpp72
-rw-r--r--src/mame/drivers/bmcbowl.cpp64
-rw-r--r--src/mame/drivers/bmcpokr.cpp133
-rw-r--r--src/mame/drivers/bmjr.cpp31
-rw-r--r--src/mame/drivers/bml3.cpp75
-rw-r--r--src/mame/drivers/bnstars.cpp98
-rw-r--r--src/mame/drivers/bntyhunt.cpp7
-rw-r--r--src/mame/drivers/bob85.cpp24
-rw-r--r--src/mame/drivers/bogeyman.cpp29
-rw-r--r--src/mame/drivers/bombjack.cpp69
-rw-r--r--src/mame/drivers/boogwing.cpp96
-rw-r--r--src/mame/drivers/bottom9.cpp60
-rw-r--r--src/mame/drivers/bowltry.cpp15
-rw-r--r--src/mame/drivers/boxer.cpp33
-rw-r--r--src/mame/drivers/bpmmicro.cpp34
-rw-r--r--src/mame/drivers/br8641.cpp32
-rw-r--r--src/mame/drivers/brkthru.cpp85
-rw-r--r--src/mame/drivers/bsktball.cpp31
-rw-r--r--src/mame/drivers/btime.cpp318
-rw-r--r--src/mame/drivers/btoads.cpp83
-rw-r--r--src/mame/drivers/bublbobl.cpp229
-rw-r--r--src/mame/drivers/buggychl.cpp96
-rw-r--r--src/mame/drivers/bullet.cpp72
-rw-r--r--src/mame/drivers/busicom.cpp57
-rw-r--r--src/mame/drivers/buster.cpp39
-rw-r--r--src/mame/drivers/bw12.cpp36
-rw-r--r--src/mame/drivers/bw2.cpp45
-rw-r--r--src/mame/drivers/bwidow.cpp121
-rw-r--r--src/mame/drivers/bwing.cpp95
-rw-r--r--src/mame/drivers/by17.cpp17
-rw-r--r--src/mame/drivers/by35.cpp32
-rw-r--r--src/mame/drivers/by6803.cpp24
-rw-r--r--src/mame/drivers/by68701.cpp15
-rw-r--r--src/mame/drivers/byvid.cpp91
-rw-r--r--src/mame/drivers/bzone.cpp88
-rw-r--r--src/mame/drivers/c10.cpp26
-rw-r--r--src/mame/drivers/c128.cpp42
-rw-r--r--src/mame/drivers/c64.cpp21
-rw-r--r--src/mame/drivers/c65.cpp33
-rw-r--r--src/mame/drivers/c80.cpp24
-rw-r--r--src/mame/drivers/c900.cpp29
-rw-r--r--src/mame/drivers/cabal.cpp270
-rw-r--r--src/mame/drivers/cabaret.cpp40
-rw-r--r--src/mame/drivers/calchase.cpp104
-rw-r--r--src/mame/drivers/calcune.cpp23
-rw-r--r--src/mame/drivers/calomega.cpp106
-rw-r--r--src/mame/drivers/calorie.cpp76
-rw-r--r--src/mame/drivers/camplynx.cpp151
-rw-r--r--src/mame/drivers/candela.cpp34
-rw-r--r--src/mame/drivers/canon_s80.cpp9
-rw-r--r--src/mame/drivers/canyon.cpp25
-rw-r--r--src/mame/drivers/capbowl.cpp69
-rw-r--r--src/mame/drivers/capcom.cpp7
-rw-r--r--src/mame/drivers/capr1.cpp15
-rw-r--r--src/mame/drivers/caprcyc.cpp7
-rw-r--r--src/mame/drivers/cardline.cpp40
-rw-r--r--src/mame/drivers/carjmbre.cpp57
-rw-r--r--src/mame/drivers/carpolo.cpp47
-rw-r--r--src/mame/drivers/carrera.cpp40
-rw-r--r--src/mame/drivers/casloopy.cpp31
-rw-r--r--src/mame/drivers/castle.cpp21
-rw-r--r--src/mame/drivers/caswin.cpp40
-rw-r--r--src/mame/drivers/cat.cpp53
-rw-r--r--src/mame/drivers/cave.cpp982
-rw-r--r--src/mame/drivers/cavepc.cpp14
-rw-r--r--src/mame/drivers/cb2001.cpp36
-rw-r--r--src/mame/drivers/cball.cpp51
-rw-r--r--src/mame/drivers/cbasebal.cpp61
-rw-r--r--src/mame/drivers/cbm2.cpp28
-rw-r--r--src/mame/drivers/cbuster.cpp69
-rw-r--r--src/mame/drivers/cc40.cpp39
-rw-r--r--src/mame/drivers/ccastles.cpp51
-rw-r--r--src/mame/drivers/cchance.cpp29
-rw-r--r--src/mame/drivers/cchasm.cpp59
-rw-r--r--src/mame/drivers/cclimber.cpp362
-rw-r--r--src/mame/drivers/ccs2810.cpp33
-rw-r--r--src/mame/drivers/ccs300.cpp38
-rw-r--r--src/mame/drivers/cd2650.cpp27
-rw-r--r--src/mame/drivers/cdc721.cpp20
-rw-r--r--src/mame/drivers/cdi.cpp99
-rw-r--r--src/mame/drivers/cedar_magnet.cpp79
-rw-r--r--src/mame/drivers/centiped.cpp358
-rw-r--r--src/mame/drivers/cesclass.cpp33
-rw-r--r--src/mame/drivers/cfx9850.cpp15
-rw-r--r--src/mame/drivers/cgc7900.cpp86
-rw-r--r--src/mame/drivers/cgenie.cpp38
-rw-r--r--src/mame/drivers/chaknpop.cpp41
-rw-r--r--src/mame/drivers/cham24.cpp17
-rw-r--r--src/mame/drivers/champbas.cpp149
-rw-r--r--src/mame/drivers/champbwl.cpp80
-rw-r--r--src/mame/drivers/chanbara.cpp31
-rw-r--r--src/mame/drivers/chance32.cpp50
-rw-r--r--src/mame/drivers/changela.cpp49
-rw-r--r--src/mame/drivers/channelf.cpp24
-rw-r--r--src/mame/drivers/chaos.cpp37
-rw-r--r--src/mame/drivers/cheekyms.cpp30
-rw-r--r--src/mame/drivers/chessmst.cpp54
-rw-r--r--src/mame/drivers/chesstrv.cpp41
-rw-r--r--src/mame/drivers/chexx.cpp30
-rw-r--r--src/mame/drivers/chihiro.cpp20
-rw-r--r--src/mame/drivers/chinagat.cpp120
-rw-r--r--src/mame/drivers/chinsan.cpp58
-rw-r--r--src/mame/drivers/chqflag.cpp87
-rw-r--r--src/mame/drivers/chsuper.cpp49
-rw-r--r--src/mame/drivers/cidelsa.cpp104
-rw-r--r--src/mame/drivers/cinemat.cpp78
-rw-r--r--src/mame/drivers/circus.cpp25
-rw-r--r--src/mame/drivers/circusc.cpp58
-rw-r--r--src/mame/drivers/cischeat.cpp641
-rw-r--r--src/mame/drivers/cit220.cpp39
-rw-r--r--src/mame/drivers/citycon.cpp44
-rw-r--r--src/mame/drivers/ckz80.cpp18
-rw-r--r--src/mame/drivers/clayshoo.cpp30
-rw-r--r--src/mame/drivers/clcd.cpp74
-rw-r--r--src/mame/drivers/cliffhgr.cpp50
-rw-r--r--src/mame/drivers/cloak.cpp62
-rw-r--r--src/mame/drivers/cloud9.cpp41
-rw-r--r--src/mame/drivers/clowndwn.cpp19
-rw-r--r--src/mame/drivers/clpoker.cpp47
-rw-r--r--src/mame/drivers/clshroad.cpp40
-rw-r--r--src/mame/drivers/cm1800.cpp24
-rw-r--r--src/mame/drivers/cmi.cpp86
-rw-r--r--src/mame/drivers/cmmb.cpp35
-rw-r--r--src/mame/drivers/cninja.cpp342
-rw-r--r--src/mame/drivers/cntsteer.cpp121
-rw-r--r--src/mame/drivers/cobra.cpp91
-rw-r--r--src/mame/drivers/coco12.cpp7
-rw-r--r--src/mame/drivers/coco3.cpp35
-rw-r--r--src/mame/drivers/cocoloco.cpp25
-rw-r--r--src/mame/drivers/codata.cpp19
-rw-r--r--src/mame/drivers/coinmstr.cpp179
-rw-r--r--src/mame/drivers/coinmvga.cpp54
-rw-r--r--src/mame/drivers/coleco.cpp47
-rw-r--r--src/mame/drivers/combatsc.cpp120
-rw-r--r--src/mame/drivers/comebaby.cpp22
-rw-r--r--src/mame/drivers/commando.cpp65
-rw-r--r--src/mame/drivers/compc.cpp35
-rw-r--r--src/mame/drivers/compgolf.cpp29
-rw-r--r--src/mame/drivers/compis.cpp59
-rw-r--r--src/mame/drivers/compucolor.cpp24
-rw-r--r--src/mame/drivers/comquest.cpp7
-rw-r--r--src/mame/drivers/comx35.cpp18
-rw-r--r--src/mame/drivers/concept.cpp19
-rw-r--r--src/mame/drivers/contra.cpp90
-rw-r--r--src/mame/drivers/controlid.cpp14
-rw-r--r--src/mame/drivers/coolpool.cpp117
-rw-r--r--src/mame/drivers/coolridr.cpp148
-rw-r--r--src/mame/drivers/cop01.cpp112
-rw-r--r--src/mame/drivers/cops.cpp44
-rw-r--r--src/mame/drivers/copsnrob.cpp45
-rw-r--r--src/mame/drivers/corona.cpp292
-rw-r--r--src/mame/drivers/cortex.cpp28
-rw-r--r--src/mame/drivers/cosmic.cpp115
-rw-r--r--src/mame/drivers/cosmicos.cpp22
-rw-r--r--src/mame/drivers/cp1.cpp9
-rw-r--r--src/mame/drivers/cps1.cpp204
-rw-r--r--src/mame/drivers/cps2.cpp121
-rw-r--r--src/mame/drivers/cps3.cpp88
-rw-r--r--src/mame/drivers/craft.cpp21
-rw-r--r--src/mame/drivers/crbaloon.cpp52
-rw-r--r--src/mame/drivers/crgolf.cpp113
-rw-r--r--src/mame/drivers/crimfght.cpp61
-rw-r--r--src/mame/drivers/crospang.cpp130
-rw-r--r--src/mame/drivers/crshrace.cpp71
-rw-r--r--src/mame/drivers/crvision.cpp52
-rw-r--r--src/mame/drivers/crystal.cpp164
-rw-r--r--src/mame/drivers/csplayh5.cpp22
-rw-r--r--src/mame/drivers/cswat.cpp21
-rw-r--r--src/mame/drivers/ct486.cpp12
-rw-r--r--src/mame/drivers/cubeqst.cpp43
-rw-r--r--src/mame/drivers/cubo.cpp40
-rw-r--r--src/mame/drivers/cultures.cpp100
-rw-r--r--src/mame/drivers/cupidon.cpp19
-rw-r--r--src/mame/drivers/cv1k.cpp55
-rw-r--r--src/mame/drivers/cvicny.cpp17
-rw-r--r--src/mame/drivers/cvs.cpp85
-rw-r--r--src/mame/drivers/cxgz80.cpp13
-rw-r--r--src/mame/drivers/cxhumax.cpp69
-rw-r--r--src/mame/drivers/cyberbal.cpp171
-rw-r--r--src/mame/drivers/cybertnk.cpp91
-rw-r--r--src/mame/drivers/cybiko.cpp78
-rw-r--r--src/mame/drivers/cybstorm.cpp54
-rw-r--r--src/mame/drivers/cyclemb.cpp65
-rw-r--r--src/mame/drivers/czk80.cpp34
-rw-r--r--src/mame/drivers/d400.cpp21
-rw-r--r--src/mame/drivers/d6800.cpp15
-rw-r--r--src/mame/drivers/d6809.cpp17
-rw-r--r--src/mame/drivers/d9final.cpp50
-rw-r--r--src/mame/drivers/dacholer.cpp127
-rw-r--r--src/mame/drivers/dai.cpp30
-rw-r--r--src/mame/drivers/dai3wksi.cpp21
-rw-r--r--src/mame/drivers/dambustr.cpp73
-rw-r--r--src/mame/drivers/darius.cpp126
-rw-r--r--src/mame/drivers/darkmist.cpp58
-rw-r--r--src/mame/drivers/darkseal.cpp70
-rw-r--r--src/mame/drivers/daruma.cpp20
-rw-r--r--src/mame/drivers/dassault.cpp90
-rw-r--r--src/mame/drivers/datum.cpp21
-rw-r--r--src/mame/drivers/dblcrown.cpp60
-rw-r--r--src/mame/drivers/dblewing.cpp64
-rw-r--r--src/mame/drivers/dbox.cpp17
-rw-r--r--src/mame/drivers/dbz.cpp93
-rw-r--r--src/mame/drivers/dccons.cpp79
-rw-r--r--src/mame/drivers/dcheese.cpp44
-rw-r--r--src/mame/drivers/dcon.cpp52
-rw-r--r--src/mame/drivers/dct11em.cpp13
-rw-r--r--src/mame/drivers/dday.cpp33
-rw-r--r--src/mame/drivers/ddayjlc.cpp72
-rw-r--r--src/mame/drivers/ddealer.cpp39
-rw-r--r--src/mame/drivers/ddenlovr.cpp1966
-rw-r--r--src/mame/drivers/ddragon.cpp166
-rw-r--r--src/mame/drivers/ddragon3.cpp196
-rw-r--r--src/mame/drivers/ddribble.cpp80
-rw-r--r--src/mame/drivers/de_2.cpp19
-rw-r--r--src/mame/drivers/deadang.cpp110
-rw-r--r--src/mame/drivers/dec0.cpp514
-rw-r--r--src/mame/drivers/dec8.cpp649
-rw-r--r--src/mame/drivers/deco156.cpp72
-rw-r--r--src/mame/drivers/deco32.cpp541
-rw-r--r--src/mame/drivers/deco_ld.cpp58
-rw-r--r--src/mame/drivers/deco_mlc.cpp90
-rw-r--r--src/mame/drivers/decocass.cpp104
-rw-r--r--src/mame/drivers/dectalk.cpp47
-rw-r--r--src/mame/drivers/decwritr.cpp34
-rw-r--r--src/mame/drivers/deniam.cpp98
-rw-r--r--src/mame/drivers/deshoros.cpp27
-rw-r--r--src/mame/drivers/destroyr.cpp31
-rw-r--r--src/mame/drivers/dfruit.cpp52
-rw-r--r--src/mame/drivers/dgn_beta.cpp69
-rw-r--r--src/mame/drivers/dgpix.cpp38
-rw-r--r--src/mame/drivers/diablo1300.cpp14
-rw-r--r--src/mame/drivers/didact.cpp28
-rw-r--r--src/mame/drivers/dietgo.cpp56
-rw-r--r--src/mame/drivers/digel804.cpp114
-rw-r--r--src/mame/drivers/digijet.cpp5
-rw-r--r--src/mame/drivers/dim68k.cpp49
-rw-r--r--src/mame/drivers/discoboy.cpp70
-rw-r--r--src/mame/drivers/divebomb.cpp122
-rw-r--r--src/mame/drivers/diverboy.cpp42
-rw-r--r--src/mame/drivers/djboy.cpp102
-rw-r--r--src/mame/drivers/djmain.cpp109
-rw-r--r--src/mame/drivers/dkong.cpp230
-rw-r--r--src/mame/drivers/dlair.cpp75
-rw-r--r--src/mame/drivers/dlair2.cpp14
-rw-r--r--src/mame/drivers/dm7000.cpp27
-rw-r--r--src/mame/drivers/dmax8000.cpp38
-rw-r--r--src/mame/drivers/dmndrby.cpp52
-rw-r--r--src/mame/drivers/dms5000.cpp20
-rw-r--r--src/mame/drivers/dms86.cpp34
-rw-r--r--src/mame/drivers/dmv.cpp67
-rw-r--r--src/mame/drivers/docastle.cpp153
-rw-r--r--src/mame/drivers/dogfgt.cpp52
-rw-r--r--src/mame/drivers/dolphunk.cpp28
-rw-r--r--src/mame/drivers/dominob.cpp48
-rw-r--r--src/mame/drivers/dooyong.cpp355
-rw-r--r--src/mame/drivers/dorachan.cpp38
-rw-r--r--src/mame/drivers/dotrikun.cpp22
-rw-r--r--src/mame/drivers/dps1.cpp50
-rw-r--r--src/mame/drivers/dragon.cpp5
-rw-r--r--src/mame/drivers/dragrace.cpp39
-rw-r--r--src/mame/drivers/dreambal.cpp37
-rw-r--r--src/mame/drivers/dreamwld.cpp60
-rw-r--r--src/mame/drivers/drgnmst.cpp47
-rw-r--r--src/mame/drivers/dribling.cpp26
-rw-r--r--src/mame/drivers/drmicro.cpp34
-rw-r--r--src/mame/drivers/drtomy.cpp29
-rw-r--r--src/mame/drivers/drw80pkr.cpp14
-rw-r--r--src/mame/drivers/dsb46.cpp26
-rw-r--r--src/mame/drivers/dual68.cpp53
-rw-r--r--src/mame/drivers/duet16.cpp58
-rw-r--r--src/mame/drivers/dunhuang.cpp81
-rw-r--r--src/mame/drivers/dvk_kcgd.cpp25
-rw-r--r--src/mame/drivers/dvk_ksm.cpp34
-rw-r--r--src/mame/drivers/dwarfd.cpp71
-rw-r--r--src/mame/drivers/dynadice.cpp58
-rw-r--r--src/mame/drivers/dynax.cpp1023
-rw-r--r--src/mame/drivers/dynduke.cpp132
-rw-r--r--src/mame/drivers/e100.cpp15
-rw-r--r--src/mame/drivers/eacc.cpp17
-rw-r--r--src/mame/drivers/ec184x.cpp66
-rw-r--r--src/mame/drivers/ec65.cpp44
-rw-r--r--src/mame/drivers/ecoinf1.cpp18
-rw-r--r--src/mame/drivers/ecoinf2.cpp32
-rw-r--r--src/mame/drivers/ecoinf3.cpp40
-rw-r--r--src/mame/drivers/ecoinfr.cpp78
-rw-r--r--src/mame/drivers/egghunt.cpp57
-rw-r--r--src/mame/drivers/einstein.cpp48
-rw-r--r--src/mame/drivers/electron.cpp17
-rw-r--r--src/mame/drivers/elekscmp.cpp17
-rw-r--r--src/mame/drivers/elektronmono.cpp15
-rw-r--r--src/mame/drivers/elf.cpp24
-rw-r--r--src/mame/drivers/elwro800.cpp59
-rw-r--r--src/mame/drivers/embargo.cpp31
-rw-r--r--src/mame/drivers/enigma2.cpp96
-rw-r--r--src/mame/drivers/enmirage.cpp23
-rw-r--r--src/mame/drivers/eolith.cpp41
-rw-r--r--src/mame/drivers/eolith16.cpp27
-rw-r--r--src/mame/drivers/ep64.cpp47
-rw-r--r--src/mame/drivers/epos.cpp66
-rw-r--r--src/mame/drivers/eprom.cpp123
-rw-r--r--src/mame/drivers/equites.cpp120
-rw-r--r--src/mame/drivers/ertictac.cpp23
-rw-r--r--src/mame/drivers/esd16.cpp221
-rw-r--r--src/mame/drivers/esh.cpp38
-rw-r--r--src/mame/drivers/espial.cpp110
-rw-r--r--src/mame/drivers/esprit.cpp34
-rw-r--r--src/mame/drivers/esq1.cpp44
-rw-r--r--src/mame/drivers/esq5505.cpp84
-rw-r--r--src/mame/drivers/esqasr.cpp22
-rw-r--r--src/mame/drivers/esqkt.cpp17
-rw-r--r--src/mame/drivers/esqmr.cpp7
-rw-r--r--src/mame/drivers/esripsys.cpp92
-rw-r--r--src/mame/drivers/et3400.cpp19
-rw-r--r--src/mame/drivers/eti660.cpp30
-rw-r--r--src/mame/drivers/ettrivia.cpp32
-rw-r--r--src/mame/drivers/eurocom2.cpp40
-rw-r--r--src/mame/drivers/europc.cpp26
-rw-r--r--src/mame/drivers/evmbug.cpp20
-rw-r--r--src/mame/drivers/excali64.cpp52
-rw-r--r--src/mame/drivers/exedexes.cpp62
-rw-r--r--src/mame/drivers/exelv.cpp60
-rw-r--r--src/mame/drivers/exerion.cpp48
-rw-r--r--src/mame/drivers/exidy.cpp204
-rw-r--r--src/mame/drivers/exidy440.cpp70
-rw-r--r--src/mame/drivers/exp85.cpp30
-rw-r--r--src/mame/drivers/expro02.cpp323
-rw-r--r--src/mame/drivers/exprraid.cpp69
-rw-r--r--src/mame/drivers/exterm.cpp84
-rw-r--r--src/mame/drivers/extrema.cpp14
-rw-r--r--src/mame/drivers/exzisus.cpp94
-rw-r--r--src/mame/drivers/ez2d.cpp5
-rw-r--r--src/mame/drivers/f-32.cpp68
-rw-r--r--src/mame/drivers/f1gp.cpp217
-rw-r--r--src/mame/drivers/famibox.cpp23
-rw-r--r--src/mame/drivers/fantland.cpp171
-rw-r--r--src/mame/drivers/fanucs15.cpp48
-rw-r--r--src/mame/drivers/fanucspmg.cpp97
-rw-r--r--src/mame/drivers/fastfred.cpp128
-rw-r--r--src/mame/drivers/fastinvaders.cpp102
-rw-r--r--src/mame/drivers/fastlane.cpp43
-rw-r--r--src/mame/drivers/fb01.cpp32
-rw-r--r--src/mame/drivers/fc100.cpp54
-rw-r--r--src/mame/drivers/fccpu30.cpp35
-rw-r--r--src/mame/drivers/fcombat.cpp66
-rw-r--r--src/mame/drivers/fcrash.cpp482
-rw-r--r--src/mame/drivers/feversoc.cpp29
-rw-r--r--src/mame/drivers/fgoal.cpp67
-rw-r--r--src/mame/drivers/fidel6502.cpp246
-rw-r--r--src/mame/drivers/fidel68k.cpp158
-rw-r--r--src/mame/drivers/fidelmcs48.cpp7
-rw-r--r--src/mame/drivers/fidelz80.cpp140
-rw-r--r--src/mame/drivers/finalizr.cpp71
-rw-r--r--src/mame/drivers/fireball.cpp20
-rw-r--r--src/mame/drivers/firebeat.cpp100
-rw-r--r--src/mame/drivers/firefox.cpp86
-rw-r--r--src/mame/drivers/firetrap.cpp96
-rw-r--r--src/mame/drivers/firetrk.cpp151
-rw-r--r--src/mame/drivers/fitfight.cpp103
-rw-r--r--src/mame/drivers/fk1.cpp42
-rw-r--r--src/mame/drivers/flicker.cpp47
-rw-r--r--src/mame/drivers/flipjack.cpp74
-rw-r--r--src/mame/drivers/flkatck.cpp48
-rw-r--r--src/mame/drivers/flower.cpp62
-rw-r--r--src/mame/drivers/flstory.cpp139
-rw-r--r--src/mame/drivers/flyball.cpp35
-rw-r--r--src/mame/drivers/fm7.cpp553
-rw-r--r--src/mame/drivers/fmtowns.cpp128
-rw-r--r--src/mame/drivers/fontwriter.cpp24
-rw-r--r--src/mame/drivers/foodf.cpp38
-rw-r--r--src/mame/drivers/force68k.cpp29
-rw-r--r--src/mame/drivers/forte2.cpp28
-rw-r--r--src/mame/drivers/fortecar.cpp36
-rw-r--r--src/mame/drivers/fp1100.cpp51
-rw-r--r--src/mame/drivers/fp200.cpp24
-rw-r--r--src/mame/drivers/fp6000.cpp40
-rw-r--r--src/mame/drivers/freekick.cpp209
-rw-r--r--src/mame/drivers/fresh.cpp55
-rw-r--r--src/mame/drivers/fromanc2.cpp253
-rw-r--r--src/mame/drivers/fromance.cpp155
-rw-r--r--src/mame/drivers/fruitpc.cpp40
-rw-r--r--src/mame/drivers/ft68m.cpp25
-rw-r--r--src/mame/drivers/funkball.cpp77
-rw-r--r--src/mame/drivers/funkybee.cpp38
-rw-r--r--src/mame/drivers/funkyjet.cpp53
-rw-r--r--src/mame/drivers/funtech.cpp60
-rw-r--r--src/mame/drivers/funworld.cpp306
-rw-r--r--src/mame/drivers/funybubl.cpp53
-rw-r--r--src/mame/drivers/fuukifg2.cpp71
-rw-r--r--src/mame/drivers/fuukifg3.cpp77
-rw-r--r--src/mame/drivers/g627.cpp28
-rw-r--r--src/mame/drivers/gaelco.cpp175
-rw-r--r--src/mame/drivers/gaelco2.cpp220
-rw-r--r--src/mame/drivers/gaelco3d.cpp133
-rw-r--r--src/mame/drivers/gaelcopc.cpp7
-rw-r--r--src/mame/drivers/gaiden.cpp227
-rw-r--r--src/mame/drivers/gal3.cpp211
-rw-r--r--src/mame/drivers/galaga.cpp177
-rw-r--r--src/mame/drivers/galastrm.cpp33
-rw-r--r--src/mame/drivers/galaxi.cpp66
-rw-r--r--src/mame/drivers/galaxia.cpp74
-rw-r--r--src/mame/drivers/galaxian.cpp1100
-rw-r--r--src/mame/drivers/galaxold.cpp1135
-rw-r--r--src/mame/drivers/galaxy.cpp47
-rw-r--r--src/mame/drivers/galeb.cpp29
-rw-r--r--src/mame/drivers/galgame.cpp19
-rw-r--r--src/mame/drivers/galgames.cpp75
-rw-r--r--src/mame/drivers/galivan.cpp120
-rw-r--r--src/mame/drivers/galpani2.cpp102
-rw-r--r--src/mame/drivers/galpani3.cpp59
-rw-r--r--src/mame/drivers/galpanic.cpp57
-rw-r--r--src/mame/drivers/galspnbl.cpp66
-rw-r--r--src/mame/drivers/gamate.cpp27
-rw-r--r--src/mame/drivers/gambl186.cpp44
-rw-r--r--src/mame/drivers/gamecom.cpp31
-rw-r--r--src/mame/drivers/gamecstl.cpp48
-rw-r--r--src/mame/drivers/gamecube.cpp11
-rw-r--r--src/mame/drivers/gameking.cpp21
-rw-r--r--src/mame/drivers/gameplan.cpp49
-rw-r--r--src/mame/drivers/gamepock.cpp15
-rw-r--r--src/mame/drivers/gammagic.cpp44
-rw-r--r--src/mame/drivers/gamtor.cpp25
-rw-r--r--src/mame/drivers/gaplus.cpp59
-rw-r--r--src/mame/drivers/gatron.cpp26
-rw-r--r--src/mame/drivers/gauntlet.cpp84
-rw-r--r--src/mame/drivers/gb.cpp144
-rw-r--r--src/mame/drivers/gba.cpp29
-rw-r--r--src/mame/drivers/gberet.cpp123
-rw-r--r--src/mame/drivers/gcpinbal.cpp37
-rw-r--r--src/mame/drivers/gei.cpp303
-rw-r--r--src/mame/drivers/geneve.cpp20
-rw-r--r--src/mame/drivers/geniusiq.cpp43
-rw-r--r--src/mame/drivers/genpc.cpp20
-rw-r--r--src/mame/drivers/ggconnie.cpp55
-rw-r--r--src/mame/drivers/ghosteo.cpp32
-rw-r--r--src/mame/drivers/giclassic.cpp58
-rw-r--r--src/mame/drivers/gijoe.cpp68
-rw-r--r--src/mame/drivers/gimix.cpp72
-rw-r--r--src/mame/drivers/ginganin.cpp40
-rw-r--r--src/mame/drivers/gizmondo.cpp17
-rw-r--r--src/mame/drivers/gkigt.cpp94
-rw-r--r--src/mame/drivers/gladiatr.cpp134
-rw-r--r--src/mame/drivers/glasgow.cpp71
-rw-r--r--src/mame/drivers/glass.cpp61
-rw-r--r--src/mame/drivers/globalfr.cpp13
-rw-r--r--src/mame/drivers/globalvr.cpp7
-rw-r--r--src/mame/drivers/gluck2.cpp33
-rw-r--r--src/mame/drivers/gmaster.cpp9
-rw-r--r--src/mame/drivers/gng.cpp117
-rw-r--r--src/mame/drivers/go2000.cpp45
-rw-r--r--src/mame/drivers/goal92.cpp58
-rw-r--r--src/mame/drivers/goindol.cpp66
-rw-r--r--src/mame/drivers/gokidetor.cpp36
-rw-r--r--src/mame/drivers/goldngam.cpp44
-rw-r--r--src/mame/drivers/goldnpkr.cpp316
-rw-r--r--src/mame/drivers/goldstar.cpp690
-rw-r--r--src/mame/drivers/gomoku.cpp25
-rw-r--r--src/mame/drivers/good.cpp23
-rw-r--r--src/mame/drivers/goodejan.cpp70
-rw-r--r--src/mame/drivers/gotcha.cpp54
-rw-r--r--src/mame/drivers/gottlieb.cpp82
-rw-r--r--src/mame/drivers/gotya.cpp31
-rw-r--r--src/mame/drivers/goupil.cpp84
-rw-r--r--src/mame/drivers/gp2x.cpp23
-rw-r--r--src/mame/drivers/gp32.cpp47
-rw-r--r--src/mame/drivers/gp_1.cpp22
-rw-r--r--src/mame/drivers/gp_2.cpp22
-rw-r--r--src/mame/drivers/gpworld.cpp40
-rw-r--r--src/mame/drivers/gradius3.cpp87
-rw-r--r--src/mame/drivers/grchamp.cpp105
-rw-r--r--src/mame/drivers/grfd2301.cpp20
-rw-r--r--src/mame/drivers/gridcomp.cpp63
-rw-r--r--src/mame/drivers/gridlee.cpp36
-rw-r--r--src/mame/drivers/groundfx.cpp35
-rw-r--r--src/mame/drivers/gstream.cpp92
-rw-r--r--src/mame/drivers/gstriker.cpp76
-rw-r--r--src/mame/drivers/gsword.cpp103
-rw-r--r--src/mame/drivers/gticlub.cpp148
-rw-r--r--src/mame/drivers/gts1.cpp39
-rw-r--r--src/mame/drivers/gts3.cpp15
-rw-r--r--src/mame/drivers/gts3a.cpp40
-rw-r--r--src/mame/drivers/gts80.cpp23
-rw-r--r--src/mame/drivers/gts80a.cpp41
-rw-r--r--src/mame/drivers/gts80b.cpp23
-rw-r--r--src/mame/drivers/guab.cpp39
-rw-r--r--src/mame/drivers/gumbo.cpp65
-rw-r--r--src/mame/drivers/gunbustr.cpp27
-rw-r--r--src/mame/drivers/gundealr.cpp68
-rw-r--r--src/mame/drivers/gunpey.cpp34
-rw-r--r--src/mame/drivers/gunsmoke.cpp58
-rw-r--r--src/mame/drivers/gyruss.cpp124
-rw-r--r--src/mame/drivers/h19.cpp42
-rw-r--r--src/mame/drivers/h8.cpp34
-rw-r--r--src/mame/drivers/h89.cpp28
-rw-r--r--src/mame/drivers/halleys.cpp80
-rw-r--r--src/mame/drivers/hanaawas.cpp40
-rw-r--r--src/mame/drivers/hankin.cpp32
-rw-r--r--src/mame/drivers/hapyfish.cpp7
-rw-r--r--src/mame/drivers/harddriv.cpp315
-rw-r--r--src/mame/drivers/harriet.cpp25
-rw-r--r--src/mame/drivers/hazelgr.cpp34
-rw-r--r--src/mame/drivers/hazeltin.cpp32
-rw-r--r--src/mame/drivers/hcastle.cpp78
-rw-r--r--src/mame/drivers/headonb.cpp22
-rw-r--r--src/mame/drivers/hec2hrp.cpp163
-rw-r--r--src/mame/drivers/hexion.cpp106
-rw-r--r--src/mame/drivers/hideseek.cpp17
-rw-r--r--src/mame/drivers/higemaru.cpp31
-rw-r--r--src/mame/drivers/highvdeo.cpp307
-rw-r--r--src/mame/drivers/hikaru.cpp66
-rw-r--r--src/mame/drivers/himesiki.cpp68
-rw-r--r--src/mame/drivers/hitme.cpp54
-rw-r--r--src/mame/drivers/hitpoker.cpp50
-rw-r--r--src/mame/drivers/hk68v10.cpp27
-rw-r--r--src/mame/drivers/hnayayoi.cpp147
-rw-r--r--src/mame/drivers/hng64.cpp59
-rw-r--r--src/mame/drivers/holeland.cpp61
-rw-r--r--src/mame/drivers/homedata.cpp206
-rw-r--r--src/mame/drivers/homelab.cpp91
-rw-r--r--src/mame/drivers/homerun.cpp40
-rw-r--r--src/mame/drivers/homez80.cpp24
-rw-r--r--src/mame/drivers/horizon.cpp30
-rw-r--r--src/mame/drivers/hornet.cpp123
-rw-r--r--src/mame/drivers/hotblock.cpp26
-rw-r--r--src/mame/drivers/hotstuff.cpp31
-rw-r--r--src/mame/drivers/hp16500.cpp130
-rw-r--r--src/mame/drivers/hp2620.cpp32
-rw-r--r--src/mame/drivers/hp2640.cpp50
-rw-r--r--src/mame/drivers/hp48.cpp7
-rw-r--r--src/mame/drivers/hp49gp.cpp15
-rw-r--r--src/mame/drivers/hp64k.cpp40
-rw-r--r--src/mame/drivers/hp700.cpp32
-rw-r--r--src/mame/drivers/hp80.cpp52
-rw-r--r--src/mame/drivers/hp9845.cpp36
-rw-r--r--src/mame/drivers/hp9k.cpp33
-rw-r--r--src/mame/drivers/hp9k_3xx.cpp121
-rw-r--r--src/mame/drivers/hp_ipc.cpp54
-rw-r--r--src/mame/drivers/hprot1.cpp22
-rw-r--r--src/mame/drivers/hpz80unk.cpp42
-rw-r--r--src/mame/drivers/ht68k.cpp15
-rw-r--r--src/mame/drivers/huebler.cpp36
-rw-r--r--src/mame/drivers/hunter2.cpp65
-rw-r--r--src/mame/drivers/hvyunit.cpp104
-rw-r--r--src/mame/drivers/hx20.cpp75
-rw-r--r--src/mame/drivers/hyhoo.cpp42
-rw-r--r--src/mame/drivers/hyperscan.cpp19
-rw-r--r--src/mame/drivers/hyperspt.cpp134
-rw-r--r--src/mame/drivers/hyprduel.cpp104
-rw-r--r--src/mame/drivers/i7000.cpp26
-rw-r--r--src/mame/drivers/ibm3153.cpp16
-rw-r--r--src/mame/drivers/ibm6580.cpp60
-rw-r--r--src/mame/drivers/ibmpc.cpp20
-rw-r--r--src/mame/drivers/ibmpcjr.cpp80
-rw-r--r--src/mame/drivers/icatel.cpp39
-rw-r--r--src/mame/drivers/ice_bozopail.cpp7
-rw-r--r--src/mame/drivers/ice_tbd.cpp20
-rw-r--r--src/mame/drivers/icecold.cpp19
-rw-r--r--src/mame/drivers/ichiban.cpp14
-rw-r--r--src/mame/drivers/idsa.cpp52
-rw-r--r--src/mame/drivers/if800.cpp29
-rw-r--r--src/mame/drivers/igs009.cpp99
-rw-r--r--src/mame/drivers/igs011.cpp529
-rw-r--r--src/mame/drivers/igs017.cpp211
-rw-r--r--src/mame/drivers/igs_fear.cpp9
-rw-r--r--src/mame/drivers/igs_m027.cpp23
-rw-r--r--src/mame/drivers/igs_m036.cpp9
-rw-r--r--src/mame/drivers/igspc.cpp12
-rw-r--r--src/mame/drivers/igspoker.cpp136
-rw-r--r--src/mame/drivers/ikki.cpp48
-rw-r--r--src/mame/drivers/imds.cpp22
-rw-r--r--src/mame/drivers/imds2.cpp88
-rw-r--r--src/mame/drivers/imolagp.cpp68
-rw-r--r--src/mame/drivers/imsai.cpp44
-rw-r--r--src/mame/drivers/inder.cpp136
-rw-r--r--src/mame/drivers/inderp.cpp21
-rw-r--r--src/mame/drivers/indiana.cpp25
-rw-r--r--src/mame/drivers/indigo.cpp47
-rw-r--r--src/mame/drivers/indy_indigo2.cpp41
-rw-r--r--src/mame/drivers/instantm.cpp47
-rw-r--r--src/mame/drivers/instruct.cpp51
-rw-r--r--src/mame/drivers/inteladv.cpp13
-rw-r--r--src/mame/drivers/intellec4.cpp30
-rw-r--r--src/mame/drivers/interact.cpp25
-rw-r--r--src/mame/drivers/interpro.cpp184
-rw-r--r--src/mame/drivers/intrscti.cpp46
-rw-r--r--src/mame/drivers/intv.cpp288
-rw-r--r--src/mame/drivers/inufuku.cpp77
-rw-r--r--src/mame/drivers/invqix.cpp42
-rw-r--r--src/mame/drivers/ipc.cpp32
-rw-r--r--src/mame/drivers/ipds.cpp28
-rw-r--r--src/mame/drivers/iq151.cpp38
-rw-r--r--src/mame/drivers/iqblock.cpp40
-rw-r--r--src/mame/drivers/iqunlim.cpp9
-rw-r--r--src/mame/drivers/iris3130.cpp45
-rw-r--r--src/mame/drivers/irisha.cpp30
-rw-r--r--src/mame/drivers/irobot.cpp47
-rw-r--r--src/mame/drivers/ironhors.cpp159
-rw-r--r--src/mame/drivers/isbc.cpp177
-rw-r--r--src/mame/drivers/isbc8010.cpp56
-rw-r--r--src/mame/drivers/isbc8030.cpp32
-rw-r--r--src/mame/drivers/iskr103x.cpp18
-rw-r--r--src/mame/drivers/istellar.cpp84
-rw-r--r--src/mame/drivers/istrebiteli.cpp28
-rw-r--r--src/mame/drivers/itech32.cpp226
-rw-r--r--src/mame/drivers/itech8.cpp196
-rw-r--r--src/mame/drivers/itgambl2.cpp7
-rw-r--r--src/mame/drivers/itgambl3.cpp9
-rw-r--r--src/mame/drivers/itgamble.cpp9
-rw-r--r--src/mame/drivers/itt3030.cpp45
-rw-r--r--src/mame/drivers/jack.cpp133
-rw-r--r--src/mame/drivers/jackal.cpp54
-rw-r--r--src/mame/drivers/jackie.cpp68
-rw-r--r--src/mame/drivers/jackpool.cpp35
-rw-r--r--src/mame/drivers/jade.cpp28
-rw-r--r--src/mame/drivers/jaguar.cpp394
-rw-r--r--src/mame/drivers/jailbrek.cpp60
-rw-r--r--src/mame/drivers/jalmah.cpp82
-rw-r--r--src/mame/drivers/jangou.cpp176
-rw-r--r--src/mame/drivers/jankenmn.cpp28
-rw-r--r--src/mame/drivers/jantotsu.cpp30
-rw-r--r--src/mame/drivers/jchan.cpp56
-rw-r--r--src/mame/drivers/jclub2.cpp199
-rw-r--r--src/mame/drivers/jedi.cpp55
-rw-r--r--src/mame/drivers/jeutel.cpp66
-rw-r--r--src/mame/drivers/joctronic.cpp146
-rw-r--r--src/mame/drivers/jokrwild.cpp29
-rw-r--r--src/mame/drivers/jollyjgr.cpp72
-rw-r--r--src/mame/drivers/jongkyo.cpp51
-rw-r--r--src/mame/drivers/jonos.cpp19
-rw-r--r--src/mame/drivers/joystand.cpp49
-rw-r--r--src/mame/drivers/jp.cpp38
-rw-r--r--src/mame/drivers/jpmimpct.cpp99
-rw-r--r--src/mame/drivers/jpmmps.cpp30
-rw-r--r--src/mame/drivers/jpms80.cpp40
-rw-r--r--src/mame/drivers/jpmsru.cpp25
-rw-r--r--src/mame/drivers/jpmsys5.cpp76
-rw-r--r--src/mame/drivers/jpmsys7.cpp17
-rw-r--r--src/mame/drivers/jr100.cpp17
-rw-r--r--src/mame/drivers/jr200.cpp25
-rw-r--r--src/mame/drivers/jrpacman.cpp46
-rw-r--r--src/mame/drivers/jtc.cpp164
-rw-r--r--src/mame/drivers/jubilee.cpp26
-rw-r--r--src/mame/drivers/juicebox.cpp11
-rw-r--r--src/mame/drivers/jungleyo.cpp7
-rw-r--r--src/mame/drivers/junior.cpp17
-rw-r--r--src/mame/drivers/junofrst.cpp84
-rw-r--r--src/mame/drivers/jupace.cpp44
-rw-r--r--src/mame/drivers/jupiter.cpp45
-rw-r--r--src/mame/drivers/jvh.cpp30
-rw-r--r--src/mame/drivers/k1003.cpp34
-rw-r--r--src/mame/drivers/k8915.cpp28
-rw-r--r--src/mame/drivers/kaneko16.cpp514
-rw-r--r--src/mame/drivers/kangaroo.cpp53
-rw-r--r--src/mame/drivers/karnov.cpp69
-rw-r--r--src/mame/drivers/kas89.cpp78
-rw-r--r--src/mame/drivers/kaypro.cpp69
-rw-r--r--src/mame/drivers/kc.cpp76
-rw-r--r--src/mame/drivers/kchamp.cpp145
-rw-r--r--src/mame/drivers/kdt6.cpp96
-rw-r--r--src/mame/drivers/kenseim.cpp18
-rw-r--r--src/mame/drivers/kickgoal.cpp42
-rw-r--r--src/mame/drivers/kim1.cpp19
-rw-r--r--src/mame/drivers/kingdrby.cpp147
-rw-r--r--src/mame/drivers/kingobox.cpp195
-rw-r--r--src/mame/drivers/kingpin.cpp54
-rw-r--r--src/mame/drivers/kinst.cpp19
-rw-r--r--src/mame/drivers/kissproto.cpp7
-rw-r--r--src/mame/drivers/klax.cpp73
-rw-r--r--src/mame/drivers/kncljoe.cpp61
-rw-r--r--src/mame/drivers/koftball.cpp62
-rw-r--r--src/mame/drivers/koikoi.cpp30
-rw-r--r--src/mame/drivers/konamigq.cpp76
-rw-r--r--src/mame/drivers/konamigv.cpp97
-rw-r--r--src/mame/drivers/konamigx.cpp189
-rw-r--r--src/mame/drivers/konamim2.cpp102
-rw-r--r--src/mame/drivers/konendev.cpp35
-rw-r--r--src/mame/drivers/konin.cpp55
-rw-r--r--src/mame/drivers/konmedal.cpp129
-rw-r--r--src/mame/drivers/konmedal68k.cpp37
-rw-r--r--src/mame/drivers/kontest.cpp32
-rw-r--r--src/mame/drivers/kopunch.cpp32
-rw-r--r--src/mame/drivers/kramermc.cpp34
-rw-r--r--src/mame/drivers/kron.cpp38
-rw-r--r--src/mame/drivers/krz2000.cpp11
-rw-r--r--src/mame/drivers/ksayakyu.cpp58
-rw-r--r--src/mame/drivers/ksys573.cpp102
-rw-r--r--src/mame/drivers/kungfur.cpp17
-rw-r--r--src/mame/drivers/kurukuru.cpp134
-rw-r--r--src/mame/drivers/kyocera.cpp104
-rw-r--r--src/mame/drivers/kyugo.cpp190
-rw-r--r--src/mame/drivers/labyrunr.cpp43
-rw-r--r--src/mame/drivers/ladybug.cpp117
-rw-r--r--src/mame/drivers/ladyfrog.cpp74
-rw-r--r--src/mame/drivers/laser3k.cpp30
-rw-r--r--src/mame/drivers/laserbas.cpp46
-rw-r--r--src/mame/drivers/laserbat.cpp58
-rw-r--r--src/mame/drivers/lasso.cpp268
-rw-r--r--src/mame/drivers/lastbank.cpp104
-rw-r--r--src/mame/drivers/lastduel.cpp98
-rw-r--r--src/mame/drivers/lastfght.cpp70
-rw-r--r--src/mame/drivers/lazercmd.cpp68
-rw-r--r--src/mame/drivers/lb186.cpp28
-rw-r--r--src/mame/drivers/lbeach.cpp31
-rw-r--r--src/mame/drivers/lc80.cpp30
-rw-r--r--src/mame/drivers/lcmate2.cpp42
-rw-r--r--src/mame/drivers/leapster.cpp20
-rw-r--r--src/mame/drivers/legionna.cpp556
-rw-r--r--src/mame/drivers/leland.cpp208
-rw-r--r--src/mame/drivers/lemmings.cpp48
-rw-r--r--src/mame/drivers/lethal.cpp81
-rw-r--r--src/mame/drivers/lethalj.cpp31
-rw-r--r--src/mame/drivers/lft.cpp30
-rw-r--r--src/mame/drivers/lg-dvd.cpp7
-rw-r--r--src/mame/drivers/lgp.cpp56
-rw-r--r--src/mame/drivers/liberate.cpp191
-rw-r--r--src/mame/drivers/liberatr.cpp86
-rw-r--r--src/mame/drivers/limenko.cpp92
-rw-r--r--src/mame/drivers/lisa.cpp43
-rw-r--r--src/mame/drivers/littlerb.cpp35
-rw-r--r--src/mame/drivers/lkage.cpp99
-rw-r--r--src/mame/drivers/llc.cpp66
-rw-r--r--src/mame/drivers/lockon.cpp121
-rw-r--r--src/mame/drivers/lola8a.cpp42
-rw-r--r--src/mame/drivers/looping.cpp68
-rw-r--r--src/mame/drivers/lordgun.cpp176
-rw-r--r--src/mame/drivers/lsasquad.cpp179
-rw-r--r--src/mame/drivers/ltcasino.cpp45
-rw-r--r--src/mame/drivers/ltd.cpp53
-rw-r--r--src/mame/drivers/luckgrln.cpp163
-rw-r--r--src/mame/drivers/lucky74.cpp52
-rw-r--r--src/mame/drivers/luckybal.cpp24
-rw-r--r--src/mame/drivers/lvcards.cpp78
-rw-r--r--src/mame/drivers/lviv.cpp20
-rw-r--r--src/mame/drivers/lwings.cpp268
-rw-r--r--src/mame/drivers/lwriter.cpp39
-rw-r--r--src/mame/drivers/lynx.cpp19
-rw-r--r--src/mame/drivers/m10.cpp85
-rw-r--r--src/mame/drivers/m107.cpp110
-rw-r--r--src/mame/drivers/m14.cpp32
-rw-r--r--src/mame/drivers/m20.cpp57
-rw-r--r--src/mame/drivers/m24.cpp41
-rw-r--r--src/mame/drivers/m3.cpp24
-rw-r--r--src/mame/drivers/m5.cpp178
-rw-r--r--src/mame/drivers/m52.cpp85
-rw-r--r--src/mame/drivers/m57.cpp29
-rw-r--r--src/mame/drivers/m58.cpp37
-rw-r--r--src/mame/drivers/m62.cpp411
-rw-r--r--src/mame/drivers/m63.cpp96
-rw-r--r--src/mame/drivers/m6805evs.cpp17
-rw-r--r--src/mame/drivers/m72.cpp523
-rw-r--r--src/mame/drivers/m79152pc.cpp28
-rw-r--r--src/mame/drivers/m79amb.cpp27
-rw-r--r--src/mame/drivers/m90.cpp157
-rw-r--r--src/mame/drivers/m92.cpp129
-rw-r--r--src/mame/drivers/mac.cpp484
-rw-r--r--src/mame/drivers/mac128.cpp44
-rw-r--r--src/mame/drivers/macp.cpp35
-rw-r--r--src/mame/drivers/macpci.cpp25
-rw-r--r--src/mame/drivers/macrossp.cpp76
-rw-r--r--src/mame/drivers/macs.cpp34
-rw-r--r--src/mame/drivers/madalien.cpp74
-rw-r--r--src/mame/drivers/madmotor.cpp74
-rw-r--r--src/mame/drivers/magic10.cpp169
-rw-r--r--src/mame/drivers/magicard.cpp92
-rw-r--r--src/mame/drivers/magicfly.cpp21
-rw-r--r--src/mame/drivers/magictg.cpp60
-rw-r--r--src/mame/drivers/magmax.cpp63
-rw-r--r--src/mame/drivers/magnum.cpp22
-rw-r--r--src/mame/drivers/magtouch.cpp38
-rw-r--r--src/mame/drivers/mainevt.cpp142
-rw-r--r--src/mame/drivers/mainsnk.cpp63
-rw-r--r--src/mame/drivers/majorpkr.cpp84
-rw-r--r--src/mame/drivers/malzak.cpp106
-rw-r--r--src/mame/drivers/manohman.cpp23
-rw-r--r--src/mame/drivers/mappy.cpp123
-rw-r--r--src/mame/drivers/marineb.cpp57
-rw-r--r--src/mame/drivers/marinedt.cpp46
-rw-r--r--src/mame/drivers/mario.cpp71
-rw-r--r--src/mame/drivers/markham.cpp52
-rw-r--r--src/mame/drivers/marywu.cpp28
-rw-r--r--src/mame/drivers/mastboy.cpp46
-rw-r--r--src/mame/drivers/matmania.cpp110
-rw-r--r--src/mame/drivers/maxaflex.cpp27
-rw-r--r--src/mame/drivers/maygay1b.cpp98
-rw-r--r--src/mame/drivers/maygayep.cpp11
-rw-r--r--src/mame/drivers/maygaysw.cpp13
-rw-r--r--src/mame/drivers/maygayv1.cpp50
-rw-r--r--src/mame/drivers/mazerbla.cpp159
-rw-r--r--src/mame/drivers/mbc200.cpp60
-rw-r--r--src/mame/drivers/mbc55x.cpp70
-rw-r--r--src/mame/drivers/mbee.cpp389
-rw-r--r--src/mame/drivers/mc10.cpp66
-rw-r--r--src/mame/drivers/mc1000.cpp63
-rw-r--r--src/mame/drivers/mc1502.cpp28
-rw-r--r--src/mame/drivers/mc8020.cpp30
-rw-r--r--src/mame/drivers/mc8030.cpp44
-rw-r--r--src/mame/drivers/mcatadv.cpp101
-rw-r--r--src/mame/drivers/mcb216.cpp47
-rw-r--r--src/mame/drivers/mccpm.cpp24
-rw-r--r--src/mame/drivers/mcr.cpp134
-rw-r--r--src/mame/drivers/mcr3.cpp84
-rw-r--r--src/mame/drivers/mcr68.cpp95
-rw-r--r--src/mame/drivers/meadows.cpp99
-rw-r--r--src/mame/drivers/mediagx.cpp55
-rw-r--r--src/mame/drivers/megadriv_acbl.cpp29
-rw-r--r--src/mame/drivers/megadriv_rad.cpp27
-rw-r--r--src/mame/drivers/megaphx.cpp19
-rw-r--r--src/mame/drivers/megaplay.cpp38
-rw-r--r--src/mame/drivers/megasys1.cpp317
-rw-r--r--src/mame/drivers/megatech.cpp40
-rw-r--r--src/mame/drivers/megazone.cpp91
-rw-r--r--src/mame/drivers/meijinsn.cpp49
-rw-r--r--src/mame/drivers/mekd2.cpp17
-rw-r--r--src/mame/drivers/mephisto.cpp75
-rw-r--r--src/mame/drivers/mephisto_montec.cpp111
-rw-r--r--src/mame/drivers/mephistp.cpp45
-rw-r--r--src/mame/drivers/merit.cpp354
-rw-r--r--src/mame/drivers/meritm.cpp122
-rw-r--r--src/mame/drivers/mermaid.cpp39
-rw-r--r--src/mame/drivers/mes.cpp32
-rw-r--r--src/mame/drivers/metalmx.cpp124
-rw-r--r--src/mame/drivers/metlclsh.cpp72
-rw-r--r--src/mame/drivers/metlfrzr.cpp66
-rw-r--r--src/mame/drivers/metro.cpp827
-rw-r--r--src/mame/drivers/mexico86.cpp61
-rw-r--r--src/mame/drivers/meyc8080.cpp31
-rw-r--r--src/mame/drivers/meyc8088.cpp29
-rw-r--r--src/mame/drivers/mfabfz.cpp45
-rw-r--r--src/mame/drivers/mgames.cpp35
-rw-r--r--src/mame/drivers/mgavegas.cpp17
-rw-r--r--src/mame/drivers/mgolf.cpp57
-rw-r--r--src/mame/drivers/mhavoc.cpp117
-rw-r--r--src/mame/drivers/mice.cpp80
-rw-r--r--src/mame/drivers/micral.cpp77
-rw-r--r--src/mame/drivers/micro20.cpp25
-rw-r--r--src/mame/drivers/micro3d.cpp124
-rw-r--r--src/mame/drivers/microdec.cpp40
-rw-r--r--src/mame/drivers/microkit.cpp20
-rw-r--r--src/mame/drivers/micronic.cpp42
-rw-r--r--src/mame/drivers/micropin.cpp69
-rw-r--r--src/mame/drivers/microtan.cpp29
-rw-r--r--src/mame/drivers/microterm.cpp57
-rw-r--r--src/mame/drivers/midas.cpp94
-rw-r--r--src/mame/drivers/midqslvr.cpp54
-rw-r--r--src/mame/drivers/midtunit.cpp45
-rw-r--r--src/mame/drivers/midvunit.cpp106
-rw-r--r--src/mame/drivers/midwunit.cpp31
-rw-r--r--src/mame/drivers/midxunit.cpp45
-rw-r--r--src/mame/drivers/midyunit.cpp48
-rw-r--r--src/mame/drivers/midzeus.cpp68
-rw-r--r--src/mame/drivers/mightyframe.cpp7
-rw-r--r--src/mame/drivers/mikie.cpp66
-rw-r--r--src/mame/drivers/mikro80.cpp60
-rw-r--r--src/mame/drivers/mikromik.cpp7
-rw-r--r--src/mame/drivers/mikrosha.cpp34
-rw-r--r--src/mame/drivers/mil4000.cpp86
-rw-r--r--src/mame/drivers/milton6805.cpp7
-rw-r--r--src/mame/drivers/milwaukee.cpp21
-rw-r--r--src/mame/drivers/mini2440.cpp7
-rw-r--r--src/mame/drivers/miniboy7.cpp27
-rw-r--r--src/mame/drivers/miniframe.cpp30
-rw-r--r--src/mame/drivers/minitel_2_rpic.cpp7
-rw-r--r--src/mame/drivers/minivadr.cpp11
-rw-r--r--src/mame/drivers/mirage.cpp43
-rw-r--r--src/mame/drivers/mirax.cpp54
-rw-r--r--src/mame/drivers/missb2.cpp95
-rw-r--r--src/mame/drivers/missile.cpp14
-rw-r--r--src/mame/drivers/mitchell.cpp210
-rw-r--r--src/mame/drivers/mits680b.cpp15
-rw-r--r--src/mame/drivers/mjkjidai.cpp34
-rw-r--r--src/mame/drivers/mjsenpu.cpp40
-rw-r--r--src/mame/drivers/mjsister.cpp44
-rw-r--r--src/mame/drivers/mk1.cpp18
-rw-r--r--src/mame/drivers/mk14.cpp21
-rw-r--r--src/mame/drivers/mk2.cpp15
-rw-r--r--src/mame/drivers/mk85.cpp11
-rw-r--r--src/mame/drivers/mk90.cpp13
-rw-r--r--src/mame/drivers/mkit09.cpp30
-rw-r--r--src/mame/drivers/mlanding.cpp148
-rw-r--r--src/mame/drivers/mmagic.cpp38
-rw-r--r--src/mame/drivers/mmd1.cpp72
-rw-r--r--src/mame/drivers/mmm.cpp36
-rw-r--r--src/mame/drivers/mmodular.cpp130
-rw-r--r--src/mame/drivers/mod8.cpp28
-rw-r--r--src/mame/drivers/model1.cpp167
-rw-r--r--src/mame/drivers/model2.cpp366
-rw-r--r--src/mame/drivers/model3.cpp90
-rw-r--r--src/mame/drivers/modellot.cpp28
-rw-r--r--src/mame/drivers/mogura.cpp38
-rw-r--r--src/mame/drivers/mole.cpp35
-rw-r--r--src/mame/drivers/molecular.cpp38
-rw-r--r--src/mame/drivers/momoko.cpp66
-rw-r--r--src/mame/drivers/monty.cpp49
-rw-r--r--src/mame/drivers/monzagp.cpp14
-rw-r--r--src/mame/drivers/moo.cpp206
-rw-r--r--src/mame/drivers/mosaic.cpp74
-rw-r--r--src/mame/drivers/mouser.cpp64
-rw-r--r--src/mame/drivers/mpf1.cpp103
-rw-r--r--src/mame/drivers/mps1230.cpp11
-rw-r--r--src/mame/drivers/mpu12wbk.cpp33
-rw-r--r--src/mame/drivers/mpu2.cpp19
-rw-r--r--src/mame/drivers/mpu3.cpp19
-rw-r--r--src/mame/drivers/mpu4dealem.cpp29
-rw-r--r--src/mame/drivers/mpu4plasma.cpp13
-rw-r--r--src/mame/drivers/mpu4vid.cpp123
-rw-r--r--src/mame/drivers/mpu5.cpp7
-rw-r--r--src/mame/drivers/mpz80.cpp14
-rw-r--r--src/mame/drivers/mquake.cpp70
-rw-r--r--src/mame/drivers/mrdo.cpp35
-rw-r--r--src/mame/drivers/mrflea.cpp78
-rw-r--r--src/mame/drivers/mrgame.cpp104
-rw-r--r--src/mame/drivers/mrjong.cpp32
-rw-r--r--src/mame/drivers/ms0515.cpp85
-rw-r--r--src/mame/drivers/ms32.cpp117
-rw-r--r--src/mame/drivers/ms6102.cpp40
-rw-r--r--src/mame/drivers/ms9540.cpp15
-rw-r--r--src/mame/drivers/msbc1.cpp11
-rw-r--r--src/mame/drivers/msisaac.cpp96
-rw-r--r--src/mame/drivers/mstation.cpp55
-rw-r--r--src/mame/drivers/msx.cpp92
-rw-r--r--src/mame/drivers/mt735.cpp15
-rw-r--r--src/mame/drivers/mtouchxl.cpp63
-rw-r--r--src/mame/drivers/mtx.cpp45
-rw-r--r--src/mame/drivers/mugsmash.cpp50
-rw-r--r--src/mame/drivers/multfish.cpp139
-rw-r--r--src/mame/drivers/multi16.cpp28
-rw-r--r--src/mame/drivers/multi8.cpp50
-rw-r--r--src/mame/drivers/multigam.cpp130
-rw-r--r--src/mame/drivers/munchmo.cpp67
-rw-r--r--src/mame/drivers/murogem.cpp21
-rw-r--r--src/mame/drivers/murogmbl.cpp46
-rw-r--r--src/mame/drivers/mustache.cpp50
-rw-r--r--src/mame/drivers/mvme147.cpp29
-rw-r--r--src/mame/drivers/mw18w.cpp34
-rw-r--r--src/mame/drivers/mw8080bw.cpp570
-rw-r--r--src/mame/drivers/mwarr.cpp56
-rw-r--r--src/mame/drivers/mwsub.cpp34
-rw-r--r--src/mame/drivers/mx2178.cpp32
-rw-r--r--src/mame/drivers/myb3k.cpp46
-rw-r--r--src/mame/drivers/mycom.cpp38
-rw-r--r--src/mame/drivers/mystston.cpp31
-rw-r--r--src/mame/drivers/mystwarr.cpp421
-rw-r--r--src/mame/drivers/myvision.cpp32
-rw-r--r--src/mame/drivers/mz2000.cpp53
-rw-r--r--src/mame/drivers/mz2500.cpp88
-rw-r--r--src/mame/drivers/mz3500.cpp72
-rw-r--r--src/mame/drivers/mz6500.cpp31
-rw-r--r--src/mame/drivers/mz700.cpp144
-rw-r--r--src/mame/drivers/mz80.cpp32
-rw-r--r--src/mame/drivers/mzr8105.cpp13
-rw-r--r--src/mame/drivers/n64.cpp97
-rw-r--r--src/mame/drivers/n8080.cpp57
-rw-r--r--src/mame/drivers/nakajies.cpp40
-rw-r--r--src/mame/drivers/namcofl.cpp77
-rw-r--r--src/mame/drivers/namcona1.cpp80
-rw-r--r--src/mame/drivers/namconb1.cpp118
-rw-r--r--src/mame/drivers/namcond1.cpp82
-rw-r--r--src/mame/drivers/namcops2.cpp9
-rw-r--r--src/mame/drivers/namcos1.cpp117
-rw-r--r--src/mame/drivers/namcos10.cpp61
-rw-r--r--src/mame/drivers/namcos11.cpp144
-rw-r--r--src/mame/drivers/namcos12.cpp247
-rw-r--r--src/mame/drivers/namcos2.cpp355
-rw-r--r--src/mame/drivers/namcos21.cpp414
-rw-r--r--src/mame/drivers/namcos22.cpp308
-rw-r--r--src/mame/drivers/namcos23.cpp207
-rw-r--r--src/mame/drivers/namcos86.cpp283
-rw-r--r--src/mame/drivers/nanos.cpp36
-rw-r--r--src/mame/drivers/naomi.cpp202
-rw-r--r--src/mame/drivers/nascom1.cpp73
-rw-r--r--src/mame/drivers/naughtyb.cpp52
-rw-r--r--src/mame/drivers/nbmj8688.cpp456
-rw-r--r--src/mame/drivers/nbmj8891.cpp636
-rw-r--r--src/mame/drivers/nbmj8900.cpp75
-rw-r--r--src/mame/drivers/nbmj8991.cpp273
-rw-r--r--src/mame/drivers/nbmj9195.cpp817
-rw-r--r--src/mame/drivers/nc.cpp91
-rw-r--r--src/mame/drivers/nds.cpp64
-rw-r--r--src/mame/drivers/nemesis.cpp668
-rw-r--r--src/mame/drivers/neogeo.cpp125
-rw-r--r--src/mame/drivers/neogeocd.cpp76
-rw-r--r--src/mame/drivers/neoprint.cpp101
-rw-r--r--src/mame/drivers/neptunp2.cpp30
-rw-r--r--src/mame/drivers/nes.cpp15
-rw-r--r--src/mame/drivers/nes_vt.cpp204
-rw-r--r--src/mame/drivers/newbrain.cpp18
-rw-r--r--src/mame/drivers/news.cpp23
-rw-r--r--src/mame/drivers/next.cpp119
-rw-r--r--src/mame/drivers/nexus3d.cpp17
-rw-r--r--src/mame/drivers/ngen.cpp22
-rw-r--r--src/mame/drivers/ngp.cpp39
-rw-r--r--src/mame/drivers/nibble.cpp14
-rw-r--r--src/mame/drivers/nightgal.cpp176
-rw-r--r--src/mame/drivers/ninjakd2.cpp242
-rw-r--r--src/mame/drivers/ninjaw.cpp145
-rw-r--r--src/mame/drivers/nitedrvr.cpp29
-rw-r--r--src/mame/drivers/niyanpai.cpp242
-rw-r--r--src/mame/drivers/nmg5.cpp115
-rw-r--r--src/mame/drivers/nmk16.cpp1024
-rw-r--r--src/mame/drivers/nmkmedal.cpp9
-rw-r--r--src/mame/drivers/nokia_3310.cpp27
-rw-r--r--src/mame/drivers/norautp.cpp143
-rw-r--r--src/mame/drivers/notechan.cpp30
-rw-r--r--src/mame/drivers/nova2001.cpp228
-rw-r--r--src/mame/drivers/novag6502.cpp72
-rw-r--r--src/mame/drivers/novag68k.cpp24
-rw-r--r--src/mame/drivers/novagf8.cpp24
-rw-r--r--src/mame/drivers/nsg6809.cpp15
-rw-r--r--src/mame/drivers/nsm.cpp42
-rw-r--r--src/mame/drivers/nsmpoker.cpp26
-rw-r--r--src/mame/drivers/nss.cpp58
-rw-r--r--src/mame/drivers/nwk-tr.cpp94
-rw-r--r--src/mame/drivers/nycaptor.cpp310
-rw-r--r--src/mame/drivers/nyny.cpp93
-rw-r--r--src/mame/drivers/ob68k1a.cpp21
-rw-r--r--src/mame/drivers/octopus.cpp93
-rw-r--r--src/mame/drivers/odyssey.cpp5
-rw-r--r--src/mame/drivers/odyssey2.cpp25
-rw-r--r--src/mame/drivers/offtwall.cpp53
-rw-r--r--src/mame/drivers/ohmygod.cpp52
-rw-r--r--src/mame/drivers/ojankohs.cpp155
-rw-r--r--src/mame/drivers/okean240.cpp94
-rw-r--r--src/mame/drivers/olibochu.cpp56
-rw-r--r--src/mame/drivers/olyboss.cpp63
-rw-r--r--src/mame/drivers/omegrace.cpp72
-rw-r--r--src/mame/drivers/ondra.cpp24
-rw-r--r--src/mame/drivers/oneshot.cpp62
-rw-r--r--src/mame/drivers/onetwo.cpp66
-rw-r--r--src/mame/drivers/onyx.cpp56
-rw-r--r--src/mame/drivers/opwolf.cpp174
-rw-r--r--src/mame/drivers/orao.cpp19
-rw-r--r--src/mame/drivers/orbit.cpp37
-rw-r--r--src/mame/drivers/oric.cpp36
-rw-r--r--src/mame/drivers/orion.cpp98
-rw-r--r--src/mame/drivers/osbexec.cpp42
-rw-r--r--src/mame/drivers/osborne1.cpp33
-rw-r--r--src/mame/drivers/osi.cpp108
-rw-r--r--src/mame/drivers/othello.cpp70
-rw-r--r--src/mame/drivers/othunder.cpp54
-rw-r--r--src/mame/drivers/otomedius.cpp11
-rw-r--r--src/mame/drivers/overdriv.cpp112
-rw-r--r--src/mame/drivers/p112.cpp22
-rw-r--r--src/mame/drivers/p2000t.cpp57
-rw-r--r--src/mame/drivers/p8k.cpp109
-rw-r--r--src/mame/drivers/pachifev.cpp48
-rw-r--r--src/mame/drivers/pacland.cpp70
-rw-r--r--src/mame/drivers/pacman.cpp806
-rw-r--r--src/mame/drivers/palm.cpp9
-rw-r--r--src/mame/drivers/palmz22.cpp7
-rw-r--r--src/mame/drivers/pandoras.cpp105
-rw-r--r--src/mame/drivers/pangofun.cpp40
-rw-r--r--src/mame/drivers/panicr.cpp47
-rw-r--r--src/mame/drivers/paradise.cpp102
-rw-r--r--src/mame/drivers/paranoia.cpp76
-rw-r--r--src/mame/drivers/parodius.cpp78
-rw-r--r--src/mame/drivers/partner.cpp41
-rw-r--r--src/mame/drivers/pasha2.cpp62
-rw-r--r--src/mame/drivers/paso1600.cpp42
-rw-r--r--src/mame/drivers/pasogo.cpp39
-rw-r--r--src/mame/drivers/pasopia.cpp38
-rw-r--r--src/mame/drivers/pasopia7.cpp28
-rw-r--r--src/mame/drivers/pass.cpp47
-rw-r--r--src/mame/drivers/pastelg.cpp63
-rw-r--r--src/mame/drivers/patapata.cpp35
-rw-r--r--src/mame/drivers/pb1000.cpp36
-rw-r--r--src/mame/drivers/pbaction.cpp78
-rw-r--r--src/mame/drivers/pc.cpp83
-rw-r--r--src/mame/drivers/pc100.cpp54
-rw-r--r--src/mame/drivers/pc1500.cpp32
-rw-r--r--src/mame/drivers/pc1512.cpp82
-rw-r--r--src/mame/drivers/pc2000.cpp85
-rw-r--r--src/mame/drivers/pc4.cpp40
-rw-r--r--src/mame/drivers/pc6001.cpp201
-rw-r--r--src/mame/drivers/pc8001.cpp86
-rw-r--r--src/mame/drivers/pc8401a.cpp24
-rw-r--r--src/mame/drivers/pc8801.cpp154
-rw-r--r--src/mame/drivers/pc88va.cpp82
-rw-r--r--src/mame/drivers/pc9801.cpp331
-rw-r--r--src/mame/drivers/pcat_dyn.cpp48
-rw-r--r--src/mame/drivers/pcat_nit.cpp84
-rw-r--r--src/mame/drivers/pcd.cpp67
-rw-r--r--src/mame/drivers/pce.cpp90
-rw-r--r--src/mame/drivers/pce220.cpp109
-rw-r--r--src/mame/drivers/pcfx.cpp44
-rw-r--r--src/mame/drivers/pcktgal.cpp52
-rw-r--r--src/mame/drivers/pcm.cpp34
-rw-r--r--src/mame/drivers/pcw.cpp71
-rw-r--r--src/mame/drivers/pcw16.cpp48
-rw-r--r--src/mame/drivers/pcxt.cpp69
-rw-r--r--src/mame/drivers/pda600.cpp28
-rw-r--r--src/mame/drivers/pdp1.cpp7
-rw-r--r--src/mame/drivers/pdp11.cpp32
-rw-r--r--src/mame/drivers/pecom.cpp30
-rw-r--r--src/mame/drivers/pegasus.cpp34
-rw-r--r--src/mame/drivers/pencil2.cpp60
-rw-r--r--src/mame/drivers/pengadvb.cpp47
-rw-r--r--src/mame/drivers/pengo.cpp79
-rw-r--r--src/mame/drivers/pentagon.cpp53
-rw-r--r--src/mame/drivers/peoplepc.cpp52
-rw-r--r--src/mame/drivers/peplus.cpp52
-rw-r--r--src/mame/drivers/pes.cpp22
-rw-r--r--src/mame/drivers/pet.cpp14
-rw-r--r--src/mame/drivers/peyper.cpp48
-rw-r--r--src/mame/drivers/pg685.cpp141
-rw-r--r--src/mame/drivers/pgm.cpp77
-rw-r--r--src/mame/drivers/pgm2.cpp108
-rw-r--r--src/mame/drivers/pgm3.cpp7
-rw-r--r--src/mame/drivers/phc25.cpp50
-rw-r--r--src/mame/drivers/phoenix.cpp67
-rw-r--r--src/mame/drivers/photon.cpp44
-rw-r--r--src/mame/drivers/photon2.cpp32
-rw-r--r--src/mame/drivers/photoply.cpp42
-rw-r--r--src/mame/drivers/phunsy.cpp39
-rw-r--r--src/mame/drivers/picno.cpp20
-rw-r--r--src/mame/drivers/piggypas.cpp39
-rw-r--r--src/mame/drivers/pimps.cpp28
-rw-r--r--src/mame/drivers/pinball2k.cpp53
-rw-r--r--src/mame/drivers/pingpong.cpp76
-rw-r--r--src/mame/drivers/pinkiri8.cpp74
-rw-r--r--src/mame/drivers/pipbug.cpp18
-rw-r--r--src/mame/drivers/pipedrm.cpp77
-rw-r--r--src/mame/drivers/pipeline.cpp47
-rw-r--r--src/mame/drivers/pirates.cpp31
-rw-r--r--src/mame/drivers/piratesh.cpp57
-rw-r--r--src/mame/drivers/pitagjr.cpp11
-rw-r--r--src/mame/drivers/pitnrun.cpp86
-rw-r--r--src/mame/drivers/pk8000.cpp44
-rw-r--r--src/mame/drivers/pk8020.cpp14
-rw-r--r--src/mame/drivers/pkscram.cpp43
-rw-r--r--src/mame/drivers/pktgaldx.cpp89
-rw-r--r--src/mame/drivers/plan80.cpp30
-rw-r--r--src/mame/drivers/play_1.cpp49
-rw-r--r--src/mame/drivers/play_2.cpp39
-rw-r--r--src/mame/drivers/play_3.cpp78
-rw-r--r--src/mame/drivers/playch10.cpp59
-rw-r--r--src/mame/drivers/playmark.cpp296
-rw-r--r--src/mame/drivers/plus4.cpp14
-rw-r--r--src/mame/drivers/pluto5.cpp7
-rw-r--r--src/mame/drivers/plygonet.cpp96
-rw-r--r--src/mame/drivers/pm68k.cpp17
-rw-r--r--src/mame/drivers/pmd85.cpp142
-rw-r--r--src/mame/drivers/pmi80.cpp26
-rw-r--r--src/mame/drivers/pntnpuzl.cpp40
-rw-r--r--src/mame/drivers/pockchal.cpp7
-rw-r--r--src/mame/drivers/pocketc.cpp134
-rw-r--r--src/mame/drivers/pockstat.cpp31
-rw-r--r--src/mame/drivers/pofo.cpp23
-rw-r--r--src/mame/drivers/poisk1.cpp26
-rw-r--r--src/mame/drivers/pokechmp.cpp61
-rw-r--r--src/mame/drivers/pokemini.cpp13
-rw-r--r--src/mame/drivers/poker72.cpp43
-rw-r--r--src/mame/drivers/polepos.cpp134
-rw-r--r--src/mame/drivers/polgar.cpp128
-rw-r--r--src/mame/drivers/policetr.cpp74
-rw-r--r--src/mame/drivers/poly.cpp39
-rw-r--r--src/mame/drivers/poly88.cpp72
-rw-r--r--src/mame/drivers/poly880.cpp34
-rw-r--r--src/mame/drivers/polyplay.cpp56
-rw-r--r--src/mame/drivers/poolshrk.cpp35
-rw-r--r--src/mame/drivers/pooyan.cpp33
-rw-r--r--src/mame/drivers/popeye.cpp40
-rw-r--r--src/mame/drivers/popobear.cpp44
-rw-r--r--src/mame/drivers/popper.cpp62
-rw-r--r--src/mame/drivers/portrait.cpp46
-rw-r--r--src/mame/drivers/potgoldu.cpp7
-rw-r--r--src/mame/drivers/powerbal.cpp136
-rw-r--r--src/mame/drivers/powerins.cpp106
-rw-r--r--src/mame/drivers/pp01.cpp54
-rw-r--r--src/mame/drivers/ppmast93.cpp62
-rw-r--r--src/mame/drivers/prehisle.cpp53
-rw-r--r--src/mame/drivers/prestige.cpp55
-rw-r--r--src/mame/drivers/primo.cpp61
-rw-r--r--src/mame/drivers/pro80.cpp32
-rw-r--r--src/mame/drivers/proconn.cpp78
-rw-r--r--src/mame/drivers/prof180x.cpp24
-rw-r--r--src/mame/drivers/prof80.cpp35
-rw-r--r--src/mame/drivers/progolf.cpp50
-rw-r--r--src/mame/drivers/prophet600.cpp38
-rw-r--r--src/mame/drivers/proteus3.cpp17
-rw-r--r--src/mame/drivers/ps2.cpp50
-rw-r--r--src/mame/drivers/ps2sony.cpp9
-rw-r--r--src/mame/drivers/psikyo.cpp170
-rw-r--r--src/mame/drivers/psikyo4.cpp56
-rw-r--r--src/mame/drivers/psikyosh.cpp64
-rw-r--r--src/mame/drivers/psion.cpp126
-rw-r--r--src/mame/drivers/psx.cpp14
-rw-r--r--src/mame/drivers/psychic5.cpp204
-rw-r--r--src/mame/drivers/pt68k4.cpp58
-rw-r--r--src/mame/drivers/ptcsol.cpp44
-rw-r--r--src/mame/drivers/pturn.cpp56
-rw-r--r--src/mame/drivers/puckpkmn.cpp77
-rw-r--r--src/mame/drivers/pulsar.cpp32
-rw-r--r--src/mame/drivers/punchout.cpp122
-rw-r--r--src/mame/drivers/pv1000.cpp18
-rw-r--r--src/mame/drivers/pv2000.cpp30
-rw-r--r--src/mame/drivers/pv9234.cpp21
-rw-r--r--src/mame/drivers/pve500.cpp42
-rw-r--r--src/mame/drivers/pwrview.cpp114
-rw-r--r--src/mame/drivers/px4.cpp77
-rw-r--r--src/mame/drivers/px8.cpp58
-rw-r--r--src/mame/drivers/pyl601.cpp47
-rw-r--r--src/mame/drivers/pyson.cpp9
-rw-r--r--src/mame/drivers/pzletime.cpp31
-rw-r--r--src/mame/drivers/qdrmfgp.cpp103
-rw-r--r--src/mame/drivers/qix.cpp85
-rw-r--r--src/mame/drivers/ql.cpp16
-rw-r--r--src/mame/drivers/qtsbc.cpp28
-rw-r--r--src/mame/drivers/quakeat.cpp20
-rw-r--r--src/mame/drivers/quantum.cpp33
-rw-r--r--src/mame/drivers/quasar.cpp63
-rw-r--r--src/mame/drivers/queen.cpp48
-rw-r--r--src/mame/drivers/quickpick5.cpp41
-rw-r--r--src/mame/drivers/quizdna.cpp137
-rw-r--r--src/mame/drivers/quizo.cpp36
-rw-r--r--src/mame/drivers/quizpani.cpp41
-rw-r--r--src/mame/drivers/quizpun2.cpp81
-rw-r--r--src/mame/drivers/quizshow.cpp33
-rw-r--r--src/mame/drivers/qvt103.cpp26
-rw-r--r--src/mame/drivers/qvt201.cpp15
-rw-r--r--src/mame/drivers/qvt6800.cpp40
-rw-r--r--src/mame/drivers/qx10.cpp63
-rw-r--r--src/mame/drivers/r2dtank.cpp42
-rw-r--r--src/mame/drivers/r2dx_v33.cpp249
-rw-r--r--src/mame/drivers/r9751.cpp17
-rw-r--r--src/mame/drivers/rabbit.cpp61
-rw-r--r--src/mame/drivers/rad_eu3a05.cpp90
-rw-r--r--src/mame/drivers/rad_eu3a14.cpp98
-rw-r--r--src/mame/drivers/radio86.cpp148
-rw-r--r--src/mame/drivers/raiden.cpp182
-rw-r--r--src/mame/drivers/raiden2.cpp427
-rw-r--r--src/mame/drivers/rainbow.cpp111
-rw-r--r--src/mame/drivers/rallyx.cpp77
-rw-r--r--src/mame/drivers/rambo.cpp21
-rw-r--r--src/mame/drivers/rampart.cpp51
-rw-r--r--src/mame/drivers/rastan.cpp71
-rw-r--r--src/mame/drivers/rastersp.cpp71
-rw-r--r--src/mame/drivers/ravens.cpp43
-rw-r--r--src/mame/drivers/rbisland.cpp127
-rw-r--r--src/mame/drivers/rbmk.cpp80
-rw-r--r--src/mame/drivers/rc702.cpp38
-rw-r--r--src/mame/drivers/rc759.cpp56
-rw-r--r--src/mame/drivers/rcorsair.cpp21
-rw-r--r--src/mame/drivers/rd100.cpp15
-rw-r--r--src/mame/drivers/rd110.cpp34
-rw-r--r--src/mame/drivers/re900.cpp28
-rw-r--r--src/mame/drivers/realbrk.cpp95
-rw-r--r--src/mame/drivers/redalert.cpp130
-rw-r--r--src/mame/drivers/redclash.cpp76
-rw-r--r--src/mame/drivers/relief.cpp62
-rw-r--r--src/mame/drivers/renegade.cpp69
-rw-r--r--src/mame/drivers/replicator.cpp21
-rw-r--r--src/mame/drivers/retofinv.cpp92
-rw-r--r--src/mame/drivers/rex6000.cpp111
-rw-r--r--src/mame/drivers/rgum.cpp27
-rw-r--r--src/mame/drivers/risc2500.cpp13
-rw-r--r--src/mame/drivers/riscpc.cpp15
-rw-r--r--src/mame/drivers/rltennis.cpp38
-rw-r--r--src/mame/drivers/rm380z.cpp54
-rw-r--r--src/mame/drivers/rmhaihai.cpp98
-rw-r--r--src/mame/drivers/rmnimbus.cpp72
-rw-r--r--src/mame/drivers/rmt32.cpp36
-rw-r--r--src/mame/drivers/rockrage.cpp71
-rw-r--r--src/mame/drivers/rocnrope.cpp39
-rw-r--r--src/mame/drivers/rohga.cpp244
-rw-r--r--src/mame/drivers/rollerg.cpp60
-rw-r--r--src/mame/drivers/rollext.cpp21
-rw-r--r--src/mame/drivers/rollrace.cpp62
-rw-r--r--src/mame/drivers/ron.cpp54
-rw-r--r--src/mame/drivers/rotaryf.cpp36
-rw-r--r--src/mame/drivers/roul.cpp56
-rw-r--r--src/mame/drivers/route16.cpp158
-rw-r--r--src/mame/drivers/rowamet.cpp57
-rw-r--r--src/mame/drivers/royalmah.cpp643
-rw-r--r--src/mame/drivers/rpunch.cpp54
-rw-r--r--src/mame/drivers/rsc55.cpp12
-rw-r--r--src/mame/drivers/rt1715.cpp58
-rw-r--r--src/mame/drivers/runaway.cpp43
-rw-r--r--src/mame/drivers/rungun.cpp75
-rw-r--r--src/mame/drivers/rvoice.cpp28
-rw-r--r--src/mame/drivers/rx78.cpp42
-rw-r--r--src/mame/drivers/s11.cpp55
-rw-r--r--src/mame/drivers/s11a.cpp57
-rw-r--r--src/mame/drivers/s11b.cpp61
-rw-r--r--src/mame/drivers/s11c.cpp23
-rw-r--r--src/mame/drivers/s3.cpp36
-rw-r--r--src/mame/drivers/s4.cpp36
-rw-r--r--src/mame/drivers/s6.cpp36
-rw-r--r--src/mame/drivers/s6a.cpp34
-rw-r--r--src/mame/drivers/s7.cpp40
-rw-r--r--src/mame/drivers/s8.cpp34
-rw-r--r--src/mame/drivers/s8a.cpp34
-rw-r--r--src/mame/drivers/s9.cpp34
-rw-r--r--src/mame/drivers/sacstate.cpp34
-rw-r--r--src/mame/drivers/safarir.cpp21
-rw-r--r--src/mame/drivers/sage2.cpp29
-rw-r--r--src/mame/drivers/sam.cpp9
-rw-r--r--src/mame/drivers/samcoupe.cpp52
-rw-r--r--src/mame/drivers/sandscrp.cpp73
-rw-r--r--src/mame/drivers/sangho.cpp53
-rw-r--r--src/mame/drivers/sanremmg.cpp7
-rw-r--r--src/mame/drivers/sanremo.cpp38
-rw-r--r--src/mame/drivers/sansa_fuze.cpp11
-rw-r--r--src/mame/drivers/sapi1.cpp150
-rw-r--r--src/mame/drivers/sartorius.cpp21
-rw-r--r--src/mame/drivers/saturn.cpp60
-rw-r--r--src/mame/drivers/sauro.cpp125
-rw-r--r--src/mame/drivers/savia84.cpp26
-rw-r--r--src/mame/drivers/savquest.cpp66
-rw-r--r--src/mame/drivers/sbasketb.cpp68
-rw-r--r--src/mame/drivers/sbc6510.cpp46
-rw-r--r--src/mame/drivers/sbowling.cpp36
-rw-r--r--src/mame/drivers/sbrain.cpp64
-rw-r--r--src/mame/drivers/sbrkout.cpp31
-rw-r--r--src/mame/drivers/sbugger.cpp28
-rw-r--r--src/mame/drivers/sc1.cpp26
-rw-r--r--src/mame/drivers/sc2.cpp28
-rw-r--r--src/mame/drivers/scobra.cpp392
-rw-r--r--src/mame/drivers/scopus.cpp26
-rw-r--r--src/mame/drivers/scorpion.cpp55
-rw-r--r--src/mame/drivers/scotrsht.cpp71
-rw-r--r--src/mame/drivers/scramble.cpp605
-rw-r--r--src/mame/drivers/scregg.cpp62
-rw-r--r--src/mame/drivers/scv.cpp15
-rw-r--r--src/mame/drivers/scyclone.cpp82
-rw-r--r--src/mame/drivers/sderby.cpp236
-rw-r--r--src/mame/drivers/sderby2.cpp80
-rw-r--r--src/mame/drivers/sdk80.cpp30
-rw-r--r--src/mame/drivers/sdk85.cpp36
-rw-r--r--src/mame/drivers/sdk86.cpp28
-rw-r--r--src/mame/drivers/seabattl.cpp46
-rw-r--r--src/mame/drivers/sealy.cpp7
-rw-r--r--src/mame/drivers/seattlecmp.cpp28
-rw-r--r--src/mame/drivers/segac2.cpp23
-rw-r--r--src/mame/drivers/segacoin.cpp44
-rw-r--r--src/mame/drivers/segae.cpp100
-rw-r--r--src/mame/drivers/segag80r.cpp99
-rw-r--r--src/mame/drivers/segag80v.cpp43
-rw-r--r--src/mame/drivers/segahang.cpp169
-rw-r--r--src/mame/drivers/segajw.cpp69
-rw-r--r--src/mame/drivers/segald.cpp40
-rw-r--r--src/mame/drivers/segam1.cpp99
-rw-r--r--src/mame/drivers/segaorun.cpp71
-rw-r--r--src/mame/drivers/segapico.cpp13
-rw-r--r--src/mame/drivers/segapm.cpp9
-rw-r--r--src/mame/drivers/segas16a.cpp89
-rw-r--r--src/mame/drivers/segas16b.cpp389
-rw-r--r--src/mame/drivers/segas18.cpp71
-rw-r--r--src/mame/drivers/segas24.cpp195
-rw-r--r--src/mame/drivers/segas32.cpp150
-rw-r--r--src/mame/drivers/segasp.cpp62
-rw-r--r--src/mame/drivers/segaufo.cpp54
-rw-r--r--src/mame/drivers/segaxbd.cpp110
-rw-r--r--src/mame/drivers/segaybd.cpp153
-rw-r--r--src/mame/drivers/seibucats.cpp45
-rw-r--r--src/mame/drivers/seibuspi.cpp298
-rw-r--r--src/mame/drivers/seicross.cpp91
-rw-r--r--src/mame/drivers/seicupbl.cpp56
-rw-r--r--src/mame/drivers/selz80.cpp43
-rw-r--r--src/mame/drivers/sengokmj.cpp44
-rw-r--r--src/mame/drivers/senjyo.cpp174
-rw-r--r--src/mame/drivers/seta.cpp1926
-rw-r--r--src/mame/drivers/seta2.cpp573
-rw-r--r--src/mame/drivers/sf.cpp178
-rw-r--r--src/mame/drivers/sfbonus.cpp65
-rw-r--r--src/mame/drivers/sfcbox.cpp56
-rw-r--r--src/mame/drivers/sfkick.cpp72
-rw-r--r--src/mame/drivers/sg1000.cpp90
-rw-r--r--src/mame/drivers/sg1000a.cpp54
-rw-r--r--src/mame/drivers/sh4robot.cpp24
-rw-r--r--src/mame/drivers/shadfrce.cpp77
-rw-r--r--src/mame/drivers/shangha3.cpp129
-rw-r--r--src/mame/drivers/shanghai.cpp143
-rw-r--r--src/mame/drivers/shangkid.cpp203
-rw-r--r--src/mame/drivers/shaolins.cpp47
-rw-r--r--src/mame/drivers/shisen.cpp66
-rw-r--r--src/mame/drivers/shootaway2.cpp18
-rw-r--r--src/mame/drivers/shootout.cpp75
-rw-r--r--src/mame/drivers/shougi.cpp45
-rw-r--r--src/mame/drivers/shtzone.cpp9
-rw-r--r--src/mame/drivers/shuuz.cpp41
-rw-r--r--src/mame/drivers/sidearms.cpp174
-rw-r--r--src/mame/drivers/sidepckt.cpp65
-rw-r--r--src/mame/drivers/sigmab52.cpp83
-rw-r--r--src/mame/drivers/sigmab98.cpp440
-rw-r--r--src/mame/drivers/silkroad.cpp35
-rw-r--r--src/mame/drivers/silvmil.cpp58
-rw-r--r--src/mame/drivers/simpl156.cpp195
-rw-r--r--src/mame/drivers/simple_st0016.cpp89
-rw-r--r--src/mame/drivers/simpsons.cpp88
-rw-r--r--src/mame/drivers/sitcom.cpp41
-rw-r--r--src/mame/drivers/sk1.cpp9
-rw-r--r--src/mame/drivers/skeetsht.cpp33
-rw-r--r--src/mame/drivers/skimaxx.cpp83
-rw-r--r--src/mame/drivers/skullxbo.cpp61
-rw-r--r--src/mame/drivers/skyarmy.cpp44
-rw-r--r--src/mame/drivers/skydiver.cpp55
-rw-r--r--src/mame/drivers/skyfox.cpp38
-rw-r--r--src/mame/drivers/skykid.cpp68
-rw-r--r--src/mame/drivers/skylncr.cpp208
-rw-r--r--src/mame/drivers/skyraid.cpp35
-rw-r--r--src/mame/drivers/slapfght.cpp274
-rw-r--r--src/mame/drivers/slapshot.cpp89
-rw-r--r--src/mame/drivers/slc1.cpp24
-rw-r--r--src/mame/drivers/sleic.cpp9
-rw-r--r--src/mame/drivers/slicer.cpp32
-rw-r--r--src/mame/drivers/sliver.cpp75
-rw-r--r--src/mame/drivers/slotcarn.cpp48
-rw-r--r--src/mame/drivers/sm1800.cpp30
-rw-r--r--src/mame/drivers/sm7238.cpp63
-rw-r--r--src/mame/drivers/smc777.cpp48
-rw-r--r--src/mame/drivers/sms.cpp192
-rw-r--r--src/mame/drivers/sms_bootleg.cpp34
-rw-r--r--src/mame/drivers/smsmcorp.cpp59
-rw-r--r--src/mame/drivers/snes.cpp18
-rw-r--r--src/mame/drivers/snesb.cpp27
-rw-r--r--src/mame/drivers/snk.cpp1337
-rw-r--r--src/mame/drivers/snk6502.cpp203
-rw-r--r--src/mame/drivers/snk68.cpp100
-rw-r--r--src/mame/drivers/snookr10.cpp89
-rw-r--r--src/mame/drivers/snowbros.cpp338
-rw-r--r--src/mame/drivers/socrates.cpp144
-rw-r--r--src/mame/drivers/softbox.cpp28
-rw-r--r--src/mame/drivers/solomon.cpp73
-rw-r--r--src/mame/drivers/sonson.cpp50
-rw-r--r--src/mame/drivers/sorcerer.cpp65
-rw-r--r--src/mame/drivers/sothello.cpp87
-rw-r--r--src/mame/drivers/spacefb.cpp51
-rw-r--r--src/mame/drivers/spaceg.cpp39
-rw-r--r--src/mame/drivers/spartanxtec.cpp63
-rw-r--r--src/mame/drivers/spbactn.cpp182
-rw-r--r--src/mame/drivers/spc1000.cpp34
-rw-r--r--src/mame/drivers/spc1500.cpp24
-rw-r--r--src/mame/drivers/spcforce.cpp32
-rw-r--r--src/mame/drivers/spdodgeb.cpp46
-rw-r--r--src/mame/drivers/spec128.cpp30
-rw-r--r--src/mame/drivers/special.cpp99
-rw-r--r--src/mame/drivers/specpls3.cpp36
-rw-r--r--src/mame/drivers/spectra.cpp17
-rw-r--r--src/mame/drivers/spectrum.cpp18
-rw-r--r--src/mame/drivers/speedatk.cpp36
-rw-r--r--src/mame/drivers/speedbal.cpp66
-rw-r--r--src/mame/drivers/speedspn.cpp72
-rw-r--r--src/mame/drivers/speglsht.cpp59
-rw-r--r--src/mame/drivers/spiders.cpp42
-rw-r--r--src/mame/drivers/spinb.cpp108
-rw-r--r--src/mame/drivers/spirit76.cpp19
-rw-r--r--src/mame/drivers/splash.cpp188
-rw-r--r--src/mame/drivers/splus.cpp32
-rw-r--r--src/mame/drivers/spoker.cpp83
-rw-r--r--src/mame/drivers/spool99.cpp58
-rw-r--r--src/mame/drivers/sprcros2.cpp74
-rw-r--r--src/mame/drivers/sprint2.cpp47
-rw-r--r--src/mame/drivers/sprint4.cpp39
-rw-r--r--src/mame/drivers/sprint8.cpp37
-rw-r--r--src/mame/drivers/spy.cpp56
-rw-r--r--src/mame/drivers/spyhuntertec.cpp86
-rw-r--r--src/mame/drivers/squale.cpp35
-rw-r--r--src/mame/drivers/srmp2.cpp184
-rw-r--r--src/mame/drivers/srmp5.cpp87
-rw-r--r--src/mame/drivers/srmp6.cpp29
-rw-r--r--src/mame/drivers/srumbler.cpp68
-rw-r--r--src/mame/drivers/ssem.cpp7
-rw-r--r--src/mame/drivers/ssfindo.cpp87
-rw-r--r--src/mame/drivers/sshangha.cpp135
-rw-r--r--src/mame/drivers/sshot.cpp23
-rw-r--r--src/mame/drivers/ssingles.cpp94
-rw-r--r--src/mame/drivers/sslam.cpp82
-rw-r--r--src/mame/drivers/ssozumo.cpp52
-rw-r--r--src/mame/drivers/sspeedr.cpp64
-rw-r--r--src/mame/drivers/ssrj.cpp35
-rw-r--r--src/mame/drivers/sstrangr.cpp28
-rw-r--r--src/mame/drivers/ssv.cpp344
-rw-r--r--src/mame/drivers/ssystem3.cpp13
-rw-r--r--src/mame/drivers/st17xx.cpp7
-rw-r--r--src/mame/drivers/st_mp100.cpp21
-rw-r--r--src/mame/drivers/st_mp200.cpp19
-rw-r--r--src/mame/drivers/stactics.cpp51
-rw-r--r--src/mame/drivers/stadhero.cpp46
-rw-r--r--src/mame/drivers/starcrus.cpp40
-rw-r--r--src/mame/drivers/starfire.cpp13
-rw-r--r--src/mame/drivers/stargame.cpp70
-rw-r--r--src/mame/drivers/starshp1.cpp41
-rw-r--r--src/mame/drivers/starwars.cpp93
-rw-r--r--src/mame/drivers/statriv2.cpp30
-rw-r--r--src/mame/drivers/stellafr.cpp19
-rw-r--r--src/mame/drivers/stfight.cpp113
-rw-r--r--src/mame/drivers/stlforce.cpp56
-rw-r--r--src/mame/drivers/stratos.cpp23
-rw-r--r--src/mame/drivers/strkzn.cpp38
-rw-r--r--src/mame/drivers/strnskil.cpp56
-rw-r--r--src/mame/drivers/studio2.cpp80
-rw-r--r--src/mame/drivers/stuntair.cpp55
-rw-r--r--src/mame/drivers/stv.cpp65
-rw-r--r--src/mame/drivers/su2000.cpp32
-rw-r--r--src/mame/drivers/sub.cpp72
-rw-r--r--src/mame/drivers/subhuntr.cpp19
-rw-r--r--src/mame/drivers/subs.cpp27
-rw-r--r--src/mame/drivers/subsino.cpp284
-rw-r--r--src/mame/drivers/subsino2.cpp411
-rw-r--r--src/mame/drivers/summit.cpp21
-rw-r--r--src/mame/drivers/sumt8035.cpp12
-rw-r--r--src/mame/drivers/sun1.cpp21
-rw-r--r--src/mame/drivers/sun2.cpp79
-rw-r--r--src/mame/drivers/sun3.cpp56
-rw-r--r--src/mame/drivers/sun3x.cpp88
-rw-r--r--src/mame/drivers/sun4.cpp63
-rw-r--r--src/mame/drivers/suna16.cpp268
-rw-r--r--src/mame/drivers/suna8.cpp415
-rw-r--r--src/mame/drivers/supbtime.cpp140
-rw-r--r--src/mame/drivers/supdrapo.cpp43
-rw-r--r--src/mame/drivers/supduck.cpp63
-rw-r--r--src/mame/drivers/super6.cpp32
-rw-r--r--src/mame/drivers/super80.cpp153
-rw-r--r--src/mame/drivers/superchs.cpp63
-rw-r--r--src/mame/drivers/supercrd.cpp11
-rw-r--r--src/mame/drivers/superdq.cpp34
-rw-r--r--src/mame/drivers/superqix.cpp57
-rw-r--r--src/mame/drivers/superslave.cpp32
-rw-r--r--src/mame/drivers/supertnk.cpp42
-rw-r--r--src/mame/drivers/superwng.cpp70
-rw-r--r--src/mame/drivers/supracan.cpp38
-rw-r--r--src/mame/drivers/suprgolf.cpp38
-rw-r--r--src/mame/drivers/suprloco.cpp59
-rw-r--r--src/mame/drivers/suprnova.cpp49
-rw-r--r--src/mame/drivers/suprridr.cpp80
-rw-r--r--src/mame/drivers/suprslam.cpp61
-rw-r--r--src/mame/drivers/supstarf.cpp40
-rw-r--r--src/mame/drivers/surpratk.cpp48
-rw-r--r--src/mame/drivers/sv8000.cpp30
-rw-r--r--src/mame/drivers/svi318.cpp49
-rw-r--r--src/mame/drivers/svision.cpp36
-rw-r--r--src/mame/drivers/svmu.cpp20
-rw-r--r--src/mame/drivers/swtpc.cpp27
-rw-r--r--src/mame/drivers/swtpc09.cpp125
-rw-r--r--src/mame/drivers/swyft.cpp21
-rw-r--r--src/mame/drivers/sym1.cpp27
-rw-r--r--src/mame/drivers/symbolics.cpp15
-rw-r--r--src/mame/drivers/sys2900.cpp40
-rw-r--r--src/mame/drivers/sys9002.cpp36
-rw-r--r--src/mame/drivers/systec.cpp24
-rw-r--r--src/mame/drivers/system1.cpp148
-rw-r--r--src/mame/drivers/system16.cpp1164
-rw-r--r--src/mame/drivers/tagteam.cpp46
-rw-r--r--src/mame/drivers/tail2nos.cpp68
-rw-r--r--src/mame/drivers/taito.cpp170
-rw-r--r--src/mame/drivers/taito_b.cpp565
-rw-r--r--src/mame/drivers/taito_f2.cpp1013
-rw-r--r--src/mame/drivers/taito_f3.cpp78
-rw-r--r--src/mame/drivers/taito_h.cpp121
-rw-r--r--src/mame/drivers/taito_l.cpp424
-rw-r--r--src/mame/drivers/taito_o.cpp17
-rw-r--r--src/mame/drivers/taito_x.cpp186
-rw-r--r--src/mame/drivers/taito_z.cpp544
-rw-r--r--src/mame/drivers/taitoair.cpp119
-rw-r--r--src/mame/drivers/taitogn.cpp87
-rw-r--r--src/mame/drivers/taitojc.cpp126
-rw-r--r--src/mame/drivers/taitopjc.cpp78
-rw-r--r--src/mame/drivers/taitosj.cpp188
-rw-r--r--src/mame/drivers/taitotx.cpp7
-rw-r--r--src/mame/drivers/taitotz.cpp63
-rw-r--r--src/mame/drivers/taitowlf.cpp50
-rw-r--r--src/mame/drivers/tandy1t.cpp128
-rw-r--r--src/mame/drivers/tandy2k.cpp60
-rw-r--r--src/mame/drivers/tank8.cpp73
-rw-r--r--src/mame/drivers/tankbatt.cpp31
-rw-r--r--src/mame/drivers/tankbust.cpp65
-rw-r--r--src/mame/drivers/taotaido.cpp63
-rw-r--r--src/mame/drivers/tapatune.cpp73
-rw-r--r--src/mame/drivers/targeth.cpp69
-rw-r--r--src/mame/drivers/tasman.cpp74
-rw-r--r--src/mame/drivers/tatsumi.cpp338
-rw-r--r--src/mame/drivers/tattack.cpp29
-rw-r--r--src/mame/drivers/tavernie.cpp50
-rw-r--r--src/mame/drivers/taxidriv.cpp100
-rw-r--r--src/mame/drivers/tbowl.cpp107
-rw-r--r--src/mame/drivers/tceptor.cpp162
-rw-r--r--src/mame/drivers/tcl.cpp7
-rw-r--r--src/mame/drivers/tdv2324.cpp49
-rw-r--r--src/mame/drivers/tec1.cpp62
-rw-r--r--src/mame/drivers/techno.cpp29
-rw-r--r--src/mame/drivers/tecmo.cpp215
-rw-r--r--src/mame/drivers/tecmo16.cpp117
-rw-r--r--src/mame/drivers/tecmosys.cpp97
-rw-r--r--src/mame/drivers/tecnbras.cpp18
-rw-r--r--src/mame/drivers/tehkanwc.cpp118
-rw-r--r--src/mame/drivers/tek405x.cpp32
-rw-r--r--src/mame/drivers/tek410x.cpp14
-rw-r--r--src/mame/drivers/tek440x.cpp28
-rw-r--r--src/mame/drivers/tekxp33x.cpp14
-rw-r--r--src/mame/drivers/tempest.cpp51
-rw-r--r--src/mame/drivers/terak.cpp15
-rw-r--r--src/mame/drivers/terco.cpp19
-rw-r--r--src/mame/drivers/terminals.cpp5
-rw-r--r--src/mame/drivers/terracre.cpp136
-rw-r--r--src/mame/drivers/testconsole.cpp44
-rw-r--r--src/mame/drivers/tetrisp2.cpp539
-rw-r--r--src/mame/drivers/tg100.cpp21
-rw-r--r--src/mame/drivers/tgtpanic.cpp22
-rw-r--r--src/mame/drivers/thayers.cpp48
-rw-r--r--src/mame/drivers/thedealr.cpp62
-rw-r--r--src/mame/drivers/thedeep.cpp54
-rw-r--r--src/mame/drivers/thepit.cpp127
-rw-r--r--src/mame/drivers/thief.cpp67
-rw-r--r--src/mame/drivers/thomson.cpp342
-rw-r--r--src/mame/drivers/thoop2.cpp64
-rw-r--r--src/mame/drivers/thunderj.cpp76
-rw-r--r--src/mame/drivers/thunderx.cpp121
-rw-r--r--src/mame/drivers/ti630.cpp20
-rw-r--r--src/mame/drivers/ti74.cpp13
-rw-r--r--src/mame/drivers/ti85.cpp312
-rw-r--r--src/mame/drivers/ti89.cpp95
-rw-r--r--src/mame/drivers/ti990_10.cpp42
-rw-r--r--src/mame/drivers/ti990_4.cpp47
-rw-r--r--src/mame/drivers/ti99_2.cpp32
-rw-r--r--src/mame/drivers/ti99_4p.cpp20
-rw-r--r--src/mame/drivers/ti99_4x.cpp22
-rw-r--r--src/mame/drivers/ti99_8.cpp20
-rw-r--r--src/mame/drivers/tiamc1.cpp88
-rw-r--r--src/mame/drivers/tickee.cpp140
-rw-r--r--src/mame/drivers/tigeroad.cpp149
-rw-r--r--src/mame/drivers/tiki100.cpp20
-rw-r--r--src/mame/drivers/tim011.cpp26
-rw-r--r--src/mame/drivers/tim100.cpp34
-rw-r--r--src/mame/drivers/timelimt.cpp74
-rw-r--r--src/mame/drivers/timeplt.cpp58
-rw-r--r--src/mame/drivers/timetrv.cpp32
-rw-r--r--src/mame/drivers/timex.cpp56
-rw-r--r--src/mame/drivers/tk2000.cpp24
-rw-r--r--src/mame/drivers/tk80.cpp90
-rw-r--r--src/mame/drivers/tk80bs.cpp21
-rw-r--r--src/mame/drivers/tm990189.cpp49
-rw-r--r--src/mame/drivers/tmaster.cpp33
-rw-r--r--src/mame/drivers/tmc1800.cpp78
-rw-r--r--src/mame/drivers/tmc2000e.cpp32
-rw-r--r--src/mame/drivers/tmc600.cpp28
-rw-r--r--src/mame/drivers/tmmjprd.cpp41
-rw-r--r--src/mame/drivers/tmnt.cpp662
-rw-r--r--src/mame/drivers/tmspoker.cpp26
-rw-r--r--src/mame/drivers/tnzs.cpp295
-rw-r--r--src/mame/drivers/toaplan1.cpp660
-rw-r--r--src/mame/drivers/toaplan2.cpp1137
-rw-r--r--src/mame/drivers/toki.cpp179
-rw-r--r--src/mame/drivers/tomcat.cpp61
-rw-r--r--src/mame/drivers/tonton.cpp38
-rw-r--r--src/mame/drivers/toobin.cpp49
-rw-r--r--src/mame/drivers/topspeed.cpp93
-rw-r--r--src/mame/drivers/toratora.cpp31
-rw-r--r--src/mame/drivers/tosh1000.cpp51
-rw-r--r--src/mame/drivers/tourtabl.cpp19
-rw-r--r--src/mame/drivers/tourvis.cpp55
-rw-r--r--src/mame/drivers/toypop.cpp89
-rw-r--r--src/mame/drivers/tp84.cpp124
-rw-r--r--src/mame/drivers/tr175.cpp47
-rw-r--r--src/mame/drivers/trackfld.cpp330
-rw-r--r--src/mame/drivers/travrusa.cpp31
-rw-r--r--src/mame/drivers/tricep.cpp13
-rw-r--r--src/mame/drivers/triforce.cpp13
-rw-r--r--src/mame/drivers/triplhnt.cpp41
-rw-r--r--src/mame/drivers/trs80.cpp356
-rw-r--r--src/mame/drivers/trs80dt1.cpp30
-rw-r--r--src/mame/drivers/trs80m2.cpp47
-rw-r--r--src/mame/drivers/truco.cpp19
-rw-r--r--src/mame/drivers/trucocl.cpp23
-rw-r--r--src/mame/drivers/trvmadns.cpp38
-rw-r--r--src/mame/drivers/trvquest.cpp29
-rw-r--r--src/mame/drivers/tryout.cpp58
-rw-r--r--src/mame/drivers/ts3000.cpp14
-rw-r--r--src/mame/drivers/ts802.cpp42
-rw-r--r--src/mame/drivers/ts803.cpp40
-rw-r--r--src/mame/drivers/ts816.cpp82
-rw-r--r--src/mame/drivers/tsamurai.cpp297
-rw-r--r--src/mame/drivers/tsispch.cpp46
-rw-r--r--src/mame/drivers/ttchamp.cpp36
-rw-r--r--src/mame/drivers/tti.cpp13
-rw-r--r--src/mame/drivers/tubep.cpp213
-rw-r--r--src/mame/drivers/tugboat.cpp25
-rw-r--r--src/mame/drivers/tumbleb.cpp257
-rw-r--r--src/mame/drivers/tunhunt.cpp41
-rw-r--r--src/mame/drivers/turbo.cpp132
-rw-r--r--src/mame/drivers/turrett.cpp42
-rw-r--r--src/mame/drivers/tutankhm.cpp37
-rw-r--r--src/mame/drivers/tutor.cpp77
-rw-r--r--src/mame/drivers/tv910.cpp35
-rw-r--r--src/mame/drivers/tv912.cpp35
-rw-r--r--src/mame/drivers/tv950.cpp27
-rw-r--r--src/mame/drivers/tv990.cpp23
-rw-r--r--src/mame/drivers/tvboy.cpp17
-rw-r--r--src/mame/drivers/tvc.cpp64
-rw-r--r--src/mame/drivers/tvcapcom.cpp5
-rw-r--r--src/mame/drivers/tvgame.cpp26
-rw-r--r--src/mame/drivers/twin16.cpp146
-rw-r--r--src/mame/drivers/twincobr.cpp99
-rw-r--r--src/mame/drivers/twinkle.cpp77
-rw-r--r--src/mame/drivers/twins.cpp71
-rw-r--r--src/mame/drivers/tx0.cpp14
-rw-r--r--src/mame/drivers/tx1.cpp224
-rw-r--r--src/mame/drivers/uapce.cpp47
-rw-r--r--src/mame/drivers/uknc.cpp24
-rw-r--r--src/mame/drivers/ultraman.cpp75
-rw-r--r--src/mame/drivers/ultratnk.cpp41
-rw-r--r--src/mame/drivers/ultrsprt.cpp38
-rw-r--r--src/mame/drivers/umipoker.cpp71
-rw-r--r--src/mame/drivers/undrfire.cpp89
-rw-r--r--src/mame/drivers/unianapc.cpp5
-rw-r--r--src/mame/drivers/unichamp.cpp13
-rw-r--r--src/mame/drivers/unico.cpp133
-rw-r--r--src/mame/drivers/unior.cpp38
-rw-r--r--src/mame/drivers/unistar.cpp22
-rw-r--r--src/mame/drivers/univac.cpp36
-rw-r--r--src/mame/drivers/unixpc.cpp46
-rw-r--r--src/mame/drivers/unkhorse.cpp22
-rw-r--r--src/mame/drivers/upscope.cpp49
-rw-r--r--src/mame/drivers/usgames.cpp74
-rw-r--r--src/mame/drivers/ut88.cpp54
-rw-r--r--src/mame/drivers/uzebox.cpp31
-rw-r--r--src/mame/drivers/v100.cpp46
-rw-r--r--src/mame/drivers/v102.cpp43
-rw-r--r--src/mame/drivers/v1050.cpp79
-rw-r--r--src/mame/drivers/v6809.cpp31
-rw-r--r--src/mame/drivers/vamphalf.cpp370
-rw-r--r--src/mame/drivers/vaportra.cpp65
-rw-r--r--src/mame/drivers/vastar.cpp62
-rw-r--r--src/mame/drivers/vax11.cpp25
-rw-r--r--src/mame/drivers/vball.cpp60
-rw-r--r--src/mame/drivers/vboy.cpp90
-rw-r--r--src/mame/drivers/vc4000.cpp36
-rw-r--r--src/mame/drivers/vcombat.cpp110
-rw-r--r--src/mame/drivers/vcs80.cpp29
-rw-r--r--src/mame/drivers/vd.cpp54
-rw-r--r--src/mame/drivers/vector06.cpp38
-rw-r--r--src/mame/drivers/vector4.cpp40
-rw-r--r--src/mame/drivers/vectrex.cpp30
-rw-r--r--src/mame/drivers/vectrix.cpp20
-rw-r--r--src/mame/drivers/vega.cpp18
-rw-r--r--src/mame/drivers/vegaeo.cpp27
-rw-r--r--src/mame/drivers/vendetta.cpp141
-rw-r--r--src/mame/drivers/vertigo.cpp62
-rw-r--r--src/mame/drivers/vg5k.cpp52
-rw-r--r--src/mame/drivers/vgmplay.cpp252
-rw-r--r--src/mame/drivers/vic10.cpp21
-rw-r--r--src/mame/drivers/vic20.cpp21
-rw-r--r--src/mame/drivers/vicdual.cpp442
-rw-r--r--src/mame/drivers/victor9k.cpp37
-rw-r--r--src/mame/drivers/victory.cpp48
-rw-r--r--src/mame/drivers/vidbrain.cpp32
-rw-r--r--src/mame/drivers/videopin.cpp29
-rw-r--r--src/mame/drivers/videopkr.cpp82
-rw-r--r--src/mame/drivers/vigilant.cpp135
-rw-r--r--src/mame/drivers/vii.cpp23
-rw-r--r--src/mame/drivers/vindictr.cpp45
-rw-r--r--src/mame/drivers/vip.cpp18
-rw-r--r--src/mame/drivers/viper.cpp49
-rw-r--r--src/mame/drivers/vis.cpp54
-rw-r--r--src/mame/drivers/vixen.cpp53
-rw-r--r--src/mame/drivers/vk100.cpp58
-rw-r--r--src/mame/drivers/vlc.cpp39
-rw-r--r--src/mame/drivers/volfied.cpp50
-rw-r--r--src/mame/drivers/votrpss.cpp40
-rw-r--r--src/mame/drivers/votrtnt.cpp15
-rw-r--r--src/mame/drivers/voyager.cpp92
-rw-r--r--src/mame/drivers/vp101.cpp64
-rw-r--r--src/mame/drivers/vp122.cpp41
-rw-r--r--src/mame/drivers/vp60.cpp21
-rw-r--r--src/mame/drivers/vpoker.cpp15
-rw-r--r--src/mame/drivers/vroulet.cpp38
-rw-r--r--src/mame/drivers/vsmilepro.cpp7
-rw-r--r--src/mame/drivers/vsnes.cpp88
-rw-r--r--src/mame/drivers/vt100.cpp68
-rw-r--r--src/mame/drivers/vt220.cpp38
-rw-r--r--src/mame/drivers/vt240.cpp123
-rw-r--r--src/mame/drivers/vt320.cpp12
-rw-r--r--src/mame/drivers/vt520.cpp16
-rw-r--r--src/mame/drivers/vta2000.cpp24
-rw-r--r--src/mame/drivers/vtech1.cpp65
-rw-r--r--src/mame/drivers/vtech2.cpp32
-rw-r--r--src/mame/drivers/vulgus.cpp54
-rw-r--r--src/mame/drivers/wacky_gator.cpp43
-rw-r--r--src/mame/drivers/wallc.cpp70
-rw-r--r--src/mame/drivers/wangpc.cpp80
-rw-r--r--src/mame/drivers/wardner.cpp119
-rw-r--r--src/mame/drivers/warpsped.cpp30
-rw-r--r--src/mame/drivers/warpwarp.cpp80
-rw-r--r--src/mame/drivers/warriorb.cpp85
-rw-r--r--src/mame/drivers/wc90.cpp105
-rw-r--r--src/mame/drivers/wc90b.cpp93
-rw-r--r--src/mame/drivers/wecleman.cpp172
-rw-r--r--src/mame/drivers/welltris.cpp75
-rw-r--r--src/mame/drivers/wgp.cpp83
-rw-r--r--src/mame/drivers/wheelfir.cpp69
-rw-r--r--src/mame/drivers/white_mod.cpp7
-rw-r--r--src/mame/drivers/whitestar.cpp29
-rw-r--r--src/mame/drivers/wicat.cpp115
-rw-r--r--src/mame/drivers/wico.cpp62
-rw-r--r--src/mame/drivers/wildpkr.cpp92
-rw-r--r--src/mame/drivers/williams.cpp244
-rw-r--r--src/mame/drivers/wink.cpp76
-rw-r--r--src/mame/drivers/wiping.cpp44
-rw-r--r--src/mame/drivers/witch.cpp72
-rw-r--r--src/mame/drivers/wiz.cpp128
-rw-r--r--src/mame/drivers/wmg.cpp34
-rw-r--r--src/mame/drivers/wms.cpp26
-rw-r--r--src/mame/drivers/wolfpack.cpp77
-rw-r--r--src/mame/drivers/wpc_95.cpp77
-rw-r--r--src/mame/drivers/wpc_an.cpp15
-rw-r--r--src/mame/drivers/wpc_dcs.cpp75
-rw-r--r--src/mame/drivers/wpc_dot.cpp27
-rw-r--r--src/mame/drivers/wpc_flip1.cpp27
-rw-r--r--src/mame/drivers/wpc_flip2.cpp27
-rw-r--r--src/mame/drivers/wpc_s.cpp75
-rw-r--r--src/mame/drivers/wrally.cpp62
-rw-r--r--src/mame/drivers/wswan.cpp27
-rw-r--r--src/mame/drivers/wwfsstar.cpp52
-rw-r--r--src/mame/drivers/wyse.cpp14
-rw-r--r--src/mame/drivers/wyvernf0.cpp78
-rw-r--r--src/mame/drivers/x07.cpp32
-rw-r--r--src/mame/drivers/x1.cpp152
-rw-r--r--src/mame/drivers/x1twin.cpp18
-rw-r--r--src/mame/drivers/x68k.cpp223
-rw-r--r--src/mame/drivers/xain.cpp100
-rw-r--r--src/mame/drivers/xavix.cpp123
-rw-r--r--src/mame/drivers/xbox.cpp18
-rw-r--r--src/mame/drivers/xerox820.cpp92
-rw-r--r--src/mame/drivers/xexex.cpp86
-rw-r--r--src/mame/drivers/xmen.cpp111
-rw-r--r--src/mame/drivers/xor100.cpp46
-rw-r--r--src/mame/drivers/xorworld.cpp27
-rw-r--r--src/mame/drivers/xtheball.cpp49
-rw-r--r--src/mame/drivers/xtom3d.cpp52
-rw-r--r--src/mame/drivers/xxmissio.cpp70
-rw-r--r--src/mame/drivers/xybots.cpp41
-rw-r--r--src/mame/drivers/xyonix.cpp32
-rw-r--r--src/mame/drivers/yiear.cpp54
-rw-r--r--src/mame/drivers/ymmu100.cpp42
-rw-r--r--src/mame/drivers/yunsun16.cpp82
-rw-r--r--src/mame/drivers/yunsung8.cpp55
-rw-r--r--src/mame/drivers/yuvomz80.cpp59
-rw-r--r--src/mame/drivers/z100.cpp46
-rw-r--r--src/mame/drivers/z1013.cpp24
-rw-r--r--src/mame/drivers/z80dev.cpp36
-rw-r--r--src/mame/drivers/z80ne.cpp129
-rw-r--r--src/mame/drivers/z88.cpp24
-rw-r--r--src/mame/drivers/z9001.cpp32
-rw-r--r--src/mame/drivers/zac2650.cpp25
-rw-r--r--src/mame/drivers/zac_1.cpp68
-rw-r--r--src/mame/drivers/zac_2.cpp39
-rw-r--r--src/mame/drivers/zac_proto.cpp35
-rw-r--r--src/mame/drivers/zaccaria.cpp31
-rw-r--r--src/mame/drivers/zapcomputer.cpp36
-rw-r--r--src/mame/drivers/zaurus.cpp15
-rw-r--r--src/mame/drivers/zaxxon.cpp115
-rw-r--r--src/mame/drivers/zerozone.cpp44
-rw-r--r--src/mame/drivers/zexall.cpp13
-rw-r--r--src/mame/drivers/zms8085.cpp24
-rw-r--r--src/mame/drivers/zn.cpp384
-rw-r--r--src/mame/drivers/zodiack.cpp65
-rw-r--r--src/mame/drivers/zorba.cpp50
-rw-r--r--src/mame/drivers/zr107.cpp115
-rw-r--r--src/mame/drivers/zrt80.cpp44
-rw-r--r--src/mame/drivers/zsbc3.cpp30
-rw-r--r--src/mame/drivers/zwackery.cpp27
-rw-r--r--src/mame/drivers/zx.cpp67
2090 files changed, 90027 insertions, 82318 deletions
diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp
index 2a0de5e5280..5623215d67a 100644
--- a/src/mame/drivers/1942.cpp
+++ b/src/mame/drivers/1942.cpp
@@ -180,24 +180,25 @@ TIMER_DEVICE_CALLBACK_MEMBER(_1942_state::c1942_scanline)
-ADDRESS_MAP_START(_1942_state::c1942_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSWA")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSWB")
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc802, 0xc803) AM_WRITE(c1942_scroll_w)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w)
- AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w)
- AM_RANGE(0xc806, 0xc806) AM_WRITE(c1942_bankswitch_w)
- AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
+void _1942_state::c1942_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSWA");
+ map(0xc004, 0xc004).portr("DSWB");
+ map(0xc800, 0xc800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc802, 0xc803).w(this, FUNC(_1942_state::c1942_scroll_w));
+ map(0xc804, 0xc804).w(this, FUNC(_1942_state::c1942_c804_w));
+ map(0xc805, 0xc805).w(this, FUNC(_1942_state::c1942_palette_bank_w));
+ map(0xc806, 0xc806).w(this, FUNC(_1942_state::c1942_bankswitch_w));
+ map(0xcc00, 0xcc7f).ram().share("spriteram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(_1942_state::c1942_fgvideoram_w)).share("fg_videoram");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(_1942_state::c1942_bgvideoram_w)).share("bg_videoram");
+ map(0xe000, 0xefff).ram();
+}
WRITE8_MEMBER(_1942_state::c1942p_f600_w)
{
@@ -215,57 +216,61 @@ WRITE8_MEMBER(_1942_state::c1942p_palette_w)
m_palette->set_indirect_color(offset, rgb_t(r<<5,g<<5,b<<6));
}
-ADDRESS_MAP_START(_1942_state::c1942p_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+void _1942_state::c1942p_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_SHARE("bg_videoram")
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(_1942_state::c1942_fgvideoram_w)).share("fg_videoram");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(_1942_state::c1942_bgvideoram_w)).share("bg_videoram");
- AM_RANGE(0xe000, 0xefff) AM_RAM
+ map(0xe000, 0xefff).ram();
- AM_RANGE(0xce00, 0xcfff) AM_RAM AM_SHARE("spriteram")
+ map(0xce00, 0xcfff).ram().share("spriteram");
- AM_RANGE(0xdc02, 0xdc03) AM_WRITE(c1942_scroll_w)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w)
- AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w)
+ map(0xdc02, 0xdc03).w(this, FUNC(_1942_state::c1942_scroll_w));
+ map(0xc804, 0xc804).w(this, FUNC(_1942_state::c1942_c804_w));
+ map(0xc805, 0xc805).w(this, FUNC(_1942_state::c1942_palette_bank_w));
- AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_WRITE(c1942p_palette_w) AM_SHARE("protopal")
+ map(0xf000, 0xf3ff).ram().w(this, FUNC(_1942_state::c1942p_palette_w)).share("protopal");
- AM_RANGE(0xf400, 0xf400) AM_WRITE(c1942_bankswitch_w)
- AM_RANGE(0xf500, 0xf500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf600, 0xf600) AM_WRITE(c1942p_f600_w)
+ map(0xf400, 0xf400).w(this, FUNC(_1942_state::c1942_bankswitch_w));
+ map(0xf500, 0xf500).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf600, 0xf600).w(this, FUNC(_1942_state::c1942p_f600_w));
- AM_RANGE(0xf700, 0xf700) AM_READ_PORT("DSWA")
- AM_RANGE(0xf701, 0xf701) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf702, 0xf702) AM_READ_PORT("DSWB")
- AM_RANGE(0xf703, 0xf703) AM_READ_PORT("P1")
- AM_RANGE(0xf704, 0xf704) AM_READ_PORT("P2")
-ADDRESS_MAP_END
+ map(0xf700, 0xf700).portr("DSWA");
+ map(0xf701, 0xf701).portr("SYSTEM");
+ map(0xf702, 0xf702).portr("DSWB");
+ map(0xf703, 0xf703).portr("P1");
+ map(0xf704, 0xf704).portr("P2");
+}
-ADDRESS_MAP_START(_1942_state::c1942p_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void _1942_state::c1942p_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
-ADDRESS_MAP_START(_1942_state::c1942p_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_WRITENOP
- AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void _1942_state::c1942p_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).nopw();
+ map(0x0014, 0x0015).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x0018, 0x0019).w("ay2", FUNC(ay8910_device::address_data_w));
+}
-ADDRESS_MAP_START(_1942_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void _1942_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xc000, 0xc001).w("ay2", FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( 1942 )
diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp
index 9414b112bc1..8049ef0dcda 100644
--- a/src/mame/drivers/1943.cpp
+++ b/src/mame/drivers/1943.cpp
@@ -102,40 +102,42 @@ READ8_MEMBER(_1943_state::_1943b_c007_r)
/* Memory Maps */
-ADDRESS_MAP_START(_1943_state::c1943_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSWA")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSWB")
- AM_RANGE(0xc007, 0xc007) AM_READ(c1943_protection_r)
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(c1943_c804_w) // ROM bank switch, screen flip
- AM_RANGE(0xc806, 0xc806) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xc807, 0xc807) AM_WRITE(c1943_protection_w)
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(c1943_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(c1943_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xd801) AM_RAM AM_SHARE("scrollx")
- AM_RANGE(0xd802, 0xd802) AM_RAM AM_SHARE("scrolly")
- AM_RANGE(0xd803, 0xd804) AM_RAM AM_SHARE("bgscrollx")
- AM_RANGE(0xd806, 0xd806) AM_WRITE(c1943_d806_w) // sprites, bg1, bg2 enable
- AM_RANGE(0xd808, 0xd808) AM_WRITENOP // ???
- AM_RANGE(0xd868, 0xd868) AM_WRITENOP // ???
- AM_RANGE(0xd888, 0xd888) AM_WRITENOP // ???
- AM_RANGE(0xd8a8, 0xd8a8) AM_WRITENOP // ???
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_1943_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_device, write)
-ADDRESS_MAP_END
+void _1943_state::c1943_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSWA");
+ map(0xc004, 0xc004).portr("DSWB");
+ map(0xc007, 0xc007).r(this, FUNC(_1943_state::c1943_protection_r));
+ map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc804, 0xc804).w(this, FUNC(_1943_state::c1943_c804_w)); // ROM bank switch, screen flip
+ map(0xc806, 0xc806).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xc807, 0xc807).w(this, FUNC(_1943_state::c1943_protection_w));
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(_1943_state::c1943_videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(_1943_state::c1943_colorram_w)).share("colorram");
+ map(0xd800, 0xd801).ram().share("scrollx");
+ map(0xd802, 0xd802).ram().share("scrolly");
+ map(0xd803, 0xd804).ram().share("bgscrollx");
+ map(0xd806, 0xd806).w(this, FUNC(_1943_state::c1943_d806_w)); // sprites, bg1, bg2 enable
+ map(0xd808, 0xd808).nopw(); // ???
+ map(0xd868, 0xd868).nopw(); // ???
+ map(0xd888, 0xd888).nopw(); // ???
+ map(0xd8a8, 0xd8a8).nopw(); // ???
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("spriteram");
+}
+
+void _1943_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write));
+ map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/1945kiii.cpp b/src/mame/drivers/1945kiii.cpp
index 549f54ef9da..76cc7b1d560 100644
--- a/src/mame/drivers/1945kiii.cpp
+++ b/src/mame/drivers/1945kiii.cpp
@@ -188,41 +188,44 @@ WRITE16_MEMBER(k3_state::flagrall_soundbanks_w)
}
-ADDRESS_MAP_START(k3_state::k3_base_map)
- AM_RANGE(0x0009ce, 0x0009cf) AM_WRITENOP // k3 - bug in code? (clean up log)
- AM_RANGE(0x0009d2, 0x0009d3) AM_WRITENOP // l3 - bug in code? (clean up log)
-
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Main Ram
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("spritera1")
- AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("spritera2")
- AM_RANGE(0x2c0000, 0x2c07ff) AM_RAM_WRITE(k3_bgram_w) AM_SHARE("bgram")
- AM_RANGE(0x2c0800, 0x2c0fff) AM_RAM // or does k3 have a bigger tilemap? (flagrall is definitely 32x32 tiles)
- AM_RANGE(0x340000, 0x340001) AM_WRITE(k3_scrollx_w)
- AM_RANGE(0x380000, 0x380001) AM_WRITE(k3_scrolly_w)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x440000, 0x440001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x480000, 0x480001) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(k3_state::k3_map)
- AM_IMPORT_FROM( k3_base_map )
-
- AM_RANGE(0x3c0000, 0x3c0001) AM_WRITE(k3_soundbanks_w)
-
- AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0xff00)
- AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0xff00)
- AM_RANGE(0x8c0000, 0x8cffff) AM_RAM // not used? (bug in code?)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(k3_state::flagrall_map)
- AM_IMPORT_FROM( k3_base_map )
-
- AM_RANGE(0x3c0000, 0x3c0001) AM_WRITE(flagrall_soundbanks_w)
- AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void k3_state::k3_base_map(address_map &map)
+{
+ map(0x0009ce, 0x0009cf).nopw(); // k3 - bug in code? (clean up log)
+ map(0x0009d2, 0x0009d3).nopw(); // l3 - bug in code? (clean up log)
+
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // Main Ram
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x240000, 0x240fff).ram().share("spritera1");
+ map(0x280000, 0x280fff).ram().share("spritera2");
+ map(0x2c0000, 0x2c07ff).ram().w(this, FUNC(k3_state::k3_bgram_w)).share("bgram");
+ map(0x2c0800, 0x2c0fff).ram(); // or does k3 have a bigger tilemap? (flagrall is definitely 32x32 tiles)
+ map(0x340000, 0x340001).w(this, FUNC(k3_state::k3_scrollx_w));
+ map(0x380000, 0x380001).w(this, FUNC(k3_state::k3_scrolly_w));
+ map(0x400000, 0x400001).portr("INPUTS");
+ map(0x440000, 0x440001).portr("SYSTEM");
+ map(0x480000, 0x480001).portr("DSW");
+}
+
+void k3_state::k3_map(address_map &map)
+{
+ k3_base_map(map);
+
+ map(0x3c0000, 0x3c0001).w(this, FUNC(k3_state::k3_soundbanks_w));
+
+ map(0x4c0000, 0x4c0000).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x500000, 0x500000).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x8c0000, 0x8cffff).ram(); // not used? (bug in code?)
+}
+
+
+void k3_state::flagrall_map(address_map &map)
+{
+ k3_base_map(map);
+
+ map(0x3c0000, 0x3c0001).w(this, FUNC(k3_state::flagrall_soundbanks_w));
+ map(0x4c0001, 0x4c0001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
static INPUT_PORTS_START( k3 )
diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp
index 68d7bc914d8..94b47a12ad4 100644
--- a/src/mame/drivers/20pacgal.cpp
+++ b/src/mame/drivers/20pacgal.cpp
@@ -186,39 +186,41 @@ WRITE8_MEMBER(_20pacgal_state::sprite_lookup_w)
// where does the clut (sprite_lookup_w) get uploaded? even if I set a WP on that data in ROM it isn't hit?
// likewise the sound table.. is it being uploaded in a different format at 0x0c000?
// we also need the palette data because there is only a single rom on this pcb?
-ADDRESS_MAP_START(_25pacman_state::_25pacman_map)
- AM_RANGE(0x00000, 0x3ffff) AM_DEVREADWRITE("flash", amd_29lv200t_device, read, write ) // (always fall through if nothing else is mapped?)
+void _25pacman_state::_25pacman_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rw("flash", FUNC(amd_29lv200t_device::read), FUNC(amd_29lv200t_device::write)); // (always fall through if nothing else is mapped?)
- AM_RANGE(0x04000, 0x047ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x04800, 0x05fff) AM_RAM
- AM_RANGE(0x06000, 0x06fff) AM_WRITEONLY AM_SHARE("char_gfx_ram")
- AM_RANGE(0x07000, 0x0717f) AM_WRITE(sprite_ram_w)
+ map(0x04000, 0x047ff).ram().share("video_ram");
+ map(0x04800, 0x05fff).ram();
+ map(0x06000, 0x06fff).writeonly().share("char_gfx_ram");
+ map(0x07000, 0x0717f).w(this, FUNC(_25pacman_state::sprite_ram_w));
// AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w)
- AM_RANGE(0x08000, 0x09fff) AM_WRITENOP
- AM_RANGE(0x0a000, 0x0bfff) AM_WRITE(sprite_gfx_w)
- AM_RANGE(0x0c000, 0x0dfff) AM_WRITENOP // is this the sound waveforms in a different format?
- AM_RANGE(0x0e000, 0x0ffff) AM_WRITENOP
- AM_RANGE(0x1c000, 0x1ffff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_20pacgal_state::_20pacgal_map)
- AM_RANGE(0x00000, 0x03fff) AM_ROM
- AM_RANGE(0x04000, 0x07fff) AM_ROM
- AM_RANGE(0x08000, 0x09fff) AM_ROM
- AM_RANGE(0x0a000, 0x0ffff) AM_MIRROR(0x40000) AM_ROM
- AM_RANGE(0x10000, 0x3ffff) AM_ROM
- AM_RANGE(0x44000, 0x447ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x44800, 0x45eff) AM_RAM
- AM_RANGE(0x45040, 0x4505f) AM_DEVWRITE("namco", namco_cus30_device, pacman_sound_w)
- AM_RANGE(0x45f00, 0x45fff) AM_DEVWRITE("namco", namco_cus30_device, namcos1_cus30_w)
- AM_RANGE(0x46000, 0x46fff) AM_WRITEONLY AM_SHARE("char_gfx_ram")
- AM_RANGE(0x47100, 0x47100) AM_RAM /* leftover from original Galaga code */
- AM_RANGE(0x48000, 0x49fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) /* this should be a mirror of 08000-09fff */
- AM_RANGE(0x4c000, 0x4dfff) AM_WRITE(sprite_gfx_w)
- AM_RANGE(0x4e000, 0x4e17f) AM_WRITE(sprite_ram_w)
- AM_RANGE(0x4e180, 0x4feff) AM_WRITENOP
- AM_RANGE(0x4ff00, 0x4ffff) AM_WRITE(sprite_lookup_w)
-ADDRESS_MAP_END
+ map(0x08000, 0x09fff).nopw();
+ map(0x0a000, 0x0bfff).w(this, FUNC(_25pacman_state::sprite_gfx_w));
+ map(0x0c000, 0x0dfff).nopw(); // is this the sound waveforms in a different format?
+ map(0x0e000, 0x0ffff).nopw();
+ map(0x1c000, 0x1ffff).nopw();
+}
+
+void _20pacgal_state::_20pacgal_map(address_map &map)
+{
+ map(0x00000, 0x03fff).rom();
+ map(0x04000, 0x07fff).rom();
+ map(0x08000, 0x09fff).rom();
+ map(0x0a000, 0x0ffff).mirror(0x40000).rom();
+ map(0x10000, 0x3ffff).rom();
+ map(0x44000, 0x447ff).ram().share("video_ram");
+ map(0x44800, 0x45eff).ram();
+ map(0x45040, 0x4505f).w("namco", FUNC(namco_cus30_device::pacman_sound_w));
+ map(0x45f00, 0x45fff).w("namco", FUNC(namco_cus30_device::namcos1_cus30_w));
+ map(0x46000, 0x46fff).writeonly().share("char_gfx_ram");
+ map(0x47100, 0x47100).ram(); /* leftover from original Galaga code */
+ map(0x48000, 0x49fff).bankr("bank1").w(this, FUNC(_20pacgal_state::ram_48000_w)); /* this should be a mirror of 08000-09fff */
+ map(0x4c000, 0x4dfff).w(this, FUNC(_20pacgal_state::sprite_gfx_w));
+ map(0x4e000, 0x4e17f).w(this, FUNC(_20pacgal_state::sprite_ram_w));
+ map(0x4e180, 0x4feff).nopw();
+ map(0x4ff00, 0x4ffff).w(this, FUNC(_20pacgal_state::sprite_lookup_w));
+}
/*************************************
@@ -232,47 +234,49 @@ READ8_MEMBER( _25pacman_state::_25pacman_io_87_r )
return 0xff;
}
-ADDRESS_MAP_START(_25pacman_state::_25pacman_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */
- AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x82, 0x82) AM_READ_PORT("SERVICE")
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(timer_pulse_w) /* ??? pulsed by the timer irq */
- AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w)
+void _25pacman_state::_25pacman_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).noprw(); /* Z180 internal registers */
+ map(0x40, 0x7f).noprw(); /* Z180 internal registers */
+ map(0x80, 0x80).portr("P1");
+ map(0x81, 0x81).portr("P2");
+ map(0x82, 0x82).portr("SERVICE");
+ map(0x80, 0x80).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x81, 0x81).w(this, FUNC(_25pacman_state::timer_pulse_w)); /* ??? pulsed by the timer irq */
+ map(0x82, 0x82).w(this, FUNC(_25pacman_state::irqack_w));
// AM_RANGE(0x84, 0x84) AM_NOP /* ?? */
- AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */
- AM_RANGE(0x87, 0x87) AM_READ( _25pacman_io_87_r ) // not eeprom on this
- AM_RANGE(0x87, 0x87) AM_WRITENOP
+ map(0x85, 0x86).writeonly().share("stars_seed"); /* stars: rng seed (lo/hi) */
+ map(0x87, 0x87).r(this, FUNC(_25pacman_state::_25pacman_io_87_r)); // not eeprom on this
+ map(0x87, 0x87).nopw();
// AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w)
- AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */
- AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip")
- AM_RANGE(0x8c, 0x8c) AM_WRITENOP
- AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_20pacgal_state::_20pacgal_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */
- AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x82, 0x82) AM_READ_PORT("SERVICE")
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(timer_pulse_w) /* ??? pulsed by the timer irq */
- AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w)
- AM_RANGE(0x84, 0x84) AM_NOP /* ?? */
- AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */
- AM_RANGE(0x87, 0x87) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w)
- AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */
- AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip")
- AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w)
-ADDRESS_MAP_END
+ map(0x89, 0x89).w("dac", FUNC(dac_byte_interface::write));
+ map(0x8a, 0x8a).writeonly().share("stars_ctrl"); /* stars: bits 3-4 = active set; bit 5 = enable */
+ map(0x8b, 0x8b).writeonly().share("flip");
+ map(0x8c, 0x8c).nopw();
+ map(0x8f, 0x8f).w(this, FUNC(_25pacman_state::_20pacgal_coin_counter_w));
+}
+
+void _20pacgal_state::_20pacgal_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).noprw(); /* Z180 internal registers */
+ map(0x40, 0x7f).noprw(); /* Z180 internal registers */
+ map(0x80, 0x80).portr("P1");
+ map(0x81, 0x81).portr("P2");
+ map(0x82, 0x82).portr("SERVICE");
+ map(0x80, 0x80).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x81, 0x81).w(this, FUNC(_20pacgal_state::timer_pulse_w)); /* ??? pulsed by the timer irq */
+ map(0x82, 0x82).w(this, FUNC(_20pacgal_state::irqack_w));
+ map(0x84, 0x84).noprw(); /* ?? */
+ map(0x85, 0x86).writeonly().share("stars_seed"); /* stars: rng seed (lo/hi) */
+ map(0x87, 0x87).portr("EEPROMIN").portw("EEPROMOUT");
+ map(0x88, 0x88).w(this, FUNC(_20pacgal_state::ram_bank_select_w));
+ map(0x89, 0x89).w("dac", FUNC(dac_byte_interface::write));
+ map(0x8a, 0x8a).writeonly().share("stars_ctrl"); /* stars: bits 3-4 = active set; bit 5 = enable */
+ map(0x8b, 0x8b).writeonly().share("flip");
+ map(0x8f, 0x8f).w(this, FUNC(_20pacgal_state::_20pacgal_coin_counter_w));
+}
diff --git a/src/mame/drivers/24cdjuke.cpp b/src/mame/drivers/24cdjuke.cpp
index a87690c45cb..6ef5531e067 100644
--- a/src/mame/drivers/24cdjuke.cpp
+++ b/src/mame/drivers/24cdjuke.cpp
@@ -125,20 +125,22 @@ WRITE8_MEMBER(midcoin24cdjuke_state::digit_w)
}
-ADDRESS_MAP_START(midcoin24cdjuke_state::midcoin24cdjuke_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x7800, 0x780f) AM_WRITE(digit_w)
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(midcoin24cdjuke_state::midcoin24cdjuke_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ic31", i8255_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ic11", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ic25", i8255_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_WRITENOP
- AM_RANGE(0x10, 0x1f) AM_READ(unknown_r)
-ADDRESS_MAP_END
+void midcoin24cdjuke_state::midcoin24cdjuke_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x7800, 0x780f).w(this, FUNC(midcoin24cdjuke_state::digit_w));
+ map(0x8000, 0xffff).ram();
+}
+
+void midcoin24cdjuke_state::midcoin24cdjuke_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ic31", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x04, 0x07).rw("ic11", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw("ic25", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0c, 0x0c).nopw();
+ map(0x10, 0x1f).r(this, FUNC(midcoin24cdjuke_state::unknown_r));
+}
static INPUT_PORTS_START( midcoin24cdjuke )
PORT_START("ROW0")
diff --git a/src/mame/drivers/2mindril.cpp b/src/mame/drivers/2mindril.cpp
index 2c53c24d638..75909adb738 100644
--- a/src/mame/drivers/2mindril.cpp
+++ b/src/mame/drivers/2mindril.cpp
@@ -194,26 +194,27 @@ WRITE16_MEMBER(_2mindril_state::drill_irq_w)
COMBINE_DATA(&m_irq_reg);
}
-ADDRESS_MAP_START(_2mindril_state::drill_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x3000ff) AM_RAM
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(f3_spriteram_r,f3_spriteram_w)
- AM_RANGE(0x410000, 0x41bfff) AM_READWRITE(f3_pf_data_r,f3_pf_data_w)
- AM_RANGE(0x41c000, 0x41dfff) AM_READWRITE(f3_videoram_r,f3_videoram_w)
- AM_RANGE(0x41e000, 0x41ffff) AM_READWRITE(f3_vram_r,f3_vram_w)
- AM_RANGE(0x420000, 0x42ffff) AM_READWRITE(f3_lineram_r,f3_lineram_w)
- AM_RANGE(0x430000, 0x43ffff) AM_READWRITE(f3_pivot_r,f3_pivot_w)
- AM_RANGE(0x460000, 0x46000f) AM_WRITE(f3_control_0_w)
- AM_RANGE(0x460010, 0x46001f) AM_WRITE(f3_control_1_w)
- AM_RANGE(0x500000, 0x501fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x502022, 0x502023) AM_WRITENOP //countinously switches between 0 and 2
- AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff)
- AM_RANGE(0x60000c, 0x60000d) AM_READWRITE(drill_irq_r,drill_irq_w)
- AM_RANGE(0x60000e, 0x60000f) AM_RAM // unknown purpose, zeroed at start-up and nothing else
- AM_RANGE(0x700000, 0x70000f) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xff00)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(sensors_w)
-ADDRESS_MAP_END
+void _2mindril_state::drill_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x3000ff).ram();
+ map(0x400000, 0x40ffff).rw(this, FUNC(_2mindril_state::f3_spriteram_r), FUNC(_2mindril_state::f3_spriteram_w));
+ map(0x410000, 0x41bfff).rw(this, FUNC(_2mindril_state::f3_pf_data_r), FUNC(_2mindril_state::f3_pf_data_w));
+ map(0x41c000, 0x41dfff).rw(this, FUNC(_2mindril_state::f3_videoram_r), FUNC(_2mindril_state::f3_videoram_w));
+ map(0x41e000, 0x41ffff).rw(this, FUNC(_2mindril_state::f3_vram_r), FUNC(_2mindril_state::f3_vram_w));
+ map(0x420000, 0x42ffff).rw(this, FUNC(_2mindril_state::f3_lineram_r), FUNC(_2mindril_state::f3_lineram_w));
+ map(0x430000, 0x43ffff).rw(this, FUNC(_2mindril_state::f3_pivot_r), FUNC(_2mindril_state::f3_pivot_w));
+ map(0x460000, 0x46000f).w(this, FUNC(_2mindril_state::f3_control_0_w));
+ map(0x460010, 0x46001f).w(this, FUNC(_2mindril_state::f3_control_1_w));
+ map(0x500000, 0x501fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x502022, 0x502023).nopw(); //countinously switches between 0 and 2
+ map(0x600000, 0x600007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff);
+ map(0x60000c, 0x60000d).rw(this, FUNC(_2mindril_state::drill_irq_r), FUNC(_2mindril_state::drill_irq_w));
+ map(0x60000e, 0x60000f).ram(); // unknown purpose, zeroed at start-up and nothing else
+ map(0x700000, 0x70000f).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0xff00);
+ map(0x800000, 0x800001).w(this, FUNC(_2mindril_state::sensors_w));
+}
static INPUT_PORTS_START( drill )
PORT_START("DSW")//Dip-Switches
diff --git a/src/mame/drivers/30test.cpp b/src/mame/drivers/30test.cpp
index 2c25f09ee04..b4471a80965 100644
--- a/src/mame/drivers/30test.cpp
+++ b/src/mame/drivers/30test.cpp
@@ -139,31 +139,33 @@ WRITE8_MEMBER(namco_30test_state::hc11_okibank_w)
}
-ADDRESS_MAP_START(namco_30test_state::namco_30test_map)
- AM_RANGE(0x0000, 0x003f) AM_RAM // internal I/O
- AM_RANGE(0x0040, 0x007f) AM_RAM // more internal I/O, HC11 change pending
- AM_RANGE(0x007c, 0x007c) AM_READWRITE(hc11_mux_r,hc11_mux_w)
- AM_RANGE(0x007e, 0x007e) AM_READWRITE(hc11_okibank_r,hc11_okibank_w)
- AM_RANGE(0x0080, 0x037f) AM_RAM // internal RAM
- AM_RANGE(0x0d80, 0x0dbf) AM_RAM // EEPROM read-back data goes there
- AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+void namco_30test_state::namco_30test_map(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // internal I/O
+ map(0x0040, 0x007f).ram(); // more internal I/O, HC11 change pending
+ map(0x007c, 0x007c).rw(this, FUNC(namco_30test_state::hc11_mux_r), FUNC(namco_30test_state::hc11_mux_w));
+ map(0x007e, 0x007e).rw(this, FUNC(namco_30test_state::hc11_okibank_r), FUNC(namco_30test_state::hc11_okibank_w));
+ map(0x0080, 0x037f).ram(); // internal RAM
+ map(0x0d80, 0x0dbf).ram(); // EEPROM read-back data goes there
+ map(0x2000, 0x2000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
/* 0x401e-0x401f: time */
- AM_RANGE(0x4000, 0x401f) AM_WRITE(namco_30test_led_w) // 7-seg leds
+ map(0x4000, 0x401f).w(this, FUNC(namco_30test_state::namco_30test_led_w)); // 7-seg leds
/* 0x6000: 1st place 7-seg led */
/* 0x6001: 2nd place 7-seg led */
/* 0x6002: 3rd place 7-seg led */
/* 0x6003: current / last play score */
/* 0x6004: lamps */
- AM_RANGE(0x6000, 0x6003) AM_WRITE(namco_30test_led_rank_w)
- AM_RANGE(0x6004, 0x6004) AM_WRITE(namco_30test_lamps_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x6000, 0x6003).w(this, FUNC(namco_30test_state::namco_30test_led_rank_w));
+ map(0x6004, 0x6004).w(this, FUNC(namco_30test_state::namco_30test_lamps_w));
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(namco_30test_state::namco_30test_io)
- AM_RANGE(MC68HC11_IO_PORTA,MC68HC11_IO_PORTA) AM_READ(namco_30test_mux_r)
+void namco_30test_state::namco_30test_io(address_map &map)
+{
+ map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).r(this, FUNC(namco_30test_state::namco_30test_mux_r));
// AM_RANGE(MC68HC11_IO_PORTD,MC68HC11_IO_PORTD) AM_RAM
- AM_RANGE(MC68HC11_IO_PORTE,MC68HC11_IO_PORTE) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+ map(MC68HC11_IO_PORTE, MC68HC11_IO_PORTE).portr("SYSTEM");
+}
static INPUT_PORTS_START( 30test )
diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp
index e6b04233d36..cefb7c079cc 100644
--- a/src/mame/drivers/39in1.cpp
+++ b/src/mame/drivers/39in1.cpp
@@ -1454,18 +1454,19 @@ DRIVER_INIT_MEMBER(_39in1_state,39in1)
-ADDRESS_MAP_START(_39in1_state::_39in1_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM
- AM_RANGE(0x00400000, 0x005fffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x04000000, 0x047fffff) AM_READWRITE(cpld_r, cpld_w )
- AM_RANGE(0x40000000, 0x400002ff) AM_READWRITE(pxa255_dma_r, pxa255_dma_w )
- AM_RANGE(0x40400000, 0x40400083) AM_READWRITE(pxa255_i2s_r, pxa255_i2s_w )
- AM_RANGE(0x40a00000, 0x40a0001f) AM_READWRITE(pxa255_ostimer_r, pxa255_ostimer_w )
- AM_RANGE(0x40d00000, 0x40d00017) AM_READWRITE(pxa255_intc_r, pxa255_intc_w )
- AM_RANGE(0x40e00000, 0x40e0006b) AM_READWRITE(pxa255_gpio_r, pxa255_gpio_w )
- AM_RANGE(0x44000000, 0x4400021f) AM_READWRITE(pxa255_lcd_r, pxa255_lcd_w )
- AM_RANGE(0xa0000000, 0xa07fffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+void _39in1_state::_39in1_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom();
+ map(0x00400000, 0x005fffff).rom().region("data", 0);
+ map(0x04000000, 0x047fffff).rw(this, FUNC(_39in1_state::cpld_r), FUNC(_39in1_state::cpld_w));
+ map(0x40000000, 0x400002ff).rw(this, FUNC(_39in1_state::pxa255_dma_r), FUNC(_39in1_state::pxa255_dma_w));
+ map(0x40400000, 0x40400083).rw(this, FUNC(_39in1_state::pxa255_i2s_r), FUNC(_39in1_state::pxa255_i2s_w));
+ map(0x40a00000, 0x40a0001f).rw(this, FUNC(_39in1_state::pxa255_ostimer_r), FUNC(_39in1_state::pxa255_ostimer_w));
+ map(0x40d00000, 0x40d00017).rw(this, FUNC(_39in1_state::pxa255_intc_r), FUNC(_39in1_state::pxa255_intc_w));
+ map(0x40e00000, 0x40e0006b).rw(this, FUNC(_39in1_state::pxa255_gpio_r), FUNC(_39in1_state::pxa255_gpio_w));
+ map(0x44000000, 0x4400021f).rw(this, FUNC(_39in1_state::pxa255_lcd_r), FUNC(_39in1_state::pxa255_lcd_w));
+ map(0xa0000000, 0xa07fffff).ram().share("ram");
+}
static INPUT_PORTS_START( 39in1 )
PORT_START("MCUIPT")
diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp
index ef2a57051a3..15b6b768e85 100644
--- a/src/mame/drivers/3do.cpp
+++ b/src/mame/drivers/3do.cpp
@@ -107,17 +107,18 @@ Part list of Goldstar 3DO Interactive Multiplayer
#define X601_CLOCK XTAL(16'934'400)
-ADDRESS_MAP_START(_3do_state::_3do_mem)
- AM_RANGE(0x00000000, 0x001FFFFF) AM_RAMBANK("bank1") AM_SHARE("dram") /* DRAM */
- AM_RANGE(0x00200000, 0x003FFFFF) AM_RAM AM_SHARE("vram") /* VRAM */
- AM_RANGE(0x03000000, 0x030FFFFF) AM_ROMBANK("bank2") /* BIOS */
- AM_RANGE(0x03100000, 0x0313FFFF) AM_RAM /* Brooktree? */
- AM_RANGE(0x03140000, 0x0315FFFF) AM_READWRITE8(_3do_nvarea_r, _3do_nvarea_w, 0x000000ff) /* NVRAM */
- AM_RANGE(0x03180000, 0x031BFFFF) AM_READWRITE(_3do_slow2_r, _3do_slow2_w) /* Slow bus - additional expansion */
- AM_RANGE(0x03200000, 0x0320FFFF) AM_READWRITE(_3do_svf_r, _3do_svf_w) /* special vram access1 */
- AM_RANGE(0x03300000, 0x033FFFFF) AM_READWRITE(_3do_madam_r, _3do_madam_w) /* address decoder */
- AM_RANGE(0x03400000, 0x034FFFFF) AM_READWRITE(_3do_clio_r, _3do_clio_w) /* io controller */
-ADDRESS_MAP_END
+void _3do_state::_3do_mem(address_map &map)
+{
+ map(0x00000000, 0x001FFFFF).bankrw("bank1").share("dram"); /* DRAM */
+ map(0x00200000, 0x003FFFFF).ram().share("vram"); /* VRAM */
+ map(0x03000000, 0x030FFFFF).bankr("bank2"); /* BIOS */
+ map(0x03100000, 0x0313FFFF).ram(); /* Brooktree? */
+ map(0x03140000, 0x0315FFFF).rw(this, FUNC(_3do_state::_3do_nvarea_r), FUNC(_3do_state::_3do_nvarea_w)).umask32(0x000000ff); /* NVRAM */
+ map(0x03180000, 0x031BFFFF).rw(this, FUNC(_3do_state::_3do_slow2_r), FUNC(_3do_state::_3do_slow2_w)); /* Slow bus - additional expansion */
+ map(0x03200000, 0x0320FFFF).rw(this, FUNC(_3do_state::_3do_svf_r), FUNC(_3do_state::_3do_svf_w)); /* special vram access1 */
+ map(0x03300000, 0x033FFFFF).rw(this, FUNC(_3do_state::_3do_madam_r), FUNC(_3do_state::_3do_madam_w)); /* address decoder */
+ map(0x03400000, 0x034FFFFF).rw(this, FUNC(_3do_state::_3do_clio_r), FUNC(_3do_state::_3do_clio_w)); /* io controller */
+}
static INPUT_PORTS_START( 3do )
diff --git a/src/mame/drivers/3x3puzzl.cpp b/src/mame/drivers/3x3puzzl.cpp
index 86dd7742ef0..fb05e097365 100644
--- a/src/mame/drivers/3x3puzzl.cpp
+++ b/src/mame/drivers/3x3puzzl.cpp
@@ -209,23 +209,24 @@ uint32_t _3x3puzzle_state::screen_update( screen_device &screen, bitmap_rgb32 &b
return 0;
}
-ADDRESS_MAP_START(_3x3puzzle_state::_3x3puzzle_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("videoram1")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x202000, 0x202fff) AM_RAM AM_SHARE("videoram3")
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("VBLANK")
- AM_RANGE(0x300000, 0x3005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x400001) AM_WRITE(tilemap1_scrollx_w)
- AM_RANGE(0x480000, 0x480001) AM_WRITE(tilemap1_scrolly_w)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")
- AM_RANGE(0x580000, 0x580001) AM_READ_PORT("SYS")
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW01")
- AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(gfx_ctrl_w)
- AM_RANGE(0x880000, 0x880001) AM_READNOP // read, but no tested afterwards
-ADDRESS_MAP_END
+void _3x3puzzle_state::_3x3puzzle_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x2007ff).ram().share("videoram1");
+ map(0x201000, 0x201fff).ram().share("videoram2");
+ map(0x202000, 0x202fff).ram().share("videoram3");
+ map(0x280000, 0x280001).portr("VBLANK");
+ map(0x300000, 0x3005ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400001).w(this, FUNC(_3x3puzzle_state::tilemap1_scrollx_w));
+ map(0x480000, 0x480001).w(this, FUNC(_3x3puzzle_state::tilemap1_scrolly_w));
+ map(0x500000, 0x500001).portr("P1");
+ map(0x580000, 0x580001).portr("SYS");
+ map(0x600000, 0x600001).portr("DSW01");
+ map(0x700001, 0x700001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x800000, 0x800001).w(this, FUNC(_3x3puzzle_state::gfx_ctrl_w));
+ map(0x880000, 0x880001).nopr(); // read, but no tested afterwards
+}
static INPUT_PORTS_START( _3x3puzzle )
PORT_START("P1")
diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp
index d187741c3d2..b1385e2474f 100644
--- a/src/mame/drivers/4004clk.cpp
+++ b/src/mame/drivers/4004clk.cpp
@@ -82,30 +82,35 @@ WRITE8_MEMBER(nixieclock_state::neon_w)
m_neon_out[3] = BIT(data,0);
}
-ADDRESS_MAP_START(nixieclock_state::_4004clk_rom)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nixieclock_state::_4004clk_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nixieclock_state::_4004clk_stat)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x001f) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nixieclock_state::_4004clk_rp)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_READ_PORT("INPUT")
- AM_RANGE(0x0000, 0x00ef) AM_MIRROR(0x0700) AM_WRITE(nixie_w)
- AM_RANGE(0x00f0, 0x00ff) AM_MIRROR(0x0700) AM_WRITE(neon_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nixieclock_state::_4004clk_mp)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_bit_interface, write)
-ADDRESS_MAP_END
+void nixieclock_state::_4004clk_rom(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("maincpu", 0);
+}
+
+void nixieclock_state::_4004clk_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram();
+}
+
+void nixieclock_state::_4004clk_stat(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x001f).ram();
+}
+
+void nixieclock_state::_4004clk_rp(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x000f).mirror(0x0700).portr("INPUT");
+ map(0x0000, 0x00ef).mirror(0x0700).w(this, FUNC(nixieclock_state::nixie_w));
+ map(0x00f0, 0x00ff).mirror(0x0700).w(this, FUNC(nixieclock_state::neon_w));
+}
+
+void nixieclock_state::_4004clk_mp(address_map &map)
+{
+ map(0x00, 0x00).w("dac", FUNC(dac_bit_interface::write));
+}
/* Input ports */
static INPUT_PORTS_START( 4004clk )
diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp
index de75f20cb3d..7c27c9207c7 100644
--- a/src/mame/drivers/40love.cpp
+++ b/src/mame/drivers/40love.cpp
@@ -349,58 +349,60 @@ READ8_MEMBER(fortyl_state::snd_flag_r)
/***************************************************************************/
-ADDRESS_MAP_START(fortyl_state::_40love_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* M5517P on main board */
- AM_RANGE(0x8800, 0x8800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0x8801, 0x8801) AM_READWRITE(fortyl_mcu_status_r, pix1_mcu_w) //pixel layer related
- AM_RANGE(0x8802, 0x8802) AM_WRITE(bank_select_w)
- AM_RANGE(0x8803, 0x8803) AM_READWRITE(pix2_r, pix2_w) //pixel layer related
- AM_RANGE(0x8804, 0x8804) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x8804, 0x8804) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x8805, 0x8805) AM_READ(snd_flag_r) AM_WRITENOP /*sound_reset*/ //????
- AM_RANGE(0x8807, 0x8807) AM_READNOP /* unknown */
- AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSW3")
- AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1")
- AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2")
- AM_RANGE(0x880c, 0x880c) AM_READ_PORT("DSW1") AM_WRITE(fortyl_pixram_sel_w) /* pixram bank select */
- AM_RANGE(0x880d, 0x880d) AM_READ_PORT("DSW2") AM_WRITENOP /* unknown */
- AM_RANGE(0x9000, 0x97ff) AM_READWRITE(fortyl_bg_videoram_r, fortyl_bg_videoram_w) AM_SHARE("videoram") /* #1 M5517P on video board */
- AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("video_ctrl") /* video control area */
- AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram") /* sprites part 1 */
- AM_RANGE(0x9880, 0x98bf) AM_READWRITE(fortyl_bg_colorram_r, fortyl_bg_colorram_w) AM_SHARE("colorram") /* background attributes (2 bytes per line) */
- AM_RANGE(0x98c0, 0x98ff) AM_RAM AM_SHARE("spriteram2")/* sprites part 2 */
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
+void fortyl_state::_40love_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram(); /* M5517P on main board */
+ map(0x8800, 0x8800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0x8801, 0x8801).rw(this, FUNC(fortyl_state::fortyl_mcu_status_r), FUNC(fortyl_state::pix1_mcu_w)); //pixel layer related
+ map(0x8802, 0x8802).w(this, FUNC(fortyl_state::bank_select_w));
+ map(0x8803, 0x8803).rw(this, FUNC(fortyl_state::pix2_r), FUNC(fortyl_state::pix2_w)); //pixel layer related
+ map(0x8804, 0x8804).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0x8804, 0x8804).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x8805, 0x8805).r(this, FUNC(fortyl_state::snd_flag_r)).nopw(); /*sound_reset*/ //????
+ map(0x8807, 0x8807).nopr(); /* unknown */
+ map(0x8808, 0x8808).portr("DSW3");
+ map(0x8809, 0x8809).portr("P1");
+ map(0x880a, 0x880a).portr("SYSTEM");
+ map(0x880b, 0x880b).portr("P2");
+ map(0x880c, 0x880c).portr("DSW1").w(this, FUNC(fortyl_state::fortyl_pixram_sel_w)); /* pixram bank select */
+ map(0x880d, 0x880d).portr("DSW2").nopw(); /* unknown */
+ map(0x9000, 0x97ff).rw(this, FUNC(fortyl_state::fortyl_bg_videoram_r), FUNC(fortyl_state::fortyl_bg_videoram_w)).share("videoram"); /* #1 M5517P on video board */
+ map(0x9800, 0x983f).ram().share("video_ctrl"); /* video control area */
+ map(0x9840, 0x987f).ram().share("spriteram"); /* sprites part 1 */
+ map(0x9880, 0x98bf).rw(this, FUNC(fortyl_state::fortyl_bg_colorram_r), FUNC(fortyl_state::fortyl_bg_colorram_w)).share("colorram"); /* background attributes (2 bytes per line) */
+ map(0x98c0, 0x98ff).ram().share("spriteram2");/* sprites part 2 */
+ map(0xa000, 0xbfff).bankr("bank1");
//AM_RANGE(0xbf00, 0xbfff) writes here when zooms-in/out, left-over or pixel line clearance?
- AM_RANGE(0xc000, 0xffff) AM_READWRITE(fortyl_pixram_r, fortyl_pixram_w) /* banked pixel layer */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fortyl_state::undoukai_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("mcu_ram") /* M5517P on main board */
- AM_RANGE(0xa800, 0xa800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0xa801, 0xa801) AM_READWRITE(fortyl_mcu_status_r, pix1_w) //pixel layer related
- AM_RANGE(0xa802, 0xa802) AM_WRITE(bank_select_w)
- AM_RANGE(0xa803, 0xa803) AM_READWRITE(pix2_r, pix2_w) //pixel layer related
- AM_RANGE(0xa804, 0xa804) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0xa804, 0xa804) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa805, 0xa805) AM_READ(snd_flag_r) AM_WRITENOP /*sound_reset*/ //????
- AM_RANGE(0xa807, 0xa807) AM_READNOP AM_WRITENOP /* unknown */
- AM_RANGE(0xa808, 0xa808) AM_READ_PORT("DSW3")
- AM_RANGE(0xa809, 0xa809) AM_READ_PORT("P1")
- AM_RANGE(0xa80a, 0xa80a) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa80b, 0xa80b) AM_READ_PORT("P2")
- AM_RANGE(0xa80c, 0xa80c) AM_READ_PORT("DSW1") AM_WRITE(fortyl_pixram_sel_w) /* pixram bank select */
- AM_RANGE(0xa80d, 0xa80d) AM_READ_PORT("DSW2") AM_WRITENOP /* unknown */
- AM_RANGE(0xb000, 0xb7ff) AM_READWRITE(fortyl_bg_videoram_r, fortyl_bg_videoram_w) AM_SHARE("videoram") /* #1 M5517P on video board */
- AM_RANGE(0xb800, 0xb83f) AM_RAM AM_SHARE("video_ctrl") /* video control area */
- AM_RANGE(0xb840, 0xb87f) AM_RAM AM_SHARE("spriteram") /* sprites part 1 */
- AM_RANGE(0xb880, 0xb8bf) AM_READWRITE(fortyl_bg_colorram_r, fortyl_bg_colorram_w) AM_SHARE("colorram") /* background attributes (2 bytes per line) */
- AM_RANGE(0xb8e0, 0xb8ff) AM_RAM AM_SHARE("spriteram2") /* sprites part 2 */
- AM_RANGE(0xc000, 0xffff) AM_READWRITE(fortyl_pixram_r, fortyl_pixram_w)
-ADDRESS_MAP_END
+ map(0xc000, 0xffff).rw(this, FUNC(fortyl_state::fortyl_pixram_r), FUNC(fortyl_state::fortyl_pixram_w)); /* banked pixel layer */
+}
+
+void fortyl_state::undoukai_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xa7ff).ram().share("mcu_ram"); /* M5517P on main board */
+ map(0xa800, 0xa800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0xa801, 0xa801).rw(this, FUNC(fortyl_state::fortyl_mcu_status_r), FUNC(fortyl_state::pix1_w)); //pixel layer related
+ map(0xa802, 0xa802).w(this, FUNC(fortyl_state::bank_select_w));
+ map(0xa803, 0xa803).rw(this, FUNC(fortyl_state::pix2_r), FUNC(fortyl_state::pix2_w)); //pixel layer related
+ map(0xa804, 0xa804).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0xa804, 0xa804).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xa805, 0xa805).r(this, FUNC(fortyl_state::snd_flag_r)).nopw(); /*sound_reset*/ //????
+ map(0xa807, 0xa807).nopr().nopw(); /* unknown */
+ map(0xa808, 0xa808).portr("DSW3");
+ map(0xa809, 0xa809).portr("P1");
+ map(0xa80a, 0xa80a).portr("SYSTEM");
+ map(0xa80b, 0xa80b).portr("P2");
+ map(0xa80c, 0xa80c).portr("DSW1").w(this, FUNC(fortyl_state::fortyl_pixram_sel_w)); /* pixram bank select */
+ map(0xa80d, 0xa80d).portr("DSW2").nopw(); /* unknown */
+ map(0xb000, 0xb7ff).rw(this, FUNC(fortyl_state::fortyl_bg_videoram_r), FUNC(fortyl_state::fortyl_bg_videoram_w)).share("videoram"); /* #1 M5517P on video board */
+ map(0xb800, 0xb83f).ram().share("video_ctrl"); /* video control area */
+ map(0xb840, 0xb87f).ram().share("spriteram"); /* sprites part 1 */
+ map(0xb880, 0xb8bf).rw(this, FUNC(fortyl_state::fortyl_bg_colorram_r), FUNC(fortyl_state::fortyl_bg_colorram_w)).share("colorram"); /* background attributes (2 bytes per line) */
+ map(0xb8e0, 0xb8ff).ram().share("spriteram2"); /* sprites part 2 */
+ map(0xc000, 0xffff).rw(this, FUNC(fortyl_state::fortyl_pixram_r), FUNC(fortyl_state::fortyl_pixram_w));
+}
WRITE8_MEMBER(fortyl_state::sound_control_0_w)
{
@@ -444,21 +446,22 @@ WRITE8_MEMBER(fortyl_state::sound_control_3_w)/* unknown */
// popmessage("SND3 0=%02x 1=%02x 2=%02x 3=%02x", m_snd_ctrl0, m_snd_ctrl1, m_snd_ctrl2, m_snd_ctrl3);
}
-ADDRESS_MAP_START(fortyl_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w)
- AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w)
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xda00, 0xda00) AM_READNOP // unknown read
- AM_RANGE(0xda00, 0xda00) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>) // enable NMI
- AM_RANGE(0xdc00, 0xdc00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>) // disable NMI
- AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC - unknown read */
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */
-ADDRESS_MAP_END
+void fortyl_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).w(m_ay, FUNC(ay8910_device::address_data_w));
+ map(0xca00, 0xca0d).w(m_msm, FUNC(msm5232_device::write));
+ map(0xcc00, 0xcc00).w(this, FUNC(fortyl_state::sound_control_0_w));
+ map(0xce00, 0xce00).w(this, FUNC(fortyl_state::sound_control_1_w));
+ map(0xd800, 0xd800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xd800, 0xd800).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0xda00, 0xda00).nopr(); // unknown read
+ map(0xda00, 0xda00).w("soundnmi", FUNC(input_merger_device::in_set<1>)); // enable NMI
+ map(0xdc00, 0xdc00).w("soundnmi", FUNC(input_merger_device::in_clear<1>)); // disable NMI
+ map(0xde00, 0xde00).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC - unknown read */
+ map(0xe000, 0xefff).rom(); /* space for diagnostics ROM */
+}
static INPUT_PORTS_START( 40love )
diff --git a/src/mame/drivers/4dpi.cpp b/src/mame/drivers/4dpi.cpp
index a86e832b186..f245174df69 100644
--- a/src/mame/drivers/4dpi.cpp
+++ b/src/mame/drivers/4dpi.cpp
@@ -218,12 +218,13 @@ void sgi_ip6_state::machine_reset()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(sgi_ip6_state::sgi_ip6_map)
- AM_RANGE( 0x1f880000, 0x1f880003 ) AM_READWRITE(ip6_unk1_r, ip6_unk1_w)
- AM_RANGE( 0x1fb00000, 0x1fb00003 ) AM_READWRITE(ip6_unk3_r, ip6_unk3_w)
- AM_RANGE( 0x1fbc004c, 0x1fbc004f ) AM_READWRITE(ip6_unk2_r, ip6_unk2_w)
- AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_REGION( "user1", 0 )
-ADDRESS_MAP_END
+void sgi_ip6_state::sgi_ip6_map(address_map &map)
+{
+ map(0x1f880000, 0x1f880003).rw(this, FUNC(sgi_ip6_state::ip6_unk1_r), FUNC(sgi_ip6_state::ip6_unk1_w));
+ map(0x1fb00000, 0x1fb00003).rw(this, FUNC(sgi_ip6_state::ip6_unk3_r), FUNC(sgi_ip6_state::ip6_unk3_w));
+ map(0x1fbc004c, 0x1fbc004f).rw(this, FUNC(sgi_ip6_state::ip6_unk2_r), FUNC(sgi_ip6_state::ip6_unk2_w));
+ map(0x1fc00000, 0x1fc3ffff).rom().region("user1", 0);
+}
/***************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp
index df0a407dbb9..6eb4c436e6b 100644
--- a/src/mame/drivers/4enlinea.cpp
+++ b/src/mame/drivers/4enlinea.cpp
@@ -350,20 +350,22 @@ READ8_MEMBER(_4enlinea_state::serial_r)
* Memory Map Information *
***********************************/
-ADDRESS_MAP_START(_4enlinea_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void _4enlinea_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
// AM_RANGE(0x8000, 0xbfff) AM_RAM // CGA VRAM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
+ map(0xc000, 0xdfff).ram();
- AM_RANGE(0xe000, 0xe001) AM_READ(serial_r)
-ADDRESS_MAP_END
+ map(0xe000, 0xe001).r(this, FUNC(_4enlinea_state::serial_r));
+}
-ADDRESS_MAP_START(_4enlinea_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0x3ff)
+void _4enlinea_state::main_portmap(address_map &map)
+{
+ map.global_mask(0x3ff);
// AM_RANGE(0x3d4, 0x3df) CGA regs
- AM_RANGE(0x3bf, 0x3bf) AM_WRITENOP // CGA mode control, TODO
-ADDRESS_MAP_END
+ map(0x3bf, 0x3bf).nopw(); // CGA mode control, TODO
+}
READ8_MEMBER(_4enlinea_state::serial_status_r)
{
@@ -388,21 +390,23 @@ READ8_MEMBER(_4enlinea_state::hack_r)
return machine().rand();
}
-ADDRESS_MAP_START(_4enlinea_state::audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf800, 0xfbff) AM_RAM
- AM_RANGE(0xfc24, 0xfc24) AM_READ(hack_r)
- AM_RANGE(0xfc28, 0xfc28) AM_READ(hack_r)
- AM_RANGE(0xfc30, 0xfc31) AM_WRITE(serial_w)
- AM_RANGE(0xfc32, 0xfc32) AM_READWRITE(serial_status_r,serial_status_w)
- AM_RANGE(0xfc48, 0xfc49) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_data_w)
+void _4enlinea_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf800, 0xfbff).ram();
+ map(0xfc24, 0xfc24).r(this, FUNC(_4enlinea_state::hack_r));
+ map(0xfc28, 0xfc28).r(this, FUNC(_4enlinea_state::hack_r));
+ map(0xfc30, 0xfc31).w(this, FUNC(_4enlinea_state::serial_w));
+ map(0xfc32, 0xfc32).rw(this, FUNC(_4enlinea_state::serial_status_r), FUNC(_4enlinea_state::serial_status_w));
+ map(0xfc48, 0xfc49).rw(m_ay, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(_4enlinea_state::audio_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void _4enlinea_state::audio_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+}
/***********************************
diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp
index 1615ee712ee..38e97f77ab0 100644
--- a/src/mame/drivers/4enraya.cpp
+++ b/src/mame/drivers/4enraya.cpp
@@ -250,37 +250,41 @@ WRITE8_MEMBER(_4enraya_state::fenraya_custom_map_w)
* Memory Map Information *
***********************************/
-ADDRESS_MAP_START(_4enraya_state::main_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(fenraya_custom_map_r, fenraya_custom_map_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_4enraya_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("INPUTS")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x23, 0x23) AM_WRITE(sound_data_w)
- AM_RANGE(0x33, 0x33) AM_WRITE(sound_control_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(_4enraya_state::unkpacg_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x7000, 0x7fff) AM_WRITE(fenraya_videoram_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_4enraya_state::unkpacg_main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
+void _4enraya_state::main_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(_4enraya_state::fenraya_custom_map_r), FUNC(_4enraya_state::fenraya_custom_map_w));
+}
+
+void _4enraya_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW");
+ map(0x01, 0x01).portr("INPUTS");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x23, 0x23).w(this, FUNC(_4enraya_state::sound_data_w));
+ map(0x33, 0x33).w(this, FUNC(_4enraya_state::sound_control_w));
+}
+
+
+void _4enraya_state::unkpacg_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram");
+ map(0x7000, 0x7fff).w(this, FUNC(_4enraya_state::fenraya_videoram_w));
+ map(0x8000, 0x9fff).rom();
+}
+
+void _4enraya_state::unkpacg_main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
// AM_RANGE(0x03, 0x03) AM_WRITE("out_w") // to investigate...
- AM_RANGE(0x17, 0x17) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x27, 0x27) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x37, 0x37) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+ map(0x17, 0x17).w(m_ay, FUNC(ay8910_device::data_w));
+ map(0x27, 0x27).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x37, 0x37).w(m_ay, FUNC(ay8910_device::address_w));
+}
/***********************************
diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp
index 49ad743baa5..3502dd61fa2 100644
--- a/src/mame/drivers/4roses.cpp
+++ b/src/mame/drivers/4roses.cpp
@@ -208,12 +208,13 @@ public:
* Memory map information *
*************************/
-ADDRESS_MAP_START(_4roses_state::_4roses_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM // AM_SHARE("nvram")
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void _4roses_state::_4roses_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); // AM_SHARE("nvram")
+ map(0x6000, 0x6fff).ram().w(this, FUNC(_4roses_state::funworld_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(_4roses_state::funworld_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
/*
Unknown R/W
diff --git a/src/mame/drivers/5clown.cpp b/src/mame/drivers/5clown.cpp
index d95b88e9fee..7b4faa60e95 100644
--- a/src/mame/drivers/5clown.cpp
+++ b/src/mame/drivers/5clown.cpp
@@ -756,25 +756,26 @@ WRITE8_MEMBER(_5clown_state::snd_a02_w)
* Memory map information *
*************************/
-ADDRESS_MAP_START(_5clown_state::fclown_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(fclown_videoram_w) AM_SHARE("videoram") /* Init'ed at $2042 */
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(fclown_colorram_w) AM_SHARE("colorram") /* Init'ed at $2054 */
- AM_RANGE(0x2000, 0x7fff) AM_ROM /* ROM space */
-
- AM_RANGE(0xc048, 0xc048) AM_WRITE(cpu_c048_w )
- AM_RANGE(0xd800, 0xd800) AM_WRITE(cpu_d800_w )
-
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("SW1") /* DIP Switches bank */
- AM_RANGE(0xcc00, 0xcc00) AM_READ_PORT("SW2") /* DIP Switches bank */
- AM_RANGE(0xd400, 0xd400) AM_READ_PORT("SW3") /* Second DIP Switches bank */
-
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM space */
-ADDRESS_MAP_END
+void _5clown_state::fclown_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(_5clown_state::fclown_videoram_w)).share("videoram"); /* Init'ed at $2042 */
+ map(0x1800, 0x1bff).ram().w(this, FUNC(_5clown_state::fclown_colorram_w)).share("colorram"); /* Init'ed at $2054 */
+ map(0x2000, 0x7fff).rom(); /* ROM space */
+
+ map(0xc048, 0xc048).w(this, FUNC(_5clown_state::cpu_c048_w));
+ map(0xd800, 0xd800).w(this, FUNC(_5clown_state::cpu_d800_w));
+
+ map(0xc400, 0xc400).portr("SW1"); /* DIP Switches bank */
+ map(0xcc00, 0xcc00).portr("SW2"); /* DIP Switches bank */
+ map(0xd400, 0xd400).portr("SW3"); /* Second DIP Switches bank */
+
+ map(0xe000, 0xffff).rom(); /* ROM space */
+}
/*
@@ -831,15 +832,16 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(_5clown_state::fcaudio_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_WRITE(snd_800_w)
- AM_RANGE(0x0a02, 0x0a02) AM_WRITE(snd_a02_w)
- AM_RANGE(0x0c04, 0x0c04) AM_DEVWRITE("oki6295", okim6295_device, write)
- AM_RANGE(0x0c06, 0x0c06) AM_DEVREAD("oki6295", okim6295_device, read)
- AM_RANGE(0x0e06, 0x0e06) AM_READ(snd_e06_r)
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM space */
-ADDRESS_MAP_END
+void _5clown_state::fcaudio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0800).w(this, FUNC(_5clown_state::snd_800_w));
+ map(0x0a02, 0x0a02).w(this, FUNC(_5clown_state::snd_a02_w));
+ map(0x0c04, 0x0c04).w("oki6295", FUNC(okim6295_device::write));
+ map(0x0c06, 0x0c06).r("oki6295", FUNC(okim6295_device::read));
+ map(0x0e06, 0x0e06).r(this, FUNC(_5clown_state::snd_e06_r));
+ map(0xe000, 0xffff).rom(); /* ROM space */
+}
/*************************
diff --git a/src/mame/drivers/68ksbc.cpp b/src/mame/drivers/68ksbc.cpp
index 90353a42662..354080565dd 100644
--- a/src/mame/drivers/68ksbc.cpp
+++ b/src/mame/drivers/68ksbc.cpp
@@ -47,12 +47,13 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(c68ksbc_state::c68ksbc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x002fff) AM_ROM
- AM_RANGE(0x003000, 0x5fffff) AM_RAM
- AM_RANGE(0x600000, 0x600003) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void c68ksbc_state::c68ksbc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x002fff).rom();
+ map(0x003000, 0x5fffff).ram();
+ map(0x600000, 0x600003).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
/* Input ports */
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index 0ad1abebe63..0dcb1929fb2 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -372,15 +372,16 @@ INPUT_PORTS_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::invadpt2_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::invadpt2_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( invadpt2 )
@@ -442,15 +443,16 @@ MACHINE_CONFIG_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::spacerng_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(spacerng_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::spacerng_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::spacerng_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
MACHINE_CONFIG_START(_8080bw_state::spacerng)
invadpt2(config);
@@ -468,14 +470,15 @@ MACHINE_CONFIG_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::spcewars_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(spcewars_sh_port_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
-ADDRESS_MAP_END
+void _8080bw_state::spcewars_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::spcewars_sh_port_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w));
+}
static INPUT_PORTS_START( spcewars )
@@ -526,16 +529,17 @@ MACHINE_CONFIG_END
// has a slightly rearranged io map and has PROMs and watchdog
-ADDRESS_MAP_START(_8080bw_state::spcewarla_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x04, 0x04) AM_WRITE(spcewars_sh_port_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
-ADDRESS_MAP_END
+void _8080bw_state::spcewarla_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
+ map(0x04, 0x04).w(this, FUNC(_8080bw_state::spcewars_sh_port_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w));
+ map(0x06, 0x06).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x08, 0x08).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x0c, 0x0c).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+}
MACHINE_CONFIG_START(_8080bw_state::spcewarla)
spcewars(config);
@@ -557,16 +561,17 @@ MACHINE_CONFIG_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::astropal_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN3")
-
- AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invaders_audio_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::astropal_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x03, 0x03).mirror(0x04).portr("IN3");
+
+ map(0x03, 0x03).w(this, FUNC(_8080bw_state::invaders_audio_1_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invaders_audio_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( astropal )
PORT_START("IN0")
@@ -621,23 +626,25 @@ MACHINE_CONFIG_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::cosmo_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x57ff) AM_ROM
- AM_RANGE(0x5c00, 0x5fff) AM_RAM AM_SHARE("colorram")
-ADDRESS_MAP_END
+void _8080bw_state::cosmo_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("main_ram");
+ map(0x4000, 0x57ff).rom();
+ map(0x5c00, 0x5fff).ram().share("colorram");
+}
/* at least one of these MWA8_NOPs must be sound related */
-ADDRESS_MAP_START(_8080bw_state::cosmo_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITENOP
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0x03, 0x03) AM_WRITE(invadpt2_sh_port_1_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(cosmo_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITENOP
-ADDRESS_MAP_END
+void _8080bw_state::cosmo_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").nopw();
+ map(0x01, 0x01).portr("IN1").nopw();
+ map(0x02, 0x02).portr("IN2").nopw();
+ map(0x03, 0x03).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::cosmo_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).nopw();
+}
static INPUT_PORTS_START( cosmo )
@@ -803,16 +810,18 @@ static INPUT_PORTS_START( spacecom )
INPUT_PORTS_END
-ADDRESS_MAP_START(_8080bw_state::spacecom_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") // other RAM not hooked up?
-ADDRESS_MAP_END
+void _8080bw_state::spacecom_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("main_ram"); // other RAM not hooked up?
+}
-ADDRESS_MAP_START(_8080bw_state::spacecom_io_map)
- AM_RANGE(0x41, 0x41) AM_READ_PORT("IN0")
- AM_RANGE(0x42, 0x42) AM_READ_PORT("IN1") AM_WRITE(invaders_audio_1_w)
- AM_RANGE(0x44, 0x44) AM_READ_PORT("IN2") AM_WRITE(invaders_audio_2_w)
-ADDRESS_MAP_END
+void _8080bw_state::spacecom_io_map(address_map &map)
+{
+ map(0x41, 0x41).portr("IN0");
+ map(0x42, 0x42).portr("IN1").w(this, FUNC(_8080bw_state::invaders_audio_1_w));
+ map(0x44, 0x44).portr("IN2").w(this, FUNC(_8080bw_state::invaders_audio_2_w));
+}
MACHINE_CONFIG_START(_8080bw_state::spacecom)
@@ -862,20 +871,22 @@ READ8_MEMBER(_8080bw_state::invrvnge_02_r)
return (data & 0x8f) | (ioport("IN1")->read() & 0x70);
}
-ADDRESS_MAP_START(_8080bw_state::invrvnge_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invrvnge_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invrvnge_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::invrvnge_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).r(this, FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invrvnge_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invrvnge_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
-ADDRESS_MAP_START(_8080bw_state::invrvnge_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_ROM // dummy prg map, TODO: decrypt ROM
-ADDRESS_MAP_END
+void _8080bw_state::invrvnge_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rom(); // dummy prg map, TODO: decrypt ROM
+}
static INPUT_PORTS_START( invrvnge )
@@ -1055,15 +1066,16 @@ static INPUT_PORTS_START( galxwars )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
INPUT_PORTS_END
-ADDRESS_MAP_START(_8080bw_state::starw1_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_WRITENOP /* writes 9B at boot */
- AM_RANGE(0x04, 0x04) AM_WRITE(invadpt2_sh_port_1_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITENOP /* writes 89 at boot */
-ADDRESS_MAP_END
+void _8080bw_state::starw1_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).nopw(); /* writes 9B at boot */
+ map(0x04, 0x04).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).nopw(); /* writes 89 at boot */
+}
MACHINE_CONFIG_START(_8080bw_state::starw1)
invadpt2(config);
@@ -1077,20 +1089,22 @@ MACHINE_CONFIG_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::escmars_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x4fff) AM_ROM
-ADDRESS_MAP_END
+void _8080bw_state::escmars_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("main_ram");
+ map(0x4000, 0x4fff).rom();
+}
-ADDRESS_MAP_START(_8080bw_state::lrescue_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(lrescue_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(lrescue_sh_port_2_w)
-ADDRESS_MAP_END
+void _8080bw_state::lrescue_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::lrescue_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::lrescue_sh_port_2_w));
+}
static INPUT_PORTS_START( lrescue )
@@ -1219,19 +1233,20 @@ WRITE8_MEMBER(_8080bw_state::cosmicmo_05_w)
m_flip_screen = BIT(data, 5) & BIT(ioport("IN2")->read(), 2);
}
-ADDRESS_MAP_START(_8080bw_state::cosmicmo_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ(invrvnge_02_r)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(cosmicmo_05_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::cosmicmo_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).r(this, FUNC(_8080bw_state::invrvnge_02_r));
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).w(this, FUNC(_8080bw_state::invaders_audio_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::cosmicmo_05_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
MACHINE_CONFIG_START(_8080bw_state::cosmicmo)
mw8080bw_root(config);
@@ -1340,23 +1355,25 @@ WRITE8_MEMBER(_8080bw_state::rollingc_scattered_colorram2_w)
m_scattered_colorram2[(offset & 0x1f) | ((offset & 0x1f00) >> 3)] = data;
}
-ADDRESS_MAP_START(_8080bw_state::rollingc_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x5fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(rollingc_scattered_colorram_r, rollingc_scattered_colorram_w)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(rollingc_scattered_colorram2_r, rollingc_scattered_colorram2_w)
-ADDRESS_MAP_END
+void _8080bw_state::rollingc_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("main_ram");
+ map(0x4000, 0x5fff).rom();
+ map(0xa000, 0xbfff).rw(this, FUNC(_8080bw_state::rollingc_scattered_colorram_r), FUNC(_8080bw_state::rollingc_scattered_colorram_w));
+ map(0xe000, 0xffff).rw(this, FUNC(_8080bw_state::rollingc_scattered_colorram2_r), FUNC(_8080bw_state::rollingc_scattered_colorram2_w));
+}
-ADDRESS_MAP_START(_8080bw_state::rollingc_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(rollingc_sh_port_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
-ADDRESS_MAP_END
+void _8080bw_state::rollingc_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(_8080bw_state::rollingc_sh_port_w));
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w));
+}
static INPUT_PORTS_START( rollingc )
@@ -1427,23 +1444,25 @@ WRITE8_MEMBER(_8080bw_state::schaser_scattered_colorram_w)
m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f80) >> 2)] = data;
}
-ADDRESS_MAP_START(_8080bw_state::schaser_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x5fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(schaser_scattered_colorram_r, schaser_scattered_colorram_w)
-ADDRESS_MAP_END
+void _8080bw_state::schaser_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("main_ram");
+ map(0x4000, 0x5fff).rom();
+ map(0xc000, 0xdfff).rw(this, FUNC(_8080bw_state::schaser_scattered_colorram_r), FUNC(_8080bw_state::schaser_scattered_colorram_w));
+}
-ADDRESS_MAP_START(_8080bw_state::schaser_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schaser_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(schaser_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::schaser_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::schaser_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::schaser_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( schaser )
@@ -1590,14 +1609,15 @@ READ8_MEMBER(_8080bw_state::schasercv_02_r)
return (data & 0x89) | (in1 & 0x70) | (BIT(in1, 3) << 1) | (BIT(in1, 7) << 2);
}
-ADDRESS_MAP_START(_8080bw_state::schasercv_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ(schasercv_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schasercv_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(schasercv_sh_port_2_w)
-ADDRESS_MAP_END
+void _8080bw_state::schasercv_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).r(this, FUNC(_8080bw_state::schasercv_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::schasercv_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::schasercv_sh_port_2_w));
+}
static INPUT_PORTS_START( schasercv )
@@ -1687,21 +1707,22 @@ CUSTOM_INPUT_MEMBER(_8080bw_state::sflush_80_r)
return (m_screen->vpos() & 0x80) ? 1 : 0;
}
-ADDRESS_MAP_START(_8080bw_state::sflush_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x8008, 0x8008) AM_READ_PORT("PADDLE")
- AM_RANGE(0x8009, 0x8009) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
- AM_RANGE(0x800a, 0x800a) AM_READ_PORT("IN2")
- AM_RANGE(0x800b, 0x800b) AM_READ_PORT("IN0")
- AM_RANGE(0x8018, 0x8018) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x8019, 0x8019) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x801a, 0x801a) AM_WRITENOP
- AM_RANGE(0x801c, 0x801c) AM_WRITENOP
- AM_RANGE(0x801d, 0x801d) AM_WRITENOP
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(schaser_scattered_colorram_r, schaser_scattered_colorram_w)
- AM_RANGE(0xd800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void _8080bw_state::sflush_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x4000, 0x5fff).ram().share("main_ram");
+ 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).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();
+ map(0x801c, 0x801c).nopw();
+ map(0x801d, 0x801d).nopw();
+ map(0xa000, 0xbfff).rw(this, FUNC(_8080bw_state::schaser_scattered_colorram_r), FUNC(_8080bw_state::schaser_scattered_colorram_w));
+ map(0xd800, 0xffff).rom();
+}
static INPUT_PORTS_START( sflush )
@@ -1780,15 +1801,16 @@ MACHINE_CONFIG_END
/* */
/*******************************************************************************************/
-ADDRESS_MAP_START(_8080bw_state::lupin3_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(lupin3_00_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(lupin3_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(lupin3_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void _8080bw_state::lupin3_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(_8080bw_state::lupin3_00_w));
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::lupin3_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::lupin3_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( lupin3 )
@@ -1946,15 +1968,16 @@ READ8_MEMBER(_8080bw_state::polaris_port00_r)
// you will get a nice sound that accurately follows the plane.
// It sounds better then the actual circuit used.
// Probably an unfinished feature.
-ADDRESS_MAP_START(_8080bw_state::polaris_io_map)
- AM_RANGE(0x00, 0x00) AM_READ(polaris_port00_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(polaris_sh_port_1_w)
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("mb14241", mb14241_device, shift_result_r, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(polaris_sh_port_2_w)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(polaris_sh_port_3_w)
-ADDRESS_MAP_END
+void _8080bw_state::polaris_io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(_8080bw_state::polaris_port00_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(this, FUNC(_8080bw_state::polaris_sh_port_1_w));
+ map(0x03, 0x03).rw(m_mb14241, FUNC(mb14241_device::shift_result_r), FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).w(this, FUNC(_8080bw_state::polaris_sh_port_2_w));
+ map(0x05, 0x05).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x06, 0x06).w(this, FUNC(_8080bw_state::polaris_sh_port_3_w));
+}
static INPUT_PORTS_START( polaris )
@@ -2123,14 +2146,15 @@ INPUT_PORTS_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::ballbomb_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(ballbomb_01_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(ballbomb_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(ballbomb_sh_port_2_w)
-ADDRESS_MAP_END
+void _8080bw_state::ballbomb_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(_8080bw_state::ballbomb_01_w));
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::ballbomb_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::ballbomb_sh_port_2_w));
+}
static INPUT_PORTS_START( ballbomb )
@@ -2177,19 +2201,21 @@ MACHINE_CONFIG_END
/* */
/*******************************************************/
-ADDRESS_MAP_START(_8080bw_state::yosakdon_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x43ff) AM_WRITEONLY /* what's this? */
-ADDRESS_MAP_END
+void _8080bw_state::yosakdon_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("main_ram");
+ map(0x4000, 0x43ff).writeonly(); /* what's this? */
+}
-ADDRESS_MAP_START(_8080bw_state::yosakdon_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_WRITE(yosakdon_sh_port_1_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(yosakdon_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_WRITENOP /* character numbers */
-ADDRESS_MAP_END
+void _8080bw_state::yosakdon_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN0");
+ map(0x02, 0x02).portr("IN1");
+ map(0x03, 0x03).w(this, FUNC(_8080bw_state::yosakdon_sh_port_1_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::yosakdon_sh_port_2_w));
+ map(0x06, 0x06).nopw(); /* character numbers */
+}
static INPUT_PORTS_START( yosakdon )
@@ -2366,27 +2392,29 @@ READ8_MEMBER(_8080bw_state::indianbtbr_01_r)
return (data & 0x8f) | (ioport("IN2")->read() & 0x70);
}
-ADDRESS_MAP_START(_8080bw_state::indianbt_io_map)
- AM_RANGE(0x00, 0x00) AM_READ(indianbt_r)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(indianbt_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(indianbt_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(indianbt_sh_port_3_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_8080bw_state::indianbtbr_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ(indianbtbr_01_r)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(indianbtbr_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(indianbtbr_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITENOP
-ADDRESS_MAP_END
+void _8080bw_state::indianbt_io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(_8080bw_state::indianbt_r));
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).r(this, FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::indianbt_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::indianbt_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).w(this, FUNC(_8080bw_state::indianbt_sh_port_3_w));
+}
+
+void _8080bw_state::indianbtbr_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).r(this, FUNC(_8080bw_state::indianbtbr_01_r));
+ map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::indianbtbr_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::indianbtbr_sh_port_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).nopw();
+}
MACHINE_CONFIG_START(_8080bw_state::indianbt)
@@ -2451,14 +2479,15 @@ WRITE8_MEMBER(_8080bw_state::steelwkr_sh_port_3_w)
machine().bookkeeping().coin_lockout_global_w(!(~data & 0x03)); /* possibly */
}
-ADDRESS_MAP_START(_8080bw_state::steelwkr_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(steelwkr_sh_port_3_w)
-ADDRESS_MAP_END
+void _8080bw_state::steelwkr_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).r(this, FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w));
+ map(0x06, 0x06).w(this, FUNC(_8080bw_state::steelwkr_sh_port_3_w));
+}
static INPUT_PORTS_START( steelwkr )
/* PORT_START("IN0") - never read */
@@ -2648,20 +2677,22 @@ WRITE8_MEMBER(_8080bw_state::shuttlei_ff_w)
m_flip_screen = BIT(data, 2) & BIT(ioport(CABINET_PORT_TAG)->read(), 0);
}
-ADDRESS_MAP_START(_8080bw_state::shuttlei_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x37ff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("share1") // shuttlei
- AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE("share1") // skylove (is it mirrored, or different PCB hookup?)
-ADDRESS_MAP_END
+void _8080bw_state::shuttlei_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x37ff).ram().share("main_ram");
+ map(0x3800, 0x3fff).ram();
+ map(0x4000, 0x43ff).ram().share("share1"); // shuttlei
+ map(0x6000, 0x63ff).ram().share("share1"); // skylove (is it mirrored, or different PCB hookup?)
+}
-ADDRESS_MAP_START(_8080bw_state::shuttlei_io_map)
- AM_RANGE(0xfc, 0xfc) AM_WRITENOP /* game writes 0xAA every so often (perhaps when base hit?) */
- AM_RANGE(0xfd, 0xfd) AM_WRITE(shuttlei_sh_port_1_w)
- AM_RANGE(0xfe, 0xfe) AM_READ_PORT("DSW") AM_WRITE(shuttlei_sh_port_2_w)
- AM_RANGE(0xff, 0xff) AM_READWRITE(shuttlei_ff_r,shuttlei_ff_w)
-ADDRESS_MAP_END
+void _8080bw_state::shuttlei_io_map(address_map &map)
+{
+ map(0xfc, 0xfc).nopw(); /* game writes 0xAA every so often (perhaps when base hit?) */
+ map(0xfd, 0xfd).w(this, FUNC(_8080bw_state::shuttlei_sh_port_1_w));
+ map(0xfe, 0xfe).portr("DSW").w(this, FUNC(_8080bw_state::shuttlei_sh_port_2_w));
+ map(0xff, 0xff).rw(this, FUNC(_8080bw_state::shuttlei_ff_r), FUNC(_8080bw_state::shuttlei_ff_w));
+}
MACHINE_CONFIG_START(_8080bw_state::shuttlei)
@@ -2733,20 +2764,22 @@ READ8_MEMBER(_8080bw_state::darthvdr_01_r)
return (data & 0xe1) | (ioport("P1")->read() & 0x0e);
}
-ADDRESS_MAP_START(_8080bw_state::darthvdr_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram")
-ADDRESS_MAP_END
+void _8080bw_state::darthvdr_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x1800, 0x1fff).ram();
+ map(0x4000, 0x5fff).ram().share("main_ram");
+}
-ADDRESS_MAP_START(_8080bw_state::darthvdr_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ(darthvdr_01_r)
+void _8080bw_state::darthvdr_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).r(this, FUNC(_8080bw_state::darthvdr_01_r));
- AM_RANGE(0x00, 0x00) AM_WRITE(darthvdr_00_w) // flipscreen
- AM_RANGE(0x04, 0x04) AM_WRITENOP
- AM_RANGE(0x08, 0x08) AM_WRITE(darthvdr_08_w) // sound
-ADDRESS_MAP_END
+ map(0x00, 0x00).w(this, FUNC(_8080bw_state::darthvdr_00_w)); // flipscreen
+ map(0x04, 0x04).nopw();
+ map(0x08, 0x08).w(this, FUNC(_8080bw_state::darthvdr_08_w)); // sound
+}
static INPUT_PORTS_START( darthvdr )
@@ -2822,20 +2855,21 @@ MACHINE_CONFIG_END
*
*************************************/
-ADDRESS_MAP_START(_8080bw_state::vortex_io_map)
+void _8080bw_state::vortex_io_map(address_map &map)
+{
// I/O map is same as invaders but with A9 (used as A1 for I/O) inverted
- ADDRESS_MAP_GLOBAL_MASK(0xFF)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(invaders_audio_1_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(invaders_audio_2_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+ map.global_mask(0xFF);
+ map(0x02, 0x02).mirror(0x04).portr("IN0");
+ map(0x03, 0x03).mirror(0x04).portr("IN1");
+ map(0x00, 0x00).mirror(0x04).portr("IN2");
+ map(0x01, 0x01).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x00, 0x00).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x01, 0x01).w(this, FUNC(_8080bw_state::invaders_audio_1_w));
+ map(0x06, 0x06).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x07, 0x07).w(this, FUNC(_8080bw_state::invaders_audio_2_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( vortex )
@@ -3110,15 +3144,16 @@ READ8_MEMBER(_8080bw_state::claybust_gun_hi_r)
return m_claybust_gun_pos >> 8;
}
-ADDRESS_MAP_START(_8080bw_state::claybust_io_map)
+void _8080bw_state::claybust_io_map(address_map &map)
+{
//AM_RANGE(0x00, 0x00) AM_WRITENOP // ?
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_READ(claybust_gun_lo_r) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) //AM_WRITENOP // port3 write looks sound-related
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ map(0x01, 0x01).portr("IN1").w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).r(this, FUNC(_8080bw_state::claybust_gun_lo_r)).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); //AM_WRITENOP // port3 write looks sound-related
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
//AM_RANGE(0x05, 0x05) AM_WRITENOP // ?
- AM_RANGE(0x06, 0x06) AM_READ(claybust_gun_hi_r)
-ADDRESS_MAP_END
+ map(0x06, 0x06).r(this, FUNC(_8080bw_state::claybust_gun_hi_r));
+}
static INPUT_PORTS_START( claybust )
@@ -3263,15 +3298,16 @@ INPUT_PORTS_END
*****************************************************/
-ADDRESS_MAP_START(_8080bw_state::attackfc_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_WRITENOP // lamp?
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("mb14241", mb14241_device, shift_result_r, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_WRITENOP // sound enable?
- AM_RANGE(0x05, 0x05) AM_WRITENOP // watchdog?
- AM_RANGE(0x06, 0x06) AM_WRITENOP // sound?
- AM_RANGE(0x07, 0x07) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
-ADDRESS_MAP_END
+void _8080bw_state::attackfc_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0");
+ map(0x02, 0x02).nopw(); // lamp?
+ map(0x03, 0x03).rw(m_mb14241, FUNC(mb14241_device::shift_result_r), FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).nopw(); // sound enable?
+ map(0x05, 0x05).nopw(); // watchdog?
+ map(0x06, 0x06).nopw(); // sound?
+ map(0x07, 0x07).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+}
static INPUT_PORTS_START( attackfc )
@@ -3393,13 +3429,14 @@ static INPUT_PORTS_START( invmulti )
PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-ADDRESS_MAP_START(_8080bw_state::invmulti_map)
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x8000) AM_ROMBANK("bank1")
- AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x5fff) AM_MIRROR(0x8000) AM_ROMBANK("bank2")
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READWRITE(invmulti_eeprom_r, invmulti_eeprom_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(invmulti_bank_w)
-ADDRESS_MAP_END
+void _8080bw_state::invmulti_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x8000).bankr("bank1");
+ map(0x2000, 0x3fff).mirror(0x8000).ram().share("main_ram");
+ map(0x4000, 0x5fff).mirror(0x8000).bankr("bank2");
+ map(0x6000, 0x6000).mirror(0x1fff).rw(this, FUNC(_8080bw_state::invmulti_eeprom_r), FUNC(_8080bw_state::invmulti_eeprom_w));
+ map(0xe000, 0xe000).mirror(0x1fff).w(this, FUNC(_8080bw_state::invmulti_bank_w));
+}
READ8_MEMBER(_8080bw_state::invmulti_eeprom_r)
{
diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp
index 9633f178e84..098bf939c6b 100644
--- a/src/mame/drivers/88games.cpp
+++ b/src/mame/drivers/88games.cpp
@@ -121,35 +121,37 @@ WRITE8_MEMBER(_88games_state::k052109_051960_w)
*
*************************************/
-ADDRESS_MAP_START(_88games_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bank0000") /* banked ROM */
- AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bank1000") /* banked ROM + palette RAM */
- AM_RANGE(0x1000, 0x1fff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2000, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("ram")
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
- AM_RANGE(0x5f84, 0x5f84) AM_WRITE(k88games_5f84_w)
- AM_RANGE(0x5f88, 0x5f88) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5f8c, 0x5f8c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x5f90, 0x5f90) AM_WRITE(k88games_sh_irqtrigger_w)
- AM_RANGE(0x5f94, 0x5f94) AM_READ_PORT("IN0")
- AM_RANGE(0x5f95, 0x5f95) AM_READ_PORT("IN1")
- AM_RANGE(0x5f96, 0x5f96) AM_READ_PORT("IN2")
- AM_RANGE(0x5f97, 0x5f97) AM_READ_PORT("DSW1")
- AM_RANGE(0x5f9b, 0x5f9b) AM_READ_PORT("DSW2")
- AM_RANGE(0x5fc0, 0x5fcf) AM_DEVWRITE("k051316", k051316_device, ctrl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(_88games_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w)
-ADDRESS_MAP_END
+void _88games_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bank0000"); /* banked ROM */
+ map(0x1000, 0x1fff).bankr("bank1000"); /* banked ROM + palette RAM */
+ map(0x1000, 0x1fff).w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x2000, 0x2fff).ram();
+ map(0x3000, 0x37ff).ram().share("nvram");
+ map(0x3800, 0x3fff).rw(this, FUNC(_88games_state::bankedram_r), FUNC(_88games_state::bankedram_w)).share("ram");
+ map(0x4000, 0x7fff).rw(this, FUNC(_88games_state::k052109_051960_r), FUNC(_88games_state::k052109_051960_w));
+ map(0x5f84, 0x5f84).w(this, FUNC(_88games_state::k88games_5f84_w));
+ map(0x5f88, 0x5f88).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5f8c, 0x5f8c).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x5f90, 0x5f90).w(this, FUNC(_88games_state::k88games_sh_irqtrigger_w));
+ map(0x5f94, 0x5f94).portr("IN0");
+ map(0x5f95, 0x5f95).portr("IN1");
+ map(0x5f96, 0x5f96).portr("IN2");
+ map(0x5f97, 0x5f97).portr("DSW1");
+ map(0x5f9b, 0x5f9b).portr("DSW2");
+ map(0x5fc0, 0x5fcf).w(m_k051316, FUNC(k051316_device::ctrl_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void _88games_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(_88games_state::speech_msg_w));
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe000, 0xe000).w(this, FUNC(_88games_state::speech_control_w));
+}
diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp
index a3372d1ddd9..8f2f6ff92de 100644
--- a/src/mame/drivers/a5105.cpp
+++ b/src/mame/drivers/a5105.cpp
@@ -159,13 +159,14 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( a5105_state::hgdc_draw_text )
}
}
-ADDRESS_MAP_START(a5105_state::a5105_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE_BANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_READWRITE_BANK("bank4")
-ADDRESS_MAP_END
+void a5105_state::a5105_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
WRITE8_MEMBER( a5105_state::pcg_addr_w )
{
@@ -352,26 +353,27 @@ WRITE8_MEMBER( a5105_state::a5105_upd765_w )
m_fdc->tc_w(BIT(data, 4));
}
-ADDRESS_MAP_START(a5105_state::a5105_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x41) AM_DEVICE("upd765a", upd765a_device, map)
- AM_RANGE(0x48, 0x4f) AM_WRITE(a5105_upd765_w)
+void a5105_state::a5105_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x41).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x48, 0x4f).w(this, FUNC(a5105_state::a5105_upd765_w));
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
- AM_RANGE(0x98, 0x99) AM_DEVREADWRITE("upd7220", upd7220_device, read, write)
+ map(0x80, 0x83).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x90, 0x93).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x98, 0x99).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write));
- AM_RANGE(0x9c, 0x9c) AM_WRITE(pcg_val_w)
+ map(0x9c, 0x9c).w(this, FUNC(a5105_state::pcg_val_w));
// AM_RANGE(0x9d, 0x9d) crtc area (ff-based), palette routes here
- AM_RANGE(0x9e, 0x9e) AM_WRITE(pcg_addr_w)
+ map(0x9e, 0x9e).w(this, FUNC(a5105_state::pcg_addr_w));
// AM_RANGE(0xa0, 0xa1) ay8910?
- AM_RANGE(0xa8, 0xa8) AM_READWRITE(a5105_memsel_r,a5105_memsel_w)
- AM_RANGE(0xa9, 0xa9) AM_READ(key_r)
- AM_RANGE(0xaa, 0xaa) AM_READWRITE(key_mux_r,key_mux_w)
- AM_RANGE(0xab, 0xab) AM_WRITE(a5105_ab_w) //misc output, see above
-ADDRESS_MAP_END
+ map(0xa8, 0xa8).rw(this, FUNC(a5105_state::a5105_memsel_r), FUNC(a5105_state::a5105_memsel_w));
+ map(0xa9, 0xa9).r(this, FUNC(a5105_state::key_r));
+ map(0xaa, 0xaa).rw(this, FUNC(a5105_state::key_mux_r), FUNC(a5105_state::key_mux_w));
+ map(0xab, 0xab).w(this, FUNC(a5105_state::a5105_ab_w)); //misc output, see above
+}
/* Input ports */
static INPUT_PORTS_START( a5105 )
@@ -542,10 +544,11 @@ void a5105_state::video_start()
m_char_ram = memregion("pcg")->base();
}
-ADDRESS_MAP_START(a5105_state::upd7220_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void a5105_state::upd7220_map(address_map &map)
+{
+ map.global_mask(0x1ffff);
+ map(0x00000, 0x1ffff).ram().share("video_ram");
+}
FLOPPY_FORMATS_MEMBER( a5105_state::floppy_formats )
FLOPPY_A5105_FORMAT
diff --git a/src/mame/drivers/a51xx.cpp b/src/mame/drivers/a51xx.cpp
index 239d17c8f09..c1a93dd266c 100644
--- a/src/mame/drivers/a51xx.cpp
+++ b/src/mame/drivers/a51xx.cpp
@@ -40,27 +40,31 @@ public:
};
-ADDRESS_MAP_START(a51xx_state::a5120_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x03ff ) AM_ROM
- AM_RANGE( 0x0400, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a51xx_state::a5120_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a51xx_state::a5130_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_ROM
- AM_RANGE( 0x1000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a51xx_state::a5130_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void a51xx_state::a5120_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0xffff).ram();
+}
+
+void a51xx_state::a5120_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
+
+void a51xx_state::a5130_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0xffff).ram();
+}
+
+void a51xx_state::a5130_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
/* Input ports */
diff --git a/src/mame/drivers/a6809.cpp b/src/mame/drivers/a6809.cpp
index a8438792beb..5d242f43b42 100644
--- a/src/mame/drivers/a6809.cpp
+++ b/src/mame/drivers/a6809.cpp
@@ -103,16 +103,17 @@ private:
};
-ADDRESS_MAP_START(a6809_state::a6809_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x03ff) AM_RAM
- AM_RANGE(0x0400,0x07ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0800,0x0800) AM_DEVREAD("mc6845", mc6845_device, status_r) AM_WRITE(a6809_address_w)
- AM_RANGE(0x0801,0x0801) AM_DEVREAD("mc6845", mc6845_device, register_r) AM_WRITE(a6809_register_w)
- AM_RANGE(0x0900,0x090f) AM_MIRROR(0xf0) AM_DEVREADWRITE("via", via6522_device, read, write)
- AM_RANGE(0xf000,0xf7ff) // optional ROM
- AM_RANGE(0xf800,0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void a6809_state::a6809_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().share("videoram");
+ map(0x0800, 0x0800).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(a6809_state::a6809_address_w));
+ map(0x0801, 0x0801).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(a6809_state::a6809_register_w));
+ map(0x0900, 0x090f).mirror(0xf0).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xf000, 0xf7ff); // optional ROM
+ map(0xf800, 0xffff).rom().region("maincpu", 0);
+}
/* Input ports */
static INPUT_PORTS_START( a6809 )
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index d1f91c5daff..ce04d203036 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -281,62 +281,67 @@ WRITE8_MEMBER(a7150_state::a7150_kgs_w)
}
-ADDRESS_MAP_START(a7150_state::a7150_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xf7fff) AM_RAM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a7150_state::a7150_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x004a, 0x004b) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff) // KES board
- AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x00d8, 0x00d9) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x00da, 0x00db) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x0200, 0x0203) AM_READWRITE8(a7150_kgs_r, a7150_kgs_w, 0x00ff) // ABS/KGS board
- AM_RANGE(0x0300, 0x031f) AM_UNMAP // ASP board #1
- AM_RANGE(0x0320, 0x033f) AM_UNMAP // ASP board #2
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a7150_state::k7070_cpu_banked)
- ADDRESS_MAP_UNMAP_HIGH
+void a7150_state::a7150_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xf7fff).ram();
+ map(0xf8000, 0xfffff).rom().region("user1", 0);
+}
+
+void a7150_state::a7150_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x004a, 0x004a).w("isbc_215g", FUNC(isbc_215g_device::write)); // KES board
+ map(0x00c0, 0x00c3).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c8, 0x00cf).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x00d0, 0x00d7).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x00d8, 0x00d8).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x00da, 0x00da).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x0200, 0x0203).rw(this, FUNC(a7150_state::a7150_kgs_r), FUNC(a7150_state::a7150_kgs_w)).umask16(0x00ff); // ABS/KGS board
+ map(0x0300, 0x031f).unmaprw(); // ASP board #1
+ map(0x0320, 0x033f).unmaprw(); // ASP board #2
+}
+
+void a7150_state::k7070_cpu_banked(address_map &map)
+{
+ map.unmap_value_high();
// default map: IML=0, MSEL=0. ROM + local RAM.
- AM_RANGE(0x00000, 0x01fff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x02000, 0x07fff) AM_RAMBANK("kgs_ram1")
- AM_RANGE(0x08000, 0x0ffff) AM_RAMBANK("kgs_ram2")
+ map(0x00000, 0x01fff).rom().region("user2", 0);
+ map(0x02000, 0x07fff).bankrw("kgs_ram1");
+ map(0x08000, 0x0ffff).bankrw("kgs_ram2");
// IML=1, MSEL=0. local RAM only.
- AM_RANGE(0x10000, 0x11fff) AM_RAMBANK("kgs_ram0")
- AM_RANGE(0x12000, 0x17fff) AM_RAMBANK("kgs_ram1")
- AM_RANGE(0x18000, 0x1ffff) AM_RAMBANK("kgs_ram2")
+ map(0x10000, 0x11fff).bankrw("kgs_ram0");
+ map(0x12000, 0x17fff).bankrw("kgs_ram1");
+ map(0x18000, 0x1ffff).bankrw("kgs_ram2");
// IML=0, MSEL=1. ROM + local RAM.
- AM_RANGE(0x20000, 0x21fff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x22000, 0x27fff) AM_RAMBANK("kgs_ram1")
+ map(0x20000, 0x21fff).rom().region("user2", 0);
+ map(0x22000, 0x27fff).bankrw("kgs_ram1");
// IML=1, MSEL=1. local RAM only.
- AM_RANGE(0x30000, 0x31fff) AM_RAMBANK("kgs_ram0")
- AM_RANGE(0x32000, 0x37fff) AM_RAMBANK("kgs_ram1")
- AM_RANGE(0x38000, 0x3ffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a7150_state::k7070_cpu_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("video_bankdev", address_map_bank_device, read8, write8)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a7150_state::k7070_cpu_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0003) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x0008, 0x000b) AM_DEVREADWRITE(Z80SIO_TAG, z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x0010, 0x0017) AM_READWRITE(kgs_host_r, kgs_host_w) // p. 11 of KGS-K7070.pdf
-
- AM_RANGE(0x0020, 0x0021) AM_NOP // address register
- AM_RANGE(0x0022, 0x0022) AM_NOP // function register (p. 6 of ABG-K7072.pdf)
- AM_RANGE(0x0023, 0x0023) AM_NOP // split register
- AM_RANGE(0x0030, 0x003f) AM_NOP // palette register
-ADDRESS_MAP_END
+ map(0x30000, 0x31fff).bankrw("kgs_ram0");
+ map(0x32000, 0x37fff).bankrw("kgs_ram1");
+ map(0x38000, 0x3ffff).ram().share("video_ram");
+}
+
+void a7150_state::k7070_cpu_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(m_video_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+}
+
+
+void a7150_state::k7070_cpu_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x0000, 0x0003).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0008, 0x000b).rw(Z80SIO_TAG, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x0010, 0x0017).rw(this, FUNC(a7150_state::kgs_host_r), FUNC(a7150_state::kgs_host_w)); // p. 11 of KGS-K7070.pdf
+
+ map(0x0020, 0x0021).noprw(); // address register
+ map(0x0022, 0x0022).noprw(); // function register (p. 6 of ABG-K7072.pdf)
+ map(0x0023, 0x0023).noprw(); // split register
+ map(0x0030, 0x003f).noprw(); // palette register
+}
/* Input ports */
static INPUT_PORTS_START( a7150 )
diff --git a/src/mame/drivers/a7800.cpp b/src/mame/drivers/a7800.cpp
index dc9f9a35a66..e2d60a0a130 100644
--- a/src/mame/drivers/a7800.cpp
+++ b/src/mame/drivers/a7800.cpp
@@ -301,25 +301,26 @@ READ8_MEMBER(a7800_state::bios_or_cart_r)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(a7800_state::a7800_mem)
- AM_RANGE(0x0000, 0x001f) AM_MIRROR(0x300) AM_READWRITE(tia_r, tia_w)
- AM_RANGE(0x0020, 0x003f) AM_MIRROR(0x300) AM_DEVREADWRITE("maria", atari_maria_device, read, write)
- AM_RANGE(0x0040, 0x00ff) AM_RAMBANK("zpmirror") // mirror of 0x2040-0x20ff, for zero page
- AM_RANGE(0x0140, 0x01ff) AM_RAMBANK("spmirror") // mirror of 0x2140-0x21ff, for stack page
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x160) AM_DEVICE("riot", mos6532_new_device, io_map)
- AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_DEVICE("riot", mos6532_new_device, ram_map)
- AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("6116_1")
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("6116_2")
+void a7800_state::a7800_mem(address_map &map)
+{
+ map(0x0000, 0x001f).mirror(0x300).rw(this, FUNC(a7800_state::tia_r), FUNC(a7800_state::tia_w));
+ map(0x0020, 0x003f).mirror(0x300).rw(m_maria, FUNC(atari_maria_device::read), FUNC(atari_maria_device::write));
+ map(0x0040, 0x00ff).bankrw("zpmirror"); // mirror of 0x2040-0x20ff, for zero page
+ map(0x0140, 0x01ff).bankrw("spmirror"); // mirror of 0x2140-0x21ff, for stack page
+ map(0x0280, 0x029f).mirror(0x160).m("riot", FUNC(mos6532_new_device::io_map));
+ map(0x0480, 0x04ff).mirror(0x100).m("riot", FUNC(mos6532_new_device::ram_map));
+ map(0x1800, 0x1fff).ram().share("6116_1");
+ map(0x2000, 0x27ff).ram().share("6116_2");
// According to the official Software Guide, the RAM at 0x2000 is
// repeatedly mirrored up to 0x3fff, but this is evidently incorrect
// because the High Score Cartridge maps ROM at 0x3000-0x3fff
// Hardware tests show that only the page at 0x2700 appears at
// 0x2800, and only on some hardware (MARIA? motherboard?) revisions,
// and even then with inconsistent and unreliable results.
- AM_RANGE(0x4000, 0xffff) AM_DEVWRITE("cartslot", a78_cart_slot_device, write_40xx)
- AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", a78_cart_slot_device, read_40xx)
- AM_RANGE(0xc000, 0xffff) AM_READ(bios_or_cart_r) // here also the BIOS can be accessed
-ADDRESS_MAP_END
+ map(0x4000, 0xffff).w(m_cart, FUNC(a78_cart_slot_device::write_40xx));
+ map(0x4000, 0xbfff).r(m_cart, FUNC(a78_cart_slot_device::read_40xx));
+ map(0xc000, 0xffff).r(this, FUNC(a7800_state::bios_or_cart_r)); // here also the BIOS can be accessed
+}
/***************************************************************************
diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp
index 089251142a5..472fcfd372a 100644
--- a/src/mame/drivers/aa310.cpp
+++ b/src/mame/drivers/aa310.cpp
@@ -188,14 +188,15 @@ void aa310_state::machine_reset()
archimedes_reset();
}
-ADDRESS_MAP_START(aa310_state::aa310_mem)
- AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w)
- AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_SHARE("physicalram") /* physical RAM - 16 MB for now, should be 512k for the A310 */
- AM_RANGE(0x03000000, 0x033fffff) AM_READWRITE(archimedes_ioc_r, archimedes_ioc_w)
- AM_RANGE(0x03400000, 0x035fffff) AM_ROM AM_REGION("extension", 0x000000) AM_WRITE(archimedes_vidc_w)
- AM_RANGE(0x03600000, 0x037fffff) AM_ROM AM_REGION("extension", 0x200000) AM_WRITE(archimedes_memc_w)
- AM_RANGE(0x03800000, 0x03ffffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE(archimedes_memc_page_w)
-ADDRESS_MAP_END
+void aa310_state::aa310_mem(address_map &map)
+{
+ map(0x00000000, 0x01ffffff).rw(this, FUNC(aa310_state::archimedes_memc_logical_r), FUNC(aa310_state::archimedes_memc_logical_w));
+ map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */
+ map(0x03000000, 0x033fffff).rw(this, FUNC(aa310_state::archimedes_ioc_r), FUNC(aa310_state::archimedes_ioc_w));
+ map(0x03400000, 0x035fffff).rom().region("extension", 0x000000).w(this, FUNC(aa310_state::archimedes_vidc_w));
+ map(0x03600000, 0x037fffff).rom().region("extension", 0x200000).w(this, FUNC(aa310_state::archimedes_memc_w));
+ map(0x03800000, 0x03ffffff).rom().region("maincpu", 0).w(this, FUNC(aa310_state::archimedes_memc_page_w));
+}
INPUT_CHANGED_MEMBER(aa310_state::key_stroke)
diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp
index af001a435ce..d5ff89756cc 100644
--- a/src/mame/drivers/abc1600.cpp
+++ b/src/mame/drivers/abc1600.cpp
@@ -491,38 +491,40 @@ WRITE8_MEMBER( abc1600_state::spec_contr_reg_w )
// ADDRESS_MAP( abc1600_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc1600_state::abc1600_mem)
- AM_RANGE(0x00000, 0xfffff) AM_DEVICE(ABC1600_MAC_TAG, abc1600_mac_device, map)
-ADDRESS_MAP_END
+void abc1600_state::abc1600_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).m(ABC1600_MAC_TAG, FUNC(abc1600_mac_device::map));
+}
//-------------------------------------------------
// ADDRESS_MAP( mac_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc1600_state::mac_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_RAM
- AM_RANGE(0x100000, 0x17ffff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, vram_map)
- AM_RANGE(0x1fe000, 0x1fefff) AM_READWRITE(bus_r, bus_w)
- AM_RANGE(0x1ff000, 0x1ff000) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, status_r, cmd_w)
- AM_RANGE(0x1ff002, 0x1ff002) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, track_r, track_w)
- AM_RANGE(0x1ff004, 0x1ff004) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, sector_r, sector_w)
- AM_RANGE(0x1ff006, 0x1ff006) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, data_r, data_w)
- AM_RANGE(0x1ff100, 0x1ff101) AM_MIRROR(0xfe) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, crtc_map)
- AM_RANGE(0x1ff200, 0x1ff207) AM_MIRROR(0xf8) AM_READWRITE(dart_r, dart_w)
- AM_RANGE(0x1ff300, 0x1ff300) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_0_TAG, z80dma_device, read, write)
- AM_RANGE(0x1ff400, 0x1ff400) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_1_TAG, z80dma_device, read, write)
- AM_RANGE(0x1ff500, 0x1ff500) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_2_TAG, z80dma_device, read, write)
- AM_RANGE(0x1ff600, 0x1ff607) AM_MIRROR(0xf8) AM_READWRITE(scc_r, scc_w)
- AM_RANGE(0x1ff700, 0x1ff707) AM_MIRROR(0xf8) AM_READWRITE(cio_r, cio_w)
- AM_RANGE(0x1ff800, 0x1ff8ff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr0_map)
- AM_RANGE(0x1ff900, 0x1ff9ff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr1_map)
- AM_RANGE(0x1ffa00, 0x1ffaff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr2_map)
- AM_RANGE(0x1ffb00, 0x1ffb00) AM_MIRROR(0x7e) AM_WRITE(fw0_w)
- AM_RANGE(0x1ffb01, 0x1ffb01) AM_MIRROR(0x7e) AM_WRITE(fw1_w)
- AM_RANGE(0x1ffd00, 0x1ffd07) AM_MIRROR(0xf8) AM_DEVWRITE(ABC1600_MAC_TAG, abc1600_mac_device, dmamap_w)
- AM_RANGE(0x1ffe00, 0x1ffe00) AM_MIRROR(0xff) AM_WRITE(spec_contr_reg_w)
-ADDRESS_MAP_END
+void abc1600_state::mac_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).ram();
+ map(0x100000, 0x17ffff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::vram_map));
+ map(0x1fe000, 0x1fefff).rw(this, FUNC(abc1600_state::bus_r), FUNC(abc1600_state::bus_w));
+ map(0x1ff000, 0x1ff000).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::status_r), FUNC(fd1797_device::cmd_w));
+ map(0x1ff002, 0x1ff002).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::track_r), FUNC(fd1797_device::track_w));
+ map(0x1ff004, 0x1ff004).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::sector_r), FUNC(fd1797_device::sector_w));
+ map(0x1ff006, 0x1ff006).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::data_r), FUNC(fd1797_device::data_w));
+ map(0x1ff100, 0x1ff101).mirror(0xfe).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::crtc_map));
+ map(0x1ff200, 0x1ff207).mirror(0xf8).rw(this, FUNC(abc1600_state::dart_r), FUNC(abc1600_state::dart_w));
+ map(0x1ff300, 0x1ff300).mirror(0xff).rw(m_dma0, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x1ff400, 0x1ff400).mirror(0xff).rw(m_dma1, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x1ff500, 0x1ff500).mirror(0xff).rw(m_dma2, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x1ff600, 0x1ff607).mirror(0xf8).rw(this, FUNC(abc1600_state::scc_r), FUNC(abc1600_state::scc_w));
+ map(0x1ff700, 0x1ff707).mirror(0xf8).rw(this, FUNC(abc1600_state::cio_r), FUNC(abc1600_state::cio_w));
+ map(0x1ff800, 0x1ff8ff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::iowr0_map));
+ map(0x1ff900, 0x1ff9ff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::iowr1_map));
+ map(0x1ffa00, 0x1ffaff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::iowr2_map));
+ map(0x1ffb00, 0x1ffb00).mirror(0x7e).w(this, FUNC(abc1600_state::fw0_w));
+ map(0x1ffb01, 0x1ffb01).mirror(0x7e).w(this, FUNC(abc1600_state::fw1_w));
+ map(0x1ffd00, 0x1ffd07).mirror(0xf8).w(ABC1600_MAC_TAG, FUNC(abc1600_mac_device::dmamap_w));
+ map(0x1ffe00, 0x1ffe00).mirror(0xff).w(this, FUNC(abc1600_state::spec_contr_reg_w));
+}
diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp
index 711915c5c0b..5b87fecffc9 100644
--- a/src/mame/drivers/abc80.cpp
+++ b/src/mame/drivers/abc80.cpp
@@ -177,29 +177,31 @@ WRITE8_MEMBER( abc80_state::csg_w )
// ADDRESS_MAP( abc80_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc80_state::abc80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void abc80_state::abc80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(abc80_state::read), FUNC(abc80_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( abc80_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc80_state::abc80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x17)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(csg_w)
- AM_RANGE(0x07, 0x07) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r)
- AM_RANGE(0x10, 0x13) AM_MIRROR(0x04) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
+void abc80_state::abc80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x17);
+ map(0x00, 0x00).rw(m_bus, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w));
+ map(0x01, 0x01).rw(m_bus, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w));
+ map(0x02, 0x02).w(m_bus, FUNC(abcbus_slot_device::c1_w));
+ map(0x03, 0x03).w(m_bus, FUNC(abcbus_slot_device::c2_w));
+ map(0x04, 0x04).w(m_bus, FUNC(abcbus_slot_device::c3_w));
+ map(0x05, 0x05).w(m_bus, FUNC(abcbus_slot_device::c4_w));
+ map(0x06, 0x06).w(this, FUNC(abc80_state::csg_w));
+ map(0x07, 0x07).r(m_bus, FUNC(abcbus_slot_device::rst_r));
+ map(0x10, 0x13).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index 307bef397c6..1b9a6060945 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -429,13 +429,14 @@ WRITE8_MEMBER( abc806_state::mao_w )
// ADDRESS_MAP( abc800c_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800c_state::abc800c_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x4000, 0x7bff) AM_ROM
- AM_RANGE(0x7c00, 0x7fff) AM_RAM AM_SHARE("char_ram")
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void abc800c_state::abc800c_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("video_ram");
+ map(0x4000, 0x7bff).rom();
+ map(0x7c00, 0x7fff).ram().share("char_ram");
+ map(0x8000, 0xffff).ram();
+}
//-------------------------------------------------
@@ -489,88 +490,92 @@ ADDRESS_MAP_END
// ADDRESS_MAP( abc802_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc802_state::abc802_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("char_ram")
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void abc802_state::abc802_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram().share("char_ram");
+ map(0x8000, 0xffff).ram();
+}
//-------------------------------------------------
// ADDRESS_MAP( abc802_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc802_state::abc802_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_READ(pling_r)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r)
- AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r)
- AM_RANGE(0x38, 0x38) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x39, 0x39) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
-ADDRESS_MAP_END
+void abc802_state::abc802_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w));
+ map(0x01, 0x01).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w));
+ map(0x02, 0x02).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w));
+ map(0x03, 0x03).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w));
+ map(0x04, 0x04).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w));
+ map(0x05, 0x05).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w));
+ map(0x05, 0x05).mirror(0x08).r(this, FUNC(abc802_state::pling_r));
+ map(0x07, 0x07).mirror(0x18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r));
+ map(0x20, 0x23).mirror(0x0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x31, 0x31).mirror(0x06).r(m_crtc, FUNC(mc6845_device::register_r));
+ map(0x38, 0x38).mirror(0x06).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x39, 0x39).mirror(0x06).w(m_crtc, FUNC(mc6845_device::register_w));
+ map(0x40, 0x43).mirror(0x1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w));
+ map(0x60, 0x63).mirror(0x1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( abc806_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc806_state::abc806_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1")
- AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2")
- AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3")
- AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4")
- AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank5")
- AM_RANGE(0x5000, 0x5fff) AM_RAMBANK("bank6")
- AM_RANGE(0x6000, 0x6fff) AM_RAMBANK("bank7")
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank8")
- AM_RANGE(0x8000, 0x8fff) AM_RAMBANK("bank9")
- AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("bank10")
- AM_RANGE(0xa000, 0xafff) AM_RAMBANK("bank11")
- AM_RANGE(0xb000, 0xbfff) AM_RAMBANK("bank12")
- AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bank13")
- AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bank14")
- AM_RANGE(0xe000, 0xefff) AM_RAMBANK("bank15")
- AM_RANGE(0xf000, 0xffff) AM_RAMBANK("bank16")
-ADDRESS_MAP_END
+void abc806_state::abc806_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("bank1");
+ map(0x1000, 0x1fff).bankrw("bank2");
+ map(0x2000, 0x2fff).bankrw("bank3");
+ map(0x3000, 0x3fff).bankrw("bank4");
+ map(0x4000, 0x4fff).bankrw("bank5");
+ map(0x5000, 0x5fff).bankrw("bank6");
+ map(0x6000, 0x6fff).bankrw("bank7");
+ map(0x7000, 0x7fff).bankrw("bank8");
+ map(0x8000, 0x8fff).bankrw("bank9");
+ map(0x9000, 0x9fff).bankrw("bank10");
+ map(0xa000, 0xafff).bankrw("bank11");
+ map(0xb000, 0xbfff).bankrw("bank12");
+ map(0xc000, 0xcfff).bankrw("bank13");
+ map(0xd000, 0xdfff).bankrw("bank14");
+ map(0xe000, 0xefff).bankrw("bank15");
+ map(0xf000, 0xffff).bankrw("bank16");
+}
//-------------------------------------------------
// ADDRESS_MAP( abc806_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc806_state::abc806_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0xff18) AM_WRITE(hrs_w)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0xff18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w)
- AM_RANGE(0x20, 0x23) AM_MIRROR(0xff0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x31, 0x31) AM_MIRROR(0xff00) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r)
- AM_RANGE(0x34, 0x34) AM_SELECT(0xff00) AM_READWRITE(mai_r, mao_w)
- AM_RANGE(0x35, 0x35) AM_MIRROR(0xff00) AM_READWRITE(ami_r, amo_w)
- AM_RANGE(0x36, 0x36) AM_MIRROR(0xff00) AM_READWRITE(sti_r, sto_w)
- AM_RANGE(0x37, 0x37) AM_SELECT(0xff00) AM_READWRITE(cli_r, sso_w)
- AM_RANGE(0x38, 0x38) AM_MIRROR(0xff00) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x39, 0x39) AM_MIRROR(0xff00) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0xff1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0xff1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
-ADDRESS_MAP_END
+void abc806_state::abc806_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).mirror(0xff18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w));
+ map(0x01, 0x01).mirror(0xff18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w));
+ map(0x02, 0x02).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w));
+ map(0x03, 0x03).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w));
+ map(0x04, 0x04).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w));
+ map(0x05, 0x05).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w));
+ map(0x06, 0x06).mirror(0xff18).w(this, FUNC(abc806_state::hrs_w));
+ map(0x07, 0x07).mirror(0xff18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r)).w(this, FUNC(abc806_state::hrc_w));
+ map(0x20, 0x23).mirror(0xff0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x31, 0x31).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::register_r));
+ map(0x34, 0x34).select(0xff00).rw(this, FUNC(abc806_state::mai_r), FUNC(abc806_state::mao_w));
+ map(0x35, 0x35).mirror(0xff00).rw(this, FUNC(abc806_state::ami_r), FUNC(abc806_state::amo_w));
+ map(0x36, 0x36).mirror(0xff00).rw(this, FUNC(abc806_state::sti_r), FUNC(abc806_state::sto_w));
+ map(0x37, 0x37).select(0xff00).rw(this, FUNC(abc806_state::cli_r), FUNC(abc806_state::sso_w));
+ map(0x38, 0x38).mirror(0xff00).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x39, 0x39).mirror(0xff00).w(m_crtc, FUNC(mc6845_device::register_w));
+ map(0x40, 0x43).mirror(0xff1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w));
+ map(0x60, 0x63).mirror(0xff1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
diff --git a/src/mame/drivers/ac1.cpp b/src/mame/drivers/ac1.cpp
index 45ec7f930e7..8d2b1862685 100644
--- a/src/mame/drivers/ac1.cpp
+++ b/src/mame/drivers/ac1.cpp
@@ -34,26 +34,29 @@ static GFXDECODE_START( ac1 )
GFXDECODE_END
/* Address maps */
-ADDRESS_MAP_START(ac1_state::ac1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM // Monitor
- AM_RANGE( 0x0800, 0x0fff ) AM_ROM // BASIC
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM // Video RAM
- AM_RANGE( 0x1800, 0x1fff ) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ac1_state::ac1_32_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM // Monitor
- AM_RANGE( 0x0800, 0x0fff ) AM_ROM // BASIC
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM // Video RAM
- AM_RANGE( 0x1800, 0xffff ) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ac1_state::ac1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
-ADDRESS_MAP_END
+void ac1_state::ac1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom(); // Monitor
+ map(0x0800, 0x0fff).rom(); // BASIC
+ map(0x1000, 0x17ff).ram(); // Video RAM
+ map(0x1800, 0x1fff).ram(); // RAM
+}
+
+void ac1_state::ac1_32_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom(); // Monitor
+ map(0x0800, 0x0fff).rom(); // BASIC
+ map(0x1000, 0x17ff).ram(); // Video RAM
+ map(0x1800, 0xffff).ram(); // RAM
+}
+
+void ac1_state::ac1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x04, 0x07).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( ac1 )
diff --git a/src/mame/drivers/accomm.cpp b/src/mame/drivers/accomm.cpp
index 4d3279afc4e..e6a8a27315e 100644
--- a/src/mame/drivers/accomm.cpp
+++ b/src/mame/drivers/accomm.cpp
@@ -635,30 +635,31 @@ WRITE_LINE_MEMBER(accomm_state::econet_clk_w)
m_adlc->txc_w(state);
}
-ADDRESS_MAP_START(accomm_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_READWRITE(ram_r, ram_w) /* System RAM */
- AM_RANGE(0x200000, 0x3fffff) AM_NOP /* External expansion RAM */
- AM_RANGE(0x400000, 0x400000) AM_NOP /* MODEM */
- AM_RANGE(0x410000, 0x410000) AM_RAM /* Econet ID */
- AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("via6522", via6522_device, read, write) /* 6522 VIA (printer etc) */
- AM_RANGE(0x430000, 0x430001) AM_DEVREADWRITE("acia", acia6850_device, read, write) /* 2641 ACIA (RS423) */
- AM_RANGE(0x440000, 0x440000) AM_WRITE(ch00switch_w) /* CH00SWITCH */
- AM_RANGE(0x450000, 0x457fff) AM_RAM AM_SHARE("vram") /* Video RAM */
- AM_RANGE(0x458000, 0x459fff) AM_READ(read_keyboard1) /* Video ULA */
- AM_RANGE(0x45a000, 0x45bfff) AM_READ(read_keyboard2) /* Video ULA */
- AM_RANGE(0x45fe00, 0x45feff) AM_READWRITE(sheila_r, sheila_w) /* Video ULA */
- AM_RANGE(0x460000, 0x467fff) AM_RAM AM_SHARE("nvram") /* CMOS RAM */
- AM_RANGE(0x470000, 0x47001f) AM_DEVREADWRITE("mc6854", mc6854_device, read, write) /* 68B54 (Econet) */
- AM_RANGE(0x480000, 0x7fffff) AM_NOP /* Reserved */
- AM_RANGE(0x800000, 0xbfffff) AM_NOP /* External expansion IO */
- AM_RANGE(0xc00000, 0xf7ffff) AM_NOP /* External expansion ROM */
- AM_RANGE(0xf80000, 0xf9ffff) AM_NOP /* Empty */
- AM_RANGE(0xfa0000, 0xfbffff) AM_NOP /* ROM bank 4 */
- AM_RANGE(0xfc0000, 0xfcffff) AM_ROM AM_REGION("maincpu", 0x000000) /* ROM bank 3 */
- AM_RANGE(0xfd0000, 0xfdffff) AM_ROM AM_REGION("maincpu", 0x010000) /* ROM bank 2 */
- AM_RANGE(0xfe0000, 0xfeffff) AM_ROM AM_REGION("maincpu", 0x020000) /* ROM bank 0 */
- AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("maincpu", 0x030000) /* ROM bank 1 */
-ADDRESS_MAP_END
+void accomm_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rw(this, FUNC(accomm_state::ram_r), FUNC(accomm_state::ram_w)); /* System RAM */
+ map(0x200000, 0x3fffff).noprw(); /* External expansion RAM */
+ map(0x400000, 0x400000).noprw(); /* MODEM */
+ map(0x410000, 0x410000).ram(); /* Econet ID */
+ map(0x420000, 0x42000f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* 6522 VIA (printer etc) */
+ map(0x430000, 0x430001).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); /* 2641 ACIA (RS423) */
+ map(0x440000, 0x440000).w(this, FUNC(accomm_state::ch00switch_w)); /* CH00SWITCH */
+ map(0x450000, 0x457fff).ram().share("vram"); /* Video RAM */
+ map(0x458000, 0x459fff).r(this, FUNC(accomm_state::read_keyboard1)); /* Video ULA */
+ map(0x45a000, 0x45bfff).r(this, FUNC(accomm_state::read_keyboard2)); /* Video ULA */
+ map(0x45fe00, 0x45feff).rw(this, FUNC(accomm_state::sheila_r), FUNC(accomm_state::sheila_w)); /* Video ULA */
+ map(0x460000, 0x467fff).ram().share("nvram"); /* CMOS RAM */
+ map(0x470000, 0x47001f).rw(m_adlc, FUNC(mc6854_device::read), FUNC(mc6854_device::write)); /* 68B54 (Econet) */
+ map(0x480000, 0x7fffff).noprw(); /* Reserved */
+ map(0x800000, 0xbfffff).noprw(); /* External expansion IO */
+ map(0xc00000, 0xf7ffff).noprw(); /* External expansion ROM */
+ map(0xf80000, 0xf9ffff).noprw(); /* Empty */
+ map(0xfa0000, 0xfbffff).noprw(); /* ROM bank 4 */
+ map(0xfc0000, 0xfcffff).rom().region("maincpu", 0x000000); /* ROM bank 3 */
+ map(0xfd0000, 0xfdffff).rom().region("maincpu", 0x010000); /* ROM bank 2 */
+ map(0xfe0000, 0xfeffff).rom().region("maincpu", 0x020000); /* ROM bank 0 */
+ map(0xff0000, 0xffffff).rom().region("maincpu", 0x030000); /* ROM bank 1 */
+}
static INPUT_PORTS_START( accomm )
PORT_START("LINE1.0")
diff --git a/src/mame/drivers/ace.cpp b/src/mame/drivers/ace.cpp
index f083e017edb..01d051e3344 100644
--- a/src/mame/drivers/ace.cpp
+++ b/src/mame/drivers/ace.cpp
@@ -148,50 +148,51 @@ READ8_MEMBER(aceal_state::unk_r)
/* 3x3106 - SRAM 256x1 */
/* 1x3622 - ROM 512x4 - doesn't seem to be used ????????????*/
-ADDRESS_MAP_START(aceal_state::main_map)
- AM_RANGE(0x0000, 0x09ff) AM_ROM
+void aceal_state::main_map(address_map &map)
+{
+ map(0x0000, 0x09ff).rom();
- AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(ace_scoreram_w) AM_SHARE("scoreram") /* 2x2101 */
- AM_RANGE(0x8300, 0x83ff) AM_RAM AM_SHARE("ram2") /* 2x2101 */
- AM_RANGE(0x8000, 0x80ff) AM_RAM_WRITE(ace_characterram_w) AM_SHARE("characterram") /* 3x3101 (3bits: 0, 1, 2) */
+ map(0x2000, 0x20ff).ram().w(this, FUNC(aceal_state::ace_scoreram_w)).share("scoreram"); /* 2x2101 */
+ map(0x8300, 0x83ff).ram().share("ram2"); /* 2x2101 */
+ map(0x8000, 0x80ff).ram().w(this, FUNC(aceal_state::ace_characterram_w)).share("characterram"); /* 3x3101 (3bits: 0, 1, 2) */
- AM_RANGE(0xc000, 0xc005) AM_WRITE(ace_objpos_w)
+ map(0xc000, 0xc005).w(this, FUNC(aceal_state::ace_objpos_w));
/* players inputs */
- AM_RANGE(0xc008, 0xc008) AM_READ_PORT("c008")
- AM_RANGE(0xc009, 0xc009) AM_READ_PORT("c009")
- AM_RANGE(0xc00a, 0xc00a) AM_READ_PORT("c00a")
- AM_RANGE(0xc00b, 0xc00b) AM_READ_PORT("c00b")
- AM_RANGE(0xc00c, 0xc00c) AM_READ_PORT("c00c")
- AM_RANGE(0xc00d, 0xc00d) AM_READ_PORT("c00d")
- AM_RANGE(0xc00e, 0xc00e) AM_READ_PORT("c00e")
- AM_RANGE(0xc00f, 0xc00f) AM_READ_PORT("c00f")
- AM_RANGE(0xc010, 0xc010) AM_READ_PORT("c010")
- AM_RANGE(0xc011, 0xc011) AM_READ_PORT("c011")
-
- AM_RANGE(0xc012, 0xc012) AM_READ(unk_r)
+ map(0xc008, 0xc008).portr("c008");
+ map(0xc009, 0xc009).portr("c009");
+ map(0xc00a, 0xc00a).portr("c00a");
+ map(0xc00b, 0xc00b).portr("c00b");
+ map(0xc00c, 0xc00c).portr("c00c");
+ map(0xc00d, 0xc00d).portr("c00d");
+ map(0xc00e, 0xc00e).portr("c00e");
+ map(0xc00f, 0xc00f).portr("c00f");
+ map(0xc010, 0xc010).portr("c010");
+ map(0xc011, 0xc011).portr("c011");
+
+ map(0xc012, 0xc012).r(this, FUNC(aceal_state::unk_r));
/* vblank */
- AM_RANGE(0xc014, 0xc014) AM_READ_PORT("c014")
+ map(0xc014, 0xc014).portr("c014");
/* coin */
- AM_RANGE(0xc015, 0xc015) AM_READ_PORT("c015")
+ map(0xc015, 0xc015).portr("c015");
/* start (must read 1 at least once to make the game run) */
- AM_RANGE(0xc016, 0xc016) AM_READ_PORT("c016")
-
- AM_RANGE(0xc017, 0xc017) AM_READ(unk_r)
- AM_RANGE(0xc018, 0xc018) AM_READ(unk_r)
- AM_RANGE(0xc019, 0xc019) AM_READ(unk_r)
-
- AM_RANGE(0xc020, 0xc020) AM_READ(unk_r)
- AM_RANGE(0xc021, 0xc021) AM_READ(unk_r)
- AM_RANGE(0xc022, 0xc022) AM_READ(unk_r)
- AM_RANGE(0xc023, 0xc023) AM_READ(unk_r)
- AM_RANGE(0xc024, 0xc024) AM_READ(unk_r)
- AM_RANGE(0xc025, 0xc025) AM_READ(unk_r)
- AM_RANGE(0xc026, 0xc026) AM_READ(unk_r)
-ADDRESS_MAP_END
+ map(0xc016, 0xc016).portr("c016");
+
+ map(0xc017, 0xc017).r(this, FUNC(aceal_state::unk_r));
+ map(0xc018, 0xc018).r(this, FUNC(aceal_state::unk_r));
+ map(0xc019, 0xc019).r(this, FUNC(aceal_state::unk_r));
+
+ map(0xc020, 0xc020).r(this, FUNC(aceal_state::unk_r));
+ map(0xc021, 0xc021).r(this, FUNC(aceal_state::unk_r));
+ map(0xc022, 0xc022).r(this, FUNC(aceal_state::unk_r));
+ map(0xc023, 0xc023).r(this, FUNC(aceal_state::unk_r));
+ map(0xc024, 0xc024).r(this, FUNC(aceal_state::unk_r));
+ map(0xc025, 0xc025).r(this, FUNC(aceal_state::unk_r));
+ map(0xc026, 0xc026).r(this, FUNC(aceal_state::unk_r));
+}
static INPUT_PORTS_START( ace )
diff --git a/src/mame/drivers/aceex.cpp b/src/mame/drivers/aceex.cpp
index 21746c32796..f3ab4eca40f 100644
--- a/src/mame/drivers/aceex.cpp
+++ b/src/mame/drivers/aceex.cpp
@@ -63,9 +63,10 @@ public:
void aceex2814_map(address_map &map);
};
-ADDRESS_MAP_START(aceex2814_state::aceex2814_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void aceex2814_state::aceex2814_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
static INPUT_PORTS_START( aceex2814 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/acefruit.cpp b/src/mame/drivers/acefruit.cpp
index b9b23cff8c0..f18ffa76c69 100644
--- a/src/mame/drivers/acefruit.cpp
+++ b/src/mame/drivers/acefruit.cpp
@@ -332,32 +332,34 @@ PALETTE_INIT_MEMBER(acefruit_state, acefruit)
palette.set_pen_color( 15, rgb_t(0xff, 0x00, 0x00) );
}
-ADDRESS_MAP_START(acefruit_state::acefruit_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(acefruit_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2")
- AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3")
- AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN4")
- AM_RANGE(0x8005, 0x8005) AM_READ_PORT("IN5")
- AM_RANGE(0x8006, 0x8006) AM_READ_PORT("IN6")
- AM_RANGE(0x8007, 0x8007) AM_READ_PORT("IN7")
- AM_RANGE(0x6000, 0x6005) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa001) AM_WRITE(acefruit_lamp_w)
- AM_RANGE(0xa002, 0xa003) AM_WRITE(acefruit_coin_w)
- AM_RANGE(0xa004, 0xa004) AM_WRITE(acefruit_solenoid_w)
- AM_RANGE(0xa005, 0xa006) AM_WRITE(acefruit_sound_w)
- AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(acefruit_state::acefruit_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_NOP /* ? */
-ADDRESS_MAP_END
+void acefruit_state::acefruit_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).ram().share("nvram");
+ map(0x4000, 0x43ff).ram().share("videoram");
+ map(0x4400, 0x47ff).ram().w(this, FUNC(acefruit_state::acefruit_colorram_w)).share("colorram");
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8001, 0x8001).portr("IN1");
+ map(0x8002, 0x8002).portr("IN2");
+ map(0x8003, 0x8003).portr("IN3");
+ map(0x8004, 0x8004).portr("IN4");
+ map(0x8005, 0x8005).portr("IN5");
+ map(0x8006, 0x8006).portr("IN6");
+ map(0x8007, 0x8007).portr("IN7");
+ map(0x6000, 0x6005).ram().share("spriteram");
+ map(0xa000, 0xa001).w(this, FUNC(acefruit_state::acefruit_lamp_w));
+ map(0xa002, 0xa003).w(this, FUNC(acefruit_state::acefruit_coin_w));
+ map(0xa004, 0xa004).w(this, FUNC(acefruit_state::acefruit_solenoid_w));
+ map(0xa005, 0xa006).w(this, FUNC(acefruit_state::acefruit_sound_w));
+ map(0xc000, 0xc000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe000, 0xffff).rom();
+}
+
+void acefruit_state::acefruit_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).noprw(); /* ? */
+}
static INPUT_PORTS_START( sidewndr )
PORT_START("IN0") // 0
diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp
index 3ad27e0a4a1..51dac6fd666 100644
--- a/src/mame/drivers/aces1.cpp
+++ b/src/mame/drivers/aces1.cpp
@@ -269,21 +269,23 @@ void aces1_state::machine_reset()
aces1_reset_irq_timer();
}
-ADDRESS_MAP_START(aces1_state::aces1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xadf0, 0xadf3) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_data_w) // Dips, Sound
- AM_RANGE(0xafb0, 0xafb3) AM_DEVREADWRITE("ic24", i8255_device, read, write) // IC24 - lamps, 7segs
- AM_RANGE(0xafd0, 0xafd3) AM_DEVREADWRITE("ic25", i8255_device, read, write) // IC25 - lamps, meters, reel comms (writes)
- AM_RANGE(0xafe0, 0xafe3) AM_DEVREADWRITE("ic37", i8255_device, read, write)// IC37 - doors, coins, reel optics (reads)
- AM_RANGE(0xc000, 0xc000) AM_READ(aces1_unk_r) // illegal or reset irq?
- AM_RANGE(0xe000, 0xe000) AM_READWRITE(aces1_nmi_counter_reset_r, aces1_nmi_counter_reset_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(aces1_state::aces1_portmap)
- AM_RANGE(0x00, 0x00) AM_READ(aces1_unk_port00_r) // read before enabling interrupts?
-ADDRESS_MAP_END
+void aces1_state::aces1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0xadf0, 0xadf3).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // Dips, Sound
+ map(0xafb0, 0xafb3).rw("ic24", FUNC(i8255_device::read), FUNC(i8255_device::write)); // IC24 - lamps, 7segs
+ map(0xafd0, 0xafd3).rw("ic25", FUNC(i8255_device::read), FUNC(i8255_device::write)); // IC25 - lamps, meters, reel comms (writes)
+ map(0xafe0, 0xafe3).rw("ic37", FUNC(i8255_device::read), FUNC(i8255_device::write));// IC37 - doors, coins, reel optics (reads)
+ map(0xc000, 0xc000).r(this, FUNC(aces1_state::aces1_unk_r)); // illegal or reset irq?
+ map(0xe000, 0xe000).rw(this, FUNC(aces1_state::aces1_nmi_counter_reset_r), FUNC(aces1_state::aces1_nmi_counter_reset_w));
+}
+
+
+void aces1_state::aces1_portmap(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(aces1_state::aces1_unk_port00_r)); // read before enabling interrupts?
+}
static INPUT_PORTS_START( aces1 )
diff --git a/src/mame/drivers/acesp.cpp b/src/mame/drivers/acesp.cpp
index 954ed36bd12..6b31dd4b446 100644
--- a/src/mame/drivers/acesp.cpp
+++ b/src/mame/drivers/acesp.cpp
@@ -44,10 +44,11 @@ public:
-ADDRESS_MAP_START(ace_sp_state::ace_sp_map)
+void ace_sp_state::ace_sp_map(address_map &map)
+{
/**** 6303Y internal area ****/
//----- 0x0000 - 0x0027 is internal registers -----
- AM_RANGE(0x0000, 0x0027) AM_RAM
+ map(0x0000, 0x0027).ram();
//----- 0x0028 - 0x003f is external access -----
// 0x30 - reels write
// 0x31 - lamp high
@@ -57,25 +58,26 @@ ADDRESS_MAP_START(ace_sp_state::ace_sp_map)
// 0x35 - shift clk
// 0x36 - sio
// 0x37 - watchdog?
- AM_RANGE(0x0038, 0x003b) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
+ map(0x0038, 0x003b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
/* 0x3c */
/* 0x3d */
/* 0x3e */
/* 0x3f */
//----- 0x0040 - 0x013f is internal RAM (256 bytes) -----
- AM_RANGE(0x0040, 0x013f) AM_RAM
+ map(0x0040, 0x013f).ram();
/**** regular map ****/
- AM_RANGE(0x0140, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0140, 0x1fff).ram();
+ map(0x2000, 0xffff).rom();
+}
-ADDRESS_MAP_START(ace_sp_state::ace_sp_portmap)
+void ace_sp_state::ace_sp_portmap(address_map &map)
+{
//AM_RANGE(0x02, 0x02) // misc
//AM_RANGE(0x05, 0x06) // AYs
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( ace_sp )
diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp
index d8633b3b3f1..91faa3be2d2 100644
--- a/src/mame/drivers/acommand.cpp
+++ b/src/mame/drivers/acommand.cpp
@@ -320,31 +320,32 @@ WRITE16_MEMBER(acommand_state::output_lamps_w)
// --xx --xx lamps
}
-ADDRESS_MAP_START(acommand_state::acommand_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("bgtmap", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("txtmap", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082208, 0x082209) AM_WRITE(ac_unk2_w)
- AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_DEVWRITE("bgtmap", megasys1_tilemap_device, write) AM_SHARE("bgtmap")
- AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_DEVWRITE("txtmap", megasys1_tilemap_device, write) AM_SHARE("txtmap")
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM
- AM_RANGE(0x0f8000, 0x0f8fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0f9000, 0x0fffff) AM_RAM
-
- AM_RANGE(0x100000, 0x100001) AM_WRITE8(oki_bank_w,0x00ff)
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0") AM_WRITE(output_lamps_w)
- AM_RANGE(0x100014, 0x100017) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x100018, 0x10001b) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
-
- AM_RANGE(0x100040, 0x100041) AM_READWRITE(ext_devices_0_r,ext_devices_0_w)
- AM_RANGE(0x100044, 0x100045) AM_READWRITE(ext_devices_1_r,ext_devices_1_w)
- AM_RANGE(0x100048, 0x100049) AM_WRITE(ext_devices_2_w)
-
- AM_RANGE(0x100050, 0x100051) AM_WRITE(output_7seg0_w)
- AM_RANGE(0x100054, 0x100055) AM_WRITE(output_7seg1_w)
- AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
+void acommand_state::acommand_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x082000, 0x082005).w(m_bgtmap, FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082100, 0x082105).w(m_txtmap, FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082208, 0x082209).w(this, FUNC(acommand_state::ac_unk2_w));
+ map(0x0a0000, 0x0a3fff).ram().w(m_bgtmap, FUNC(megasys1_tilemap_device::write)).share("bgtmap");
+ map(0x0b0000, 0x0b3fff).ram().w(m_txtmap, FUNC(megasys1_tilemap_device::write)).share("txtmap");
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0f0000, 0x0f7fff).ram();
+ map(0x0f8000, 0x0f8fff).ram().share("spriteram");
+ map(0x0f9000, 0x0fffff).ram();
+
+ map(0x100001, 0x100001).w(this, FUNC(acommand_state::oki_bank_w));
+ map(0x100008, 0x100009).portr("IN0").w(this, FUNC(acommand_state::output_lamps_w));
+ map(0x100014, 0x100017).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x100018, 0x10001b).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+
+ map(0x100040, 0x100041).rw(this, FUNC(acommand_state::ext_devices_0_r), FUNC(acommand_state::ext_devices_0_w));
+ map(0x100044, 0x100045).rw(this, FUNC(acommand_state::ext_devices_1_r), FUNC(acommand_state::ext_devices_1_w));
+ map(0x100048, 0x100049).w(this, FUNC(acommand_state::ext_devices_2_w));
+
+ map(0x100050, 0x100051).w(this, FUNC(acommand_state::output_7seg0_w));
+ map(0x100054, 0x100055).w(this, FUNC(acommand_state::output_7seg1_w));
+ map(0x10005c, 0x10005d).portr("DSW");
+}
static INPUT_PORTS_START( acommand )
PORT_START("IN0")
diff --git a/src/mame/drivers/acrnsys1.cpp b/src/mame/drivers/acrnsys1.cpp
index b5fe96b04f5..3faaf3a639f 100644
--- a/src/mame/drivers/acrnsys1.cpp
+++ b/src/mame/drivers/acrnsys1.cpp
@@ -183,12 +183,13 @@ WRITE8_MEMBER( acrnsys1_state::acrnsys1_led_segment_w )
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(acrnsys1_state::acrnsys1_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0e00, 0x0e7f) AM_MIRROR(0x100) AM_DEVREADWRITE("b1", ins8154_device, ins8154_r, ins8154_w)
- AM_RANGE(0x0e80, 0x0eff) AM_MIRROR(0x100) AM_RAM
- AM_RANGE(0xf800, 0xf9ff) AM_MIRROR(0x600) AM_ROM
-ADDRESS_MAP_END
+void acrnsys1_state::acrnsys1_map(address_map &map)
+{
+ map(0x0000, 0x03ff).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();
+}
/***************************************************************************
diff --git a/src/mame/drivers/actfancr.cpp b/src/mame/drivers/actfancr.cpp
index b162474a2e6..5ab2d128a6b 100644
--- a/src/mame/drivers/actfancr.cpp
+++ b/src/mame/drivers/actfancr.cpp
@@ -28,7 +28,6 @@
#include "includes/actfancr.h"
#include "cpu/m6502/m6502.h"
-#include "cpu/h6280/h6280.h"
#include "sound/2203intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
@@ -68,56 +67,59 @@ WRITE8_MEMBER(actfancr_state::actfancr_buffer_spriteram_w)
}
}
-ADDRESS_MAP_START(actfancr_state::actfan_map)
- AM_RANGE(0x000000, 0x02ffff) AM_ROM
- AM_RANGE(0x060000, 0x060007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_swap_w)
- AM_RANGE(0x062000, 0x063fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
- AM_RANGE(0x070000, 0x070007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x070010, 0x07001f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_swap_w)
- AM_RANGE(0x072000, 0x0727ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
- AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w)
- AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x130000, 0x130000) AM_READ_PORT("P1")
- AM_RANGE(0x130001, 0x130001) AM_READ_PORT("P2")
- AM_RANGE(0x130002, 0x130002) AM_READ_PORT("DSW1")
- AM_RANGE(0x130003, 0x130003) AM_READ_PORT("DSW2")
- AM_RANGE(0x140000, 0x140001) AM_READ_PORT("SYSTEM") /* VBL */
- AM_RANGE(0x150000, 0x150000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM AM_SHARE("main_ram") /* Main ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(actfancr_state::triothep_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x040010, 0x04001f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_swap_w)
- AM_RANGE(0x044000, 0x045fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
- AM_RANGE(0x046400, 0x0467ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_8bit_swap_r, pf_rowscroll_8bit_swap_w)
- AM_RANGE(0x060000, 0x060007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_swap_w)
- AM_RANGE(0x064000, 0x0647ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
- AM_RANGE(0x066400, 0x0667ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_8bit_swap_r, pf_rowscroll_8bit_swap_w)
- AM_RANGE(0x100000, 0x100000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w)
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x130000, 0x1305ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x140001) AM_READNOP /* Value doesn't matter */
- AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM AM_SHARE("main_ram") /* Main ram */
- AM_RANGE(0x1ff000, 0x1ff001) AM_READWRITE(triothep_control_r, triothep_control_select_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("maincpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void actfancr_state::actfan_map(address_map &map)
+{
+ map(0x000000, 0x02ffff).rom();
+ map(0x060000, 0x060007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x060010, 0x06001f).w(m_tilegen1, FUNC(deco_bac06_device::pf_control1_8bit_swap_w));
+ map(0x062000, 0x063fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w));
+ map(0x070000, 0x070007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x070010, 0x07001f).w(m_tilegen2, FUNC(deco_bac06_device::pf_control1_8bit_swap_w));
+ map(0x072000, 0x0727ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w));
+ map(0x100000, 0x1007ff).ram().share("spriteram");
+ map(0x110000, 0x110001).w(this, FUNC(actfancr_state::actfancr_buffer_spriteram_w));
+ map(0x120000, 0x1205ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x130000, 0x130000).portr("P1");
+ map(0x130001, 0x130001).portr("P2");
+ map(0x130002, 0x130002).portr("DSW1");
+ map(0x130003, 0x130003).portr("DSW2");
+ map(0x140000, 0x140001).portr("SYSTEM"); /* VBL */
+ map(0x150000, 0x150000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1f0000, 0x1f3fff).ram().share("main_ram"); /* Main ram */
+}
+
+void actfancr_state::triothep_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x040007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x040010, 0x04001f).w(m_tilegen2, FUNC(deco_bac06_device::pf_control1_8bit_swap_w));
+ map(0x044000, 0x045fff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w));
+ map(0x046400, 0x0467ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_r), FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_w));
+ map(0x060000, 0x060007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x060010, 0x06001f).w(m_tilegen1, FUNC(deco_bac06_device::pf_control1_8bit_swap_w));
+ map(0x064000, 0x0647ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w));
+ map(0x066400, 0x0667ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_r), FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_w));
+ map(0x100000, 0x100000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x110000, 0x110001).w(this, FUNC(actfancr_state::actfancr_buffer_spriteram_w));
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x130000, 0x1305ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x140000, 0x140001).nopr(); /* Value doesn't matter */
+ map(0x1f0000, 0x1f3fff).ram().share("main_ram"); /* Main ram */
+ map(0x1ff000, 0x1ff001).rw(this, FUNC(actfancr_state::triothep_control_r), FUNC(actfancr_state::triothep_control_select_w));
+ map(0x1ff400, 0x1ff403).w(m_maincpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(actfancr_state::dec0_s_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void actfancr_state::dec0_s_map(address_map &map)
+{
+ map(0x0000, 0x07ff).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(0x4000, 0xffff).rom();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/acvirus.cpp b/src/mame/drivers/acvirus.cpp
index 066612f4e7c..dc0d8356364 100644
--- a/src/mame/drivers/acvirus.cpp
+++ b/src/mame/drivers/acvirus.cpp
@@ -100,10 +100,11 @@ void acvirus_state::machine_reset()
{
}
-ADDRESS_MAP_START(acvirus_state::virus_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) // fixed 32K of flash image
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
-ADDRESS_MAP_END
+void acvirus_state::virus_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0); // fixed 32K of flash image
+ map(0x8000, 0xffff).bankr("rombank");
+}
MACHINE_CONFIG_START(acvirus_state::virus)
MCFG_CPU_ADD("maincpu", I8052, XTAL(12'000'000))
diff --git a/src/mame/drivers/adam.cpp b/src/mame/drivers/adam.cpp
index 6c82f040866..863b7d2624e 100644
--- a/src/mame/drivers/adam.cpp
+++ b/src/mame/drivers/adam.cpp
@@ -874,41 +874,45 @@ WRITE8_MEMBER( adam_state::m6801_p4_w )
// ADDRESS_MAP( adam_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(adam_state::adam_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w)
-ADDRESS_MAP_END
+void adam_state::adam_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(adam_state::mreq_r), FUNC(adam_state::mreq_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( adam_io )
//-------------------------------------------------
-ADDRESS_MAP_START(adam_state::adam_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(iorq_r, iorq_w)
-ADDRESS_MAP_END
+void adam_state::adam_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(adam_state::iorq_r), FUNC(adam_state::iorq_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( m6801_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(adam_state::m6801_mem)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0)
-ADDRESS_MAP_END
+void adam_state::m6801_mem(address_map &map)
+{
+ map(0x0000, 0x001f).rw(m_netcpu, FUNC(m6801_cpu_device::m6801_io_r), FUNC(m6801_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0xf800, 0xffff).rom().region(M6801_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( m6801_io )
//-------------------------------------------------
-ADDRESS_MAP_START(adam_state::m6801_io)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(m6801_p1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6801_p2_r, m6801_p2_w)
- AM_RANGE(M6801_PORT3, M6801_PORT3) AM_READWRITE(m6801_p3_r, m6801_p3_w)
- AM_RANGE(M6801_PORT4, M6801_PORT4) AM_WRITE(m6801_p4_w)
-ADDRESS_MAP_END
+void adam_state::m6801_io(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).w(this, FUNC(adam_state::m6801_p1_w));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(adam_state::m6801_p2_r), FUNC(adam_state::m6801_p2_w));
+ map(M6801_PORT3, M6801_PORT3).rw(this, FUNC(adam_state::m6801_p3_r), FUNC(adam_state::m6801_p3_w));
+ map(M6801_PORT4, M6801_PORT4).w(this, FUNC(adam_state::m6801_p4_w));
+}
diff --git a/src/mame/drivers/adp.cpp b/src/mame/drivers/adp.cpp
index 53059627674..0bdf0d308e2 100644
--- a/src/mame/drivers/adp.cpp
+++ b/src/mame/drivers/adp.cpp
@@ -304,61 +304,66 @@ WRITE16_MEMBER(adp_state::input_w)
m_mux_data &= 0x0f;
}
-ADDRESS_MAP_START(adp_state::skattv_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
- AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(adp_state::skattva_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
- AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
- AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(adp_state::quickjac_mem)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
- AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) // bad
- AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) // bad
- AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
- AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(adp_state::funland_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
- AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x800088, 0x800089) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x80008a, 0x80008b) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x80008c, 0x80008d) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
- AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xfc0000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(adp_state::fstation_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
- AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xfc0000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void adp_state::skattv_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x800100, 0x800101).rw(this, FUNC(adp_state::input_r), FUNC(adp_state::input_w));
+ map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too
+ map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xffc000, 0xffffff).ram().share("nvram");
+}
+
+void adp_state::skattva_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x800100, 0x800101).portr("IN0");
+ map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too
+ map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xffc000, 0xffffff).ram().share("nvram");
+}
+
+void adp_state::quickjac_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); // bad
+ map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); // bad
+ map(0x800100, 0x800101).portr("IN0");
+ map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too
+ map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xff0000, 0xffffff).ram().share("nvram");
+}
+
+void adp_state::funland_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x800089, 0x800089).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x80008b, 0x80008b).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x80008d, 0x80008d).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x800100, 0x800101).portr("IN0");
+ map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too
+ map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xfc0000, 0xffffff).ram().share("nvram");
+}
+
+void adp_state::fstation_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x800100, 0x800101).rw(this, FUNC(adp_state::input_r), FUNC(adp_state::input_w));
+ map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too
+ map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xfc0000, 0xffffff).ram().share("nvram");
+}
static INPUT_PORTS_START( quickjac )
@@ -525,20 +530,23 @@ INTERRUPT_GEN_MEMBER(adp_state::adp_int)
}
*/
-ADDRESS_MAP_START(adp_state::adp_hd63484_map)
- AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM
- AM_RANGE(0x80000, 0x9ffff) AM_MIRROR(0x60000) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
+void adp_state::adp_hd63484_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).mirror(0x60000).ram();
+ map(0x80000, 0x9ffff).mirror(0x60000).rom().region("gfx1", 0);
+}
-ADDRESS_MAP_START(adp_state::fashiong_hd63484_map)
- AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM
- AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
+void adp_state::fashiong_hd63484_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).mirror(0x60000).ram();
+ map(0x80000, 0xfffff).rom().region("gfx1", 0);
+}
-ADDRESS_MAP_START(adp_state::fstation_hd63484_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0x80000, 0xfffff) AM_RAM
-ADDRESS_MAP_END
+void adp_state::fstation_hd63484_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom().region("gfx1", 0);
+ map(0x80000, 0xfffff).ram();
+}
MACHINE_CONFIG_START(adp_state::quickjac)
@@ -602,9 +610,10 @@ MACHINE_CONFIG_START(adp_state::fashiong)
MCFG_HD63484_ADDRESS_MAP(fashiong_hd63484_map)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(adp_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+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));
+}
MACHINE_CONFIG_START(adp_state::funland)
quickjac(config);
diff --git a/src/mame/drivers/advision.cpp b/src/mame/drivers/advision.cpp
index 8d6b9f1b6b9..6278c1e90a7 100644
--- a/src/mame/drivers/advision.cpp
+++ b/src/mame/drivers/advision.cpp
@@ -36,14 +36,16 @@ READ8_MEMBER( advision_state::rom_r )
return m_cart->read_rom(space, offset & 0xfff);
}
-ADDRESS_MAP_START(advision_state::program_map)
- AM_RANGE(0x0000, 0x03ff) AM_ROMBANK("bank1")
- AM_RANGE(0x0400, 0x0fff) AM_READ(rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(advision_state::io_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(ext_ram_r, ext_ram_w)
-ADDRESS_MAP_END
+void advision_state::program_map(address_map &map)
+{
+ map(0x0000, 0x03ff).bankr("bank1");
+ map(0x0400, 0x0fff).r(this, FUNC(advision_state::rom_r));
+}
+
+void advision_state::io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(advision_state::ext_ram_r), FUNC(advision_state::ext_ram_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/aeroboto.cpp b/src/mame/drivers/aeroboto.cpp
index fc3b93ab26f..34c54bcaa97 100644
--- a/src/mame/drivers/aeroboto.cpp
+++ b/src/mame/drivers/aeroboto.cpp
@@ -74,37 +74,39 @@ WRITE8_MEMBER(aeroboto_state::aeroboto_1a2_w)
m_disable_irq = 1;
}
-ADDRESS_MAP_START(aeroboto_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("mainram") // main RAM
- AM_RANGE(0x01a2, 0x01a2) AM_WRITE(aeroboto_1a2_w) // affects IRQ line (more protection?)
- AM_RANGE(0x0800, 0x08ff) AM_RAM // tile color buffer; copied to 0x2000
- AM_RANGE(0x0900, 0x09ff) AM_WRITEONLY // a backup of default tile colors
- AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(aeroboto_videoram_w) AM_SHARE("videoram") // tile RAM
- AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("hscroll") // horizontal scroll regs
- AM_RANGE(0x1840, 0x27ff) AM_WRITENOP // cleared during custom LSI test
- AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(aeroboto_tilecolor_w) AM_SHARE("tilecolor") // tile color RAM
- AM_RANGE(0x2800, 0x28ff) AM_RAM AM_SHARE("spriteram") // sprite RAM
- AM_RANGE(0x2900, 0x2fff) AM_WRITENOP // cleared along with sprite RAM
- AM_RANGE(0x2973, 0x2973) AM_READ(aeroboto_2973_r) // protection read
- AM_RANGE(0x3000, 0x3000) AM_READWRITE(aeroboto_in0_r, aeroboto_3000_w)
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x3003, 0x3003) AM_WRITEONLY AM_SHARE("vscroll")
- AM_RANGE(0x3004, 0x3004) AM_READ(aeroboto_201_r) AM_WRITEONLY AM_SHARE("starx")
- AM_RANGE(0x3005, 0x3005) AM_WRITEONLY AM_SHARE("stary") // usable but probably wrong
- AM_RANGE(0x3006, 0x3006) AM_WRITEONLY AM_SHARE("bgcolor")
- AM_RANGE(0x3800, 0x3800) AM_READ(aeroboto_irq_ack_r) // watchdog or IRQ ack
- AM_RANGE(0x4000, 0xffff) AM_ROM // main ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aeroboto_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x9002, 0x9002) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xa002, 0xa002) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void aeroboto_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("mainram"); // main RAM
+ map(0x01a2, 0x01a2).w(this, FUNC(aeroboto_state::aeroboto_1a2_w)); // affects IRQ line (more protection?)
+ map(0x0800, 0x08ff).ram(); // tile color buffer; copied to 0x2000
+ map(0x0900, 0x09ff).writeonly(); // a backup of default tile colors
+ map(0x1000, 0x17ff).ram().w(this, FUNC(aeroboto_state::aeroboto_videoram_w)).share("videoram"); // tile RAM
+ map(0x1800, 0x183f).ram().share("hscroll"); // horizontal scroll regs
+ map(0x1840, 0x27ff).nopw(); // cleared during custom LSI test
+ map(0x2000, 0x20ff).ram().w(this, FUNC(aeroboto_state::aeroboto_tilecolor_w)).share("tilecolor"); // tile color RAM
+ map(0x2800, 0x28ff).ram().share("spriteram"); // sprite RAM
+ map(0x2900, 0x2fff).nopw(); // cleared along with sprite RAM
+ map(0x2973, 0x2973).r(this, FUNC(aeroboto_state::aeroboto_2973_r)); // protection read
+ map(0x3000, 0x3000).rw(this, FUNC(aeroboto_state::aeroboto_in0_r), FUNC(aeroboto_state::aeroboto_3000_w));
+ map(0x3001, 0x3001).portr("DSW1").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3002, 0x3002).portr("DSW2").w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x3003, 0x3003).writeonly().share("vscroll");
+ map(0x3004, 0x3004).r(this, FUNC(aeroboto_state::aeroboto_201_r)).writeonly().share("starx");
+ map(0x3005, 0x3005).writeonly().share("stary"); // usable but probably wrong
+ map(0x3006, 0x3006).writeonly().share("bgcolor");
+ map(0x3800, 0x3800).r(this, FUNC(aeroboto_state::aeroboto_irq_ack_r)); // watchdog or IRQ ack
+ map(0x4000, 0xffff).rom(); // main ROM
+}
+
+void aeroboto_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x9000, 0x9001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x9002, 0x9002).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xa000, 0xa001).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xa002, 0xa002).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xf000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index 5f81617c310..5179a71fd32 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -128,368 +128,411 @@ WRITE8_MEMBER(aerofgt_state::karatblzbl_d7759_reset_w)
m_upd7759->reset_w(data & 0x80);
}
-ADDRESS_MAP_START(aerofgt_state::pspikes_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::pspikesb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xc04000, 0xc04001) AM_WRITENOP
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w)
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0")
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1")
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfff008, 0xfff009) AM_WRITE(pspikesb_oki_banking_w)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::spikes91_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xc04000, 0xc04001) AM_WRITENOP
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
-
- AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("tx_tilemap_ram")
-
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("spriteram3")
- //AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w)
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0")
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_NOP
- AM_RANGE(0xfff008, 0xfff009) AM_WRITE(spikes91_lookup_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::pspikesc_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
- AM_RANGE(0xfff004, 0xfff005) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::kickball_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(kickball_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblz_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x082000, 0x083fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0a0000, 0x0affff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00)
- AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE8(karatblz_gfxbank_w, 0xff00)
- AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2")
- AM_RANGE(0x0ff006, 0x0ff007) AM_READ_PORT("IN3") AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrollx_w)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblzbl_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x082000, 0x083fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0a0000, 0x0affff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00)
- AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE8(karatblz_gfxbank_w, 0xff00)
- AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2")
- AM_RANGE(0x0ff006, 0x0ff007) AM_READ_PORT("IN3") AM_WRITE8(karatblzbl_soundlatch_w, 0x00ff)
- AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrollx_w)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0ff400, 0x0ff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::spinlbrk_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */
- AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffd1ff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00)
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE8(spinlbrk_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
- AM_RANGE(0xfff006, 0xfff007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-// AM_RANGE(0xfff008, 0xfff009) - read when analog inputs are enabled
-// AM_RANGE(0xfff00a, 0xfff00b) /
- AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::turbofrc_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(turbofrc_flip_screen_w, 0x00ff)
- AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0ff006, 0x0ff007) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0ff006, 0x0ff007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("IN2")
- AM_RANGE(0x0ff008, 0x0ff00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITENOP /* related to bg2 (written together with the scroll registers) */
- AM_RANGE(0x0ff00e, 0x0ff00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerofgtb_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0") AM_WRITE8(turbofrc_flip_screen_w, 0x00ff)
- AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1") AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerofgt_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1b0000, 0x1b07ff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
- AM_RANGE(0x1b0800, 0x1b0801) AM_RAM /* tracks watchdog state */
- AM_RANGE(0x1b0ff0, 0x1b0fff) AM_RAM /* stack area during boot */
- AM_RANGE(0x1b2000, 0x1b3fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x1b4000, 0x1b5fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x1c0000, 0x1c7fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x1d0000, 0x1d1fff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xfef000, 0xffefff) AM_RAM /* work RAM */
- AM_RANGE(0xffff80, 0xffff87) AM_WRITE(aerofgt_gfxbank_w)
- AM_RANGE(0xffff88, 0xffff89) AM_WRITE(aerofgt_bg1scrolly_w) /* + something else in the top byte */
- AM_RANGE(0xffff90, 0xffff91) AM_WRITE(aerofgt_bg2scrolly_w) /* + something else in the top byte */
- AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff)
- AM_RANGE(0xffffc0, 0xffffc1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerfboot_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM //AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
- AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1")
- AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1")
- AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0fe002, 0x0fe003) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0fe004, 0x0fe005) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP
- AM_RANGE(0x0fe012, 0x0fe013) AM_WRITENOP // MSB = watchdog?
- AM_RANGE(0x0fe400, 0x0fe403) AM_WRITENOP // GGA access
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
- AM_RANGE(0x100000, 0x107fff) AM_WRITENOP
- AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x10c000, 0x117fff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerfboo2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
- AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1")
- AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1")
- AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0fe002, 0x0fe003) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0fe004, 0x0fe005) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_DEVREAD8("oki", okim6295_device, read, 0xff00)
- AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00)
- AM_RANGE(0x0fe01e, 0x0fe01f) AM_WRITE(aerfboo2_okim6295_banking_w)
-// AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP
-// AM_RANGE(0x0fe012, 0x0fe013) AM_WRITE(aerfboot_soundlatch_w)
- AM_RANGE(0x0fe400, 0x0fe403) AM_WRITENOP // GGA access
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::wbbc97_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM /* work RAM */
- AM_RANGE(0x600000, 0x605fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xa00000, 0xa3ffff) AM_RAM AM_SHARE("bitmapram")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff00e, 0xfff00f) AM_WRITE(wbbc97_bitmap_enable_w)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::spinlbrk_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(spinlbrk_sh_bankswitch_w)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::turbofrc_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerofgt_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerfboot_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(aerfboot_okim6295_banking_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::wbbc97_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xfc00, 0xfc00) AM_NOP
- AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblzbl_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblzbl_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(karatblzbl_d7759_write_port_0_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(karatblzbl_d7759_reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::kickball_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::kickball_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(aerofgt_state::oki_map) //only for aerfboot for now
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void aerofgt_state::pspikes_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::pspikesb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xc04000, 0xc04001).nopw();
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffcbff).ram().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::pspikesb_oki_banking_w));
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::spikes91_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xc04000, 0xc04001).nopw();
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+
+ map(0xffa000, 0xffbfff).ram().share("tx_tilemap_ram");
+
+ map(0xffc000, 0xffcfff).ram().share("spriteram3");
+ //map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff006, 0xfff007).noprw();
+ map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::spikes91_lookup_w));
+}
+
+void aerofgt_state::pspikesc_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffcbff).ram().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW");
+ map(0xfff004, 0xfff005).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::kickball_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x20ffff).ram().share("spriteram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::kickball_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::karatblz_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0a0000, 0x0affff).ram().share("spriteram1");
+ map(0x0b0000, 0x0bffff).ram().share("spriteram2");
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0ff000, 0x0ff001).portr("IN0");
+ map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
+ map(0x0ff002, 0x0ff003).portr("IN1");
+ map(0x0ff002, 0x0ff002).w(this, FUNC(aerofgt_state::karatblz_gfxbank_w));
+ map(0x0ff004, 0x0ff005).portr("IN2");
+ map(0x0ff006, 0x0ff007).portr("IN3");
+ map(0x0ff007, 0x0ff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w));
+ map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::karatblzbl_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0a0000, 0x0affff).ram().share("spriteram1");
+ map(0x0b0000, 0x0bffff).ram().share("spriteram2");
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0ff000, 0x0ff001).portr("IN0");
+ map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
+ map(0x0ff002, 0x0ff003).portr("IN1");
+ map(0x0ff002, 0x0ff002).w(this, FUNC(aerofgt_state::karatblz_gfxbank_w));
+ map(0x0ff004, 0x0ff005).portr("IN2");
+ map(0x0ff006, 0x0ff007).portr("IN3");
+ map(0x0ff007, 0x0ff007).w(this, FUNC(aerofgt_state::karatblzbl_soundlatch_w));
+ map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w));
+ map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff400, 0x0ff403).nopw(); // GGA access
+}
+
+void aerofgt_state::spinlbrk_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0xff8000, 0xffbfff).ram(); /* work RAM */
+ map(0xffc000, 0xffc7ff).ram().share("spriteram3");
+ map(0xffd000, 0xffd1ff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff000, 0xfff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::spinlbrk_gfxbank_w));
+ map(0xfff002, 0xfff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0xfff004, 0xfff005).portr("DSW");
+ map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+// map(0xfff008, 0xfff009); - read when analog inputs are enabled
+// map(0xfff00a, 0xfff00b); /
+ map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::turbofrc_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x0bffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fd000, 0x0fdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0ff000, 0x0ff001).portr("IN0");
+ map(0x0ff001, 0x0ff001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w));
+ map(0x0ff002, 0x0ff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0ff004, 0x0ff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff007, 0x0ff007).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0ff006, 0x0ff007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff008, 0x0ff009).portr("IN2");
+ map(0x0ff008, 0x0ff00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0ff00c, 0x0ff00d).nopw(); /* related to bg2 (written together with the scroll registers) */
+ map(0x0ff00e, 0x0ff00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::aerofgtb_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0fe000, 0x0fe001).portr("IN0");
+ map(0x0fe001, 0x0fe001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w));
+ map(0x0fe002, 0x0fe003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0fe004, 0x0fe005).portr("DSW1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe007, 0x0fe007).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe008, 0x0fe009).portr("DSW2");
+ map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0fe400, 0x0fe403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
+}
+
+void aerofgt_state::aerofgt_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x1a0000, 0x1a07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1b0000, 0x1b07ff).ram().share("rasterram"); /* used only for the scroll registers */
+ map(0x1b0800, 0x1b0801).ram(); /* tracks watchdog state */
+ map(0x1b0ff0, 0x1b0fff).ram(); /* stack area during boot */
+ map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x1c0000, 0x1c7fff).ram().share("spriteram1");
+ map(0x1d0000, 0x1d1fff).ram().share("spriteram3");
+ map(0xfef000, 0xffefff).ram(); /* work RAM */
+ map(0xffff80, 0xffff87).w(this, FUNC(aerofgt_state::aerofgt_gfxbank_w));
+ map(0xffff88, 0xffff89).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); /* + something else in the top byte */
+ map(0xffff90, 0xffff91).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); /* + something else in the top byte */
+ map(0xffffa0, 0xffffbf).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff);
+ map(0xffffc1, 0xffffc1).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+void aerofgt_state::aerfboot_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram(); //.share("spriteram3");
+ map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0fe000, 0x0fe001).portr("IN0");
+ map(0x0fe002, 0x0fe003).portr("IN1");
+ map(0x0fe004, 0x0fe005).portr("DSW1");
+ map(0x0fe008, 0x0fe009).portr("DSW2");
+ map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0fe010, 0x0fe011).nopw();
+ map(0x0fe012, 0x0fe013).nopw(); // MSB = watchdog?
+ map(0x0fe400, 0x0fe403).nopw(); // GGA access
+ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
+ map(0x100000, 0x107fff).nopw();
+ map(0x108000, 0x10bfff).ram().share("spriteram3");
+ map(0x10c000, 0x117fff).nopw();
+}
+
+void aerofgt_state::aerfboo2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0fe000, 0x0fe001).portr("IN0");
+ map(0x0fe002, 0x0fe003).portr("IN1");
+ map(0x0fe004, 0x0fe005).portr("DSW1");
+ map(0x0fe008, 0x0fe009).portr("DSW2");
+ map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read));
+ map(0x0fe00e, 0x0fe00e).w(m_oki, FUNC(okim6295_device::write));
+ map(0x0fe01e, 0x0fe01f).w(this, FUNC(aerofgt_state::aerfboo2_okim6295_banking_w));
+// map(0x0fe010, 0x0fe011).nopw();
+// map(0x0fe012, 0x0fe013).w(this, FUNC(aerofgt_state::aerfboot_soundlatch_w));
+ map(0x0fe400, 0x0fe403).nopw(); // GGA access
+ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
+}
+
+void aerofgt_state::wbbc97_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x500000, 0x50ffff).ram(); /* work RAM */
+ map(0x600000, 0x605fff).ram().share("spriteram1");
+ map(0xa00000, 0xa3ffff).ram().share("bitmapram");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff00e, 0xfff00f).w(this, FUNC(aerofgt_state::wbbc97_bitmap_enable_w));
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
+
+void aerofgt_state::spinlbrk_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(aerofgt_state::spinlbrk_sh_bankswitch_w));
+ map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
+
+void aerofgt_state::turbofrc_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(aerofgt_state::aerofgt_sh_bankswitch_w));
+ map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
+
+void aerofgt_state::aerofgt_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x04, 0x04).w(this, FUNC(aerofgt_state::aerofgt_sh_bankswitch_w));
+ map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::aerfboot_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(aerofgt_state::aerfboot_okim6295_banking_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::wbbc97_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xfc00, 0xfc00).noprw();
+ map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::karatblzbl_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); //.w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
+
+void aerofgt_state::karatblzbl_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).w(this, FUNC(aerofgt_state::karatblzbl_d7759_write_port_0_w));
+ map(0x80, 0x80).w(this, FUNC(aerofgt_state::karatblzbl_d7759_reset_w));
+}
+
+void aerofgt_state::kickball_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::kickball_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
+
+
+void aerofgt_state::oki_map(address_map &map)
+{ //only for aerfboot for now
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( pspikes )
PORT_START("IN0")
diff --git a/src/mame/drivers/agat.cpp b/src/mame/drivers/agat.cpp
index 579eb836cbb..43a5f93b84f 100644
--- a/src/mame/drivers/agat.cpp
+++ b/src/mame/drivers/agat.cpp
@@ -690,29 +690,31 @@ WRITE8_MEMBER(agat7_state::agat7_ram_w)
* and are supported only on motherboards with 32K onboard.
* all extra RAM (onboard or addon) is accessible via 16K window at 0x8000.
*/
-ADDRESS_MAP_START(agat7_state::agat7_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xbfff) AM_READWRITE(agat7_ram_r, agat7_ram_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0xf) AM_READ(keyb_data_r) AM_WRITENOP
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0xf) AM_READWRITE(keyb_strobe_r, keyb_strobe_w)
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0xf) AM_READWRITE(cassette_toggle_r, cassette_toggle_w)
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0xf) AM_READWRITE(speaker_toggle_r, speaker_toggle_w)
- AM_RANGE(0xc040, 0xc040) AM_MIRROR(0xf) AM_READWRITE(interrupts_on_r, interrupts_on_w)
- AM_RANGE(0xc050, 0xc050) AM_MIRROR(0xf) AM_READWRITE(interrupts_off_r, interrupts_off_w)
- AM_RANGE(0xc060, 0xc067) AM_MIRROR(0x8) AM_READ(flags_r) AM_WRITENOP
- AM_RANGE(0xc070, 0xc070) AM_MIRROR(0xf) AM_READWRITE(controller_strobe_r, controller_strobe_w)
- AM_RANGE(0xc080, 0xc0ef) AM_READWRITE(c080_r, c080_w)
- AM_RANGE(0xc0f0, 0xc0ff) AM_READWRITE(agat7_membank_r, agat7_membank_w)
- AM_RANGE(0xc100, 0xc6ff) AM_READWRITE(c100_r, c100_w)
- AM_RANGE(0xc700, 0xc7ff) AM_DEVREADWRITE("a7video", agat7video_device, read, write)
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(c800_r, c800_w)
- AM_RANGE(0xd000, 0xffff) AM_DEVICE(A7_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(agat7_state::inhbank_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(inh_w)
- AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w)
-ADDRESS_MAP_END
+void agat7_state::agat7_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xbfff).rw(this, FUNC(agat7_state::agat7_ram_r), FUNC(agat7_state::agat7_ram_w));
+ map(0xc000, 0xc000).mirror(0xf).r(this, FUNC(agat7_state::keyb_data_r)).nopw();
+ map(0xc010, 0xc010).mirror(0xf).rw(this, FUNC(agat7_state::keyb_strobe_r), FUNC(agat7_state::keyb_strobe_w));
+ map(0xc020, 0xc020).mirror(0xf).rw(this, FUNC(agat7_state::cassette_toggle_r), FUNC(agat7_state::cassette_toggle_w));
+ map(0xc030, 0xc030).mirror(0xf).rw(this, FUNC(agat7_state::speaker_toggle_r), FUNC(agat7_state::speaker_toggle_w));
+ map(0xc040, 0xc040).mirror(0xf).rw(this, FUNC(agat7_state::interrupts_on_r), FUNC(agat7_state::interrupts_on_w));
+ map(0xc050, 0xc050).mirror(0xf).rw(this, FUNC(agat7_state::interrupts_off_r), FUNC(agat7_state::interrupts_off_w));
+ map(0xc060, 0xc067).mirror(0x8).r(this, FUNC(agat7_state::flags_r)).nopw();
+ map(0xc070, 0xc070).mirror(0xf).rw(this, FUNC(agat7_state::controller_strobe_r), FUNC(agat7_state::controller_strobe_w));
+ map(0xc080, 0xc0ef).rw(this, FUNC(agat7_state::c080_r), FUNC(agat7_state::c080_w));
+ map(0xc0f0, 0xc0ff).rw(this, FUNC(agat7_state::agat7_membank_r), FUNC(agat7_state::agat7_membank_w));
+ map(0xc100, 0xc6ff).rw(this, FUNC(agat7_state::c100_r), FUNC(agat7_state::c100_w));
+ map(0xc700, 0xc7ff).rw("a7video", FUNC(agat7video_device::read), FUNC(agat7video_device::write));
+ map(0xc800, 0xcfff).rw(this, FUNC(agat7_state::c800_r), FUNC(agat7_state::c800_w));
+ map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void agat7_state::inhbank_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom().region("maincpu", 0x1000).w(this, FUNC(agat7_state::inh_w));
+ map(0x3000, 0x5fff).rw(this, FUNC(agat7_state::inh_r), FUNC(agat7_state::inh_w));
+}
/***************************************************************************
KEYBOARD
diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp
index 5ea1a041410..d9c34e4688b 100644
--- a/src/mame/drivers/aim65.cpp
+++ b/src/mame/drivers/aim65.cpp
@@ -38,20 +38,21 @@ Bugs
***************************************************************************/
/* Note: RAM is mapped dynamically in machine/aim65.c */
-ADDRESS_MAP_START(aim65_state::aim65_mem)
- AM_RANGE( 0x1000, 0x3fff ) AM_NOP /* User available expansions */
- AM_RANGE( 0x4000, 0x7fff ) AM_ROM /* 4 ROM sockets in 16K PROM/ROM module */
- AM_RANGE( 0x8000, 0x9fff ) AM_NOP /* User available expansions */
- AM_RANGE( 0xa000, 0xa00f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) // user via
- AM_RANGE( 0xa400, 0xa47f ) AM_DEVICE("riot", mos6532_new_device, ram_map)
- AM_RANGE( 0xa480, 0xa497 ) AM_DEVICE("riot", mos6532_new_device, io_map)
- AM_RANGE( 0xa498, 0xa7ff ) AM_NOP /* Not available */
- AM_RANGE( 0xa800, 0xa80f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) // system via
- AM_RANGE( 0xac00, 0xac03 ) AM_DEVREADWRITE("pia6821", pia6821_device, read, write)
- AM_RANGE( 0xac04, 0xac43 ) AM_RAM /* PIA RAM */
- AM_RANGE( 0xac44, 0xafff ) AM_NOP /* Not available */
- AM_RANGE( 0xb000, 0xffff ) AM_ROM /* 5 ROM sockets */
-ADDRESS_MAP_END
+void aim65_state::aim65_mem(address_map &map)
+{
+ map(0x1000, 0x3fff).noprw(); /* User available expansions */
+ map(0x4000, 0x7fff).rom(); /* 4 ROM sockets in 16K PROM/ROM module */
+ map(0x8000, 0x9fff).noprw(); /* User available expansions */
+ map(0xa000, 0xa00f).mirror(0x3f0).rw("via6522_1", FUNC(via6522_device::read), FUNC(via6522_device::write)); // user via
+ map(0xa400, 0xa47f).m("riot", FUNC(mos6532_new_device::ram_map));
+ map(0xa480, 0xa497).m("riot", FUNC(mos6532_new_device::io_map));
+ map(0xa498, 0xa7ff).noprw(); /* Not available */
+ map(0xa800, 0xa80f).mirror(0x3f0).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); // system via
+ map(0xac00, 0xac03).rw("pia6821", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xac04, 0xac43).ram(); /* PIA RAM */
+ map(0xac44, 0xafff).noprw(); /* Not available */
+ map(0xb000, 0xffff).rom(); /* 5 ROM sockets */
+}
/***************************************************************************
diff --git a/src/mame/drivers/aim65_40.cpp b/src/mame/drivers/aim65_40.cpp
index ac07ed6be62..5b45491fa0d 100644
--- a/src/mame/drivers/aim65_40.cpp
+++ b/src/mame/drivers/aim65_40.cpp
@@ -91,16 +91,17 @@ private:
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(aim65_40_state::aim65_40_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0xa000, 0xcfff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xf000, 0xff7f) AM_ROM AM_REGION("roms", 0x3000)
- AM_RANGE(0xffa0, 0xffaf) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
- AM_RANGE(0xffb0, 0xffbf) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
- AM_RANGE(0xffc0, 0xffcf) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write)
- AM_RANGE(0xffd0, 0xffd3) AM_DEVREADWRITE(M6551_TAG, mos6551_device, read, write)
- AM_RANGE(0xffe0, 0xffff) AM_ROM AM_REGION("roms", 0x3fe0)
-ADDRESS_MAP_END
+void aim65_40_state::aim65_40_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0xa000, 0xcfff).rom().region("roms", 0);
+ map(0xf000, 0xff7f).rom().region("roms", 0x3000);
+ map(0xffa0, 0xffaf).rw(M6522_0_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xffb0, 0xffbf).rw(M6522_1_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xffc0, 0xffcf).rw(M6522_2_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xffd0, 0xffd3).rw(M6551_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xffe0, 0xffff).rom().region("roms", 0x3fe0);
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp
index 0cf04754f2f..994d6eb4a19 100644
--- a/src/mame/drivers/airbustr.cpp
+++ b/src/mame/drivers/airbustr.cpp
@@ -305,61 +305,67 @@ WRITE8_MEMBER(airbustr_state::coin_counter_w)
}
/* Memory Maps */
-ADDRESS_MAP_START(airbustr_state::master_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("masterbank")
- AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_r, spriteram_w)
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("devram") // shared with protection device
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airbustr_state::master_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(master_bankswitch_w)
- AM_RANGE(0x01, 0x01) AM_WRITENOP // ???
- AM_RANGE(0x02, 0x02) AM_WRITE(master_nmi_trigger_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airbustr_state::slave_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd000, 0xd5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xd600, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airbustr_state::slave_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(slave_bankswitch_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x04, 0x0c) AM_WRITE(scrollregs_w)
- AM_RANGE(0x0e, 0x0e) AM_READ(soundcommand_status_r)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("P1")
- AM_RANGE(0x22, 0x22) AM_READ_PORT("P2")
- AM_RANGE(0x24, 0x24) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x28, 0x28) AM_WRITE(coin_counter_w)
- AM_RANGE(0x38, 0x38) AM_WRITENOP // irq ack / irq mask
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airbustr_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airbustr_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void airbustr_state::master_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("masterbank");
+ map(0xc000, 0xcfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w));
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().share("devram"); // shared with protection device
+ map(0xf000, 0xffff).ram().share("share1");
+}
+
+void airbustr_state::master_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(airbustr_state::master_bankswitch_w));
+ map(0x01, 0x01).nopw(); // ???
+ map(0x02, 0x02).w(this, FUNC(airbustr_state::master_nmi_trigger_w));
+}
+
+void airbustr_state::slave_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("slavebank");
+ map(0xc000, 0xc3ff).ram().w(this, FUNC(airbustr_state::videoram2_w)).share("videoram2");
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(airbustr_state::colorram2_w)).share("colorram2");
+ map(0xc800, 0xcbff).ram().w(this, FUNC(airbustr_state::videoram_w)).share("videoram");
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(airbustr_state::colorram_w)).share("colorram");
+ map(0xd000, 0xd5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd600, 0xdfff).ram();
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("share1");
+}
+
+void airbustr_state::slave_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(airbustr_state::slave_bankswitch_w));
+ map(0x02, 0x02).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x04, 0x0c).w(this, FUNC(airbustr_state::scrollregs_w));
+ map(0x0e, 0x0e).r(this, FUNC(airbustr_state::soundcommand_status_r));
+ map(0x20, 0x20).portr("P1");
+ map(0x22, 0x22).portr("P2");
+ map(0x24, 0x24).portr("SYSTEM");
+ map(0x28, 0x28).w(this, FUNC(airbustr_state::coin_counter_w));
+ map(0x38, 0x38).nopw(); // irq ack / irq mask
+}
+
+void airbustr_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("audiobank");
+ map(0xc000, 0xdfff).ram();
+}
+
+void airbustr_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(airbustr_state::sound_bankswitch_w));
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x04, 0x04).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp
index fce34580848..0c4f1107928 100644
--- a/src/mame/drivers/airraid.cpp
+++ b/src/mame/drivers/airraid.cpp
@@ -244,58 +244,62 @@ WRITE8_MEMBER(airraid_state::bank_w)
-ADDRESS_MAP_START(airraid_state::airraid_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP // rld result write-back
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1")
- AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w)
+void airraid_state::airraid_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1").nopw(); // rld result write-back
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc001, 0xc001).portr("IN1");
+ map(0xc002, 0xc002).portr("IN2");
+ map(0xc003, 0xc003).portr("DSW2");
+ map(0xc004, 0xc004).portr("DSW1");
+ map(0xc500, 0xc500).w(this, FUNC(airraid_state::cshooter_c500_w));
// AM_RANGE(0xc600, 0xc600) AM_WRITE(cshooter_c600_w) // see notes
- AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w)
+ map(0xc700, 0xc700).w(this, FUNC(airraid_state::cshooter_c700_w));
// AM_RANGE(0xc801, 0xc801) AM_WRITE(cshooter_c801_w) // see notes
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, txram_w) AM_SHARE("txram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xda00, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xdc00, 0xdc0f) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, vregs_w) AM_SHARE("vregs")
+ map(0xd000, 0xd7ff).ram().w(m_airraid_video, FUNC(airraid_video_device::txram_w)).share("txram");
+ map(0xd800, 0xd8ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xda00, 0xdaff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xdc00, 0xdc0f).ram().w(m_airraid_video, FUNC(airraid_video_device::vregs_w)).share("vregs");
// AM_RANGE(0xdc10, 0xdc10) AM_RAM
- AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w)
+ map(0xdc11, 0xdc11).w(this, FUNC(airraid_state::bank_w));
// AM_RANGE(0xdc19, 0xdc19) AM_RAM
// AM_RANGE(0xdc1e, 0xdc1e) AM_RAM
// AM_RANGE(0xdc1f, 0xdc1f) AM_RAM
- AM_RANGE(0xde00, 0xde0f) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_r, main_w)
- AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airraid_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airraid_state::airraid_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(airraid_state::airraid_sound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000)
-ADDRESS_MAP_END
+ map(0xde00, 0xde0f).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w));
+ map(0xe000, 0xfdff).ram().share("mainram");
+ map(0xfe00, 0xffff).ram().share("sprite_ram");
+}
+
+void airraid_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+void airraid_state::airraid_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void airraid_state::airraid_sound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+ map(0x8000, 0xffff).rom().region("audiocpu", 0x8000);
+}
static INPUT_PORTS_START( airraid )
diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp
index fb4dd2cc4d6..af4d41e79b4 100644
--- a/src/mame/drivers/ajax.cpp
+++ b/src/mame/drivers/ajax.cpp
@@ -23,39 +23,42 @@
#include "speaker.h"
-ADDRESS_MAP_START(ajax_state::ajax_main_map)
- AM_RANGE(0x0000, 0x01c0) AM_READWRITE(ls138_f10_r, ls138_f10_w) /* bankswitch + sound command + FIRQ command */
- AM_RANGE(0x0800, 0x0807) AM_DEVREADWRITE("k051960", k051960_device, k051937_r, k051937_w) /* sprite control registers */
- AM_RANGE(0x0c00, 0x0fff) AM_DEVREADWRITE("k051960", k051960_device, k051960_r, k051960_w) /* sprite RAM 2128SL at J7 */
- AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")/* palette */
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("share1") /* shared RAM with the 6809 */
- AM_RANGE(0x4000, 0x5fff) AM_RAM /* RAM 6264L at K10 */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM N11 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ajax_state::ajax_sub_map)
- AM_RANGE(0x0000, 0x07ff) AM_DEVREADWRITE("k051316", k051316_device, read, write) /* 051316 zoom/rotation layer */
- AM_RANGE(0x0800, 0x080f) AM_DEVWRITE("k051316", k051316_device, ctrl_w) /* 051316 control registers */
- AM_RANGE(0x1000, 0x17ff) AM_DEVREAD("k051316", k051316_device, rom_r) /* 051316 (ROM test) */
- AM_RANGE(0x1800, 0x1800) AM_WRITE(bankswitch_2_w) /* bankswitch control */
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("share1") /* shared RAM with the 052001 */
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) /* video RAM + color RAM + video registers */
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank") /* banked ROM */
- AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION ("sub", 0x12000) /* ROM I16 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ajax_state::ajax_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM F6 */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM 2128SL at D16 */
- AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */
- AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) /* 007232 registers (chip 1) */
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 registers (chip 2) */
- AM_RANGE(0xb80c, 0xb80c) AM_WRITE(k007232_extvol_w) /* extra volume, goes to the 007232 w/ A11 */
+void ajax_state::ajax_main_map(address_map &map)
+{
+ map(0x0000, 0x01c0).rw(this, FUNC(ajax_state::ls138_f10_r), FUNC(ajax_state::ls138_f10_w)); /* bankswitch + sound command + FIRQ command */
+ map(0x0800, 0x0807).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); /* sprite control registers */
+ map(0x0c00, 0x0fff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); /* sprite RAM 2128SL at J7 */
+ map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");/* palette */
+ map(0x2000, 0x3fff).ram().share("share1"); /* shared RAM with the 6809 */
+ map(0x4000, 0x5fff).ram(); /* RAM 6264L at K10 */
+ map(0x6000, 0x7fff).bankr("mainbank"); /* banked ROM */
+ map(0x8000, 0xffff).rom(); /* ROM N11 */
+}
+
+void ajax_state::ajax_sub_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rw(m_k051316, FUNC(k051316_device::read), FUNC(k051316_device::write)); /* 051316 zoom/rotation layer */
+ map(0x0800, 0x080f).w(m_k051316, FUNC(k051316_device::ctrl_w)); /* 051316 control registers */
+ map(0x1000, 0x17ff).r(m_k051316, FUNC(k051316_device::rom_r)); /* 051316 (ROM test) */
+ map(0x1800, 0x1800).w(this, FUNC(ajax_state::bankswitch_2_w)); /* bankswitch control */
+ map(0x2000, 0x3fff).ram().share("share1"); /* shared RAM with the 052001 */
+ map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); /* video RAM + color RAM + video registers */
+ map(0x8000, 0x9fff).bankr("subbank"); /* banked ROM */
+ map(0xa000, 0xffff).rom().region("sub", 0x12000); /* ROM I16 */
+}
+
+void ajax_state::ajax_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM F6 */
+ map(0x8000, 0x87ff).ram(); /* RAM 2128SL at D16 */
+ map(0x9000, 0x9000).w(this, FUNC(ajax_state::sound_bank_w)); /* 007232 bankswitch */
+ map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 registers (chip 1) */
+ map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 registers (chip 2) */
+ map(0xb80c, 0xb80c).w(this, FUNC(ajax_state::k007232_extvol_w)); /* extra volume, goes to the 007232 w/ A11 */
/* selecting a different latch for the external port */
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( ajax )
diff --git a/src/mame/drivers/akaiax80.cpp b/src/mame/drivers/akaiax80.cpp
index 81286ef059b..6eba143c276 100644
--- a/src/mame/drivers/akaiax80.cpp
+++ b/src/mame/drivers/akaiax80.cpp
@@ -70,24 +70,25 @@ void ax80_state::machine_reset()
{
}
-ADDRESS_MAP_START(ax80_state::ax80_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0) // internal ROM
- AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT0_TAG, pit8253_device, read, write) // IC20
- AM_RANGE(0x1010, 0x1013) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT1_TAG, pit8253_device, read, write) // IC21
- AM_RANGE(0x1020, 0x1023) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT2_TAG, pit8253_device, read, write) // IC22
- AM_RANGE(0x1030, 0x1033) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT3_TAG, pit8253_device, read, write) // IC23
- AM_RANGE(0x1040, 0x1043) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT4_TAG, pit8253_device, read, write) // IC24
- AM_RANGE(0x1050, 0x1053) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT5_TAG, pit8253_device, read, write) // IC25
- AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x000e) AM_DEVREADWRITE("kdc", i8279_device, data_r, data_w) // IC11
- AM_RANGE(0x1061, 0x1061) AM_MIRROR(0x000e) AM_DEVREADWRITE("kdc", i8279_device, status_r, cmd_w) // IC11
- AM_RANGE(0x1070, 0x1073) AM_MIRROR(0x000c) AM_DEVREADWRITE(PPI1_TAG, i8255_device, read, write) // IC10
+void ax80_state::ax80_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("maincpu", 0); // internal ROM
+ map(0x1000, 0x1003).mirror(0x000c).rw(PIT0_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC20
+ map(0x1010, 0x1013).mirror(0x000c).rw(PIT1_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC21
+ map(0x1020, 0x1023).mirror(0x000c).rw(PIT2_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC22
+ map(0x1030, 0x1033).mirror(0x000c).rw(PIT3_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC23
+ map(0x1040, 0x1043).mirror(0x000c).rw(PIT4_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC24
+ map(0x1050, 0x1053).mirror(0x000c).rw(PIT5_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC25
+ map(0x1060, 0x1060).mirror(0x000e).rw("kdc", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); // IC11
+ map(0x1061, 0x1061).mirror(0x000e).rw("kdc", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); // IC11
+ map(0x1070, 0x1073).mirror(0x000c).rw(PPI1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); // IC10
//AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0dfe) AM_DEVREADWRITE(PPI0_TAG, i8255_device, read, write) // IC9 - A9 connects to A1-pin
//AM_RANGE(0x2200, 0x2201) AM_MIRROR(0x0dfe) AM_DEVREADWRITE(PPI0_TAG, i8255_device, read, write) // IC9 - A9 connects to A1-pin
//AM_RANGE(0x3000, 0x3fff) // steers audio to the various voice channels
- AM_RANGE(0x4000, 0x5fff) AM_MIRROR(0x2000) AM_ROM AM_REGION("maincpu", 0x1000) // external program EPROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM
-ADDRESS_MAP_END
+ map(0x4000, 0x5fff).mirror(0x2000).rom().region("maincpu", 0x1000); // external program EPROM
+ map(0x8000, 0x87ff).mirror(0x3800).ram();
+ map(0xc000, 0xc7ff).mirror(0x3800).ram();
+}
MACHINE_CONFIG_START(ax80_state::ax80)
MCFG_CPU_ADD("maincpu", UPD7810, XTAL(12'000'000))
diff --git a/src/mame/drivers/albazc.cpp b/src/mame/drivers/albazc.cpp
index a14e5560015..c4eaf90ae97 100644
--- a/src/mame/drivers/albazc.cpp
+++ b/src/mame/drivers/albazc.cpp
@@ -181,23 +181,24 @@ WRITE8_MEMBER(albazc_state::albazc_vregs_w)
/* main cpu */
-ADDRESS_MAP_START(albazc_state::hanaroku_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xa200, 0xa2ff) AM_WRITENOP // ??? written once during P.O.S.T.
- AM_RANGE(0xa300, 0xa304) AM_WRITE(albazc_vregs_w) // ???
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // ??? always 0x40
- AM_RANGE(0xc000, 0xc3ff) AM_RAM // main ram
- AM_RANGE(0xc400, 0xc4ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE(hanaroku_out_0_w)
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE(hanaroku_out_1_w)
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW3") AM_WRITE(hanaroku_out_2_w)
-ADDRESS_MAP_END
+void albazc_state::hanaroku_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("spriteram1");
+ map(0x9000, 0x97ff).ram().share("spriteram2");
+ map(0xa000, 0xa1ff).ram().share("spriteram3");
+ map(0xa200, 0xa2ff).nopw(); // ??? written once during P.O.S.T.
+ map(0xa300, 0xa304).w(this, FUNC(albazc_state::albazc_vregs_w)); // ???
+ map(0xb000, 0xb000).nopw(); // ??? always 0x40
+ map(0xc000, 0xc3ff).ram(); // main ram
+ map(0xc400, 0xc4ff).ram().share("nvram");
+ map(0xd000, 0xd000).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xe000, 0xe000).portr("IN0").w(this, FUNC(albazc_state::hanaroku_out_0_w));
+ map(0xe001, 0xe001).portr("IN1");
+ map(0xe002, 0xe002).portr("IN2").w(this, FUNC(albazc_state::hanaroku_out_1_w));
+ map(0xe004, 0xe004).portr("DSW3").w(this, FUNC(albazc_state::hanaroku_out_2_w));
+}
static INPUT_PORTS_START( hanaroku )
diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp
index 32d4c811c42..10e443d1618 100644
--- a/src/mame/drivers/albazg.cpp
+++ b/src/mame/drivers/albazg.cpp
@@ -216,28 +216,30 @@ WRITE8_MEMBER(albazg_state::yumefuda_output_w)
/***************************************************************************************/
-ADDRESS_MAP_START(albazg_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa7fc, 0xa7fc) AM_WRITE(prot_lock_w)
- AM_RANGE(0xa7ff, 0xa7ff) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xaf80, 0xafff) AM_READWRITE(custom_ram_r, custom_ram_w) AM_SHARE("cus_ram")
- AM_RANGE(0xb000, 0xb07f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xb080, 0xb0ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(yumefuda_vram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(yumefuda_cram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(albazg_state::port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void albazg_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa7fc, 0xa7fc).w(this, FUNC(albazg_state::prot_lock_w));
+ map(0xa7ff, 0xa7ff).portw("EEPROMOUT");
+ map(0xaf80, 0xafff).rw(this, FUNC(albazg_state::custom_ram_r), FUNC(albazg_state::custom_ram_w)).share("cus_ram");
+ map(0xb000, 0xb07f).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xb080, 0xb0ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xc000, 0xc3ff).ram().w(this, FUNC(albazg_state::yumefuda_vram_w)).share("videoram");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(albazg_state::yumefuda_cram_w)).share("colorram");
+ map(0xe000, 0xffff).ram();
+}
+
+void albazg_state::port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x01, 0x01).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x80, 0x83).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
/***************************************************************************************/
diff --git a/src/mame/drivers/aleck64.cpp b/src/mame/drivers/aleck64.cpp
index 153eb9f6c81..0e1332300fe 100644
--- a/src/mame/drivers/aleck64.cpp
+++ b/src/mame/drivers/aleck64.cpp
@@ -315,28 +315,29 @@ READ32_MEMBER(aleck64_state::aleck_dips_r)
4MB @ 0xd0800000 - 0xd0bfffff doncdoon, hipai, kurufev, twrshaft, srmvs : unused
*/
-ADDRESS_MAP_START(aleck64_state::n64_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM /*AM_MIRROR(0xc0000000)*/ AM_SHARE("rdram") // RDRAM
-
- AM_RANGE(0x03f00000, 0x03f00027) AM_DEVREADWRITE("rcp", n64_periphs, rdram_reg_r, rdram_reg_w)
- AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") // RSP DMEM
- AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") // RSP IMEM
- AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rcp", n64_periphs, sp_reg_r, sp_reg_w) // RSP
- AM_RANGE(0x04100000, 0x041fffff) AM_DEVREADWRITE("rcp", n64_periphs, dp_reg_r, dp_reg_w) // RDP
- AM_RANGE(0x04300000, 0x043fffff) AM_DEVREADWRITE("rcp", n64_periphs, mi_reg_r, mi_reg_w) // MIPS Interface
- AM_RANGE(0x04400000, 0x044fffff) AM_DEVREADWRITE("rcp", n64_periphs, vi_reg_r, vi_reg_w) // Video Interface
- AM_RANGE(0x04500000, 0x045fffff) AM_DEVREADWRITE("rcp", n64_periphs, ai_reg_r, ai_reg_w) // Audio Interface
- AM_RANGE(0x04600000, 0x046fffff) AM_DEVREADWRITE("rcp", n64_periphs, pi_reg_r, pi_reg_w) // Peripheral Interface
- AM_RANGE(0x04700000, 0x047fffff) AM_DEVREADWRITE("rcp", n64_periphs, ri_reg_r, ri_reg_w) // RDRAM Interface
- AM_RANGE(0x04800000, 0x048fffff) AM_DEVREADWRITE("rcp", n64_periphs, si_reg_r, si_reg_w) // Serial Interface
- AM_RANGE(0x10000000, 0x13ffffff) AM_ROM AM_REGION("user2", 0) // Cartridge
- AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM
- AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w)
-
- AM_RANGE(0xc0000000, 0xc07fffff) AM_RAM // SDRAM, Aleck 64 specific
-
- AM_RANGE(0xc0800000, 0xc0800fff) AM_READWRITE(aleck_dips_r,aleck_dips_w)
-ADDRESS_MAP_END
+void aleck64_state::n64_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram() /*.mirror(0xc0000000)*/ .share("rdram"); // RDRAM
+
+ map(0x03f00000, 0x03f00027).rw("rcp", FUNC(n64_periphs::rdram_reg_r), FUNC(n64_periphs::rdram_reg_w));
+ map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); // RSP DMEM
+ map(0x04001000, 0x04001fff).ram().share("rsp_imem"); // RSP IMEM
+ map(0x04040000, 0x040fffff).rw("rcp", FUNC(n64_periphs::sp_reg_r), FUNC(n64_periphs::sp_reg_w)); // RSP
+ map(0x04100000, 0x041fffff).rw("rcp", FUNC(n64_periphs::dp_reg_r), FUNC(n64_periphs::dp_reg_w)); // RDP
+ map(0x04300000, 0x043fffff).rw("rcp", FUNC(n64_periphs::mi_reg_r), FUNC(n64_periphs::mi_reg_w)); // MIPS Interface
+ map(0x04400000, 0x044fffff).rw("rcp", FUNC(n64_periphs::vi_reg_r), FUNC(n64_periphs::vi_reg_w)); // Video Interface
+ map(0x04500000, 0x045fffff).rw("rcp", FUNC(n64_periphs::ai_reg_r), FUNC(n64_periphs::ai_reg_w)); // Audio Interface
+ map(0x04600000, 0x046fffff).rw("rcp", FUNC(n64_periphs::pi_reg_r), FUNC(n64_periphs::pi_reg_w)); // Peripheral Interface
+ map(0x04700000, 0x047fffff).rw("rcp", FUNC(n64_periphs::ri_reg_r), FUNC(n64_periphs::ri_reg_w)); // RDRAM Interface
+ map(0x04800000, 0x048fffff).rw("rcp", FUNC(n64_periphs::si_reg_r), FUNC(n64_periphs::si_reg_w)); // Serial Interface
+ map(0x10000000, 0x13ffffff).rom().region("user2", 0); // Cartridge
+ map(0x1fc00000, 0x1fc007bf).rom().region("user1", 0); // PIF ROM
+ map(0x1fc007c0, 0x1fc007ff).rw("rcp", FUNC(n64_periphs::pif_ram_r), FUNC(n64_periphs::pif_ram_w));
+
+ map(0xc0000000, 0xc07fffff).ram(); // SDRAM, Aleck 64 specific
+
+ map(0xc0800000, 0xc0800fff).rw(this, FUNC(aleck64_state::aleck_dips_r), FUNC(aleck64_state::aleck_dips_w));
+}
/*
E90 protection handlers
@@ -369,19 +370,21 @@ WRITE16_MEMBER(aleck64_state::e90_prot_w)
}
}
-ADDRESS_MAP_START(aleck64_state::e90_map)
- AM_IMPORT_FROM( n64_map )
- AM_RANGE(0xd0000000, 0xd0000fff) AM_RAM AM_SHARE("e90vram")// x/y offsets
- AM_RANGE(0xd0010000, 0xd0010fff) AM_RAM AM_SHARE("e90pal")// RGB555 palette
- AM_RANGE(0xd0030000, 0xd003001f) AM_READWRITE16(e90_prot_r, e90_prot_w,0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aleck64_state::rsp_map)
- AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("rsp_dmem")
- AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("rsp_imem")
- AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem")
- AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem")
-ADDRESS_MAP_END
+void aleck64_state::e90_map(address_map &map)
+{
+ n64_map(map);
+ map(0xd0000000, 0xd0000fff).ram().share("e90vram");// x/y offsets
+ map(0xd0010000, 0xd0010fff).ram().share("e90pal");// RGB555 palette
+ map(0xd0030000, 0xd003001f).rw(this, FUNC(aleck64_state::e90_prot_r), FUNC(aleck64_state::e90_prot_w));
+}
+
+void aleck64_state::rsp_map(address_map &map)
+{
+ map(0x00000000, 0x00000fff).ram().share("rsp_dmem");
+ map(0x00001000, 0x00001fff).ram().share("rsp_imem");
+ map(0x04000000, 0x04000fff).ram().share("rsp_dmem");
+ map(0x04001000, 0x04001fff).ram().share("rsp_imem");
+}
static INPUT_PORTS_START( aleck64 )
PORT_START("input")
diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp
index 515ad47d800..0b443f0085f 100644
--- a/src/mame/drivers/alesis.cpp
+++ b/src/mame/drivers/alesis.cpp
@@ -118,44 +118,49 @@ WRITE8_MEMBER( alesis_state::mmt8_p3_w )
m_cassette->output(data & 0x10 ? -1.0 : +1.0);
}
-ADDRESS_MAP_START(alesis_state::hr16_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alesis_state::hr16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0000) AM_READ(kb_r)
- AM_RANGE(0x0002, 0x0002) AM_DEVWRITE("dm3ag", alesis_dm3ag_device, write)
- AM_RANGE(0x0004, 0x0004) AM_WRITE(led_w)
- AM_RANGE(0x0006, 0x0007) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
- AM_RANGE(0x0008, 0x0008) AM_WRITE(kb_matrix_w)
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alesis_state::sr16_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alesis_state::sr16_io)
+void alesis_state::hr16_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).mirror(0x8000).rom();
+}
+
+void alesis_state::hr16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0000).r(this, FUNC(alesis_state::kb_r));
+ map(0x0002, 0x0002).w("dm3ag", FUNC(alesis_dm3ag_device::write));
+ map(0x0004, 0x0004).w(this, FUNC(alesis_state::led_w));
+ map(0x0006, 0x0007).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write));
+ map(0x0008, 0x0008).w(this, FUNC(alesis_state::kb_matrix_w));
+ map(0x8000, 0xffff).ram().share("nvram"); // 32Kx8 SRAM, (battery-backed)
+}
+
+void alesis_state::sr16_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rom();
+}
+
+void alesis_state::sr16_io(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0000) AM_MIRROR(0xff) AM_DEVWRITE("dm3ag", alesis_dm3ag_device, write)
- AM_RANGE(0x0200, 0x0200) AM_MIRROR(0xff) AM_WRITE(sr16_lcd_w)
- AM_RANGE(0x0300, 0x0300) AM_MIRROR(0xff) AM_WRITE(kb_matrix_w)
- AM_RANGE(0x0400, 0x0400) AM_MIRROR(0xff) AM_READ(kb_r)
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alesis_state::mmt8_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("nvram") // 2x32Kx8 SRAM, (battery-backed)
- AM_RANGE(0xff02, 0xff02) AM_WRITE(track_led_w)
- AM_RANGE(0xff04, 0xff04) AM_READWRITE(mmt8_led_r, mmt8_led_w)
- AM_RANGE(0xff06, 0xff06) AM_WRITE(kb_matrix_w)
- AM_RANGE(0xff08, 0xff09) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
- AM_RANGE(0xff0e, 0xff0e) AM_READNOP
-ADDRESS_MAP_END
+ map(0x0000, 0x0000).mirror(0xff).w("dm3ag", FUNC(alesis_dm3ag_device::write));
+ map(0x0200, 0x0200).mirror(0xff).w(this, FUNC(alesis_state::sr16_lcd_w));
+ map(0x0300, 0x0300).mirror(0xff).w(this, FUNC(alesis_state::kb_matrix_w));
+ map(0x0400, 0x0400).mirror(0xff).r(this, FUNC(alesis_state::kb_r));
+ map(0x8000, 0xffff).ram().share("nvram"); // 32Kx8 SRAM, (battery-backed)
+}
+
+void alesis_state::mmt8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).ram().share("nvram"); // 2x32Kx8 SRAM, (battery-backed)
+ map(0xff02, 0xff02).w(this, FUNC(alesis_state::track_led_w));
+ map(0xff04, 0xff04).rw(this, FUNC(alesis_state::mmt8_led_r), FUNC(alesis_state::mmt8_led_w));
+ map(0xff06, 0xff06).w(this, FUNC(alesis_state::kb_matrix_w));
+ map(0xff08, 0xff09).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write));
+ map(0xff0e, 0xff0e).nopr();
+}
/* Input ports */
static INPUT_PORTS_START( hr16 )
diff --git a/src/mame/drivers/alesis_qs.cpp b/src/mame/drivers/alesis_qs.cpp
index 8a273db943d..527b33093de 100644
--- a/src/mame/drivers/alesis_qs.cpp
+++ b/src/mame/drivers/alesis_qs.cpp
@@ -43,10 +43,11 @@ static INPUT_PORTS_START( qs7 )
// PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("?") PORT_CODE(KEYCODE_)
INPUT_PORTS_END
-ADDRESS_MAP_START(qs_state::qs7_prog_map)
+void qs_state::qs7_prog_map(address_map &map)
+{
//ADDRESS_MAP_GLOBAL_MASK(0x3ffff)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x00000, 0x3ffff).rom();
+}
MACHINE_CONFIG_START(qs_state::qs7)
/* basic machine hardware */
diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp
index 0676d6992cf..985b7e061c5 100644
--- a/src/mame/drivers/alg.cpp
+++ b/src/mame/drivers/alg.cpp
@@ -175,42 +175,47 @@ CUSTOM_INPUT_MEMBER(alg_state::lightgun_holster_r)
*
*************************************/
-ADDRESS_MAP_START(alg_state::overlay_512kb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alg_state::a500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alg_state::main_map_r1)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
- AM_RANGE(0xf54000, 0xf55fff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alg_state::main_map_r2)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0xf00000, 0xf3ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
- AM_RANGE(0xf7c000, 0xf7dfff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alg_state::main_map_picmatic)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
- AM_RANGE(0xf40000, 0xf41fff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void alg_state::overlay_512kb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
+
+void alg_state::a500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(alg_state::cia_r), FUNC(alg_state::cia_w));
+ map(0xc00000, 0xd7ffff).rw(this, FUNC(alg_state::custom_chip_r), FUNC(alg_state::custom_chip_w));
+ map(0xd80000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(alg_state::custom_chip_r), FUNC(alg_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(alg_state::custom_chip_r), FUNC(alg_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(alg_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
+
+void alg_state::main_map_r1(address_map &map)
+{
+ a500_mem(map);
+ map(0xf00000, 0xf1ffff).rom().region("user2", 0); /* Custom ROM */
+ map(0xf54000, 0xf55fff).ram().share("nvram");
+}
+
+void alg_state::main_map_r2(address_map &map)
+{
+ a500_mem(map);
+ map(0xf00000, 0xf3ffff).rom().region("user2", 0); /* Custom ROM */
+ map(0xf7c000, 0xf7dfff).ram().share("nvram");
+}
+
+void alg_state::main_map_picmatic(address_map &map)
+{
+ a500_mem(map);
+ map(0xf00000, 0xf1ffff).rom().region("user2", 0); /* Custom ROM */
+ map(0xf40000, 0xf41fff).ram().share("nvram");
+}
diff --git a/src/mame/drivers/alien.cpp b/src/mame/drivers/alien.cpp
index 2e669dcb2c4..310f8bb6791 100644
--- a/src/mame/drivers/alien.cpp
+++ b/src/mame/drivers/alien.cpp
@@ -68,13 +68,14 @@ READ64_MEMBER( alien_state::test_r )
return machine().rand();
}
-ADDRESS_MAP_START(alien_state::alien_map)
- AM_RANGE(0x00000000, 0x0003ffff) AM_ROM
- AM_RANGE(0x08000000, 0x08000007) AM_READ(test_r) //hangs if zero
- AM_RANGE(0x0cfe0000, 0x0cffffff) AM_RAM
- AM_RANGE(0x10000000, 0x13ffffff) AM_RAM
- AM_RANGE(0x18000000, 0x1800000f) AM_READ(test_r) AM_WRITENOP
-ADDRESS_MAP_END
+void alien_state::alien_map(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).rom();
+ map(0x08000000, 0x08000007).r(this, FUNC(alien_state::test_r)); //hangs if zero
+ map(0x0cfe0000, 0x0cffffff).ram();
+ map(0x10000000, 0x13ffffff).ram();
+ map(0x18000000, 0x1800000f).r(this, FUNC(alien_state::test_r)).nopw();
+}
diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp
index 64f9d1928f7..57c96356273 100644
--- a/src/mame/drivers/aliens.cpp
+++ b/src/mame/drivers/aliens.cpp
@@ -85,33 +85,36 @@ WRITE8_MEMBER(aliens_state::k052109_051960_w)
m_k051960->k051960_w(space, offset - 0x3c00, data);
}
-ADDRESS_MAP_START(aliens_state::aliens_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
- AM_RANGE(0x0400, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") /* banked ROM */
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
- AM_RANGE(0x5f80, 0x5f80) AM_READ_PORT("DSW3")
- AM_RANGE(0x5f81, 0x5f81) AM_READ_PORT("P1")
- AM_RANGE(0x5f82, 0x5f82) AM_READ_PORT("P2")
- AM_RANGE(0x5f83, 0x5f83) AM_READ_PORT("DSW2")
- AM_RANGE(0x5f84, 0x5f84) AM_READ_PORT("DSW1")
- AM_RANGE(0x5f88, 0x5f88) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(aliens_coin_counter_w) /* coin counters */
- AM_RANGE(0x5f8c, 0x5f8c) AM_WRITE(aliens_sh_irqtrigger_w) /* cause interrupt on audio CPU */
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x28000) /* ROM e24_j02.bin */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aliens_state::bank0000_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aliens_state::aliens_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM g04_b03.bin */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
-ADDRESS_MAP_END
+void aliens_state::aliens_map(address_map &map)
+{
+ map(0x0000, 0x03ff).m(m_bank0000, FUNC(address_map_bank_device::amap8));
+ map(0x0400, 0x1fff).ram();
+ map(0x2000, 0x3fff).bankr("rombank"); /* banked ROM */
+ map(0x4000, 0x7fff).rw(this, FUNC(aliens_state::k052109_051960_r), FUNC(aliens_state::k052109_051960_w));
+ map(0x5f80, 0x5f80).portr("DSW3");
+ map(0x5f81, 0x5f81).portr("P1");
+ map(0x5f82, 0x5f82).portr("P2");
+ map(0x5f83, 0x5f83).portr("DSW2");
+ map(0x5f84, 0x5f84).portr("DSW1");
+ map(0x5f88, 0x5f88).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(aliens_state::aliens_coin_counter_w)); /* coin counters */
+ map(0x5f8c, 0x5f8c).w(this, FUNC(aliens_state::aliens_sh_irqtrigger_w)); /* cause interrupt on audio CPU */
+ map(0x8000, 0xffff).rom().region("maincpu", 0x28000); /* ROM e24_j02.bin */
+}
+
+void aliens_state::bank0000_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void aliens_state::aliens_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM g04_b03.bin */
+ map(0x8000, 0x87ff).ram(); /* RAM */
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/alinvade.cpp b/src/mame/drivers/alinvade.cpp
index 490e70d7914..bc08e181329 100644
--- a/src/mame/drivers/alinvade.cpp
+++ b/src/mame/drivers/alinvade.cpp
@@ -102,25 +102,26 @@ WRITE8_MEMBER(alinvade_state::irqmask_w)
m_irqff = data;
}
-ADDRESS_MAP_START(alinvade_state::alinvade_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0400, 0x0bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0dff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_w)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("COIN")
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW")
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2")
- AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3")
- AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN4")
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP //??
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0xff0) AM_ROM AM_REGION("proms",0)
- AM_RANGE(0xe000, 0xe3ff) AM_ROM
- AM_RANGE(0xe400, 0xe400) AM_WRITE(sounden_w)
- AM_RANGE(0xe800, 0xe800) AM_READWRITE(irqmask_r,irqmask_w) //??
- AM_RANGE(0xec00, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void alinvade_state::alinvade_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0400, 0x0bff).ram().share("videoram");
+ map(0x0c00, 0x0dff).ram();
+ map(0x2000, 0x2000).w(this, FUNC(alinvade_state::sound_w));
+ map(0x4000, 0x4000).portr("COIN");
+ map(0x6000, 0x6000).portr("DSW");
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8001, 0x8001).portr("IN1");
+ map(0x8002, 0x8002).portr("IN2");
+ map(0x8003, 0x8003).portr("IN3");
+ map(0x8004, 0x8004).portr("IN4");
+ map(0xa000, 0xa000).nopw(); //??
+ map(0xc000, 0xc00f).mirror(0xff0).rom().region("proms", 0);
+ map(0xe000, 0xe3ff).rom();
+ map(0xe400, 0xe400).w(this, FUNC(alinvade_state::sounden_w));
+ map(0xe800, 0xe800).rw(this, FUNC(alinvade_state::irqmask_r), FUNC(alinvade_state::irqmask_w)); //??
+ map(0xec00, 0xffff).rom();
+}
static INPUT_PORTS_START( alinvade )
diff --git a/src/mame/drivers/allied.cpp b/src/mame/drivers/allied.cpp
index e4a7f6c3a8a..836c882bde7 100644
--- a/src/mame/drivers/allied.cpp
+++ b/src/mame/drivers/allied.cpp
@@ -110,18 +110,19 @@ private:
};
-ADDRESS_MAP_START(allied_state::allied_map)
- AM_RANGE(0x0000, 0x003f) AM_RAM // ic6
- AM_RANGE(0x0044, 0x0047) AM_DEVREADWRITE("ic2", pia6821_device, read, write)
- AM_RANGE(0x0048, 0x004b) AM_DEVREADWRITE("ic1", pia6821_device, read, write)
- AM_RANGE(0x0050, 0x0053) AM_DEVREADWRITE("ic7", pia6821_device, read, write)
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ic4", pia6821_device, read, write)
- AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE("ic5", mos6530_device, read, write)
- AM_RANGE(0x0840, 0x084f) AM_DEVREADWRITE("ic6", mos6530_device, read, write)
- AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE("ic8", pia6821_device, read, write)
- AM_RANGE(0x0100, 0x013f) AM_RAM // ic5
- AM_RANGE(0x1400, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void allied_state::allied_map(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // ic6
+ map(0x0044, 0x0047).rw(m_ic2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0048, 0x004b).rw(m_ic1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0050, 0x0053).rw(m_ic7, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0060, 0x0063).rw(m_ic4, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0080, 0x008f).rw(m_ic5, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
+ map(0x0840, 0x084f).rw(m_ic6, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
+ map(0x00c0, 0x00c3).rw(m_ic8, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0100, 0x013f).ram(); // ic5
+ map(0x1400, 0x1fff).rom();
+}
static INPUT_PORTS_START( allied )
PORT_START("TEST")
diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp
index 5fce07c3f81..d52fba92347 100644
--- a/src/mame/drivers/alpha68k.cpp
+++ b/src/mame/drivers/alpha68k.cpp
@@ -644,83 +644,88 @@ READ16_MEMBER(alpha68k_state::alpha_V_trigger_r)
/******************************************************************************/
-ADDRESS_MAP_START(alpha68k_state::kyros_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM // main program
- AM_RANGE(0x020000, 0x020fff) AM_RAM AM_SHARE("shared_ram") // work RAM
- AM_RANGE(0x040000, 0x041fff) AM_RAM AM_SHARE("spriteram") // sprite RAM
- AM_RANGE(0x060000, 0x060001) AM_RAM AM_SHARE("videoram") // MSB: watchdog, LSB: BGC
- AM_RANGE(0x080000, 0x0801ff) AM_READWRITE(kyros_alpha_trigger_r, alpha_microcontroller_w)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
- AM_RANGE(0x0e0000, 0x0e0001) AM_READWRITE(kyros_dip_r, kyros_sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::alpha68k_I_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // main program
- AM_RANGE(0x080000, 0x083fff) AM_RAM // work RAM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // video RAM
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN3") AM_WRITENOP // LSB: DSW0, MSB: watchdog(?)
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("IN4") // LSB: DSW1
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") // joy1, joy2
- AM_RANGE(0x340000, 0x340001) AM_READ_PORT("IN1") // coin, start, service
- AM_RANGE(0x380000, 0x380001) AM_READ_PORT("IN2") AM_WRITE(paddlema_soundlatch_w) // LSB: sound latch write and RST38 trigger, joy3, joy4
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::alpha68k_II_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x080000, 0x080001) AM_READ(control_1_r) /* Joysticks */
- AM_RANGE(0x080000, 0x080001) AM_WRITE(alpha68k_II_sound_w)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ(control_2_r) /* CN1 & Dip 1 */
- AM_RANGE(0x0c0000, 0x0c00ff) AM_WRITE(alpha68k_II_video_bank_w)
- AM_RANGE(0x0c8000, 0x0c8001) AM_READ(control_3_r) /* Bottom of CN2 */
- AM_RANGE(0x0d0000, 0x0d0001) AM_READ(control_4_r) /* Top of CN1 & CN2 */
- AM_RANGE(0x0d8000, 0x0d8001) AM_READNOP /* IRQ ack? */
- AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* IRQ ack? */
- AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* watchdog? */
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(alpha68k_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300000, 0x3001ff) AM_READWRITE(alpha_II_trigger_r, alpha_microcontroller_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x83ffff) AM_ROMBANK("bank8")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::alpha68k_V_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x080000, 0x080001) AM_READWRITE(control_1_r, alpha68k_V_sound_w) /* Joysticks */
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ(control_2_V_r) /* Dip 2 */
- AM_RANGE(0x0c0000, 0x0c00ff) AM_WRITE(alpha68k_V_video_control_w)
- AM_RANGE(0x0d8000, 0x0d8001) AM_READNOP /* IRQ ack? */
- AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* IRQ ack? */
- AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* watchdog? */
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(alpha68k_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300000, 0x303fff) AM_READ(alpha_V_trigger_r)
- AM_RANGE(0x300000, 0x3001ff) AM_WRITE(alpha_microcontroller_w)
- AM_RANGE(0x303e00, 0x303fff) AM_WRITE(alpha_microcontroller_w) /* Gang Wars mirror */
- AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x83ffff) AM_ROMBANK("bank8")
-ADDRESS_MAP_END
+void alpha68k_state::kyros_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom(); // main program
+ map(0x020000, 0x020fff).ram().share("shared_ram"); // work RAM
+ map(0x040000, 0x041fff).ram().share("spriteram"); // sprite RAM
+ map(0x060000, 0x060001).ram().share("videoram"); // MSB: watchdog, LSB: BGC
+ map(0x080000, 0x0801ff).rw(this, FUNC(alpha68k_state::kyros_alpha_trigger_r), FUNC(alpha68k_state::alpha_microcontroller_w));
+ map(0x0c0000, 0x0c0001).portr("IN0");
+ map(0x0e0000, 0x0e0001).rw(this, FUNC(alpha68k_state::kyros_dip_r), FUNC(alpha68k_state::kyros_sound_w));
+}
+
+void alpha68k_state::alpha68k_I_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // main program
+ map(0x080000, 0x083fff).ram(); // work RAM
+ map(0x100000, 0x103fff).ram().share("spriteram"); // video RAM
+ map(0x180000, 0x180001).portr("IN3").nopw(); // LSB: DSW0, MSB: watchdog(?)
+ map(0x180008, 0x180009).portr("IN4"); // LSB: DSW1
+ map(0x300000, 0x300001).portr("IN0"); // joy1, joy2
+ map(0x340000, 0x340001).portr("IN1"); // coin, start, service
+ map(0x380000, 0x380001).portr("IN2").w(this, FUNC(alpha68k_state::paddlema_soundlatch_w)); // LSB: sound latch write and RST38 trigger, joy3, joy4
+}
+
+void alpha68k_state::alpha68k_II_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x040fff).ram().share("shared_ram");
+ map(0x080000, 0x080001).r(this, FUNC(alpha68k_state::control_1_r)); /* Joysticks */
+ map(0x080000, 0x080001).w(this, FUNC(alpha68k_state::alpha68k_II_sound_w));
+ map(0x0c0000, 0x0c0001).r(this, FUNC(alpha68k_state::control_2_r)); /* CN1 & Dip 1 */
+ map(0x0c0000, 0x0c00ff).w(this, FUNC(alpha68k_state::alpha68k_II_video_bank_w));
+ map(0x0c8000, 0x0c8001).r(this, FUNC(alpha68k_state::control_3_r)); /* Bottom of CN2 */
+ map(0x0d0000, 0x0d0001).r(this, FUNC(alpha68k_state::control_4_r)); /* Top of CN1 & CN2 */
+ map(0x0d8000, 0x0d8001).nopr(); /* IRQ ack? */
+ map(0x0e0000, 0x0e0001).nopr(); /* IRQ ack? */
+ map(0x0e8000, 0x0e8001).nopr(); /* watchdog? */
+ map(0x100000, 0x100fff).ram().w(this, FUNC(alpha68k_state::alpha68k_videoram_w)).share("videoram");
+ map(0x200000, 0x207fff).ram().share("spriteram");
+ map(0x300000, 0x3001ff).rw(this, FUNC(alpha68k_state::alpha_II_trigger_r), FUNC(alpha68k_state::alpha_microcontroller_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x83ffff).bankr("bank8");
+}
+
+void alpha68k_state::alpha68k_V_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram().share("shared_ram");
+ map(0x080000, 0x080001).rw(this, FUNC(alpha68k_state::control_1_r), FUNC(alpha68k_state::alpha68k_V_sound_w)); /* Joysticks */
+ map(0x0c0000, 0x0c0001).r(this, FUNC(alpha68k_state::control_2_V_r)); /* Dip 2 */
+ map(0x0c0000, 0x0c00ff).w(this, FUNC(alpha68k_state::alpha68k_V_video_control_w));
+ map(0x0d8000, 0x0d8001).nopr(); /* IRQ ack? */
+ map(0x0e0000, 0x0e0001).nopr(); /* IRQ ack? */
+ map(0x0e8000, 0x0e8001).nopr(); /* watchdog? */
+ map(0x100000, 0x100fff).ram().w(this, FUNC(alpha68k_state::alpha68k_videoram_w)).share("videoram");
+ map(0x200000, 0x207fff).ram().share("spriteram");
+ map(0x300000, 0x303fff).r(this, FUNC(alpha68k_state::alpha_V_trigger_r));
+ map(0x300000, 0x3001ff).w(this, FUNC(alpha68k_state::alpha_microcontroller_w));
+ map(0x303e00, 0x303fff).w(this, FUNC(alpha68k_state::alpha_microcontroller_w)); /* Gang Wars mirror */
+ map(0x400000, 0x401fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x83ffff).bankr("bank8");
+}
READ16_MEMBER(alpha68k_state::sound_cpu_r){ return 1; }
-ADDRESS_MAP_START(alpha68k_state::tnextspc_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x070000, 0x073fff) AM_RAM
- AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0d0000, 0x0d0001) AM_WRITENOP // unknown write port (0)
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("P1")
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("P2")
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0e0006, 0x0e0007) AM_WRITENOP // unknown write port (0)
- AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x0e000e, 0x0e000f) AM_WRITENOP // unknown write port (0)
- AM_RANGE(0x0e0018, 0x0e0019) AM_READ(sound_cpu_r)
- AM_RANGE(0x0f0000, 0x0f0001) AM_WRITE(tnextspc_unknown_w)
- AM_RANGE(0x0f0002, 0x0f0005) AM_WRITE(tnextspc_coin_counters_w)
- AM_RANGE(0x0f0008, 0x0f0009) AM_WRITE(tnextspc_soundlatch_w)
-ADDRESS_MAP_END
+void alpha68k_state::tnextspc_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x070000, 0x073fff).ram();
+ map(0x0a0000, 0x0a3fff).ram().share("spriteram");
+ map(0x0d0000, 0x0d0001).nopw(); // unknown write port (0)
+ map(0x0e0000, 0x0e0001).portr("P1");
+ map(0x0e0002, 0x0e0003).portr("P2");
+ map(0x0e0004, 0x0e0005).portr("SYSTEM");
+ map(0x0e0006, 0x0e0007).nopw(); // unknown write port (0)
+ map(0x0e0008, 0x0e0009).portr("DSW1");
+ map(0x0e000a, 0x0e000b).portr("DSW2");
+ map(0x0e000e, 0x0e000f).nopw(); // unknown write port (0)
+ map(0x0e0018, 0x0e0019).r(this, FUNC(alpha68k_state::sound_cpu_r));
+ map(0x0f0000, 0x0f0001).w(this, FUNC(alpha68k_state::tnextspc_unknown_w));
+ map(0x0f0002, 0x0f0005).w(this, FUNC(alpha68k_state::tnextspc_coin_counters_w));
+ map(0x0f0008, 0x0f0009).w(this, FUNC(alpha68k_state::tnextspc_soundlatch_w));
+}
/******************************************************************************/
@@ -729,19 +734,21 @@ WRITE8_MEMBER(alpha68k_state::sound_bank_w)
membank("bank7")->set_entry(data);
}
-ADDRESS_MAP_START(alpha68k_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank7")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::kyros_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe006, 0xe00e) AM_WRITENOP // soundboard I/O's, ignored
+void alpha68k_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xffff).bankr("bank7");
+}
+
+void alpha68k_state::kyros_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe002, 0xe002).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w));
+ map(0xe004, 0xe004).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe006, 0xe00e).nopw(); // soundboard I/O's, ignored
/* reference only
AM_RANGE(0xe006, 0xe006) AM_WRITENOP // NMI: diminishing saw-tooth
AM_RANGE(0xe008, 0xe008) AM_WRITENOP // NMI: 00
@@ -749,72 +756,80 @@ ADDRESS_MAP_START(alpha68k_state::kyros_sound_map)
AM_RANGE(0xe00c, 0xe00c) AM_WRITENOP // RST30: 00 on entry
AM_RANGE(0xe00e, 0xe00e) AM_WRITENOP // RST30: 00,02,ff on exit(0x1d88)
*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::sstingry_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc100, 0xc100) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc102, 0xc102) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0xc104, 0xc104) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xc106, 0xc10e) AM_WRITENOP // soundboard I/O's, ignored
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::jongbou_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::alpha68k_I_s_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, clear_w)
- AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xfc00, 0xfc00) AM_RAM // unknown port
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(alpha68k_state::tnextspc_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, clear_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, clear_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x0a, 0x0b) AM_DEVWRITE("ym2", ym2413_device, write)
- AM_RANGE(0x0c, 0x0d) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(sound_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::kyros_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("ym2", ym2203_device, write_port_w)
- AM_RANGE(0x81, 0x81) AM_DEVWRITE("ym2", ym2203_device, control_port_w)
- AM_RANGE(0x90, 0x90) AM_DEVWRITE("ym3", ym2203_device, write_port_w)
- AM_RANGE(0x91, 0x91) AM_DEVWRITE("ym3", ym2203_device, control_port_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::jongbou_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x06, 0x06) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alpha68k_state::tnextspc_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x3b, 0x3b) AM_READNOP // unknown read port
- AM_RANGE(0x3d, 0x3d) AM_READNOP // unknown read port
- AM_RANGE(0x7b, 0x7b) AM_READNOP // unknown read port
-ADDRESS_MAP_END
+}
+
+void alpha68k_state::sstingry_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc100, 0xc100).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc102, 0xc102).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w));
+ map(0xc104, 0xc104).w("dac", FUNC(dac_byte_interface::write));
+ map(0xc106, 0xc10e).nopw(); // soundboard I/O's, ignored
+}
+
+void alpha68k_state::jongbou_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+}
+
+void alpha68k_state::alpha68k_I_s_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xe000, 0xe000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w));
+ map(0xe800, 0xe800).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0xec00, 0xec00).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0xf000, 0xf7ff).ram();
+ map(0xfc00, 0xfc00).ram(); // unknown port
+}
+
+
+void alpha68k_state::tnextspc_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w));
+}
+
+void alpha68k_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w));
+ map(0x08, 0x08).w("dac", FUNC(dac_byte_interface::write));
+ map(0x0a, 0x0b).w("ym2", FUNC(ym2413_device::write));
+ map(0x0c, 0x0d).w("ym1", FUNC(ym2203_device::write));
+ map(0x0e, 0x0e).w(this, FUNC(alpha68k_state::sound_bank_w));
+}
+
+void alpha68k_state::kyros_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w("ym1", FUNC(ym2203_device::write));
+ map(0x80, 0x80).w("ym2", FUNC(ym2203_device::write_port_w));
+ map(0x81, 0x81).w("ym2", FUNC(ym2203_device::control_port_w));
+ map(0x90, 0x90).w("ym3", FUNC(ym2203_device::write_port_w));
+ map(0x91, 0x91).w("ym3", FUNC(ym2203_device::control_port_w));
+}
+
+void alpha68k_state::jongbou_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w));
+ map(0x06, 0x06).nopw();
+}
+
+void alpha68k_state::tnextspc_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x3b, 0x3b).nopr(); // unknown read port
+ map(0x3d, 0x3d).nopr(); // unknown read port
+ map(0x7b, 0x7b).nopr(); // unknown read port
+}
/******************************************************************************/
diff --git a/src/mame/drivers/alphasma.cpp b/src/mame/drivers/alphasma.cpp
index c7f55267bc1..987079e52b4 100644
--- a/src/mame/drivers/alphasma.cpp
+++ b/src/mame/drivers/alphasma.cpp
@@ -168,20 +168,22 @@ WRITE8_MEMBER(alphasmart_state::port_d_w)
}
-ADDRESS_MAP_START(alphasmart_state::alphasmart_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("rambank")
- AM_RANGE( 0x0000, 0x003f ) AM_NOP // internal registers
- AM_RANGE( 0x0040, 0x00ff ) AM_RAM // internal RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x8000, 0x8000 ) AM_READWRITE(kb_r, kb_matrixh_w)
- AM_RANGE( 0xc000, 0xc000 ) AM_WRITE(kb_matrixl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphasmart_state::alphasmart_io)
- AM_RANGE( MC68HC11_IO_PORTA, MC68HC11_IO_PORTA ) AM_READWRITE(port_a_r, port_a_w)
- AM_RANGE( MC68HC11_IO_PORTD, MC68HC11_IO_PORTD ) AM_READWRITE(port_d_r, port_d_w)
-ADDRESS_MAP_END
+void alphasmart_state::alphasmart_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankrw("rambank");
+ map(0x0000, 0x003f).noprw(); // internal registers
+ map(0x0040, 0x00ff).ram(); // internal RAM
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+ map(0x8000, 0x8000).rw(this, FUNC(alphasmart_state::kb_r), FUNC(alphasmart_state::kb_matrixh_w));
+ map(0xc000, 0xc000).w(this, FUNC(alphasmart_state::kb_matrixl_w));
+}
+
+void alphasmart_state::alphasmart_io(address_map &map)
+{
+ map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).rw(this, FUNC(alphasmart_state::port_a_r), FUNC(alphasmart_state::port_a_w));
+ map(MC68HC11_IO_PORTD, MC68HC11_IO_PORTD).rw(this, FUNC(alphasmart_state::port_d_r), FUNC(alphasmart_state::port_d_w));
+}
READ8_MEMBER(asma2k_state::io_r)
{
@@ -228,14 +230,15 @@ WRITE8_MEMBER(asma2k_state::port_a_w)
}
-ADDRESS_MAP_START(asma2k_state::asma2k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("rambank")
- AM_RANGE( 0x0000, 0x003f ) AM_NOP // internal registers
- AM_RANGE( 0x0040, 0x00ff ) AM_RAM AM_SHARE("internal_ram") // internal RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x9000, 0x9000 ) AM_WRITE(kb_matrixl_w)
-ADDRESS_MAP_END
+void asma2k_state::asma2k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankrw("rambank");
+ map(0x0000, 0x003f).noprw(); // internal registers
+ map(0x0040, 0x00ff).ram().share("internal_ram"); // internal RAM
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+ map(0x9000, 0x9000).w(this, FUNC(asma2k_state::kb_matrixl_w));
+}
/* Input ports */
static INPUT_PORTS_START( alphasmart )
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp
index 94fd649cc34..b1d1b6dca59 100644
--- a/src/mame/drivers/alphatpx.cpp
+++ b/src/mame/drivers/alphatpx.cpp
@@ -249,30 +249,33 @@ private:
// ADDRESS MAPS - Alphatronic P1, P2, P2S, P2U and Hell 2069
//**************************************************************************
-ADDRESS_MAP_START(alphatp_12_state::alphatp2_mem)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatp_12_state::alphatp2_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAMBANK("ram_0000")
- AM_RANGE(0x00000, 0x017ff) AM_ROM AM_REGION("boot", 0) // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB
- AM_RANGE(0x01800, 0x01c00) AM_RAM // boot rom variables
- AM_RANGE(0x03000, 0x03bff) AM_WRITEONLY AM_SHARE("vram") // test 2017 hw, MOS directly writes to display RAM
- AM_RANGE(0x03FF0, 0x03fff) AM_DEVWRITE("crtc", crt5027_device, write) //test hw, mem-mapped registers, cursor position can be determined through this range
-
- AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatp_12_state::alphatp2_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("kbdmcu", i8041_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(beep_w)
- AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w)
- AM_RANGE(0x78, 0x78) AM_WRITE(bank_w)
-ADDRESS_MAP_END
+void alphatp_12_state::alphatp2_mem(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
+
+void alphatp_12_state::alphatp2_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).bankrw("ram_0000");
+ map(0x00000, 0x017ff).rom().region("boot", 0); // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB
+ map(0x01800, 0x01c00).ram(); // boot rom variables
+ map(0x03000, 0x03bff).writeonly().share("vram"); // test 2017 hw, MOS directly writes to display RAM
+ map(0x03FF0, 0x03fff).w(m_crtc, FUNC(crt5027_device::write)); //test hw, mem-mapped registers, cursor position can be determined through this range
+
+ map(0x10000, 0x1ffff).ram().share("ram");
+}
+
+void alphatp_12_state::alphatp2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x04, 0x04).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x05, 0x05).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
+ map(0x12, 0x12).w(this, FUNC(alphatp_12_state::beep_w));
+ map(0x50, 0x53).rw(this, FUNC(alphatp_12_state::fdc_r), FUNC(alphatp_12_state::fdc_w));
+ map(0x54, 0x54).rw(this, FUNC(alphatp_12_state::fdc_stat_r), FUNC(alphatp_12_state::fdc_cmd_w));
+ map(0x78, 0x78).w(this, FUNC(alphatp_12_state::bank_w));
+}
WRITE8_MEMBER(alphatp_12_state::bank_w)
@@ -285,51 +288,56 @@ WRITE8_MEMBER(alphatp_12_state::bank_w)
// ADDRESS MAPS - Alphatronic P3, P4, P30 and P40
//**************************************************************************
-ADDRESS_MAP_START(alphatp_34_state::alphatp3_mem)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void alphatp_34_state::alphatp3_mem(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
-ADDRESS_MAP_START(alphatp_34_state::alphatp3_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAMBANK("ram_0000")
- AM_RANGE(0x00000, 0x017ff) AM_ROM AM_REGION("boot", 0) // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB
- AM_RANGE(0x01800, 0x01c00) AM_RAM // boot rom variables
- AM_RANGE(0x03000, 0x03bff) AM_WRITEONLY AM_SHARE("vram") // test 2017 hw, MOS directly writes to display RAM
- AM_RANGE(0x03FF0, 0x03fff) AM_DEVWRITE("crtc", crt5037_device, write) //test hw, mem-mapped registers, cursor position can be determined through this range
+void alphatp_34_state::alphatp3_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).bankrw("ram_0000");
+ map(0x00000, 0x017ff).rom().region("boot", 0); // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB
+ map(0x01800, 0x01c00).ram(); // boot rom variables
+ map(0x03000, 0x03bff).writeonly().share("vram"); // test 2017 hw, MOS directly writes to display RAM
+ map(0x03FF0, 0x03fff).w(m_crtc, FUNC(crt5037_device::write)); //test hw, mem-mapped registers, cursor position can be determined through this range
- AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+ map(0x10000, 0x1ffff).ram().share("ram");
+}
-ADDRESS_MAP_START(alphatp_34_state::alphatp3_io)
- ADDRESS_MAP_UNMAP_HIGH
+void alphatp_34_state::alphatp3_io(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x00, 0x00) AM_READ // unknown
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x08, 0x09) AM_READWRITE(comm88_r, comm88_w)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("kbdmcu", i8041_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(beep_w)
- AM_RANGE(0x40, 0x41) AM_READ(start88_r)
+ map(0x04, 0x04).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x05, 0x05).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x08, 0x09).rw(this, FUNC(alphatp_34_state::comm88_r), FUNC(alphatp_34_state::comm88_w));
+ map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
+ map(0x12, 0x12).w(this, FUNC(alphatp_34_state::beep_w));
+ map(0x40, 0x41).r(this, FUNC(alphatp_34_state::start88_r));
//AM_RANGE(0x42, 0x42) AM_WRITE // unknown
- AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w)
- AM_RANGE(0x78, 0x78) AM_WRITE(bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatp_34_state::alphatp30_8088_map)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0xe0000, 0xeffff) AM_READWRITE(gfxext_r, gfxext_w)
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("16bit", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatp_34_state::alphatp30_8088_io)
+ map(0x50, 0x53).rw(this, FUNC(alphatp_34_state::fdc_r), FUNC(alphatp_34_state::fdc_w));
+ map(0x54, 0x54).rw(this, FUNC(alphatp_34_state::fdc_stat_r), FUNC(alphatp_34_state::fdc_cmd_w));
+ map(0x78, 0x78).w(this, FUNC(alphatp_34_state::bank_w));
+}
+
+void alphatp_34_state::alphatp30_8088_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).ram();
+ map(0xe0000, 0xeffff).rw(this, FUNC(alphatp_34_state::gfxext_r), FUNC(alphatp_34_state::gfxext_w));
+ map(0xfe000, 0xfffff).rom().region("16bit", 0);
+}
+
+void alphatp_34_state::alphatp30_8088_io(address_map &map)
+{
//AM_RANGE(0x008a, 0x008a) AM_READ // unknown
- AM_RANGE(0xf800, 0xf800) AM_WRITE(gfxext1_w)
- AM_RANGE(0xf900, 0xf900) AM_WRITE(gfxext2_w)
- AM_RANGE(0xfa00, 0xfa01) AM_WRITE(gfxext3_w)
+ map(0xf800, 0xf800).w(this, FUNC(alphatp_34_state::gfxext1_w));
+ map(0xf900, 0xf900).w(this, FUNC(alphatp_34_state::gfxext2_w));
+ map(0xfa00, 0xfa01).w(this, FUNC(alphatp_34_state::gfxext3_w));
//AM_RANGE(0xfb00, 0xfb0f) AM_WRITE // unknown possibly gfx ext
- AM_RANGE(0xffe0, 0xffe1) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0xffe4, 0xffe7) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xffe9, 0xffea) AM_READWRITE(comm85_r, comm85_w)
-ADDRESS_MAP_END
+ map(0xffe0, 0xffe1).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xffe4, 0xffe7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xffe9, 0xffea).rw(this, FUNC(alphatp_34_state::comm85_r), FUNC(alphatp_34_state::comm85_w));
+}
READ8_MEMBER(alphatp_34_state::start88_r)
{
diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp
index 6b892dffae5..242fa6b98e9 100644
--- a/src/mame/drivers/alphatro.cpp
+++ b/src/mame/drivers/alphatro.cpp
@@ -388,62 +388,67 @@ INPUT_CHANGED_MEMBER( alphatro_state::alphatro_break )
m_maincpu->set_input_line(INPUT_LINE_IRQ0, HOLD_LINE);
}
-ADDRESS_MAP_START(alphatro_state::alphatro_map)
- AM_RANGE(0x0000, 0x5fff) AM_DEVICE("lowbank", address_map_bank_device, amap8)
- AM_RANGE(0x6000, 0x9fff) AM_READWRITE(ram6000_r, ram6000_w)
- AM_RANGE(0xa000, 0xdfff) AM_DEVICE("cartbank", address_map_bank_device, amap8)
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(rame000_r, rame000_w)
- AM_RANGE(0xf000, 0xffff) AM_DEVICE("monbank", address_map_bank_device, amap8)
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatro_state::rombank_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION("roms", 0x0000) AM_WRITE(ram0000_w)
- AM_RANGE(0x6000, 0xbfff) AM_READWRITE(ram0000_r, ram0000_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatro_state::cartbank_map)
- AM_RANGE(0x0000, 0x3fff) AM_DEVREAD("cartslot", generic_slot_device, read_rom) AM_WRITE(rama000_w)
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(rama000_r, rama000_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatro_state::monbank_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0x8000)
- AM_RANGE(0x2000, 0x2fff) AM_ROM AM_REGION("roms", 0x9000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(alphatro_state::alphatro_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x10, 0x10) AM_READWRITE(port10_r, port10_w)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("X0") AM_WRITE(port20_w)
- AM_RANGE(0x21, 0x21) AM_READ_PORT("X1")
- AM_RANGE(0x22, 0x22) AM_READ_PORT("X2")
- AM_RANGE(0x23, 0x23) AM_READ_PORT("X3")
- AM_RANGE(0x24, 0x24) AM_READ_PORT("X4")
- AM_RANGE(0x25, 0x25) AM_READ_PORT("X5")
- AM_RANGE(0x26, 0x26) AM_READ_PORT("X6")
- AM_RANGE(0x27, 0x27) AM_READ_PORT("X7")
- AM_RANGE(0x28, 0x28) AM_READ_PORT("X8")
- AM_RANGE(0x29, 0x29) AM_READ_PORT("X9")
- AM_RANGE(0x2a, 0x2a) AM_READ_PORT("XA")
- AM_RANGE(0x2b, 0x2b) AM_READ_PORT("XB")
- AM_RANGE(0x30, 0x30) AM_READWRITE(port30_r, port30_w)
+void alphatro_state::alphatro_map(address_map &map)
+{
+ map(0x0000, 0x5fff).m(m_lowbank, FUNC(address_map_bank_device::amap8));
+ map(0x6000, 0x9fff).rw(this, FUNC(alphatro_state::ram6000_r), FUNC(alphatro_state::ram6000_w));
+ map(0xa000, 0xdfff).m("cartbank", FUNC(address_map_bank_device::amap8));
+ map(0xe000, 0xefff).rw(this, FUNC(alphatro_state::rame000_r), FUNC(alphatro_state::rame000_w));
+ map(0xf000, 0xffff).m("monbank", FUNC(address_map_bank_device::amap8));
+
+}
+
+void alphatro_state::rombank_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().region("roms", 0x0000).w(this, FUNC(alphatro_state::ram0000_w));
+ map(0x6000, 0xbfff).rw(this, FUNC(alphatro_state::ram0000_r), FUNC(alphatro_state::ram0000_w));
+}
+
+void alphatro_state::cartbank_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(m_cart, FUNC(generic_slot_device::read_rom)).w(this, FUNC(alphatro_state::rama000_w));
+ map(0x4000, 0x7fff).rw(this, FUNC(alphatro_state::rama000_r), FUNC(alphatro_state::rama000_w));
+}
+
+void alphatro_state::monbank_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("videoram");
+ map(0x1000, 0x1fff).rom().region("roms", 0x8000);
+ map(0x2000, 0x2fff).rom().region("roms", 0x9000);
+}
+
+void alphatro_state::alphatro_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x10, 0x10).rw(this, FUNC(alphatro_state::port10_r), FUNC(alphatro_state::port10_w));
+ map(0x20, 0x20).portr("X0").w(this, FUNC(alphatro_state::port20_w));
+ map(0x21, 0x21).portr("X1");
+ map(0x22, 0x22).portr("X2");
+ map(0x23, 0x23).portr("X3");
+ map(0x24, 0x24).portr("X4");
+ map(0x25, 0x25).portr("X5");
+ map(0x26, 0x26).portr("X6");
+ map(0x27, 0x27).portr("X7");
+ map(0x28, 0x28).portr("X8");
+ map(0x29, 0x29).portr("X9");
+ map(0x2a, 0x2a).portr("XA");
+ map(0x2b, 0x2b).portr("XB");
+ map(0x30, 0x30).rw(this, FUNC(alphatro_state::port30_r), FUNC(alphatro_state::port30_w));
// USART for cassette reading and writing
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w)
- AM_RANGE(0x41, 0x41) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w)
+ map(0x40, 0x40).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x41, 0x41).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// CRTC - HD46505 / HD6845SP
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ map(0x50, 0x50).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x51, 0x51).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
// 8257 DMAC
- AM_RANGE(0x60, 0x68) AM_DEVREADWRITE("dmac", i8257_device, read, write)
+ map(0x60, 0x68).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write));
// 8259 PIT
//AM_RANGE(0x70, 0x72) AM_DEVREADWRITE("
- AM_RANGE(0xf0, 0xf0) AM_READ(portf0_r) AM_WRITE(portf0_w)
- AM_RANGE(0xf8, 0xf8) AM_DEVREADWRITE("fdc", upd765a_device, fifo_r, fifo_w)
- AM_RANGE(0xf9, 0xf9) AM_DEVREAD("fdc", upd765a_device, msr_r)
-ADDRESS_MAP_END
+ map(0xf0, 0xf0).r(this, FUNC(alphatro_state::portf0_r)).w(this, FUNC(alphatro_state::portf0_w));
+ map(0xf8, 0xf8).rw(m_fdc, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w));
+ map(0xf9, 0xf9).r(m_fdc, FUNC(upd765a_device::msr_r));
+}
static INPUT_PORTS_START( alphatro )
PORT_START("X0")
diff --git a/src/mame/drivers/altair.cpp b/src/mame/drivers/altair.cpp
index a32fe3c74d2..151b690cfce 100644
--- a/src/mame/drivers/altair.cpp
+++ b/src/mame/drivers/altair.cpp
@@ -57,19 +57,21 @@ private:
-ADDRESS_MAP_START(altair_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xfcff ) AM_RAM AM_SHARE("ram")
- AM_RANGE( 0xfd00, 0xfdff ) AM_ROM
- AM_RANGE( 0xff00, 0xffff ) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altair_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void altair_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xfcff).ram().share("ram");
+ map(0xfd00, 0xfdff).rom();
+ map(0xff00, 0xffff).rom();
+}
+
+void altair_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// TODO: Remove AM_MIRROR() and use SIO address S0-S7
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x10) AM_DEVREADWRITE("acia", acia6850_device, read, write)
-ADDRESS_MAP_END
+ map(0x00, 0x01).mirror(0x10).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( altair )
diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp
index 3a66a2bacad..655580498c6 100644
--- a/src/mame/drivers/alto2.cpp
+++ b/src/mame/drivers/alto2.cpp
@@ -38,7 +38,7 @@ public:
void alto2_iomem_map(address_map &map);
void alto2_ucode_map(address_map &map);
protected:
- required_device<cpu_device> m_maincpu;
+ required_device<alto2_cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
required_ioport m_io_row0;
required_ioport m_io_row1;
@@ -264,17 +264,20 @@ ROM_END
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(alto2_state::alto2_ucode_map)
- AM_RANGE(0, 4*ALTO2_UCODE_PAGE_SIZE-1) AM_DEVICE32( "maincpu", alto2_cpu_device, ucode_map, 0xffffffffUL )
-ADDRESS_MAP_END
+void alto2_state::alto2_ucode_map(address_map &map)
+{
+ map(0, 4*ALTO2_UCODE_PAGE_SIZE-1).m(m_maincpu, FUNC(alto2_cpu_device::ucode_map));
+}
-ADDRESS_MAP_START(alto2_state::alto2_const_map)
- AM_RANGE(0, ALTO2_CONST_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, const_map, 0xffffU )
-ADDRESS_MAP_END
+void alto2_state::alto2_const_map(address_map &map)
+{
+ map(0, ALTO2_CONST_SIZE-1).m(m_maincpu, FUNC(alto2_cpu_device::const_map));
+}
-ADDRESS_MAP_START(alto2_state::alto2_iomem_map)
- AM_RANGE(0, 2*ALTO2_RAM_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, iomem_map, 0xffffU )
-ADDRESS_MAP_END
+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));
+}
MACHINE_CONFIG_START(alto2_state::alto2)
// Basic machine hardware
diff --git a/src/mame/drivers/altos2.cpp b/src/mame/drivers/altos2.cpp
index e0c66578c87..2a18b1eec5a 100644
--- a/src/mame/drivers/altos2.cpp
+++ b/src/mame/drivers/altos2.cpp
@@ -72,21 +72,23 @@ u32 altos2_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con
return 0;
}
-ADDRESS_MAP_START(altos2_state::mem_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos2_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("dart2", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(video_mode_w)
- AM_RANGE(0x40, 0x7f) AM_DEVREADWRITE("novram", x2210_device, read, write)
+void altos2_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("roms", 0);
+ map(0xc000, 0xffff).ram().share("videoram");
+}
+
+void altos2_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw("dart1", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x04, 0x07).rw("dart2", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x08, 0x0b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0c).w(this, FUNC(altos2_state::video_mode_w));
+ map(0x40, 0x7f).rw(m_novram, FUNC(x2210_device::read), FUNC(x2210_device::write));
//AM_RANGE(0x80, 0xff) AM_DEVREADWRITE_MOD("vpac", crt9007_device, read, write, rshift<1>)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( altos2 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/altos486.cpp b/src/mame/drivers/altos486.cpp
index 500564312d6..62d2a1e75f2 100644
--- a/src/mame/drivers/altos486.cpp
+++ b/src/mame/drivers/altos486.cpp
@@ -105,27 +105,31 @@ static SLOT_INTERFACE_START( altos486_floppies )
SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
SLOT_INTERFACE_END
-ADDRESS_MAP_START(altos486_state::altos486_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mmu_ram_r, mmu_ram_w) AM_SHARE("main_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos486_state::altos486_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mmu_io_r, mmu_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos486_state::altos486_z80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("iocpu", 0)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
+void altos486_state::altos486_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xfffff).rw(this, FUNC(altos486_state::mmu_ram_r), FUNC(altos486_state::mmu_ram_w)).share("main_ram");
+}
+
+void altos486_state::altos486_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(altos486_state::mmu_io_r), FUNC(altos486_state::mmu_io_w));
+}
+
+void altos486_state::altos486_z80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("iocpu", 0);
+ map(0x2000, 0x27ff).ram();
//AM_RANGE(0x8000, 0xffff) AM_READWRITE(z80_shared_r, z80_shared_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(altos486_state::altos486_z80_io)
+void altos486_state::altos486_z80_io(address_map &map)
+{
//AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio0", z80sio0_device, read, write)
//AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio1", z80sio0_device, read, write)
//AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("sio2", z80sio0_device, read, write)
-ADDRESS_MAP_END
+}
MACHINE_CONFIG_START(altos486_state::altos486)
MCFG_CPU_ADD("maincpu", I80186, XTAL(8'000'000))
diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp
index 3e106eb4777..fbc9ca57083 100644
--- a/src/mame/drivers/altos5.cpp
+++ b/src/mame/drivers/altos5.cpp
@@ -73,38 +73,40 @@ private:
};
-ADDRESS_MAP_START(altos5_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE( 0x1000, 0x1fff ) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
- AM_RANGE( 0x2000, 0x2fff ) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2")
- AM_RANGE( 0x3000, 0x3fff ) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3")
- AM_RANGE( 0x4000, 0x4fff ) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4")
- AM_RANGE( 0x5000, 0x5fff ) AM_READ_BANK("bankr5") AM_WRITE_BANK("bankw5")
- AM_RANGE( 0x6000, 0x6fff ) AM_READ_BANK("bankr6") AM_WRITE_BANK("bankw6")
- AM_RANGE( 0x7000, 0x7fff ) AM_READ_BANK("bankr7") AM_WRITE_BANK("bankw7")
- AM_RANGE( 0x8000, 0x8fff ) AM_READ_BANK("bankr8") AM_WRITE_BANK("bankw8")
- AM_RANGE( 0x9000, 0x9fff ) AM_READ_BANK("bankr9") AM_WRITE_BANK("bankw9")
- AM_RANGE( 0xa000, 0xafff ) AM_READ_BANK("bankra") AM_WRITE_BANK("bankwa")
- AM_RANGE( 0xb000, 0xbfff ) AM_READ_BANK("bankrb") AM_WRITE_BANK("bankwb")
- AM_RANGE( 0xc000, 0xcfff ) AM_READ_BANK("bankrc") AM_WRITE_BANK("bankwc")
- AM_RANGE( 0xd000, 0xdfff ) AM_READ_BANK("bankrd") AM_WRITE_BANK("bankwd")
- AM_RANGE( 0xe000, 0xefff ) AM_READ_BANK("bankre") AM_WRITE_BANK("bankwe")
- AM_RANGE( 0xf000, 0xffff ) AM_READ_BANK("bankrf") AM_WRITE_BANK("bankwf")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos5_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("fdc", fd1797_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio0", z80pio_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio1", z80pio_device, read, write)
- AM_RANGE(0x14, 0x17) AM_WRITE(port14_w)
- AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w)
+void altos5_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0x1fff).bankr("bankr1").bankw("bankw1");
+ map(0x2000, 0x2fff).bankr("bankr2").bankw("bankw2");
+ map(0x3000, 0x3fff).bankr("bankr3").bankw("bankw3");
+ map(0x4000, 0x4fff).bankr("bankr4").bankw("bankw4");
+ map(0x5000, 0x5fff).bankr("bankr5").bankw("bankw5");
+ map(0x6000, 0x6fff).bankr("bankr6").bankw("bankw6");
+ map(0x7000, 0x7fff).bankr("bankr7").bankw("bankw7");
+ map(0x8000, 0x8fff).bankr("bankr8").bankw("bankw8");
+ map(0x9000, 0x9fff).bankr("bankr9").bankw("bankw9");
+ map(0xa000, 0xafff).bankr("bankra").bankw("bankwa");
+ map(0xb000, 0xbfff).bankr("bankrb").bankw("bankwb");
+ map(0xc000, 0xcfff).bankr("bankrc").bankw("bankwc");
+ map(0xd000, 0xdfff).bankr("bankrd").bankw("bankwd");
+ map(0xe000, 0xefff).bankr("bankre").bankw("bankwe");
+ map(0xf000, 0xffff).bankr("bankrf").bankw("bankwf");
+}
+
+void altos5_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x04, 0x07).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
+ map(0x08, 0x0b).rw(m_pio0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x0c, 0x0f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x10, 0x13).rw("pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x14, 0x17).w(this, FUNC(altos5_state::port14_w));
+ map(0x1c, 0x1f).rw("dart", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
//AM_RANGE(0x20, 0x23) // Hard drive
- AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
-ADDRESS_MAP_END
+ map(0x2c, 0x2f).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+}
/* Input ports */
static INPUT_PORTS_START( altos5 )
diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp
index fd7d1af0372..1912594c91c 100644
--- a/src/mame/drivers/altos8600.cpp
+++ b/src/mame/drivers/altos8600.cpp
@@ -665,53 +665,60 @@ IRQ_CALLBACK_MEMBER(altos8600_state::inta)
return m_pic1->acknowledge();
}
-ADDRESS_MAP_START(altos8600_state::cpu_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(cpuram_r, cpuram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos8600_state::stack_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(stkram_r, stkram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos8600_state::code_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(coderam_r, coderam_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos8600_state::extra_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(xtraram_r, xtraram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos8600_state::cpu_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(cpuio_r, cpuio_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos8600_state::dmac_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(dmacram_r, dmacram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(altos8600_state::dmac_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmi_r, nmi_w)
- AM_RANGE(0x0000, 0x0007) AM_READ(fault_r)
- AM_RANGE(0x0008, 0x000f) AM_WRITE(clear_w)
- AM_RANGE(0x0010, 0x0017) AM_READ(errlo_r)
- AM_RANGE(0x0018, 0x001f) AM_READ(errhi_r)
- AM_RANGE(0x0020, 0x0027) AM_READWRITE8(hd_r, hd_w, 0x00ff)
- AM_RANGE(0x0030, 0x0037) AM_WRITE(mode_w)
- AM_RANGE(0x0038, 0x003f) AM_WRITE8(cattn_w, 0xffff)
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("fd1797", fd1797_device, read, write, 0xff00)
- AM_RANGE(0x0048, 0x004f) AM_DEVREADWRITE8("uart8274", i8274_new_device, cd_ba_r, cd_ba_w, 0x00ff)
- AM_RANGE(0x0048, 0x004f) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0xff00)
- AM_RANGE(0x0050, 0x0057) AM_READWRITE8(romport_r, romport_w, 0xffff)
- AM_RANGE(0x0058, 0x005f) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0058, 0x005f) AM_WRITE8(clrsys_w, 0xff00)
- AM_RANGE(0x0060, 0x0067) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0068, 0x006f) AM_DEVREADWRITE8("pic8259_3", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0070, 0x0077) AM_NOP
- AM_RANGE(0x0078, 0x0079) AM_WRITE8(ics_attn_w, 0xffff)
- AM_RANGE(0x0200, 0x03ff) AM_READWRITE(mmuflags_r, mmuflags_w)
- AM_RANGE(0x0400, 0x05ff) AM_READWRITE(mmuaddr_r, mmuaddr_w)
-ADDRESS_MAP_END
+void altos8600_state::cpu_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::cpuram_r), FUNC(altos8600_state::cpuram_w));
+}
+
+void altos8600_state::stack_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::stkram_r), FUNC(altos8600_state::stkram_w));
+}
+
+void altos8600_state::code_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::coderam_r), FUNC(altos8600_state::coderam_w));
+}
+
+void altos8600_state::extra_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::xtraram_r), FUNC(altos8600_state::xtraram_w));
+}
+
+void altos8600_state::cpu_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(altos8600_state::cpuio_r), FUNC(altos8600_state::cpuio_w));
+}
+
+void altos8600_state::dmac_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::dmacram_r), FUNC(altos8600_state::dmacram_w));
+}
+
+void altos8600_state::dmac_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(altos8600_state::nmi_r), FUNC(altos8600_state::nmi_w));
+ map(0x0000, 0x0007).r(this, FUNC(altos8600_state::fault_r));
+ map(0x0008, 0x000f).w(this, FUNC(altos8600_state::clear_w));
+ map(0x0010, 0x0017).r(this, FUNC(altos8600_state::errlo_r));
+ map(0x0018, 0x001f).r(this, FUNC(altos8600_state::errhi_r));
+ map(0x0020, 0x0027).rw(this, FUNC(altos8600_state::hd_r), FUNC(altos8600_state::hd_w)).umask16(0x00ff);
+ map(0x0030, 0x0037).w(this, FUNC(altos8600_state::mode_w));
+ map(0x0038, 0x003f).w(this, FUNC(altos8600_state::cattn_w));
+ map(0x0040, 0x0047).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0040, 0x0047).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)).umask16(0xff00);
+ map(0x0048, 0x004f).rw(m_uart8274, FUNC(i8274_new_device::cd_ba_r), FUNC(i8274_new_device::cd_ba_w)).umask16(0x00ff);
+ map(0x0048, 0x004f).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00);
+ map(0x0050, 0x0057).rw(this, FUNC(altos8600_state::romport_r), FUNC(altos8600_state::romport_w));
+ map(0x0058, 0x005f).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0058, 0x005f).w(this, FUNC(altos8600_state::clrsys_w)).umask16(0xff00);
+ map(0x0060, 0x0067).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0068, 0x006f).rw(m_pic3, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0070, 0x0077).noprw();
+ map(0x0078, 0x0079).w(this, FUNC(altos8600_state::ics_attn_w));
+ map(0x0200, 0x03ff).rw(this, FUNC(altos8600_state::mmuflags_r), FUNC(altos8600_state::mmuflags_w));
+ map(0x0400, 0x05ff).rw(this, FUNC(altos8600_state::mmuaddr_r), FUNC(altos8600_state::mmuaddr_w));
+}
static SLOT_INTERFACE_START(altos8600_floppies)
SLOT_INTERFACE( "8dd", FLOPPY_8_DSDD )
diff --git a/src/mame/drivers/alvg.cpp b/src/mame/drivers/alvg.cpp
index ac27c198432..8ba87f03e6c 100644
--- a/src/mame/drivers/alvg.cpp
+++ b/src/mame/drivers/alvg.cpp
@@ -26,11 +26,12 @@ public:
};
-ADDRESS_MAP_START(alvg_state::alvg_map)
- AM_RANGE(0x0000, 0xffff) AM_NOP
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void alvg_state::alvg_map(address_map &map)
+{
+ map(0x0000, 0xffff).noprw();
+ map(0x0000, 0x3fff).ram();
+ map(0x4000, 0xffff).rom();
+}
static INPUT_PORTS_START( alvg )
INPUT_PORTS_END
diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp
index 3adedb3f786..ef2548c49b0 100644
--- a/src/mame/drivers/amaticmg.cpp
+++ b/src/mame/drivers/amaticmg.cpp
@@ -645,52 +645,56 @@ WRITE8_MEMBER( amaticmg_state::unk80_w )
* Memory Map Information *
************************************/
-ADDRESS_MAP_START(amaticmg_state::amaticmg_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM // AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xafff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("attr")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amaticmg_state::amaticmg_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x60, 0x60) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(unk80_w)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w)
+void amaticmg_state::amaticmg_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram(); // AM_SHARE("nvram")
+ map(0xa000, 0xafff).ram().share("vram");
+ map(0xb000, 0xbfff).ram().share("attr");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+void amaticmg_state::amaticmg_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x41).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x60, 0x60).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x61, 0x61).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x80, 0x80).w(this, FUNC(amaticmg_state::unk80_w));
+ map(0xc0, 0xc0).w(this, FUNC(amaticmg_state::rombank_w));
// AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", dac_byte_interface, write)
// AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac2", dac_byte_interface, write)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(amaticmg_state::amaticmg2_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void amaticmg_state::amaticmg2_portmap(address_map &map)
+{
+ map.global_mask(0xff);
// ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x60, 0x60) AM_DEVWRITE("crtc", mc6845_device, address_w) // 0e for mg_iii_vger_3.64_v_8309
- AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) // 0f for mg_iii_vger_3.64_v_8309
- AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(nmi_mask_w)
- AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amaticmg_state::amaticmg4_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x41).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x60, 0x60).w("crtc", FUNC(mc6845_device::address_w)); // 0e for mg_iii_vger_3.64_v_8309
+ map(0x61, 0x61).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // 0f for mg_iii_vger_3.64_v_8309
+ map(0xc0, 0xc0).w(this, FUNC(amaticmg_state::rombank_w));
+ map(0xe6, 0xe6).w(this, FUNC(amaticmg_state::nmi_mask_w));
+ map(0xe8, 0xeb).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void amaticmg_state::amaticmg4_portmap(address_map &map)
+{
+ map.global_mask(0xff);
// ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x04, 0x07).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x50, 0x51).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x0e, 0x0e).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0f, 0x0f).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
// AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(nmi_mask_w)
-ADDRESS_MAP_END
+ map(0xe6, 0xe6).w(this, FUNC(amaticmg_state::nmi_mask_w));
+}
/************************************
diff --git a/src/mame/drivers/ambush.cpp b/src/mame/drivers/ambush.cpp
index 945da504e37..8e1f19fa319 100644
--- a/src/mame/drivers/ambush.cpp
+++ b/src/mame/drivers/ambush.cpp
@@ -120,43 +120,46 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(ambush_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc000, 0xc07f) AM_RAM
- AM_RANGE(0xc080, 0xc09f) AM_RAM_WRITE(scroll_ram_w) AM_SHARE("scroll_ram") // 1 byte for each column
- AM_RANGE(0xc0a0, 0xc0ff) AM_RAM
- AM_RANGE(0xc100, 0xc1ff) AM_RAM AM_SHARE("attribute_ram") // 1 line corresponds to 4 in the video ram
- AM_RANGE(0xc200, 0xc3ff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xc800, 0xc800) AM_READ_PORT("sw1")
- AM_RANGE(0xcc00, 0xcc07) AM_WRITE(output_latches_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ambush_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_w)
- AM_RANGE(0x81, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ambush_state::bootleg_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x77ff) AM_RAM
- AM_RANGE(0x7000, 0x71ff) AM_SHARE("sprite_ram")
- AM_RANGE(0x7200, 0x72ff) AM_SHARE("attribute_ram")
- AM_RANGE(0x7380, 0x739f) AM_SHARE("scroll_ram") // not used on bootlegs?
- AM_RANGE(0x7400, 0x77ff) AM_SHARE("video_ram")
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("sw1")
- AM_RANGE(0xa200, 0xa207) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xb000, 0xbfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ambush_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc000, 0xc07f).ram();
+ map(0xc080, 0xc09f).ram().w(this, FUNC(ambush_state::scroll_ram_w)).share("scroll_ram"); // 1 byte for each column
+ map(0xc0a0, 0xc0ff).ram();
+ map(0xc100, 0xc1ff).ram().share("attribute_ram"); // 1 line corresponds to 4 in the video ram
+ map(0xc200, 0xc3ff).ram().share("sprite_ram");
+ map(0xc400, 0xc7ff).ram().share("video_ram");
+ map(0xc800, 0xc800).portr("sw1");
+ map(0xcc00, 0xcc07).w(this, FUNC(ambush_state::output_latches_w));
+}
+
+void ambush_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0x81, 0x81).w("ay2", FUNC(ay8910_device::data_w));
+}
+
+void ambush_state::bootleg_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x77ff).ram();
+ map(0x7000, 0x71ff).share("sprite_ram");
+ map(0x7200, 0x72ff).share("attribute_ram");
+ map(0x7380, 0x739f).share("scroll_ram"); // not used on bootlegs?
+ map(0x7400, 0x77ff).share("video_ram");
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xa000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xa100, 0xa100).portr("sw1");
+ map(0xa200, 0xa207).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xb000, 0xbfff).rom();
+ map(0xe000, 0xffff).rom();
+}
//**************************************************************************
diff --git a/src/mame/drivers/amerihok.cpp b/src/mame/drivers/amerihok.cpp
index 2852376444a..fd11323d847 100644
--- a/src/mame/drivers/amerihok.cpp
+++ b/src/mame/drivers/amerihok.cpp
@@ -51,14 +51,16 @@ WRITE8_MEMBER(amerihok_state::control_w)
m_oki->ch2_w(!BIT(data, 7));
}
-ADDRESS_MAP_START(amerihok_state::amerihok_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amerihok_state::amerihok_data_map)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(control_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("oki", okim6376_device, write)
-ADDRESS_MAP_END
+void amerihok_state::amerihok_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
+
+void amerihok_state::amerihok_data_map(address_map &map)
+{
+ map(0x2000, 0x2000).w(this, FUNC(amerihok_state::control_w));
+ map(0x4000, 0x4000).w(m_oki, FUNC(okim6376_device::write));
+}
static INPUT_PORTS_START( amerihok )
INPUT_PORTS_END
diff --git a/src/mame/drivers/amico2k.cpp b/src/mame/drivers/amico2k.cpp
index 78a1bd35aac..acdf4189bf7 100644
--- a/src/mame/drivers/amico2k.cpp
+++ b/src/mame/drivers/amico2k.cpp
@@ -62,14 +62,15 @@ public:
};
-ADDRESS_MAP_START(amico2k_state::amico2k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM
+void amico2k_state::amico2k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram();
// AM_RANGE(0x0400, 0x07ff) AM_RAM // optional expansion RAM
- AM_RANGE(0xfb00, 0xfcff) AM_ROM
- AM_RANGE(0xfd00, 0xfd03) AM_DEVREADWRITE("i8255", i8255_device, read, write)
- AM_RANGE(0xfe00, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xfb00, 0xfcff).rom();
+ map(0xfd00, 0xfd03).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfe00, 0xffff).rom();
+}
/* Input ports */
static INPUT_PORTS_START( amico2k )
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index 0e84f9af256..1eeb66f95cb 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -980,38 +980,42 @@ WRITE8_MEMBER( cd32_state::akiko_cia_0_port_a_write )
// Akiko custom chip.
#if 0
-ADDRESS_MAP_START(a1000_state::a1000_overlay_map)
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x1c0000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0x280000, 0x2bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x300000, 0x33ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x380000, 0x38ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0)
-ADDRESS_MAP_END
+void a1000_state::a1000_overlay_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).mirror(0x1c0000).ram().share("chip_ram");
+ map(0x200000, 0x20ffff).mirror(0x030000).rom().region("bootrom", 0);
+ map(0x280000, 0x2bffff).mirror(0x040000).ram().share("chip_ram");
+ map(0x300000, 0x33ffff).mirror(0x040000).ram().share("chip_ram");
+ map(0x380000, 0x38ffff).mirror(0x030000).rom().region("bootrom", 0);
+}
#endif
-ADDRESS_MAP_START(a1000_state::a1000_overlay_map)
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x300000, 0x37ffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x380000, 0x38ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0)
-ADDRESS_MAP_END
+void a1000_state::a1000_overlay_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x20ffff).mirror(0x030000).rom().region("bootrom", 0);
+ map(0x280000, 0x2fffff).ram().share("chip_ram");
+ map(0x300000, 0x37ffff).ram().share("chip_ram");
+ map(0x380000, 0x38ffff).mirror(0x030000).rom().region("bootrom", 0);
+}
-ADDRESS_MAP_START(a1000_state::a1000_bootrom_map)
- AM_RANGE(0x000000, 0x00ffff) AM_MIRROR(0x30000) AM_ROM AM_REGION("bootrom", 0) AM_WRITE(write_protect_w)
- AM_RANGE(0x040000, 0x07ffff) AM_ROMBANK("wom")
-ADDRESS_MAP_END
+void a1000_state::a1000_bootrom_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).mirror(0x30000).rom().region("bootrom", 0).w(this, FUNC(a1000_state::write_protect_w));
+ map(0x040000, 0x07ffff).bankr("wom");
+}
-ADDRESS_MAP_START(a1000_state::a1000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xfbffff) AM_DEVICE("bootrom", address_map_bank_device, amap16)
- AM_RANGE(0xfc0000, 0xffffff) AM_READWRITE_BANK("wom")
-ADDRESS_MAP_END
+void a1000_state::a1000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(a1000_state::cia_r), FUNC(a1000_state::cia_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(a1000_state::custom_chip_r), FUNC(a1000_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a1000_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf80000, 0xfbffff).m(m_bootrom, FUNC(address_map_bank_device::amap16));
+ map(0xfc0000, 0xffffff).bankrw("wom");
+}
// Gary/Super Gary/Gayle with 512KB chip RAM
ADDRESS_MAP_START(amiga_state::overlay_512kb_map)
@@ -1049,194 +1053,206 @@ ADDRESS_MAP_START(amiga_state::overlay_2mb_map32)
ADDRESS_MAP_END
// 512KB chip RAM, 512KB slow RAM, RTC
-ADDRESS_MAP_START(a2000_state::a2000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xc7ffff) AM_RAM
- AM_RANGE(0xc80000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xdbffff) AM_NOP
- AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w)
- AM_RANGE(0xdc8000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void a2000_state::a2000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(a2000_state::cia_r), FUNC(a2000_state::cia_w));
+ map(0xc00000, 0xc7ffff).ram();
+ map(0xc80000, 0xd7ffff).rw(this, FUNC(a2000_state::custom_chip_r), FUNC(a2000_state::custom_chip_w));
+ map(0xd80000, 0xdbffff).noprw();
+ map(0xdc0000, 0xdc7fff).rw(this, FUNC(a2000_state::clock_r), FUNC(a2000_state::clock_w));
+ map(0xdc8000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(a2000_state::custom_chip_r), FUNC(a2000_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(a2000_state::custom_chip_r), FUNC(a2000_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a2000_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf00000, 0xf7ffff).noprw(); // cartridge space
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
// 512KB chip RAM and no clock
-ADDRESS_MAP_START(a500_state::a500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void a500_state::a500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(a500_state::cia_r), FUNC(a500_state::cia_w));
+ map(0xc00000, 0xd7ffff).rw(this, FUNC(a500_state::custom_chip_r), FUNC(a500_state::custom_chip_w));
+ map(0xd80000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(a500_state::custom_chip_r), FUNC(a500_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(a500_state::custom_chip_r), FUNC(a500_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a500_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf00000, 0xf7ffff).noprw(); // cartridge space
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
// 1MB chip RAM, RTC and CDTV specific hardware
-ADDRESS_MAP_START(cdtv_state::cdtv_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xdbffff) AM_NOP
- AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w)
- AM_RANGE(0xdc8000, 0xdc87ff) AM_MIRROR(0x7800) AM_RAM AM_SHARE("sram")
- AM_RANGE(0xdd0000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe3ffff) AM_MIRROR(0x40000) AM_RAM AM_SHARE("memcard")
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x40000) AM_ROM AM_REGION("cdrom", 0)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cdtv_state::cdtv_rc_mem)
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("rcmcu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(a3000_state::a3000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x001fffff) AM_DEVICE("overlay", address_map_bank_device, amap32)
- AM_RANGE(0x00b80000, 0x00bfffff) AM_READWRITE16(cia_r, cia_w, 0xffffffff)
- AM_RANGE(0x00c00000, 0x00cfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0x00d00000, 0x00dbffff) AM_NOP
- AM_RANGE(0x00dc0000, 0x00dcffff) AM_DEVREADWRITE8("rtc", rp5c01_device, read, write, 0x000000ff)
- AM_RANGE(0x00dd0000, 0x00ddffff) AM_READWRITE(scsi_r, scsi_w)
- AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w)
- AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space
- AM_RANGE(0x00f80000, 0x00ffffff) AM_ROM AM_REGION("kickstart", 0)
- AM_RANGE(0x07f00000, 0x07ffffff) AM_RAM // motherboard ram (up to 16mb), grows downward
-ADDRESS_MAP_END
+void cdtv_state::cdtv_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(cdtv_state::cia_r), FUNC(cdtv_state::cia_w));
+ map(0xc00000, 0xd7ffff).rw(this, FUNC(cdtv_state::custom_chip_r), FUNC(cdtv_state::custom_chip_w));
+ map(0xd80000, 0xdbffff).noprw();
+ map(0xdc0000, 0xdc7fff).rw(this, FUNC(cdtv_state::clock_r), FUNC(cdtv_state::clock_w));
+ map(0xdc8000, 0xdc87ff).mirror(0x7800).ram().share("sram");
+ map(0xdd0000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(cdtv_state::custom_chip_r), FUNC(cdtv_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(cdtv_state::custom_chip_r), FUNC(cdtv_state::custom_chip_w));
+ map(0xe00000, 0xe3ffff).mirror(0x40000).ram().share("memcard");
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf00000, 0xf3ffff).mirror(0x40000).rom().region("cdrom", 0);
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
+
+void cdtv_state::cdtv_rc_mem(address_map &map)
+{
+ map(0x0800, 0x0fff).rom().region("rcmcu", 0);
+}
+
+void a3000_state::a3000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x001fffff).m(m_overlay, FUNC(address_map_bank_device::amap32));
+ map(0x00b80000, 0x00bfffff).rw(this, FUNC(a3000_state::cia_r), FUNC(a3000_state::cia_w));
+ map(0x00c00000, 0x00cfffff).rw(this, FUNC(a3000_state::custom_chip_r), FUNC(a3000_state::custom_chip_w));
+ map(0x00d00000, 0x00dbffff).noprw();
+ map(0x00dc0000, 0x00dcffff).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)).umask32(0x000000ff);
+ map(0x00dd0000, 0x00ddffff).rw(this, FUNC(a3000_state::scsi_r), FUNC(a3000_state::scsi_w));
+ map(0x00de0000, 0x00deffff).rw(this, FUNC(a3000_state::motherboard_r), FUNC(a3000_state::motherboard_w));
+ map(0x00df0000, 0x00dfffff).rw(this, FUNC(a3000_state::custom_chip_r), FUNC(a3000_state::custom_chip_w));
+ map(0x00e80000, 0x00efffff).noprw(); // autoconfig space (installed by devices)
+ map(0x00f00000, 0x00f7ffff).noprw(); // cartridge space
+ map(0x00f80000, 0x00ffffff).rom().region("kickstart", 0);
+ map(0x07f00000, 0x07ffffff).ram(); // motherboard ram (up to 16mb), grows downward
+}
// 1MB chip RAM and RTC
-ADDRESS_MAP_START(a500p_state::a500p_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xc7ffff) AM_RAM
- AM_RANGE(0xc80000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xdbffff) AM_NOP
- AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w)
- AM_RANGE(0xdc8000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void a500p_state::a500p_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(a500p_state::cia_r), FUNC(a500p_state::cia_w));
+ map(0xc00000, 0xc7ffff).ram();
+ map(0xc80000, 0xd7ffff).rw(this, FUNC(a500p_state::custom_chip_r), FUNC(a500p_state::custom_chip_w));
+ map(0xd80000, 0xdbffff).noprw();
+ map(0xdc0000, 0xdc7fff).rw(this, FUNC(a500p_state::clock_r), FUNC(a500p_state::clock_w));
+ map(0xdc8000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(a500p_state::custom_chip_r), FUNC(a500p_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(a500p_state::custom_chip_r), FUNC(a500p_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a500p_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
// 1MB chip RAM, IDE and PCMCIA
-ADDRESS_MAP_START(a600_state::a600_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0x200000, 0xa7ffff) AM_NOP
- AM_RANGE(0xa80000, 0xafffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xb00000, 0xb7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xb80000, 0xbeffff) AM_NOP // reserved (cdtv)
- AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE(cia_r, gayle_cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_NOP // slow mem
- AM_RANGE(0xd80000, 0xd8ffff) AM_NOP // spare chip select
- AM_RANGE(0xd90000, 0xd9ffff) AM_NOP // arcnet chip select
- AM_RANGE(0xda0000, 0xdaffff) AM_DEVREADWRITE("gayle", gayle_device, gayle_r, gayle_w)
- AM_RANGE(0xdb0000, 0xdbffff) AM_NOP // reserved (external ide)
- AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc
- AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller)
- AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE("gayle", gayle_device, gayle_id_r, gayle_id_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void a600_state::a600_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0x200000, 0xa7ffff).noprw();
+ map(0xa80000, 0xafffff).nopw().r(this, FUNC(a600_state::rom_mirror_r));
+ map(0xb00000, 0xb7ffff).nopw().r(this, FUNC(a600_state::rom_mirror_r));
+ map(0xb80000, 0xbeffff).noprw(); // reserved (cdtv)
+ map(0xbf0000, 0xbfffff).rw(this, FUNC(a600_state::cia_r), FUNC(a600_state::gayle_cia_w));
+ map(0xc00000, 0xd7ffff).noprw(); // slow mem
+ map(0xd80000, 0xd8ffff).noprw(); // spare chip select
+ map(0xd90000, 0xd9ffff).noprw(); // arcnet chip select
+ map(0xda0000, 0xdaffff).rw("gayle", FUNC(gayle_device::gayle_r), FUNC(gayle_device::gayle_w));
+ map(0xdb0000, 0xdbffff).noprw(); // reserved (external ide)
+ map(0xdc0000, 0xdcffff).noprw(); // rtc
+ map(0xdd0000, 0xddffff).noprw(); // reserved (dma controller)
+ map(0xde0000, 0xdeffff).rw("gayle", FUNC(gayle_device::gayle_id_r), FUNC(gayle_device::gayle_id_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(a600_state::custom_chip_r), FUNC(a600_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a600_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf00000, 0xf7ffff).noprw(); // cartridge space
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
// 2MB chip RAM, IDE and PCMCIA
-ADDRESS_MAP_START(a1200_state::a1200_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32)
- AM_RANGE(0x200000, 0xa7ffff) AM_NOP
- AM_RANGE(0xa80000, 0xafffff) AM_WRITENOP AM_READ(rom_mirror32_r)
- AM_RANGE(0xb00000, 0xb7ffff) AM_WRITENOP AM_READ(rom_mirror32_r)
- AM_RANGE(0xb80000, 0xbeffff) AM_NOP // reserved (cdtv)
- AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff)
- AM_RANGE(0xc00000, 0xd7ffff) AM_NOP // slow mem
- AM_RANGE(0xd80000, 0xd8ffff) AM_NOP // spare chip select
- AM_RANGE(0xd90000, 0xd9ffff) AM_NOP // arcnet chip select
- AM_RANGE(0xda0000, 0xdaffff) AM_DEVREADWRITE16("gayle", gayle_device, gayle_r, gayle_w, 0xffffffff)
- AM_RANGE(0xdb0000, 0xdbffff) AM_NOP // reserved (external ide)
- AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc
- AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller)
- AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE16("gayle", gayle_device, gayle_id_r, gayle_id_w, 0xffffffff)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror32_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void a1200_state::a1200_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap32));
+ map(0x200000, 0xa7ffff).noprw();
+ map(0xa80000, 0xafffff).nopw().r(this, FUNC(a1200_state::rom_mirror32_r));
+ map(0xb00000, 0xb7ffff).nopw().r(this, FUNC(a1200_state::rom_mirror32_r));
+ map(0xb80000, 0xbeffff).noprw(); // reserved (cdtv)
+ map(0xbf0000, 0xbfffff).rw(this, FUNC(a1200_state::cia_r), FUNC(a1200_state::gayle_cia_w));
+ map(0xc00000, 0xd7ffff).noprw(); // slow mem
+ map(0xd80000, 0xd8ffff).noprw(); // spare chip select
+ map(0xd90000, 0xd9ffff).noprw(); // arcnet chip select
+ map(0xda0000, 0xdaffff).rw("gayle", FUNC(gayle_device::gayle_r), FUNC(gayle_device::gayle_w));
+ map(0xdb0000, 0xdbffff).noprw(); // reserved (external ide)
+ map(0xdc0000, 0xdcffff).noprw(); // rtc
+ map(0xdd0000, 0xddffff).noprw(); // reserved (dma controller)
+ map(0xde0000, 0xdeffff).rw("gayle", FUNC(gayle_device::gayle_id_r), FUNC(gayle_device::gayle_id_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(a1200_state::custom_chip_r), FUNC(a1200_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a1200_state::rom_mirror32_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf00000, 0xf7ffff).noprw(); // cartridge space
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
// 2MB chip RAM, 4 MB fast RAM, RTC and IDE
-ADDRESS_MAP_START(a4000_state::a4000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x001fffff) AM_DEVICE("overlay", address_map_bank_device, amap32)
- AM_RANGE(0x00200000, 0x009fffff) AM_NOP // zorro2 expansion
- AM_RANGE(0x00a00000, 0x00b7ffff) AM_NOP
- AM_RANGE(0x00b80000, 0x00beffff) AM_NOP
- AM_RANGE(0x00bf0000, 0x00bfffff) AM_READWRITE16(cia_r, cia_w, 0xffffffff)
- AM_RANGE(0x00c00000, 0x00cfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0x00d00000, 0x00d9ffff) AM_NOP
- AM_RANGE(0x00da0000, 0x00dbffff) AM_NOP
- AM_RANGE(0x00dc0000, 0x00dcffff) AM_DEVREADWRITE8("rtc", rp5c01_device, read, write, 0x000000ff)
- AM_RANGE(0x00dd0000, 0x00dd0fff) AM_NOP
- AM_RANGE(0x00dd1000, 0x00dd3fff) AM_READWRITE16(ide_r, ide_w, 0xffffffff)
- AM_RANGE(0x00dd4000, 0x00ddffff) AM_NOP
- AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w)
- AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0x00e00000, 0x00e7ffff) AM_WRITENOP AM_READ(rom_mirror32_r)
- AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // zorro2 autoconfig space (installed by devices)
- AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space
- AM_RANGE(0x00f80000, 0x00ffffff) AM_ROM AM_REGION("kickstart", 0)
- AM_RANGE(0x01000000, 0x017fffff) AM_NOP // reserved (8 mb chip ram)
- AM_RANGE(0x01800000, 0x06ffffff) AM_NOP // reserved (motherboard fast ram expansion)
- AM_RANGE(0x07000000, 0x07bfffff) AM_NOP // motherboard ram
- AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM // motherboard ram (up to 16mb), grows downward
-ADDRESS_MAP_END
+void a4000_state::a4000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x001fffff).m(m_overlay, FUNC(address_map_bank_device::amap32));
+ map(0x00200000, 0x009fffff).noprw(); // zorro2 expansion
+ map(0x00a00000, 0x00b7ffff).noprw();
+ map(0x00b80000, 0x00beffff).noprw();
+ map(0x00bf0000, 0x00bfffff).rw(this, FUNC(a4000_state::cia_r), FUNC(a4000_state::cia_w));
+ map(0x00c00000, 0x00cfffff).rw(this, FUNC(a4000_state::custom_chip_r), FUNC(a4000_state::custom_chip_w));
+ map(0x00d00000, 0x00d9ffff).noprw();
+ map(0x00da0000, 0x00dbffff).noprw();
+ map(0x00dc0000, 0x00dcffff).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)).umask32(0x000000ff);
+ map(0x00dd0000, 0x00dd0fff).noprw();
+ map(0x00dd1000, 0x00dd3fff).rw(this, FUNC(a4000_state::ide_r), FUNC(a4000_state::ide_w));
+ map(0x00dd4000, 0x00ddffff).noprw();
+ map(0x00de0000, 0x00deffff).rw(this, FUNC(a4000_state::motherboard_r), FUNC(a4000_state::motherboard_w));
+ map(0x00df0000, 0x00dfffff).rw(this, FUNC(a4000_state::custom_chip_r), FUNC(a4000_state::custom_chip_w));
+ map(0x00e00000, 0x00e7ffff).nopw().r(this, FUNC(a4000_state::rom_mirror32_r));
+ map(0x00e80000, 0x00efffff).noprw(); // zorro2 autoconfig space (installed by devices)
+ map(0x00f00000, 0x00f7ffff).noprw(); // cartridge space
+ map(0x00f80000, 0x00ffffff).rom().region("kickstart", 0);
+ map(0x01000000, 0x017fffff).noprw(); // reserved (8 mb chip ram)
+ map(0x01800000, 0x06ffffff).noprw(); // reserved (motherboard fast ram expansion)
+ map(0x07000000, 0x07bfffff).noprw(); // motherboard ram
+ map(0x07c00000, 0x07ffffff).ram(); // motherboard ram (up to 16mb), grows downward
+}
// 2MB chip RAM, 2 MB fast RAM, RTC and IDE
-ADDRESS_MAP_START(a4000_state::a400030_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(a4000_mem)
- AM_RANGE(0x07000000, 0x07dfffff) AM_NOP // motherboard ram
- AM_RANGE(0x07e00000, 0x07ffffff) AM_RAM // motherboard ram (up to 16mb), grows downward
-ADDRESS_MAP_END
+void a4000_state::a400030_mem(address_map &map)
+{
+ map.unmap_value_high();
+ a4000_mem(map);
+ map(0x07000000, 0x07dfffff).noprw(); // motherboard ram
+ map(0x07e00000, 0x07ffffff).ram(); // motherboard ram (up to 16mb), grows downward
+}
// 2MB chip RAM and CD-ROM
-ADDRESS_MAP_START(cd32_state::cd32_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32)
- AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
- AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000)
- AM_RANGE(0xe80000, 0xf7ffff) AM_NOP
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void cd32_state::cd32_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap32));
+ map(0xb80000, 0xb8003f).rw("akiko", FUNC(akiko_device::read), FUNC(akiko_device::write));
+ map(0xbf0000, 0xbfffff).rw(this, FUNC(cd32_state::cia_r), FUNC(cd32_state::gayle_cia_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(cd32_state::custom_chip_r), FUNC(cd32_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).rom().region("kickstart", 0x80000);
+ map(0xe80000, 0xf7ffff).noprw();
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
// 2 MB chip RAM, IDE, RTC and SCSI
-ADDRESS_MAP_START(a4000_state::a4000t_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(a4000_mem)
- AM_RANGE(0x00dd0000, 0x00dd0fff) AM_READWRITE(scsi_r, scsi_w)
-ADDRESS_MAP_END
+void a4000_state::a4000t_mem(address_map &map)
+{
+ map.unmap_value_high();
+ a4000_mem(map);
+ map(0x00dd0000, 0x00dd0fff).rw(this, FUNC(a4000_state::scsi_r), FUNC(a4000_state::scsi_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/ampex.cpp b/src/mame/drivers/ampex.cpp
index 5215627c80c..72ba0eec193 100644
--- a/src/mame/drivers/ampex.cpp
+++ b/src/mame/drivers/ampex.cpp
@@ -157,20 +157,21 @@ WRITE_LINE_MEMBER(ampex_state::dav_w)
// DAV should generate RST 7
}
-ADDRESS_MAP_START(ampex_state::mem_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x4000, 0x43ff) AM_RAM // main RAM
- AM_RANGE(0x4400, 0x57ff) AM_RAM // expansion RAM
- AM_RANGE(0x5840, 0x5840) AM_READWRITE(read_5840, write_5840)
- AM_RANGE(0x5841, 0x5841) AM_READWRITE(read_5841, write_5841)
- AM_RANGE(0x5842, 0x5842) AM_READ(read_5842) AM_DEVWRITE("uart", ay31015_device, transmit)
- AM_RANGE(0x5843, 0x5843) AM_DEVREAD("uart", ay31015_device, receive) AM_WRITE(write_5843)
- AM_RANGE(0x5846, 0x5846) AM_READ(read_5846)
- AM_RANGE(0x5847, 0x5847) AM_READ(read_5847)
- AM_RANGE(0x5c00, 0x5c0f) AM_DEVREADWRITE("vtac", crt5037_device, read, write)
- AM_RANGE(0x8000, 0x97ff) AM_READWRITE(page_r, page_w)
- AM_RANGE(0xc000, 0xcfff) AM_RAM // video RAM
-ADDRESS_MAP_END
+void ampex_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom().region("roms", 0);
+ map(0x4000, 0x43ff).ram(); // main RAM
+ map(0x4400, 0x57ff).ram(); // expansion RAM
+ map(0x5840, 0x5840).rw(this, FUNC(ampex_state::read_5840), FUNC(ampex_state::write_5840));
+ map(0x5841, 0x5841).rw(this, FUNC(ampex_state::read_5841), FUNC(ampex_state::write_5841));
+ map(0x5842, 0x5842).r(this, FUNC(ampex_state::read_5842)).w(m_uart, FUNC(ay31015_device::transmit));
+ map(0x5843, 0x5843).r(m_uart, FUNC(ay31015_device::receive)).w(this, FUNC(ampex_state::write_5843));
+ map(0x5846, 0x5846).r(this, FUNC(ampex_state::read_5846));
+ map(0x5847, 0x5847).r(this, FUNC(ampex_state::read_5847));
+ map(0x5c00, 0x5c0f).rw("vtac", FUNC(crt5037_device::read), FUNC(crt5037_device::write));
+ map(0x8000, 0x97ff).rw(this, FUNC(ampex_state::page_r), FUNC(ampex_state::page_w));
+ map(0xc000, 0xcfff).ram(); // video RAM
+}
static INPUT_PORTS_START( ampex )
INPUT_PORTS_END
diff --git a/src/mame/drivers/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp
index 521487f7ed6..e37917f1fa2 100644
--- a/src/mame/drivers/ampoker2.cpp
+++ b/src/mame/drivers/ampoker2.cpp
@@ -591,35 +591,37 @@ WRITE8_MEMBER(ampoker2_state::ampoker2_watchdog_reset_w)
* Memory map information *
*************************/
-ADDRESS_MAP_START(ampoker2_state::ampoker2_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(ampoker2_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ampoker2_state::ampoker2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x0f) AM_WRITENOP /* inexistent in the real hardware */
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2")
- AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3")
- AM_RANGE(0x14, 0x14) AM_READ_PORT("IN4")
- AM_RANGE(0x15, 0x15) AM_READ_PORT("IN5")
- AM_RANGE(0x16, 0x16) AM_READ_PORT("IN6")
- AM_RANGE(0x17, 0x17) AM_READ_PORT("IN7")
+void ampoker2_state::ampoker2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().share("nvram");
+ map(0xe000, 0xefff).ram().w(this, FUNC(ampoker2_state::ampoker2_videoram_w)).share("videoram");
+}
+
+void ampoker2_state::ampoker2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x0f).nopw(); /* inexistent in the real hardware */
+ map(0x10, 0x10).portr("IN0");
+ map(0x11, 0x11).portr("IN1");
+ map(0x12, 0x12).portr("IN2");
+ map(0x13, 0x13).portr("IN3");
+ map(0x14, 0x14).portr("IN4");
+ map(0x15, 0x15).portr("IN5");
+ map(0x16, 0x16).portr("IN6");
+ map(0x17, 0x17).portr("IN7");
// AM_RANGE(0x21, 0x21) AM_WRITENOP /* undocumented, write 0x1a after each reset */
- AM_RANGE(0x30, 0x30) AM_WRITE(ampoker2_port30_w) /* see write handlers */
- AM_RANGE(0x31, 0x31) AM_WRITE(ampoker2_port31_w) /* see write handlers */
- AM_RANGE(0x32, 0x32) AM_WRITE(ampoker2_port32_w) /* see write handlers */
- AM_RANGE(0x33, 0x33) AM_WRITE(ampoker2_port33_w) /* see write handlers */
- AM_RANGE(0x34, 0x34) AM_WRITE(ampoker2_port34_w) /* see write handlers */
- AM_RANGE(0x35, 0x35) AM_WRITE(ampoker2_port35_w) /* see write handlers */
- AM_RANGE(0x36, 0x36) AM_WRITE(ampoker2_port36_w) /* see write handlers */
- AM_RANGE(0x37, 0x37) AM_WRITE(ampoker2_watchdog_reset_w)
- AM_RANGE(0x38, 0x39) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x3A, 0x3A) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+ map(0x30, 0x30).w(this, FUNC(ampoker2_state::ampoker2_port30_w)); /* see write handlers */
+ map(0x31, 0x31).w(this, FUNC(ampoker2_state::ampoker2_port31_w)); /* see write handlers */
+ map(0x32, 0x32).w(this, FUNC(ampoker2_state::ampoker2_port32_w)); /* see write handlers */
+ map(0x33, 0x33).w(this, FUNC(ampoker2_state::ampoker2_port33_w)); /* see write handlers */
+ map(0x34, 0x34).w(this, FUNC(ampoker2_state::ampoker2_port34_w)); /* see write handlers */
+ map(0x35, 0x35).w(this, FUNC(ampoker2_state::ampoker2_port35_w)); /* see write handlers */
+ map(0x36, 0x36).w(this, FUNC(ampoker2_state::ampoker2_port36_w)); /* see write handlers */
+ map(0x37, 0x37).w(this, FUNC(ampoker2_state::ampoker2_watchdog_reset_w));
+ map(0x38, 0x39).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x3A, 0x3A).r("aysnd", FUNC(ay8910_device::data_r));
+}
/*
diff --git a/src/mame/drivers/ampro.cpp b/src/mame/drivers/ampro.cpp
index cf31b75d42e..7eaf2ad1784 100644
--- a/src/mame/drivers/ampro.cpp
+++ b/src/mame/drivers/ampro.cpp
@@ -96,25 +96,27 @@ WRITE8_MEMBER( ampro_state::io_w )
m_dart->ba_cd_w(space, offset>>2, data);
}
-ADDRESS_MAP_START(ampro_state::ampro_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x1000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ampro_state::ampro_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(port00_w) // system
+void ampro_state::ampro_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0xffff).ram();
+}
+
+void ampro_state::ampro_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(ampro_state::port00_w)); // system
//AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // printer data
//AM_RANGE(0x02, 0x03) AM_WRITE(port02_w) // printer strobe
//AM_RANGE(0x20, 0x27) AM_READWRITE() // scsi chip
//AM_RANGE(0x28, 0x28) AM_WRITE(port28_w) // scsi control
//AM_RANGE(0x29, 0x29) AM_READ(port29_r) // ID port
- AM_RANGE(0x40, 0x8f) AM_READWRITE(io_r,io_w)
- AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("fdc", wd1772_device, write)
- AM_RANGE(0xc4, 0xc7) AM_DEVREAD("fdc", wd1772_device, read)
-ADDRESS_MAP_END
+ map(0x40, 0x8f).rw(this, FUNC(ampro_state::io_r), FUNC(ampro_state::io_w));
+ map(0xc0, 0xc3).w(m_fdc, FUNC(wd1772_device::write));
+ map(0xc4, 0xc7).r(m_fdc, FUNC(wd1772_device::read));
+}
static const z80_daisy_config daisy_chain_intf[] =
{
diff --git a/src/mame/drivers/ampscarp.cpp b/src/mame/drivers/ampscarp.cpp
index 6ff844712a9..174151dc9b3 100644
--- a/src/mame/drivers/ampscarp.cpp
+++ b/src/mame/drivers/ampscarp.cpp
@@ -28,9 +28,10 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(ampscarp_state::mem_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void ampscarp_state::mem_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( ampscarp )
INPUT_PORTS_END
diff --git a/src/mame/drivers/amspdwy.cpp b/src/mame/drivers/amspdwy.cpp
index 62afe73e49e..3d1d26ca1d0 100644
--- a/src/mame/drivers/amspdwy.cpp
+++ b/src/mame/drivers/amspdwy.cpp
@@ -71,26 +71,28 @@ READ8_MEMBER(amspdwy_state::amspdwy_sound_r)
return (m_ym2151->status_r(space, 0) & ~0x30) | ioport("IN0")->read();
}
-ADDRESS_MAP_START(amspdwy_state::amspdwy_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x801f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(amspdwy_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(amspdwy_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM // unused?
+void amspdwy_state::amspdwy_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x801f).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(amspdwy_state::amspdwy_videoram_w)).share("videoram");
+ map(0x9800, 0x9bff).ram().w(this, FUNC(amspdwy_state::amspdwy_colorram_w)).share("colorram");
+ map(0x9c00, 0x9fff).ram(); // unused?
// AM_RANGE(0xa000, 0xa000) AM_WRITENOP // ?
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW1")
- AM_RANGE(0xa400, 0xa400) AM_READ_PORT("DSW2") AM_WRITE(amspdwy_flipscreen_w)
- AM_RANGE(0xa800, 0xa800) AM_READ(amspdwy_wheel_0_r)
- AM_RANGE(0xac00, 0xac00) AM_READ(amspdwy_wheel_1_r)
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // irq ack?
- AM_RANGE(0xb400, 0xb400) AM_READ(amspdwy_sound_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
+ map(0xa000, 0xa000).portr("DSW1");
+ map(0xa400, 0xa400).portr("DSW2").w(this, FUNC(amspdwy_state::amspdwy_flipscreen_w));
+ map(0xa800, 0xa800).r(this, FUNC(amspdwy_state::amspdwy_wheel_0_r));
+ map(0xac00, 0xac00).r(this, FUNC(amspdwy_state::amspdwy_wheel_1_r));
+ map(0xb000, 0xb000).nopw(); // irq ack?
+ map(0xb400, 0xb400).r(this, FUNC(amspdwy_state::amspdwy_sound_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc000, 0xc0ff).ram().share("spriteram");
+ map(0xe000, 0xe7ff).ram();
+}
-ADDRESS_MAP_START(amspdwy_state::amspdwy_portmap)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("tracks", 0)
-ADDRESS_MAP_END
+void amspdwy_state::amspdwy_portmap(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("tracks", 0);
+}
@@ -102,14 +104,15 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(amspdwy_state::amspdwy_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void amspdwy_state::amspdwy_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
// AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ? writes 0 at start
- AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ?
-ADDRESS_MAP_END
+ map(0x9000, 0x9000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xa000, 0xa001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc000, 0xdfff).ram();
+ map(0xffff, 0xffff).nopr(); // ??? IY = FFFF at the start ?
+}
diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp
index 5542f2056ce..d2aedc4bebc 100644
--- a/src/mame/drivers/amstr_pc.cpp
+++ b/src/mame/drivers/amstr_pc.cpp
@@ -96,32 +96,36 @@ public:
void ppc640_map(address_map &map);
};
-ADDRESS_MAP_START(amstrad_pc_state::ppc640_map)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amstrad_pc_state::pc2086_map)
- AM_RANGE(0xc0000, 0xc9fff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0x10000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amstrad_pc_state::pc200_io)
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", pc_noppi_mb_device, map, 0xffff)
- AM_RANGE(0x0060, 0x0065) AM_READWRITE8(pc1640_port60_r, pc1640_port60_w, 0xffff)
- AM_RANGE(0x0078, 0x0079) AM_READWRITE8(pc1640_mouse_x_r, pc1640_mouse_x_w, 0xffff)
- AM_RANGE(0x007a, 0x007b) AM_READWRITE8(pc1640_mouse_y_r, pc1640_mouse_y_w, 0xffff)
- AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
- AM_RANGE(0x0278, 0x027b) AM_READ8(pc200_port278_r, 0xffff)
- AM_RANGE(0x0278, 0x027b) AM_DEVWRITE8("lpt_2", pc_lpt_device, write, 0x00ff)
- AM_RANGE(0x0378, 0x037b) AM_READ8(pc200_port378_r, 0xffff)
- AM_RANGE(0x0378, 0x037b) AM_DEVWRITE8("lpt_1", pc_lpt_device, write, 0x00ff)
- AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8("lpt_0", pc_lpt_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amstrad_pc_state::ppc512_io)
- AM_IMPORT_FROM(pc200_io)
- AM_RANGE(0x0070, 0x0071) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0xffff)
-ADDRESS_MAP_END
+void amstrad_pc_state::ppc640_map(address_map &map)
+{
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void amstrad_pc_state::pc2086_map(address_map &map)
+{
+ map(0xc0000, 0xc9fff).rom().region("bios", 0);
+ map(0xf0000, 0xfffff).rom().region("bios", 0x10000);
+}
+
+void amstrad_pc_state::pc200_io(address_map &map)
+{
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0065).rw(this, FUNC(amstrad_pc_state::pc1640_port60_r), FUNC(amstrad_pc_state::pc1640_port60_w));
+ map(0x0078, 0x0079).rw(this, FUNC(amstrad_pc_state::pc1640_mouse_x_r), FUNC(amstrad_pc_state::pc1640_mouse_x_w));
+ map(0x007a, 0x007b).rw(this, FUNC(amstrad_pc_state::pc1640_mouse_y_r), FUNC(amstrad_pc_state::pc1640_mouse_y_w));
+ map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
+ map(0x0278, 0x027b).r(this, FUNC(amstrad_pc_state::pc200_port278_r));
+ map(0x0278, 0x027b).w(m_lpt2, FUNC(pc_lpt_device::write)).umask16(0x00ff);
+ map(0x0378, 0x037b).r(this, FUNC(amstrad_pc_state::pc200_port378_r));
+ map(0x0378, 0x037b).w(m_lpt1, FUNC(pc_lpt_device::write)).umask16(0x00ff);
+ map(0x03bc, 0x03bf).rw("lpt_0", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask16(0x00ff);
+}
+
+void amstrad_pc_state::ppc512_io(address_map &map)
+{
+ pc200_io(map);
+ map(0x0070, 0x0071).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+}
/* pc20 (v2)
fc078
diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp
index 2455770d97c..2927b07a376 100644
--- a/src/mame/drivers/amstrad.cpp
+++ b/src/mame/drivers/amstrad.cpp
@@ -123,23 +123,25 @@ Some bugs left :
/* Memory is banked in 16k blocks. However, the multiface
pages the memory in 8k blocks! The ROM can
be paged into bank 0 and bank 3. */
-ADDRESS_MAP_START(amstrad_state::amstrad_mem)
- AM_RANGE(0x00000, 0x01fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank9")
- AM_RANGE(0x02000, 0x03fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank10")
- AM_RANGE(0x04000, 0x05fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank11")
- AM_RANGE(0x06000, 0x07fff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank12")
- AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank13")
- AM_RANGE(0x0a000, 0x0bfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank14")
- AM_RANGE(0x0c000, 0x0dfff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank15")
- AM_RANGE(0x0e000, 0x0ffff) AM_READ_BANK("bank8") AM_WRITE_BANK("bank16")
-ADDRESS_MAP_END
+void amstrad_state::amstrad_mem(address_map &map)
+{
+ map(0x00000, 0x01fff).bankr("bank1").bankw("bank9");
+ map(0x02000, 0x03fff).bankr("bank2").bankw("bank10");
+ map(0x04000, 0x05fff).bankr("bank3").bankw("bank11");
+ map(0x06000, 0x07fff).bankr("bank4").bankw("bank12");
+ map(0x08000, 0x09fff).bankr("bank5").bankw("bank13");
+ map(0x0a000, 0x0bfff).bankr("bank6").bankw("bank14");
+ map(0x0c000, 0x0dfff).bankr("bank7").bankw("bank15");
+ map(0x0e000, 0x0ffff).bankr("bank8").bankw("bank16");
+}
/* I've handled the I/O ports in this way, because the ports
are not fully decoded by the CPC h/w. Doing it this way means
I can decode it myself and a lot of software should work */
-ADDRESS_MAP_START(amstrad_state::amstrad_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(amstrad_cpc_io_r, amstrad_cpc_io_w )
-ADDRESS_MAP_END
+void amstrad_state::amstrad_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(amstrad_state::amstrad_cpc_io_r), FUNC(amstrad_state::amstrad_cpc_io_w));
+}
/*************************************
diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp
index 19fbb84bbe7..4b59576ba5b 100644
--- a/src/mame/drivers/amusco.cpp
+++ b/src/mame/drivers/amusco.cpp
@@ -199,10 +199,11 @@ void amusco_state::machine_start()
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(amusco_state::amusco_mem_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void amusco_state::amusco_mem_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram();
+ map(0xf8000, 0xfffff).rom();
+}
READ8_MEMBER( amusco_state::mc6845_r)
{
@@ -358,17 +359,18 @@ WRITE8_MEMBER(amusco_state::rtc_control_w)
m_rtc->read_w(BIT(data, 4));
}
-ADDRESS_MAP_START(amusco_state::amusco_io_map)
- AM_RANGE(0x0000, 0x0001) AM_READWRITE(mc6845_r, mc6845_w)
- AM_RANGE(0x0010, 0x0011) AM_DEVWRITE("pic8259", pic8259_device, write)
- AM_RANGE(0x0020, 0x0023) AM_DEVWRITE("pit8253", pit8253_device, write)
- AM_RANGE(0x0030, 0x0033) AM_DEVREADWRITE("ppi_outputs", i8255_device, read, write)
- AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("ppi_inputs", i8255_device, read, write)
- AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("sn", sn76489a_device, write)
- AM_RANGE(0x0070, 0x0071) AM_WRITE(vram_w)
- AM_RANGE(0x0280, 0x0283) AM_DEVREADWRITE("lpt_interface", i8155_device, io_r, io_w)
- AM_RANGE(0x0380, 0x0383) AM_DEVREADWRITE("rtc_interface", i8155_device, io_r, io_w)
-ADDRESS_MAP_END
+void amusco_state::amusco_io_map(address_map &map)
+{
+ map(0x0000, 0x0001).rw(this, 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(0x0070, 0x0071).w(this, 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));
+}
/* I/O byte R/W
diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp
index bf770d4e8ba..0836ac65c6e 100644
--- a/src/mame/drivers/amust.cpp
+++ b/src/mame/drivers/amust.cpp
@@ -174,27 +174,29 @@ void amust_state::device_timer(emu_timer &timer, device_timer_id id, int param,
// floppy->ss_w(BIT(data, 4));
//}
-ADDRESS_MAP_START(amust_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amust_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0x0d, 0x0d) AM_READNOP AM_WRITE(port0d_w)
- AM_RANGE(0x0e, 0x0e) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", upd765a_device, map)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("pit", pit8253_device, read, write)
-ADDRESS_MAP_END
+void amust_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xf7ff).ram();
+ map(0xf800, 0xffff).bankr("bankr0").bankw("bankw0");
+}
+
+void amust_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x02, 0x02).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x03, 0x03).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x04, 0x07).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0d, 0x0d).nopr().w(this, FUNC(amust_state::port0d_w));
+ map(0x0e, 0x0e).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x0f, 0x0f).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x10, 0x11).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x14, 0x17).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+}
static SLOT_INTERFACE_START( amust_floppies )
SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
diff --git a/src/mame/drivers/anes.cpp b/src/mame/drivers/anes.cpp
index f09051f21bb..9087fbda23f 100644
--- a/src/mame/drivers/anes.cpp
+++ b/src/mame/drivers/anes.cpp
@@ -76,27 +76,29 @@ WRITE8_MEMBER(anes_state::blit_trigger_w)
//printf("%02x%02x%02x\n",m_vram_offset[0],m_vram_offset[1],m_vram_offset[2]);
}
-ADDRESS_MAP_START(anes_state::prg_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(anes_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
-
- AM_RANGE(0x07, 0x07) AM_WRITENOP // mux write
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym", ym2413_device, write)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(blit_trigger_w)
+void anes_state::prg_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
+
+void anes_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+
+ map(0x07, 0x07).nopw(); // mux write
+ map(0x08, 0x09).w("ym", FUNC(ym2413_device::write));
+ map(0x0a, 0x0a).w(this, FUNC(anes_state::blit_trigger_w));
// AM_RANGE(0x0b, 0x0b) AM_WRITE(blit_mode_w)
- AM_RANGE(0x0c, 0x0e) AM_WRITE(vram_offset_w)
- AM_RANGE(0x11, 0x11) AM_READ_PORT("DSW1")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("DSW2")
- AM_RANGE(0x13, 0x13) AM_READ_PORT("DSW3")
- AM_RANGE(0x14, 0x15) AM_READNOP // mux read
- AM_RANGE(0x16, 0x16) AM_READ_PORT("IN0") AM_WRITENOP
+ map(0x0c, 0x0e).w(this, FUNC(anes_state::vram_offset_w));
+ map(0x11, 0x11).portr("DSW1");
+ map(0x12, 0x12).portr("DSW2");
+ map(0x13, 0x13).portr("DSW3");
+ map(0x14, 0x15).nopr(); // mux read
+ map(0x16, 0x16).portr("IN0").nopw();
// AM_RANGE(0xfe, 0xfe) banking? unknown ROM range
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( anes )
diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp
index b36838e613b..9438ccfd0a0 100644
--- a/src/mame/drivers/angelkds.cpp
+++ b/src/mame/drivers/angelkds.cpp
@@ -165,39 +165,42 @@ contain a level.
*/
-ADDRESS_MAP_START(angelkds_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(angelkds_bgtopvideoram_w) AM_SHARE("bgtopvideoram") /* Top Half of Screen */
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(angelkds_bgbotvideoram_w) AM_SHARE("bgbotvideoram") /* Bottom Half of Screen */
- AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(angelkds_txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xec00, 0xecff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xed00, 0xedff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xee00, 0xeeff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xef00, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_WRITE(angelkds_bgtopbank_write)
- AM_RANGE(0xf001, 0xf001) AM_WRITE(angelkds_bgtopscroll_write)
- AM_RANGE(0xf002, 0xf002) AM_WRITE(angelkds_bgbotbank_write)
- AM_RANGE(0xf003, 0xf003) AM_WRITE(angelkds_bgbotscroll_write)
- AM_RANGE(0xf004, 0xf004) AM_WRITE(angelkds_txbank_write)
- AM_RANGE(0xf005, 0xf005) AM_WRITE(angelkds_layer_ctrl_write)
-ADDRESS_MAP_END
+void angelkds_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(angelkds_state::angelkds_bgtopvideoram_w)).share("bgtopvideoram"); /* Top Half of Screen */
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(angelkds_state::angelkds_bgbotvideoram_w)).share("bgbotvideoram"); /* Bottom Half of Screen */
+ map(0xe800, 0xebff).ram().w(this, FUNC(angelkds_state::angelkds_txvideoram_w)).share("txvideoram");
+ map(0xec00, 0xecff).ram().share("spriteram");
+ map(0xed00, 0xedff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xee00, 0xeeff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xef00, 0xefff).ram();
+ map(0xf000, 0xf000).w(this, FUNC(angelkds_state::angelkds_bgtopbank_write));
+ map(0xf001, 0xf001).w(this, FUNC(angelkds_state::angelkds_bgtopscroll_write));
+ map(0xf002, 0xf002).w(this, FUNC(angelkds_state::angelkds_bgbotbank_write));
+ map(0xf003, 0xf003).w(this, FUNC(angelkds_state::angelkds_bgbotscroll_write));
+ map(0xf004, 0xf004).w(this, FUNC(angelkds_state::angelkds_txbank_write));
+ map(0xf005, 0xf005).w(this, FUNC(angelkds_state::angelkds_layer_ctrl_write));
+}
-ADDRESS_MAP_START(angelkds_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void angelkds_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).bankr("bank1");
+}
-ADDRESS_MAP_START(angelkds_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP // 00 on start-up, not again
+void angelkds_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); // 00 on start-up, not again
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ map(0x40, 0x43).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
- AM_RANGE(0xc0, 0xc3) AM_READWRITE(angelkds_main_sound_r, angelkds_main_sound_w) // 02 various points
-ADDRESS_MAP_END
+ map(0xc0, 0xc3).rw(this, FUNC(angelkds_state::angelkds_main_sound_r), FUNC(angelkds_state::angelkds_main_sound_w)); // 02 various points
+}
@@ -205,20 +208,22 @@ ADDRESS_MAP_END
/* sub cpu */
-ADDRESS_MAP_START(angelkds_state::sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xaaa9, 0xaaa9) AM_READNOP
- AM_RANGE(0xaaab, 0xaaab) AM_READNOP
- AM_RANGE(0xaaac, 0xaaac) AM_READNOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(angelkds_state::sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0x80, 0x83) AM_READWRITE(angelkds_sub_sound_r, angelkds_sub_sound_w) // spcpostn
-ADDRESS_MAP_END
+void angelkds_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xaaa9, 0xaaa9).nopr();
+ map(0xaaab, 0xaaab).nopr();
+ map(0xaaac, 0xaaac).nopr();
+}
+
+void angelkds_state::sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x40, 0x41).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x83).rw(this, FUNC(angelkds_state::angelkds_sub_sound_r), FUNC(angelkds_state::angelkds_sub_sound_w)); // spcpostn
+}
/* Input Ports */
diff --git a/src/mame/drivers/anzterm.cpp b/src/mame/drivers/anzterm.cpp
index 6e588e1f21b..07903d28fbf 100644
--- a/src/mame/drivers/anzterm.cpp
+++ b/src/mame/drivers/anzterm.cpp
@@ -401,13 +401,14 @@ GFXDECODE_START( anzterm )
GFXDECODE_END
-ADDRESS_MAP_START(anzterm_state::anzterm)
+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)
// There's also a whole lot of ROM
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0000, 0x3fff).ram();
+ map(0xe000, 0xffff).rom();
+}
MACHINE_CONFIG_START(anzterm_state::anzterm)
diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp
index d640b94a516..0d982b2a1ac 100644
--- a/src/mame/drivers/apc.cpp
+++ b/src/mame/drivers/apc.cpp
@@ -470,39 +470,41 @@ RTC write bits: 76543210
m_rtc->oe_w(1);
}
-ADDRESS_MAP_START(apc_state::apc_map)
- AM_RANGE(0x00000, 0x9ffff) AM_RAM
- AM_RANGE(0xa0000, 0xa0fff) AM_RAM AM_SHARE("cmos")
+void apc_state::apc_map(address_map &map)
+{
+ map(0x00000, 0x9ffff).ram();
+ map(0xa0000, 0xa0fff).ram().share("cmos");
// AM_RANGE(0xa1000, 0xbffff) mirror CMOS
// AM_RANGE(0xc0000, 0xcffff) standard character ROM
- AM_RANGE(0xd8000, 0xd9fff) AM_RAM AM_REGION("aux_pcg", 0) // AUX character RAM
+ map(0xd8000, 0xd9fff).ram().region("aux_pcg", 0); // AUX character RAM
// AM_RANGE(0xe0000, 0xeffff) Special Character RAM
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+ map(0xfe000, 0xfffff).rom().region("ipl", 0);
+}
-ADDRESS_MAP_START(apc_state::apc_io)
+void apc_state::apc_io(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_READWRITE8(apc_dma_r, apc_dma_w,0xff00)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) // i8259
- AM_RANGE(0x28, 0x2f) AM_READWRITE8(apc_port_28_r, apc_port_28_w, 0xffff) // i8259 (even) / pit8253 (odd)
+ map(0x00, 0x1f).rw(this, FUNC(apc_state::apc_dma_r), FUNC(apc_state::apc_dma_w)).umask16(0xff00);
+ map(0x20, 0x23).rw(m_i8259_m, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // i8259
+ map(0x28, 0x2f).rw(this, FUNC(apc_state::apc_port_28_r), FUNC(apc_state::apc_port_28_w)); // i8259 (even) / pit8253 (odd)
// 0x30, 0x37 serial port 0/1 (i8251) (even/odd)
- AM_RANGE(0x38, 0x3f) AM_WRITE8(apc_dma_segments_w,0x00ff)
- AM_RANGE(0x40, 0x43) AM_READWRITE8(apc_gdc_r, apc_gdc_w, 0xffff)
- AM_RANGE(0x46, 0x47) AM_WRITE8(apc_irq_ack_w, 0x00ff)
- AM_RANGE(0x48, 0x4f) AM_READWRITE8(apc_kbd_r, apc_kbd_w, 0x00ff)
- AM_RANGE(0x50, 0x53) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff ) // upd765
- AM_RANGE(0x58, 0x59) AM_READWRITE8(apc_rtc_r, apc_rtc_w, 0x00ff)
+ map(0x38, 0x3f).w(this, FUNC(apc_state::apc_dma_segments_w)).umask16(0x00ff);
+ map(0x40, 0x43).rw(this, FUNC(apc_state::apc_gdc_r), FUNC(apc_state::apc_gdc_w));
+ map(0x46, 0x46).w(this, FUNC(apc_state::apc_irq_ack_w));
+ map(0x48, 0x4f).rw(this, FUNC(apc_state::apc_kbd_r), FUNC(apc_state::apc_kbd_w)).umask16(0x00ff);
+ map(0x50, 0x53).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); // upd765
+ map(0x58, 0x58).rw(this, FUNC(apc_state::apc_rtc_r), FUNC(apc_state::apc_rtc_w));
// 0x59 CMOS enable
// 0x5a APU data (Arithmetic Processing Unit!)
// 0x5b, Power Off
// 0x5e APU status/command
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE8("upd1771c", upd1771c_device, read, write, 0x00ff)
+ map(0x60, 0x60).rw("upd1771c", FUNC(upd1771c_device::read), FUNC(upd1771c_device::write));
// AM_RANGE(0x68, 0x6f) i8255 , ODA printer port (A: status (R) B: data (W) C: command (W))
// 0x70, 0x76 AM_DEVREADWRITE8("upd7220_btm", upd7220_device, read, write, 0x00ff)
// 0x71, 0x77 IDA Controller
// 0x80, 0x90 Communication Adapter
// 0xf0, 0xf6 ASOP Controller
-ADDRESS_MAP_END
+}
/* TODO: key repeat, remove port impulse! */
INPUT_CHANGED_MEMBER(apc_state::key_stroke)
@@ -792,13 +794,15 @@ GFXDECODE_END
-ADDRESS_MAP_START(apc_state::upd7220_1_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_1")
-ADDRESS_MAP_END
+void apc_state::upd7220_1_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram().share("video_ram_1");
+}
-ADDRESS_MAP_START(apc_state::upd7220_2_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_2")
-ADDRESS_MAP_END
+void apc_state::upd7220_2_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram().share("video_ram_2");
+}
/*
irq assignment:
diff --git a/src/mame/drivers/apexc.cpp b/src/mame/drivers/apexc.cpp
index 5d202fe0bd9..f42a6eb6b19 100644
--- a/src/mame/drivers/apexc.cpp
+++ b/src/mame/drivers/apexc.cpp
@@ -844,10 +844,11 @@ static GFXDECODE_START( apexc )
GFXDECODE_END
-ADDRESS_MAP_START(apexc_state::apexc_mem_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("maincpu")
- AM_RANGE(0x1000, 0x7fff) AM_NOP
-ADDRESS_MAP_END
+void apexc_state::apexc_mem_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("maincpu");
+ map(0x1000, 0x7fff).noprw();
+}
MACHINE_CONFIG_START(apexc_state::apexc)
diff --git a/src/mame/drivers/apf.cpp b/src/mame/drivers/apf.cpp
index c613635d5b2..5fc3b8ec472 100644
--- a/src/mame/drivers/apf.cpp
+++ b/src/mame/drivers/apf.cpp
@@ -314,25 +314,27 @@ WRITE8_MEMBER( apf_state::serial_w)
logerror("serial w %04x %04x\n",offset,data);
}
-ADDRESS_MAP_START(apf_state::apfm1000_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x1000) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x6800, 0x7fff) AM_NOP // BASIC accesses ROM here too, but this is installed at machine_start
- AM_RANGE(0x8000, 0x9fff) AM_DEVREAD("cartslot", apf_cart_slot_device, read_rom)
- AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apf_state::apfimag_map)
- AM_IMPORT_FROM(apfm1000_map)
- AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
+void apf_state::apfm1000_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram().share("videoram");
+ map(0x2000, 0x2003).mirror(0x1ffc).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4000, 0x4fff).mirror(0x1000).rom().region("roms", 0);
+ map(0x6800, 0x7fff).noprw(); // BASIC accesses ROM here too, but this is installed at machine_start
+ map(0x8000, 0x9fff).r(m_cart, FUNC(apf_cart_slot_device::read_rom));
+ map(0xe000, 0xefff).mirror(0x1000).rom().region("roms", 0);
+}
+
+void apf_state::apfimag_map(address_map &map)
+{
+ apfm1000_map(map);
+ map(0x6000, 0x6003).mirror(0x03fc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
// These need to be confirmed, disk does not work
- AM_RANGE(0x6400, 0x64ff) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0x6500, 0x6503) AM_DEVREADWRITE("fdc", fd1771_device, read, write)
- AM_RANGE(0x6600, 0x6600) AM_WRITE(apf_dischw_w)
- AM_RANGE(0xa000, 0xbfff) AM_RAM // standard
- AM_RANGE(0xc000, 0xdfff) AM_RAM // expansion
-ADDRESS_MAP_END
+ map(0x6400, 0x64ff).rw(this, FUNC(apf_state::serial_r), FUNC(apf_state::serial_w));
+ map(0x6500, 0x6503).rw(m_fdc, FUNC(fd1771_device::read), FUNC(fd1771_device::write));
+ map(0x6600, 0x6600).w(this, FUNC(apf_state::apf_dischw_w));
+ map(0xa000, 0xbfff).ram(); // standard
+ map(0xc000, 0xdfff).ram(); // expansion
+}
/* Each controller has these features:
diff --git a/src/mame/drivers/apogee.cpp b/src/mame/drivers/apogee.cpp
index 707632de396..fc6c6e7f398 100644
--- a/src/mame/drivers/apogee.cpp
+++ b/src/mame/drivers/apogee.cpp
@@ -48,16 +48,17 @@ public:
/* Address maps */
-ADDRESS_MAP_START(apogee_state::apogee_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0xebff ) AM_RAM // RAM
- AM_RANGE( 0xec00, 0xec03 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) AM_MIRROR(0x00fc)
- AM_RANGE( 0xed00, 0xed03 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x00fc)
+void apogee_state::apogee_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0xebff).ram(); // RAM
+ map(0xec00, 0xec03).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).mirror(0x00fc);
+ map(0xed00, 0xed03).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x00fc);
//AM_RANGE( 0xee00, 0xee03 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x00fc)
- AM_RANGE( 0xef00, 0xef01 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x00fe) // video
- AM_RANGE( 0xf000, 0xf0ff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
+ map(0xef00, 0xef01).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x00fe); // video
+ map(0xf000, 0xf0ff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf000, 0xffff).rom(); // System ROM
+}
/* Input ports */
static INPUT_PORTS_START( apogee )
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index 309cd82d6ff..9a272c712b4 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -678,223 +678,229 @@ WRITE32_MEMBER(apollo_state::apollo_f8_w){
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(apollo_state::dn3500_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w)
-
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */
- AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w)
- AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff)
- AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff)
- AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff )
- AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff )
- AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff )
- AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff )
- AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff )
- AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
- AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
- AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
- AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff)
-
- AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff )
- AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff )
-
- AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
- AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff)
+void apollo_state::dn3500_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w));
+
+ map(0x000000, 0x00ffff).rom(); /* boot ROM */
+ map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w));
+ map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w));
+ map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w));
+ map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w));
+ map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w));
+ map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+ map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w));
+ map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w));
+ map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w));
+ map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write));
+ map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w));
+ map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w));
+
+ map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w));
+ map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w));
+
+ map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w));
+ map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w));
// FIXME: must match with RAM size in driver/apollo_sio.c
// AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */
- AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram")
+ map(DN3500_RAM_BASE, DN3500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram");
- AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff)
- AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff)
+ map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
+ map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
- AM_RANGE(0x05e800, 0x05ec07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_ccr_r, apollo_ccr_w, 0xffffffff)
- AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_cgm_r, apollo_cgm_w, 0xffffffff)
+ map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
+ map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
// AM_RANGE(0x03020000, 0x0303ffff) Cache Tag Store (DN4500 only)
// AM_RANGE(0x04000000, 0x0400ffff) Cache Tag Data (DN4500 only)
// AM_RANGE(0x0e000000, 0x0fffffff) FPA address space
// AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apollo_state::dsp3500_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */
- AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w)
- AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff)
- AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff)
- AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff )
- AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff )
- AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff )
- AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff )
- AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff )
- AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
- AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
- AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
- AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff)
-
- AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff )
- AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff )
-
- AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
-
- AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram")
-
- AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff)
+}
+
+void apollo_state::dsp3500_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w));
+ map(0x000000, 0x00ffff).rom(); /* boot ROM */
+ map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w));
+ map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w));
+ map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w));
+ map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w));
+ map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w));
+ map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+ map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w));
+ map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w));
+ map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w));
+ map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write));
+ map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w));
+ map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w));
+
+ map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w));
+ map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w));
+
+ map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w));
+
+ map(DN3500_RAM_BASE, DN3500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram");
+
+ map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w));
// AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apollo_state::dn3000_map)
- AM_RANGE(0x000000, 0xffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w)
-
- AM_RANGE(0x000000, 0x007fff) AM_ROM /* boot ROM */
- AM_RANGE(0x000000, 0x007fff) AM_WRITE(apollo_rom_w)
- AM_RANGE(0x008000, 0x0080ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff)
- AM_RANGE(0x008100, 0x0081ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff)
- AM_RANGE(0x008400, 0x0087ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x008800, 0x0088ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff )
- AM_RANGE(0x008900, 0x0089ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff )
- AM_RANGE(0x009000, 0x0090ff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff )
- AM_RANGE(0x009100, 0x0091ff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
- AM_RANGE(0x009200, 0x0092ff) AM_READWRITE8(apollo_dma_page_register_r, apollo_dma_page_register_w, 0xffffffff )
- AM_RANGE(0x009300, 0x0093ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
- AM_RANGE(0x009400, 0x0094ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x009500, 0x0095ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x009600, 0x0096ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
-
- AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
- AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff)
+}
+
+void apollo_state::dn3000_map(address_map &map)
+{
+ map(0x000000, 0xffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w));
+
+ map(0x000000, 0x007fff).rom(); /* boot ROM */
+ map(0x000000, 0x007fff).w(this, FUNC(apollo_state::apollo_rom_w));
+ map(0x008000, 0x0080ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w));
+ map(0x008100, 0x0081ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w));
+ map(0x008400, 0x0087ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x008800, 0x0088ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+ map(0x008900, 0x0089ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w));
+ map(0x009000, 0x0090ff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w));
+ map(0x009100, 0x0091ff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w));
+ map(0x009200, 0x0092ff).rw(this, FUNC(apollo_state::apollo_dma_page_register_r), FUNC(apollo_state::apollo_dma_page_register_w));
+ map(0x009300, 0x0093ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w));
+ map(0x009400, 0x0094ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x009500, 0x0095ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x009600, 0x0096ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write));
+
+ map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w));
+ map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w));
// FIXME: must match with RAM size in driver/apollo_sio.c
// AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */
- AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram")
+ map(DN3000_RAM_BASE, DN3000_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram");
- AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff)
- AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff)
+ map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
+ map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
- AM_RANGE(0x05e800, 0x05ec07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_ccr_r, apollo_ccr_w, 0xffffffff)
- AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_cgm_r, apollo_cgm_w, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
+ map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
+}
-ADDRESS_MAP_START(apollo_state::dsp3000_map)
- AM_RANGE(0x000000, 0xffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w)
+void apollo_state::dsp3000_map(address_map &map)
+{
+ map(0x000000, 0xffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w));
+
+ map(0x000000, 0x007fff).rom(); /* boot ROM */
+ map(0x000000, 0x007fff).w(this, FUNC(apollo_state::apollo_rom_w));
+ map(0x008000, 0x0080ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w));
+ map(0x008100, 0x0081ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w));
+ map(0x008400, 0x0087ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x008800, 0x0088ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+ map(0x008900, 0x0089ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w));
+
+ map(0x009000, 0x0090ff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w));
+ map(0x009100, 0x0091ff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w));
+ map(0x009200, 0x0092ff).rw(this, FUNC(apollo_state::apollo_dma_page_register_r), FUNC(apollo_state::apollo_dma_page_register_w));
+ map(0x009300, 0x0093ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w));
+ map(0x009400, 0x0094ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x009500, 0x0095ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x009600, 0x0096ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write));
+
+ map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w));
+ map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w));
- AM_RANGE(0x000000, 0x007fff) AM_ROM /* boot ROM */
- AM_RANGE(0x000000, 0x007fff) AM_WRITE(apollo_rom_w)
- AM_RANGE(0x008000, 0x0080ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff)
- AM_RANGE(0x008100, 0x0081ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff)
- AM_RANGE(0x008400, 0x0087ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x008800, 0x0088ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff )
- AM_RANGE(0x008900, 0x0089ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff )
+ // FIXME: must match with RAM size in driver/apollo_sio.c
+ // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */
+ map(DN3000_RAM_BASE, DN3000_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram");
- AM_RANGE(0x009000, 0x0090ff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff )
- AM_RANGE(0x009100, 0x0091ff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
- AM_RANGE(0x009200, 0x0092ff) AM_READWRITE8(apollo_dma_page_register_r, apollo_dma_page_register_w, 0xffffffff )
- AM_RANGE(0x009300, 0x0093ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
- AM_RANGE(0x009400, 0x0094ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x009500, 0x0095ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x009600, 0x0096ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
+}
- AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
- AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff)
- // FIXME: must match with RAM size in driver/apollo_sio.c
- // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */
- AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram")
-
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(apollo_state::dn5500_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */
- AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w)
- AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff)
- AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff)
- AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff )
- AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff )
- AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff )
- AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff )
- AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff )
- AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
- AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
- AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
- AM_RANGE(0x011400, 0x0114ff) AM_READWRITE8(dn5500_memory_present_register_r, dn5500_memory_present_register_w, 0xffffffff )
- AM_RANGE(0x011500, 0x0115ff) AM_READWRITE8(dn5500_11500_r, dn5500_11500_w, 0xffffffff )
- AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff)
-
- AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff )
- AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff )
-
- AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
- AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff)
+void apollo_state::dn5500_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w));
+ map(0x000000, 0x00ffff).rom(); /* boot ROM */
+ map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w));
+ map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w));
+ map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w));
+ map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w));
+ map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w));
+ map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+ map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w));
+ map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w));
+ map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w));
+ map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write));
+ map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w));
+ map(0x011400, 0x0114ff).rw(this, FUNC(apollo_state::dn5500_memory_present_register_r), FUNC(apollo_state::dn5500_memory_present_register_w));
+ map(0x011500, 0x0115ff).rw(this, FUNC(apollo_state::dn5500_11500_r), FUNC(apollo_state::dn5500_11500_w));
+ map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w));
+
+ map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w));
+ map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w));
+
+ map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w));
+ map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w));
// FIXME: must match with RAM size in driver/apollo_sio.c
// AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */
- AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram")
+ map(DN5500_RAM_BASE, DN5500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram");
- AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff)
- AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff)
+ map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
+ map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
- AM_RANGE(0x05e800, 0x05ec07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_ccr_r, apollo_ccr_w, 0xffffffff)
- AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_cgm_r, apollo_cgm_w, 0xffffffff)
+ map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
+ map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
// AM_RANGE(0x03020000, 0x0303ffff) Cache Tag Store (DN4500 only)
// AM_RANGE(0x04000000, 0x0400ffff) Cache Tag Data (DN4500 only)
- AM_RANGE(0x07000000, 0x0700FFFF) AM_READWRITE8(dn5500_io_protection_map_r, dn5500_io_protection_map_w, 0xffffffff )
+ map(0x07000000, 0x0700FFFF).rw(this, FUNC(apollo_state::dn5500_io_protection_map_r), FUNC(apollo_state::dn5500_io_protection_map_w));
// AM_RANGE(0x0e000000, 0x0fffffff) FPA address space
// AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apollo_state::dsp5500_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */
- AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w)
- AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff)
- AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff)
- AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff )
- AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff )
- AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff )
- AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff )
- AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff )
- AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff )
- AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
- AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
- AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
- AM_RANGE(0x011400, 0x0114ff) AM_READWRITE8(dn5500_memory_present_register_r, dn5500_memory_present_register_w, 0xffffffff )
- AM_RANGE(0x011500, 0x0115ff) AM_READWRITE8(dn5500_11500_r, dn5500_11500_w, 0xffffffff )
- AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff)
-
- AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff )
- AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff )
-
- AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
- AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff)
+}
+
+void apollo_state::dsp5500_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w));
+ map(0x000000, 0x00ffff).rom(); /* boot ROM */
+ map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w));
+ map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w));
+ map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w));
+ map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w));
+ map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w));
+ map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write));
+ map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+ map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w));
+ map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w));
+ map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w));
+ map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write));
+ map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w));
+ map(0x011400, 0x0114ff).rw(this, FUNC(apollo_state::dn5500_memory_present_register_r), FUNC(apollo_state::dn5500_memory_present_register_w));
+ map(0x011500, 0x0115ff).rw(this, FUNC(apollo_state::dn5500_11500_r), FUNC(apollo_state::dn5500_11500_w));
+ map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w));
+
+ map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w));
+ map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w));
+
+ map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w));
+ map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w));
// FIXME: must match with RAM size in driver/apollo_sio.c
- AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram")
+ map(DN5500_RAM_BASE, DN5500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram");
- AM_RANGE(0x07000000, 0x0700FFFF) AM_READWRITE8(dn5500_io_protection_map_r, dn5500_io_protection_map_w, 0xffffffff )
+ map(0x07000000, 0x0700FFFF).rw(this, FUNC(apollo_state::dn5500_io_protection_map_r), FUNC(apollo_state::dn5500_io_protection_map_w));
// AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w)
-ADDRESS_MAP_END
+}
/***************************************************************************
Machine Reset
diff --git a/src/mame/drivers/apple1.cpp b/src/mame/drivers/apple1.cpp
index b513796eb9e..fcb9f4c81c5 100644
--- a/src/mame/drivers/apple1.cpp
+++ b/src/mame/drivers/apple1.cpp
@@ -432,12 +432,13 @@ WRITE8_MEMBER(apple1_state::ram_w)
}
}
-ADDRESS_MAP_START(apple1_state::apple1_map)
- AM_RANGE(0x0000, 0xbfff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0xd010, 0xd013) AM_MIRROR(0x0fec) AM_DEVREADWRITE(A1_PIA_TAG, pia6821_device, read, write)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(A1_BASICRAM_TAG)
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION(A1_CPU_TAG, 0)
-ADDRESS_MAP_END
+void apple1_state::apple1_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(this, FUNC(apple1_state::ram_r), FUNC(apple1_state::ram_w));
+ map(0xd010, 0xd013).mirror(0x0fec).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe000, 0xefff).ram().share(A1_BASICRAM_TAG);
+ map(0xff00, 0xffff).rom().region(A1_CPU_TAG, 0);
+}
READ8_MEMBER(apple1_state::pia_keyboard_r)
{
diff --git a/src/mame/drivers/apple2.cpp b/src/mame/drivers/apple2.cpp
index f816ac89ed9..a9a0398b6bd 100644
--- a/src/mame/drivers/apple2.cpp
+++ b/src/mame/drivers/apple2.cpp
@@ -952,26 +952,28 @@ WRITE8_MEMBER(napple2_state::ram_w)
}
}
-ADDRESS_MAP_START(napple2_state::apple2_map)
- AM_RANGE(0x0000, 0xbfff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0xf) AM_READ(keyb_data_r) AM_WRITENOP
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0xf) AM_READWRITE(keyb_strobe_r, keyb_strobe_w)
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0xf) AM_READWRITE(cassette_toggle_r, cassette_toggle_w)
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0xf) AM_READWRITE(speaker_toggle_r, speaker_toggle_w)
- AM_RANGE(0xc040, 0xc040) AM_MIRROR(0xf) AM_READWRITE(utility_strobe_r, utility_strobe_w)
- AM_RANGE(0xc050, 0xc05f) AM_READ(switches_r) AM_DEVWRITE("softlatch", addressable_latch_device, write_a0)
- AM_RANGE(0xc060, 0xc067) AM_MIRROR(0x8) AM_READ(flags_r) AM_WRITENOP // includes IIgs STATE register, which ProDOS touches
- AM_RANGE(0xc070, 0xc070) AM_MIRROR(0xf) AM_READWRITE(controller_strobe_r, controller_strobe_w)
- AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w)
- AM_RANGE(0xc100, 0xc7ff) AM_READWRITE(c100_r, c100_w)
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(c800_r, c800_w)
- AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(napple2_state::inhbank_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(inh_w)
- AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w)
-ADDRESS_MAP_END
+void napple2_state::apple2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(this, FUNC(napple2_state::ram_r), FUNC(napple2_state::ram_w));
+ map(0xc000, 0xc000).mirror(0xf).r(this, FUNC(napple2_state::keyb_data_r)).nopw();
+ map(0xc010, 0xc010).mirror(0xf).rw(this, FUNC(napple2_state::keyb_strobe_r), FUNC(napple2_state::keyb_strobe_w));
+ map(0xc020, 0xc020).mirror(0xf).rw(this, FUNC(napple2_state::cassette_toggle_r), FUNC(napple2_state::cassette_toggle_w));
+ map(0xc030, 0xc030).mirror(0xf).rw(this, FUNC(napple2_state::speaker_toggle_r), FUNC(napple2_state::speaker_toggle_w));
+ map(0xc040, 0xc040).mirror(0xf).rw(this, FUNC(napple2_state::utility_strobe_r), FUNC(napple2_state::utility_strobe_w));
+ map(0xc050, 0xc05f).r(this, FUNC(napple2_state::switches_r)).w(m_softlatch, FUNC(addressable_latch_device::write_a0));
+ map(0xc060, 0xc067).mirror(0x8).r(this, FUNC(napple2_state::flags_r)).nopw(); // includes IIgs STATE register, which ProDOS touches
+ map(0xc070, 0xc070).mirror(0xf).rw(this, FUNC(napple2_state::controller_strobe_r), FUNC(napple2_state::controller_strobe_w));
+ map(0xc080, 0xc0ff).rw(this, FUNC(napple2_state::c080_r), FUNC(napple2_state::c080_w));
+ map(0xc100, 0xc7ff).rw(this, FUNC(napple2_state::c100_r), FUNC(napple2_state::c100_w));
+ map(0xc800, 0xcfff).rw(this, FUNC(napple2_state::c800_r), FUNC(napple2_state::c800_w));
+ map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void napple2_state::inhbank_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom().region("maincpu", 0x1000).w(this, FUNC(napple2_state::inh_w));
+ map(0x3000, 0x5fff).rw(this, FUNC(napple2_state::inh_r), FUNC(napple2_state::inh_w));
+}
/***************************************************************************
KEYBOARD
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp
index c43df119f37..4109124827d 100644
--- a/src/mame/drivers/apple2e.cpp
+++ b/src/mame/drivers/apple2e.cpp
@@ -2691,172 +2691,189 @@ WRITE8_MEMBER(apple2e_state::auxram2000_w) { if (m_aux_bank_ptr) { m_aux_bank_pt
READ8_MEMBER(apple2e_state::auxram4000_r) { if (m_aux_bank_ptr) { return m_aux_bank_ptr[offset+0x4000]; } else { return read_floatingbus(); } }
WRITE8_MEMBER(apple2e_state::auxram4000_w) { if (m_aux_bank_ptr) { m_aux_bank_ptr[offset+0x4000] = data; } }
-ADDRESS_MAP_START(apple2e_state::apple2e_map)
- AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w)
- AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w)
- AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::apple2c_map)
- AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_iic_r, c000_iic_w)
- AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w)
- AM_RANGE(0xc098, 0xc09b) AM_DEVREADWRITE(IIC_ACIA1_TAG, mos6551_device, read, write)
- AM_RANGE(0xc0a8, 0xc0ab) AM_DEVREADWRITE(IIC_ACIA2_TAG, mos6551_device, read, write)
- AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::apple2c_memexp_map)
- AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_iic_r, c000_iic_w)
- AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w)
- AM_RANGE(0xc098, 0xc09b) AM_DEVREADWRITE(IIC_ACIA1_TAG, mos6551_device, read, write)
- AM_RANGE(0xc0a8, 0xc0ab) AM_DEVREADWRITE(IIC_ACIA2_TAG, mos6551_device, read, write)
- AM_RANGE(0xc0c0, 0xc0c3) AM_READWRITE(memexp_r, memexp_w)
- AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::laser128_map)
- AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w)
- AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w)
+void apple2e_state::apple2e_map(address_map &map)
+{
+ map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8));
+ map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8));
+ map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8));
+ map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_r), FUNC(apple2e_state::c000_w));
+ map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w));
+ map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8));
+ map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8));
+ map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8));
+ map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void apple2e_state::apple2c_map(address_map &map)
+{
+ map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8));
+ map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8));
+ map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8));
+ map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_iic_r), FUNC(apple2e_state::c000_iic_w));
+ map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w));
+ map(0xc098, 0xc09b).rw(m_acia1, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xc0a8, 0xc0ab).rw(IIC_ACIA2_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8));
+ map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8));
+ map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8));
+ map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void apple2e_state::apple2c_memexp_map(address_map &map)
+{
+ map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8));
+ map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8));
+ map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8));
+ map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_iic_r), FUNC(apple2e_state::c000_iic_w));
+ map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w));
+ map(0xc098, 0xc09b).rw(m_acia1, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xc0a8, 0xc0ab).rw(IIC_ACIA2_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xc0c0, 0xc0c3).rw(this, FUNC(apple2e_state::memexp_r), FUNC(apple2e_state::memexp_w));
+ map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8));
+ map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8));
+ map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8));
+ map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void apple2e_state::laser128_map(address_map &map)
+{
+ map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8));
+ map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8));
+ map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8));
+ map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_r), FUNC(apple2e_state::c000_w));
+ map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w));
// AM_RANGE(0xc098, 0xc09b) AM_DEVREADWRITE(IIC_ACIA1_TAG, mos6551_device, read, write)
// AM_RANGE(0xc0a8, 0xc0ab) AM_DEVREADWRITE(IIC_ACIA2_TAG, mos6551_device, read, write)
- AM_RANGE(0xc0d0, 0xc0d3) AM_READWRITE(memexp_r, memexp_w)
- AM_RANGE(0xc0e0, 0xc0ef) AM_DEVREADWRITE(LASER128_UDC_TAG, applefdc_base_device, read, write)
- AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::r0000bank_map)
- AM_RANGE(0x0000, 0x01ff) AM_READWRITE(ram0000_r, ram0000_w)
- AM_RANGE(0x0200, 0x03ff) AM_READWRITE(auxram0000_r, auxram0000_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::r0200bank_map)
- AM_RANGE(0x0000, 0x01ff) AM_READWRITE(ram0200_r, ram0200_w) // wr 0 rd 0
- AM_RANGE(0x0200, 0x03ff) AM_READWRITE(auxram0200_r, ram0200_w) // wr 0 rd 1
- AM_RANGE(0x0400, 0x05ff) AM_READWRITE(ram0200_r, auxram0200_w) // wr 1 rd 0
- AM_RANGE(0x0600, 0x07ff) AM_READWRITE(auxram0200_r, auxram0200_w) // wr 1 rd 1
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::r0400bank_map)
- AM_RANGE(0x0000, 0x03ff) AM_READWRITE(ram0400_r, ram0400_w) // wr 0 rd 0
- AM_RANGE(0x0400, 0x07ff) AM_READWRITE(auxram0400_r, ram0400_w) // wr 0 rd 1
- AM_RANGE(0x0800, 0x0bff) AM_READWRITE(ram0400_r, auxram0400_w) // wr 1 rd 0
- AM_RANGE(0x0c00, 0x0fff) AM_READWRITE(auxram0400_r, auxram0400_w) // wr 1 rd 1
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::r0800bank_map)
- AM_RANGE(0x0000, 0x17ff) AM_READWRITE(ram0800_r, ram0800_w)
- AM_RANGE(0x2000, 0x37ff) AM_READWRITE(auxram0800_r, ram0800_w)
- AM_RANGE(0x4000, 0x57ff) AM_READWRITE(ram0800_r, auxram0800_w)
- AM_RANGE(0x6000, 0x77ff) AM_READWRITE(auxram0800_r, auxram0800_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::r2000bank_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ram2000_r, ram2000_w)
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(auxram2000_r, ram2000_w)
- AM_RANGE(0x4000, 0x5fff) AM_READWRITE(ram2000_r, auxram2000_w)
- AM_RANGE(0x6000, 0x7fff) AM_READWRITE(auxram2000_r, auxram2000_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::r4000bank_map)
- AM_RANGE(0x00000, 0x07fff) AM_READWRITE(ram4000_r, ram4000_w)
- AM_RANGE(0x08000, 0x0ffff) AM_READWRITE(auxram4000_r, ram4000_w)
- AM_RANGE(0x10000, 0x17fff) AM_READWRITE(ram4000_r, auxram4000_w)
- AM_RANGE(0x18000, 0x1ffff) AM_READWRITE(auxram4000_r, auxram4000_w)
- AM_RANGE(0x20000, 0x23fff) AM_READWRITE(cec4000_r, ram4000_w)
- AM_RANGE(0x24000, 0x27fff) AM_READWRITE(cec8000_r, ram8000_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::c100bank_map)
- AM_RANGE(0x0000, 0x01ff) AM_READWRITE(c100_r, c100_w)
- AM_RANGE(0x0200, 0x03ff) AM_READ(c100_int_r) AM_WRITENOP
- AM_RANGE(0x0400, 0x05ff) AM_READ(c100_int_bank_r) AM_WRITENOP
- AM_RANGE(0x0600, 0x07ff) AM_READ(c100_cec_r) AM_WRITENOP
- AM_RANGE(0x0800, 0x09ff) AM_READ(c100_cec_bank_r) AM_WRITENOP
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::c300bank_map)
- AM_RANGE(0x0000, 0x00ff) AM_READWRITE(c300_r, c300_w)
- AM_RANGE(0x0100, 0x01ff) AM_READ(c300_int_r) AM_WRITENOP
- AM_RANGE(0x0200, 0x02ff) AM_READ(c300_int_bank_r) AM_WRITENOP
- AM_RANGE(0x0300, 0x03ff) AM_READ(c300_cec_r) AM_WRITENOP
- AM_RANGE(0x0400, 0x04ff) AM_READ(c300_cec_bank_r) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::c400bank_map)
- AM_RANGE(0x0000, 0x03ff) AM_READWRITE(c400_r, c400_w)
- AM_RANGE(0x0400, 0x07ff) AM_READWRITE(c400_int_r, c400_w)
- AM_RANGE(0x0800, 0x0bff) AM_READWRITE(c400_int_bank_r, c400_w)
- AM_RANGE(0x0c00, 0x0fff) AM_READ(c400_cec_r) AM_WRITENOP
- AM_RANGE(0x1000, 0x13ff) AM_READ(c400_cec_bank_r) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::c800bank_map)
- AM_RANGE(0x0000, 0x07ff) AM_READWRITE(c800_r, c800_w)
- AM_RANGE(0x0800, 0x0fff) AM_READWRITE(c800_int_r, c800_w)
- AM_RANGE(0x1000, 0x17ff) AM_READWRITE(c800_b2_int_r, c800_w)
- AM_RANGE(0x1800, 0x1fff) AM_READ(c800_cec_r) AM_WRITENOP
- AM_RANGE(0x2000, 0x27ff) AM_READ(c800_cec_bank_r) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::inhbank_map)
- AM_RANGE(0x0000, 0x2fff) AM_DEVICE(A2_LCBANK_TAG, address_map_bank_device, amap8)
- AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::lcbank_map)
- AM_RANGE(0x00000, 0x02fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(lc_w)
- AM_RANGE(0x03000, 0x05fff) AM_READWRITE(lc_r, lc_w)
- AM_RANGE(0x06000, 0x08fff) AM_READWRITE(lc_romswitch_r, lc_romswitch_w)
- AM_RANGE(0x09000, 0x0bfff) AM_ROM AM_REGION("maincpu", 0x5000) AM_WRITE(lc_w)
- AM_RANGE(0x0c000, 0x0efff) AM_READWRITE(lc_r, lc_w)
- AM_RANGE(0x0f000, 0x11fff) AM_ROM AM_REGION("maincpu", 0xd000) AM_WRITE(lc_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apple2e_state::spectred_keyb_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x0fff) AM_RAM
-ADDRESS_MAP_END
+ map(0xc0d0, 0xc0d3).rw(this, FUNC(apple2e_state::memexp_r), FUNC(apple2e_state::memexp_w));
+ map(0xc0e0, 0xc0ef).rw(m_laserudc, FUNC(applefdc_base_device::read), FUNC(applefdc_base_device::write));
+ map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8));
+ map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8));
+ map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8));
+ map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void apple2e_state::r0000bank_map(address_map &map)
+{
+ map(0x0000, 0x01ff).rw(this, FUNC(apple2e_state::ram0000_r), FUNC(apple2e_state::ram0000_w));
+ map(0x0200, 0x03ff).rw(this, FUNC(apple2e_state::auxram0000_r), FUNC(apple2e_state::auxram0000_w));
+}
+
+void apple2e_state::r0200bank_map(address_map &map)
+{
+ map(0x0000, 0x01ff).rw(this, FUNC(apple2e_state::ram0200_r), FUNC(apple2e_state::ram0200_w)); // wr 0 rd 0
+ map(0x0200, 0x03ff).rw(this, FUNC(apple2e_state::auxram0200_r), FUNC(apple2e_state::ram0200_w)); // wr 0 rd 1
+ map(0x0400, 0x05ff).rw(this, FUNC(apple2e_state::ram0200_r), FUNC(apple2e_state::auxram0200_w)); // wr 1 rd 0
+ map(0x0600, 0x07ff).rw(this, FUNC(apple2e_state::auxram0200_r), FUNC(apple2e_state::auxram0200_w)); // wr 1 rd 1
+}
+
+void apple2e_state::r0400bank_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(this, FUNC(apple2e_state::ram0400_r), FUNC(apple2e_state::ram0400_w)); // wr 0 rd 0
+ map(0x0400, 0x07ff).rw(this, FUNC(apple2e_state::auxram0400_r), FUNC(apple2e_state::ram0400_w)); // wr 0 rd 1
+ map(0x0800, 0x0bff).rw(this, FUNC(apple2e_state::ram0400_r), FUNC(apple2e_state::auxram0400_w)); // wr 1 rd 0
+ map(0x0c00, 0x0fff).rw(this, FUNC(apple2e_state::auxram0400_r), FUNC(apple2e_state::auxram0400_w)); // wr 1 rd 1
+}
+
+void apple2e_state::r0800bank_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rw(this, FUNC(apple2e_state::ram0800_r), FUNC(apple2e_state::ram0800_w));
+ map(0x2000, 0x37ff).rw(this, FUNC(apple2e_state::auxram0800_r), FUNC(apple2e_state::ram0800_w));
+ map(0x4000, 0x57ff).rw(this, FUNC(apple2e_state::ram0800_r), FUNC(apple2e_state::auxram0800_w));
+ map(0x6000, 0x77ff).rw(this, FUNC(apple2e_state::auxram0800_r), FUNC(apple2e_state::auxram0800_w));
+}
+
+void apple2e_state::r2000bank_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(apple2e_state::ram2000_r), FUNC(apple2e_state::ram2000_w));
+ map(0x2000, 0x3fff).rw(this, FUNC(apple2e_state::auxram2000_r), FUNC(apple2e_state::ram2000_w));
+ map(0x4000, 0x5fff).rw(this, FUNC(apple2e_state::ram2000_r), FUNC(apple2e_state::auxram2000_w));
+ map(0x6000, 0x7fff).rw(this, FUNC(apple2e_state::auxram2000_r), FUNC(apple2e_state::auxram2000_w));
+}
+
+void apple2e_state::r4000bank_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rw(this, FUNC(apple2e_state::ram4000_r), FUNC(apple2e_state::ram4000_w));
+ map(0x08000, 0x0ffff).rw(this, FUNC(apple2e_state::auxram4000_r), FUNC(apple2e_state::ram4000_w));
+ map(0x10000, 0x17fff).rw(this, FUNC(apple2e_state::ram4000_r), FUNC(apple2e_state::auxram4000_w));
+ map(0x18000, 0x1ffff).rw(this, FUNC(apple2e_state::auxram4000_r), FUNC(apple2e_state::auxram4000_w));
+ map(0x20000, 0x23fff).rw(this, FUNC(apple2e_state::cec4000_r), FUNC(apple2e_state::ram4000_w));
+ map(0x24000, 0x27fff).rw(this, FUNC(apple2e_state::cec8000_r), FUNC(apple2e_state::ram8000_w));
+}
+
+void apple2e_state::c100bank_map(address_map &map)
+{
+ map(0x0000, 0x01ff).rw(this, FUNC(apple2e_state::c100_r), FUNC(apple2e_state::c100_w));
+ map(0x0200, 0x03ff).r(this, FUNC(apple2e_state::c100_int_r)).nopw();
+ map(0x0400, 0x05ff).r(this, FUNC(apple2e_state::c100_int_bank_r)).nopw();
+ map(0x0600, 0x07ff).r(this, FUNC(apple2e_state::c100_cec_r)).nopw();
+ map(0x0800, 0x09ff).r(this, FUNC(apple2e_state::c100_cec_bank_r)).nopw();
+
+}
+
+void apple2e_state::c300bank_map(address_map &map)
+{
+ map(0x0000, 0x00ff).rw(this, FUNC(apple2e_state::c300_r), FUNC(apple2e_state::c300_w));
+ map(0x0100, 0x01ff).r(this, FUNC(apple2e_state::c300_int_r)).nopw();
+ map(0x0200, 0x02ff).r(this, FUNC(apple2e_state::c300_int_bank_r)).nopw();
+ map(0x0300, 0x03ff).r(this, FUNC(apple2e_state::c300_cec_r)).nopw();
+ map(0x0400, 0x04ff).r(this, FUNC(apple2e_state::c300_cec_bank_r)).nopw();
+}
+
+void apple2e_state::c400bank_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(this, FUNC(apple2e_state::c400_r), FUNC(apple2e_state::c400_w));
+ map(0x0400, 0x07ff).rw(this, FUNC(apple2e_state::c400_int_r), FUNC(apple2e_state::c400_w));
+ map(0x0800, 0x0bff).rw(this, FUNC(apple2e_state::c400_int_bank_r), FUNC(apple2e_state::c400_w));
+ map(0x0c00, 0x0fff).r(this, FUNC(apple2e_state::c400_cec_r)).nopw();
+ map(0x1000, 0x13ff).r(this, FUNC(apple2e_state::c400_cec_bank_r)).nopw();
+}
+
+void apple2e_state::c800bank_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rw(this, FUNC(apple2e_state::c800_r), FUNC(apple2e_state::c800_w));
+ map(0x0800, 0x0fff).rw(this, FUNC(apple2e_state::c800_int_r), FUNC(apple2e_state::c800_w));
+ map(0x1000, 0x17ff).rw(this, FUNC(apple2e_state::c800_b2_int_r), FUNC(apple2e_state::c800_w));
+ map(0x1800, 0x1fff).r(this, FUNC(apple2e_state::c800_cec_r)).nopw();
+ map(0x2000, 0x27ff).r(this, FUNC(apple2e_state::c800_cec_bank_r)).nopw();
+}
+
+void apple2e_state::inhbank_map(address_map &map)
+{
+ map(0x0000, 0x2fff).m(m_lcbank, FUNC(address_map_bank_device::amap8));
+ map(0x3000, 0x5fff).rw(this, FUNC(apple2e_state::inh_r), FUNC(apple2e_state::inh_w));
+}
+
+void apple2e_state::lcbank_map(address_map &map)
+{
+ map(0x00000, 0x02fff).rom().region("maincpu", 0x1000).w(this, FUNC(apple2e_state::lc_w));
+ map(0x03000, 0x05fff).rw(this, FUNC(apple2e_state::lc_r), FUNC(apple2e_state::lc_w));
+ map(0x06000, 0x08fff).rw(this, FUNC(apple2e_state::lc_romswitch_r), FUNC(apple2e_state::lc_romswitch_w));
+ map(0x09000, 0x0bfff).rom().region("maincpu", 0x5000).w(this, FUNC(apple2e_state::lc_w));
+ map(0x0c000, 0x0efff).rw(this, FUNC(apple2e_state::lc_r), FUNC(apple2e_state::lc_w));
+ map(0x0f000, 0x11fff).rom().region("maincpu", 0xd000).w(this, FUNC(apple2e_state::lc_w));
+}
+
+void apple2e_state::spectred_keyb_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x0fff).ram();
+}
/***************************************************************************
KEYBOARD
diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp
index a6488ac1324..fcd7f2912b7 100644
--- a/src/mame/drivers/apple2gs.cpp
+++ b/src/mame/drivers/apple2gs.cpp
@@ -181,9 +181,10 @@ static const floppy_interface apple2gs_floppy525_floppy_interface =
};
-ADDRESS_MAP_START(apple2gs_state::apple2gs_map)
+void apple2gs_state::apple2gs_map(address_map &map)
+{
/* nothing in the address map - everything is added dynamically */
-ADDRESS_MAP_END
+}
// ADB microcontroller emulation
//
diff --git a/src/mame/drivers/apple3.cpp b/src/mame/drivers/apple3.cpp
index 3aefaec97ea..b77cc74fcad 100644
--- a/src/mame/drivers/apple3.cpp
+++ b/src/mame/drivers/apple3.cpp
@@ -31,9 +31,10 @@
#include "softlist.h"
#include "speaker.h"
-ADDRESS_MAP_START(apple3_state::apple3_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(apple3_memory_r, apple3_memory_w)
-ADDRESS_MAP_END
+void apple3_state::apple3_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(apple3_state::apple3_memory_r), FUNC(apple3_state::apple3_memory_w));
+}
static SLOT_INTERFACE_START(apple3_cards)
SLOT_INTERFACE("cffa2", A2BUS_CFFA2_6502) /* CFFA2000 Compact Flash for Apple II (www.dreher.net), 6502 firmware */
diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp
index deb55fb9735..94634aabc4d 100644
--- a/src/mame/drivers/applix.cpp
+++ b/src/mame/drivers/applix.cpp
@@ -444,55 +444,60 @@ WRITE16_MEMBER( applix_state::fdc_cmd_w )
m_data_or_cmd = 1;
}
-ADDRESS_MAP_START(applix_state::applix_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x3fffff) AM_RAM AM_SHARE("expansion") // Expansion
- AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_MIRROR(0x80000) AM_SHARE("base") // Main ram
- AM_RANGE(0x500000, 0x51ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x600000, 0x60007f) AM_WRITE(palette_w)
- AM_RANGE(0x600080, 0x6000ff) AM_WRITE(dac_latch_w)
- AM_RANGE(0x600100, 0x60017f) AM_WRITE(video_latch_w) //video latch (=border colour, high nybble; video base, low nybble) (odd)
- AM_RANGE(0x600180, 0x6001ff) AM_WRITE(analog_latch_w)
+void applix_state::applix_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ map(0x000000, 0x3fffff).ram().share("expansion"); // Expansion
+ map(0x400000, 0x47ffff).ram().mirror(0x80000).share("base"); // Main ram
+ map(0x500000, 0x51ffff).rom().region("maincpu", 0);
+ map(0x600000, 0x60007f).w(this, FUNC(applix_state::palette_w));
+ map(0x600080, 0x6000ff).w(this, FUNC(applix_state::dac_latch_w));
+ map(0x600100, 0x60017f).w(this, FUNC(applix_state::video_latch_w)); //video latch (=border colour, high nybble; video base, low nybble) (odd)
+ map(0x600180, 0x6001ff).w(this, FUNC(applix_state::analog_latch_w));
//AM_RANGE(0x700000, 0x700007) z80-scc (ch b control, ch b data, ch a control, ch a data) on even addresses
- AM_RANGE(0x700080, 0x7000ff) AM_READ(applix_inputs_r)
- AM_RANGE(0x700100, 0x70011f) AM_MIRROR(0x60) AM_DEVREADWRITE8("via6522", via6522_device, read, write, 0xff00)
- AM_RANGE(0x700180, 0x700181) AM_MIRROR(0x7c) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00)
- AM_RANGE(0x700182, 0x700183) AM_MIRROR(0x7c) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
- AM_RANGE(0xffffc0, 0xffffc1) AM_READWRITE(fdc_data_r,fdc_data_w)
+ map(0x700080, 0x7000ff).r(this, FUNC(applix_state::applix_inputs_r));
+ map(0x700100, 0x70011f).mirror(0x60).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0xff00);
+ map(0x700180, 0x700180).mirror(0x7c).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x700182, 0x700182).mirror(0x7c).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xffffc0, 0xffffc1).rw(this, FUNC(applix_state::fdc_data_r), FUNC(applix_state::fdc_data_w));
//AM_RANGE(0xffffc2, 0xffffc3) AM_READWRITE(fdc_int_r,fdc_int_w) // optional
- AM_RANGE(0xffffc8, 0xffffcd) AM_READ(fdc_stat_r)
- AM_RANGE(0xffffd0, 0xffffd1) AM_WRITE(fdc_cmd_w)
+ map(0xffffc8, 0xffffcd).r(this, FUNC(applix_state::fdc_stat_r));
+ map(0xffffd0, 0xffffd1).w(this, FUNC(applix_state::fdc_cmd_w));
//600000, 6FFFFF io ports and latches
//700000, 7FFFFF peripheral chips and devices
//800000, FFC000 optional roms
//FFFFC0, FFFFFF disk controller board
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(applix_state::subcpu_mem)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(applix_state::subcpu_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_READ(port00_r) //PORTR
- AM_RANGE(0x08, 0x0f) AM_READWRITE(port08_r,port08_w) //Disk select
- AM_RANGE(0x10, 0x17) AM_READWRITE(port10_r,port10_w) //IRQ
- AM_RANGE(0x18, 0x1f) AM_READWRITE(port18_r,port18_w) //data&command
- AM_RANGE(0x20, 0x27) AM_MIRROR(0x18) AM_READWRITE(port20_r,port20_w) //SCSI NCR5380
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE("fdc", wd1772_device, read, write) //FDC
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_READWRITE(port60_r,port60_w) //anotherZ80SCC
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(applix_state::keytronic_pc3270_program)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("kbdcpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(applix_state::keytronic_pc3270_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(internal_data_read, internal_data_write)
-ADDRESS_MAP_END
+}
+
+void applix_state::subcpu_mem(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).ram();
+ map(0x8000, 0xffff).bankrw("bank1");
+}
+
+void applix_state::subcpu_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x07).r(this, FUNC(applix_state::port00_r)); //PORTR
+ map(0x08, 0x0f).rw(this, FUNC(applix_state::port08_r), FUNC(applix_state::port08_w)); //Disk select
+ map(0x10, 0x17).rw(this, FUNC(applix_state::port10_r), FUNC(applix_state::port10_w)); //IRQ
+ map(0x18, 0x1f).rw(this, FUNC(applix_state::port18_r), FUNC(applix_state::port18_w)); //data&command
+ map(0x20, 0x27).mirror(0x18).rw(this, FUNC(applix_state::port20_r), FUNC(applix_state::port20_w)); //SCSI NCR5380
+ map(0x40, 0x43).mirror(0x1c).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)); //FDC
+ map(0x60, 0x63).mirror(0x1c).rw(this, FUNC(applix_state::port60_r), FUNC(applix_state::port60_w)); //anotherZ80SCC
+}
+
+void applix_state::keytronic_pc3270_program(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("kbdcpu", 0);
+}
+
+void applix_state::keytronic_pc3270_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(applix_state::internal_data_read), FUNC(applix_state::internal_data_write));
+}
// io priorities:
// 4 cassette
diff --git a/src/mame/drivers/appoooh.cpp b/src/mame/drivers/appoooh.cpp
index 4bca537a70c..6def479dfbb 100644
--- a/src/mame/drivers/appoooh.cpp
+++ b/src/mame/drivers/appoooh.cpp
@@ -213,37 +213,40 @@ WRITE8_MEMBER(appoooh_state::adpcm_w)
*
*************************************/
-ADDRESS_MAP_START(appoooh_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM ? */
-
- AM_RANGE(0xf000, 0xffff) AM_RAM
- AM_RANGE(0xf000, 0xf01f) AM_SHARE("spriteram")
- AM_RANGE(0xf020, 0xf3ff) AM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xf420, 0xf7ff) AM_WRITE(fg_colorram_w) AM_SHARE("fg_colorram")
- AM_RANGE(0xf800, 0xf81f) AM_SHARE("spriteram_2")
- AM_RANGE(0xf820, 0xfbff) AM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xfc20, 0xffff) AM_WRITE(bg_colorram_w) AM_SHARE("bg_colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(appoooh_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x8000)
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(appoooh_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn3", sn76489_device, write)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") AM_WRITE(adpcm_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("BUTTON3") AM_WRITE(out_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(scroll_w) /* unknown */
-ADDRESS_MAP_END
+void appoooh_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram(); /* RAM ? */
+
+ map(0xf000, 0xffff).ram();
+ map(0xf000, 0xf01f).share("spriteram");
+ map(0xf020, 0xf3ff).w(this, FUNC(appoooh_state::fg_videoram_w)).share("fg_videoram");
+ map(0xf420, 0xf7ff).w(this, FUNC(appoooh_state::fg_colorram_w)).share("fg_colorram");
+ map(0xf800, 0xf81f).share("spriteram_2");
+ map(0xf820, 0xfbff).w(this, FUNC(appoooh_state::bg_videoram_w)).share("bg_videoram");
+ map(0xfc20, 0xffff).w(this, FUNC(appoooh_state::bg_colorram_w)).share("bg_colorram");
+}
+
+void appoooh_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0x9fff).rom().region("maincpu", 0x8000);
+ map(0xa000, 0xdfff).bankr("bank1");
+}
+
+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(0x03, 0x03).portr("DSW1").w(this, FUNC(appoooh_state::adpcm_w));
+ map(0x04, 0x04).portr("BUTTON3").w(this, FUNC(appoooh_state::out_w));
+ map(0x05, 0x05).w(this, FUNC(appoooh_state::scroll_w)); /* unknown */
+}
/*************************************
diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp
index b5f4176e4bf..16cc6d7d16d 100644
--- a/src/mame/drivers/apricot.cpp
+++ b/src/mame/drivers/apricot.cpp
@@ -324,28 +324,30 @@ WRITE_LINE_MEMBER( apricot_state::i8086_lock_w )
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(apricot_state::apricot_mem)
- AM_RANGE(0x00000, 0x3ffff) AM_RAMBANK("ram")
- AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x7000) AM_RAM AM_SHARE("screen_buffer")
- AM_RANGE(0xf8000, 0xfbfff) AM_MIRROR(0x4000) AM_ROM AM_REGION("bootstrap", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apricot_state::apricot_io)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("ic31", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x40, 0x47) AM_DEVREADWRITE8("ic68", wd2797_device, read, write, 0x00ff)
- AM_RANGE(0x48, 0x4f) AM_DEVREADWRITE8("ic17", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x50, 0x51) AM_MIRROR(0x06) AM_DEVWRITE8("ic7", sn76489_device, write, 0x00ff)
- AM_RANGE(0x58, 0x5f) AM_DEVREADWRITE8("ic16", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x60, 0x61) AM_READ8(sio_da_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, da_w, 0x00ff)
- AM_RANGE(0x62, 0x63) AM_READ8(sio_ca_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, ca_w, 0x00ff)
- AM_RANGE(0x64, 0x65) AM_READ8(sio_db_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, db_w, 0x00ff)
- AM_RANGE(0x66, 0x67) AM_READ8(sio_cb_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, cb_w, 0x00ff)
- AM_RANGE(0x68, 0x69) AM_MIRROR(0x04) AM_DEVWRITE8("ic30", hd6845_device, address_w, 0x00ff)
- AM_RANGE(0x6a, 0x6b) AM_MIRROR(0x04) AM_DEVREADWRITE8("ic30", hd6845_device, register_r, register_w, 0x00ff)
- AM_RANGE(0x70, 0x71) AM_MIRROR(0x04) AM_WRITE8(i8089_ca1_w, 0x00ff)
- AM_RANGE(0x72, 0x73) AM_MIRROR(0x04) AM_WRITE8(i8089_ca2_w, 0x00ff)
- AM_RANGE(0x78, 0x7f) AM_NOP // unavailable
-ADDRESS_MAP_END
+void apricot_state::apricot_mem(address_map &map)
+{
+ map(0x00000, 0x3ffff).bankrw("ram");
+ map(0xf0000, 0xf0fff).mirror(0x7000).ram().share("screen_buffer");
+ map(0xf8000, 0xfbfff).mirror(0x4000).rom().region("bootstrap", 0);
+}
+
+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(0x58, 0x5f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x60, 0x60).r(this, FUNC(apricot_state::sio_da_r)).w(m_sio, FUNC(z80sio_device::da_w)).umask16(0x00ff);
+ map(0x62, 0x62).r(this, FUNC(apricot_state::sio_ca_r)).w(m_sio, FUNC(z80sio_device::ca_w)).umask16(0x00ff);
+ map(0x64, 0x64).r(this, FUNC(apricot_state::sio_db_r)).w(m_sio, FUNC(z80sio_device::db_w)).umask16(0x00ff);
+ map(0x66, 0x66).r(this, FUNC(apricot_state::sio_cb_r)).w(m_sio, FUNC(z80sio_device::cb_w)).umask16(0x00ff);
+ map(0x68, 0x68).mirror(0x04).w(m_crtc, FUNC(hd6845_device::address_w));
+ map(0x6a, 0x6a).mirror(0x04).rw(m_crtc, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w));
+ map(0x70, 0x70).mirror(0x04).w(this, FUNC(apricot_state::i8089_ca1_w));
+ map(0x72, 0x72).mirror(0x04).w(this, FUNC(apricot_state::i8089_ca2_w));
+ map(0x78, 0x7f).noprw(); // unavailable
+}
//**************************************************************************
diff --git a/src/mame/drivers/apricotf.cpp b/src/mame/drivers/apricotf.cpp
index ceaaa7b7e1a..6f43e2162bc 100644
--- a/src/mame/drivers/apricotf.cpp
+++ b/src/mame/drivers/apricotf.cpp
@@ -251,29 +251,31 @@ void f1_state::machine_start()
// ADDRESS_MAP( act_f1_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(f1_state::act_f1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x01dff) AM_RAM
- AM_RANGE(0x01e00, 0x01fff) AM_RAM AM_SHARE("p_scrollram")
- AM_RANGE(0x02000, 0x3ffff) AM_RAM
- AM_RANGE(0xe0000, 0xe001f) AM_READWRITE(palette_r, palette_w) AM_SHARE("p_paletteram")
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
-ADDRESS_MAP_END
+void f1_state::act_f1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x01dff).ram();
+ map(0x01e00, 0x01fff).ram().share("p_scrollram");
+ map(0x02000, 0x3ffff).ram();
+ map(0xe0000, 0xe001f).rw(this, FUNC(f1_state::palette_r), FUNC(f1_state::palette_w)).share("p_paletteram");
+ map(0xf8000, 0xfffff).rom().region(I8086_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( act_f1_io )
//-------------------------------------------------
-ADDRESS_MAP_START(f1_state::act_f1_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x000f) AM_WRITE8(system_w, 0xffff)
- AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8(Z80CTC_TAG, z80ctc_device, read, write, 0x00ff)
- AM_RANGE(0x0020, 0x0027) AM_DEVREADWRITE8(Z80SIO2_TAG, z80sio_device, ba_cd_r, ba_cd_w, 0x00ff)
+void f1_state::act_f1_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x000f).w(this, FUNC(f1_state::system_w));
+ map(0x0010, 0x0017).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff);
+ map(0x0020, 0x0027).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).umask16(0x00ff);
// AM_RANGE(0x0030, 0x0031) AM_WRITE8(ctc_ack_w, 0x00ff)
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff)
+ map(0x0040, 0x0047).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff);
// AM_RANGE(0x01e0, 0x01ff) winchester
-ADDRESS_MAP_END
+}
//**************************************************************************
diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp
index 983fb95b892..e9bf1dd4d44 100644
--- a/src/mame/drivers/apricotp.cpp
+++ b/src/mame/drivers/apricotp.cpp
@@ -425,55 +425,59 @@ WRITE16_MEMBER( fp_state::mem_w )
// ADDRESS_MAP( fp_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(fp_state::fp_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xf7fff) AM_READWRITE(mem_r, mem_w)
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
-ADDRESS_MAP_END
+void fp_state::fp_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xf7fff).rw(this, FUNC(fp_state::mem_r), FUNC(fp_state::mem_w));
+ map(0xf8000, 0xfffff).rom().region(I8086_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( fp_io )
//-------------------------------------------------
-ADDRESS_MAP_START(fp_state::fp_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000, 0x007) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff)
- AM_RANGE(0x008, 0x00f) AM_DEVREADWRITE8(I8253A5_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x018, 0x01f) AM_DEVREADWRITE8(Z80SIO0_TAG, z80sio_device, ba_cd_r, ba_cd_w, 0x00ff)
- AM_RANGE(0x020, 0x021) AM_DEVWRITE8("cent_data_out", output_latch_device, write, 0x00ff)
- AM_RANGE(0x022, 0x023) AM_WRITE8(pint_clr_w, 0x00ff)
- AM_RANGE(0x024, 0x025) AM_READ8(prtr_snd_r, 0x00ff)
- AM_RANGE(0x026, 0x027) AM_DEVWRITE8(SN76489AN_TAG, sn76489a_device, write, 0x00ff)
- AM_RANGE(0x028, 0x029) AM_WRITE8(contrast_w, 0x00ff)
- AM_RANGE(0x02a, 0x02b) AM_WRITE8(palette_w, 0x00ff)
- AM_RANGE(0x02e, 0x02f) AM_WRITE(video_w)
- AM_RANGE(0x040, 0x05f) AM_DEVREADWRITE8(I8237_TAG, am9517a_device, read, write, 0x00ff)
- AM_RANGE(0x068, 0x06b) AM_DEVREADWRITE8(I8259A_TAG, pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x06c, 0x06d) AM_DEVWRITE8(MC6845_TAG, mc6845_device, address_w, 0x00ff)
- AM_RANGE(0x06e, 0x06f) AM_DEVREADWRITE8(MC6845_TAG, mc6845_device, register_r, register_w, 0x00ff)
-ADDRESS_MAP_END
+void fp_state::fp_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000, 0x007).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff);
+ map(0x008, 0x00f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x018, 0x01f).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).umask16(0x00ff);
+ map(0x020, 0x020).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x022, 0x022).w(this, FUNC(fp_state::pint_clr_w));
+ map(0x024, 0x024).r(this, FUNC(fp_state::prtr_snd_r));
+ map(0x026, 0x026).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x028, 0x028).w(this, FUNC(fp_state::contrast_w));
+ map(0x02a, 0x02a).w(this, FUNC(fp_state::palette_w));
+ map(0x02e, 0x02f).w(this, FUNC(fp_state::video_w));
+ map(0x040, 0x05f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff);
+ map(0x068, 0x06b).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x06c, 0x06c).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x06e, 0x06e).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( sound_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(fp_state::sound_mem)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD63B01V1_TAG, 0)
-ADDRESS_MAP_END
+void fp_state::sound_mem(address_map &map)
+{
+ map(0xf000, 0xffff).rom().region(HD63B01V1_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( sound_io )
//-------------------------------------------------
-ADDRESS_MAP_START(fp_state::sound_io)
- AM_RANGE(M6801_PORT1, M6801_PORT1)
- AM_RANGE(M6801_PORT2, M6801_PORT2)
- AM_RANGE(M6801_PORT3, M6801_PORT3)
- AM_RANGE(M6801_PORT4, M6801_PORT4)
-ADDRESS_MAP_END
+void fp_state::sound_io(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1);
+ map(M6801_PORT2, M6801_PORT2);
+ map(M6801_PORT3, M6801_PORT3);
+ map(M6801_PORT4, M6801_PORT4);
+}
diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp
index 86bb87cc2a6..e4fb377070f 100644
--- a/src/mame/drivers/aquarium.cpp
+++ b/src/mame/drivers/aquarium.cpp
@@ -99,38 +99,41 @@ WRITE8_MEMBER(aquarium_state::aquarium_oki_w)
-ADDRESS_MAP_START(aquarium_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(aquarium_mid_videoram_w) AM_SHARE("mid_videoram")
- AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(aquarium_bak_videoram_w) AM_SHARE("bak_videoram")
- AM_RANGE(0xc02000, 0xc03fff) AM_RAM_WRITE(aquarium_txt_videoram_w) AM_SHARE("txt_videoram")
- AM_RANGE(0xc80000, 0xc81fff) AM_DEVREADWRITE8("spritegen", excellent_spr_device, read, write, 0x00ff)
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd80014, 0xd8001f) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0xd80068, 0xd80069) AM_WRITENOP /* probably not used */
- AM_RANGE(0xd80080, 0xd80081) AM_READ_PORT("DSW")
- AM_RANGE(0xd80082, 0xd80083) AM_READNOP /* stored but not read back ? check code at 0x01f440 */
- AM_RANGE(0xd80084, 0xd80085) AM_READ_PORT("INPUTS")
- AM_RANGE(0xd80086, 0xd80087) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd80088, 0xd80089) AM_WRITE8(aquarium_watchdog_w, 0xff00)
- AM_RANGE(0xd8008a, 0xd8008b) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aquarium_state::snd_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aquarium_state::snd_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x02, 0x02) AM_READWRITE(aquarium_oki_r, aquarium_oki_w)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) // only written with 0 for some reason
- AM_RANGE(0x08, 0x08) AM_WRITE(aquarium_z80_bank_w)
-ADDRESS_MAP_END
+void aquarium_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0xc00000, 0xc00fff).ram().w(this, FUNC(aquarium_state::aquarium_mid_videoram_w)).share("mid_videoram");
+ map(0xc01000, 0xc01fff).ram().w(this, FUNC(aquarium_state::aquarium_bak_videoram_w)).share("bak_videoram");
+ map(0xc02000, 0xc03fff).ram().w(this, FUNC(aquarium_state::aquarium_txt_videoram_w)).share("txt_videoram");
+ map(0xc80000, 0xc81fff).rw(m_sprgen, FUNC(excellent_spr_device::read), FUNC(excellent_spr_device::write)).umask16(0x00ff);
+ map(0xd00000, 0xd00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd80014, 0xd8001f).writeonly().share("scroll");
+ map(0xd80068, 0xd80069).nopw(); /* probably not used */
+ map(0xd80080, 0xd80081).portr("DSW");
+ map(0xd80082, 0xd80083).nopr(); /* stored but not read back ? check code at 0x01f440 */
+ map(0xd80084, 0xd80085).portr("INPUTS");
+ map(0xd80086, 0xd80087).portr("SYSTEM");
+ map(0xd80088, 0xd80088).w(this, FUNC(aquarium_state::aquarium_watchdog_w));
+ map(0xd8008b, 0xd8008b).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xff0000, 0xffffff).ram();
+}
+
+void aquarium_state::snd_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void aquarium_state::snd_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x02, 0x02).rw(this, FUNC(aquarium_state::aquarium_oki_r), FUNC(aquarium_state::aquarium_oki_w));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x06, 0x06).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); // only written with 0 for some reason
+ map(0x08, 0x08).w(this, FUNC(aquarium_state::aquarium_z80_bank_w));
+}
static INPUT_PORTS_START( aquarium )
PORT_START("DSW")
diff --git a/src/mame/drivers/aquarius.cpp b/src/mame/drivers/aquarius.cpp
index 9b1ed1073aa..c5dc432c4e6 100644
--- a/src/mame/drivers/aquarius.cpp
+++ b/src/mame/drivers/aquarius.cpp
@@ -207,24 +207,26 @@ DRIVER_INIT_MEMBER(aquarius_state,aquarius)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(aquarius_state::aquarius_mem)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(aquarius_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(aquarius_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xbfff) AM_NOP /* expansion ram */
- AM_RANGE(0xc000, 0xffff) AM_READ(cartridge_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aquarius_state::aquarius_io)
+void aquarius_state::aquarius_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x33ff).ram().w(this, FUNC(aquarius_state::aquarius_videoram_w)).share("videoram");
+ map(0x3400, 0x37ff).ram().w(this, FUNC(aquarius_state::aquarius_colorram_w)).share("colorram");
+ map(0x3800, 0x3fff).ram();
+ map(0x4000, 0xbfff).noprw(); /* expansion ram */
+ map(0xc000, 0xffff).r(this, FUNC(aquarius_state::cartridge_r));
+}
+
+void aquarius_state::aquarius_io(address_map &map)
+{
// AM_RANGE(0x7e, 0x7f) AM_MIRROR(0xff00) AM_READWRITE(modem_r, modem_w)
- AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w)
- AM_RANGE(0xf7, 0xf7) AM_MIRROR(0xff00) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0xfc, 0xfc) AM_MIRROR(0xff00) AM_READWRITE(cassette_r, cassette_w)
- AM_RANGE(0xfd, 0xfd) AM_MIRROR(0xff00) AM_READWRITE(vsync_r, mapper_w)
- AM_RANGE(0xfe, 0xfe) AM_MIRROR(0xff00) AM_READWRITE(printer_r, printer_w)
- AM_RANGE(0xff, 0xff) AM_SELECT(0xff00) AM_READWRITE(keyboard_r, scrambler_w)
-ADDRESS_MAP_END
+ map(0xf6, 0xf6).mirror(0xff00).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xf7, 0xf7).mirror(0xff00).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0xfc, 0xfc).mirror(0xff00).rw(this, FUNC(aquarius_state::cassette_r), FUNC(aquarius_state::cassette_w));
+ map(0xfd, 0xfd).mirror(0xff00).rw(this, FUNC(aquarius_state::vsync_r), FUNC(aquarius_state::mapper_w));
+ map(0xfe, 0xfe).mirror(0xff00).rw(this, FUNC(aquarius_state::printer_r), FUNC(aquarius_state::printer_w));
+ map(0xff, 0xff).select(0xff00).rw(this, FUNC(aquarius_state::keyboard_r), FUNC(aquarius_state::scrambler_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/arabian.cpp b/src/mame/drivers/arabian.cpp
index facfc026b49..bf0c6b9d605 100644
--- a/src/mame/drivers/arabian.cpp
+++ b/src/mame/drivers/arabian.cpp
@@ -211,14 +211,15 @@ WRITE8_MEMBER(arabian_state::mcu_port_p_w)
*
*************************************/
-ADDRESS_MAP_START(arabian_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_WRITE(arabian_videoram_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x01ff) AM_READ_PORT("IN0")
- AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x01ff) AM_READ_PORT("DSW1")
- AM_RANGE(0xd000, 0xd7ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("custom_cpu_ram")
- AM_RANGE(0xe000, 0xe007) AM_MIRROR(0x0ff8) AM_WRITE(arabian_blitter_w) AM_SHARE("blitter")
-ADDRESS_MAP_END
+void arabian_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).w(this, FUNC(arabian_state::arabian_videoram_w));
+ map(0xc000, 0xc000).mirror(0x01ff).portr("IN0");
+ map(0xc200, 0xc200).mirror(0x01ff).portr("DSW1");
+ map(0xd000, 0xd7ff).mirror(0x0800).ram().share("custom_cpu_ram");
+ map(0xe000, 0xe007).mirror(0x0ff8).w(this, FUNC(arabian_state::arabian_blitter_w)).share("blitter");
+}
@@ -228,10 +229,11 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(arabian_state::main_io_map)
- AM_RANGE(0xc800, 0xc800) AM_MIRROR(0x01ff) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xca00, 0xca00) AM_MIRROR(0x01ff) AM_DEVWRITE("aysnd", ay8910_device, data_w)
-ADDRESS_MAP_END
+void arabian_state::main_io_map(address_map &map)
+{
+ map(0xc800, 0xc800).mirror(0x01ff).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xca00, 0xca00).mirror(0x01ff).w("aysnd", FUNC(ay8910_device::data_w));
+}
diff --git a/src/mame/drivers/arachnid.cpp b/src/mame/drivers/arachnid.cpp
index cfee8831db7..800c689f9f6 100644
--- a/src/mame/drivers/arachnid.cpp
+++ b/src/mame/drivers/arachnid.cpp
@@ -121,15 +121,16 @@ public:
ADDRESS_MAP( arachnid_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(arachnid_state::arachnid_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2007) AM_DEVREADWRITE(PTM6840_TAG, ptm6840_device, read, write)
- AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE(PIA6821_U4_TAG, pia6821_device, read, write)
- AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE(PIA6821_U17_TAG, pia6821_device, read, write)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE(TMS9118_TAG, tms9928a_device, vram_write)
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE(TMS9118_TAG, tms9928a_device, register_write)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6809_TAG, 0)
-ADDRESS_MAP_END
+void arachnid_state::arachnid_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ 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(0x8000, 0xffff).rom().region(M6809_TAG, 0);
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/arcadecl.cpp b/src/mame/drivers/arcadecl.cpp
index bccdc5dbe3f..51455a40a96 100644
--- a/src/mame/drivers/arcadecl.cpp
+++ b/src/mame/drivers/arcadecl.cpp
@@ -146,28 +146,29 @@ WRITE16_MEMBER(sparkz_state::latch_w)
*
*************************************/
-ADDRESS_MAP_START(sparkz_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("bitmap")
- AM_RANGE(0x3c0000, 0x3c07ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette")
- AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x3e0800, 0x3effbf) AM_RAM
- AM_RANGE(0x3effc0, 0x3effff) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x640000, 0x640001) AM_READ_PORT("PLAYER1")
- AM_RANGE(0x640002, 0x640003) AM_READ_PORT("PLAYER2")
- AM_RANGE(0x640010, 0x640011) AM_READ_PORT("STATUS")
- AM_RANGE(0x640012, 0x640013) AM_READ_PORT("COIN")
- AM_RANGE(0x640020, 0x640021) AM_READ_PORT("TRACKX2")
- AM_RANGE(0x640022, 0x640023) AM_READ_PORT("TRACKY2")
- AM_RANGE(0x640024, 0x640025) AM_READ_PORT("TRACKX1")
- AM_RANGE(0x640026, 0x640027) AM_READ_PORT("TRACKY1")
- AM_RANGE(0x640040, 0x64004f) AM_WRITE(latch_w)
- AM_RANGE(0x640060, 0x64006f) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x641000, 0x641fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x642000, 0x642001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
- AM_RANGE(0x646000, 0x646fff) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0x647000, 0x647fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
-ADDRESS_MAP_END
+void sparkz_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x21ffff).ram().share("bitmap");
+ map(0x3c0000, 0x3c07ff).rw("palette", FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
+ map(0x3e0000, 0x3e07ff).ram().share("mob");
+ map(0x3e0800, 0x3effbf).ram();
+ map(0x3effc0, 0x3effff).ram().share("mob:slip");
+ map(0x640000, 0x640001).portr("PLAYER1");
+ map(0x640002, 0x640003).portr("PLAYER2");
+ map(0x640010, 0x640011).portr("STATUS");
+ map(0x640012, 0x640013).portr("COIN");
+ map(0x640020, 0x640021).portr("TRACKX2");
+ map(0x640022, 0x640023).portr("TRACKY2");
+ map(0x640024, 0x640025).portr("TRACKX1");
+ map(0x640026, 0x640027).portr("TRACKY1");
+ map(0x640040, 0x64004f).w(this, FUNC(sparkz_state::latch_w));
+ map(0x640060, 0x64006f).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x641000, 0x641fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x642000, 0x642000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x646000, 0x646fff).w(this, FUNC(sparkz_state::scanline_int_ack_w));
+ map(0x647000, 0x647fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+}
diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp
index cb2b074f524..2236e88c172 100644
--- a/src/mame/drivers/arcadia.cpp
+++ b/src/mame/drivers/arcadia.cpp
@@ -124,10 +124,11 @@ anything in hardware. No cartridge has been found which uses them.
#include "softlist.h"
#include "speaker.h"
-ADDRESS_MAP_START(arcadia_state::arcadia_mem)
- AM_RANGE( 0x0000, 0x0fff) AM_DEVREAD("cartslot", arcadia_cart_slot_device, read_rom)
- AM_RANGE( 0x1800, 0x1aff) AM_READWRITE(video_r, video_w)
-ADDRESS_MAP_END
+void arcadia_state::arcadia_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).r(m_cart, FUNC(arcadia_cart_slot_device::read_rom));
+ map(0x1800, 0x1aff).rw(this, FUNC(arcadia_state::video_r), FUNC(arcadia_state::video_w));
+}
/* The Emerson Arcadia 2001 controllers have 2 fire buttons on the side,
but actually they are wired to keypad button #2. The following definitions
diff --git a/src/mame/drivers/argo.cpp b/src/mame/drivers/argo.cpp
index 1f7213e9b7d..527ec5f1268 100644
--- a/src/mame/drivers/argo.cpp
+++ b/src/mame/drivers/argo.cpp
@@ -144,17 +144,19 @@ WRITE8_MEMBER(argo_state::argo_io_w)
-ADDRESS_MAP_START(argo_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
- AM_RANGE(0x0800, 0xf7af) AM_RAM
- AM_RANGE(0xf7b0, 0xf7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_WRITE(argo_videoram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(argo_state::io_map)
- AM_RANGE(0x0000, 0xFFFF) AM_READWRITE(argo_io_r,argo_io_w)
-ADDRESS_MAP_END
+void argo_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0xf7af).ram();
+ map(0xf7b0, 0xf7ff).ram().share("videoram");
+ map(0xf800, 0xffff).rom().w(this, FUNC(argo_state::argo_videoram_w));
+}
+
+void argo_state::io_map(address_map &map)
+{
+ map(0x0000, 0xFFFF).rw(this, FUNC(argo_state::argo_io_r), FUNC(argo_state::argo_io_w));
+}
/* Input ports */
static INPUT_PORTS_START( argo ) // Keyboard was worked out by trial & error;'F' keys produce symbols
diff --git a/src/mame/drivers/argox.cpp b/src/mame/drivers/argox.cpp
index 8e6d56e240e..b20f1d308e3 100644
--- a/src/mame/drivers/argox.cpp
+++ b/src/mame/drivers/argox.cpp
@@ -58,13 +58,15 @@ public:
void os214_prg_map(address_map &map);
};
-ADDRESS_MAP_START(os214_state::os214_prg_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
-ADDRESS_MAP_END
+void os214_state::os214_prg_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+}
-ADDRESS_MAP_START(os214_state::os214_io_map)
+void os214_state::os214_io_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+}
MACHINE_CONFIG_START(os214_state::os214)
/* basic machine hardware */
diff --git a/src/mame/drivers/argus.cpp b/src/mame/drivers/argus.cpp
index ef6b9c75137..2d476277c4a 100644
--- a/src/mame/drivers/argus.cpp
+++ b/src/mame/drivers/argus.cpp
@@ -180,92 +180,97 @@ WRITE8_MEMBER(argus_state::bankselect_w)
***************************************************************************/
-ADDRESS_MAP_START(argus_state::argus_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc201, 0xc201) AM_WRITE(flipscreen_w)
- AM_RANGE(0xc202, 0xc202) AM_WRITE(bankselect_w)
- AM_RANGE(0xc300, 0xc301) AM_RAM AM_SHARE("bg0_scrollx")
- AM_RANGE(0xc302, 0xc303) AM_RAM AM_SHARE("bg0_scrolly")
- AM_RANGE(0xc308, 0xc309) AM_RAM AM_SHARE("bg1_scrollx")
- AM_RANGE(0xc30a, 0xc30b) AM_RAM AM_SHARE("bg1_scrolly")
- AM_RANGE(0xc30c, 0xc30c) AM_WRITE(argus_bg_status_w)
- AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(argus_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txram_w) AM_SHARE("txram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bg1ram_w) AM_SHARE("bg1ram")
- AM_RANGE(0xe000, 0xf1ff) AM_RAM
- AM_RANGE(0xf200, 0xf7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void argus_state::argus_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc201, 0xc201).w(this, FUNC(argus_state::flipscreen_w));
+ map(0xc202, 0xc202).w(this, FUNC(argus_state::bankselect_w));
+ map(0xc300, 0xc301).ram().share("bg0_scrollx");
+ map(0xc302, 0xc303).ram().share("bg0_scrolly");
+ map(0xc308, 0xc309).ram().share("bg1_scrollx");
+ map(0xc30a, 0xc30b).ram().share("bg1_scrolly");
+ map(0xc30c, 0xc30c).w(this, FUNC(argus_state::argus_bg_status_w));
+ map(0xc400, 0xcfff).ram().w(this, FUNC(argus_state::argus_paletteram_w)).share("paletteram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(argus_state::txram_w)).share("txram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(argus_state::bg1ram_w)).share("bg1ram");
+ map(0xe000, 0xf1ff).ram();
+ map(0xf200, 0xf7ff).ram().share("spriteram");
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(argus_state::valtric_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc201, 0xc201) AM_WRITE(flipscreen_w)
- AM_RANGE(0xc202, 0xc202) AM_WRITE(bankselect_w)
- AM_RANGE(0xc300, 0xc300) AM_WRITE(valtric_unknown_w)
- AM_RANGE(0xc308, 0xc309) AM_RAM AM_SHARE("bg1_scrollx")
- AM_RANGE(0xc30a, 0xc30b) AM_RAM AM_SHARE("bg1_scrolly")
- AM_RANGE(0xc30c, 0xc30c) AM_WRITE(valtric_bg_status_w)
- AM_RANGE(0xc30d, 0xc30d) AM_WRITE(valtric_mosaic_w)
- AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(valtric_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txram_w) AM_SHARE("txram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bg1ram_w) AM_SHARE("bg1ram")
- AM_RANGE(0xe000, 0xf1ff) AM_RAM
- AM_RANGE(0xf200, 0xf7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void argus_state::valtric_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc201, 0xc201).w(this, FUNC(argus_state::flipscreen_w));
+ map(0xc202, 0xc202).w(this, FUNC(argus_state::bankselect_w));
+ map(0xc300, 0xc300).w(this, FUNC(argus_state::valtric_unknown_w));
+ map(0xc308, 0xc309).ram().share("bg1_scrollx");
+ map(0xc30a, 0xc30b).ram().share("bg1_scrolly");
+ map(0xc30c, 0xc30c).w(this, FUNC(argus_state::valtric_bg_status_w));
+ map(0xc30d, 0xc30d).w(this, FUNC(argus_state::valtric_mosaic_w));
+ map(0xc400, 0xcfff).ram().w(this, FUNC(argus_state::valtric_paletteram_w)).share("paletteram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(argus_state::txram_w)).share("txram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(argus_state::bg1ram_w)).share("bg1ram");
+ map(0xe000, 0xf1ff).ram();
+ map(0xf200, 0xf7ff).ram().share("spriteram");
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(argus_state::butasan_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc100, 0xc100) AM_WRITE(butasan_unknown_w)
- AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc201, 0xc201) AM_WRITE(flipscreen_w)
- AM_RANGE(0xc202, 0xc202) AM_WRITE(bankselect_w)
- AM_RANGE(0xc203, 0xc203) AM_WRITE(butasan_pageselect_w)
- AM_RANGE(0xc300, 0xc301) AM_RAM AM_SHARE("bg0_scrollx")
- AM_RANGE(0xc302, 0xc303) AM_RAM AM_SHARE("bg0_scrolly")
- AM_RANGE(0xc304, 0xc304) AM_WRITE(butasan_bg0_status_w)
- AM_RANGE(0xc308, 0xc309) AM_RAM AM_SHARE("bg1_scrollx")
- AM_RANGE(0xc30a, 0xc30b) AM_RAM AM_SHARE("bg1_scrolly")
- AM_RANGE(0xc30c, 0xc30c) AM_WRITE(butasan_bg1_status_w)
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(butasan_bg1ram_w) AM_SHARE("butasan_bg1ram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(butasan_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(butasan_pagedram_r, butasan_pagedram_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf67f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf680, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void argus_state::butasan_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc100, 0xc100).w(this, FUNC(argus_state::butasan_unknown_w));
+ map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc201, 0xc201).w(this, FUNC(argus_state::flipscreen_w));
+ map(0xc202, 0xc202).w(this, FUNC(argus_state::bankselect_w));
+ map(0xc203, 0xc203).w(this, FUNC(argus_state::butasan_pageselect_w));
+ map(0xc300, 0xc301).ram().share("bg0_scrollx");
+ map(0xc302, 0xc303).ram().share("bg0_scrolly");
+ map(0xc304, 0xc304).w(this, FUNC(argus_state::butasan_bg0_status_w));
+ map(0xc308, 0xc309).ram().share("bg1_scrollx");
+ map(0xc30a, 0xc30b).ram().share("bg1_scrolly");
+ map(0xc30c, 0xc30c).w(this, FUNC(argus_state::butasan_bg1_status_w));
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(argus_state::butasan_bg1ram_w)).share("butasan_bg1ram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(argus_state::butasan_paletteram_w)).share("paletteram");
+ map(0xd000, 0xdfff).rw(this, FUNC(argus_state::butasan_pagedram_r), FUNC(argus_state::butasan_pagedram_w));
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xf67f).ram().share("spriteram");
+ map(0xf680, 0xffff).ram();
+}
-ADDRESS_MAP_START(argus_state::sound_map_a)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void argus_state::sound_map_a(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xc000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
-ADDRESS_MAP_START(argus_state::sound_map_b)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void argus_state::sound_map_b(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
#if 0
ADDRESS_MAP_START(argus_state::sound_portmap_1)
@@ -274,11 +279,12 @@ ADDRESS_MAP_START(argus_state::sound_portmap_1)
ADDRESS_MAP_END
#endif
-ADDRESS_MAP_START(argus_state::sound_portmap_2)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void argus_state::sound_portmap_2(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x81).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp
index de53fd6cf89..1f6f89a5ece 100644
--- a/src/mame/drivers/aristmk4.cpp
+++ b/src/mame/drivers/aristmk4.cpp
@@ -1000,35 +1000,36 @@ ADDRESS MAP - SLOT GAMES
******************************************************************************/
-ADDRESS_MAP_START(aristmk4_state::aristmk4_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("mkiv_vram") // video ram - chips U49 / U50
- AM_RANGE(0x0800, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1800) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x1c00, 0x1cff) AM_WRITE(mk4_printer_w)
- AM_RANGE(0x1900, 0x19ff) AM_READ(mk4_printer_r)
- AM_RANGE(0x2000, 0x3fff) AM_ROM // graphics rom map
- AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") AM_SHARE("nvram")
-
- AM_RANGE(0x5000, 0x5000) AM_WRITE(u3_p0)
- AM_RANGE(0x5002, 0x5002) AM_READ(u3_p2)
- AM_RANGE(0x5003, 0x5003) AM_READ(u3_p3)
- AM_RANGE(0x5005, 0x5005) AM_READ(ldsw)
- AM_RANGE(0x500d, 0x500d) AM_READ_PORT("500d")
- AM_RANGE(0x500e, 0x500e) AM_READ_PORT("500e")
- AM_RANGE(0x500f, 0x500f) AM_READ_PORT("500f")
- AM_RANGE(0x5010, 0x501f) AM_DEVREADWRITE("via6522_0",via6522_device,read,write)
- AM_RANGE(0x5200, 0x5200) AM_READ(cashcade_r)
- AM_RANGE(0x5201, 0x5201) AM_READ_PORT("5201")
- AM_RANGE(0x52c0, 0x52c0) AM_READ(bv_p0)
- AM_RANGE(0x52c1, 0x52c1) AM_READ(bv_p1)
- AM_RANGE(0x527f, 0x5281) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5300, 0x5300) AM_READ_PORT("5300")
- AM_RANGE(0x5380, 0x5383) AM_DEVREADWRITE("pia6821_0", pia6821_device, read, write) // RTC data - PORT A , mechanical meters - PORTB ??
- AM_RANGE(0x5440, 0x5440) AM_WRITE(mlamps) // take win and gamble lamps
- AM_RANGE(0x5468, 0x5468) AM_READWRITE(cgdrr,cgdrw) // 4020 ripple counter outputs
- AM_RANGE(0x6000, 0xffff) AM_ROM // game roms
-ADDRESS_MAP_END
+void aristmk4_state::aristmk4_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("mkiv_vram"); // video ram - chips U49 / U50
+ map(0x0800, 0x17ff).ram();
+ map(0x1800, 0x1800).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x1801, 0x1801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x1c00, 0x1cff).w(this, FUNC(aristmk4_state::mk4_printer_w));
+ map(0x1900, 0x19ff).r(this, FUNC(aristmk4_state::mk4_printer_r));
+ map(0x2000, 0x3fff).rom(); // graphics rom map
+ map(0x4000, 0x4fff).bankrw("bank1").share("nvram");
+
+ map(0x5000, 0x5000).w(this, FUNC(aristmk4_state::u3_p0));
+ map(0x5002, 0x5002).r(this, FUNC(aristmk4_state::u3_p2));
+ map(0x5003, 0x5003).r(this, FUNC(aristmk4_state::u3_p3));
+ map(0x5005, 0x5005).r(this, FUNC(aristmk4_state::ldsw));
+ map(0x500d, 0x500d).portr("500d");
+ map(0x500e, 0x500e).portr("500e");
+ map(0x500f, 0x500f).portr("500f");
+ map(0x5010, 0x501f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x5200, 0x5200).r(this, FUNC(aristmk4_state::cashcade_r));
+ map(0x5201, 0x5201).portr("5201");
+ map(0x52c0, 0x52c0).r(this, FUNC(aristmk4_state::bv_p0));
+ map(0x52c1, 0x52c1).r(this, FUNC(aristmk4_state::bv_p1));
+ map(0x527f, 0x5281).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5300, 0x5300).portr("5300");
+ map(0x5380, 0x5383).rw("pia6821_0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // RTC data - PORT A , mechanical meters - PORTB ??
+ map(0x5440, 0x5440).w(this, FUNC(aristmk4_state::mlamps)); // take win and gamble lamps
+ map(0x5468, 0x5468).rw(this, FUNC(aristmk4_state::cgdrr), FUNC(aristmk4_state::cgdrw)); // 4020 ripple counter outputs
+ map(0x6000, 0xffff).rom(); // game roms
+}
/******************************************************************************
@@ -1044,35 +1045,36 @@ The graphics rom is mapped from 0x4000 - 0x4fff
The U87 personality rom is not required, therefore game rom code mapping is from 0x8000-0xffff
*/
-ADDRESS_MAP_START(aristmk4_state::aristmk4_poker_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("mkiv_vram") // video ram - chips U49 / U50
- AM_RANGE(0x0800, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1800) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x1c00, 0x1cff) AM_WRITE(mk4_printer_w)
- AM_RANGE(0x1900, 0x19ff) AM_READ(mk4_printer_r)
- AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") AM_SHARE("nvram")
-
- AM_RANGE(0x5000, 0x5000) AM_WRITE(u3_p0)
- AM_RANGE(0x5002, 0x5002) AM_READ(u3_p2)
- AM_RANGE(0x5003, 0x5003) AM_READ_PORT("5003")
- AM_RANGE(0x5005, 0x5005) AM_READ(ldsw)
- AM_RANGE(0x500d, 0x500d) AM_READ_PORT("500d")
- AM_RANGE(0x500e, 0x500e) AM_READ_PORT("500e")
- AM_RANGE(0x500f, 0x500f) AM_READ_PORT("500f")
- AM_RANGE(0x5010, 0x501f) AM_DEVREADWRITE("via6522_0",via6522_device,read,write)
- AM_RANGE(0x5200, 0x5200) AM_READ(cashcade_r)
- AM_RANGE(0x5201, 0x5201) AM_READ_PORT("5201")
- AM_RANGE(0x52c0, 0x52c0) AM_READ(bv_p0)
- AM_RANGE(0x52c1, 0x52c1) AM_READ(bv_p1)
- AM_RANGE(0x527f, 0x5281) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5300, 0x5300) AM_READ_PORT("5300")
- AM_RANGE(0x5380, 0x5383) AM_DEVREADWRITE("pia6821_0", pia6821_device, read, write) // RTC data - PORT A , mechanical meters - PORTB ??
- AM_RANGE(0x5440, 0x5440) AM_WRITE(mlamps) // take win and gamble lamps
- AM_RANGE(0x5468, 0x5468) AM_READWRITE(cgdrr,cgdrw) // 4020 ripple counter outputs
- AM_RANGE(0x6000, 0x7fff) AM_ROM // graphics rom map
- AM_RANGE(0x8000, 0xffff) AM_ROM // game roms
-ADDRESS_MAP_END
+void aristmk4_state::aristmk4_poker_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("mkiv_vram"); // video ram - chips U49 / U50
+ map(0x0800, 0x17ff).ram();
+ map(0x1800, 0x1800).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x1801, 0x1801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x1c00, 0x1cff).w(this, FUNC(aristmk4_state::mk4_printer_w));
+ map(0x1900, 0x19ff).r(this, FUNC(aristmk4_state::mk4_printer_r));
+ map(0x4000, 0x4fff).bankrw("bank1").share("nvram");
+
+ map(0x5000, 0x5000).w(this, FUNC(aristmk4_state::u3_p0));
+ map(0x5002, 0x5002).r(this, FUNC(aristmk4_state::u3_p2));
+ map(0x5003, 0x5003).portr("5003");
+ map(0x5005, 0x5005).r(this, FUNC(aristmk4_state::ldsw));
+ map(0x500d, 0x500d).portr("500d");
+ map(0x500e, 0x500e).portr("500e");
+ map(0x500f, 0x500f).portr("500f");
+ map(0x5010, 0x501f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x5200, 0x5200).r(this, FUNC(aristmk4_state::cashcade_r));
+ map(0x5201, 0x5201).portr("5201");
+ map(0x52c0, 0x52c0).r(this, FUNC(aristmk4_state::bv_p0));
+ map(0x52c1, 0x52c1).r(this, FUNC(aristmk4_state::bv_p1));
+ map(0x527f, 0x5281).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5300, 0x5300).portr("5300");
+ map(0x5380, 0x5383).rw("pia6821_0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // RTC data - PORT A , mechanical meters - PORTB ??
+ map(0x5440, 0x5440).w(this, FUNC(aristmk4_state::mlamps)); // take win and gamble lamps
+ map(0x5468, 0x5468).rw(this, FUNC(aristmk4_state::cgdrr), FUNC(aristmk4_state::cgdrw)); // 4020 ripple counter outputs
+ map(0x6000, 0x7fff).rom(); // graphics rom map
+ map(0x8000, 0xffff).rom(); // game roms
+}
/******************************************************************************
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index 56a1e7c6fa2..608c0236c17 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -910,86 +910,89 @@ WRITE8_MEMBER(aristmk5_state::bill_acceptor_lamps_w)
output().set_lamp_value(24 + i, BIT(data, i));
}
-ADDRESS_MAP_START(aristmk5_state::aristmk5_map)
- AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_SHARE("physicalram") /* physical RAM - 16 MB for now, should be 512k for the A310 */
+void aristmk5_state::aristmk5_map(address_map &map)
+{
+ map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */
- AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE(archimedes_ioc_r, archimedes_ioc_w)
+ map(0x03000000, 0x0331ffff).rw(this, FUNC(aristmk5_state::archimedes_ioc_r), FUNC(aristmk5_state::archimedes_ioc_w));
/* MK-5 overrides */
- AM_RANGE(0x03010420, 0x03010423) AM_WRITE8(sram_banksel_w, 0x000000ff) // SRAM bank select write
+ map(0x03010420, 0x03010420).w(this, FUNC(aristmk5_state::sram_banksel_w)); // SRAM bank select write
- AM_RANGE(0x03010480, 0x0301049f) AM_DEVREADWRITE8("uart_0a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03010500, 0x0301051f) AM_DEVREADWRITE8("uart_0b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03010580, 0x03010583) AM_READ_PORT("P3")
- AM_RANGE(0x03010600, 0x0301061f) AM_DEVREADWRITE8("uart_1a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03010680, 0x0301069f) AM_DEVREADWRITE8("uart_1b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
+ map(0x03010480, 0x0301049f).rw("uart_0a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03010500, 0x0301051f).rw("uart_0b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03010580, 0x03010583).portr("P3");
+ map(0x03010600, 0x0301061f).rw("uart_1a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03010680, 0x0301069f).rw("uart_1b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
- AM_RANGE(0x03010700, 0x03010703) AM_READ_PORT("P6")
- AM_RANGE(0x03010800, 0x03010803) AM_READ8(eeprom_r, 0x000000ff)
- AM_RANGE(0x03010810, 0x03010813) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset32_r, reset32_w) //MK-5 specific, watchdog
- AM_RANGE(0x03220000, 0x0323ffff) AM_READWRITE8(sram_r, sram_w, 0x000000ff)
+ map(0x03010700, 0x03010703).portr("P6");
+ map(0x03010800, 0x03010800).r(this, FUNC(aristmk5_state::eeprom_r));
+ map(0x03010810, 0x03010813).rw("watchdog", FUNC(watchdog_timer_device::reset32_r), FUNC(watchdog_timer_device::reset32_w)); //MK-5 specific, watchdog
+ map(0x03220000, 0x0323ffff).rw(this, FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff);
// bank5 slow
- AM_RANGE(0x03250048, 0x0325004b) AM_WRITE(Ns5w48) //IOEB control register
- AM_RANGE(0x03250050, 0x03250053) AM_READ(Ns5r50) //IOEB ID register
- AM_RANGE(0x03250058, 0x0325005b) AM_READ(Ns5x58) //IOEB interrupt Latch
+ map(0x03250048, 0x0325004b).w(this, FUNC(aristmk5_state::Ns5w48)); //IOEB control register
+ map(0x03250050, 0x03250053).r(this, FUNC(aristmk5_state::Ns5r50)); //IOEB ID register
+ map(0x03250058, 0x0325005b).r(this, FUNC(aristmk5_state::Ns5x58)); //IOEB interrupt Latch
- AM_RANGE(0x03320000, 0x0333ffff) AM_READWRITE8(sram_r, sram_w, 0x000000ff)
+ map(0x03320000, 0x0333ffff).rw(this, FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff);
- AM_RANGE(0x03400000, 0x035fffff) AM_WRITE(archimedes_vidc_w)
- AM_RANGE(0x03600000, 0x037fffff) AM_WRITE(archimedes_memc_w)
- AM_RANGE(0x03800000, 0x039fffff) AM_WRITE(archimedes_memc_page_w)
+ map(0x03400000, 0x035fffff).w(this, FUNC(aristmk5_state::archimedes_vidc_w));
+ map(0x03600000, 0x037fffff).w(this, FUNC(aristmk5_state::archimedes_memc_w));
+ map(0x03800000, 0x039fffff).w(this, FUNC(aristmk5_state::archimedes_memc_page_w));
- AM_RANGE(0x03400000, 0x03bfffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0x03400000, 0x03bfffff).rom().region("maincpu", 0);
+}
/* U.S games have no dram emulator enabled */
-ADDRESS_MAP_START(aristmk5_state::aristmk5_usa_map)
- AM_IMPORT_FROM(aristmk5_map)
+void aristmk5_state::aristmk5_usa_map(address_map &map)
+{
+ aristmk5_map(map);
- AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w)
+ map(0x00000000, 0x01ffffff).rw(this, FUNC(aristmk5_state::archimedes_memc_logical_r), FUNC(aristmk5_state::archimedes_memc_logical_w));
- AM_RANGE(0x03010440, 0x03010443) AM_WRITE8(rtc_usa_w, 0x000000ff)
- AM_RANGE(0x03010450, 0x03010453) AM_WRITE8(eeprom_usa_w, 0x000000ff)
+ map(0x03010440, 0x03010440).w(this, FUNC(aristmk5_state::rtc_usa_w));
+ map(0x03010450, 0x03010450).w(this, FUNC(aristmk5_state::eeprom_usa_w));
- AM_RANGE(0x03012000, 0x03012003) AM_READ_PORT("P1")
- AM_RANGE(0x03012010, 0x03012013) AM_READ_PORT("P2")
- AM_RANGE(0x03012200, 0x03012203) AM_READ_PORT("DSW1")
- AM_RANGE(0x03012210, 0x03012213) AM_READ_PORT("DSW2")
- AM_RANGE(0x03010584, 0x03010587) AM_READ_PORT("P4")
+ map(0x03012000, 0x03012003).portr("P1");
+ map(0x03012010, 0x03012013).portr("P2");
+ map(0x03012200, 0x03012203).portr("DSW1");
+ map(0x03012210, 0x03012213).portr("DSW2");
+ map(0x03010584, 0x03010587).portr("P4");
- AM_RANGE(0x03012020, 0x03012023) AM_READ8(ldor_r, 0x000000ff)
- AM_RANGE(0x03012070, 0x03012073) AM_WRITE8(ldor_clk_w, 0x000000ff)
- AM_RANGE(0x03012184, 0x03012187) AM_READ_PORT("P5")
+ map(0x03012020, 0x03012020).r(this, FUNC(aristmk5_state::ldor_r));
+ map(0x03012070, 0x03012070).w(this, FUNC(aristmk5_state::ldor_clk_w));
+ map(0x03012184, 0x03012187).portr("P5");
- AM_RANGE(0x03012000, 0x0301201f) AM_WRITE8(buttons_lamps_w, 0x000000ff)
- AM_RANGE(0x03012030, 0x0301203f) AM_WRITE8(other_lamps_w, 0x000000ff)
- AM_RANGE(0x03012380, 0x0301238f) AM_WRITE8(bill_acceptor_lamps_w, 0x000000ff)
+ map(0x03012000, 0x0301201f).w(this, FUNC(aristmk5_state::buttons_lamps_w)).umask32(0x000000ff);
+ map(0x03012030, 0x0301203f).w(this, FUNC(aristmk5_state::other_lamps_w)).umask32(0x000000ff);
+ map(0x03012380, 0x0301238f).w(this, FUNC(aristmk5_state::bill_acceptor_lamps_w)).umask32(0x000000ff);
- AM_RANGE(0x03012100, 0x0301211f) AM_DEVREADWRITE8("uart_2a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03012140, 0x0301215f) AM_DEVREADWRITE8("uart_2b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03012300, 0x0301231f) AM_DEVREADWRITE8("uart_3a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03012340, 0x0301235f) AM_DEVREADWRITE8("uart_3b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
-ADDRESS_MAP_END
+ map(0x03012100, 0x0301211f).rw("uart_2a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03012140, 0x0301215f).rw("uart_2b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03012300, 0x0301231f).rw("uart_3a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03012340, 0x0301235f).rw("uart_3b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+}
/* with dram emulator enabled */
-ADDRESS_MAP_START(aristmk5_state::aristmk5_drame_map)
- AM_IMPORT_FROM(aristmk5_map)
+void aristmk5_state::aristmk5_drame_map(address_map &map)
+{
+ aristmk5_map(map);
- AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(aristmk5_drame_memc_logical_r, archimedes_memc_logical_w)
+ map(0x00000000, 0x01ffffff).rw(this, FUNC(aristmk5_state::aristmk5_drame_memc_logical_r), FUNC(aristmk5_state::archimedes_memc_logical_w));
- AM_RANGE(0x03010430, 0x03010433) AM_WRITE8(hopper_w, 0x000000ff)
- AM_RANGE(0x03010440, 0x03010443) AM_WRITE8(rtc_w, 0x000000ff)
- AM_RANGE(0x03010450, 0x03010453) AM_WRITE8(eeprom_w, 0x000000ff)
+ map(0x03010430, 0x03010430).w(this, FUNC(aristmk5_state::hopper_w));
+ map(0x03010440, 0x03010440).w(this, FUNC(aristmk5_state::rtc_w));
+ map(0x03010450, 0x03010450).w(this, FUNC(aristmk5_state::eeprom_w));
- AM_RANGE(0x03010400, 0x03010403) AM_WRITE8(spi_mux_w, 0x000000ff)
- AM_RANGE(0x03010470, 0x03010473) AM_WRITE8(spi_data_w, 0x000000ff)
- AM_RANGE(0x03010850, 0x03010853) AM_READWRITE8(spi_int_ack_r, spi_int_ack_w, 0x000000ff)
- AM_RANGE(0x03010870, 0x03010873) AM_READ8(spi_data_r, 0x000000ff)
+ map(0x03010400, 0x03010400).w(this, FUNC(aristmk5_state::spi_mux_w));
+ map(0x03010470, 0x03010470).w(this, FUNC(aristmk5_state::spi_data_w));
+ map(0x03010850, 0x03010850).rw(this, FUNC(aristmk5_state::spi_int_ack_r), FUNC(aristmk5_state::spi_int_ack_w));
+ map(0x03010870, 0x03010870).r(this, FUNC(aristmk5_state::spi_data_r));
- AM_RANGE(0x03014000, 0x0301401f) AM_DEVREADWRITE8("uart_2a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
- AM_RANGE(0x03014020, 0x0301403f) AM_DEVREADWRITE8("uart_2b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff)
-ADDRESS_MAP_END
+ map(0x03014000, 0x0301401f).rw("uart_2a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+ map(0x03014020, 0x0301403f).rw("uart_2b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
+}
CUSTOM_INPUT_MEMBER(aristmk5_state::hopper_r)
diff --git a/src/mame/drivers/aristmk6.cpp b/src/mame/drivers/aristmk6.cpp
index 84d3700e8f1..f5f1facaf3e 100644
--- a/src/mame/drivers/aristmk6.cpp
+++ b/src/mame/drivers/aristmk6.cpp
@@ -299,28 +299,30 @@ READ64_MEMBER(aristmk6_state::hwver_r)
return 0;
}
-ADDRESS_MAP_START(aristmk6_state::aristmk6_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x04000000, 0x05ffffff) AM_RAM AM_SHARE("vram") // VRAM 32MB
- AM_RANGE(0x08000000, 0x0bffffff) AM_ROM AM_REGION("game_rom", 0)
- AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM // Main RAM 16MB
- AM_RANGE(0x10800000, 0x1087ffff) AM_RAM // SRAM0 512KB
- AM_RANGE(0x11000000, 0x1107ffff) AM_RAM // SRAM1 512KB
- AM_RANGE(0x11800000, 0x1187ffff) AM_RAM // SRAM2 512KB
+void aristmk6_state::aristmk6_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rom().region("maincpu", 0);
+ map(0x04000000, 0x05ffffff).ram().share("vram"); // VRAM 32MB
+ map(0x08000000, 0x0bffffff).rom().region("game_rom", 0);
+ map(0x0c000000, 0x0cffffff).ram(); // Main RAM 16MB
+ map(0x10800000, 0x1087ffff).ram(); // SRAM0 512KB
+ map(0x11000000, 0x1107ffff).ram(); // SRAM1 512KB
+ map(0x11800000, 0x1187ffff).ram(); // SRAM2 512KB
// 12000xxx main control registers area
- AM_RANGE(0x12000010, 0x12000017) AM_WRITE(eeprom_w)
- AM_RANGE(0x12000078, 0x1200007f) AM_WRITENOP // watchdog ??
- AM_RANGE(0x12000080, 0x12000087) AM_WRITENOP // 0-1-2 written here repeatedly, diag LED or smth ?
- AM_RANGE(0x120000E0, 0x120000E7) AM_READ(hwver_r)
- AM_RANGE(0x120000E8, 0x12000107) AM_READ8(irqpend_r, 0xffffffffffffffffU)
- AM_RANGE(0x12000108, 0x12000127) AM_WRITE8(irqen_w, 0xffffffffffffffffU)
- AM_RANGE(0x12400010, 0x12400017) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU)
- AM_RANGE(0x12400018, 0x1240001f) AM_DEVREADWRITE8("uart0", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU)
- AM_RANGE(0x13800000, 0x13800007) AM_READ8(test_r, 0xffffffffffffffffU)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aristmk6_state::aristmk6_port)
-ADDRESS_MAP_END
+ map(0x12000010, 0x12000017).w(this, FUNC(aristmk6_state::eeprom_w));
+ map(0x12000078, 0x1200007f).nopw(); // watchdog ??
+ map(0x12000080, 0x12000087).nopw(); // 0-1-2 written here repeatedly, diag LED or smth ?
+ map(0x120000E0, 0x120000E7).r(this, FUNC(aristmk6_state::hwver_r));
+ map(0x120000E8, 0x12000107).r(this, FUNC(aristmk6_state::irqpend_r));
+ map(0x12000108, 0x12000127).w(this, FUNC(aristmk6_state::irqen_w));
+ map(0x12400010, 0x12400017).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x12400018, 0x1240001f).rw(m_uart0, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x13800000, 0x13800007).r(this, FUNC(aristmk6_state::test_r));
+}
+
+void aristmk6_state::aristmk6_port(address_map &map)
+{
+}
static INPUT_PORTS_START( aristmk6 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp
index 0a3d51dc9c3..642fdc5de28 100644
--- a/src/mame/drivers/arkanoid.cpp
+++ b/src/mame/drivers/arkanoid.cpp
@@ -824,47 +824,50 @@ a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0
1 1 1 1 x x x x x x x x x x x x OPEN BUS
| | |
*/
-ADDRESS_MAP_START(arkanoid_state::arkanoid_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_MIRROR(0x0800)
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) AM_MIRROR(0x0fe6)
- AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_MIRROR(0x0fe6)
- AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w) AM_MIRROR(0x0fe7) /* gfx bank, flip screen, 68705 reset, etc. */
- AM_RANGE(0xd008, 0xd008) AM_READ_PORT("SYSTEM2") AM_MIRROR(0x0fe3) /* unused p1 and p2 joysticks */
- AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM") AM_MIRROR(0x0fe3) /* start, service, coins, and 2 bits from the 68705 */
- AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_MIRROR(0x0fe7)
- AM_RANGE(0xd018, 0xd018) AM_DEVREADWRITE("mcu", arkanoid_mcu_device_base, data_r, data_w) AM_MIRROR(0x0fe7) /* input from the 68705 */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe840, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(arkanoid_state::bootleg_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w) /* gfx bank, flip screen etc. */
- AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xd018, 0xd018) AM_READ_PORT("MUX") AM_WRITENOP
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe840, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(arkanoid_state::hexa_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w)
- AM_RANGE(0xd010, 0xd010) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* or IRQ acknowledge, or both */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void arkanoid_state::arkanoid_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().mirror(0x0800);
+ map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w)).mirror(0x0fe6);
+ map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r)).mirror(0x0fe6);
+ map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::arkanoid_d008_w)).mirror(0x0fe7); /* gfx bank, flip screen, 68705 reset, etc. */
+ map(0xd008, 0xd008).portr("SYSTEM2").mirror(0x0fe3); /* unused p1 and p2 joysticks */
+ map(0xd00c, 0xd00c).portr("SYSTEM").mirror(0x0fe3); /* start, service, coins, and 2 bits from the 68705 */
+ map(0xd010, 0xd010).portr("BUTTONS").w("watchdog", FUNC(watchdog_timer_device::reset_w)).mirror(0x0fe7);
+ map(0xd018, 0xd018).rw(m_mcuintf, FUNC(arkanoid_mcu_device_base::data_r), FUNC(arkanoid_mcu_device_base::data_w)).mirror(0x0fe7); /* input from the 68705 */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram");
+ map(0xe800, 0xe83f).ram().share("spriteram");
+ map(0xe840, 0xefff).ram();
+ map(0xf000, 0xffff).nopr(); /* fixes instant death in final level */
+}
+
+void arkanoid_state::bootleg_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xd001, 0xd001).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::arkanoid_d008_w)); /* gfx bank, flip screen etc. */
+ map(0xd00c, 0xd00c).portr("SYSTEM");
+ map(0xd010, 0xd010).portr("BUTTONS").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xd018, 0xd018).portr("MUX").nopw();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram");
+ map(0xe800, 0xe83f).ram().share("spriteram");
+ map(0xe840, 0xefff).ram();
+ map(0xf000, 0xffff).nopr(); /* fixes instant death in final level */
+}
+
+void arkanoid_state::hexa_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram();
+ map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::hexa_d008_w));
+ map(0xd010, 0xd010).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* or IRQ acknowledge, or both */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram");
+}
READ8_MEMBER(arkanoid_state::hexaa_f000_r)
{
@@ -877,22 +880,24 @@ WRITE8_MEMBER(arkanoid_state::hexaa_f000_w)
m_hexaa_from_main = data;
}
-ADDRESS_MAP_START(arkanoid_state::hexaa_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w)
- AM_RANGE(0xd010, 0xd010) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* or IRQ acknowledge, or both */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_READWRITE(hexaa_f000_r, hexaa_f000_w)
-ADDRESS_MAP_END
+void arkanoid_state::hexaa_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram();
+ map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::hexa_d008_w));
+ map(0xd010, 0xd010).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* or IRQ acknowledge, or both */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram");
+ map(0xe800, 0xefff).ram();
+ map(0xf000, 0xf000).rw(this, FUNC(arkanoid_state::hexaa_f000_r), FUNC(arkanoid_state::hexaa_f000_w));
+}
-ADDRESS_MAP_START(arkanoid_state::hexaa_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void arkanoid_state::hexaa_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
WRITE8_MEMBER(arkanoid_state::hexaa_sub_80_w)
@@ -906,25 +911,27 @@ READ8_MEMBER(arkanoid_state::hexaa_sub_90_r)
// return machine().rand();
}
-ADDRESS_MAP_START(arkanoid_state::hexaa_sub_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0x9f)
- AM_RANGE(0x00, 0x0f) AM_RAM // ?? could be communication with the other chip (protection?)
- AM_RANGE(0x80, 0x80) AM_WRITE(hexaa_sub_80_w)
- AM_RANGE(0x90, 0x90) AM_READ(hexaa_sub_90_r)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(arkanoid_state::brixian_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("protram")
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xd008, 0xd008) AM_WRITE(brixian_d008_w) /* gfx bank, flip screen etc. */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe840, 0xefff) AM_RAM
-ADDRESS_MAP_END
+void arkanoid_state::hexaa_sub_iomap(address_map &map)
+{
+ map.global_mask(0x9f);
+ map(0x00, 0x0f).ram(); // ?? could be communication with the other chip (protection?)
+ map(0x80, 0x80).w(this, FUNC(arkanoid_state::hexaa_sub_80_w));
+ map(0x90, 0x90).r(this, FUNC(arkanoid_state::hexaa_sub_90_r));
+}
+
+
+
+void arkanoid_state::brixian_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().share("protram");
+ map(0xd000, 0xd000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xd001, 0xd001).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::brixian_d008_w)); /* gfx bank, flip screen etc. */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram");
+ map(0xe800, 0xe83f).ram().share("spriteram");
+ map(0xe840, 0xefff).ram();
+}
diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp
index 814d61e9923..efaac40124e 100644
--- a/src/mame/drivers/armedf.cpp
+++ b/src/mame/drivers/armedf.cpp
@@ -418,80 +418,84 @@ WRITE16_MEMBER(armedf_state::irq_lv2_ack_w)
*
*************************************/
-ADDRESS_MAP_START(armedf_state::terraf_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x060400, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
- AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
- AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
- AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
- AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
- AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2")
+void armedf_state::terraf_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x0603ff).ram().share("spriteram");
+ map(0x060400, 0x063fff).ram();
+ map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff);
+ map(0x06a000, 0x06a9ff).ram();
+ map(0x06c000, 0x06cfff).ram().share("spr_pal_clut");
+ map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram");
+ map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram");
+ map(0x078000, 0x078001).portr("P1");
+ map(0x078002, 0x078003).portr("P2");
+ map(0x078004, 0x078005).portr("DSW1");
+ map(0x078006, 0x078007).portr("DSW2");
// AM_RANGE(0x07c000, 0x07c001) AM_WRITE(terraf_io_w) handled in DRIVER_INIT
- AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w)
- AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w)
- AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w)
- AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
- AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv1_ack_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::kozure_map)
- AM_IMPORT_FROM( terraf_map )
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x061000, 0x063fff) AM_RAM
+ map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w));
+ map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w));
+ map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w));
+ map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
+ map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv1_ack_w));
+}
+
+void armedf_state::kozure_map(address_map &map)
+{
+ terraf_map(map);
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x061000, 0x063fff).ram();
// AM_RANGE(0x07c000, 0x07c001) AM_WRITE(kozure_io_w)
// AM_RANGE(0x0c0000, 0x0c0001) AM_WRITENOP /* watchdog? */
// AM_RANGE(0xffd000, 0xffd001) AM_WRITENOP /* passes crc ROM information to MCU, I guess */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::cclimbr2_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x061000, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
- AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
- AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
- AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
- AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
- AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2")
+}
+
+void armedf_state::cclimbr2_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x061000, 0x063fff).ram();
+ map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff);
+ map(0x06a000, 0x06a9ff).ram();
+ map(0x06c000, 0x06cfff).ram().share("spr_pal_clut");
+ map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram");
+ map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram");
+ map(0x078000, 0x078001).portr("P1");
+ map(0x078002, 0x078003).portr("P2");
+ map(0x078004, 0x078005).portr("DSW1");
+ map(0x078006, 0x078007).portr("DSW2");
// AM_RANGE(0x07c000, 0x07c001) AM_WRITE(io_w)
- AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w)
- AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w)
- AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w)
- AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
- AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv2_ack_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::legion_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x061000, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
- AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
- AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
- AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
- AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
- AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2")
+ map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w));
+ map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w));
+ map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w));
+ map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
+ map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv2_ack_w));
+}
+
+void armedf_state::legion_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x061000, 0x063fff).ram();
+ map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff);
+ map(0x06a000, 0x06a9ff).ram();
+ map(0x06c000, 0x06cfff).ram().share("spr_pal_clut");
+ map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram");
+ map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram");
+ map(0x078000, 0x078001).portr("P1");
+ map(0x078002, 0x078003).portr("P2");
+ map(0x078004, 0x078005).portr("DSW1");
+ map(0x078006, 0x078007).portr("DSW2");
// AM_RANGE(0x07c000, 0x07c001) AM_WRITE(legion_io_w)
- AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w)
- AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w)
- AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w)
- AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
- AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv2_ack_w)
-ADDRESS_MAP_END
+ map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w));
+ map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w));
+ map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w));
+ map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
+ map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv2_ack_w));
+}
WRITE8_MEMBER(armedf_state::legionjb_fg_scroll_w)
{
@@ -502,52 +506,54 @@ WRITE8_MEMBER(armedf_state::legionjb_fg_scroll_w)
m_fg_scrolly = (m_legion_cmd[0x00] & 0xff) | ((m_legion_cmd[0x01] & 0x3) << 8);
}
-ADDRESS_MAP_START(armedf_state::legionjb_map)
- AM_RANGE(0x040000, 0x04003f) AM_WRITE8(legionjb_fg_scroll_w,0x00ff)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x061000, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff)
- AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
- AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
- AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
- AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
- AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2")
+void armedf_state::legionjb_map(address_map &map)
+{
+ map(0x040000, 0x04003f).w(this, FUNC(armedf_state::legionjb_fg_scroll_w)).umask16(0x00ff);
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x061000, 0x063fff).ram();
+ map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff);
+ map(0x06a000, 0x06a9ff).ram();
+ map(0x06c000, 0x06cfff).ram().share("spr_pal_clut");
+ map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram");
+ map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram");
+ map(0x078000, 0x078001).portr("P1");
+ map(0x078002, 0x078003).portr("P2");
+ map(0x078004, 0x078005).portr("DSW1");
+ map(0x078006, 0x078007).portr("DSW2");
// AM_RANGE(0x07c000, 0x07c001) AM_WRITE(bootleg_io_w)
- AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w)
- AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w)
- AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w)
- AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
- AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv2_ack_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::armedf_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x061000, 0x065fff) AM_RAM
- AM_RANGE(0x066000, 0x066fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x067000, 0x067fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff)
- AM_RANGE(0x06a000, 0x06afff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x06b000, 0x06bfff) AM_RAM AM_SHARE("spr_pal_clut")
- AM_RANGE(0x06c000, 0x06c7ff) AM_RAM
- AM_RANGE(0x06c000, 0x06c001) AM_READ_PORT("P1")
- AM_RANGE(0x06c002, 0x06c003) AM_READ_PORT("P2")
- AM_RANGE(0x06c004, 0x06c005) AM_READ_PORT("DSW1")
- AM_RANGE(0x06c006, 0x06c007) AM_READ_PORT("DSW2")
- AM_RANGE(0x06d000, 0x06d001) AM_WRITE(terraf_io_w)
- AM_RANGE(0x06d002, 0x06d003) AM_WRITE(armedf_bg_scrollx_w)
- AM_RANGE(0x06d004, 0x06d005) AM_WRITE(armedf_bg_scrolly_w)
- AM_RANGE(0x06d006, 0x06d007) AM_WRITE(armedf_fg_scrollx_w)
- AM_RANGE(0x06d008, 0x06d009) AM_WRITE(armedf_fg_scrolly_w)
- AM_RANGE(0x06d00a, 0x06d00b) AM_WRITE(sound_command_w)
- AM_RANGE(0x06d00c, 0x06d00d) AM_WRITENOP //watchdog
- AM_RANGE(0x06d00e, 0x06d00f) AM_WRITE(irq_lv1_ack_w)
-ADDRESS_MAP_END
+ map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w));
+ map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w));
+ map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w));
+ map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
+ map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv2_ack_w));
+}
+
+void armedf_state::armedf_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x061000, 0x065fff).ram();
+ map(0x066000, 0x066fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram");
+ map(0x067000, 0x067fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram");
+ map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff);
+ map(0x06a000, 0x06afff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x06b000, 0x06bfff).ram().share("spr_pal_clut");
+ map(0x06c000, 0x06c7ff).ram();
+ map(0x06c000, 0x06c001).portr("P1");
+ map(0x06c002, 0x06c003).portr("P2");
+ map(0x06c004, 0x06c005).portr("DSW1");
+ map(0x06c006, 0x06c007).portr("DSW2");
+ map(0x06d000, 0x06d001).w(this, FUNC(armedf_state::terraf_io_w));
+ map(0x06d002, 0x06d003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w));
+ map(0x06d004, 0x06d005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w));
+ map(0x06d006, 0x06d007).w(this, FUNC(armedf_state::armedf_fg_scrollx_w));
+ map(0x06d008, 0x06d009).w(this, FUNC(armedf_state::armedf_fg_scrolly_w));
+ map(0x06d00a, 0x06d00b).w(this, FUNC(armedf_state::sound_command_w));
+ map(0x06d00c, 0x06d00d).nopw(); //watchdog
+ map(0x06d00e, 0x06d00f).w(this, FUNC(armedf_state::irq_lv1_ack_w));
+}
READ16_MEMBER(bigfghtr_state::latch_r)
{
@@ -717,50 +723,55 @@ WRITE8_MEMBER(bigfghtr_state::mcu_spritelist_w)
popmessage("MCU access spritelist %04x = %02x, contact MAMEdev",offset,data);
}
-ADDRESS_MAP_START(bigfghtr_state::bigfghtr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x080600, 0x083fff) AM_READWRITE8(main_sharedram_r,main_sharedram_w,0xffff)
- AM_RANGE(0x084000, 0x085fff) AM_RAM //work ram
- AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x088000, 0x089fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff)
- AM_RANGE(0x08a000, 0x08afff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spr_pal_clut")
- AM_RANGE(0x08c000, 0x08c001) AM_READ_PORT("P1")
- AM_RANGE(0x08c002, 0x08c003) AM_READ_PORT("P2")
- AM_RANGE(0x08c004, 0x08c005) AM_READ_PORT("DSW0")
- AM_RANGE(0x08c006, 0x08c007) AM_READ_PORT("DSW1")
- AM_RANGE(0x08d000, 0x08d001) AM_WRITE(terraf_io_w) //807b0
- AM_RANGE(0x08d002, 0x08d003) AM_WRITE(armedf_bg_scrollx_w)
- AM_RANGE(0x08d004, 0x08d005) AM_WRITE(armedf_bg_scrolly_w)
- AM_RANGE(0x08d006, 0x08d007) AM_WRITE(armedf_fg_scrollx_w)
- AM_RANGE(0x08d008, 0x08d009) AM_WRITE(armedf_fg_scrolly_w)
- AM_RANGE(0x08d00a, 0x08d00b) AM_WRITE(sound_command_w)
- AM_RANGE(0x08d00c, 0x08d00d) AM_WRITENOP //watchdog
- AM_RANGE(0x08d00e, 0x08d00f) AM_WRITE(irq_lv1_ack_w)
-
- AM_RANGE(0x400000, 0x400001) AM_READ(latch_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bigfghtr_state::bigfghtr_mcu_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bigfghtr_state::bigfghtr_mcu_io_map)
- AM_RANGE(0x00000, 0x005ff) AM_WRITE(mcu_spritelist_w) //Sprite RAM, guess shared as well
- AM_RANGE(0x00600, 0x03fff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::cclimbr2_soundmap)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void bigfghtr_state::bigfghtr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x0805ff).ram().share("spriteram");
+ map(0x080600, 0x083fff).rw(this, FUNC(bigfghtr_state::main_sharedram_r), FUNC(bigfghtr_state::main_sharedram_w));
+ map(0x084000, 0x085fff).ram(); //work ram
+ map(0x086000, 0x086fff).ram().w(this, FUNC(bigfghtr_state::armedf_bg_videoram_w)).share("bg_videoram");
+ map(0x087000, 0x087fff).ram().w(this, FUNC(bigfghtr_state::armedf_fg_videoram_w)).share("fg_videoram");
+ map(0x088000, 0x089fff).rw(this, FUNC(bigfghtr_state::armedf_text_videoram_r), FUNC(bigfghtr_state::armedf_text_videoram_w)).umask16(0x00ff);
+ map(0x08a000, 0x08afff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08b000, 0x08bfff).ram().share("spr_pal_clut");
+ map(0x08c000, 0x08c001).portr("P1");
+ map(0x08c002, 0x08c003).portr("P2");
+ map(0x08c004, 0x08c005).portr("DSW0");
+ map(0x08c006, 0x08c007).portr("DSW1");
+ map(0x08d000, 0x08d001).w(this, FUNC(bigfghtr_state::terraf_io_w)); //807b0
+ map(0x08d002, 0x08d003).w(this, FUNC(bigfghtr_state::armedf_bg_scrollx_w));
+ map(0x08d004, 0x08d005).w(this, FUNC(bigfghtr_state::armedf_bg_scrolly_w));
+ map(0x08d006, 0x08d007).w(this, FUNC(bigfghtr_state::armedf_fg_scrollx_w));
+ map(0x08d008, 0x08d009).w(this, FUNC(bigfghtr_state::armedf_fg_scrolly_w));
+ map(0x08d00a, 0x08d00b).w(this, FUNC(bigfghtr_state::sound_command_w));
+ map(0x08d00c, 0x08d00d).nopw(); //watchdog
+ map(0x08d00e, 0x08d00f).w(this, FUNC(bigfghtr_state::irq_lv1_ack_w));
+
+ map(0x400000, 0x400001).r(this, FUNC(bigfghtr_state::latch_r));
+}
+
+void bigfghtr_state::bigfghtr_mcu_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void bigfghtr_state::bigfghtr_mcu_io_map(address_map &map)
+{
+ map(0x00000, 0x005ff).w(this, FUNC(bigfghtr_state::mcu_spritelist_w)); //Sprite RAM, guess shared as well
+ map(0x00600, 0x03fff).ram().share("sharedram");
+}
+
+void armedf_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void armedf_state::cclimbr2_soundmap(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xffff).ram();
+}
READ8_MEMBER(armedf_state::blitter_txram_r)
{
@@ -790,36 +801,40 @@ WRITE8_MEMBER(armedf_state::fg_scroll_msb_w)
}
-ADDRESS_MAP_START(armedf_state::terrafjb_extraz80_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_READWRITE(blitter_txram_r,blitter_txram_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::terrafjb_extraz80_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_WRITE(fg_scrollx_w)
- AM_RANGE(0x01,0x01) AM_WRITE(fg_scrolly_w)
- AM_RANGE(0x02,0x02) AM_WRITE(fg_scroll_msb_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r)
- AM_RANGE(0x6, 0x6) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(armedf_state::sound_3526_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r)
- AM_RANGE(0x6, 0x6) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void armedf_state::terrafjb_extraz80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).rw(this, FUNC(armedf_state::blitter_txram_r), FUNC(armedf_state::blitter_txram_w));
+ map(0x8000, 0x87ff).ram();
+}
+
+void armedf_state::terrafjb_extraz80_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(armedf_state::fg_scrollx_w));
+ map(0x01, 0x01).w(this, FUNC(armedf_state::fg_scrolly_w));
+ map(0x02, 0x02).w(this, FUNC(armedf_state::fg_scroll_msb_w));
+}
+
+void armedf_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0, 0x1).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x2, 0x2).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x3, 0x3).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x4, 0x4).r(this, FUNC(armedf_state::soundlatch_clear_r));
+ map(0x6, 0x6).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void armedf_state::sound_3526_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0, 0x1).w("ymsnd", FUNC(ym3526_device::write));
+ map(0x2, 0x2).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x3, 0x3).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x4, 0x4).r(this, FUNC(armedf_state::soundlatch_clear_r));
+ map(0x6, 0x6).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*************************************
diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp
index 42e6bd2fe81..69010337c60 100644
--- a/src/mame/drivers/arsystems.cpp
+++ b/src/mame/drivers/arsystems.cpp
@@ -196,41 +196,45 @@ void arcadia_amiga_state::machine_reset()
*
*************************************/
-ADDRESS_MAP_START(arcadia_amiga_state::overlay_512kb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(arcadia_amiga_state::a500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(arcadia_amiga_state::arcadia_map)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
- AM_RANGE(0x980000, 0x9fbfff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9ffffe, 0x9fffff) AM_WRITE(arcadia_multibios_change_game)
- AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(arcadia_amiga_state::argh_map)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
+void arcadia_amiga_state::overlay_512kb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
+
+void arcadia_amiga_state::a500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(arcadia_amiga_state::cia_r), FUNC(arcadia_amiga_state::cia_w));
+ map(0xc00000, 0xd7ffff).rw(this, FUNC(arcadia_amiga_state::custom_chip_r), FUNC(arcadia_amiga_state::custom_chip_w));
+ map(0xd80000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(arcadia_amiga_state::custom_chip_r), FUNC(arcadia_amiga_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(arcadia_amiga_state::custom_chip_r), FUNC(arcadia_amiga_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(arcadia_amiga_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
+
+void arcadia_amiga_state::arcadia_map(address_map &map)
+{
+ a500_mem(map);
+ map(0x800000, 0x97ffff).bankr("bank2").region("user3", 0);
+ map(0x980000, 0x9fbfff).rom().region("user2", 0);
+ map(0x9fc000, 0x9ffffd).ram().share("nvram");
+ map(0x9ffffe, 0x9fffff).w(this, FUNC(arcadia_amiga_state::arcadia_multibios_change_game));
+ map(0xf00000, 0xf7ffff).rom().region("user2", 0);
+}
+
+void arcadia_amiga_state::argh_map(address_map &map)
+{
+ a500_mem(map);
+ map(0x800000, 0x97ffff).bankr("bank2").region("user3", 0);
// AM_RANGE(0x980000, 0x9fefff) AM_ROM AM_REGION("user3", 0)
- AM_RANGE(0x9ff000, 0x9fffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user3", 0)
-ADDRESS_MAP_END
+ map(0x9ff000, 0x9fffff).ram().share("nvram");
+ map(0xf00000, 0xf7ffff).rom().region("user3", 0);
+}
/*************************************
*
diff --git a/src/mame/drivers/artmagic.cpp b/src/mame/drivers/artmagic.cpp
index 991540e87f8..943adcba472 100644
--- a/src/mame/drivers/artmagic.cpp
+++ b/src/mame/drivers/artmagic.cpp
@@ -408,54 +408,57 @@ WRITE16_MEMBER(artmagic_state::protection_bit_w)
*
*************************************/
-ADDRESS_MAP_START(artmagic_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x220000, 0x23ffff) AM_RAM
- AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("300000")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("300002")
- AM_RANGE(0x300004, 0x300005) AM_READ_PORT("300004")
- AM_RANGE(0x300006, 0x300007) AM_READ_PORT("300006")
- AM_RANGE(0x300008, 0x300009) AM_READ_PORT("300008")
- AM_RANGE(0x30000a, 0x30000b) AM_READ_PORT("30000a")
- AM_RANGE(0x300000, 0x300003) AM_WRITE(control_w) AM_SHARE("control")
- AM_RANGE(0x300004, 0x300007) AM_WRITE(protection_bit_w)
- AM_RANGE(0x360000, 0x360001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(artmagic_state::stonebal_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x27ffff) AM_RAM
- AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("300000")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("300002")
- AM_RANGE(0x300004, 0x300005) AM_READ_PORT("300004")
- AM_RANGE(0x300006, 0x300007) AM_READ_PORT("300006")
- AM_RANGE(0x300008, 0x300009) AM_READ_PORT("300008")
- AM_RANGE(0x30000a, 0x30000b) AM_READ_PORT("30000a")
- AM_RANGE(0x30000c, 0x30000d) AM_READ_PORT("30000c")
- AM_RANGE(0x30000e, 0x30000f) AM_READ_PORT("30000e")
- AM_RANGE(0x300000, 0x300003) AM_WRITE(control_w) AM_SHARE("control")
- AM_RANGE(0x300004, 0x300007) AM_WRITE(protection_bit_w)
- AM_RANGE(0x340000, 0x340001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w)
-ADDRESS_MAP_END
+void artmagic_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x220000, 0x23ffff).ram();
+ map(0x240000, 0x240fff).ram().share("nvram");
+ map(0x300000, 0x300001).portr("300000");
+ map(0x300002, 0x300003).portr("300002");
+ map(0x300004, 0x300005).portr("300004");
+ map(0x300006, 0x300007).portr("300006");
+ map(0x300008, 0x300009).portr("300008");
+ map(0x30000a, 0x30000b).portr("30000a");
+ map(0x300000, 0x300003).w(this, FUNC(artmagic_state::control_w)).share("control");
+ map(0x300004, 0x300007).w(this, FUNC(artmagic_state::protection_bit_w));
+ map(0x360001, 0x360001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380007).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+}
-// TODO: jumps to undefined area at PC=33a0 -> 230000, presumably protection device provides a code snippet
-ADDRESS_MAP_START(artmagic_state::shtstar_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x27ffff) AM_RAM
- AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x300000, 0x300001) AM_READNOP //AM_READ_PORT("300000")
- AM_RANGE(0x300000, 0x300003) AM_WRITE(control_w) AM_SHARE("control")
- AM_RANGE(0x300004, 0x300007) AM_WRITE(protection_bit_w)
- AM_RANGE(0x340000, 0x340001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w)
- AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE8("mainduart", mc68681_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void artmagic_state::stonebal_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x27ffff).ram();
+ map(0x280000, 0x280fff).ram().share("nvram");
+ map(0x300000, 0x300001).portr("300000");
+ map(0x300002, 0x300003).portr("300002");
+ map(0x300004, 0x300005).portr("300004");
+ map(0x300006, 0x300007).portr("300006");
+ map(0x300008, 0x300009).portr("300008");
+ map(0x30000a, 0x30000b).portr("30000a");
+ map(0x30000c, 0x30000d).portr("30000c");
+ map(0x30000e, 0x30000f).portr("30000e");
+ map(0x300000, 0x300003).w(this, FUNC(artmagic_state::control_w)).share("control");
+ map(0x300004, 0x300007).w(this, FUNC(artmagic_state::protection_bit_w));
+ map(0x340001, 0x340001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380007).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+}
+
+// TODO: jumps to undefined area at PC=33a0 -> 230000, presumably protection device provides a code snippet
+void artmagic_state::shtstar_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x27ffff).ram();
+ map(0x280000, 0x280fff).ram().share("nvram");
+
+ map(0x300000, 0x300001).nopr(); //AM_READ_PORT("300000")
+ map(0x300000, 0x300003).w(this, FUNC(artmagic_state::control_w)).share("control");
+ map(0x300004, 0x300007).w(this, FUNC(artmagic_state::protection_bit_w));
+ map(0x340001, 0x340001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380007).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+ map(0x3c0000, 0x3c001f).rw("mainduart", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+}
/*************************************
@@ -464,24 +467,26 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(artmagic_state::tms_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0")
- AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1")
- AM_RANGE(0x00800000, 0x0080007f) AM_READWRITE(artmagic_blitter_r, artmagic_blitter_w)
- AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xffe00000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(artmagic_state::stonebal_tms_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0")
- AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1")
- AM_RANGE(0x00800000, 0x0080007f) AM_READWRITE(artmagic_blitter_r, artmagic_blitter_w)
- AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xffc00000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+void artmagic_state::tms_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("vram0");
+ map(0x00400000, 0x005fffff).ram().share("vram1");
+ map(0x00800000, 0x0080007f).rw(this, FUNC(artmagic_state::artmagic_blitter_r), FUNC(artmagic_state::artmagic_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();
+}
+
+
+void artmagic_state::stonebal_tms_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("vram0");
+ map(0x00400000, 0x005fffff).ram().share("vram1");
+ map(0x00800000, 0x0080007f).rw(this, FUNC(artmagic_state::artmagic_blitter_r), FUNC(artmagic_state::artmagic_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();
+}
/*************************************
*
@@ -491,21 +496,24 @@ ADDRESS_MAP_END
*************************************/
/* see adp.c */
-ADDRESS_MAP_START(artmagic_state::shtstar_subcpu_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x800140, 0x800141) AM_DEVWRITE8("aysnd", ym2149_device, address_w, 0x00ff)
- AM_RANGE(0x800142, 0x800143) AM_DEVREADWRITE8("aysnd", ym2149_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("subduart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(artmagic_state::shtstar_guncpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(artmagic_state::shtstar_guncpu_io_map)
- AM_RANGE(0xc000, 0xcfff) AM_RAM
-ADDRESS_MAP_END
+void artmagic_state::shtstar_subcpu_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x800141, 0x800141).w("aysnd", FUNC(ym2149_device::address_w));
+ map(0x800143, 0x800143).rw("aysnd", FUNC(ym2149_device::data_r), FUNC(ym2149_device::data_w));
+ map(0x800180, 0x80019f).rw("subduart", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xffc000, 0xffffff).ram();
+}
+
+void artmagic_state::shtstar_guncpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
+
+void artmagic_state::shtstar_guncpu_io_map(address_map &map)
+{
+ map(0xc000, 0xcfff).ram();
+}
/*************************************
diff --git a/src/mame/drivers/ashnojoe.cpp b/src/mame/drivers/ashnojoe.cpp
index 522d5e7cb8f..837998df461 100644
--- a/src/mame/drivers/ashnojoe.cpp
+++ b/src/mame/drivers/ashnojoe.cpp
@@ -91,27 +91,28 @@ READ16_MEMBER(ashnojoe_state::fake_4a00a_r)
return 0;
}
-ADDRESS_MAP_START(ashnojoe_state::ashnojoe_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x041fff) AM_RAM_WRITE(ashnojoe_tileram3_w) AM_SHARE("tileram_3")
- AM_RANGE(0x042000, 0x043fff) AM_RAM_WRITE(ashnojoe_tileram4_w) AM_SHARE("tileram_4")
- AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE(ashnojoe_tileram5_w) AM_SHARE("tileram_5")
- AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(ashnojoe_tileram2_w) AM_SHARE("tileram_2")
- AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(ashnojoe_tileram6_w) AM_SHARE("tileram_6")
- AM_RANGE(0x047000, 0x047fff) AM_RAM_WRITE(ashnojoe_tileram7_w) AM_SHARE("tileram_7")
- AM_RANGE(0x048000, 0x048fff) AM_RAM_WRITE(ashnojoe_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x049000, 0x049fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x04a000, 0x04a001) AM_READ_PORT("P1")
- AM_RANGE(0x04a002, 0x04a003) AM_READ_PORT("P2")
- AM_RANGE(0x04a004, 0x04a005) AM_READ_PORT("DSW")
- AM_RANGE(0x04a006, 0x04a007) AM_WRITEONLY AM_SHARE("tilemap_reg")
- AM_RANGE(0x04a008, 0x04a009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x04a00a, 0x04a00b) AM_READ(fake_4a00a_r) // ??
- AM_RANGE(0x04a010, 0x04a019) AM_WRITE(joe_tilemaps_xscroll_w)
- AM_RANGE(0x04a020, 0x04a029) AM_WRITE(joe_tilemaps_yscroll_w)
- AM_RANGE(0x04c000, 0x04ffff) AM_RAM
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
-ADDRESS_MAP_END
+void ashnojoe_state::ashnojoe_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x041fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram3_w)).share("tileram_3");
+ map(0x042000, 0x043fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram4_w)).share("tileram_4");
+ map(0x044000, 0x044fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram5_w)).share("tileram_5");
+ map(0x045000, 0x045fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram2_w)).share("tileram_2");
+ map(0x046000, 0x046fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram6_w)).share("tileram_6");
+ map(0x047000, 0x047fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram7_w)).share("tileram_7");
+ map(0x048000, 0x048fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram_w)).share("tileram");
+ map(0x049000, 0x049fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x04a000, 0x04a001).portr("P1");
+ map(0x04a002, 0x04a003).portr("P2");
+ map(0x04a004, 0x04a005).portr("DSW");
+ map(0x04a006, 0x04a007).writeonly().share("tilemap_reg");
+ map(0x04a009, 0x04a009).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x04a00a, 0x04a00b).r(this, FUNC(ashnojoe_state::fake_4a00a_r)); // ??
+ map(0x04a010, 0x04a019).w(this, FUNC(ashnojoe_state::joe_tilemaps_xscroll_w));
+ map(0x04a020, 0x04a029).w(this, FUNC(ashnojoe_state::joe_tilemaps_yscroll_w));
+ map(0x04c000, 0x04ffff).ram();
+ map(0x080000, 0x0bffff).rom();
+}
WRITE8_MEMBER(ashnojoe_state::adpcm_w)
@@ -124,19 +125,21 @@ READ8_MEMBER(ashnojoe_state::sound_latch_status_r)
return m_soundlatch->pending_r();
}
-ADDRESS_MAP_START(ashnojoe_state::sound_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ashnojoe_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x02, 0x02) AM_WRITE(adpcm_w)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x06, 0x06) AM_READ(sound_latch_status_r)
-ADDRESS_MAP_END
+void ashnojoe_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank4");
+}
+
+void ashnojoe_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x02, 0x02).w(this, FUNC(ashnojoe_state::adpcm_w));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x06, 0x06).r(this, FUNC(ashnojoe_state::sound_latch_status_r));
+}
static INPUT_PORTS_START( ashnojoe )
diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp
index 6273c3e69b3..f7375798c13 100644
--- a/src/mame/drivers/asst128.cpp
+++ b/src/mame/drivers/asst128.cpp
@@ -70,18 +70,20 @@ WRITE8_MEMBER(asst128_state::asst128_fdc_dor_w)
m_fdc->dor_w(space, offset, data, mem_mask);
}
-ADDRESS_MAP_START(asst128_state::asst128_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void asst128_state::asst128_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(asst128_state::asst128_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", asst128_mb_device, map, 0xffff)
- AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
- AM_RANGE(0x03f2, 0x03f3) AM_WRITE8(asst128_fdc_dor_w, 0xffff)
- AM_RANGE(0x03f4, 0x03f5) AM_DEVICE8("fdc:upd765", upd765a_device, map, 0xffff)
-ADDRESS_MAP_END
+void asst128_state::asst128_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(asst128_mb_device::map));
+ map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
+ map(0x03f2, 0x03f3).w(this, FUNC(asst128_state::asst128_fdc_dor_w));
+ map(0x03f4, 0x03f5).m("fdc:upd765", FUNC(upd765a_device::map));
+}
static SLOT_INTERFACE_START( asst128_floppies )
SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
diff --git a/src/mame/drivers/asterix.cpp b/src/mame/drivers/asterix.cpp
index 52919e96633..710936cc083 100644
--- a/src/mame/drivers/asterix.cpp
+++ b/src/mame/drivers/asterix.cpp
@@ -168,37 +168,39 @@ WRITE16_MEMBER(asterix_state::protection_w)
}
}
-ADDRESS_MAP_START(asterix_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x180000, 0x1807ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_word_r, k053245_word_w)
- AM_RANGE(0x180800, 0x180fff) AM_RAM // extra RAM, or mirror for the above?
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_word_r, k053244_word_w)
- AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_lsb_r, k053244_lsb_w)
- AM_RANGE(0x380000, 0x380001) AM_READ_PORT("IN0")
- AM_RANGE(0x380002, 0x380003) AM_READ_PORT("IN1")
- AM_RANGE(0x380100, 0x380101) AM_WRITE(control2_w)
- AM_RANGE(0x380200, 0x380203) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x380300, 0x380301) AM_WRITE(sound_irq_w)
- AM_RANGE(0x380400, 0x380401) AM_WRITE(asterix_spritebank_w)
- AM_RANGE(0x380500, 0x38051f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x380600, 0x380601) AM_NOP // Watchdog
- AM_RANGE(0x380700, 0x380707) AM_DEVWRITE("k056832", k056832_device, b_word_w)
- AM_RANGE(0x380800, 0x380803) AM_WRITE(protection_w)
- AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("k056832", k056832_device, ram_half_word_r, ram_half_word_w)
- AM_RANGE(0x420000, 0x421fff) AM_DEVREAD("k056832", k056832_device, old_rom_word_r) // Passthrough to tile roms
- AM_RANGE(0x440000, 0x44003f) AM_DEVWRITE("k056832", k056832_device, word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(asterix_state::sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, data_w)
- AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
- AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ymsnd", ym2151_device, register_w)
-ADDRESS_MAP_END
+void asterix_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x107fff).ram();
+ map(0x180000, 0x1807ff).rw(m_k053244, FUNC(k05324x_device::k053245_word_r), FUNC(k05324x_device::k053245_word_w));
+ map(0x180800, 0x180fff).ram(); // extra RAM, or mirror for the above?
+ map(0x200000, 0x20000f).rw(m_k053244, FUNC(k05324x_device::k053244_word_r), FUNC(k05324x_device::k053244_word_w));
+ map(0x280000, 0x280fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30001f).rw(m_k053244, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w));
+ map(0x380000, 0x380001).portr("IN0");
+ map(0x380002, 0x380003).portr("IN1");
+ map(0x380100, 0x380101).w(this, FUNC(asterix_state::control2_w));
+ map(0x380200, 0x380203).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x380300, 0x380301).w(this, FUNC(asterix_state::sound_irq_w));
+ map(0x380400, 0x380401).w(this, FUNC(asterix_state::asterix_spritebank_w));
+ map(0x380500, 0x38051f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x380600, 0x380601).noprw(); // Watchdog
+ map(0x380700, 0x380707).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x380800, 0x380803).w(this, FUNC(asterix_state::protection_w));
+ map(0x400000, 0x400fff).rw(m_k056832, FUNC(k056832_device::ram_half_word_r), FUNC(k056832_device::ram_half_word_w));
+ map(0x420000, 0x421fff).r(m_k056832, FUNC(k056832_device::old_rom_word_r)); // Passthrough to tile roms
+ map(0x440000, 0x44003f).w(m_k056832, FUNC(k056832_device::word_w));
+}
+
+void asterix_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf801, 0xf801).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
+ map(0xfa00, 0xfa2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0xfc00, 0xfc00).w(this, FUNC(asterix_state::sound_arm_nmi_w));
+ map(0xfe00, 0xfe00).w("ymsnd", FUNC(ym2151_device::register_w));
+}
diff --git a/src/mame/drivers/asteroid.cpp b/src/mame/drivers/asteroid.cpp
index 7ae9185957a..e85b624f99c 100644
--- a/src/mame/drivers/asteroid.cpp
+++ b/src/mame/drivers/asteroid.cpp
@@ -248,66 +248,69 @@ WRITE8_MEMBER(asteroid_state::llander_led_w)
*
*************************************/
-ADDRESS_MAP_START(asteroid_state::asteroid_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x02ff) AM_RAMBANK("ram1") AM_SHARE("ram1")
- AM_RANGE(0x0300, 0x03ff) AM_RAMBANK("ram2") AM_SHARE("ram2")
- AM_RANGE(0x2000, 0x2007) AM_READ(asteroid_IN0_r) /* IN0 */
- AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */
- AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r) /* DSW1 */
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("dvg", dvg_device, go_w)
- AM_RANGE(0x3200, 0x3200) AM_WRITE(asteroid_bank_switch_w)
- AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3600, 0x3600) AM_WRITE(asteroid_explode_w)
- AM_RANGE(0x3a00, 0x3a00) AM_WRITE(asteroid_thump_w)
- AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("audiolatch", ls259_device, write_d7)
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(asteroid_noise_reset_w)
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000)
- AM_RANGE(0x5000, 0x57ff) AM_ROM /* vector rom */
- AM_RANGE(0x6800, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(asteroid_state::astdelux_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x02ff) AM_RAMBANK("ram1") AM_SHARE("ram1")
- AM_RANGE(0x0300, 0x03ff) AM_RAMBANK("ram2") AM_SHARE("ram2")
- AM_RANGE(0x2000, 0x2007) AM_READ(asteroid_IN0_r) /* IN0 */
- AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */
- AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r) /* DSW1 */
- AM_RANGE(0x2c00, 0x2c0f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x2c40, 0x2c7f) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("dvg", dvg_device, go_w)
- AM_RANGE(0x3200, 0x323f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3600, 0x3600) AM_WRITE(asteroid_explode_w)
- AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("audiolatch", ls259_device, write_d7)
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(asteroid_noise_reset_w)
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000)
- AM_RANGE(0x4800, 0x57ff) AM_ROM /* vector rom */
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(asteroid_state::llander_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x1f00)
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN0")
- AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */
- AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r) /* DSW1 */
- AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("THRUST")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("dvg", dvg_device, go_w)
- AM_RANGE(0x3200, 0x3200) AM_WRITE(llander_led_w)
- AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITE(llander_sounds_w)
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(llander_snd_reset_w)
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000)
- AM_RANGE(0x4800, 0x5fff) AM_ROM /* vector rom */
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void asteroid_state::asteroid_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x02ff).bankrw("ram1").share("ram1");
+ map(0x0300, 0x03ff).bankrw("ram2").share("ram2");
+ map(0x2000, 0x2007).r(this, FUNC(asteroid_state::asteroid_IN0_r)); /* IN0 */
+ map(0x2400, 0x2407).r(this, FUNC(asteroid_state::asteroid_IN1_r)); /* IN1 */
+ map(0x2800, 0x2803).r(this, FUNC(asteroid_state::asteroid_DSW1_r)); /* DSW1 */
+ map(0x3000, 0x3000).w(m_dvg, FUNC(dvg_device::go_w));
+ map(0x3200, 0x3200).w(this, FUNC(asteroid_state::asteroid_bank_switch_w));
+ map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3600, 0x3600).w(this, FUNC(asteroid_state::asteroid_explode_w));
+ map(0x3a00, 0x3a00).w(this, FUNC(asteroid_state::asteroid_thump_w));
+ map(0x3c00, 0x3c07).w("audiolatch", FUNC(ls259_device::write_d7));
+ map(0x3e00, 0x3e00).w(this, FUNC(asteroid_state::asteroid_noise_reset_w));
+ map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
+ map(0x5000, 0x57ff).rom(); /* vector rom */
+ map(0x6800, 0x7fff).rom();
+}
+
+
+void asteroid_state::astdelux_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x02ff).bankrw("ram1").share("ram1");
+ map(0x0300, 0x03ff).bankrw("ram2").share("ram2");
+ map(0x2000, 0x2007).r(this, FUNC(asteroid_state::asteroid_IN0_r)); /* IN0 */
+ map(0x2400, 0x2407).r(this, FUNC(asteroid_state::asteroid_IN1_r)); /* IN1 */
+ map(0x2800, 0x2803).r(this, FUNC(asteroid_state::asteroid_DSW1_r)); /* DSW1 */
+ map(0x2c00, 0x2c0f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x2c40, 0x2c7f).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x3000, 0x3000).w(m_dvg, FUNC(dvg_device::go_w));
+ map(0x3200, 0x323f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3600, 0x3600).w(this, FUNC(asteroid_state::asteroid_explode_w));
+ map(0x3a00, 0x3a00).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x3c00, 0x3c07).w("audiolatch", FUNC(ls259_device::write_d7));
+ map(0x3e00, 0x3e00).w(this, FUNC(asteroid_state::asteroid_noise_reset_w));
+ map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
+ map(0x4800, 0x57ff).rom(); /* vector rom */
+ map(0x6000, 0x7fff).rom();
+}
+
+
+void asteroid_state::llander_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram().mirror(0x1f00);
+ map(0x2000, 0x2000).portr("IN0");
+ map(0x2400, 0x2407).r(this, FUNC(asteroid_state::asteroid_IN1_r)); /* IN1 */
+ map(0x2800, 0x2803).r(this, FUNC(asteroid_state::asteroid_DSW1_r)); /* DSW1 */
+ map(0x2c00, 0x2c00).portr("THRUST");
+ map(0x3000, 0x3000).w(m_dvg, FUNC(dvg_device::go_w));
+ map(0x3200, 0x3200).w(this, FUNC(asteroid_state::llander_led_w));
+ map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3c00, 0x3c00).w(this, FUNC(asteroid_state::llander_sounds_w));
+ map(0x3e00, 0x3e00).w(this, FUNC(asteroid_state::llander_snd_reset_w));
+ map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
+ map(0x4800, 0x5fff).rom(); /* vector rom */
+ map(0x6000, 0x7fff).rom();
+}
diff --git a/src/mame/drivers/astinvad.cpp b/src/mame/drivers/astinvad.cpp
index 3d81d757201..e02932b471b 100644
--- a/src/mame/drivers/astinvad.cpp
+++ b/src/mame/drivers/astinvad.cpp
@@ -475,35 +475,39 @@ WRITE8_MEMBER(astinvad_state::spaceint_sound2_w)
*
*************************************/
-ADDRESS_MAP_START(astinvad_state::kamikaze_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x1bff) AM_ROM
- AM_RANGE(0x1c00, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astinvad_state::spaceint_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astinvad_state::kamikaze_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(kamikaze_ppi_r, kamikaze_ppi_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astinvad_state::spaceint_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_WRITE(spaceint_sound1_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(color_latch_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(spaceint_sound2_w)
-ADDRESS_MAP_END
+void astinvad_state::kamikaze_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x1bff).rom();
+ map(0x1c00, 0x1fff).ram();
+ map(0x2000, 0x3fff).ram().share("videoram");
+}
+
+
+void astinvad_state::spaceint_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x5fff).ram().w(this, FUNC(astinvad_state::spaceint_videoram_w)).share("videoram");
+}
+
+
+void astinvad_state::kamikaze_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(astinvad_state::kamikaze_ppi_r), FUNC(astinvad_state::kamikaze_ppi_w));
+}
+
+
+void astinvad_state::spaceint_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).w(this, FUNC(astinvad_state::spaceint_sound1_w));
+ map(0x03, 0x03).w(this, FUNC(astinvad_state::color_latch_w));
+ map(0x04, 0x04).w(this, FUNC(astinvad_state::spaceint_sound2_w));
+}
diff --git a/src/mame/drivers/astrafr.cpp b/src/mame/drivers/astrafr.cpp
index 39ab2e11ed6..a63875dc0bd 100644
--- a/src/mame/drivers/astrafr.cpp
+++ b/src/mame/drivers/astrafr.cpp
@@ -247,23 +247,27 @@ WRITE32_MEMBER(astrafr_state::astrafr_slave_mem_w)
-ADDRESS_MAP_START(astrafr_state::astrafr_master_map)
- AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_mem_r, astrafr_mem_w)
-ADDRESS_MAP_END
+void astrafr_state::astrafr_master_map(address_map &map)
+{
+ map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_mem_r), FUNC(astrafr_state::astrafr_mem_w));
+}
-ADDRESS_MAP_START(astrafr_state::astrafr_master_alt_map)
- AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_mem_r, astrafr_mem_w)
-ADDRESS_MAP_END
+void astrafr_state::astrafr_master_alt_map(address_map &map)
+{
+ map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_mem_r), FUNC(astrafr_state::astrafr_mem_w));
+}
-ADDRESS_MAP_START(astrafr_state::astra_map)
- AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_mem_r, astrafr_mem_w)
-ADDRESS_MAP_END
+void astrafr_state::astra_map(address_map &map)
+{
+ map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_mem_r), FUNC(astrafr_state::astrafr_mem_w));
+}
// probably identical, afaik they're linked units..
-ADDRESS_MAP_START(astrafr_state::astrafr_slave_map)
- AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_slave_mem_r, astrafr_slave_mem_w)
-ADDRESS_MAP_END
+void astrafr_state::astrafr_slave_map(address_map &map)
+{
+ map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_slave_mem_r), FUNC(astrafr_state::astrafr_slave_mem_w));
+}
static INPUT_PORTS_START( astrafr )
diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp
index ad4d79eda6b..4183bd34761 100644
--- a/src/mame/drivers/astrcorp.cpp
+++ b/src/mame/drivers/astrcorp.cpp
@@ -311,67 +311,71 @@ READ16_MEMBER(astrocorp_state::astrocorp_unk_r)
}
-ADDRESS_MAP_START(astrocorp_state::showhand_map)
- AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
- AM_RANGE( 0x050000, 0x050fff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x052000, 0x052001 ) AM_WRITE(astrocorp_draw_sprites_w)
- AM_RANGE( 0x054000, 0x054001 ) AM_READ_PORT("INPUTS")
- AM_RANGE( 0x058000, 0x058001 ) AM_WRITE(astrocorp_eeprom_w)
- AM_RANGE( 0x05a000, 0x05a001 ) AM_WRITE(showhand_outputs_w)
- AM_RANGE( 0x05e000, 0x05e001 ) AM_READ_PORT("EEPROMIN")
- AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE( 0x070000, 0x073fff ) AM_RAM AM_SHARE("nvram") // battery
- AM_RANGE( 0x080000, 0x080001 ) AM_WRITE(astrocorp_sound_bank_w)
- AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w)
- AM_RANGE( 0x0d0000, 0x0d0001 ) AM_READ(astrocorp_unk_r)
- AM_RANGE( 0x0d0000, 0x0d0001 ) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(astrocorp_state::showhanc_map)
- AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
- AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE( 0x070000, 0x070001 ) AM_WRITE(astrocorp_sound_bank_w)
- AM_RANGE( 0x080000, 0x080fff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x082000, 0x082001 ) AM_WRITE(astrocorp_draw_sprites_w)
- AM_RANGE( 0x084000, 0x084001 ) AM_READ_PORT("INPUTS")
- AM_RANGE( 0x088000, 0x088001 ) AM_WRITE(astrocorp_eeprom_w)
- AM_RANGE( 0x08a000, 0x08a001 ) AM_WRITE(showhand_outputs_w)
- AM_RANGE( 0x08e000, 0x08e001 ) AM_READ_PORT("EEPROMIN")
- AM_RANGE( 0x090000, 0x093fff ) AM_RAM AM_SHARE("nvram") // battery
- AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w)
- AM_RANGE( 0x0e0000, 0x0e0001 ) AM_READ(astrocorp_unk_r)
- AM_RANGE( 0x0e0000, 0x0e0001 ) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(astrocorp_state::skilldrp_map)
- AM_RANGE( 0x000000, 0x03ffff ) AM_ROM
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x202000, 0x202001 ) AM_WRITE(astrocorp_draw_sprites_w)
- AM_RANGE( 0x204000, 0x204001 ) AM_READ_PORT("INPUTS")
- AM_RANGE( 0x208000, 0x208001 ) AM_WRITE(astrocorp_eeprom_w)
- AM_RANGE( 0x20a000, 0x20a001 ) AM_WRITE(skilldrp_outputs_w)
- AM_RANGE( 0x20e000, 0x20e001 ) AM_READ_PORT("EEPROMIN")
- AM_RANGE( 0x380000, 0x3801ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE( 0x400000, 0x400001 ) AM_WRITE(astrocorp_screen_enable_w)
- AM_RANGE( 0x500000, 0x507fff ) AM_RAM AM_SHARE("nvram") // battery
- AM_RANGE( 0x580000, 0x580001 ) AM_WRITE(skilldrp_sound_bank_w)
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(astrocorp_state::speeddrp_map)
- AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
- AM_RANGE( 0x280000, 0x283fff ) AM_RAM AM_SHARE("nvram") // battery
- AM_RANGE( 0x380000, 0x380fff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x382000, 0x382001 ) AM_WRITE(astrocorp_draw_sprites_w)
- AM_RANGE( 0x384000, 0x384001 ) AM_READ_PORT("INPUTS")
- AM_RANGE( 0x388000, 0x388001 ) AM_WRITE(astrocorp_eeprom_w)
- AM_RANGE( 0x38a000, 0x38a001 ) AM_WRITE(skilldrp_outputs_w)
- AM_RANGE( 0x38e000, 0x38e001 ) AM_READ_PORT("EEPROMIN")
- AM_RANGE( 0x480000, 0x4801ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE( 0x500000, 0x500001 ) AM_WRITE(astrocorp_screen_enable_w)
- AM_RANGE( 0x580000, 0x580001 ) AM_WRITE(skilldrp_sound_bank_w)
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void astrocorp_state::showhand_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x050000, 0x050fff).ram().share("spriteram");
+ map(0x052000, 0x052001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w));
+ map(0x054000, 0x054001).portr("INPUTS");
+ map(0x058000, 0x058001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w));
+ map(0x05a000, 0x05a001).w(this, FUNC(astrocorp_state::showhand_outputs_w));
+ map(0x05e000, 0x05e001).portr("EEPROMIN");
+ map(0x060000, 0x0601ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x070000, 0x073fff).ram().share("nvram"); // battery
+ map(0x080000, 0x080001).w(this, FUNC(astrocorp_state::astrocorp_sound_bank_w));
+ map(0x0a0000, 0x0a0001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w));
+ map(0x0d0000, 0x0d0001).r(this, FUNC(astrocorp_state::astrocorp_unk_r));
+ map(0x0d0000, 0x0d0000).w(m_oki, FUNC(okim6295_device::write));
+}
+
+void astrocorp_state::showhanc_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x060000, 0x0601ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x070000, 0x070001).w(this, FUNC(astrocorp_state::astrocorp_sound_bank_w));
+ map(0x080000, 0x080fff).ram().share("spriteram");
+ map(0x082000, 0x082001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w));
+ map(0x084000, 0x084001).portr("INPUTS");
+ map(0x088000, 0x088001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w));
+ map(0x08a000, 0x08a001).w(this, FUNC(astrocorp_state::showhand_outputs_w));
+ map(0x08e000, 0x08e001).portr("EEPROMIN");
+ map(0x090000, 0x093fff).ram().share("nvram"); // battery
+ map(0x0a0000, 0x0a0001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w));
+ map(0x0e0000, 0x0e0001).r(this, FUNC(astrocorp_state::astrocorp_unk_r));
+ map(0x0e0000, 0x0e0000).w(m_oki, FUNC(okim6295_device::write));
+}
+
+void astrocorp_state::skilldrp_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x202000, 0x202001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w));
+ map(0x204000, 0x204001).portr("INPUTS");
+ map(0x208000, 0x208001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w));
+ map(0x20a000, 0x20a001).w(this, FUNC(astrocorp_state::skilldrp_outputs_w));
+ map(0x20e000, 0x20e001).portr("EEPROMIN");
+ map(0x380000, 0x3801ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w));
+ map(0x500000, 0x507fff).ram().share("nvram"); // battery
+ map(0x580000, 0x580001).w(this, FUNC(astrocorp_state::skilldrp_sound_bank_w));
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void astrocorp_state::speeddrp_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x280000, 0x283fff).ram().share("nvram"); // battery
+ map(0x380000, 0x380fff).ram().share("spriteram");
+ map(0x382000, 0x382001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w));
+ map(0x384000, 0x384001).portr("INPUTS");
+ map(0x388000, 0x388001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w));
+ map(0x38a000, 0x38a001).w(this, FUNC(astrocorp_state::skilldrp_outputs_w));
+ map(0x38e000, 0x38e001).portr("EEPROMIN");
+ map(0x480000, 0x4801ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x500001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w));
+ map(0x580000, 0x580001).w(this, FUNC(astrocorp_state::skilldrp_sound_bank_w));
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/***************************************************************************
Input Ports
diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp
index a18cf450e4d..38739a06440 100644
--- a/src/mame/drivers/astrocde.cpp
+++ b/src/mame/drivers/astrocde.cpp
@@ -530,88 +530,98 @@ CUSTOM_INPUT_MEMBER( astrocde_state::votrax_speech_status_r )
*
*************************************/
-ADDRESS_MAP_START(astrocde_state::seawolf2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM
-ADDRESS_MAP_END
+void astrocde_state::seawolf2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w));
+ map(0x4000, 0x7fff).ram().share("videoram");
+ map(0xc000, 0xc3ff).ram();
+}
-ADDRESS_MAP_START(astrocde_state::ebases_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void astrocde_state::ebases_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w));
+ map(0x4000, 0x7fff).ram().share("videoram");
+}
-ADDRESS_MAP_START(astrocde_state::spacezap_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd03f) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram")
- AM_RANGE(0xd040, 0xd7ff) AM_RAM
-ADDRESS_MAP_END
+void astrocde_state::spacezap_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w));
+ map(0x4000, 0x7fff).ram().share("videoram");
+ map(0xd000, 0xd03f).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram");
+ map(0xd040, 0xd7ff).ram();
+}
-ADDRESS_MAP_START(astrocde_state::wow_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd03f) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram")
- AM_RANGE(0xd040, 0xdfff) AM_RAM
-ADDRESS_MAP_END
+void astrocde_state::wow_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w));
+ map(0x4000, 0x7fff).ram().share("videoram");
+ map(0x8000, 0xcfff).rom();
+ map(0xd000, 0xd03f).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram");
+ map(0xd040, 0xdfff).ram();
+}
-ADDRESS_MAP_START(astrocde_state::robby_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram")
- AM_RANGE(0xe800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void astrocde_state::robby_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w));
+ map(0x4000, 0x7fff).ram().share("videoram");
+ map(0x8000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xe000, 0xe1ff).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram");
+ map(0xe800, 0xffff).ram();
+}
-ADDRESS_MAP_START(astrocde_state::demndrgn_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_DEVREAD("bank4000", address_map_bank_device, read8) AM_WRITE(profpac_videoram_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank8000")
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void astrocde_state::demndrgn_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w));
+ map(0x4000, 0x7fff).r(m_bank4000, FUNC(address_map_bank_device::read8)).w(this, FUNC(astrocde_state::profpac_videoram_w));
+ map(0x8000, 0xbfff).bankr("bank8000");
+ map(0xc000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xe800, 0xffff).ram();
+}
-ADDRESS_MAP_START(astrocde_state::profpac_map)
- AM_IMPORT_FROM(demndrgn_map)
- AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram")
-ADDRESS_MAP_END
+void astrocde_state::profpac_map(address_map &map)
+{
+ demndrgn_map(map);
+ map(0xe000, 0xe1ff).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram");
+}
-ADDRESS_MAP_START(astrocde_state::bank4000_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(profpac_videoram_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROM AM_REGION("banks", 0x08000)
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("banks", 0x10000)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("banks", 0x18000)
-ADDRESS_MAP_END
+void astrocde_state::bank4000_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(astrocde_state::profpac_videoram_r));
+ map(0x4000, 0x7fff).rom().region("banks", 0x08000);
+ map(0x8000, 0xbfff).rom().region("banks", 0x10000);
+ map(0xc000, 0xffff).rom().region("banks", 0x18000);
+}
-ADDRESS_MAP_START(astrocde_state::profpac_bank4000_map)
- AM_IMPORT_FROM(bank4000_map)
- AM_RANGE(0x10000, 0xaffff) AM_ROM AM_REGION("epromboard", 0)
- AM_RANGE(0xb0000, 0xb3fff) AM_READNOP
-ADDRESS_MAP_END
+void astrocde_state::profpac_bank4000_map(address_map &map)
+{
+ bank4000_map(map);
+ map(0x10000, 0xaffff).rom().region("epromboard", 0);
+ map(0xb0000, 0xb3fff).nopr();
+}
-ADDRESS_MAP_START(astrocde_state::tenpin_sub_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
+void astrocde_state::tenpin_sub_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xc7ff).ram();
+}
@@ -621,71 +631,78 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(astrocde_state::port_map)
- AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrocde_state::port_map_mono_pattern)
- AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
- AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w)
- AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrocde_state::port_map_stereo_pattern)
- AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
- AM_RANGE(0x0050, 0x0058) AM_SELECT(0xff00) AM_DEVWRITE("astrocade2", astrocade_device, astrocade_sound_w)
- AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w)
- AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrocde_state::port_map_16col_pattern)
- AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
- AM_RANGE(0x0050, 0x0058) AM_SELECT(0xff00) AM_DEVWRITE("astrocade2", astrocade_device, astrocade_sound_w)
- AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w)
- AM_RANGE(0x00bf, 0x00bf) AM_MIRROR(0xff00) AM_WRITE(profpac_page_select_w)
- AM_RANGE(0x00c3, 0x00c3) AM_MIRROR(0xff00) AM_READ(profpac_intercept_r)
- AM_RANGE(0x00c0, 0x00c5) AM_MIRROR(0xff00) AM_WRITE(profpac_screenram_ctrl_w)
- AM_RANGE(0x00f3, 0x00f3) AM_MIRROR(0xff00) AM_WRITE(profpac_banksw_w)
- AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrocde_state::port_map_16col_pattern_nosound)
- AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
- AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w)
- AM_RANGE(0x00bf, 0x00bf) AM_MIRROR(0xff00) AM_WRITE(profpac_page_select_w)
- AM_RANGE(0x00c3, 0x00c3) AM_MIRROR(0xff00) AM_READ(profpac_intercept_r)
- AM_RANGE(0x00c0, 0x00c5) AM_MIRROR(0xff00) AM_WRITE(profpac_screenram_ctrl_w)
- AM_RANGE(0x00f3, 0x00f3) AM_MIRROR(0xff00) AM_WRITE(demndrgn_banksw_w)
- AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrocde_state::port_map_16col_pattern_tenpindx)
- AM_IMPORT_FROM(port_map_16col_pattern_nosound)
- AM_RANGE(0x0060, 0x0060) AM_MIRROR(0xff00) AM_READ_PORT("P60")
- AM_RANGE(0x0061, 0x0061) AM_MIRROR(0xff00) AM_READ_PORT("P61")
- AM_RANGE(0x0062, 0x0062) AM_MIRROR(0xff00) AM_READ_PORT("P62")
- AM_RANGE(0x0063, 0x0063) AM_MIRROR(0xff00) AM_READ_PORT("P63")
- AM_RANGE(0x0064, 0x0064) AM_MIRROR(0xff00) AM_READ_PORT("P64")
- AM_RANGE(0x0065, 0x0066) AM_MIRROR(0xff00) AM_WRITE(tenpindx_lamp_w)
- AM_RANGE(0x0067, 0x0067) AM_MIRROR(0xff00) AM_WRITE(tenpindx_counter_w)
- AM_RANGE(0x0068, 0x0068) AM_MIRROR(0xff00) AM_WRITE(tenpindx_lights_w)
- AM_RANGE(0x0097, 0x0097) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrocde_state::tenpin_sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x97, 0x97) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x98, 0x98) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x98, 0x98) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x9a, 0x9a) AM_DEVWRITE("aysnd", ay8910_device, data_w)
-ADDRESS_MAP_END
+void astrocde_state::port_map(address_map &map)
+{
+ map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w));
+}
+
+
+void astrocde_state::port_map_mono_pattern(address_map &map)
+{
+ map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w));
+ map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w));
+ map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w));
+}
+
+
+void astrocde_state::port_map_stereo_pattern(address_map &map)
+{
+ map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w));
+ map(0x0050, 0x0058).select(0xff00).w("astrocade2", FUNC(astrocade_device::astrocade_sound_w));
+ map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w));
+ map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w));
+}
+
+
+void astrocde_state::port_map_16col_pattern(address_map &map)
+{
+ map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w));
+ map(0x0050, 0x0058).select(0xff00).w("astrocade2", FUNC(astrocade_device::astrocade_sound_w));
+ map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w));
+ map(0x00bf, 0x00bf).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_page_select_w));
+ map(0x00c3, 0x00c3).mirror(0xff00).r(this, FUNC(astrocde_state::profpac_intercept_r));
+ map(0x00c0, 0x00c5).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_screenram_ctrl_w));
+ map(0x00f3, 0x00f3).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_banksw_w));
+ map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w));
+}
+
+
+void astrocde_state::port_map_16col_pattern_nosound(address_map &map)
+{
+ map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w));
+ map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w));
+ map(0x00bf, 0x00bf).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_page_select_w));
+ map(0x00c3, 0x00c3).mirror(0xff00).r(this, FUNC(astrocde_state::profpac_intercept_r));
+ map(0x00c0, 0x00c5).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_screenram_ctrl_w));
+ map(0x00f3, 0x00f3).mirror(0xff00).w(this, FUNC(astrocde_state::demndrgn_banksw_w));
+ map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w));
+}
+
+
+void astrocde_state::port_map_16col_pattern_tenpindx(address_map &map)
+{
+ port_map_16col_pattern_nosound(map);
+ map(0x0060, 0x0060).mirror(0xff00).portr("P60");
+ map(0x0061, 0x0061).mirror(0xff00).portr("P61");
+ map(0x0062, 0x0062).mirror(0xff00).portr("P62");
+ map(0x0063, 0x0063).mirror(0xff00).portr("P63");
+ map(0x0064, 0x0064).mirror(0xff00).portr("P64");
+ map(0x0065, 0x0066).mirror(0xff00).w(this, FUNC(astrocde_state::tenpindx_lamp_w));
+ map(0x0067, 0x0067).mirror(0xff00).w(this, FUNC(astrocde_state::tenpindx_counter_w));
+ map(0x0068, 0x0068).mirror(0xff00).w(this, FUNC(astrocde_state::tenpindx_lights_w));
+ map(0x0097, 0x0097).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+
+void astrocde_state::tenpin_sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x90, 0x93).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x97, 0x97).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x98, 0x98).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x98, 0x98).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x9a, 0x9a).w("aysnd", FUNC(ay8910_device::data_w));
+}
diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp
index 9765b0c612f..ade9762d9fa 100644
--- a/src/mame/drivers/astrof.cpp
+++ b/src/mame/drivers/astrof.cpp
@@ -539,62 +539,65 @@ MACHINE_RESET_MEMBER(astrof_state,abattle)
*
*************************************/
-ADDRESS_MAP_START(astrof_state::astrof_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_NOP
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("astrof_color")
- AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w)
- AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_video_control_2_w)
- AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_audio_1_w)
- AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_audio_2_w)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP
- AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP
- AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP
- AM_RANGE(0xa003, 0xa007) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrof_state::spfghmk2_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_NOP
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("astrof_color")
- AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w)
- AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_video_control_2_w)
- AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_audio_w)
- AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP
- AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP
- AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP
- AM_RANGE(0xa003, 0xa007) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(astrof_state::tomahawk_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_NOP
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(tomahawk_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("astrof_color")
- AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w)
- AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_video_control_2_w)
- AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_audio_w)
- AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("tomahawk_prot")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP
- AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP
- AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP
- AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x1ff8) AM_READ(tomahawk_protection_r) AM_WRITENOP
- AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x1ff8) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void astrof_state::astrof_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+ map(0x2000, 0x3fff).noprw();
+ map(0x4000, 0x5fff).ram().w(this, FUNC(astrof_state::astrof_videoram_w)).share("videoram");
+ map(0x6000, 0x7fff).noprw();
+ map(0x8000, 0x8002).mirror(0x1ff8).noprw();
+ map(0x8003, 0x8003).mirror(0x1ff8).nopr().writeonly().share("astrof_color");
+ map(0x8004, 0x8004).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::video_control_1_w));
+ map(0x8005, 0x8005).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::astrof_video_control_2_w));
+ map(0x8006, 0x8006).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::astrof_audio_1_w));
+ map(0x8007, 0x8007).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::astrof_audio_2_w));
+ map(0xa000, 0xa000).mirror(0x1ff8).portr("IN").nopw();
+ map(0xa001, 0xa001).mirror(0x1ff8).portr("DSW").nopw();
+ map(0xa002, 0xa002).mirror(0x1ff8).r(this, FUNC(astrof_state::irq_clear_r)).nopw();
+ map(0xa003, 0xa007).mirror(0x1ff8).noprw();
+ map(0xc000, 0xffff).rom();
+}
+
+
+void astrof_state::spfghmk2_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+ map(0x2000, 0x3fff).noprw();
+ map(0x4000, 0x5fff).ram().w(this, FUNC(astrof_state::astrof_videoram_w)).share("videoram");
+ map(0x6000, 0x7fff).noprw();
+ map(0x8000, 0x8002).mirror(0x1ff8).noprw();
+ map(0x8003, 0x8003).mirror(0x1ff8).nopr().writeonly().share("astrof_color");
+ map(0x8004, 0x8004).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::video_control_1_w));
+ map(0x8005, 0x8005).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::spfghmk2_video_control_2_w));
+ map(0x8006, 0x8006).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::spfghmk2_audio_w));
+ map(0x8007, 0x8007).mirror(0x1ff8).noprw();
+ map(0xa000, 0xa000).mirror(0x1ff8).portr("IN").nopw();
+ map(0xa001, 0xa001).mirror(0x1ff8).portr("DSW").nopw();
+ map(0xa002, 0xa002).mirror(0x1ff8).r(this, FUNC(astrof_state::irq_clear_r)).nopw();
+ map(0xa003, 0xa007).mirror(0x1ff8).noprw();
+ map(0xc000, 0xffff).rom();
+}
+
+
+void astrof_state::tomahawk_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+ map(0x2000, 0x3fff).noprw();
+ map(0x4000, 0x5fff).ram().w(this, FUNC(astrof_state::tomahawk_videoram_w)).share("videoram");
+ map(0x6000, 0x7fff).noprw();
+ map(0x8000, 0x8002).mirror(0x1ff8).noprw();
+ map(0x8003, 0x8003).mirror(0x1ff8).nopr().writeonly().share("astrof_color");
+ map(0x8004, 0x8004).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::video_control_1_w));
+ map(0x8005, 0x8005).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::tomahawk_video_control_2_w));
+ map(0x8006, 0x8006).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::tomahawk_audio_w));
+ map(0x8007, 0x8007).mirror(0x1ff8).nopr().writeonly().share("tomahawk_prot");
+ map(0xa000, 0xa000).mirror(0x1ff8).portr("IN").nopw();
+ map(0xa001, 0xa001).mirror(0x1ff8).portr("DSW").nopw();
+ map(0xa002, 0xa002).mirror(0x1ff8).r(this, FUNC(astrof_state::irq_clear_r)).nopw();
+ map(0xa003, 0xa003).mirror(0x1ff8).r(this, FUNC(astrof_state::tomahawk_protection_r)).nopw();
+ map(0xa004, 0xa007).mirror(0x1ff8).noprw();
+ map(0xc000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/astrohome.cpp b/src/mame/drivers/astrohome.cpp
index 0a4a454839f..fcec6699453 100644
--- a/src/mame/drivers/astrohome.cpp
+++ b/src/mame/drivers/astrohome.cpp
@@ -53,17 +53,19 @@ public:
*
*********************************************************************************/
-ADDRESS_MAP_START(astrocde_mess_state::astrocade_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") /* ASG */
+void astrocde_mess_state::astrocade_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().w(this, FUNC(astrocde_mess_state::astrocade_funcgen_w));
+ map(0x1000, 0x3fff).rom(); /* Star Fortress writes in here?? */
+ map(0x4000, 0x4fff).ram().share("videoram"); /* ASG */
//AM_RANGE(0x5000, 0xffff) AM_DEVREADWRITE("exp", astrocade_exp_device, read, write)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(astrocde_mess_state::astrocade_io)
- AM_RANGE(0x00, 0x1f) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
-ADDRESS_MAP_END
+void astrocde_mess_state::astrocade_io(address_map &map)
+{
+ map(0x00, 0x1f).select(0xff00).rw(this, FUNC(astrocde_mess_state::astrocade_data_chip_register_r), FUNC(astrocde_mess_state::astrocade_data_chip_register_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/astropc.cpp b/src/mame/drivers/astropc.cpp
index d139da1bb02..4fb6a45f312 100644
--- a/src/mame/drivers/astropc.cpp
+++ b/src/mame/drivers/astropc.cpp
@@ -34,13 +34,15 @@ public:
DECLARE_DRIVER_INIT(astropc);
};
-ADDRESS_MAP_START(astropc_state::astropc_map)
- AM_RANGE(0x000c0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 )
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
+void astropc_state::astropc_map(address_map &map)
+{
+ map(0x000c0000, 0x000fffff).rom().region("bios", 0);
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(astropc_state::astropc_io)
-ADDRESS_MAP_END
+void astropc_state::astropc_io(address_map &map)
+{
+}
static INPUT_PORTS_START( astropc )
diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp
index 8f84cf92c6c..a322a657693 100644
--- a/src/mame/drivers/asuka.cpp
+++ b/src/mame/drivers/asuka.cpp
@@ -327,108 +327,118 @@ WRITE8_MEMBER(asuka_state::coin_control_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(asuka_state::bonzeadv_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_ROM
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w)
- AM_RANGE(0x390000, 0x390001) AM_READ_PORT("DSWA")
- AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(asuka_spritectrl_w)
- AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("DSWB")
- AM_RANGE(0x3c0000, 0x3c0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x3d0000, 0x3d0001) AM_READNOP
- AM_RANGE(0x3e0000, 0x3e0001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x800000, 0x8007ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff)
- AM_RANGE(0x800800, 0x800fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(asuka_state::asuka_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x1076f0, 0x1076f1) AM_READNOP /* Mofflott init does dummy reads here */
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w)
- AM_RANGE(0x3a0000, 0x3a0003) AM_WRITE(asuka_spritectrl_w)
- AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xc10000, 0xc103ff) AM_WRITENOP /* error in Asuka init code */
- AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(asuka_state::cadash_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080003) AM_WRITE(asuka_spritectrl_w)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x800000, 0x800fff) AM_READWRITE(cadash_share_r,cadash_share_w) /* network ram */
- AM_RANGE(0x900000, 0x90000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_4bpg_word_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(asuka_state::eto_map) /* N.B. tc100scn mirror overlaps spriteram */
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w)
- AM_RANGE(0x200000, 0x203fff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x400000, 0x40000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_device, read, 0x00ff) /* service mode mirror */
- AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(asuka_spritectrl_w)
- AM_RANGE(0x4e0000, 0x4e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x4e0002, 0x4e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVWRITE("tc0100scn", tc0100scn_device, word_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
- AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
+void asuka_state::bonzeadv_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x0fffff).rom();
+ map(0x10c000, 0x10ffff).ram();
+ map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
+ map(0x390000, 0x390001).portr("DSWA");
+ map(0x3a0000, 0x3a0001).w(this, FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x3b0000, 0x3b0001).portr("DSWB");
+ map(0x3c0000, 0x3c0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x3d0000, 0x3d0001).nopr();
+ map(0x3e0001, 0x3e0001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x3e0003, 0x3e0003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x8007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff);
+ map(0x800800, 0x800fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff);
+ map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+}
+
+void asuka_state::asuka_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x1076f0, 0x1076f1).nopr(); /* Mofflott init does dummy reads here */
+ map(0x200000, 0x20000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
+ map(0x3a0000, 0x3a0003).w(this, FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x3e0000, 0x3e0001).nopr();
+ map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xc10000, 0xc103ff).nopw(); /* error in Asuka init code */
+ map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+}
+
+void asuka_state::cadash_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080003).w(this, FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x0c0000, 0x0c0001).nopr();
+ map(0x0c0001, 0x0c0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x0c0003, 0x0c0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x100000, 0x107fff).ram();
+ map(0x800000, 0x800fff).rw(this, FUNC(asuka_state::cadash_share_r), FUNC(asuka_state::cadash_share_w)); /* network ram */
+ map(0x900000, 0x90000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0xa00000, 0xa0000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_4bpg_word_w));
+ map(0xb00000, 0xb03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+ map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
+
+void asuka_state::eto_map(address_map &map)
+{ /* N.B. tc100scn mirror overlaps spriteram */
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
+ map(0x200000, 0x203fff).ram();
+ map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x400000, 0x40000f).r(m_tc0220ioc, FUNC(tc0220ioc_device::read)).umask16(0x00ff); /* service mode mirror */
+ map(0x4a0000, 0x4a0003).w(this, FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x4e0000, 0x4e0001).nopr();
+ map(0x4e0001, 0x4e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x4e0003, 0x4e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xc00000, 0xc0ffff).w(m_tc0100scn, FUNC(tc0100scn_device::word_w));
+ map(0xc00000, 0xc03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+ map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
/***************************************************************************/
-ADDRESS_MAP_START(asuka_state::bonzeadv_z80_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xe600, 0xe600) AM_WRITENOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(asuka_state::z80_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
-// AM_RANGE(0x9002, 0x9100) AM_READNOP
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(asuka_msm5205_address_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(asuka_msm5205_start_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(asuka_msm5205_stop_w)
-ADDRESS_MAP_END
+void asuka_state::bonzeadv_z80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xe600, 0xe600).nopw();
+ map(0xee00, 0xee00).nopw();
+ map(0xf000, 0xf000).nopw();
+ map(0xf200, 0xf200).w(this, FUNC(asuka_state::sound_bankswitch_w));
+}
+
+void asuka_state::z80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+// map(0x9002, 0x9100).nopr();
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb000).w(this, FUNC(asuka_state::asuka_msm5205_address_w));
+ map(0xc000, 0xc000).w(this, FUNC(asuka_state::asuka_msm5205_start_w));
+ map(0xd000, 0xd000).w(this, FUNC(asuka_state::asuka_msm5205_stop_w));
+}
/* no MSM5205 */
-ADDRESS_MAP_START(asuka_state::cadash_z80_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
-ADDRESS_MAP_END
+void asuka_state::cadash_z80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+}
/*
Cadash communication CPU is a z180.
@@ -446,14 +456,16 @@ communicates with m68k S with its own shared ram. In short:
m68k M -> z180 M <-> z180 S <- m68k S
*/
-ADDRESS_MAP_START(asuka_state::cadash_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
+void asuka_state::cadash_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("sharedram");
+}
-ADDRESS_MAP_START(asuka_state::cadash_sub_io)
- AM_RANGE(0x00, 0x3f) AM_RAM // z180 internal I/O regs
-ADDRESS_MAP_END
+void asuka_state::cadash_sub_io(address_map &map)
+{
+ map(0x00, 0x3f).ram(); // z180 internal I/O regs
+}
/***********************************************************
INPUT PORTS, DIPs
diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp
index c918083fd8f..9bddb5bba46 100644
--- a/src/mame/drivers/at.cpp
+++ b/src/mame/drivers/at.cpp
@@ -192,47 +192,53 @@ public:
};
-ADDRESS_MAP_START(at_state::at16_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::at16l_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0x20000)
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0x20000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::at32_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::at32l_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0x20000)
- AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0x20000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::ficpio_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::at16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
-ADDRESS_MAP_END
+void at_state::at16_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x09ffff).bankrw("bank10");
+ map(0x0e0000, 0x0fffff).rom().region("bios", 0);
+ map(0xfe0000, 0xffffff).rom().region("bios", 0);
+}
+
+void at_state::at16l_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x09ffff).bankrw("bank10");
+ map(0x0e0000, 0x0fffff).rom().region("bios", 0x20000);
+ map(0xfe0000, 0xffffff).rom().region("bios", 0x20000);
+}
+
+void at_state::at32_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0009ffff).bankrw("bank10");
+ map(0x000e0000, 0x000fffff).rom().region("bios", 0);
+ map(0x00800000, 0x00800bff).ram().share("nvram");
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void at_state::at32l_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0009ffff).bankrw("bank10");
+ map(0x000e0000, 0x000fffff).rom().region("bios", 0x20000);
+ map(0x00800000, 0x00800bff).ram().share("nvram");
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0x20000);
+}
+
+void at_state::ficpio_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0009ffff).bankrw("bank10");
+ map(0x00800000, 0x00800bff).ram().share("nvram");
+ map(0xfffe0000, 0xffffffff).rom().region("isa", 0x20000);
+}
+
+void at_state::at16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+}
READ16_MEMBER( at_state::ps1_unk_r )
{
@@ -256,34 +262,38 @@ READ8_MEMBER( at_state::ps1_portb_r )
return data;
}
-ADDRESS_MAP_START(at_state::ps1_16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
- AM_RANGE(0x0060, 0x0061) AM_READ8(ps1_portb_r, 0xff00)
- AM_RANGE(0x0102, 0x0105) AM_READWRITE(ps1_unk_r, ps1_unk_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::neat_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
- AM_RANGE(0x0022, 0x0023) AM_DEVICE("cs8221", cs8221_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::at32_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE16("mb", at_mb_device, map, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at_state::ficpio_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE16("mb", at_mb_device, map, 0xffffffff)
- AM_RANGE(0x00a8, 0x00af) AM_DEVREADWRITE8("chipset", vt82c496_device, read, write, 0xffffffff)
- AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
-ADDRESS_MAP_END
+void at_state::ps1_16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+ map(0x0061, 0x0061).r(this, FUNC(at_state::ps1_portb_r));
+ map(0x0102, 0x0105).rw(this, FUNC(at_state::ps1_unk_r), FUNC(at_state::ps1_unk_w));
+}
+
+void at_state::neat_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+ map(0x0022, 0x0023).m("cs8221", FUNC(cs8221_device::map));
+}
+
+void at_state::at32_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+}
+
+void at_state::ficpio_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+ map(0x00a8, 0x00af).rw("chipset", FUNC(vt82c496_device::read), FUNC(vt82c496_device::write));
+ map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_device::read), FUNC(pci_bus_device::write));
+}
DRIVER_INIT_MEMBER(megapc_state, megapc)
{
@@ -337,19 +347,23 @@ WRITE_LINE_MEMBER( megapc_state::wd7600_hold )
m_wd7600->hlda_w(state);
}
-ADDRESS_MAP_START(megapc_state::megapc_map)
-ADDRESS_MAP_END
+void megapc_state::megapc_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(megapc_state::megapcpl_map)
-ADDRESS_MAP_END
+void megapc_state::megapcpl_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(megapc_state::megapc_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void megapc_state::megapc_io(address_map &map)
+{
+ map.unmap_value_high();
+}
-ADDRESS_MAP_START(megapc_state::megapcpl_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void megapc_state::megapcpl_io(address_map &map)
+{
+ map.unmap_value_high();
+}
/**********************************************************
*
diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp
index 94d749b58b8..d179d64c704 100644
--- a/src/mame/drivers/atari400.cpp
+++ b/src/mame/drivers/atari400.cpp
@@ -558,91 +558,98 @@ WRITE8_MEMBER(a400_state::xegs_low_w)
**************************************************************/
-ADDRESS_MAP_START(a400_state::a400_mem)
- AM_RANGE(0x0000, 0xbfff) AM_NOP // RAM installed at runtime
- AM_RANGE(0xc000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a600xl_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x5000, 0x57ff) AM_READ(a600xl_low_r) // self test or NOP
- AM_RANGE(0xa000, 0xbfff) AM_ROM // BASIC
- AM_RANGE(0xc000, 0xcfff) AM_ROM // OS
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_ROM // OS
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a1200xl_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a1200xl_low_r, xegs_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a800xl_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a800xl_low_r, a800xl_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a130xe_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a130xe_low_r, a800xl_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::xegs_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(xegs_low_r, xegs_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a5200_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xbfff) AM_NOP // ROM installed at machine start
- AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd400, 0xdfff) AM_DEVREADWRITE("antic", antic_device, read, write)
+void a400_state::a400_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).noprw(); // RAM installed at runtime
+ map(0xc000, 0xcfff).rom();
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rom();
+}
+
+
+void a400_state::a600xl_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x5000, 0x57ff).r(this, FUNC(a400_state::a600xl_low_r)); // self test or NOP
+ map(0xa000, 0xbfff).rom(); // BASIC
+ map(0xc000, 0xcfff).rom(); // OS
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rom(); // OS
+}
+
+
+void a400_state::a1200xl_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a1200xl_low_r), FUNC(a400_state::xegs_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::a800xl_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a800xl_low_r), FUNC(a400_state::a800xl_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::a130xe_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a130xe_low_r), FUNC(a400_state::a800xl_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::xegs_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::xegs_low_r), FUNC(a400_state::xegs_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::a5200_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x4000, 0xbfff).noprw(); // ROM installed at machine start
+ map(0xc000, 0xcfff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd400, 0xdfff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
// 0xe000-0xe7ff - Expansion?
- AM_RANGE(0xe800, 0xefff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xe800, 0xefff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xf000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp
index ae401856c32..fedceb0ead6 100644
--- a/src/mame/drivers/atari_s1.cpp
+++ b/src/mame/drivers/atari_s1.cpp
@@ -114,45 +114,48 @@ private:
required_ioport_array<10> m_switch;
};
-ADDRESS_MAP_START(atari_s1_state::atari_s1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1080, 0x1083) AM_READWRITE(m1080_r,m1080_w)
- AM_RANGE(0x1084, 0x1087) AM_READWRITE(m1084_r,m1084_w)
- AM_RANGE(0x1088, 0x108b) AM_READWRITE(m1088_r,m1088_w)
- AM_RANGE(0x108c, 0x108f) AM_READWRITE(m108c_r,m108c_w)
- AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r) AM_WRITENOP // aavenger ROL 200B causes a spurious write
- AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable
- AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5080, 0x508f) AM_WRITE(meter_w) // time2000 only
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset
- AM_RANGE(0x7000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atari_s1_state::atarians_map) // more ram
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1080, 0x1083) AM_READWRITE(m1080_r,m1080_w)
- AM_RANGE(0x1084, 0x1087) AM_READWRITE(m1084_r,m1084_w)
- AM_RANGE(0x1088, 0x108b) AM_READWRITE(m1088_r,m1088_w)
- AM_RANGE(0x108c, 0x108f) AM_READWRITE(m108c_r,m108c_w)
- AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r)
- AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable
- AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset
- AM_RANGE(0x7000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atari_s1_state::midearth_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1000, 0x11ff) AM_WRITE(midearth_w)
- AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r)
- AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable
- AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset
- AM_RANGE(0x7000, 0x7fff) AM_ROM AM_WRITENOP // writes to FFFF due to poor coding at 7FF5
-ADDRESS_MAP_END
+void atari_s1_state::atari_s1_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram().share("ram");
+ map(0x1080, 0x1083).rw(this, FUNC(atari_s1_state::m1080_r), FUNC(atari_s1_state::m1080_w));
+ map(0x1084, 0x1087).rw(this, FUNC(atari_s1_state::m1084_r), FUNC(atari_s1_state::m1084_w));
+ map(0x1088, 0x108b).rw(this, FUNC(atari_s1_state::m1088_r), FUNC(atari_s1_state::m1088_w));
+ map(0x108c, 0x108f).rw(this, FUNC(atari_s1_state::m108c_r), FUNC(atari_s1_state::m108c_w));
+ map(0x2000, 0x204f).mirror(0x0F80).r(this, FUNC(atari_s1_state::switch_r)).nopw(); // aavenger ROL 200B causes a spurious write
+ map(0x3000, 0x3fff).w(this, FUNC(atari_s1_state::audioen_w)); // audio enable
+ map(0x4000, 0x4fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5080, 0x508f).w(this, FUNC(atari_s1_state::meter_w)); // time2000 only
+ map(0x6000, 0x6fff).w(this, FUNC(atari_s1_state::audiores_w)); // audio reset
+ map(0x7000, 0x7fff).rom();
+}
+
+void atari_s1_state::atarians_map(address_map &map)
+{ // more ram
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram().share("ram");
+ map(0x1080, 0x1083).rw(this, FUNC(atari_s1_state::m1080_r), FUNC(atari_s1_state::m1080_w));
+ map(0x1084, 0x1087).rw(this, FUNC(atari_s1_state::m1084_r), FUNC(atari_s1_state::m1084_w));
+ map(0x1088, 0x108b).rw(this, FUNC(atari_s1_state::m1088_r), FUNC(atari_s1_state::m1088_w));
+ map(0x108c, 0x108f).rw(this, FUNC(atari_s1_state::m108c_r), FUNC(atari_s1_state::m108c_w));
+ map(0x2000, 0x204f).mirror(0x0F80).r(this, FUNC(atari_s1_state::switch_r));
+ map(0x3000, 0x3fff).w(this, FUNC(atari_s1_state::audioen_w)); // audio enable
+ map(0x4000, 0x4fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6000, 0x6fff).w(this, FUNC(atari_s1_state::audiores_w)); // audio reset
+ map(0x7000, 0x7fff).rom();
+}
+
+void atari_s1_state::midearth_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram().share("ram");
+ map(0x1000, 0x11ff).w(this, FUNC(atari_s1_state::midearth_w));
+ map(0x2000, 0x204f).mirror(0x0F80).r(this, FUNC(atari_s1_state::switch_r));
+ map(0x3000, 0x3fff).w(this, FUNC(atari_s1_state::audioen_w)); // audio enable
+ map(0x4000, 0x4fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6000, 0x6fff).w(this, FUNC(atari_s1_state::audiores_w)); // audio reset
+ map(0x7000, 0x7fff).rom().nopw(); // writes to FFFF due to poor coding at 7FF5
+}
static INPUT_PORTS_START( atari_s1 )
PORT_START("SWITCH.0") // 2000-2007
diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp
index d3e762dd366..36739819bde 100644
--- a/src/mame/drivers/atari_s2.cpp
+++ b/src/mame/drivers/atari_s2.cpp
@@ -77,63 +77,65 @@ private:
};
-ADDRESS_MAP_START(atari_s2_state::atari_s2_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("nvram") // battery backed
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.0")
- AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.1")
- AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.2")
- AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.3")
- AM_RANGE(0x1004, 0x1004) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.4")
- AM_RANGE(0x1005, 0x1005) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.5")
- AM_RANGE(0x1006, 0x1006) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.6")
- AM_RANGE(0x1007, 0x1007) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.7")
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x071F) AM_WRITE(sound0_w)
- AM_RANGE(0x1820, 0x1820) AM_MIRROR(0x071F) AM_WRITE(sound1_w)
- AM_RANGE(0x1840, 0x1847) AM_MIRROR(0x0718) AM_WRITE(display_w)
- AM_RANGE(0x1860, 0x1867) AM_MIRROR(0x0718) AM_WRITE(lamp_w)
- AM_RANGE(0x1880, 0x1880) AM_MIRROR(0x071F) AM_WRITE(sol0_w)
- AM_RANGE(0x18a0, 0x18a7) AM_MIRROR(0x0718) AM_WRITE(sol1_w)
- AM_RANGE(0x18c0, 0x18c0) AM_MIRROR(0x071F) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x18e0, 0x18e0) AM_MIRROR(0x071F) AM_WRITE(intack_w)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07FC) AM_READ_PORT("DSW0")
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07FC) AM_READ_PORT("DSW1")
- AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x07FC) AM_READ_PORT("DSW2")
- AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x07FC) AM_READ_PORT("DSW3")
- AM_RANGE(0x2800, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atari_s2_state::atari_s3_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("nvram") // battery backed
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.0")
- AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.1")
- AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.2")
- AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.3")
- AM_RANGE(0x1004, 0x1004) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.4")
- AM_RANGE(0x1005, 0x1005) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.5")
- AM_RANGE(0x1006, 0x1006) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.6")
- AM_RANGE(0x1007, 0x1007) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.7")
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x071F) AM_WRITE(sound0_w)
- AM_RANGE(0x1820, 0x1820) AM_MIRROR(0x071F) AM_WRITE(sound1_w)
- AM_RANGE(0x1840, 0x1847) AM_MIRROR(0x0718) AM_WRITE(display_w)
- AM_RANGE(0x1860, 0x1867) AM_MIRROR(0x0718) AM_WRITE(lamp_w)
- AM_RANGE(0x1880, 0x1880) AM_MIRROR(0x071F) AM_WRITE(sol0_w)
- AM_RANGE(0x18a0, 0x18a7) AM_MIRROR(0x0718) AM_WRITE(sol1_w)
- AM_RANGE(0x18c0, 0x18c0) AM_MIRROR(0x071F) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x18e0, 0x18e0) AM_MIRROR(0x071F) AM_WRITE(intack_w)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07F4) AM_READ_PORT("DSW0")
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07F4) AM_READ_PORT("DSW1")
- AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x07F4) AM_READ_PORT("DSW2")
- AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x07F4) AM_READ_PORT("DSW3")
- AM_RANGE(0x2008, 0x2008) AM_MIRROR(0x07F4) AM_READ_PORT("DSW4")
- AM_RANGE(0x2009, 0x2009) AM_MIRROR(0x07F4) AM_READ_PORT("DSW5")
- AM_RANGE(0x200a, 0x200a) AM_MIRROR(0x07F4) AM_READ_PORT("DSW6")
- AM_RANGE(0x200b, 0x200b) AM_MIRROR(0x07F4) AM_READ_PORT("DSW7")
- AM_RANGE(0x2800, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void atari_s2_state::atari_s2_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x00ff).mirror(0x0700).ram();
+ map(0x0800, 0x08ff).mirror(0x0700).ram().share("nvram"); // battery backed
+ map(0x1000, 0x1000).mirror(0x07F8).portr("SWITCH.0");
+ map(0x1001, 0x1001).mirror(0x07F8).portr("SWITCH.1");
+ map(0x1002, 0x1002).mirror(0x07F8).portr("SWITCH.2");
+ map(0x1003, 0x1003).mirror(0x07F8).portr("SWITCH.3");
+ map(0x1004, 0x1004).mirror(0x07F8).portr("SWITCH.4");
+ map(0x1005, 0x1005).mirror(0x07F8).portr("SWITCH.5");
+ map(0x1006, 0x1006).mirror(0x07F8).portr("SWITCH.6");
+ map(0x1007, 0x1007).mirror(0x07F8).portr("SWITCH.7");
+ map(0x1800, 0x1800).mirror(0x071F).w(this, FUNC(atari_s2_state::sound0_w));
+ map(0x1820, 0x1820).mirror(0x071F).w(this, FUNC(atari_s2_state::sound1_w));
+ map(0x1840, 0x1847).mirror(0x0718).w(this, FUNC(atari_s2_state::display_w));
+ map(0x1860, 0x1867).mirror(0x0718).w(this, FUNC(atari_s2_state::lamp_w));
+ map(0x1880, 0x1880).mirror(0x071F).w(this, FUNC(atari_s2_state::sol0_w));
+ map(0x18a0, 0x18a7).mirror(0x0718).w(this, FUNC(atari_s2_state::sol1_w));
+ map(0x18c0, 0x18c0).mirror(0x071F).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x18e0, 0x18e0).mirror(0x071F).w(this, FUNC(atari_s2_state::intack_w));
+ map(0x2000, 0x2000).mirror(0x07FC).portr("DSW0");
+ map(0x2001, 0x2001).mirror(0x07FC).portr("DSW1");
+ map(0x2002, 0x2002).mirror(0x07FC).portr("DSW2");
+ map(0x2003, 0x2003).mirror(0x07FC).portr("DSW3");
+ map(0x2800, 0x3fff).rom();
+}
+
+void atari_s2_state::atari_s3_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x00ff).mirror(0x0700).ram();
+ map(0x0800, 0x08ff).mirror(0x0700).ram().share("nvram"); // battery backed
+ map(0x1000, 0x1000).mirror(0x07F8).portr("SWITCH.0");
+ map(0x1001, 0x1001).mirror(0x07F8).portr("SWITCH.1");
+ map(0x1002, 0x1002).mirror(0x07F8).portr("SWITCH.2");
+ map(0x1003, 0x1003).mirror(0x07F8).portr("SWITCH.3");
+ map(0x1004, 0x1004).mirror(0x07F8).portr("SWITCH.4");
+ map(0x1005, 0x1005).mirror(0x07F8).portr("SWITCH.5");
+ map(0x1006, 0x1006).mirror(0x07F8).portr("SWITCH.6");
+ map(0x1007, 0x1007).mirror(0x07F8).portr("SWITCH.7");
+ map(0x1800, 0x1800).mirror(0x071F).w(this, FUNC(atari_s2_state::sound0_w));
+ map(0x1820, 0x1820).mirror(0x071F).w(this, FUNC(atari_s2_state::sound1_w));
+ map(0x1840, 0x1847).mirror(0x0718).w(this, FUNC(atari_s2_state::display_w));
+ map(0x1860, 0x1867).mirror(0x0718).w(this, FUNC(atari_s2_state::lamp_w));
+ map(0x1880, 0x1880).mirror(0x071F).w(this, FUNC(atari_s2_state::sol0_w));
+ map(0x18a0, 0x18a7).mirror(0x0718).w(this, FUNC(atari_s2_state::sol1_w));
+ map(0x18c0, 0x18c0).mirror(0x071F).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x18e0, 0x18e0).mirror(0x071F).w(this, FUNC(atari_s2_state::intack_w));
+ map(0x2000, 0x2000).mirror(0x07F4).portr("DSW0");
+ map(0x2001, 0x2001).mirror(0x07F4).portr("DSW1");
+ map(0x2002, 0x2002).mirror(0x07F4).portr("DSW2");
+ map(0x2003, 0x2003).mirror(0x07F4).portr("DSW3");
+ map(0x2008, 0x2008).mirror(0x07F4).portr("DSW4");
+ map(0x2009, 0x2009).mirror(0x07F4).portr("DSW5");
+ map(0x200a, 0x200a).mirror(0x07F4).portr("DSW6");
+ map(0x200b, 0x200b).mirror(0x07F4).portr("DSW7");
+ map(0x2800, 0x3fff).rom();
+}
static INPUT_PORTS_START( atari_s2 )
PORT_START("DSW0")
diff --git a/src/mame/drivers/atarifb.cpp b/src/mame/drivers/atarifb.cpp
index 6c25b6fc0fd..46f19408752 100644
--- a/src/mame/drivers/atarifb.cpp
+++ b/src/mame/drivers/atarifb.cpp
@@ -150,86 +150,90 @@ PALETTE_INIT_MEMBER(atarifb_state, atarifb)
*
*************************************/
-ADDRESS_MAP_START(atarifb_state::atarifb_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram")
- AM_RANGE(0x0260, 0x039f) AM_RAM
- AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram")
- AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram")
- AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */
- AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb_out1_w) /* OUT 1 */
- AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
- AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */
- AM_RANGE(0x3000, 0x3000) AM_NOP /* Interrupt Acknowledge */
- AM_RANGE(0x4000, 0x4000) AM_READ(atarifb_in0_r)
- AM_RANGE(0x4002, 0x4002) AM_READ(atarifb_in2_r)
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(atarifb_state::atarifb4_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram")
- AM_RANGE(0x0260, 0x039f) AM_RAM
- AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram")
- AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram")
- AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */
- AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb4_out1_w) /* OUT 1 */
- AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
- AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */
- AM_RANGE(0x3000, 0x3000) AM_NOP /* Interrupt Acknowledge */
- AM_RANGE(0x4000, 0x4000) AM_READ(atarifb4_in0_r)
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("EXTRA")
- AM_RANGE(0x4002, 0x4002) AM_READ(atarifb4_in2_r)
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(atarifb_state::abaseb_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram")
- AM_RANGE(0x0260, 0x039f) AM_RAM
- AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram")
- AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram")
- AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */
- AM_RANGE(0x2001, 0x2001) AM_WRITE(abaseb_out1_w) /* OUT 1 */
- AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
- AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */
- AM_RANGE(0x3000, 0x3000) AM_NOP /* Interrupt Acknowledge */
- AM_RANGE(0x4000, 0x4000) AM_READ(atarifb_in0_r)
- AM_RANGE(0x4002, 0x4002) AM_READ(atarifb_in2_r)
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(atarifb_state::soccer_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram")
- AM_RANGE(0x0260, 0x039f) AM_RAM
- AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram")
- AM_RANGE(0x0800, 0x0bbf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram")
- AM_RANGE(0x0bc0, 0x0bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */
- AM_RANGE(0x1001, 0x1001) AM_WRITE(soccer_out1_w) /* OUT 1 */
- AM_RANGE(0x1002, 0x1002) AM_WRITE(soccer_out2_w) /* OUT 2 */
- AM_RANGE(0x1004, 0x1004) AM_WRITENOP /* Interrupt Acknowledge */
- AM_RANGE(0x1005, 0x1005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1800, 0x1800) AM_READ(atarifb4_in0_r)
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("EXTRA")
- AM_RANGE(0x1802, 0x1802) AM_READ(atarifb4_in2_r)
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW1")
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void atarifb_state::atarifb_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram");
+ map(0x0260, 0x039f).ram();
+ map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram");
+ map(0x1000, 0x13bf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram");
+ map(0x13c0, 0x13ff).ram().share("spriteram");
+ map(0x2000, 0x2000).writeonly().share("scroll_register"); /* OUT 0 */
+ map(0x2001, 0x2001).w(this, FUNC(atarifb_state::atarifb_out1_w)); /* OUT 1 */
+ map(0x2002, 0x2002).w(this, FUNC(atarifb_state::atarifb_out2_w)); /* OUT 2 */
+ map(0x2003, 0x2003).w(this, FUNC(atarifb_state::atarifb_out3_w)); /* OUT 3 */
+ map(0x3000, 0x3000).noprw(); /* Interrupt Acknowledge */
+ map(0x4000, 0x4000).r(this, FUNC(atarifb_state::atarifb_in0_r));
+ map(0x4002, 0x4002).r(this, FUNC(atarifb_state::atarifb_in2_r));
+ map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6000, 0x7fff).rom();
+}
+
+
+void atarifb_state::atarifb4_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram");
+ map(0x0260, 0x039f).ram();
+ map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram");
+ map(0x1000, 0x13bf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram");
+ map(0x13c0, 0x13ff).ram().share("spriteram");
+ map(0x2000, 0x2000).writeonly().share("scroll_register"); /* OUT 0 */
+ map(0x2001, 0x2001).w(this, FUNC(atarifb_state::atarifb4_out1_w)); /* OUT 1 */
+ map(0x2002, 0x2002).w(this, FUNC(atarifb_state::atarifb_out2_w)); /* OUT 2 */
+ map(0x2003, 0x2003).w(this, FUNC(atarifb_state::atarifb_out3_w)); /* OUT 3 */
+ map(0x3000, 0x3000).noprw(); /* Interrupt Acknowledge */
+ map(0x4000, 0x4000).r(this, FUNC(atarifb_state::atarifb4_in0_r));
+ map(0x4001, 0x4001).portr("EXTRA");
+ map(0x4002, 0x4002).r(this, FUNC(atarifb_state::atarifb4_in2_r));
+ map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6000, 0x7fff).rom();
+}
+
+
+void atarifb_state::abaseb_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram");
+ map(0x0260, 0x039f).ram();
+ map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram");
+ map(0x1000, 0x13bf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram");
+ map(0x13c0, 0x13ff).ram().share("spriteram");
+ map(0x2000, 0x2000).writeonly().share("scroll_register"); /* OUT 0 */
+ map(0x2001, 0x2001).w(this, FUNC(atarifb_state::abaseb_out1_w)); /* OUT 1 */
+ map(0x2002, 0x2002).w(this, FUNC(atarifb_state::atarifb_out2_w)); /* OUT 2 */
+ map(0x2003, 0x2003).w(this, FUNC(atarifb_state::atarifb_out3_w)); /* OUT 3 */
+ map(0x3000, 0x3000).noprw(); /* Interrupt Acknowledge */
+ map(0x4000, 0x4000).r(this, FUNC(atarifb_state::atarifb_in0_r));
+ map(0x4002, 0x4002).r(this, FUNC(atarifb_state::atarifb_in2_r));
+ map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6000, 0x7fff).rom();
+}
+
+
+void atarifb_state::soccer_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram");
+ map(0x0260, 0x039f).ram();
+ map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram");
+ map(0x0800, 0x0bbf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram");
+ map(0x0bc0, 0x0bff).ram().share("spriteram");
+ map(0x1000, 0x1000).writeonly().share("scroll_register"); /* OUT 0 */
+ map(0x1001, 0x1001).w(this, FUNC(atarifb_state::soccer_out1_w)); /* OUT 1 */
+ map(0x1002, 0x1002).w(this, FUNC(atarifb_state::soccer_out2_w)); /* OUT 2 */
+ map(0x1004, 0x1004).nopw(); /* Interrupt Acknowledge */
+ map(0x1005, 0x1005).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1800, 0x1800).r(this, FUNC(atarifb_state::atarifb4_in0_r));
+ map(0x1801, 0x1801).portr("EXTRA");
+ map(0x1802, 0x1802).r(this, FUNC(atarifb_state::atarifb4_in2_r));
+ map(0x1803, 0x1803).portr("DSW1");
+ map(0x2000, 0x3fff).rom();
+}
diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp
index 36eb9c85a0c..a6a8159570c 100644
--- a/src/mame/drivers/atarig1.cpp
+++ b/src/mame/drivers/atarig1.cpp
@@ -190,29 +190,30 @@ void atarig1_state::pitfightb_cheap_slapstic_init()
*
*************************************/
-ADDRESS_MAP_START(atarig1_state::main_map)
- AM_RANGE(0x000000, 0x037fff) AM_ROM
- AM_RANGE(0x038000, 0x03ffff) AM_ROM /* pitfight slapstic goes here */
- AM_RANGE(0x040000, 0x077fff) AM_ROM
- AM_RANGE(0x078000, 0x07ffff) AM_ROM /* hydra slapstic goes here */
- AM_RANGE(0xf80000, 0xf80001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xf88000, 0xf8ffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0xf90000, 0xf90001) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0xff00)
- AM_RANGE(0xf98000, 0xf98001) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w)
- AM_RANGE(0xfa0000, 0xfa0001) AM_DEVWRITE8("rle", atari_rle_objects_device, control_write, 0x00ff)
- AM_RANGE(0xfb0000, 0xfb0001) AM_WRITE(video_int_ack_w)
- AM_RANGE(0xfc0000, 0xfc0001) AM_READ(special_port0_r)
- AM_RANGE(0xfc8000, 0xfc8007) AM_READWRITE(a2d_data_r, a2d_select_w)
- AM_RANGE(0xfd0000, 0xfd0001) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0xff00)
- AM_RANGE(0xfd8000, 0xfdffff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
+void atarig1_state::main_map(address_map &map)
+{
+ map(0x000000, 0x037fff).rom();
+ map(0x038000, 0x03ffff).rom(); /* pitfight slapstic goes here */
+ map(0x040000, 0x077fff).rom();
+ map(0x078000, 0x07ffff).rom(); /* hydra slapstic goes here */
+ map(0xf80000, 0xf80001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xf88000, 0xf8ffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0xf90000, 0xf90000).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w));
+ map(0xf98000, 0xf98001).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w));
+ map(0xfa0001, 0xfa0001).w(m_rle, FUNC(atari_rle_objects_device::control_write));
+ map(0xfb0000, 0xfb0001).w(this, FUNC(atarig1_state::video_int_ack_w));
+ map(0xfc0000, 0xfc0001).r(this, FUNC(atarig1_state::special_port0_r));
+ map(0xfc8000, 0xfc8007).rw(this, FUNC(atarig1_state::a2d_data_r), FUNC(atarig1_state::a2d_select_w));
+ map(0xfd0000, 0xfd0000).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r));
+ map(0xfd8000, 0xfdffff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
/* AM_RANGE(0xfe0000, 0xfe7fff) AM_READ(from_r)*/
- AM_RANGE(0xfe8000, 0xfe89ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
- AM_RANGE(0xff0000, 0xff0fff) AM_RAM AM_SHARE("rle")
- AM_RANGE(0xff2000, 0xff2001) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
- AM_RANGE(0xff4000, 0xff5fff) AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xff6000, 0xff6fff) AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
-ADDRESS_MAP_END
+ map(0xfe8000, 0xfe89ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xffffff).ram();
+ map(0xff0000, 0xff0fff).ram().share("rle");
+ map(0xff2000, 0xff2001).w(this, FUNC(atarig1_state::mo_command_w)).share("mo_command");
+ map(0xff4000, 0xff5fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0xff6000, 0xff6fff).w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+}
diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp
index 3e639b4fdef..f03b4db376f 100644
--- a/src/mame/drivers/atarig42.cpp
+++ b/src/mame/drivers/atarig42.cpp
@@ -320,31 +320,32 @@ WRITE16_MEMBER(atarig42_0x400_state::guardians_sloop_data_w)
*
*************************************/
-ADDRESS_MAP_START(atarig42_state::main_map)
- AM_RANGE(0x000000, 0x080001) AM_ROM
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("IN0")
- AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("IN1")
- AM_RANGE(0xe00010, 0xe00011) AM_READ(special_port2_r)
- AM_RANGE(0xe00012, 0xe00013) AM_READ_PORT("jsa:JSAIII")
- AM_RANGE(0xe00020, 0xe00027) AM_READWRITE(a2d_data_r, a2d_select_w)
- AM_RANGE(0xe00030, 0xe00031) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff)
- AM_RANGE(0xe00040, 0xe00041) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff)
- AM_RANGE(0xe00050, 0xe00051) AM_WRITE(io_latch_w)
- AM_RANGE(0xe00060, 0xe00061) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0xe03000, 0xe03001) AM_WRITE(video_int_ack_w)
- AM_RANGE(0xe03800, 0xe03801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xe80000, 0xe80fff) AM_RAM
- AM_RANGE(0xf40000, 0xf40001) AM_DEVREAD("asic65", asic65_device, io_r)
- AM_RANGE(0xf60000, 0xf60001) AM_DEVREAD("asic65", asic65_device, read)
- AM_RANGE(0xf80000, 0xf80003) AM_DEVWRITE("asic65", asic65_device, data_w)
- AM_RANGE(0xfa0000, 0xfa0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xfc0000, 0xfc0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
- AM_RANGE(0xff0000, 0xff0fff) AM_RAM AM_SHARE("rle")
- AM_RANGE(0xff2000, 0xff5fff) AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xff6000, 0xff6fff) AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xff7000, 0xff7001) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
-ADDRESS_MAP_END
+void atarig42_state::main_map(address_map &map)
+{
+ map(0x000000, 0x080001).rom();
+ map(0xe00000, 0xe00001).portr("IN0");
+ map(0xe00002, 0xe00003).portr("IN1");
+ map(0xe00010, 0xe00011).r(this, FUNC(atarig42_state::special_port2_r));
+ map(0xe00012, 0xe00013).portr("jsa:JSAIII");
+ map(0xe00020, 0xe00027).rw(this, FUNC(atarig42_state::a2d_data_r), FUNC(atarig42_state::a2d_select_w));
+ map(0xe00031, 0xe00031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r));
+ map(0xe00041, 0xe00041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w));
+ map(0xe00050, 0xe00051).w(this, FUNC(atarig42_state::io_latch_w));
+ map(0xe00060, 0xe00061).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0xe03000, 0xe03001).w(this, FUNC(atarig42_state::video_int_ack_w));
+ map(0xe03800, 0xe03801).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xe80000, 0xe80fff).ram();
+ map(0xf40000, 0xf40001).r(m_asic65, FUNC(asic65_device::io_r));
+ map(0xf60000, 0xf60001).r(m_asic65, FUNC(asic65_device::read));
+ map(0xf80000, 0xf80003).w(m_asic65, FUNC(asic65_device::data_w));
+ map(0xfa0000, 0xfa0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xfc0000, 0xfc0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xffffff).ram();
+ map(0xff0000, 0xff0fff).ram().share("rle");
+ map(0xff2000, 0xff5fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0xff6000, 0xff6fff).w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0xff7000, 0xff7001).w(this, FUNC(atarig42_state::mo_command_w)).share("mo_command");
+}
diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp
index 2622f728e13..fc8a438bfbe 100644
--- a/src/mame/drivers/atarigt.cpp
+++ b/src/mame/drivers/atarigt.cpp
@@ -596,29 +596,30 @@ WRITE32_MEMBER(atarigt_state::colorram_protection_w)
*
*************************************/
-ADDRESS_MAP_START(atarigt_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0xc00000, 0xc00003) AM_READWRITE(sound_data_r, sound_data_w)
- AM_RANGE(0xd00014, 0xd00017) AM_READ(analog_port0_r)
- AM_RANGE(0xd0001c, 0xd0001f) AM_READ(analog_port1_r)
- AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00)
- AM_RANGE(0xd40000, 0xd4ffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write32)
- AM_RANGE(0xd70000, 0xd7ffff) AM_RAM
- AM_RANGE(0xd72000, 0xd75fff) AM_DEVWRITE("playfield", tilemap_device, write32) AM_SHARE("playfield")
- AM_RANGE(0xd76000, 0xd76fff) AM_DEVWRITE("alpha", tilemap_device, write32) AM_SHARE("alpha")
- AM_RANGE(0xd78000, 0xd78fff) AM_RAM AM_SHARE("rle")
- AM_RANGE(0xd7a200, 0xd7a203) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
- AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(colorram_protection_r, colorram_protection_w) AM_SHARE("colorram")
- AM_RANGE(0xe04000, 0xe04003) AM_WRITE(led_w)
- AM_RANGE(0xe08000, 0xe08003) AM_WRITE(latch_w)
- AM_RANGE(0xe0a000, 0xe0a003) AM_WRITE16(scanline_int_ack_w, 0xffffffff)
- AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE16(video_int_ack_w, 0xffffffff)
- AM_RANGE(0xe0e000, 0xe0e003) AM_WRITENOP//watchdog_reset_w },
- AM_RANGE(0xe80000, 0xe80003) AM_READ_PORT("P1_P2")
- AM_RANGE(0xe82000, 0xe82003) AM_READ(special_port2_r)
- AM_RANGE(0xe82004, 0xe82007) AM_READ(special_port3_r)
- AM_RANGE(0xf80000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void atarigt_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0xc00000, 0xc00003).rw(this, FUNC(atarigt_state::sound_data_r), FUNC(atarigt_state::sound_data_w));
+ map(0xd00014, 0xd00017).r(this, FUNC(atarigt_state::analog_port0_r));
+ map(0xd0001c, 0xd0001f).r(this, FUNC(atarigt_state::analog_port1_r));
+ map(0xd20000, 0xd20fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00);
+ map(0xd40000, 0xd4ffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write32));
+ map(0xd70000, 0xd7ffff).ram();
+ map(0xd72000, 0xd75fff).w(m_playfield_tilemap, FUNC(tilemap_device::write32)).share("playfield");
+ map(0xd76000, 0xd76fff).w(m_alpha_tilemap, FUNC(tilemap_device::write32)).share("alpha");
+ map(0xd78000, 0xd78fff).ram().share("rle");
+ map(0xd7a200, 0xd7a203).w(this, FUNC(atarigt_state::mo_command_w)).share("mo_command");
+ map(0xd80000, 0xdfffff).rw(this, FUNC(atarigt_state::colorram_protection_r), FUNC(atarigt_state::colorram_protection_w)).share("colorram");
+ map(0xe04000, 0xe04003).w(this, FUNC(atarigt_state::led_w));
+ map(0xe08000, 0xe08003).w(this, FUNC(atarigt_state::latch_w));
+ map(0xe0a000, 0xe0a003).w(this, FUNC(atarigt_state::scanline_int_ack_w));
+ map(0xe0c000, 0xe0c003).w(this, FUNC(atarigt_state::video_int_ack_w));
+ map(0xe0e000, 0xe0e003).nopw();//watchdog_reset_w },
+ map(0xe80000, 0xe80003).portr("P1_P2");
+ map(0xe82000, 0xe82003).r(this, FUNC(atarigt_state::special_port2_r));
+ map(0xe82004, 0xe82007).r(this, FUNC(atarigt_state::special_port3_r));
+ map(0xf80000, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/atarigx2.cpp b/src/mame/drivers/atarigx2.cpp
index 9da879d7545..019cc84bfce 100644
--- a/src/mame/drivers/atarigx2.cpp
+++ b/src/mame/drivers/atarigx2.cpp
@@ -1196,29 +1196,30 @@ READ32_MEMBER( atarigx2_state::rrreveng_prot_r )
*
*************************************/
-ADDRESS_MAP_START(atarigx2_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0xc80000, 0xc80fff) AM_RAM
- AM_RANGE(0xd00000, 0xd1ffff) AM_READ(a2d_data_r)
- AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00)
- AM_RANGE(0xd40000, 0xd40fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xd70000, 0xd7ffff) AM_RAM
- AM_RANGE(0xd72000, 0xd75fff) AM_DEVWRITE("playfield", tilemap_device, write32) AM_SHARE("playfield")
- AM_RANGE(0xd76000, 0xd76fff) AM_DEVWRITE("alpha", tilemap_device, write32) AM_SHARE("alpha")
- AM_RANGE(0xd78000, 0xd78fff) AM_RAM AM_SHARE("rle")
- AM_RANGE(0xd7a200, 0xd7a203) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
- AM_RANGE(0xd80000, 0xd9ffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write32)
- AM_RANGE(0xe06000, 0xe06003) AM_DEVWRITE8("jsa", atari_jsa_iiis_device, main_command_w, 0xff000000)
- AM_RANGE(0xe08000, 0xe08003) AM_WRITE(latch_w)
- AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE16(video_int_ack_w, 0xffffffff)
- AM_RANGE(0xe0e000, 0xe0e003) AM_WRITENOP//watchdog_reset_w },
- AM_RANGE(0xe80000, 0xe80003) AM_READ_PORT("P1_P2")
- AM_RANGE(0xe82000, 0xe82003) AM_READ(special_port2_r)
- AM_RANGE(0xe82004, 0xe82007) AM_READ(special_port3_r)
- AM_RANGE(0xe86000, 0xe86003) AM_DEVREAD8("jsa", atari_jsa_iiis_device, main_response_r, 0xff000000)
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void atarigx2_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom();
+ map(0xc80000, 0xc80fff).ram();
+ map(0xd00000, 0xd1ffff).r(this, FUNC(atarigx2_state::a2d_data_r));
+ map(0xd20000, 0xd20fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00);
+ map(0xd40000, 0xd40fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xd70000, 0xd7ffff).ram();
+ map(0xd72000, 0xd75fff).w(m_playfield_tilemap, FUNC(tilemap_device::write32)).share("playfield");
+ map(0xd76000, 0xd76fff).w(m_alpha_tilemap, FUNC(tilemap_device::write32)).share("alpha");
+ map(0xd78000, 0xd78fff).ram().share("rle");
+ map(0xd7a200, 0xd7a203).w(this, FUNC(atarigx2_state::mo_command_w)).share("mo_command");
+ map(0xd80000, 0xd9ffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write32));
+ map(0xe06000, 0xe06000).w(m_jsa, FUNC(atari_jsa_iiis_device::main_command_w));
+ map(0xe08000, 0xe08003).w(this, FUNC(atarigx2_state::latch_w));
+ map(0xe0c000, 0xe0c003).w(this, FUNC(atarigx2_state::video_int_ack_w));
+ map(0xe0e000, 0xe0e003).nopw();//watchdog_reset_w },
+ map(0xe80000, 0xe80003).portr("P1_P2");
+ map(0xe82000, 0xe82003).r(this, FUNC(atarigx2_state::special_port2_r));
+ map(0xe82004, 0xe82007).r(this, FUNC(atarigx2_state::special_port3_r));
+ map(0xe86000, 0xe86000).r(m_jsa, FUNC(atari_jsa_iiis_device::main_response_r));
+ map(0xff8000, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp
index 5b80ea4d590..f148a3fb055 100644
--- a/src/mame/drivers/atarist.cpp
+++ b/src/mame/drivers/atarist.cpp
@@ -1203,117 +1203,122 @@ WRITE16_MEMBER( stbook_state::lcd_control_w )
// ADDRESS_MAP( ikbd_map )
//-------------------------------------------------
-ADDRESS_MAP_START(st_state::ikbd_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_TAG, hd6301_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6301V1_TAG, 0)
-ADDRESS_MAP_END
+void st_state::ikbd_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw(HD6301V1_TAG, FUNC(hd6301_cpu_device::m6801_io_r), FUNC(hd6301_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0xf000, 0xffff).rom().region(HD6301V1_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( ikbd_io_map )
//-------------------------------------------------
-ADDRESS_MAP_START(st_state::ikbd_io_map)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ(ikbd_port1_r)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(ikbd_port2_r, ikbd_port2_w)
- AM_RANGE(M6801_PORT3, M6801_PORT3) AM_WRITE(ikbd_port3_w)
- AM_RANGE(M6801_PORT4, M6801_PORT4) AM_READWRITE(ikbd_port4_r, ikbd_port4_w)
-ADDRESS_MAP_END
+void st_state::ikbd_io_map(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).r(this, FUNC(st_state::ikbd_port1_r));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(st_state::ikbd_port2_r), FUNC(st_state::ikbd_port2_w));
+ map(M6801_PORT3, M6801_PORT3).w(this, FUNC(st_state::ikbd_port3_w));
+ map(M6801_PORT4, M6801_PORT4).rw(this, FUNC(st_state::ikbd_port4_r), FUNC(st_state::ikbd_port4_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( st_map )
//-------------------------------------------------
-ADDRESS_MAP_START(st_state::st_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION(M68000_TAG, 0) AM_WRITE(berr_w)
- AM_RANGE(0x000008, 0x1fffff) AM_RAM
- AM_RANGE(0x200000, 0x3fffff) AM_RAM
- AM_RANGE(0x400000, 0xf9ffff) AM_READWRITE(berr_r, berr_w)
+void st_state::st_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x000007).rom().region(M68000_TAG, 0).w(this, FUNC(st_state::berr_w));
+ map(0x000008, 0x1fffff).ram();
+ map(0x200000, 0x3fffff).ram();
+ map(0x400000, 0xf9ffff).rw(this, FUNC(st_state::berr_r), FUNC(st_state::berr_w));
//AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot
- AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) AM_WRITE(berr_w)
- AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff)
- AM_RANGE(0xff8200, 0xff8203) AM_READWRITE8(shifter_base_r, shifter_base_w, 0x00ff)
- AM_RANGE(0xff8204, 0xff8209) AM_READ8(shifter_counter_r, 0x00ff)
- AM_RANGE(0xff820a, 0xff820b) AM_READWRITE8(shifter_sync_r, shifter_sync_w, 0xff00)
- AM_RANGE(0xff8240, 0xff825f) AM_READWRITE(shifter_palette_r, shifter_palette_w)
- AM_RANGE(0xff8260, 0xff8261) AM_READWRITE8(shifter_mode_r, shifter_mode_w, 0xff00)
- AM_RANGE(0xff8604, 0xff8605) AM_READWRITE(fdc_data_r, fdc_data_w)
- AM_RANGE(0xff8606, 0xff8607) AM_READWRITE(dma_status_r, dma_mode_w)
- AM_RANGE(0xff8608, 0xff860d) AM_READWRITE8(dma_counter_r, dma_base_w, 0x00ff)
- AM_RANGE(0xff8800, 0xff8801) AM_DEVREADWRITE8(YM2149_TAG, ay8910_device, data_r, address_w, 0xff00) AM_MIRROR(0xfc)
- AM_RANGE(0xff8802, 0xff8803) AM_DEVREADWRITE8(YM2149_TAG, ay8910_device, data_r, data_w, 0xff00) AM_MIRROR(0xfc)
+ map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0).w(this, FUNC(st_state::berr_w));
+ map(0xff8001, 0xff8001).rw(this, FUNC(st_state::mmu_r), FUNC(st_state::mmu_w));
+ map(0xff8200, 0xff8203).rw(this, FUNC(st_state::shifter_base_r), FUNC(st_state::shifter_base_w)).umask16(0x00ff);
+ map(0xff8204, 0xff8209).r(this, FUNC(st_state::shifter_counter_r)).umask16(0x00ff);
+ map(0xff820a, 0xff820a).rw(this, FUNC(st_state::shifter_sync_r), FUNC(st_state::shifter_sync_w));
+ map(0xff8240, 0xff825f).rw(this, FUNC(st_state::shifter_palette_r), FUNC(st_state::shifter_palette_w));
+ map(0xff8260, 0xff8260).rw(this, FUNC(st_state::shifter_mode_r), FUNC(st_state::shifter_mode_w));
+ map(0xff8604, 0xff8605).rw(this, FUNC(st_state::fdc_data_r), FUNC(st_state::fdc_data_w));
+ map(0xff8606, 0xff8607).rw(this, FUNC(st_state::dma_status_r), FUNC(st_state::dma_mode_w));
+ map(0xff8608, 0xff860d).rw(this, FUNC(st_state::dma_counter_r), FUNC(st_state::dma_base_w)).umask16(0x00ff);
+ map(0xff8800, 0xff8800).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0xfc);
+ map(0xff8802, 0xff8802).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)).mirror(0xfc);
#if 0
- AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(blitter_halftone_r, blitter_halftone_w)
- AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(blitter_src_inc_x_r, blitter_src_inc_x_w)
- AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(blitter_src_inc_y_r, blitter_src_inc_y_w)
- AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(blitter_src_r, blitter_src_w)
- AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(blitter_end_mask_r, blitter_end_mask_w)
- AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(blitter_dst_inc_x_r, blitter_dst_inc_x_w)
- AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w)
- AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(blitter_dst_r, blitter_dst_w)
- AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(blitter_count_x_r, blitter_count_x_w)
- AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(blitter_count_y_r, blitter_count_y_w)
- AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(blitter_op_r, blitter_op_w)
- AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(blitter_ctrl_r, blitter_ctrl_w)
+ map(0xff8a00, 0xff8a1f).rw(this, FUNC(st_state::blitter_halftone_r), FUNC(st_state::blitter_halftone_w));
+ map(0xff8a20, 0xff8a21).rw(this, FUNC(st_state::blitter_src_inc_x_r), FUNC(st_state::blitter_src_inc_x_w));
+ map(0xff8a22, 0xff8a23).rw(this, FUNC(st_state::blitter_src_inc_y_r), FUNC(st_state::blitter_src_inc_y_w));
+ map(0xff8a24, 0xff8a27).rw(this, FUNC(st_state::blitter_src_r), FUNC(st_state::blitter_src_w));
+ map(0xff8a28, 0xff8a2d).rw(this, FUNC(st_state::blitter_end_mask_r), FUNC(st_state::blitter_end_mask_w));
+ map(0xff8a2e, 0xff8a2f).rw(this, FUNC(st_state::blitter_dst_inc_x_r), FUNC(st_state::blitter_dst_inc_x_w));
+ map(0xff8a30, 0xff8a31).rw(this, FUNC(st_state::blitter_dst_inc_y_r), FUNC(st_state::blitter_dst_inc_y_w));
+ map(0xff8a32, 0xff8a35).rw(this, FUNC(st_state::blitter_dst_r), FUNC(st_state::blitter_dst_w));
+ map(0xff8a36, 0xff8a37).rw(this, FUNC(st_state::blitter_count_x_r), FUNC(st_state::blitter_count_x_w));
+ map(0xff8a38, 0xff8a39).rw(this, FUNC(st_state::blitter_count_y_r), FUNC(st_state::blitter_count_y_w));
+ map(0xff8a3a, 0xff8a3b).rw(this, FUNC(st_state::blitter_op_r), FUNC(st_state::blitter_op_w));
+ map(0xff8a3c, 0xff8a3d).rw(this, FUNC(st_state::blitter_ctrl_r), FUNC(st_state::blitter_ctrl_w));
#endif
- AM_RANGE(0xfffa00, 0xfffa3f) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff)
- AM_RANGE(0xfffc00, 0xfffc03) AM_DEVREADWRITE8(MC6850_0_TAG, acia6850_device, read, write, 0xff00)
- AM_RANGE(0xfffc04, 0xfffc07) AM_DEVREADWRITE8(MC6850_1_TAG, acia6850_device, read, write, 0xff00)
-ADDRESS_MAP_END
+ map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
+ map(0xfffc00, 0xfffc03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc04, 0xfffc07).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+}
//-------------------------------------------------
// ADDRESS_MAP( megast_map )
//-------------------------------------------------
-ADDRESS_MAP_START(megast_state::megast_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION(M68000_TAG, 0)
- AM_RANGE(0x000008, 0x1fffff) AM_RAM
- AM_RANGE(0x200000, 0x3fffff) AM_RAM
+void megast_state::megast_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x000007).rom().region(M68000_TAG, 0);
+ map(0x000008, 0x1fffff).ram();
+ map(0x200000, 0x3fffff).ram();
//AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot
- AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0)
+ map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0);
// AM_RANGE(0xff7f30, 0xff7f31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w) // for TOS 1.02
- AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff)
- AM_RANGE(0xff8200, 0xff8203) AM_READWRITE8(shifter_base_r, shifter_base_w, 0x00ff)
- AM_RANGE(0xff8204, 0xff8209) AM_READ8(shifter_counter_r, 0x00ff)
- AM_RANGE(0xff820a, 0xff820b) AM_READWRITE8(shifter_sync_r, shifter_sync_w, 0xff00)
- AM_RANGE(0xff8240, 0xff825f) AM_READWRITE(shifter_palette_r, shifter_palette_w)
- AM_RANGE(0xff8260, 0xff8261) AM_READWRITE8(shifter_mode_r, shifter_mode_w, 0xff00)
- AM_RANGE(0xff8604, 0xff8605) AM_READWRITE(fdc_data_r, fdc_data_w)
- AM_RANGE(0xff8606, 0xff8607) AM_READWRITE(dma_status_r, dma_mode_w)
- AM_RANGE(0xff8608, 0xff860d) AM_READWRITE8(dma_counter_r, dma_base_w, 0x00ff)
- AM_RANGE(0xff8800, 0xff8801) AM_DEVREADWRITE8(YM2149_TAG, ay8910_device, data_r, address_w, 0xff00)
- AM_RANGE(0xff8802, 0xff8803) AM_DEVWRITE8(YM2149_TAG, ay8910_device, data_w, 0xff00)
- AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(blitter_halftone_r, blitter_halftone_w)
- AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(blitter_src_inc_x_r, blitter_src_inc_x_w)
- AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(blitter_src_inc_y_r, blitter_src_inc_y_w)
- AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(blitter_src_r, blitter_src_w)
- AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(blitter_end_mask_r, blitter_end_mask_w)
- AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(blitter_dst_inc_x_r, blitter_dst_inc_x_w)
- AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w)
- AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(blitter_dst_r, blitter_dst_w)
- AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(blitter_count_x_r, blitter_count_x_w)
- AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(blitter_count_y_r, blitter_count_y_w)
- AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(blitter_op_r, blitter_op_w)
- AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(blitter_ctrl_r, blitter_ctrl_w)
- AM_RANGE(0xfffa00, 0xfffa3f) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff)
- AM_RANGE(0xfffa40, 0xfffa57) AM_READWRITE(fpu_r, fpu_w)
- AM_RANGE(0xfffc00, 0xfffc03) AM_DEVREADWRITE8(MC6850_0_TAG, acia6850_device, read, write, 0xff00)
- AM_RANGE(0xfffc04, 0xfffc07) AM_DEVREADWRITE8(MC6850_1_TAG, acia6850_device, read, write, 0xff00)
- AM_RANGE(0xfffc20, 0xfffc3f) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xff8001, 0xff8001).rw(this, FUNC(megast_state::mmu_r), FUNC(megast_state::mmu_w));
+ map(0xff8200, 0xff8203).rw(this, FUNC(megast_state::shifter_base_r), FUNC(megast_state::shifter_base_w)).umask16(0x00ff);
+ map(0xff8204, 0xff8209).r(this, FUNC(megast_state::shifter_counter_r)).umask16(0x00ff);
+ map(0xff820a, 0xff820a).rw(this, FUNC(megast_state::shifter_sync_r), FUNC(megast_state::shifter_sync_w));
+ map(0xff8240, 0xff825f).rw(this, FUNC(megast_state::shifter_palette_r), FUNC(megast_state::shifter_palette_w));
+ map(0xff8260, 0xff8260).rw(this, FUNC(megast_state::shifter_mode_r), FUNC(megast_state::shifter_mode_w));
+ map(0xff8604, 0xff8605).rw(this, FUNC(megast_state::fdc_data_r), FUNC(megast_state::fdc_data_w));
+ map(0xff8606, 0xff8607).rw(this, FUNC(megast_state::dma_status_r), FUNC(megast_state::dma_mode_w));
+ map(0xff8608, 0xff860d).rw(this, FUNC(megast_state::dma_counter_r), FUNC(megast_state::dma_base_w)).umask16(0x00ff);
+ map(0xff8800, 0xff8800).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0xff8802, 0xff8802).w(YM2149_TAG, FUNC(ay8910_device::data_w));
+ map(0xff8a00, 0xff8a1f).rw(this, FUNC(megast_state::blitter_halftone_r), FUNC(megast_state::blitter_halftone_w));
+ map(0xff8a20, 0xff8a21).rw(this, FUNC(megast_state::blitter_src_inc_x_r), FUNC(megast_state::blitter_src_inc_x_w));
+ map(0xff8a22, 0xff8a23).rw(this, FUNC(megast_state::blitter_src_inc_y_r), FUNC(megast_state::blitter_src_inc_y_w));
+ map(0xff8a24, 0xff8a27).rw(this, FUNC(megast_state::blitter_src_r), FUNC(megast_state::blitter_src_w));
+ map(0xff8a28, 0xff8a2d).rw(this, FUNC(megast_state::blitter_end_mask_r), FUNC(megast_state::blitter_end_mask_w));
+ map(0xff8a2e, 0xff8a2f).rw(this, FUNC(megast_state::blitter_dst_inc_x_r), FUNC(megast_state::blitter_dst_inc_x_w));
+ map(0xff8a30, 0xff8a31).rw(this, FUNC(megast_state::blitter_dst_inc_y_r), FUNC(megast_state::blitter_dst_inc_y_w));
+ map(0xff8a32, 0xff8a35).rw(this, FUNC(megast_state::blitter_dst_r), FUNC(megast_state::blitter_dst_w));
+ map(0xff8a36, 0xff8a37).rw(this, FUNC(megast_state::blitter_count_x_r), FUNC(megast_state::blitter_count_x_w));
+ map(0xff8a38, 0xff8a39).rw(this, FUNC(megast_state::blitter_count_y_r), FUNC(megast_state::blitter_count_y_w));
+ map(0xff8a3a, 0xff8a3b).rw(this, FUNC(megast_state::blitter_op_r), FUNC(megast_state::blitter_op_w));
+ map(0xff8a3c, 0xff8a3d).rw(this, FUNC(megast_state::blitter_ctrl_r), FUNC(megast_state::blitter_ctrl_w));
+ map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
+ map(0xfffa40, 0xfffa57).rw(this, FUNC(megast_state::fpu_r), FUNC(megast_state::fpu_w));
+ map(0xfffc00, 0xfffc03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc04, 0xfffc07).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
+}
//-------------------------------------------------
// ADDRESS_MAP( ste_map )
//-------------------------------------------------
-ADDRESS_MAP_START(ste_state::ste_map)
- AM_IMPORT_FROM(st_map)
+void ste_state::ste_map(address_map &map)
+{
+ st_map(map);
/* AM_RANGE(0xe00000, 0xe3ffff) AM_ROM AM_REGION(M68000_TAG, 0)
AM_RANGE(0xff8204, 0xff8209) AM_READWRITE8(shifter_counter_r, shifter_counter_w, 0x00ff)
AM_RANGE(0xff820c, 0xff820d) AM_READWRITE8(shifter_base_low_r, shifter_base_low_w, 0x00ff)
@@ -1338,23 +1343,24 @@ ADDRESS_MAP_START(ste_state::ste_map)
AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(blitter_count_y_r, blitter_count_y_w)
AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(blitter_op_r, blitter_op_w)
AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(blitter_ctrl_r, blitter_ctrl_w)*/
- AM_RANGE(0xff9200, 0xff9201) AM_READ_PORT("JOY0")
- AM_RANGE(0xff9202, 0xff9203) AM_READ_PORT("JOY1")
- AM_RANGE(0xff9210, 0xff9211) AM_READ_PORT("PADDLE0X")
- AM_RANGE(0xff9212, 0xff9213) AM_READ_PORT("PADDLE0Y")
- AM_RANGE(0xff9214, 0xff9215) AM_READ_PORT("PADDLE1X")
- AM_RANGE(0xff9216, 0xff9217) AM_READ_PORT("PADDLE1Y")
- AM_RANGE(0xff9220, 0xff9221) AM_READ_PORT("GUNX")
- AM_RANGE(0xff9222, 0xff9223) AM_READ_PORT("GUNY")
-ADDRESS_MAP_END
+ map(0xff9200, 0xff9201).portr("JOY0");
+ map(0xff9202, 0xff9203).portr("JOY1");
+ map(0xff9210, 0xff9211).portr("PADDLE0X");
+ map(0xff9212, 0xff9213).portr("PADDLE0Y");
+ map(0xff9214, 0xff9215).portr("PADDLE1X");
+ map(0xff9216, 0xff9217).portr("PADDLE1Y");
+ map(0xff9220, 0xff9221).portr("GUNX");
+ map(0xff9222, 0xff9223).portr("GUNY");
+}
//-------------------------------------------------
// ADDRESS_MAP( megaste_map )
//-------------------------------------------------
-ADDRESS_MAP_START(megaste_state::megaste_map)
- AM_IMPORT_FROM(st_map)
+void megaste_state::megaste_map(address_map &map)
+{
+ st_map(map);
/* AM_RANGE(0xff8204, 0xff8209) AM_READWRITE(shifter_counter_r, shifter_counter_w)
AM_RANGE(0xff820c, 0xff820d) AM_READWRITE(shifter_base_low_r, shifter_base_low_w)
AM_RANGE(0xff820e, 0xff820f) AM_READWRITE(shifter_lineofs_r, shifter_lineofs_w)
@@ -1381,23 +1387,24 @@ ADDRESS_MAP_START(megaste_state::megaste_map)
AM_RANGE(0xff8e00, 0xff8e0f) AM_READWRITE(vme_r, vme_w)
AM_RANGE(0xff8e20, 0xff8e21) AM_READWRITE(cache_r, cache_w)
// AM_RANGE(0xfffa40, 0xfffa5f) AM_READWRITE(fpu_r, fpu_w)*/
- AM_RANGE(0xff8c80, 0xff8c87) AM_DEVREADWRITE8(Z8530_TAG, scc8530_t, reg_r, reg_w, 0x00ff)
- AM_RANGE(0xfffc20, 0xfffc3f) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xff8c80, 0xff8c87).rw(Z8530_TAG, FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w)).umask16(0x00ff);
+ map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
+}
//-------------------------------------------------
// ADDRESS_MAP( stbook_map )
//-------------------------------------------------
#if 0
-ADDRESS_MAP_START(stbook_state::stbook_map)
- AM_RANGE(0x000000, 0x1fffff) AM_RAM
- AM_RANGE(0x200000, 0x3fffff) AM_RAM
+void stbook_state::stbook_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).ram();
+ map(0x200000, 0x3fffff).ram();
// AM_RANGE(0xd40000, 0xd7ffff) AM_ROM
- AM_RANGE(0xe00000, 0xe3ffff) AM_ROM AM_REGION(M68000_TAG, 0)
+ map(0xe00000, 0xe3ffff).rom().region(M68000_TAG, 0);
// AM_RANGE(0xe80000, 0xebffff) AM_ROM
// AM_RANGE(0xfa0000, 0xfbffff) AM_ROM // cartridge
- AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0)
+ map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0);
/* AM_RANGE(0xf00000, 0xf1ffff) AM_READWRITE(stbook_ide_r, stbook_ide_w)
AM_RANGE(0xff8000, 0xff8001) AM_READWRITE(stbook_mmu_r, stbook_mmu_w)
AM_RANGE(0xff8200, 0xff8203) AM_READWRITE(stbook_shifter_base_r, stbook_shifter_base_w)
@@ -1409,8 +1416,8 @@ ADDRESS_MAP_START(stbook_state::stbook_map)
AM_RANGE(0xff8260, 0xff8261) AM_READWRITE8(stbook_shifter_mode_r, stbook_shifter_mode_w, 0xff00)
AM_RANGE(0xff8264, 0xff8265) AM_READWRITE(stbook_shifter_pixelofs_r, stbook_shifter_pixelofs_w)
AM_RANGE(0xff827e, 0xff827f) AM_WRITE(lcd_control_w)*/
- AM_RANGE(0xff8800, 0xff8801) AM_DEVREADWRITE8(YM3439_TAG, ay8910_device, data_r, address_w, 0xff00)
- AM_RANGE(0xff8802, 0xff8803) AM_DEVWRITE8(YM3439_TAG, ay8910_device, data_w, 0xff00)
+ map(0xff8800, 0xff8800).rw(YM3439_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0xff8802, 0xff8802).w(YM3439_TAG, FUNC(ay8910_device::data_w));
/* AM_RANGE(0xff8900, 0xff8901) AM_READWRITE8(sound_dma_control_r, sound_dma_control_w, 0x00ff)
AM_RANGE(0xff8902, 0xff8907) AM_READWRITE8(sound_dma_base_r, sound_dma_base_w, 0x00ff)
AM_RANGE(0xff8908, 0xff890d) AM_READ8(sound_dma_counter_r, 0x00ff)
@@ -1434,7 +1441,7 @@ ADDRESS_MAP_START(stbook_state::stbook_map)
AM_RANGE(0xff9202, 0xff9203) AM_READWRITE(lcd_contrast_r, lcd_contrast_w)
AM_RANGE(0xff9210, 0xff9211) AM_READWRITE(power_r, power_w)
AM_RANGE(0xff9214, 0xff9215) AM_READWRITE(reference_r, reference_w)*/
-ADDRESS_MAP_END
+}
#endif
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index f4ec8bbc643..a13b0859020 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -445,31 +445,32 @@ WRITE_LINE_MEMBER(atarisy1_state::coin_counter_left_w)
*
*************************************/
-ADDRESS_MAP_START(atarisy1_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_ROM /* slapstic maps here */
- AM_RANGE(0x2e0000, 0x2e0001) AM_READ(atarisy1_int3state_r)
- AM_RANGE(0x400000, 0x401fff) AM_RAM
- AM_RANGE(0x800000, 0x800001) AM_WRITE(atarisy1_xscroll_w) AM_SHARE("xscroll")
- AM_RANGE(0x820000, 0x820001) AM_WRITE(atarisy1_yscroll_w) AM_SHARE("yscroll")
- AM_RANGE(0x840000, 0x840001) AM_WRITE(atarisy1_priority_w)
- AM_RANGE(0x860000, 0x860001) AM_WRITE(atarisy1_bankselect_w) AM_SHARE("bankselect")
- AM_RANGE(0x880000, 0x880001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x8c0000, 0x8c0001) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x900000, 0x9fffff) AM_RAM
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xa02000, 0xa02fff) AM_RAM_WRITE(atarisy1_spriteram_w) AM_SHARE("mob")
- AM_RANGE(0xa03000, 0xa03fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xf00000, 0xf00fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xf20000, 0xf20007) AM_READ(trakball_r)
- AM_RANGE(0xf40000, 0xf4001f) AM_READWRITE(joystick_r, joystick_w)
- AM_RANGE(0xf60000, 0xf60003) AM_READ_PORT("F60000")
- AM_RANGE(0xf80000, 0xf80001) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff) /* used by roadbls2 */
- AM_RANGE(0xfc0000, 0xfc0001) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0x00ff)
- AM_RANGE(0xfe0000, 0xfe0001) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff)
-ADDRESS_MAP_END
+void atarisy1_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x087fff).rom(); /* slapstic maps here */
+ map(0x2e0000, 0x2e0001).r(this, FUNC(atarisy1_state::atarisy1_int3state_r));
+ map(0x400000, 0x401fff).ram();
+ map(0x800000, 0x800001).w(this, FUNC(atarisy1_state::atarisy1_xscroll_w)).share("xscroll");
+ map(0x820000, 0x820001).w(this, FUNC(atarisy1_state::atarisy1_yscroll_w)).share("yscroll");
+ map(0x840000, 0x840001).w(this, FUNC(atarisy1_state::atarisy1_priority_w));
+ map(0x860000, 0x860001).w(this, FUNC(atarisy1_state::atarisy1_bankselect_w)).share("bankselect");
+ map(0x880000, 0x880001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x8a0000, 0x8a0001).w(this, FUNC(atarisy1_state::video_int_ack_w));
+ map(0x8c0000, 0x8c0001).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x900000, 0x9fffff).ram();
+ map(0xa00000, 0xa01fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0xa02000, 0xa02fff).ram().w(this, FUNC(atarisy1_state::atarisy1_spriteram_w)).share("mob");
+ map(0xa03000, 0xa03fff).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xf00000, 0xf00fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xf20000, 0xf20007).r(this, FUNC(atarisy1_state::trakball_r));
+ map(0xf40000, 0xf4001f).rw(this, FUNC(atarisy1_state::joystick_r), FUNC(atarisy1_state::joystick_w));
+ map(0xf60000, 0xf60003).portr("F60000");
+ map(0xf80001, 0xf80001).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)); /* used by roadbls2 */
+ map(0xfc0001, 0xfc0001).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r));
+ map(0xfe0001, 0xfe0001).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w));
+}
@@ -479,16 +480,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(atarisy1_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
- AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x1810, 0x1810) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_command_r, sound_response_w)
- AM_RANGE(0x1820, 0x1820) AM_READ(switch_6502_r)
- AM_RANGE(0x1820, 0x1827) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0x1870, 0x187f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void atarisy1_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x100f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x1800, 0x1801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x1810, 0x1810).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r), FUNC(atari_sound_comm_device::sound_response_w));
+ map(0x1820, 0x1820).r(this, FUNC(atarisy1_state::switch_6502_r));
+ map(0x1820, 0x1827).w(m_outlatch, FUNC(ls259_device::write_d0));
+ map(0x1870, 0x187f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x4000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp
index c00b6361661..565e5f38ace 100644
--- a/src/mame/drivers/atarisy2.cpp
+++ b/src/mame/drivers/atarisy2.cpp
@@ -753,27 +753,28 @@ WRITE8_MEMBER(atarisy2_state::coincount_w)
*************************************/
/* full memory map derived from schematics */
-ADDRESS_MAP_START(atarisy2_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x11ff) AM_MIRROR(0x0200) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x1403) AM_MIRROR(0x007c) AM_READWRITE(adc_r, bankselect_w)
- AM_RANGE(0x1480, 0x1487) AM_MIRROR(0x0078) AM_WRITE(adc_strobe_w)
- AM_RANGE(0x1580, 0x1581) AM_MIRROR(0x001e) AM_WRITE(int0_ack_w)
- AM_RANGE(0x15a0, 0x15a1) AM_MIRROR(0x001e) AM_WRITE(int1_ack_w)
- AM_RANGE(0x15c0, 0x15c1) AM_MIRROR(0x001e) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0x15e0, 0x15e1) AM_MIRROR(0x001e) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x1600, 0x1601) AM_MIRROR(0x007e) AM_WRITE(int_enable_w)
- AM_RANGE(0x1680, 0x1681) AM_MIRROR(0x007e) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff)
- AM_RANGE(0x1700, 0x1701) AM_MIRROR(0x007e) AM_WRITE(xscroll_w) AM_SHARE("xscroll")
- AM_RANGE(0x1780, 0x1781) AM_MIRROR(0x007e) AM_WRITE(yscroll_w) AM_SHARE("yscroll")
- AM_RANGE(0x1800, 0x1801) AM_MIRROR(0x03fe) AM_READ(switch_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x1c00, 0x1c01) AM_MIRROR(0x03fe) AM_READ(sound_r)
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(videoram_r, videoram_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("rombank1")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x81ff) AM_READWRITE(slapstic_r, slapstic_w) AM_SHARE("slapstic_base")
-ADDRESS_MAP_END
+void atarisy2_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x11ff).mirror(0x0200).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1400, 0x1403).mirror(0x007c).rw(this, FUNC(atarisy2_state::adc_r), FUNC(atarisy2_state::bankselect_w));
+ map(0x1480, 0x1487).mirror(0x0078).w(this, FUNC(atarisy2_state::adc_strobe_w));
+ map(0x1580, 0x1581).mirror(0x001e).w(this, FUNC(atarisy2_state::int0_ack_w));
+ map(0x15a0, 0x15a1).mirror(0x001e).w(this, FUNC(atarisy2_state::int1_ack_w));
+ map(0x15c0, 0x15c1).mirror(0x001e).w(this, FUNC(atarisy2_state::scanline_int_ack_w));
+ map(0x15e0, 0x15e1).mirror(0x001e).w(this, FUNC(atarisy2_state::video_int_ack_w));
+ map(0x1600, 0x1601).mirror(0x007e).w(this, FUNC(atarisy2_state::int_enable_w));
+ map(0x1680, 0x1680).mirror(0x007e).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w));
+ map(0x1700, 0x1701).mirror(0x007e).w(this, FUNC(atarisy2_state::xscroll_w)).share("xscroll");
+ map(0x1780, 0x1781).mirror(0x007e).w(this, FUNC(atarisy2_state::yscroll_w)).share("yscroll");
+ map(0x1800, 0x1801).mirror(0x03fe).r(this, FUNC(atarisy2_state::switch_r)).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x1c00, 0x1c01).mirror(0x03fe).r(this, FUNC(atarisy2_state::sound_r));
+ map(0x2000, 0x3fff).rw(this, FUNC(atarisy2_state::videoram_r), FUNC(atarisy2_state::videoram_w));
+ map(0x4000, 0x5fff).bankr("rombank1");
+ map(0x6000, 0x7fff).bankr("rombank2");
+ map(0x8000, 0xffff).rom();
+ map(0x8000, 0x81ff).rw(this, FUNC(atarisy2_state::slapstic_r), FUNC(atarisy2_state::slapstic_w)).share("slapstic_base");
+}
@@ -784,25 +785,26 @@ ADDRESS_MAP_END
*************************************/
/* full memory map derived from schematics */
-ADDRESS_MAP_START(atarisy2_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x2000) AM_DEVREADWRITE("eeprom", eeprom_parallel_28xx_device, read, write)
- AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x1810, 0x1813) AM_MIRROR(0x278c) AM_READ(leta_r)
- AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x1840, 0x1840) AM_MIRROR(0x278f) AM_READ(switch_6502_r)
- AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x1860, 0x1860) AM_MIRROR(0x278f) AM_READ(sound_6502_r)
- AM_RANGE(0x1870, 0x1870) AM_MIRROR(0x2781) AM_WRITE(tms5220_w)
- AM_RANGE(0x1872, 0x1873) AM_MIRROR(0x2780) AM_WRITE(tms5220_strobe_w)
- AM_RANGE(0x1874, 0x1874) AM_MIRROR(0x2781) AM_WRITE(sound_6502_w)
- AM_RANGE(0x1876, 0x1876) AM_MIRROR(0x2781) AM_WRITE(coincount_w)
- AM_RANGE(0x1878, 0x1878) AM_MIRROR(0x2781) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_w)
- AM_RANGE(0x187a, 0x187a) AM_MIRROR(0x2781) AM_WRITE(mixer_w)
- AM_RANGE(0x187c, 0x187c) AM_MIRROR(0x2781) AM_WRITE(switch_6502_w)
- AM_RANGE(0x187e, 0x187e) AM_MIRROR(0x2781) AM_WRITE(sound_reset_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void atarisy2_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).mirror(0x2000).ram();
+ map(0x1000, 0x17ff).mirror(0x2000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
+ map(0x1800, 0x180f).mirror(0x2780).rw(m_pokey1, FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1810, 0x1813).mirror(0x278c).r(this, FUNC(atarisy2_state::leta_r));
+ map(0x1830, 0x183f).mirror(0x2780).rw(m_pokey2, FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1840, 0x1840).mirror(0x278f).r(this, FUNC(atarisy2_state::switch_6502_r));
+ map(0x1850, 0x1851).mirror(0x278e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x1860, 0x1860).mirror(0x278f).r(this, FUNC(atarisy2_state::sound_6502_r));
+ map(0x1870, 0x1870).mirror(0x2781).w(this, FUNC(atarisy2_state::tms5220_w));
+ map(0x1872, 0x1873).mirror(0x2780).w(this, FUNC(atarisy2_state::tms5220_strobe_w));
+ map(0x1874, 0x1874).mirror(0x2781).w(this, FUNC(atarisy2_state::sound_6502_w));
+ map(0x1876, 0x1876).mirror(0x2781).w(this, FUNC(atarisy2_state::coincount_w));
+ map(0x1878, 0x1878).mirror(0x2781).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_w));
+ map(0x187a, 0x187a).mirror(0x2781).w(this, FUNC(atarisy2_state::mixer_w));
+ map(0x187c, 0x187c).mirror(0x2781).w(this, FUNC(atarisy2_state::switch_6502_w));
+ map(0x187e, 0x187e).mirror(0x2781).w(this, FUNC(atarisy2_state::sound_reset_w));
+ map(0x4000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/atarisy4.cpp b/src/mame/drivers/atarisy4.cpp
index 36e7c42826b..0c05243b57a 100644
--- a/src/mame/drivers/atarisy4.cpp
+++ b/src/mame/drivers/atarisy4.cpp
@@ -671,19 +671,20 @@ WRITE16_MEMBER(atarisy4_state::dsp1_bank_w)
*
*************************************/
-ADDRESS_MAP_START(atarisy4_state::main_map)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("m68k_ram")
- AM_RANGE(0x010000, 0x01ffff) AM_RAM
- AM_RANGE(0x580000, 0x580001) AM_READ_PORT("JOYSTICK")
- AM_RANGE(0x588000, 0x588001) AM_READ(analog_r)
- AM_RANGE(0x598000, 0x598001) AM_NOP /* Sound board */
- AM_RANGE(0x7c0000, 0x7c4fff) AM_READWRITE(m68k_shared_1_r, m68k_shared_1_w)
- AM_RANGE(0x7c6000, 0x7c6001) AM_READWRITE(dsp1_status_r, dsp1_control_w)
- AM_RANGE(0x7f0000, 0x7f4fff) AM_READWRITE(m68k_shared_0_r, m68k_shared_0_w)
- AM_RANGE(0x7f6000, 0x7f6001) AM_READWRITE(dsp0_status_r, dsp0_control_w)
- AM_RANGE(0xa00400, 0xbfffff) AM_RAM AM_SHARE("screen_ram")
- AM_RANGE(0xff8000, 0xff8fff) AM_READWRITE(gpu_r, gpu_w)
-ADDRESS_MAP_END
+void atarisy4_state::main_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).ram().share("m68k_ram");
+ map(0x010000, 0x01ffff).ram();
+ map(0x580000, 0x580001).portr("JOYSTICK");
+ map(0x588000, 0x588001).r(this, FUNC(atarisy4_state::analog_r));
+ map(0x598000, 0x598001).noprw(); /* Sound board */
+ map(0x7c0000, 0x7c4fff).rw(this, FUNC(atarisy4_state::m68k_shared_1_r), FUNC(atarisy4_state::m68k_shared_1_w));
+ map(0x7c6000, 0x7c6001).rw(this, FUNC(atarisy4_state::dsp1_status_r), FUNC(atarisy4_state::dsp1_control_w));
+ map(0x7f0000, 0x7f4fff).rw(this, FUNC(atarisy4_state::m68k_shared_0_r), FUNC(atarisy4_state::m68k_shared_0_w));
+ map(0x7f6000, 0x7f6001).rw(this, FUNC(atarisy4_state::dsp0_status_r), FUNC(atarisy4_state::dsp0_control_w));
+ map(0xa00400, 0xbfffff).ram().share("screen_ram");
+ map(0xff8000, 0xff8fff).rw(this, FUNC(atarisy4_state::gpu_r), FUNC(atarisy4_state::gpu_w));
+}
/*************************************
@@ -692,15 +693,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(atarisy4_state::dsp0_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("dsp0_bank0")
- AM_RANGE(0x0800, 0x0fff) AM_RAMBANK("dsp0_bank1")
-ADDRESS_MAP_END
+void atarisy4_state::dsp0_map(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x07ff).bankrw("dsp0_bank0");
+ map(0x0800, 0x0fff).bankrw("dsp0_bank1");
+}
-ADDRESS_MAP_START(atarisy4_state::dsp0_io_map)
- AM_RANGE(0x00, 0x01) AM_WRITE(dsp0_bank_w)
-ADDRESS_MAP_END
+void atarisy4_state::dsp0_io_map(address_map &map)
+{
+ map(0x00, 0x01).w(this, FUNC(atarisy4_state::dsp0_bank_w));
+}
/*************************************
@@ -709,15 +712,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(atarisy4_state::dsp1_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("dsp1_bank0")
- AM_RANGE(0x0800, 0x0fff) AM_RAMBANK("dsp1_bank1")
-ADDRESS_MAP_END
+void atarisy4_state::dsp1_map(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x07ff).bankrw("dsp1_bank0");
+ map(0x0800, 0x0fff).bankrw("dsp1_bank1");
+}
-ADDRESS_MAP_START(atarisy4_state::dsp1_io_map)
- AM_RANGE(0x00, 0x01) AM_WRITE(dsp1_bank_w)
-ADDRESS_MAP_END
+void atarisy4_state::dsp1_io_map(address_map &map)
+{
+ map(0x00, 0x01).w(this, FUNC(atarisy4_state::dsp1_bank_w));
+}
/*************************************
diff --git a/src/mame/drivers/atetris.cpp b/src/mame/drivers/atetris.cpp
index c52d23bd2fc..e9f18b087df 100644
--- a/src/mame/drivers/atetris.cpp
+++ b/src/mame/drivers/atetris.cpp
@@ -193,61 +193,64 @@ WRITE8_MEMBER(atetris_state::nvram_enable_w)
*************************************/
/* full address map derived from schematics */
-ADDRESS_MAP_START(atetris_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2400, 0x25ff) AM_MIRROR(0x0200) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x2810, 0x281f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_WRITE(nvram_enable_w)
- AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_WRITE(irq_ack_w)
- AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x03ff) AM_WRITE(coincount_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_READ(slapstic_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(atetris_state::atetrisb2_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0x2804, 0x2804) AM_DEVWRITE("sn2", sn76496_device, write)
- AM_RANGE(0x2806, 0x2806) AM_DEVWRITE("sn3", sn76496_device, write)
- AM_RANGE(0x2808, 0x2808) AM_READ_PORT("IN0")
- AM_RANGE(0x2818, 0x2818) AM_READ_PORT("IN1")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3400, 0x3400) AM_WRITE(nvram_enable_w)
- AM_RANGE(0x3800, 0x3800) AM_WRITE(irq_ack_w)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITE(coincount_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_READ(slapstic_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(atetris_state::atetrisb3_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
+void atetris_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().w(this, FUNC(atetris_state::videoram_w)).share("videoram");
+ map(0x2000, 0x20ff).mirror(0x0300).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x2400, 0x25ff).mirror(0x0200).ram().w(this, FUNC(atetris_state::nvram_w)).share("nvram");
+ map(0x2800, 0x280f).mirror(0x03e0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x2810, 0x281f).mirror(0x03e0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x3000, 0x3000).mirror(0x03ff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3400, 0x3400).mirror(0x03ff).w(this, FUNC(atetris_state::nvram_enable_w));
+ map(0x3800, 0x3800).mirror(0x03ff).w(this, FUNC(atetris_state::irq_ack_w));
+ map(0x3c00, 0x3c00).mirror(0x03ff).w(this, FUNC(atetris_state::coincount_w));
+ map(0x4000, 0x5fff).rom();
+ map(0x6000, 0x7fff).r(this, FUNC(atetris_state::slapstic_r));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void atetris_state::atetrisb2_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().w(this, FUNC(atetris_state::videoram_w)).share("videoram");
+ map(0x2000, 0x20ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x2400, 0x25ff).ram().w(this, FUNC(atetris_state::nvram_w)).share("nvram");
+ 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(0x2808, 0x2808).portr("IN0");
+ map(0x2818, 0x2818).portr("IN1");
+ map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3400, 0x3400).w(this, FUNC(atetris_state::nvram_enable_w));
+ map(0x3800, 0x3800).w(this, FUNC(atetris_state::irq_ack_w));
+ map(0x3c00, 0x3c00).w(this, FUNC(atetris_state::coincount_w));
+ map(0x4000, 0x5fff).rom();
+ map(0x6000, 0x7fff).r(this, FUNC(atetris_state::slapstic_r));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void atetris_state::atetrisb3_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().w(this, FUNC(atetris_state::videoram_w)).share("videoram");
+ map(0x2000, 0x20ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x2400, 0x25ff).ram().w(this, FUNC(atetris_state::nvram_w)).share("nvram");
//AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76489_device, write)
//AM_RANGE(0x2804, 0x2804) AM_DEVWRITE("sn2", sn76489_device, write)
//AM_RANGE(0x2806, 0x2806) AM_DEVWRITE("sn3", sn76489_device, write)
- AM_RANGE(0x2808, 0x2808) AM_READ_PORT("IN0")
- AM_RANGE(0x2818, 0x2818) AM_READ_PORT("IN1")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3400, 0x3400) AM_WRITE(nvram_enable_w)
- AM_RANGE(0x3800, 0x3800) AM_WRITE(irq_ack_w)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITE(coincount_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_READ(slapstic_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x2808, 0x2808).portr("IN0");
+ map(0x2818, 0x2818).portr("IN1");
+ map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3400, 0x3400).w(this, FUNC(atetris_state::nvram_enable_w));
+ map(0x3800, 0x3800).w(this, FUNC(atetris_state::irq_ack_w));
+ map(0x3c00, 0x3c00).w(this, FUNC(atetris_state::coincount_w));
+ map(0x4000, 0x5fff).rom();
+ map(0x6000, 0x7fff).r(this, FUNC(atetris_state::slapstic_r));
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/atm.cpp b/src/mame/drivers/atm.cpp
index 4d3147bdff5..b421ad70aa4 100644
--- a/src/mame/drivers/atm.cpp
+++ b/src/mame/drivers/atm.cpp
@@ -111,31 +111,34 @@ READ8_MEMBER(atm_state::beta_disable_r)
return m_program->read_byte(offset + 0x4000);
}
-ADDRESS_MAP_START(atm_state::atm_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atm_state::atm_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00)
- AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00)
- AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00)
- AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00)
- AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xff00)
- AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00)
- AM_RANGE(0x4000, 0x4000) AM_WRITE(atm_port_7ffd_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atm_state::atm_switch)
- AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range
- AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r)
- AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r)
-ADDRESS_MAP_END
+void atm_state::atm_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void atm_state::atm_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x001f, 0x001f).rw(m_beta, FUNC(beta_disk_device::status_r), FUNC(beta_disk_device::command_w)).mirror(0xff00);
+ map(0x003f, 0x003f).rw(m_beta, FUNC(beta_disk_device::track_r), FUNC(beta_disk_device::track_w)).mirror(0xff00);
+ map(0x005f, 0x005f).rw(m_beta, FUNC(beta_disk_device::sector_r), FUNC(beta_disk_device::sector_w)).mirror(0xff00);
+ map(0x007f, 0x007f).rw(m_beta, FUNC(beta_disk_device::data_r), FUNC(beta_disk_device::data_w)).mirror(0xff00);
+ map(0x00fe, 0x00fe).rw(this, FUNC(atm_state::spectrum_port_fe_r), FUNC(atm_state::spectrum_port_fe_w)).select(0xff00);
+ map(0x00ff, 0x00ff).rw(m_beta, FUNC(beta_disk_device::state_r), FUNC(beta_disk_device::param_w)).mirror(0xff00);
+ map(0x4000, 0x4000).w(this, FUNC(atm_state::atm_port_7ffd_w)).mirror(0x3ffd);
+ 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);
+}
+
+void atm_state::atm_switch(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(atm_state::beta_neutral_r)); // Overlap with previous because we want real addresses on the 3e00-3fff range
+ map(0x3d00, 0x3dff).r(this, FUNC(atm_state::beta_enable_r));
+ map(0x4000, 0xffff).r(this, FUNC(atm_state::beta_disable_r));
+}
MACHINE_RESET_MEMBER(atm_state,atm)
{
diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp
index d2bc3439093..18f025907b0 100644
--- a/src/mame/drivers/atom.cpp
+++ b/src/mame/drivers/atom.cpp
@@ -248,45 +248,48 @@ READ8_MEMBER( atomeb_state::dos_r )
ADDRESS_MAP( atom_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(atom_state::atom_mem)
- AM_RANGE(0x0000, 0x09ff) AM_RAM
- AM_RANGE(0x0a00, 0x0a03) AM_MIRROR(0x1f8) AM_DEVICE(I8271_TAG, i8271_device, map)
- AM_RANGE(0x0a04, 0x0a04) AM_MIRROR(0x1f8) AM_DEVREADWRITE(I8271_TAG, i8271_device, data_r, data_w)
- AM_RANGE(0x0a05, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM
+void atom_state::atom_mem(address_map &map)
+{
+ map(0x0000, 0x09ff).ram();
+ map(0x0a00, 0x0a03).mirror(0x1f8).m(m_fdc, FUNC(i8271_device::map));
+ map(0x0a04, 0x0a04).mirror(0x1f8).rw(m_fdc, FUNC(i8271_device::data_r), FUNC(i8271_device::data_w));
+ map(0x0a05, 0x7fff).ram();
+ map(0x8000, 0x97ff).ram().share("video_ram");
+ map(0x9800, 0x9fff).ram();
// AM_RANGE(0xa000, 0xafff) // mapped by the cartslot
- AM_RANGE(0xb000, 0xb003) AM_MIRROR(0x3fc) AM_DEVREADWRITE(INS8255_TAG, i8255_device, read, write)
+ map(0xb000, 0xb003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
// AM_RANGE(0xb400, 0xb403) AM_DEVREADWRITE(MC6854_TAG, mc6854_device, read, write)
// AM_RANGE(0xb404, 0xb404) AM_READ_PORT("ECONET")
- AM_RANGE(0xb800, 0xb80f) AM_MIRROR(0x3f0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0)
-ADDRESS_MAP_END
+ map(0xb800, 0xb80f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xc000, 0xffff).rom().region(SY6502_TAG, 0);
+}
/*-------------------------------------------------
ADDRESS_MAP( atomeb_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(atomeb_state::atomeb_mem)
- AM_IMPORT_FROM(atom_mem)
- AM_RANGE(0xa000, 0xafff) AM_READ(ext_r)
- AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(eprom_r, eprom_w)
- AM_RANGE(0xe000, 0xefff) AM_READ(dos_r)
-ADDRESS_MAP_END
+void atomeb_state::atomeb_mem(address_map &map)
+{
+ atom_mem(map);
+ map(0xa000, 0xafff).r(this, FUNC(atomeb_state::ext_r));
+ map(0xbfff, 0xbfff).rw(this, FUNC(atomeb_state::eprom_r), FUNC(atomeb_state::eprom_w));
+ map(0xe000, 0xefff).r(this, FUNC(atomeb_state::dos_r));
+}
/*-------------------------------------------------
ADDRESS_MAP( atombb_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(atom_state::atombb_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x57ff) AM_RAM AM_SHARE("video_ram")
+void atom_state::atombb_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x4000, 0x57ff).ram().share("video_ram");
- AM_RANGE(0x7000, 0x7003) AM_MIRROR(0x3fc) AM_DEVREADWRITE(INS8255_TAG, i8255_device, read, write)
- AM_RANGE(0x7800, 0x780f) AM_MIRROR(0x3f0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write)
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("basic", 0)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0)
-ADDRESS_MAP_END
+ map(0x7000, 0x7003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7800, 0x780f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x8000, 0xbfff).rom().region("basic", 0);
+ map(0xf000, 0xffff).rom().region(SY6502_TAG, 0);
+}
/*-------------------------------------------------
ADDRESS_MAP( prophet_mem )
diff --git a/src/mame/drivers/atpci.cpp b/src/mame/drivers/atpci.cpp
index 84cd58e3016..55f9d10516b 100644
--- a/src/mame/drivers/atpci.cpp
+++ b/src/mame/drivers/atpci.cpp
@@ -55,17 +55,19 @@ static SLOT_INTERFACE_START( pci_devices )
SLOT_INTERFACE_INTERNAL("i82371sb", I82371SB)
SLOT_INTERFACE_END
-ADDRESS_MAP_START(at586_state::at586_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x000a0000, 0x000bffff) AM_NOP
- AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(at586_state::at586_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
-ADDRESS_MAP_END
+void at586_state::at586_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).bankrw("bank10");
+ map(0x000a0000, 0x000bffff).noprw();
+ map(0x00800000, 0x00800bff).ram().share("nvram");
+ map(0xfffe0000, 0xffffffff).rom().region("isa", 0x20000);
+}
+
+void at586_state::at586_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_device::read), FUNC(pci_bus_device::write));
+}
MACHINE_CONFIG_START(at586_state::at_softlists)
/* software lists */
diff --git a/src/mame/drivers/atronic.cpp b/src/mame/drivers/atronic.cpp
index 968af2617c7..d83f79753ab 100644
--- a/src/mame/drivers/atronic.cpp
+++ b/src/mame/drivers/atronic.cpp
@@ -44,17 +44,19 @@ uint32_t atronic_state::screen_update( screen_device &screen, bitmap_ind16 &bitm
}
-ADDRESS_MAP_START(atronic_state::atronic_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xf8000, 0xfffff) AM_RAM
-ADDRESS_MAP_END
+void atronic_state::atronic_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0xf8000, 0xfffff).ram();
+}
-ADDRESS_MAP_START(atronic_state::atronic_portmap)
+void atronic_state::atronic_portmap(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x3f) AM_RAM
-ADDRESS_MAP_END
+ map.unmap_value_high();
+ map(0x00, 0x3f).ram();
+}
static INPUT_PORTS_START( atronic )
diff --git a/src/mame/drivers/att4425.cpp b/src/mame/drivers/att4425.cpp
index 72ee85b3b7c..437cc251787 100644
--- a/src/mame/drivers/att4425.cpp
+++ b/src/mame/drivers/att4425.cpp
@@ -101,21 +101,23 @@ READ8_MEMBER(att4425_state::port15_r)
return 0;
}
-ADDRESS_MAP_START(att4425_state::att4425_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION(Z80_TAG, 0)
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") // c000..f7af?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(att4425_state::att4425_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(port10_w)
- AM_RANGE(0x14, 0x14) AM_READWRITE(port14_r, port14_w)
- AM_RANGE(0x15, 0x15) AM_READ(port15_r)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE(Z80SIO_TAG, z80sio_device, ba_cd_r, ba_cd_w)
-ADDRESS_MAP_END
+void att4425_state::att4425_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region(Z80_TAG, 0);
+ map(0x8000, 0xffff).ram().share("videoram"); // c000..f7af?
+}
+
+void att4425_state::att4425_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_i8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw(m_i8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x10, 0x10).w(this, FUNC(att4425_state::port10_w));
+ map(0x14, 0x14).rw(this, FUNC(att4425_state::port14_r), FUNC(att4425_state::port14_w));
+ map(0x15, 0x15).r(this, FUNC(att4425_state::port15_r));
+ map(0x18, 0x1b).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x1c, 0x1f).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/att630.cpp b/src/mame/drivers/att630.cpp
index 9ede731e85c..37dc55b4522 100644
--- a/src/mame/drivers/att630.cpp
+++ b/src/mame/drivers/att630.cpp
@@ -32,15 +32,16 @@ u32 att630_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con
return 0;
}
-ADDRESS_MAP_START(att630_state::mem_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE8("duart1", scn2681_device, read, write, 0x00ff)
- AM_RANGE(0x200020, 0x20003f) AM_DEVREADWRITE8("duart2", scn2681_device, read, write, 0x00ff)
- AM_RANGE(0x760000, 0x77ffff) AM_RAM
- AM_RANGE(0x780000, 0x7bffff) AM_RAM
- AM_RANGE(0x7c0000, 0x7fffff) AM_RAM
- AM_RANGE(0xe00000, 0xe03fff) AM_NOP // 0x00ff mask
-ADDRESS_MAP_END
+void att630_state::mem_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("maincpu", 0);
+ map(0x200000, 0x20001f).rw("duart1", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff);
+ map(0x200020, 0x20003f).rw("duart2", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff);
+ map(0x760000, 0x77ffff).ram();
+ map(0x780000, 0x7bffff).ram();
+ map(0x7c0000, 0x7fffff).ram();
+ map(0xe00000, 0xe03fff).noprw(); // 0x00ff mask
+}
static INPUT_PORTS_START( att630 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp
index 242a64a0937..b2b85861db9 100644
--- a/src/mame/drivers/attache.cpp
+++ b/src/mame/drivers/attache.cpp
@@ -183,7 +183,7 @@ public:
void attache(machine_config &config);
void attache_io(address_map &map);
void attache_map(address_map &map);
-private:
+protected:
required_device<cpu_device> m_maincpu;
required_memory_region m_rom;
required_device<ram_device> m_ram;
@@ -900,55 +900,60 @@ WRITE_LINE_MEMBER(attache816_state::x86_dsr)
// TODO: /DSR to Z8530 SCC
}
-ADDRESS_MAP_START(attache_state::attache_map)
- AM_RANGE(0x0000,0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0x2000,0x3fff) AM_RAMBANK("bank2")
- AM_RANGE(0x4000,0x5fff) AM_RAMBANK("bank3")
- AM_RANGE(0x6000,0x7fff) AM_RAMBANK("bank4")
- AM_RANGE(0x8000,0x9fff) AM_RAMBANK("bank5")
- AM_RANGE(0xa000,0xbfff) AM_RAMBANK("bank6")
- AM_RANGE(0xc000,0xdfff) AM_RAMBANK("bank7")
- AM_RANGE(0xe000,0xffff) AM_RAMBANK("bank8")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(attache_state::attache_io)
- AM_RANGE(0xe0, 0xed) AM_DEVREADWRITE("dma",am9517a_device,read,write) AM_MIRROR(0xff00)
- AM_RANGE(0xee, 0xee) AM_WRITE(display_command_w) AM_MIRROR(0xff00)
- AM_RANGE(0xef, 0xef) AM_READWRITE(dma_mask_r, dma_mask_w) AM_MIRROR(0xff00)
- AM_RANGE(0xf0, 0xf1) AM_DEVREADWRITE("sio",z80sio_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("ctc",z80ctc_device,read,write) AM_MIRROR(0xff00)
- AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("pio",z80pio_device,read_alt,write_alt) AM_MIRROR(0xff00)
- AM_RANGE(0xfc, 0xfd) AM_DEVICE("fdc",upd765a_device,map) AM_MIRROR(0xff00)
- AM_RANGE(0xfe, 0xfe) AM_READWRITE(display_data_r, display_data_w) AM_SELECT(0xff00)
- AM_RANGE(0xff, 0xff) AM_READWRITE(memmap_r, memmap_w) AM_MIRROR(0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(attache816_state::attache816_io)
- AM_RANGE(0xb8, 0xb8) AM_READWRITE(z80_comms_status_r, z80_comms_ctrl_w) AM_MIRROR(0xff00)
- AM_RANGE(0xb9, 0xb9) AM_READWRITE(z80_comms_r, z80_comms_w) AM_MIRROR(0xff00)
- AM_RANGE(0xe0, 0xed) AM_DEVREADWRITE("dma",am9517a_device,read,write) AM_MIRROR(0xff00)
- AM_RANGE(0xee, 0xee) AM_WRITE(display_command_w) AM_MIRROR(0xff00)
- AM_RANGE(0xef, 0xef) AM_READWRITE(dma_mask_r, dma_mask_w) AM_MIRROR(0xff00)
- AM_RANGE(0xf0, 0xf1) AM_DEVREADWRITE("sio",z80sio_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("ctc",z80ctc_device,read,write) AM_MIRROR(0xff00)
- AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("pio",z80pio_device,read_alt,write_alt) AM_MIRROR(0xff00)
- AM_RANGE(0xfc, 0xfd) AM_DEVICE("fdc",upd765a_device,map) AM_MIRROR(0xff00)
- AM_RANGE(0xfe, 0xfe) AM_READWRITE(display_data_r, display_data_w) AM_SELECT(0xff00)
- AM_RANGE(0xff, 0xff) AM_READWRITE(memmap_r, memmap_w) AM_MIRROR(0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(attache816_state::attache_x86_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
- AM_RANGE(0xb0000, 0xbffff) AM_NOP // triggers IRQ?
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("x86bios",0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(attache816_state::attache_x86_io)
- AM_RANGE(0x100, 0x107) AM_DEVREADWRITE8("ppi",i8255_device,read,write,0x00ff)
- AM_RANGE(0x108, 0x10d) AM_WRITE8(x86_iobf_enable_w,0xffff);
+void attache_state::attache_map(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x3fff).bankrw("bank2");
+ map(0x4000, 0x5fff).bankrw("bank3");
+ map(0x6000, 0x7fff).bankrw("bank4");
+ map(0x8000, 0x9fff).bankrw("bank5");
+ map(0xa000, 0xbfff).bankrw("bank6");
+ map(0xc000, 0xdfff).bankrw("bank7");
+ map(0xe000, 0xffff).bankrw("bank8");
+}
+
+void attache_state::attache_io(address_map &map)
+{
+ map(0xe0, 0xed).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).mirror(0xff00);
+ map(0xee, 0xee).w(this, FUNC(attache_state::display_command_w)).mirror(0xff00);
+ map(0xef, 0xef).rw(this, FUNC(attache_state::dma_mask_r), FUNC(attache_state::dma_mask_w)).mirror(0xff00);
+ map(0xf0, 0xf1).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).mirror(0xff00);
+ map(0xf4, 0xf7).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).mirror(0xff00);
+ map(0xf8, 0xfb).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).mirror(0xff00);
+ map(0xfc, 0xfd).m(m_fdc, FUNC(upd765a_device::map)).mirror(0xff00);
+ map(0xfe, 0xfe).rw(this, FUNC(attache_state::display_data_r), FUNC(attache_state::display_data_w)).select(0xff00);
+ map(0xff, 0xff).rw(this, FUNC(attache_state::memmap_r), FUNC(attache_state::memmap_w)).mirror(0xff00);
+}
+
+void attache816_state::attache816_io(address_map &map)
+{
+ map(0xb8, 0xb8).rw(this, FUNC(attache816_state::z80_comms_status_r), FUNC(attache816_state::z80_comms_ctrl_w)).mirror(0xff00);
+ map(0xb9, 0xb9).rw(this, FUNC(attache816_state::z80_comms_r), FUNC(attache816_state::z80_comms_w)).mirror(0xff00);
+ map(0xe0, 0xed).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).mirror(0xff00);
+ map(0xee, 0xee).w(this, FUNC(attache816_state::display_command_w)).mirror(0xff00);
+ map(0xef, 0xef).rw(this, FUNC(attache816_state::dma_mask_r), FUNC(attache816_state::dma_mask_w)).mirror(0xff00);
+ map(0xf0, 0xf1).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).mirror(0xff00);
+ map(0xf4, 0xf7).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).mirror(0xff00);
+ map(0xf8, 0xfb).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).mirror(0xff00);
+ map(0xfc, 0xfd).m(m_fdc, FUNC(upd765a_device::map)).mirror(0xff00);
+ map(0xfe, 0xfe).rw(this, FUNC(attache816_state::display_data_r), FUNC(attache816_state::display_data_w)).select(0xff00);
+ map(0xff, 0xff).rw(this, FUNC(attache816_state::memmap_r), FUNC(attache816_state::memmap_w)).mirror(0xff00);
+}
+
+void attache816_state::attache_x86_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+ map(0xb0000, 0xbffff).noprw(); // triggers IRQ?
+ map(0xfe000, 0xfffff).rom().region("x86bios", 0x0000);
+}
+
+void attache816_state::attache_x86_io(address_map &map)
+{
+ map(0x100, 0x107).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x108, 0x10d).w(this, FUNC(attache816_state::x86_iobf_enable_w));
// 0x140/2/4/6 - Z8530 SCC serial
// 0x180/2/4/6/8/a/c/e - GPIB (TMS9914A)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START(attache)
PORT_START("row0")
diff --git a/src/mame/drivers/attckufo.cpp b/src/mame/drivers/attckufo.cpp
index 2926707dc3c..711655492ef 100644
--- a/src/mame/drivers/attckufo.cpp
+++ b/src/mame/drivers/attckufo.cpp
@@ -45,22 +45,25 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(attckufo_state::cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("mos6560", mos6560_device, read, write)
- AM_RANGE(0x1400, 0x1403) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x1c00, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(attckufo_state::vic_videoram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(attckufo_state::vic_colorram_map)
- AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r)
-ADDRESS_MAP_END
+void attckufo_state::cpu_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x100f).rw("mos6560", FUNC(mos6560_device::read), FUNC(mos6560_device::write));
+ map(0x1400, 0x1403).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1c00, 0x1fff).ram();
+ map(0x2000, 0x3fff).rom().region("maincpu", 0);
+}
+
+void attckufo_state::vic_videoram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(attckufo_state::vic_videoram_r));
+}
+
+void attckufo_state::vic_colorram_map(address_map &map)
+{
+ map(0x000, 0x3ff).r(this, FUNC(attckufo_state::vic_colorram_r));
+}
//**************************************************************************
diff --git a/src/mame/drivers/atvtrack.cpp b/src/mame/drivers/atvtrack.cpp
index eb3cb08a00e..6f5d93fde93 100644
--- a/src/mame/drivers/atvtrack.cpp
+++ b/src/mame/drivers/atvtrack.cpp
@@ -507,50 +507,56 @@ void smashdrv_state::machine_reset()
// ATV Track
-ADDRESS_MAP_START(atvtrack_state::atvtrack_main_map)
- AM_RANGE(0x00000000, 0x000003ff) AM_RAM AM_SHARE("sharedmem")
- AM_RANGE(0x00020000, 0x00020007) AM_READWRITE(control_r, control_w) // control registers
+void atvtrack_state::atvtrack_main_map(address_map &map)
+{
+ map(0x00000000, 0x000003ff).ram().share("sharedmem");
+ map(0x00020000, 0x00020007).rw(this, FUNC(atvtrack_state::control_r), FUNC(atvtrack_state::control_w)); // control registers
// AM_RANGE(0x00020040, 0x0002007f) // audio DAC buffer
- AM_RANGE(0x14000000, 0x14000007) AM_READWRITE(nand_data_r, nand_data_w)
- AM_RANGE(0x14100000, 0x14100007) AM_WRITE(nand_cmd_w)
- AM_RANGE(0x14200000, 0x14200007) AM_WRITE(nand_addr_w)
- AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x14000000, 0x14000007).rw(this, FUNC(atvtrack_state::nand_data_r), FUNC(atvtrack_state::nand_data_w));
+ map(0x14100000, 0x14100007).w(this, FUNC(atvtrack_state::nand_cmd_w));
+ map(0x14200000, 0x14200007).w(this, FUNC(atvtrack_state::nand_addr_w));
+ map(0x0c000000, 0x0c7fffff).ram();
+}
-ADDRESS_MAP_START(atvtrack_state::atvtrack_main_port)
- AM_RANGE(0x00, 0x1f) AM_READWRITE(ioport_r, ioport_w)
-ADDRESS_MAP_END
+void atvtrack_state::atvtrack_main_port(address_map &map)
+{
+ map(0x00, 0x1f).rw(this, FUNC(atvtrack_state::ioport_r), FUNC(atvtrack_state::ioport_w));
+}
// Smashing Drive
-ADDRESS_MAP_START(smashdrv_state::smashdrv_main_map)
- AM_RANGE(0x00000000, 0x03ffffff) AM_ROM
- AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM
- AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_SHARE("sharedmem")
- AM_RANGE(0x10000400, 0x10000407) AM_READWRITE(control_r, control_w) // control registers
+void smashdrv_state::smashdrv_main_map(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).rom();
+ map(0x0c000000, 0x0c7fffff).ram();
+ map(0x10000000, 0x100003ff).ram().share("sharedmem");
+ map(0x10000400, 0x10000407).rw(this, FUNC(smashdrv_state::control_r), FUNC(smashdrv_state::control_w)); // control registers
// 0x10000400 - 0x1000043F control registers
// 0x10000440 - 0x1000047F Audio DAC buffer
- AM_RANGE(0x14000000, 0x143fffff) AM_ROM AM_REGION("data", 0)
-ADDRESS_MAP_END
+ map(0x14000000, 0x143fffff).rom().region("data", 0);
+}
-ADDRESS_MAP_START(smashdrv_state::smashdrv_main_port)
- AM_RANGE(0x00, 0x1f) AM_READWRITE(ioport_r, ioport_w)
-ADDRESS_MAP_END
+void smashdrv_state::smashdrv_main_port(address_map &map)
+{
+ map(0x00, 0x1f).rw(this, FUNC(smashdrv_state::ioport_r), FUNC(smashdrv_state::ioport_w));
+}
// Sub CPU (same for both games)
-ADDRESS_MAP_START(atvtrack_state::atvtrack_sub_map)
- AM_RANGE(0x00000000, 0x000003ff) AM_RAM AM_SHARE("sharedmem")
- AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM
- AM_RANGE(0x14000000, 0x14003fff) AM_READWRITE32(gpu_r, gpu_w, 0xffffffffffffffffU)
+void atvtrack_state::atvtrack_sub_map(address_map &map)
+{
+ map(0x00000000, 0x000003ff).ram().share("sharedmem");
+ map(0x0c000000, 0x0cffffff).ram();
+ map(0x14000000, 0x14003fff).rw(this, FUNC(atvtrack_state::gpu_r), FUNC(atvtrack_state::gpu_w));
// 0x14004xxx GPU PCI CONFIG registers
- AM_RANGE(0x18000000, 0x19ffffff) AM_RAM
+ map(0x18000000, 0x19ffffff).ram();
// 0x18000000 - 0x19FFFFFF GPU RAM (32MB)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(atvtrack_state::atvtrack_sub_port)
-ADDRESS_MAP_END
+void atvtrack_state::atvtrack_sub_port(address_map &map)
+{
+}
static INPUT_PORTS_START( atvtrack )
diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp
index 84db0050557..3ae6fd6b9fc 100644
--- a/src/mame/drivers/aussiebyte.cpp
+++ b/src/mame/drivers/aussiebyte.cpp
@@ -43,44 +43,46 @@
************************************************************/
-ADDRESS_MAP_START(aussiebyte_state::aussiebyte_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank1")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank2")
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_REGION("mram", 0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aussiebyte_state::aussiebyte_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_NOP // winchester interface
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", wd2797_device, read, write)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0x15, 0x15) AM_WRITE(port15_w) // boot rom disable
- AM_RANGE(0x16, 0x16) AM_WRITE(port16_w) // fdd select
- AM_RANGE(0x17, 0x17) AM_WRITE(port17_w) // DMA mux
- AM_RANGE(0x18, 0x18) AM_WRITE(port18_w) // fdc select
- AM_RANGE(0x19, 0x19) AM_READ(port19_r) // info port
- AM_RANGE(0x1a, 0x1a) AM_WRITE(port1a_w) // membank
- AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w) // winchester control
- AM_RANGE(0x1c, 0x1f) AM_WRITE(port1c_w) // gpebh select
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("pio2", z80pio_device, read, write)
- AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio2", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x28, 0x28) AM_READ(port28_r) AM_DEVWRITE("votrax", votrax_sc01_device, write)
- AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("votrax", votrax_sc01_device, inflection_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(address_w)
- AM_RANGE(0x31, 0x31) AM_DEVREAD("crtc", mc6845_device, status_r)
- AM_RANGE(0x32, 0x32) AM_WRITE(register_w)
- AM_RANGE(0x33, 0x33) AM_READ(port33_r)
- AM_RANGE(0x34, 0x34) AM_WRITE(port34_w) // video control
- AM_RANGE(0x35, 0x35) AM_WRITE(port35_w) // data to vram and aram
- AM_RANGE(0x36, 0x36) AM_READ(port36_r) // data from vram and aram
- AM_RANGE(0x37, 0x37) AM_READ(port37_r) // read dispen flag
- AM_RANGE(0x40, 0x4f) AM_READWRITE(rtc_r, rtc_w)
-ADDRESS_MAP_END
+void aussiebyte_state::aussiebyte_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0");
+ map(0x4000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xbfff).bankrw("bank2");
+ map(0xc000, 0xffff).ram().region("mram", 0x0000);
+}
+
+void aussiebyte_state::aussiebyte_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw("sio1", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x04, 0x07).rw(m_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).noprw(); // winchester interface
+ map(0x10, 0x13).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write));
+ map(0x14, 0x14).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x15, 0x15).w(this, FUNC(aussiebyte_state::port15_w)); // boot rom disable
+ map(0x16, 0x16).w(this, FUNC(aussiebyte_state::port16_w)); // fdd select
+ map(0x17, 0x17).w(this, FUNC(aussiebyte_state::port17_w)); // DMA mux
+ map(0x18, 0x18).w(this, FUNC(aussiebyte_state::port18_w)); // fdc select
+ map(0x19, 0x19).r(this, FUNC(aussiebyte_state::port19_r)); // info port
+ map(0x1a, 0x1a).w(this, FUNC(aussiebyte_state::port1a_w)); // membank
+ map(0x1b, 0x1b).w(this, FUNC(aussiebyte_state::port1b_w)); // winchester control
+ map(0x1c, 0x1f).w(this, FUNC(aussiebyte_state::port1c_w)); // gpebh select
+ map(0x20, 0x23).rw(m_pio2, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x24, 0x27).rw("sio2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x28, 0x28).r(this, FUNC(aussiebyte_state::port28_r)).w(m_votrax, FUNC(votrax_sc01_device::write));
+ map(0x2c, 0x2c).w(m_votrax, FUNC(votrax_sc01_device::inflection_w));
+ map(0x30, 0x30).w(this, FUNC(aussiebyte_state::address_w));
+ map(0x31, 0x31).r(m_crtc, FUNC(mc6845_device::status_r));
+ map(0x32, 0x32).w(this, FUNC(aussiebyte_state::register_w));
+ map(0x33, 0x33).r(this, FUNC(aussiebyte_state::port33_r));
+ map(0x34, 0x34).w(this, FUNC(aussiebyte_state::port34_w)); // video control
+ map(0x35, 0x35).w(this, FUNC(aussiebyte_state::port35_w)); // data to vram and aram
+ map(0x36, 0x36).r(this, FUNC(aussiebyte_state::port36_r)); // data from vram and aram
+ map(0x37, 0x37).r(this, FUNC(aussiebyte_state::port37_r)); // read dispen flag
+ map(0x40, 0x4f).rw(this, FUNC(aussiebyte_state::rtc_r), FUNC(aussiebyte_state::rtc_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/avalnche.cpp b/src/mame/drivers/avalnche.cpp
index 71a8a21bb64..ad9983dab7c 100644
--- a/src/mame/drivers/avalnche.cpp
+++ b/src/mame/drivers/avalnche.cpp
@@ -112,31 +112,33 @@ WRITE_LINE_MEMBER(avalnche_state::start_lamp_w)
output().set_led_value(2, state);
}
-ADDRESS_MAP_START(avalnche_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0")
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1")
- AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE")
- AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x0ffc) AM_READNOP
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x0ff8) AM_DEVWRITE("latch", f9334_device, write_d0)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x0fff) AM_WRITE(avalnche_noise_amplitude_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(avalnche_state::catch_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0")
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1")
- AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE")
- AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x0ffc) AM_READNOP
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x0ff8) AM_DEVWRITE("latch", f9334_device, write_d0)
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_WRITE(catch_coin_counter_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void avalnche_state::main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x2000).mirror(0x0ffc).portr("IN0");
+ map(0x2001, 0x2001).mirror(0x0ffc).portr("IN1");
+ map(0x2002, 0x2002).mirror(0x0ffc).portr("PADDLE");
+ map(0x2003, 0x2003).mirror(0x0ffc).nopr();
+ map(0x3000, 0x3000).mirror(0x0fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x4000, 0x4007).mirror(0x0ff8).w("latch", FUNC(f9334_device::write_d0));
+ map(0x5000, 0x5000).mirror(0x0fff).w(this, FUNC(avalnche_state::avalnche_noise_amplitude_w));
+ map(0x6000, 0x7fff).rom();
+}
+
+void avalnche_state::catch_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x2000).mirror(0x0ffc).portr("IN0");
+ map(0x2001, 0x2001).mirror(0x0ffc).portr("IN1");
+ map(0x2002, 0x2002).mirror(0x0ffc).portr("PADDLE");
+ map(0x2003, 0x2003).mirror(0x0ffc).nopr();
+ map(0x3000, 0x3000).mirror(0x0fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x4000, 0x4007).mirror(0x0ff8).w("latch", FUNC(f9334_device::write_d0));
+ map(0x6000, 0x6000).mirror(0x0fff).w(this, FUNC(avalnche_state::catch_coin_counter_w));
+ map(0x7000, 0x7fff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp
index 5dfec009077..f786cba3263 100644
--- a/src/mame/drivers/avigo.cpp
+++ b/src/mame/drivers/avigo.cpp
@@ -165,23 +165,25 @@ void avigo_state::machine_start()
save_item(NAME(m_warm_start));
}
-ADDRESS_MAP_START(avigo_state::avigo_banked_map)
- AM_RANGE(0x0000000, 0x00fffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write)
- AM_RANGE(0x0400000, 0x041ffff) AM_MIRROR(0x03e0000) AM_RAM AM_SHARE("nvram")
+void avigo_state::avigo_banked_map(address_map &map)
+{
+ map(0x0000000, 0x00fffff).mirror(0x0300000).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0400000, 0x041ffff).mirror(0x03e0000).ram().share("nvram");
- AM_RANGE(0x0c00000, 0x0cfffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash1", intelfsh8_device, read, write)
- AM_RANGE(0x1400000, 0x14fffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash2", intelfsh8_device, read, write)
- AM_RANGE(0x1c00000, 0x1cfffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write)
+ map(0x0c00000, 0x0cfffff).mirror(0x0300000).rw(m_flash1, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x1400000, 0x14fffff).mirror(0x0300000).rw("flash2", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x1c00000, 0x1cfffff).mirror(0x0300000).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
- AM_RANGE(0x1800000, 0x1803fff) AM_MIRROR(0x03fc000) AM_READWRITE(vid_memory_r, vid_memory_w)
-ADDRESS_MAP_END
+ map(0x1800000, 0x1803fff).mirror(0x03fc000).rw(this, FUNC(avigo_state::vid_memory_r), FUNC(avigo_state::vid_memory_w));
+}
-ADDRESS_MAP_START(avigo_state::avigo_mem)
- AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write)
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank0", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
+void avigo_state::avigo_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x4000, 0x7fff).rw(m_bankdev1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0xbfff).rw(m_bankdev2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xffff).bankrw("bank2");
+}
READ8_MEMBER(avigo_state::key_data_read_r)
@@ -496,21 +498,22 @@ READ8_MEMBER(avigo_state::port_04_r)
-ADDRESS_MAP_START(avigo_state::avigo_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x001, 0x001) AM_READWRITE( key_data_read_r, set_key_line_w )
- AM_RANGE(0x002, 0x002) AM_WRITE( port2_w )
- AM_RANGE(0x003, 0x003) AM_READWRITE( irq_r, irq_w )
- AM_RANGE(0x004, 0x004) AM_READ( port_04_r )
- AM_RANGE(0x005, 0x006) AM_READWRITE( bank1_r, bank1_w )
- AM_RANGE(0x007, 0x008) AM_READWRITE( bank2_r, bank2_w )
- AM_RANGE(0x009, 0x009) AM_READWRITE( ad_control_status_r, ad_control_status_w )
- AM_RANGE(0x010, 0x01f) AM_DEVREADWRITE("rtc", tc8521_device, read, write)
- AM_RANGE(0x028, 0x028) AM_WRITE( speaker_w )
- AM_RANGE(0x02d, 0x02d) AM_READ( ad_data_r )
- AM_RANGE(0x030, 0x037) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w )
-ADDRESS_MAP_END
+void avigo_state::avigo_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x001, 0x001).rw(this, FUNC(avigo_state::key_data_read_r), FUNC(avigo_state::set_key_line_w));
+ map(0x002, 0x002).w(this, FUNC(avigo_state::port2_w));
+ map(0x003, 0x003).rw(this, FUNC(avigo_state::irq_r), FUNC(avigo_state::irq_w));
+ map(0x004, 0x004).r(this, FUNC(avigo_state::port_04_r));
+ map(0x005, 0x006).rw(this, FUNC(avigo_state::bank1_r), FUNC(avigo_state::bank1_w));
+ map(0x007, 0x008).rw(this, FUNC(avigo_state::bank2_r), FUNC(avigo_state::bank2_w));
+ map(0x009, 0x009).rw(this, FUNC(avigo_state::ad_control_status_r), FUNC(avigo_state::ad_control_status_w));
+ map(0x010, 0x01f).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write));
+ map(0x028, 0x028).w(this, FUNC(avigo_state::speaker_w));
+ map(0x02d, 0x02d).r(this, FUNC(avigo_state::ad_data_r));
+ map(0x030, 0x037).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+}
INPUT_CHANGED_MEMBER( avigo_state::pen_irq )
diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp
index 33fa457beac..7567549f5ae 100644
--- a/src/mame/drivers/avt.cpp
+++ b/src/mame/drivers/avt.cpp
@@ -646,24 +646,26 @@ READ8_MEMBER( avt_state::avt_6845_data_r )
*********************************************/
/* avtnfl, avtbingo */
-ADDRESS_MAP_START(avt_state::avt_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x9fff) AM_RAM // AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(avt_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(avt_colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(avt_state::avt_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pio0", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc0", z80ctc_device, read, write)
- AM_RANGE(0x21, 0x21) AM_DEVWRITE("aysnd", ay8910_device, data_w) /* AY8910 data */
- AM_RANGE(0x23, 0x23) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY8910 control */
- AM_RANGE(0x28, 0x28) AM_WRITE(avt_6845_address_w)
- AM_RANGE(0x29, 0x29) AM_READWRITE(avt_6845_data_r,avt_6845_data_w)
-ADDRESS_MAP_END
+void avt_state::avt_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).ram();
+ map(0x8000, 0x9fff).ram(); // AM_SHARE("nvram")
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(avt_state::avt_videoram_w)).share("videoram");
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(avt_state::avt_colorram_w)).share("colorram");
+}
+
+void avt_state::avt_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_pio0, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x08, 0x0b).rw(m_pio1, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0c, 0x0f).rw("ctc0", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x21, 0x21).w("aysnd", FUNC(ay8910_device::data_w)); /* AY8910 data */
+ map(0x23, 0x23).w("aysnd", FUNC(ay8910_device::address_w)); /* AY8910 control */
+ map(0x28, 0x28).w(this, FUNC(avt_state::avt_6845_address_w));
+ map(0x29, 0x29).rw(this, FUNC(avt_state::avt_6845_data_r), FUNC(avt_state::avt_6845_data_w));
+}
/* I/O byte R/W
(from avtbingo)
diff --git a/src/mame/drivers/ax20.cpp b/src/mame/drivers/ax20.cpp
index 44036174bd2..b79cf78819d 100644
--- a/src/mame/drivers/ax20.cpp
+++ b/src/mame/drivers/ax20.cpp
@@ -80,21 +80,23 @@ uint32_t ax20_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
}
-ADDRESS_MAP_START(ax20_state::ax20_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x1ffff) AM_RAM
- AM_RANGE(0x20000,0x3ffff) AM_RAM //optional RAM
- AM_RANGE(0xf0400,0xf0fff) AM_RAM AM_SHARE("p_vram")
- AM_RANGE(0xff800,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ax20_state::ax20_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xffc0, 0xffc0) AM_WRITE(tc_w)
- AM_RANGE(0xffd0, 0xffd0) AM_WRITE(ctl_w)
- AM_RANGE(0xffe0, 0xffe0) AM_READ(unk_r)
- AM_RANGE(0xff80, 0xff81) AM_DEVICE("fdc", i8272a_device, map)
-ADDRESS_MAP_END
+void ax20_state::ax20_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).ram();
+ map(0x20000, 0x3ffff).ram(); //optional RAM
+ map(0xf0400, 0xf0fff).ram().share("p_vram");
+ map(0xff800, 0xfffff).rom().region("ipl", 0);
+}
+
+void ax20_state::ax20_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xffc0, 0xffc0).w(this, FUNC(ax20_state::tc_w));
+ map(0xffd0, 0xffd0).w(this, FUNC(ax20_state::ctl_w));
+ map(0xffe0, 0xffe0).r(this, FUNC(ax20_state::unk_r));
+ map(0xff80, 0xff81).m(m_fdc, FUNC(i8272a_device::map));
+}
/* Input ports */
static INPUT_PORTS_START( ax20 )
diff --git a/src/mame/drivers/aztarac.cpp b/src/mame/drivers/aztarac.cpp
index 7e2c0a6ef7d..9bb54bff245 100644
--- a/src/mame/drivers/aztarac.cpp
+++ b/src/mame/drivers/aztarac.cpp
@@ -78,18 +78,19 @@ READ16_MEMBER(aztarac_state::joystick_r)
*
*************************************/
-ADDRESS_MAP_START(aztarac_state::main_map)
- AM_RANGE(0x000000, 0x00bfff) AM_ROM
- AM_RANGE(0x022000, 0x0220ff) AM_READ(nvram_r) AM_WRITEONLY AM_SHARE("nvram")
- AM_RANGE(0x027000, 0x027001) AM_READ(joystick_r)
- AM_RANGE(0x027004, 0x027005) AM_READ_PORT("INPUTS")
- AM_RANGE(0x027008, 0x027009) AM_READWRITE(sound_r, sound_w)
- AM_RANGE(0x02700c, 0x02700d) AM_READ_PORT("DIAL")
- AM_RANGE(0x02700e, 0x02700f) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0xff8000, 0xffafff) AM_RAM AM_SHARE("vectorram")
- AM_RANGE(0xffb000, 0xffb001) AM_WRITE(ubr_w)
- AM_RANGE(0xffe000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void aztarac_state::main_map(address_map &map)
+{
+ map(0x000000, 0x00bfff).rom();
+ map(0x022000, 0x0220ff).r(this, FUNC(aztarac_state::nvram_r)).writeonly().share("nvram");
+ map(0x027000, 0x027001).r(this, FUNC(aztarac_state::joystick_r));
+ map(0x027004, 0x027005).portr("INPUTS");
+ map(0x027008, 0x027009).rw(this, FUNC(aztarac_state::sound_r), FUNC(aztarac_state::sound_w));
+ map(0x02700c, 0x02700d).portr("DIAL");
+ map(0x02700e, 0x02700f).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0xff8000, 0xffafff).ram().share("vectorram");
+ map(0xffb000, 0xffb001).w(this, FUNC(aztarac_state::ubr_w));
+ map(0xffe000, 0xffffff).ram();
+}
@@ -99,16 +100,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(aztarac_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_READ(snd_command_r)
- AM_RANGE(0x8c00, 0x8c01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_address_w)
- AM_RANGE(0x8c02, 0x8c03) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_address_w)
- AM_RANGE(0x8c04, 0x8c05) AM_DEVREADWRITE("ay3", ay8910_device, data_r, data_address_w)
- AM_RANGE(0x8c06, 0x8c07) AM_DEVREADWRITE("ay4", ay8910_device, data_r, data_address_w)
- AM_RANGE(0x9000, 0x9000) AM_READWRITE(snd_status_r, snd_status_w)
-ADDRESS_MAP_END
+void aztarac_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).r(this, FUNC(aztarac_state::snd_command_r));
+ map(0x8c00, 0x8c01).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w));
+ map(0x8c02, 0x8c03).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w));
+ map(0x8c04, 0x8c05).rw("ay3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w));
+ map(0x8c06, 0x8c07).rw("ay4", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w));
+ map(0x9000, 0x9000).rw(this, FUNC(aztarac_state::snd_status_r), FUNC(aztarac_state::snd_status_w));
+}
diff --git a/src/mame/drivers/b16.cpp b/src/mame/drivers/b16.cpp
index dbb561a0c03..bb63a3405ca 100644
--- a/src/mame/drivers/b16.cpp
+++ b/src/mame/drivers/b16.cpp
@@ -122,14 +122,15 @@ WRITE8_MEMBER( b16_state::b16_pcg_w )
m_gfxdecode->gfx(0)->mark_dirty(offset >> 4);
}
-ADDRESS_MAP_START(b16_state::b16_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00000, 0x9ffff ) AM_RAM // probably not all of it.
- AM_RANGE( 0xa0000, 0xaffff ) AM_RAM // bitmap?
- AM_RANGE( 0xb0000, 0xb7fff ) AM_RAM AM_SHARE("vram") // tvram
- AM_RANGE( 0xb8000, 0xbbfff ) AM_WRITE8(b16_pcg_w,0x00ff) // pcg
- AM_RANGE( 0xfc000, 0xfffff ) AM_ROM AM_REGION("ipl",0)
-ADDRESS_MAP_END
+void b16_state::b16_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x9ffff).ram(); // probably not all of it.
+ map(0xa0000, 0xaffff).ram(); // bitmap?
+ map(0xb0000, 0xb7fff).ram().share("vram"); // tvram
+ map(0xb8000, 0xbbfff).w(this, FUNC(b16_state::b16_pcg_w)).umask16(0x00ff); // pcg
+ map(0xfc000, 0xfffff).rom().region("ipl", 0);
+}
READ16_MEMBER( b16_state::vblank_r )
{
@@ -215,14 +216,15 @@ WRITE8_MEMBER( b16_state::unk_dev_w )
}
-ADDRESS_MAP_START(b16_state::b16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x0f) AM_READWRITE8(unk_dev_r,unk_dev_w,0x00ff) // DMA device?
- AM_RANGE(0x20, 0x21) AM_WRITE8(b16_6845_address_w,0x00ff)
- AM_RANGE(0x22, 0x23) AM_WRITE8(b16_6845_data_w,0x00ff)
+void b16_state::b16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x0f).rw(this, FUNC(b16_state::unk_dev_r), FUNC(b16_state::unk_dev_w)).umask16(0x00ff); // DMA device?
+ map(0x20, 0x20).w(this, FUNC(b16_state::b16_6845_address_w));
+ map(0x22, 0x22).w(this, FUNC(b16_state::b16_6845_data_w));
//0x79 bit 0 DSW?
- AM_RANGE(0x80, 0x81) AM_READ(vblank_r) // TODO
-ADDRESS_MAP_END
+ map(0x80, 0x81).r(this, FUNC(b16_state::vblank_r)); // TODO
+}
/* Input ports */
diff --git a/src/mame/drivers/b2m.cpp b/src/mame/drivers/b2m.cpp
index 31dfd5e7aa0..bd2c10d023e 100644
--- a/src/mame/drivers/b2m.cpp
+++ b/src/mame/drivers/b2m.cpp
@@ -24,38 +24,41 @@
#include "speaker.h"
/* Address maps */
-ADDRESS_MAP_START(b2m_state::b2m_mem)
- AM_RANGE (0x0000, 0x27ff) AM_RAMBANK("bank1")
- AM_RANGE (0x2800, 0x2fff) AM_RAMBANK("bank2")
- AM_RANGE (0x3000, 0x6fff) AM_RAMBANK("bank3")
- AM_RANGE (0x7000, 0xdfff) AM_RAMBANK("bank4")
- AM_RANGE (0xe000, 0xffff) AM_RAMBANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(b2m_state::b2m_io)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_READWRITE(b2m_localmachine_r,b2m_localmachine_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(b2m_palette_r,b2m_palette_w)
- AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("pic8259", pic8259_device, read, write )
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("fd1793", fd1793_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(b2m_state::b2m_rom_io)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_READWRITE(b2m_localmachine_r,b2m_localmachine_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(b2m_palette_r,b2m_palette_w)
- AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("pic8259", pic8259_device, read, write )
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void b2m_state::b2m_mem(address_map &map)
+{
+ map(0x0000, 0x27ff).bankrw("bank1");
+ map(0x2800, 0x2fff).bankrw("bank2");
+ map(0x3000, 0x6fff).bankrw("bank3");
+ map(0x7000, 0xdfff).bankrw("bank4");
+ map(0xe000, 0xffff).bankrw("bank5");
+}
+
+void b2m_state::b2m_io(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x03).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x04, 0x07).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0c, 0x0c).rw(this, FUNC(b2m_state::b2m_localmachine_r), FUNC(b2m_state::b2m_localmachine_w));
+ map(0x10, 0x13).rw(this, FUNC(b2m_state::b2m_palette_r), FUNC(b2m_state::b2m_palette_w));
+ map(0x14, 0x15).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x18, 0x18).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x19, 0x19).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x1c, 0x1f).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+}
+
+void b2m_state::b2m_rom_io(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x03).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x04, 0x07).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0c, 0x0c).rw(this, FUNC(b2m_state::b2m_localmachine_r), FUNC(b2m_state::b2m_localmachine_w));
+ map(0x10, 0x13).rw(this, FUNC(b2m_state::b2m_palette_r), FUNC(b2m_state::b2m_palette_w));
+ map(0x14, 0x15).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x18, 0x18).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x19, 0x19).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp
index 89625c9e85b..5ce472b1047 100644
--- a/src/mame/drivers/babbage.cpp
+++ b/src/mame/drivers/babbage.cpp
@@ -78,18 +78,20 @@ private:
***************************************************************************/
-ADDRESS_MAP_START(babbage_state::babbage_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x1000, 0x17ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(babbage_state::babbage_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("z80pio_2", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
+void babbage_state::babbage_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).rom();
+ map(0x1000, 0x17ff).ram();
+}
+
+void babbage_state::babbage_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x10, 0x13).rw(m_pio_1, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x20, 0x23).rw(m_pio_2, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp
index 2882c465285..66a20a70b09 100644
--- a/src/mame/drivers/backfire.cpp
+++ b/src/mame/drivers/backfire.cpp
@@ -292,32 +292,33 @@ WRITE32_MEMBER(backfire_state::backfire_spriteram2_w)
-ADDRESS_MAP_START(backfire_state::backfire_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x120000, 0x120fff) AM_READWRITE(backfire_pf1_rowscroll_r, backfire_pf1_rowscroll_w)
- AM_RANGE(0x124000, 0x124fff) AM_READWRITE(backfire_pf2_rowscroll_r, backfire_pf2_rowscroll_w)
- AM_RANGE(0x130000, 0x13001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x140000, 0x141fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x144000, 0x145fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x150000, 0x150fff) AM_READWRITE(backfire_pf3_rowscroll_r, backfire_pf3_rowscroll_w)
- AM_RANGE(0x154000, 0x154fff) AM_READWRITE(backfire_pf4_rowscroll_r, backfire_pf4_rowscroll_w)
- AM_RANGE(0x160000, 0x161fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x170000, 0x177fff) AM_RAM AM_SHARE("mainram")// main ram
+void backfire_state::backfire_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x110000, 0x111fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x114000, 0x115fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x120000, 0x120fff).rw(this, FUNC(backfire_state::backfire_pf1_rowscroll_r), FUNC(backfire_state::backfire_pf1_rowscroll_w));
+ map(0x124000, 0x124fff).rw(this, FUNC(backfire_state::backfire_pf2_rowscroll_r), FUNC(backfire_state::backfire_pf2_rowscroll_w));
+ map(0x130000, 0x13001f).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x140000, 0x141fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x144000, 0x145fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x150000, 0x150fff).rw(this, FUNC(backfire_state::backfire_pf3_rowscroll_r), FUNC(backfire_state::backfire_pf3_rowscroll_w));
+ map(0x154000, 0x154fff).rw(this, FUNC(backfire_state::backfire_pf4_rowscroll_r), FUNC(backfire_state::backfire_pf4_rowscroll_w));
+ map(0x160000, 0x161fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x170000, 0x177fff).ram().share("mainram");// main ram
// AM_RANGE(0x180010, 0x180013) AM_RAM AM_SHARE("backfire_180010") // always 180010 ?
// AM_RANGE(0x188010, 0x188013) AM_RAM AM_SHARE("backfire_188010") // always 188010 ?
- AM_RANGE(0x184000, 0x185fff) AM_READWRITE(backfire_spriteram1_r, backfire_spriteram1_w)
- AM_RANGE(0x18c000, 0x18dfff) AM_READWRITE(backfire_spriteram2_r, backfire_spriteram2_w)
- AM_RANGE(0x190000, 0x190003) AM_READ(backfire_eeprom_r)
- AM_RANGE(0x194000, 0x194003) AM_READ(backfire_control2_r)
- AM_RANGE(0x1a4000, 0x1a4003) AM_WRITE(backfire_eeprom_w)
+ map(0x184000, 0x185fff).rw(this, FUNC(backfire_state::backfire_spriteram1_r), FUNC(backfire_state::backfire_spriteram1_w));
+ map(0x18c000, 0x18dfff).rw(this, FUNC(backfire_state::backfire_spriteram2_r), FUNC(backfire_state::backfire_spriteram2_w));
+ map(0x190000, 0x190003).r(this, FUNC(backfire_state::backfire_eeprom_r));
+ map(0x194000, 0x194003).r(this, FUNC(backfire_state::backfire_control2_r));
+ map(0x1a4000, 0x1a4003).w(this, FUNC(backfire_state::backfire_eeprom_w));
- AM_RANGE(0x1a8000, 0x1a8003) AM_RAM AM_SHARE("left_priority")
- AM_RANGE(0x1ac000, 0x1ac003) AM_RAM AM_SHARE("right_priority")
+ map(0x1a8000, 0x1a8003).ram().share("left_priority");
+ map(0x1ac000, 0x1ac003).ram().share("right_priority");
// AM_RANGE(0x1b0000, 0x1b0003) AM_WRITENOP // always 1b0000
/* when set to pentometer in test mode */
@@ -325,8 +326,8 @@ ADDRESS_MAP_START(backfire_state::backfire_map)
// AM_RANGE(0x1e8000, 0x1e8003) AM_READ(backfire_wheel1_r)
// AM_RANGE(0x1e8004, 0x1e8007) AM_READ(backfire_wheel2_r)
- AM_RANGE(0x1c0000, 0x1c0007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
+ map(0x1c0000, 0x1c0007).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x000000ff);
+}
static INPUT_PORTS_START( backfire )
diff --git a/src/mame/drivers/badlands.cpp b/src/mame/drivers/badlands.cpp
index b468905e2a5..4afb1d13c9d 100644
--- a/src/mame/drivers/badlands.cpp
+++ b/src/mame/drivers/badlands.cpp
@@ -368,26 +368,27 @@ WRITE8_MEMBER(badlands_state::audio_io_w)
*
*************************************/
-ADDRESS_MAP_START(badlands_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfc1fff) AM_READ(sound_busy_r) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w)
- AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xfe0000, 0xfe1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w)
- AM_RANGE(0xfe4000, 0xfe5fff) AM_READ_PORT("FE4000")
- AM_RANGE(0xfe6000, 0xfe6001) AM_READ_PORT("FE6000")
- AM_RANGE(0xfe6002, 0xfe6003) AM_READ_PORT("FE6002")
- AM_RANGE(0xfe6004, 0xfe6005) AM_READ(pedal_0_r)
- AM_RANGE(0xfe6006, 0xfe6007) AM_READ(pedal_1_r)
- AM_RANGE(0xfe8000, 0xfe9fff) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0xff00)
- AM_RANGE(0xfea000, 0xfebfff) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0xff00)
- AM_RANGE(0xfec000, 0xfedfff) AM_WRITE(badlands_pf_bank_w)
- AM_RANGE(0xfee000, 0xfeffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0xffc000, 0xffc3ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xfff000, 0xfff1ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xfff200, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void badlands_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0xfc0000, 0xfc1fff).r(this, FUNC(badlands_state::sound_busy_r)).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w));
+ map(0xfd0000, 0xfd1fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xfe0000, 0xfe1fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xfe2000, 0xfe3fff).w(this, FUNC(badlands_state::video_int_ack_w));
+ map(0xfe4000, 0xfe5fff).portr("FE4000");
+ map(0xfe6000, 0xfe6001).portr("FE6000");
+ map(0xfe6002, 0xfe6003).portr("FE6002");
+ map(0xfe6004, 0xfe6005).r(this, FUNC(badlands_state::pedal_0_r));
+ map(0xfe6006, 0xfe6007).r(this, FUNC(badlands_state::pedal_1_r));
+ map(0xfe8000, 0xfe9fff).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)).umask16(0xff00);
+ map(0xfea000, 0xfebfff).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)).umask16(0xff00);
+ map(0xfec000, 0xfedfff).w(this, FUNC(badlands_state::badlands_pf_bank_w));
+ map(0xfee000, 0xfeffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0xffc000, 0xffc3ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
+ map(0xffe000, 0xffefff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0xfff000, 0xfff1ff).ram().share("mob");
+ map(0xfff200, 0xffffff).ram();
+}
@@ -397,13 +398,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(badlands_state::audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x2800, 0x2bff) AM_READWRITE(audio_io_r, audio_io_w)
- AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("soundbank")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void badlands_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2800, 0x2bff).rw(this, FUNC(badlands_state::audio_io_r), FUNC(badlands_state::audio_io_w));
+ map(0x3000, 0x3fff).bankr("soundbank");
+ map(0x4000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/badlandsbl.cpp b/src/mame/drivers/badlandsbl.cpp
index 82507456092..29b99ec8f8f 100644
--- a/src/mame/drivers/badlandsbl.cpp
+++ b/src/mame/drivers/badlandsbl.cpp
@@ -97,33 +97,34 @@ READ8_MEMBER(badlandsbl_state::sound_response_r)
return m_sound_response;
}
-ADDRESS_MAP_START(badlandsbl_state::bootleg_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void badlandsbl_state::bootleg_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
- AM_RANGE(0x400000, 0x400005) AM_READWRITE8(bootleg_shared_r,bootleg_shared_w,0xffff)
- AM_RANGE(0x400006, 0x400007) AM_READ8(sound_response_r,0xff00)
- AM_RANGE(0x400008, 0x40000f) AM_RAM // breaks tilemap gfxs otherwise?
- AM_RANGE(0x400010, 0x4000ff) AM_RAM AM_SHARE("spriteram")
+ map(0x400000, 0x400005).rw(this, FUNC(badlandsbl_state::bootleg_shared_r), FUNC(badlandsbl_state::bootleg_shared_w));
+ map(0x400006, 0x400006).r(this, FUNC(badlandsbl_state::sound_response_r));
+ map(0x400008, 0x40000f).ram(); // breaks tilemap gfxs otherwise?
+ map(0x400010, 0x4000ff).ram().share("spriteram");
// sound comms?
- AM_RANGE(0xfc0000, 0xfc0001) AM_READ(badlandsb_unk_r) AM_WRITENOP
+ map(0xfc0000, 0xfc0001).r(this, FUNC(badlandsbl_state::badlandsb_unk_r)).nopw();
- AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
+ map(0xfd0000, 0xfd1fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
//AM_RANGE(0xfe0000, 0xfe1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w)
+ map(0xfe2000, 0xfe3fff).w(this, FUNC(badlandsbl_state::video_int_ack_w));
- AM_RANGE(0xfe0000, 0xfe0001) AM_WRITENOP
- AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("FE4000")
- AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("P1")
- AM_RANGE(0xfe4006, 0xfe4007) AM_READ_PORT("P2")
- AM_RANGE(0xfe4008, 0xfe4009) AM_WRITE(badlands_pf_bank_w)
- AM_RANGE(0xfe400c, 0xfe400d) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
+ map(0xfe0000, 0xfe0001).nopw();
+ map(0xfe4000, 0xfe4001).portr("FE4000");
+ map(0xfe4004, 0xfe4005).portr("P1");
+ map(0xfe4006, 0xfe4007).portr("P2");
+ map(0xfe4008, 0xfe4009).w(this, FUNC(badlandsbl_state::badlands_pf_bank_w));
+ map(0xfe400c, 0xfe400d).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
- AM_RANGE(0xffc000, 0xffc3ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
+ map(0xffc000, 0xffc3ff).rw("palette", FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
+ map(0xffe000, 0xffefff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield");
- AM_RANGE(0xfff000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xfff000, 0xffffff).ram();
+}
WRITE8_MEMBER(badlandsbl_state::bootleg_main_irq_w)
{
@@ -131,15 +132,16 @@ WRITE8_MEMBER(badlandsbl_state::bootleg_main_irq_w)
m_sound_response = data;
}
-ADDRESS_MAP_START(badlandsbl_state::bootleg_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiorom", 0)
- AM_RANGE(0x2000, 0x2005) AM_RAM AM_SHARE("b_sharedram")
- AM_RANGE(0x2006, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xcfff) AM_ROM AM_REGION("audiorom", 0x4000)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(bootleg_main_irq_w)
- AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_NOP // either RAM mirror or left-over
-ADDRESS_MAP_END
+void badlandsbl_state::bootleg_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("audiorom", 0);
+ map(0x2000, 0x2005).ram().share("b_sharedram");
+ map(0x2006, 0x3fff).ram();
+ map(0x4000, 0xcfff).rom().region("audiorom", 0x4000);
+ map(0xd400, 0xd400).w(this, FUNC(badlandsbl_state::bootleg_main_irq_w));
+ map(0xd800, 0xd801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe000, 0xffff).noprw(); // either RAM mirror or left-over
+}
static INPUT_PORTS_START( badlandsb )
diff --git a/src/mame/drivers/bagman.cpp b/src/mame/drivers/bagman.cpp
index 5e5d499e0f3..a1f25d29dbd 100644
--- a/src/mame/drivers/bagman.cpp
+++ b/src/mame/drivers/bagman.cpp
@@ -128,53 +128,56 @@ WRITE_LINE_MEMBER(bagman_state::irq_mask_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(bagman_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9c00, 0x9fff) AM_WRITENOP /* written to, but unused */
- AM_RANGE(0xa000, 0xa000) AM_READ(pal16r6_r)
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xc000, 0xffff) AM_ROM /* Super Bagman only */
- AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("spriteram") /* hidden portion of color RAM */
+void bagman_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(bagman_state::videoram_w)).share("videoram");
+ map(0x9800, 0x9bff).ram().w(this, FUNC(bagman_state::colorram_w)).share("colorram");
+ map(0x9c00, 0x9fff).nopw(); /* written to, but unused */
+ map(0xa000, 0xa000).r(this, FUNC(bagman_state::pal16r6_r));
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xc000, 0xffff).rom(); /* Super Bagman only */
+ map(0x9800, 0x981f).writeonly().share("spriteram"); /* hidden portion of color RAM */
/* here only to initialize the pointer, */
/* writes are handled by colorram_w */
- AM_RANGE(0xa800, 0xa807) AM_WRITE(ls259_w) /* TMS5110 driving state machine */
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb800, 0xb800) AM_READNOP /* looks like watchdog from schematics */
+ map(0xa800, 0xa807).w(this, FUNC(bagman_state::ls259_w)); /* TMS5110 driving state machine */
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb800, 0xb800).nopr(); /* looks like watchdog from schematics */
#if 0
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* ???? */
- AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* ???? */
+ map(0xb000, 0xb000).nopw(); /* ???? */
+ map(0xb800, 0xb800).nopw(); /* ???? */
#endif
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(bagman_state::pickin_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("spriteram") /* hidden portion of color RAM */
+void bagman_state::pickin_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x7000, 0x77ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(bagman_state::videoram_w)).share("videoram");
+ map(0x9800, 0x9bff).ram().w(this, FUNC(bagman_state::colorram_w)).share("colorram");
+ map(0x9800, 0x981f).writeonly().share("spriteram"); /* hidden portion of color RAM */
/* here only to initialize the pointer, */
/* writes are handled by colorram_w */
- AM_RANGE(0x9c00, 0x9fff) AM_WRITENOP /* written to, but unused */
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("DSW")
+ map(0x9c00, 0x9fff).nopw(); /* written to, but unused */
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xa800, 0xa800).portr("DSW");
/* guess */
- AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bagman_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("aysnd", ay8910_device, data_r)
+ map(0xb000, 0xb000).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xb800, 0xb800).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
+
+void bagman_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x09).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x0c, 0x0c).r("aysnd", FUNC(ay8910_device::data_r));
//AM_RANGE(0x56, 0x56) AM_WRITENOP
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/balsente.cpp b/src/mame/drivers/balsente.cpp
index 8514c197632..bbd06810313 100644
--- a/src/mame/drivers/balsente.cpp
+++ b/src/mame/drivers/balsente.cpp
@@ -246,27 +246,31 @@ DIP locations verified for:
*
*************************************/
-ADDRESS_MAP_START(balsente_state::cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(balsente_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(balsente_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x9000, 0x9007) AM_WRITE(balsente_adc_select_w)
- AM_RANGE(0x9400, 0x9401) AM_READ(balsente_adc_data_r)
- ;map(0x9800, 0x981f).mirror(0x0060).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d7(space, offset >> 2, data, mem_mask); });
- AM_RANGE(0x9880, 0x989f) AM_WRITE(balsente_random_reset_w)
- AM_RANGE(0x98a0, 0x98bf) AM_WRITE(balsente_rombank_select_w)
- AM_RANGE(0x98c0, 0x98df) AM_WRITE(balsente_palette_select_w)
- AM_RANGE(0x98e0, 0x98ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9900, 0x9900) AM_READ_PORT("SWH")
- AM_RANGE(0x9901, 0x9901) AM_READ_PORT("SWG")
- AM_RANGE(0x9902, 0x9902) AM_READ_PORT("IN0")
- AM_RANGE(0x9903, 0x9903) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x9a00, 0x9a03) AM_READ(balsente_random_num_r)
- AM_RANGE(0x9a04, 0x9a05) AM_READWRITE(balsente_m6850_r, balsente_m6850_w)
- AM_RANGE(0x9b00, 0x9cff) AM_RAM AM_SHARE("nvram") /* system+cart NOVRAM */
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
+void balsente_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("spriteram");
+ map(0x0800, 0x7fff).ram().w(this, FUNC(balsente_state::balsente_videoram_w)).share("videoram");
+ map(0x8000, 0x8fff).ram().w(this, FUNC(balsente_state::balsente_paletteram_w)).share("paletteram");
+ map(0x9000, 0x9007).w(this, FUNC(balsente_state::balsente_adc_select_w));
+ map(0x9400, 0x9401).r(this, FUNC(balsente_state::balsente_adc_data_r));
+ map(0x9800, 0x981f).mirror(0x0060).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d7(space, offset >> 2, data, mem_mask);
+ });
+ map(0x9880, 0x989f).w(this, FUNC(balsente_state::balsente_random_reset_w));
+ map(0x98a0, 0x98bf).w(this, FUNC(balsente_state::balsente_rombank_select_w));
+ map(0x98c0, 0x98df).w(this, FUNC(balsente_state::balsente_palette_select_w));
+ map(0x98e0, 0x98ff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x9900, 0x9900).portr("SWH");
+ map(0x9901, 0x9901).portr("SWG");
+ map(0x9902, 0x9902).portr("IN0");
+ map(0x9903, 0x9903).portr("IN1").nopw();
+ map(0x9a00, 0x9a03).r(this, FUNC(balsente_state::balsente_random_num_r));
+ map(0x9a04, 0x9a05).rw(this, FUNC(balsente_state::balsente_m6850_r), FUNC(balsente_state::balsente_m6850_w));
+ map(0x9b00, 0x9cff).ram().share("nvram"); /* system+cart NOVRAM */
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).bankr("bank2");
+}
@@ -276,23 +280,25 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(balsente_state::cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_WRITE(balsente_m6850_sound_w)
- AM_RANGE(0xe000, 0xffff) AM_READ(balsente_m6850_sound_r)
-ADDRESS_MAP_END
+void balsente_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x5fff).ram();
+ map(0x6000, 0x7fff).w(this, FUNC(balsente_state::balsente_m6850_sound_w));
+ map(0xe000, 0xffff).r(this, FUNC(balsente_state::balsente_m6850_sound_r));
+}
-ADDRESS_MAP_START(balsente_state::cpu2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_READWRITE(balsente_counter_8253_r, balsente_counter_8253_w)
- AM_RANGE(0x08, 0x0f) AM_READ(balsente_counter_state_r)
- AM_RANGE(0x08, 0x09) AM_WRITE(balsente_counter_control_w)
- AM_RANGE(0x0a, 0x0b) AM_WRITE(balsente_dac_data_w)
- AM_RANGE(0x0c, 0x0d) AM_WRITE(balsente_register_addr_w)
- AM_RANGE(0x0e, 0x0f) AM_WRITE(balsente_chip_select_w)
-ADDRESS_MAP_END
+void balsente_state::cpu2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(this, FUNC(balsente_state::balsente_counter_8253_r), FUNC(balsente_state::balsente_counter_8253_w));
+ map(0x08, 0x0f).r(this, FUNC(balsente_state::balsente_counter_state_r));
+ map(0x08, 0x09).w(this, FUNC(balsente_state::balsente_counter_control_w));
+ map(0x0a, 0x0b).w(this, FUNC(balsente_state::balsente_dac_data_w));
+ map(0x0c, 0x0d).w(this, FUNC(balsente_state::balsente_register_addr_w));
+ map(0x0e, 0x0f).w(this, FUNC(balsente_state::balsente_chip_select_w));
+}
@@ -303,11 +309,12 @@ ADDRESS_MAP_END
*************************************/
/* CPU 1 read addresses */
-ADDRESS_MAP_START(balsente_state::shrike68k_map)
- AM_RANGE(0x000000, 0x003fff) AM_ROM
- AM_RANGE(0x010000, 0x01001f) AM_RAM AM_SHARE("shrike_io")
- AM_RANGE(0x018000, 0x018fff) AM_RAM AM_SHARE("shrike_shared")
-ADDRESS_MAP_END
+void balsente_state::shrike68k_map(address_map &map)
+{
+ map(0x000000, 0x003fff).rom();
+ map(0x010000, 0x01001f).ram().share("shrike_io");
+ map(0x018000, 0x018fff).ram().share("shrike_shared");
+}
diff --git a/src/mame/drivers/banctec.cpp b/src/mame/drivers/banctec.cpp
index f53a395c24c..333ef744676 100644
--- a/src/mame/drivers/banctec.cpp
+++ b/src/mame/drivers/banctec.cpp
@@ -52,19 +52,21 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(banctec_state::banctec_mem)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0xffff) AM_RAM /* Probably wrong. Must be verified on pcb! */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(banctec_state::banctec_mcu_mem)
- AM_RANGE(0x0000, 0x00ff) AM_RAM /* Probably wrong. Must be verified on pcb! */
- AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x2001, 0x2001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2003, 0x2003) AM_WRITE(videoram_w)
- AM_RANGE(0x8000, 0x80ff) AM_RAM AM_SHARE("videoram") /* Probably wrong. Must be verified on pcb! */
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("mcu", 0x0000)
-ADDRESS_MAP_END
+void banctec_state::banctec_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0xffff).ram(); /* Probably wrong. Must be verified on pcb! */
+}
+
+void banctec_state::banctec_mcu_mem(address_map &map)
+{
+ map(0x0000, 0x00ff).ram(); /* Probably wrong. Must be verified on pcb! */
+ map(0x2000, 0x2000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x2001, 0x2001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2003, 0x2003).w(this, FUNC(banctec_state::videoram_w));
+ map(0x8000, 0x80ff).ram().share("videoram"); /* Probably wrong. Must be verified on pcb! */
+ map(0xe000, 0xffff).rom().region("mcu", 0x0000);
+}
void banctec_state::machine_reset()
{
diff --git a/src/mame/drivers/bankp.cpp b/src/mame/drivers/bankp.cpp
index e0caba864d5..713f75ecd55 100644
--- a/src/mame/drivers/bankp.cpp
+++ b/src/mame/drivers/bankp.cpp
@@ -124,24 +124,26 @@
*
*************************************/
-ADDRESS_MAP_START(bankp_state::bankp_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bankp_state::bankp_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("sn3", sn76489_device, write)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1")
- AM_RANGE(0x05, 0x05) AM_WRITE(scroll_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(out_w)
-ADDRESS_MAP_END
+void bankp_state::bankp_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xf3ff).ram().w(this, FUNC(bankp_state::videoram_w)).share("videoram");
+ map(0xf400, 0xf7ff).ram().w(this, FUNC(bankp_state::colorram_w)).share("colorram");
+ map(0xf800, 0xfbff).ram().w(this, FUNC(bankp_state::videoram2_w)).share("videoram2");
+ map(0xfc00, 0xffff).ram().w(this, FUNC(bankp_state::colorram2_w)).share("colorram2");
+}
+
+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(0x04, 0x04).portr("DSW1");
+ map(0x05, 0x05).w(this, FUNC(bankp_state::scroll_w));
+ map(0x07, 0x07).w(this, FUNC(bankp_state::out_w));
+}
/*************************************
diff --git a/src/mame/drivers/baraduke.cpp b/src/mame/drivers/baraduke.cpp
index 0b47b5fd2ec..34a48623fe1 100644
--- a/src/mame/drivers/baraduke.cpp
+++ b/src/mame/drivers/baraduke.cpp
@@ -165,34 +165,36 @@ WRITE8_MEMBER(baraduke_state::baraduke_irq_ack_w)
-ADDRESS_MAP_START(baraduke_state::baraduke_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(baraduke_spriteram_r,baraduke_spriteram_w) AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(baraduke_videoram_r,baraduke_videoram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
- AM_RANGE(0x4800, 0x4fff) AM_READWRITE(baraduke_textram_r,baraduke_textram_w) AM_SHARE("textram")/* video RAM (text layer) */
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */
- AM_RANGE(0x8800, 0x8800) AM_WRITE(baraduke_irq_ack_w) /* irq acknowledge */
- AM_RANGE(0xb000, 0xb002) AM_WRITE(baraduke_scroll0_w) /* scroll (layer 0) */
- AM_RANGE(0xb004, 0xb006) AM_WRITE(baraduke_scroll1_w) /* scroll (layer 1) */
- AM_RANGE(0x6000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
+void baraduke_state::baraduke_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(baraduke_state::baraduke_spriteram_r), FUNC(baraduke_state::baraduke_spriteram_w)).share("spriteram"); /* Sprite RAM */
+ map(0x2000, 0x3fff).rw(this, FUNC(baraduke_state::baraduke_videoram_r), FUNC(baraduke_state::baraduke_videoram_w)).share("videoram"); /* Video RAM */
+ map(0x4000, 0x43ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
+ map(0x4800, 0x4fff).rw(this, FUNC(baraduke_state::baraduke_textram_r), FUNC(baraduke_state::baraduke_textram_w)).share("textram");/* video RAM (text layer) */
+ map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */
+ map(0x8800, 0x8800).w(this, FUNC(baraduke_state::baraduke_irq_ack_w)); /* irq acknowledge */
+ map(0xb000, 0xb002).w(this, FUNC(baraduke_state::baraduke_scroll0_w)); /* scroll (layer 0) */
+ map(0xb004, 0xb006).w(this, FUNC(baraduke_state::baraduke_scroll1_w)); /* scroll (layer 1) */
+ map(0x6000, 0xffff).rom(); /* ROM */
+}
READ8_MEMBER(baraduke_state::soundkludge_r)
{
return ((m_counter++) >> 4) & 0xff;
}
-ADDRESS_MAP_START(baraduke_state::mcu_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r,m6801_io_w)/* internal registers */
- AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */
- AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
- AM_RANGE(0x1105, 0x1105) AM_READ(soundkludge_r) /* cures speech */
- AM_RANGE(0x8000, 0xbfff) AM_ROM /* MCU external ROM */
- AM_RANGE(0x8000, 0x8000) AM_WRITENOP /* watchdog reset? */
- AM_RANGE(0x8800, 0x8800) AM_WRITENOP /* irq acknoledge? */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* RAM */
- AM_RANGE(0xf000, 0xffff) AM_ROM /* MCU internal ROM */
-ADDRESS_MAP_END
+void baraduke_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw("mcu", FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));/* internal registers */
+ map(0x0080, 0x00ff).ram(); /* built in RAM */
+ map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
+ map(0x1105, 0x1105).r(this, FUNC(baraduke_state::soundkludge_r)); /* cures speech */
+ map(0x8000, 0xbfff).rom(); /* MCU external ROM */
+ map(0x8000, 0x8000).nopw(); /* watchdog reset? */
+ map(0x8800, 0x8800).nopw(); /* irq acknoledge? */
+ map(0xc000, 0xc7ff).ram(); /* RAM */
+ map(0xf000, 0xffff).rom(); /* MCU internal ROM */
+}
READ8_MEMBER(baraduke_state::readFF)
@@ -200,12 +202,13 @@ READ8_MEMBER(baraduke_state::readFF)
return 0xff;
}
-ADDRESS_MAP_START(baraduke_state::mcu_port_map)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ(inputport_r) /* input ports read */
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(inputport_select_w) /* input port select */
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(baraduke_lamps_w) /* lamps */
-ADDRESS_MAP_END
+void baraduke_state::mcu_port_map(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).r(this, FUNC(baraduke_state::inputport_r)); /* input ports read */
+ map(M6801_PORT1, M6801_PORT1).w(this, FUNC(baraduke_state::inputport_select_w)); /* input port select */
+ map(M6801_PORT2, M6801_PORT2).r(this, FUNC(baraduke_state::readFF)); /* leds won't work otherwise */
+ map(M6801_PORT2, M6801_PORT2).w(this, FUNC(baraduke_state::baraduke_lamps_w)); /* lamps */
+}
diff --git a/src/mame/drivers/barni.cpp b/src/mame/drivers/barni.cpp
index 4f229b82484..f5a30f25e7e 100644
--- a/src/mame/drivers/barni.cpp
+++ b/src/mame/drivers/barni.cpp
@@ -38,23 +38,26 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(barni_state::maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0xa100, 0xa7ff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(barni_state::subcpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(barni_state::audiocpu_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void barni_state::maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).ram();
+ map(0xa100, 0xa7ff).ram();
+ map(0xc000, 0xffff).rom();
+}
+
+void barni_state::subcpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram();
+ map(0xe000, 0xffff).rom();
+}
+
+void barni_state::audiocpu_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0xc000, 0xffff).rom();
+}
static INPUT_PORTS_START( barni )
INPUT_PORTS_END
diff --git a/src/mame/drivers/bartop52.cpp b/src/mame/drivers/bartop52.cpp
index 17086d4dc8f..85043a5faf0 100644
--- a/src/mame/drivers/bartop52.cpp
+++ b/src/mame/drivers/bartop52.cpp
@@ -47,14 +47,15 @@ protected:
};
-ADDRESS_MAP_START(bartop52_state::a5200_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd400, 0xd5ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xe800, 0xe8ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void bartop52_state::a5200_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x4000, 0xbfff).rom();
+ map(0xc000, 0xc0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd400, 0xd5ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xe800, 0xe8ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xf800, 0xffff).rom();
+}
#define JOYSTICK_DELTA 10
#define JOYSTICK_SENSITIVITY 200
diff --git a/src/mame/drivers/basic52.cpp b/src/mame/drivers/basic52.cpp
index f1c12791938..c0bc4ebc5b9 100644
--- a/src/mame/drivers/basic52.cpp
+++ b/src/mame/drivers/basic52.cpp
@@ -60,23 +60,25 @@ private:
};
-ADDRESS_MAP_START(basic52_state::basic52_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x7fff) AM_RAM
+void basic52_state::basic52_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x7fff).ram();
//AM_RANGE(0x8000, 0x9fff) AM_ROM // EPROM
//AM_RANGE(0xc000, 0xdfff) // Expansion block
//AM_RANGE(0xe000, 0xffff) // Expansion block
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(basic52_state::basic52_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x9fff) AM_ROM // EPROM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // PPI-8255
+void basic52_state::basic52_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0x9fff).rom(); // EPROM
+ map(0xa000, 0xa003).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // PPI-8255
//AM_RANGE(0xc000, 0xdfff) // Expansion block
//AM_RANGE(0xe000, 0xffff) // Expansion block
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( basic52 )
diff --git a/src/mame/drivers/batman.cpp b/src/mame/drivers/batman.cpp
index c402ec51f38..53d55062e5d 100644
--- a/src/mame/drivers/batman.cpp
+++ b/src/mame/drivers/batman.cpp
@@ -89,31 +89,32 @@ WRITE16_MEMBER(batman_state::latch_w)
/* full map verified from schematics and GALs */
/* addresses in the 1xxxxx region map to /WAIT */
/* addresses in the 2xxxxx region map to /WAIT2 */
-ADDRESS_MAP_START(batman_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
- AM_RANGE(0x120000, 0x120fff) AM_MIRROR(0x01f000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x11ff8c) AM_READ_PORT("260000")
- AM_RANGE(0x260002, 0x260003) AM_MIRROR(0x11ff8c) AM_READ_PORT("260002")
- AM_RANGE(0x260010, 0x260011) AM_MIRROR(0x11ff8e) AM_READ_PORT("260010")
- AM_RANGE(0x260030, 0x260031) AM_MIRROR(0x11ff8e) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff)
- AM_RANGE(0x260040, 0x260041) AM_MIRROR(0x11ff8e) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff)
- AM_RANGE(0x260050, 0x260051) AM_MIRROR(0x11ff8e) AM_WRITE(latch_w)
- AM_RANGE(0x260060, 0x260061) AM_MIRROR(0x11ff8e) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x2a0000, 0x2a0001) AM_MIRROR(0x11fffe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x2e0000, 0x2e0fff) AM_MIRROR(0x100000) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x2effc0, 0x2effff) AM_MIRROR(0x100000) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write)
- AM_RANGE(0x2f0000, 0x2fffff) AM_MIRROR(0x100000) AM_RAM
- AM_RANGE(0x2f0000, 0x2f1fff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2")
- AM_RANGE(0x2f2000, 0x2f3fff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield")
- AM_RANGE(0x2f4000, 0x2f5fff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext")
- AM_RANGE(0x2f6000, 0x2f7fff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("vad:mob")
- AM_RANGE(0x2f8000, 0x2f8eff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, alpha_w) AM_SHARE("vad:alpha")
- AM_RANGE(0x2f8f00, 0x2f8f7f) AM_MIRROR(0x100000) AM_SHARE("vad:eof")
- AM_RANGE(0x2f8f80, 0x2f8fff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("vad:mob:slip")
-ADDRESS_MAP_END
+void batman_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x0bffff).rom();
+ map(0x100000, 0x10ffff).mirror(0x010000).ram();
+ map(0x120000, 0x120fff).mirror(0x01f000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x260000, 0x260001).mirror(0x11ff8c).portr("260000");
+ map(0x260002, 0x260003).mirror(0x11ff8c).portr("260002");
+ map(0x260010, 0x260011).mirror(0x11ff8e).portr("260010");
+ map(0x260031, 0x260031).mirror(0x11ff8e).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r));
+ map(0x260041, 0x260041).mirror(0x11ff8e).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w));
+ map(0x260050, 0x260051).mirror(0x11ff8e).w(this, FUNC(batman_state::latch_w));
+ map(0x260060, 0x260061).mirror(0x11ff8e).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x2a0000, 0x2a0001).mirror(0x11fffe).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x2e0000, 0x2e0fff).mirror(0x100000).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x2effc0, 0x2effff).mirror(0x100000).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write));
+ map(0x2f0000, 0x2fffff).mirror(0x100000).ram();
+ map(0x2f0000, 0x2f1fff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2");
+ map(0x2f2000, 0x2f3fff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield");
+ map(0x2f4000, 0x2f5fff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext");
+ map(0x2f6000, 0x2f7fff).mirror(0x100000).ram().share("vad:mob");
+ map(0x2f8000, 0x2f8eff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::alpha_w)).share("vad:alpha");
+ map(0x2f8f00, 0x2f8f7f).mirror(0x100000).share("vad:eof");
+ map(0x2f8f80, 0x2f8fff).mirror(0x100000).ram().share("vad:mob:slip");
+}
diff --git a/src/mame/drivers/battlane.cpp b/src/mame/drivers/battlane.cpp
index 650572e8f3f..10adf5a396a 100644
--- a/src/mame/drivers/battlane.cpp
+++ b/src/mame/drivers/battlane.cpp
@@ -100,19 +100,20 @@ INTERRUPT_GEN_MEMBER(battlane_state::battlane_cpu1_interrupt)
*
*************************************/
-ADDRESS_MAP_START(battlane_state::battlane_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(battlane_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x1800, 0x18ff) AM_RAM_WRITE(battlane_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("P1") AM_WRITE(battlane_video_ctrl_w)
- AM_RANGE(0x1c01, 0x1c01) AM_READ_PORT("P2") AM_WRITE(battlane_scrollx_w)
- AM_RANGE(0x1c02, 0x1c02) AM_READ_PORT("DSW1") AM_WRITE(battlane_scrolly_w)
- AM_RANGE(0x1c03, 0x1c03) AM_READ_PORT("DSW2") AM_WRITE(battlane_cpu_command_w)
- AM_RANGE(0x1c04, 0x1c05) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
- AM_RANGE(0x1e00, 0x1e3f) AM_WRITE(battlane_palette_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(battlane_bitmap_w) AM_SHARE("share4")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void battlane_state::battlane_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x17ff).ram().w(this, FUNC(battlane_state::battlane_tileram_w)).share("tileram");
+ map(0x1800, 0x18ff).ram().w(this, FUNC(battlane_state::battlane_spriteram_w)).share("spriteram");
+ map(0x1c00, 0x1c00).portr("P1").w(this, FUNC(battlane_state::battlane_video_ctrl_w));
+ map(0x1c01, 0x1c01).portr("P2").w(this, FUNC(battlane_state::battlane_scrollx_w));
+ map(0x1c02, 0x1c02).portr("DSW1").w(this, FUNC(battlane_state::battlane_scrolly_w));
+ map(0x1c03, 0x1c03).portr("DSW2").w(this, FUNC(battlane_state::battlane_cpu_command_w));
+ map(0x1c04, 0x1c05).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
+ map(0x1e00, 0x1e3f).w(this, FUNC(battlane_state::battlane_palette_w));
+ map(0x2000, 0x3fff).ram().w(this, FUNC(battlane_state::battlane_bitmap_w)).share("share4");
+ map(0x4000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/battlera.cpp b/src/mame/drivers/battlera.cpp
index 80fc8a20f93..59c501eca86 100644
--- a/src/mame/drivers/battlera.cpp
+++ b/src/mame/drivers/battlera.cpp
@@ -94,7 +94,6 @@ Notes:
#include "emu.h"
#include "includes/battlera.h"
-#include "cpu/h6280/h6280.h"
#include "sound/2203intf.h"
#include "sound/c6280.h"
#include "speaker.h"
@@ -141,23 +140,25 @@ READ8_MEMBER(battlera_state::control_data_r)
/******************************************************************************/
-ADDRESS_MAP_START(battlera_state::battlera_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x1e0800, 0x1e0801) AM_WRITE(sound_w)
- AM_RANGE(0x1e1000, 0x1e13ff) AM_DEVREADWRITE( "huc6260", huc6260_device, palette_direct_read, palette_direct_write) AM_SHARE("paletteram")
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* Main ram */
- AM_RANGE(0x1ff000, 0x1ff001) AM_READWRITE(control_data_r, control_data_w)
+void battlera_state::battlera_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x1e0800, 0x1e0801).w(this, FUNC(battlera_state::sound_w));
+ map(0x1e1000, 0x1e13ff).rw(m_huc6260, FUNC(huc6260_device::palette_direct_read), FUNC(huc6260_device::palette_direct_write)).share("paletteram");
+ map(0x1f0000, 0x1f1fff).bankrw("bank8"); /* Main ram */
+ map(0x1ff000, 0x1ff001).rw(this, FUNC(battlera_state::control_data_r), FUNC(battlera_state::control_data_w));
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE( "maincpu", h6280_device, timer_r, timer_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w )
+ map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+ map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(battlera_state::battlera_portmap)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
-ADDRESS_MAP_END
+void battlera_state::battlera_portmap(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+}
/******************************************************************************/
@@ -182,15 +183,16 @@ WRITE8_MEMBER(battlera_state::adpcm_reset_w)
m_msm->reset_w(0);
}
-ADDRESS_MAP_START(battlera_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0x080000, 0x080001) AM_WRITE(adpcm_data_w)
- AM_RANGE(0x1fe800, 0x1fe80f) AM_DEVWRITE("c6280", c6280_device, c6280_w)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank7") /* Main ram */
- AM_RANGE(0x1ff000, 0x1ff001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_reset_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void battlera_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x040001).w("ymsnd", FUNC(ym2203_device::write));
+ map(0x080000, 0x080001).w(this, FUNC(battlera_state::adpcm_data_w));
+ map(0x1fe800, 0x1fe80f).w("c6280", FUNC(c6280_device::c6280_w));
+ map(0x1f0000, 0x1f1fff).bankrw("bank7"); /* Main ram */
+ map(0x1ff000, 0x1ff001).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(battlera_state::adpcm_reset_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/battlex.cpp b/src/mame/drivers/battlex.cpp
index a814510b4f4..15e463747d6 100644
--- a/src/mame/drivers/battlex.cpp
+++ b/src/mame/drivers/battlex.cpp
@@ -115,34 +115,37 @@ CUSTOM_INPUT_MEMBER(battlex_state::battlex_in0_b4_r)
*
*************************************/
-ADDRESS_MAP_START(battlex_state::battlex_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(battlex_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa3ff) AM_RAM
- AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(battlex_palette_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(battlex_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2")
- AM_RANGE(0x10, 0x10) AM_WRITE(battlex_flipscreen_w)
+void battlex_state::battlex_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(battlex_state::battlex_videoram_w)).share("videoram");
+ map(0x9000, 0x91ff).ram().share("spriteram");
+ map(0xa000, 0xa3ff).ram();
+ map(0xe000, 0xe03f).ram().w(this, FUNC(battlex_state::battlex_palette_w));
+}
+
+
+void battlex_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1");
+ map(0x01, 0x01).portr("SYSTEM");
+ map(0x02, 0x02).portr("INPUTS");
+ map(0x03, 0x03).portr("DSW2");
+ map(0x10, 0x10).w(this, FUNC(battlex_state::battlex_flipscreen_w));
/* verify all of these */
- AM_RANGE(0x22, 0x23) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(battlex_scroll_starfield_w)
- AM_RANGE(0x32, 0x32) AM_WRITE(battlex_scroll_x_lsb_w)
- AM_RANGE(0x33, 0x33) AM_WRITE(battlex_scroll_x_msb_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(battlex_state::dodgeman_io_map)
- AM_IMPORT_FROM(io_map)
- AM_RANGE(0x26, 0x27) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+ map(0x22, 0x23).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x30, 0x30).w(this, FUNC(battlex_state::battlex_scroll_starfield_w));
+ map(0x32, 0x32).w(this, FUNC(battlex_state::battlex_scroll_x_lsb_w));
+ map(0x33, 0x33).w(this, FUNC(battlex_state::battlex_scroll_x_msb_w));
+}
+
+void battlex_state::dodgeman_io_map(address_map &map)
+{
+ io_map(map);
+ map(0x26, 0x27).w("ay2", FUNC(ay8910_device::data_address_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp
index e99599a3de7..7eb8bb3252a 100644
--- a/src/mame/drivers/battlnts.cpp
+++ b/src/mame/drivers/battlnts.cpp
@@ -61,33 +61,35 @@ WRITE8_MEMBER(battlnts_state::battlnts_bankswitch_w)
*
*************************************/
-ADDRESS_MAP_START(battlnts_state::battlnts_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */
- AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */
- AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */
- AM_RANGE(0x2400, 0x24ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")/* palette */
- AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */
- AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("DSW1")
- AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P2")
- AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P1")
- AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW3") /* coinsw, testsw, startsw */
- AM_RANGE(0x2e04, 0x2e04) AM_READ_PORT("DSW2")
- AM_RANGE(0x2e08, 0x2e08) AM_WRITE(battlnts_bankswitch_w) /* bankswitch control */
- AM_RANGE(0x2e0c, 0x2e0c) AM_WRITE(battlnts_spritebank_w) /* sprite bank select */
- AM_RANGE(0x2e10, 0x2e10) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2e14, 0x2e14) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound code # */
- AM_RANGE(0x2e18, 0x2e18) AM_WRITE(battlnts_sh_irqtrigger_w) /* cause interrupt on audio CPU */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM 777e02.bin */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(battlnts_state::battlnts_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM 777c01.rom */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym3812_device, read, write) /* YM3812 (chip 1) */
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym3812_device, read, write) /* YM3812 (chip 2) */
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void battlnts_state::battlnts_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(m_k007342, FUNC(k007342_device::read), FUNC(k007342_device::write)); /* Color RAM + Video RAM */
+ map(0x2000, 0x21ff).rw(m_k007420, FUNC(k007420_device::read), FUNC(k007420_device::write)); /* Sprite RAM */
+ map(0x2200, 0x23ff).rw(m_k007342, FUNC(k007342_device::scroll_r), FUNC(k007342_device::scroll_w)); /* Scroll RAM */
+ map(0x2400, 0x24ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");/* palette */
+ map(0x2600, 0x2607).w(m_k007342, FUNC(k007342_device::vreg_w)); /* Video Registers */
+ map(0x2e00, 0x2e00).portr("DSW1");
+ map(0x2e01, 0x2e01).portr("P2");
+ map(0x2e02, 0x2e02).portr("P1");
+ map(0x2e03, 0x2e03).portr("DSW3"); /* coinsw, testsw, startsw */
+ map(0x2e04, 0x2e04).portr("DSW2");
+ map(0x2e08, 0x2e08).w(this, FUNC(battlnts_state::battlnts_bankswitch_w)); /* bankswitch control */
+ map(0x2e0c, 0x2e0c).w(this, FUNC(battlnts_state::battlnts_spritebank_w)); /* sprite bank select */
+ map(0x2e10, 0x2e10).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2e14, 0x2e14).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound code # */
+ map(0x2e18, 0x2e18).w(this, FUNC(battlnts_state::battlnts_sh_irqtrigger_w)); /* cause interrupt on audio CPU */
+ map(0x4000, 0x7fff).bankr("rombank"); /* banked ROM */
+ map(0x8000, 0xffff).rom(); /* ROM 777e02.bin */
+}
+
+void battlnts_state::battlnts_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM 777c01.rom */
+ map(0x8000, 0x87ff).ram(); /* RAM */
+ map(0xa000, 0xa001).rw("ym1", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 (chip 1) */
+ map(0xc000, 0xc001).rw("ym2", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 (chip 2) */
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
/*************************************
*
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index 4e1d15cf3ce..1dc956b9829 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -142,122 +142,129 @@ READ8_MEMBER(bbc_state::bbc_fe_r)
return 0xfe;
}
-ADDRESS_MAP_START(bbc_state::bbca_mem)
- ADDRESS_MAP_UNMAP_HIGH /* Hardware marked with a # is not present in a Model A */
-
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */
- AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
+void bbc_state::bbca_mem(address_map &map)
+{
+ map.unmap_value_high(); /* Hardware marked with a # is not present in a Model A */
+
+ map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorya1_w)); /* 0000-3fff Regular Ram */
+ map(0x4000, 0x7fff).bankr("bank3").w(this, FUNC(bbc_state::bbc_memoryb3_w)); /* 4000-7fff Repeat of the Regular Ram */
+ map(0x8000, 0xbfff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memoryb4_w)); /* 8000-bfff Paged ROM */
+ map(0xc000, 0xfbff).bankr("bank7"); /* c000-fbff OS ROM */
+ map(0xfc00, 0xfdff).noprw(); /* fc00-fdff FRED & JIM Pages */
/* fe00-feff SHEILA Address Page */
- AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */
- AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, register_r, register_w)
- AM_RANGE(0xfe08, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, read, write) /* fe08-fe0f 6850 ACIA Serial controller */
- AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */
- AM_RANGE(0xfe20, 0xfe2f) AM_READWRITE(bbc_fe_r, bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */
+ map(0xfe00, 0xfe00).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::status_r), FUNC(hd6845_device::address_w)); /* fe00-fe07 6845 CRTC Video controller */
+ map(0xfe01, 0xfe01).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w));
+ map(0xfe08, 0xfe09).mirror(0x06).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); /* fe08-fe0f 6850 ACIA Serial controller */
+ map(0xfe10, 0xfe17).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_SerialULA_w)); /* fe10-fe17 Serial ULA Serial system chip */
+ map(0xfe18, 0xfe1f).noprw(); /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */
+ map(0xfe20, 0xfe2f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_videoULA_w)); /* R: fe20-fe2f INTON # ECONET Interrupt On */
/* W: fe20-fe2f Video ULA Video system chip */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */
+ map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selecta_w)); /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 74LS161 Paged ROM selector */
- AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
- AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */
- AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */
- AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC # ECONET controller */
- AM_RANGE(0xfec0, 0xfedf) AM_NOP /* fec0-fedf uPD7002 # Analogue to digital converter */
- AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA # Tube system interface */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */
-ADDRESS_MAP_END
+ map(0xfe40, 0xfe5f).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* fe40-fe5f 6522 VIA SYSTEM VIA */
+ map(0xfe60, 0xfe7f).noprw(); /* fe60-fe7f 6522 VIA # USER VIA */
+ map(0xfe80, 0xfe9f).noprw(); /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */
+ map(0xfea0, 0xfebf).r(this, FUNC(bbc_state::bbc_fe_r)); /* fea0-febf 68B54 ADLC # ECONET controller */
+ map(0xfec0, 0xfedf).noprw(); /* fec0-fedf uPD7002 # Analogue to digital converter */
+ map(0xfee0, 0xfeff).r(this, FUNC(bbc_state::bbc_fe_r)); /* fee0-feff Tube ULA # Tube system interface */
+ map(0xff00, 0xffff).rom().region("os", 0x3f00); /* ff00-ffff OS Rom (continued) */
+}
-ADDRESS_MAP_START(bbc_state::bbc_base)
- ADDRESS_MAP_UNMAP_HIGH
+void bbc_state::bbc_base(address_map &map)
+{
+ map.unmap_value_high();
- AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
+ map(0xc000, 0xfbff).bankr("bank7"); /* c000-fbff OS ROM */
+ map(0xfc00, 0xfdff).noprw(); /* fc00-fdff FRED & JIM Pages */
/* fe00-feff SHEILA Address Page */
- AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */
- AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, register_r, register_w)
- AM_RANGE(0xfe08, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, read, write) /* fe08-fe0f 6850 ACIA Serial controller */
- AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("STATID") /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */
- AM_RANGE(0xfe20, 0xfe2f) AM_READWRITE(bbc_fe_r, bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */
+ map(0xfe00, 0xfe00).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::status_r), FUNC(hd6845_device::address_w)); /* fe00-fe07 6845 CRTC Video controller */
+ map(0xfe01, 0xfe01).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w));
+ map(0xfe08, 0xfe09).mirror(0x06).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); /* fe08-fe0f 6850 ACIA Serial controller */
+ map(0xfe10, 0xfe17).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_SerialULA_w)); /* fe10-fe17 Serial ULA Serial system chip */
+ map(0xfe18, 0xfe1f).portr("STATID"); /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */
+ map(0xfe20, 0xfe2f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_videoULA_w)); /* R: fe20-fe2f INTON ECONET Interrupt On */
/* W: fe20-fe2f Video ULA Video system chip */
- AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
- AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */
+ map(0xfe40, 0xfe5f).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* fe40-fe5f 6522 VIA SYSTEM VIA */
+ map(0xfe60, 0xfe7f).rw(m_via6522_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* fe60-fe7f 6522 VIA USER VIA */
/* fe80-fe9f FDC Floppy disc controller */
- AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */
- AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */
- AM_RANGE(0xfee0, 0xfeff) AM_DEVREADWRITE("tube", bbc_tube_slot_device, host_r, host_w) /* fee0-feff Tube ULA Tube system interface */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */
-ADDRESS_MAP_END
+ map(0xfea0, 0xfebf).r(this, FUNC(bbc_state::bbc_fe_r)); /* fea0-febf 68B54 ADLC ECONET controller */
+ map(0xfec0, 0xfedf).rw(m_upd7002, FUNC(upd7002_device::read), FUNC(upd7002_device::write)); /* fec0-fedf uPD7002 Analogue to digital converter */
+ map(0xfee0, 0xfeff).rw(m_tube, FUNC(bbc_tube_slot_device::host_r), FUNC(bbc_tube_slot_device::host_w)); /* fee0-feff Tube ULA Tube system interface */
+ map(0xff00, 0xffff).rom().region("os", 0x3f00); /* ff00-ffff OS ROM (continued) */
+}
-ADDRESS_MAP_START(bbc_state::bbcb_mem)
- AM_IMPORT_FROM(bbc_base)
+void bbc_state::bbcb_mem(address_map &map)
+{
+ bbc_base(map);
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */
+ map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorya1_w)); /* 0000-3fff Regular Ram */
+ map(0x4000, 0x7fff).bankr("bank3").w(this, FUNC(bbc_state::bbc_memoryb3_w)); /* 4000-7fff Regular Ram */
+ map(0x8000, 0xbfff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memoryb4_w)); /* 8000-bfff Paged ROM */
+ map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectb_w)); /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271", i8271_device, map) /* fe80-fe83 8271 FDC Floppy disc controller */
- AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w) /* fe84-fe9f 8271 FDC Floppy disc controller */
-ADDRESS_MAP_END
+ map(0xfe80, 0xfe83).m(m_i8271, FUNC(i8271_device::map)); /* fe80-fe83 8271 FDC Floppy disc controller */
+ map(0xfe84, 0xfe9f).rw(m_i8271, FUNC(i8271_device::data_r), FUNC(i8271_device::data_w)); /* fe84-fe9f 8271 FDC Floppy disc controller */
+}
-ADDRESS_MAP_START(bbc_state::bbcb_nofdc_mem)
- AM_IMPORT_FROM(bbc_base)
+void bbc_state::bbcb_nofdc_mem(address_map &map)
+{
+ bbc_base(map);
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */
+ map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorya1_w)); /* 0000-3fff Regular Ram */
+ map(0x4000, 0x7fff).bankr("bank3").w(this, FUNC(bbc_state::bbc_memoryb3_w)); /* 4000-7fff Regular Ram */
+ map(0x8000, 0xbfff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memoryb4_w)); /* 8000-bfff Paged ROM */
+ map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectb_w)); /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe9f Floppy disc controller */
-ADDRESS_MAP_END
+ map(0xfe80, 0xfe83).noprw(); /* fe80-fe9f Floppy disc controller */
+}
-ADDRESS_MAP_START(bbc_state::bbcbp_mem)
- AM_IMPORT_FROM(bbc_base)
- AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */
- AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */
- AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */
- AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */
+void bbc_state::bbcbp_mem(address_map &map)
+{
+ bbc_base(map);
+ map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybp1_w)); /* 0000-2fff Regular Ram */
+ map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybp2_w)); /* 3000-7fff Video/Shadow Ram */
+ map(0x8000, 0xafff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybp4_w)); /* 8000-afff Paged ROM or 12K of SWRAM */
+ map(0xb000, 0xbfff).bankr("bank6"); /* b000-bfff Rest of paged ROM area */
+ map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectbp_w)); /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe80, 0xfe83) AM_READWRITE(bbc_fe_r, bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */
- AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */
- AM_RANGE(0xfee0, 0xfeff) AM_DEVREADWRITE("tube", bbc_tube_slot_device, host_r, host_w) /* fee0-feff Tube ULA Tube system interface */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bbc_state::bbcbp128_mem)
- AM_IMPORT_FROM(bbc_base)
- AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */
- AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */
- AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w) /* 8000-afff Paged ROM or 12K of SWRAM */
- AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w) /* b000-bfff Rest of paged ROM area */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */
+ map(0xfe80, 0xfe83).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_wd1770_status_w)); /* fe80-fe83 1770 FDC Drive control register */
+ map(0xfe84, 0xfe9f).rw(m_wd1770, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); /* fe84-fe9f 1770 FDC Floppy disc controller */
+ map(0xfee0, 0xfeff).rw(m_tube, FUNC(bbc_tube_slot_device::host_r), FUNC(bbc_tube_slot_device::host_w)); /* fee0-feff Tube ULA Tube system interface */
+}
+
+
+void bbc_state::bbcbp128_mem(address_map &map)
+{
+ bbc_base(map);
+ map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybp1_w)); /* 0000-2fff Regular Ram */
+ map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybp2_w)); /* 3000-7fff Video/Shadow Ram */
+ map(0x8000, 0xafff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybp4_128_w)); /* 8000-afff Paged ROM or 12K of SWRAM */
+ map(0xb000, 0xbfff).bankr("bank6").w(this, FUNC(bbc_state::bbc_memorybp6_128_w)); /* b000-bfff Rest of paged ROM area */
+ map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectbp_w)); /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe80, 0xfe83) AM_READWRITE(bbc_fe_r, bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */
- AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */
- AM_RANGE(0xfee0, 0xfeff) AM_DEVREADWRITE("tube", bbc_tube_slot_device, host_r, host_w) /* fee0-feff Tube ULA Tube system interface */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bbc_state::reutapm_mem)
- AM_IMPORT_FROM(bbc_base)
- AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */
- AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */
- AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */
- AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */
+ map(0xfe80, 0xfe83).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_wd1770_status_w)); /* fe80-fe83 1770 FDC Drive control register */
+ map(0xfe84, 0xfe9f).rw(m_wd1770, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); /* fe84-fe9f 1770 FDC Floppy disc controller */
+ map(0xfee0, 0xfeff).rw(m_tube, FUNC(bbc_tube_slot_device::host_r), FUNC(bbc_tube_slot_device::host_w)); /* fee0-feff Tube ULA Tube system interface */
+}
+
+
+void bbc_state::reutapm_mem(address_map &map)
+{
+ bbc_base(map);
+ map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybp1_w)); /* 0000-2fff Regular Ram */
+ map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybp2_w)); /* 3000-7fff Video/Shadow Ram */
+ map(0x8000, 0xafff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybp4_w)); /* 8000-afff Paged ROM or 12K of SWRAM */
+ map(0xb000, 0xbfff).bankr("bank6"); /* b000-bfff Rest of paged ROM area */
+ map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectbp_w)); /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe83 1770 FDC Drive control register */
- AM_RANGE(0xfe84, 0xfe9f) AM_NOP /* fe84-fe9f 1770 FDC Floppy disc controller */
- AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */
-ADDRESS_MAP_END
+ map(0xfe80, 0xfe83).noprw(); /* fe80-fe83 1770 FDC Drive control register */
+ map(0xfe84, 0xfe9f).noprw(); /* fe84-fe9f 1770 FDC Floppy disc controller */
+ map(0xfee0, 0xfeff).r(this, FUNC(bbc_state::bbc_fe_r)); /* fee0-feff Tube ULA Tube system interface */
+}
/******************************************************************************
&FC00-&FCFF FRED
@@ -283,16 +290,17 @@ ADDRESS_MAP_END
******************************************************************************/
-ADDRESS_MAP_START(bbc_state::bbcm_mem)
- AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybm1_w) /* 0000-2fff Regular Ram */
- AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybm2_w) /* 3000-7fff Video/Shadow Ram */
- AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w) /* 8000-8fff Paged ROM/RAM or 4K of RAM ANDY */
- AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w) /* 9000-bfff Rest of paged ROM/RAM area */
- AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w) /* c000-dfff OS ROM or 8K of RAM HAZEL */
- AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000) /* e000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w) /* processed directly because it can be ROM or hardware */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */
-ADDRESS_MAP_END
+void bbc_state::bbcm_mem(address_map &map)
+{
+ map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybm1_w)); /* 0000-2fff Regular Ram */
+ map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybm2_w)); /* 3000-7fff Video/Shadow Ram */
+ map(0x8000, 0x8fff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybm4_w)); /* 8000-8fff Paged ROM/RAM or 4K of RAM ANDY */
+ map(0x9000, 0xbfff).bankr("bank5").w(this, FUNC(bbc_state::bbc_memorybm5_w)); /* 9000-bfff Rest of paged ROM/RAM area */
+ map(0xc000, 0xdfff).bankr("bank7").w(this, FUNC(bbc_state::bbc_memorybm7_w)); /* c000-dfff OS ROM or 8K of RAM HAZEL */
+ map(0xe000, 0xfbff).rom().region("os", 0x2000); /* e000-fbff OS ROM */
+ map(0xfc00, 0xfeff).bankr("bank8").w(this, FUNC(bbc_state::bbcm_w)); /* processed directly because it can be ROM or hardware */
+ map(0xff00, 0xffff).rom().region("os", 0x3f00); /* ff00-ffff OS ROM (continued) */
+}
INPUT_CHANGED_MEMBER(bbc_state::trigger_reset)
diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp
index 2afccb95149..4d74b875940 100644
--- a/src/mame/drivers/bbcbc.cpp
+++ b/src/mame/drivers/bbcbc.cpp
@@ -65,18 +65,26 @@ private:
#define MAIN_CLOCK XTAL(4'433'619)
-ADDRESS_MAP_START(bbcbc_state::mem_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", generic_slot_device, read_rom)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bbcbc_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ;map(0x00, 0x7f).lrw8("z80pio_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_z80pio->read(space, offset >> 5, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_z80pio->write(space, offset >> 5, data, mem_mask); });
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("tms9129", tms9129_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("tms9129", tms9129_device, register_read, register_write)
-ADDRESS_MAP_END
+void bbcbc_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0xbfff).r("cartslot", FUNC(generic_slot_device::read_rom));
+ map(0xe000, 0xe7ff).ram();
+}
+
+void bbcbc_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).lrw8("z80pio_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_z80pio->read(space, offset >> 5, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_z80pio->write(space, offset >> 5, data, mem_mask);
+ });
+ map(0x80, 0x80).rw("tms9129", FUNC(tms9129_device::vram_read), FUNC(tms9129_device::vram_write));
+ map(0x81, 0x81).rw("tms9129", FUNC(tms9129_device::register_read), FUNC(tms9129_device::register_write));
+}
// Input bits are read through the PIO four at a time, then stored individually in RAM at E030-E03B
static INPUT_PORTS_START( bbcbc )
diff --git a/src/mame/drivers/bbusters.cpp b/src/mame/drivers/bbusters.cpp
index 1d01bf14713..fdd2ab80dc7 100644
--- a/src/mame/drivers/bbusters.cpp
+++ b/src/mame/drivers/bbusters.cpp
@@ -324,74 +324,79 @@ READ16_MEMBER(bbusters_state::mechatt_gun_r)
/*******************************************************************************/
-ADDRESS_MAP_START(bbusters_state::bbusters_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(video_w) AM_SHARE("videoram")
- AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0a1000, 0x0a7fff) AM_RAM /* service mode */
- AM_RANGE(0x0a8000, 0x0a8fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0a9000, 0x0affff) AM_RAM /* service mode */
- AM_RANGE(0x0b0000, 0x0b1fff) AM_RAM_WRITE(pf1_w) AM_SHARE("pf1_data")
- AM_RANGE(0x0b2000, 0x0b3fff) AM_RAM_WRITE(pf2_w) AM_SHARE("pf2_data")
- AM_RANGE(0x0b4000, 0x0b5fff) AM_RAM /* service mode */
- AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_SHARE("pf1_scroll_data")
- AM_RANGE(0x0b8008, 0x0b800b) AM_WRITEONLY AM_SHARE("pf2_scroll_data")
- AM_RANGE(0x0d0000, 0x0d0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("COINS") /* Coins */
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("IN0") /* Player 1 & 2 */
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("IN1") /* Player 3 */
- AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1") /* Dip 1 */
- AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2") /* Dip 2 */
- AM_RANGE(0x0e0018, 0x0e0019) AM_READ(sound_status_r)
- AM_RANGE(0x0e8000, 0x0e8001) AM_READWRITE(kludge_r, gun_select_w)
- AM_RANGE(0x0e8002, 0x0e8003) AM_READ(control_3_r)
+void bbusters_state::bbusters_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram().share("ram");
+ map(0x090000, 0x090fff).ram().w(this, FUNC(bbusters_state::video_w)).share("videoram");
+ map(0x0a0000, 0x0a0fff).ram().share("spriteram");
+ map(0x0a1000, 0x0a7fff).ram(); /* service mode */
+ map(0x0a8000, 0x0a8fff).ram().share("spriteram2");
+ map(0x0a9000, 0x0affff).ram(); /* service mode */
+ map(0x0b0000, 0x0b1fff).ram().w(this, FUNC(bbusters_state::pf1_w)).share("pf1_data");
+ map(0x0b2000, 0x0b3fff).ram().w(this, FUNC(bbusters_state::pf2_w)).share("pf2_data");
+ map(0x0b4000, 0x0b5fff).ram(); /* service mode */
+ map(0x0b8000, 0x0b8003).writeonly().share("pf1_scroll_data");
+ map(0x0b8008, 0x0b800b).writeonly().share("pf2_scroll_data");
+ map(0x0d0000, 0x0d0fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0e0000, 0x0e0001).portr("COINS"); /* Coins */
+ map(0x0e0002, 0x0e0003).portr("IN0"); /* Player 1 & 2 */
+ map(0x0e0004, 0x0e0005).portr("IN1"); /* Player 3 */
+ map(0x0e0008, 0x0e0009).portr("DSW1"); /* Dip 1 */
+ map(0x0e000a, 0x0e000b).portr("DSW2"); /* Dip 2 */
+ map(0x0e0018, 0x0e0019).r(this, FUNC(bbusters_state::sound_status_r));
+ map(0x0e8000, 0x0e8001).rw(this, FUNC(bbusters_state::kludge_r), FUNC(bbusters_state::gun_select_w));
+ map(0x0e8002, 0x0e8003).r(this, FUNC(bbusters_state::control_3_r));
/* AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP */
- AM_RANGE(0x0f0008, 0x0f0009) AM_WRITE(three_gun_output_w)
- AM_RANGE(0x0f0018, 0x0f0019) AM_WRITE(sound_cpu_w)
- AM_RANGE(0x0f8000, 0x0f80ff) AM_READ(eprom_r) AM_WRITEONLY AM_SHARE("eeprom") /* Eeprom */
-ADDRESS_MAP_END
+ map(0x0f0008, 0x0f0009).w(this, FUNC(bbusters_state::three_gun_output_w));
+ map(0x0f0018, 0x0f0019).w(this, FUNC(bbusters_state::sound_cpu_w));
+ map(0x0f8000, 0x0f80ff).r(this, FUNC(bbusters_state::eprom_r)).writeonly().share("eeprom"); /* Eeprom */
+}
/*******************************************************************************/
-ADDRESS_MAP_START(bbusters_state::mechatt_map)
- AM_RANGE(0x000000, 0x06ffff) AM_ROM
- AM_RANGE(0x070000, 0x07ffff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(video_w) AM_SHARE("videoram")
- AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0a1000, 0x0a7fff) AM_WRITENOP
- AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(pf1_w) AM_SHARE("pf1_data")
- AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_SHARE("pf1_scroll_data")
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM_WRITE(pf2_w) AM_SHARE("pf2_data")
- AM_RANGE(0x0c8000, 0x0c8003) AM_WRITEONLY AM_SHARE("pf2_scroll_data")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("IN0")
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e0004, 0x0e0007) AM_READ(mechatt_gun_r)
+void bbusters_state::mechatt_map(address_map &map)
+{
+ map(0x000000, 0x06ffff).rom();
+ map(0x070000, 0x07ffff).ram().share("ram");
+ map(0x090000, 0x090fff).ram().w(this, FUNC(bbusters_state::video_w)).share("videoram");
+ map(0x0a0000, 0x0a0fff).ram().share("spriteram");
+ map(0x0a1000, 0x0a7fff).nopw();
+ map(0x0b0000, 0x0b3fff).ram().w(this, FUNC(bbusters_state::pf1_w)).share("pf1_data");
+ map(0x0b8000, 0x0b8003).writeonly().share("pf1_scroll_data");
+ map(0x0c0000, 0x0c3fff).ram().w(this, FUNC(bbusters_state::pf2_w)).share("pf2_data");
+ map(0x0c8000, 0x0c8003).writeonly().share("pf2_scroll_data");
+ map(0x0d0000, 0x0d07ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0e0000, 0x0e0001).portr("IN0");
+ map(0x0e0002, 0x0e0003).portr("DSW1");
+ map(0x0e0004, 0x0e0007).r(this, FUNC(bbusters_state::mechatt_gun_r));
/* AM_RANGE(0x0e4002, 0x0e4003) AM_WRITENOP Gun force feedback? */
- AM_RANGE(0x0e4002, 0x0e4003) AM_WRITE(two_gun_output_w)
- AM_RANGE(0x0e8000, 0x0e8001) AM_READWRITE(sound_status_r, sound_cpu_w)
-ADDRESS_MAP_END
+ map(0x0e4002, 0x0e4003).w(this, FUNC(bbusters_state::two_gun_output_w));
+ map(0x0e8000, 0x0e8001).rw(this, FUNC(bbusters_state::sound_status_r), FUNC(bbusters_state::sound_cpu_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(bbusters_state::sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bbusters_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bbusters_state::sounda_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write)
- AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */
-ADDRESS_MAP_END
+void bbusters_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(bbusters_state::sound_status_w));
+}
+
+void bbusters_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xc0, 0xc1).nopw(); /* -> Main CPU */
+}
+
+void bbusters_state::sounda_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write));
+ map(0xc0, 0xc1).nopw(); /* -> Main CPU */
+}
/******************************************************************************/
diff --git a/src/mame/drivers/bcs3.cpp b/src/mame/drivers/bcs3.cpp
index 833d5a3220e..e5af07d7498 100644
--- a/src/mame/drivers/bcs3.cpp
+++ b/src/mame/drivers/bcs3.cpp
@@ -133,31 +133,34 @@ READ8_MEMBER( bcs3_state::zx_r )
return 0xf7;
}
-ADDRESS_MAP_START(bcs3_state::bcs3_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_MIRROR(0x2000) AM_ROM AM_REGION("roms", 0)
- AM_RANGE( 0x1000, 0x13ff ) AM_MIRROR(0x2000) AM_READ(keyboard_r)
- AM_RANGE( 0x1400, 0x17ff ) AM_MIRROR(0x2000) AM_NOP // /WAIT circuit
- AM_RANGE( 0x1800, 0x1bff ) AM_MIRROR(0x2000) AM_READ(video_r)
- AM_RANGE( 0x1c00, 0x1fff ) AM_MIRROR(0x2000) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bcs3_state::bcs3a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_MIRROR(0x2000) AM_ROM AM_REGION("roms", 0)
- AM_RANGE( 0x1000, 0x13ff ) AM_MIRROR(0x2000) AM_READ(keyboard_r)
- AM_RANGE( 0x1400, 0x17ff ) AM_MIRROR(0x2000) AM_NOP // /WAIT circuit
- AM_RANGE( 0x1800, 0x1bff ) AM_MIRROR(0x2000) AM_READ(zx_r)
- AM_RANGE( 0x3c00, 0x7fff ) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0xf000, 0xf3ff ) AM_ROM AM_REGION("roms", 0x1000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bcs3_state::bcs3_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(3)
+void bcs3_state::bcs3_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).mirror(0x2000).rom().region("roms", 0);
+ map(0x1000, 0x13ff).mirror(0x2000).r(this, FUNC(bcs3_state::keyboard_r));
+ map(0x1400, 0x17ff).mirror(0x2000).noprw(); // /WAIT circuit
+ map(0x1800, 0x1bff).mirror(0x2000).r(this, FUNC(bcs3_state::video_r));
+ map(0x1c00, 0x1fff).mirror(0x2000).ram().share("videoram");
+}
+
+void bcs3_state::bcs3a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).mirror(0x2000).rom().region("roms", 0);
+ map(0x1000, 0x13ff).mirror(0x2000).r(this, FUNC(bcs3_state::keyboard_r));
+ map(0x1400, 0x17ff).mirror(0x2000).noprw(); // /WAIT circuit
+ map(0x1800, 0x1bff).mirror(0x2000).r(this, FUNC(bcs3_state::zx_r));
+ map(0x3c00, 0x7fff).ram().share("videoram");
+ map(0xf000, 0xf3ff).rom().region("roms", 0x1000);
+}
+
+void bcs3_state::bcs3_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(3);
// coded in the rom as F8 to FB
- AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+ map(0x00, 0x03).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( bcs3 )
diff --git a/src/mame/drivers/beaminv.cpp b/src/mame/drivers/beaminv.cpp
index 8ac1f374335..e93e3017dac 100644
--- a/src/mame/drivers/beaminv.cpp
+++ b/src/mame/drivers/beaminv.cpp
@@ -241,15 +241,16 @@ READ8_MEMBER(beaminv_state::controller_r)
*
*************************************/
-ADDRESS_MAP_START(beaminv_state::main_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW")
- AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("INPUTS")
- AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_READ(controller_r)
- AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ(v128_r)
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void beaminv_state::main_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x1800, 0x1fff).ram();
+ map(0x2400, 0x2400).mirror(0x03ff).portr("DSW");
+ map(0x2800, 0x2800).mirror(0x03ff).portr("INPUTS");
+ map(0x3400, 0x3400).mirror(0x03ff).r(this, FUNC(beaminv_state::controller_r));
+ map(0x3800, 0x3800).mirror(0x03ff).r(this, FUNC(beaminv_state::v128_r));
+ map(0x4000, 0x5fff).ram().share("videoram");
+}
@@ -259,10 +260,11 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(beaminv_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(controller_select_w) /* to be confirmed */
-ADDRESS_MAP_END
+void beaminv_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(beaminv_state::controller_select_w)); /* to be confirmed */
+}
diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp
index 92e6bc1c307..09225b9ae5d 100644
--- a/src/mame/drivers/beathead.cpp
+++ b/src/mame/drivers/beathead.cpp
@@ -274,33 +274,34 @@ WRITE32_MEMBER( beathead_state::coin_count_w )
*
*************************************/
-ADDRESS_MAP_START(beathead_state::main_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("ram_base")
- AM_RANGE(0x01800000, 0x01bfffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rom_base")
- AM_RANGE(0x40000000, 0x400007ff) AM_RAM_WRITE(eeprom_data_w) AM_SHARE("nvram")
- AM_RANGE(0x41000000, 0x41000003) AM_DEVREADWRITE8("jsa", atari_jsa_iii_device, main_response_r, main_command_w, 0x000000ff)
- AM_RANGE(0x41000100, 0x41000103) AM_READ(interrupt_control_r)
- AM_RANGE(0x41000100, 0x4100011f) AM_WRITE(interrupt_control_w)
- AM_RANGE(0x41000200, 0x41000203) AM_READ_PORT("IN1")
- AM_RANGE(0x41000204, 0x41000207) AM_READ_PORT("IN0")
- AM_RANGE(0x41000208, 0x4100020f) AM_WRITE(sound_reset_w)
- AM_RANGE(0x41000220, 0x41000227) AM_WRITE(coin_count_w)
- AM_RANGE(0x41000300, 0x41000303) AM_READ_PORT("IN2")
- AM_RANGE(0x41000304, 0x41000307) AM_READ_PORT("IN3")
- AM_RANGE(0x41000400, 0x41000403) AM_WRITEONLY AM_SHARE("palette_select")
- AM_RANGE(0x41000500, 0x41000503) AM_WRITE(eeprom_enable_w)
- AM_RANGE(0x41000600, 0x41000603) AM_WRITE(finescroll_w)
- AM_RANGE(0x41000700, 0x41000703) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w)
- AM_RANGE(0x42000000, 0x4201ffff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x43000000, 0x43000007) AM_READWRITE(hsync_ram_r, hsync_ram_w)
- AM_RANGE(0x8df80000, 0x8df80003) AM_READNOP /* noisy x4 during scanline int */
- AM_RANGE(0x8f380000, 0x8f3fffff) AM_WRITE(vram_latch_w)
- AM_RANGE(0x8f900000, 0x8f97ffff) AM_WRITE(vram_transparent_w)
- AM_RANGE(0x8f980000, 0x8f9fffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8fb80000, 0x8fbfffff) AM_WRITE(vram_bulk_w)
- AM_RANGE(0x8fff8000, 0x8fff8003) AM_WRITEONLY AM_SHARE("vram_bulk_latch")
- AM_RANGE(0x9e280000, 0x9e2fffff) AM_WRITE(vram_copy_w)
-ADDRESS_MAP_END
+void beathead_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().share("ram_base");
+ map(0x01800000, 0x01bfffff).rom().region("user1", 0).share("rom_base");
+ map(0x40000000, 0x400007ff).ram().w(this, FUNC(beathead_state::eeprom_data_w)).share("nvram");
+ map(0x41000000, 0x41000000).rw(m_jsa, FUNC(atari_jsa_iii_device::main_response_r), FUNC(atari_jsa_iii_device::main_command_w));
+ map(0x41000100, 0x41000103).r(this, FUNC(beathead_state::interrupt_control_r));
+ map(0x41000100, 0x4100011f).w(this, FUNC(beathead_state::interrupt_control_w));
+ map(0x41000200, 0x41000203).portr("IN1");
+ map(0x41000204, 0x41000207).portr("IN0");
+ map(0x41000208, 0x4100020f).w(this, FUNC(beathead_state::sound_reset_w));
+ map(0x41000220, 0x41000227).w(this, FUNC(beathead_state::coin_count_w));
+ map(0x41000300, 0x41000303).portr("IN2");
+ map(0x41000304, 0x41000307).portr("IN3");
+ map(0x41000400, 0x41000403).writeonly().share("palette_select");
+ map(0x41000500, 0x41000503).w(this, FUNC(beathead_state::eeprom_enable_w));
+ map(0x41000600, 0x41000603).w(this, FUNC(beathead_state::finescroll_w));
+ map(0x41000700, 0x41000703).w("watchdog", FUNC(watchdog_timer_device::reset32_w));
+ map(0x42000000, 0x4201ffff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x43000000, 0x43000007).rw(this, FUNC(beathead_state::hsync_ram_r), FUNC(beathead_state::hsync_ram_w));
+ map(0x8df80000, 0x8df80003).nopr(); /* noisy x4 during scanline int */
+ map(0x8f380000, 0x8f3fffff).w(this, FUNC(beathead_state::vram_latch_w));
+ map(0x8f900000, 0x8f97ffff).w(this, FUNC(beathead_state::vram_transparent_w));
+ map(0x8f980000, 0x8f9fffff).ram().share("videoram");
+ map(0x8fb80000, 0x8fbfffff).w(this, FUNC(beathead_state::vram_bulk_w));
+ map(0x8fff8000, 0x8fff8003).writeonly().share("vram_bulk_latch");
+ map(0x9e280000, 0x9e2fffff).w(this, FUNC(beathead_state::vram_copy_w));
+}
diff --git a/src/mame/drivers/bebox.cpp b/src/mame/drivers/bebox.cpp
index b98731e6378..a43fa382d5b 100644
--- a/src/mame/drivers/bebox.cpp
+++ b/src/mame/drivers/bebox.cpp
@@ -32,41 +32,42 @@
READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237_2->read(space, offset / 2); }
WRITE8_MEMBER(bebox_state::at_dma8237_1_w) { m_dma8237_2->write(space, offset / 2, data); }
-ADDRESS_MAP_START(bebox_state::bebox_mem)
- AM_RANGE(0x7FFFF0F0, 0x7FFFF0F7) AM_READWRITE(bebox_cpu0_imask_r, bebox_cpu0_imask_w )
- AM_RANGE(0x7FFFF1F0, 0x7FFFF1F7) AM_READWRITE(bebox_cpu1_imask_r, bebox_cpu1_imask_w )
- AM_RANGE(0x7FFFF2F0, 0x7FFFF2F7) AM_READ(bebox_interrupt_sources_r )
- AM_RANGE(0x7FFFF3F0, 0x7FFFF3F7) AM_READWRITE(bebox_crossproc_interrupts_r, bebox_crossproc_interrupts_w )
- AM_RANGE(0x7FFFF4F0, 0x7FFFF4F7) AM_WRITE(bebox_processor_resets_w )
-
- AM_RANGE(0x80000000, 0x8000001F) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffffffffffffU )
- AM_RANGE(0x80000020, 0x8000003F) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0xffffffffffffffffU )
- AM_RANGE(0x80000040, 0x8000005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffffffffffffU )
- AM_RANGE(0x80000060, 0x8000006F) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffffffffffffffffU )
- AM_RANGE(0x80000070, 0x8000007F) AM_DEVREADWRITE8("rtc", mc146818_device, read, write , 0xffffffffffffffffU )
- AM_RANGE(0x80000080, 0x8000009F) AM_READWRITE8(bebox_page_r, bebox_page_w, 0xffffffffffffffffU )
- AM_RANGE(0x800000A0, 0x800000BF) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffffffffffffU )
- AM_RANGE(0x800000C0, 0x800000DF) AM_READWRITE8(at_dma8237_1_r, at_dma8237_1_w, 0xffffffffffffffffU)
- AM_RANGE(0x800001F0, 0x800001F7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffffffffffffU )
- AM_RANGE(0x800002F8, 0x800002FF) AM_DEVREADWRITE8( "ns16550_1", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU )
- AM_RANGE(0x80000380, 0x80000387) AM_DEVREADWRITE8( "ns16550_2", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU )
- AM_RANGE(0x80000388, 0x8000038F) AM_DEVREADWRITE8( "ns16550_3", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU )
- AM_RANGE(0x800003b0, 0x800003bf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03b0_r, port_03b0_w, 0xffffffffffffffffU)
- AM_RANGE(0x800003c0, 0x800003cf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03c0_r, port_03c0_w, 0xffffffffffffffffU)
- AM_RANGE(0x800003d0, 0x800003df) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03d0_r, port_03d0_w, 0xffffffffffffffffU)
- AM_RANGE(0x800003F0, 0x800003F7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffffffffffffU )
- AM_RANGE(0x800003F0, 0x800003F7) AM_DEVICE8( "smc37c78", smc37c78_device, map, 0xffffffffffffffffU )
- AM_RANGE(0x800003F8, 0x800003FF) AM_DEVREADWRITE8( "ns16550_0",ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU )
- AM_RANGE(0x80000480, 0x8000048F) AM_READWRITE8(bebox_80000480_r, bebox_80000480_w, 0xffffffffffffffffU )
- AM_RANGE(0x80000CF8, 0x80000CFF) AM_DEVREADWRITE("pcibus", pci_bus_device, read_64be, write_64be )
+void bebox_state::bebox_mem(address_map &map)
+{
+ map(0x7FFFF0F0, 0x7FFFF0F7).rw(this, FUNC(bebox_state::bebox_cpu0_imask_r), FUNC(bebox_state::bebox_cpu0_imask_w));
+ map(0x7FFFF1F0, 0x7FFFF1F7).rw(this, FUNC(bebox_state::bebox_cpu1_imask_r), FUNC(bebox_state::bebox_cpu1_imask_w));
+ map(0x7FFFF2F0, 0x7FFFF2F7).r(this, FUNC(bebox_state::bebox_interrupt_sources_r));
+ map(0x7FFFF3F0, 0x7FFFF3F7).rw(this, FUNC(bebox_state::bebox_crossproc_interrupts_r), FUNC(bebox_state::bebox_crossproc_interrupts_w));
+ map(0x7FFFF4F0, 0x7FFFF4F7).w(this, FUNC(bebox_state::bebox_processor_resets_w));
+
+ map(0x80000000, 0x8000001F).rw(m_dma8237_1, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x80000020, 0x8000003F).rw(m_pic8259_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x80000040, 0x8000005f).rw(m_pit8254, FUNC(pit8254_device::read), FUNC(pit8254_device::write));
+ map(0x80000060, 0x8000006F).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w));
+ map(0x80000070, 0x8000007F).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+ map(0x80000080, 0x8000009F).rw(this, FUNC(bebox_state::bebox_page_r), FUNC(bebox_state::bebox_page_w));
+ map(0x800000A0, 0x800000BF).rw(m_pic8259_2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x800000C0, 0x800000DF).rw(this, FUNC(bebox_state::at_dma8237_1_r), FUNC(bebox_state::at_dma8237_1_w));
+ map(0x800001F0, 0x800001F7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x800002F8, 0x800002FF).rw("ns16550_1", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x80000380, 0x80000387).rw("ns16550_2", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x80000388, 0x8000038F).rw("ns16550_3", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x800003b0, 0x800003bf).rw("vga", FUNC(cirrus_gd5428_device::port_03b0_r), FUNC(cirrus_gd5428_device::port_03b0_w));
+ map(0x800003c0, 0x800003cf).rw("vga", FUNC(cirrus_gd5428_device::port_03c0_r), FUNC(cirrus_gd5428_device::port_03c0_w));
+ map(0x800003d0, 0x800003df).rw("vga", FUNC(cirrus_gd5428_device::port_03d0_r), FUNC(cirrus_gd5428_device::port_03d0_w));
+ map(0x800003F0, 0x800003F7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+ map(0x800003F0, 0x800003F7).m(m_smc37c78, FUNC(smc37c78_device::map));
+ map(0x800003F8, 0x800003FF).rw("ns16550_0", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x80000480, 0x8000048F).rw(this, FUNC(bebox_state::bebox_80000480_r), FUNC(bebox_state::bebox_80000480_w));
+ map(0x80000CF8, 0x80000CFF).rw(m_pcibus, FUNC(pci_bus_device::read_64be), FUNC(pci_bus_device::write_64be));
//AM_RANGE(0x800042E8, 0x800042EF) AM_DEVWRITE8("cirrus", cirrus_device, cirrus_42E8_w, 0xffffffffffffffffU )
- AM_RANGE(0xBFFFFFF0, 0xBFFFFFFF) AM_READ(bebox_interrupt_ack_r )
- AM_RANGE(0xC00A0000, 0xC00BFFFF) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_r, mem_w, 0xffffffffffffffffU )
- AM_RANGE(0xC1000000, 0xC11FFFFF) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_linear_r, mem_linear_w, 0xffffffffffffffffU )
- AM_RANGE(0xFFF00000, 0xFFF03FFF) AM_ROMBANK("bank2")
- AM_RANGE(0xFFF04000, 0xFFFFFFFF) AM_READWRITE8(bebox_flash_r, bebox_flash_w, 0xffffffffffffffffU )
-ADDRESS_MAP_END
+ map(0xBFFFFFF0, 0xBFFFFFFF).r(this, FUNC(bebox_state::bebox_interrupt_ack_r));
+ map(0xC00A0000, 0xC00BFFFF).rw("vga", FUNC(cirrus_gd5428_device::mem_r), FUNC(cirrus_gd5428_device::mem_w));
+ map(0xC1000000, 0xC11FFFFF).rw("vga", FUNC(cirrus_gd5428_device::mem_linear_r), FUNC(cirrus_gd5428_device::mem_linear_w));
+ map(0xFFF00000, 0xFFF03FFF).bankr("bank2");
+ map(0xFFF04000, 0xFFFFFFFF).rw(this, FUNC(bebox_state::bebox_flash_r), FUNC(bebox_state::bebox_flash_w));
+}
// The following is a gross hack to let the BeBox boot ROM identify the processors correctly.
// This needs to be done in a better way if someone comes up with one.
@@ -82,11 +83,12 @@ READ64_MEMBER(bebox_state::bb_slave_64be_r)
return m_pcibus->read_64be(space, offset, mem_mask);
}
-ADDRESS_MAP_START(bebox_state::bebox_slave_mem)
- AM_IMPORT_FROM(bebox_mem)
- AM_RANGE(0x80000cf8, 0x80000cff) AM_READ(bb_slave_64be_r)
- AM_RANGE(0x80000cf8, 0x80000cff) AM_DEVWRITE("pcibus", pci_bus_device, write_64be )
-ADDRESS_MAP_END
+void bebox_state::bebox_slave_mem(address_map &map)
+{
+ bebox_mem(map);
+ map(0x80000cf8, 0x80000cff).r(this, FUNC(bebox_state::bb_slave_64be_r));
+ map(0x80000cf8, 0x80000cff).w(m_pcibus, FUNC(pci_bus_device::write_64be));
+}
#define BYTE_REVERSE32(x) (((x >> 24) & 0xff) | \
((x >> 8) & 0xff00) | \
diff --git a/src/mame/drivers/beehive.cpp b/src/mame/drivers/beehive.cpp
index 67a47ffffbe..1ca364f58bd 100644
--- a/src/mame/drivers/beehive.cpp
+++ b/src/mame/drivers/beehive.cpp
@@ -67,20 +67,22 @@ WRITE8_MEMBER(beehive_state::beehive_62_w)
m_keyline = data;
}
-ADDRESS_MAP_START(beehive_state::beehive_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x17ff ) AM_ROM
- AM_RANGE( 0x8000, 0x8fff ) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(beehive_state::beehive_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x11, 0x11) AM_READ_PORT("DIPS")
- AM_RANGE(0x60, 0x60) AM_READ(beehive_60_r)
- AM_RANGE(0x61, 0x61) AM_READ_PORT("MODIFIERS")
- AM_RANGE(0x62, 0x62) AM_WRITE(beehive_62_w)
-ADDRESS_MAP_END
+void beehive_state::beehive_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x17ff).rom();
+ map(0x8000, 0x8fff).ram().share("videoram");
+}
+
+void beehive_state::beehive_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x11, 0x11).portr("DIPS");
+ map(0x60, 0x60).r(this, FUNC(beehive_state::beehive_60_r));
+ map(0x61, 0x61).portr("MODIFIERS");
+ map(0x62, 0x62).w(this, FUNC(beehive_state::beehive_62_w));
+}
/* Input ports */
static INPUT_PORTS_START( beehive )
diff --git a/src/mame/drivers/beezer.cpp b/src/mame/drivers/beezer.cpp
index e8c91fd7838..ad78b0f5588 100644
--- a/src/mame/drivers/beezer.cpp
+++ b/src/mame/drivers/beezer.cpp
@@ -133,38 +133,41 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(beezer_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xcfff) AM_DEVICE("sysbank", address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xdfff) AM_ROM AM_REGION("maincpu", 0x0000) AM_WRITE(bankswitch_w) // g1
- AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION("maincpu", 0x1000) // g3
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x2000) // g5
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(beezer_state::banked_map)
- AM_RANGE(0x0600, 0x0600) AM_MIRROR(0x1ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0800, 0x080f) AM_MIRROR(0x1f0) AM_WRITE(palette_w)
- AM_RANGE(0x0a00, 0x0a00) AM_MIRROR(0x1ff) AM_READ(line_r)
- AM_RANGE(0x0e00, 0x0e0f) AM_MIRROR(0x1f0) AM_DEVREADWRITE("via_u6", via6522_device, read, write)
- AM_RANGE(0x1000, 0x1fff) AM_ROMBANK("rombank_f1")
- AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("rombank_f3")
- AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("rombank_e1")
- AM_RANGE(0x4000, 0x4fff) AM_ROMBANK("rombank_e3")
- AM_RANGE(0x5000, 0x5fff) AM_ROMBANK("rombank_e5")
- AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("rombank_f5")
- AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("rombank_f7")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(beezer_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM // 0d
- AM_RANGE(0x0800, 0x0fff) AM_RAM // 2d, optional (can be rom)
- AM_RANGE(0x1000, 0x1007) AM_MIRROR(0x07f8) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via_u18", via6522_device, read, write)
- AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_WRITE(dac_w)
+void beezer_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).ram().share("videoram");
+ map(0xc000, 0xcfff).m(m_sysbank, FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xdfff).rom().region("maincpu", 0x0000).w(this, FUNC(beezer_state::bankswitch_w)); // g1
+ map(0xe000, 0xefff).rom().region("maincpu", 0x1000); // g3
+ map(0xf000, 0xffff).rom().region("maincpu", 0x2000); // g5
+}
+
+void beezer_state::banked_map(address_map &map)
+{
+ map(0x0600, 0x0600).mirror(0x1ff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x0800, 0x080f).mirror(0x1f0).w(this, FUNC(beezer_state::palette_w));
+ map(0x0a00, 0x0a00).mirror(0x1ff).r(this, FUNC(beezer_state::line_r));
+ map(0x0e00, 0x0e0f).mirror(0x1f0).rw("via_u6", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x1000, 0x1fff).bankr("rombank_f1");
+ map(0x2000, 0x2fff).bankr("rombank_f3");
+ map(0x3000, 0x3fff).bankr("rombank_e1");
+ map(0x4000, 0x4fff).bankr("rombank_e3");
+ map(0x5000, 0x5fff).bankr("rombank_e5");
+ map(0x6000, 0x6fff).bankr("rombank_f5");
+ map(0x7000, 0x7fff).bankr("rombank_f7");
+}
+
+void beezer_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); // 0d
+ map(0x0800, 0x0fff).ram(); // 2d, optional (can be rom)
+ map(0x1000, 0x1007).mirror(0x07f8).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0x1800, 0x180f).mirror(0x07f0).rw(m_via_audio, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x8000, 0x8003).mirror(0x1ffc).w(this, FUNC(beezer_state::dac_w));
// AM_RANGE(0xa000, 0xbfff) AM_ROM // 2d (can be ram, unpopulated)
// AM_RANGE(0xc000, 0xdfff) AM_ROM // 4d (unpopulated)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) // 6d
-ADDRESS_MAP_END
+ map(0xe000, 0xffff).rom().region("audiocpu", 0); // 6d
+}
//**************************************************************************
diff --git a/src/mame/drivers/belatra.cpp b/src/mame/drivers/belatra.cpp
index 357a2f33ed9..2bf1b93fe68 100644
--- a/src/mame/drivers/belatra.cpp
+++ b/src/mame/drivers/belatra.cpp
@@ -62,9 +62,10 @@ protected:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(belatra_state::belatra_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_ROM
-ADDRESS_MAP_END
+void belatra_state::belatra_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rom();
+}
static INPUT_PORTS_START( belatra )
INPUT_PORTS_END
diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp
index 3fe6f08e68b..2f2092fddac 100644
--- a/src/mame/drivers/berzerk.cpp
+++ b/src/mame/drivers/berzerk.cpp
@@ -604,25 +604,27 @@ void berzerk_state::sound_reset()
*
*************************************/
-ADDRESS_MAP_START(berzerk_state::berzerk_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(magicram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void berzerk_state::berzerk_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x0bff).mirror(0x0400).ram().share("nvram");
+ map(0x1000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x7fff).ram().w(this, FUNC(berzerk_state::magicram_w)).share("videoram");
+ map(0x8000, 0x87ff).mirror(0x3800).ram().share("colorram");
+ map(0xc000, 0xffff).noprw();
+}
-ADDRESS_MAP_START(berzerk_state::frenzy_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(magicram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xcfff) AM_ROM
- AM_RANGE(0xf800, 0xfbff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void berzerk_state::frenzy_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x7fff).ram().w(this, FUNC(berzerk_state::magicram_w)).share("videoram");
+ map(0x8000, 0x87ff).mirror(0x3800).ram().share("colorram");
+ map(0xc000, 0xcfff).rom();
+ map(0xf800, 0xfbff).mirror(0x0400).ram().share("nvram");
+}
@@ -632,30 +634,31 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(berzerk_state::berzerk_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_NOP
- AM_RANGE(0x40, 0x47) AM_READWRITE(audio_r, audio_w)
- AM_RANGE(0x48, 0x48) AM_READ_PORT("P1") AM_WRITENOP
- AM_RANGE(0x49, 0x49) AM_READ_PORT("SYSTEM") AM_WRITENOP
- AM_RANGE(0x4a, 0x4a) AM_READ_PORT("P2") AM_WRITENOP
- AM_RANGE(0x4b, 0x4b) AM_READNOP AM_WRITE(magicram_control_w)
- AM_RANGE(0x4c, 0x4c) AM_READWRITE(nmi_enable_r, nmi_enable_w)
- AM_RANGE(0x4d, 0x4d) AM_READWRITE(nmi_disable_r, nmi_disable_w)
- AM_RANGE(0x4e, 0x4e) AM_READ(intercept_v256_r) AM_WRITENOP // note reading from here should clear pending frame interrupts, see zfb-1.tiff 74ls74 at 3D pin 13 /CLR
- AM_RANGE(0x4f, 0x4f) AM_READNOP AM_WRITE(irq_enable_w)
- AM_RANGE(0x50, 0x57) AM_NOP /* second sound board, initialized but not used */
- AM_RANGE(0x58, 0x5f) AM_NOP
- AM_RANGE(0x60, 0x60) AM_MIRROR(0x18) AM_READ_PORT("F3") AM_WRITENOP
- AM_RANGE(0x61, 0x61) AM_MIRROR(0x18) AM_READ_PORT("F2") AM_WRITENOP
- AM_RANGE(0x62, 0x62) AM_MIRROR(0x18) AM_READ_PORT("F6") AM_WRITENOP
- AM_RANGE(0x63, 0x63) AM_MIRROR(0x18) AM_READ_PORT("F5") AM_WRITENOP
- AM_RANGE(0x64, 0x64) AM_MIRROR(0x18) AM_READ_PORT("F4") AM_WRITENOP
- AM_RANGE(0x65, 0x65) AM_MIRROR(0x18) AM_READ_PORT("SW2") AM_WRITENOP
- AM_RANGE(0x66, 0x66) AM_MIRROR(0x18) AM_READWRITE(led_off_r, led_off_w)
- AM_RANGE(0x67, 0x67) AM_MIRROR(0x18) AM_READWRITE(led_on_r, led_on_w)
- AM_RANGE(0x80, 0xff) AM_NOP
-ADDRESS_MAP_END
+void berzerk_state::berzerk_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).noprw();
+ map(0x40, 0x47).rw(this, FUNC(berzerk_state::audio_r), FUNC(berzerk_state::audio_w));
+ map(0x48, 0x48).portr("P1").nopw();
+ map(0x49, 0x49).portr("SYSTEM").nopw();
+ map(0x4a, 0x4a).portr("P2").nopw();
+ map(0x4b, 0x4b).nopr().w(this, FUNC(berzerk_state::magicram_control_w));
+ map(0x4c, 0x4c).rw(this, FUNC(berzerk_state::nmi_enable_r), FUNC(berzerk_state::nmi_enable_w));
+ map(0x4d, 0x4d).rw(this, FUNC(berzerk_state::nmi_disable_r), FUNC(berzerk_state::nmi_disable_w));
+ map(0x4e, 0x4e).r(this, FUNC(berzerk_state::intercept_v256_r)).nopw(); // note reading from here should clear pending frame interrupts, see zfb-1.tiff 74ls74 at 3D pin 13 /CLR
+ map(0x4f, 0x4f).nopr().w(this, FUNC(berzerk_state::irq_enable_w));
+ map(0x50, 0x57).noprw(); /* second sound board, initialized but not used */
+ map(0x58, 0x5f).noprw();
+ map(0x60, 0x60).mirror(0x18).portr("F3").nopw();
+ map(0x61, 0x61).mirror(0x18).portr("F2").nopw();
+ map(0x62, 0x62).mirror(0x18).portr("F6").nopw();
+ map(0x63, 0x63).mirror(0x18).portr("F5").nopw();
+ map(0x64, 0x64).mirror(0x18).portr("F4").nopw();
+ map(0x65, 0x65).mirror(0x18).portr("SW2").nopw();
+ map(0x66, 0x66).mirror(0x18).rw(this, FUNC(berzerk_state::led_off_r), FUNC(berzerk_state::led_off_w));
+ map(0x67, 0x67).mirror(0x18).rw(this, FUNC(berzerk_state::led_on_r), FUNC(berzerk_state::led_on_w));
+ map(0x80, 0xff).noprw();
+}
diff --git a/src/mame/drivers/besta.cpp b/src/mame/drivers/besta.cpp
index 8b7c3bcf4ee..ea84bb7d332 100644
--- a/src/mame/drivers/besta.cpp
+++ b/src/mame/drivers/besta.cpp
@@ -102,21 +102,22 @@ void besta_state::kbd_put(u8 data)
m_term_data = data;
}
-ADDRESS_MAP_START(besta_state::besta_mem)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // local bus DRAM, 4MB
+void besta_state::besta_mem(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("p_ram"); // local bus DRAM, 4MB
// AM_RANGE(0x08010000, 0x08011fff) AM_RAM // unknown -- accessed by cp31dssp
// AM_RANGE(0xfca03500, 0xfca0350f) AM_READWRITE8(iscsi_reg_r, iscsi_reg_w, 0xffffffff)
- AM_RANGE(0xff000000, 0xff00ffff) AM_ROM AM_REGION("user1", 0) // actual mapping is up to 0xff03ffff
- AM_RANGE(0xff040000, 0xff07ffff) AM_RAM // onboard SRAM
+ map(0xff000000, 0xff00ffff).rom().region("user1", 0); // actual mapping is up to 0xff03ffff
+ map(0xff040000, 0xff07ffff).ram(); // onboard SRAM
// AM_RANGE(0xff800000, 0xff80001f) AM_DEVREADWRITE8("mpcc", mpcc68561_t, reg_r, reg_w, 0xffffffff)
- AM_RANGE(0xff800000, 0xff80001f) AM_READWRITE8(mpcc_reg_r, mpcc_reg_w, 0xffffffff) // console
- AM_RANGE(0xff800200, 0xff800237) AM_DEVREADWRITE8 ("pit2", pit68230_device, read, write, 0xffffffff)
+ map(0xff800000, 0xff80001f).rw(this, FUNC(besta_state::mpcc_reg_r), FUNC(besta_state::mpcc_reg_w)); // console
+ map(0xff800200, 0xff800237).rw(m_pit2, FUNC(pit68230_device::read), FUNC(pit68230_device::write));
// AM_RANGE(0xff800400, 0xff800xxx) // ??? -- shows up in cp31dssp log
// AM_RANGE(0xff800800, 0xff800xxx) // 68153 BIM
// AM_RANGE(0xff800a00, 0xff800xxx) // 62421 RTC
- AM_RANGE(0xff800c00, 0xff800c37) AM_DEVREADWRITE8 ("pit1", pit68230_device, read, write, 0xffffffff)
+ map(0xff800c00, 0xff800c37).rw(m_pit1, FUNC(pit68230_device::read), FUNC(pit68230_device::write));
// AM_RANGE(0xff800e00, 0xff800xxx) // PIT3?
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( besta )
diff --git a/src/mame/drivers/bestleag.cpp b/src/mame/drivers/bestleag.cpp
index 9a3031a9748..4fe0780db7d 100644
--- a/src/mame/drivers/bestleag.cpp
+++ b/src/mame/drivers/bestleag.cpp
@@ -250,25 +250,26 @@ WRITE16_MEMBER(bestleag_state::oki_bank_w)
/* Memory Map */
-ADDRESS_MAP_START(bestleag_state::bestleag_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0d2000, 0x0d3fff) AM_NOP // left over from the original game (only read / written in memory test)
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
- AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
- AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE(txram_w) AM_SHARE("txram")
- AM_RANGE(0x0f8000, 0x0f800b) AM_RAM AM_SHARE("vregs")
- AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2")
- AM_RANGE(0x300016, 0x300017) AM_READ_PORT("DSWA")
- AM_RANGE(0x300018, 0x300019) AM_READ_PORT("DSWB")
- AM_RANGE(0x30001c, 0x30001d) AM_WRITE(oki_bank_w)
- AM_RANGE(0x30001e, 0x30001f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void bestleag_state::bestleag_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0d2000, 0x0d3fff).noprw(); // left over from the original game (only read / written in memory test)
+ map(0x0e0000, 0x0e3fff).ram().w(this, FUNC(bestleag_state::bgram_w)).share("bgram");
+ map(0x0e8000, 0x0ebfff).ram().w(this, FUNC(bestleag_state::fgram_w)).share("fgram");
+ map(0x0f0000, 0x0f3fff).ram().w(this, FUNC(bestleag_state::txram_w)).share("txram");
+ map(0x0f8000, 0x0f800b).ram().share("vregs");
+ map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x300010, 0x300011).portr("SYSTEM");
+ map(0x300012, 0x300013).portr("P1");
+ map(0x300014, 0x300015).portr("P2");
+ map(0x300016, 0x300017).portr("DSWA");
+ map(0x300018, 0x300019).portr("DSWB");
+ map(0x30001c, 0x30001d).w(this, FUNC(bestleag_state::oki_bank_w));
+ map(0x30001f, 0x30001f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x304000, 0x304001).nopw();
+ map(0xfe0000, 0xffffff).ram();
+}
#define BESTLEAG_PLAYER_INPUT( player ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) PORT_8WAY \
diff --git a/src/mame/drivers/beta.cpp b/src/mame/drivers/beta.cpp
index 1995b4d3950..fb7e06d64bb 100644
--- a/src/mame/drivers/beta.cpp
+++ b/src/mame/drivers/beta.cpp
@@ -104,11 +104,12 @@ private:
/* Memory Maps */
-ADDRESS_MAP_START(beta_state::beta_mem)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_new_device, ram_map)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_new_device, io_map)
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x7800) AM_ROM
-ADDRESS_MAP_END
+void beta_state::beta_mem(address_map &map)
+{
+ map(0x0000, 0x007f).mirror(0x7f00).m(M6532_TAG, FUNC(mos6532_new_device::ram_map));
+ map(0x0080, 0x00ff).mirror(0x7f00).m(M6532_TAG, FUNC(mos6532_new_device::io_map));
+ map(0x8000, 0x87ff).mirror(0x7800).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp
index 925b1b2059a..8a6768fea69 100644
--- a/src/mame/drivers/bfcobra.cpp
+++ b/src/mame/drivers/bfcobra.cpp
@@ -1262,31 +1262,34 @@ void bfcobra_state::machine_reset()
***************************************************************************/
-ADDRESS_MAP_START(bfcobra_state::z80_prog_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank4")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank1")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank2")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bfcobra_state::z80_io_map)
-ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x23) AM_READWRITE(chipset_r, chipset_w)
- AM_RANGE(0x24, 0x25) AM_DEVWRITE("acia6850_0", acia6850_device, write)
- AM_RANGE(0x26, 0x27) AM_DEVREAD("acia6850_0", acia6850_device, read)
- AM_RANGE(0x30, 0x30) AM_READ(fdctrl_r)
- AM_RANGE(0x31, 0x31) AM_READWRITE(fddata_r, fdctrl_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(rombank_w)
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("ramdac", ramdac_device, pal_r, pal_w)
- AM_RANGE(0x52, 0x52) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
- AM_RANGE(0x53, 0x53) AM_DEVWRITE("ramdac", ramdac_device, index_r_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bfcobra_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void bfcobra_state::z80_prog_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank4");
+ map(0x4000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xbfff).bankrw("bank2");
+ map(0xc000, 0xffff).bankrw("bank3");
+}
+
+void bfcobra_state::z80_io_map(address_map &map)
+{
+map.global_mask(0xff);
+ map(0x00, 0x23).rw(this, FUNC(bfcobra_state::chipset_r), FUNC(bfcobra_state::chipset_w));
+ map(0x24, 0x25).w(m_acia6850_0, FUNC(acia6850_device::write));
+ map(0x26, 0x27).r(m_acia6850_0, FUNC(acia6850_device::read));
+ map(0x30, 0x30).r(this, FUNC(bfcobra_state::fdctrl_r));
+ map(0x31, 0x31).rw(this, FUNC(bfcobra_state::fddata_r), FUNC(bfcobra_state::fdctrl_w));
+ map(0x40, 0x40).w(this, FUNC(bfcobra_state::rombank_w));
+ map(0x50, 0x50).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x51, 0x51).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w));
+ map(0x52, 0x52).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x53, 0x53).w("ramdac", FUNC(ramdac_device::index_r_w));
+}
+
+
+void bfcobra_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
/***************************************************************************
@@ -1398,25 +1401,26 @@ WRITE8_MEMBER(bfcobra_state::upd_w)
m_upd7759->start_w(data & 0x40 ? 0 : 1);
}
-ADDRESS_MAP_START(bfcobra_state::m6809_prog_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x2000) AM_RAM // W 'B', 6F
- AM_RANGE(0x2200, 0x2200) AM_RAM // W 'F'
- AM_RANGE(0x2600, 0x2600) AM_READWRITE(meter_r, meter_w)
- AM_RANGE(0x2800, 0x2800) AM_RAM // W
- AM_RANGE(0x2A00, 0x2A02) AM_READWRITE(latch_r, latch_w)
- AM_RANGE(0x2E00, 0x2E00) AM_READ(int_latch_r)
- AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x3201, 0x3201) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x3404, 0x3405) AM_DEVREADWRITE("acia6850_1", acia6850_device, read, write)
- AM_RANGE(0x3406, 0x3407) AM_DEVREADWRITE("acia6850_2", acia6850_device, read, write)
+void bfcobra_state::m6809_prog_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x2000).ram(); // W 'B', 6F
+ map(0x2200, 0x2200).ram(); // W 'F'
+ map(0x2600, 0x2600).rw(this, FUNC(bfcobra_state::meter_r), FUNC(bfcobra_state::meter_w));
+ map(0x2800, 0x2800).ram(); // W
+ map(0x2A00, 0x2A02).rw(this, FUNC(bfcobra_state::latch_r), FUNC(bfcobra_state::latch_w));
+ map(0x2E00, 0x2E00).r(this, FUNC(bfcobra_state::int_latch_r));
+ map(0x3001, 0x3001).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x3201, 0x3201).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x3404, 0x3405).rw(m_acia6850_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x3406, 0x3407).rw(m_acia6850_2, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
// AM_RANGE(0x3408, 0x3408) AM_NOP
// AM_RANGE(0x340A, 0x340A) AM_NOP
// AM_RANGE(0x3600, 0x3600) AM_NOP
- AM_RANGE(0x3801, 0x3801) AM_READWRITE(upd_r, upd_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* Watchdog */
-ADDRESS_MAP_END
+ map(0x3801, 0x3801).rw(this, FUNC(bfcobra_state::upd_r), FUNC(bfcobra_state::upd_w));
+ map(0x8000, 0xffff).rom();
+ map(0xf000, 0xf000).nopw(); /* Watchdog */
+}
static INPUT_PORTS_START( bfcobra )
PORT_START("STROBE0")
diff --git a/src/mame/drivers/bfm_ad5.cpp b/src/mame/drivers/bfm_ad5.cpp
index 604262efb9a..342e5a778c7 100644
--- a/src/mame/drivers/bfm_ad5.cpp
+++ b/src/mame/drivers/bfm_ad5.cpp
@@ -59,15 +59,16 @@ DRIVER_INIT_MEMBER(adder5_state,ad5)
}
-ADDRESS_MAP_START(adder5_state::ad5_map)
- AM_RANGE(0x00000000, 0x00ffffff) AM_ROM
- AM_RANGE(0x01000000, 0x0100ffff) AM_RAM
- AM_RANGE(0x40000000, 0x40000fff) AM_RAM
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM
- AM_RANGE(0x80800000, 0x8080ffff) AM_RAM
-
- AM_RANGE(0xffff0000, 0xffff03ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR
-ADDRESS_MAP_END
+void adder5_state::ad5_map(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).rom();
+ map(0x01000000, 0x0100ffff).ram();
+ map(0x40000000, 0x40000fff).ram();
+ map(0x80000000, 0x8000ffff).ram();
+ map(0x80800000, 0x8080ffff).ram();
+
+ map(0xffff0000, 0xffff03ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR
+}
INPUT_PORTS_START( bfm_ad5 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/bfm_sc1.cpp b/src/mame/drivers/bfm_sc1.cpp
index a225b4c4ded..b3b0b562529 100644
--- a/src/mame/drivers/bfm_sc1.cpp
+++ b/src/mame/drivers/bfm_sc1.cpp
@@ -670,65 +670,68 @@ void bfm_sc1_state::machine_reset()
// scorpion1 board memory map ///////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
-ADDRESS_MAP_START(bfm_sc1_state::sc1_base)
+void bfm_sc1_state::sc1_base(address_map &map)
+{
- AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_SHARE("nvram") //8k RAM
- AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 2+3 latch
- AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch
- AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch
+ map(0x0000, 0x1FFF).ram().share("nvram"); //8k RAM
+ map(0x2000, 0x21FF).w(this, FUNC(bfm_sc1_state::reel34_w)); // reel 2+3 latch
+ map(0x2200, 0x23FF).w(this, FUNC(bfm_sc1_state::reel12_w)); // reel 1+2 latch
+ map(0x2400, 0x25FF).w(this, FUNC(bfm_sc1_state::vfd_w)); // vfd latch
- AM_RANGE(0x2600, 0x27FF) AM_READWRITE(mmtr_r,mmtr_w) // mechanical meters
- AM_RANGE(0x2800, 0x2800) AM_READWRITE(triac_r,triac_w) // payslide triacs
+ map(0x2600, 0x27FF).rw(this, FUNC(bfm_sc1_state::mmtr_r), FUNC(bfm_sc1_state::mmtr_w)); // mechanical meters
+ map(0x2800, 0x2800).rw(this, FUNC(bfm_sc1_state::triac_r), FUNC(bfm_sc1_state::triac_w)); // payslide triacs
- AM_RANGE(0x2A00, 0x2A00) AM_READWRITE(mux1latch_r,mux1latch_w) // mux1
- AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux1datlo_r,mux1datlo_w)
- AM_RANGE(0x2A02, 0x2A02) AM_READWRITE(mux1dathi_r,mux1dathi_w)
+ map(0x2A00, 0x2A00).rw(this, FUNC(bfm_sc1_state::mux1latch_r), FUNC(bfm_sc1_state::mux1latch_w)); // mux1
+ map(0x2A01, 0x2A01).rw(this, FUNC(bfm_sc1_state::mux1datlo_r), FUNC(bfm_sc1_state::mux1datlo_w));
+ map(0x2A02, 0x2A02).rw(this, FUNC(bfm_sc1_state::mux1dathi_r), FUNC(bfm_sc1_state::mux1dathi_w));
- AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch
+ map(0x2E00, 0x2E00).r(this, FUNC(bfm_sc1_state::irqlatch_r)); // irq latch
- AM_RANGE(0x3001, 0x3001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("aysnd", ay8910_device, address_w)
+ map(0x3001, 0x3001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x3001, 0x3001).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x3101, 0x3201).w("aysnd", FUNC(ay8910_device::address_w));
- AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w) // MC6850 status register
- AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w) // MC6850 data register
+ map(0x3406, 0x3406).rw(this, FUNC(bfm_sc1_state::aciastat_r), FUNC(bfm_sc1_state::aciactrl_w)); // MC6850 status register
+ map(0x3407, 0x3407).rw(this, FUNC(bfm_sc1_state::aciadata_r), FUNC(bfm_sc1_state::aciadata_w)); // MC6850 data register
- AM_RANGE(0x3408, 0x3408) AM_READWRITE(mux2latch_r,mux2latch_w) // mux2
- AM_RANGE(0x3409, 0x3409) AM_READWRITE(mux2datlo_r,mux2datlo_w)
- AM_RANGE(0x340A, 0x340A) AM_READWRITE(mux2dathi_r,mux2dathi_w)
+ map(0x3408, 0x3408).rw(this, FUNC(bfm_sc1_state::mux2latch_r), FUNC(bfm_sc1_state::mux2latch_w)); // mux2
+ map(0x3409, 0x3409).rw(this, FUNC(bfm_sc1_state::mux2datlo_r), FUNC(bfm_sc1_state::mux2datlo_w));
+ map(0x340A, 0x340A).rw(this, FUNC(bfm_sc1_state::mux2dathi_r), FUNC(bfm_sc1_state::mux2dathi_w));
- AM_RANGE(0x3600, 0x3600) AM_WRITE(bankswitch_w) // write bank
- AM_RANGE(0x3800, 0x39FF) AM_WRITE(reel56_w) // reel 5+6 latch
+ map(0x3600, 0x3600).w(this, FUNC(bfm_sc1_state::bankswitch_w)); // write bank
+ map(0x3800, 0x39FF).w(this, FUNC(bfm_sc1_state::reel56_w)); // reel 5+6 latch
- AM_RANGE(0x4000, 0x5FFF) AM_ROM // 8k ROM
- AM_RANGE(0x6000, 0x7FFF) AM_ROMBANK("bank1") // 8k paged ROM (4 pages)
- AM_RANGE(0x8000, 0xFFFF) AM_ROM AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) // 32k ROM
+ map(0x4000, 0x5FFF).rom(); // 8k ROM
+ map(0x6000, 0x7FFF).bankr("bank1"); // 8k paged ROM (4 pages)
+ map(0x8000, 0xFFFF).rom().w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 32k ROM
-ADDRESS_MAP_END
+}
/////////////////////////////////////////////////////////////////////////////////////
// scorpion1 board + adder2 expansion memory map ////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
-ADDRESS_MAP_START(bfm_sc1_state::sc1_adder2)
- AM_IMPORT_FROM( sc1_base )
+void bfm_sc1_state::sc1_adder2(address_map &map)
+{
+ sc1_base(map);
- AM_RANGE(0x3E00, 0x3E00) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_ctrl_r,vid_uart_ctrl_w) // video uart control reg read
- AM_RANGE(0x3E01, 0x3E01) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_rx_r,vid_uart_tx_w) // video uart receive reg
-ADDRESS_MAP_END
+ map(0x3E00, 0x3E00).rw("adder2", FUNC(bfm_adder2_device::vid_uart_ctrl_r), FUNC(bfm_adder2_device::vid_uart_ctrl_w)); // video uart control reg read
+ map(0x3E01, 0x3E01).rw("adder2", FUNC(bfm_adder2_device::vid_uart_rx_r), FUNC(bfm_adder2_device::vid_uart_tx_w)); // video uart receive reg
+}
/////////////////////////////////////////////////////////////////////////////////////
// scorpion1 board + upd7759 soundcard memory map ///////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
-ADDRESS_MAP_START(bfm_sc1_state::sc1_viper)
- AM_IMPORT_FROM( sc1_base )
+void bfm_sc1_state::sc1_viper(address_map &map)
+{
+ sc1_base(map);
- AM_RANGE(0x3404, 0x3404) AM_READ(dipcoin_r ) // coin input on gamecard
- AM_RANGE(0x3801, 0x3801) AM_READ(nec_r)
- AM_RANGE(0x3800, 0x39FF) AM_WRITE(nec_latch_w)
-ADDRESS_MAP_END
+ map(0x3404, 0x3404).r(this, FUNC(bfm_sc1_state::dipcoin_r)); // coin input on gamecard
+ map(0x3801, 0x3801).r(this, FUNC(bfm_sc1_state::nec_r));
+ map(0x3800, 0x39FF).w(this, FUNC(bfm_sc1_state::nec_latch_w));
+}
// input ports for scorpion1 board //////////////////////////////////////////////////
diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp
index 67642bdbe61..86a1cac5190 100644
--- a/src/mame/drivers/bfm_sc2.cpp
+++ b/src/mame/drivers/bfm_sc2.cpp
@@ -1529,50 +1529,51 @@ void bfm_sc2_novid_state::save_state()
}
-ADDRESS_MAP_START(bfm_sc2_state::sc2_basemap)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") //8k
-
- AM_RANGE(0x2300, 0x230B) AM_READ(mux_input_r)
- AM_RANGE(0x2300, 0x231F) AM_WRITE(mux_output_w)
- AM_RANGE(0x2320, 0x2323) AM_WRITE(dimas_w) /* ?unknown dim related */
-
- AM_RANGE(0x2324, 0x2324) AM_READWRITE(expansion_latch_r, expansion_latch_w)
- AM_RANGE(0x2325, 0x2327) AM_WRITE(unknown_w)
- AM_RANGE(0x2328, 0x2328) AM_WRITE(muxena_w)
- AM_RANGE(0x2329, 0x2329) AM_READWRITE(timerirqclr_r, timerirq_w)
- AM_RANGE(0x232A, 0x232D) AM_WRITE(unknown_w)
- AM_RANGE(0x232E, 0x232E) AM_READ(irqstatus_r)
-
- AM_RANGE(0x232F, 0x232F) AM_WRITE(coininhib_w)
- AM_RANGE(0x2330, 0x2330) AM_WRITE(payout_latch_w)
- AM_RANGE(0x2331, 0x2331) AM_WRITE(payout_triac_w)
- AM_RANGE(0x2332, 0x2332) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2333, 0x2333) AM_WRITE(mmtr_w)
- AM_RANGE(0x2334, 0x2335) AM_WRITE(unknown_w)
- AM_RANGE(0x2336, 0x2336) AM_WRITE(dimcnt_w)
- AM_RANGE(0x2337, 0x2337) AM_WRITE(volume_override_w)
- AM_RANGE(0x2338, 0x2338) AM_WRITE(payout_select_w)
- AM_RANGE(0x2339, 0x2339) AM_WRITE(unknown_w)
- AM_RANGE(0x2400, 0x2400) AM_READWRITE(uart1stat_r, uart1ctrl_w) /* mc6850 compatible uart */
- AM_RANGE(0x2500, 0x2500) AM_READWRITE(uart1data_r, uart1data_w)
- AM_RANGE(0x2600, 0x2600) AM_READWRITE(uart2stat_r, uart2ctrl_w) /* mc6850 compatible uart */
- AM_RANGE(0x2700, 0x2700) AM_READWRITE(uart2data_r, uart2data_w)
- AM_RANGE(0x2800, 0x2800) AM_WRITE(vfd1_bd1_w) /* vfd1 data */
- AM_RANGE(0x2900, 0x2900) AM_WRITE(vfd_reset_w) /* vfd1+vfd2 reset line */
- AM_RANGE(0x2A00, 0x2AFF) AM_WRITE(nec_latch_w)
- AM_RANGE(0x2B00, 0x2BFF) AM_WRITE(nec_reset_w)
- AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w) /* custom chip unlock */
- AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) /* write bank (rom page select for 0x6000 - 0x7fff ) */
+void bfm_sc2_state::sc2_basemap(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram"); //8k
+
+ map(0x2300, 0x230B).r(this, FUNC(bfm_sc2_state::mux_input_r));
+ map(0x2300, 0x231F).w(this, FUNC(bfm_sc2_state::mux_output_w));
+ map(0x2320, 0x2323).w(this, FUNC(bfm_sc2_state::dimas_w)); /* ?unknown dim related */
+
+ map(0x2324, 0x2324).rw(this, FUNC(bfm_sc2_state::expansion_latch_r), FUNC(bfm_sc2_state::expansion_latch_w));
+ map(0x2325, 0x2327).w(this, FUNC(bfm_sc2_state::unknown_w));
+ map(0x2328, 0x2328).w(this, FUNC(bfm_sc2_state::muxena_w));
+ map(0x2329, 0x2329).rw(this, FUNC(bfm_sc2_state::timerirqclr_r), FUNC(bfm_sc2_state::timerirq_w));
+ map(0x232A, 0x232D).w(this, FUNC(bfm_sc2_state::unknown_w));
+ map(0x232E, 0x232E).r(this, FUNC(bfm_sc2_state::irqstatus_r));
+
+ map(0x232F, 0x232F).w(this, FUNC(bfm_sc2_state::coininhib_w));
+ map(0x2330, 0x2330).w(this, FUNC(bfm_sc2_state::payout_latch_w));
+ map(0x2331, 0x2331).w(this, FUNC(bfm_sc2_state::payout_triac_w));
+ map(0x2332, 0x2332).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2333, 0x2333).w(this, FUNC(bfm_sc2_state::mmtr_w));
+ map(0x2334, 0x2335).w(this, FUNC(bfm_sc2_state::unknown_w));
+ map(0x2336, 0x2336).w(this, FUNC(bfm_sc2_state::dimcnt_w));
+ map(0x2337, 0x2337).w(this, FUNC(bfm_sc2_state::volume_override_w));
+ map(0x2338, 0x2338).w(this, FUNC(bfm_sc2_state::payout_select_w));
+ map(0x2339, 0x2339).w(this, FUNC(bfm_sc2_state::unknown_w));
+ map(0x2400, 0x2400).rw(this, FUNC(bfm_sc2_state::uart1stat_r), FUNC(bfm_sc2_state::uart1ctrl_w)); /* mc6850 compatible uart */
+ map(0x2500, 0x2500).rw(this, FUNC(bfm_sc2_state::uart1data_r), FUNC(bfm_sc2_state::uart1data_w));
+ map(0x2600, 0x2600).rw(this, FUNC(bfm_sc2_state::uart2stat_r), FUNC(bfm_sc2_state::uart2ctrl_w)); /* mc6850 compatible uart */
+ map(0x2700, 0x2700).rw(this, FUNC(bfm_sc2_state::uart2data_r), FUNC(bfm_sc2_state::uart2data_w));
+ map(0x2800, 0x2800).w(this, FUNC(bfm_sc2_state::vfd1_bd1_w)); /* vfd1 data */
+ map(0x2900, 0x2900).w(this, FUNC(bfm_sc2_state::vfd_reset_w)); /* vfd1+vfd2 reset line */
+ map(0x2A00, 0x2AFF).w(this, FUNC(bfm_sc2_state::nec_latch_w));
+ map(0x2B00, 0x2BFF).w(this, FUNC(bfm_sc2_state::nec_reset_w));
+ map(0x2C00, 0x2C00).w(this, FUNC(bfm_sc2_state::unlock_w)); /* custom chip unlock */
+ map(0x2D00, 0x2D01).w(m_ym2413, FUNC(ym2413_device::write));
+ map(0x2E00, 0x2E00).w(this, FUNC(bfm_sc2_state::bankswitch_w)); /* write bank (rom page select for 0x6000 - 0x7fff ) */
//AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) /* vfd2 data (not usually connected!)*/
- AM_RANGE(0x3FFE, 0x3FFE) AM_READ(direct_input_r )
- AM_RANGE(0x3FFF, 0x3FFF) AM_READ(coin_input_r)
- AM_RANGE(0x4000, 0x5FFF) AM_ROM
- AM_RANGE(0x4000, 0xFFFF) AM_WRITE(unknown_w) // contains unknown I/O registers
- AM_RANGE(0x6000, 0x7FFF) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xFFFF) AM_ROM
-ADDRESS_MAP_END
+ map(0x3FFE, 0x3FFE).r(this, FUNC(bfm_sc2_state::direct_input_r));
+ map(0x3FFF, 0x3FFF).r(this, FUNC(bfm_sc2_state::coin_input_r));
+ map(0x4000, 0x5FFF).rom();
+ map(0x4000, 0xFFFF).w(this, FUNC(bfm_sc2_state::unknown_w)); // contains unknown I/O registers
+ map(0x6000, 0x7FFF).bankr("bank1");
+ map(0x8000, 0xFFFF).rom();
+}
ADDRESS_MAP_START(bfm_sc2_novid_state::memmap_no_vid)
AM_IMPORT_FROM( sc2_basemap )
@@ -1584,20 +1585,21 @@ ADDRESS_MAP_END
// memory map for scorpion2 board video addon /////////////////////////////
-ADDRESS_MAP_START(bfm_sc2_vid_state::memmap_vid)
- AM_IMPORT_FROM( sc2_basemap )
+void bfm_sc2_vid_state::memmap_vid(address_map &map)
+{
+ sc2_basemap(map);
- AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_hop_r) // vfd status register
- AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_vid_w)
- AM_RANGE(0x2100, 0x21FF) AM_WRITENOP
- AM_RANGE(0x2200, 0x22FF) AM_WRITENOP
+ map(0x2000, 0x2000).r(this, FUNC(bfm_sc2_vid_state::vfd_status_hop_r)); // vfd status register
+ map(0x2000, 0x20FF).w(this, FUNC(bfm_sc2_vid_state::reel12_vid_w));
+ map(0x2100, 0x21FF).nopw();
+ map(0x2200, 0x22FF).nopw();
- AM_RANGE(0x3C00, 0x3C07) AM_READ(key_r)
- AM_RANGE(0x3C80, 0x3C80) AM_WRITE(e2ram_w)
+ map(0x3C00, 0x3C07).r(this, FUNC(bfm_sc2_vid_state::key_r));
+ map(0x3C80, 0x3C80).w(this, FUNC(bfm_sc2_vid_state::e2ram_w));
- AM_RANGE(0x3E00, 0x3E00) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_ctrl_r, vid_uart_ctrl_w) // video uart control reg
- AM_RANGE(0x3E01, 0x3E01) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_rx_r, vid_uart_tx_w) // video uart data reg
-ADDRESS_MAP_END
+ map(0x3E00, 0x3E00).rw("adder2", FUNC(bfm_adder2_device::vid_uart_ctrl_r), FUNC(bfm_adder2_device::vid_uart_ctrl_w)); // video uart control reg
+ map(0x3E01, 0x3E01).rw("adder2", FUNC(bfm_adder2_device::vid_uart_rx_r), FUNC(bfm_adder2_device::vid_uart_tx_w)); // video uart data reg
+}
// input ports for pyramid ////////////////////////////////////////
diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp
index 0cb777215bd..d71cf1ad59a 100644
--- a/src/mame/drivers/bfm_sc4.cpp
+++ b/src/mame/drivers/bfm_sc4.cpp
@@ -612,10 +612,11 @@ WRITE16_MEMBER(sc4_state::sc4_mem_w)
}
}
-ADDRESS_MAP_START(sc4_state::sc4_map)
- AM_RANGE(0x0000000, 0xffffff) AM_READWRITE(sc4_mem_r, sc4_mem_w)
- AM_RANGE(0x0000000, 0x0fffff) AM_READ(sc4_cs1_r) // technically we should be going through the cs handler, but this is always set to ROM, and assuming that is a lot faster
-ADDRESS_MAP_END
+void sc4_state::sc4_map(address_map &map)
+{
+ map(0x0000000, 0xffffff).rw(this, FUNC(sc4_state::sc4_mem_r), FUNC(sc4_state::sc4_mem_w));
+ map(0x0000000, 0x0fffff).r(this, FUNC(sc4_state::sc4_cs1_r)); // technically we should be going through the cs handler, but this is always set to ROM, and assuming that is a lot faster
+}
@@ -662,9 +663,10 @@ WRITE32_MEMBER(sc4_adder4_state::adder4_mem_w)
}
-ADDRESS_MAP_START(sc4_adder4_state::sc4_adder4_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(adder4_mem_r, adder4_mem_w)
-ADDRESS_MAP_END
+void sc4_adder4_state::sc4_adder4_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(sc4_adder4_state::adder4_mem_r), FUNC(sc4_adder4_state::adder4_mem_w));
+}
diff --git a/src/mame/drivers/bfm_sc5.cpp b/src/mame/drivers/bfm_sc5.cpp
index 1f44cc6939c..62e98f95867 100644
--- a/src/mame/drivers/bfm_sc5.cpp
+++ b/src/mame/drivers/bfm_sc5.cpp
@@ -80,78 +80,79 @@ WRITE8_MEMBER( bfm_sc5_state::sc5_mux2_w )
}
-ADDRESS_MAP_START(bfm_sc5_state::sc5_map)
+void bfm_sc5_state::sc5_map(address_map &map)
+{
// ROM (max size?)
- AM_RANGE(0x00000000, 0x002fffff) AM_ROM
+ map(0x00000000, 0x002fffff).rom();
// ?
- AM_RANGE(0x01000000, 0x0100ffff) AM_RAM
+ map(0x01000000, 0x0100ffff).ram();
#if 1
// dev1
- AM_RANGE(0x01010000, 0x010101ff) AM_READWRITE8(sc5_mux1_r, sc5_mux1_w,0xffffffff) // guess
+ map(0x01010000, 0x010101ff).rw(this, FUNC(bfm_sc5_state::sc5_mux1_r), FUNC(bfm_sc5_state::sc5_mux1_w)); // guess
#endif
#if 0
- AM_RANGE(0x01010200, 0x01010203) AM_WRITENOP
- AM_RANGE(0x01010210, 0x01010213) AM_WRITENOP
- AM_RANGE(0x01010220, 0x01010223) AM_WRITENOP
- AM_RANGE(0x01010230, 0x01010233) AM_WRITENOP
+ map(0x01010200, 0x01010203).nopw();
+ map(0x01010210, 0x01010213).nopw();
+ map(0x01010220, 0x01010223).nopw();
+ map(0x01010230, 0x01010233).nopw();
- AM_RANGE(0x01010280, 0x01010283) AM_WRITENOP
+ map(0x01010280, 0x01010283).nopw();
- AM_RANGE(0x010102a0, 0x010102a3) AM_WRITENOP
+ map(0x010102a0, 0x010102a3).nopw();
- AM_RANGE(0x010102c0, 0x010102c3) AM_WRITENOP
+ map(0x010102c0, 0x010102c3).nopw();
- AM_RANGE(0x010102f0, 0x010102f3) AM_WRITENOP
+ map(0x010102f0, 0x010102f3).nopw();
- AM_RANGE(0x01010300, 0x01010303) AM_WRITENOP
+ map(0x01010300, 0x01010303).nopw();
- AM_RANGE(0x01010330, 0x01010333) AM_WRITENOP
+ map(0x01010330, 0x01010333).nopw();
- AM_RANGE(0x01010360, 0x01010363) AM_WRITENOP
+ map(0x01010360, 0x01010363).nopw();
- AM_RANGE(0x01010380, 0x01010383) AM_WRITENOP
- AM_RANGE(0x01010390, 0x01010393) AM_WRITENOP
+ map(0x01010380, 0x01010383).nopw();
+ map(0x01010390, 0x01010393).nopw();
#endif
#if 1
// dev2
- AM_RANGE(0x01020000, 0x010201ff) AM_WRITE8(sc5_mux2_w,0xffffffff) // guess
+ map(0x01020000, 0x010201ff).w(this, FUNC(bfm_sc5_state::sc5_mux2_w)); // guess
#endif
#if 0
- AM_RANGE(0x01020200, 0x01020203) AM_WRITENOP
- AM_RANGE(0x01020210, 0x01020213) AM_WRITENOP
- AM_RANGE(0x01020220, 0x01020223) AM_WRITENOP
- AM_RANGE(0x01020230, 0x01020233) AM_WRITENOP
+ map(0x01020200, 0x01020203).nopw();
+ map(0x01020210, 0x01020213).nopw();
+ map(0x01020220, 0x01020223).nopw();
+ map(0x01020230, 0x01020233).nopw();
- AM_RANGE(0x01020280, 0x01020283) AM_WRITENOP
+ map(0x01020280, 0x01020283).nopw();
- AM_RANGE(0x010202a0, 0x010202a3) AM_WRITENOP
- AM_RANGE(0x010202b0, 0x010202b3) AM_WRITENOP
- AM_RANGE(0x010202c0, 0x010202c3) AM_WRITENOP
+ map(0x010202a0, 0x010202a3).nopw();
+ map(0x010202b0, 0x010202b3).nopw();
+ map(0x010202c0, 0x010202c3).nopw();
#endif
- AM_RANGE(0x010202F0, 0x010202F3) AM_READWRITE8(sc5_10202F0_r, sc5_10202F0_w, 0xffffffff)
+ map(0x010202F0, 0x010202F3).rw(this, FUNC(bfm_sc5_state::sc5_10202F0_r), FUNC(bfm_sc5_state::sc5_10202F0_w));
#if 1
- AM_RANGE(0x01020330, 0x01020333) AM_WRITENOP
+ map(0x01020330, 0x01020333).nopw();
- AM_RANGE(0x01020350, 0x01020353) AM_WRITENOP
- AM_RANGE(0x01020360, 0x01020363) AM_WRITENOP
- AM_RANGE(0x01020370, 0x01020373) AM_WRITENOP
+ map(0x01020350, 0x01020353).nopw();
+ map(0x01020360, 0x01020363).nopw();
+ map(0x01020370, 0x01020373).nopw();
- AM_RANGE(0x01020390, 0x01020393) AM_WRITENOP
+ map(0x01020390, 0x01020393).nopw();
#endif
- AM_RANGE(0x02000000, 0x0200001f) AM_WRITE16(sc5_duart_w, 0xffffffff)
+ map(0x02000000, 0x0200001f).w(this, FUNC(bfm_sc5_state::sc5_duart_w));
// ram
- AM_RANGE(0x40000000, 0x4000ffff) AM_RAM
+ map(0x40000000, 0x4000ffff).ram();
// peripherals
- AM_RANGE(0xffff0000, 0xffff03ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR
-ADDRESS_MAP_END
+ map(0xffff0000, 0xffff03ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR
+}
INPUT_PORTS_START( bfm_sc5 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/bfm_swp.cpp b/src/mame/drivers/bfm_swp.cpp
index 3cf477b0cbe..8833281136c 100644
--- a/src/mame/drivers/bfm_swp.cpp
+++ b/src/mame/drivers/bfm_swp.cpp
@@ -182,10 +182,11 @@ WRITE32_MEMBER(bfm_swp_state::bfm_swp_mem_w)
-ADDRESS_MAP_START(bfm_swp_state::bfm_swp_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(bfm_swp_mem_r, bfm_swp_mem_w)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
-ADDRESS_MAP_END
+void bfm_swp_state::bfm_swp_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(bfm_swp_state::bfm_swp_mem_r), FUNC(bfm_swp_state::bfm_swp_mem_w));
+ map(0x00000000, 0x000fffff).rom();
+}
static INPUT_PORTS_START( bfm_swp )
diff --git a/src/mame/drivers/bfmsys83.cpp b/src/mame/drivers/bfmsys83.cpp
index e46f8cff074..5b4e3c65649 100644
--- a/src/mame/drivers/bfmsys83.cpp
+++ b/src/mame/drivers/bfmsys83.cpp
@@ -24,9 +24,10 @@ public:
-ADDRESS_MAP_START(bfmsys83_state::memmap)
- AM_RANGE(0x4000, 0xffff) AM_ROM // 32K ROM
-ADDRESS_MAP_END
+void bfmsys83_state::memmap(address_map &map)
+{
+ map(0x4000, 0xffff).rom(); // 32K ROM
+}
static INPUT_PORTS_START( bfmsys83 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/bfmsys85.cpp b/src/mame/drivers/bfmsys85.cpp
index 73db8a2256b..7819d48b2bb 100644
--- a/src/mame/drivers/bfmsys85.cpp
+++ b/src/mame/drivers/bfmsys85.cpp
@@ -356,34 +356,35 @@ void bfmsys85_state::machine_start()
// memory map for bellfruit system85 board ////////////////////////////////
-ADDRESS_MAP_START(bfmsys85_state::memmap)
+void bfmsys85_state::memmap(address_map &map)
+{
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") //8k RAM
- AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 3+4 latch
- AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch
- AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch
+ map(0x0000, 0x1fff).ram().share("nvram"); //8k RAM
+ map(0x2000, 0x21FF).w(this, FUNC(bfmsys85_state::reel34_w)); // reel 3+4 latch
+ map(0x2200, 0x23FF).w(this, FUNC(bfmsys85_state::reel12_w)); // reel 1+2 latch
+ map(0x2400, 0x25FF).w(this, FUNC(bfmsys85_state::vfd_w)); // vfd latch
- AM_RANGE(0x2600, 0x27FF) AM_READWRITE(mmtr_r,mmtr_w)// mechanical meter latch
- AM_RANGE(0x2800, 0x2800) AM_READ(triac_r) // payslide triacs
- AM_RANGE(0x2800, 0x29FF) AM_WRITE(triac_w) // triacs
+ map(0x2600, 0x27FF).rw(this, FUNC(bfmsys85_state::mmtr_r), FUNC(bfmsys85_state::mmtr_w));// mechanical meter latch
+ map(0x2800, 0x2800).r(this, FUNC(bfmsys85_state::triac_r)); // payslide triacs
+ map(0x2800, 0x29FF).w(this, FUNC(bfmsys85_state::triac_w)); // triacs
- AM_RANGE(0x2A00, 0x2A00) AM_READWRITE(mux_data_r,mux_data_w)// mux
- AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux_ctrl_r,mux_ctrl_w)// mux status register
- AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch ( MC6850 / timer )
+ map(0x2A00, 0x2A00).rw(this, FUNC(bfmsys85_state::mux_data_r), FUNC(bfmsys85_state::mux_data_w));// mux
+ map(0x2A01, 0x2A01).rw(this, FUNC(bfmsys85_state::mux_ctrl_r), FUNC(bfmsys85_state::mux_ctrl_w));// mux status register
+ map(0x2E00, 0x2E00).r(this, FUNC(bfmsys85_state::irqlatch_r)); // irq latch ( MC6850 / timer )
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x3001, 0x3001) AM_READNOP //sound latch
- AM_RANGE(0x3200, 0x3200) AM_DEVWRITE("aysnd", ay8910_device, address_w)
+ map(0x3000, 0x3000).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x3001, 0x3001).nopr(); //sound latch
+ map(0x3200, 0x3200).w("aysnd", FUNC(ay8910_device::address_w));
- AM_RANGE(0x3402, 0x3403) AM_DEVWRITE("acia6850_0", acia6850_device, write)
- AM_RANGE(0x3406, 0x3407) AM_DEVREAD("acia6850_0", acia6850_device, read)
+ map(0x3402, 0x3403).w(m_acia6850_0, FUNC(acia6850_device::write));
+ map(0x3406, 0x3407).r(m_acia6850_0, FUNC(acia6850_device::read));
- AM_RANGE(0x3600, 0x3600) AM_WRITE(mux_enable_w) // mux enable
+ map(0x3600, 0x3600).w(this, FUNC(bfmsys85_state::mux_enable_w)); // mux enable
- AM_RANGE(0x4000, 0xffff) AM_ROM // 48K ROM
- AM_RANGE(0x8000, 0xFFFF) AM_WRITE(watchdog_w) // kick watchdog
+ map(0x4000, 0xffff).rom(); // 48K ROM
+ map(0x8000, 0xFFFF).w(this, FUNC(bfmsys85_state::watchdog_w)); // kick watchdog
-ADDRESS_MAP_END
+}
// machine driver for system85 board //////////////////////////////////////
diff --git a/src/mame/drivers/bgt.cpp b/src/mame/drivers/bgt.cpp
index 8431c0bfc97..1b85c9b4ad5 100644
--- a/src/mame/drivers/bgt.cpp
+++ b/src/mame/drivers/bgt.cpp
@@ -31,15 +31,17 @@ protected:
};
-ADDRESS_MAP_START(bgt_state::bgt_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void bgt_state::bgt_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0xf8000, 0xfffff).rom();
+}
-ADDRESS_MAP_START(bgt_state::bgt_io)
-ADDRESS_MAP_END
+void bgt_state::bgt_io(address_map &map)
+{
+}
diff --git a/src/mame/drivers/big10.cpp b/src/mame/drivers/big10.cpp
index fb39602ca3c..b9868123972 100644
--- a/src/mame/drivers/big10.cpp
+++ b/src/mame/drivers/big10.cpp
@@ -124,20 +124,22 @@ READ8_MEMBER(big10_state::mux_r)
* Memory Map *
**************************************/
-ADDRESS_MAP_START(big10_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(big10_state::main_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(mux_r) /* present in test mode */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") /* coins and service */
- AM_RANGE(0x98, 0x9b) AM_DEVREADWRITE("v9938", v9938_device, read, write)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r) /* Dip-Switches routes here. */
-ADDRESS_MAP_END
+void big10_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram().share("nvram");
+ map(0xf000, 0xffff).ram();
+}
+
+void big10_state::main_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(big10_state::mux_r)); /* present in test mode */
+ map(0x02, 0x02).portr("SYSTEM"); /* coins and service */
+ map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); /* Dip-Switches routes here. */
+}
/**************************************
diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp
index 3b7921d5b02..22f1ec6b0e1 100644
--- a/src/mame/drivers/bigbord2.cpp
+++ b/src/mame/drivers/bigbord2.cpp
@@ -322,33 +322,35 @@ WRITE8_MEMBER(bigbord2_state::syslatch2_w)
/* Memory Maps */
-ADDRESS_MAP_START(bigbord2_state::bigbord2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bankr")
- AM_RANGE(0x1000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAMBANK("bankv")
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("banka")
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bigbord2_state::bigbord2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) // u16
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // u37 has issues
- AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // u21
- AM_RANGE(0x8c, 0x8f) AM_DEVREADWRITE("dma", z80dma_device, read, write) // u62
- AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("proglatch", ls259_device, write_nibble_d3) // u41 - eprom programming port
- AM_RANGE(0xc4, 0xc7) AM_READ(status_port_r) // u11
- AM_RANGE(0xc8, 0xcb) AM_DEVWRITE("syslatch1", ls259_device, write_nibble_d3) // u14
- AM_RANGE(0xcc, 0xcf) AM_WRITE(syslatch2_w)
- AM_RANGE(0xd0, 0xd3) AM_READ(kbd_r) // u1
- AM_RANGE(0xd4, 0xd7) AM_DEVREADWRITE("fdc", mb8877_device, read, write) // u10
+void bigbord2_state::bigbord2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("bankr");
+ map(0x1000, 0x5fff).ram();
+ map(0x6000, 0x6fff).bankrw("bankv");
+ map(0x7000, 0x7fff).bankrw("banka");
+ map(0x8000, 0xffff).ram();
+}
+
+void bigbord2_state::bigbord2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x80, 0x83).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); // u16
+ map(0x84, 0x87).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // u37 has issues
+ map(0x88, 0x8b).rw(m_ctc2, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // u21
+ map(0x8c, 0x8f).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); // u62
+ map(0xc0, 0xc3).w("proglatch", FUNC(ls259_device::write_nibble_d3)); // u41 - eprom programming port
+ map(0xc4, 0xc7).r(this, FUNC(bigbord2_state::status_port_r)); // u11
+ map(0xc8, 0xcb).w(m_syslatch1, FUNC(ls259_device::write_nibble_d3)); // u14
+ map(0xcc, 0xcf).w(this, FUNC(bigbord2_state::syslatch2_w));
+ map(0xd0, 0xd3).r(this, FUNC(bigbord2_state::kbd_r)); // u1
+ map(0xd4, 0xd7).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write)); // u10
//AM_RANGE(0xd8, 0xdb) AM_READWRITE(portd8_r, portd8_w) // various external data ports; DB = centronics printer
- AM_RANGE(0xd9, 0xd9) AM_DEVWRITE("outlatch1", ls259_device, write_nibble_d3) // u96
- AM_RANGE(0xdc, 0xdc) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // u30
- AM_RANGE(0xdd, 0xdd) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+ map(0xd9, 0xd9).w("outlatch1", FUNC(ls259_device::write_nibble_d3)); // u96
+ map(0xdc, 0xdc).mirror(2).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); // u30
+ map(0xdd, 0xdd).mirror(2).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/bigevglf.cpp b/src/mame/drivers/bigevglf.cpp
index f0198bd7f03..e5fc7fc70c0 100644
--- a/src/mame/drivers/bigevglf.cpp
+++ b/src/mame/drivers/bigevglf.cpp
@@ -233,37 +233,40 @@ INPUT_PORTS_END
/*****************************************************************************/
/* Main CPU */
-ADDRESS_MAP_START(bigevglf_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_ROMBANK("bank1")
- AM_RANGE(0xd800, 0xdbff) AM_RAM AM_SHARE("share1") /* only half of the RAM is accessible, line a10 of IC73 (6116) is GNDed */
- AM_RANGE(0xe000, 0xe7ff) AM_WRITE(bigevglf_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram1") /* sprite 'templates' */
- AM_RANGE(0xf000, 0xf0ff) AM_READWRITE(bigevglf_vidram_r, bigevglf_vidram_w) /* 41464 (64kB * 8 chips), addressed using ports 1 and 5 */
- AM_RANGE(0xf840, 0xf8ff) AM_RAM AM_SHARE("spriteram2") /* spriteram (x,y,offset in spriteram1,palette) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bigevglf_state::bigevglf_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* video ram enable ???*/
- AM_RANGE(0x01, 0x01) AM_WRITE(bigevglf_gfxcontrol_w) /* plane select */
- AM_RANGE(0x02, 0x02) AM_WRITE(beg_banking_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(beg13_a_set_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(beg13_b_clr_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(bigevglf_vidram_addr_w) /* video banking (256 banks) for f000-f0ff area */
- AM_RANGE(0x06, 0x06) AM_READ(beg_status_r)
-ADDRESS_MAP_END
+void bigevglf_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).bankr("bank1");
+ map(0xd800, 0xdbff).ram().share("share1"); /* only half of the RAM is accessible, line a10 of IC73 (6116) is GNDed */
+ map(0xe000, 0xe7ff).w(this, FUNC(bigevglf_state::bigevglf_palette_w)).share("paletteram");
+ map(0xe800, 0xefff).writeonly().share("spriteram1"); /* sprite 'templates' */
+ map(0xf000, 0xf0ff).rw(this, FUNC(bigevglf_state::bigevglf_vidram_r), FUNC(bigevglf_state::bigevglf_vidram_w)); /* 41464 (64kB * 8 chips), addressed using ports 1 and 5 */
+ map(0xf840, 0xf8ff).ram().share("spriteram2"); /* spriteram (x,y,offset in spriteram1,palette) */
+}
+
+void bigevglf_state::bigevglf_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); /* video ram enable ???*/
+ map(0x01, 0x01).w(this, FUNC(bigevglf_state::bigevglf_gfxcontrol_w)); /* plane select */
+ map(0x02, 0x02).w(this, FUNC(bigevglf_state::beg_banking_w));
+ map(0x03, 0x03).w(this, FUNC(bigevglf_state::beg13_a_set_w));
+ map(0x04, 0x04).w(this, FUNC(bigevglf_state::beg13_b_clr_w));
+ map(0x05, 0x05).w(this, FUNC(bigevglf_state::bigevglf_vidram_addr_w)); /* video banking (256 banks) for f000-f0ff area */
+ map(0x06, 0x06).r(this, FUNC(bigevglf_state::beg_status_r));
+}
/*********************************************************************************/
/* Sub CPU */
-ADDRESS_MAP_START(bigevglf_state::sub_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1") /* shared with main CPU */
-ADDRESS_MAP_END
+void bigevglf_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x83ff).ram().share("share1"); /* shared with main CPU */
+}
READ8_MEMBER(bigevglf_state::sub_cpu_mcu_coin_port_r)
@@ -282,26 +285,27 @@ READ8_MEMBER(bigevglf_state::sub_cpu_mcu_coin_port_r)
m_mcu_coin_bit5; /* bit 0 and bit 1 - coin inputs */
}
-ADDRESS_MAP_START(bigevglf_state::bigevglf_sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("PORT00")
- AM_RANGE(0x01, 0x01) AM_READNOP
- AM_RANGE(0x02, 0x02) AM_READ(beg_trackball_x_r)
- AM_RANGE(0x03, 0x03) AM_READ(beg_trackball_y_r)
- AM_RANGE(0x04, 0x04) AM_READ(sub_cpu_mcu_coin_port_r)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW1")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2")
- AM_RANGE(0x07, 0x07) AM_READNOP
- AM_RANGE(0x08, 0x08) AM_WRITE(beg_port08_w) /* muxed port select + other unknown stuff */
- AM_RANGE(0x0b, 0x0b) AM_DEVREAD("bmcu", taito68705_mcu_device, data_r)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("bmcu", taito68705_mcu_device, data_w)
- AM_RANGE(0x0e, 0x0e) AM_WRITENOP /* 0-enable MCU, 1-keep reset line ASSERTED; D0 goes to the input of ls74 and the /Q of this ls74 goes to reset line on 68705 */
- AM_RANGE(0x10, 0x17) AM_WRITE(beg13_a_clr_w)
- AM_RANGE(0x18, 0x1f) AM_WRITE(beg13_b_set_w)
- AM_RANGE(0x20, 0x20) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write)
- AM_RANGE(0x21, 0x21) AM_READ(soundstate_r)
-ADDRESS_MAP_END
+void bigevglf_state::bigevglf_sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("PORT00");
+ map(0x01, 0x01).nopr();
+ map(0x02, 0x02).r(this, FUNC(bigevglf_state::beg_trackball_x_r));
+ map(0x03, 0x03).r(this, FUNC(bigevglf_state::beg_trackball_y_r));
+ map(0x04, 0x04).r(this, FUNC(bigevglf_state::sub_cpu_mcu_coin_port_r));
+ map(0x05, 0x05).portr("DSW1");
+ map(0x06, 0x06).portr("DSW2");
+ map(0x07, 0x07).nopr();
+ map(0x08, 0x08).w(this, FUNC(bigevglf_state::beg_port08_w)); /* muxed port select + other unknown stuff */
+ map(0x0b, 0x0b).r(m_bmcu, FUNC(taito68705_mcu_device::data_r));
+ map(0x0c, 0x0c).w(m_bmcu, FUNC(taito68705_mcu_device::data_w));
+ map(0x0e, 0x0e).nopw(); /* 0-enable MCU, 1-keep reset line ASSERTED; D0 goes to the input of ls74 and the /Q of this ls74 goes to reset line on 68705 */
+ map(0x10, 0x17).w(this, FUNC(bigevglf_state::beg13_a_clr_w));
+ map(0x18, 0x1f).w(this, FUNC(bigevglf_state::beg13_b_set_w));
+ map(0x20, 0x20).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x20, 0x20).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0x21, 0x21).r(this, FUNC(bigevglf_state::soundstate_r));
+}
@@ -309,21 +313,22 @@ ADDRESS_MAP_END
/*********************************************************************************/
/* Sound CPU */
-ADDRESS_MAP_START(bigevglf_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ym2149_device, address_data_w)
- AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
- AM_RANGE(0xce00, 0xce00) AM_WRITENOP
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
- AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* write to D800 sets bit 1 in status */
- AM_RANGE(0xda00, 0xda00) AM_READ(soundstate_r)
- AM_RANGE(0xda00, 0xda00) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>) // enable NMI
- AM_RANGE(0xdc00, 0xdc00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>) // disable NMI
- AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC & unknown read */
- AM_RANGE(0xe000, 0xefff) AM_READNOP /* space for diagnostics ROM */
-ADDRESS_MAP_END
+void bigevglf_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).w("aysnd", FUNC(ym2149_device::address_data_w));
+ map(0xca00, 0xca0d).w(m_msm, FUNC(msm5232_device::write));
+ map(0xcc00, 0xcc00).nopw();
+ map(0xce00, 0xce00).nopw();
+ map(0xd800, 0xd800).r("soundlatch1", FUNC(generic_latch_8_device::read));
+ map(0xd800, 0xd800).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* write to D800 sets bit 1 in status */
+ map(0xda00, 0xda00).r(this, FUNC(bigevglf_state::soundstate_r));
+ map(0xda00, 0xda00).w("soundnmi", FUNC(input_merger_device::in_set<1>)); // enable NMI
+ map(0xdc00, 0xdc00).w("soundnmi", FUNC(input_merger_device::in_clear<1>)); // disable NMI
+ map(0xde00, 0xde00).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC & unknown read */
+ map(0xe000, 0xefff).nopr(); /* space for diagnostics ROM */
+}
diff --git a/src/mame/drivers/bigstrkb.cpp b/src/mame/drivers/bigstrkb.cpp
index 95e020a292e..65c4580b291 100644
--- a/src/mame/drivers/bigstrkb.cpp
+++ b/src/mame/drivers/bigstrkb.cpp
@@ -39,50 +39,51 @@ lev 7 : 0x7c : 0000 05be - xxx
/* some regions might be too large */
-ADDRESS_MAP_START(bigstrkb_state::bigstrkb_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void bigstrkb_state::bigstrkb_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// AM_RANGE(0x0c0000, 0x0cffff) AM_READWRITE_LEGACY(megasys1_vregs_C_r, megasys1_vregs_C_w) AM_SHARE("megasys1_vregs")
- AM_RANGE(0x0C2004, 0x0C2005) AM_WRITENOP
- AM_RANGE(0x0C200C, 0x0C200d) AM_WRITENOP
- AM_RANGE(0x0C2104, 0x0C2105) AM_WRITENOP
- AM_RANGE(0x0C2108, 0x0C2109) AM_WRITENOP
- AM_RANGE(0x0C2200, 0x0C2201) AM_WRITENOP
- AM_RANGE(0x0C2208, 0x0C2209) AM_WRITENOP
- AM_RANGE(0x0c2308, 0x0c2309) AM_WRITENOP // bit 0 of DSW1 (flip screen) - use vregs
+ map(0x0C2004, 0x0C2005).nopw();
+ map(0x0C200C, 0x0C200d).nopw();
+ map(0x0C2104, 0x0C2105).nopw();
+ map(0x0C2108, 0x0C2109).nopw();
+ map(0x0C2200, 0x0C2201).nopw();
+ map(0x0C2208, 0x0C2209).nopw();
+ map(0x0c2308, 0x0c2309).nopw(); // bit 0 of DSW1 (flip screen) - use vregs
- AM_RANGE(0x0D0000, 0x0dffff) AM_RAM // 0xd2000 - 0xd3fff? 0xd8000?
+ map(0x0D0000, 0x0dffff).ram(); // 0xd2000 - 0xd3fff? 0xd8000?
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(videoram3_w) AM_SHARE("videoram3")
- AM_RANGE(0x0ec000, 0x0effff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
+ map(0x0e0000, 0x0e3fff).ram().w(this, FUNC(bigstrkb_state::videoram2_w)).share("videoram2");
+ map(0x0e8000, 0x0ebfff).ram().w(this, FUNC(bigstrkb_state::videoram3_w)).share("videoram3");
+ map(0x0ec000, 0x0effff).ram().w(this, FUNC(bigstrkb_state::videoram_w)).share("videoram");
- AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM
- AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0f8800, 0x0fffff) AM_RAM
+ map(0x0f0000, 0x0f7fff).ram();
+ map(0x0f8000, 0x0f87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0f8800, 0x0fffff).ram();
- AM_RANGE(0x1f0000, 0x1f7fff) AM_RAM
- AM_RANGE(0x1f8000, 0x1f87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1f8800, 0x1fffff) AM_RAM
+ map(0x1f0000, 0x1f7fff).ram();
+ map(0x1f8000, 0x1f87ff).ram().share("spriteram");
+ map(0x1f8800, 0x1fffff).ram();
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW0")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("P2")
- AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("P1")
- AM_RANGE(0x700020, 0x700027) AM_WRITEONLY AM_SHARE("vidreg1")
- AM_RANGE(0x700030, 0x700037) AM_WRITEONLY AM_SHARE("vidreg2")
+ map(0x700000, 0x700001).portr("DSW0");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700004, 0x700005).portr("SYSTEM");
+ map(0x70000a, 0x70000b).portr("P2");
+ map(0x70000c, 0x70000d).portr("P1");
+ map(0x700020, 0x700027).writeonly().share("vidreg1");
+ map(0x700030, 0x700037).writeonly().share("vidreg2");
- AM_RANGE(0xB00000, 0xB00001) AM_WRITENOP
+ map(0xB00000, 0xB00001).nopw();
- AM_RANGE(0xE00000, 0xE00001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xE00002, 0xE00003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
+ map(0xe00001, 0xe00001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe00003, 0xe00003).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0xE00008, 0xE00009) AM_WRITENOP
- AM_RANGE(0xE0000c, 0xE0000d) AM_WRITENOP
+ map(0xE00008, 0xE00009).nopw();
+ map(0xE0000c, 0xE0000d).nopw();
- AM_RANGE(0xF00000, 0xFFFFFF) AM_RAM
-ADDRESS_MAP_END
+ map(0xF00000, 0xFFFFFF).ram();
+}
#define BIGSTRKB_PLAYER_INPUT( player, start ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) PORT_8WAY \
diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp
index 18dda0e979e..4673efec2c1 100644
--- a/src/mame/drivers/binbug.cpp
+++ b/src/mame/drivers/binbug.cpp
@@ -113,18 +113,20 @@ WRITE_LINE_MEMBER( binbug_state::binbug_serial_w )
m_cass->output(state ? -1.0 : +1.0);
}
-ADDRESS_MAP_START(binbug_state::binbug_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x03ff) AM_ROM
- AM_RANGE( 0x0400, 0x77ff) AM_RAM
- AM_RANGE( 0x7800, 0x7bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0x7c00, 0x7fff) AM_RAM AM_SHARE("attribram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(binbug_state::binbug_data)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_WRITE(binbug_ctrl_w)
-ADDRESS_MAP_END
+void binbug_state::binbug_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x77ff).ram();
+ map(0x7800, 0x7bff).ram().share("videoram");
+ map(0x7c00, 0x7fff).ram().share("attribram");
+}
+
+void binbug_state::binbug_data(address_map &map)
+{
+ map.unmap_value_high();
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(this, FUNC(binbug_state::binbug_ctrl_w));
+}
/* Input ports */
static INPUT_PORTS_START( binbug )
@@ -437,25 +439,27 @@ private:
required_device<z80pio_device> m_pio;
};
-ADDRESS_MAP_START(dg680_state::dg680_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xcfff) AM_RAM
- AM_RANGE( 0xd000, 0xd7ff) AM_ROM
- AM_RANGE( 0xd800, 0xefff) AM_RAM
- AM_RANGE( 0xf000, 0xf3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0xf400, 0xf7ff) AM_RAM AM_SHARE("attribram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dg680_state::dg680_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x04,0x07) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
- AM_RANGE(0x08,0x08) AM_READWRITE(port08_r,port08_w) //SWP Control and Status
+void dg680_state::dg680_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).rom();
+ map(0xd800, 0xefff).ram();
+ map(0xf000, 0xf3ff).ram().share("videoram");
+ map(0xf400, 0xf7ff).ram().share("attribram");
+}
+
+void dg680_state::dg680_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x04, 0x07).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x08, 0x08).rw(this, FUNC(dg680_state::port08_r), FUNC(dg680_state::port08_w)); //SWP Control and Status
//AM_RANGE(0x09,0x09) parallel input port
// Optional AM9519 Programmable Interrupt Controller (port c = data, port d = control)
//AM_RANGE(0x0c,0x0d) AM_DEVREADWRITE("am9519", am9519_device, read, write)
-ADDRESS_MAP_END
+}
void dg680_state::machine_reset()
{
diff --git a/src/mame/drivers/bingo.cpp b/src/mame/drivers/bingo.cpp
index 3e9b400d578..00c3fe2d5c1 100644
--- a/src/mame/drivers/bingo.cpp
+++ b/src/mame/drivers/bingo.cpp
@@ -28,11 +28,12 @@ public:
};
-ADDRESS_MAP_START(bingo_state::bingo_map)
- AM_RANGE(0x0000, 0x7fff) AM_NOP
- AM_RANGE(0x0000, 0x1eff) AM_ROM
- AM_RANGE(0x1f00, 0x1fff) AM_RAM
-ADDRESS_MAP_END
+void bingo_state::bingo_map(address_map &map)
+{
+ map(0x0000, 0x7fff).noprw();
+ map(0x0000, 0x1eff).rom();
+ map(0x1f00, 0x1fff).ram();
+}
static INPUT_PORTS_START( bingo )
INPUT_PORTS_END
@@ -73,8 +74,9 @@ public:
};
-ADDRESS_MAP_START(seeben_state::seeben_map)
-ADDRESS_MAP_END
+void seeben_state::seeben_map(address_map &map)
+{
+}
static INPUT_PORTS_START( seeben )
INPUT_PORTS_END
@@ -114,11 +116,12 @@ public:
DECLARE_DRIVER_INIT(splin);
};
-ADDRESS_MAP_START(splin_state::splin_map)
- AM_RANGE(0x00000, 0x0bfff) AM_RAM
- AM_RANGE(0x0d900, 0x0d9ff) AM_RAM
- AM_RANGE(0xe0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void splin_state::splin_map(address_map &map)
+{
+ map(0x00000, 0x0bfff).ram();
+ map(0x0d900, 0x0d9ff).ram();
+ map(0xe0000, 0xfffff).rom();
+}
static INPUT_PORTS_START( splin )
INPUT_PORTS_END
diff --git a/src/mame/drivers/bingoc.cpp b/src/mame/drivers/bingoc.cpp
index 30377225a85..c3f9ee3e7b6 100644
--- a/src/mame/drivers/bingoc.cpp
+++ b/src/mame/drivers/bingoc.cpp
@@ -124,47 +124,50 @@ WRITE8_MEMBER(bingoc_state::sound_play_w)
// printf("%02x\n",data);
}
-ADDRESS_MAP_START(bingoc_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE8("uart1", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("uart1", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100008, 0x100009) AM_DEVREADWRITE8("uart2", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x10000a, 0x10000b) AM_DEVREADWRITE8("uart2", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100010, 0x100011) AM_DEVREADWRITE8("uart3", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x100012, 0x100013) AM_DEVREADWRITE8("uart3", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("uart4", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x10001a, 0x10001b) AM_DEVREADWRITE8("uart4", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100020, 0x100021) AM_DEVREADWRITE8("uart5", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x100022, 0x100023) AM_DEVREADWRITE8("uart5", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100028, 0x100029) AM_DEVREADWRITE8("uart6", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x10002a, 0x10002b) AM_DEVREADWRITE8("uart6", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100030, 0x100031) AM_DEVREADWRITE8("uart7", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x100032, 0x100033) AM_DEVREADWRITE8("uart7", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x100038, 0x100039) AM_DEVREADWRITE8("uart8", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x10003a, 0x10003b) AM_DEVREADWRITE8("uart8", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x180000, 0x18007f) AM_READ(unknown_r) //lamps?
+void bingoc_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100001, 0x100001).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x100003, 0x100003).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100009, 0x100009).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x10000b, 0x10000b).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100011, 0x100011).rw("uart3", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x100013, 0x100013).rw("uart3", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100019, 0x100019).rw("uart4", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x10001b, 0x10001b).rw("uart4", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100021, 0x100021).rw("uart5", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x100023, 0x100023).rw("uart5", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100029, 0x100029).rw("uart6", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x10002b, 0x10002b).rw("uart6", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100031, 0x100031).rw("uart7", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x100033, 0x100033).rw("uart7", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x100039, 0x100039).rw("uart8", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x10003b, 0x10003b).rw("uart8", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x180000, 0x18007f).r(this, FUNC(bingoc_state::unknown_r)); //lamps?
#if !SOUND_TEST
- AM_RANGE(0x180010, 0x180011) AM_WRITE(main_sound_latch_w) //WRONG there...
+ map(0x180010, 0x180011).w(this, FUNC(bingoc_state::main_sound_latch_w)); //WRONG there...
#endif
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bingoc_state::sound_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bingoc_state::sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITE(sound_play_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", upd7759_device, port_w)
+ map(0xff8000, 0xffffff).ram();
+}
+
+void bingoc_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void bingoc_state::sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).w(this, FUNC(bingoc_state::sound_play_w));
+ map(0x80, 0x80).w(m_upd7759, FUNC(upd7759_device::port_w));
#if !SOUND_TEST
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
#else
- AM_RANGE(0xc0, 0xc0) AM_READ(sound_test_r)
+ map(0xc0, 0xc0).r(this, FUNC(bingoc_state::sound_test_r));
#endif
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( bingoc )
diff --git a/src/mame/drivers/bingoman.cpp b/src/mame/drivers/bingoman.cpp
index e7e81f163d8..8f558926231 100644
--- a/src/mame/drivers/bingoman.cpp
+++ b/src/mame/drivers/bingoman.cpp
@@ -279,13 +279,15 @@ uint32_t bingoman_state::screen_update( screen_device &screen, bitmap_ind16 &bit
return 0;
}
-ADDRESS_MAP_START(bingoman_state::bingoman_prg_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
-ADDRESS_MAP_END
+void bingoman_state::bingoman_prg_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+}
-ADDRESS_MAP_START(bingoman_state::bingoman_io_map)
+void bingoman_state::bingoman_io_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( bingoman )
/* dummy active high structure */
diff --git a/src/mame/drivers/bingor.cpp b/src/mame/drivers/bingor.cpp
index e601024693f..1b840905c96 100644
--- a/src/mame/drivers/bingor.cpp
+++ b/src/mame/drivers/bingor.cpp
@@ -600,22 +600,25 @@ uint32_t bingor_state::screen_update_bingor(screen_device &screen, bitmap_rgb32
}
-ADDRESS_MAP_START(bingor_state::bingor_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM
- AM_RANGE(0x90000, 0x9ffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0xa0000, 0xaffff) AM_RAM AM_SHARE("blit_ram")
- AM_RANGE(0xa0300, 0xa031f) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") //wrong
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("boot_prg", 0)
-ADDRESS_MAP_END
+void bingor_state::bingor_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram();
+ map(0x90000, 0x9ffff).rom().region("gfx", 0);
+ map(0xa0000, 0xaffff).ram().share("blit_ram");
+ map(0xa0300, 0xa031f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); //wrong
+ map(0xf0000, 0xfffff).rom().region("boot_prg", 0);
+}
-ADDRESS_MAP_START(bingor_state::bingor2_map)
- AM_IMPORT_FROM(bingor_map)
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("boot_prg", 0) // banked?
-ADDRESS_MAP_END
+void bingor_state::bingor2_map(address_map &map)
+{
+ bingor_map(map);
+ map(0xe0000, 0xfffff).rom().region("boot_prg", 0); // banked?
+}
-ADDRESS_MAP_START(bingor_state::bingor_io)
- AM_RANGE(0x0100, 0x0103) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
-ADDRESS_MAP_END
+void bingor_state::bingor_io(address_map &map)
+{
+ map(0x0100, 0x0103).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+}
static INPUT_PORTS_START( bingor )
@@ -721,22 +724,24 @@ MACHINE_CONFIG_START(bingor_state::bingor2)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(bingor_state::vip2000_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM
- AM_RANGE(0x40000, 0x4ffff) AM_RAM AM_SHARE("blit_ram")
- AM_RANGE(0x40300, 0x4031f) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") //wrong
+void bingor_state::vip2000_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram();
+ map(0x40000, 0x4ffff).ram().share("blit_ram");
+ map(0x40300, 0x4031f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); //wrong
//AM_RANGE(0x50000, 0x5ffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0x60000, 0x60003) AM_DEVWRITE8("ymz", ymz284_device, address_data_w, 0x00ff)
- AM_RANGE(0x80000, 0xeffff) AM_DEVREADWRITE("flash", intelfsh16_device, read, write)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("boot_prg", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bingor_state::vip2000_io)
- AM_RANGE(0x0000, 0x0001) AM_READNOP // watchdog
- AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
- AM_RANGE(0x0100, 0x0101) AM_READWRITE8(fromslave_r, toslave_w, 0x00ff)
- AM_RANGE(0x0280, 0x0281) AM_WRITE(vip2000_outputs_w)
-ADDRESS_MAP_END
+ map(0x60000, 0x60003).w("ymz", FUNC(ymz284_device::address_data_w)).umask16(0x00ff);
+ map(0x80000, 0xeffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0xf0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void bingor_state::vip2000_io(address_map &map)
+{
+ map(0x0000, 0x0001).nopr(); // watchdog
+ map(0x0080, 0x009f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x0100, 0x0100).rw(this, FUNC(bingor_state::fromslave_r), FUNC(bingor_state::toslave_w));
+ map(0x0280, 0x0281).w(this, FUNC(bingor_state::vip2000_outputs_w));
+}
WRITE8_MEMBER(bingor_state::toslave_w)
{
@@ -763,14 +768,16 @@ WRITE16_MEMBER(bingor_state::vip2000_outputs_w)
m_slavecpu->set_input_line(MCS51_INT0_LINE, BIT(data, 15) ? CLEAR_LINE : ASSERT_LINE);
}
-ADDRESS_MAP_START(bingor_state::slave_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void bingor_state::slave_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(bingor_state::slave_io)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(toslave_r, fromslave_w)
- AM_RANGE(0xc000, 0xcfff) AM_RAM
-ADDRESS_MAP_END
+void bingor_state::slave_io(address_map &map)
+{
+ map(0x0000, 0x0000).rw(this, FUNC(bingor_state::toslave_r), FUNC(bingor_state::fromslave_w));
+ map(0xc000, 0xcfff).ram();
+}
MACHINE_CONFIG_START(bingor_state::vip2000)
MCFG_CPU_ADD("maincpu", I80186, XTAL(10'000'000))
diff --git a/src/mame/drivers/bingowav.cpp b/src/mame/drivers/bingowav.cpp
index 990e6b4e5b6..a66b29c8d1d 100644
--- a/src/mame/drivers/bingowav.cpp
+++ b/src/mame/drivers/bingowav.cpp
@@ -73,35 +73,39 @@ void bingowav_state::machine_start()
}
-ADDRESS_MAP_START(bingowav_state::bingowav_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x120000, 0x12001f) AM_DEVREADWRITE8("mainioh", te7750_device, read, write, 0xff00)
- AM_RANGE(0x120000, 0x12001f) AM_DEVREADWRITE8("mainiol", te7750_device, read, write, 0x00ff)
- AM_RANGE(0x140000, 0x140001) AM_READNOP
- AM_RANGE(0x150000, 0x150001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x150002, 0x150003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("maintmp", tmp68301_device, regs_r, regs_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bingowav_state::bingowav_audio_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xf200, 0xf200) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bingowav_state::bingowav_drive_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bingowav_state::bingowav_control_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP
-ADDRESS_MAP_END
+void bingowav_state::bingowav_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x120000, 0x12001f).rw("mainioh", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0xff00);
+ map(0x120000, 0x12001f).rw("mainiol", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff);
+ 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)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xf200, 0xf200).nopw();
+}
+
+void bingowav_state::bingowav_drive_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+}
+
+void bingowav_state::bingowav_control_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xf000, 0xf000).nopw();
+}
static INPUT_PORTS_START( bingowav )
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp
index 04a56ed1ef8..cd2041bb586 100644
--- a/src/mame/drivers/bionicc.cpp
+++ b/src/mame/drivers/bionicc.cpp
@@ -162,33 +162,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(bionicc_state::scanline)
*
*************************************/
-ADDRESS_MAP_START(bionicc_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM /* RAM? */
- AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfe0d00, 0xfe3fff) AM_RAM /* RAM? */
- AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(gfxctrl_w) /* + coin counters */
- AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("DSW")
- AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(scroll_w)
- AM_RANGE(0xfe8018, 0xfe8019) AM_WRITENOP // vblank irq ack?
- AM_RANGE(0xfe801a, 0xfe801b) AM_WRITE(mpu_trigger_w) /* ??? not sure, but looks like it */
- AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */
- AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */
- AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w) /* hack */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bionicc_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
+void bionicc_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0xfe0000, 0xfe07ff).ram(); /* RAM? */
+ map(0xfe0800, 0xfe0cff).ram().share("spriteram");
+ map(0xfe0d00, 0xfe3fff).ram(); /* RAM? */
+ map(0xfe4000, 0xfe4001).w(this, FUNC(bionicc_state::gfxctrl_w)); /* + coin counters */
+ map(0xfe4000, 0xfe4001).portr("SYSTEM");
+ map(0xfe4002, 0xfe4003).portr("DSW");
+ map(0xfe8010, 0xfe8017).w(this, FUNC(bionicc_state::scroll_w));
+ map(0xfe8018, 0xfe8019).nopw(); // vblank irq ack?
+ map(0xfe801a, 0xfe801b).w(this, FUNC(bionicc_state::mpu_trigger_w)); /* ??? not sure, but looks like it */
+ map(0xfec000, 0xfecfff).ram().w(this, FUNC(bionicc_state::txvideoram_w)).share("txvideoram");
+ map(0xff0000, 0xff3fff).ram().w(this, FUNC(bionicc_state::fgvideoram_w)).share("fgvideoram");
+ map(0xff4000, 0xff7fff).ram().w(this, FUNC(bionicc_state::bgvideoram_w)).share("bgvideoram");
+ map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffc000, 0xfffff7).ram(); /* working RAM */
+ map(0xfffff8, 0xfffff9).rw(this, FUNC(bionicc_state::hacked_soundcommand_r), FUNC(bionicc_state::hacked_soundcommand_w)); /* hack */
+ map(0xfffffa, 0xffffff).rw(this, FUNC(bionicc_state::hacked_controls_r), FUNC(bionicc_state::hacked_controls_w)); /* hack */
+}
+
+
+void bionicc_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc7ff).ram();
+}
/*************************************
diff --git a/src/mame/drivers/bishi.cpp b/src/mame/drivers/bishi.cpp
index 08c486ac048..575345bb880 100644
--- a/src/mame/drivers/bishi.cpp
+++ b/src/mame/drivers/bishi.cpp
@@ -144,25 +144,26 @@ READ16_MEMBER(bishi_state::bishi_K056832_rom_r)
return m_k056832->bishi_rom_word_r(space, ouroffs, mem_mask);
}
-ADDRESS_MAP_START(bishi_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x407fff) AM_RAM // Work RAM
- AM_RANGE(0x800000, 0x800001) AM_READWRITE(control_r, control_w)
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW")
- AM_RANGE(0x800006, 0x800007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x800008, 0x800009) AM_READ_PORT("INPUTS")
- AM_RANGE(0x810000, 0x810003) AM_WRITE(control2_w) // bank switch for K056832 character ROM test
- AM_RANGE(0x820000, 0x820001) AM_WRITENOP // lamps (see lamp test in service menu)
- AM_RANGE(0x830000, 0x83003f) AM_DEVWRITE("k056832", k056832_device, word_w)
- AM_RANGE(0x840000, 0x840007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS
- AM_RANGE(0x850000, 0x85001f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC
- AM_RANGE(0x870000, 0x8700ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2
- AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xb04000, 0xb047ff) AM_READ(bishi_mirror_r) // bug in the ram/rom test?
- AM_RANGE(0xc00000, 0xc01fff) AM_READ(bishi_K056832_rom_r)
-ADDRESS_MAP_END
+void bishi_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x407fff).ram(); // Work RAM
+ map(0x800000, 0x800001).rw(this, FUNC(bishi_state::control_r), FUNC(bishi_state::control_w));
+ map(0x800004, 0x800005).portr("DSW");
+ map(0x800006, 0x800007).portr("SYSTEM");
+ map(0x800008, 0x800009).portr("INPUTS");
+ map(0x810000, 0x810003).w(this, FUNC(bishi_state::control2_w)); // bank switch for K056832 character ROM test
+ map(0x820000, 0x820001).nopw(); // lamps (see lamp test in service menu)
+ map(0x830000, 0x83003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x840000, 0x840007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x850000, 0x85001f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC
+ map(0x870000, 0x8700ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); // PCU2
+ map(0x880000, 0x880003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00);
+ map(0xa00000, 0xa01fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // Graphic planes
+ map(0xb00000, 0xb03fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xb04000, 0xb047ff).r(this, FUNC(bishi_state::bishi_mirror_r)); // bug in the ram/rom test?
+ map(0xc00000, 0xc01fff).r(this, FUNC(bishi_state::bishi_K056832_rom_r));
+}
static INPUT_PORTS_START( bishi )
/* Currently, this "IN0" is not read */
diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp
index 274c95ce397..d4e87b632a2 100644
--- a/src/mame/drivers/bitgraph.cpp
+++ b/src/mame/drivers/bitgraph.cpp
@@ -170,40 +170,42 @@ private:
uint8_t m_ppu[4];
};
-ADDRESS_MAP_START(bitgraph_state::bitgrapha_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x007fff) AM_ROM
- AM_RANGE(0x010000, 0x010001) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, data_r, data_w, 0xff00) // HOST
- AM_RANGE(0x010002, 0x010003) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, status_r, control_w, 0xff00)
- AM_RANGE(0x010008, 0x010009) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, data_r, data_w, 0x00ff) // KEYBOARD
- AM_RANGE(0x01000a, 0x01000b) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x010010, 0x010011) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, data_r, data_w, 0x00ff) // DEBUGGER
- AM_RANGE(0x010012, 0x010013) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x010018, 0x010019) AM_DEVREADWRITE8(ACIA3_TAG, acia6850_device, data_r, data_w, 0x00ff) // POINTER
- AM_RANGE(0x01001a, 0x01001b) AM_DEVREADWRITE8(ACIA3_TAG, acia6850_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x010020, 0x010027) AM_READWRITE8(adlc_r, adlc_w, 0xff00)
- AM_RANGE(0x010028, 0x01002f) AM_READWRITE8(pia_r, pia_w, 0xff00) // EAROM, PSG
- AM_RANGE(0x010030, 0x010031) AM_WRITE(baud_write)
- AM_RANGE(0x3e0000, 0x3fffff) AM_RAM
-ADDRESS_MAP_END
+void bitgraph_state::bitgrapha_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x007fff).rom();
+ map(0x010000, 0x010000).rw(m_acia0, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // HOST
+ map(0x010002, 0x010002).rw(m_acia0, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x010009, 0x010009).rw(m_acia1, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // KEYBOARD
+ map(0x01000b, 0x01000b).rw(m_acia1, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x010011, 0x010011).rw(m_acia2, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // DEBUGGER
+ map(0x010013, 0x010013).rw(m_acia2, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x010019, 0x010019).rw(m_acia3, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // POINTER
+ map(0x01001b, 0x01001b).rw(m_acia3, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x010020, 0x010027).rw(this, FUNC(bitgraph_state::adlc_r), FUNC(bitgraph_state::adlc_w)).umask16(0xff00);
+ map(0x010028, 0x01002f).rw(this, FUNC(bitgraph_state::pia_r), FUNC(bitgraph_state::pia_w)).umask16(0xff00); // EAROM, PSG
+ map(0x010030, 0x010031).w(this, FUNC(bitgraph_state::baud_write));
+ map(0x3e0000, 0x3fffff).ram();
+}
-ADDRESS_MAP_START(bitgraph_state::bitgraphb_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x007fff) AM_ROM
- AM_RANGE(0x010000, 0x010001) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, data_r, data_w, 0xff00) // HOST
- AM_RANGE(0x010002, 0x010003) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, status_r, control_w, 0xff00)
- AM_RANGE(0x010008, 0x010009) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, data_r, data_w, 0x00ff) // KEYBOARD
- AM_RANGE(0x01000a, 0x01000b) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x010010, 0x010011) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, data_r, data_w, 0x00ff) // DEBUGGER
- AM_RANGE(0x010012, 0x010013) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x01001a, 0x01001b) AM_WRITE8(misccr_write, 0x00ff)
- AM_RANGE(0x010020, 0x010027) AM_READWRITE8(adlc_r, adlc_w, 0xff00)
- AM_RANGE(0x010028, 0x01002f) AM_READWRITE8(pia_r, pia_w, 0xff00) // EAROM, PSG
- AM_RANGE(0x010030, 0x010031) AM_WRITE(baud_write)
+void bitgraph_state::bitgraphb_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x007fff).rom();
+ map(0x010000, 0x010000).rw(m_acia0, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // HOST
+ map(0x010002, 0x010002).rw(m_acia0, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x010009, 0x010009).rw(m_acia1, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // KEYBOARD
+ map(0x01000b, 0x01000b).rw(m_acia1, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x010011, 0x010011).rw(m_acia2, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // DEBUGGER
+ map(0x010013, 0x010013).rw(m_acia2, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w));
+ map(0x01001b, 0x01001b).w(this, FUNC(bitgraph_state::misccr_write));
+ map(0x010020, 0x010027).rw(this, FUNC(bitgraph_state::adlc_r), FUNC(bitgraph_state::adlc_w)).umask16(0xff00);
+ map(0x010028, 0x01002f).rw(this, FUNC(bitgraph_state::pia_r), FUNC(bitgraph_state::pia_w)).umask16(0xff00); // EAROM, PSG
+ map(0x010030, 0x010031).w(this, FUNC(bitgraph_state::baud_write));
// AM_RANGE(0x010030, 0x010037) AM_READ8(ppu_read, 0x00ff)
- AM_RANGE(0x010038, 0x01003f) AM_WRITE8(ppu_write, 0x00ff)
- AM_RANGE(0x380000, 0x3fffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x010038, 0x01003f).w(this, FUNC(bitgraph_state::ppu_write)).umask16(0x00ff);
+ map(0x380000, 0x3fffff).ram();
+}
static INPUT_PORTS_START(bitgraph)
INPUT_PORTS_END
diff --git a/src/mame/drivers/bk.cpp b/src/mame/drivers/bk.cpp
index 1af4b29ef11..a85fef41078 100644
--- a/src/mame/drivers/bk.cpp
+++ b/src/mame/drivers/bk.cpp
@@ -22,34 +22,36 @@
/* Address maps */
-ADDRESS_MAP_START(bk_state::bk0010_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_RAM // RAM
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM AM_SHARE("video_ram") // Video RAM
- AM_RANGE( 0x8000, 0x9fff ) AM_ROM // ROM
- AM_RANGE( 0xa000, 0xbfff ) AM_ROM // ROM
- AM_RANGE( 0xc000, 0xdfff ) AM_ROM // ROM
- AM_RANGE( 0xe000, 0xfeff ) AM_ROM // ROM
- AM_RANGE( 0xffb0, 0xffb1 ) AM_READWRITE(bk_key_state_r,bk_key_state_w)
- AM_RANGE( 0xffb2, 0xffb3 ) AM_READ(bk_key_code_r)
- AM_RANGE( 0xffb4, 0xffb5 ) AM_READWRITE(bk_vid_scrool_r,bk_vid_scrool_w)
- AM_RANGE( 0xffce, 0xffcf ) AM_READWRITE(bk_key_press_r,bk_key_press_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bk_state::bk0010fd_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_RAM // RAM
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM AM_SHARE("video_ram") // Video RAM
- AM_RANGE( 0x8000, 0x9fff ) AM_ROM // ROM
- AM_RANGE( 0xa000, 0xdfff ) AM_RAM // RAM
- AM_RANGE( 0xe000, 0xfdff ) AM_ROM // ROM
- AM_RANGE( 0xfe58, 0xfe59 ) AM_READWRITE(bk_floppy_cmd_r,bk_floppy_cmd_w)
- AM_RANGE( 0xfe5a, 0xfe5b ) AM_READWRITE(bk_floppy_data_r,bk_floppy_data_w)
- AM_RANGE( 0xffb0, 0xffb1 ) AM_READWRITE(bk_key_state_r,bk_key_state_w)
- AM_RANGE( 0xffb2, 0xffb3 ) AM_READ(bk_key_code_r)
- AM_RANGE( 0xffb4, 0xffb5 ) AM_READWRITE(bk_vid_scrool_r,bk_vid_scrool_w)
- AM_RANGE( 0xffce, 0xffcf ) AM_READWRITE(bk_key_press_r,bk_key_press_w)
-ADDRESS_MAP_END
+void bk_state::bk0010_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram(); // RAM
+ map(0x4000, 0x7fff).ram().share("video_ram"); // Video RAM
+ map(0x8000, 0x9fff).rom(); // ROM
+ map(0xa000, 0xbfff).rom(); // ROM
+ map(0xc000, 0xdfff).rom(); // ROM
+ map(0xe000, 0xfeff).rom(); // ROM
+ map(0xffb0, 0xffb1).rw(this, FUNC(bk_state::bk_key_state_r), FUNC(bk_state::bk_key_state_w));
+ map(0xffb2, 0xffb3).r(this, FUNC(bk_state::bk_key_code_r));
+ map(0xffb4, 0xffb5).rw(this, FUNC(bk_state::bk_vid_scrool_r), FUNC(bk_state::bk_vid_scrool_w));
+ map(0xffce, 0xffcf).rw(this, FUNC(bk_state::bk_key_press_r), FUNC(bk_state::bk_key_press_w));
+}
+
+void bk_state::bk0010fd_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram(); // RAM
+ map(0x4000, 0x7fff).ram().share("video_ram"); // Video RAM
+ map(0x8000, 0x9fff).rom(); // ROM
+ map(0xa000, 0xdfff).ram(); // RAM
+ map(0xe000, 0xfdff).rom(); // ROM
+ map(0xfe58, 0xfe59).rw(this, FUNC(bk_state::bk_floppy_cmd_r), FUNC(bk_state::bk_floppy_cmd_w));
+ map(0xfe5a, 0xfe5b).rw(this, FUNC(bk_state::bk_floppy_data_r), FUNC(bk_state::bk_floppy_data_w));
+ map(0xffb0, 0xffb1).rw(this, FUNC(bk_state::bk_key_state_r), FUNC(bk_state::bk_key_state_w));
+ map(0xffb2, 0xffb3).r(this, FUNC(bk_state::bk_key_code_r));
+ map(0xffb4, 0xffb5).rw(this, FUNC(bk_state::bk_vid_scrool_r), FUNC(bk_state::bk_vid_scrool_w));
+ map(0xffce, 0xffcf).rw(this, FUNC(bk_state::bk_key_press_r), FUNC(bk_state::bk_key_press_w));
+}
/* Input ports */
static INPUT_PORTS_START( bk0010 )
diff --git a/src/mame/drivers/bking.cpp b/src/mame/drivers/bking.cpp
index 72e3195eef4..68507be9584 100644
--- a/src/mame/drivers/bking.cpp
+++ b/src/mame/drivers/bking.cpp
@@ -81,67 +81,71 @@ READ8_MEMBER(bking_state::bking3_mcu_status_r)
((CLEAR_LINE != m_bmcu->mcu_semaphore_r()) ? 0x02 : 0x00);
}
-ADDRESS_MAP_START(bking_state::bking_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(bking_playfield_w) AM_SHARE("playfield_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bking_state::bking_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w)
- AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
- AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
- AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
+void bking_state::bking_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x9000, 0x97ff).ram().w(this, FUNC(bking_state::bking_playfield_w)).share("playfield_ram");
+}
+
+void bking_state::bking_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(bking_state::bking_xld1_w));
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(bking_state::bking_yld1_w));
+ map(0x02, 0x02).portr("DSWA").w(this, FUNC(bking_state::bking_xld2_w));
+ map(0x03, 0x03).portr("DSWB").w(this, FUNC(bking_state::bking_yld2_w));
+ map(0x04, 0x04).portr("DSWC").w(this, FUNC(bking_state::bking_xld3_w));
+ map(0x05, 0x05).rw(this, FUNC(bking_state::bking_input_port_5_r), FUNC(bking_state::bking_yld3_w));
+ map(0x06, 0x06).rw(this, FUNC(bking_state::bking_input_port_6_r), FUNC(bking_state::bking_msk_w));
+ map(0x07, 0x07).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x08, 0x08).w(this, FUNC(bking_state::bking_cont1_w));
+ map(0x09, 0x09).w(this, FUNC(bking_state::bking_cont2_w));
+ map(0x0a, 0x0a).w(this, FUNC(bking_state::bking_cont3_w));
+ map(0x0b, 0x0b).w(this, FUNC(bking_state::bking_soundlatch_w));
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
- AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
- AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bking_state::bking3_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w)
- AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
- AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
- AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
+ map(0x0d, 0x0d).w(this, FUNC(bking_state::bking_hitclr_w));
+ map(0x07, 0x1f).r(this, FUNC(bking_state::bking_pos_r));
+}
+
+void bking_state::bking3_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(bking_state::bking_xld1_w));
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(bking_state::bking_yld1_w));
+ map(0x02, 0x02).portr("DSWA").w(this, FUNC(bking_state::bking_xld2_w));
+ map(0x03, 0x03).portr("DSWB").w(this, FUNC(bking_state::bking_yld2_w));
+ map(0x04, 0x04).portr("DSWC").w(this, FUNC(bking_state::bking_xld3_w));
+ map(0x05, 0x05).rw(this, FUNC(bking_state::bking_input_port_5_r), FUNC(bking_state::bking_yld3_w));
+ map(0x06, 0x06).rw(this, FUNC(bking_state::bking_input_port_6_r), FUNC(bking_state::bking_msk_w));
+ map(0x07, 0x07).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x08, 0x08).w(this, FUNC(bking_state::bking_cont1_w));
+ map(0x09, 0x09).w(this, FUNC(bking_state::bking_cont2_w));
+ map(0x0a, 0x0a).w(this, FUNC(bking_state::bking_cont3_w));
+ map(0x0b, 0x0b).w(this, FUNC(bking_state::bking_soundlatch_w));
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
- AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
- AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
- AM_RANGE(0x2f, 0x2f) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0x4f, 0x4f) AM_READWRITE(bking3_mcu_status_r, unk_w)
- AM_RANGE(0x60, 0x60) AM_READ(bking3_extrarom_r)
- AM_RANGE(0x6f, 0x6f) AM_READWRITE(bking3_ext_check_r, bking3_addr_h_w)
- AM_RANGE(0x8f, 0x8f) AM_WRITE(bking3_addr_l_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bking_state::bking_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2fff) AM_ROM //only bking3
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4400, 0x4401) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x4401, 0x4401) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x4402, 0x4403) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x4403, 0x4403) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x4800, 0x4800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking_sndnmi_disable_r, bking_sndnmi_enable_w)
- AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
-ADDRESS_MAP_END
+ map(0x0d, 0x0d).w(this, FUNC(bking_state::bking_hitclr_w));
+ map(0x07, 0x1f).r(this, FUNC(bking_state::bking_pos_r));
+ map(0x2f, 0x2f).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0x4f, 0x4f).rw(this, FUNC(bking_state::bking3_mcu_status_r), FUNC(bking_state::unk_w));
+ map(0x60, 0x60).r(this, FUNC(bking_state::bking3_extrarom_r));
+ map(0x6f, 0x6f).rw(this, FUNC(bking_state::bking3_ext_check_r), FUNC(bking_state::bking3_addr_h_w));
+ map(0x8f, 0x8f).w(this, FUNC(bking_state::bking3_addr_l_w));
+}
+
+void bking_state::bking_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x2fff).rom(); //only bking3
+ map(0x4000, 0x43ff).ram();
+ map(0x4400, 0x4401).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x4401, 0x4401).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x4402, 0x4403).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x4403, 0x4403).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x4800, 0x4800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4802, 0x4802).rw(this, FUNC(bking_state::bking_sndnmi_disable_r), FUNC(bking_state::bking_sndnmi_enable_w));
+ map(0xe000, 0xefff).rom(); /* Space for diagnostic ROM */
+}
static INPUT_PORTS_START( bking )
diff --git a/src/mame/drivers/blackt96.cpp b/src/mame/drivers/blackt96.cpp
index 17090d5ad26..568c43bb125 100644
--- a/src/mame/drivers/blackt96.cpp
+++ b/src/mame/drivers/blackt96.cpp
@@ -240,26 +240,30 @@ WRITE16_MEMBER(blackt96_state::tx_vram_w)
m_tx_tilemap->mark_tile_dirty(offset/2);
}
-ADDRESS_MAP_START(blackt96_state::blackt96_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1_P2") AM_WRITE8(sound_cmd_w,0xff00) // soundlatch
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN1") AM_WRITE8(output_w,0x00ff) // COIN INPUT
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ( random_r ) // unk, from sound? - called in tandem with result discarded, watchdog?
- AM_RANGE(0x0e8000, 0x0e8001) AM_READ( random_r ) // unk, from sound? /
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
- AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2") AM_WRITENOP // service mode, left-over?
-
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("tilemapram") // text tilemap
- AM_RANGE(0x200000, 0x207fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM // main ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blackt96_state::oki1_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki1bank")
-ADDRESS_MAP_END
+void blackt96_state::blackt96_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("P1_P2");
+ map(0x080000, 0x080000).w(this, FUNC(blackt96_state::sound_cmd_w)); // soundlatch
+ map(0x0c0000, 0x0c0001).portr("IN1"); // COIN INPUT
+ map(0x0c0001, 0x0c0001).w(this, FUNC(blackt96_state::output_w));
+ map(0x0e0000, 0x0e0001).r(this, FUNC(blackt96_state::random_r)); // unk, from sound? - called in tandem with result discarded, watchdog?
+ map(0x0e8000, 0x0e8001).r(this, FUNC(blackt96_state::random_r)); // unk, from sound? /
+ map(0x0f0000, 0x0f0001).portr("DSW1");
+ map(0x0f0008, 0x0f0009).portr("DSW2").nopw(); // service mode, left-over?
+
+ map(0x100000, 0x100fff).ram().w(this, FUNC(blackt96_state::tx_vram_w)).share("tilemapram"); // text tilemap
+ map(0x200000, 0x207fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram"); // only partially populated
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+
+ map(0xc00000, 0xc03fff).ram(); // main ram
+}
+
+void blackt96_state::oki1_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("oki1bank");
+}
diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp
index 0f284c6d3f3..04b199d0e7e 100644
--- a/src/mame/drivers/bladestl.cpp
+++ b/src/mame/drivers/bladestl.cpp
@@ -125,37 +125,39 @@ WRITE8_MEMBER(bladestl_state::bladestl_speech_ctrl_w)
*
*************************************/
-ADDRESS_MAP_START(bladestl_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */
- AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */
- AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */
- AM_RANGE(0x2400, 0x245f) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") /* palette */
- AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */
- AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("COINSW") /* DIPSW #3, coinsw, startsw */
- AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1") /* 1P controls */
- AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2") /* 2P controls */
- AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2") /* DISPW #2 */
- AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1") /* DIPSW #1 */
- AM_RANGE(0x2e80, 0x2e80) AM_WRITE(bladestl_sh_irqtrigger_w) /* cause interrupt on audio CPU */
- AM_RANGE(0x2ec0, 0x2ec0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2f00, 0x2f03) AM_READ(trackball_r) /* Trackballs */
- AM_RANGE(0x2f40, 0x2f40) AM_WRITE(bladestl_bankswitch_w) /* bankswitch control */
- AM_RANGE(0x2f80, 0x2f9f) AM_DEVREADWRITE("k051733", k051733_device, read, write) /* Protection: 051733 */
- AM_RANGE(0x2fc0, 0x2fc0) AM_WRITENOP /* ??? */
- AM_RANGE(0x4000, 0x5fff) AM_RAM /* Work RAM */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bladestl_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM2203 */
- AM_RANGE(0x3000, 0x3000) AM_WRITE(bladestl_speech_ctrl_w) /* UPD7759 */
- AM_RANGE(0x4000, 0x4000) AM_READ(bladestl_speech_busy_r) /* UPD7759 */
- AM_RANGE(0x5000, 0x5000) AM_WRITENOP /* ??? */
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void bladestl_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(m_k007342, FUNC(k007342_device::read), FUNC(k007342_device::write)); /* Color RAM + Video RAM */
+ map(0x2000, 0x21ff).rw(m_k007420, FUNC(k007420_device::read), FUNC(k007420_device::write)); /* Sprite RAM */
+ map(0x2200, 0x23ff).rw(m_k007342, FUNC(k007342_device::scroll_r), FUNC(k007342_device::scroll_w)); /* Scroll RAM */
+ map(0x2400, 0x245f).ram().w("palette", FUNC(palette_device::write_indirect)).share("palette"); /* palette */
+ map(0x2600, 0x2607).w(m_k007342, FUNC(k007342_device::vreg_w)); /* Video Registers */
+ map(0x2e00, 0x2e00).portr("COINSW"); /* DIPSW #3, coinsw, startsw */
+ map(0x2e01, 0x2e01).portr("P1"); /* 1P controls */
+ map(0x2e02, 0x2e02).portr("P2"); /* 2P controls */
+ map(0x2e03, 0x2e03).portr("DSW2"); /* DISPW #2 */
+ map(0x2e40, 0x2e40).portr("DSW1"); /* DIPSW #1 */
+ map(0x2e80, 0x2e80).w(this, FUNC(bladestl_state::bladestl_sh_irqtrigger_w)); /* cause interrupt on audio CPU */
+ map(0x2ec0, 0x2ec0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2f00, 0x2f03).r(this, FUNC(bladestl_state::trackball_r)); /* Trackballs */
+ map(0x2f40, 0x2f40).w(this, FUNC(bladestl_state::bladestl_bankswitch_w)); /* bankswitch control */
+ map(0x2f80, 0x2f9f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* Protection: 051733 */
+ map(0x2fc0, 0x2fc0).nopw(); /* ??? */
+ map(0x4000, 0x5fff).ram(); /* Work RAM */
+ map(0x6000, 0x7fff).bankr("rombank"); /* banked ROM */
+ map(0x8000, 0xffff).rom();
+}
+
+void bladestl_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x1001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM2203 */
+ map(0x3000, 0x3000).w(this, FUNC(bladestl_state::bladestl_speech_ctrl_w)); /* UPD7759 */
+ map(0x4000, 0x4000).r(this, FUNC(bladestl_state::bladestl_speech_busy_r)); /* UPD7759 */
+ map(0x5000, 0x5000).nopw(); /* ??? */
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp
index f633dc80de6..5ccfbe75df8 100644
--- a/src/mame/drivers/blitz68k.cpp
+++ b/src/mame/drivers/blitz68k.cpp
@@ -620,65 +620,67 @@ WRITE16_MEMBER(blitz68k_state::sound_write_w)
}
#endif
-ADDRESS_MAP_START(blitz68k_state::ilpag_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blitter", 0)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
+void blitz68k_state::ilpag_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1fffff).rom().region("blitter", 0);
+ map(0x200000, 0x20ffff).ram().share("nvram");
// AM_RANGE(0x800000, 0x800001) AM_READ(test_r)
// AM_RANGE(0x880000, 0x880001) AM_READ(test_r)
- AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
- AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
- AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("blit_transpen") //video registers for the blitter write
- AM_RANGE(0x990000, 0x990007) AM_RAM AM_SHARE("blit_vregs") //pens
- AM_RANGE(0x998000, 0x998001) AM_RAM AM_SHARE("blit_romaddr")
- AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_SHARE("blit_attr1_ram")
- AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_SHARE("blitram_loword")
- AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_SHARE("blit_attr2_ram")
- AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE(blit_copy_w ) AM_SHARE("blitram_hiword")
- AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r)
-
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(lamps_w)
- AM_RANGE(0xc00180, 0xc00181) AM_READ_PORT("IN2")
+ map(0x900000, 0x900000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x900002, 0x900002).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x900004, 0x900004).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x980000, 0x98000f).ram().share("blit_transpen"); //video registers for the blitter write
+ map(0x990000, 0x990007).ram().share("blit_vregs"); //pens
+ map(0x998000, 0x998001).ram().share("blit_romaddr");
+ map(0x9a0000, 0x9a0001).ram().share("blit_attr1_ram");
+ map(0x9a8000, 0x9a8001).ram().share("blitram_loword");
+ map(0x9b0000, 0x9b0001).ram().share("blit_attr2_ram");
+ map(0x9b8000, 0x9b8001).ram().w(this, FUNC(blitz68k_state::blit_copy_w)).share("blitram_hiword");
+ map(0x9e0000, 0x9e0001).r(this, FUNC(blitz68k_state::blitter_status_r));
+
+ map(0xc00000, 0xc00001).w(this, FUNC(blitz68k_state::lamps_w));
+ map(0xc00180, 0xc00181).portr("IN2");
// AM_RANGE(0xc00200, 0xc00201) AM_WRITE(sound_write_w)
- AM_RANGE(0xc00380, 0xc00381) AM_READ_PORT("IN3")
+ map(0xc00380, 0xc00381).portr("IN3");
// AM_RANGE(0xc00300, 0xc00301) AM_WRITE(irq_callback_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(blitz68k_state::steaser_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blitter", 0)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
+void blitz68k_state::steaser_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x1fffff).rom().region("blitter", 0);
+ map(0x200000, 0x20ffff).ram().share("nvram");
- AM_RANGE(0x800000, 0x800001) AM_READ(test_r)
+ map(0x800000, 0x800001).r(this, FUNC(blitz68k_state::test_r));
// AM_RANGE(0x840000, 0x840001) AM_WRITE(sound_write_w)
- AM_RANGE(0x880000, 0x880001) AM_READ(test_r)
+ map(0x880000, 0x880001).r(this, FUNC(blitz68k_state::test_r));
// AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE(sound_write_w)
- AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
- AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
- AM_RANGE(0x940000, 0x940001) AM_WRITENOP //? Seems a dword write for some read, written consecutively
- AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("blit_transpen")//probably transparency pens
- AM_RANGE(0x990000, 0x990005) AM_RAM AM_SHARE("blit_vregs")
- AM_RANGE(0x998000, 0x998001) AM_RAM AM_SHARE("blit_romaddr")
- AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_SHARE("blit_attr1_ram")
- AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_SHARE("blitram_loword")
- AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_SHARE("blit_attr2_ram")
- AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE(blit_copy_w ) AM_SHARE("blitram_hiword")
- AM_RANGE(0x9c0002, 0x9c0003) AM_READNOP //pen control?
- AM_RANGE(0x9d0000, 0x9d0001) AM_READNOP //?
- AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r)
- AM_RANGE(0x9f0000, 0x9f0001) AM_WRITENOP //???
+ map(0x900000, 0x900000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x900002, 0x900002).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x900004, 0x900004).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x940000, 0x940001).nopw(); //? Seems a dword write for some read, written consecutively
+ map(0x980000, 0x98000f).ram().share("blit_transpen");//probably transparency pens
+ map(0x990000, 0x990005).ram().share("blit_vregs");
+ map(0x998000, 0x998001).ram().share("blit_romaddr");
+ map(0x9a0000, 0x9a0001).ram().share("blit_attr1_ram");
+ map(0x9a8000, 0x9a8001).ram().share("blitram_loword");
+ map(0x9b0000, 0x9b0001).ram().share("blit_attr2_ram");
+ map(0x9b8000, 0x9b8001).ram().w(this, FUNC(blitz68k_state::blit_copy_w)).share("blitram_hiword");
+ map(0x9c0002, 0x9c0003).nopr(); //pen control?
+ map(0x9d0000, 0x9d0001).nopr(); //?
+ map(0x9e0000, 0x9e0001).r(this, FUNC(blitz68k_state::blitter_status_r));
+ map(0x9f0000, 0x9f0001).nopw(); //???
// AM_RANGE(0xc00000, 0xc00001) AM_WRITE(lamps_w)
- AM_RANGE(0xbd0000, 0xbd0001) AM_READ(test_r)
+ map(0xbd0000, 0xbd0001).r(this, FUNC(blitz68k_state::test_r));
// AM_RANGE(0xc00200, 0xc00201) AM_WRITE(sound_write_w)
// AM_RANGE(0xc00380, 0xc00381) AM_READ_PORT("IN3")
// AM_RANGE(0xc00300, 0xc00301) AM_WRITE(irq_callback_w)
-ADDRESS_MAP_END
+}
/*************************************************************************************************************
Bank Robbery
@@ -717,56 +719,57 @@ WRITE8_MEMBER(blitz68k_state::bankrob_mcu2_w)
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(blitz68k_state::bankrob_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
+void blitz68k_state::bankrob_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
- AM_RANGE(0x220000, 0x220001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
- AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0xff00 )
+ map(0x220000, 0x220000).r("ramdac", FUNC(ramdac_device::index_r));
+ map(0x220002, 0x220002).r("ramdac", FUNC(ramdac_device::pal_r));
- AM_RANGE(0x240000, 0x240001) AM_WRITE8(blit_addr0_w, 0xff00)
- AM_RANGE(0x240002, 0x240003) AM_WRITE8(blit_addr1_w, 0xff00)
- AM_RANGE(0x240004, 0x240005) AM_WRITE8(blit_addr2_w, 0xff00)
+ map(0x240000, 0x240000).w(this, FUNC(blitz68k_state::blit_addr0_w));
+ map(0x240002, 0x240002).w(this, FUNC(blitz68k_state::blit_addr1_w));
+ map(0x240004, 0x240004).w(this, FUNC(blitz68k_state::blit_addr2_w));
- AM_RANGE(0x240006, 0x240007) AM_WRITE8(blit_x_w, 0xff00)
- AM_RANGE(0x240008, 0x240009) AM_WRITE8(blit_y_w, 0xff00)
+ map(0x240006, 0x240006).w(this, FUNC(blitz68k_state::blit_x_w));
+ map(0x240008, 0x240008).w(this, FUNC(blitz68k_state::blit_y_w));
- AM_RANGE(0x24000a, 0x24000b) AM_WRITE8(blit_w_w, 0xff00)
- AM_RANGE(0x24000c, 0x24000d) AM_WRITE8(blit_h_w, 0xff00)
+ map(0x24000a, 0x24000a).w(this, FUNC(blitz68k_state::blit_w_w));
+ map(0x24000c, 0x24000c).w(this, FUNC(blitz68k_state::blit_h_w));
- AM_RANGE(0x24000e, 0x24000f) AM_WRITE8(blit_draw_w, 0xff00)
+ map(0x24000e, 0x24000e).w(this, FUNC(blitz68k_state::blit_draw_w));
- AM_RANGE(0x260000, 0x260001) AM_WRITE8(blit_pen0_w, 0xff00)
- AM_RANGE(0x260002, 0x260003) AM_WRITE8(blit_pen1_w, 0xff00)
- AM_RANGE(0x260004, 0x260005) AM_WRITE8(blit_pen2_w, 0xff00)
- AM_RANGE(0x260006, 0x260007) AM_WRITE8(blit_pen3_w, 0xff00)
+ map(0x260000, 0x260000).w(this, FUNC(blitz68k_state::blit_pen0_w));
+ map(0x260002, 0x260002).w(this, FUNC(blitz68k_state::blit_pen1_w));
+ map(0x260004, 0x260004).w(this, FUNC(blitz68k_state::blit_pen2_w));
+ map(0x260006, 0x260006).w(this, FUNC(blitz68k_state::blit_pen3_w));
- AM_RANGE(0x280000, 0x280001) AM_READ(blitter_status_r)
+ map(0x280000, 0x280001).r(this, FUNC(blitz68k_state::blitter_status_r));
- AM_RANGE(0x2c0000, 0x2c0001) AM_WRITENOP // 1->0
+ map(0x2c0000, 0x2c0001).nopw(); // 1->0
- AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE8(blit_flag0_w, 0xff00)
- AM_RANGE(0x2e0002, 0x2e0003) AM_WRITE8(blit_flag1_w, 0xff00)
- AM_RANGE(0x2e0004, 0x2e0005) AM_WRITE8(blit_flipx_w, 0xff00)
- AM_RANGE(0x2e0006, 0x2e0007) AM_WRITE8(blit_flipy_w, 0xff00)
- AM_RANGE(0x2e0008, 0x2e0009) AM_WRITE8(blit_solid_w, 0xff00)
- AM_RANGE(0x2e000a, 0x2e000b) AM_WRITE8(blit_trans_w, 0xff00)
- AM_RANGE(0x2e000c, 0x2e000d) AM_WRITE8(blit_flag6_w, 0xff00)
- AM_RANGE(0x2e000e, 0x2e000f) AM_WRITE8(blit_flag7_w, 0xff00)
+ map(0x2e0000, 0x2e0000).w(this, FUNC(blitz68k_state::blit_flag0_w));
+ map(0x2e0002, 0x2e0002).w(this, FUNC(blitz68k_state::blit_flag1_w));
+ map(0x2e0004, 0x2e0004).w(this, FUNC(blitz68k_state::blit_flipx_w));
+ map(0x2e0006, 0x2e0006).w(this, FUNC(blitz68k_state::blit_flipy_w));
+ map(0x2e0008, 0x2e0008).w(this, FUNC(blitz68k_state::blit_solid_w));
+ map(0x2e000a, 0x2e000a).w(this, FUNC(blitz68k_state::blit_trans_w));
+ map(0x2e000c, 0x2e000c).w(this, FUNC(blitz68k_state::blit_flag6_w));
+ map(0x2e000e, 0x2e000e).w(this, FUNC(blitz68k_state::blit_flag7_w));
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
- AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
+ map(0x300000, 0x300000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x300002, 0x300002).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x300004, 0x300004).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x400000, 0x400001) AM_READ8(bankrob_mcu_status_write_r, 0x00ff)
- AM_RANGE(0x400002, 0x400003) AM_READ8(bankrob_mcu_status_read_r, 0x00ff)
+ map(0x400001, 0x400001).r(this, FUNC(blitz68k_state::bankrob_mcu_status_write_r));
+ map(0x400003, 0x400003).r(this, FUNC(blitz68k_state::bankrob_mcu_status_read_r));
- AM_RANGE(0x400004, 0x400005) AM_READWRITE8(bankrob_mcu1_r, bankrob_mcu1_w, 0x00ff)
- AM_RANGE(0x400006, 0x400007) AM_READWRITE8(bankrob_mcu2_r, bankrob_mcu2_w, 0xff00)
+ map(0x400005, 0x400005).rw(this, FUNC(blitz68k_state::bankrob_mcu1_r), FUNC(blitz68k_state::bankrob_mcu1_w));
+ map(0x400006, 0x400006).rw(this, FUNC(blitz68k_state::bankrob_mcu2_r), FUNC(blitz68k_state::bankrob_mcu2_w));
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) // triggered by MCU?
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
-ADDRESS_MAP_END
+ map(0x800000, 0x800000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); // triggered by MCU?
+ map(0x800002, 0x800002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
// bankroba:
@@ -802,58 +805,59 @@ WRITE8_MEMBER(blitz68k_state::bankroba_mcu2_w)
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(blitz68k_state::bankroba_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
+void blitz68k_state::bankroba_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20ffff).ram();
- AM_RANGE(0x800000, 0x800001) AM_READ8(bankroba_mcu1_r, 0x00ff) // lev 4
- AM_RANGE(0x840000, 0x840001) AM_WRITE8(bankroba_mcu1_w, 0x00ff)
+ map(0x800001, 0x800001).r(this, FUNC(blitz68k_state::bankroba_mcu1_r)); // lev 4
+ map(0x840001, 0x840001).w(this, FUNC(blitz68k_state::bankroba_mcu1_w));
- AM_RANGE(0x880000, 0x880001) AM_READ8(bankroba_mcu2_r, 0x00ff) // lev 3
- AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE8(bankroba_mcu2_w, 0x00ff)
+ map(0x880001, 0x880001).r(this, FUNC(blitz68k_state::bankroba_mcu2_r)); // lev 3
+ map(0x8c0001, 0x8c0001).w(this, FUNC(blitz68k_state::bankroba_mcu2_w));
- AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
- AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
+ map(0x900000, 0x900000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x900002, 0x900002).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x900004, 0x900004).w("ramdac", FUNC(ramdac_device::mask_w));
// AM_RANGE(0x940000, 0x940001) AM_WRITE // lev 6
- AM_RANGE(0x980000, 0x980001) AM_WRITE8(blit_flag0_w, 0xff00)
- AM_RANGE(0x980002, 0x980003) AM_WRITE8(blit_flag1_w, 0xff00)
- AM_RANGE(0x980004, 0x980005) AM_WRITE8(blit_flipx_w, 0xff00)
- AM_RANGE(0x980006, 0x980007) AM_WRITE8(blit_flipy_w, 0xff00)
- AM_RANGE(0x980008, 0x980009) AM_WRITE8(blit_solid_w, 0xff00)
- AM_RANGE(0x98000a, 0x98000b) AM_WRITE8(blit_trans_w, 0xff00)
- AM_RANGE(0x98000c, 0x98000d) AM_WRITE8(blit_flag6_w, 0xff00)
- AM_RANGE(0x98000e, 0x98000f) AM_WRITE8(blit_flag7_w, 0xff00)
+ map(0x980000, 0x980000).w(this, FUNC(blitz68k_state::blit_flag0_w));
+ map(0x980002, 0x980002).w(this, FUNC(blitz68k_state::blit_flag1_w));
+ map(0x980004, 0x980004).w(this, FUNC(blitz68k_state::blit_flipx_w));
+ map(0x980006, 0x980006).w(this, FUNC(blitz68k_state::blit_flipy_w));
+ map(0x980008, 0x980008).w(this, FUNC(blitz68k_state::blit_solid_w));
+ map(0x98000a, 0x98000a).w(this, FUNC(blitz68k_state::blit_trans_w));
+ map(0x98000c, 0x98000c).w(this, FUNC(blitz68k_state::blit_flag6_w));
+ map(0x98000e, 0x98000e).w(this, FUNC(blitz68k_state::blit_flag7_w));
- AM_RANGE(0x990000, 0x990001) AM_WRITE8(blit_pen0_w, 0xff00)
- AM_RANGE(0x990002, 0x990003) AM_WRITE8(blit_pen1_w, 0xff00)
- AM_RANGE(0x990004, 0x990005) AM_WRITE8(blit_pen2_w, 0xff00)
- AM_RANGE(0x990006, 0x990007) AM_WRITE8(blit_pen3_w, 0xff00)
+ map(0x990000, 0x990000).w(this, FUNC(blitz68k_state::blit_pen0_w));
+ map(0x990002, 0x990002).w(this, FUNC(blitz68k_state::blit_pen1_w));
+ map(0x990004, 0x990004).w(this, FUNC(blitz68k_state::blit_pen2_w));
+ map(0x990006, 0x990006).w(this, FUNC(blitz68k_state::blit_pen3_w));
- AM_RANGE(0x998000, 0x998001) AM_WRITE8(blit_addr01_w, 0xffff)
- AM_RANGE(0x9a0000, 0x9a0001) AM_WRITE8(blit_addr2_w, 0xff00)
+ map(0x998000, 0x998001).w(this, FUNC(blitz68k_state::blit_addr01_w));
+ map(0x9a0000, 0x9a0000).w(this, FUNC(blitz68k_state::blit_addr2_w));
- AM_RANGE(0x9a8000, 0x9a8001) AM_WRITE8(blit_xy_w, 0xffff)
+ map(0x9a8000, 0x9a8001).w(this, FUNC(blitz68k_state::blit_xy_w));
- AM_RANGE(0x9b0000, 0x9b0001) AM_WRITE8(blit_wh_w, 0xffff)
+ map(0x9b0000, 0x9b0001).w(this, FUNC(blitz68k_state::blit_wh_w));
- AM_RANGE(0x9b8000, 0x9b8001) AM_WRITE8(blit_draw_w, 0x00ff)
+ map(0x9b8001, 0x9b8001).w(this, FUNC(blitz68k_state::blit_draw_w));
- AM_RANGE(0x9c0000, 0x9c0001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
- AM_RANGE(0x9c0002, 0x9c0003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0xff00 )
+ map(0x9c0000, 0x9c0000).r("ramdac", FUNC(ramdac_device::index_r));
+ map(0x9c0002, 0x9c0002).r("ramdac", FUNC(ramdac_device::pal_r));
- AM_RANGE(0x9d0000, 0x9d0001) AM_READ8(bankroba_mcu1_status_write_r, 0xff00)
+ map(0x9d0000, 0x9d0000).r(this, FUNC(blitz68k_state::bankroba_mcu1_status_write_r));
- AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r)
+ map(0x9e0000, 0x9e0001).r(this, FUNC(blitz68k_state::blitter_status_r));
- AM_RANGE(0x9f0000, 0x9f0001) AM_WRITENOP // 1
+ map(0x9f0000, 0x9f0001).nopw(); // 1
- AM_RANGE(0xbd0000, 0xbd0001) AM_READ8(bankroba_mcu2_status_write_r, 0xff00)
+ map(0xbd0000, 0xbd0000).r(this, FUNC(blitz68k_state::bankroba_mcu2_status_write_r));
// CRTC connected to MCU?
-ADDRESS_MAP_END
+}
/*************************************************************************************************************
Funny Fruit
@@ -945,42 +949,43 @@ WRITE16_MEMBER(blitz68k_state::cjffruit_mcu_w)
logerror("%s: mcu written with %02x\n", machine().describe_context(),data >> 8);
}
-ADDRESS_MAP_START(blitz68k_state::cjffruit_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x480000, 0x4807ff) AM_RAM
+void blitz68k_state::cjffruit_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x41ffff).ram().share("nvram");
+ map(0x480000, 0x4807ff).ram();
- AM_RANGE(0x820000, 0x820007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
+ map(0x820000, 0x820007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w));
- AM_RANGE(0x850000, 0x850001) AM_READ(cjffruit_mcu_r )
+ map(0x850000, 0x850001).r(this, FUNC(blitz68k_state::cjffruit_mcu_r));
- AM_RANGE(0x870000, 0x870001) AM_READ_PORT("IN0")
- AM_RANGE(0x872000, 0x872001) AM_READ_PORT("IN1")
- AM_RANGE(0x874000, 0x874001) AM_READ_PORT("IN2")
- AM_RANGE(0x876000, 0x876001) AM_READ_PORT("DSW")
+ map(0x870000, 0x870001).portr("IN0");
+ map(0x872000, 0x872001).portr("IN1");
+ map(0x874000, 0x874001).portr("IN2");
+ map(0x876000, 0x876001).portr("DSW");
- AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x880002, 0x880003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
- AM_RANGE(0x880000, 0x880001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
- AM_RANGE(0x880000, 0x880001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
+ map(0x880000, 0x880000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x880001, 0x880001).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x880002, 0x880002).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x880000, 0x880000).r("ramdac", FUNC(ramdac_device::index_r));
+ map(0x880001, 0x880001).r("ramdac", FUNC(ramdac_device::pal_r));
- AM_RANGE(0x8a0000, 0x8a0007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
+ map(0x8a0000, 0x8a0007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w));
- AM_RANGE(0x8b0000, 0x8b0003) AM_WRITE8(blit_pens_w, 0xffff)
+ map(0x8b0000, 0x8b0003).w(this, FUNC(blitz68k_state::blit_pens_w));
- AM_RANGE(0x8e0000, 0x8e0001) AM_WRITE(cjffruit_mcu_w )
+ map(0x8e0000, 0x8e0001).w(this, FUNC(blitz68k_state::cjffruit_mcu_w));
- AM_RANGE(0x8f8000, 0x8f8001) AM_WRITE(cjffruit_leds1_w) AM_SHARE("leds0")
- AM_RANGE(0x8fa000, 0x8fa001) AM_WRITE(cjffruit_leds2_w) AM_SHARE("leds1")
- AM_RANGE(0x8fc000, 0x8fc001) AM_WRITE(cjffruit_leds3_w) AM_SHARE("leds2")
+ map(0x8f8000, 0x8f8001).w(this, FUNC(blitz68k_state::cjffruit_leds1_w)).share("leds0");
+ map(0x8fa000, 0x8fa001).w(this, FUNC(blitz68k_state::cjffruit_leds2_w)).share("leds1");
+ map(0x8fc000, 0x8fc001).w(this, FUNC(blitz68k_state::cjffruit_leds3_w)).share("leds2");
- AM_RANGE(0x8fe000, 0x8fe003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans
- AM_RANGE(0x8fe004, 0x8fe005) AM_WRITEONLY
- AM_RANGE(0x8fe006, 0x8fe007) AM_WRITE(crtc_lpen_w) // 0x8fe006: 0->1, 0x8fe007: 1->0
+ map(0x8fe000, 0x8fe003).w(this, FUNC(blitz68k_state::blit_flags_w)); // flipx,y,solid,trans
+ map(0x8fe004, 0x8fe005).writeonly();
+ map(0x8fe006, 0x8fe007).w(this, FUNC(blitz68k_state::crtc_lpen_w)); // 0x8fe006: 0->1, 0x8fe007: 1->0
- AM_RANGE(0xc40000, 0xc40001) AM_READWRITE8(crtc_r, crtc_w, 0xffff)
-ADDRESS_MAP_END
+ map(0xc40000, 0xc40001).rw(this, FUNC(blitz68k_state::crtc_r), FUNC(blitz68k_state::crtc_w));
+}
/*************************************************************************************************************
Deuces Wild 2
@@ -1044,42 +1049,43 @@ WRITE16_MEMBER(blitz68k_state::deucesw2_leds3_w)
}
}
-ADDRESS_MAP_START(blitz68k_state::deucesw2_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x41ffff) AM_RAM
+void blitz68k_state::deucesw2_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x41ffff).ram();
- AM_RANGE(0x800000, 0x800007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
+ map(0x800000, 0x800007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w));
- AM_RANGE(0x812000, 0x812001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
- AM_RANGE(0x812000, 0x812001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
+ map(0x812000, 0x812000).r("ramdac", FUNC(ramdac_device::index_r));
+ map(0x812001, 0x812001).r("ramdac", FUNC(ramdac_device::pal_r));
- AM_RANGE(0x830000, 0x830001) AM_READ(deucesw2_mcu_r )
+ map(0x830000, 0x830001).r(this, FUNC(blitz68k_state::deucesw2_mcu_r));
- AM_RANGE(0x840000, 0x840001) AM_READ_PORT("IN0")
- AM_RANGE(0x850000, 0x850001) AM_READ_PORT("IN1")
- AM_RANGE(0x860000, 0x860001) AM_READ_PORT("IN2")
- AM_RANGE(0x870000, 0x870001) AM_READ_PORT("DSW")
+ map(0x840000, 0x840001).portr("IN0");
+ map(0x850000, 0x850001).portr("IN1");
+ map(0x860000, 0x860001).portr("IN2");
+ map(0x870000, 0x870001).portr("DSW");
- AM_RANGE(0x880000, 0x880007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
+ map(0x880000, 0x880007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w));
- AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x890002, 0x890003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
+ map(0x890000, 0x890000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x890001, 0x890001).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x890002, 0x890002).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x894000, 0x894003) AM_WRITE8(blit_pens_w, 0xffff)
+ map(0x894000, 0x894003).w(this, FUNC(blitz68k_state::blit_pens_w));
- AM_RANGE(0x896000, 0x896001) AM_WRITE(deucesw2_mcu_w )
+ map(0x896000, 0x896001).w(this, FUNC(blitz68k_state::deucesw2_mcu_w));
- AM_RANGE(0x898000, 0x898001) AM_WRITE(deucesw2_leds1_w) AM_SHARE("leds0")
- AM_RANGE(0x89a000, 0x89a001) AM_WRITE(deucesw2_leds2_w) AM_SHARE("leds1")
- AM_RANGE(0x89c000, 0x89c001) AM_WRITE(deucesw2_leds3_w) AM_SHARE("leds2")
+ map(0x898000, 0x898001).w(this, FUNC(blitz68k_state::deucesw2_leds1_w)).share("leds0");
+ map(0x89a000, 0x89a001).w(this, FUNC(blitz68k_state::deucesw2_leds2_w)).share("leds1");
+ map(0x89c000, 0x89c001).w(this, FUNC(blitz68k_state::deucesw2_leds3_w)).share("leds2");
- AM_RANGE(0x89e000, 0x89e003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans
- AM_RANGE(0x89e004, 0x89e005) AM_WRITEONLY
- AM_RANGE(0x89e006, 0x89e007) AM_WRITE(crtc_lpen_w) // 0x89e006: 0->1, 0x89e007: 1->0
+ map(0x89e000, 0x89e003).w(this, FUNC(blitz68k_state::blit_flags_w)); // flipx,y,solid,trans
+ map(0x89e004, 0x89e005).writeonly();
+ map(0x89e006, 0x89e007).w(this, FUNC(blitz68k_state::crtc_lpen_w)); // 0x89e006: 0->1, 0x89e007: 1->0
- AM_RANGE(0xc00000, 0xc00001) AM_READWRITE8(crtc_r, crtc_w, 0xffff)
-ADDRESS_MAP_END
+ map(0xc00000, 0xc00001).rw(this, FUNC(blitz68k_state::crtc_r), FUNC(blitz68k_state::crtc_w));
+}
/*************************************************************************************************************
Dual Games
@@ -1118,59 +1124,60 @@ WRITE8_MEMBER(blitz68k_state::dualgame_mcu2_w)
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(blitz68k_state::dualgame_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
+void blitz68k_state::dualgame_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
- AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
- AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
+ map(0x220002, 0x220002).r("ramdac", FUNC(ramdac_device::index_r));
+ map(0x220003, 0x220003).r("ramdac", FUNC(ramdac_device::pal_r));
- AM_RANGE(0x240000, 0x240001) AM_WRITE8(blit_addr0_w, 0xff00)
- AM_RANGE(0x240002, 0x240003) AM_WRITE8(blit_addr1_w, 0xff00)
- AM_RANGE(0x240004, 0x240005) AM_WRITE8(blit_addr2_w, 0xff00)
+ map(0x240000, 0x240000).w(this, FUNC(blitz68k_state::blit_addr0_w));
+ map(0x240002, 0x240002).w(this, FUNC(blitz68k_state::blit_addr1_w));
+ map(0x240004, 0x240004).w(this, FUNC(blitz68k_state::blit_addr2_w));
- AM_RANGE(0x240006, 0x240007) AM_WRITE8(blit_x_w, 0xff00)
- AM_RANGE(0x240008, 0x240009) AM_WRITE8(blit_y_w, 0xff00)
+ map(0x240006, 0x240006).w(this, FUNC(blitz68k_state::blit_x_w));
+ map(0x240008, 0x240008).w(this, FUNC(blitz68k_state::blit_y_w));
- AM_RANGE(0x24000a, 0x24000b) AM_WRITE8(blit_w_w, 0xff00)
- AM_RANGE(0x24000c, 0x24000d) AM_WRITE8(blit_h_w, 0xff00)
+ map(0x24000a, 0x24000a).w(this, FUNC(blitz68k_state::blit_w_w));
+ map(0x24000c, 0x24000c).w(this, FUNC(blitz68k_state::blit_h_w));
- AM_RANGE(0x24000e, 0x24000f) AM_WRITE8(blit_draw_w, 0xff00)
+ map(0x24000e, 0x24000e).w(this, FUNC(blitz68k_state::blit_draw_w));
- AM_RANGE(0x260000, 0x260001) AM_WRITE8(blit_pen0_w, 0xff00)
- AM_RANGE(0x260002, 0x260003) AM_WRITE8(blit_pen1_w, 0xff00)
- AM_RANGE(0x260004, 0x260005) AM_WRITE8(blit_pen2_w, 0xff00)
- AM_RANGE(0x260006, 0x260007) AM_WRITE8(blit_pen3_w, 0xff00)
+ map(0x260000, 0x260000).w(this, FUNC(blitz68k_state::blit_pen0_w));
+ map(0x260002, 0x260002).w(this, FUNC(blitz68k_state::blit_pen1_w));
+ map(0x260004, 0x260004).w(this, FUNC(blitz68k_state::blit_pen2_w));
+ map(0x260006, 0x260006).w(this, FUNC(blitz68k_state::blit_pen3_w));
- AM_RANGE(0x280000, 0x280001) AM_READ8(blit_status_r, 0xff00)
+ map(0x280000, 0x280000).r(this, FUNC(blitz68k_state::blit_status_r));
- AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(crtc_lpen_w)
- AM_RANGE(0x2a0000, 0x2a0001) AM_READNOP
+ map(0x2a0000, 0x2a0001).w(this, FUNC(blitz68k_state::crtc_lpen_w));
+ map(0x2a0000, 0x2a0001).nopr();
- AM_RANGE(0x2c0000, 0x2c0001) AM_WRITENOP // 1->0 (MCU related?)
+ map(0x2c0000, 0x2c0001).nopw(); // 1->0 (MCU related?)
- AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE8(blit_flag0_w, 0xff00)
- AM_RANGE(0x2e0002, 0x2e0003) AM_WRITE8(blit_flag1_w, 0xff00)
- AM_RANGE(0x2e0004, 0x2e0005) AM_WRITE8(blit_flipx_w, 0xff00) // flipx
- AM_RANGE(0x2e0006, 0x2e0007) AM_WRITE8(blit_flipy_w, 0xff00) // flipy
- AM_RANGE(0x2e0008, 0x2e0009) AM_WRITE8(blit_solid_w, 0xff00) // solid
- AM_RANGE(0x2e000a, 0x2e000b) AM_WRITE8(blit_trans_w, 0xff00) // transparency
- AM_RANGE(0x2e000c, 0x2e000d) AM_WRITE8(blit_flag6_w, 0xff00)
- AM_RANGE(0x2e000e, 0x2e000f) AM_WRITE8(blit_flag7_w, 0xff00)
+ map(0x2e0000, 0x2e0000).w(this, FUNC(blitz68k_state::blit_flag0_w));
+ map(0x2e0002, 0x2e0002).w(this, FUNC(blitz68k_state::blit_flag1_w));
+ map(0x2e0004, 0x2e0004).w(this, FUNC(blitz68k_state::blit_flipx_w)); // flipx
+ map(0x2e0006, 0x2e0006).w(this, FUNC(blitz68k_state::blit_flipy_w)); // flipy
+ map(0x2e0008, 0x2e0008).w(this, FUNC(blitz68k_state::blit_solid_w)); // solid
+ map(0x2e000a, 0x2e000a).w(this, FUNC(blitz68k_state::blit_trans_w)); // transparency
+ map(0x2e000c, 0x2e000c).w(this, FUNC(blitz68k_state::blit_flag6_w));
+ map(0x2e000e, 0x2e000e).w(this, FUNC(blitz68k_state::blit_flag7_w));
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
- AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
+ map(0x300000, 0x300000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x300002, 0x300002).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x300004, 0x300004).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x400000, 0x400001) AM_READ8(dualgame_mcu_status_write_r, 0x00ff)
- AM_RANGE(0x400002, 0x400003) AM_READ8(dualgame_mcu_status_read_r, 0x00ff)
+ map(0x400001, 0x400001).r(this, FUNC(blitz68k_state::dualgame_mcu_status_write_r));
+ map(0x400003, 0x400003).r(this, FUNC(blitz68k_state::dualgame_mcu_status_read_r));
- AM_RANGE(0x400004, 0x400005) AM_READWRITE8(dualgame_mcu1_r, dualgame_mcu1_w, 0x00ff)
- AM_RANGE(0x400006, 0x400007) AM_READWRITE8(dualgame_mcu2_r, dualgame_mcu2_w, 0xff00)
+ map(0x400005, 0x400005).rw(this, FUNC(blitz68k_state::dualgame_mcu1_r), FUNC(blitz68k_state::dualgame_mcu1_w));
+ map(0x400006, 0x400006).rw(this, FUNC(blitz68k_state::dualgame_mcu2_r), FUNC(blitz68k_state::dualgame_mcu2_w));
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
-ADDRESS_MAP_END
+ map(0x800000, 0x800000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x800002, 0x800002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
/*************************************************************************************************************
The Hermit
@@ -1220,42 +1227,43 @@ READ16_MEMBER(blitz68k_state::hermit_track_r)
((0xf - ((ioport("TRACK_X")->read() + 0x7) & 0xf)) << 8) ;
}
-ADDRESS_MAP_START(blitz68k_state::hermit_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x400000, 0x41ffff) AM_RAM
+void blitz68k_state::hermit_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x400000, 0x41ffff).ram();
- AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
- AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
- AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x840002, 0x840003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
- AM_RANGE(0x840000, 0x840001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
- AM_RANGE(0x840000, 0x840001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
+ map(0x800000, 0x800000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x800001, 0x800001).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x800002, 0x800002).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x840000, 0x840000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x840001, 0x840001).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x840002, 0x840002).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x840000, 0x840000).r("ramdac", FUNC(ramdac_device::index_r));
+ map(0x840001, 0x840001).r("ramdac", FUNC(ramdac_device::pal_r));
- AM_RANGE(0x8c0000, 0x8c0003) AM_WRITE8(blit_pens_w, 0xffff )
+ map(0x8c0000, 0x8c0003).w(this, FUNC(blitz68k_state::blit_pens_w));
- AM_RANGE(0x940000, 0x940001) AM_READ(hermit_mcu_r )
- AM_RANGE(0x980000, 0x980001) AM_WRITE(hermit_mcu_w )
+ map(0x940000, 0x940001).r(this, FUNC(blitz68k_state::hermit_mcu_r));
+ map(0x980000, 0x980001).w(this, FUNC(blitz68k_state::hermit_mcu_w));
- AM_RANGE(0x9c0000, 0x9c0001) AM_READ_PORT("IN0")
- AM_RANGE(0x9c8000, 0x9c8001) AM_READ(hermit_track_r )
- AM_RANGE(0x9d0000, 0x9d0001) AM_READ_PORT("IN2")
- AM_RANGE(0x9d8000, 0x9d8001) AM_READ_PORT("DSW")
+ map(0x9c0000, 0x9c0001).portr("IN0");
+ map(0x9c8000, 0x9c8001).r(this, FUNC(blitz68k_state::hermit_track_r));
+ map(0x9d0000, 0x9d0001).portr("IN2");
+ map(0x9d8000, 0x9d8001).portr("DSW");
- AM_RANGE(0x9e0000, 0x9e0001) AM_WRITE(hermit_leds1_w) AM_SHARE("leds0")
- AM_RANGE(0x9e8000, 0x9e8001) AM_WRITE(hermit_leds2_w) AM_SHARE("leds1")
+ map(0x9e0000, 0x9e0001).w(this, FUNC(blitz68k_state::hermit_leds1_w)).share("leds0");
+ map(0x9e8000, 0x9e8001).w(this, FUNC(blitz68k_state::hermit_leds2_w)).share("leds1");
- AM_RANGE(0x9f0000, 0x9f0003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans
- AM_RANGE(0x9f0004, 0x9f0005) AM_WRITEONLY
- AM_RANGE(0x9f0006, 0x9f0007) AM_WRITE(crtc_lpen_w) // 0x9f0006: 0->1, 0x9f0007: 1->0
+ map(0x9f0000, 0x9f0003).w(this, FUNC(blitz68k_state::blit_flags_w)); // flipx,y,solid,trans
+ map(0x9f0004, 0x9f0005).writeonly();
+ map(0x9f0006, 0x9f0007).w(this, FUNC(blitz68k_state::crtc_lpen_w)); // 0x9f0006: 0->1, 0x9f0007: 1->0
- AM_RANGE(0xb00000, 0xb00001) AM_READWRITE8(crtc_r, crtc_w, 0xffff) // triggered by MCU?
+ map(0xb00000, 0xb00001).rw(this, FUNC(blitz68k_state::crtc_r), FUNC(blitz68k_state::crtc_w)); // triggered by MCU?
- AM_RANGE(0xc80000, 0xc80007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
-ADDRESS_MAP_END
+ map(0xc80000, 0xc80007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w));
+}
/*************************************************************************************************************
Maxi Double Poker
@@ -1294,24 +1302,25 @@ WRITE8_MEMBER(blitz68k_state::maxidbl_mcu2_w)
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(blitz68k_state::maxidbl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
+void blitz68k_state::maxidbl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20ffff).ram();
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("frame_buffer")
+ map(0x400000, 0x40ffff).ram().share("frame_buffer");
- AM_RANGE(0x30000c, 0x30000d) AM_WRITENOP // 0->1 (IRQ3 ack.?)
- AM_RANGE(0x30000e, 0x30000f) AM_WRITENOP // 1->0 (MCU related?)
+ map(0x30000c, 0x30000d).nopw(); // 0->1 (IRQ3 ack.?)
+ map(0x30000e, 0x30000f).nopw(); // 1->0 (MCU related?)
- AM_RANGE(0x500000, 0x500001) AM_READ8(maxidbl_mcu_status_write_r, 0x00ff)
- AM_RANGE(0x500002, 0x500003) AM_READ8(maxidbl_mcu_status_read_r, 0x00ff)
+ map(0x500001, 0x500001).r(this, FUNC(blitz68k_state::maxidbl_mcu_status_write_r));
+ map(0x500003, 0x500003).r(this, FUNC(blitz68k_state::maxidbl_mcu_status_read_r));
- AM_RANGE(0x500004, 0x500005) AM_READWRITE8(maxidbl_mcu1_r, maxidbl_mcu1_w, 0x00ff)
- AM_RANGE(0x500006, 0x500007) AM_READWRITE8(maxidbl_mcu2_r, maxidbl_mcu2_w, 0xff00)
+ map(0x500005, 0x500005).rw(this, FUNC(blitz68k_state::maxidbl_mcu1_r), FUNC(blitz68k_state::maxidbl_mcu1_w));
+ map(0x500006, 0x500006).rw(this, FUNC(blitz68k_state::maxidbl_mcu2_r), FUNC(blitz68k_state::maxidbl_mcu2_w));
- AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) // triggered by MCU?
- AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
-ADDRESS_MAP_END
+ map(0x600000, 0x600000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); // triggered by MCU?
+ map(0x600002, 0x600002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
@@ -1689,9 +1698,10 @@ MC6845_ON_UPDATE_ADDR_CHANGED(blitz68k_state::crtc_addr)
{
}
-ADDRESS_MAP_START(blitz68k_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void blitz68k_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(blitz68k_state::ilpag)
MCFG_CPU_ADD("maincpu", M68000, 11059200 ) // ?
diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp
index 47766e4ffcc..09321a8a3e0 100644
--- a/src/mame/drivers/blktiger.cpp
+++ b/src/mame/drivers/blktiger.cpp
@@ -74,58 +74,62 @@ WRITE8_MEMBER(blktiger_state::blktiger_coinlockout_w)
}
-ADDRESS_MAP_START(blktiger_state::blktiger_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE(blktiger_bgvideoram_r, blktiger_bgvideoram_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(blktiger_txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xe000, 0xfdff) AM_RAM
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blktiger_state::blktiger_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(blktiger_bankswitch_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(blktiger_coinlockout_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") AM_WRITE(blktiger_video_control_w)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("FREEZE")
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_READWRITE(blktiger_from_mcu_r,blktiger_to_mcu_w) /* Software protection (7) */
- AM_RANGE(0x08, 0x09) AM_WRITE(blktiger_scrollx_w)
- AM_RANGE(0x0a, 0x0b) AM_WRITE(blktiger_scrolly_w)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(blktiger_video_enable_w)
- AM_RANGE(0x0d, 0x0d) AM_WRITE(blktiger_bgvideoram_bank_w)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(blktiger_screen_layout_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blktiger_state::blktigerbl_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(blktiger_bankswitch_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(blktiger_coinlockout_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") AM_WRITE(blktiger_video_control_w)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("FREEZE")
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_NOP /* Software protection (7) */
- AM_RANGE(0x08, 0x09) AM_WRITE(blktiger_scrollx_w)
- AM_RANGE(0x0a, 0x0b) AM_WRITE(blktiger_scrolly_w)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(blktiger_video_enable_w)
- AM_RANGE(0x0d, 0x0d) AM_WRITE(blktiger_bgvideoram_bank_w)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(blktiger_screen_layout_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blktiger_state::blktiger_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xe002, 0xe003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void blktiger_state::blktiger_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).rw(this, FUNC(blktiger_state::blktiger_bgvideoram_r), FUNC(blktiger_state::blktiger_bgvideoram_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(blktiger_state::blktiger_txvideoram_w)).share("txvideoram");
+ map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xdc00, 0xdfff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xe000, 0xfdff).ram();
+ map(0xfe00, 0xffff).ram().share("spriteram");
+}
+
+void blktiger_state::blktiger_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(blktiger_state::blktiger_bankswitch_w));
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).portr("DSW0").w(this, FUNC(blktiger_state::blktiger_coinlockout_w));
+ map(0x04, 0x04).portr("DSW1").w(this, FUNC(blktiger_state::blktiger_video_control_w));
+ map(0x05, 0x05).portr("FREEZE");
+ map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).rw(this, FUNC(blktiger_state::blktiger_from_mcu_r), FUNC(blktiger_state::blktiger_to_mcu_w)); /* Software protection (7) */
+ map(0x08, 0x09).w(this, FUNC(blktiger_state::blktiger_scrollx_w));
+ map(0x0a, 0x0b).w(this, FUNC(blktiger_state::blktiger_scrolly_w));
+ map(0x0c, 0x0c).w(this, FUNC(blktiger_state::blktiger_video_enable_w));
+ map(0x0d, 0x0d).w(this, FUNC(blktiger_state::blktiger_bgvideoram_bank_w));
+ map(0x0e, 0x0e).w(this, FUNC(blktiger_state::blktiger_screen_layout_w));
+}
+
+void blktiger_state::blktigerbl_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(blktiger_state::blktiger_bankswitch_w));
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).portr("DSW0").w(this, FUNC(blktiger_state::blktiger_coinlockout_w));
+ map(0x04, 0x04).portr("DSW1").w(this, FUNC(blktiger_state::blktiger_video_control_w));
+ map(0x05, 0x05).portr("FREEZE");
+ map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).noprw(); /* Software protection (7) */
+ map(0x08, 0x09).w(this, FUNC(blktiger_state::blktiger_scrollx_w));
+ map(0x0a, 0x0b).w(this, FUNC(blktiger_state::blktiger_scrolly_w));
+ map(0x0c, 0x0c).w(this, FUNC(blktiger_state::blktiger_video_enable_w));
+ map(0x0d, 0x0d).w(this, FUNC(blktiger_state::blktiger_bgvideoram_bank_w));
+ map(0x0e, 0x0e).w(this, FUNC(blktiger_state::blktiger_screen_layout_w));
+}
+
+void blktiger_state::blktiger_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xe002, 0xe003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
diff --git a/src/mame/drivers/blmbycar.cpp b/src/mame/drivers/blmbycar.cpp
index 3908dab8130..defcec824ef 100644
--- a/src/mame/drivers/blmbycar.cpp
+++ b/src/mame/drivers/blmbycar.cpp
@@ -100,35 +100,37 @@ READ16_MEMBER(blmbycar_state::blmbycar_opt_wheel_r)
***************************************************************************/
-ADDRESS_MAP_START(blmbycar_state::common_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0xfec000, 0xfeffff) AM_RAM
- AM_RANGE(0x100000, 0x103fff) AM_WRITEONLY // ???
- AM_RANGE(0x104000, 0x105fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1
- AM_RANGE(0x106000, 0x107fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0
- AM_RANGE(0x108000, 0x10bfff) AM_WRITEONLY // ???
- AM_RANGE(0x10c000, 0x10c003) AM_WRITEONLY AM_SHARE("scroll_1") // Scroll 1
- AM_RANGE(0x10c004, 0x10c007) AM_WRITEONLY AM_SHARE("scroll_0") // Scroll 0
- AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") AM_MIRROR(0x4000) // Palette
- AM_RANGE(0x200600, 0x203fff) AM_RAM AM_MIRROR(0x4000)
- AM_RANGE(0x440000, 0x441fff) AM_RAM
- AM_RANGE(0x444000, 0x445fff) AM_WRITEONLY AM_SHARE("spriteram")// Sprites (size?)
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okibank_w) // Sound
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blmbycar_state::blmbycar_map)
- AM_IMPORT_FROM(common_map)
-
- AM_RANGE(0x700004, 0x700005) AM_READ(blmbycar_opt_wheel_r) // Wheel (optical)
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("UNK")
- AM_RANGE(0x700008, 0x700009) AM_READ(blmbycar_pot_wheel_r) // Wheel (potentiometer)
- AM_RANGE(0x70000a, 0x70000b) AM_WRITENOP // ? Wheel
- AM_RANGE(0x70006a, 0x70006b) AM_WRITE(blmbycar_pot_wheel_reset_w) // Wheel (potentiometer)
- AM_RANGE(0x70007a, 0x70007b) AM_WRITE(blmbycar_pot_wheel_shift_w) //
-ADDRESS_MAP_END
+void blmbycar_state::common_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0xfec000, 0xfeffff).ram();
+ map(0x100000, 0x103fff).writeonly(); // ???
+ map(0x104000, 0x105fff).ram().w(this, FUNC(blmbycar_state::vram_1_w)).share("vram_1"); // Layer 1
+ map(0x106000, 0x107fff).ram().w(this, FUNC(blmbycar_state::vram_0_w)).share("vram_0"); // Layer 0
+ map(0x108000, 0x10bfff).writeonly(); // ???
+ map(0x10c000, 0x10c003).writeonly().share("scroll_1"); // Scroll 1
+ map(0x10c004, 0x10c007).writeonly().share("scroll_0"); // Scroll 0
+ map(0x200000, 0x2005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette").mirror(0x4000); // Palette
+ map(0x200600, 0x203fff).ram().mirror(0x4000);
+ map(0x440000, 0x441fff).ram();
+ map(0x444000, 0x445fff).writeonly().share("spriteram");// Sprites (size?)
+ map(0x700000, 0x700001).portr("DSW");
+ map(0x700002, 0x700003).portr("P1_P2");
+ map(0x70000c, 0x70000d).w(this, FUNC(blmbycar_state::okibank_w)); // Sound
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+}
+
+void blmbycar_state::blmbycar_map(address_map &map)
+{
+ common_map(map);
+
+ map(0x700004, 0x700005).r(this, FUNC(blmbycar_state::blmbycar_opt_wheel_r)); // Wheel (optical)
+ map(0x700006, 0x700007).portr("UNK");
+ map(0x700008, 0x700009).r(this, FUNC(blmbycar_state::blmbycar_pot_wheel_r)); // Wheel (potentiometer)
+ map(0x70000a, 0x70000b).nopw(); // ? Wheel
+ map(0x70006a, 0x70006b).w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_reset_w)); // Wheel (potentiometer)
+ map(0x70007a, 0x70007b).w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_shift_w)); //
+}
READ16_MEMBER(blmbycar_state::waterball_unk_r)
{
@@ -136,18 +138,20 @@ READ16_MEMBER(blmbycar_state::waterball_unk_r)
return m_retvalue;
}
-ADDRESS_MAP_START(blmbycar_state::watrball_map)
- AM_IMPORT_FROM(common_map)
+void blmbycar_state::watrball_map(address_map &map)
+{
+ common_map(map);
- AM_RANGE(0x700006, 0x700007) AM_READNOP // read
- AM_RANGE(0x700008, 0x700009) AM_READ(waterball_unk_r) // 0x0008 must toggle
- AM_RANGE(0x70000a, 0x70000b) AM_WRITEONLY // ?? busy
-ADDRESS_MAP_END
+ map(0x700006, 0x700007).nopr(); // read
+ map(0x700008, 0x700009).r(this, FUNC(blmbycar_state::waterball_unk_r)); // 0x0008 must toggle
+ map(0x70000a, 0x70000b).writeonly(); // ?? busy
+}
-ADDRESS_MAP_START(blmbycar_state::blmbycar_oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void blmbycar_state::blmbycar_oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
/***************************************************************************
diff --git a/src/mame/drivers/blockade.cpp b/src/mame/drivers/blockade.cpp
index cf9b784fd8a..2b4f1c6dff0 100644
--- a/src/mame/drivers/blockade.cpp
+++ b/src/mame/drivers/blockade.cpp
@@ -81,19 +81,21 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(blockade_state::main_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x6000) AM_ROM
- AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x6000) AM_ROM // comotion, blasto, hustle
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x6f00) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blockade_state::main_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(coin_latch_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITE(sound_freq_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(env_on_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(env_off_w)
-ADDRESS_MAP_END
+void blockade_state::main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x6000).rom();
+ map(0x0400, 0x07ff).mirror(0x6000).rom(); // comotion, blasto, hustle
+ map(0x8000, 0x83ff).mirror(0x6c00).ram().w(this, FUNC(blockade_state::videoram_w)).share("videoram");
+ map(0x9000, 0x90ff).mirror(0x6f00).ram();
+}
+
+void blockade_state::main_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN0").w(this, FUNC(blockade_state::coin_latch_w));
+ map(0x02, 0x02).portr("IN1").w(this, FUNC(blockade_state::sound_freq_w));
+ map(0x04, 0x04).portr("IN2").w(this, FUNC(blockade_state::env_on_w));
+ map(0x08, 0x08).w(this, FUNC(blockade_state::env_off_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp
index 30d3263ea64..f4b10356129 100644
--- a/src/mame/drivers/blockhl.cpp
+++ b/src/mame/drivers/blockhl.cpp
@@ -79,34 +79,37 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(blockhl_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
- AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sound_irq_w)
- AM_RANGE(0x1f8c, 0x1f8c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW3")
- AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
- AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
- AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1")
- AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW2")
- AM_RANGE(0x4000, 0x57ff) AM_RAM
- AM_RANGE(0x5800, 0x5fff) AM_DEVICE("bank5800", address_map_bank_device, amap8)
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blockhl_state::bank5800_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x0800, 0x0fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blockhl_state::audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP // leftover from missing 007232?
-ADDRESS_MAP_END
+void blockhl_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(blockhl_state::k052109_051960_r), FUNC(blockhl_state::k052109_051960_w));
+ map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1f88, 0x1f88).w(this, FUNC(blockhl_state::sound_irq_w));
+ map(0x1f8c, 0x1f8c).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1f94, 0x1f94).portr("DSW3");
+ map(0x1f95, 0x1f95).portr("P1");
+ map(0x1f96, 0x1f96).portr("P2");
+ map(0x1f97, 0x1f97).portr("DSW1");
+ map(0x1f98, 0x1f98).portr("DSW2");
+ map(0x4000, 0x57ff).ram();
+ map(0x5800, 0x5fff).m(m_bank5800, FUNC(address_map_bank_device::amap8));
+ map(0x6000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
+}
+
+void blockhl_state::bank5800_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x0800, 0x0fff).ram();
+}
+
+void blockhl_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe00c, 0xe00d).nopw(); // leftover from missing 007232?
+}
//**************************************************************************
diff --git a/src/mame/drivers/blockout.cpp b/src/mame/drivers/blockout.cpp
index a295aaf4dfd..0b982065b92 100644
--- a/src/mame/drivers/blockout.cpp
+++ b/src/mame/drivers/blockout.cpp
@@ -95,53 +95,56 @@ WRITE16_MEMBER(blockout_state::blockout_irq5_ack_w)
*
*************************************/
-ADDRESS_MAP_START(blockout_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P2")
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x100006, 0x100007) AM_READ_PORT("DSW1")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW2")
- AM_RANGE(0x100010, 0x100011) AM_WRITE(blockout_irq6_ack_w)
- AM_RANGE(0x100012, 0x100013) AM_WRITE(blockout_irq5_ack_w)
- AM_RANGE(0x100014, 0x100015) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* don't know, maybe reset sound CPU */
- AM_RANGE(0x180000, 0x1bffff) AM_RAM_WRITE(blockout_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1d4000, 0x1dffff) AM_RAM /* work RAM */
- AM_RANGE(0x1f4000, 0x1fffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("frontvideoram")
- AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */
- AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w)
- AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blockout_state::agress_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P2")
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x100006, 0x100007) AM_READ_PORT("DSW1")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW2")
- AM_RANGE(0x100010, 0x100011) AM_WRITE(blockout_irq6_ack_w)
- AM_RANGE(0x100012, 0x100013) AM_WRITE(blockout_irq5_ack_w)
- AM_RANGE(0x100014, 0x100015) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* don't know, maybe reset sound CPU */
- AM_RANGE(0x180000, 0x1bffff) AM_RAM_WRITE(blockout_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1d4000, 0x1dffff) AM_RAM /* work RAM */
- AM_RANGE(0x1f4000, 0x1fffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("frontvideoram")
- AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */
- AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w)
- AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blockout_state::audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void blockout_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100001).portr("P1");
+ map(0x100002, 0x100003).portr("P2");
+ map(0x100004, 0x100005).portr("SYSTEM");
+ map(0x100006, 0x100007).portr("DSW1");
+ map(0x100008, 0x100009).portr("DSW2");
+ map(0x100010, 0x100011).w(this, FUNC(blockout_state::blockout_irq6_ack_w));
+ map(0x100012, 0x100013).w(this, FUNC(blockout_state::blockout_irq5_ack_w));
+ map(0x100015, 0x100015).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x100016, 0x100017).nopw(); /* don't know, maybe reset sound CPU */
+ map(0x180000, 0x1bffff).ram().w(this, FUNC(blockout_state::blockout_videoram_w)).share("videoram");
+ map(0x1d4000, 0x1dffff).ram(); /* work RAM */
+ map(0x1f4000, 0x1fffff).ram(); /* work RAM */
+ map(0x200000, 0x207fff).ram().share("frontvideoram");
+ map(0x208000, 0x21ffff).ram(); /* ??? */
+ map(0x280002, 0x280003).w(this, FUNC(blockout_state::blockout_frontcolor_w));
+ map(0x280200, 0x2805ff).ram().w(this, FUNC(blockout_state::blockout_paletteram_w)).share("paletteram");
+}
+
+void blockout_state::agress_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100001).portr("P1");
+ map(0x100002, 0x100003).portr("P2");
+ map(0x100004, 0x100005).portr("SYSTEM");
+ map(0x100006, 0x100007).portr("DSW1");
+ map(0x100008, 0x100009).portr("DSW2");
+ map(0x100010, 0x100011).w(this, FUNC(blockout_state::blockout_irq6_ack_w));
+ map(0x100012, 0x100013).w(this, FUNC(blockout_state::blockout_irq5_ack_w));
+ map(0x100015, 0x100015).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x100016, 0x100017).nopw(); /* don't know, maybe reset sound CPU */
+ map(0x180000, 0x1bffff).ram().w(this, FUNC(blockout_state::blockout_videoram_w)).share("videoram");
+ map(0x1d4000, 0x1dffff).ram(); /* work RAM */
+ map(0x1f4000, 0x1fffff).ram(); /* work RAM */
+ map(0x200000, 0x207fff).ram().share("frontvideoram");
+ map(0x208000, 0x21ffff).ram(); /* ??? */
+ map(0x280002, 0x280003).w(this, FUNC(blockout_state::blockout_frontcolor_w));
+ map(0x280200, 0x2805ff).ram().w(this, FUNC(blockout_state::blockout_paletteram_w)).share("paletteram");
+}
+
+void blockout_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*************************************
diff --git a/src/mame/drivers/bloodbro.cpp b/src/mame/drivers/bloodbro.cpp
index 5e86ad4bcfa..29272272195 100644
--- a/src/mame/drivers/bloodbro.cpp
+++ b/src/mame/drivers/bloodbro.cpp
@@ -149,37 +149,40 @@ Video:
/* Memory Maps */
-ADDRESS_MAP_START(bloodbro_state::common_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08afff) AM_RAM
- AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x08c000, 0x08c3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x08c400, 0x08cfff) AM_RAM
- AM_RANGE(0x08d000, 0x08d3ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x08d400, 0x08d7ff) AM_RAM
- AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0x08e000, 0x08e7ff) AM_RAM
- AM_RANGE(0x08e800, 0x08f7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08f800, 0x08ffff) AM_RAM
- AM_RANGE(0x0a0000, 0x0a000d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
+void bloodbro_state::common_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08afff).ram();
+ map(0x08b000, 0x08bfff).ram().share("spriteram");
+ map(0x08c000, 0x08c3ff).ram().w(this, FUNC(bloodbro_state::bgvideoram_w)).share("bgvideoram");
+ map(0x08c400, 0x08cfff).ram();
+ map(0x08d000, 0x08d3ff).ram().w(this, FUNC(bloodbro_state::fgvideoram_w)).share("fgvideoram");
+ map(0x08d400, 0x08d7ff).ram();
+ map(0x08d800, 0x08dfff).ram().w(this, FUNC(bloodbro_state::txvideoram_w)).share("txvideoram");
+ map(0x08e000, 0x08e7ff).ram();
+ map(0x08e800, 0x08f7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08f800, 0x08ffff).ram();
+ map(0x0a0000, 0x0a000d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
// AM_RANGE(0x0c0000, 0x0c007f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x0c0080, 0x0c0081) AM_WRITENOP // ??? IRQ Ack VBL?
- AM_RANGE(0x0c00c0, 0x0c00c1) AM_WRITENOP // ??? watchdog?
- AM_RANGE(0x0c0100, 0x0c0101) AM_WRITENOP // ??? written once
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("DSW")
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("IN0")
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bloodbro_state::bloodbro_map)
- AM_IMPORT_FROM(common_map)
- AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bloodbro_state::skysmash_map)
- AM_IMPORT_FROM(common_map)
- AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read_alt, write_alt)
-ADDRESS_MAP_END
+ map(0x0c0080, 0x0c0081).nopw(); // ??? IRQ Ack VBL?
+ map(0x0c00c0, 0x0c00c1).nopw(); // ??? watchdog?
+ map(0x0c0100, 0x0c0101).nopw(); // ??? written once
+ map(0x0e0000, 0x0e0001).portr("DSW");
+ map(0x0e0002, 0x0e0003).portr("IN0");
+ map(0x0e0004, 0x0e0005).portr("IN1");
+}
+
+void bloodbro_state::bloodbro_map(address_map &map)
+{
+ common_map(map);
+ map(0xc0000, 0xc004f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+}
+
+void bloodbro_state::skysmash_map(address_map &map)
+{
+ common_map(map);
+ map(0xc0000, 0xc004f).rw("crtc", FUNC(seibu_crtc_device::read_alt), FUNC(seibu_crtc_device::write_alt));
+}
WRITE8_MEMBER(bloodbro_state::weststry_soundlatch_w)
{
@@ -189,24 +192,25 @@ WRITE8_MEMBER(bloodbro_state::weststry_soundlatch_w)
m_audiocpu->set_input_line(0, ASSERT_LINE);
}
-ADDRESS_MAP_START(bloodbro_state::weststry_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM // old VRAM areas still used, but bootleg code copies them to higher addresses
- AM_RANGE(0x0c1000, 0x0c1001) AM_READ_PORT("DSW")
- AM_RANGE(0x0c1002, 0x0c1003) AM_READ_PORT("IN0")
- AM_RANGE(0x0c1004, 0x0c1005) AM_READ_PORT("IN1")
- AM_RANGE(0x0c1000, 0x0c1003) AM_WRITE8(weststry_soundlatch_w, 0xff00)
- AM_RANGE(0x0c1004, 0x0c100b) AM_WRITE(weststry_layer_scroll_w)
- AM_RANGE(0x0e0002, 0x0e0003) AM_READNOP // remnant of old code
- AM_RANGE(0x122800, 0x122bff) AM_RAM // cleared at startup
- AM_RANGE(0x122c00, 0x122fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x123000, 0x1233ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x123400, 0x1237ff) AM_RAM // cleared at startup
- AM_RANGE(0x123800, 0x123fff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0x124000, 0x124005) AM_RAM
- AM_RANGE(0x124006, 0x1247fd) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x128000, 0x1287ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void bloodbro_state::weststry_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram(); // old VRAM areas still used, but bootleg code copies them to higher addresses
+ map(0x0c1000, 0x0c1001).portr("DSW");
+ map(0x0c1002, 0x0c1003).portr("IN0");
+ map(0x0c1004, 0x0c1005).portr("IN1");
+ map(0x0c1000, 0x0c1003).w(this, FUNC(bloodbro_state::weststry_soundlatch_w)).umask16(0xff00);
+ map(0x0c1004, 0x0c100b).w(this, FUNC(bloodbro_state::weststry_layer_scroll_w));
+ map(0x0e0002, 0x0e0003).nopr(); // remnant of old code
+ map(0x122800, 0x122bff).ram(); // cleared at startup
+ map(0x122c00, 0x122fff).ram().w(this, FUNC(bloodbro_state::fgvideoram_w)).share("fgvideoram");
+ map(0x123000, 0x1233ff).ram().w(this, FUNC(bloodbro_state::bgvideoram_w)).share("bgvideoram");
+ map(0x123400, 0x1237ff).ram(); // cleared at startup
+ map(0x123800, 0x123fff).ram().w(this, FUNC(bloodbro_state::txvideoram_w)).share("txvideoram");
+ map(0x124000, 0x124005).ram();
+ map(0x124006, 0x1247fd).ram().share("spriteram");
+ map(0x128000, 0x1287ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
WRITE_LINE_MEMBER(bloodbro_state::weststry_opl_irq_w)
{
@@ -234,10 +238,11 @@ void bloodbro_state::weststry_soundnmi_update()
m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-ADDRESS_MAP_START(bloodbro_state::weststry_sound_map)
- AM_IMPORT_FROM(seibu_sound_map)
- AM_RANGE(0x4002, 0x4002) AM_WRITE(weststry_soundnmi_ack_w)
-ADDRESS_MAP_END
+void bloodbro_state::weststry_sound_map(address_map &map)
+{
+ seibu_sound_map(map);
+ map(0x4002, 0x4002).w(this, FUNC(bloodbro_state::weststry_soundnmi_ack_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/blstroid.cpp b/src/mame/drivers/blstroid.cpp
index ba93ea5ec89..5450bd56cc0 100644
--- a/src/mame/drivers/blstroid.cpp
+++ b/src/mame/drivers/blstroid.cpp
@@ -64,29 +64,30 @@ void blstroid_state::machine_reset()
*************************************/
/* full map verified from schematics */
-ADDRESS_MAP_START(blstroid_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x83ffff)
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x000000) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x0381fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x0381fe) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0x800400, 0x800401) AM_MIRROR(0x0381fe) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x800600, 0x800601) AM_MIRROR(0x0381fe) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x800800, 0x8009ff) AM_MIRROR(0x038000) AM_WRITEONLY AM_SHARE("priorityram")
- AM_RANGE(0x800a00, 0x800a01) AM_MIRROR(0x0381fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff)
- AM_RANGE(0x800c00, 0x800c01) AM_MIRROR(0x0381fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w)
- AM_RANGE(0x800e00, 0x800e01) AM_MIRROR(0x0381fe) AM_WRITE(blstroid_halt_until_hblank_0_w)
- AM_RANGE(0x801400, 0x801401) AM_MIRROR(0x0383fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
- AM_RANGE(0x801800, 0x801801) AM_MIRROR(0x0383f8) AM_READ_PORT("DIAL0")
- AM_RANGE(0x801804, 0x801805) AM_MIRROR(0x0383f8) AM_READ_PORT("DIAL1")
- AM_RANGE(0x801c00, 0x801c01) AM_MIRROR(0x0383fc) AM_READ_PORT("IN0")
- AM_RANGE(0x801c02, 0x801c03) AM_MIRROR(0x0383fc) AM_READ_PORT("IN1")
- AM_RANGE(0x802000, 0x8023ff) AM_MIRROR(0x038c00) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x803000, 0x8033ff) AM_MIRROR(0x038c00) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x804000, 0x804fff) AM_MIRROR(0x038000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x805000, 0x805fff) AM_MIRROR(0x038000) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x806000, 0x807fff) AM_MIRROR(0x038000) AM_RAM
-ADDRESS_MAP_END
+void blstroid_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x83ffff);
+ map(0x000000, 0x03ffff).mirror(0x000000).rom();
+ map(0x800000, 0x800001).mirror(0x0381fe).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x800200, 0x800201).mirror(0x0381fe).w(this, FUNC(blstroid_state::scanline_int_ack_w));
+ map(0x800400, 0x800401).mirror(0x0381fe).w(this, FUNC(blstroid_state::video_int_ack_w));
+ map(0x800600, 0x800601).mirror(0x0381fe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x800800, 0x8009ff).mirror(0x038000).writeonly().share("priorityram");
+ map(0x800a01, 0x800a01).mirror(0x0381fe).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w));
+ map(0x800c00, 0x800c01).mirror(0x0381fe).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w));
+ map(0x800e00, 0x800e01).mirror(0x0381fe).w(this, FUNC(blstroid_state::blstroid_halt_until_hblank_0_w));
+ map(0x801401, 0x801401).mirror(0x0383fe).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r));
+ map(0x801800, 0x801801).mirror(0x0383f8).portr("DIAL0");
+ map(0x801804, 0x801805).mirror(0x0383f8).portr("DIAL1");
+ map(0x801c00, 0x801c01).mirror(0x0383fc).portr("IN0");
+ map(0x801c02, 0x801c03).mirror(0x0383fc).portr("IN1");
+ map(0x802000, 0x8023ff).mirror(0x038c00).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x803000, 0x8033ff).mirror(0x038c00).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x804000, 0x804fff).mirror(0x038000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x805000, 0x805fff).mirror(0x038000).ram().share("mob");
+ map(0x806000, 0x807fff).mirror(0x038000).ram();
+}
diff --git a/src/mame/drivers/blueprnt.cpp b/src/mame/drivers/blueprnt.cpp
index 03012879afb..54292de4fee 100644
--- a/src/mame/drivers/blueprnt.cpp
+++ b/src/mame/drivers/blueprnt.cpp
@@ -101,40 +101,44 @@ WRITE8_MEMBER(blueprnt_state::blueprnt_coin_counter_w)
*
*************************************/
-ADDRESS_MAP_START(blueprnt_state::blueprnt_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // service mode checks for 8 chips = 64K
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(blueprnt_videoram_w) AM_MIRROR(0x400) AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0xb000, 0xb0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") AM_WRITE(blueprnt_coin_counter_w)
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ(blueprnt_sh_dipsw_r)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(blueprnt_sound_command_w)
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(blueprnt_flipscreen_w)
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_MIRROR(0x400) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blueprnt_state::grasspin_map)
- AM_IMPORT_FROM( blueprnt_map )
- AM_RANGE(0xc003, 0xc003) AM_READ(grasspin_sh_dipsw_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(blueprnt_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_MIRROR(0x1000)
- AM_RANGE(0x2000, 0x2fff) AM_ROM AM_MIRROR(0x1000)
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x6002, 0x6002) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8002, 0x8002) AM_DEVREAD("ay2", ay8910_device, data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blueprnt_state::sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_NOP // nmi mask maybe? grasspin writes it 0/1
-ADDRESS_MAP_END
+void blueprnt_state::blueprnt_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // service mode checks for 8 chips = 64K
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(blueprnt_state::blueprnt_videoram_w)).mirror(0x400).share("videoram");
+ map(0xa000, 0xa0ff).ram().share("scrollram");
+ map(0xb000, 0xb0ff).ram().share("spriteram");
+ map(0xc000, 0xc000).portr("P1").w(this, FUNC(blueprnt_state::blueprnt_coin_counter_w));
+ map(0xc001, 0xc001).portr("P2");
+ map(0xc003, 0xc003).r(this, FUNC(blueprnt_state::blueprnt_sh_dipsw_r));
+ map(0xd000, 0xd000).w(this, FUNC(blueprnt_state::blueprnt_sound_command_w));
+ map(0xe000, 0xe000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(blueprnt_state::blueprnt_flipscreen_w));
+ map(0xf000, 0xf3ff).ram().w(this, FUNC(blueprnt_state::blueprnt_colorram_w)).mirror(0x400).share("colorram");
+}
+
+void blueprnt_state::grasspin_map(address_map &map)
+{
+ blueprnt_map(map);
+ map(0xc003, 0xc003).r(this, FUNC(blueprnt_state::grasspin_sh_dipsw_r));
+}
+
+
+void blueprnt_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().mirror(0x1000);
+ map(0x2000, 0x2fff).rom().mirror(0x1000);
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x6002, 0x6002).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8000, 0x8001).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8002, 0x8002).r("ay2", FUNC(ay8910_device::data_r));
+}
+
+void blueprnt_state::sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x02).noprw(); // nmi mask maybe? grasspin writes it 0/1
+}
diff --git a/src/mame/drivers/bmcbowl.cpp b/src/mame/drivers/bmcbowl.cpp
index 0fb0dd94485..755aa4bd3ea 100644
--- a/src/mame/drivers/bmcbowl.cpp
+++ b/src/mame/drivers/bmcbowl.cpp
@@ -312,41 +312,42 @@ void bmcbowl_state::machine_reset()
#endif
}
-ADDRESS_MAP_START(bmcbowl_state::bmcbowl_mem)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
+void bmcbowl_state::bmcbowl_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
- AM_RANGE(0x090000, 0x090001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x090002, 0x090003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x090004, 0x090005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
+ map(0x090001, 0x090001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x090003, 0x090003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x090005, 0x090005).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x090800, 0x090803) AM_WRITENOP
- AM_RANGE(0x091000, 0x091001) AM_WRITENOP
- AM_RANGE(0x091800, 0x091801) AM_WRITE(scroll_w)
+ map(0x090800, 0x090803).nopw();
+ map(0x091000, 0x091001).nopw();
+ map(0x091800, 0x091801).w(this, FUNC(bmcbowl_state::scroll_w));
- AM_RANGE(0x092000, 0x09201f) AM_DEVREADWRITE8("via6522_0", via6522_device, read, write, 0x00ff)
+ map(0x092000, 0x09201f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0x00ff);
- AM_RANGE(0x093000, 0x093003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8("aysnd", ay8910_device, data_address_w, 0xff00)
- AM_RANGE(0x092802, 0x092803) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0xff00)
- AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0")
- AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("nvram") /* 8 bit */
- AM_RANGE(0x097000, 0x097001) AM_READNOP
- AM_RANGE(0x140000, 0x1bffff) AM_ROM
- AM_RANGE(0x1c0000, 0x1effff) AM_RAM AM_SHARE("vid1")
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("vid2")
+ map(0x093000, 0x093003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x092800, 0x092803).w("aysnd", FUNC(ay8910_device::data_address_w)).umask16(0xff00);
+ map(0x092802, 0x092802).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x093802, 0x093803).portr("IN0");
+ map(0x095000, 0x095fff).ram().share("nvram"); /* 8 bit */
+ map(0x097000, 0x097001).nopr();
+ map(0x140000, 0x1bffff).rom();
+ map(0x1c0000, 0x1effff).ram().share("vid1");
+ map(0x1f0000, 0x1fffff).ram();
+ map(0x200000, 0x21ffff).ram().share("vid2");
- AM_RANGE(0x28c000, 0x28c001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
+ map(0x28c000, 0x28c000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
/* protection device*/
- AM_RANGE(0x30c000, 0x30c001) AM_WRITENOP
- AM_RANGE(0x30c040, 0x30c041) AM_WRITENOP
- AM_RANGE(0x30c080, 0x30c081) AM_WRITENOP
- AM_RANGE(0x30c0c0, 0x30c0c1) AM_WRITENOP
- AM_RANGE(0x30c100, 0x30c101) AM_READ(bmc_protection_r)
- AM_RANGE(0x30c140, 0x30c141) AM_WRITENOP
- AM_RANGE(0x30ca00, 0x30ca01) AM_READ(bmc_random_read) AM_WRITENOP
-ADDRESS_MAP_END
+ map(0x30c000, 0x30c001).nopw();
+ map(0x30c040, 0x30c041).nopw();
+ map(0x30c080, 0x30c081).nopw();
+ map(0x30c0c0, 0x30c0c1).nopw();
+ map(0x30c100, 0x30c101).r(this, FUNC(bmcbowl_state::bmc_protection_r));
+ map(0x30c140, 0x30c141).nopw();
+ map(0x30ca00, 0x30ca01).r(this, FUNC(bmcbowl_state::bmc_random_read)).nopw();
+}
static INPUT_PORTS_START( bmcbowl )
@@ -449,9 +450,10 @@ WRITE8_MEMBER(bmcbowl_state::input_mux_w)
m_bmc_input=data;
}
-ADDRESS_MAP_START(bmcbowl_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void bmcbowl_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(bmcbowl_state::bmcbowl)
MCFG_CPU_ADD("maincpu", M68000, XTAL(21'477'272) / 2 )
diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp
index 7afa622fc4b..95c74678cd3 100644
--- a/src/mame/drivers/bmcpokr.cpp
+++ b/src/mame/drivers/bmcpokr.cpp
@@ -380,50 +380,51 @@ WRITE16_MEMBER(bmcpokr_state::irq_ack_w)
}
}
-ADDRESS_MAP_START(bmcpokr_state::bmcpokr_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("nvram")
+void bmcpokr_state::bmcpokr_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x210000, 0x21ffff).ram().share("nvram");
- AM_RANGE(0x280000, 0x287fff) AM_RAM_WRITE(videoram_1_w) AM_SHARE("videoram_1")
- AM_RANGE(0x288000, 0x28ffff) AM_RAM_WRITE(videoram_2_w) AM_SHARE("videoram_2")
- AM_RANGE(0x290000, 0x297fff) AM_RAM
+ map(0x280000, 0x287fff).ram().w(this, FUNC(bmcpokr_state::videoram_1_w)).share("videoram_1");
+ map(0x288000, 0x28ffff).ram().w(this, FUNC(bmcpokr_state::videoram_2_w)).share("videoram_2");
+ map(0x290000, 0x297fff).ram();
- AM_RANGE(0x2a0000, 0x2dffff) AM_RAM_WRITE(pixram_w) AM_SHARE("pixram")
+ map(0x2a0000, 0x2dffff).ram().w(this, FUNC(bmcpokr_state::pixram_w)).share("pixram");
- AM_RANGE(0x2ff800, 0x2ff9ff) AM_RAM AM_SHARE("scrollram_1")
- AM_RANGE(0x2ffa00, 0x2ffbff) AM_RAM AM_SHARE("scrollram_2")
- AM_RANGE(0x2ffc00, 0x2ffdff) AM_RAM AM_SHARE("scrollram_3")
- AM_RANGE(0x2ffe00, 0x2fffff) AM_RAM
+ map(0x2ff800, 0x2ff9ff).ram().share("scrollram_1");
+ map(0x2ffa00, 0x2ffbff).ram().share("scrollram_2");
+ map(0x2ffc00, 0x2ffdff).ram().share("scrollram_3");
+ map(0x2ffe00, 0x2fffff).ram();
- AM_RANGE(0x320000, 0x320003) AM_RAM AM_SHARE("layerctrl")
+ map(0x320000, 0x320003).ram().share("layerctrl");
- AM_RANGE(0x330000, 0x330001) AM_READWRITE(prot_r, prot_w)
+ map(0x330000, 0x330001).rw(this, FUNC(bmcpokr_state::prot_r), FUNC(bmcpokr_state::prot_w));
- AM_RANGE(0x340000, 0x340001) AM_RAM // 340001.b, rw
- AM_RANGE(0x340002, 0x340003) AM_RAM // 340003.b, w(9d)
- AM_RANGE(0x340006, 0x340007) AM_WRITE(irq_ack_w)
- AM_RANGE(0x340008, 0x340009) AM_WRITE(irq_enable_w)
- AM_RANGE(0x34000e, 0x34000f) AM_RAM AM_SHARE("priority") // 34000f.b, w (priority?)
- AM_RANGE(0x340016, 0x340017) AM_WRITE(pixpal_w)
- AM_RANGE(0x340018, 0x340019) AM_RAM // 340019.b, w
- AM_RANGE(0x34001a, 0x34001b) AM_READ(unk_r) AM_WRITENOP
- AM_RANGE(0x34001c, 0x34001d) AM_RAM // 34001d.b, w(0)
+ map(0x340000, 0x340001).ram(); // 340001.b, rw
+ map(0x340002, 0x340003).ram(); // 340003.b, w(9d)
+ map(0x340006, 0x340007).w(this, FUNC(bmcpokr_state::irq_ack_w));
+ map(0x340008, 0x340009).w(this, FUNC(bmcpokr_state::irq_enable_w));
+ map(0x34000e, 0x34000f).ram().share("priority"); // 34000f.b, w (priority?)
+ map(0x340016, 0x340017).w(this, FUNC(bmcpokr_state::pixpal_w));
+ map(0x340018, 0x340019).ram(); // 340019.b, w
+ map(0x34001a, 0x34001b).r(this, FUNC(bmcpokr_state::unk_r)).nopw();
+ map(0x34001c, 0x34001d).ram(); // 34001d.b, w(0)
- AM_RANGE(0x350000, 0x350001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x00ff )
- AM_RANGE(0x350002, 0x350003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x350004, 0x350005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x00ff )
+ map(0x350001, 0x350001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x350003, 0x350003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x350005, 0x350005).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x360000, 0x360001) AM_READ(dsw_r)
+ map(0x360000, 0x360001).r(this, FUNC(bmcpokr_state::dsw_r));
- AM_RANGE(0x370000, 0x370001) AM_READ_PORT("INPUTS")
+ map(0x370000, 0x370001).portr("INPUTS");
- AM_RANGE(0x380000, 0x380001) AM_WRITE(mux_w)
+ map(0x380000, 0x380001).w(this, FUNC(bmcpokr_state::mux_w));
- AM_RANGE(0x390000, 0x390003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x398000, 0x398001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x390000, 0x390003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x398001, 0x398001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("INPUTS2")
-ADDRESS_MAP_END
+ map(0x3b0000, 0x3b0001).portr("INPUTS2");
+}
READ16_MEMBER(bmcpokr_state::mjmaglmp_dsw_r)
@@ -452,46 +453,47 @@ READ16_MEMBER(bmcpokr_state::mjmaglmp_key_r)
return ioport("INPUTS")->read() | (key & 0x3f);
}
-ADDRESS_MAP_START(bmcpokr_state::mjmaglmp_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("nvram")
+void bmcpokr_state::mjmaglmp_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x210000, 0x21ffff).ram().share("nvram");
- AM_RANGE(0x280000, 0x287fff) AM_RAM_WRITE(videoram_1_w) AM_SHARE("videoram_1")
- AM_RANGE(0x288000, 0x28ffff) AM_RAM_WRITE(videoram_2_w) AM_SHARE("videoram_2")
- AM_RANGE(0x290000, 0x297fff) AM_RAM
+ map(0x280000, 0x287fff).ram().w(this, FUNC(bmcpokr_state::videoram_1_w)).share("videoram_1");
+ map(0x288000, 0x28ffff).ram().w(this, FUNC(bmcpokr_state::videoram_2_w)).share("videoram_2");
+ map(0x290000, 0x297fff).ram();
- AM_RANGE(0x2a0000, 0x2dffff) AM_RAM_WRITE(pixram_w) AM_SHARE("pixram")
+ map(0x2a0000, 0x2dffff).ram().w(this, FUNC(bmcpokr_state::pixram_w)).share("pixram");
- AM_RANGE(0x2ff800, 0x2ff9ff) AM_RAM AM_SHARE("scrollram_1")
- AM_RANGE(0x2ffa00, 0x2ffbff) AM_RAM AM_SHARE("scrollram_2")
- AM_RANGE(0x2ffc00, 0x2ffdff) AM_RAM AM_SHARE("scrollram_3")
- AM_RANGE(0x2ffe00, 0x2fffff) AM_RAM
+ map(0x2ff800, 0x2ff9ff).ram().share("scrollram_1");
+ map(0x2ffa00, 0x2ffbff).ram().share("scrollram_2");
+ map(0x2ffc00, 0x2ffdff).ram().share("scrollram_3");
+ map(0x2ffe00, 0x2fffff).ram();
- AM_RANGE(0x320000, 0x320003) AM_RAM AM_SHARE("layerctrl")
+ map(0x320000, 0x320003).ram().share("layerctrl");
- AM_RANGE(0x388000, 0x388001) AM_WRITE(mux_w)
+ map(0x388000, 0x388001).w(this, FUNC(bmcpokr_state::mux_w));
- AM_RANGE(0x390000, 0x390001) AM_READ(mjmaglmp_dsw_r)
+ map(0x390000, 0x390001).r(this, FUNC(bmcpokr_state::mjmaglmp_dsw_r));
- AM_RANGE(0x398000, 0x398001) AM_READ(mjmaglmp_key_r)
+ map(0x398000, 0x398001).r(this, FUNC(bmcpokr_state::mjmaglmp_key_r));
- AM_RANGE(0x3c8800, 0x3c8803) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x3c9000, 0x3c9001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x3c8800, 0x3c8803).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x3c9001, 0x3c9001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x3c9800, 0x3c9801) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x00ff )
- AM_RANGE(0x3c9802, 0x3c9803) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x3c9804, 0x3c9805) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x00ff )
+ map(0x3c9801, 0x3c9801).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x3c9803, 0x3c9803).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x3c9805, 0x3c9805).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x3ca000, 0x3ca001) AM_RAM // 3ca001.b, rw
- AM_RANGE(0x3ca002, 0x3ca003) AM_RAM // 3ca003.b, w(9d)
- AM_RANGE(0x3ca006, 0x3ca007) AM_WRITE(irq_ack_w)
- AM_RANGE(0x3ca008, 0x3ca009) AM_WRITE(irq_enable_w)
- AM_RANGE(0x3ca00e, 0x3ca00f) AM_RAM AM_SHARE("priority") // 3ca00f.b, w (priority?)
- AM_RANGE(0x3ca016, 0x3ca017) AM_WRITE(pixpal_w)
- AM_RANGE(0x3ca018, 0x3ca019) AM_RAM // 3ca019.b, w
- AM_RANGE(0x3ca01a, 0x3ca01b) AM_READ(unk_r) AM_WRITENOP
- AM_RANGE(0x3ca01c, 0x3ca01d) AM_RAM // 3ca01d.b, w(0)
-ADDRESS_MAP_END
+ map(0x3ca000, 0x3ca001).ram(); // 3ca001.b, rw
+ map(0x3ca002, 0x3ca003).ram(); // 3ca003.b, w(9d)
+ map(0x3ca006, 0x3ca007).w(this, FUNC(bmcpokr_state::irq_ack_w));
+ map(0x3ca008, 0x3ca009).w(this, FUNC(bmcpokr_state::irq_enable_w));
+ map(0x3ca00e, 0x3ca00f).ram().share("priority"); // 3ca00f.b, w (priority?)
+ map(0x3ca016, 0x3ca017).w(this, FUNC(bmcpokr_state::pixpal_w));
+ map(0x3ca018, 0x3ca019).ram(); // 3ca019.b, w
+ map(0x3ca01a, 0x3ca01b).r(this, FUNC(bmcpokr_state::unk_r)).nopw();
+ map(0x3ca01c, 0x3ca01d).ram(); // 3ca01d.b, w(0)
+}
/***************************************************************************
Input Ports
@@ -801,9 +803,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(bmcpokr_state::interrupt)
if (m_irq_enable & (1<<6)) m_maincpu->set_input_line(6, ASSERT_LINE);
}
-ADDRESS_MAP_START(bmcpokr_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void bmcpokr_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(bmcpokr_state::bmcpokr)
MCFG_CPU_ADD("maincpu", M68000, XTAL(42'000'000) / 4) // 68000 @10.50MHz (42/4)
diff --git a/src/mame/drivers/bmjr.cpp b/src/mame/drivers/bmjr.cpp
index e89e758d02a..cfce4002fdf 100644
--- a/src/mame/drivers/bmjr.cpp
+++ b/src/mame/drivers/bmjr.cpp
@@ -164,28 +164,29 @@ WRITE8_MEMBER( bmjr_state::xor_display_w )
m_xor_display = data;
}
-ADDRESS_MAP_START(bmjr_state::bmjr_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void bmjr_state::bmjr_mem(address_map &map)
+{
+ map.unmap_value_high();
//0x0100, 0x03ff basic vram
//0x0900, 0x20ff vram, modes 0x40 / 0xc0
//0x2100, 0x38ff vram, modes 0x44 / 0xcc
- AM_RANGE(0x0000, 0xafff) AM_RAM AM_SHARE("wram")
- AM_RANGE(0xb000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_ROM
+ map(0x0000, 0xafff).ram().share("wram");
+ map(0xb000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).rom();
// AM_RANGE(0xe890, 0xe890) W MP-1710 tile color
// AM_RANGE(0xe891, 0xe891) W MP-1710 background color
// AM_RANGE(0xe892, 0xe892) W MP-1710 monochrome / color setting
- AM_RANGE(0xee00, 0xee00) AM_READ(tape_stop_r) //R stop tape
- AM_RANGE(0xee20, 0xee20) AM_READ(tape_start_r) //R start tape
- AM_RANGE(0xee40, 0xee40) AM_WRITE(xor_display_w) //W Picture reverse
- AM_RANGE(0xee80, 0xee80) AM_READWRITE(tape_r,tape_w)//RW tape input / output
- AM_RANGE(0xeec0, 0xeec0) AM_READWRITE(key_r,key_w)//RW keyboard
- AM_RANGE(0xef00, 0xef00) AM_READ(ff_r) //R timer
- AM_RANGE(0xef40, 0xef40) AM_READ(ff_r) //R unknown
- AM_RANGE(0xef80, 0xef80) AM_READ(unk_r) //R unknown
+ map(0xee00, 0xee00).r(this, FUNC(bmjr_state::tape_stop_r)); //R stop tape
+ map(0xee20, 0xee20).r(this, FUNC(bmjr_state::tape_start_r)); //R start tape
+ map(0xee40, 0xee40).w(this, FUNC(bmjr_state::xor_display_w)); //W Picture reverse
+ map(0xee80, 0xee80).rw(this, FUNC(bmjr_state::tape_r), FUNC(bmjr_state::tape_w));//RW tape input / output
+ map(0xeec0, 0xeec0).rw(this, FUNC(bmjr_state::key_r), FUNC(bmjr_state::key_w));//RW keyboard
+ map(0xef00, 0xef00).r(this, FUNC(bmjr_state::ff_r)); //R timer
+ map(0xef40, 0xef40).r(this, FUNC(bmjr_state::ff_r)); //R unknown
+ map(0xef80, 0xef80).r(this, FUNC(bmjr_state::unk_r)); //R unknown
// AM_RANGE(0xefe0, 0xefe0) W screen mode
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).rom();
+}
/* Input ports */
static INPUT_PORTS_START( bmjr )
diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp
index d199f517ed5..1cb795549ae 100644
--- a/src/mame/drivers/bml3.cpp
+++ b/src/mame/drivers/bml3.cpp
@@ -401,70 +401,73 @@ WRITE_LINE_MEMBER(bml3_state::bml3bus_firq_w)
}
-ADDRESS_MAP_START(bml3_state::bml3_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x43ff) AM_READWRITE(bml3_vram_r,bml3_vram_w)
- AM_RANGE(0x4400, 0x9fff) AM_RAM
- AM_RANGE(0xff40, 0xff46) AM_NOP // lots of unknown reads and writes
- AM_RANGE(0xffc0, 0xffc3) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xffc4, 0xffc5) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xffc6, 0xffc7) AM_READWRITE(bml3_6845_r,bml3_6845_w)
+void bml3_state::bml3_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x43ff).rw(this, FUNC(bml3_state::bml3_vram_r), FUNC(bml3_state::bml3_vram_w));
+ map(0x4400, 0x9fff).ram();
+ map(0xff40, 0xff46).noprw(); // lots of unknown reads and writes
+ map(0xffc0, 0xffc3).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xffc4, 0xffc5).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xffc6, 0xffc7).rw(this, FUNC(bml3_state::bml3_6845_r), FUNC(bml3_state::bml3_6845_w));
// KBNMI - Keyboard "Break" key non-maskable interrupt
- AM_RANGE(0xffc8, 0xffc8) AM_READ(bml3_keyb_nmi_r) // keyboard nmi
+ map(0xffc8, 0xffc8).r(this, FUNC(bml3_state::bml3_keyb_nmi_r)); // keyboard nmi
// DIPSW - DIP switches on system mainboard
- AM_RANGE(0xffc9, 0xffc9) AM_READ_PORT("DSW")
+ map(0xffc9, 0xffc9).portr("DSW");
// TIMER - System timer enable
- AM_RANGE(0xffca, 0xffca) AM_READ(bml3_firq_status_r) // timer irq
+ map(0xffca, 0xffca).r(this, FUNC(bml3_state::bml3_firq_status_r)); // timer irq
// LPFLG - Light pen interrupt
// AM_RANGE(0xffcb, 0xffcb)
// MODE_SEL - Graphics mode select
- AM_RANGE(0xffd0, 0xffd0) AM_WRITE(bml3_hres_reg_w)
+ map(0xffd0, 0xffd0).w(this, FUNC(bml3_state::bml3_hres_reg_w));
// TRACE - Trace counter
// AM_RANGE(0xffd1, 0xffd1)
// REMOTE - Remote relay control for cassette - bit 7
- AM_RANGE(0xffd2, 0xffd2) AM_WRITE(relay_w)
+ map(0xffd2, 0xffd2).w(this, FUNC(bml3_state::relay_w));
// MUSIC_SEL - Music select: toggle audio output level when rising
- AM_RANGE(0xffd3, 0xffd3) AM_READWRITE(bml3_beep_r,bml3_beep_w)
+ map(0xffd3, 0xffd3).rw(this, FUNC(bml3_state::bml3_beep_r), FUNC(bml3_state::bml3_beep_w));
// TIME_MASK - Prohibit timer IRQ
- AM_RANGE(0xffd4, 0xffd4) AM_WRITE(bml3_firq_mask_w)
+ map(0xffd4, 0xffd4).w(this, FUNC(bml3_state::bml3_firq_mask_w));
// LPENBL - Light pen operation enable
- AM_RANGE(0xffd5, 0xffd5) AM_NOP
+ map(0xffd5, 0xffd5).noprw();
// INTERLACE_SEL - Interlaced video mode (manual has "INTERACE SEL"!)
- AM_RANGE(0xffd6, 0xffd6) AM_WRITE(bml3_vres_reg_w)
+ map(0xffd6, 0xffd6).w(this, FUNC(bml3_state::bml3_vres_reg_w));
// AM_RANGE(0xffd7, 0xffd7) baud select
// C_REG_SEL - Attribute register (character/video mode and colours)
- AM_RANGE(0xffd8, 0xffd8) AM_READWRITE(bml3_vram_attr_r,bml3_vram_attr_w)
+ map(0xffd8, 0xffd8).rw(this, FUNC(bml3_state::bml3_vram_attr_r), FUNC(bml3_state::bml3_vram_attr_w));
// KB - Keyboard mode register, interrupt control, keyboard LEDs
- AM_RANGE(0xffe0, 0xffe0) AM_READWRITE(bml3_keyboard_r,bml3_keyboard_w)
+ map(0xffe0, 0xffe0).rw(this, FUNC(bml3_state::bml3_keyboard_r), FUNC(bml3_state::bml3_keyboard_w));
// AM_RANGE(0xffe8, 0xffe8) bank register
// AM_RANGE(0xffe9, 0xffe9) IG mode register
// AM_RANGE(0xffea, 0xffea) IG enable register
- AM_RANGE(0xa000, 0xfeff) AM_ROM AM_REGION("maincpu", 0xa000)
- AM_RANGE(0xfff0, 0xffff) AM_ROM AM_REGION("maincpu", 0xfff0)
- AM_RANGE(0xa000, 0xbfff) AM_WRITE(bml3_a000_w)
- AM_RANGE(0xc000, 0xdfff) AM_WRITE(bml3_c000_w)
- AM_RANGE(0xe000, 0xefff) AM_WRITE(bml3_e000_w)
- AM_RANGE(0xf000, 0xfeff) AM_WRITE(bml3_f000_w)
- AM_RANGE(0xfff0, 0xffff) AM_WRITE(bml3_fff0_w)
+ map(0xa000, 0xfeff).rom().region("maincpu", 0xa000);
+ map(0xfff0, 0xffff).rom().region("maincpu", 0xfff0);
+ map(0xa000, 0xbfff).w(this, FUNC(bml3_state::bml3_a000_w));
+ map(0xc000, 0xdfff).w(this, FUNC(bml3_state::bml3_c000_w));
+ map(0xe000, 0xefff).w(this, FUNC(bml3_state::bml3_e000_w));
+ map(0xf000, 0xfeff).w(this, FUNC(bml3_state::bml3_f000_w));
+ map(0xfff0, 0xffff).w(this, FUNC(bml3_state::bml3_fff0_w));
#if 0
- AM_RANGE(0xff00, 0xff00) AM_READWRITE(bml3_ym2203_r,bml3_ym2203_w)
- AM_RANGE(0xff02, 0xff02) AM_READWRITE(bml3_psg_latch_r,bml3_psg_latch_w) // PSG address/data select
+ map(0xff00, 0xff00).rw(this, FUNC(bml3_state::bml3_ym2203_r), FUNC(bml3_state::bml3_ym2203_w));
+ map(0xff02, 0xff02).rw(this, FUNC(bml3_state::bml3_psg_latch_r), FUNC(bml3_state::bml3_psg_latch_w)); // PSG address/data select
#endif
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(bml3_state::bml3mk2_mem)
- AM_IMPORT_FROM(bml3_mem)
+void bml3_state::bml3mk2_mem(address_map &map)
+{
+ bml3_mem(map);
// TODO: anything to add here?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(bml3_state::bml3mk5_mem)
- AM_IMPORT_FROM(bml3_mem)
+void bml3_state::bml3mk5_mem(address_map &map)
+{
+ bml3_mem(map);
// TODO: anything to add here?
-ADDRESS_MAP_END
+}
/* Input ports */
diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp
index 4589b4aa8b7..e255fc48c47 100644
--- a/src/mame/drivers/bnstars.cpp
+++ b/src/mame/drivers/bnstars.cpp
@@ -742,63 +742,65 @@ WRITE32_MEMBER(bnstars_state::bnstars1_mahjong_select_w)
}
-ADDRESS_MAP_START(bnstars_state::bnstars_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM
+void bnstars_state::bnstars_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom();
- AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w)
+ map(0xfc800000, 0xfc800003).w(this, FUNC(bnstars_state::ms32_sound_w));
- AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("P1")
- AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_PORT("P2")
- AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW")
+ map(0xfcc00004, 0xfcc00007).portr("P1");
+ map(0xfcc00008, 0xfcc0000b).portr("P2");
+ map(0xfcc00010, 0xfcc00013).portr("DSW");
- AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP
- AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w)
+ map(0xfce00034, 0xfce00037).nopw();
+ map(0xfce00038, 0xfce0003b).w(this, FUNC(bnstars_state::reset_sub_w));
- AM_RANGE(0xfce00050, 0xfce00053) AM_WRITENOP
- AM_RANGE(0xfce00058, 0xfce0005b) AM_WRITENOP
- AM_RANGE(0xfce0005c, 0xfce0005f) AM_WRITENOP
- AM_RANGE(0xfce00300, 0xfce00303) AM_WRITENOP
+ map(0xfce00050, 0xfce00053).nopw();
+ map(0xfce00058, 0xfce0005b).nopw();
+ map(0xfce0005c, 0xfce0005f).nopw();
+ map(0xfce00300, 0xfce00303).nopw();
- AM_RANGE(0xfce00400, 0xfce0045f) AM_WRITEONLY AM_SHARE("roz_ctrl.0")
- AM_RANGE(0xfce00700, 0xfce0075f) AM_WRITEONLY AM_SHARE("roz_ctrl.1") // guess
- AM_RANGE(0xfce00a00, 0xfce00a17) AM_WRITEONLY AM_SHARE("tx0_scroll")
- AM_RANGE(0xfce00a20, 0xfce00a37) AM_WRITEONLY AM_SHARE("bg0_scroll")
- AM_RANGE(0xfce00c00, 0xfce00c17) AM_WRITEONLY AM_SHARE("tx1_scroll")
- AM_RANGE(0xfce00c20, 0xfce00c37) AM_WRITEONLY AM_SHARE("bg1_scroll")
+ map(0xfce00400, 0xfce0045f).writeonly().share("roz_ctrl.0");
+ map(0xfce00700, 0xfce0075f).writeonly().share("roz_ctrl.1"); // guess
+ map(0xfce00a00, 0xfce00a17).writeonly().share("tx0_scroll");
+ map(0xfce00a20, 0xfce00a37).writeonly().share("bg0_scroll");
+ map(0xfce00c00, 0xfce00c17).writeonly().share("tx1_scroll");
+ map(0xfce00c20, 0xfce00c37).writeonly().share("bg1_scroll");
- AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(bnstars1_mahjong_select_w) // ?
+ map(0xfce00e00, 0xfce00e03).w(this, FUNC(bnstars_state::bnstars1_mahjong_select_w)); // ?
- AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r)
+ map(0xfd000000, 0xfd000003).r(this, FUNC(bnstars_state::ms32_sound_r));
/* wrote together */
- AM_RANGE(0xfd040000, 0xfd047fff) AM_RAM // priority ram
- AM_RANGE(0xfd080000, 0xfd087fff) AM_RAM
- AM_RANGE(0xfd200000, 0xfd237fff) AM_DEVREADWRITE16("palette2", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette2")
- AM_RANGE(0xfd400000, 0xfd437fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE(ms32_roz1_ram_w) AM_SHARE("roz1_ram")
- AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE(ms32_roz0_ram_w) AM_SHARE("roz0_ram")
- AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM AM_SHARE("spram")
- AM_RANGE(0xfea00000, 0xfea07fff) AM_RAM_WRITE(ms32_tx1_ram_w) AM_SHARE("tx1_ram")
- AM_RANGE(0xfea08000, 0xfea0ffff) AM_RAM_WRITE(ms32_bg1_ram_w) AM_SHARE("bg1_ram")
- AM_RANGE(0xfec00000, 0xfec07fff) AM_RAM_WRITE(ms32_tx0_ram_w) AM_SHARE("tx0_ram")
- AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_SHARE("bg0_ram")
-
- AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bnstars_state::bnstars_sound_map)
- AM_RANGE(0x0000, 0x3eff) AM_ROM
- AM_RANGE(0x3f00, 0x3f0f) AM_DEVREADWRITE("ymf2", ymf271_device, read, write)
- AM_RANGE(0x3f10, 0x3f10) AM_READWRITE(latch_r,to_main_w)
- AM_RANGE(0x3f20, 0x3f2f) AM_DEVREADWRITE("ymf1", ymf271_device, read, write)
- AM_RANGE(0x3f40, 0x3f40) AM_WRITENOP /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */
- AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP // watchdog? banking? very noisy
- AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("z80bank2")
-ADDRESS_MAP_END
+ map(0xfd040000, 0xfd047fff).ram(); // priority ram
+ map(0xfd080000, 0xfd087fff).ram();
+ map(0xfd200000, 0xfd237fff).rw("palette2", FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette2");
+ map(0xfd400000, 0xfd437fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0xfe000000, 0xfe01ffff).ram().w(this, FUNC(bnstars_state::ms32_roz1_ram_w)).share("roz1_ram");
+ map(0xfe400000, 0xfe41ffff).ram().w(this, FUNC(bnstars_state::ms32_roz0_ram_w)).share("roz0_ram");
+ map(0xfe800000, 0xfe83ffff).ram().share("spram");
+ map(0xfea00000, 0xfea07fff).ram().w(this, FUNC(bnstars_state::ms32_tx1_ram_w)).share("tx1_ram");
+ map(0xfea08000, 0xfea0ffff).ram().w(this, FUNC(bnstars_state::ms32_bg1_ram_w)).share("bg1_ram");
+ map(0xfec00000, 0xfec07fff).ram().w(this, FUNC(bnstars_state::ms32_tx0_ram_w)).share("tx0_ram");
+ map(0xfec08000, 0xfec0ffff).ram().w(this, FUNC(bnstars_state::ms32_bg0_ram_w)).share("bg0_ram");
+
+ map(0xfee00000, 0xfee1ffff).ram();
+ map(0xffe00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void bnstars_state::bnstars_sound_map(address_map &map)
+{
+ map(0x0000, 0x3eff).rom();
+ map(0x3f00, 0x3f0f).rw("ymf2", FUNC(ymf271_device::read), FUNC(ymf271_device::write));
+ map(0x3f10, 0x3f10).rw(this, FUNC(bnstars_state::latch_r), FUNC(bnstars_state::to_main_w));
+ map(0x3f20, 0x3f2f).rw("ymf1", FUNC(ymf271_device::read), FUNC(ymf271_device::write));
+ map(0x3f40, 0x3f40).nopw(); /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */
+ map(0x3f70, 0x3f70).nopw(); // watchdog? banking? very noisy
+ map(0x3f80, 0x3f80).w(this, FUNC(bnstars_state::ms32_snd_bank_w));
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0xbfff).bankr("z80bank1");
+ map(0xc000, 0xffff).bankr("z80bank2");
+}
MACHINE_CONFIG_START(bnstars_state::bnstars)
diff --git a/src/mame/drivers/bntyhunt.cpp b/src/mame/drivers/bntyhunt.cpp
index 99dbba77831..122a9431406 100644
--- a/src/mame/drivers/bntyhunt.cpp
+++ b/src/mame/drivers/bntyhunt.cpp
@@ -43,9 +43,10 @@ uint32_t bntyhunt_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-ADDRESS_MAP_START(bntyhunt_state::bntyhunt_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM
-ADDRESS_MAP_END
+void bntyhunt_state::bntyhunt_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom();
+}
static INPUT_PORTS_START( bntyhunt )
INPUT_PORTS_END
diff --git a/src/mame/drivers/bob85.cpp b/src/mame/drivers/bob85.cpp
index bddcf97a0a1..7d0e36688c2 100644
--- a/src/mame/drivers/bob85.cpp
+++ b/src/mame/drivers/bob85.cpp
@@ -143,17 +143,19 @@ WRITE8_MEMBER(bob85_state::bob85_7seg_w)
output().set_digit_value(offset, bitswap<8>( data,3,2,1,0,7,6,5,4 ));
}
-ADDRESS_MAP_START(bob85_state::bob85_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x02ff) AM_ROM
- AM_RANGE(0x0600, 0x09ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bob85_state::bob85_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0a, 0x0a) AM_READ(bob85_keyboard_r)
- AM_RANGE(0x0a, 0x0f) AM_WRITE(bob85_7seg_w)
-ADDRESS_MAP_END
+void bob85_state::bob85_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x02ff).rom();
+ map(0x0600, 0x09ff).ram();
+}
+
+void bob85_state::bob85_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0a, 0x0a).r(this, FUNC(bob85_state::bob85_keyboard_r));
+ map(0x0a, 0x0f).w(this, FUNC(bob85_state::bob85_7seg_w));
+}
/* Input ports */
static INPUT_PORTS_START( bob85 )
diff --git a/src/mame/drivers/bogeyman.cpp b/src/mame/drivers/bogeyman.cpp
index 8c10a6efd21..e4b4ead65a8 100644
--- a/src/mame/drivers/bogeyman.cpp
+++ b/src/mame/drivers/bogeyman.cpp
@@ -48,20 +48,21 @@ WRITE8_MEMBER(bogeyman_state::ay8910_control_w)
/* Memory Map */
-ADDRESS_MAP_START(bogeyman_state::bogeyman_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2100, 0x21ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x300f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") AM_WRITE(ay8910_control_w)
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") AM_WRITE(ay8910_latch_w)
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW1")
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW2") AM_WRITENOP // ??? sound
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void bogeyman_state::bogeyman_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram();
+ map(0x1800, 0x1bff).ram().w(this, FUNC(bogeyman_state::videoram2_w)).share("videoram2");
+ map(0x1c00, 0x1fff).ram().w(this, FUNC(bogeyman_state::colorram2_w)).share("colorram2");
+ map(0x2000, 0x20ff).ram().w(this, FUNC(bogeyman_state::videoram_w)).share("videoram");
+ map(0x2100, 0x21ff).ram().w(this, FUNC(bogeyman_state::colorram_w)).share("colorram");
+ map(0x2800, 0x2bff).ram().share("spriteram");
+ map(0x3000, 0x300f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3800, 0x3800).portr("P1").w(this, FUNC(bogeyman_state::ay8910_control_w));
+ map(0x3801, 0x3801).portr("P2").w(this, FUNC(bogeyman_state::ay8910_latch_w));
+ map(0x3802, 0x3802).portr("DSW1");
+ map(0x3803, 0x3803).portr("DSW2").nopw(); // ??? sound
+ map(0x4000, 0xffff).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/bombjack.cpp b/src/mame/drivers/bombjack.cpp
index 77265b85100..fd188f131ad 100644
--- a/src/mame/drivers/bombjack.cpp
+++ b/src/mame/drivers/bombjack.cpp
@@ -128,39 +128,42 @@ WRITE8_MEMBER(bombjack_state::irq_mask_w)
m_nmi_mask = data & 1;
}
-ADDRESS_MAP_START(bombjack_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(bombjack_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(bombjack_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9820, 0x987f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x9a00, 0x9a00) AM_WRITENOP
- AM_RANGE(0x9c00, 0x9cff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x9e00, 0x9e00) AM_WRITE(bombjack_background_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("P1")
- AM_RANGE(0xb000, 0xb000) AM_WRITE(irq_mask_w)
- AM_RANGE(0xb001, 0xb001) AM_READ_PORT("P2")
- AM_RANGE(0xb002, 0xb002) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb003, 0xb003) AM_READNOP /* watchdog reset? */
- AM_RANGE(0xb004, 0xb004) AM_READ_PORT("DSW1")
- AM_RANGE(0xb004, 0xb004) AM_WRITE(bombjack_flipscreen_w)
- AM_RANGE(0xb005, 0xb005) AM_READ_PORT("DSW2")
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc000, 0xdfff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bombjack_state::audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_read_and_clear)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bombjack_state::audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void bombjack_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(bombjack_state::bombjack_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(bombjack_state::bombjack_colorram_w)).share("colorram");
+ map(0x9820, 0x987f).writeonly().share("spriteram");
+ map(0x9a00, 0x9a00).nopw();
+ map(0x9c00, 0x9cff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x9e00, 0x9e00).w(this, FUNC(bombjack_state::bombjack_background_w));
+ map(0xb000, 0xb000).portr("P1");
+ map(0xb000, 0xb000).w(this, FUNC(bombjack_state::irq_mask_w));
+ map(0xb001, 0xb001).portr("P2");
+ map(0xb002, 0xb002).portr("SYSTEM");
+ map(0xb003, 0xb003).nopr(); /* watchdog reset? */
+ map(0xb004, 0xb004).portr("DSW1");
+ map(0xb004, 0xb004).w(this, FUNC(bombjack_state::bombjack_flipscreen_w));
+ map(0xb005, 0xb005).portr("DSW2");
+ map(0xb800, 0xb800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc000, 0xdfff).rom();
+}
+
+void bombjack_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6000).r(this, FUNC(bombjack_state::soundlatch_read_and_clear));
+}
+
+void bombjack_state::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));
+}
/*************************************
diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp
index a71f71641d9..29eccd5f3e2 100644
--- a/src/mame/drivers/boogwing.cpp
+++ b/src/mame/drivers/boogwing.cpp
@@ -87,7 +87,6 @@
#include "includes/boogwing.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "machine/deco102.h"
#include "machine/decocrpt.h"
#include "machine/gen_latch.h"
@@ -123,58 +122,61 @@ WRITE16_MEMBER( boogwing_state::priority_w )
}
-ADDRESS_MAP_START(boogwing_state::boogwing_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
+void boogwing_state::boogwing_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
- AM_RANGE(0x220000, 0x220001) AM_WRITE(priority_w)
- AM_RANGE(0x220002, 0x22000f) AM_NOP
+ map(0x220000, 0x220001).w(this, FUNC(boogwing_state::priority_w));
+ map(0x220002, 0x22000f).noprw();
- AM_RANGE(0x240000, 0x240001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
- AM_RANGE(0x242000, 0x2427ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x244000, 0x244001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write)
- AM_RANGE(0x246000, 0x2467ff) AM_RAM AM_SHARE("spriteram2")
+ map(0x240000, 0x240001).w(m_spriteram, FUNC(buffered_spriteram16_device::write));
+ map(0x242000, 0x2427ff).ram().share("spriteram");
+ map(0x244000, 0x244001).w(m_spriteram2, FUNC(buffered_spriteram16_device::write));
+ map(0x246000, 0x2467ff).ram().share("spriteram2");
// AM_RANGE(0x24e6c0, 0x24e6c1) AM_READ_PORT("DSW")
// AM_RANGE(0x24e138, 0x24e139) AM_READ_PORT("SYSTEM")
// AM_RANGE(0x24e344, 0x24e345) AM_READ_PORT("INPUTS")
- AM_RANGE(0x24e000, 0x24efff) AM_READWRITE(boogwing_protection_region_0_104_r,boogwing_protection_region_0_104_w) AM_SHARE("prot16ram") /* Protection device */
-
- AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x264000, 0x265fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x266000, 0x267fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x268000, 0x268fff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x26a000, 0x26afff) AM_RAM AM_SHARE("pf2_rowscroll")
-
- AM_RANGE(0x270000, 0x27000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
- AM_RANGE(0x274000, 0x275fff) AM_RAM_DEVWRITE("tilegen2", deco16ic_device, pf1_data_w)
- AM_RANGE(0x276000, 0x277fff) AM_RAM_DEVWRITE("tilegen2", deco16ic_device, pf2_data_w)
- AM_RANGE(0x278000, 0x278fff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x27a000, 0x27afff) AM_RAM AM_SHARE("pf4_rowscroll")
-
- AM_RANGE(0x280000, 0x28000f) AM_NOP // ?
- AM_RANGE(0x282000, 0x282001) AM_NOP // Palette setup?
- AM_RANGE(0x282008, 0x282009) AM_DEVWRITE("deco_ace", deco_ace_device, palette_dma_w)
- AM_RANGE(0x284000, 0x285fff) AM_DEVREADWRITE("deco_ace", deco_ace_device, buffered_palette16_r, buffered_palette16_w)
-
- AM_RANGE(0x3c0000, 0x3c004f) AM_DEVREADWRITE("deco_ace", deco_ace_device, ace_r, ace_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(boogwing_state::decrypted_opcodes_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(boogwing_state::audio_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_NOP
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco104_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+ map(0x24e000, 0x24efff).rw(this, FUNC(boogwing_state::boogwing_protection_region_0_104_r), FUNC(boogwing_state::boogwing_protection_region_0_104_w)).share("prot16ram"); /* Protection device */
+
+ map(0x260000, 0x26000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x264000, 0x265fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x266000, 0x267fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x268000, 0x268fff).ram().share("pf1_rowscroll");
+ map(0x26a000, 0x26afff).ram().share("pf2_rowscroll");
+
+ map(0x270000, 0x27000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w));
+ map(0x274000, 0x275fff).ram().w(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_w));
+ map(0x276000, 0x277fff).ram().w(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_w));
+ map(0x278000, 0x278fff).ram().share("pf3_rowscroll");
+ map(0x27a000, 0x27afff).ram().share("pf4_rowscroll");
+
+ map(0x280000, 0x28000f).noprw(); // ?
+ map(0x282000, 0x282001).noprw(); // Palette setup?
+ map(0x282008, 0x282009).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w));
+ map(0x284000, 0x285fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette16_r), FUNC(deco_ace_device::buffered_palette16_w));
+
+ map(0x3c0000, 0x3c004f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w));
+}
+
+void boogwing_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().share("decrypted_opcodes");
+}
+
+void boogwing_state::audio_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).noprw();
+ map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140000).r(m_deco104, FUNC(deco104_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/bottom9.cpp b/src/mame/drivers/bottom9.cpp
index 4f283a06cd9..df28ae99552 100644
--- a/src/mame/drivers/bottom9.cpp
+++ b/src/mame/drivers/bottom9.cpp
@@ -159,35 +159,37 @@ WRITE8_MEMBER(bottom9_state::sound_bank_w)
}
-ADDRESS_MAP_START(bottom9_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
- AM_RANGE(0x0000, 0x07ff) AM_READWRITE(bottom9_bankedram1_r, bottom9_bankedram1_w)
- AM_RANGE(0x1f80, 0x1f80) AM_WRITE(bankswitch_w)
- AM_RANGE(0x1f90, 0x1f90) AM_WRITE(bottom9_1f90_w)
- AM_RANGE(0x1fa0, 0x1fa0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1fb0, 0x1fb0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(bottom9_sh_irqtrigger_w)
- AM_RANGE(0x1fd0, 0x1fd0) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1fd1, 0x1fd1) AM_READ_PORT("P1")
- AM_RANGE(0x1fd2, 0x1fd2) AM_READ_PORT("P2")
- AM_RANGE(0x1fd3, 0x1fd3) AM_READ_PORT("DSW1")
- AM_RANGE(0x1fe0, 0x1fe0) AM_READ_PORT("DSW2")
- AM_RANGE(0x1ff0, 0x1fff) AM_DEVWRITE("k051316", k051316_device, ctrl_w)
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(bottom9_bankedram2_r, bottom9_bankedram2_w) AM_SHARE("palette")
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bottom9_state::audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
- AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_enable_w)
-ADDRESS_MAP_END
+void bottom9_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(bottom9_state::k052109_051960_r), FUNC(bottom9_state::k052109_051960_w));
+ map(0x0000, 0x07ff).rw(this, FUNC(bottom9_state::bottom9_bankedram1_r), FUNC(bottom9_state::bottom9_bankedram1_w));
+ map(0x1f80, 0x1f80).w(this, FUNC(bottom9_state::bankswitch_w));
+ map(0x1f90, 0x1f90).w(this, FUNC(bottom9_state::bottom9_1f90_w));
+ map(0x1fa0, 0x1fa0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1fb0, 0x1fb0).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1fc0, 0x1fc0).w(this, FUNC(bottom9_state::bottom9_sh_irqtrigger_w));
+ map(0x1fd0, 0x1fd0).portr("SYSTEM");
+ map(0x1fd1, 0x1fd1).portr("P1");
+ map(0x1fd2, 0x1fd2).portr("P2");
+ map(0x1fd3, 0x1fd3).portr("DSW1");
+ map(0x1fe0, 0x1fe0).portr("DSW2");
+ map(0x1ff0, 0x1fff).w(m_k051316, FUNC(k051316_device::ctrl_w));
+ map(0x2000, 0x27ff).rw(this, FUNC(bottom9_state::bottom9_bankedram2_r), FUNC(bottom9_state::bottom9_bankedram2_w)).share("palette");
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+void bottom9_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(bottom9_state::sound_bank_w));
+ map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).w(this, FUNC(bottom9_state::nmi_enable_w));
+}
static INPUT_PORTS_START( bottom9 )
diff --git a/src/mame/drivers/bowltry.cpp b/src/mame/drivers/bowltry.cpp
index f9fc85a75a6..098efc405fc 100644
--- a/src/mame/drivers/bowltry.cpp
+++ b/src/mame/drivers/bowltry.cpp
@@ -77,16 +77,17 @@ WRITE16_MEMBER(bowltry_state::hack_w)
}
#endif
-ADDRESS_MAP_START(bowltry_state::bowltry_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x080000, 0x083fff ) AM_RAM
- AM_RANGE( 0x600000, 0x60ffff ) AM_RAM
+void bowltry_state::bowltry_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x080000, 0x083fff).ram();
+ map(0x600000, 0x60ffff).ram();
#if HACK_ENABLED
- AM_RANGE( 0x60e090, 0x60e093 ) AM_READWRITE(hack_r,hack_w)
+ map(0x60e090, 0x60e093).rw(this, FUNC(bowltry_state::hack_r), FUNC(bowltry_state::hack_w));
#endif
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( bowltry )
INPUT_PORTS_END
diff --git a/src/mame/drivers/boxer.cpp b/src/mame/drivers/boxer.cpp
index c35a1484e2b..eea60b8509d 100644
--- a/src/mame/drivers/boxer.cpp
+++ b/src/mame/drivers/boxer.cpp
@@ -341,22 +341,23 @@ WRITE8_MEMBER(boxer_state::led_w)
*
*************************************/
-ADDRESS_MAP_START(boxer_state::boxer_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x03ff) AM_RAM AM_SHARE("tile_ram")
- AM_RANGE(0x0800, 0x08ff) AM_READ(input_r)
- AM_RANGE(0x1000, 0x17ff) AM_READ(misc_r)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(pot_w)
- AM_RANGE(0x1900, 0x19ff) AM_WRITE(led_w)
- AM_RANGE(0x1a00, 0x1aff) AM_WRITE(sound_w)
- AM_RANGE(0x1b00, 0x1bff) AM_WRITE(crowd_w)
- AM_RANGE(0x1c00, 0x1cff) AM_WRITE(irq_reset_w)
- AM_RANGE(0x1d00, 0x1dff) AM_WRITE(bell_w)
- AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_SHARE("sprite_ram")
- AM_RANGE(0x1f00, 0x1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void boxer_state::boxer_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x03ff).ram().share("tile_ram");
+ map(0x0800, 0x08ff).r(this, FUNC(boxer_state::input_r));
+ map(0x1000, 0x17ff).r(this, FUNC(boxer_state::misc_r));
+ map(0x1800, 0x1800).w(this, FUNC(boxer_state::pot_w));
+ map(0x1900, 0x19ff).w(this, FUNC(boxer_state::led_w));
+ map(0x1a00, 0x1aff).w(this, FUNC(boxer_state::sound_w));
+ map(0x1b00, 0x1bff).w(this, FUNC(boxer_state::crowd_w));
+ map(0x1c00, 0x1cff).w(this, FUNC(boxer_state::irq_reset_w));
+ map(0x1d00, 0x1dff).w(this, FUNC(boxer_state::bell_w));
+ map(0x1e00, 0x1eff).writeonly().share("sprite_ram");
+ map(0x1f00, 0x1fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3000, 0x3fff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/bpmmicro.cpp b/src/mame/drivers/bpmmicro.cpp
index f2c716b60be..eb51d338967 100644
--- a/src/mame/drivers/bpmmicro.cpp
+++ b/src/mame/drivers/bpmmicro.cpp
@@ -330,24 +330,26 @@ read <- 00
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(bpmmicro_state::i286_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_RAM // 512k ram
- AM_RANGE(0x082200, 0x82201) AM_WRITE(unknown_82200_w)
- AM_RANGE(0x084000, 0x84001) AM_READ(latch_84000_r) // GUESS: this is reading the octal latch
- AM_RANGE(0x084002, 0x84003) AM_WRITE(latch_84002_w) // GUESS: this is clocking the CK pin on the octal latch from bit 0, dumping the contents of a serial in parallel out shifter into said latch
- AM_RANGE(0x08400e, 0x8400f) AM_WRITE(unknown_8400e_w)
- AM_RANGE(0x084018, 0x84019) AM_WRITE(unknown_84018_w)
- AM_RANGE(0x08401a, 0x8401b) AM_WRITE(unknown_8401a_w)
- AM_RANGE(0x08401c, 0x8401d) AM_WRITE(eeprom_8401c_w)
- AM_RANGE(0x0f0000, 0x0fffff) AM_ROM AM_REGION("bios", 0x10000)
+void bpmmicro_state::i286_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).ram(); // 512k ram
+ map(0x082200, 0x82201).w(this, FUNC(bpmmicro_state::unknown_82200_w));
+ map(0x084000, 0x84001).r(this, FUNC(bpmmicro_state::latch_84000_r)); // GUESS: this is reading the octal latch
+ map(0x084002, 0x84003).w(this, FUNC(bpmmicro_state::latch_84002_w)); // GUESS: this is clocking the CK pin on the octal latch from bit 0, dumping the contents of a serial in parallel out shifter into said latch
+ map(0x08400e, 0x8400f).w(this, FUNC(bpmmicro_state::unknown_8400e_w));
+ map(0x084018, 0x84019).w(this, FUNC(bpmmicro_state::unknown_84018_w));
+ map(0x08401a, 0x8401b).w(this, FUNC(bpmmicro_state::unknown_8401a_w));
+ map(0x08401c, 0x8401d).w(this, FUNC(bpmmicro_state::eeprom_8401c_w));
+ map(0x0f0000, 0x0fffff).rom().region("bios", 0x10000);
//AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0) //?
- AM_RANGE(0xfffff0, 0xffffff) AM_ROM AM_REGION("bios", 0x1fff0) //?
-ADDRESS_MAP_END
+ map(0xfffff0, 0xffffff).rom().region("bios", 0x1fff0); //?
+}
-ADDRESS_MAP_START(bpmmicro_state::i286_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void bpmmicro_state::i286_io(address_map &map)
+{
+ map.unmap_value_high();
+}
/******************************************************************************
diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp
index 353351ea705..4b097c06da8 100644
--- a/src/mame/drivers/br8641.cpp
+++ b/src/mame/drivers/br8641.cpp
@@ -63,21 +63,23 @@ private:
required_device<beep_device> m_beep;
};
-ADDRESS_MAP_START(brandt8641_state::brandt8641_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM // 27256 at U12
- AM_RANGE(0x8000, 0x9fff) AM_RAM // 8KB static ram 6264 at U12
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(brandt8641_state::brandt8641_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio2", z80pio_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio3", z80pio_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x1E, 0x1F) AM_WRITENOP // unknown device
-ADDRESS_MAP_END
+void brandt8641_state::brandt8641_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom(); // 27256 at U12
+ map(0x8000, 0x9fff).ram(); // 8KB static ram 6264 at U12
+}
+
+void brandt8641_state::brandt8641_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x04, 0x07).rw(m_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x08, 0x0b).rw(m_pio2, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x0c, 0x0f).rw(m_pio3, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x10, 0x13).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x1E, 0x1F).nopw(); // unknown device
+}
/* Input ports */
// No idea what each key does
diff --git a/src/mame/drivers/brkthru.cpp b/src/mame/drivers/brkthru.cpp
index 7b7de9d9fca..8f161310042 100644
--- a/src/mame/drivers/brkthru.cpp
+++ b/src/mame/drivers/brkthru.cpp
@@ -108,49 +108,52 @@ INPUT_CHANGED_MEMBER(brkthru_state::coin_inserted)
*
*************************************/
-ADDRESS_MAP_START(brkthru_state::brkthru_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(brkthru_fgram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x0400, 0x0bff) AM_RAM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(brkthru_bgram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1100, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("P2")
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("DSW1")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW2/COIN")
- AM_RANGE(0x1800, 0x1801) AM_WRITE(brkthru_1800_w) /* bg scroll and color, ROM bank selection, flip screen */
- AM_RANGE(0x1802, 0x1802) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1803, 0x1803) AM_WRITE(brkthru_1803_w) /* NMI enable, + ? */
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void brkthru_state::brkthru_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().w(this, FUNC(brkthru_state::brkthru_fgram_w)).share("fg_videoram");
+ map(0x0400, 0x0bff).ram();
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(brkthru_state::brkthru_bgram_w)).share("videoram");
+ map(0x1000, 0x10ff).ram().share("spriteram");
+ map(0x1100, 0x17ff).ram();
+ map(0x1800, 0x1800).portr("P1");
+ map(0x1801, 0x1801).portr("P2");
+ map(0x1802, 0x1802).portr("DSW1");
+ map(0x1803, 0x1803).portr("DSW2/COIN");
+ map(0x1800, 0x1801).w(this, FUNC(brkthru_state::brkthru_1800_w)); /* bg scroll and color, ROM bank selection, flip screen */
+ map(0x1802, 0x1802).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1803, 0x1803).w(this, FUNC(brkthru_state::brkthru_1803_w)); /* NMI enable, + ? */
+ map(0x2000, 0x3fff).bankr("bank1");
+ map(0x4000, 0xffff).rom();
+}
/* same as brktrhu, but xor 0x1000 below 8k */
-ADDRESS_MAP_START(brkthru_state::darwin_map)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(brkthru_fgram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x1400, 0x1bff) AM_RAM
- AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(brkthru_bgram_w) AM_SHARE("videoram")
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0100, 0x01ff) AM_WRITENOP /*tidyup, nothing really here?*/
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("P1")
- AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2")
- AM_RANGE(0x0802, 0x0802) AM_READ_PORT("DSW1")
- AM_RANGE(0x0803, 0x0803) AM_READ_PORT("DSW2/COIN")
- AM_RANGE(0x0800, 0x0801) AM_WRITE(brkthru_1800_w) /* bg scroll and color, ROM bank selection, flip screen */
- AM_RANGE(0x0802, 0x0802) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x0803, 0x0803) AM_WRITE(darwin_0803_w) /* NMI enable, + ? */
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(brkthru_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym2", ym3526_device, write)
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void brkthru_state::darwin_map(address_map &map)
+{
+ map(0x1000, 0x13ff).ram().w(this, FUNC(brkthru_state::brkthru_fgram_w)).share("fg_videoram");
+ map(0x1400, 0x1bff).ram();
+ map(0x1c00, 0x1fff).ram().w(this, FUNC(brkthru_state::brkthru_bgram_w)).share("videoram");
+ map(0x0000, 0x00ff).ram().share("spriteram");
+ map(0x0100, 0x01ff).nopw(); /*tidyup, nothing really here?*/
+ map(0x0800, 0x0800).portr("P1");
+ map(0x0801, 0x0801).portr("P2");
+ map(0x0802, 0x0802).portr("DSW1");
+ map(0x0803, 0x0803).portr("DSW2/COIN");
+ map(0x0800, 0x0801).w(this, FUNC(brkthru_state::brkthru_1800_w)); /* bg scroll and color, ROM bank selection, flip screen */
+ map(0x0802, 0x0802).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0803, 0x0803).w(this, FUNC(brkthru_state::darwin_0803_w)); /* NMI enable, + ? */
+ map(0x2000, 0x3fff).bankr("bank1");
+ map(0x4000, 0xffff).rom();
+}
+
+
+void brkthru_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2001).w("ym2", FUNC(ym3526_device::write));
+ map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x6000, 0x6001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/bsktball.cpp b/src/mame/drivers/bsktball.cpp
index f7b6b71c60c..33989c4cf78 100644
--- a/src/mame/drivers/bsktball.cpp
+++ b/src/mame/drivers/bsktball.cpp
@@ -76,21 +76,22 @@ PALETTE_INIT_MEMBER(bsktball_state, bsktball)
*
*************************************/
-ADDRESS_MAP_START(bsktball_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM /* Zero Page RAM */
- AM_RANGE(0x0800, 0x0800) AM_READ(bsktball_in0_r)
- AM_RANGE(0x0802, 0x0802) AM_READ_PORT("IN1")
- AM_RANGE(0x0803, 0x0803) AM_READ_PORT("DSW")
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* Timer Reset */
- AM_RANGE(0x1010, 0x1010) AM_WRITE(bsktball_bounce_w) /* Crowd Amp / Bounce */
- AM_RANGE(0x1020, 0x102f) AM_DEVWRITE("outlatch", f9334_device, write_a0)
- AM_RANGE(0x1030, 0x1030) AM_WRITE(bsktball_note_w) /* Music Ckt Note Dvsr */
- AM_RANGE(0x1800, 0x1bbf) AM_RAM_WRITE(bsktball_videoram_w) AM_SHARE("videoram") /* DISPLAY */
- AM_RANGE(0x1bc0, 0x1bff) AM_RAM AM_SHARE("motion")
- AM_RANGE(0x1c00, 0x1cff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_ROM /* PROGRAM */
-ADDRESS_MAP_END
+void bsktball_state::main_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x01ff).ram(); /* Zero Page RAM */
+ map(0x0800, 0x0800).r(this, FUNC(bsktball_state::bsktball_in0_r));
+ map(0x0802, 0x0802).portr("IN1");
+ map(0x0803, 0x0803).portr("DSW");
+ map(0x1000, 0x1000).nopw(); /* Timer Reset */
+ map(0x1010, 0x1010).w(this, FUNC(bsktball_state::bsktball_bounce_w)); /* Crowd Amp / Bounce */
+ map(0x1020, 0x102f).w("outlatch", FUNC(f9334_device::write_a0));
+ map(0x1030, 0x1030).w(this, FUNC(bsktball_state::bsktball_note_w)); /* Music Ckt Note Dvsr */
+ map(0x1800, 0x1bbf).ram().w(this, FUNC(bsktball_state::bsktball_videoram_w)).share("videoram"); /* DISPLAY */
+ map(0x1bc0, 0x1bff).ram().share("motion");
+ map(0x1c00, 0x1cff).ram();
+ map(0x2000, 0x3fff).rom(); /* PROGRAM */
+}
diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp
index f96ca4a9c26..f572ebf19d6 100644
--- a/src/mame/drivers/btime.cpp
+++ b/src/mame/drivers/btime.cpp
@@ -184,161 +184,171 @@ TIMER_DEVICE_CALLBACK_MEMBER(btime_state::audio_nmi_gen)
m_audionmi->in_w<1>((scanline & 8) >> 3);
}
-ADDRESS_MAP_START(btime_state::btime_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0c00, 0x0c0f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
- AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITENOP
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("P2")
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("SYSTEM") AM_WRITE(btime_video_control_w)
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW2") AM_WRITE(bnj_scroll1_w)
- AM_RANGE(0xb000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::cookrace_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0500, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xc800, 0xcbff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
- AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w)
- AM_RANGE(0xd000, 0xd0ff) AM_RAM /* background? */
- AM_RANGE(0xd100, 0xd3ff) AM_RAM /* ? */
- AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("bnj_bgram")
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1") AM_WRITE(bnj_video_control_w)
- AM_RANGE(0xe300, 0xe300) AM_READ_PORT("DSW1") /* mirror address used on high score name entry */
+void btime_state::btime_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("rambase");
+ map(0x0c00, 0x0c0f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x1000, 0x13ff).ram().share("videoram");
+ map(0x1400, 0x17ff).ram().share("colorram");
+ map(0x1800, 0x1bff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w));
+ map(0x1c00, 0x1fff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w));
+ map(0x4000, 0x4000).portr("P1").nopw();
+ map(0x4001, 0x4001).portr("P2");
+ map(0x4002, 0x4002).portr("SYSTEM").w(this, FUNC(btime_state::btime_video_control_w));
+ map(0x4003, 0x4003).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x4004, 0x4004).portr("DSW2").w(this, FUNC(btime_state::bnj_scroll1_w));
+ map(0xb000, 0xffff).rom();
+}
+
+void btime_state::cookrace_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("rambase");
+ map(0x0500, 0x3fff).rom();
+ map(0xc000, 0xc3ff).ram().share("videoram");
+ map(0xc400, 0xc7ff).ram().share("colorram");
+ map(0xc800, 0xcbff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w));
+ map(0xcc00, 0xcfff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w));
+ map(0xd000, 0xd0ff).ram(); /* background? */
+ map(0xd100, 0xd3ff).ram(); /* ? */
+ map(0xd400, 0xd7ff).ram().share("bnj_bgram");
+ map(0xe000, 0xe000).portr("DSW1").w(this, FUNC(btime_state::bnj_video_control_w));
+ map(0xe300, 0xe300).portr("DSW1"); /* mirror address used on high score name entry */
/* screen */
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1")
- AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2")
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfff9, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::tisland_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0c00, 0x0c0f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
- AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITENOP
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("P2")
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("SYSTEM") AM_WRITE(btime_video_control_w)
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW2") AM_WRITE(bnj_scroll1_w)
- AM_RANGE(0x4005, 0x4005) AM_WRITE(bnj_scroll2_w)
- AM_RANGE(0x9000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::zoar_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x8000, 0x83ff) AM_WRITEONLY AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_WRITEONLY AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x8bff) AM_WRITE(btime_mirrorvideoram_w)
- AM_RANGE(0x8c00, 0x8fff) AM_WRITE(btime_mirrorcolorram_w)
- AM_RANGE(0x9000, 0x9000) AM_WRITE(zoar_video_control_w)
- AM_RANGE(0x9800, 0x9800) AM_READ(zoar_dsw1_read)
- AM_RANGE(0x9801, 0x9801) AM_READ_PORT("DSW2")
- AM_RANGE(0x9802, 0x9802) AM_READ_PORT("P1")
- AM_RANGE(0x9803, 0x9803) AM_READ_PORT("P2")
- AM_RANGE(0x9800, 0x9803) AM_WRITEONLY AM_SHARE("zoar_scrollram")
- AM_RANGE(0x9804, 0x9804) AM_READ_PORT("SYSTEM") AM_WRITE(bnj_scroll2_w)
- AM_RANGE(0x9805, 0x9805) AM_WRITE(bnj_scroll1_w)
- AM_RANGE(0x9806, 0x9806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::lnc_map)
- AM_RANGE(0x0000, 0x3bff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(lnc_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7800, 0x7bff) AM_WRITEONLY AM_SHARE("colorram") /* this is just here to initialize the pointer */
- AM_RANGE(0x7c00, 0x7fff) AM_READWRITE(btime_mirrorvideoram_r, lnc_mirrorvideoram_w)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW1") AM_WRITENOP /* ??? */
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW2") AM_WRITE(bnj_video_control_w)
- AM_RANGE(0x8003, 0x8003) AM_WRITEONLY AM_SHARE("lnc_charbank")
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("P1") AM_WRITENOP /* IRQ ack??? */
- AM_RANGE(0x9001, 0x9001) AM_READ_PORT("P2")
- AM_RANGE(0x9002, 0x9002) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb000, 0xb1ff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::mmonkey_map)
- AM_RANGE(0x0000, 0x3bff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(lnc_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7800, 0x7bff) AM_WRITEONLY AM_SHARE("colorram") /* this is just here to initialize the pointer */
- AM_RANGE(0x7c00, 0x7fff) AM_READWRITE(btime_mirrorvideoram_r, lnc_mirrorvideoram_w)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW1")
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW2") AM_WRITE(bnj_video_control_w)
- AM_RANGE(0x8003, 0x8003) AM_WRITEONLY AM_SHARE("lnc_charbank")
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("P1") AM_WRITENOP /* IRQ ack??? */
- AM_RANGE(0x9001, 0x9001) AM_READ_PORT("P2")
- AM_RANGE(0x9002, 0x9002) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb000, 0xbfff) AM_READWRITE(mmonkey_protection_r, mmonkey_protection_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::bnj_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1")
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW2") AM_WRITE(bnj_video_control_w)
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("P2")
- AM_RANGE(0x1004, 0x1004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w)
- AM_RANGE(0x5000, 0x51ff) AM_RAM_WRITE(bnj_background_w) AM_SHARE("bnj_bgram")
- AM_RANGE(0x5200, 0x53ff) AM_RAM
- AM_RANGE(0x5400, 0x5400) AM_WRITE(bnj_scroll1_w)
- AM_RANGE(0x5800, 0x5800) AM_WRITE(bnj_scroll2_w)
- AM_RANGE(0x5c00, 0x5c0f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::disco_map)
- AM_RANGE(0x0000, 0x04ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x2000, 0x7fff) AM_RAM_WRITE(deco_charram_w) AM_SHARE("deco_charram")
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x881f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1")
- AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2")
- AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1")
- AM_RANGE(0x9a00, 0x9a00) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x9c00, 0x9c00) AM_READ_PORT("VBLANK") AM_WRITE(disco_video_control_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(btime_state::audio_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM AM_SHARE("audio_rambase")
- AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x4000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x8000, 0x9fff) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa000, 0xbfff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xdfff) AM_WRITE(audio_nmi_enable_w)
- AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btime_state::disco_audio_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xe001, 0xe001).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xe002, 0xe002).portr("P1");
+ map(0xe003, 0xe003).portr("P2");
+ map(0xe004, 0xe004).portr("SYSTEM");
+ map(0xfff9, 0xffff).rom();
+}
+
+void btime_state::tisland_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("rambase");
+ map(0x0c00, 0x0c0f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x1000, 0x13ff).ram().share("videoram");
+ map(0x1400, 0x17ff).ram().share("colorram");
+ map(0x1800, 0x1bff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w));
+ map(0x1c00, 0x1fff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w));
+ map(0x4000, 0x4000).portr("P1").nopw();
+ map(0x4001, 0x4001).portr("P2");
+ map(0x4002, 0x4002).portr("SYSTEM").w(this, FUNC(btime_state::btime_video_control_w));
+ map(0x4003, 0x4003).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x4004, 0x4004).portr("DSW2").w(this, FUNC(btime_state::bnj_scroll1_w));
+ map(0x4005, 0x4005).w(this, FUNC(btime_state::bnj_scroll2_w));
+ map(0x9000, 0xffff).rom();
+}
+
+void btime_state::zoar_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("rambase");
+ map(0x8000, 0x83ff).writeonly().share("videoram");
+ map(0x8400, 0x87ff).writeonly().share("colorram");
+ map(0x8800, 0x8bff).w(this, FUNC(btime_state::btime_mirrorvideoram_w));
+ map(0x8c00, 0x8fff).w(this, FUNC(btime_state::btime_mirrorcolorram_w));
+ map(0x9000, 0x9000).w(this, FUNC(btime_state::zoar_video_control_w));
+ map(0x9800, 0x9800).r(this, FUNC(btime_state::zoar_dsw1_read));
+ map(0x9801, 0x9801).portr("DSW2");
+ map(0x9802, 0x9802).portr("P1");
+ map(0x9803, 0x9803).portr("P2");
+ map(0x9800, 0x9803).writeonly().share("zoar_scrollram");
+ map(0x9804, 0x9804).portr("SYSTEM").w(this, FUNC(btime_state::bnj_scroll2_w));
+ map(0x9805, 0x9805).w(this, FUNC(btime_state::bnj_scroll1_w));
+ map(0x9806, 0x9806).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd000, 0xffff).rom();
+}
+
+void btime_state::lnc_map(address_map &map)
+{
+ map(0x0000, 0x3bff).ram().share("rambase");
+ map(0x3c00, 0x3fff).ram().w(this, FUNC(btime_state::lnc_videoram_w)).share("videoram");
+ map(0x7800, 0x7bff).writeonly().share("colorram"); /* this is just here to initialize the pointer */
+ map(0x7c00, 0x7fff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::lnc_mirrorvideoram_w));
+ map(0x8000, 0x8000).portr("DSW1").nopw(); /* ??? */
+ map(0x8001, 0x8001).portr("DSW2").w(this, FUNC(btime_state::bnj_video_control_w));
+ map(0x8003, 0x8003).writeonly().share("lnc_charbank");
+ map(0x9000, 0x9000).portr("P1").nopw(); /* IRQ ack??? */
+ map(0x9001, 0x9001).portr("P2");
+ map(0x9002, 0x9002).portr("SYSTEM").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb000, 0xb1ff).ram();
+ map(0xc000, 0xffff).rom();
+}
+
+void btime_state::mmonkey_map(address_map &map)
+{
+ map(0x0000, 0x3bff).ram().share("rambase");
+ map(0x3c00, 0x3fff).ram().w(this, FUNC(btime_state::lnc_videoram_w)).share("videoram");
+ map(0x7800, 0x7bff).writeonly().share("colorram"); /* this is just here to initialize the pointer */
+ map(0x7c00, 0x7fff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::lnc_mirrorvideoram_w));
+ map(0x8000, 0x8000).portr("DSW1");
+ map(0x8001, 0x8001).portr("DSW2").w(this, FUNC(btime_state::bnj_video_control_w));
+ map(0x8003, 0x8003).writeonly().share("lnc_charbank");
+ map(0x9000, 0x9000).portr("P1").nopw(); /* IRQ ack??? */
+ map(0x9001, 0x9001).portr("P2");
+ map(0x9002, 0x9002).portr("SYSTEM").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb000, 0xbfff).rw(this, FUNC(btime_state::mmonkey_protection_r), FUNC(btime_state::mmonkey_protection_w));
+ map(0xc000, 0xffff).rom();
+}
+
+void btime_state::bnj_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("rambase");
+ map(0x1000, 0x1000).portr("DSW1");
+ map(0x1001, 0x1001).portr("DSW2").w(this, FUNC(btime_state::bnj_video_control_w));
+ map(0x1002, 0x1002).portr("P1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1003, 0x1003).portr("P2");
+ map(0x1004, 0x1004).portr("SYSTEM");
+ map(0x4000, 0x43ff).ram().share("videoram");
+ map(0x4400, 0x47ff).ram().share("colorram");
+ map(0x4800, 0x4bff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w));
+ map(0x4c00, 0x4fff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w));
+ map(0x5000, 0x51ff).ram().w(this, FUNC(btime_state::bnj_background_w)).share("bnj_bgram");
+ map(0x5200, 0x53ff).ram();
+ map(0x5400, 0x5400).w(this, FUNC(btime_state::bnj_scroll1_w));
+ map(0x5800, 0x5800).w(this, FUNC(btime_state::bnj_scroll2_w));
+ map(0x5c00, 0x5c0f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xa000, 0xffff).rom();
+}
+
+void btime_state::disco_map(address_map &map)
+{
+ map(0x0000, 0x04ff).ram().share("rambase");
+ map(0x2000, 0x7fff).ram().w(this, FUNC(btime_state::deco_charram_w)).share("deco_charram");
+ map(0x8000, 0x83ff).ram().share("videoram");
+ map(0x8400, 0x87ff).ram().share("colorram");
+ map(0x8800, 0x881f).ram().share("spriteram");
+ map(0x9000, 0x9000).portr("SYSTEM");
+ map(0x9200, 0x9200).portr("P1");
+ map(0x9400, 0x9400).portr("P2");
+ map(0x9800, 0x9800).portr("DSW1");
+ map(0x9a00, 0x9a00).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x9c00, 0x9c00).portr("VBLANK").w(this, FUNC(btime_state::disco_video_control_w));
+ map(0xa000, 0xffff).rom();
+}
+
+
+
+void btime_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram().share("audio_rambase");
+ map(0x2000, 0x3fff).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x4000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x7fff).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x8000, 0x9fff).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa000, 0xbfff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xdfff).w(this, FUNC(btime_state::audio_nmi_enable_w));
+ map(0xe000, 0xefff).mirror(0x1000).rom();
+}
+
+void btime_state::disco_audio_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x4000, 0x4fff).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x5000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6fff).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x7000, 0x7fff).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x8000, 0x8fff).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xf000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(btime_state::coin_inserted_irq_hi)
diff --git a/src/mame/drivers/btoads.cpp b/src/mame/drivers/btoads.cpp
index a6fb2a890ed..b19f3670ddc 100644
--- a/src/mame/drivers/btoads.cpp
+++ b/src/mame/drivers/btoads.cpp
@@ -166,33 +166,34 @@ WRITE8_MEMBER( btoads_state::bsmt2000_port_w )
*
*************************************/
-ADDRESS_MAP_START(btoads_state::main_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM
- AM_RANGE(0x20000000, 0x2000007f) AM_READ_PORT("P1")
- AM_RANGE(0x20000080, 0x200000ff) AM_READ_PORT("P2")
- AM_RANGE(0x20000100, 0x2000017f) AM_READ_PORT("P3")
- AM_RANGE(0x20000180, 0x200001ff) AM_READ_PORT("UNK")
- AM_RANGE(0x20000200, 0x2000027f) AM_READ_PORT("SPECIAL")
- AM_RANGE(0x20000280, 0x200002ff) AM_READ_PORT("SW1")
- AM_RANGE(0x20000000, 0x200000ff) AM_WRITEONLY AM_SHARE("sprite_scale")
- AM_RANGE(0x20000100, 0x2000017f) AM_WRITEONLY AM_SHARE("sprite_control")
- AM_RANGE(0x20000180, 0x200001ff) AM_WRITE(display_control_w)
- AM_RANGE(0x20000200, 0x2000027f) AM_WRITE(scroll0_w)
- AM_RANGE(0x20000280, 0x200002ff) AM_WRITE(scroll1_w)
- AM_RANGE(0x20000300, 0x2000037f) AM_READWRITE(paletteram_r, paletteram_w)
- AM_RANGE(0x20000380, 0x200003ff) AM_READWRITE(main_sound_r, main_sound_w)
- AM_RANGE(0x20000400, 0x2000047f) AM_WRITE(misc_control_w)
- AM_RANGE(0x40000000, 0x4000000f) AM_WRITENOP /* watchdog? */
- AM_RANGE(0x60000000, 0x6003ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa0000000, 0xa03fffff) AM_READWRITE(vram_fg_display_r, vram_fg_display_w) AM_SHARE("vram_fg0")
- AM_RANGE(0xa4000000, 0xa43fffff) AM_READWRITE(vram_fg_draw_r, vram_fg_draw_w) AM_SHARE("vram_fg1")
- AM_RANGE(0xa8000000, 0xa87fffff) AM_RAM AM_SHARE("vram_fg_data")
- AM_RANGE(0xa8800000, 0xa8ffffff) AM_WRITENOP
- AM_RANGE(0xb0000000, 0xb03fffff) AM_READWRITE(vram_bg0_r, vram_bg0_w) AM_SHARE("vram_bg0")
- AM_RANGE(0xb4000000, 0xb43fffff) AM_READWRITE(vram_bg1_r, vram_bg1_w) AM_SHARE("vram_bg1")
- AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("maincpu", tms34020_device, io_register_r, io_register_w)
- AM_RANGE(0xfc000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void btoads_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram();
+ map(0x20000000, 0x2000007f).portr("P1");
+ map(0x20000080, 0x200000ff).portr("P2");
+ map(0x20000100, 0x2000017f).portr("P3");
+ map(0x20000180, 0x200001ff).portr("UNK");
+ map(0x20000200, 0x2000027f).portr("SPECIAL");
+ map(0x20000280, 0x200002ff).portr("SW1");
+ map(0x20000000, 0x200000ff).writeonly().share("sprite_scale");
+ map(0x20000100, 0x2000017f).writeonly().share("sprite_control");
+ map(0x20000180, 0x200001ff).w(this, FUNC(btoads_state::display_control_w));
+ map(0x20000200, 0x2000027f).w(this, FUNC(btoads_state::scroll0_w));
+ map(0x20000280, 0x200002ff).w(this, FUNC(btoads_state::scroll1_w));
+ map(0x20000300, 0x2000037f).rw(this, FUNC(btoads_state::paletteram_r), FUNC(btoads_state::paletteram_w));
+ map(0x20000380, 0x200003ff).rw(this, FUNC(btoads_state::main_sound_r), FUNC(btoads_state::main_sound_w));
+ map(0x20000400, 0x2000047f).w(this, FUNC(btoads_state::misc_control_w));
+ map(0x40000000, 0x4000000f).nopw(); /* watchdog? */
+ map(0x60000000, 0x6003ffff).ram().share("nvram");
+ map(0xa0000000, 0xa03fffff).rw(this, FUNC(btoads_state::vram_fg_display_r), FUNC(btoads_state::vram_fg_display_w)).share("vram_fg0");
+ map(0xa4000000, 0xa43fffff).rw(this, FUNC(btoads_state::vram_fg_draw_r), FUNC(btoads_state::vram_fg_draw_w)).share("vram_fg1");
+ map(0xa8000000, 0xa87fffff).ram().share("vram_fg_data");
+ map(0xa8800000, 0xa8ffffff).nopw();
+ map(0xb0000000, 0xb03fffff).rw(this, FUNC(btoads_state::vram_bg0_r), FUNC(btoads_state::vram_bg0_w)).share("vram_bg0");
+ map(0xb4000000, 0xb43fffff).rw(this, 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);
+}
@@ -202,19 +203,21 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(btoads_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(btoads_state::sound_io_map)
- AM_RANGE(0x0000, 0x7fff) AM_WRITE(bsmt2000_port_w)
- AM_RANGE(0x8000, 0x8000) AM_READWRITE(sound_data_r, sound_data_w)
- AM_RANGE(0x8002, 0x8002) AM_WRITE(sound_int_state_w)
- AM_RANGE(0x8004, 0x8004) AM_READ(sound_data_ready_r)
- AM_RANGE(0x8005, 0x8005) AM_READ(sound_ready_to_send_r)
- AM_RANGE(0x8006, 0x8006) AM_READ(bsmt_ready_r)
-ADDRESS_MAP_END
+void btoads_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).ram();
+}
+
+void btoads_state::sound_io_map(address_map &map)
+{
+ map(0x0000, 0x7fff).w(this, FUNC(btoads_state::bsmt2000_port_w));
+ map(0x8000, 0x8000).rw(this, FUNC(btoads_state::sound_data_r), FUNC(btoads_state::sound_data_w));
+ map(0x8002, 0x8002).w(this, FUNC(btoads_state::sound_int_state_w));
+ map(0x8004, 0x8004).r(this, FUNC(btoads_state::sound_data_ready_r));
+ map(0x8005, 0x8005).r(this, FUNC(btoads_state::sound_ready_to_send_r));
+ map(0x8006, 0x8006).r(this, FUNC(btoads_state::bsmt_ready_r));
+}
diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp
index c564912141a..bf67d650bd3 100644
--- a/src/mame/drivers/bublbobl.cpp
+++ b/src/mame/drivers/bublbobl.cpp
@@ -292,30 +292,33 @@ TODO:
* Address maps
*
*************************************/
-ADDRESS_MAP_START(bublbobl_state::common_maincpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::bublbobl_maincpu_map)
- AM_IMPORT_FROM(common_maincpu_map)
- AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x007c) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write)
- AM_RANGE(0xfa01, 0xfa01) AM_MIRROR(0x007c) AM_READ(common_sound_semaphores_r)
- AM_RANGE(0xfa03, 0xfa03) AM_MIRROR(0x007c) AM_WRITE(bublbobl_soundcpu_reset_w)
- AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0x003f) AM_WRITE(bublbobl_nmitrigger_w)
- AM_RANGE(0xfb40, 0xfb40) AM_MIRROR(0x003f) AM_WRITE(bublbobl_bankswitch_w)
- AM_RANGE(0xfc00, 0xffff) AM_RAM AM_SHARE("mcu_sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::subcpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
+void bublbobl_state::common_maincpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdcff).ram().share("videoram");
+ map(0xdd00, 0xdfff).ram().share("objectram");
+ map(0xe000, 0xf7ff).ram().share("share1");
+ map(0xf800, 0xf9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void bublbobl_state::bublbobl_maincpu_map(address_map &map)
+{
+ common_maincpu_map(map);
+ map(0xfa00, 0xfa00).mirror(0x007c).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write));
+ map(0xfa01, 0xfa01).mirror(0x007c).r(this, FUNC(bublbobl_state::common_sound_semaphores_r));
+ map(0xfa03, 0xfa03).mirror(0x007c).w(this, FUNC(bublbobl_state::bublbobl_soundcpu_reset_w));
+ map(0xfa80, 0xfa80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xfb00, 0xfb00).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_nmitrigger_w));
+ map(0xfb40, 0xfb40).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_bankswitch_w));
+ map(0xfc00, 0xffff).ram().share("mcu_sharedram");
+}
+
+void bublbobl_state::subcpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xf7ff).ram().share("share1");
+}
/* Sound cpu address map
| | |
@@ -343,92 +346,100 @@ Sound cpu semaphores are both active low:
74ls74@ic9 [1/2] 'sound_has_written', appears on d0
74ls74@ic10 [2/2] 'maincpu_has_written', appears on d1
*/
-ADDRESS_MAP_START(bublbobl_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ym2", ym3526_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x0ffc) AM_DEVREAD("main_to_sound", generic_latch_8_device, read) AM_DEVWRITE("sound_to_main", generic_latch_8_device, write)
- AM_RANGE(0xb001, 0xb001) AM_MIRROR(0x0ffc) AM_READ(common_sound_semaphores_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<0>)
- AM_RANGE(0xb002, 0xb002) AM_MIRROR(0x0ffc) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>);
- AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::mcu_map)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(bublbobl_mcu_ddr1_r, bublbobl_mcu_ddr1_w)
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(bublbobl_mcu_ddr2_r, bublbobl_mcu_ddr2_w)
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(bublbobl_mcu_port1_r, bublbobl_mcu_port1_w)
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(bublbobl_mcu_port2_r, bublbobl_mcu_port2_w)
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(bublbobl_mcu_ddr3_r, bublbobl_mcu_ddr3_w)
- AM_RANGE(0x0005, 0x0005) AM_READWRITE(bublbobl_mcu_ddr4_r, bublbobl_mcu_ddr4_w)
- AM_RANGE(0x0006, 0x0006) AM_READWRITE(bublbobl_mcu_port3_r, bublbobl_mcu_port3_w)
- AM_RANGE(0x0007, 0x0007) AM_READWRITE(bublbobl_mcu_port4_r, bublbobl_mcu_port4_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::bootleg_map)
- AM_IMPORT_FROM(common_maincpu_map)
- AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x007c) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write)
- AM_RANGE(0xfa01, 0xfa01) AM_MIRROR(0x007c) AM_READ(common_sound_semaphores_r)
- AM_RANGE(0xfa03, 0xfa03) AM_MIRROR(0x007c) AM_WRITE(bublbobl_soundcpu_reset_w)
- AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0x003f) AM_WRITE(bublbobl_nmitrigger_w)
- AM_RANGE(0xfb40, 0xfb40) AM_MIRROR(0x003f) AM_WRITE(bublbobl_bankswitch_w)
+void bublbobl_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).mirror(0x0ffe).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa001).mirror(0x0ffe).rw("ym2", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
+ map(0xb000, 0xb000).mirror(0x0ffc).r(m_main_to_sound, FUNC(generic_latch_8_device::read)).w(m_sound_to_main, FUNC(generic_latch_8_device::write));
+ map(0xb001, 0xb001).mirror(0x0ffc).r(this, FUNC(bublbobl_state::common_sound_semaphores_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<0>));
+ map(0xb002, 0xb002).mirror(0x0ffc).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>));
+ map(0xe000, 0xffff).rom(); // space for diagnostic ROM?
+}
+
+void bublbobl_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x0000).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr1_r), FUNC(bublbobl_state::bublbobl_mcu_ddr1_w));
+ map(0x0001, 0x0001).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr2_r), FUNC(bublbobl_state::bublbobl_mcu_ddr2_w));
+ map(0x0002, 0x0002).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port1_r), FUNC(bublbobl_state::bublbobl_mcu_port1_w));
+ map(0x0003, 0x0003).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port2_r), FUNC(bublbobl_state::bublbobl_mcu_port2_w));
+ map(0x0004, 0x0004).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr3_r), FUNC(bublbobl_state::bublbobl_mcu_ddr3_w));
+ map(0x0005, 0x0005).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr4_r), FUNC(bublbobl_state::bublbobl_mcu_ddr4_w));
+ map(0x0006, 0x0006).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port3_r), FUNC(bublbobl_state::bublbobl_mcu_port3_w));
+ map(0x0007, 0x0007).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port4_r), FUNC(bublbobl_state::bublbobl_mcu_port4_w));
+ map(0x0040, 0x00ff).ram();
+ map(0xf000, 0xffff).rom();
+}
+
+void bublbobl_state::bootleg_map(address_map &map)
+{
+ common_maincpu_map(map);
+ map(0xfa00, 0xfa00).mirror(0x007c).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write));
+ map(0xfa01, 0xfa01).mirror(0x007c).r(this, FUNC(bublbobl_state::common_sound_semaphores_r));
+ map(0xfa03, 0xfa03).mirror(0x007c).w(this, FUNC(bublbobl_state::bublbobl_soundcpu_reset_w));
+ map(0xfa80, 0xfa80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xfb00, 0xfb00).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_nmitrigger_w));
+ map(0xfb40, 0xfb40).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_bankswitch_w));
// above here is identical to non-bootleg
- AM_RANGE(0xfc00, 0xfcff) AM_RAM
- AM_RANGE(0xfd00, 0xfdff) AM_RAM
- AM_RANGE(0xfe00, 0xfe03) AM_READWRITE(boblbobl_ic43_a_r, boblbobl_ic43_a_w)
- AM_RANGE(0xfe80, 0xfe83) AM_READWRITE(boblbobl_ic43_b_r, boblbobl_ic43_b_w)
- AM_RANGE(0xff00, 0xff00) AM_READ_PORT("DSW0")
- AM_RANGE(0xff01, 0xff01) AM_READ_PORT("DSW1")
- AM_RANGE(0xff02, 0xff02) AM_READ_PORT("IN0")
- AM_RANGE(0xff03, 0xff03) AM_READ_PORT("IN1")
- AM_RANGE(0xff94, 0xff94) AM_WRITENOP // ???
- AM_RANGE(0xff98, 0xff98) AM_WRITENOP // ???
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bublbobl_state::tokio_map)
- AM_IMPORT_FROM(common_maincpu_map)
- AM_RANGE(0xfa00, 0xfa00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xfa03, 0xfa03) AM_READ_PORT("DSW0")
- AM_RANGE(0xfa04, 0xfa04) AM_READ_PORT("DSW1")
- AM_RANGE(0xfa05, 0xfa05) AM_READ_PORT("IN0")
- AM_RANGE(0xfa06, 0xfa06) AM_READ_PORT("IN1")
- AM_RANGE(0xfa07, 0xfa07) AM_READ_PORT("IN2")
- AM_RANGE(0xfa80, 0xfa80) AM_WRITE(tokio_bankswitch_w)
- AM_RANGE(0xfb00, 0xfb00) AM_WRITE(tokio_videoctrl_w)
- AM_RANGE(0xfb80, 0xfb80) AM_WRITE(bublbobl_nmitrigger_w)
- AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::tokio_map_mcu)
- AM_IMPORT_FROM(tokio_map)
- AM_RANGE(0xfe00, 0xfe00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::tokio_map_bootleg)
- AM_IMPORT_FROM(tokio_map)
- AM_RANGE(0xfe00, 0xfe00) AM_READ( tokiob_mcu_r )
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bublbobl_state::tokio_subcpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bublbobl_state::tokio_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_DEVREAD("main_to_sound", generic_latch_8_device, read) AM_DEVWRITE("sound_to_main", generic_latch_8_device, write)
- AM_RANGE(0x9800, 0x9800) AM_READ(common_sound_semaphores_r)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>)
- AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("soundnmi", input_merger_device, in_set<0>)
- AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM?
-ADDRESS_MAP_END
+ map(0xfc00, 0xfcff).ram();
+ map(0xfd00, 0xfdff).ram();
+ map(0xfe00, 0xfe03).rw(this, FUNC(bublbobl_state::boblbobl_ic43_a_r), FUNC(bublbobl_state::boblbobl_ic43_a_w));
+ map(0xfe80, 0xfe83).rw(this, FUNC(bublbobl_state::boblbobl_ic43_b_r), FUNC(bublbobl_state::boblbobl_ic43_b_w));
+ map(0xff00, 0xff00).portr("DSW0");
+ map(0xff01, 0xff01).portr("DSW1");
+ map(0xff02, 0xff02).portr("IN0");
+ map(0xff03, 0xff03).portr("IN1");
+ map(0xff94, 0xff94).nopw(); // ???
+ map(0xff98, 0xff98).nopw(); // ???
+}
+
+
+void bublbobl_state::tokio_map(address_map &map)
+{
+ common_maincpu_map(map);
+ map(0xfa00, 0xfa00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xfa03, 0xfa03).portr("DSW0");
+ map(0xfa04, 0xfa04).portr("DSW1");
+ map(0xfa05, 0xfa05).portr("IN0");
+ map(0xfa06, 0xfa06).portr("IN1");
+ map(0xfa07, 0xfa07).portr("IN2");
+ map(0xfa80, 0xfa80).w(this, FUNC(bublbobl_state::tokio_bankswitch_w));
+ map(0xfb00, 0xfb00).w(this, FUNC(bublbobl_state::tokio_videoctrl_w));
+ map(0xfb80, 0xfb80).w(this, FUNC(bublbobl_state::bublbobl_nmitrigger_w));
+ map(0xfc00, 0xfc00).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write));
+}
+
+void bublbobl_state::tokio_map_mcu(address_map &map)
+{
+ tokio_map(map);
+ map(0xfe00, 0xfe00).rw("bmcu", FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+}
+
+void bublbobl_state::tokio_map_bootleg(address_map &map)
+{
+ tokio_map(map);
+ map(0xfe00, 0xfe00).r(this, FUNC(bublbobl_state::tokiob_mcu_r));
+}
+
+
+void bublbobl_state::tokio_subcpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x97ff).ram().share("share1");
+}
+
+void bublbobl_state::tokio_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9000).r(m_main_to_sound, FUNC(generic_latch_8_device::read)).w(m_sound_to_main, FUNC(generic_latch_8_device::write));
+ map(0x9800, 0x9800).r(this, FUNC(bublbobl_state::common_sound_semaphores_r));
+ map(0xa000, 0xa000).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>));
+ map(0xa800, 0xa800).w(m_soundnmi, FUNC(input_merger_device::in_set<0>));
+ map(0xb000, 0xb001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xe000, 0xffff).rom(); // space for diagnostic ROM?
+}
/*************************************
diff --git a/src/mame/drivers/buggychl.cpp b/src/mame/drivers/buggychl.cpp
index 373c56ee42e..94140f0e0a6 100644
--- a/src/mame/drivers/buggychl.cpp
+++ b/src/mame/drivers/buggychl.cpp
@@ -194,63 +194,65 @@ READ8_MEMBER(buggychl_state::sound_status_sound_r)
1 1 1 0 ? ? ? ? ? ? ? ? ? ? ? ? ? (unknown, cut off on schematic)
1 1 1 1 ? ? ? ? ? ? ? ? ? ? ? ? ? (unknown, cut off on schematic)
*/
-ADDRESS_MAP_START(buggychl_state::buggychl_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* A22-04 (23) */
- AM_RANGE(0x4000, 0x7fff) AM_ROM /* A22-05 (22) */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* 6116 SRAM (36) */
- AM_RANGE(0x8800, 0x8fff) AM_RAM /* 6116 SRAM (35) */
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(buggychl_sprite_lookup_w)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") AM_WRITE(buggychl_chargen_w) AM_SHARE("charram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd000) AM_WRITENOP // ???
- AM_RANGE(0xd100, 0xd100) AM_MIRROR(0x00ff) AM_WRITE(buggychl_ctrl_w)
- AM_RANGE(0xd200, 0xd200) AM_MIRROR(0x00ff) AM_WRITE(bankswitch_w)
- AM_RANGE(0xd300, 0xd300) AM_MIRROR(0x00f8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+void buggychl_state::buggychl_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); /* A22-04 (23) */
+ map(0x4000, 0x7fff).rom(); /* A22-05 (22) */
+ map(0x8000, 0x87ff).ram(); /* 6116 SRAM (36) */
+ map(0x8800, 0x8fff).ram(); /* 6116 SRAM (35) */
+ map(0x9000, 0x9fff).w(this, FUNC(buggychl_state::buggychl_sprite_lookup_w));
+ map(0xa000, 0xbfff).bankr("bank1").w(this, FUNC(buggychl_state::buggychl_chargen_w)).share("charram");
+ map(0xc800, 0xcfff).ram().share("videoram");
+ map(0xd000, 0xd000).nopw(); // ???
+ map(0xd100, 0xd100).mirror(0x00ff).w(this, FUNC(buggychl_state::buggychl_ctrl_w));
+ map(0xd200, 0xd200).mirror(0x00ff).w(this, FUNC(buggychl_state::bankswitch_w));
+ map(0xd300, 0xd300).mirror(0x00f8).w("watchdog", FUNC(watchdog_timer_device::reset_w));
// d301 = flp stuff, unused?
// d302 = mcu reset latched d0
- AM_RANGE(0xd303, 0xd303) AM_MIRROR(0x00f8) AM_WRITE(buggychl_sprite_lookup_bank_w)
- AM_RANGE(0xd304, 0xd307) AM_WRITENOP // d304-d307 is SCCON, which seems to be for a bezel mounted 7seg score/time display like Grand Champion has
- AM_RANGE(0xd400, 0xd400) AM_MIRROR(0x00fc) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0xd401, 0xd401) AM_MIRROR(0x00fc) AM_READ(mcu_status_r)
- AM_RANGE(0xd500, 0xd57f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd600, 0xd600) AM_MIRROR(0x00e4) AM_READ_PORT("DSW1")
- AM_RANGE(0xd601, 0xd601) AM_MIRROR(0x00e4) AM_READ_PORT("DSW2")
- AM_RANGE(0xd602, 0xd602) AM_MIRROR(0x00e4) AM_READ_PORT("DSW3")
- AM_RANGE(0xd603, 0xd603) AM_MIRROR(0x00e4) AM_READ_PORT("IN0") /* player inputs */
- AM_RANGE(0xd608, 0xd608) AM_MIRROR(0x00e4) AM_READ_PORT("WHEEL")
- AM_RANGE(0xd609, 0xd609) AM_MIRROR(0x00e4) AM_READ_PORT("IN1") /* coin + accelerator */
+ map(0xd303, 0xd303).mirror(0x00f8).w(this, FUNC(buggychl_state::buggychl_sprite_lookup_bank_w));
+ map(0xd304, 0xd307).nopw(); // d304-d307 is SCCON, which seems to be for a bezel mounted 7seg score/time display like Grand Champion has
+ map(0xd400, 0xd400).mirror(0x00fc).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0xd401, 0xd401).mirror(0x00fc).r(this, FUNC(buggychl_state::mcu_status_r));
+ map(0xd500, 0xd57f).writeonly().share("spriteram");
+ map(0xd600, 0xd600).mirror(0x00e4).portr("DSW1");
+ map(0xd601, 0xd601).mirror(0x00e4).portr("DSW2");
+ map(0xd602, 0xd602).mirror(0x00e4).portr("DSW3");
+ map(0xd603, 0xd603).mirror(0x00e4).portr("IN0"); /* player inputs */
+ map(0xd608, 0xd608).mirror(0x00e4).portr("WHEEL");
+ map(0xd609, 0xd609).mirror(0x00e4).portr("IN1"); /* coin + accelerator */
// AM_RANGE(0xd60a, 0xd60a) AM_MIRROR(0x00e4) // other inputs, not used?
// AM_RANGE(0xd60b, 0xd60b) AM_MIRROR(0x00e4) // other inputs, not used?
- AM_RANGE(0xd610, 0xd610) AM_MIRROR(0x00e4) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd611, 0xd611) AM_MIRROR(0x00e4) AM_READ(sound_status_main_r)
+ map(0xd610, 0xd610).mirror(0x00e4).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd611, 0xd611).mirror(0x00e4).r(this, FUNC(buggychl_state::sound_status_main_r));
// AM_RANGE(0xd613, 0xd613) AM_MIRROR(0x00e4) AM_WRITE(sound_reset_w)
- AM_RANGE(0xd618, 0xd618) AM_MIRROR(0x00e7) AM_WRITENOP /* accelerator clear; TODO: should we emulate the proper quadrature counter here? */
- AM_RANGE(0xd700, 0xd7ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xd820, 0xd83f) AM_RAM // TODO
- AM_RANGE(0xd840, 0xd85f) AM_WRITEONLY AM_SHARE("scrollv")
- AM_RANGE(0xdb00, 0xdbff) AM_WRITEONLY AM_SHARE("scrollh")
- AM_RANGE(0xdc04, 0xdc04) AM_WRITEONLY /* should be fg scroll */
- AM_RANGE(0xdc06, 0xdc06) AM_WRITE(buggychl_bg_scrollx_w)
-ADDRESS_MAP_END
+ map(0xd618, 0xd618).mirror(0x00e7).nopw(); /* accelerator clear; TODO: should we emulate the proper quadrature counter here? */
+ map(0xd700, 0xd7ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd820, 0xd83f).ram(); // TODO
+ map(0xd840, 0xd85f).writeonly().share("scrollv");
+ map(0xdb00, 0xdbff).writeonly().share("scrollh");
+ map(0xdc04, 0xdc04).writeonly(); /* should be fg scroll */
+ map(0xdc06, 0xdc06).w(this, FUNC(buggychl_state::buggychl_bg_scrollx_w));
+}
/* The schematics for buggy challenge has the wrong sound board schematic attached to it.
(The schematic is for an unknown taito game, possibly never released.)
The final buggy challenge sound board is more similar to Fairyland Story sound
hardware, except it has two YM2149 chips instead of one, and much less ROM space. */
-ADDRESS_MAP_START(buggychl_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4801) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x4802, 0x4803) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x4810, 0x481d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0x4820, 0x4820) AM_WRITE(ta7630_volbal_msm_w) /* VOL/BAL for the 7630 on the MSM5232 output */
- AM_RANGE(0x4830, 0x4830) AM_RAM /* TRBL/BASS for the 7630 on the MSM5232 output */
- AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x5001, 0x5001) AM_READ(sound_status_sound_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>)
- AM_RANGE(0x5002, 0x5002) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>)
- AM_RANGE(0x5003, 0x5003) AM_WRITE(sound_enable_w) // unclear what this actually controls
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */
-ADDRESS_MAP_END
+void buggychl_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4801).w(m_ay1, FUNC(ay8910_device::address_data_w));
+ map(0x4802, 0x4803).w(m_ay2, FUNC(ay8910_device::address_data_w));
+ map(0x4810, 0x481d).w(m_msm, FUNC(msm5232_device::write));
+ map(0x4820, 0x4820).w(this, FUNC(buggychl_state::ta7630_volbal_msm_w)); /* VOL/BAL for the 7630 on the MSM5232 output */
+ map(0x4830, 0x4830).ram(); /* TRBL/BASS for the 7630 on the MSM5232 output */
+ map(0x5000, 0x5000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0x5001, 0x5001).r(this, FUNC(buggychl_state::sound_status_sound_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<1>));
+ map(0x5002, 0x5002).w(m_soundnmi, FUNC(input_merger_device::in_clear<1>));
+ map(0x5003, 0x5003).w(this, FUNC(buggychl_state::sound_enable_w)); // unclear what this actually controls
+ map(0xe000, 0xefff).rom(); /* space for diagnostics ROM */
+}
/******************************************************************************/
diff --git a/src/mame/drivers/bullet.cpp b/src/mame/drivers/bullet.cpp
index 938c7b4759d..62f0b8d91b9 100644
--- a/src/mame/drivers/bullet.cpp
+++ b/src/mame/drivers/bullet.cpp
@@ -607,58 +607,62 @@ READ8_MEMBER( bulletf_state::hwsts_r )
// ADDRESS_MAP( bullet_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(bullet_state::bullet_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w)
-ADDRESS_MAP_END
+void bullet_state::bullet_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(bullet_state::mreq_r), FUNC(bullet_state::mreq_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( bullet_io )
//-------------------------------------------------
-ADDRESS_MAP_START(bullet_state::bullet_io)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x03) AM_READWRITE(win_r, wstrobe_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write)
- AM_RANGE(0x15, 0x15) AM_READWRITE(brom_r, brom_w)
- AM_RANGE(0x16, 0x16) AM_WRITE(exdsk_w)
- AM_RANGE(0x17, 0x17) AM_WRITE(exdma_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(hdcon_w)
- AM_RANGE(0x19, 0x19) AM_READ(info_r)
- AM_RANGE(0x1a, 0x1a) AM_WRITE(segst_w)
-ADDRESS_MAP_END
+void bullet_state::bullet_io(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x03).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x04, 0x07).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0c).mirror(0x03).rw(this, FUNC(bullet_state::win_r), FUNC(bullet_state::wstrobe_w));
+ map(0x10, 0x13).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write));
+ map(0x14, 0x14).rw(m_dmac, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x15, 0x15).rw(this, FUNC(bullet_state::brom_r), FUNC(bullet_state::brom_w));
+ map(0x16, 0x16).w(this, FUNC(bullet_state::exdsk_w));
+ map(0x17, 0x17).w(this, FUNC(bullet_state::exdma_w));
+ map(0x18, 0x18).w(this, FUNC(bullet_state::hdcon_w));
+ map(0x19, 0x19).r(this, FUNC(bullet_state::info_r));
+ map(0x1a, 0x1a).w(this, FUNC(bullet_state::segst_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( bulletf_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(bulletf_state::bulletf_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w)
-ADDRESS_MAP_END
+void bulletf_state::bulletf_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(bulletf_state::mreq_r), FUNC(bulletf_state::mreq_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( bulletf_io )
//-------------------------------------------------
-ADDRESS_MAP_START(bulletf_state::bulletf_io)
- ADDRESS_MAP_GLOBAL_MASK(0x3f)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write)
- AM_RANGE(0x14, 0x14) AM_WRITE(xdma0_w)
- AM_RANGE(0x16, 0x16) AM_WRITE(xfdc_w)
- AM_RANGE(0x17, 0x17) AM_WRITE(mbank_w)
- AM_RANGE(0x19, 0x19) AM_READWRITE(scsi_r, scsi_w)
- AM_RANGE(0x1a, 0x1a) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write)
- AM_RANGE(0x1b, 0x1b) AM_READ(hwsts_r)
-ADDRESS_MAP_END
+void bulletf_state::bulletf_io(address_map &map)
+{
+ map.global_mask(0x3f);
+ map(0x00, 0x03).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x04, 0x07).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x10, 0x13).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write));
+ map(0x14, 0x14).w(this, FUNC(bulletf_state::xdma0_w));
+ map(0x16, 0x16).w(this, FUNC(bulletf_state::xfdc_w));
+ map(0x17, 0x17).w(this, FUNC(bulletf_state::mbank_w));
+ map(0x19, 0x19).rw(this, FUNC(bulletf_state::scsi_r), FUNC(bulletf_state::scsi_w));
+ map(0x1a, 0x1a).rw(m_dmac, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x1b, 0x1b).r(this, FUNC(bulletf_state::hwsts_r));
+}
diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp
index ae6cfa4cf86..8c9146a93f9 100644
--- a/src/mame/drivers/busicom.cpp
+++ b/src/mame/drivers/busicom.cpp
@@ -99,32 +99,37 @@ WRITE8_MEMBER(busicom_state::printer_ctrl_w)
{
}
-ADDRESS_MAP_START(busicom_state::busicom_rom)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x04FF) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(busicom_state::busicom_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07F) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(busicom_state::busicom_stat)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x01F) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(busicom_state::busicom_rp)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_WRITE(shifter_w) // ROM0 I/O
- AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x0700) AM_READWRITE(keyboard_r,printer_ctrl_w) // ROM1 I/O
- AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x0700) AM_READ(printer_r) // ROM2 I/O
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(busicom_state::busicom_mp)
- AM_RANGE(0x00, 0x00) AM_WRITE(printer_w) // RAM0 output
- AM_RANGE(0x01, 0x01) AM_WRITE(status_w) // RAM1 output
-ADDRESS_MAP_END
+void busicom_state::busicom_rom(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x04FF).rom().region("maincpu", 0);
+}
+
+void busicom_state::busicom_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07F).ram();
+}
+
+void busicom_state::busicom_stat(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x01F).ram();
+}
+
+void busicom_state::busicom_rp(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x000f).mirror(0x0700).w(this, FUNC(busicom_state::shifter_w)); // ROM0 I/O
+ map(0x0010, 0x001f).mirror(0x0700).rw(this, FUNC(busicom_state::keyboard_r), FUNC(busicom_state::printer_ctrl_w)); // ROM1 I/O
+ map(0x0020, 0x002f).mirror(0x0700).r(this, FUNC(busicom_state::printer_r)); // ROM2 I/O
+}
+
+void busicom_state::busicom_mp(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(busicom_state::printer_w)); // RAM0 output
+ map(0x01, 0x01).w(this, FUNC(busicom_state::status_w)); // RAM1 output
+}
/* Input ports */
static INPUT_PORTS_START( busicom )
diff --git a/src/mame/drivers/buster.cpp b/src/mame/drivers/buster.cpp
index 1d3bbbc2bc3..85a524136ba 100644
--- a/src/mame/drivers/buster.cpp
+++ b/src/mame/drivers/buster.cpp
@@ -79,25 +79,26 @@ WRITE8_MEMBER(buster_state::coin_output_w)
// bit 7 enabled on spin
}
-ADDRESS_MAP_START(buster_state::mainmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM// AM_SHARE("rom")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("wram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x7c00, 0x7cff) AM_RAM // i/o, protected/exotic chip???
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN0")
- AM_RANGE(0x7c82, 0x7c82) AM_READ_PORT("IN1")
- AM_RANGE(0x7c84, 0x7c84) AM_READ_PORT("IN2")
- AM_RANGE(0x7c86, 0x7c86) AM_READ_PORT("IN3")
- AM_RANGE(0x7c88, 0x7c88) AM_READ_PORT("IN4")
- AM_RANGE(0x7c8a, 0x7c8a) AM_READ_PORT("IN5")
- AM_RANGE(0x7c8c, 0x7c8c) AM_READ_PORT("IN6")
- AM_RANGE(0x7c8e, 0x7c8e) AM_READ_PORT("IN7")
- AM_RANGE(0x7cb0, 0x7cb7) AM_WRITE(coin_output_w)
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("wram") // ???
- AM_RANGE(0xa000, 0xa0ff) AM_RAM // nvram?
-ADDRESS_MAP_END
+void buster_state::mainmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();// AM_SHARE("rom")
+ map(0x4000, 0x47ff).ram().share("wram");
+ map(0x5000, 0x5fff).ram().share("vram");
+ map(0x6000, 0x6000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x6001, 0x6001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x7c00, 0x7cff).ram(); // i/o, protected/exotic chip???
+ map(0x7c80, 0x7c80).portr("IN0");
+ map(0x7c82, 0x7c82).portr("IN1");
+ map(0x7c84, 0x7c84).portr("IN2");
+ map(0x7c86, 0x7c86).portr("IN3");
+ map(0x7c88, 0x7c88).portr("IN4");
+ map(0x7c8a, 0x7c8a).portr("IN5");
+ map(0x7c8c, 0x7c8c).portr("IN6");
+ map(0x7c8e, 0x7c8e).portr("IN7");
+ map(0x7cb0, 0x7cb7).w(this, FUNC(buster_state::coin_output_w));
+ map(0x8800, 0x8fff).ram().share("wram"); // ???
+ map(0xa000, 0xa0ff).ram(); // nvram?
+}
diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp
index ac1ff5686f0..02a3b9b00b8 100644
--- a/src/mame/drivers/bw12.cpp
+++ b/src/mame/drivers/bw12.cpp
@@ -168,23 +168,25 @@ READ8_MEMBER( bw12_state::ls259_r )
/* Memory Maps */
-ADDRESS_MAP_START(bw12_state::bw12_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1")
- AM_RANGE(0x8000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bw12_state::bw12_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_READWRITE(ls259_r, ls259_w)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0x20, 0x21) AM_MIRROR(0x0e) AM_DEVICE(UPD765_TAG, upd765a_device, map)
- AM_RANGE(0x30, 0x33) AM_MIRROR(0x0c) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x0c) AM_DEVREADWRITE(PIT8253_TAG, pit8253_device, read, write)
-ADDRESS_MAP_END
+void bw12_state::bw12_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("video_ram");
+}
+
+void bw12_state::bw12_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).rw(this, FUNC(bw12_state::ls259_r), FUNC(bw12_state::ls259_w));
+ map(0x10, 0x10).mirror(0x0e).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x11, 0x11).mirror(0x0e).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x20, 0x21).mirror(0x0e).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x30, 0x33).mirror(0x0c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x40, 0x43).mirror(0x0c).rw(m_sio, FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w));
+ map(0x50, 0x50).mirror(0x0f).w("dac", FUNC(dac_byte_interface::write));
+ map(0x60, 0x63).mirror(0x0c).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp
index 67366d42591..2ca8bb637b0 100644
--- a/src/mame/drivers/bw2.cpp
+++ b/src/mame/drivers/bw2.cpp
@@ -202,39 +202,42 @@ WRITE8_MEMBER( bw2_state::write )
// ADDRESS_MAP( bw2_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(bw2_state::bw2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void bw2_state::bw2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(bw2_state::read), FUNC(bw2_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( bw2_io )
//-------------------------------------------------
-ADDRESS_MAP_START(bw2_state::bw2_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
- AM_RANGE(0x20, 0x21) AM_DEVICE(MSM6255_TAG, msm6255_device, map)
- AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, slot_r, slot_w)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x41, 0x41) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(WD2797_TAG, wd2797_device, read, write)
- AM_RANGE(0x70, 0x7f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, modsel_r, modsel_w)
-ADDRESS_MAP_END
+void bw2_state::bw2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x10, 0x13).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x20, 0x21).m(m_lcdc, FUNC(msm6255_device::map));
+ map(0x30, 0x3f).rw(m_exp, FUNC(bw2_expansion_slot_device::slot_r), FUNC(bw2_expansion_slot_device::slot_w));
+ map(0x40, 0x40).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x41, 0x41).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x50, 0x50).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x60, 0x63).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write));
+ map(0x70, 0x7f).rw(m_exp, FUNC(bw2_expansion_slot_device::modsel_r), FUNC(bw2_expansion_slot_device::modsel_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( lcdc_map )
//-------------------------------------------------
-ADDRESS_MAP_START(bw2_state::lcdc_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void bw2_state::lcdc_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x3fff).ram().share("videoram");
+}
diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp
index bdae3bcabba..783972ebef7 100644
--- a/src/mame/drivers/bwidow.cpp
+++ b/src/mame/drivers/bwidow.cpp
@@ -375,65 +375,68 @@ WRITE8_MEMBER(bwidow_state::irq_ack_w)
*
*************************************/
-ADDRESS_MAP_START(bwidow_state::bwidow_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x2800, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x6800, 0x6fff) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x7800, 0x7800) AM_READ_PORT("IN0")
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN3")
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("IN4")
- AM_RANGE(0x8800, 0x8800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */
- AM_RANGE(0x8840, 0x8840) AM_DEVWRITE("avg", avg_device, go_w)
- AM_RANGE(0x8880, 0x8880) AM_DEVWRITE("avg", avg_device, reset_w)
- AM_RANGE(0x88c0, 0x88c0) AM_WRITE(irq_ack_w) /* interrupt acknowledge */
- AM_RANGE(0x8900, 0x8900) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x8940, 0x897f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x8980, 0x89ed) AM_WRITENOP /* watchdog clear */
- AM_RANGE(0x9000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bwidow_state::bwidowp_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x0810, 0x081f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_READ(bwidowp_in_r)
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("avg", avg_device, go_w)
- AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("avg", avg_device, reset_w)
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3800, 0x3800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000)
- AM_RANGE(0x4800, 0x6fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_WRITE(irq_ack_w) /* interrupt acknowledge */
- AM_RANGE(0x8000, 0x803f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x9000, 0x9000) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x9800, 0x9800) AM_WRITENOP /* ? written once at startup */
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(bwidow_state::spacduel_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0")
- AM_RANGE(0x0900, 0x0907) AM_READ(spacduel_IN3_r) /* IN1 */
- AM_RANGE(0x0905, 0x0906) AM_WRITENOP /* ignore? */
- AM_RANGE(0x0a00, 0x0a00) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x0c00, 0x0c00) AM_WRITE(spacduel_coin_counter_w) /* coin out */
- AM_RANGE(0x0c80, 0x0c80) AM_DEVWRITE("avg", avg_device, go_w)
- AM_RANGE(0x0d00, 0x0d00) AM_WRITENOP /* watchdog clear */
- AM_RANGE(0x0d80, 0x0d80) AM_DEVWRITE("avg", avg_device, reset_w)
- AM_RANGE(0x0e00, 0x0e00) AM_WRITE(irq_ack_w) /* interrupt acknowledge */
- AM_RANGE(0x0e80, 0x0e80) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x0f00, 0x0f3f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x1000, 0x10ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x1400, 0x14ff) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x2800, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void bwidow_state::bwidow_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000);
+ map(0x2800, 0x5fff).rom();
+ map(0x6000, 0x67ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x6800, 0x6fff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x7000, 0x7000).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x7800, 0x7800).portr("IN0");
+ map(0x8000, 0x8000).portr("IN3");
+ map(0x8800, 0x8800).portr("IN4");
+ map(0x8800, 0x8800).w(this, FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */
+ map(0x8840, 0x8840).w("avg", FUNC(avg_device::go_w));
+ map(0x8880, 0x8880).w("avg", FUNC(avg_device::reset_w));
+ map(0x88c0, 0x88c0).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */
+ map(0x8900, 0x8900).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x8940, 0x897f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x8980, 0x89ed).nopw(); /* watchdog clear */
+ map(0x9000, 0xffff).rom();
+}
+
+void bwidow_state::bwidowp_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x080f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x0810, 0x081f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1000, 0x1000).r(this, FUNC(bwidow_state::bwidowp_in_r));
+ map(0x1800, 0x1800).portr("IN0");
+ map(0x2000, 0x2000).w("avg", FUNC(avg_device::go_w));
+ map(0x2800, 0x2800).w("avg", FUNC(avg_device::reset_w));
+ map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3800, 0x3800).w(this, FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */
+ map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
+ map(0x4800, 0x6fff).rom();
+ map(0x6000, 0x6000).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */
+ map(0x8000, 0x803f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x8800, 0x8800).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x9000, 0x9000).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x9800, 0x9800).nopw(); /* ? written once at startup */
+ map(0xa000, 0xffff).rom();
+}
+
+void bwidow_state::spacduel_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0800, 0x0800).portr("IN0");
+ map(0x0900, 0x0907).r(this, FUNC(bwidow_state::spacduel_IN3_r)); /* IN1 */
+ map(0x0905, 0x0906).nopw(); /* ignore? */
+ map(0x0a00, 0x0a00).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x0c00, 0x0c00).w(this, FUNC(bwidow_state::spacduel_coin_counter_w)); /* coin out */
+ map(0x0c80, 0x0c80).w("avg", FUNC(avg_device::go_w));
+ map(0x0d00, 0x0d00).nopw(); /* watchdog clear */
+ map(0x0d80, 0x0d80).w("avg", FUNC(avg_device::reset_w));
+ map(0x0e00, 0x0e00).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */
+ map(0x0e80, 0x0e80).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x0f00, 0x0f3f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x1000, 0x10ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1400, 0x14ff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000);
+ map(0x2800, 0x3fff).rom();
+ map(0x4000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/bwing.cpp b/src/mame/drivers/bwing.cpp
index 2940490d487..519dd648ec8 100644
--- a/src/mame/drivers/bwing.cpp
+++ b/src/mame/drivers/bwing.cpp
@@ -121,58 +121,63 @@ WRITE8_MEMBER(bwing_state::bwp2_ctrl_w)
// CPU Memory Maps
// Main CPU
-ADDRESS_MAP_START(bwing_state::bwp1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x19ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1a00, 0x1aff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x1b00, 0x1b00) AM_READ_PORT("DSW0")
- AM_RANGE(0x1b01, 0x1b01) AM_READ_PORT("DSW1")
- AM_RANGE(0x1b02, 0x1b02) AM_READ_PORT("IN0")
- AM_RANGE(0x1b03, 0x1b03) AM_READ_PORT("IN1")
- AM_RANGE(0x1b04, 0x1b04) AM_READ_PORT("IN2")
- AM_RANGE(0x1b00, 0x1b07) AM_WRITE(scrollreg_w)
- AM_RANGE(0x1c00, 0x1c07) AM_RAM_WRITE(bwp1_ctrl_w)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xffff) AM_ROM // "B-Wings US" writes to 9631-9632(debug?)
-ADDRESS_MAP_END
+void bwing_state::bwp1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("sharedram");
+ map(0x0800, 0x0fff).ram();
+ map(0x1000, 0x13ff).ram().w(this, FUNC(bwing_state::videoram_w)).share("videoram");
+ map(0x1400, 0x17ff).ram();
+ map(0x1800, 0x19ff).ram().share("spriteram");
+ map(0x1a00, 0x1aff).ram().w(this, FUNC(bwing_state::paletteram_w)).share("paletteram");
+ map(0x1b00, 0x1b00).portr("DSW0");
+ map(0x1b01, 0x1b01).portr("DSW1");
+ map(0x1b02, 0x1b02).portr("IN0");
+ map(0x1b03, 0x1b03).portr("IN1");
+ map(0x1b04, 0x1b04).portr("IN2");
+ map(0x1b00, 0x1b07).w(this, FUNC(bwing_state::scrollreg_w));
+ map(0x1c00, 0x1c07).ram().w(this, FUNC(bwing_state::bwp1_ctrl_w));
+ map(0x2000, 0x3fff).m(m_vrambank, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xffff).rom(); // "B-Wings US" writes to 9631-9632(debug?)
+}
// Banked video RAM
-ADDRESS_MAP_START(bwing_state::bank_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(fgscrollram_w) AM_SHARE("fgscrollram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(bgscrollram_w) AM_SHARE("bgscrollram")
- AM_RANGE(0x2000, 0x7fff) AM_RAM_WRITE(gfxram_w) AM_SHARE("gfxram")
-ADDRESS_MAP_END
+void bwing_state::bank_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().w(this, FUNC(bwing_state::fgscrollram_w)).share("fgscrollram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(bwing_state::bgscrollram_w)).share("bgscrollram");
+ map(0x2000, 0x7fff).ram().w(this, FUNC(bwing_state::gfxram_w)).share("gfxram");
+}
// Sub CPU
-ADDRESS_MAP_START(bwing_state::bwp2_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM
- AM_RANGE(0x1800, 0x1803) AM_WRITE(bwp2_ctrl_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void bwing_state::bwp2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("sharedram");
+ map(0x0800, 0x0fff).ram();
+ map(0x1800, 0x1803).w(this, FUNC(bwing_state::bwp2_ctrl_w));
+ map(0xa000, 0xffff).rom();
+}
// Sound CPU
-ADDRESS_MAP_START(bwing_state::bwp3_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x0200) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x1000, 0x1000) AM_WRITE(bwp3_nmiack_w)
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8912_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8912_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(bwp3_nmimask_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(bwing_state::bwp3_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("VBLANK") AM_WRITE(bwp3_u8F_w)
-ADDRESS_MAP_END
+void bwing_state::bwp3_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x0200).w("dac", FUNC(dac_byte_interface::write));
+ map(0x1000, 0x1000).w(this, FUNC(bwing_state::bwp3_nmiack_w));
+ map(0x2000, 0x2000).w("ay1", FUNC(ay8912_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8912_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w(this, FUNC(bwing_state::bwp3_nmimask_w));
+ map(0xe000, 0xffff).rom().region("audiocpu", 0);
+}
+
+
+void bwing_state::bwp3_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("VBLANK").w(this, FUNC(bwing_state::bwp3_u8F_w));
+}
//****************************************************************************
// I/O Port Maps
diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp
index eed081329d7..18622d01c0a 100644
--- a/src/mame/drivers/by17.cpp
+++ b/src/mame/drivers/by17.cpp
@@ -125,14 +125,15 @@ private:
};
-ADDRESS_MAP_START(by17_state::by17_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
- AM_RANGE(0x0200, 0x02ff) AM_RAM AM_READWRITE(nibble_nvram_r, nibble_nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0 )
-ADDRESS_MAP_END
+void by17_state::by17_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x007f).ram();
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0200, 0x02ff).ram().rw(this, FUNC(by17_state::nibble_nvram_r), FUNC(by17_state::nibble_nvram_w)).share("nvram");
+ map(0x1000, 0x1fff).rom().region("roms", 0);
+}
static INPUT_PORTS_START( by17 )
diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp
index c3b16085963..9c18e6ba952 100644
--- a/src/mame/drivers/by35.cpp
+++ b/src/mame/drivers/by35.cpp
@@ -241,22 +241,24 @@ protected:
};
-ADDRESS_MAP_START(by35_state::by35_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 is not connected
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
- AM_RANGE(0x0200, 0x02ff) AM_RAM AM_READWRITE(nibble_nvram_r, nibble_nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x1000, 0x7fff) AM_ROM // AM_REGION("roms", 0 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(by35_state::nuovo_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
+void by35_state::by35_map(address_map &map)
+{
+ map.global_mask(0x7fff); // A15 is not connected
+ map(0x0000, 0x007f).ram();
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0200, 0x02ff).ram().rw(this, FUNC(by35_state::nibble_nvram_r), FUNC(by35_state::nibble_nvram_w)).share("nvram");
+ map(0x1000, 0x7fff).rom(); // AM_REGION("roms", 0 )
+}
+
+void by35_state::nuovo_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
// AM_RANGE(0x0000, 0x007f) AM_RAM // Schematics infer that the M6802 internal RAM is disabled.
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
- AM_RANGE(0x1000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp
index 48f8d3debe0..7f86f43adde 100644
--- a/src/mame/drivers/by6803.cpp
+++ b/src/mame/drivers/by6803.cpp
@@ -90,17 +90,19 @@ private:
};
-ADDRESS_MAP_START(by6803_state::by6803_map)
- AM_RANGE(0x0020, 0x0023) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("nvram") // 6116 ram
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(by6803_state::by6803_io)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(port1_r, port1_w) // P10-P17
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(port2_r, port2_w) // P20-P24
-ADDRESS_MAP_END
+void by6803_state::by6803_map(address_map &map)
+{
+ map(0x0020, 0x0023).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0040, 0x0043).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x17ff).ram().share("nvram"); // 6116 ram
+ map(0x8000, 0xffff).rom();
+}
+
+void by6803_state::by6803_io(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(by6803_state::port1_r), FUNC(by6803_state::port1_w)); // P10-P17
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(by6803_state::port2_r), FUNC(by6803_state::port2_w)); // P20-P24
+}
static INPUT_PORTS_START( by6803 )
PORT_START("TEST")
diff --git a/src/mame/drivers/by68701.cpp b/src/mame/drivers/by68701.cpp
index 9e1bf7b5be0..42ebe38b41f 100644
--- a/src/mame/drivers/by68701.cpp
+++ b/src/mame/drivers/by68701.cpp
@@ -26,13 +26,14 @@ public:
};
-ADDRESS_MAP_START(by68701_state::by68701_map)
- AM_RANGE(0x0000, 0xffff) AM_NOP
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0400, 0x04ff) AM_RAM
- AM_RANGE(0x0500, 0x07ff) AM_RAM
- AM_RANGE(0x7000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void by68701_state::by68701_map(address_map &map)
+{
+ map(0x0000, 0xffff).noprw();
+ map(0x0000, 0x00ff).ram();
+ map(0x0400, 0x04ff).ram();
+ map(0x0500, 0x07ff).ram();
+ map(0x7000, 0xffff).rom();
+}
static INPUT_PORTS_START( by68701 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp
index 23d7a951b4c..d7f742c5017 100644
--- a/src/mame/drivers/byvid.cpp
+++ b/src/mame/drivers/byvid.cpp
@@ -149,49 +149,54 @@ private:
};
-ADDRESS_MAP_START(by133_state::main_map) // U9 MPU
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // 128x8 in MC6810 U7 MPU
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) // PIA U10 MPU
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) // PIA U11 MPU
- AM_RANGE(0x0200, 0x03ff) AM_RAM AM_SHARE("nvram") // 256x4 in 5101L U8 MPU, battery backed (D4-7 are data, A4-8 are address)
- AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("roms", 0x0000)
- AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("roms", 0x1000)
- AM_RANGE(0x5000, 0x57ff) AM_ROM AM_REGION("roms", 0x0800)
- AM_RANGE(0x5800, 0x5fff) AM_ROM AM_REGION("roms", 0x1800)
- AM_RANGE(0x7000, 0x7fff) AM_ROM AM_REGION("roms", 0x1000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(by133_state::video_map) // U8 Vidiot
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(sound_data_r,sound_data_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia_u7", pia6821_device, read, write) // PIA U7 Vidiot
- AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x4001, 0x4001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write)
- AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(by133_state::granny_map)
- AM_RANGE(0x0000, 0x0001) AM_READWRITE(sound_data_r,sound_data_w)
- AM_RANGE(0x0002, 0x0002) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x0003, 0x0003) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write)
- AM_RANGE(0x0004, 0x0004) AM_DEVREADWRITE("crtc2", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x0005, 0x0005) AM_DEVREADWRITE("crtc2", tms9928a_device, register_read, register_write)
- AM_RANGE(0x0006, 0x0007) AM_WRITE(granny_crtc_w) // can write to both at once
- AM_RANGE(0x0008, 0x000b) AM_DEVREADWRITE("pia_u7", pia6821_device, read, write)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x2801, 0x2801) AM_READNOP // The '9' test reads this location constantly and throws away the result
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(by133_state::sound_map) // U27 Vidiot
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(by133_state::sound_portmap)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVWRITE("dac", dac_byte_interface, write) // P10-P17
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w) // P20-P24 sound command in
-ADDRESS_MAP_END
+void by133_state::main_map(address_map &map)
+{ // U9 MPU
+ map.global_mask(0x7fff);
+ map(0x0000, 0x007f).ram(); // 128x8 in MC6810 U7 MPU
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // PIA U10 MPU
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // PIA U11 MPU
+ map(0x0200, 0x03ff).ram().share("nvram"); // 256x4 in 5101L U8 MPU, battery backed (D4-7 are data, A4-8 are address)
+ map(0x1000, 0x17ff).rom().region("roms", 0x0000);
+ map(0x1800, 0x1fff).rom().region("roms", 0x1000);
+ map(0x5000, 0x57ff).rom().region("roms", 0x0800);
+ map(0x5800, 0x5fff).rom().region("roms", 0x1800);
+ map(0x7000, 0x7fff).rom().region("roms", 0x1000);
+}
+
+void by133_state::video_map(address_map &map)
+{ // U8 Vidiot
+ map(0x0000, 0x1fff).rw(this, 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, 0x4000).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x4001, 0x4001).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0x6000, 0x63ff).mirror(0x1c00).ram();
+ map(0x8000, 0xffff).rom();
+}
+
+void by133_state::granny_map(address_map &map)
+{
+ map(0x0000, 0x0001).rw(this, FUNC(by133_state::sound_data_r), FUNC(by133_state::sound_data_w));
+ map(0x0002, 0x0002).rw(m_crtc, FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x0003, 0x0003).rw(m_crtc, FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0x0004, 0x0004).rw(m_crtc2, FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x0005, 0x0005).rw(m_crtc2, FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0x0006, 0x0007).w(this, 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();
+ map(0x2801, 0x2801).nopr(); // The '9' test reads this location constantly and throws away the result
+ map(0x4000, 0xffff).rom();
+}
+
+void by133_state::sound_map(address_map &map)
+{ // U27 Vidiot
+ map(0xc000, 0xffff).rom();
+}
+
+void by133_state::sound_portmap(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).w("dac", FUNC(dac_byte_interface::write)); // P10-P17
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(by133_state::m6803_port2_r), FUNC(by133_state::m6803_port2_w)); // P20-P24 sound command in
+}
INPUT_CHANGED_MEMBER( by133_state::video_test )
diff --git a/src/mame/drivers/bzone.cpp b/src/mame/drivers/bzone.cpp
index f8370939367..21c015838b6 100644
--- a/src/mame/drivers/bzone.cpp
+++ b/src/mame/drivers/bzone.cpp
@@ -300,49 +300,51 @@ WRITE8_MEMBER(redbaron_state::redbaron_joysound_w)
*
*************************************/
-ADDRESS_MAP_START(bzone_state::bzone_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0")
- AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("DSW1")
- AM_RANGE(0x1000, 0x1000) AM_WRITE(bzone_coin_counter_w)
- AM_RANGE(0x1200, 0x1200) AM_DEVWRITE("avg", avg_bzone_device, go_w)
- AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1600, 0x1600) AM_DEVWRITE("avg", avg_bzone_device, reset_w)
- AM_RANGE(0x1800, 0x1800) AM_DEVREAD("mathbox", mathbox_device, status_r)
- AM_RANGE(0x1810, 0x1810) AM_DEVREAD("mathbox", mathbox_device, lo_r)
- AM_RANGE(0x1818, 0x1818) AM_DEVREAD("mathbox", mathbox_device, hi_r)
- AM_RANGE(0x1820, 0x182f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x1840, 0x1840) AM_WRITE(bzone_sounds_w)
- AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
- AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x3000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(redbaron_state::redbaron_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0")
- AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("DSW1")
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* coin out - Manual states this is "Coin Counter" */
- AM_RANGE(0x1200, 0x1200) AM_DEVWRITE("avg", avg_bzone_device, go_w)
- AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1600, 0x1600) AM_DEVWRITE("avg", avg_bzone_device, reset_w)
- AM_RANGE(0x1800, 0x1800) AM_DEVREAD("mathbox", mathbox_device, status_r)
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN4")
- AM_RANGE(0x1804, 0x1804) AM_DEVREAD("mathbox", mathbox_device, lo_r)
- AM_RANGE(0x1806, 0x1806) AM_DEVREAD("mathbox", mathbox_device, hi_r)
- AM_RANGE(0x1808, 0x1808) AM_WRITE(redbaron_joysound_w) /* and select joystick pot also */
- AM_RANGE(0x180a, 0x180a) AM_WRITENOP /* sound reset, yet todo */
- AM_RANGE(0x180c, 0x180c) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x1820, 0x185f) AM_DEVREADWRITE("earom", atari_vg_earom_device, read, write)
- AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
- AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x3000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void bzone_state::bzone_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).ram();
+ map(0x0800, 0x0800).portr("IN0");
+ map(0x0a00, 0x0a00).portr("DSW0");
+ map(0x0c00, 0x0c00).portr("DSW1");
+ map(0x1000, 0x1000).w(this, FUNC(bzone_state::bzone_coin_counter_w));
+ map(0x1200, 0x1200).w("avg", FUNC(avg_bzone_device::go_w));
+ map(0x1400, 0x1400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1600, 0x1600).w("avg", FUNC(avg_bzone_device::reset_w));
+ map(0x1800, 0x1800).r(m_mathbox, FUNC(mathbox_device::status_r));
+ map(0x1810, 0x1810).r(m_mathbox, FUNC(mathbox_device::lo_r));
+ map(0x1818, 0x1818).r(m_mathbox, FUNC(mathbox_device::hi_r));
+ map(0x1820, 0x182f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1840, 0x1840).w(this, FUNC(bzone_state::bzone_sounds_w));
+ map(0x1860, 0x187f).w(m_mathbox, FUNC(mathbox_device::go_w));
+ map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000);
+ map(0x3000, 0x7fff).rom();
+}
+
+void redbaron_state::redbaron_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).ram();
+ map(0x0800, 0x0800).portr("IN0");
+ map(0x0a00, 0x0a00).portr("DSW0");
+ map(0x0c00, 0x0c00).portr("DSW1");
+ map(0x1000, 0x1000).nopw(); /* coin out - Manual states this is "Coin Counter" */
+ map(0x1200, 0x1200).w("avg", FUNC(avg_bzone_device::go_w));
+ map(0x1400, 0x1400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1600, 0x1600).w("avg", FUNC(avg_bzone_device::reset_w));
+ map(0x1800, 0x1800).r("mathbox", FUNC(mathbox_device::status_r));
+ map(0x1802, 0x1802).portr("IN4");
+ map(0x1804, 0x1804).r("mathbox", FUNC(mathbox_device::lo_r));
+ map(0x1806, 0x1806).r("mathbox", FUNC(mathbox_device::hi_r));
+ map(0x1808, 0x1808).w(this, FUNC(redbaron_state::redbaron_joysound_w)); /* and select joystick pot also */
+ map(0x180a, 0x180a).nopw(); /* sound reset, yet todo */
+ map(0x180c, 0x180c).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x1810, 0x181f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1820, 0x185f).rw("earom", FUNC(atari_vg_earom_device::read), FUNC(atari_vg_earom_device::write));
+ map(0x1860, 0x187f).w("mathbox", FUNC(mathbox_device::go_w));
+ map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000);
+ map(0x3000, 0x7fff).rom();
+}
diff --git a/src/mame/drivers/c10.cpp b/src/mame/drivers/c10.cpp
index 32b2732b87b..cb7eb38c857 100644
--- a/src/mame/drivers/c10.cpp
+++ b/src/mame/drivers/c10.cpp
@@ -52,18 +52,20 @@ private:
-ADDRESS_MAP_START(c10_state::c10_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
- AM_RANGE(0x1000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xf0a1) AM_RAM
- AM_RANGE(0xf0a2, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(c10_state::c10_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void c10_state::c10_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("boot");
+ map(0x1000, 0x7fff).ram();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xf0a1).ram();
+ map(0xf0a2, 0xffff).ram().share("videoram");
+}
+
+void c10_state::c10_io(address_map &map)
+{
+ map.global_mask(0xff);
+}
/* Input ports */
static INPUT_PORTS_START( c10 )
diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp
index 31ee2830f48..c80eaca0b95 100644
--- a/src/mame/drivers/c128.cpp
+++ b/src/mame/drivers/c128.cpp
@@ -670,54 +670,60 @@ READ8_MEMBER( c128_state::vic_colorram_r )
// ADDRESS_MAP( z80_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(c128_state::z80_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_r, z80_w)
-ADDRESS_MAP_END
+void c128_state::z80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(c128_state::z80_r), FUNC(c128_state::z80_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( z80_io )
//-------------------------------------------------
-ADDRESS_MAP_START(c128_state::z80_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_io_r, z80_io_w)
-ADDRESS_MAP_END
+void c128_state::z80_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(c128_state::z80_io_r), FUNC(c128_state::z80_io_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( m8502_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(c128_state::m8502_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void c128_state::m8502_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(c128_state::read), FUNC(c128_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(c128_state::vic_videoram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r)
-ADDRESS_MAP_END
+void c128_state::vic_videoram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(c128_state::vic_videoram_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_colorram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(c128_state::vic_colorram_map)
- AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r)
-ADDRESS_MAP_END
+void c128_state::vic_colorram_map(address_map &map)
+{
+ map(0x000, 0x3ff).r(this, FUNC(c128_state::vic_colorram_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vdc_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(c128_state::vdc_videoram_map)
- AM_RANGE(0x0000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void c128_state::vdc_videoram_map(address_map &map)
+{
+ map(0x0000, 0xffff).ram();
+}
diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp
index e621ed67c5c..cdc4824d2e7 100644
--- a/src/mame/drivers/c64.cpp
+++ b/src/mame/drivers/c64.cpp
@@ -536,27 +536,30 @@ READ8_MEMBER( c64_state::vic_colorram_r )
// ADDRESS_MAP( c64_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(c64_state::c64_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void c64_state::c64_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(c64_state::read), FUNC(c64_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(c64_state::vic_videoram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r)
-ADDRESS_MAP_END
+void c64_state::vic_videoram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(c64_state::vic_videoram_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_colorram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(c64_state::vic_colorram_map)
- AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r)
-ADDRESS_MAP_END
+void c64_state::vic_colorram_map(address_map &map)
+{
+ map(0x000, 0x3ff).r(this, FUNC(c64_state::vic_colorram_r));
+}
diff --git a/src/mame/drivers/c65.cpp b/src/mame/drivers/c65.cpp
index 796df763bc2..ef870a3c4de 100644
--- a/src/mame/drivers/c65.cpp
+++ b/src/mame/drivers/c65.cpp
@@ -484,31 +484,32 @@ READ8_MEMBER(c65_state::dummy_r)
return 0;
}
-ADDRESS_MAP_START(c65_state::c65_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("wram") // TODO: bank
- AM_RANGE(0x0c800, 0x0cfff) AM_ROM AM_REGION("maincpu", 0xc800)
- AM_RANGE(0x0d000, 0x0d07f) AM_READWRITE(vic4567_dummy_r,vic4567_dummy_w) // 0x0d000, 0x0d07f VIC-4567
- AM_RANGE(0x0d080, 0x0d081) AM_READ(dummy_r) // 0x0d080, 0x0d09f FDC
+void c65_state::c65_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram().share("wram"); // TODO: bank
+ map(0x0c800, 0x0cfff).rom().region("maincpu", 0xc800);
+ map(0x0d000, 0x0d07f).rw(this, FUNC(c65_state::vic4567_dummy_r), FUNC(c65_state::vic4567_dummy_w)); // 0x0d000, 0x0d07f VIC-4567
+ map(0x0d080, 0x0d081).r(this, FUNC(c65_state::dummy_r)); // 0x0d080, 0x0d09f FDC
// 0x0d0a0, 0x0d0ff Ram Expansion Control (REC)
- AM_RANGE(0x0d100, 0x0d1ff) AM_RAM_WRITE(PalRed_w) AM_SHARE("redpal")// 0x0d100, 0x0d1ff Red Palette
- AM_RANGE(0x0d200, 0x0d2ff) AM_RAM_WRITE(PalGreen_w) AM_SHARE("greenpal") // 0x0d200, 0x0d2ff Green Palette
- AM_RANGE(0x0d300, 0x0d3ff) AM_RAM_WRITE(PalBlue_w) AM_SHARE("bluepal") // 0x0d300, 0x0d3ff Blue Palette
+ map(0x0d100, 0x0d1ff).ram().w(this, FUNC(c65_state::PalRed_w)).share("redpal");// 0x0d100, 0x0d1ff Red Palette
+ map(0x0d200, 0x0d2ff).ram().w(this, FUNC(c65_state::PalGreen_w)).share("greenpal"); // 0x0d200, 0x0d2ff Green Palette
+ map(0x0d300, 0x0d3ff).ram().w(this, FUNC(c65_state::PalBlue_w)).share("bluepal"); // 0x0d300, 0x0d3ff Blue Palette
// 0x0d400, 0x0d4*f Right SID
// 0x0d440, 0x0d4*f Left SID
- AM_RANGE(0x0d600, 0x0d6ff) AM_READWRITE(uart_r, uart_w)
- AM_RANGE(0x0d700, 0x0d702) AM_WRITE(DMAgic_w) AM_SHARE("dmalist") // 0x0d700, 0x0d7** DMAgic
+ map(0x0d600, 0x0d6ff).rw(this, FUNC(c65_state::uart_r), FUNC(c65_state::uart_w));
+ map(0x0d700, 0x0d702).w(this, FUNC(c65_state::DMAgic_w)).share("dmalist"); // 0x0d700, 0x0d7** DMAgic
//AM_RANGE(0x0d703, 0x0d703) AM_READ(DMAgic_r)
// 0x0d800, 0x0d8** Color matrix
- AM_RANGE(0x0d800, 0x0dfff) AM_READWRITE(CIASelect_r,CIASelect_w) AM_SHARE("cram")
+ map(0x0d800, 0x0dfff).rw(this, FUNC(c65_state::CIASelect_r), FUNC(c65_state::CIASelect_w)).share("cram");
// 0x0dc00, 0x0dc** CIA-1
// 0x0dd00, 0x0dd** CIA-2
// 0x0de00, 0x0de** Ext I/O Select 1
// 0x0df00, 0x0df** Ext I/O Select 2 (RAM window?)
- AM_RANGE(0x0e000, 0x0ffff) AM_ROM AM_REGION("maincpu",0x0e000)
- AM_RANGE(0x10000, 0x1f7ff) AM_RAM
- AM_RANGE(0x1f800, 0x1ffff) AM_RAM // VRAM attributes
- AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
+ map(0x0e000, 0x0ffff).rom().region("maincpu", 0x0e000);
+ map(0x10000, 0x1f7ff).ram();
+ map(0x1f800, 0x1ffff).ram(); // VRAM attributes
+ map(0x20000, 0x3ffff).rom().region("maincpu", 0);
+}
diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp
index 3411bf15fda..e1b3c5c1531 100644
--- a/src/mame/drivers/c80.cpp
+++ b/src/mame/drivers/c80.cpp
@@ -63,17 +63,19 @@ data of next byte, and so on.
/* Memory Maps */
-ADDRESS_MAP_START(c80_state::c80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(c80_state::c80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7c, 0x7f) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write)
- AM_RANGE(0xbc, 0xbf) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write)
-ADDRESS_MAP_END
+void c80_state::c80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x0bff).mirror(0x400).ram();
+}
+
+void c80_state::c80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7c, 0x7f).rw(Z80PIO2_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xbc, 0xbf).rw(m_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp
index b1942c3e1bd..65ba9a95074 100644
--- a/src/mame/drivers/c900.cpp
+++ b/src/mame/drivers/c900.cpp
@@ -56,22 +56,25 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-ADDRESS_MAP_START(c900_state::mem_map)
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void c900_state::mem_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rom().region("roms", 0);
+}
-ADDRESS_MAP_START(c900_state::data_map)
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x08000, 0x6ffff) AM_RAM
-ADDRESS_MAP_END
+void c900_state::data_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rom().region("roms", 0);
+ map(0x08000, 0x6ffff).ram();
+}
-ADDRESS_MAP_START(c900_state::io_map)
- AM_RANGE(0x0000, 0x007f) AM_DEVREADWRITE8("cio", z8036_device, read, write, 0x00ff)
+void c900_state::io_map(address_map &map)
+{
+ map(0x0000, 0x007f).rw("cio", FUNC(z8036_device::read), FUNC(z8036_device::write)).umask16(0x00ff);
//AM_RANGE(0x0100, 0x011f) AM_DEVREADWRITE8("scc", scc8030_device, zbus_r, zbus_w, 0x00ff) // range for one channel
- AM_RANGE(0x0100, 0x0101) AM_READ(stat_r)
- AM_RANGE(0x0110, 0x0111) AM_READ(key_r)
- AM_RANGE(0x0110, 0x0111) AM_DEVWRITE8("terminal", generic_terminal_device, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0x0100, 0x0101).r(this, FUNC(c900_state::stat_r));
+ map(0x0110, 0x0111).r(this, FUNC(c900_state::key_r));
+ map(0x0111, 0x0111).w(m_terminal, FUNC(generic_terminal_device::write));
+}
static INPUT_PORTS_START( c900 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp
index dc4c724743b..b60be2f1bc7 100644
--- a/src/mame/drivers/cabal.cpp
+++ b/src/mame/drivers/cabal.cpp
@@ -102,54 +102,57 @@ WRITE16_MEMBER(cabal_state::cabalbl_sound_irq_trigger_word_w)
-ADDRESS_MAP_START(cabal_state::main_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x40000, 0x437ff) AM_RAM
- AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x44000, 0x4ffff) AM_RAM
- AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram")
- AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x80200, 0x803ff) AM_RAM
- AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW")
- AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("IN2")
- AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
- AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
- AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
- AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xe8000, 0xe800d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0xe8008, 0xe8009) AM_WRITE(sound_irq_trigger_word_w) // fix coin insertion
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(cabal_state::trackball_main_map)
- AM_IMPORT_FROM(main_map)
- AM_RANGE(0xa0008, 0xa000f) AM_DEVREAD8("upd4701l", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xa0008, 0xa000f) AM_DEVREAD8("upd4701h", upd4701_device, read_xy, 0xff00)
- AM_RANGE(0xc0000, 0xc0001) AM_DEVWRITE8("upd4701l", upd4701_device, reset_xy, 0x00ff)
- AM_RANGE(0xc0000, 0xc0001) AM_DEVWRITE8("upd4701h", upd4701_device, reset_xy, 0xff00)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(cabal_state::cabalbl_main_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x40000, 0x437ff) AM_RAM
- AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x44000, 0x4ffff) AM_RAM
- AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram")
- AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x80200, 0x803ff) AM_RAM
- AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW")
- AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("JOY")
- AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
- AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
- AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
- AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w)
- AM_RANGE(0xe8004, 0xe8005) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabalbl_sound_irq_trigger_word_w)
-ADDRESS_MAP_END
+void cabal_state::main_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x40000, 0x437ff).ram();
+ map(0x43800, 0x43fff).ram().share("spriteram");
+ map(0x44000, 0x4ffff).ram();
+ map(0x60000, 0x607ff).ram().w(this, FUNC(cabal_state::text_videoram_w)).share("colorram");
+ map(0x80000, 0x801ff).ram().w(this, FUNC(cabal_state::background_videoram_w)).share("videoram");
+ map(0x80200, 0x803ff).ram();
+ map(0xa0000, 0xa0001).portr("DSW");
+ map(0xa0008, 0xa0009).portr("IN2");
+ map(0xa0010, 0xa0011).portr("INPUTS");
+ map(0xc0040, 0xc0041).nopw(); /* ??? */
+ map(0xc0080, 0xc0081).w(this, FUNC(cabal_state::flipscreen_w));
+ map(0xe0000, 0xe07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xe8000, 0xe800d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0xe8008, 0xe8009).w(this, FUNC(cabal_state::sound_irq_trigger_word_w)); // fix coin insertion
+}
+
+
+
+void cabal_state::trackball_main_map(address_map &map)
+{
+ main_map(map);
+ map(0xa0008, 0xa000f).r("upd4701l", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xa0008, 0xa000f).r("upd4701h", FUNC(upd4701_device::read_xy)).umask16(0xff00);
+ map(0xc0001, 0xc0001).w("upd4701l", FUNC(upd4701_device::reset_xy));
+ map(0xc0000, 0xc0000).w("upd4701h", FUNC(upd4701_device::reset_xy));
+}
+
+
+
+void cabal_state::cabalbl_main_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x40000, 0x437ff).ram();
+ map(0x43800, 0x43fff).ram().share("spriteram");
+ map(0x44000, 0x4ffff).ram();
+ map(0x60000, 0x607ff).ram().w(this, FUNC(cabal_state::text_videoram_w)).share("colorram");
+ map(0x80000, 0x801ff).ram().w(this, FUNC(cabal_state::background_videoram_w)).share("videoram");
+ map(0x80200, 0x803ff).ram();
+ map(0xa0000, 0xa0001).portr("DSW");
+ map(0xa0008, 0xa0009).portr("JOY");
+ map(0xa0010, 0xa0011).portr("INPUTS");
+ map(0xc0040, 0xc0041).nopw(); /* ??? */
+ map(0xc0080, 0xc0081).w(this, FUNC(cabal_state::flipscreen_w));
+ map(0xe0000, 0xe07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xe8000, 0xe8003).w(this, FUNC(cabal_state::cabalbl_sndcmd_w));
+ map(0xe8005, 0xe8005).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe8008, 0xe8009).w(this, FUNC(cabal_state::cabalbl_sound_irq_trigger_word_w));
+}
/*********************************************************************/
@@ -172,68 +175,73 @@ WRITE8_MEMBER(cabal_state::cabalbl_coin_w)
//data & 0x40? video enable?
}
-ADDRESS_MAP_START(cabal_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_device, adr_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm1", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6005, 0x6006) AM_DEVWRITE("adpcm2", seibu_adpcm_device, adr_w)
- AM_RANGE(0x601a, 0x601a) AM_DEVWRITE("adpcm2", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::sound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::cabalbl_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2fff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
- AM_RANGE(0x4004, 0x4004) AM_WRITE(cabalbl_coin_w)
- AM_RANGE(0x4006, 0x4006) AM_READ_PORT("COIN")
- AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r)
- AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r)
- AM_RANGE(0x400c, 0x400c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x6000, 0x6000) AM_WRITENOP /* ??? */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::cabalbl2_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_device, adr_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm1", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6005, 0x6006) AM_DEVWRITE("adpcm2", seibu_adpcm_device, adr_w)
- AM_RANGE(0x601a, 0x601a) AM_DEVWRITE("adpcm2", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::cabalbl2_predecrypted_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiocpu", 0x2000)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000)
-ADDRESS_MAP_END
+void cabal_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x2000, 0x27ff).ram();
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4005, 0x4006).w(m_adpcm1, FUNC(seibu_adpcm_device::adr_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401a, 0x401a).w(m_adpcm1, FUNC(seibu_adpcm_device::ctl_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6005, 0x6006).w(m_adpcm2, FUNC(seibu_adpcm_device::adr_w));
+ map(0x601a, 0x601a).w(m_adpcm2, FUNC(seibu_adpcm_device::ctl_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void cabal_state::sound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+ map(0x8000, 0xffff).rom().region("audiocpu", 0x8000);
+}
+
+void cabal_state::cabalbl_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x2fff).ram();
+ map(0x4000, 0x4000).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x4002, 0x4002).w("soundlatch3", FUNC(generic_latch_8_device::write));
+ map(0x4004, 0x4004).w(this, FUNC(cabal_state::cabalbl_coin_w));
+ map(0x4006, 0x4006).portr("COIN");
+ map(0x4008, 0x4008).r(this, FUNC(cabal_state::cabalbl_snd2_r));
+ map(0x400a, 0x400a).r(this, FUNC(cabal_state::cabalbl_snd1_r));
+ map(0x400c, 0x400c).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x400e, 0x400f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x6000, 0x6000).nopw(); /* ??? */
+ map(0x8000, 0xffff).rom();
+}
+
+void cabal_state::cabalbl2_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4005, 0x4006).w(m_adpcm1, FUNC(seibu_adpcm_device::adr_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401a, 0x401a).w(m_adpcm1, FUNC(seibu_adpcm_device::ctl_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6005, 0x6006).w(m_adpcm2, FUNC(seibu_adpcm_device::adr_w));
+ map(0x601a, 0x601a).w(m_adpcm2, FUNC(seibu_adpcm_device::ctl_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void cabal_state::cabalbl2_predecrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("audiocpu", 0x2000);
+ map(0x8000, 0xffff).rom().region("audiocpu", 0x8000);
+}
/* the bootleg has 2x z80 sample players */
@@ -253,25 +261,29 @@ WRITE8_MEMBER(cabal_state::cabalbl_2_adpcm_w)
m_msm2->vclk_w(1);
m_msm2->vclk_w(0);
}
-ADDRESS_MAP_START(cabal_state::cabalbl_talk1_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::cabalbl_talk1_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_1_adpcm_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::cabalbl_talk2_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cabal_state::cabalbl_talk2_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch3", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_2_adpcm_w)
-ADDRESS_MAP_END
+void cabal_state::cabalbl_talk1_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().nopw();
+}
+
+void cabal_state::cabalbl_talk1_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w(this, FUNC(cabal_state::cabalbl_1_adpcm_w));
+}
+
+void cabal_state::cabalbl_talk2_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().nopw();
+}
+
+void cabal_state::cabalbl_talk2_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch3", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w(this, FUNC(cabal_state::cabalbl_2_adpcm_w));
+}
/***************************************************************************/
diff --git a/src/mame/drivers/cabaret.cpp b/src/mame/drivers/cabaret.cpp
index 83587feb178..ec1b1323451 100644
--- a/src/mame/drivers/cabaret.cpp
+++ b/src/mame/drivers/cabaret.cpp
@@ -189,33 +189,35 @@ WRITE8_MEMBER(cabaret_state::ppi2_c_w)
-ADDRESS_MAP_START(cabaret_state::cabaret_map)
- AM_RANGE( 0x00000, 0x0efff ) AM_ROM
- AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM AM_REGION("maincpu", 0xf000)
-ADDRESS_MAP_END
+void cabaret_state::cabaret_map(address_map &map)
+{
+ map(0x00000, 0x0efff).rom();
+ map(0x0f000, 0x0ffff).ram().region("maincpu", 0xf000);
+}
-ADDRESS_MAP_START(cabaret_state::cabaret_portmap)
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs
+void cabaret_state::cabaret_portmap(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // Z180 internal regs
- AM_RANGE( 0x0080, 0x0083 ) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE( 0x0090, 0x0093 ) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE( 0x00a0, 0x00a3 ) AM_DEVREADWRITE("ppi3", i8255_device, read, write)
+ map(0x0080, 0x0083).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0090, 0x0093).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x00a0, 0x00a3).rw("ppi3", FUNC(i8255_device::read), FUNC(i8255_device::write));
- AM_RANGE( 0x00b0, 0x00b0 ) AM_READ_PORT("DSW3") /* DSW3 */
+ map(0x00b0, 0x00b0).portr("DSW3"); /* DSW3 */
- AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ map(0x00e0, 0x00e1).w("ymsnd", FUNC(ym2413_device::write));
- AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
- AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
+ map(0x2000, 0x27ff).ram().w(this, FUNC(cabaret_state::fg_tile_w)).share("fg_tile_ram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(cabaret_state::fg_color_w)).share("fg_color_ram");
- AM_RANGE( 0x3000, 0x37ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE( 0x3800, 0x3fff ) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
+ map(0x3000, 0x37ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3800, 0x3fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
- AM_RANGE( 0x1000, 0x103f ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
+ map(0x1000, 0x103f).ram().w(this, FUNC(cabaret_state::bg_scroll_w)).share("bg_scroll");
- AM_RANGE( 0x1800, 0x19ff ) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram")
- AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("gfx3", 0)
-ADDRESS_MAP_END
+ map(0x1800, 0x19ff).ram().w(this, FUNC(cabaret_state::bg_tile_w)).share("bg_tile_ram");
+ map(0x8000, 0xffff).rom().region("gfx3", 0);
+}
/***************************************************************************
diff --git a/src/mame/drivers/calchase.cpp b/src/mame/drivers/calchase.cpp
index 65d317f4d90..a752ec6e107 100644
--- a/src/mame/drivers/calchase.cpp
+++ b/src/mame/drivers/calchase.cpp
@@ -387,30 +387,31 @@ READ16_MEMBER(calchase_state::calchase_iocard5_r)
}
-ADDRESS_MAP_START(calchase_state::calchase_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) // VGA VRAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0)
- AM_RANGE(0x000c8000, 0x000cffff) AM_NOP
+void calchase_state::calchase_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w)); // VGA VRAM
+ map(0x000c0000, 0x000c7fff).ram().region("video_bios", 0);
+ map(0x000c8000, 0x000cffff).noprw();
//AM_RANGE(0x000d0000, 0x000d0003) AM_RAM // XYLINX - Sincronus serial communication
- AM_RANGE(0x000d0004, 0x000d0007) AM_READ16(calchase_iocard1_r, 0x0000ffff)
- AM_RANGE(0x000d000c, 0x000d000f) AM_READ16(calchase_iocard2_r, 0x0000ffff)
- AM_RANGE(0x000d0030, 0x000d0033) AM_READ16(calchase_iocard3_r, 0xffff0000)
- AM_RANGE(0x000d0030, 0x000d0033) AM_READ16(calchase_iocard4_r, 0x0000ffff)
- AM_RANGE(0x000d0034, 0x000d0037) AM_READ16(calchase_iocard5_r, 0x0000ffff)
- AM_RANGE(0x000d0008, 0x000d000b) AM_WRITENOP // ???
- AM_RANGE(0x000d0024, 0x000d0027) AM_DEVWRITE16("ldac", dac_word_interface, write, 0x0000ffff)
- AM_RANGE(0x000d0028, 0x000d002b) AM_DEVWRITE16("rdac", dac_word_interface, write, 0x0000ffff)
- AM_RANGE(0x000d0800, 0x000d0fff) AM_ROM AM_REGION("nvram",0) //
+ map(0x000d0004, 0x000d0005).r(this, FUNC(calchase_state::calchase_iocard1_r));
+ map(0x000d000c, 0x000d000d).r(this, FUNC(calchase_state::calchase_iocard2_r));
+ map(0x000d0032, 0x000d0033).r(this, FUNC(calchase_state::calchase_iocard3_r));
+ map(0x000d0030, 0x000d0031).r(this, FUNC(calchase_state::calchase_iocard4_r));
+ map(0x000d0034, 0x000d0035).r(this, FUNC(calchase_state::calchase_iocard5_r));
+ map(0x000d0008, 0x000d000b).nopw(); // ???
+ map(0x000d0024, 0x000d0025).w("ldac", FUNC(dac_word_interface::write));
+ map(0x000d0028, 0x000d0029).w("rdac", FUNC(dac_word_interface::write));
+ map(0x000d0800, 0x000d0fff).rom().region("nvram", 0); //
// AM_RANGE(0x000d0800, 0x000d0fff) AM_RAM // GAME_CMOS
//GRULL AM_RANGE(0x000e0000, 0x000effff) AM_RAM
//GRULL-AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
//GRULL AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w)
- AM_RANGE(0x000e0000, 0x000effff) AM_ROMBANK("bios_ext") AM_WRITE(bios_ext_ram_w)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x03ffffff) AM_RAM // 64MB
- AM_RANGE(0x04000000, 0x28ffffff) AM_NOP
+ map(0x000e0000, 0x000effff).bankr("bios_ext").w(this, FUNC(calchase_state::bios_ext_ram_w));
+ map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(calchase_state::bios_ram_w));
+ map(0x00100000, 0x03ffffff).ram(); // 64MB
+ map(0x04000000, 0x28ffffff).noprw();
//AM_RANGE(0x04000000, 0x040001ff) AM_RAM
//AM_RANGE(0x08000000, 0x080001ff) AM_RAM
//AM_RANGE(0x0c000000, 0x0c0001ff) AM_RAM
@@ -419,43 +420,44 @@ ADDRESS_MAP_START(calchase_state::calchase_map)
//AM_RANGE(0x18000000, 0x180001ff) AM_RAM
//AM_RANGE(0x20000000, 0x200001ff) AM_RAM
//AM_RANGE(0x28000000, 0x280001ff) AM_RAM
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
-ADDRESS_MAP_START(calchase_state::calchase_io)
- AM_IMPORT_FROM(pcat32_io_common)
+void calchase_state::calchase_io(address_map &map)
+{
+ pcat32_io_common(map);
//AM_RANGE(0x00e8, 0x00eb) AM_NOP
- AM_RANGE(0x00e8, 0x00ef) AM_NOP //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY
- AM_RANGE(0x0170, 0x0177) AM_NOP //To debug
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x0200, 0x021f) AM_NOP //To debug
- AM_RANGE(0x0260, 0x026f) AM_NOP //To debug
- AM_RANGE(0x0278, 0x027b) AM_WRITENOP//AM_WRITE(pnp_config_w)
- AM_RANGE(0x0280, 0x0287) AM_NOP //To debug
- AM_RANGE(0x02a0, 0x02a7) AM_NOP //To debug
- AM_RANGE(0x02c0, 0x02c7) AM_NOP //To debug
- AM_RANGE(0x02e0, 0x02ef) AM_NOP //To debug
- AM_RANGE(0x02f8, 0x02ff) AM_NOP //To debug
- AM_RANGE(0x0320, 0x038f) AM_NOP //To debug
- AM_RANGE(0x03a0, 0x03a7) AM_NOP //To debug
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03e0, 0x03ef) AM_NOP //To debug
- AM_RANGE(0x0378, 0x037f) AM_NOP //To debug
+ map(0x00e8, 0x00ef).noprw(); //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY
+ map(0x0170, 0x0177).noprw(); //To debug
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x0200, 0x021f).noprw(); //To debug
+ map(0x0260, 0x026f).noprw(); //To debug
+ map(0x0278, 0x027b).nopw();//AM_WRITE(pnp_config_w)
+ map(0x0280, 0x0287).noprw(); //To debug
+ map(0x02a0, 0x02a7).noprw(); //To debug
+ map(0x02c0, 0x02c7).noprw(); //To debug
+ map(0x02e0, 0x02ef).noprw(); //To debug
+ map(0x02f8, 0x02ff).noprw(); //To debug
+ map(0x0320, 0x038f).noprw(); //To debug
+ map(0x03a0, 0x03a7).noprw(); //To debug
+ map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w));
+ map(0x03e0, 0x03ef).noprw(); //To debug
+ map(0x0378, 0x037f).noprw(); //To debug
// AM_RANGE(0x0300, 0x03af) AM_NOP
// AM_RANGE(0x03b0, 0x03df) AM_NOP
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1)
- AM_RANGE(0x03f8, 0x03ff) AM_NOP // To debug Serial Port COM1:
- AM_RANGE(0x0a78, 0x0a7b) AM_WRITENOP//AM_WRITE(pnp_data_w)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
- AM_RANGE(0x42e8, 0x43ef) AM_NOP //To debug
- AM_RANGE(0x43c4, 0x43cb) AM_DEVREADWRITE8("vga", trident_vga_device, port_43c6_r, port_43c6_w, 0xffffffff) // Trident Memory and Video Clock register
- AM_RANGE(0x46e8, 0x46ef) AM_NOP //To debug
- AM_RANGE(0x4ae8, 0x4aef) AM_NOP //To debug
- AM_RANGE(0x83c4, 0x83cb) AM_DEVREADWRITE8("vga", trident_vga_device, port_83c6_r, port_83c6_w, 0xffffffff) // Trident LUTDAC
- AM_RANGE(0x92e8, 0x92ef) AM_NOP //To debug
-ADDRESS_MAP_END
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+ map(0x03f8, 0x03ff).noprw(); // To debug Serial Port COM1:
+ map(0x0a78, 0x0a7b).nopw();//AM_WRITE(pnp_data_w)
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+ map(0x42e8, 0x43ef).noprw(); //To debug
+ map(0x43c4, 0x43cb).rw("vga", FUNC(trident_vga_device::port_43c6_r), FUNC(trident_vga_device::port_43c6_w)); // Trident Memory and Video Clock register
+ map(0x46e8, 0x46ef).noprw(); //To debug
+ map(0x4ae8, 0x4aef).noprw(); //To debug
+ map(0x83c4, 0x83cb).rw("vga", FUNC(trident_vga_device::port_83c6_r), FUNC(trident_vga_device::port_83c6_w)); // Trident LUTDAC
+ map(0x92e8, 0x92ef).noprw(); //To debug
+}
#define AT_KEYB_HELPER(bit, text, key1) \
PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1)
diff --git a/src/mame/drivers/calcune.cpp b/src/mame/drivers/calcune.cpp
index d71431ae52b..022c6f31a23 100644
--- a/src/mame/drivers/calcune.cpp
+++ b/src/mame/drivers/calcune.cpp
@@ -123,24 +123,25 @@ WRITE16_MEMBER(calcune_state::cal_vdp_w)
m_vdp2->vdp_w(space, offset, data, mem_mask);
}
-ADDRESS_MAP_START(calcune_state::calcune_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+void calcune_state::calcune_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
- AM_RANGE(0x700000, 0x700001) AM_READ(cal_700000_r)
+ map(0x700000, 0x700001).r(this, FUNC(calcune_state::cal_700000_r));
- AM_RANGE(0x710000, 0x710001) AM_READ_PORT("710000")
- AM_RANGE(0x720000, 0x720001) AM_READ_PORT("720000")
+ map(0x710000, 0x710001).portr("710000");
+ map(0x720000, 0x720001).portr("720000");
// AM_RANGE(0x730000, 0x730001) possible Z80 control?
- AM_RANGE(0x760000, 0x760003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
+ map(0x760000, 0x760003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00);
- AM_RANGE(0x770000, 0x770001) AM_WRITE(cal_770000_w)
+ map(0x770000, 0x770001).w(this, FUNC(calcune_state::cal_770000_w));
- AM_RANGE(0xA14100, 0xA14101) AM_NOP // on startup, possible z80 control
+ map(0xA14100, 0xA14101).noprw(); // on startup, possible z80 control
- AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(cal_vdp_r, cal_vdp_w)
+ map(0xc00000, 0xc0001f).rw(this, FUNC(calcune_state::cal_vdp_r), FUNC(calcune_state::cal_vdp_w));
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // battery on PCB
-ADDRESS_MAP_END
+ map(0xff0000, 0xffffff).ram().share("nvram"); // battery on PCB
+}
uint32_t calcune_state::screen_update_calcune(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp
index 3e1f0d54f70..5d821c71f50 100644
--- a/src/mame/drivers/calomega.cpp
+++ b/src/mame/drivers/calomega.cpp
@@ -822,57 +822,61 @@ WRITE8_MEMBER(calomega_state::lamps_905_w)
* Memory map information *
*************************************************/
-ADDRESS_MAP_START(calomega_state::sys903_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0840, 0x0841) AM_DEVWRITE("ay8912", ay8910_device, address_data_w)
- AM_RANGE(0x0880, 0x0880) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0881, 0x0881) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x08c4, 0x08c7) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x08c8, 0x08cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x08d0, 0x08d1) AM_DEVREADWRITE("acia6850_0", acia6850_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(calomega_state::s903mod_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0840, 0x0841) AM_DEVWRITE("ay8912", ay8910_device, address_data_w)
- AM_RANGE(0x0880, 0x0880) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0881, 0x0881) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x08c4, 0x08c7) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x08c8, 0x08cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(calomega_state::sys905_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1040, 0x1041) AM_DEVWRITE("ay8912", ay8910_device, address_data_w)
- AM_RANGE(0x1080, 0x1080) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x1081, 0x1081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x10c4, 0x10c7) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x10c8, 0x10cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2800, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(calomega_state::sys906_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x280c, 0x280f) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x2824, 0x2827) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x2c04, 0x2c04) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2c05, 0x2c05) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2c08, 0x2c09) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void calomega_state::sys903_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0840, 0x0841).w("ay8912", FUNC(ay8910_device::address_data_w));
+ map(0x0880, 0x0880).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0881, 0x0881).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x08c4, 0x08c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x08c8, 0x08cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x08d0, 0x08d1).rw(m_acia6850_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram");
+ map(0x1400, 0x17ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram");
+ map(0x1800, 0x3fff).rom();
+}
+
+void calomega_state::s903mod_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0840, 0x0841).w("ay8912", FUNC(ay8910_device::address_data_w));
+ map(0x0880, 0x0880).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0881, 0x0881).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x08c4, 0x08c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x08c8, 0x08cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram");
+ map(0x1400, 0x17ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram");
+ map(0x1800, 0x3fff).rom();
+}
+
+void calomega_state::sys905_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x1040, 0x1041).w("ay8912", FUNC(ay8910_device::address_data_w));
+ map(0x1080, 0x1080).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x1081, 0x1081).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x10c4, 0x10c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x10c8, 0x10cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2000, 0x23ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram");
+ map(0x2800, 0x7fff).rom();
+}
+
+void calomega_state::sys906_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x280c, 0x280f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2824, 0x2827).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2c04, 0x2c04).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2c05, 0x2c05).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2c08, 0x2c09).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x2000, 0x23ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram");
+ map(0x6000, 0xffff).rom();
+}
/*************************************************
diff --git a/src/mame/drivers/calorie.cpp b/src/mame/drivers/calorie.cpp
index 3a60057fead..ae6a92f1605 100644
--- a/src/mame/drivers/calorie.cpp
+++ b/src/mame/drivers/calorie.cpp
@@ -264,44 +264,48 @@ WRITE8_MEMBER(calorie_state::bogus_w)
*
*************************************/
-ADDRESS_MAP_START(calorie_state::calorie_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_ram_w) AM_SHARE("fg_ram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0xdc00, 0xdcff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xde00, 0xde00) AM_WRITE(bg_bank_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1")
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P2")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW1") AM_WRITE(calorie_flipscreen_w)
- AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW2")
- AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(calorie_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(calorie_state::calorie_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xc000) AM_READ(calorie_soundlatch_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(calorie_state::calorie_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void calorie_state::calorie_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().share("ram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(calorie_state::fg_ram_w)).share("fg_ram");
+ map(0xd800, 0xdbff).ram().share("sprites");
+ map(0xdc00, 0xdcff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xde00, 0xde00).w(this, FUNC(calorie_state::bg_bank_w));
+ map(0xf000, 0xf000).portr("P1");
+ map(0xf001, 0xf001).portr("P2");
+ map(0xf002, 0xf002).portr("SYSTEM");
+ map(0xf004, 0xf004).portr("DSW1").w(this, FUNC(calorie_state::calorie_flipscreen_w));
+ map(0xf005, 0xf005).portr("DSW2");
+ map(0xf800, 0xf800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+void calorie_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().share("ram");
+}
+
+void calorie_state::calorie_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xc000).r(this, FUNC(calorie_state::calorie_soundlatch_r));
+}
+
+void calorie_state::calorie_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// 3rd ?
- AM_RANGE(0x00, 0xff) AM_WRITE(bogus_w)
+ map(0x00, 0xff).w(this, FUNC(calorie_state::bogus_w));
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ym2149_device, address_data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ym2149_device, data_r)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay2", ym2149_device, address_data_w)
- AM_RANGE(0x11, 0x11) AM_DEVREAD("ay2", ym2149_device, data_r)
-ADDRESS_MAP_END
+ map(0x00, 0x01).w("ay1", FUNC(ym2149_device::address_data_w));
+ map(0x01, 0x01).r("ay1", FUNC(ym2149_device::data_r));
+ map(0x10, 0x11).w("ay2", FUNC(ym2149_device::address_data_w));
+ map(0x11, 0x11).r("ay2", FUNC(ym2149_device::data_r));
+}
/*************************************
diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp
index 2a86dc88e6c..8aaa1986eea 100644
--- a/src/mame/drivers/camplynx.cpp
+++ b/src/mame/drivers/camplynx.cpp
@@ -458,83 +458,88 @@ d0 = read from bank 4 */
}
}
-ADDRESS_MAP_START(camplynx_state::lynx48k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1")
- AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
- AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
- AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
- AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5")
- AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6")
- AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7")
- AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8")
- AM_RANGE(0x0000,0xffff) AM_WRITE(bank6_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(camplynx_state::lynx128k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1")
- AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
- AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
- AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
- AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5")
- AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6")
- AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7")
- AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8")
- AM_RANGE(0x0000,0xffff) AM_WRITE(bank1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(camplynx_state::lynx48k_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x007f,0x007f) AM_MIRROR(0xff80) AM_WRITE(port7f_w)
- AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w)
- AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ(port80_r)
- AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1")
- AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2")
- AM_RANGE(0x0380,0x0380) AM_MIRROR(0xf000) AM_READ_PORT("LINE3")
- AM_RANGE(0x0480,0x0480) AM_MIRROR(0xf000) AM_READ_PORT("LINE4")
- AM_RANGE(0x0580,0x0580) AM_MIRROR(0xf000) AM_READ_PORT("LINE5")
- AM_RANGE(0x0680,0x0680) AM_MIRROR(0xf000) AM_READ_PORT("LINE6")
- AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7")
- AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8")
- AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9")
- AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w)
- AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(camplynx_state::lynx96k_io)
- AM_IMPORT_FROM(lynx48k_io)
- AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_device, read)
- AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_device, write)
- AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(camplynx_state::lynx128k_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_device, read)
- AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_device, write)
- AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w)
+void camplynx_state::lynx48k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankr("bankr1");
+ map(0x2000, 0x3fff).bankr("bankr2");
+ map(0x4000, 0x5fff).bankr("bankr3");
+ map(0x6000, 0x7fff).bankr("bankr4");
+ map(0x8000, 0x9fff).bankr("bankr5");
+ map(0xa000, 0xbfff).bankr("bankr6");
+ map(0xc000, 0xdfff).bankr("bankr7");
+ map(0xe000, 0xffff).bankr("bankr8");
+ map(0x0000, 0xffff).w(this, FUNC(camplynx_state::bank6_w));
+}
+
+void camplynx_state::lynx128k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankr("bankr1");
+ map(0x2000, 0x3fff).bankr("bankr2");
+ map(0x4000, 0x5fff).bankr("bankr3");
+ map(0x6000, 0x7fff).bankr("bankr4");
+ map(0x8000, 0x9fff).bankr("bankr5");
+ map(0xa000, 0xbfff).bankr("bankr6");
+ map(0xc000, 0xdfff).bankr("bankr7");
+ map(0xe000, 0xffff).bankr("bankr8");
+ map(0x0000, 0xffff).w(this, FUNC(camplynx_state::bank1_w));
+}
+
+void camplynx_state::lynx48k_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x007f, 0x007f).mirror(0xff80).w(this, FUNC(camplynx_state::port7f_w));
+ map(0x0080, 0x0080).mirror(0xff00).w(this, FUNC(camplynx_state::port80_w));
+ map(0x0080, 0x0080).mirror(0xf000).r(this, FUNC(camplynx_state::port80_r));
+ map(0x0180, 0x0180).mirror(0xf000).portr("LINE1");
+ map(0x0280, 0x0280).mirror(0xf000).portr("LINE2");
+ map(0x0380, 0x0380).mirror(0xf000).portr("LINE3");
+ map(0x0480, 0x0480).mirror(0xf000).portr("LINE4");
+ map(0x0580, 0x0580).mirror(0xf000).portr("LINE5");
+ map(0x0680, 0x0680).mirror(0xf000).portr("LINE6");
+ map(0x0780, 0x0780).mirror(0xf000).portr("LINE7");
+ map(0x0880, 0x0880).mirror(0xf000).portr("LINE8");
+ map(0x0980, 0x0980).mirror(0xf000).portr("LINE9");
+ map(0x0084, 0x0084).mirror(0xff00).w(this, FUNC(camplynx_state::port84_w));
+ map(0x0086, 0x0086).mirror(0xff00).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x0087, 0x0087).mirror(0xff00).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
+
+void camplynx_state::lynx96k_io(address_map &map)
+{
+ lynx48k_io(map);
+ map(0x0050, 0x0053).mirror(0xff80).r("fdc", FUNC(fd1793_device::read));
+ map(0x0054, 0x0057).mirror(0xff80).w("fdc", FUNC(fd1793_device::write));
+ map(0x0058, 0x0058).mirror(0xff80).w(this, FUNC(camplynx_state::port58_w));
+}
+
+void camplynx_state::lynx128k_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0050, 0x0053).mirror(0xff80).r("fdc", FUNC(fd1793_device::read));
+ map(0x0054, 0x0057).mirror(0xff80).w("fdc", FUNC(fd1793_device::write));
+ map(0x0058, 0x0058).mirror(0xff80).w(this, FUNC(camplynx_state::port58_w));
// AM_RANGE(0x007a,0x007b) AM_MIRROR(0xff80) AM_READ(lynx128k_joysticks_r)
// AM_RANGE(0x007c,0x007c) AM_MIRROR(0xff80) AM_READ(lynx128k_printer_r)
// AM_RANGE(0x007d,0x007d) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_init_w) // this is rw
// AM_RANGE(0x007e,0x007e) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_w)
- AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w)
- AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ_PORT("LINE0")
- AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1")
- AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2")
- AM_RANGE(0x0380,0x0380) AM_MIRROR(0xf000) AM_READ_PORT("LINE3")
- AM_RANGE(0x0480,0x0480) AM_MIRROR(0xf000) AM_READ_PORT("LINE4")
- AM_RANGE(0x0580,0x0580) AM_MIRROR(0xf000) AM_READ_PORT("LINE5")
- AM_RANGE(0x0680,0x0680) AM_MIRROR(0xf000) AM_READ_PORT("LINE6")
- AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7")
- AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8")
- AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9")
- AM_RANGE(0x0082,0x0082) AM_MIRROR(0xff00) AM_READWRITE(port82_r,port82_w) // read=serial buffer
- AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w)
- AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+ map(0x0080, 0x0080).mirror(0xff00).w(this, FUNC(camplynx_state::port80_w));
+ map(0x0080, 0x0080).mirror(0xf000).portr("LINE0");
+ map(0x0180, 0x0180).mirror(0xf000).portr("LINE1");
+ map(0x0280, 0x0280).mirror(0xf000).portr("LINE2");
+ map(0x0380, 0x0380).mirror(0xf000).portr("LINE3");
+ map(0x0480, 0x0480).mirror(0xf000).portr("LINE4");
+ map(0x0580, 0x0580).mirror(0xf000).portr("LINE5");
+ map(0x0680, 0x0680).mirror(0xf000).portr("LINE6");
+ map(0x0780, 0x0780).mirror(0xf000).portr("LINE7");
+ map(0x0880, 0x0880).mirror(0xf000).portr("LINE8");
+ map(0x0980, 0x0980).mirror(0xf000).portr("LINE9");
+ map(0x0082, 0x0082).mirror(0xff00).rw(this, FUNC(camplynx_state::port82_r), FUNC(camplynx_state::port82_w)); // read=serial buffer
+ map(0x0084, 0x0084).mirror(0xff00).w(this, FUNC(camplynx_state::port84_w));
+ map(0x0086, 0x0086).mirror(0xff00).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x0087, 0x0087).mirror(0xff00).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
/* Input ports */
static INPUT_PORTS_START( lynx48k )
diff --git a/src/mame/drivers/candela.cpp b/src/mame/drivers/candela.cpp
index 50becbb886b..e116df387cc 100644
--- a/src/mame/drivers/candela.cpp
+++ b/src/mame/drivers/candela.cpp
@@ -471,10 +471,11 @@ WRITE_LINE_MEMBER (can09t_state::write_acia_clock){
* *0xe000-0xffff PROM monitor 0xe000-0xffff PROM monitor
*/
-ADDRESS_MAP_START(can09t_state::can09t_map)
+void can09t_state::can09t_map(address_map &map)
+{
// Everything is dynamically and asymetrically mapped through the PAL decoded by read/write
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+ map(0x0000, 0xffff).rw(this, FUNC(can09t_state::read), FUNC(can09t_state::write));
+}
static INPUT_PORTS_START( can09t )
INPUT_PORTS_END
@@ -625,7 +626,8 @@ INPUT_PORTS_END
// traced and guessed from pcb images and debugger
// It is very likelly that this is a PIA based dynamic address map, needs more analysis
-ADDRESS_MAP_START(can09_state::can09_map)
+void can09_state::can09_map(address_map &map)
+{
/*
* Port A=0x18 B=0x20 erase 0-7fff
* Port A=0x18 B=0x30 erase 0-7fff
@@ -633,21 +635,21 @@ ADDRESS_MAP_START(can09_state::can09_map)
* Port A=0x10 B=
*/
// AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x0000, 0x7fff) AM_RAM AM_RAMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xe020, 0xe020) AM_DEVWRITE("crtc", h46505_device, address_w)
- AM_RANGE(0xe021, 0xe021) AM_DEVWRITE("crtc", h46505_device, register_w)
- AM_RANGE(0xe034, 0xe037) AM_DEVREADWRITE(PIA1_TAG, pia6821_device, read, write)
+ map(0x0000, 0x7fff).ram().bankrw("bank1");
+ map(0xe000, 0xffff).rom().region("roms", 0);
+ map(0xe020, 0xe020).w(m_crtc, FUNC(h46505_device::address_w));
+ map(0xe021, 0xe021).w(m_crtc, FUNC(h46505_device::register_w));
+ map(0xe034, 0xe037).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
#if 0
- AM_RANGE(0xb100, 0xb101) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xb110, 0xb113) AM_DEVREADWRITE(PIA1_TAG, pia6821_device, read_alt, write_alt)
- AM_RANGE(0xb120, 0xb123) AM_DEVREADWRITE(PIA2_TAG, pia6821_device, read_alt, write_alt)
- AM_RANGE(0xb130, 0xb137) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xb200, 0xc1ff) AM_ROM AM_REGION("roms", 0x3200)
- AM_RANGE(0xc200, 0xdfff) AM_RAM /* Needed for BASIC etc */
+ map(0xb100, 0xb101).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xb110, 0xb113).rw(m_pia1, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xb120, 0xb123).rw(PIA2_TAG, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xb130, 0xb137).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xb200, 0xc1ff).rom().region("roms", 0x3200);
+ map(0xc200, 0xdfff).ram(); /* Needed for BASIC etc */
#endif
-ADDRESS_MAP_END
+}
#ifdef UNUSED_VARIABLE
static DEVICE_INPUT_DEFAULTS_START( terminal )
diff --git a/src/mame/drivers/canon_s80.cpp b/src/mame/drivers/canon_s80.cpp
index 3ace908cbbf..a4e6f68320d 100644
--- a/src/mame/drivers/canon_s80.cpp
+++ b/src/mame/drivers/canon_s80.cpp
@@ -33,10 +33,11 @@ public:
};
-ADDRESS_MAP_START(canons80_state::canons80_map)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void canons80_state::canons80_map(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xffff).rom();
+}
MACHINE_CONFIG_START(canons80_state::canons80)
/* basic machine hardware */
diff --git a/src/mame/drivers/canyon.cpp b/src/mame/drivers/canyon.cpp
index f738a160ea9..e93ba74d957 100644
--- a/src/mame/drivers/canyon.cpp
+++ b/src/mame/drivers/canyon.cpp
@@ -120,18 +120,19 @@ WRITE_LINE_MEMBER(canyon_state::led2_w)
*
*************************************/
-ADDRESS_MAP_START(canyon_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x100) AM_RAM
- AM_RANGE(0x0400, 0x0401) AM_WRITE(canyon_motor_w)
- AM_RANGE(0x0500, 0x0500) AM_WRITE(canyon_explode_w)
- AM_RANGE(0x0501, 0x0501) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog, disabled in service mode */
- AM_RANGE(0x0600, 0x0603) AM_SELECT(0x0180) AM_WRITE(output_latch_w)
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(canyon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x17ff) AM_READ(canyon_switches_r) AM_WRITENOP /* sloppy code writes here */
- AM_RANGE(0x1800, 0x1fff) AM_READ(canyon_options_r)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void canyon_state::main_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x00ff).mirror(0x100).ram();
+ map(0x0400, 0x0401).w(this, FUNC(canyon_state::canyon_motor_w));
+ map(0x0500, 0x0500).w(this, FUNC(canyon_state::canyon_explode_w));
+ map(0x0501, 0x0501).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); /* watchdog, disabled in service mode */
+ map(0x0600, 0x0603).select(0x0180).w(this, FUNC(canyon_state::output_latch_w));
+ map(0x0800, 0x0bff).ram().w(this, FUNC(canyon_state::canyon_videoram_w)).share("videoram");
+ map(0x1000, 0x17ff).r(this, FUNC(canyon_state::canyon_switches_r)).nopw(); /* sloppy code writes here */
+ map(0x1800, 0x1fff).r(this, FUNC(canyon_state::canyon_options_r));
+ map(0x2000, 0x3fff).rom();
+}
diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp
index 0c15b0981ee..fa7c3a639e9 100644
--- a/src/mame/drivers/capbowl.cpp
+++ b/src/mame/drivers/capbowl.cpp
@@ -208,31 +208,33 @@ WRITE8_MEMBER(capbowl_state::sndcmd_w)
*
*************************************/
-ADDRESS_MAP_START(capbowl_state::capbowl_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x4000) AM_WRITEONLY AM_SHARE("rowaddress")
- AM_RANGE(0x4800, 0x4800) AM_WRITE(capbowl_rom_select_w)
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x5800, 0x5fff) AM_READWRITE(tms34061_r, tms34061_w)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(sndcmd_w)
- AM_RANGE(0x6800, 0x6800) AM_WRITE(track_reset_w) AM_READNOP /* + watchdog */
- AM_RANGE(0x7000, 0x7000) AM_READ(track_0_r) /* + other inputs */
- AM_RANGE(0x7800, 0x7800) AM_READ(track_1_r) /* + other inputs */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(capbowl_state::bowlrama_map)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(bowlrama_blitter_r, bowlrama_blitter_w)
- AM_RANGE(0x4000, 0x4000) AM_WRITEONLY AM_SHARE("rowaddress")
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x5800, 0x5fff) AM_READWRITE(tms34061_r, tms34061_w)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(sndcmd_w)
- AM_RANGE(0x6800, 0x6800) AM_WRITE(track_reset_w) AM_READNOP /* + watchdog */
- AM_RANGE(0x7000, 0x7000) AM_READ(track_0_r) /* + other inputs */
- AM_RANGE(0x7800, 0x7800) AM_READ(track_1_r) /* + other inputs */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void capbowl_state::capbowl_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x4000).writeonly().share("rowaddress");
+ map(0x4800, 0x4800).w(this, FUNC(capbowl_state::capbowl_rom_select_w));
+ map(0x5000, 0x57ff).ram().share("nvram");
+ map(0x5800, 0x5fff).rw(this, FUNC(capbowl_state::tms34061_r), FUNC(capbowl_state::tms34061_w));
+ map(0x6000, 0x6000).w(this, FUNC(capbowl_state::sndcmd_w));
+ map(0x6800, 0x6800).w(this, FUNC(capbowl_state::track_reset_w)).nopr(); /* + watchdog */
+ map(0x7000, 0x7000).r(this, FUNC(capbowl_state::track_0_r)); /* + other inputs */
+ map(0x7800, 0x7800).r(this, FUNC(capbowl_state::track_1_r)); /* + other inputs */
+ map(0x8000, 0xffff).rom();
+}
+
+
+void capbowl_state::bowlrama_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw(this, FUNC(capbowl_state::bowlrama_blitter_r), FUNC(capbowl_state::bowlrama_blitter_w));
+ map(0x4000, 0x4000).writeonly().share("rowaddress");
+ map(0x5000, 0x57ff).ram().share("nvram");
+ map(0x5800, 0x5fff).rw(this, FUNC(capbowl_state::tms34061_r), FUNC(capbowl_state::tms34061_w));
+ map(0x6000, 0x6000).w(this, FUNC(capbowl_state::sndcmd_w));
+ map(0x6800, 0x6800).w(this, FUNC(capbowl_state::track_reset_w)).nopr(); /* + watchdog */
+ map(0x7000, 0x7000).r(this, FUNC(capbowl_state::track_0_r)); /* + other inputs */
+ map(0x7800, 0x7800).r(this, FUNC(capbowl_state::track_1_r)); /* + other inputs */
+ map(0x8000, 0xffff).rom();
+}
@@ -242,14 +244,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(capbowl_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* watchdog */
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void capbowl_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x1001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x2000, 0x2000).nopw(); /* watchdog */
+ map(0x6000, 0x6000).w("dac", FUNC(dac_byte_interface::write));
+ map(0x7000, 0x7000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/capcom.cpp b/src/mame/drivers/capcom.cpp
index ce5385cdfce..9cbc14466ad 100644
--- a/src/mame/drivers/capcom.cpp
+++ b/src/mame/drivers/capcom.cpp
@@ -30,9 +30,10 @@ public:
};
-ADDRESS_MAP_START(capcom_state::capcom_map)
- AM_RANGE(0x0000, 0xffffff) AM_NOP
-ADDRESS_MAP_END
+void capcom_state::capcom_map(address_map &map)
+{
+ map(0x0000, 0xffffff).noprw();
+}
static INPUT_PORTS_START( capcom )
INPUT_PORTS_END
diff --git a/src/mame/drivers/capr1.cpp b/src/mame/drivers/capr1.cpp
index 77aa5e1ae58..93151990c6f 100644
--- a/src/mame/drivers/capr1.cpp
+++ b/src/mame/drivers/capr1.cpp
@@ -66,17 +66,18 @@ WRITE8_MEMBER(capr1_state::output_w)
***************************************************************************/
-ADDRESS_MAP_START(capr1_state::cspin2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa00f) AM_DEVREADWRITE("te7750", te7750_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2203_device, read, write)
- AM_RANGE(0xc004, 0xc004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+void capr1_state::cspin2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa00f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write));
+ map(0xc000, 0xc001).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc004, 0xc004).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// AM_RANGE(0xc008, 0xc009) AM_DEVWRITE("fifo1", m66300_device, write)
// AM_RANGE(0xc00c, 0xc00d) AM_DEVWRITE("fifo2", m66300_device, write)
// AM_RANGE(0xe000, 0xe001) AM_WRITENOP
// AM_RANGE(0xe002, 0xe004) AM_WRITENOP
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/caprcyc.cpp b/src/mame/drivers/caprcyc.cpp
index 1102705697f..0c9be4059b7 100644
--- a/src/mame/drivers/caprcyc.cpp
+++ b/src/mame/drivers/caprcyc.cpp
@@ -39,9 +39,10 @@ public:
***************************************************************************/
-ADDRESS_MAP_START(caprcyc_state::caprcyc_map) // TODO...
- AM_RANGE(0x00000000, 0x0003ffff) AM_ROM
-ADDRESS_MAP_END
+void caprcyc_state::caprcyc_map(address_map &map)
+{ // TODO...
+ map(0x00000000, 0x0003ffff).rom();
+}
diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp
index 40317c9d05f..1c9726bf83b 100644
--- a/src/mame/drivers/cardline.cpp
+++ b/src/mame/drivers/cardline.cpp
@@ -212,28 +212,30 @@ WRITE8_MEMBER(cardline_state::lamps_w)
output().set_lamp_value(7,(data >> 7) & 1);
}
-ADDRESS_MAP_START(cardline_state::mem_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cardline_state::mem_io)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("IN0")
- AM_RANGE(0x2005, 0x2005) AM_READ_PORT("IN1")
- AM_RANGE(0x2006, 0x2006) AM_READ_PORT("DSW")
- AM_RANGE(0x2007, 0x2007) AM_WRITE(lamps_w)
- AM_RANGE(0x2008, 0x2008) AM_NOP // set to 1 during coin input
+void cardline_state::mem_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
+
+void cardline_state::mem_io(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2003, 0x2003).portr("IN0");
+ map(0x2005, 0x2005).portr("IN1");
+ map(0x2006, 0x2006).portr("DSW");
+ map(0x2007, 0x2007).w(this, FUNC(cardline_state::lamps_w));
+ map(0x2008, 0x2008).noprw(); // set to 1 during coin input
//AM_RANGE(0x2080, 0x213f) AM_NOP // ????
- AM_RANGE(0x2100, 0x213f) AM_READWRITE(asic_r, asic_w)
- AM_RANGE(0x2400, 0x2400) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2801, 0x2801) AM_DEVWRITE("crtc", mc6845_device, register_w)
+ map(0x2100, 0x213f).rw(this, FUNC(cardline_state::asic_r), FUNC(cardline_state::asic_w));
+ map(0x2400, 0x2400).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2801, 0x2801).w("crtc", FUNC(mc6845_device::register_w));
//AM_RANGE(0x2840, 0x2840) AM_NOP // ???
//AM_RANGE(0x2880, 0x2880) AM_NOP // ???
- AM_RANGE(0x3003, 0x3003) AM_WRITE(a3003_w)
- AM_RANGE(0xc000, 0xdfff) AM_WRITE(vram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xffff) AM_WRITE(attr_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
+ map(0x3003, 0x3003).w(this, FUNC(cardline_state::a3003_w));
+ map(0xc000, 0xdfff).w(this, FUNC(cardline_state::vram_w)).share("videoram");
+ map(0xe000, 0xffff).w(this, FUNC(cardline_state::attr_w)).share("colorram");
+}
static INPUT_PORTS_START( cardline )
diff --git a/src/mame/drivers/carjmbre.cpp b/src/mame/drivers/carjmbre.cpp
index 6840af31d14..fd987a94566 100644
--- a/src/mame/drivers/carjmbre.cpp
+++ b/src/mame/drivers/carjmbre.cpp
@@ -241,37 +241,40 @@ WRITE8_MEMBER(carjmbre_state::flipscreen_w)
flip_screen_set(data & 1);
}
-ADDRESS_MAP_START(carjmbre_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8803, 0x8803) AM_WRITE(nmi_enable_w)
- AM_RANGE(0x8805, 0x8805) AM_WRITE(bgcolor_w)
- AM_RANGE(0x8807, 0x8807) AM_WRITE(flipscreen_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM // 6116
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") // 2114*4
- AM_RANGE(0x9800, 0x98ff) AM_RAM AM_SHARE("spriteram") // 5101*2
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN2")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void carjmbre_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8803, 0x8803).w(this, FUNC(carjmbre_state::nmi_enable_w));
+ map(0x8805, 0x8805).w(this, FUNC(carjmbre_state::bgcolor_w));
+ map(0x8807, 0x8807).w(this, FUNC(carjmbre_state::flipscreen_w));
+ map(0x8000, 0x87ff).ram(); // 6116
+ map(0x9000, 0x97ff).ram().w(this, FUNC(carjmbre_state::videoram_w)).share("videoram"); // 2114*4
+ map(0x9800, 0x98ff).ram().share("spriteram"); // 5101*2
+ map(0xa000, 0xa000).portr("IN1");
+ map(0xa800, 0xa800).portr("IN2");
+ map(0xb800, 0xb800).portr("DSW").w("soundlatch", FUNC(generic_latch_8_device::write));
+}
// audiocpu side
-ADDRESS_MAP_START(carjmbre_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM // 6116
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(carjmbre_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x22, 0x22) AM_WRITENOP // bdir/bc2/bc1 1/0/1 inactive write
- AM_RANGE(0x24, 0x24) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x30, 0x31) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x32, 0x32) AM_WRITENOP // bdir/bc2/bc1 1/0/1 inactive write
- AM_RANGE(0x34, 0x34) AM_DEVREAD("ay2", ay8910_device, data_r)
-ADDRESS_MAP_END
+void carjmbre_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).mirror(0x1000).rom();
+ map(0x2000, 0x27ff).ram(); // 6116
+}
+
+void carjmbre_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x20, 0x21).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x22, 0x22).nopw(); // bdir/bc2/bc1 1/0/1 inactive write
+ map(0x24, 0x24).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x30, 0x31).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x32, 0x32).nopw(); // bdir/bc2/bc1 1/0/1 inactive write
+ map(0x34, 0x34).r("ay2", FUNC(ay8910_device::data_r));
+}
diff --git a/src/mame/drivers/carpolo.cpp b/src/mame/drivers/carpolo.cpp
index e2a2c6ecf44..6370d0f7a8b 100644
--- a/src/mame/drivers/carpolo.cpp
+++ b/src/mame/drivers/carpolo.cpp
@@ -34,29 +34,30 @@
*
*************************************/
-ADDRESS_MAP_START(carpolo_state::main_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x3000, 0x30ff) AM_WRITEONLY AM_SHARE("alpharam")
- AM_RANGE(0x4000, 0x400f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x5400, 0x5403) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x5800, 0x5803) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READ(carpolo_ball_screen_collision_cause_r)
- AM_RANGE(0xa001, 0xa001) AM_READ(carpolo_car_ball_collision_x_r)
- AM_RANGE(0xa002, 0xa002) AM_READ(carpolo_car_ball_collision_y_r)
- AM_RANGE(0xa003, 0xa003) AM_READ(carpolo_car_car_collision_cause_r)
- AM_RANGE(0xa004, 0xa004) AM_READ(carpolo_car_border_collision_cause_r)
- AM_RANGE(0xa005, 0xa005) AM_READ(carpolo_car_ball_collision_cause_r)
- AM_RANGE(0xa006, 0xa006) AM_READ(carpolo_car_goal_collision_cause_r)
- AM_RANGE(0xa007, 0xa007) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_WRITE(carpolo_ball_screen_interrupt_clear_w)
- AM_RANGE(0xb001, 0xb001) AM_WRITE(carpolo_timer_interrupt_clear_w)
- AM_RANGE(0xb003, 0xb003) AM_WRITE(carpolo_car_car_interrupt_clear_w)
- AM_RANGE(0xb004, 0xb004) AM_WRITE(carpolo_car_border_interrupt_clear_w)
- AM_RANGE(0xb005, 0xb005) AM_WRITE(carpolo_car_ball_interrupt_clear_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(carpolo_car_goal_interrupt_clear_w)
- AM_RANGE(0xc000, 0xc000) AM_READ(carpolo_interrupt_cause_r)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void carpolo_state::main_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x3000, 0x30ff).writeonly().share("alpharam");
+ map(0x4000, 0x400f).writeonly().share("spriteram");
+ map(0x5400, 0x5403).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x5800, 0x5803).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xa000, 0xa000).r(this, FUNC(carpolo_state::carpolo_ball_screen_collision_cause_r));
+ map(0xa001, 0xa001).r(this, FUNC(carpolo_state::carpolo_car_ball_collision_x_r));
+ map(0xa002, 0xa002).r(this, FUNC(carpolo_state::carpolo_car_ball_collision_y_r));
+ map(0xa003, 0xa003).r(this, FUNC(carpolo_state::carpolo_car_car_collision_cause_r));
+ map(0xa004, 0xa004).r(this, FUNC(carpolo_state::carpolo_car_border_collision_cause_r));
+ map(0xa005, 0xa005).r(this, FUNC(carpolo_state::carpolo_car_ball_collision_cause_r));
+ map(0xa006, 0xa006).r(this, FUNC(carpolo_state::carpolo_car_goal_collision_cause_r));
+ map(0xa007, 0xa007).portr("IN1");
+ map(0xb000, 0xb000).w(this, FUNC(carpolo_state::carpolo_ball_screen_interrupt_clear_w));
+ map(0xb001, 0xb001).w(this, FUNC(carpolo_state::carpolo_timer_interrupt_clear_w));
+ map(0xb003, 0xb003).w(this, FUNC(carpolo_state::carpolo_car_car_interrupt_clear_w));
+ map(0xb004, 0xb004).w(this, FUNC(carpolo_state::carpolo_car_border_interrupt_clear_w));
+ map(0xb005, 0xb005).w(this, FUNC(carpolo_state::carpolo_car_ball_interrupt_clear_w));
+ map(0xb006, 0xb006).w(this, FUNC(carpolo_state::carpolo_car_goal_interrupt_clear_w));
+ map(0xc000, 0xc000).r(this, FUNC(carpolo_state::carpolo_interrupt_cause_r));
+ map(0xf000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/carrera.cpp b/src/mame/drivers/carrera.cpp
index b7a9cce6b41..f1a1c52890e 100644
--- a/src/mame/drivers/carrera.cpp
+++ b/src/mame/drivers/carrera.cpp
@@ -79,25 +79,27 @@ public:
};
-ADDRESS_MAP_START(carrera_state::carrera_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe801, 0xe801) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("tileram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(carrera_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5")
- AM_RANGE(0x06, 0x06) AM_WRITENOP // ?
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void carrera_state::carrera_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xe800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe801, 0xe801).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xf000, 0xffff).ram().share("tileram");
+}
+
+void carrera_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).portr("IN3");
+ map(0x04, 0x04).portr("IN4");
+ map(0x05, 0x05).portr("IN5");
+ map(0x06, 0x06).nopw(); // ?
+ map(0x08, 0x09).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( carrera )
PORT_START("IN0") /* Port 0 */
diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp
index a4eadcd402d..11f074bf444 100644
--- a/src/mame/drivers/casloopy.cpp
+++ b/src/mame/drivers/casloopy.cpp
@@ -424,23 +424,24 @@ READ32_MEMBER(casloopy_state::cart_r)
}
-ADDRESS_MAP_START(casloopy_state::casloopy_map)
- AM_RANGE(0x00000000, 0x00007fff) AM_RAM AM_SHARE("bios_rom")
- AM_RANGE(0x01000000, 0x0107ffff) AM_RAM AM_SHARE("wram")// stack pointer points here
- AM_RANGE(0x04000000, 0x0401ffff) AM_READWRITE8(bitmap_r, bitmap_w, 0xffffffff)
- AM_RANGE(0x04040000, 0x0404ffff) AM_READWRITE8(vram_r, vram_w, 0xffffffff) // tilemap + PCG
- AM_RANGE(0x04050000, 0x040503ff) AM_RAM // ???
- AM_RANGE(0x04051000, 0x040511ff) AM_READWRITE16(pal_r, pal_w, 0xffffffff)
- AM_RANGE(0x04058000, 0x04058007) AM_READWRITE16(vregs_r, vregs_w, 0xffffffff)
- AM_RANGE(0x0405b000, 0x0405b00f) AM_RAM AM_SHARE("vregs") // RGB555 brightness control plus scrolling
+void casloopy_state::casloopy_map(address_map &map)
+{
+ map(0x00000000, 0x00007fff).ram().share("bios_rom");
+ map(0x01000000, 0x0107ffff).ram().share("wram");// stack pointer points here
+ map(0x04000000, 0x0401ffff).rw(this, FUNC(casloopy_state::bitmap_r), FUNC(casloopy_state::bitmap_w));
+ map(0x04040000, 0x0404ffff).rw(this, FUNC(casloopy_state::vram_r), FUNC(casloopy_state::vram_w)); // tilemap + PCG
+ map(0x04050000, 0x040503ff).ram(); // ???
+ map(0x04051000, 0x040511ff).rw(this, FUNC(casloopy_state::pal_r), FUNC(casloopy_state::pal_w));
+ map(0x04058000, 0x04058007).rw(this, FUNC(casloopy_state::vregs_r), FUNC(casloopy_state::vregs_w));
+ map(0x0405b000, 0x0405b00f).ram().share("vregs"); // RGB555 brightness control plus scrolling
// AM_RANGE(0x05ffff00, 0x05ffffff) AM_READWRITE16(sh7021_r, sh7021_w, 0xffffffff)
// AM_RANGE(0x05ffff00, 0x05ffffff) - SH7021 internal i/o
- AM_RANGE(0x06000000, 0x062fffff) AM_READ(cart_r)
- AM_RANGE(0x07000000, 0x070003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
- AM_RANGE(0x09000000, 0x0907ffff) AM_RAM AM_SHARE("wram")
- AM_RANGE(0x0e000000, 0x0e2fffff) AM_READ(cart_r)
- AM_RANGE(0x0f000000, 0x0f0003ff) AM_RAM AM_SHARE("oram")
-ADDRESS_MAP_END
+ map(0x06000000, 0x062fffff).r(this, FUNC(casloopy_state::cart_r));
+ map(0x07000000, 0x070003ff).ram().share("oram");// on-chip RAM, actually at 0xf000000 (1 kb)
+ map(0x09000000, 0x0907ffff).ram().share("wram");
+ map(0x0e000000, 0x0e2fffff).r(this, FUNC(casloopy_state::cart_r));
+ map(0x0f000000, 0x0f0003ff).ram().share("oram");
+}
#if 0
ADDRESS_MAP_START(casloopy_state::casloopy_sub_map)
diff --git a/src/mame/drivers/castle.cpp b/src/mame/drivers/castle.cpp
index 4fc65727059..25769b94c91 100644
--- a/src/mame/drivers/castle.cpp
+++ b/src/mame/drivers/castle.cpp
@@ -67,13 +67,15 @@ protected:
};
-ADDRESS_MAP_START(castle_state::V1rvE_mastermap)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void castle_state::V1rvE_mastermap(address_map &map)
+{
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(castle_state::V1rvE_slavemap)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void castle_state::V1rvE_slavemap(address_map &map)
+{
+ map(0x8000, 0xffff).rom();
+}
@@ -91,9 +93,10 @@ MACHINE_CONFIG_END
-ADDRESS_MAP_START(castle_state::V2rvA_map)
- AM_RANGE(0x2000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void castle_state::V2rvA_map(address_map &map)
+{
+ map(0x2000, 0xffff).rom();
+}
MACHINE_CONFIG_START(castle_state::castle_V2rvA)
diff --git a/src/mame/drivers/caswin.cpp b/src/mame/drivers/caswin.cpp
index 14e39c84db0..aeeb6cfd476 100644
--- a/src/mame/drivers/caswin.cpp
+++ b/src/mame/drivers/caswin.cpp
@@ -197,25 +197,27 @@ WRITE8_MEMBER(caswin_state::vvillage_lamps_w)
output().set_led_value(4, data & 0x10);
}
-ADDRESS_MAP_START(caswin_state::vvillage_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_READ(vvillage_rng_r) //accessed by caswin only
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram")
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sc0_attr_w) AM_SHARE("sc0_attr")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(caswin_state::vvillage_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10,0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x11,0x11) AM_READ_PORT("IN1")
- AM_RANGE(0x10,0x10) AM_WRITE(vvillage_scroll_w)
- AM_RANGE(0x11,0x11) AM_WRITE(vvillage_vregs_w)
- AM_RANGE(0x12,0x12) AM_WRITE(vvillage_lamps_w)
- AM_RANGE(0x13,0x13) AM_WRITE(vvillage_output_w)
-ADDRESS_MAP_END
+void caswin_state::vvillage_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa000).r(this, FUNC(caswin_state::vvillage_rng_r)); //accessed by caswin only
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xf000, 0xf3ff).ram().w(this, FUNC(caswin_state::sc0_vram_w)).share("sc0_vram");
+ map(0xf800, 0xfbff).ram().w(this, FUNC(caswin_state::sc0_attr_w)).share("sc0_attr");
+}
+
+void caswin_state::vvillage_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("IN0");
+ map(0x11, 0x11).portr("IN1");
+ map(0x10, 0x10).w(this, FUNC(caswin_state::vvillage_scroll_w));
+ map(0x11, 0x11).w(this, FUNC(caswin_state::vvillage_vregs_w));
+ map(0x12, 0x12).w(this, FUNC(caswin_state::vvillage_lamps_w));
+ map(0x13, 0x13).w(this, FUNC(caswin_state::vvillage_output_w));
+}
static INPUT_PORTS_START( vvillage )
diff --git a/src/mame/drivers/cat.cpp b/src/mame/drivers/cat.cpp
index 3657f02f4ad..35224150507 100644
--- a/src/mame/drivers/cat.cpp
+++ b/src/mame/drivers/cat.cpp
@@ -757,32 +757,33 @@ a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4
*/
-ADDRESS_MAP_START(cat_state::cat_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_MIRROR(0x180000) // 256 KB ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("svram") AM_MIRROR(0x18C000)// SRAM powered by battery
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("svrom",0x0000) AM_MIRROR(0x180000) // SV ROM
- AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_SHARE("p_cat_vram") AM_MIRROR(0x180000) // 512 KB RAM
- AM_RANGE(0x600000, 0x67ffff) AM_READWRITE(cat_2e80_r,cat_video_control_w) AM_MIRROR(0x180000) // Gate Array #1: Video Addressing and Timing, dram refresh timing, dram /cs and /wr (ga2 does the actual video invert/display and access to the dram data bus)
- AM_RANGE(0x800000, 0x800001) AM_READWRITE(cat_floppy_control_r, cat_floppy_control_w) AM_MIRROR(0x18FFE0) // floppy control lines and readback
- AM_RANGE(0x800002, 0x800003) AM_READWRITE(cat_0080_r, cat_keyboard_w) AM_MIRROR(0x18FFE0) // keyboard col write
- AM_RANGE(0x800004, 0x800005) AM_READWRITE(cat_0080_r, cat_printer_data_w) AM_MIRROR(0x18FFE0) // Centronics Printer Data
- AM_RANGE(0x800006, 0x800007) AM_READWRITE(cat_floppy_data_r,cat_floppy_data_w) AM_MIRROR(0x18FFE0) // floppy data read/write
- AM_RANGE(0x800008, 0x800009) AM_READ(cat_floppy_status_r) AM_MIRROR(0x18FFE0) // floppy status lines
- AM_RANGE(0x80000a, 0x80000b) AM_READ(cat_keyboard_r) AM_MIRROR(0x18FFE0) // keyboard row read
- AM_RANGE(0x80000c, 0x80000d) AM_READ(cat_0080_r) AM_MIRROR(0x18FFE0) // Open bus?
- AM_RANGE(0x80000e, 0x80000f) AM_READWRITE(cat_battery_r,cat_printer_control_w) AM_MIRROR(0x18FFE0) // Centronics Printer Control, keyboard led and country code enable
- AM_RANGE(0x800010, 0x80001f) AM_READ(cat_0080_r) AM_MIRROR(0x18FFE0) // Open bus?
- AM_RANGE(0x810000, 0x81001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff ) AM_MIRROR(0x18FFE0)
- AM_RANGE(0x820000, 0x82003f) AM_READWRITE(cat_modem_r,cat_modem_w) AM_MIRROR(0x18FFC0) // AMI S35213 Modem Chip, all access is on bit 7
- AM_RANGE(0x830000, 0x830001) AM_READ(cat_6ms_counter_r) AM_MIRROR(0x18FFFE) // 16bit 6ms counter clocked by output of another 16bit counter clocked at 10mhz
- AM_RANGE(0x840000, 0x840001) AM_READWRITE(cat_2e80_r,cat_opr_w) AM_MIRROR(0x18FFFE) // GA2 Output port register (video enable, invert, watchdog reset, phone relays)
- AM_RANGE(0x850000, 0x850001) AM_READ(cat_wdt_r) AM_MIRROR(0x18FFFE) // watchdog and power fail state read
- AM_RANGE(0x860000, 0x860001) AM_READWRITE(cat_0000_r, cat_tcb_w) AM_MIRROR(0x18FFFE) // Test mode
- AM_RANGE(0x870000, 0x870001) AM_READ(cat_2e80_r) AM_MIRROR(0x18FFFE) // Open bus?
- AM_RANGE(0xA00000, 0xA00001) AM_READ(cat_2e80_r) AM_MIRROR(0x1FFFFE) // Open bus/dtack? The 0xA00000-0xA3ffff area is ram used for shadow rom storage on cat developer machines, which is either banked over top of, or jumped to instead of the normal rom
- AM_RANGE(0xC00000, 0xC00001) AM_READ(cat_2e80_r) AM_MIRROR(0x3FFFFE) // Open bus/vme?
-ADDRESS_MAP_END
+void cat_state::cat_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom().mirror(0x180000); // 256 KB ROM
+ map(0x040000, 0x043fff).ram().share("svram").mirror(0x18C000);// SRAM powered by battery
+ map(0x200000, 0x27ffff).rom().region("svrom", 0x0000).mirror(0x180000); // SV ROM
+ map(0x400000, 0x47ffff).ram().share("p_cat_vram").mirror(0x180000); // 512 KB RAM
+ map(0x600000, 0x67ffff).rw(this, FUNC(cat_state::cat_2e80_r), FUNC(cat_state::cat_video_control_w)).mirror(0x180000); // Gate Array #1: Video Addressing and Timing, dram refresh timing, dram /cs and /wr (ga2 does the actual video invert/display and access to the dram data bus)
+ map(0x800000, 0x800001).rw(this, FUNC(cat_state::cat_floppy_control_r), FUNC(cat_state::cat_floppy_control_w)).mirror(0x18FFE0); // floppy control lines and readback
+ map(0x800002, 0x800003).rw(this, FUNC(cat_state::cat_0080_r), FUNC(cat_state::cat_keyboard_w)).mirror(0x18FFE0); // keyboard col write
+ map(0x800004, 0x800005).rw(this, FUNC(cat_state::cat_0080_r), FUNC(cat_state::cat_printer_data_w)).mirror(0x18FFE0); // Centronics Printer Data
+ map(0x800006, 0x800007).rw(this, FUNC(cat_state::cat_floppy_data_r), FUNC(cat_state::cat_floppy_data_w)).mirror(0x18FFE0); // floppy data read/write
+ map(0x800008, 0x800009).r(this, FUNC(cat_state::cat_floppy_status_r)).mirror(0x18FFE0); // floppy status lines
+ map(0x80000a, 0x80000b).r(this, FUNC(cat_state::cat_keyboard_r)).mirror(0x18FFE0); // keyboard row read
+ map(0x80000c, 0x80000d).r(this, FUNC(cat_state::cat_0080_r)).mirror(0x18FFE0); // Open bus?
+ map(0x80000e, 0x80000f).rw(this, 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(this, FUNC(cat_state::cat_0080_r)).mirror(0x18FFE0); // Open bus?
+ map(0x810000, 0x81001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff).mirror(0x18FFE0);
+ map(0x820000, 0x82003f).rw(this, 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(this, 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(this, 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)
+ map(0x850000, 0x850001).r(this, FUNC(cat_state::cat_wdt_r)).mirror(0x18FFFE); // watchdog and power fail state read
+ map(0x860000, 0x860001).rw(this, FUNC(cat_state::cat_0000_r), FUNC(cat_state::cat_tcb_w)).mirror(0x18FFFE); // Test mode
+ map(0x870000, 0x870001).r(this, FUNC(cat_state::cat_2e80_r)).mirror(0x18FFFE); // Open bus?
+ map(0xA00000, 0xA00001).r(this, FUNC(cat_state::cat_2e80_r)).mirror(0x1FFFFE); // Open bus/dtack? The 0xA00000-0xA3ffff area is ram used for shadow rom storage on cat developer machines, which is either banked over top of, or jumped to instead of the normal rom
+ map(0xC00000, 0xC00001).r(this, FUNC(cat_state::cat_2e80_r)).mirror(0x3FFFFE); // Open bus/vme?
+}
/* Input ports */
diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp
index 3df9d155d4f..d42add50cdd 100644
--- a/src/mame/drivers/cave.cpp
+++ b/src/mame/drivers/cave.cpp
@@ -491,48 +491,50 @@ WRITE16_MEMBER(cave_state::vram_8x8_w)
Dangun Feveron
***************************************************************************/
-ADDRESS_MAP_START(cave_state::dfeveron_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x708000, 0x708fff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x710000, 0x710bff) AM_READONLY // ?
- AM_RANGE(0x710c00, 0x710fff) AM_RAM // ?
- AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::dfeveron_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x708000, 0x708fff).ram().share("paletteram.0"); // Palette
+ map(0x710000, 0x710bff).readonly(); // ?
+ map(0x710c00, 0x710fff).ram(); // ?
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00001).portr("IN0"); // Inputs
+ map(0xb00002, 0xb00003).portr("IN1"); // Inputs + EEPROM
+ map(0xc00000, 0xc00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+}
/***************************************************************************
Dodonpachi
***************************************************************************/
-ADDRESS_MAP_START(cave_state::ddonpach_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(vram_8x8_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::ddonpach_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x700000, 0x70ffff).ram().w(this, FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00000, 0xd00001).portr("IN0"); // Inputs
+ map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+}
/***************************************************************************
@@ -552,130 +554,135 @@ READ16_MEMBER(cave_state::donpachi_videoregs_r)
}
}
-ADDRESS_MAP_START(cave_state::donpachi_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x207fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(vram_8x8_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x600000, 0x600005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0x700000, 0x700005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x800000, 0x800005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0x900000, 0x90007f) AM_RAM_READ(donpachi_videoregs_r) AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0xa08000, 0xa08fff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0xb00000, 0xb00003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
- AM_RANGE(0xb00010, 0xb00013) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) //
- AM_RANGE(0xb00020, 0xb0002f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) //
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::donpachi_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x200000, 0x207fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x407fff).ram().w(this, FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2
+ map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites
+ map(0x600000, 0x600005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0x800000, 0x800005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0x900000, 0x90007f).ram().r(this, FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs
+ map(0xa08000, 0xa08fff).ram().share("paletteram.0"); // Palette
+ map(0xb00000, 0xb00003).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // M6295
+ map(0xb00010, 0xb00013).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); //
+ map(0xb00020, 0xb0002f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); //
+ map(0xc00000, 0xc00001).portr("IN0"); // Inputs
+ map(0xc00002, 0xc00003).portr("IN1"); // Inputs + EEPROM
+ map(0xd00000, 0xd00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+}
/***************************************************************************
Esprade
***************************************************************************/
-ADDRESS_MAP_START(cave_state::esprade_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0" ) // Inputs
- AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1" ) // Inputs + EEPROM
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::esprade_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x700000, 0x707fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00000, 0xd00001).portr("IN0"); // Inputs
+ map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+}
/***************************************************************************
Gaia Crusaders
***************************************************************************/
-ADDRESS_MAP_START(cave_state::gaia_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprite
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x508000, 0x50ffff) AM_RAM // More Layer 0, Tested but not used?
- AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x608000, 0x60ffff) AM_RAM // More Layer 1, Tested but not used?
- AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x708000, 0x70ffff) AM_RAM // More Layer 2, Tested but not used?
- AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xd00010, 0xd00011) AM_WRITE(gaia_coin_lsb_w) // Coin counter only
- AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0xd00014, 0xd00015) AM_READ_PORT("DSW") // Dips
- AM_RANGE(0xd00014, 0xd00015) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog?
-ADDRESS_MAP_END
+void cave_state::gaia_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprite
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x508000, 0x50ffff).ram(); // More Layer 0, Tested but not used?
+ map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x608000, 0x60ffff).ram(); // More Layer 1, Tested but not used?
+ map(0x700000, 0x707fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x708000, 0x70ffff).ram(); // More Layer 2, Tested but not used?
+ map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00010, 0xd00011).portr("IN0"); // Inputs
+ map(0xd00010, 0xd00011).w(this, FUNC(cave_state::gaia_coin_lsb_w)); // Coin counter only
+ map(0xd00012, 0xd00013).portr("IN1"); // Inputs
+ map(0xd00014, 0xd00015).portr("DSW"); // Dips
+ map(0xd00014, 0xd00015).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog?
+}
/***************************************************************************
Guwange
***************************************************************************/
-ADDRESS_MAP_START(cave_state::guwange_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
-/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xd00010, 0xd00011) AM_WRITE(cave_eeprom_lsb_w) // EEPROM
- AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs + EEPROM
+void cave_state::guwange_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x300000, 0x300007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x700000, 0x707fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+/**/map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00010, 0xd00011).portr("IN0"); // Inputs
+ map(0xd00010, 0xd00011).w(this, FUNC(cave_state::cave_eeprom_lsb_w)); // EEPROM
+ map(0xd00012, 0xd00013).portr("IN1"); // Inputs + EEPROM
// AM_RANGE(0xd00012, 0xd00013) AM_WRITENOP // ?
// AM_RANGE(0xd00014, 0xd00015) AM_WRITENOP // ? $800068 in dfeveron ? probably Watchdog
-ADDRESS_MAP_END
+}
/***************************************************************************
Hotdog Storm
***************************************************************************/
-ADDRESS_MAP_START(cave_state::hotdogst_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM
- AM_RANGE(0x408000, 0x408fff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0xa80000, 0xa8007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause
+void cave_state::hotdogst_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x300000, 0x30ffff).ram(); // RAM
+ map(0x408000, 0x408fff).ram().share("paletteram.0"); // Palette
+ map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x980000, 0x987fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0xa80000, 0xa8007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0xa80000, 0xa80007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
// AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r) // From Sound CPU
- AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w) // To Sound CPU
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(hotdogst_eeprom_msb_w) // EEPROM
- AM_RANGE(0xd00002, 0xd00003) AM_WRITENOP // ???
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
-ADDRESS_MAP_END
+ map(0xa8006e, 0xa8006f).w(this, FUNC(cave_state::sound_cmd_w)); // To Sound CPU
+ map(0xb00000, 0xb00005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xb80000, 0xb80005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xc00000, 0xc00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xc80000, 0xc80001).portr("IN0"); // Inputs
+ map(0xc80002, 0xc80003).portr("IN1"); // Inputs + EEPROM
+ map(0xd00000, 0xd00001).w(this, FUNC(cave_state::hotdogst_eeprom_msb_w)); // EEPROM
+ map(0xd00002, 0xd00003).nopw(); // ???
+ map(0xf00000, 0xf0ffff).ram().share("spriteram.0"); // Sprites
+}
/***************************************************************************
@@ -743,94 +750,98 @@ CUSTOM_INPUT_MEMBER(cave_state::korokoro_hopper_r)
}
-ADDRESS_MAP_START(cave_state::korokoro_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x107fff) AM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x1c0000, 0x1c007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x1c0000, 0x1c0007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x200000, 0x207fff) AM_WRITEONLY AM_SHARE("paletteram.0") // Palette
+void cave_state::korokoro_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x107fff).w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x140000, 0x140005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x180000, 0x187fff).writeonly().share("spriteram.0"); // Sprites
+ map(0x1c0000, 0x1c007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x1c0000, 0x1c0007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x200000, 0x207fff).writeonly().share("paletteram.0"); // Palette
// AM_RANGE(0x240000, 0x240003) AM_DEVREAD8("ymz", ymz280b_device, read, 0x00ff) // YMZ280
- AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // YMZ280
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ???
- AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) // Leds
- AM_RANGE(0x28000a, 0x28000b) AM_WRITE(korokoro_eeprom_msb_w) // EEPROM
- AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cave_state::crusherm_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x107fff) AM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x200000, 0x207fff) AM_WRITEONLY AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // YMZ280
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ???
- AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) // Leds
- AM_RANGE(0x28000a, 0x28000b) AM_WRITE(korokoro_eeprom_msb_w) // EEPROM
- AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?)
- AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x340000, 0x34ffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0x240000, 0x240003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x280000, 0x280001).portr("IN0"); // Inputs + ???
+ map(0x280002, 0x280003).portr("IN1"); // Inputs + EEPROM
+ map(0x280008, 0x280009).w(this, FUNC(cave_state::korokoro_leds_w)); // Leds
+ map(0x28000a, 0x28000b).w(this, FUNC(cave_state::korokoro_eeprom_msb_w)); // EEPROM
+ map(0x28000c, 0x28000d).nopw(); // 0 (watchdog?)
+ map(0x300000, 0x30ffff).ram(); // RAM
+}
+
+void cave_state::crusherm_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x107fff).w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x140000, 0x140005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x180000, 0x187fff).writeonly().share("spriteram.0"); // Sprites
+ map(0x200000, 0x207fff).writeonly().share("paletteram.0"); // Palette
+ map(0x240000, 0x240003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x280000, 0x280001).portr("IN0"); // Inputs + ???
+ map(0x280002, 0x280003).portr("IN1"); // Inputs + EEPROM
+ map(0x280008, 0x280009).w(this, FUNC(cave_state::korokoro_leds_w)); // Leds
+ map(0x28000a, 0x28000b).w(this, FUNC(cave_state::korokoro_eeprom_msb_w)); // EEPROM
+ map(0x28000c, 0x28000d).nopw(); // 0 (watchdog?)
+ map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x300000, 0x300007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x340000, 0x34ffff).ram(); // RAM
+}
/***************************************************************************
Mazinger Z
***************************************************************************/
-ADDRESS_MAP_START(cave_state::mazinger_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x300068, 0x300069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
- AM_RANGE(0x30006e, 0x30006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU
- AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(vram_8x8_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_8x8_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x600000, 0x600005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0x700000, 0x700005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0x900000, 0x900001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
- AM_RANGE(0xc08000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0xd00000, 0xd7ffff) AM_ROM AM_REGION("user1", 0) // extra data ROM
-ADDRESS_MAP_END
+void cave_state::mazinger_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x300000, 0x300007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x300068, 0x300069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x30006e, 0x30006f).rw(this, FUNC(cave_state::soundlatch_ack_r), FUNC(cave_state::sound_cmd_w)); // From Sound CPU
+ map(0x400000, 0x407fff).ram().w(this, FUNC(cave_state::vram_8x8_w<1>)).share("vram.1"); // Layer 1
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_8x8_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x600005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0x800000, 0x800001).portr("IN0"); // Inputs
+ map(0x800002, 0x800003).portr("IN1"); // Inputs + EEPROM
+ map(0x900000, 0x900001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0xc08000, 0xc0ffff).ram().share("paletteram.0"); // Palette
+ map(0xd00000, 0xd7ffff).rom().region("user1", 0); // extra data ROM
+}
/***************************************************************************
Metamoqester
***************************************************************************/
-ADDRESS_MAP_START(cave_state::metmqstr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x27ffff) AM_ROM // ROM
- AM_RANGE(0x408000, 0x408fff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x600000, 0x600001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog?
- AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x888000, 0x88ffff) AM_RAM //
- AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x908000, 0x90ffff) AM_RAM //
- AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x988000, 0x98ffff) AM_RAM //
- AM_RANGE(0xa80000, 0xa8007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0xa80068, 0xa80069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog?
- AM_RANGE(0xa8006c, 0xa8006d) AM_READ(soundflags_ack_r) AM_WRITENOP // Communication
- AM_RANGE(0xa8006e, 0xa8006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(metmqstr_eeprom_msb_w) // EEPROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
-ADDRESS_MAP_END
+void cave_state::metmqstr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x17ffff).rom(); // ROM
+ map(0x200000, 0x27ffff).rom(); // ROM
+ map(0x408000, 0x408fff).ram().share("paletteram.0"); // Palette
+ map(0x600000, 0x600001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog?
+ map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x888000, 0x88ffff).ram(); //
+ map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x908000, 0x90ffff).ram(); //
+ map(0x980000, 0x987fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x988000, 0x98ffff).ram(); //
+ map(0xa80000, 0xa8007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0xa80000, 0xa80007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0xa80068, 0xa80069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog?
+ map(0xa8006c, 0xa8006d).r(this, FUNC(cave_state::soundflags_ack_r)).nopw(); // Communication
+ map(0xa8006e, 0xa8006f).rw(this, FUNC(cave_state::soundlatch_ack_r), FUNC(cave_state::sound_cmd_w)); // From Sound CPU
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xb80000, 0xb80005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xc00000, 0xc00005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xc80000, 0xc80001).portr("IN0"); // Inputs
+ map(0xc80002, 0xc80003).portr("IN1"); // Inputs + EEPROM
+ map(0xd00000, 0xd00001).w(this, FUNC(cave_state::metmqstr_eeprom_msb_w)); // EEPROM
+ map(0xf00000, 0xf0ffff).ram().share("spriteram.0"); // Sprites
+}
/***************************************************************************
@@ -914,46 +925,47 @@ WRITE16_MEMBER(cave_state::ppsatan_out_w)
// popmessage("OUT %04x", data);
}
-ADDRESS_MAP_START(cave_state::ppsatan_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM // RAM
+void cave_state::ppsatan_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x04ffff).ram(); // RAM
// Left Screen (Player 2)
- AM_RANGE(0x080000, 0x080005) AM_RAM AM_SHARE("vctrl.1") // Layer Control
- AM_RANGE(0x100000, 0x107fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer
+ map(0x080000, 0x080005).ram().share("vctrl.1"); // Layer Control
+ map(0x100000, 0x107fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer
// AM_RANGE(0x180000, 0x1803ff) AM_RAM // Palette (Tilemaps)
// AM_RANGE(0x187800, 0x188fff) AM_RAM AM_SHARE("paletteram.1") // Palette (Sprites)
- AM_RANGE(0x180000, 0x188fff) AM_RAM AM_SHARE("paletteram.1") // Palette
- AM_RANGE(0x1c0000, 0x1c7fff) AM_RAM AM_SHARE("spriteram.1") // Sprites
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("SYSTEM" ) // DSW + (unused) EEPROM
- AM_RANGE(0x200000, 0x200001) AM_WRITE(ppsatan_out_w) // Outputs + OKI banking
- AM_RANGE(0x200002, 0x200003) AM_READWRITE(ppsatan_touch2_r, ppsatan_eeprom_msb_w) // Touch Screen + (unused) EEPROM
- AM_RANGE(0x200004, 0x200005) AM_READWRITE(ppsatan_touch1_r, ppsatan_io_mux_w) // Touch Screen
- AM_RANGE(0x200006, 0x200007) AM_WRITENOP // Lev. 2 IRQ Ack?
- AM_RANGE(0x2c0000, 0x2c007f) AM_WRITEONLY AM_SHARE("videoregs.1") // Video Regs
- AM_RANGE(0x2c0000, 0x2c0007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x2c0068, 0x2c0069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
-
- AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
+ map(0x180000, 0x188fff).ram().share("paletteram.1"); // Palette
+ map(0x1c0000, 0x1c7fff).ram().share("spriteram.1"); // Sprites
+ map(0x200000, 0x200001).portr("SYSTEM"); // DSW + (unused) EEPROM
+ map(0x200000, 0x200001).w(this, FUNC(cave_state::ppsatan_out_w)); // Outputs + OKI banking
+ map(0x200002, 0x200003).rw(this, FUNC(cave_state::ppsatan_touch2_r), FUNC(cave_state::ppsatan_eeprom_msb_w)); // Touch Screen + (unused) EEPROM
+ map(0x200004, 0x200005).rw(this, FUNC(cave_state::ppsatan_touch1_r), FUNC(cave_state::ppsatan_io_mux_w)); // Touch Screen
+ map(0x200006, 0x200007).nopw(); // Lev. 2 IRQ Ack?
+ map(0x2c0000, 0x2c007f).writeonly().share("videoregs.1"); // Video Regs
+ map(0x2c0000, 0x2c0007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x2c0068, 0x2c0069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+
+ map(0x300001, 0x300001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
// Right Screen (Player 1)
- AM_RANGE(0x480000, 0x480005) AM_RAM AM_SHARE("vctrl.2") // Layer Control
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer
+ map(0x480000, 0x480005).ram().share("vctrl.2"); // Layer Control
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer
// AM_RANGE(0x580000, 0x5803ff) AM_RAM // Palette (Tilemaps)
// AM_RANGE(0x587800, 0x588fff) AM_RAM //AM_SHARE("paletteram.2") // Palette (Sprites)
- AM_RANGE(0x580000, 0x588fff) AM_RAM AM_SHARE("paletteram.2") // Palette
- AM_RANGE(0x5c0000, 0x5c7fff) AM_RAM AM_SHARE("spriteram.2") // Sprites
- AM_RANGE(0x6c0000, 0x6c007f) AM_WRITEONLY AM_SHARE("videoregs.2") // Video Regs
+ map(0x580000, 0x588fff).ram().share("paletteram.2"); // Palette
+ map(0x5c0000, 0x5c7fff).ram().share("spriteram.2"); // Sprites
+ map(0x6c0000, 0x6c007f).writeonly().share("videoregs.2"); // Video Regs
// Top Screen
- AM_RANGE(0x880000, 0x880005) AM_RAM AM_SHARE("vctrl.0") // Layer Control
- AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer
+ map(0x880000, 0x880005).ram().share("vctrl.0"); // Layer Control
+ map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer
// AM_RANGE(0x980000, 0x9803ff) AM_RAM // Palette (Tilemaps)
// AM_RANGE(0x987800, 0x988fff) AM_RAM AM_SHARE("paletteram.0") // Palette (Sprites)
- AM_RANGE(0x980000, 0x988fff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x9c0000, 0x9c7fff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0xac0000, 0xac007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
-ADDRESS_MAP_END
+ map(0x980000, 0x988fff).ram().share("paletteram.0"); // Palette
+ map(0x9c0000, 0x9c7fff).ram().share("spriteram.0"); // Sprites
+ map(0xac0000, 0xac007f).writeonly().share("videoregs.0"); // Video Regs
+}
/***************************************************************************
@@ -983,29 +995,30 @@ WRITE16_MEMBER(cave_state::pwrinst2_vctrl_w)
COMBINE_DATA(&VCTRL[offset]);
}
-ADDRESS_MAP_START(cave_state::pwrinst2_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") //
- AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("user1", 0) // extra data ROM space
- AM_RANGE(0x700000, 0x700001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
- AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(vram_8x8_w<3>) AM_SHARE("vram.3") // Layer 3
- AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0xa10000, 0xa1ffff) AM_RAM // Sprites?
- AM_RANGE(0xa80000, 0xa8007f) AM_RAM_READ(donpachi_videoregs_r) AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0xb00000, 0xb00005) AM_RAM_WRITE(pwrinst2_vctrl_w<2>) AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xb80000, 0xb80005) AM_RAM_WRITE(pwrinst2_vctrl_w<0>) AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xc00000, 0xc00005) AM_RAM_WRITE(pwrinst2_vctrl_w<1>) AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xc80000, 0xc80005) AM_RAM_WRITE(pwrinst2_vctrl_w<3>) AM_SHARE("vctrl.3") // Layer 3 Control
- AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r) // ? From Sound CPU
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w) // To Sound CPU
- AM_RANGE(0xe80000, 0xe80001) AM_READ(pwrinst2_eeprom_r) // EEPROM
- AM_RANGE(0xf00000, 0xf04fff) AM_RAM AM_SHARE("paletteram.0") // Palette
-ADDRESS_MAP_END
+void cave_state::pwrinst2_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram(); // RAM
+ map(0x500000, 0x500001).portr("IN0"); // Inputs
+ map(0x500002, 0x500003).portr("IN1"); //
+ map(0x600000, 0x6fffff).rom().region("user1", 0); // extra data ROM space
+ map(0x700000, 0x700001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+ map(0x800000, 0x807fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x980000, 0x987fff).ram().w(this, FUNC(cave_state::vram_8x8_w<3>)).share("vram.3"); // Layer 3
+ map(0xa00000, 0xa0ffff).ram().share("spriteram.0"); // Sprites
+ map(0xa10000, 0xa1ffff).ram(); // Sprites?
+ map(0xa80000, 0xa8007f).ram().r(this, FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs
+ map(0xb00000, 0xb00005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<2>)).share("vctrl.2"); // Layer 2 Control
+ map(0xb80000, 0xb80005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<0>)).share("vctrl.0"); // Layer 0 Control
+ map(0xc00000, 0xc00005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<1>)).share("vctrl.1"); // Layer 1 Control
+ map(0xc80000, 0xc80005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<3>)).share("vctrl.3"); // Layer 3 Control
+ map(0xd80000, 0xd80001).r(this, FUNC(cave_state::soundlatch_ack_r)); // ? From Sound CPU
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::sound_cmd_w)); // To Sound CPU
+ map(0xe80000, 0xe80001).r(this, FUNC(cave_state::pwrinst2_eeprom_r)); // EEPROM
+ map(0xf00000, 0xf04fff).ram().share("paletteram.0"); // Palette
+}
/***************************************************************************
@@ -1018,77 +1031,80 @@ READ16_MEMBER(cave_state::sailormn_input0_r)
return ioport("IN0")->read();
}
-ADDRESS_MAP_START(cave_state::sailormn_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x110000, 0x110001) AM_RAM // (agallet)
- AM_RANGE(0x200000, 0x3fffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x407fff) AM_RAM // (agallet)
- AM_RANGE(0x408000, 0x40bfff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x40c000, 0x40ffff) AM_RAM // (agallet)
- AM_RANGE(0x410000, 0x410001) AM_RAM // (agallet)
- AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x510000, 0x510001) AM_RAM // (agallet)
- AM_RANGE(0x600000, 0x600001) AM_READ(sailormn_input0_r) // Inputs + Watchdog!
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0x700000, 0x700001) AM_WRITE(sailormn_eeprom_msb_w) // EEPROM
- AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1
- AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2
- AM_RANGE(0x908000, 0x908001) AM_RAM // (agallet)
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control
- AM_RANGE(0xb80000, 0xb8007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0xb80000, 0xb80007) AM_READ(cave_irq_cause_r) // IRQ Cause (bit 2 tested!)
- AM_RANGE(0xb8006c, 0xb8006d) AM_READ(soundflags_ack_r) // Communication
- AM_RANGE(0xb8006e, 0xb8006f) AM_READ(soundlatch_ack_r) // From Sound CPU
- AM_RANGE(0xb8006e, 0xb8006f) AM_WRITE(sound_cmd_w) // To Sound CPU
-ADDRESS_MAP_END
+void cave_state::sailormn_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x110000, 0x110001).ram(); // (agallet)
+ map(0x200000, 0x3fffff).rom(); // ROM
+ map(0x400000, 0x407fff).ram(); // (agallet)
+ map(0x408000, 0x40bfff).ram().share("paletteram.0"); // Palette
+ map(0x40c000, 0x40ffff).ram(); // (agallet)
+ map(0x410000, 0x410001).ram(); // (agallet)
+ map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites
+ map(0x510000, 0x510001).ram(); // (agallet)
+ map(0x600000, 0x600001).r(this, FUNC(cave_state::sailormn_input0_r)); // Inputs + Watchdog!
+ map(0x600002, 0x600003).portr("IN1"); // Inputs + EEPROM
+ map(0x700000, 0x700001).w(this, FUNC(cave_state::sailormn_eeprom_msb_w)); // EEPROM
+ map(0x800000, 0x807fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1
+ map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2
+ map(0x908000, 0x908001).ram(); // (agallet)
+ map(0xa00000, 0xa00005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0xa80000, 0xa80005).ram().share("vctrl.1"); // Layer 1 Control
+ map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control
+ map(0xb80000, 0xb8007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0xb80000, 0xb80007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause (bit 2 tested!)
+ map(0xb8006c, 0xb8006d).r(this, FUNC(cave_state::soundflags_ack_r)); // Communication
+ map(0xb8006e, 0xb8006f).r(this, FUNC(cave_state::soundlatch_ack_r)); // From Sound CPU
+ map(0xb8006e, 0xb8006f).w(this, FUNC(cave_state::sound_cmd_w)); // To Sound CPU
+}
/***************************************************************************
Tekken Card World
***************************************************************************/
-ADDRESS_MAP_START(cave_state::tekkencw_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::tekkencw_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x400001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x400002, 0x400003).portr("IN1"); // Inputs
+ map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0xc00000, 0xc00001).w(this, FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+}
/***************************************************************************
Tekken Battle Scratch
***************************************************************************/
-ADDRESS_MAP_START(cave_state::tekkenbs_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::tekkenbs_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette
+ map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x600002, 0x600003).portr("IN1"); // Inputs
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0xc00000, 0xc00001).w(this, FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+}
/***************************************************************************
@@ -1135,23 +1151,24 @@ CUSTOM_INPUT_MEMBER(cave_state::tjumpman_hopper_r)
return (m_hopper && !(m_screen->frame_number() % 10)) ? 0 : 1;
}
-ADDRESS_MAP_START(cave_state::tjumpman_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x304000, 0x307fff) AM_WRITE(vram_w<0>) // Layer 0 - 16x16 tiles mapped here
- AM_RANGE(0x400000, 0x400005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::tjumpman_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x304000, 0x307fff).w(this, FUNC(cave_state::vram_w<0>)); // Layer 0 - 16x16 tiles mapped here
+ map(0x400000, 0x400005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x500000, 0x50ffff).ram().share("paletteram.0"); // Palette
+ map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x600002, 0x600003).portr("IN1"); // Inputs
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0xc00000, 0xc00001).w(this, FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+}
/***************************************************************************
@@ -1174,22 +1191,23 @@ WRITE16_MEMBER(cave_state::pacslot_leds_w)
// popmessage("led %04X", data);
}
-ADDRESS_MAP_START(cave_state::pacslot_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x400000, 0x40007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x400000, 0x400007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x400068, 0x400069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
- AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(pacslot_leds_w) // Leds + Hopper
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::pacslot_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x40007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x400000, 0x400007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x400068, 0x400069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette
+ map(0x700000, 0x700001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x700002, 0x700003).portr("IN1"); // Inputs
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0xc00000, 0xc00001).w(this, FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+}
/***************************************************************************
@@ -1198,41 +1216,43 @@ ADDRESS_MAP_END
//TODO: leds need verifying
-ADDRESS_MAP_START(cave_state::paceight_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0x600000, 0x600005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(pacslot_leds_w) // Leds + Hopper
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::paceight_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery)
+ map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites
+ map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette
+ map(0x500000, 0x500001).portr("IN0"); // Inputs + EEPROM + Hopper
+ map(0x500002, 0x500003).portr("IN1"); // Inputs
+ map(0x600000, 0x600005).writeonly().share("vctrl.0"); // Layer 0 Control
+ map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0xc00000, 0xc00001).w(this, FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper
+ map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM
+}
/***************************************************************************
Uo Poko
***************************************************************************/
-ADDRESS_MAP_START(cave_state::uopoko_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites
- AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0
- AM_RANGE(0x600000, 0x60007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs
- AM_RANGE(0x600000, 0x600007) AM_READ(cave_irq_cause_r) // IRQ Cause
- AM_RANGE(0x700000, 0x700005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("paletteram.0") // Palette
- AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1") // Inputs + EEPROM
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
-ADDRESS_MAP_END
+void cave_state::uopoko_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280
+ map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites
+ map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0
+ map(0x600000, 0x60007f).writeonly().share("videoregs.0"); // Video Regs
+ map(0x600000, 0x600007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause
+ map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control
+ map(0x800000, 0x80ffff).ram().share("paletteram.0"); // Palette
+ map(0x900000, 0x900001).portr("IN0"); // Inputs
+ map(0x900002, 0x900003).portr("IN1"); // Inputs + EEPROM
+ map(0xa00000, 0xa00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM
+}
@@ -1272,132 +1292,144 @@ WRITE8_MEMBER(cave_state::oki2_bank_w)
}
-ADDRESS_MAP_START(cave_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki1_banklo")
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1_bankhi")
-ADDRESS_MAP_END
+void cave_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).bankr("oki1_banklo");
+ map(0x20000, 0x3ffff).bankr("oki1_bankhi");
+}
-ADDRESS_MAP_START(cave_state::oki2_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki2_banklo")
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2_bankhi")
-ADDRESS_MAP_END
+void cave_state::oki2_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).bankr("oki2_banklo");
+ map(0x20000, 0x3ffff).bankr("oki2_bankhi");
+}
/***************************************************************************
Hotdog Storm
***************************************************************************/
-ADDRESS_MAP_START(cave_state::hotdogst_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked)
- AM_RANGE(0xe000, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void cave_state::hotdogst_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
+ map(0xe000, 0xffff).ram(); // RAM
+}
-ADDRESS_MAP_START(cave_state::hotdogst_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x0f>) // ROM bank
- AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU
- AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) //
- AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) //
- AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295
- AM_RANGE(0x70, 0x70) AM_WRITE(oki1_bank_w<0x3>) // Samples bank
-ADDRESS_MAP_END
+void cave_state::hotdogst_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x0f>)); // ROM bank
+ map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x40, 0x40).r(this, FUNC(cave_state::soundlatch_hi_r)); //
+ map(0x50, 0x51).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
+ map(0x60, 0x60).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0x70, 0x70).w(this, FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank
+}
/***************************************************************************
Mazinger Z
***************************************************************************/
-ADDRESS_MAP_START(cave_state::mazinger_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cave_state::mazinger_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x07>) // ROM bank
- AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU
- AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU
- AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym2203_device, write) // YM2203
- AM_RANGE(0x52, 0x53) AM_DEVREAD("ymsnd", ym2203_device, read) // YM2203
- AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki1", okim6295_device, write) // M6295
- AM_RANGE(0x74, 0x74) AM_WRITE(oki1_bank_w<0x3>) // Samples bank
-ADDRESS_MAP_END
+void cave_state::mazinger_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
+ map(0xc000, 0xc7ff).ram(); // RAM
+ map(0xf800, 0xffff).ram(); // RAM
+}
+
+void cave_state::mazinger_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank
+ map(0x10, 0x10).w(this, FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
+ map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x50, 0x51).w("ymsnd", FUNC(ym2203_device::write)); // YM2203
+ map(0x52, 0x53).r("ymsnd", FUNC(ym2203_device::read)); // YM2203
+ map(0x70, 0x70).w("oki1", FUNC(okim6295_device::write)); // M6295
+ map(0x74, 0x74).w(this, FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank
+}
/***************************************************************************
Metamoqester
***************************************************************************/
-ADDRESS_MAP_START(cave_state::metmqstr_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked)
- AM_RANGE(0xe000, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cave_state::metmqstr_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x0f>) // Rom Bank
- AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication
- AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU
- AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) //
- AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
- AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_device, write) // M6295 #0
- AM_RANGE(0x70, 0x70) AM_WRITE(oki1_bank_w<0x7>) // Samples Bank #0
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_device, write) // M6295 #1
- AM_RANGE(0x90, 0x90) AM_WRITE(oki2_bank_w<0x7>) // Samples Bank #1
-ADDRESS_MAP_END
+void cave_state::metmqstr_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
+ map(0xe000, 0xffff).ram(); // RAM
+}
+
+void cave_state::metmqstr_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x0f>)); // Rom Bank
+ map(0x20, 0x20).r(this, FUNC(cave_state::soundflags_r)); // Communication
+ map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x40, 0x40).r(this, FUNC(cave_state::soundlatch_hi_r)); //
+ map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0x60, 0x60).w("oki1", FUNC(okim6295_device::write)); // M6295 #0
+ map(0x70, 0x70).w(this, FUNC(cave_state::oki1_bank_w<0x7>)); // Samples Bank #0
+ map(0x80, 0x80).w("oki2", FUNC(okim6295_device::write)); // M6295 #1
+ map(0x90, 0x90).w(this, FUNC(cave_state::oki2_bank_w<0x7>)); // Samples Bank #1
+}
/***************************************************************************
Power Instinct 2
***************************************************************************/
-ADDRESS_MAP_START(cave_state::pwrinst2_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") // ROM (Banked)
- AM_RANGE(0xe000, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cave_state::pwrinst2_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295
- AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("oki2", okim6295_device, read, write) //
- AM_RANGE(0x10, 0x17) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) // Samples bank
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) //
- AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w) // To Main CPU
+void cave_state::pwrinst2_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("z80bank"); // ROM (Banked)
+ map(0xe000, 0xffff).ram(); // RAM
+}
+
+void cave_state::pwrinst2_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+ map(0x08, 0x08).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+ map(0x10, 0x17).w("nmk112", FUNC(nmk112_device::okibank_w)); // Samples bank
+ map(0x40, 0x41).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
+ map(0x50, 0x50).w(this, FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
// AM_RANGE(0x51, 0x51) AM_WRITENOP // ?? volume
- AM_RANGE(0x80, 0x80) AM_WRITE(z80_rombank_w<0x07>) // ROM bank
- AM_RANGE(0x60, 0x60) AM_READ(soundlatch_hi_r) // From Main CPU
- AM_RANGE(0x70, 0x70) AM_READ(soundlatch_lo_r) //
-ADDRESS_MAP_END
+ map(0x80, 0x80).w(this, FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank
+ map(0x60, 0x60).r(this, FUNC(cave_state::soundlatch_hi_r)); // From Main CPU
+ map(0x70, 0x70).r(this, FUNC(cave_state::soundlatch_lo_r)); //
+}
/***************************************************************************
Sailor Moon
***************************************************************************/
-ADDRESS_MAP_START(cave_state::sailormn_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked)
- AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_RAM // RAM (8KB, mirrored)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cave_state::sailormn_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x1f>) // Rom Bank
- AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU
- AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication
- AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU
- AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) //
- AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
- AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 #0
- AM_RANGE(0x70, 0x70) AM_WRITE(oki1_bank_w<0xf>) // Samples Bank #0
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_device, read, write) // M6295 #1
- AM_RANGE(0xc0, 0xc0) AM_WRITE(oki2_bank_w<0xf>) // Samples Bank #1
-ADDRESS_MAP_END
+void cave_state::sailormn_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked)
+ map(0xc000, 0xdfff).mirror(0x2000).ram(); // RAM (8KB, mirrored)
+}
+
+void cave_state::sailormn_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x1f>)); // Rom Bank
+ map(0x10, 0x10).w(this, FUNC(cave_state::soundlatch_ack_w)); // To Main CPU
+ map(0x20, 0x20).r(this, FUNC(cave_state::soundflags_r)); // Communication
+ map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU
+ map(0x40, 0x40).r(this, FUNC(cave_state::soundlatch_hi_r)); //
+ map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0x60, 0x60).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 #0
+ map(0x70, 0x70).w(this, FUNC(cave_state::oki1_bank_w<0xf>)); // Samples Bank #0
+ map(0x80, 0x80).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 #1
+ map(0xc0, 0xc0).w(this, FUNC(cave_state::oki2_bank_w<0xf>)); // Samples Bank #1
+}
diff --git a/src/mame/drivers/cavepc.cpp b/src/mame/drivers/cavepc.cpp
index 6b949de72df..9487b15739f 100644
--- a/src/mame/drivers/cavepc.cpp
+++ b/src/mame/drivers/cavepc.cpp
@@ -86,13 +86,15 @@ uint32_t cavepc_state::screen_update_cavepc(screen_device &screen, bitmap_ind16
/*****************************************************************************/
-ADDRESS_MAP_START(cavepc_state::cavepc_map)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
+void cavepc_state::cavepc_map(address_map &map)
+{
+ map(0x000f0000, 0x000fffff).bankr("bank1");
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
-ADDRESS_MAP_START(cavepc_state::cavepc_io)
-ADDRESS_MAP_END
+void cavepc_state::cavepc_io(address_map &map)
+{
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/cb2001.cpp b/src/mame/drivers/cb2001.cpp
index b78051a9ad1..54fe316ce5c 100644
--- a/src/mame/drivers/cb2001.cpp
+++ b/src/mame/drivers/cb2001.cpp
@@ -569,23 +569,25 @@ WRITE16_MEMBER(cb2001_state::cb2001_bg_w)
}
-ADDRESS_MAP_START(cb2001_state::cb2001_map)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0x20000, 0x20fff) AM_RAM AM_SHARE("vrafg")
- AM_RANGE(0x21000, 0x21fff) AM_RAM_WRITE(cb2001_bg_w) AM_SHARE("vrabg")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cb2001_state::cb2001_io)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0xffff) /* Input Ports */
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0xffff) /* DIP switches */
- AM_RANGE(0x20, 0x21) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0xff00)
- AM_RANGE(0x22, 0x23) AM_DEVWRITE8("aysnd", ay8910_device, data_address_w, 0xffff)
-
- AM_RANGE(0x30, 0x31) AM_READ8(irq_ack_r, 0x00ff)
- AM_RANGE(0x30, 0x31) AM_WRITE(cb2001_vidctrl_w)
- AM_RANGE(0x32, 0x33) AM_WRITE(cb2001_vidctrl2_w)
-ADDRESS_MAP_END
+void cb2001_state::cb2001_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).ram();
+ map(0x20000, 0x20fff).ram().share("vrafg");
+ map(0x21000, 0x21fff).ram().w(this, FUNC(cb2001_state::cb2001_bg_w)).share("vrabg");
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void cb2001_state::cb2001_io(address_map &map)
+{
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */
+ map(0x21, 0x21).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x22, 0x23).w("aysnd", FUNC(ay8910_device::data_address_w));
+
+ map(0x30, 0x30).r(this, FUNC(cb2001_state::irq_ack_r));
+ map(0x30, 0x31).w(this, FUNC(cb2001_state::cb2001_vidctrl_w));
+ map(0x32, 0x33).w(this, FUNC(cb2001_state::cb2001_vidctrl2_w));
+}
static INPUT_PORTS_START( cb2001 )
PORT_START("IN0")
diff --git a/src/mame/drivers/cball.cpp b/src/mame/drivers/cball.cpp
index 291bcb8c973..b9f3cab512d 100644
--- a/src/mame/drivers/cball.cpp
+++ b/src/mame/drivers/cball.cpp
@@ -162,31 +162,32 @@ WRITE8_MEMBER(cball_state::wram_w)
-ADDRESS_MAP_START(cball_state::cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
-
- AM_RANGE(0x0000, 0x03ff) AM_READ(wram_r) AM_MASK(0x7f)
- AM_RANGE(0x0400, 0x07ff) AM_READONLY
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("1001")
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("1003")
- AM_RANGE(0x1020, 0x1020) AM_READ_PORT("1020")
- AM_RANGE(0x1040, 0x1040) AM_READ_PORT("1040")
- AM_RANGE(0x1060, 0x1060) AM_READ_PORT("1060")
- AM_RANGE(0x2000, 0x2001) AM_NOP
- AM_RANGE(0x2800, 0x2800) AM_READ_PORT("2800")
-
- AM_RANGE(0x0000, 0x03ff) AM_WRITE(wram_w) AM_MASK(0x7f)
- AM_RANGE(0x0400, 0x07ff) AM_WRITE(vram_w) AM_SHARE("video_ram")
- AM_RANGE(0x1800, 0x1800) AM_NOP /* watchdog? */
- AM_RANGE(0x1810, 0x1811) AM_NOP
- AM_RANGE(0x1820, 0x1821) AM_NOP
- AM_RANGE(0x1830, 0x1831) AM_NOP
- AM_RANGE(0x1840, 0x1841) AM_NOP
- AM_RANGE(0x1850, 0x1851) AM_NOP
- AM_RANGE(0x1870, 0x1871) AM_NOP
-
- AM_RANGE(0x7000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void cball_state::cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+
+ map(0x0000, 0x03ff).r(this, FUNC(cball_state::wram_r)).mask(0x7f);
+ map(0x0400, 0x07ff).readonly();
+ map(0x1001, 0x1001).portr("1001");
+ map(0x1003, 0x1003).portr("1003");
+ map(0x1020, 0x1020).portr("1020");
+ map(0x1040, 0x1040).portr("1040");
+ map(0x1060, 0x1060).portr("1060");
+ map(0x2000, 0x2001).noprw();
+ map(0x2800, 0x2800).portr("2800");
+
+ map(0x0000, 0x03ff).w(this, FUNC(cball_state::wram_w)).mask(0x7f);
+ map(0x0400, 0x07ff).w(this, FUNC(cball_state::vram_w)).share("video_ram");
+ map(0x1800, 0x1800).noprw(); /* watchdog? */
+ map(0x1810, 0x1811).noprw();
+ map(0x1820, 0x1821).noprw();
+ map(0x1830, 0x1831).noprw();
+ map(0x1840, 0x1841).noprw();
+ map(0x1850, 0x1851).noprw();
+ map(0x1870, 0x1871).noprw();
+
+ map(0x7000, 0x7fff).rom();
+}
static INPUT_PORTS_START( cball )
diff --git a/src/mame/drivers/cbasebal.cpp b/src/mame/drivers/cbasebal.cpp
index 5a938159ed5..7efbe941721 100644
--- a/src/mame/drivers/cbasebal.cpp
+++ b/src/mame/drivers/cbasebal.cpp
@@ -94,35 +94,38 @@ WRITE8_MEMBER(cbasebal_state::cbasebal_coinctrl_w)
*
*************************************/
-ADDRESS_MAP_START(cbasebal_state::cbasebal_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("palette") /* palette + vram + scrollram */
- AM_RANGE(0xe000, 0xfdff) AM_RAM /* work RAM */
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cbasebal_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cbasebal_state::cbasebal_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(cbasebal_bankswitch_w)
- AM_RANGE(0x01, 0x01) AM_WRITE_PORT("IO_01")
- AM_RANGE(0x02, 0x02) AM_WRITE_PORT("IO_02")
- AM_RANGE(0x03, 0x03) AM_WRITE_PORT("IO_03")
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0x06, 0x07) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x08, 0x09) AM_WRITE(cbasebal_scrollx_w)
- AM_RANGE(0x0a, 0x0b) AM_WRITE(cbasebal_scrolly_w)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("P1")
- AM_RANGE(0x11, 0x11) AM_READ_PORT("P2")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x13, 0x13) AM_WRITE(cbasebal_gfxctrl_w)
- AM_RANGE(0x14, 0x14) AM_WRITE(cbasebal_coinctrl_w)
-ADDRESS_MAP_END
+void cbasebal_state::cbasebal_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).rw(this, FUNC(cbasebal_state::bankedram_r), FUNC(cbasebal_state::bankedram_w)).share("palette"); /* palette + vram + scrollram */
+ map(0xe000, 0xfdff).ram(); /* work RAM */
+ map(0xfe00, 0xffff).ram().share("spriteram");
+}
+
+void cbasebal_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+}
+
+void cbasebal_state::cbasebal_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cbasebal_state::cbasebal_bankswitch_w));
+ map(0x01, 0x01).portw("IO_01");
+ map(0x02, 0x02).portw("IO_02");
+ map(0x03, 0x03).portw("IO_03");
+ map(0x05, 0x05).w("oki", FUNC(okim6295_device::write));
+ map(0x06, 0x07).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x08, 0x09).w(this, FUNC(cbasebal_state::cbasebal_scrollx_w));
+ map(0x0a, 0x0b).w(this, FUNC(cbasebal_state::cbasebal_scrolly_w));
+ map(0x10, 0x10).portr("P1");
+ map(0x11, 0x11).portr("P2");
+ map(0x12, 0x12).portr("SYSTEM");
+ map(0x13, 0x13).w(this, FUNC(cbasebal_state::cbasebal_gfxctrl_w));
+ map(0x14, 0x14).w(this, FUNC(cbasebal_state::cbasebal_coinctrl_w));
+}
/*************************************
diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp
index 01477c9d635..9b228d76d37 100644
--- a/src/mame/drivers/cbm2.cpp
+++ b/src/mame/drivers/cbm2.cpp
@@ -1157,9 +1157,10 @@ READ8_MEMBER( p500_state::vic_colorram_r )
// ADDRESS_MAP( cbm2_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(cbm2_state::cbm2_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void cbm2_state::cbm2_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(cbm2_state::read), FUNC(cbm2_state::write));
+}
//-------------------------------------------------
@@ -1187,27 +1188,30 @@ ADDRESS_MAP_END
// ADDRESS_MAP( p500_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(p500_state::p500_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void p500_state::p500_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(p500_state::read), FUNC(p500_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(p500_state::vic_videoram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r)
-ADDRESS_MAP_END
+void p500_state::vic_videoram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(p500_state::vic_videoram_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_colorram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(p500_state::vic_colorram_map)
- AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r)
-ADDRESS_MAP_END
+void p500_state::vic_colorram_map(address_map &map)
+{
+ map(0x000, 0x3ff).r(this, FUNC(p500_state::vic_colorram_r));
+}
diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp
index 14432deceb3..a06c445d4e2 100644
--- a/src/mame/drivers/cbuster.cpp
+++ b/src/mame/drivers/cbuster.cpp
@@ -42,7 +42,6 @@
#include "includes/cbuster.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "sound/2203intf.h"
#include "sound/ym2151.h"
#include "sound/okim6295.h"
@@ -126,43 +125,45 @@ READ16_MEMBER(cbuster_state::twocrude_control_r)
/******************************************************************************/
-ADDRESS_MAP_START(cbuster_state::twocrude_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
-
- AM_RANGE(0x0a0000, 0x0a1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x0a2000, 0x0a2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x0a4000, 0x0a47ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x0a6000, 0x0a67ff) AM_RAM AM_SHARE("pf2_rowscroll")
-
- AM_RANGE(0x0a8000, 0x0a8fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x0aa000, 0x0aafff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x0ac000, 0x0ac7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x0ae000, 0x0ae7ff) AM_RAM AM_SHARE("pf4_rowscroll")
-
- AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0b4000, 0x0b4001) AM_WRITENOP
- AM_RANGE(0x0b5000, 0x0b500f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x0b6000, 0x0b600f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
- AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM_WRITE(cbuster_palette_w) AM_SHARE("palette")
- AM_RANGE(0x0b9000, 0x0b9fff) AM_RAM_WRITE(cbuster_palette_ext_w) AM_SHARE("palette_ext")
- AM_RANGE(0x0bc000, 0x0bc00f) AM_READWRITE(twocrude_control_r, twocrude_control_w)
-ADDRESS_MAP_END
+void cbuster_state::twocrude_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).ram();
+
+ map(0x0a0000, 0x0a1fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x0a2000, 0x0a2fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x0a4000, 0x0a47ff).ram().share("pf1_rowscroll");
+ map(0x0a6000, 0x0a67ff).ram().share("pf2_rowscroll");
+
+ map(0x0a8000, 0x0a8fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x0aa000, 0x0aafff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x0ac000, 0x0ac7ff).ram().share("pf3_rowscroll");
+ map(0x0ae000, 0x0ae7ff).ram().share("pf4_rowscroll");
+
+ map(0x0b0000, 0x0b07ff).ram().share("spriteram");
+ map(0x0b4000, 0x0b4001).nopw();
+ map(0x0b5000, 0x0b500f).w("tilegen1", FUNC(deco16ic_device::pf_control_w));
+ map(0x0b6000, 0x0b600f).w("tilegen2", FUNC(deco16ic_device::pf_control_w));
+ map(0x0b8000, 0x0b8fff).ram().w(this, FUNC(cbuster_state::cbuster_palette_w)).share("palette");
+ map(0x0b9000, 0x0b9fff).ram().w(this, FUNC(cbuster_state::cbuster_palette_ext_w)).share("palette_ext");
+ map(0x0bc000, 0x0bc00f).rw(this, FUNC(cbuster_state::twocrude_control_r), FUNC(cbuster_state::twocrude_control_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(cbuster_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void cbuster_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).ram();
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp
index ac580afd735..bcdf399b15b 100644
--- a/src/mame/drivers/cc40.cpp
+++ b/src/mame/drivers/cc40.cpp
@@ -363,25 +363,26 @@ WRITE8_MEMBER(cc40_state::keyboard_w)
m_key_select = data;
}
-ADDRESS_MAP_START(cc40_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
-
- AM_RANGE(0x0110, 0x0110) AM_READWRITE(bus_control_r, bus_control_w)
- AM_RANGE(0x0111, 0x0111) AM_WRITE(power_w)
- AM_RANGE(0x0112, 0x0112) AM_NOP // d0-d3: Hexbus data
- AM_RANGE(0x0113, 0x0113) AM_NOP // d0: Hexbus available
- AM_RANGE(0x0114, 0x0114) AM_NOP // d0,d1: Hexbus handshake
- AM_RANGE(0x0115, 0x0115) AM_DEVWRITE("dac", dac_bit_interface, write) // d0: piezo control
- AM_RANGE(0x0116, 0x0116) AM_READ(battery_r)
- AM_RANGE(0x0119, 0x0119) AM_READWRITE(bankswitch_r, bankswitch_w)
- AM_RANGE(0x011a, 0x011a) AM_READWRITE(clock_control_r, clock_control_w)
- AM_RANGE(0x011e, 0x011f) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
-
- AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("sysram.0")
- AM_RANGE(0x1000, 0x4fff) AM_READWRITE(sysram_r, sysram_w)
- AM_RANGE(0x5000, 0xcfff) AM_ROMBANK("cartbank")
- AM_RANGE(0xd000, 0xefff) AM_ROMBANK("sysbank")
-ADDRESS_MAP_END
+void cc40_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+
+ map(0x0110, 0x0110).rw(this, FUNC(cc40_state::bus_control_r), FUNC(cc40_state::bus_control_w));
+ map(0x0111, 0x0111).w(this, FUNC(cc40_state::power_w));
+ map(0x0112, 0x0112).noprw(); // d0-d3: Hexbus data
+ map(0x0113, 0x0113).noprw(); // d0: Hexbus available
+ map(0x0114, 0x0114).noprw(); // d0,d1: Hexbus handshake
+ map(0x0115, 0x0115).w("dac", FUNC(dac_bit_interface::write)); // d0: piezo control
+ map(0x0116, 0x0116).r(this, FUNC(cc40_state::battery_r));
+ map(0x0119, 0x0119).rw(this, FUNC(cc40_state::bankswitch_r), FUNC(cc40_state::bankswitch_w));
+ map(0x011a, 0x011a).rw(this, FUNC(cc40_state::clock_control_r), FUNC(cc40_state::clock_control_w));
+ map(0x011e, 0x011f).rw("hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write));
+
+ map(0x0800, 0x0fff).ram().share("sysram.0");
+ map(0x1000, 0x4fff).rw(this, FUNC(cc40_state::sysram_r), FUNC(cc40_state::sysram_w));
+ map(0x5000, 0xcfff).bankr("cartbank");
+ map(0xd000, 0xefff).bankr("sysbank");
+}
diff --git a/src/mame/drivers/ccastles.cpp b/src/mame/drivers/ccastles.cpp
index 00a4f60e582..671bd0c52d2 100644
--- a/src/mame/drivers/ccastles.cpp
+++ b/src/mame/drivers/ccastles.cpp
@@ -321,31 +321,32 @@ WRITE8_MEMBER(ccastles_state::nvram_w)
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(ccastles_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_RAM_WRITE(ccastles_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0000, 0x0001) AM_WRITE(ccastles_bitmode_addr_w)
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ccastles_bitmode_r, ccastles_bitmode_w)
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x8e00, 0x8fff) AM_SHARE("spriteram")
- AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0300) AM_READWRITE(nvram_r, nvram_w)
- AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x01fc) AM_READ(leta_r)
- AM_RANGE(0x9600, 0x97ff) AM_READ_PORT("IN0")
- AM_RANGE(0x9800, 0x980f) AM_MIRROR(0x01f0) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x9a00, 0x9a0f) AM_MIRROR(0x01f0) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x9c00, 0x9c7f) AM_WRITE(nvram_recall_w)
- AM_RANGE(0x9c80, 0x9cff) AM_WRITE(ccastles_hscroll_w)
- AM_RANGE(0x9d00, 0x9d7f) AM_WRITE(ccastles_vscroll_w)
- AM_RANGE(0x9d80, 0x9dff) AM_WRITE(irq_ack_w)
- AM_RANGE(0x9e00, 0x9e7f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9e80, 0x9e81) AM_MIRROR(0x0078) AM_WRITE(led_w)
- AM_RANGE(0x9e82, 0x9e83) AM_MIRROR(0x0078) AM_WRITE(nvram_store_w)
- AM_RANGE(0x9e85, 0x9e86) AM_MIRROR(0x0078) AM_WRITE(ccounter_w)
- AM_RANGE(0x9e87, 0x9e87) AM_MIRROR(0x0078) AM_WRITE(bankswitch_w)
- AM_RANGE(0x9f00, 0x9f07) AM_MIRROR(0x0078) AM_WRITE(ccastles_video_control_w)
- AM_RANGE(0x9f80, 0x9fbf) AM_MIRROR(0x0040) AM_WRITE(ccastles_paletteram_w)
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ccastles_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).ram().w(this, FUNC(ccastles_state::ccastles_videoram_w)).share("videoram");
+ map(0x0000, 0x0001).w(this, FUNC(ccastles_state::ccastles_bitmode_addr_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ccastles_state::ccastles_bitmode_r), FUNC(ccastles_state::ccastles_bitmode_w));
+ map(0x8000, 0x8fff).ram();
+ map(0x8e00, 0x8fff).share("spriteram");
+ map(0x9000, 0x90ff).mirror(0x0300).rw(this, FUNC(ccastles_state::nvram_r), FUNC(ccastles_state::nvram_w));
+ map(0x9400, 0x9403).mirror(0x01fc).r(this, FUNC(ccastles_state::leta_r));
+ map(0x9600, 0x97ff).portr("IN0");
+ map(0x9800, 0x980f).mirror(0x01f0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x9a00, 0x9a0f).mirror(0x01f0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x9c00, 0x9c7f).w(this, FUNC(ccastles_state::nvram_recall_w));
+ map(0x9c80, 0x9cff).w(this, FUNC(ccastles_state::ccastles_hscroll_w));
+ map(0x9d00, 0x9d7f).w(this, FUNC(ccastles_state::ccastles_vscroll_w));
+ map(0x9d80, 0x9dff).w(this, FUNC(ccastles_state::irq_ack_w));
+ map(0x9e00, 0x9e7f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x9e80, 0x9e81).mirror(0x0078).w(this, FUNC(ccastles_state::led_w));
+ map(0x9e82, 0x9e83).mirror(0x0078).w(this, FUNC(ccastles_state::nvram_store_w));
+ map(0x9e85, 0x9e86).mirror(0x0078).w(this, FUNC(ccastles_state::ccounter_w));
+ map(0x9e87, 0x9e87).mirror(0x0078).w(this, FUNC(ccastles_state::bankswitch_w));
+ map(0x9f00, 0x9f07).mirror(0x0078).w(this, FUNC(ccastles_state::ccastles_video_control_w));
+ map(0x9f80, 0x9fbf).mirror(0x0040).w(this, FUNC(ccastles_state::ccastles_paletteram_w));
+ map(0xa000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/cchance.cpp b/src/mame/drivers/cchance.cpp
index 35bcb452c7b..103c038a425 100644
--- a/src/mame/drivers/cchance.cpp
+++ b/src/mame/drivers/cchance.cpp
@@ -82,24 +82,25 @@ WRITE8_MEMBER(cchance_state::output_1_w)
m_bell_io = (data & 0x80)>>4;
}
-ADDRESS_MAP_START(cchance_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void cchance_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
- AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
+ map(0xa000, 0xafff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0xb000, 0xbfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
- AM_RANGE(0xc000, 0xdfff) AM_RAM
+ map(0xc000, 0xdfff).ram();
- AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xe300, 0xe303) AM_RAM AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */
+ map(0xe000, 0xe2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xe300, 0xe303).ram().mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */
+ map(0xe800, 0xe800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */
- AM_RANGE(0xf000, 0xf000) AM_READNOP AM_WRITENOP //???
- AM_RANGE(0xf001, 0xf001) AM_READ(input_1_r) AM_WRITE(output_0_w)
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN0") AM_WRITE(output_1_w)
- AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xf801, 0xf801) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+ map(0xf000, 0xf000).nopr().nopw(); //???
+ map(0xf001, 0xf001).r(this, FUNC(cchance_state::input_1_r)).w(this, FUNC(cchance_state::output_0_w));
+ map(0xf002, 0xf002).portr("IN0").w(this, FUNC(cchance_state::output_1_w));
+ map(0xf800, 0xf801).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xf801, 0xf801).r("aysnd", FUNC(ay8910_device::data_r));
+}
static INPUT_PORTS_START( cchance )
diff --git a/src/mame/drivers/cchasm.cpp b/src/mame/drivers/cchasm.cpp
index 92fb09db52e..da6f86d35f0 100644
--- a/src/mame/drivers/cchasm.cpp
+++ b/src/mame/drivers/cchasm.cpp
@@ -35,15 +35,16 @@
*
*************************************/
-ADDRESS_MAP_START(cchasm_state::memmap)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x04000f) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0xff)
- AM_RANGE(0x050000, 0x050001) AM_WRITE(refresh_control_w)
- AM_RANGE(0x060000, 0x060001) AM_READ_PORT("DSW") AM_WRITE(led_w)
- AM_RANGE(0x070000, 0x070001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xf80000, 0xf800ff) AM_READWRITE(io_r,io_w)
- AM_RANGE(0xffb000, 0xffffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+void cchasm_state::memmap(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x04000f).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0x050000, 0x050001).w(this, FUNC(cchasm_state::refresh_control_w));
+ map(0x060000, 0x060001).portr("DSW").w(this, FUNC(cchasm_state::led_w));
+ map(0x070000, 0x070001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xf80000, 0xf800ff).rw(this, FUNC(cchasm_state::io_r), FUNC(cchasm_state::io_w));
+ map(0xffb000, 0xffffff).ram().share("ram");
+}
/*************************************
*
@@ -51,25 +52,27 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cchasm_state::sound_memmap)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM
- AM_RANGE(0x6000, 0x6001) AM_MIRROR(0xf9e) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0xf9e) AM_READ(coin_sound_r)
- AM_RANGE(0x6001, 0x6001) AM_MIRROR(0xf9e) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x6020, 0x6021) AM_MIRROR(0xf9e) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x6021, 0x6021) AM_MIRROR(0xf9e) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x6040, 0x6040) AM_MIRROR(0xf9e) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
- AM_RANGE(0x6041, 0x6041) AM_MIRROR(0xf9e) AM_READWRITE(soundlatch2_r, soundlatch4_w)
- AM_RANGE(0x6061, 0x6061) AM_MIRROR(0xf9e) AM_WRITE(reset_coin_flag_w)
- AM_RANGE(0x7041, 0x7041) AM_NOP // TODO
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cchasm_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void cchasm_state::sound_memmap(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x5000, 0x53ff).ram();
+ map(0x6000, 0x6001).mirror(0xf9e).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6000).mirror(0xf9e).r(this, FUNC(cchasm_state::coin_sound_r));
+ map(0x6001, 0x6001).mirror(0xf9e).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x6020, 0x6021).mirror(0xf9e).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x6021, 0x6021).mirror(0xf9e).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x6040, 0x6040).mirror(0xf9e).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch3, FUNC(generic_latch_8_device::write));
+ map(0x6041, 0x6041).mirror(0xf9e).rw(this, FUNC(cchasm_state::soundlatch2_r), FUNC(cchasm_state::soundlatch4_w));
+ map(0x6061, 0x6061).mirror(0xf9e).w(this, FUNC(cchasm_state::reset_coin_flag_w));
+ map(0x7041, 0x7041).noprw(); // TODO
+}
+
+void cchasm_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/*************************************
*
diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp
index d4fa10c5a57..bb95ef3bc7d 100644
--- a/src/mame/drivers/cclimber.cpp
+++ b/src/mame/drivers/cclimber.cpp
@@ -321,186 +321,202 @@ READ8_MEMBER(cclimber_state::bagmanf_a000_r)
/* Note that River Patrol reads/writes to a000-a4f0. This is a bug in the code.
The instruction at 0x0593 should say LD DE,$8000 */
-ADDRESS_MAP_START(cclimber_state::cclimber_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
+void cclimber_state::cclimber_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram(); /* Crazy Kong only */
+ map(0x8000, 0x83ff).ram();
+ map(0x8800, 0x88ff).ram().share("bigspriteram");
+ map(0x8900, 0x8bff).ram(); /* not used, but initialized */
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::cannonb_map)
- AM_RANGE(0x5045, 0x505f) AM_WRITENOP /* do not errorlog this */
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_READNOP AM_WRITEONLY AM_SHARE("bigspriteram") /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
+ map(0x9800, 0x9bff).ram(); /* not used, but initialized */
+ map(0x9800, 0x981f).ram().share("column_scroll");
+ map(0x9880, 0x989f).ram().share("spriteram");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).portr("SYSTEM");
+}
+
+void cclimber_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().share("decrypted_opcodes");
+}
+
+void cclimber_state::cannonb_map(address_map &map)
+{
+ map(0x5045, 0x505f).nopw(); /* do not errorlog this */
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram();
+ map(0x8000, 0x83ff).ram();
+ map(0x8800, 0x88ff).nopr().writeonly().share("bigspriteram"); /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
// AM_RANGE(0x8900, 0x8bff) AM_WRITEONLY /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::swimmer_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x98fc, 0x98ff) AM_WRITEONLY AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1") AM_WRITE(swimmer_sh_soundlatch_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("bgcolor")
- AM_RANGE(0xb880, 0xb880) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::guzzler_map)
- AM_IMPORT_FROM(swimmer_map)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* ??? used by Guzzler */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* Guzzler only */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x7fff) AM_ROM
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
+ map(0x9800, 0x9bff).ram(); /* not used, but initialized */
+ map(0x9800, 0x981f).ram().share("column_scroll");
+ map(0x9880, 0x989f).ram().share("spriteram");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).portr("SYSTEM");
+}
+
+void cclimber_state::swimmer_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x88ff).mirror(0x0100).ram().share("bigspriteram");
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
+ map(0x9800, 0x981f).writeonly().share("column_scroll");
+ map(0x9880, 0x989f).writeonly().share("spriteram");
+ map(0x98fc, 0x98ff).writeonly().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P2");
+ map(0xa800, 0xa800).portr("P1").w(this, FUNC(cclimber_state::swimmer_sh_soundlatch_w));
+ map(0xb000, 0xb000).portr("DSW1");
+ map(0xb800, 0xb800).portr("DSW2").writeonly().share("bgcolor");
+ map(0xb880, 0xb880).portr("SYSTEM");
+}
+
+void cclimber_state::guzzler_map(address_map &map)
+{
+ swimmer_map(map);
+ map(0xc000, 0xc7ff).ram(); /* ??? used by Guzzler */
+ map(0xe000, 0xffff).rom(); /* Guzzler only */
+}
+
+void cclimber_state::yamato_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).rom();
+ map(0x8800, 0x88ff).ram().share("bigspriteram");
+ map(0x8900, 0x8bff).ram(); /* not used, but initialized */
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("COIN")
- AM_RANGE(0xba00, 0xba00) AM_READ_PORT("START") /* maybe a mirror of b800 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::toprollr_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x6bff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_SHARE("bg_videoram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM AM_SHARE("bg_coloram")
- AM_RANGE(0x9800, 0x987f) AM_RAM /* unused ? */
- AM_RANGE(0x9880, 0x995f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x99dc, 0x99df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::bagmanf_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P1")
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram") // wrong
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("P2")
- AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xffe0, 0xffff) AM_RAM AM_SHARE("column_scroll") // wrong, is this area even connected?
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9800, 0x9800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl") // wrong
- AM_RANGE(0x9c00, 0x9fff) AM_RAM /* not used, but initialized */
- AM_RANGE(0xa000, 0xa000) AM_READ(bagmanf_a000_r)
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa800, 0xa800) AM_READNOP AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READNOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::toprollr_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1d")
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0xc000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::cclimber_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("cclimber_audio:aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("cclimber_audio:aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(yamato_p0_w) /* ??? */
- AM_RANGE(0x01, 0x01) AM_WRITE(yamato_p1_w) /* ??? */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cclimber_state::swimmer_audio_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x4001) AM_RAM /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cclimber_state::swimmer_audio_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_audio_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x04, 0x04) AM_READ(yamato_p0_r) /* ??? */
- AM_RANGE(0x08, 0x08) AM_READ(yamato_p1_r) /* ??? */
-ADDRESS_MAP_END
+ map(0x9800, 0x9bff).ram(); /* not used, but initialized */
+ map(0x9800, 0x981f).ram().share("column_scroll");
+ map(0x9880, 0x989f).ram().share("spriteram");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb800, 0xb800).portr("COIN");
+ map(0xba00, 0xba00).portr("START"); /* maybe a mirror of b800 */
+}
+
+void cclimber_state::yamato_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+void cclimber_state::toprollr_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("bank1");
+ map(0x6000, 0x6bff).ram().share("ram");
+ map(0x8800, 0x88ff).ram().share("bigspriteram");
+ map(0x8c00, 0x8fff).ram().share("bg_videoram");
+ map(0x9000, 0x93ff).ram().share("videoram");
+ map(0x9400, 0x97ff).ram().share("bg_coloram");
+ map(0x9800, 0x987f).ram(); /* unused ? */
+ map(0x9880, 0x995f).ram().share("spriteram");
+ map(0x99dc, 0x99df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).portr("SYSTEM");
+ map(0xc000, 0xffff).rom();
+}
+
+void cclimber_state::bagmanf_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram(); /* Crazy Kong only */
+ map(0x8000, 0x8000).portr("P1");
+ map(0x8800, 0x88ff).ram().share("bigspriteram"); // wrong
+ map(0x8800, 0x8800).portr("P2");
+ map(0x8900, 0x8bff).ram(); /* not used, but initialized */
+ map(0x9000, 0x93ff).ram().share("videoram");
+ map(0xffe0, 0xffff).ram().share("column_scroll"); // wrong, is this area even connected?
+ map(0x9800, 0x9bff).ram().share("colorram");
+ map(0x9800, 0x981f).ram().share("spriteram");
+ map(0x9800, 0x9800).portr("SYSTEM");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl"); // wrong
+ map(0x9c00, 0x9fff).ram(); /* not used, but initialized */
+ map(0xa000, 0xa000).r(this, FUNC(cclimber_state::bagmanf_a000_r));
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa800, 0xa800).nopr().w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).nopr();
+}
+
+void cclimber_state::toprollr_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("bank1d");
+ map(0xc000, 0xffff).rom().region("maincpu", 0xc000);
+}
+
+void cclimber_state::cclimber_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x09).w("cclimber_audio:aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x0c, 0x0c).r("cclimber_audio:aysnd", FUNC(ay8910_device::data_r));
+}
+
+void cclimber_state::yamato_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cclimber_state::yamato_p0_w)); /* ??? */
+ map(0x01, 0x01).w(this, FUNC(cclimber_state::yamato_p1_w)); /* ??? */
+}
+
+
+void cclimber_state::swimmer_audio_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x4001).ram(); /* ??? */
+}
+
+void cclimber_state::yamato_audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x5000, 0x53ff).ram();
+}
+
+
+void cclimber_state::swimmer_audio_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x80, 0x81).w("ay2", FUNC(ay8910_device::data_address_w));
+}
+
+void cclimber_state::yamato_audio_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x04, 0x04).r(this, FUNC(cclimber_state::yamato_p0_r)); /* ??? */
+ map(0x08, 0x08).r(this, FUNC(cclimber_state::yamato_p1_r)); /* ??? */
+}
static INPUT_PORTS_START( cclimber )
diff --git a/src/mame/drivers/ccs2810.cpp b/src/mame/drivers/ccs2810.cpp
index e3d6fe90ad6..2bf39f94ca7 100644
--- a/src/mame/drivers/ccs2810.cpp
+++ b/src/mame/drivers/ccs2810.cpp
@@ -178,21 +178,24 @@ WRITE8_MEMBER(ccs_state::io_write)
m_ins8250->ins8250_w(space, offset & 7, data);
}
-ADDRESS_MAP_START(ccs_state::ccs2810_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(memory_read, memory_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ccs_state::ccs2810_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_read, io_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ccs_state::ccs2422_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_read, io_write)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0xff00) AM_READWRITE(port04_r,port04_w)
- AM_RANGE(0x30, 0x33) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", mb8877_device, read, write)
- AM_RANGE(0x34, 0x34) AM_MIRROR(0xff00) AM_READWRITE(port34_r,port34_w)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(port40_w)
-ADDRESS_MAP_END
+void ccs_state::ccs2810_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(ccs_state::memory_read), FUNC(ccs_state::memory_write));
+}
+
+void ccs_state::ccs2810_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(ccs_state::io_read), FUNC(ccs_state::io_write));
+}
+
+void ccs_state::ccs2422_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(ccs_state::io_read), FUNC(ccs_state::io_write));
+ map(0x04, 0x04).mirror(0xff00).rw(this, FUNC(ccs_state::port04_r), FUNC(ccs_state::port04_w));
+ map(0x30, 0x33).mirror(0xff00).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write));
+ map(0x34, 0x34).mirror(0xff00).rw(this, FUNC(ccs_state::port34_r), FUNC(ccs_state::port34_w));
+ map(0x40, 0x40).mirror(0xff00).w(this, FUNC(ccs_state::port40_w));
+}
/* Input ports */
static INPUT_PORTS_START( ccs2810 )
diff --git a/src/mame/drivers/ccs300.cpp b/src/mame/drivers/ccs300.cpp
index 6a7c1ee19df..a3e5dcb5ed3 100644
--- a/src/mame/drivers/ccs300.cpp
+++ b/src/mame/drivers/ccs300.cpp
@@ -47,24 +47,26 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(ccs300_state::ccs300_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ccs300_state::ccs300_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt) // init bytes seem to be for a PIO
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) // init bytes seem to be for a CTC
- AM_RANGE(0x30, 0x33) // fdc?
- AM_RANGE(0x34, 0x34) // motor control?
- AM_RANGE(0x40, 0x40) AM_WRITE(port40_w)
- AM_RANGE(0xf0, 0xf0) // unknown, long sequence of init bytes
- AM_RANGE(0xf2, 0xf2) // dip or jumper?
-ADDRESS_MAP_END
+void ccs300_state::ccs300_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0");
+ map(0x0800, 0xffff).ram();
+}
+
+void ccs300_state::ccs300_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x10, 0x13).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x14, 0x17).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // init bytes seem to be for a PIO
+ map(0x18, 0x1b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // init bytes seem to be for a CTC
+ map(0x30, 0x33); // fdc?
+ map(0x34, 0x34); // motor control?
+ map(0x40, 0x40).w(this, FUNC(ccs300_state::port40_w));
+ map(0xf0, 0xf0); // unknown, long sequence of init bytes
+ map(0xf2, 0xf2); // dip or jumper?
+}
/* Input ports */
static INPUT_PORTS_START( ccs300 )
diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp
index 47c617d1a38..c818eda1e2f 100644
--- a/src/mame/drivers/cd2650.cpp
+++ b/src/mame/drivers/cd2650.cpp
@@ -117,20 +117,23 @@ READ8_MEMBER(cd2650_state::keyin_r)
return ret;
}
-ADDRESS_MAP_START(cd2650_state::cd2650_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x1000, 0x7fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cd2650_state::cd2650_io)
- ADDRESS_MAP_UNMAP_HIGH
+void cd2650_state::cd2650_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("roms", 0);
+ map(0x1000, 0x7fff).ram().share("videoram");
+}
+
+void cd2650_state::cd2650_io(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x80, 0x84) disk i/o
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(cd2650_state::cd2650_data)
- AM_RANGE(S2650_DATA_PORT,S2650_DATA_PORT) AM_READ(keyin_r) AM_DEVWRITE("outlatch", f9334_device, write_nibble_d3)
-ADDRESS_MAP_END
+void cd2650_state::cd2650_data(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(cd2650_state::keyin_r)).w("outlatch", FUNC(f9334_device::write_nibble_d3));
+}
/* Input ports */
static INPUT_PORTS_START( cd2650 )
diff --git a/src/mame/drivers/cdc721.cpp b/src/mame/drivers/cdc721.cpp
index df10fc4cd07..590813ceed6 100644
--- a/src/mame/drivers/cdc721.cpp
+++ b/src/mame/drivers/cdc721.cpp
@@ -41,18 +41,20 @@ private:
required_shared_ptr<u8> m_p_videoram;
};
-ADDRESS_MAP_START(cdc721_state::mem_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM AM_REGION("maincpu", 0x10000)
+void cdc721_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom().region("maincpu", 0x10000);
// AM_RANGE(0x0000, 0x4fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x8000, 0xe10f) AM_RAM
- AM_RANGE(0xe110, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+ map(0x8000, 0xe10f).ram();
+ map(0xe110, 0xffff).ram().share("videoram");
+}
-ADDRESS_MAP_START(cdc721_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("crtc", tms9927_device, read, write)
+void cdc721_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x1f).rw("crtc", FUNC(tms9927_device::read), FUNC(tms9927_device::write));
// AM_RANGE(0x70, 0x70) AM_WRITE(port70_w)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( cdc721 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp
index 34cd0fdc8a5..d875373ccf0 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -67,76 +67,81 @@ static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, co
* Memory maps *
*************************/
-ADDRESS_MAP_START(cdi_state::cdimono1_mem)
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea")
- AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb")
- AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w)
+void cdi_state::cdimono1_mem(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).ram().share("planea");
+ map(0x00200000, 0x0027ffff).ram().share("planeb");
+ map(0x00300000, 0x00303bff).rw(m_cdic, FUNC(cdicdic_device::ram_r), FUNC(cdicdic_device::ram_w));
#if ENABLE_UART_PRINTING
- AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable)
+ map(0x00301400, 0x00301403).r(m_scc, FUNC(cdi68070_device::uart_loopback_enable));
#endif
- AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w)
- AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave_hle", cdislave_device, slave_r, slave_w)
- AM_RANGE(0x00318000, 0x0031ffff) AM_NOP
- AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
- AM_RANGE(0x00400000, 0x0047ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w)
- AM_RANGE(0x00500000, 0x0057ffff) AM_RAM
- AM_RANGE(0x00580000, 0x00ffffff) AM_NOP
- AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC
- AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cdi_state::cdimono2_mem)
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea")
- AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb")
+ map(0x00303c00, 0x00303fff).rw(m_cdic, FUNC(cdicdic_device::regs_r), FUNC(cdicdic_device::regs_w));
+ map(0x00310000, 0x00317fff).rw(m_slave_hle, FUNC(cdislave_device::slave_r), FUNC(cdislave_device::slave_w));
+ map(0x00318000, 0x0031ffff).noprw();
+ map(0x00320000, 0x00323fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */
+ map(0x00400000, 0x0047ffff).rom().region("maincpu", 0);
+ map(0x004fffe0, 0x004fffff).rw(m_mcd212, FUNC(mcd212_device::regs_r), FUNC(mcd212_device::regs_w));
+ map(0x00500000, 0x0057ffff).ram();
+ map(0x00580000, 0x00ffffff).noprw();
+ map(0x00e00000, 0x00efffff).ram(); // DVC
+ map(0x80000000, 0x8000807f).rw(m_scc, FUNC(cdi68070_device::periphs_r), FUNC(cdi68070_device::periphs_w));
+}
+
+void cdi_state::cdimono2_mem(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).ram().share("planea");
+ map(0x00200000, 0x0027ffff).ram().share("planeb");
#if ENABLE_UART_PRINTING
- AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable)
+ map(0x00301400, 0x00301403).r(m_scc, FUNC(cdi68070_device::uart_loopback_enable));
#endif
//AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w)
//AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w)
//AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave", cdislave_device, slave_r, slave_w)
//AM_RANGE(0x00318000, 0x0031ffff) AM_NOP
- AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
- AM_RANGE(0x00400000, 0x0047ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w)
+ map(0x00320000, 0x00323fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */
+ map(0x00400000, 0x0047ffff).rom().region("maincpu", 0);
+ map(0x004fffe0, 0x004fffff).rw(m_mcd212, FUNC(mcd212_device::regs_r), FUNC(mcd212_device::regs_w));
//AM_RANGE(0x00500000, 0x0057ffff) AM_RAM
- AM_RANGE(0x00500000, 0x00ffffff) AM_NOP
+ map(0x00500000, 0x00ffffff).noprw();
//AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC
- AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w)
-ADDRESS_MAP_END
+ map(0x80000000, 0x8000807f).rw(m_scc, FUNC(cdi68070_device::periphs_r), FUNC(cdi68070_device::periphs_w));
+}
-ADDRESS_MAP_START(cdi_state::cdi910_mem)
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea")
- AM_RANGE(0x00180000, 0x001fffff) AM_ROM AM_REGION("maincpu", 0) // boot vectors point here
+void cdi_state::cdi910_mem(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).ram().share("planea");
+ map(0x00180000, 0x001fffff).rom().region("maincpu", 0); // boot vectors point here
- AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb")
+ map(0x00200000, 0x0027ffff).ram().share("planeb");
#if ENABLE_UART_PRINTING
- AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable)
+ map(0x00301400, 0x00301403).r(m_scc, FUNC(cdi68070_device::uart_loopback_enable));
#endif
// AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w)
// AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w)
// AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave_hle", cdislave_device, slave_r, slave_w)
// AM_RANGE(0x00318000, 0x0031ffff) AM_NOP
- AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
- AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w)
+ map(0x00320000, 0x00323fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */
+ map(0x004fffe0, 0x004fffff).rw(m_mcd212, FUNC(mcd212_device::regs_r), FUNC(mcd212_device::regs_w));
// AM_RANGE(0x00500000, 0x0057ffff) AM_RAM
- AM_RANGE(0x00500000, 0x00ffffff) AM_NOP
+ map(0x00500000, 0x00ffffff).noprw();
// AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC
- AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w)
-ADDRESS_MAP_END
+ map(0x80000000, 0x8000807f).rw(m_scc, FUNC(cdi68070_device::periphs_r), FUNC(cdi68070_device::periphs_w));
+}
-ADDRESS_MAP_START(cdi_state::cdimono2_servo_mem)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(servo_io_r, servo_io_w)
- AM_RANGE(0x0050, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x1fff) AM_ROM AM_REGION("servo", 0x100)
-ADDRESS_MAP_END
+void cdi_state::cdimono2_servo_mem(address_map &map)
+{
+ map(0x0000, 0x001f).rw(this, FUNC(cdi_state::servo_io_r), FUNC(cdi_state::servo_io_w));
+ map(0x0050, 0x00ff).ram();
+ map(0x0100, 0x1fff).rom().region("servo", 0x100);
+}
-ADDRESS_MAP_START(cdi_state::cdimono2_slave_mem)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(slave_io_r, slave_io_w)
- AM_RANGE(0x0050, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x1fff) AM_ROM AM_REGION("slave", 0x100)
-ADDRESS_MAP_END
+void cdi_state::cdimono2_slave_mem(address_map &map)
+{
+ map(0x0000, 0x001f).rw(this, FUNC(cdi_state::slave_io_r), FUNC(cdi_state::slave_io_w));
+ map(0x0050, 0x00ff).ram();
+ map(0x0100, 0x1fff).rom().region("slave", 0x100);
+}
/*************************
* Input ports *
diff --git a/src/mame/drivers/cedar_magnet.cpp b/src/mame/drivers/cedar_magnet.cpp
index 1678c26247c..5fca0f13136 100644
--- a/src/mame/drivers/cedar_magnet.cpp
+++ b/src/mame/drivers/cedar_magnet.cpp
@@ -241,65 +241,70 @@ public:
***********************/
-ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_mainboard_sub_pal_map)
+void cedar_magnet_state::cedar_magnet_mainboard_sub_pal_map(address_map &map)
+{
// these are 3x MOTOROLA MM2114N SRAM 4096 bit RAM (twice the size because we map bytes, but only 4 bits are used)
// these are on the master board memory sub-board
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(palette_r_w) AM_SHARE("pal_r")
- AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(palette_g_w) AM_SHARE("pal_g")
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(palette_b_w) AM_SHARE("pal_b")
-ADDRESS_MAP_END
+ map(0x2400, 0x27ff).ram().w(this, FUNC(cedar_magnet_state::palette_r_w)).share("pal_r");
+ map(0x2800, 0x2bff).ram().w(this, FUNC(cedar_magnet_state::palette_g_w)).share("pal_g");
+ map(0x3000, 0x33ff).ram().w(this, FUNC(cedar_magnet_state::palette_b_w)).share("pal_b");
+}
-ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_mainboard_sub_ram_map)
+void cedar_magnet_state::cedar_magnet_mainboard_sub_ram_map(address_map &map)
+{
// these are 8x SIEMENS HYB 41256-15 AA - 262,144 bit DRAM (32kbytes)
// these are on the master board memory sub-board
- AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("ram0")
-ADDRESS_MAP_END
+ map(0x00000, 0x3ffff).ram().share("ram0");
+}
-ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE("bank0", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void cedar_magnet_state::cedar_magnet_map(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_bank0, FUNC(address_map_bank_device::amap8));
+}
-ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void cedar_magnet_state::cedar_magnet_io(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE(0x18, 0x18) AM_READWRITE(port18_r, port18_w)
- AM_RANGE(0x19, 0x19) AM_READWRITE(port19_r, port19_w)
- AM_RANGE(0x1a, 0x1a) AM_READ(port1a_r)
- AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w)
+ map(0x18, 0x18).rw(this, FUNC(cedar_magnet_state::port18_r), FUNC(cedar_magnet_state::port18_w));
+ map(0x19, 0x19).rw(this, FUNC(cedar_magnet_state::port19_r), FUNC(cedar_magnet_state::port19_w));
+ map(0x1a, 0x1a).r(this, FUNC(cedar_magnet_state::port1a_r));
+ map(0x1b, 0x1b).w(this, FUNC(cedar_magnet_state::port1b_w));
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("z80pio_ic48", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_ic49", z80pio_device, read_alt, write_alt)
+ map(0x20, 0x23).rw(m_ic48_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x40, 0x43).rw(m_ic49_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("flop", cedar_magnet_flop_device, read, write)
+ map(0x60, 0x63).rw("flop", FUNC(cedar_magnet_flop_device::read), FUNC(cedar_magnet_flop_device::write));
- AM_RANGE(0x64, 0x64) AM_READ_PORT("P1_IN")
- AM_RANGE(0x68, 0x68) AM_READ_PORT("P2_IN")
- AM_RANGE(0x6c, 0x6c) AM_READ_PORT("TEST")
+ map(0x64, 0x64).portr("P1_IN");
+ map(0x68, 0x68).portr("P2_IN");
+ map(0x6c, 0x6c).portr("TEST");
// banking / access controls to the sub-board memory
- AM_RANGE(0x70, 0x70) AM_WRITE(rambank_palbank_w)
- AM_RANGE(0x74, 0x74) AM_WRITE(palupload_w)
- AM_RANGE(0x78, 0x78) AM_READWRITE(watchdog_r, paladdr_w)
- AM_RANGE(0x7c, 0x7c) AM_READ(port7c_r) // protection??
+ map(0x70, 0x70).w(this, FUNC(cedar_magnet_state::rambank_palbank_w));
+ map(0x74, 0x74).w(this, FUNC(cedar_magnet_state::palupload_w));
+ map(0x78, 0x78).rw(this, FUNC(cedar_magnet_state::watchdog_r), FUNC(cedar_magnet_state::paladdr_w));
+ map(0x7c, 0x7c).r(this, FUNC(cedar_magnet_state::port7c_r)); // protection??
- AM_RANGE(0xff, 0xff) AM_DEVWRITE("cedtop", cedar_magnet_sound_device, sound_command_w)
-ADDRESS_MAP_END
+ map(0xff, 0xff).w(m_cedsound, FUNC(cedar_magnet_sound_device::sound_command_w));
+}
-ADDRESS_MAP_START(cedar_magnet_state::cedar_bank0)
+void cedar_magnet_state::cedar_bank0(address_map &map)
+{
/* memory configuration 0 */
- AM_RANGE(0x00000, 0x0ffff) AM_DEVICE("mb_sub_ram", address_map_bank_device, amap8)
+ map(0x00000, 0x0ffff).m(m_sub_ram_bankdev, FUNC(address_map_bank_device::amap8));
/* memory configuration 1 */
- AM_RANGE(0x10000, 0x1dfff) AM_DEVICE("mb_sub_ram", address_map_bank_device, amap8)
- AM_RANGE(0x1e000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0x0000)
+ map(0x10000, 0x1dfff).m(m_sub_ram_bankdev, FUNC(address_map_bank_device::amap8));
+ map(0x1e000, 0x1ffff).rom().region("maincpu", 0x0000);
/* memory configuration 2*/
- AM_RANGE(0x20000, 0x2bfff) AM_DEVICE("mb_sub_ram", address_map_bank_device, amap8)
- AM_RANGE(0x2c000, 0x2ffff) AM_READWRITE(other_cpu_r, other_cpu_w)
+ map(0x20000, 0x2bfff).m(m_sub_ram_bankdev, FUNC(address_map_bank_device::amap8));
+ map(0x2c000, 0x2ffff).rw(this, FUNC(cedar_magnet_state::other_cpu_r), FUNC(cedar_magnet_state::other_cpu_w));
/* memory configuration 3*/
- AM_RANGE(0x30000, 0x31fff) AM_ROM AM_REGION("maincpu", 0x0000) AM_MIRROR(0x0e000)
-ADDRESS_MAP_END
+ map(0x30000, 0x31fff).rom().region("maincpu", 0x0000).mirror(0x0e000);
+}
/***********************
diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp
index a91335aaa1b..f5d9d1b1114 100644
--- a/src/mame/drivers/centiped.cpp
+++ b/src/mame/drivers/centiped.cpp
@@ -676,73 +676,78 @@ WRITE_LINE_MEMBER(centiped_state::bullsdrt_coin_count_w)
*
*************************************/
-ADDRESS_MAP_START(centiped_state::centiped_base_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW1")
- AM_RANGE(0x0801, 0x0801) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c00, 0x0c00) AM_READ(centiped_IN0_r)
- AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("IN1")
- AM_RANGE(0x0c02, 0x0c02) AM_READ(centiped_IN2_r)
- AM_RANGE(0x0c03, 0x0c03) AM_READ_PORT("IN3")
- AM_RANGE(0x1400, 0x140f) AM_WRITE(centiped_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x1600, 0x163f) AM_DEVWRITE("earom",atari_vg_earom_device, write)
- AM_RANGE(0x1680, 0x1680) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x1700, 0x173f) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(irq_ack_w)
- AM_RANGE(0x1c00, 0x1c07) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(centiped_state::centiped_map)
- AM_IMPORT_FROM(centiped_base_map)
- AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
-ADDRESS_MAP_END
+void centiped_state::centiped_base_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x03ff).ram().share("rambase");
+ map(0x0400, 0x07bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x07c0, 0x07ff).ram().share("spriteram");
+ map(0x0800, 0x0800).portr("DSW1");
+ map(0x0801, 0x0801).portr("DSW2");
+ map(0x0c00, 0x0c00).r(this, FUNC(centiped_state::centiped_IN0_r));
+ map(0x0c01, 0x0c01).portr("IN1");
+ map(0x0c02, 0x0c02).r(this, FUNC(centiped_state::centiped_IN2_r));
+ map(0x0c03, 0x0c03).portr("IN3");
+ map(0x1400, 0x140f).w(this, FUNC(centiped_state::centiped_paletteram_w)).share("paletteram");
+ map(0x1600, 0x163f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x1680, 0x1680).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x1700, 0x173f).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x1800, 0x1800).w(this, FUNC(centiped_state::irq_ack_w));
+ map(0x1c00, 0x1c07).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x2000, 0x2000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2000, 0x3fff).rom();
+}
+
+
+void centiped_state::centiped_map(address_map &map)
+{
+ centiped_base_map(map);
+ map(0x1000, 0x100f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+}
//// Centipede bootlegs ////
-ADDRESS_MAP_START(centiped_state::centipdb_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x4000) AM_RAM
- AM_RANGE(0x0400, 0x07bf) AM_MIRROR(0x4000) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x07c0, 0x07ff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x4000) AM_READ_PORT("DSW1")
- AM_RANGE(0x0801, 0x0801) AM_MIRROR(0x4000) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x4000) AM_READ(centiped_IN0_r)
- AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x4000) AM_READ_PORT("IN1")
- AM_RANGE(0x0c02, 0x0c02) AM_MIRROR(0x4000) AM_READ(centiped_IN2_r)
- AM_RANGE(0x0c03, 0x0c03) AM_MIRROR(0x4000) AM_READ_PORT("IN3")
- AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x4000) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x4000) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x1400, 0x140f) AM_MIRROR(0x4000) AM_WRITE(centiped_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x1600, 0x163f) AM_MIRROR(0x4000) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x4000) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x1700, 0x173f) AM_MIRROR(0x4000) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x4000) AM_WRITE(irq_ack_w)
- AM_RANGE(0x1c00, 0x1c07) AM_MIRROR(0x4000) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x2000, 0x27ff) AM_ROM
- AM_RANGE(0x2800, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(centiped_state::magworm_map)
- AM_IMPORT_FROM(centiped_base_map)
- AM_RANGE(0x1001, 0x1001) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x1003, 0x1003) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(centiped_state::caterplr_map)
- AM_IMPORT_FROM(centiped_base_map)
- AM_RANGE(0x1780, 0x1780) AM_READ(caterplr_unknown_r)
- AM_RANGE(0x1000, 0x100f) AM_READWRITE(caterplr_AY8910_r, caterplr_AY8910_w)
-ADDRESS_MAP_END
+void centiped_state::centipdb_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).mirror(0x4000).ram();
+ map(0x0400, 0x07bf).mirror(0x4000).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x07c0, 0x07ff).mirror(0x4000).ram().share("spriteram");
+ map(0x0800, 0x0800).mirror(0x4000).portr("DSW1");
+ map(0x0801, 0x0801).mirror(0x4000).portr("DSW2");
+ map(0x0c00, 0x0c00).mirror(0x4000).r(this, FUNC(centiped_state::centiped_IN0_r));
+ map(0x0c01, 0x0c01).mirror(0x4000).portr("IN1");
+ map(0x0c02, 0x0c02).mirror(0x4000).r(this, FUNC(centiped_state::centiped_IN2_r));
+ map(0x0c03, 0x0c03).mirror(0x4000).portr("IN3");
+ map(0x1000, 0x1001).mirror(0x4000).w(m_aysnd, FUNC(ay8910_device::data_address_w));
+ map(0x1001, 0x1001).mirror(0x4000).r(m_aysnd, FUNC(ay8910_device::data_r));
+ map(0x1400, 0x140f).mirror(0x4000).w(this, FUNC(centiped_state::centiped_paletteram_w)).share("paletteram");
+ map(0x1600, 0x163f).mirror(0x4000).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x1680, 0x1680).mirror(0x4000).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x1700, 0x173f).mirror(0x4000).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x1800, 0x1800).mirror(0x4000).w(this, FUNC(centiped_state::irq_ack_w));
+ map(0x1c00, 0x1c07).mirror(0x4000).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x2000, 0x27ff).rom();
+ map(0x2800, 0x3fff).mirror(0x4000).rom();
+ map(0x6000, 0x67ff).rom();
+}
+
+
+void centiped_state::magworm_map(address_map &map)
+{
+ centiped_base_map(map);
+ map(0x1001, 0x1001).w(m_aysnd, FUNC(ay8910_device::address_w));
+ map(0x1003, 0x1003).rw(m_aysnd, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
+
+
+void centiped_state::caterplr_map(address_map &map)
+{
+ centiped_base_map(map);
+ map(0x1780, 0x1780).r(this, FUNC(centiped_state::caterplr_unknown_r));
+ map(0x1000, 0x100f).rw(this, FUNC(centiped_state::caterplr_AY8910_r), FUNC(centiped_state::caterplr_AY8910_w));
+}
WRITE8_MEMBER(centiped_state::caterplr_AY8910_w)
{
@@ -764,26 +769,27 @@ READ8_MEMBER(centiped_state::caterplr_AY8910_r)
*
*************************************/
-ADDRESS_MAP_START(centiped_state::milliped_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2000) AM_READ(centiped_IN0_r)
- AM_RANGE(0x2001, 0x2001) AM_READ(milliped_IN1_r)
- AM_RANGE(0x2010, 0x2010) AM_READ(milliped_IN2_r)
- AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN3")
- AM_RANGE(0x2030, 0x2030) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x2480, 0x249f) AM_WRITE(milliped_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x2500, 0x2507) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w)
- AM_RANGE(0x2680, 0x2680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2700, 0x2700) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x2780, 0x27bf) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x4000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void centiped_state::milliped_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x040f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x0800, 0x080f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1000, 0x13bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x13c0, 0x13ff).ram().share("spriteram");
+ map(0x2000, 0x2000).r(this, FUNC(centiped_state::centiped_IN0_r));
+ map(0x2001, 0x2001).r(this, FUNC(centiped_state::milliped_IN1_r));
+ map(0x2010, 0x2010).r(this, FUNC(centiped_state::milliped_IN2_r));
+ map(0x2011, 0x2011).portr("IN3");
+ map(0x2030, 0x2030).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x2480, 0x249f).w(this, FUNC(centiped_state::milliped_paletteram_w)).share("paletteram");
+ map(0x2500, 0x2507).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x2600, 0x2600).w(this, FUNC(centiped_state::irq_ack_w));
+ map(0x2680, 0x2680).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2700, 0x2700).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x2780, 0x27bf).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x4000, 0x7fff).rom();
+}
@@ -809,30 +815,31 @@ ADDRESS_MAP_END
TODO: centiped does not work yet, the game reconfigures the memorymap
*/
-ADDRESS_MAP_START(centiped_state::multiped_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2000) AM_READ(centiped_IN0_r)
- AM_RANGE(0x2001, 0x2001) AM_READ(milliped_IN1_r)
- AM_RANGE(0x2010, 0x2010) AM_READ(milliped_IN2_r)
- AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN3")
- AM_RANGE(0x2030, 0x2030) AM_READNOP
- AM_RANGE(0x2480, 0x249f) AM_WRITE(milliped_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x2500, 0x2507) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w)
- AM_RANGE(0x2680, 0x2680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2700, 0x2700) AM_WRITENOP
- AM_RANGE(0x2780, 0x27bf) AM_WRITENOP
- AM_RANGE(0x4000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_WRITE(multiped_eeprom_w)
- AM_RANGE(0xd800, 0xd800) AM_MIRROR(0x03ff) AM_READWRITE(multiped_eeprom_r, multiped_prgbank_w)
- AM_RANGE(0xdc00, 0xdc00) AM_MIRROR(0x03ff) AM_WRITE(multiped_gfxbank_w)
-ADDRESS_MAP_END
+void centiped_state::multiped_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x040f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x0800, 0x080f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1000, 0x13bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x13c0, 0x13ff).ram().share("spriteram");
+ map(0x2000, 0x2000).r(this, FUNC(centiped_state::centiped_IN0_r));
+ map(0x2001, 0x2001).r(this, FUNC(centiped_state::milliped_IN1_r));
+ map(0x2010, 0x2010).r(this, FUNC(centiped_state::milliped_IN2_r));
+ map(0x2011, 0x2011).portr("IN3");
+ map(0x2030, 0x2030).nopr();
+ map(0x2480, 0x249f).w(this, FUNC(centiped_state::milliped_paletteram_w)).share("paletteram");
+ map(0x2500, 0x2507).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x2600, 0x2600).w(this, FUNC(centiped_state::irq_ack_w));
+ map(0x2680, 0x2680).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2700, 0x2700).nopw();
+ map(0x2780, 0x27bf).nopw();
+ map(0x4000, 0x5fff).rom();
+ map(0x6000, 0x7fff).mirror(0x8000).rom();
+ map(0x8000, 0xbfff).rom();
+ map(0xd000, 0xd7ff).w(this, FUNC(centiped_state::multiped_eeprom_w));
+ map(0xd800, 0xd800).mirror(0x03ff).rw(this, FUNC(centiped_state::multiped_eeprom_r), FUNC(centiped_state::multiped_prgbank_w));
+ map(0xdc00, 0xdc00).mirror(0x03ff).w(this, FUNC(centiped_state::multiped_gfxbank_w));
+}
READ8_MEMBER(centiped_state::multiped_eeprom_r)
{
@@ -881,21 +888,22 @@ WRITE8_MEMBER(centiped_state::multiped_prgbank_w)
*
*************************************/
-ADDRESS_MAP_START(centiped_state::warlords_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW1")
- AM_RANGE(0x0801, 0x0801) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("IN0")
- AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("IN1")
- AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(irq_ack_w)
- AM_RANGE(0x1c00, 0x1c07) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void centiped_state::warlords_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x07c0, 0x07ff).ram().share("spriteram");
+ map(0x0800, 0x0800).portr("DSW1");
+ map(0x0801, 0x0801).portr("DSW2");
+ map(0x0c00, 0x0c00).portr("IN0");
+ map(0x0c01, 0x0c01).portr("IN1");
+ map(0x1000, 0x100f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1800, 0x1800).w(this, FUNC(centiped_state::irq_ack_w));
+ map(0x1c00, 0x1c07).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x4000, 0x4000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x7fff).rom();
+}
@@ -905,28 +913,29 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(centiped_state::mazeinv_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN0")
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("IN1")
- AM_RANGE(0x2010, 0x2010) AM_READ_PORT("IN2")
- AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN3")
- AM_RANGE(0x2020, 0x2020) AM_READ(mazeinv_input_r)
- AM_RANGE(0x2030, 0x2030) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x2480, 0x249f) AM_WRITE(mazeinv_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x2500, 0x2507) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x2580, 0x2583) AM_WRITE(mazeinv_input_select_w)
- AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w)
- AM_RANGE(0x2680, 0x2680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2700, 0x2700) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x2780, 0x27bf) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x3000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void centiped_state::mazeinv_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x040f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x0800, 0x080f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1000, 0x13bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x13c0, 0x13ff).ram().share("spriteram");
+ map(0x2000, 0x2000).portr("IN0");
+ map(0x2001, 0x2001).portr("IN1");
+ map(0x2010, 0x2010).portr("IN2");
+ map(0x2011, 0x2011).portr("IN3");
+ map(0x2020, 0x2020).r(this, FUNC(centiped_state::mazeinv_input_r));
+ map(0x2030, 0x2030).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x2480, 0x249f).w(this, FUNC(centiped_state::mazeinv_paletteram_w)).share("paletteram");
+ map(0x2500, 0x2507).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x2580, 0x2583).w(this, FUNC(centiped_state::mazeinv_input_select_w));
+ map(0x2600, 0x2600).w(this, FUNC(centiped_state::irq_ack_w));
+ map(0x2680, 0x2680).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2700, 0x2700).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x2780, 0x27bf).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x3000, 0x7fff).rom();
+}
@@ -936,35 +945,38 @@ ADDRESS_MAP_END
*
****************************************/
-ADDRESS_MAP_START(centiped_state::bullsdrt_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x6000) AM_READ_PORT("DSW1")
- AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x6000) AM_READ(centiped_IN0_r)
- AM_RANGE(0x1081, 0x1081) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
- AM_RANGE(0x1082, 0x1082) AM_MIRROR(0x6000) AM_READ(centiped_IN2_r)
- AM_RANGE(0x1200, 0x123f) AM_MIRROR(0x6000) AM_DEVREADWRITE("earom",atari_vg_earom_device, read, write)
- AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x6000) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x6000) AM_READ_PORT("DSW2")
- AM_RANGE(0x1400, 0x140f) AM_MIRROR(0x6000) AM_WRITE(centiped_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x1480, 0x1487) AM_MIRROR(0x6000) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_NOP
- AM_RANGE(0x1800, 0x1bbf) AM_MIRROR(0x6000) AM_WRITE(centiped_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1bc0, 0x1bff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(centiped_state::bullsdrt_port_map)
- AM_RANGE(0x00, 0x00) AM_WRITE(bullsdrt_sprites_bank_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(bullsdrt_tilesbank_w) AM_SHARE("bullsdrt_bank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(centiped_state::bullsdrt_data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(bullsdrt_data_port_r) AM_DEVWRITE("snsnd", sn76496_device, write)
-ADDRESS_MAP_END
+void centiped_state::bullsdrt_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x1000).mirror(0x6000).portr("DSW1");
+ map(0x1080, 0x1080).mirror(0x6000).r(this, FUNC(centiped_state::centiped_IN0_r));
+ map(0x1081, 0x1081).mirror(0x6000).portr("IN1");
+ map(0x1082, 0x1082).mirror(0x6000).r(this, FUNC(centiped_state::centiped_IN2_r));
+ map(0x1200, 0x123f).mirror(0x6000).rw("earom", FUNC(atari_vg_earom_device::read), FUNC(atari_vg_earom_device::write));
+ map(0x1280, 0x1280).mirror(0x6000).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x1300, 0x1300).mirror(0x6000).portr("DSW2");
+ map(0x1400, 0x140f).mirror(0x6000).w(this, FUNC(centiped_state::centiped_paletteram_w)).share("paletteram");
+ map(0x1480, 0x1487).mirror(0x6000).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x1500, 0x1500).mirror(0x6000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1580, 0x1580).mirror(0x6000).noprw();
+ map(0x1800, 0x1bbf).mirror(0x6000).w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram");
+ map(0x1bc0, 0x1bff).mirror(0x6000).ram().share("spriteram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
+
+void centiped_state::bullsdrt_port_map(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(centiped_state::bullsdrt_sprites_bank_w));
+ map(0x20, 0x3f).w(this, FUNC(centiped_state::bullsdrt_tilesbank_w)).share("bullsdrt_bank");
+}
+
+void centiped_state::bullsdrt_data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(centiped_state::bullsdrt_data_port_r)).w("snsnd", FUNC(sn76496_device::write));
+}
diff --git a/src/mame/drivers/cesclass.cpp b/src/mame/drivers/cesclass.cpp
index b6057908fc4..83fe8088c97 100644
--- a/src/mame/drivers/cesclass.cpp
+++ b/src/mame/drivers/cesclass.cpp
@@ -125,24 +125,25 @@ WRITE16_MEMBER( cesclassic_state::outputs_w )
logerror("Output: %02x\n",data);
}
-ADDRESS_MAP_START(cesclassic_state::cesclassic_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40cfff) AM_RAM
- AM_RANGE(0x40d000, 0x40ffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x410000, 0x410001) AM_READ_PORT("VBLANK") //probably m68681 lies there instead
- AM_RANGE(0x410004, 0x410005) AM_WRITE(irq3_ack_w)
- AM_RANGE(0x410006, 0x410007) AM_WRITE(irq2_ack_w)
- AM_RANGE(0x480000, 0x481fff) AM_RAM AM_SHARE("nvram") //8k according to schematics (games doesn't use that much tho)
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x610000, 0x610001) AM_WRITE(outputs_w)
+void cesclassic_state::cesclassic_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40cfff).ram();
+ map(0x40d000, 0x40ffff).ram().share("vram");
+ map(0x410000, 0x410001).portr("VBLANK"); //probably m68681 lies there instead
+ map(0x410004, 0x410005).w(this, FUNC(cesclassic_state::irq3_ack_w));
+ map(0x410006, 0x410007).w(this, FUNC(cesclassic_state::irq2_ack_w));
+ map(0x480000, 0x481fff).ram().share("nvram"); //8k according to schematics (games doesn't use that much tho)
+ map(0x600000, 0x600001).portr("SYSTEM");
+ map(0x610000, 0x610001).w(this, FUNC(cesclassic_state::outputs_w));
// AM_RANGE(0x640000, 0x640001) AM_WRITENOP
- AM_RANGE(0x640040, 0x640041) AM_WRITE(lamps_w)
- AM_RANGE(0x670000, 0x670001) AM_READ_PORT("DSW")
- AM_RANGE(0x70ff00, 0x70ff01) AM_WRITENOP // writes 0xffff at irq 3 end of service, watchdog?
- AM_RANGE(0x900000, 0x900001) AM_DEVREAD8("oki", okim6295_device, read,0x00ff) // unsure about this ...
- AM_RANGE(0x900100, 0x900101) AM_DEVWRITE8("oki", okim6295_device, write,0x00ff)
+ map(0x640040, 0x640041).w(this, FUNC(cesclassic_state::lamps_w));
+ map(0x670000, 0x670001).portr("DSW");
+ map(0x70ff00, 0x70ff01).nopw(); // writes 0xffff at irq 3 end of service, watchdog?
+ map(0x900001, 0x900001).r(m_oki, FUNC(okim6295_device::read)); // unsure about this ...
+ map(0x900101, 0x900101).w(m_oki, FUNC(okim6295_device::write));
// AM_RANGE(0x904000, 0x904001) AM_WRITENOP //some kind of serial
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( cesclassic )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/cfx9850.cpp b/src/mame/drivers/cfx9850.cpp
index 9b4ef70d57d..aa8b5ec3f7f 100644
--- a/src/mame/drivers/cfx9850.cpp
+++ b/src/mame/drivers/cfx9850.cpp
@@ -68,16 +68,17 @@ private:
};
-ADDRESS_MAP_START(cfx9850_state::cfx9850)
- AM_RANGE( 0x000000, 0x007fff ) AM_ROM
- AM_RANGE( 0x080000, 0x0807ff ) AM_RAM AM_SHARE("video_ram")
+void cfx9850_state::cfx9850(address_map &map)
+{
+ map(0x000000, 0x007fff).rom();
+ map(0x080000, 0x0807ff).ram().share("video_ram");
// AM_RANGE( 0x100000, 0x10ffff ) // some memory mapped i/o???
// AM_RANGE( 0x110000, 0x11ffff ) // some memory mapped i/o???
- AM_RANGE( 0x200000, 0x27ffff ) AM_ROM AM_REGION( "bios", 0 )
- AM_RANGE( 0x400000, 0x40ffff ) AM_RAM
- AM_RANGE( 0x600000, 0x6007ff ) AM_MIRROR(0xf800) AM_RAM AM_SHARE("display_ram")
+ map(0x200000, 0x27ffff).rom().region("bios", 0);
+ map(0x400000, 0x40ffff).ram();
+ map(0x600000, 0x6007ff).mirror(0xf800).ram().share("display_ram");
// AM_RANGE( 0xe10000, 0xe1ffff ) // some memory mapped i/o???
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(cfx9850_state::kol_w)
diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp
index 75d801dcaf4..5718bf52fb9 100644
--- a/src/mame/drivers/cgc7900.cpp
+++ b/src/mame/drivers/cgc7900.cpp
@@ -334,72 +334,74 @@ WRITE_LINE_MEMBER(cgc7900_state::write_rs449_clock)
ADDRESS_MAP( cgc7900_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(cgc7900_state::cgc7900_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chrom_ram")
- AM_RANGE(0x800000, 0x80ffff) AM_ROM AM_REGION(M68000_TAG, 0)
- AM_RANGE(0x810000, 0x9fffff) AM_READ(unmapped_r)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(z_mode_r, z_mode_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_RAM AM_SHARE("plane_ram")
- AM_RANGE(0xe00000, 0xe1ffff) AM_WRITE(color_status_w)
+void cgc7900_state::cgc7900_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("chrom_ram");
+ map(0x800000, 0x80ffff).rom().region(M68000_TAG, 0);
+ map(0x810000, 0x9fffff).r(this, FUNC(cgc7900_state::unmapped_r));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(cgc7900_state::z_mode_r), FUNC(cgc7900_state::z_mode_w));
+ map(0xc00000, 0xdfffff).ram().share("plane_ram");
+ map(0xe00000, 0xe1ffff).w(this, FUNC(cgc7900_state::color_status_w));
// AM_RANGE(0xe20000, 0xe23fff) Raster Processor
- AM_RANGE(0xe30000, 0xe303ff) AM_RAM AM_SHARE("clut_ram")
- AM_RANGE(0xe38000, 0xe3bfff) AM_RAM AM_SHARE("overlay_ram")
- AM_RANGE(0xe40000, 0xe40001) AM_RAM AM_SHARE("roll_bitmap")
- AM_RANGE(0xe40002, 0xe40003) AM_RAM AM_SHARE("pan_x")
- AM_RANGE(0xe40004, 0xe40005) AM_RAM AM_SHARE("pan_y")
- AM_RANGE(0xe40006, 0xe40007) AM_RAM AM_SHARE("zoom")
- AM_RANGE(0xe40008, 0xe40009) AM_RAM
- AM_RANGE(0xe4000a, 0xe4000f) AM_RAM // Raster Processor
- AM_RANGE(0xe40010, 0xe40011) AM_RAM AM_SHARE("blink_select")
- AM_RANGE(0xe40012, 0xe40013) AM_RAM AM_SHARE("plane_select")
- AM_RANGE(0xe40014, 0xe40015) AM_RAM AM_SHARE("plane_switch")
- AM_RANGE(0xe40016, 0xe40017) AM_RAM AM_SHARE("color_status_fg")
- AM_RANGE(0xe40018, 0xe40019) AM_RAM AM_SHARE("color_status_bg")
- AM_RANGE(0xe4001a, 0xe4001b) AM_RAM AM_SHARE("roll_overlay")
- AM_RANGE(0xe4001c, 0xe40fff) AM_RAM
+ map(0xe30000, 0xe303ff).ram().share("clut_ram");
+ map(0xe38000, 0xe3bfff).ram().share("overlay_ram");
+ map(0xe40000, 0xe40001).ram().share("roll_bitmap");
+ map(0xe40002, 0xe40003).ram().share("pan_x");
+ map(0xe40004, 0xe40005).ram().share("pan_y");
+ map(0xe40006, 0xe40007).ram().share("zoom");
+ map(0xe40008, 0xe40009).ram();
+ map(0xe4000a, 0xe4000f).ram(); // Raster Processor
+ map(0xe40010, 0xe40011).ram().share("blink_select");
+ map(0xe40012, 0xe40013).ram().share("plane_select");
+ map(0xe40014, 0xe40015).ram().share("plane_switch");
+ map(0xe40016, 0xe40017).ram().share("color_status_fg");
+ map(0xe40018, 0xe40019).ram().share("color_status_bg");
+ map(0xe4001a, 0xe4001b).ram().share("roll_overlay");
+ map(0xe4001c, 0xe40fff).ram();
// AM_RANGE(0xefc440, 0xefc441) HVG Load X
// AM_RANGE(0xefc442, 0xefc443) HVG Load Y
// AM_RANGE(0xefc444, 0xefc445) HVG Load dX
// AM_RANGE(0xefc446, 0xefc447) HVG Load dY
// AM_RANGE(0xefc448, 0xefc449) HVG Load Pixel Color
// AM_RANGE(0xefc44a, 0xefc44b) HVG Load Trip
- AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8(INS8251_0_TAG, i8251_device, data_r, data_w, 0xff)
- AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8(INS8251_0_TAG, i8251_device, status_r, control_w, 0xff)
- AM_RANGE(0xff8040, 0xff8041) AM_DEVREADWRITE8(INS8251_1_TAG, i8251_device, data_r, data_w, 0xff)
- AM_RANGE(0xff8042, 0xff8043) AM_DEVREADWRITE8(INS8251_1_TAG, i8251_device, status_r, control_w, 0xff)
- AM_RANGE(0xff8080, 0xff8081) AM_READWRITE(keyboard_r, keyboard_w)
+ map(0xff8001, 0xff8001).rw(m_i8251_0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xff8003, 0xff8003).rw(m_i8251_0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xff8041, 0xff8041).rw(m_i8251_1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xff8043, 0xff8043).rw(m_i8251_1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xff8080, 0xff8081).rw(this, FUNC(cgc7900_state::keyboard_r), FUNC(cgc7900_state::keyboard_w));
// AM_RANGE(0xff80c6, 0xff80c7) Joystick X axis
// AM_RANGE(0xff80ca, 0xff80cb) Joystick Y axis
// AM_RANGE(0xff80cc, 0xff80cd) Joystick Z axis
- AM_RANGE(0xff8100, 0xff8101) AM_READWRITE(disk_data_r, disk_data_w)
- AM_RANGE(0xff8120, 0xff8121) AM_READWRITE(disk_status_r, disk_command_w)
- AM_RANGE(0xff8140, 0xff8141) AM_READ_PORT("BEZEL")
- AM_RANGE(0xff8180, 0xff8181) AM_WRITE8(baud_write, 0xff00)
- AM_RANGE(0xff81c0, 0xff81ff) AM_DEVREADWRITE8(MM58167_TAG, mm58167_device, read, write, 0xff)
- AM_RANGE(0xff8200, 0xff8201) AM_WRITE(interrupt_mask_w)
+ map(0xff8100, 0xff8101).rw(this, FUNC(cgc7900_state::disk_data_r), FUNC(cgc7900_state::disk_data_w));
+ map(0xff8120, 0xff8121).rw(this, FUNC(cgc7900_state::disk_status_r), FUNC(cgc7900_state::disk_command_w));
+ map(0xff8140, 0xff8141).portr("BEZEL");
+ map(0xff8180, 0xff8180).w(this, FUNC(cgc7900_state::baud_write));
+ map(0xff81c0, 0xff81ff).rw(MM58167_TAG, FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff);
+ map(0xff8200, 0xff8201).w(this, FUNC(cgc7900_state::interrupt_mask_w));
// AM_RANGE(0xff8240, 0xff8241) Light Pen enable
// AM_RANGE(0xff8242, 0xff8243) Light Pen X value
// AM_RANGE(0xff8244, 0xff8245) Light Pen Y value
// AM_RANGE(0xff8246, 0xff8247) Buffer memory parity check
// AM_RANGE(0xff8248, 0xff8249) Buffer memory parity set/reset
- AM_RANGE(0xff824a, 0xff824b) AM_READ(sync_r)
- AM_RANGE(0xff83c0, 0xff83c1) AM_DEVWRITE8(AY8910_TAG, ay8910_device, address_w, 0xff00)
- AM_RANGE(0xff83c2, 0xff83c3) AM_DEVREAD8(AY8910_TAG, ay8910_device, data_r, 0xff00)
- AM_RANGE(0xff83c4, 0xff83c5) AM_DEVWRITE8(AY8910_TAG, ay8910_device, data_w, 0xff00)
+ map(0xff824a, 0xff824b).r(this, FUNC(cgc7900_state::sync_r));
+ map(0xff83c0, 0xff83c0).w(AY8910_TAG, FUNC(ay8910_device::address_w));
+ map(0xff83c2, 0xff83c2).r(AY8910_TAG, FUNC(ay8910_device::data_r));
+ map(0xff83c4, 0xff83c4).w(AY8910_TAG, FUNC(ay8910_device::data_w));
// DDMA option board
// AM_RANGE(0xff8500, 0xff8501) Disk DMA Command Register
// AM_RANGE(0xff8502, 0xff8503) Disk DMA Address Register
// AM_RANGE(0xff8507, 0xff8507) Disk DMA Control/Status Register
-ADDRESS_MAP_END
+}
/*-------------------------------------------------
ADDRESS_MAP( keyboard_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(cgc7900_state::keyboard_mem)
- AM_RANGE(0x000, 0x7ff) AM_ROM
-ADDRESS_MAP_END
+void cgc7900_state::keyboard_mem(address_map &map)
+{
+ map(0x000, 0x7ff).rom();
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp
index d6e60b4c0b9..2e0b91a03e2 100644
--- a/src/mame/drivers/cgenie.cpp
+++ b/src/mame/drivers/cgenie.cpp
@@ -108,25 +108,27 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(cgenie_state::cgenie_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
+void cgenie_state::cgenie_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
// AM_RANGE(0x4000, 0xbfff) AM_RAM // set up in machine_start
- AM_RANGE(0xc000, 0xefff) AM_NOP // cartridge space
- AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(colorram_r, colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM AM_SHARE("fontram")
- AM_RANGE(0xf800, 0xf8ff) AM_MIRROR(0x300) AM_READ(keyboard_r)
- AM_RANGE(0xfc00, 0xffff) AM_NOP // cartridge space
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cgenie_state::cgenie_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf8, 0xf8) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0xf9, 0xf9) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w)
- AM_RANGE(0xfa, 0xfa) AM_DEVWRITE("crtc", hd6845_device, address_w)
- AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE("crtc", hd6845_device, register_r, register_w)
- AM_RANGE(0xff, 0xff) AM_READWRITE(control_r, control_w)
-ADDRESS_MAP_END
+ map(0xc000, 0xefff).noprw(); // cartridge space
+ map(0xf000, 0xf3ff).rw(this, FUNC(cgenie_state::colorram_r), FUNC(cgenie_state::colorram_w)).share("colorram");
+ map(0xf400, 0xf7ff).ram().share("fontram");
+ map(0xf800, 0xf8ff).mirror(0x300).r(this, FUNC(cgenie_state::keyboard_r));
+ map(0xfc00, 0xffff).noprw(); // cartridge space
+}
+
+void cgenie_state::cgenie_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf8, 0xf8).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0xf9, 0xf9).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xfa, 0xfa).w(m_crtc, FUNC(hd6845_device::address_w));
+ map(0xfb, 0xfb).rw(m_crtc, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w));
+ map(0xff, 0xff).rw(this, FUNC(cgenie_state::control_r), FUNC(cgenie_state::control_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/chaknpop.cpp b/src/mame/drivers/chaknpop.cpp
index 8cfe6edae67..28c80b80d86 100644
--- a/src/mame/drivers/chaknpop.cpp
+++ b/src/mame/drivers/chaknpop.cpp
@@ -161,26 +161,27 @@ WRITE8_MEMBER(chaknpop_state::coinlock_w)
***************************************************************************/
-ADDRESS_MAP_START(chaknpop_state::chaknpop_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0x8801, 0x8801) AM_READ(mcu_status_r)
- AM_RANGE(0x8802, 0x8802) AM_WRITE(unknown_port_3_w)
- AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x8806, 0x8807) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSWC")
- AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1")
- AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2")
- AM_RANGE(0x880c, 0x880c) AM_READWRITE(gfxmode_r, gfxmode_w)
- AM_RANGE(0x880d, 0x880d) AM_WRITE(coinlock_w) // coin lock out
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(txram_w) AM_SHARE("tx_ram") // TX tilemap
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(attrram_w) AM_SHARE("attr_ram") // Color attribute
- AM_RANGE(0x9840, 0x98ff) AM_RAM AM_SHARE("spr_ram") // sprite
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank1") // bitmap plane 1-4
-ADDRESS_MAP_END
+void chaknpop_state::chaknpop_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0x8801, 0x8801).r(this, FUNC(chaknpop_state::mcu_status_r));
+ map(0x8802, 0x8802).w(this, FUNC(chaknpop_state::unknown_port_3_w));
+ map(0x8804, 0x8805).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x8806, 0x8807).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x8808, 0x8808).portr("DSWC");
+ map(0x8809, 0x8809).portr("P1");
+ map(0x880a, 0x880a).portr("SYSTEM");
+ map(0x880b, 0x880b).portr("P2");
+ map(0x880c, 0x880c).rw(this, FUNC(chaknpop_state::gfxmode_r), FUNC(chaknpop_state::gfxmode_w));
+ map(0x880d, 0x880d).w(this, FUNC(chaknpop_state::coinlock_w)); // coin lock out
+ map(0x9000, 0x93ff).ram().w(this, FUNC(chaknpop_state::txram_w)).share("tx_ram"); // TX tilemap
+ map(0x9800, 0x983f).ram().w(this, FUNC(chaknpop_state::attrram_w)).share("attr_ram"); // Color attribute
+ map(0x9840, 0x98ff).ram().share("spr_ram"); // sprite
+ map(0xa000, 0xbfff).rom();
+ map(0xc000, 0xffff).bankrw("bank1"); // bitmap plane 1-4
+}
/***************************************************************************
diff --git a/src/mame/drivers/cham24.cpp b/src/mame/drivers/cham24.cpp
index d04660392a1..164dcc16872 100644
--- a/src/mame/drivers/cham24.cpp
+++ b/src/mame/drivers/cham24.cpp
@@ -222,14 +222,15 @@ WRITE8_MEMBER(cham24_state::cham24_mapper_w)
}
}
-ADDRESS_MAP_START(cham24_state::cham24_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(cham24_IN0_r, cham24_IN0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(cham24_IN1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(cham24_mapper_w)
-ADDRESS_MAP_END
+void cham24_state::cham24_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* NES RAM */
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(cham24_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(cham24_state::cham24_IN0_r), FUNC(cham24_state::cham24_IN0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(cham24_state::cham24_IN1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x8000, 0xffff).rom().w(this, FUNC(cham24_state::cham24_mapper_w));
+}
static INPUT_PORTS_START( cham24 )
PORT_START("P1") /* IN0 */
diff --git a/src/mame/drivers/champbas.cpp b/src/mame/drivers/champbas.cpp
index 04a3752861c..3581b69d18d 100644
--- a/src/mame/drivers/champbas.cpp
+++ b/src/mame/drivers/champbas.cpp
@@ -181,99 +181,110 @@ READ8_MEMBER(champbas_state::champbja_protection_r)
// maincpu
// base map
-ADDRESS_MAP_START(champbas_state::champbas_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(tilemap_w) AM_SHARE("vram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("mainram")
+void champbas_state::champbas_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x7000, 0x7001).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x8000, 0x87ff).ram().w(this, FUNC(champbas_state::tilemap_w)).share("vram");
+ map(0x8800, 0x8fff).ram().share("mainram");
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa040, 0xa040) AM_READ_PORT("P2")
- AM_RANGE(0xa080, 0xa080) AM_MIRROR(0x0020) AM_READ_PORT("DSW")
- AM_RANGE(0xa0c0, 0xa0c0) AM_READ_PORT("SYSTEM")
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa040, 0xa040).portr("P2");
+ map(0xa080, 0xa080).mirror(0x0020).portr("DSW");
+ map(0xa0c0, 0xa0c0).portr("SYSTEM");
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
- AM_RANGE(0xa060, 0xa06f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa0c0, 0xa0c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+ map(0xa060, 0xa06f).writeonly().share("spriteram");
+ map(0xa080, 0xa080).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xa0c0, 0xa0c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
// base map + ALPHA-8x0x protection
-ADDRESS_MAP_START(champbas_state::champbasj_map)
- AM_IMPORT_FROM( champbas_map )
- AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("alpha_8201", alpha_8201_device, ext_ram_r, ext_ram_w)
-ADDRESS_MAP_END
+void champbas_state::champbasj_map(address_map &map)
+{
+ champbas_map(map);
+ map(0x6000, 0x63ff).rw(m_alpha_8201, FUNC(alpha_8201_device::ext_ram_r), FUNC(alpha_8201_device::ext_ram_w));
+}
// different protection for champbasja
-ADDRESS_MAP_START(champbas_state::champbasja_map)
- AM_IMPORT_FROM( champbas_map )
- AM_RANGE(0x6000, 0x63ff) AM_RAM
- AM_RANGE(0x6800, 0x68ff) AM_READ(champbja_protection_r)
-ADDRESS_MAP_END
+void champbas_state::champbasja_map(address_map &map)
+{
+ champbas_map(map);
+ map(0x6000, 0x63ff).ram();
+ map(0x6800, 0x68ff).r(this, FUNC(champbas_state::champbja_protection_r));
+}
// champbasjb appears to have no protection
-ADDRESS_MAP_START(champbas_state::champbasjb_map)
- AM_IMPORT_FROM( champbas_map )
- AM_RANGE(0x6000, 0x63ff) AM_RAM
-ADDRESS_MAP_END
+void champbas_state::champbasjb_map(address_map &map)
+{
+ champbas_map(map);
+ map(0x6000, 0x63ff).ram();
+}
// champbb2
-ADDRESS_MAP_START(champbas_state::champbb2_map)
- AM_IMPORT_FROM( champbasj_map )
- AM_RANGE(0x7800, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void champbas_state::champbb2_map(address_map &map)
+{
+ champbasj_map(map);
+ map(0x7800, 0x7fff).rom();
+}
-ADDRESS_MAP_START(champbas_state::tbasebal_map)
- AM_IMPORT_FROM( champbas_map )
- AM_RANGE(0x7800, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void champbas_state::tbasebal_map(address_map &map)
+{
+ champbas_map(map);
+ map(0x7800, 0x7fff).rom();
+}
// more sprites in exctsccr
-ADDRESS_MAP_START(champbas_state::exctsccr_map)
- AM_IMPORT_FROM( champbasj_map )
- AM_RANGE(0x7000, 0x7001) AM_UNMAP // aysnd is controlled by audiocpu
- AM_RANGE(0x7c00, 0x7fff) AM_RAM
- AM_RANGE(0xa040, 0xa04f) AM_WRITEONLY AM_SHARE("spriteram2")
-ADDRESS_MAP_END
+void champbas_state::exctsccr_map(address_map &map)
+{
+ champbasj_map(map);
+ map(0x7000, 0x7001).unmaprw(); // aysnd is controlled by audiocpu
+ map(0x7c00, 0x7fff).ram();
+ map(0xa040, 0xa04f).writeonly().share("spriteram2");
+}
// exctsccrb
-ADDRESS_MAP_START(champbas_state::exctsccrb_map)
- AM_IMPORT_FROM( champbasj_map )
- AM_RANGE(0xa040, 0xa04f) AM_WRITEONLY AM_SHARE("spriteram2")
-ADDRESS_MAP_END
+void champbas_state::exctsccrb_map(address_map &map)
+{
+ champbasj_map(map);
+ map(0xa040, 0xa04f).writeonly().share("spriteram2");
+}
// audiocpu
// champbas/champbb2 (note: talbot doesn't have audiocpu)
-ADDRESS_MAP_START(champbas_state::champbas_sound_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_WRITENOP // 4-bit return code to main CPU (not used)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe000, 0xe3ff) AM_MIRROR(0x1c00) AM_RAM
-ADDRESS_MAP_END
+void champbas_state::champbas_sound_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8000).mirror(0x1fff).nopw(); // 4-bit return code to main CPU (not used)
+ map(0xa000, 0xa000).mirror(0x1fff).w("soundlatch", FUNC(generic_latch_8_device::clear_w));
+ map(0xc000, 0xc000).mirror(0x1fff).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe000, 0xe3ff).mirror(0x1c00).ram();
+}
// exctsccr
-ADDRESS_MAP_START(champbas_state::exctsccr_sound_map)
- AM_RANGE(0x0000, 0x8fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xc008, 0xc008) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0xc009, 0xc009) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0xc00c, 0xc00c) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0xc00d, 0xc00d) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+void champbas_state::exctsccr_sound_map(address_map &map)
+{
+ map(0x0000, 0x8fff).rom();
+ map(0xa000, 0xa7ff).ram();
+ map(0xc008, 0xc008).w("dac1", FUNC(dac_byte_interface::write));
+ map(0xc009, 0xc009).w("dac2", FUNC(dac_byte_interface::write));
+ map(0xc00c, 0xc00c).w("soundlatch", FUNC(generic_latch_8_device::clear_w));
+ map(0xc00d, 0xc00d).r("soundlatch", FUNC(generic_latch_8_device::read));
// AM_RANGE(0xc00f, 0xc00f) AM_WRITENOP // ?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(champbas_state::exctsccr_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK( 0x00ff )
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x86, 0x87) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x8a, 0x8b) AM_DEVWRITE("ay3", ay8910_device, data_address_w)
- AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay4", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+}
+
+void champbas_state::exctsccr_sound_io_map(address_map &map)
+{
+ map.global_mask(0x00ff);
+ map(0x82, 0x83).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x86, 0x87).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x8a, 0x8b).w("ay3", FUNC(ay8910_device::data_address_w));
+ map(0x8e, 0x8f).w("ay4", FUNC(ay8910_device::data_address_w));
+}
diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp
index 414571dab8f..7338628de43 100644
--- a/src/mame/drivers/champbwl.cpp
+++ b/src/mame/drivers/champbwl.cpp
@@ -249,29 +249,30 @@ WRITE8_MEMBER(champbwl_state::champbwl_misc_w)
membank("bank1")->set_entry((data & 0x30) >> 4);
}
-ADDRESS_MAP_START(champbwl_state::champbwl_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
- AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("x1snd", x1_010_device, read, write)
- AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xe300, 0xe303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */
-
- AM_RANGE(0xf000, 0xf000) AM_READ(trackball_r)
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN0")
- AM_RANGE(0xf004, 0xf004) AM_READ(trackball_reset_r)
- AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2")
- AM_RANGE(0xf007, 0xf007) AM_READ_PORT("IN3")
-
- AM_RANGE(0xf000, 0xf000) AM_WRITE(champbwl_misc_w)
- AM_RANGE(0xf002, 0xf002) AM_WRITENOP //buttons light?
- AM_RANGE(0xf004, 0xf004) AM_WRITENOP //buttons light?
- AM_RANGE(0xf006, 0xf006) AM_WRITENOP //buttons light?
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP
-ADDRESS_MAP_END
+void champbwl_state::champbwl_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("maincpu", 0x10000);
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0xa000, 0xafff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0xb000, 0xbfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+ map(0xc000, 0xdfff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write));
+ map(0xe000, 0xe2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xe300, 0xe303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */
+ map(0xe800, 0xe800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */
+
+ map(0xf000, 0xf000).r(this, FUNC(champbwl_state::trackball_r));
+ map(0xf002, 0xf002).portr("IN0");
+ map(0xf004, 0xf004).r(this, FUNC(champbwl_state::trackball_reset_r));
+ map(0xf006, 0xf006).portr("IN2");
+ map(0xf007, 0xf007).portr("IN3");
+
+ map(0xf000, 0xf000).w(this, FUNC(champbwl_state::champbwl_misc_w));
+ map(0xf002, 0xf002).nopw(); //buttons light?
+ map(0xf004, 0xf004).nopw(); //buttons light?
+ map(0xf006, 0xf006).nopw(); //buttons light?
+ map(0xf800, 0xf800).nopw();
+}
@@ -288,22 +289,23 @@ WRITE8_MEMBER(champbwl_state::doraemon_outputs_w)
// popmessage("%02x", data);
}
-ADDRESS_MAP_START(champbwl_state::doraemon)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
- AM_RANGE(0xc000, 0xc07f) AM_DEVREADWRITE("x1snd", x1_010_device, read, write) // Sound
- AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xe300, 0xe303) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8)
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN0") AM_WRITE(doraemon_outputs_w)
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN1") AM_WRITENOP // Ack?
- AM_RANGE(0xf004, 0xf004) AM_WRITENOP // Ack?
- AM_RANGE(0xf006, 0xf006) AM_READ_PORT("DSW") AM_WRITENOP // Ack?
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP // 0
-ADDRESS_MAP_END
+void champbwl_state::doraemon(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0xa000, 0xafff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0xb000, 0xbfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+ map(0xc000, 0xc07f).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); // Sound
+ map(0xe000, 0xe2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xe300, 0xe303).w(m_seta001, FUNC(seta001_device::spritectrl_w8));
+ map(0xe800, 0xe800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */
+ map(0xf000, 0xf000).portr("IN0").w(this, FUNC(champbwl_state::doraemon_outputs_w));
+ map(0xf002, 0xf002).portr("IN1").nopw(); // Ack?
+ map(0xf004, 0xf004).nopw(); // Ack?
+ map(0xf006, 0xf006).portr("DSW").nopw(); // Ack?
+ map(0xf800, 0xf800).nopw(); // 0
+}
diff --git a/src/mame/drivers/chanbara.cpp b/src/mame/drivers/chanbara.cpp
index ca750e5442a..be917571ca5 100644
--- a/src/mame/drivers/chanbara.cpp
+++ b/src/mame/drivers/chanbara.cpp
@@ -228,21 +228,22 @@ uint32_t chanbara_state::screen_update_chanbara(screen_device &screen, bitmap_in
/***************************************************************************/
-ADDRESS_MAP_START(chanbara_state::chanbara_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(chanbara_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(chanbara_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1800, 0x19ff) AM_RAM_WRITE(chanbara_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x1a00, 0x1bff) AM_RAM_WRITE(chanbara_colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1")
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P1")
- AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void chanbara_state::chanbara_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0bff).ram().w(this, FUNC(chanbara_state::chanbara_videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(chanbara_state::chanbara_colorram_w)).share("colorram");
+ map(0x1000, 0x10ff).ram().share("spriteram");
+ map(0x1800, 0x19ff).ram().w(this, FUNC(chanbara_state::chanbara_videoram2_w)).share("videoram2");
+ map(0x1a00, 0x1bff).ram().w(this, FUNC(chanbara_state::chanbara_colorram2_w)).share("colorram2");
+ map(0x2000, 0x2000).portr("DSW1");
+ map(0x2001, 0x2001).portr("SYSTEM");
+ map(0x2002, 0x2002).portr("P2");
+ map(0x2003, 0x2003).portr("P1");
+ map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************/
diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp
index 5acc9825643..01e68eadba4 100644
--- a/src/mame/drivers/chance32.cpp
+++ b/src/mame/drivers/chance32.cpp
@@ -199,30 +199,32 @@ WRITE8_MEMBER(chance32_state::muxout_w)
}
-ADDRESS_MAP_START(chance32_state::chance32_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM
- AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(chance32_fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(chance32_bgram_w) AM_SHARE("bgram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chance32_state::chance32_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_WRITENOP // writing bit3 constantly... watchdog?
- AM_RANGE(0x13, 0x13) AM_WRITE(mux_w)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW0")
- AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW1")
- AM_RANGE(0x22, 0x22) AM_READ_PORT("DSW2")
- AM_RANGE(0x23, 0x23) AM_READ_PORT("DSW3")
- AM_RANGE(0x24, 0x24) AM_READ_PORT("DSW4")
- AM_RANGE(0x25, 0x25) AM_READ(mux_r)
- AM_RANGE(0x26, 0x26) AM_READ_PORT("UNK") // vblank (other bits are checked for different reasons)
- AM_RANGE(0x30, 0x30) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x31, 0x31) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x60, 0x60) AM_WRITE(muxout_w)
-ADDRESS_MAP_END
+void chance32_state::chance32_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom();
+ map(0xd800, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(chance32_state::chance32_fgram_w)).share("fgram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(chance32_state::chance32_bgram_w)).share("bgram");
+}
+
+void chance32_state::chance32_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).nopw(); // writing bit3 constantly... watchdog?
+ map(0x13, 0x13).w(this, FUNC(chance32_state::mux_w));
+ map(0x20, 0x20).portr("DSW0");
+ map(0x21, 0x21).portr("DSW1");
+ map(0x22, 0x22).portr("DSW2");
+ map(0x23, 0x23).portr("DSW3");
+ map(0x24, 0x24).portr("DSW4");
+ map(0x25, 0x25).r(this, FUNC(chance32_state::mux_r));
+ map(0x26, 0x26).portr("UNK"); // vblank (other bits are checked for different reasons)
+ map(0x30, 0x30).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x31, 0x31).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x50, 0x50).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x60, 0x60).w(this, FUNC(chance32_state::muxout_w));
+}
static INPUT_PORTS_START( chance32 )
diff --git a/src/mame/drivers/changela.cpp b/src/mame/drivers/changela.cpp
index 9cb21e91572..c5638801a7b 100644
--- a/src/mame/drivers/changela.cpp
+++ b/src/mame/drivers/changela.cpp
@@ -159,41 +159,42 @@ WRITE_LINE_MEMBER(changela_state::coin_counter_2_w)
}
-ADDRESS_MAP_START(changela_state::changela_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("spriteram") /* OBJ0 RAM */
- AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("videoram") /* OBJ1 RAM */
- AM_RANGE(0xa000, 0xa07f) AM_WRITE(changela_colors_w) AM_SHARE("colorram") /* Color 93419 RAM 64x9(nine!!!) bits A0-used as the 8-th bit data input (d0-d7->normal, a0->d8) */
- AM_RANGE(0xb000, 0xbfff) AM_ROM
+void changela_state::changela_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().share("spriteram"); /* OBJ0 RAM */
+ map(0x9000, 0x97ff).ram().share("videoram"); /* OBJ1 RAM */
+ map(0xa000, 0xa07f).w(this, FUNC(changela_state::changela_colors_w)).share("colorram"); /* Color 93419 RAM 64x9(nine!!!) bits A0-used as the 8-th bit data input (d0-d7->normal, a0->d8) */
+ map(0xb000, 0xbfff).rom();
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(changela_mem_device_r, changela_mem_device_w) /* RAM4 (River Bed RAM); RAM5 (Tree RAM) */
+ map(0xc000, 0xc7ff).rw(this, FUNC(changela_state::changela_mem_device_r), FUNC(changela_state::changela_mem_device_w)); /* RAM4 (River Bed RAM); RAM5 (Tree RAM) */
/* LS138 - U16 */
- AM_RANGE(0xc800, 0xc800) AM_WRITENOP /* not connected */
- AM_RANGE(0xc900, 0xc900) AM_WRITE(changela_mem_device_select_w) /* selects the memory device to be accessible at 0xc000-0xc7ff */
- AM_RANGE(0xca00, 0xca00) AM_WRITE(changela_slope_rom_addr_hi_w)
- AM_RANGE(0xcb00, 0xcb00) AM_WRITE(changela_slope_rom_addr_lo_w)
+ map(0xc800, 0xc800).nopw(); /* not connected */
+ map(0xc900, 0xc900).w(this, FUNC(changela_state::changela_mem_device_select_w)); /* selects the memory device to be accessible at 0xc000-0xc7ff */
+ map(0xca00, 0xca00).w(this, FUNC(changela_state::changela_slope_rom_addr_hi_w));
+ map(0xcb00, 0xcb00).w(this, FUNC(changela_state::changela_slope_rom_addr_lo_w));
- AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
- AM_RANGE(0xd010, 0xd011) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
+ map(0xd000, 0xd001).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0xd010, 0xd011).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
/* LS259 - U44 */
- AM_RANGE(0xd020, 0xd027) AM_DEVWRITE("outlatch", ls259_device, write_d0)
+ map(0xd020, 0xd027).w("outlatch", FUNC(ls259_device::write_d0));
/* LS139 - U24 */
- AM_RANGE(0xd024, 0xd024) AM_READ(changela_24_r)
- AM_RANGE(0xd025, 0xd025) AM_READ(changela_25_r)
- AM_RANGE(0xd028, 0xd028) AM_READ(mcu_r)
- AM_RANGE(0xd02c, 0xd02c) AM_READ(changela_2c_r)
- AM_RANGE(0xd02d, 0xd02d) AM_READ(changela_2d_r)
+ map(0xd024, 0xd024).r(this, FUNC(changela_state::changela_24_r));
+ map(0xd025, 0xd025).r(this, FUNC(changela_state::changela_25_r));
+ map(0xd028, 0xd028).r(this, FUNC(changela_state::mcu_r));
+ map(0xd02c, 0xd02c).r(this, FUNC(changela_state::changela_2c_r));
+ map(0xd02d, 0xd02d).r(this, FUNC(changela_state::changela_2d_r));
- AM_RANGE(0xd030, 0xd030) AM_READWRITE(changela_30_r, mcu_w)
- AM_RANGE(0xd031, 0xd031) AM_READ(changela_31_r)
+ map(0xd030, 0xd030).rw(this, FUNC(changela_state::changela_30_r), FUNC(changela_state::mcu_w));
+ map(0xd031, 0xd031).r(this, FUNC(changela_state::changela_31_r));
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* Watchdog */
+ map(0xe000, 0xe000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM /* RAM2 (Processor RAM) */
-ADDRESS_MAP_END
+ map(0xf000, 0xf7ff).ram(); /* RAM2 (Processor RAM) */
+}
static INPUT_PORTS_START( changela )
diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp
index 73fa5b02a91..374d61460dc 100644
--- a/src/mame/drivers/channelf.cpp
+++ b/src/mame/drivers/channelf.cpp
@@ -119,17 +119,19 @@ WRITE8_MEMBER( channelf_state::port_5_w )
m_row_reg = (data | 0xc0) ^ 0xff;
}
-ADDRESS_MAP_START(channelf_state::channelf_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0xffff) AM_DEVREAD("cartslot", channelf_cart_slot_device, read_rom)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(channelf_state::channelf_io)
- AM_RANGE(0x00, 0x00) AM_READWRITE(port_0_r, port_0_w) /* Front panel switches */
- AM_RANGE(0x01, 0x01) AM_READWRITE(port_1_r, port_1_w) /* Right controller */
- AM_RANGE(0x04, 0x04) AM_READWRITE(port_4_r, port_4_w) /* Left controller */
- AM_RANGE(0x05, 0x05) AM_READWRITE(port_5_r, port_5_w)
-ADDRESS_MAP_END
+void channelf_state::channelf_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0xffff).r(m_cart, FUNC(channelf_cart_slot_device::read_rom));
+}
+
+void channelf_state::channelf_io(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(channelf_state::port_0_r), FUNC(channelf_state::port_0_w)); /* Front panel switches */
+ map(0x01, 0x01).rw(this, FUNC(channelf_state::port_1_r), FUNC(channelf_state::port_1_w)); /* Right controller */
+ map(0x04, 0x04).rw(this, FUNC(channelf_state::port_4_r), FUNC(channelf_state::port_4_w)); /* Left controller */
+ map(0x05, 0x05).rw(this, FUNC(channelf_state::port_5_r), FUNC(channelf_state::port_5_w));
+}
diff --git a/src/mame/drivers/chaos.cpp b/src/mame/drivers/chaos.cpp
index a4944306929..069f7e53cda 100644
--- a/src/mame/drivers/chaos.cpp
+++ b/src/mame/drivers/chaos.cpp
@@ -64,23 +64,26 @@ private:
};
-ADDRESS_MAP_START(chaos_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chaos_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x1e, 0x1e) AM_READ(port1e_r)
- AM_RANGE(0x1f, 0x1f) AM_READWRITE(port90_r, port1f_w)
- AM_RANGE(0x90, 0x90) AM_READ(port90_r)
- AM_RANGE(0x91, 0x91) AM_READ(port91_r)
- AM_RANGE(0x92, 0x92) AM_DEVWRITE("terminal", generic_terminal_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chaos_state::data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_NOP // stops error log filling up while using debug
-ADDRESS_MAP_END
+void chaos_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram().share("ram");
+}
+
+void chaos_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x1e, 0x1e).r(this, FUNC(chaos_state::port1e_r));
+ map(0x1f, 0x1f).rw(this, FUNC(chaos_state::port90_r), FUNC(chaos_state::port1f_w));
+ map(0x90, 0x90).r(this, FUNC(chaos_state::port90_r));
+ map(0x91, 0x91).r(this, FUNC(chaos_state::port91_r));
+ map(0x92, 0x92).w(m_terminal, FUNC(generic_terminal_device::write));
+}
+
+void chaos_state::data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).noprw(); // stops error log filling up while using debug
+}
/* Input ports */
static INPUT_PORTS_START( chaos )
diff --git a/src/mame/drivers/cheekyms.cpp b/src/mame/drivers/cheekyms.cpp
index 34bbc522c48..a9e1197878a 100644
--- a/src/mame/drivers/cheekyms.cpp
+++ b/src/mame/drivers/cheekyms.cpp
@@ -20,20 +20,22 @@ INPUT_CHANGED_MEMBER(cheekyms_state::coin_inserted)
}
-ADDRESS_MAP_START(cheekyms_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3000, 0x33ff) AM_RAM
- AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cheekyms_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("INPUTS")
- AM_RANGE(0x20, 0x3f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x40, 0x40) AM_WRITE(port_40_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(port_80_w) AM_SHARE("port_80")
-ADDRESS_MAP_END
+void cheekyms_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x33ff).ram();
+ map(0x3800, 0x3bff).ram().share("videoram");
+}
+
+void cheekyms_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW");
+ map(0x01, 0x01).portr("INPUTS");
+ map(0x20, 0x3f).writeonly().share("spriteram");
+ map(0x40, 0x40).w(this, FUNC(cheekyms_state::port_40_w));
+ map(0x80, 0x80).w(this, FUNC(cheekyms_state::port_80_w)).share("port_80");
+}
static INPUT_PORTS_START( cheekyms )
diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp
index ed77600d74a..0ce0272f53e 100644
--- a/src/mame/drivers/chessmst.cpp
+++ b/src/mame/drivers/chessmst.cpp
@@ -88,32 +88,36 @@ private:
};
-ADDRESS_MAP_START(chessmst_state::chessmst_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 not connected
- AM_RANGE( 0x0000, 0x27ff ) AM_ROM
- AM_RANGE( 0x3400, 0x3bff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chessmst_state::chessmstdm)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0x7fff ) AM_DEVREAD("cartslot", generic_slot_device, read_rom)
- AM_RANGE( 0x8000, 0x8bff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chessmst_state::chessmst_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void chessmst_state::chessmst_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x7fff); // A15 not connected
+ map(0x0000, 0x27ff).rom();
+ map(0x3400, 0x3bff).ram();
+}
+
+void chessmst_state::chessmstdm(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom));
+ map(0x8000, 0x8bff).ram();
+}
+
+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
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xf0) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_MIRROR(0xf0) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chessmst_state::chessmstdm_io)
- AM_IMPORT_FROM(chessmst_io)
- AM_RANGE(0x4c, 0x4c) AM_WRITE(digits_w)
-ADDRESS_MAP_END
+ 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)
+{
+ chessmst_io(map);
+ map(0x4c, 0x4c).w(this, FUNC(chessmst_state::digits_w));
+}
WRITE_LINE_MEMBER( chessmst_state::timer_555_w )
{
diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp
index 96cde372f43..dd18b2a6617 100644
--- a/src/mame/drivers/chesstrv.cpp
+++ b/src/mame/drivers/chesstrv.cpp
@@ -123,25 +123,28 @@ READ8_MEMBER( chesstrv_state::diplomat_keypad_r )
}
-ADDRESS_MAP_START(chesstrv_state::chesstrv_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x7ff)
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(chesstrv_state::chesstrv_io)
- AM_RANGE( 0x00, 0x00 ) AM_READWRITE( ram_addr_r, ram_addr_w )
- AM_RANGE( 0x01, 0x01 ) AM_WRITE( display_w )
- AM_RANGE( 0x04, 0x04 ) AM_READWRITE( ram_r, ram_w )
- AM_RANGE( 0x05, 0x05 ) AM_READWRITE( keypad_r, matrix_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chesstrv_state::borisdpl_io)
- AM_RANGE( 0x00, 0x00 ) AM_READWRITE( diplomat_keypad_r, matrix_w )
- AM_RANGE( 0x01, 0x01 ) AM_WRITE( diplomat_display_w )
- AM_RANGE( 0x04, 0x04 ) AM_READWRITE( ram_r, ram_w )
- AM_RANGE( 0x05, 0x05 ) AM_READWRITE( ram_addr_r, ram_addr_w )
-ADDRESS_MAP_END
+void chesstrv_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(this, FUNC(chesstrv_state::ram_addr_r), FUNC(chesstrv_state::ram_addr_w));
+ map(0x01, 0x01).w(this, FUNC(chesstrv_state::display_w));
+ map(0x04, 0x04).rw(this, FUNC(chesstrv_state::ram_r), FUNC(chesstrv_state::ram_w));
+ map(0x05, 0x05).rw(this, FUNC(chesstrv_state::keypad_r), FUNC(chesstrv_state::matrix_w));
+}
+
+void chesstrv_state::borisdpl_io(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(chesstrv_state::diplomat_keypad_r), FUNC(chesstrv_state::matrix_w));
+ map(0x01, 0x01).w(this, FUNC(chesstrv_state::diplomat_display_w));
+ map(0x04, 0x04).rw(this, FUNC(chesstrv_state::ram_r), FUNC(chesstrv_state::ram_w));
+ map(0x05, 0x05).rw(this, FUNC(chesstrv_state::ram_addr_r), FUNC(chesstrv_state::ram_addr_w));
+}
static INPUT_PORTS_START( chesstrv )
PORT_START("LINE1")
diff --git a/src/mame/drivers/chexx.cpp b/src/mame/drivers/chexx.cpp
index b45ea22c058..47d4986e168 100644
--- a/src/mame/drivers/chexx.cpp
+++ b/src/mame/drivers/chexx.cpp
@@ -174,12 +174,13 @@ READ8_MEMBER(chexx_state::input_r)
// Chexx Memory Map
-ADDRESS_MAP_START(chexx_state::chexx83_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM AM_MIRROR(0x100) // 6810 - 128 x 8 static RAM
- AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("via6522", via6522_device, read, write)
- AM_RANGE(0x8000, 0x8000) AM_READ(input_r)
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void chexx_state::chexx83_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram().mirror(0x100); // 6810 - 128 x 8 static RAM
+ map(0x4000, 0x400f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x8000, 0x8000).r(this, FUNC(chexx_state::input_r));
+ map(0xf800, 0xffff).rom().region("maincpu", 0);
+}
// Face-Off Memory Map
@@ -211,14 +212,15 @@ WRITE8_MEMBER(chexx_state::ay_w)
m_ay_cmd = data;
}
-ADDRESS_MAP_START(chexx_state::faceoffh_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM AM_MIRROR(0x100) // M58725P - 2KB
- AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("via6522", via6522_device, read, write)
- AM_RANGE(0x8000, 0x8000) AM_READ(input_r)
- AM_RANGE(0xa000, 0xa001) AM_WRITE(ay_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(lamp_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void chexx_state::faceoffh_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram().mirror(0x100); // M58725P - 2KB
+ map(0x4000, 0x400f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x8000, 0x8000).r(this, FUNC(chexx_state::input_r));
+ map(0xa000, 0xa001).w(this, FUNC(chexx_state::ay_w));
+ map(0xc000, 0xc000).w(this, FUNC(chexx_state::lamp_w));
+ map(0xf000, 0xffff).rom().region("maincpu", 0);
+}
// Inputs
diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp
index ded28a94c78..aaafc7e2b88 100644
--- a/src/mame/drivers/chihiro.cpp
+++ b/src/mame/drivers/chihiro.cpp
@@ -1700,15 +1700,17 @@ WRITE32_MEMBER(chihiro_state::mediaboard_w)
xbox_base_devs.pic8259_2->ir2_w(0);
}
-ADDRESS_MAP_START(chihiro_state::chihiro_map)
- AM_IMPORT_FROM(xbox_base_map)
- AM_RANGE(0xff000000, 0xff07ffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chihiro_state::chihiro_map_io)
- AM_IMPORT_FROM(xbox_base_map_io)
- AM_RANGE(0x4000, 0x40ff) AM_READWRITE(mediaboard_r, mediaboard_w)
-ADDRESS_MAP_END
+void chihiro_state::chihiro_map(address_map &map)
+{
+ xbox_base_map(map);
+ map(0xff000000, 0xff07ffff).rom().region("bios", 0).mirror(0x00f80000);
+}
+
+void chihiro_state::chihiro_map_io(address_map &map)
+{
+ xbox_base_map_io(map);
+ map(0x4000, 0x40ff).rw(this, FUNC(chihiro_state::mediaboard_r), FUNC(chihiro_state::mediaboard_w));
+}
static INPUT_PORTS_START(chihiro)
PORT_START("TILT")
diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp
index f1bfc6cd1a5..9cd02c1b445 100644
--- a/src/mame/drivers/chinagat.cpp
+++ b/src/mame/drivers/chinagat.cpp
@@ -334,75 +334,81 @@ WRITE_LINE_MEMBER(chinagat_state::saiyugoub1_m5205_irq_w)
m_adpcm_sound_irq = 1;
}
-ADDRESS_MAP_START(chinagat_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x3000, 0x317f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3400, 0x357f) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3800, 0x397f) AM_WRITE_BANK("bank3") AM_SHARE("spriteram")
- AM_RANGE(0x3e00, 0x3e04) AM_WRITE(interrupt_w)
- AM_RANGE(0x3e06, 0x3e06) AM_WRITEONLY AM_SHARE("scrolly_lo")
- AM_RANGE(0x3e07, 0x3e07) AM_WRITEONLY AM_SHARE("scrollx_lo")
- AM_RANGE(0x3f00, 0x3f00) AM_WRITE(video_ctrl_w)
- AM_RANGE(0x3f01, 0x3f01) AM_WRITE(bankswitch_w)
- AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3f01, 0x3f01) AM_READ_PORT("DSW1")
- AM_RANGE(0x3f02, 0x3f02) AM_READ_PORT("DSW2")
- AM_RANGE(0x3f03, 0x3f03) AM_READ_PORT("P1")
- AM_RANGE(0x3f04, 0x3f04) AM_READ_PORT("P2")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinagat_state::sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x2000, 0x2000) AM_WRITE(sub_bankswitch_w)
- AM_RANGE(0x2800, 0x2800) AM_WRITE(sub_irq_ack_w) /* Called on CPU start and after return from jump table */
+void chinagat_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("share1");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(chinagat_state::ddragon_fgvideoram_w)).share("fgvideoram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(chinagat_state::ddragon_bgvideoram_w)).share("bgvideoram");
+ map(0x3000, 0x317f).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3400, 0x357f).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x3800, 0x397f).bankw("bank3").share("spriteram");
+ map(0x3e00, 0x3e04).w(this, FUNC(chinagat_state::interrupt_w));
+ map(0x3e06, 0x3e06).writeonly().share("scrolly_lo");
+ map(0x3e07, 0x3e07).writeonly().share("scrollx_lo");
+ map(0x3f00, 0x3f00).w(this, FUNC(chinagat_state::video_ctrl_w));
+ map(0x3f01, 0x3f01).w(this, FUNC(chinagat_state::bankswitch_w));
+ map(0x3f00, 0x3f00).portr("SYSTEM");
+ map(0x3f01, 0x3f01).portr("DSW1");
+ map(0x3f02, 0x3f02).portr("DSW2");
+ map(0x3f03, 0x3f03).portr("P1");
+ map(0x3f04, 0x3f04).portr("P2");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+void chinagat_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("share1");
+ map(0x2000, 0x2000).w(this, FUNC(chinagat_state::sub_bankswitch_w));
+ map(0x2800, 0x2800).w(this, FUNC(chinagat_state::sub_irq_ack_w)); /* Called on CPU start and after return from jump table */
// AM_RANGE(0x2a2b, 0x2a2b) AM_READNOP /* What lives here? */
// AM_RANGE(0x2a30, 0x2a30) AM_READNOP /* What lives here? */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank4")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinagat_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinagat_state::ym2203c_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
+ map(0x4000, 0x7fff).bankr("bank4");
+ map(0x8000, 0xffff).rom();
+}
+
+void chinagat_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xA000, 0xA000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void chinagat_state::ym2203c_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
// 8804 and/or 8805 make a gong sound when the coin goes in
// but only on the title screen....
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
+ map(0x8800, 0x8801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
// AM_RANGE(0x8802, 0x8802) AM_DEVREADWRITE("oki", okim6295_device, read, write)
// AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
+ map(0x8804, 0x8805).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
// AM_RANGE(0x8804, 0x8804) AM_WRITEONLY
// AM_RANGE(0x8805, 0x8805) AM_WRITEONLY
// AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
// AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinagat_state::saiyugoub1_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_WRITE(saiyugoub1_mcu_command_w)
- AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinagat_state::i8748_map)
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x0400, 0x07ff) AM_ROM /* i8749 version */
-ADDRESS_MAP_END
+ map(0xA000, 0xA000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void chinagat_state::saiyugoub1_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).w(this, FUNC(chinagat_state::saiyugoub1_mcu_command_w));
+ map(0xA000, 0xA000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void chinagat_state::i8748_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x07ff).rom(); /* i8749 version */
+}
diff --git a/src/mame/drivers/chinsan.cpp b/src/mame/drivers/chinsan.cpp
index 4667ff7b67e..82221bdc519 100644
--- a/src/mame/drivers/chinsan.cpp
+++ b/src/mame/drivers/chinsan.cpp
@@ -105,33 +105,37 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(chinsan_state::chinsan_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("color_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinsan_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinsan_state::chinsan_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x20, 0x20) AM_WRITE(adpcm_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chinsan_state::mayumi_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x30, 0x30) AM_READ_PORT("extra") AM_WRITE(ctrl_w)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void chinsan_state::chinsan_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram().share("nvram");
+ map(0xe000, 0xefff).ram().share("video_ram");
+ map(0xf000, 0xf7ff).ram().share("color_ram");
+}
+
+void chinsan_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+}
+
+void chinsan_state::chinsan_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x10, 0x11).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x20, 0x20).w(this, FUNC(chinsan_state::adpcm_w));
+ map(0x30, 0x30).w(this, FUNC(chinsan_state::ctrl_w));
+}
+
+void chinsan_state::mayumi_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x30, 0x30).portr("extra").w(this, FUNC(chinsan_state::ctrl_w));
+ map(0xc0, 0xc3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xd0, 0xd1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
//**************************************************************************
diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp
index 2f644db3291..00e59fe4604 100644
--- a/src/mame/drivers/chqflag.cpp
+++ b/src/mame/drivers/chqflag.cpp
@@ -138,36 +138,38 @@ WRITE8_MEMBER(chqflag_state::chqflag_sh_irqtrigger_w)
/****************************************************************************/
-ADDRESS_MAP_START(chqflag_state::chqflag_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_DEVICE("bank1000", address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x2007) AM_DEVREADWRITE("k051960", k051960_device, k051937_r, k051937_w) /* Sprite control registers */
- AM_RANGE(0x2400, 0x27ff) AM_DEVREADWRITE("k051960", k051960_device, k051960_r, k051960_w) /* Sprite RAM */
- AM_RANGE(0x2800, 0x2fff) AM_READ(k051316_2_ramrom_r) AM_DEVWRITE("k051316_2", k051316_device, write) /* 051316 zoom/rotation (chip 2) */
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound code # */
- AM_RANGE(0x3001, 0x3001) AM_WRITE(chqflag_sh_irqtrigger_w) /* cause interrupt on audio CPU */
- AM_RANGE(0x3002, 0x3002) AM_WRITE(chqflag_bankswitch_w) /* bankswitch control */
- AM_RANGE(0x3003, 0x3003) AM_WRITE(chqflag_vreg_w) /* enable K051316 ROM reading */
- AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW1") /* DIPSW #1 */
- AM_RANGE(0x3200, 0x3200) AM_READ_PORT("IN1") /* COINSW, STARTSW, test mode */
- AM_RANGE(0x3201, 0x3201) AM_READ_PORT("IN0") /* DIPSW #3, SW 4 */
- AM_RANGE(0x3203, 0x3203) AM_READ_PORT("DSW2") /* DIPSW #2 */
- AM_RANGE(0x3300, 0x3300) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog timer */
- AM_RANGE(0x3400, 0x341f) AM_DEVREADWRITE("k051733", k051733_device, read, write) /* 051733 (protection) */
- AM_RANGE(0x3500, 0x350f) AM_DEVWRITE("k051316_1", k051316_device, ctrl_w) /* 051316 control registers (chip 1) */
- AM_RANGE(0x3600, 0x360f) AM_DEVWRITE("k051316_2", k051316_device, ctrl_w) /* 051316 control registers (chip 2) */
- AM_RANGE(0x3700, 0x3700) AM_WRITE(select_analog_ctrl_w) /* select accelerator/wheel */
- AM_RANGE(0x3701, 0x3701) AM_READ_PORT("IN2") /* Brake + Shift + ? */
- AM_RANGE(0x3702, 0x3702) AM_READWRITE(analog_read_r, select_analog_ctrl_w) /* accelerator/wheel */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x48000) /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(chqflag_state::bank1000_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_READ(k051316_1_ramrom_r) AM_DEVWRITE("k051316_1", k051316_device, write)
- AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
+void chqflag_state::chqflag_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1fff).m(m_bank1000, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x2007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); /* Sprite control registers */
+ map(0x2400, 0x27ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); /* Sprite RAM */
+ map(0x2800, 0x2fff).r(this, FUNC(chqflag_state::k051316_2_ramrom_r)).w(m_k051316_2, FUNC(k051316_device::write)); /* 051316 zoom/rotation (chip 2) */
+ map(0x3000, 0x3000).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound code # */
+ map(0x3001, 0x3001).w(this, FUNC(chqflag_state::chqflag_sh_irqtrigger_w)); /* cause interrupt on audio CPU */
+ map(0x3002, 0x3002).w(this, FUNC(chqflag_state::chqflag_bankswitch_w)); /* bankswitch control */
+ map(0x3003, 0x3003).w(this, FUNC(chqflag_state::chqflag_vreg_w)); /* enable K051316 ROM reading */
+ map(0x3100, 0x3100).portr("DSW1"); /* DIPSW #1 */
+ map(0x3200, 0x3200).portr("IN1"); /* COINSW, STARTSW, test mode */
+ map(0x3201, 0x3201).portr("IN0"); /* DIPSW #3, SW 4 */
+ map(0x3203, 0x3203).portr("DSW2"); /* DIPSW #2 */
+ map(0x3300, 0x3300).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog timer */
+ map(0x3400, 0x341f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* 051733 (protection) */
+ map(0x3500, 0x350f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)); /* 051316 control registers (chip 1) */
+ map(0x3600, 0x360f).w(m_k051316_2, FUNC(k051316_device::ctrl_w)); /* 051316 control registers (chip 2) */
+ map(0x3700, 0x3700).w(this, FUNC(chqflag_state::select_analog_ctrl_w)); /* select accelerator/wheel */
+ map(0x3701, 0x3701).portr("IN2"); /* Brake + Shift + ? */
+ map(0x3702, 0x3702).rw(this, FUNC(chqflag_state::analog_read_r), FUNC(chqflag_state::select_analog_ctrl_w)); /* accelerator/wheel */
+ map(0x4000, 0x7fff).bankr("rombank"); /* banked ROM */
+ map(0x8000, 0xffff).rom().region("maincpu", 0x48000); /* ROM */
+}
+
+void chqflag_state::bank1000_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x17ff).r(this, FUNC(chqflag_state::k051316_1_ramrom_r)).w(m_k051316_1, FUNC(k051316_device::write));
+ map(0x1800, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
WRITE8_MEMBER(chqflag_state::k007232_bankswitch_w)
@@ -185,19 +187,20 @@ WRITE8_MEMBER(chqflag_state::k007232_bankswitch_w)
m_k007232_2->set_bank(bank_A, bank_B);
}
-ADDRESS_MAP_START(chqflag_state::chqflag_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
- AM_RANGE(0x9000, 0x9000) AM_WRITE(k007232_bankswitch_w) /* 007232 bankswitch */
- AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) /* 007232 (chip 1) */
- AM_RANGE(0xa01c, 0xa01c) AM_WRITE(k007232_extvolume_w) /* extra volume, goes to the 007232 w/ A4 */
+void chqflag_state::chqflag_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM */
+ map(0x8000, 0x87ff).ram(); /* RAM */
+ map(0x9000, 0x9000).w(this, FUNC(chqflag_state::k007232_bankswitch_w)); /* 007232 bankswitch */
+ map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 (chip 1) */
+ map(0xa01c, 0xa01c).w(this, FUNC(chqflag_state::k007232_extvolume_w)); /* extra volume, goes to the 007232 w/ A4 */
/* selecting a different latch for the external port */
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 (chip 2) */
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* engine sound volume */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ??? */
-ADDRESS_MAP_END
+ map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 (chip 2) */
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe000).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); /* engine sound volume */
+ map(0xf000, 0xf000).nopw(); /* ??? */
+}
static INPUT_PORTS_START( chqflag )
diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp
index 8c3f2b89418..3bcdd3e55cf 100644
--- a/src/mame/drivers/chsuper.cpp
+++ b/src/mame/drivers/chsuper.cpp
@@ -206,29 +206,31 @@ WRITE8_MEMBER( chsuper_state::chsuper_outportb_w ) // Port EFh
* Memory Map handlers *
***************************/
-ADDRESS_MAP_START(chsuper_state::chsuper_prg_map)
- AM_RANGE(0x00000, 0x0efff) AM_ROM
- AM_RANGE(0x00000, 0x01fff) AM_WRITE( chsuper_vram_w )
- AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_REGION("maincpu", 0xf000)
- AM_RANGE(0xfb000, 0xfbfff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void chsuper_state::chsuper_prg_map(address_map &map)
+{
+ map(0x00000, 0x0efff).rom();
+ map(0x00000, 0x01fff).w(this, FUNC(chsuper_state::chsuper_vram_w));
+ map(0x0f000, 0x0ffff).ram().region("maincpu", 0xf000);
+ map(0xfb000, 0xfbfff).ram().share("nvram");
+}
// AM_RANGE(0xaff8, 0xaff8) AM_DEVWRITE_MODERN("oki", okim6295_device, write)
-ADDRESS_MAP_START(chsuper_state::chsuper_portmap)
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs
- AM_RANGE( 0x00e8, 0x00e8 ) AM_READ_PORT("IN0")
- AM_RANGE( 0x00e9, 0x00e9 ) AM_READ_PORT("IN1")
- AM_RANGE( 0x00ea, 0x00ea ) AM_READ_PORT("DSW")
- AM_RANGE( 0x00ed, 0x00ed ) AM_WRITENOP // mirror of EFh, but with bit0 active...
- AM_RANGE( 0x00ee, 0x00ee ) AM_WRITE(chsuper_outporta_w)
- AM_RANGE( 0x00ef, 0x00ef ) AM_WRITE(chsuper_outportb_w)
- AM_RANGE( 0x00fc, 0x00fc ) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE( 0x00fd, 0x00fd ) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE( 0x00fe, 0x00fe ) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
- AM_RANGE( 0x8300, 0x8300 ) AM_READ_PORT("IN2") // valid input port present in test mode.
- AM_RANGE( 0xff20, 0xff3f ) AM_DEVWRITE("dac", dac_byte_interface, write) // unk writes
-ADDRESS_MAP_END
+void chsuper_state::chsuper_portmap(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // Z180 internal regs
+ map(0x00e8, 0x00e8).portr("IN0");
+ map(0x00e9, 0x00e9).portr("IN1");
+ map(0x00ea, 0x00ea).portr("DSW");
+ map(0x00ed, 0x00ed).nopw(); // mirror of EFh, but with bit0 active...
+ map(0x00ee, 0x00ee).w(this, FUNC(chsuper_state::chsuper_outporta_w));
+ map(0x00ef, 0x00ef).w(this, FUNC(chsuper_state::chsuper_outportb_w));
+ map(0x00fc, 0x00fc).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x00fd, 0x00fd).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x00fe, 0x00fe).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x8300, 0x8300).portr("IN2"); // valid input port present in test mode.
+ map(0xff20, 0xff3f).w("dac", FUNC(dac_byte_interface::write)); // unk writes
+}
/* About Sound...
@@ -346,9 +348,10 @@ static GFXDECODE_START( chsuper )
GFXDECODE_ENTRY( "gfx1", 0x00000, charlayout, 0, 1 )
GFXDECODE_END
-ADDRESS_MAP_START(chsuper_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void chsuper_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
/***************************
diff --git a/src/mame/drivers/cidelsa.cpp b/src/mame/drivers/cidelsa.cpp
index 7864d3a5985..3927d2c605e 100644
--- a/src/mame/drivers/cidelsa.cpp
+++ b/src/mame/drivers/cidelsa.cpp
@@ -141,61 +141,69 @@ WRITE8_MEMBER( draco_state::out1_w )
// Destroyer
-ADDRESS_MAP_START(cidelsa_state::destryer_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map)
- AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cidelsa_state::destryera_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map)
- AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cidelsa_state::destryer_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(destryer_out1_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x07) AM_WRITE(cdp1869_w)
-ADDRESS_MAP_END
+void cidelsa_state::destryer_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).ram().share("nvram");
+ map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map));
+ map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map));
+}
+
+void cidelsa_state::destryera_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x30ff).ram().share("nvram");
+ map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map));
+ map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map));
+}
+
+void cidelsa_state::destryer_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN0").w(this, FUNC(cidelsa_state::destryer_out1_w));
+ map(0x02, 0x02).portr("IN1");
+ map(0x03, 0x07).w(this, FUNC(cidelsa_state::cdp1869_w));
+}
// Altair
-ADDRESS_MAP_START(cidelsa_state::altair_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map)
- AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map)
-ADDRESS_MAP_END
+void cidelsa_state::altair_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x30ff).ram().share("nvram");
+ map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map));
+ map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map));
+}
-ADDRESS_MAP_START(cidelsa_state::altair_io_map)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("ic23", cdp1852_device, read) AM_DEVWRITE("ic26", cdp1852_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ic24", cdp1852_device, read)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("ic25", cdp1852_device, read)
- AM_RANGE(0x03, 0x07) AM_WRITE(cdp1869_w)
-ADDRESS_MAP_END
+void cidelsa_state::altair_io_map(address_map &map)
+{
+ map(0x01, 0x01).r("ic23", FUNC(cdp1852_device::read)).w("ic26", FUNC(cdp1852_device::write));
+ map(0x02, 0x02).r("ic24", FUNC(cdp1852_device::read));
+ map(0x04, 0x04).r("ic25", FUNC(cdp1852_device::read));
+ map(0x03, 0x07).w(this, FUNC(cidelsa_state::cdp1869_w));
+}
// Draco
-ADDRESS_MAP_START(draco_state::draco_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map)
- AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(draco_state::draco_io_map)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("ic29", cdp1852_device, read) AM_DEVWRITE("ic32", cdp1852_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ic30", cdp1852_device, read)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("ic31", cdp1852_device, read)
- AM_RANGE(0x03, 0x07) AM_WRITE(cdp1869_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(draco_state::draco_sound_map)
- AM_RANGE(0x000, 0x3ff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void draco_state::draco_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x83ff).ram().share("nvram");
+ map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map));
+ map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map));
+}
+
+void draco_state::draco_io_map(address_map &map)
+{
+ map(0x01, 0x01).r("ic29", FUNC(cdp1852_device::read)).w("ic32", FUNC(cdp1852_device::write));
+ map(0x02, 0x02).r("ic30", FUNC(cdp1852_device::read));
+ map(0x04, 0x04).r("ic31", FUNC(cdp1852_device::read));
+ map(0x03, 0x07).w(this, FUNC(draco_state::cdp1869_w));
+}
+
+void draco_state::draco_sound_map(address_map &map)
+{
+ map(0x000, 0x3ff).bankr("bank1");
+}
/* Input Ports */
diff --git a/src/mame/drivers/cinemat.cpp b/src/mame/drivers/cinemat.cpp
index 2a457edb9a1..85e2cabeaf5 100644
--- a/src/mame/drivers/cinemat.cpp
+++ b/src/mame/drivers/cinemat.cpp
@@ -283,52 +283,60 @@ WRITE8_MEMBER(cinemat_state::qb3_ram_bank_w)
*
*************************************/
-ADDRESS_MAP_START(cinemat_state::program_map_4k)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void cinemat_state::program_map_4k(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x0fff).rom();
+}
-ADDRESS_MAP_START(cinemat_state::program_map_8k)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM
- AM_RANGE(0x2000, 0x2fff) AM_MIRROR(0x1000) AM_ROM AM_REGION("maincpu", 0x1000)
-ADDRESS_MAP_END
+void cinemat_state::program_map_8k(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x0fff).mirror(0x1000).rom();
+ map(0x2000, 0x2fff).mirror(0x1000).rom().region("maincpu", 0x1000);
+}
-ADDRESS_MAP_START(cinemat_state::program_map_16k)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void cinemat_state::program_map_16k(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x3fff).rom();
+}
-ADDRESS_MAP_START(cinemat_state::program_map_32k)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void cinemat_state::program_map_32k(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(cinemat_state::data_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
-ADDRESS_MAP_END
+void cinemat_state::data_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+}
-ADDRESS_MAP_START(cinemat_state::data_map_qb3)
- AM_RANGE(0x0000, 0x03ff) AM_RAMBANK("bank1") AM_SHARE("rambase")
-ADDRESS_MAP_END
+void cinemat_state::data_map_qb3(address_map &map)
+{
+ map(0x0000, 0x03ff).bankrw("bank1").share("rambase");
+}
-ADDRESS_MAP_START(cinemat_state::io_map)
- AM_RANGE(0x00, 0x0f) AM_READ(inputs_r)
- AM_RANGE(0x10, 0x16) AM_READ(switches_r)
- AM_RANGE(0x17, 0x17) AM_READ(coin_input_r)
+void cinemat_state::io_map(address_map &map)
+{
+ map(0x00, 0x0f).r(this, FUNC(cinemat_state::inputs_r));
+ map(0x10, 0x16).r(this, FUNC(cinemat_state::switches_r));
+ map(0x17, 0x17).r(this, FUNC(cinemat_state::coin_input_r));
- AM_RANGE(0x00, 0x07) AM_DEVWRITE("outlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+ map(0x00, 0x07).w(m_outlatch, FUNC(ls259_device::write_d0));
+}
-ADDRESS_MAP_START(cinemat_state::io_map_qb3)
- AM_IMPORT_FROM(io_map)
+void cinemat_state::io_map_qb3(address_map &map)
+{
+ io_map(map);
// Some of the outputs here are definitely not mapped through the LS259, since they use multiple bits of data
- AM_RANGE(0x00, 0x00) AM_WRITE(qb3_ram_bank_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(qb3_sound_fifo_w)
- AM_RANGE(0x0f, 0x0f) AM_READ(qb3_frame_r)
-ADDRESS_MAP_END
+ map(0x00, 0x00).w(this, FUNC(cinemat_state::qb3_ram_bank_w));
+ map(0x04, 0x04).w(this, FUNC(cinemat_state::qb3_sound_fifo_w));
+ map(0x0f, 0x0f).r(this, FUNC(cinemat_state::qb3_frame_r));
+}
diff --git a/src/mame/drivers/circus.cpp b/src/mame/drivers/circus.cpp
index 764631bfbac..79f5c261639 100644
--- a/src/mame/drivers/circus.cpp
+++ b/src/mame/drivers/circus.cpp
@@ -63,18 +63,19 @@ READ8_MEMBER(circus_state::circus_paddle_r)
return ioport("PADDLE")->read();
}
-ADDRESS_MAP_START(circus_state::circus_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2000) AM_WRITE(circus_clown_x_w)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(circus_clown_y_w)
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(circus_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x8000) AM_RAM_WRITE(circus_clown_z_w)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW")
- AM_RANGE(0xd000, 0xd000) AM_READ(circus_paddle_r)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void circus_state::circus_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x1000, 0x1fff).rom();
+ map(0x2000, 0x2000).w(this, FUNC(circus_state::circus_clown_x_w));
+ map(0x3000, 0x3000).w(this, FUNC(circus_state::circus_clown_y_w));
+ map(0x4000, 0x43ff).ram().w(this, FUNC(circus_state::circus_videoram_w)).share("videoram");
+ map(0x8000, 0x8000).ram().w(this, FUNC(circus_state::circus_clown_z_w));
+ map(0xa000, 0xa000).portr("INPUTS");
+ map(0xc000, 0xc000).portr("DSW");
+ map(0xd000, 0xd000).r(this, FUNC(circus_state::circus_paddle_r));
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( circus )
diff --git a/src/mame/drivers/circusc.cpp b/src/mame/drivers/circusc.cpp
index 85dc634d72c..07c6f24d203 100644
--- a/src/mame/drivers/circusc.cpp
+++ b/src/mame/drivers/circusc.cpp
@@ -152,34 +152,36 @@ WRITE_LINE_MEMBER(circusc_state::irq_mask_w)
m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
}
-ADDRESS_MAP_START(circusc_state::circusc_map)
- AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x03f8) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x0400, 0x0400) AM_MIRROR(0x03ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* WDOG */
- AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x03ff) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* SOUND DATA */
- AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_WRITE(circusc_sh_irqtrigger_w) /* SOUND-ON causes interrupt on audio CPU */
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03fc) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x03fc) AM_READ_PORT("P1")
- AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x03fc) AM_READ_PORT("P2")
- AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x03fc) AM_READNOP /* unpopulated DIPSW 3*/
- AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x03ff) AM_READ_PORT("DSW2")
- AM_RANGE(0x1c00, 0x1c00) AM_MIRROR(0x03ff) AM_WRITEONLY AM_SHARE("scroll") /* VGAP */
- AM_RANGE(0x2000, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(circusc_colorram_w) AM_SHARE("colorram") /* colorram */
- AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(circusc_videoram_w) AM_SHARE("videoram") /* videoram */
- AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("spriteram_2") /* spriteram2 */
- AM_RANGE(0x3900, 0x39ff) AM_RAM AM_SHARE("spriteram") /* spriteram */
- AM_RANGE(0x3a00, 0x3fff) AM_RAM
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(circusc_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* CS0 */
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(circusc_sh_timer_r) /* CS1 */
- AM_RANGE(0xa000, 0xa07f) AM_MIRROR(0x1f80) AM_WRITE(circusc_sound_w) /* CS2 - CS6 */
-ADDRESS_MAP_END
+void circusc_state::circusc_map(address_map &map)
+{
+ map(0x0000, 0x0007).mirror(0x03f8).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x0400, 0x0400).mirror(0x03ff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* WDOG */
+ map(0x0800, 0x0800).mirror(0x03ff).w("soundlatch", FUNC(generic_latch_8_device::write)); /* SOUND DATA */
+ map(0x0c00, 0x0c00).mirror(0x03ff).w(this, FUNC(circusc_state::circusc_sh_irqtrigger_w)); /* SOUND-ON causes interrupt on audio CPU */
+ map(0x1000, 0x1000).mirror(0x03fc).portr("SYSTEM");
+ map(0x1001, 0x1001).mirror(0x03fc).portr("P1");
+ map(0x1002, 0x1002).mirror(0x03fc).portr("P2");
+ map(0x1003, 0x1003).mirror(0x03fc).nopr(); /* unpopulated DIPSW 3*/
+ map(0x1400, 0x1400).mirror(0x03ff).portr("DSW1");
+ map(0x1800, 0x1800).mirror(0x03ff).portr("DSW2");
+ map(0x1c00, 0x1c00).mirror(0x03ff).writeonly().share("scroll"); /* VGAP */
+ map(0x2000, 0x2fff).ram();
+ map(0x3000, 0x33ff).ram().w(this, FUNC(circusc_state::circusc_colorram_w)).share("colorram"); /* colorram */
+ map(0x3400, 0x37ff).ram().w(this, FUNC(circusc_state::circusc_videoram_w)).share("videoram"); /* videoram */
+ map(0x3800, 0x38ff).ram().share("spriteram_2"); /* spriteram2 */
+ map(0x3900, 0x39ff).ram().share("spriteram"); /* spriteram */
+ map(0x3a00, 0x3fff).ram();
+ map(0x6000, 0xffff).rom();
+}
+
+void circusc_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0x1c00).ram();
+ map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read)); /* CS0 */
+ map(0x8000, 0x8000).mirror(0x1fff).r(this, FUNC(circusc_state::circusc_sh_timer_r)); /* CS1 */
+ map(0xa000, 0xa07f).mirror(0x1f80).w(this, FUNC(circusc_state::circusc_sound_w)); /* CS2 - CS6 */
+}
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp
index 03256f9d147..73738bdfabc 100644
--- a/src/mame/drivers/cischeat.cpp
+++ b/src/mame/drivers/cischeat.cpp
@@ -196,44 +196,45 @@ Cisco Heat.
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::bigrun_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") AM_WRITE(leds_out_w) // Coins
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN2") AM_WRITE(unknown_out_w) // Buttons
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN3") AM_WRITE(motor_out_w) // Motor Limit Switches
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN4") AM_WRITE(wheel_out_w) // DSW 1 & 2
- AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu
- AM_RANGE(0x08000a, 0x08000b) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu
- AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // ??
- AM_RANGE(0x080010, 0x080011) AM_READWRITE(bigrun_ip_select_r, ip_select_w)
- AM_RANGE(0x080012, 0x080013) AM_WRITE(ip_select_plus1_w)
- AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only
- AM_RANGE(0x082200, 0x082201) AM_READ_PORT("IN5") // DSW 3 (4 bits)
- AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset
- AM_RANGE(0x082308, 0x082309) AM_WRITE(cischeat_comms_w)
- AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w)
+void cischeat_state::bigrun_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x080000, 0x080001).portr("IN1").w(this, FUNC(cischeat_state::leds_out_w)); // Coins
+ map(0x080002, 0x080003).portr("IN2").w(this, FUNC(cischeat_state::unknown_out_w)); // Buttons
+ map(0x080004, 0x080005).portr("IN3").w(this, FUNC(cischeat_state::motor_out_w)); // Motor Limit Switches
+ map(0x080006, 0x080007).portr("IN4").w(this, FUNC(cischeat_state::wheel_out_w)); // DSW 1 & 2
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu
+ map(0x08000a, 0x08000b).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu
+ map(0x08000c, 0x08000d).nopw(); // ??
+ map(0x080010, 0x080011).rw(this, FUNC(cischeat_state::bigrun_ip_select_r), FUNC(cischeat_state::ip_select_w));
+ map(0x080012, 0x080013).w(this, FUNC(cischeat_state::ip_select_plus1_w));
+ map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082108, 0x082109).noprw(); // ? written with 0 only
+ map(0x082200, 0x082201).portr("IN5"); // DSW 3 (4 bits)
+ map(0x082208, 0x082209).noprw(); // watchdog reset
+ map(0x082308, 0x082309).w(this, FUNC(cischeat_state::cischeat_comms_w));
+ map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w));
/* It's actually 0x840000-0x847ff, divided in four banks and shared with other boards.
Each board expects reads from the other boards and writes to own bank.
Amusingly, if you run the communication test as ID = X then soft reset -> ID = Y, what was at ID = X gets an OK in the second test
so it's likely to be the only thing needed. */
- AM_RANGE(0x084000, 0x0847ff) AM_RAM // Linking with other units
- AM_RANGE(0x088000, 0x08bfff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2
- AM_RANGE(0x08c000, 0x08ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1
+ map(0x084000, 0x0847ff).ram(); // Linking with other units
+ map(0x088000, 0x08bfff).ram().share("share2"); // Sharedram with sub CPU#2
+ map(0x08c000, 0x08ffff).ram().share("share1"); // Sharedram with sub CPU#1
/* Only writes to the first 0x40000 bytes affect the tilemaps: */
/* either these games support larger tilemaps or have more ram than needed */
- AM_RANGE(0x090000, 0x093fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0
- AM_RANGE(0x094000, 0x097fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1
- AM_RANGE(0x098000, 0x09bfff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2
+ map(0x090000, 0x093fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0
+ map(0x094000, 0x097fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1
+ map(0x098000, 0x09bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2
- AM_RANGE(0x09c000, 0x09ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM
- AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("user1",0) // ROM
-ADDRESS_MAP_END
+ map(0x09c000, 0x09ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM
+ map(0x100000, 0x13ffff).rom().region("user1", 0); // ROM
+}
/**************************************************************************
@@ -250,27 +251,28 @@ ADDRESS_MAP_END
bec00-befff < text */
-ADDRESS_MAP_START(cischeat_state::cischeat_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") AM_WRITE(leds_out_w) // Coins
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN2") AM_WRITE(unknown_out_w) // Buttons
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN3") AM_WRITE(motor_out_w) // Motor Limit Switches
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN4") AM_WRITE(wheel_out_w) // DSW 1 & 2
- AM_RANGE(0x08000a, 0x08000b) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu
- AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // ??
- AM_RANGE(0x080010, 0x080011) AM_READWRITE(cischeat_ip_select_r, ip_select_w)
- AM_RANGE(0x080012, 0x080013) AM_WRITENOP // value above + 1
- AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only
- AM_RANGE(0x082200, 0x082201) AM_READ_PORT("IN5") // DSW 3 (4 bits)
- AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset
- AM_RANGE(0x082300, 0x082301) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) AM_WRITE(cischeat_soundlatch_w) // From sound cpu
- AM_RANGE(0x082308, 0x082309) AM_WRITE(cischeat_comms_w)
- AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w)
-
- AM_RANGE(0x088000, 0x0887ff) AM_RAM // Linking with other units
+void cischeat_state::cischeat_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x080000, 0x080001).portr("IN1").w(this, FUNC(cischeat_state::leds_out_w)); // Coins
+ map(0x080002, 0x080003).portr("IN2").w(this, FUNC(cischeat_state::unknown_out_w)); // Buttons
+ map(0x080004, 0x080005).portr("IN3").w(this, FUNC(cischeat_state::motor_out_w)); // Motor Limit Switches
+ map(0x080006, 0x080007).portr("IN4").w(this, FUNC(cischeat_state::wheel_out_w)); // DSW 1 & 2
+ map(0x08000a, 0x08000b).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu
+ map(0x08000c, 0x08000d).nopw(); // ??
+ map(0x080010, 0x080011).rw(this, FUNC(cischeat_state::cischeat_ip_select_r), FUNC(cischeat_state::ip_select_w));
+ map(0x080012, 0x080013).nopw(); // value above + 1
+ map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082108, 0x082109).noprw(); // ? written with 0 only
+ map(0x082200, 0x082201).portr("IN5"); // DSW 3 (4 bits)
+ map(0x082208, 0x082209).noprw(); // watchdog reset
+ map(0x082300, 0x082301).r(m_soundlatch2, FUNC(generic_latch_16_device::read)).w(this, FUNC(cischeat_state::cischeat_soundlatch_w)); // From sound cpu
+ map(0x082308, 0x082309).w(this, FUNC(cischeat_state::cischeat_comms_w));
+ map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w));
+
+ map(0x088000, 0x0887ff).ram(); // Linking with other units
/* Only the first 0x800 bytes are tested but:
CPU #0 PC 0000278c: warning - write 68c0 to unmapped memory address 0009c7fe
@@ -278,19 +280,19 @@ ADDRESS_MAP_START(cischeat_state::cischeat_map)
No mem access error from the other CPU's, though.. */
/* this is the right order of sharedram's */
- AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2
- AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1
+ map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2
+ map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1
/* Only writes to the first 0x40000 bytes affect the tilemaps: */
/* either these games support larger tilemaps or have more ram than needed */
- AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0
- AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1
- AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes
+ map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0
+ map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1
+ map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM
-ADDRESS_MAP_END
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM
+ map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM
+}
/**************************************************************************
@@ -312,41 +314,42 @@ CPU #0 PC 002350 : Warning, vreg 0002 <- 0000
CPU #0 PC 00235C : Warning, vreg 0006 <- 0000
*/
-ADDRESS_MAP_START(cischeat_state::f1gpstar_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") // DSW 1 & 2
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN2") AM_WRITE(f1gpstar_motor_w) // Buttons
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN3") // ? Read at boot only
- AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu
- AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu
- AM_RANGE(0x08000c, 0x08000d) AM_READ_PORT("IN4") // DSW 3
- AM_RANGE(0x080010, 0x080011) AM_READ(f1gpstar_wheel_r) AM_WRITENOP // Accel + Driving Wheel
- AM_RANGE(0x080014, 0x080015) AM_WRITENOP
- AM_RANGE(0x080018, 0x080019) AM_WRITE(f1gpstar_soundint_w)
-
- AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only
- AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset
- AM_RANGE(0x082308, 0x082309) AM_READNOP AM_WRITE(f1gpstar_comms_w)
- AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w)
-
- AM_RANGE(0x088000, 0x0883ff) AM_RAM // Linking with other units
-
- AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2
- AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1
+void cischeat_state::f1gpstar_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x080000, 0x080001).portr("IN1"); // DSW 1 & 2
+ map(0x080004, 0x080005).portr("IN2").w(this, FUNC(cischeat_state::f1gpstar_motor_w)); // Buttons
+ map(0x080006, 0x080007).portr("IN3"); // ? Read at boot only
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu
+ map(0x080008, 0x080009).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu
+ map(0x08000c, 0x08000d).portr("IN4"); // DSW 3
+ map(0x080010, 0x080011).r(this, FUNC(cischeat_state::f1gpstar_wheel_r)).nopw(); // Accel + Driving Wheel
+ map(0x080014, 0x080015).nopw();
+ map(0x080018, 0x080019).w(this, FUNC(cischeat_state::f1gpstar_soundint_w));
+
+ map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082108, 0x082109).noprw(); // ? written with 0 only
+ map(0x082208, 0x082209).noprw(); // watchdog reset
+ map(0x082308, 0x082309).nopr().w(this, FUNC(cischeat_state::f1gpstar_comms_w));
+ map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w));
+
+ map(0x088000, 0x0883ff).ram(); // Linking with other units
+
+ map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2
+ map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1
/* Only writes to the first 0x40000 bytes affect the tilemaps: */
/* either these games support larger tilemaps or have more ram than needed */
- AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0
- AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1
- AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes
+ map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0
+ map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1
+ map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM
-ADDRESS_MAP_END
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM
+ map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM
+}
/**************************************************************************
@@ -386,42 +389,43 @@ WRITE16_MEMBER(cischeat_state::wildplt_mux_w)
// Same as f1gpstar, but vregs are slightly different:
-ADDRESS_MAP_START(cischeat_state::wildplt_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") AM_WRITE(f1gpstr2_io_w) // DSW 1 & 2
- AM_RANGE(0x080004, 0x080005) AM_READ(wildplt_mux_r) AM_WRITE(wildplt_mux_w) // Buttons
- AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu
- AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu
- AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // 1000, 3000
- AM_RANGE(0x080010, 0x080011) AM_READ(wildplt_xy_r) AM_WRITE(ip_select_w) // X, Y
- AM_RANGE(0x080014, 0x080015) AM_WRITENOP
- AM_RANGE(0x080018, 0x080019) AM_READWRITE(f1gpstr2_ioready_r, f1gpstar_soundint_w)
-
- AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("shareio")
-
- AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only
- AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset
- AM_RANGE(0x082308, 0x082309) AM_READNOP AM_WRITE(f1gpstar_comms_w)
- AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w)
+void cischeat_state::wildplt_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x080000, 0x080001).portr("IN0").w(this, FUNC(cischeat_state::f1gpstr2_io_w)); // DSW 1 & 2
+ map(0x080004, 0x080005).r(this, FUNC(cischeat_state::wildplt_mux_r)).w(this, FUNC(cischeat_state::wildplt_mux_w)); // Buttons
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu
+ map(0x080008, 0x080009).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu
+ map(0x08000c, 0x08000d).nopw(); // 1000, 3000
+ map(0x080010, 0x080011).r(this, FUNC(cischeat_state::wildplt_xy_r)).w(this, FUNC(cischeat_state::ip_select_w)); // X, Y
+ map(0x080014, 0x080015).nopw();
+ map(0x080018, 0x080019).rw(this, FUNC(cischeat_state::f1gpstr2_ioready_r), FUNC(cischeat_state::f1gpstar_soundint_w));
+
+ map(0x081000, 0x081fff).ram().share("shareio");
+
+ map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082108, 0x082109).noprw(); // ? written with 0 only
+ map(0x082208, 0x082209).noprw(); // watchdog reset
+ map(0x082308, 0x082309).nopr().w(this, FUNC(cischeat_state::f1gpstar_comms_w));
+ map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w));
// AM_RANGE(0x088000, 0x088fff) AM_RAM // Linking with other units
- AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2
- AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1
+ map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2
+ map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1
/* Only writes to the first 0x40000 bytes affect the tilemaps: */
/* either these games support larger tilemaps or have more ram than needed */
- AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0
- AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1
- AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes
+ map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0
+ map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1
+ map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM
-ADDRESS_MAP_END
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM
+ map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM
+}
/**************************************************************************
@@ -429,44 +433,45 @@ ADDRESS_MAP_END
**************************************************************************/
// Same as f1gpstar, but vregs are slightly different:
-ADDRESS_MAP_START(cischeat_state::f1gpstr2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") AM_WRITE(f1gpstr2_io_w) // DSW 1 & 2
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN2") AM_WRITE(f1gpstar_motor_w) // Buttons
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN3") // ? Read at boot only
- AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu
- AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu
- AM_RANGE(0x08000c, 0x08000d) AM_READ_PORT("IN4") // DSW 3
- AM_RANGE(0x080010, 0x080011) AM_READ(f1gpstar_wheel_r) AM_WRITENOP
- AM_RANGE(0x080014, 0x080015) AM_WRITENOP
- AM_RANGE(0x080018, 0x080019) AM_READWRITE(f1gpstr2_ioready_r, f1gpstar_soundint_w)
-
- AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("shareio")
-
- AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w)
- AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only
- AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset
- AM_RANGE(0x082308, 0x082309) AM_READNOP AM_WRITE(f1gpstar_comms_w)
- AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w)
+void cischeat_state::f1gpstr2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x080000, 0x080001).portr("IN1").w(this, FUNC(cischeat_state::f1gpstr2_io_w)); // DSW 1 & 2
+ map(0x080004, 0x080005).portr("IN2").w(this, FUNC(cischeat_state::f1gpstar_motor_w)); // Buttons
+ map(0x080006, 0x080007).portr("IN3"); // ? Read at boot only
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu
+ map(0x080008, 0x080009).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu
+ map(0x08000c, 0x08000d).portr("IN4"); // DSW 3
+ map(0x080010, 0x080011).r(this, FUNC(cischeat_state::f1gpstar_wheel_r)).nopw();
+ map(0x080014, 0x080015).nopw();
+ map(0x080018, 0x080019).rw(this, FUNC(cischeat_state::f1gpstr2_ioready_r), FUNC(cischeat_state::f1gpstar_soundint_w));
+
+ map(0x081000, 0x081fff).ram().share("shareio");
+
+ map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082108, 0x082109).noprw(); // ? written with 0 only
+ map(0x082208, 0x082209).noprw(); // watchdog reset
+ map(0x082308, 0x082309).nopr().w(this, FUNC(cischeat_state::f1gpstar_comms_w));
+ map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w));
// 0x100 RAM banks instead of 0x200
- AM_RANGE(0x088000, 0x0887ff) AM_RAM // Linking with other units
+ map(0x088000, 0x0887ff).ram(); // Linking with other units
- AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2
- AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1
+ map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2
+ map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1
/* Only writes to the first 0x40000 bytes affect the tilemaps: */
/* either these games support larger tilemaps or have more ram than needed */
- AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0
- AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1
- AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes
+ map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0
+ map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1
+ map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM
-ADDRESS_MAP_END
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM
+ map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM
+}
/**************************************************************************
@@ -570,26 +575,27 @@ WRITE16_MEMBER(cischeat_state::scudhamm_oki_bank_w)
}
}
-ADDRESS_MAP_START(cischeat_state::scudhamm_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_WRITENOP // UNUSED LAYER
- AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082208, 0x082209) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll RAM 0
- AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll RAM 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram
- AM_RANGE(0x100000, 0x100001) AM_WRITE(scudhamm_oki_bank_w) // Sound
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0") AM_WRITE(scudhamm_leds_w) // Buttons
- AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) //
- AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w) // ?
- AM_RANGE(0x100040, 0x100041) AM_READ(scudhamm_analog_r) AM_WRITENOP // A / D
- AM_RANGE(0x100044, 0x100045) AM_READ(scudhamm_motor_pos_r) // Motor Position
- AM_RANGE(0x100050, 0x100051) AM_READ(scudhamm_motor_status_r) AM_WRITE(scudhamm_motor_command_w) // Motor Limit Switches
- AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("IN2") // 2 x DSW
-ADDRESS_MAP_END
+void cischeat_state::scudhamm_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x082000, 0x082005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).nopw(); // UNUSED LAYER
+ map(0x082100, 0x082105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082208, 0x082209).rw(m_watchdog, FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0000, 0x0a3fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll RAM 0
+ map(0x0b0000, 0x0b3fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll RAM 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // Work RAM + Spriteram
+ map(0x100000, 0x100001).w(this, FUNC(cischeat_state::scudhamm_oki_bank_w)); // Sound
+ map(0x100008, 0x100009).portr("IN0").w(this, FUNC(cischeat_state::scudhamm_leds_w)); // Buttons
+ map(0x100015, 0x100015).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x100019, 0x100019).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+ map(0x10001c, 0x10001d).w(this, FUNC(cischeat_state::scudhamm_enable_w)); // ?
+ map(0x100040, 0x100041).r(this, FUNC(cischeat_state::scudhamm_analog_r)).nopw(); // A / D
+ map(0x100044, 0x100045).r(this, FUNC(cischeat_state::scudhamm_motor_pos_r)); // Motor Position
+ map(0x100050, 0x100051).r(this, FUNC(cischeat_state::scudhamm_motor_status_r)).w(this, FUNC(cischeat_state::scudhamm_motor_command_w)); // Motor Limit Switches
+ map(0x10005c, 0x10005d).portr("IN2"); // 2 x DSW
+}
/**************************************************************************
@@ -654,24 +660,25 @@ WRITE16_MEMBER(cischeat_state::armchmp2_leds_w)
}
}
-ADDRESS_MAP_START(cischeat_state::armchmp2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_WRITENOP // UNUSED LAYER
- AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082208, 0x082209) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0
- AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN2") AM_WRITE(scudhamm_oki_bank_w) // DSW + Sound
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("IN3") // DSW
- AM_RANGE(0x100008, 0x100009) AM_READWRITE(armchmp2_buttons_r, armchmp2_leds_w) // Leds + Coin Counters + Buttons + Sensors
- AM_RANGE(0x10000c, 0x10000d) AM_READ(armchmp2_analog_r) AM_WRITENOP // A / D
- AM_RANGE(0x100010, 0x100011) AM_READWRITE(armchmp2_motor_status_r, armchmp2_motor_command_w) // Motor Limit Switches?
- AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff ) // Sound
- AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff ) //
-ADDRESS_MAP_END
+void cischeat_state::armchmp2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x082000, 0x082005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).nopw(); // UNUSED LAYER
+ map(0x082100, 0x082105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082208, 0x082209).rw(m_watchdog, FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0
+ map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // Work RAM + Spriteram
+ map(0x100000, 0x100001).portr("IN2").w(this, FUNC(cischeat_state::scudhamm_oki_bank_w)); // DSW + Sound
+ map(0x100004, 0x100005).portr("IN3"); // DSW
+ map(0x100008, 0x100009).rw(this, FUNC(cischeat_state::armchmp2_buttons_r), FUNC(cischeat_state::armchmp2_leds_w)); // Leds + Coin Counters + Buttons + Sensors
+ map(0x10000c, 0x10000d).r(this, FUNC(cischeat_state::armchmp2_analog_r)).nopw(); // A / D
+ map(0x100010, 0x100011).rw(this, FUNC(cischeat_state::armchmp2_motor_status_r), FUNC(cischeat_state::armchmp2_motor_command_w)); // Motor Limit Switches?
+ map(0x100015, 0x100015).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x100019, 0x100019).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+}
/**************************************************************************
@@ -798,37 +805,40 @@ CUSTOM_INPUT_MEMBER(cischeat_state::captflag_motor_busy_r)
return 0;
}
-ADDRESS_MAP_START(cischeat_state::captflag_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082008, 0x08200d) AM_WRITENOP // UNUSED LAYER
- AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x082208, 0x082209) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0x090008, 0x090009) AM_WRITENOP // 0?
- AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll RAM 0
- AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll RAM 2
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SW1_2") AM_WRITE(captflag_oki_bank_w) // 2 x DSW + Sound
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("Buttons") AM_WRITE(captflag_leds_w) // Buttons + Leds
- AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) //
- AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w) // ?
- AM_RANGE(0x100040, 0x100041) AM_READ_PORT("SW01") // DSW + Motor
- AM_RANGE(0x100044, 0x100045) AM_WRITE(captflag_motor_command_left_w) // Motor Command (Left)
- AM_RANGE(0x100048, 0x100049) AM_WRITE(captflag_motor_command_right_w) // Motor Command (Right)
- AM_RANGE(0x100060, 0x10007d) AM_RAM // 7-seg? NVRAM?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cischeat_state::captflag_oki1_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1_bank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cischeat_state::captflag_oki2_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2_bank")
-ADDRESS_MAP_END
+void cischeat_state::captflag_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x082000, 0x082005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082008, 0x08200d).nopw(); // UNUSED LAYER
+ map(0x082100, 0x082105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x082208, 0x082209).rw(m_watchdog, FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0x090008, 0x090009).nopw(); // 0?
+ map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll RAM 0
+ map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll RAM 2
+ map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x0f0000, 0x0fffff).ram().share("ram"); // Work RAM + Spriteram
+ map(0x100000, 0x100001).portr("SW1_2").w(this, FUNC(cischeat_state::captflag_oki_bank_w)); // 2 x DSW + Sound
+ map(0x100008, 0x100009).portr("Buttons").w(this, FUNC(cischeat_state::captflag_leds_w)); // Buttons + Leds
+ map(0x100015, 0x100015).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x100019, 0x100019).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+ map(0x10001c, 0x10001d).w(this, FUNC(cischeat_state::scudhamm_enable_w)); // ?
+ map(0x100040, 0x100041).portr("SW01"); // DSW + Motor
+ map(0x100044, 0x100045).w(this, FUNC(cischeat_state::captflag_motor_command_left_w)); // Motor Command (Left)
+ map(0x100048, 0x100049).w(this, FUNC(cischeat_state::captflag_motor_command_right_w)); // Motor Command (Right)
+ map(0x100060, 0x10007d).ram(); // 7-seg? NVRAM?
+}
+
+void cischeat_state::captflag_oki1_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("oki1_bank");
+}
+
+void cischeat_state::captflag_oki2_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("oki2_bank");
+}
/**************************************************************************
@@ -843,42 +853,46 @@ ADDRESS_MAP_END
Big Run
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::bigrun_map2)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share1") // Shared RAM (with Main CPU)
- AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.0") // Road RAM
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM
-ADDRESS_MAP_END
+void cischeat_state::bigrun_map2(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x047fff).ram().share("share1"); // Shared RAM (with Main CPU)
+ map(0x080000, 0x0807ff).ram().share("roadram.0"); // Road RAM
+ map(0x0c0000, 0x0c3fff).ram(); // RAM
+}
-ADDRESS_MAP_START(cischeat_state::bigrun_map3)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share2") // Shared RAM (with Main CPU)
- AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.1") // Road RAM
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM
-ADDRESS_MAP_END
+void cischeat_state::bigrun_map3(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x047fff).ram().share("share2"); // Shared RAM (with Main CPU)
+ map(0x080000, 0x0807ff).ram().share("roadram.1"); // Road RAM
+ map(0x0c0000, 0x0c3fff).ram(); // RAM
+}
/**************************************************************************
Cisco Heat
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::cischeat_map2)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share1") // Shared RAM (with Main CPU)
- AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.0") // Road RAM
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP // watchdog
- AM_RANGE(0x200000, 0x23ffff) AM_ROM AM_REGION("cpu2",0x40000) // ROM
-ADDRESS_MAP_END
+void cischeat_state::cischeat_map2(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x047fff).ram().share("share1"); // Shared RAM (with Main CPU)
+ map(0x080000, 0x0807ff).ram().share("roadram.0"); // Road RAM
+ map(0x0c0000, 0x0c3fff).ram(); // RAM
+ map(0x100000, 0x100001).nopw(); // watchdog
+ map(0x200000, 0x23ffff).rom().region("cpu2", 0x40000); // ROM
+}
-ADDRESS_MAP_START(cischeat_state::cischeat_map3)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share2") // Shared RAM (with Main CPU)
- AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.1") // Road RAM
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP // watchdog
- AM_RANGE(0x200000, 0x23ffff) AM_ROM AM_REGION("cpu3",0x40000) // ROM
-ADDRESS_MAP_END
+void cischeat_state::cischeat_map3(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x047fff).ram().share("share2"); // Shared RAM (with Main CPU)
+ map(0x080000, 0x0807ff).ram().share("roadram.1"); // Road RAM
+ map(0x0c0000, 0x0c3fff).ram(); // RAM
+ map(0x100000, 0x100001).nopw(); // watchdog
+ map(0x200000, 0x23ffff).rom().region("cpu3", 0x40000); // ROM
+}
@@ -886,21 +900,23 @@ ADDRESS_MAP_END
F1 GrandPrix Star
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::f1gpstar_map2)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("share1") // Shared RAM (with Main CPU)
- AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("roadram.0") // Road RAM
- AM_RANGE(0x180000, 0x183fff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void cischeat_state::f1gpstar_map2(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x080000, 0x0807ff).ram().share("share1"); // Shared RAM (with Main CPU)
+ map(0x100000, 0x1007ff).ram().share("roadram.0"); // Road RAM
+ map(0x180000, 0x183fff).ram(); // RAM
+ map(0x200000, 0x200001).nopw(); // watchdog
+}
-ADDRESS_MAP_START(cischeat_state::f1gpstar_map3)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("share2") // Shared RAM (with Main CPU)
- AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("roadram.1") // Road RAM
- AM_RANGE(0x180000, 0x183fff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void cischeat_state::f1gpstar_map3(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x080000, 0x0807ff).ram().share("share2"); // Shared RAM (with Main CPU)
+ map(0x100000, 0x1007ff).ram().share("roadram.1"); // Road RAM
+ map(0x180000, 0x183fff).ram(); // RAM
+ map(0x200000, 0x200001).nopw(); // watchdog
+}
/**************************************************************************
@@ -927,15 +943,16 @@ WRITE16_MEMBER(cischeat_state::bigrun_soundbank_w)
}
}
-ADDRESS_MAP_START(cischeat_state::bigrun_sound_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_WRITE(bigrun_soundbank_w) // From Main CPU
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // To Main CPU
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void cischeat_state::bigrun_sound_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(this, FUNC(cischeat_state::bigrun_soundbank_w)); // From Main CPU
+ 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(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0f0000, 0x0fffff).ram(); // RAM
+}
/**************************************************************************
@@ -952,51 +969,54 @@ WRITE16_MEMBER(cischeat_state::cischeat_soundbank_2_w)
if (ACCESSING_BITS_0_7) m_oki2->set_rom_bank(data & 1);
}
-ADDRESS_MAP_START(cischeat_state::cischeat_sound_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040002, 0x040003) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking
- AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking
- AM_RANGE(0x060002, 0x060003) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // To Main CPU
- AM_RANGE(0x060004, 0x060005) AM_DEVREAD("soundlatch", generic_latch_16_device, read) // From Main CPU
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void cischeat_state::cischeat_sound_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040002, 0x040003).w(this, FUNC(cischeat_state::cischeat_soundbank_1_w)); // Sample Banking
+ map(0x040004, 0x040005).w(this, FUNC(cischeat_state::cischeat_soundbank_2_w)); // Sample Banking
+ map(0x060002, 0x060003).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // To Main CPU
+ map(0x060004, 0x060005).r(m_soundlatch, FUNC(generic_latch_16_device::read)); // From Main CPU
+ map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0f0000, 0x0fffff).ram(); // RAM
+}
/**************************************************************************
F1 GrandPrix Star
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::f1gpstar_sound_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking (cischeat: 40002)
- AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking (cischeat: 40004)
- AM_RANGE(0x060000, 0x060001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // From Main CPU (cischeat: 60004)
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM (cischeat: f0000-fffff)
-ADDRESS_MAP_END
+void cischeat_state::f1gpstar_sound_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040004, 0x040005).w(this, FUNC(cischeat_state::cischeat_soundbank_1_w)); // Sample Banking (cischeat: 40002)
+ map(0x040008, 0x040009).w(this, FUNC(cischeat_state::cischeat_soundbank_2_w)); // Sample Banking (cischeat: 40004)
+ map(0x060000, 0x060001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // From Main CPU (cischeat: 60004)
+ map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0fffff).ram(); // RAM (cischeat: f0000-fffff)
+}
/**************************************************************************
F1 GrandPrix Star II
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::f1gpstr2_sound_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking
- AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking
- AM_RANGE(0x04000e, 0x04000f) AM_WRITENOP // ? 0 (f1gpstar: no)
- AM_RANGE(0x060002, 0x060003) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // To Main CPU
- AM_RANGE(0x060004, 0x060005) AM_DEVREAD("soundlatch", generic_latch_16_device, read) // From Main CPU
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void cischeat_state::f1gpstr2_sound_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x040004, 0x040005).w(this, FUNC(cischeat_state::cischeat_soundbank_1_w)); // Sample Banking
+ map(0x040008, 0x040009).w(this, FUNC(cischeat_state::cischeat_soundbank_2_w)); // Sample Banking
+ map(0x04000e, 0x04000f).nopw(); // ? 0 (f1gpstar: no)
+ map(0x060002, 0x060003).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // To Main CPU
+ map(0x060004, 0x060005).r(m_soundlatch, FUNC(generic_latch_16_device::read)); // From Main CPU
+ map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0fffff).ram(); // RAM
+}
/**************************************************************************
@@ -1006,13 +1026,14 @@ ADDRESS_MAP_END
**************************************************************************/
-ADDRESS_MAP_START(cischeat_state::f1gpstr2_io_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("shareio")
- AM_RANGE(0x100000, 0x100001) AM_WRITEONLY AM_SHARE("ioready") //
- AM_RANGE(0x180000, 0x183fff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x200001) AM_NOP //
-ADDRESS_MAP_END
+void cischeat_state::f1gpstr2_io_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x080000, 0x080fff).ram().share("shareio");
+ map(0x100000, 0x100001).writeonly().share("ioready"); //
+ map(0x180000, 0x183fff).ram(); // RAM
+ map(0x200000, 0x200001).noprw(); //
+}
/***************************************************************************
diff --git a/src/mame/drivers/cit220.cpp b/src/mame/drivers/cit220.cpp
index 21bb7e9bbad..ca6849a1c44 100644
--- a/src/mame/drivers/cit220.cpp
+++ b/src/mame/drivers/cit220.cpp
@@ -46,30 +46,33 @@ WRITE_LINE_MEMBER(cit220_state::sod_w)
// probably asserts PBREQ on SCN2674 to access memory at Exxx
}
-ADDRESS_MAP_START(cit220_state::mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa1ff) AM_ROM AM_REGION("eeprom", 0x800)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM // ???
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cit220_state::io_map)
- AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w)
- AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w)
- AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("avdc", scn2674_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_UNMAP // ???
- AM_RANGE(0xc0, 0xc0) AM_UNMAP // ???
-ADDRESS_MAP_END
+void cit220_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa1ff).rom().region("eeprom", 0x800);
+ map(0xe000, 0xe7ff).ram(); // ???
+}
+
+void cit220_state::io_map(address_map &map)
+{
+ map(0x00, 0x0f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0x10, 0x10).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x11, 0x11).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x20, 0x27).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write));
+ map(0xa0, 0xa0).unmaprw(); // ???
+ map(0xc0, 0xc0).unmaprw(); // ???
+}
SCN2674_DRAW_CHARACTER_MEMBER(cit220_state::draw_character)
{
}
-ADDRESS_MAP_START(cit220_state::vram_map)
- AM_RANGE(0x0000, 0x27ff) AM_NOP
-ADDRESS_MAP_END
+void cit220_state::vram_map(address_map &map)
+{
+ map(0x0000, 0x27ff).noprw();
+}
static INPUT_PORTS_START( cit220p )
diff --git a/src/mame/drivers/citycon.cpp b/src/mame/drivers/citycon.cpp
index 8f980e1e48c..5db550d845c 100644
--- a/src/mame/drivers/citycon.cpp
+++ b/src/mame/drivers/citycon.cpp
@@ -32,27 +32,29 @@ READ8_MEMBER(citycon_state::citycon_irq_ack_r)
return 0;
}
-ADDRESS_MAP_START(citycon_state::citycon_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(citycon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(citycon_linecolor_w) AM_SHARE("linecolor") AM_MIRROR(0x0700)
- AM_RANGE(0x2800, 0x28ff) AM_RAM AM_SHARE("spriteram") AM_MIRROR(0x0700) //0x2900-0x2fff cleared at post but unused
- AM_RANGE(0x3000, 0x3000) AM_READ(citycon_in_r) AM_WRITE(citycon_background_w) /* player 1 & 2 inputs multiplexed */
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x3004, 0x3005) AM_READNOP AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x3007, 0x3007) AM_READ(citycon_irq_ack_r)
- AM_RANGE(0x3800, 0x3cff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(citycon_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void citycon_state::citycon_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().w(this, FUNC(citycon_state::citycon_videoram_w)).share("videoram");
+ map(0x2000, 0x20ff).ram().w(this, FUNC(citycon_state::citycon_linecolor_w)).share("linecolor").mirror(0x0700);
+ map(0x2800, 0x28ff).ram().share("spriteram").mirror(0x0700); //0x2900-0x2fff cleared at post but unused
+ map(0x3000, 0x3000).r(this, FUNC(citycon_state::citycon_in_r)).w(this, FUNC(citycon_state::citycon_background_w)); /* player 1 & 2 inputs multiplexed */
+ map(0x3001, 0x3001).portr("DSW1").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3002, 0x3002).portr("DSW2").w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x3004, 0x3005).nopr().writeonly().share("scroll");
+ map(0x3007, 0x3007).r(this, FUNC(citycon_state::citycon_irq_ack_r));
+ map(0x3800, 0x3cff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x4000, 0xffff).rom();
+}
+
+void citycon_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x4000, 0x4001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x4002, 0x4002).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x6000, 0x6001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/ckz80.cpp b/src/mame/drivers/ckz80.cpp
index 5ec6a507f7d..1943b1978c2 100644
--- a/src/mame/drivers/ckz80.cpp
+++ b/src/mame/drivers/ckz80.cpp
@@ -278,11 +278,12 @@ DRIVER_INIT_MEMBER(ckz80_state, master)
// Master
-ADDRESS_MAP_START(ckz80_state::master_map)
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM AM_REGION("maincpu", 0) // _A15
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_READWRITE(master_input_r, master_control_w) // A13
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM // A14
-ADDRESS_MAP_END
+void ckz80_state::master_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x6000).rom().region("maincpu", 0); // _A15
+ map(0xa000, 0xa000).mirror(0x1fff).rw(this, 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)
@@ -306,9 +307,10 @@ READ8_MEMBER(ckz80_state::master_trampoline_r)
return data;
}
-ADDRESS_MAP_START(ckz80_state::master_trampoline)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(master_trampoline_r, master_trampoline_w)
-ADDRESS_MAP_END
+void ckz80_state::master_trampoline(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(ckz80_state::master_trampoline_r), FUNC(ckz80_state::master_trampoline_w));
+}
diff --git a/src/mame/drivers/clayshoo.cpp b/src/mame/drivers/clayshoo.cpp
index b4c76b5a57c..5ad771f0a43 100644
--- a/src/mame/drivers/clayshoo.cpp
+++ b/src/mame/drivers/clayshoo.cpp
@@ -214,14 +214,15 @@ uint32_t clayshoo_state::screen_update_clayshoo(screen_device &screen, bitmap_rg
*
*************************************/
-ADDRESS_MAP_START(clayshoo_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x47ff) AM_ROM
- AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("videoram") /* 6k of video ram according to readme */
- AM_RANGE(0x9800, 0xa800) AM_WRITENOP /* not really mapped, but cleared */
- AM_RANGE(0xc800, 0xc800) AM_READWRITE(analog_r, analog_reset_w)
-ADDRESS_MAP_END
+void clayshoo_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x47ff).rom();
+ map(0x8000, 0x97ff).ram().share("videoram"); /* 6k of video ram according to readme */
+ map(0x9800, 0xa800).nopw(); /* not really mapped, but cleared */
+ map(0xc800, 0xc800).rw(this, FUNC(clayshoo_state::analog_r), FUNC(clayshoo_state::analog_reset_w));
+}
@@ -231,15 +232,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(clayshoo_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+void clayshoo_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x20, 0x23).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x30, 0x33).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
// AM_RANGE(0x40, 0x43) AM_NOP // 8253 for sound?
// AM_RANGE(0x50, 0x50) AM_NOP // ?
// AM_RANGE(0x60, 0x60) AM_NOP // ?
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/clcd.cpp b/src/mame/drivers/clcd.cpp
index a836c0e84f8..50161a455bb 100644
--- a/src/mame/drivers/clcd.cpp
+++ b/src/mame/drivers/clcd.cpp
@@ -604,45 +604,47 @@ void clcd_state::nvram_init(nvram_device &nvram, void *data, size_t size)
}
-ADDRESS_MAP_START(clcd_state::clcd_banked_mem)
+void clcd_state::clcd_banked_mem(address_map &map)
+{
/* KERN/APPL/RAM */
- AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x40000) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x20000, 0x3ffff) AM_MIRROR(0x40000) AM_ROM AM_REGION("maincpu",0)
+ map(0x00000, 0x1ffff).mirror(0x40000).rw(this, FUNC(clcd_state::ram_r), FUNC(clcd_state::ram_w));
+ map(0x20000, 0x3ffff).mirror(0x40000).rom().region("maincpu", 0);
/* TEST */
- AM_RANGE(0x81000, 0x83fff) AM_READ(mmu_offset1_r)
- AM_RANGE(0x84000, 0x87fff) AM_READ(mmu_offset2_r)
- AM_RANGE(0x88000, 0x8bfff) AM_READ(mmu_offset3_r)
- AM_RANGE(0x8c000, 0x8dfff) AM_READ(mmu_offset4_r)
- AM_RANGE(0x8e000, 0x8f7ff) AM_READ(mmu_offset5_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(clcd_state::clcd_mem)
- AM_RANGE(0x0000, 0x0fff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x1000, 0x3fff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank2", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank3", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000, 0xf7ff) AM_DEVREADWRITE("bank4", address_map_bank_device, read8, write8)
- AM_RANGE(0xf800, 0xf80f) AM_MIRROR(0x70) AM_DEVREADWRITE("via0", via6522_device, read, write)
- AM_RANGE(0xf880, 0xf88f) AM_MIRROR(0x70) AM_DEVREADWRITE("via1", via6522_device, read, write)
- AM_RANGE(0xf980, 0xf983) AM_MIRROR(0x7c) AM_DEVREADWRITE("acia", mos6551_device, read, write)
- AM_RANGE(0xfa00, 0xffff) AM_ROM AM_REGION("maincpu", 0x1fa00)
- AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_kern_w)
- AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_appl_w)
- AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_ram_w)
- AM_RANGE(0xfb80, 0xfb80) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_recall_w)
- AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_save_w)
- AM_RANGE(0xfc80, 0xfc80) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_test_w)
- AM_RANGE(0xfd00, 0xfd00) AM_MIRROR(0x7f) AM_WRITE(mmu_offset1_w)
- AM_RANGE(0xfd80, 0xfd80) AM_MIRROR(0x7f) AM_WRITE(mmu_offset2_w)
- AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x7f) AM_WRITE(mmu_offset3_w)
- AM_RANGE(0xfe80, 0xfe80) AM_MIRROR(0x7f) AM_WRITE(mmu_offset4_w)
- AM_RANGE(0xff00, 0xff00) AM_MIRROR(0x7f) AM_WRITE(mmu_offset5_w)
- AM_RANGE(0xff80, 0xff80) AM_MIRROR(0x7c) AM_WRITE(lcd_scrollx_w)
- AM_RANGE(0xff81, 0xff81) AM_MIRROR(0x7c) AM_WRITE(lcd_scrolly_w)
- AM_RANGE(0xff82, 0xff82) AM_MIRROR(0x7c) AM_WRITE(lcd_mode_w)
- AM_RANGE(0xff83, 0xff83) AM_MIRROR(0x7c) AM_WRITE(lcd_size_w)
-ADDRESS_MAP_END
+ map(0x81000, 0x83fff).r(this, FUNC(clcd_state::mmu_offset1_r));
+ map(0x84000, 0x87fff).r(this, FUNC(clcd_state::mmu_offset2_r));
+ map(0x88000, 0x8bfff).r(this, FUNC(clcd_state::mmu_offset3_r));
+ map(0x8c000, 0x8dfff).r(this, FUNC(clcd_state::mmu_offset4_r));
+ map(0x8e000, 0x8f7ff).r(this, FUNC(clcd_state::mmu_offset5_r));
+}
+
+void clcd_state::clcd_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(this, FUNC(clcd_state::ram_r), FUNC(clcd_state::ram_w));
+ map(0x1000, 0x3fff).rw(m_bank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x4000, 0x7fff).rw(m_bank2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0xbfff).rw(m_bank3, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xf7ff).rw(m_bank4, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xf800, 0xf80f).mirror(0x70).rw(m_via0, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xf880, 0xf88f).mirror(0x70).rw("via1", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xf980, 0xf983).mirror(0x7c).rw(m_acia, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xfa00, 0xffff).rom().region("maincpu", 0x1fa00);
+ map(0xfa00, 0xfa00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_kern_w));
+ map(0xfa80, 0xfa80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_appl_w));
+ map(0xfb00, 0xfb00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_ram_w));
+ map(0xfb80, 0xfb80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_recall_w));
+ map(0xfc00, 0xfc00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_save_w));
+ map(0xfc80, 0xfc80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_test_w));
+ map(0xfd00, 0xfd00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset1_w));
+ map(0xfd80, 0xfd80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset2_w));
+ map(0xfe00, 0xfe00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset3_w));
+ map(0xfe80, 0xfe80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset4_w));
+ map(0xff00, 0xff00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset5_w));
+ map(0xff80, 0xff80).mirror(0x7c).w(this, FUNC(clcd_state::lcd_scrollx_w));
+ map(0xff81, 0xff81).mirror(0x7c).w(this, FUNC(clcd_state::lcd_scrolly_w));
+ map(0xff82, 0xff82).mirror(0x7c).w(this, FUNC(clcd_state::lcd_mode_w));
+ map(0xff83, 0xff83).mirror(0x7c).w(this, FUNC(clcd_state::lcd_size_w));
+}
/* Input ports */
static INPUT_PORTS_START( clcd )
diff --git a/src/mame/drivers/cliffhgr.cpp b/src/mame/drivers/cliffhgr.cpp
index db54a1d6c8f..25eefe28066 100644
--- a/src/mame/drivers/cliffhgr.cpp
+++ b/src/mame/drivers/cliffhgr.cpp
@@ -240,30 +240,32 @@ void cliffhgr_state::machine_reset()
/********************************************************/
-ADDRESS_MAP_START(cliffhgr_state::mainmem)
- AM_RANGE(0x0000, 0xbfff) AM_ROM /* ROM */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") /* NVRAM */
- AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cliffhgr_state::mainport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x44, 0x44) AM_DEVWRITE("tms9928a", tms9928a_device, vram_write)
- AM_RANGE(0x45, 0x45) AM_DEVREAD("tms9928a", tms9928a_device, vram_read)
- AM_RANGE(0x46, 0x46) AM_WRITE(cliff_sound_overlay_w)
- AM_RANGE(0x50, 0x52) AM_READ(cliff_phillips_code_r)
- AM_RANGE(0x53, 0x53) AM_READ(cliff_irq_ack_r)
- AM_RANGE(0x54, 0x54) AM_DEVWRITE("tms9928a", tms9928a_device, register_write)
- AM_RANGE(0x55, 0x55) AM_DEVREAD("tms9928a", tms9928a_device, register_read)
- AM_RANGE(0x57, 0x57) AM_WRITE(cliff_phillips_clear_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(cliff_port_bank_w)
- AM_RANGE(0x62, 0x62) AM_READ(cliff_port_r)
- AM_RANGE(0x64, 0x64) AM_WRITENOP /* unused in schematics, may be used as timing delay for IR interface */
- AM_RANGE(0x66, 0x66) AM_WRITE(cliff_ldwire_w)
- AM_RANGE(0x68, 0x68) AM_WRITE(cliff_coin_counter_w)
- AM_RANGE(0x6a, 0x6a) AM_WRITENOP /* /LAMP0 (Infrared?) */
- AM_RANGE(0x6e, 0x6f) AM_WRITE(cliff_test_led_w)
-ADDRESS_MAP_END
+void cliffhgr_state::mainmem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom(); /* ROM */
+ map(0xe000, 0xe7ff).ram().share("nvram"); /* NVRAM */
+ map(0xe800, 0xefff).ram(); /* RAM */
+}
+
+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(0x46, 0x46).w(this, FUNC(cliffhgr_state::cliff_sound_overlay_w));
+ map(0x50, 0x52).r(this, FUNC(cliffhgr_state::cliff_phillips_code_r));
+ map(0x53, 0x53).r(this, 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(this, FUNC(cliffhgr_state::cliff_phillips_clear_w));
+ map(0x60, 0x60).w(this, FUNC(cliffhgr_state::cliff_port_bank_w));
+ map(0x62, 0x62).r(this, FUNC(cliffhgr_state::cliff_port_r));
+ map(0x64, 0x64).nopw(); /* unused in schematics, may be used as timing delay for IR interface */
+ map(0x66, 0x66).w(this, FUNC(cliffhgr_state::cliff_ldwire_w));
+ map(0x68, 0x68).w(this, FUNC(cliffhgr_state::cliff_coin_counter_w));
+ map(0x6a, 0x6a).nopw(); /* /LAMP0 (Infrared?) */
+ map(0x6e, 0x6f).w(this, FUNC(cliffhgr_state::cliff_test_led_w));
+}
/*************************************
diff --git a/src/mame/drivers/cloak.cpp b/src/mame/drivers/cloak.cpp
index f9a528aa199..fb31d3af07f 100644
--- a/src/mame/drivers/cloak.cpp
+++ b/src/mame/drivers/cloak.cpp
@@ -180,26 +180,27 @@ WRITE8_MEMBER(cloak_state::cloak_nvram_enable_w)
*
*************************************/
-ADDRESS_MAP_START(cloak_state::master_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(cloak_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) /* DSW0 also */
- AM_RANGE(0x1800, 0x180f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) /* DSW1 also */
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("P1")
- AM_RANGE(0x2200, 0x2200) AM_READ_PORT("P2")
- AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x2600, 0x2600) AM_WRITE(cloak_custom_w)
- AM_RANGE(0x2800, 0x29ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2f00, 0x2fff) AM_NOP
- AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3200, 0x327f) AM_WRITE(cloak_paletteram_w)
- AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITE(cloak_irq_reset_0_w)
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(cloak_nvram_enable_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void cloak_state::master_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(cloak_state::cloak_videoram_w)).share("videoram");
+ map(0x0800, 0x0fff).ram().share("share1");
+ map(0x1000, 0x100f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); /* DSW0 also */
+ map(0x1800, 0x180f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); /* DSW1 also */
+ map(0x2000, 0x2000).portr("P1");
+ map(0x2200, 0x2200).portr("P2");
+ map(0x2400, 0x2400).portr("SYSTEM");
+ map(0x2600, 0x2600).w(this, FUNC(cloak_state::cloak_custom_w));
+ map(0x2800, 0x29ff).ram().share("nvram");
+ map(0x2f00, 0x2fff).noprw();
+ map(0x3000, 0x30ff).ram().share("spriteram");
+ map(0x3200, 0x327f).w(this, FUNC(cloak_state::cloak_paletteram_w));
+ map(0x3800, 0x3807).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x3a00, 0x3a00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3c00, 0x3c00).w(this, FUNC(cloak_state::cloak_irq_reset_0_w));
+ map(0x3e00, 0x3e00).w(this, FUNC(cloak_state::cloak_nvram_enable_w));
+ map(0x4000, 0xffff).rom();
+}
/*************************************
@@ -208,16 +209,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cloak_state::slave_map)
- AM_RANGE(0x0000, 0x0007) AM_RAM
- AM_RANGE(0x0008, 0x000f) AM_READWRITE(graph_processor_r, graph_processor_w)
- AM_RANGE(0x0010, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x1000) AM_WRITE(cloak_irq_reset_1_w)
- AM_RANGE(0x1200, 0x1200) AM_WRITE(cloak_clearbmp_w)
- AM_RANGE(0x1400, 0x1400) AM_WRITE(cloak_custom_w)
- AM_RANGE(0x2000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void cloak_state::slave_map(address_map &map)
+{
+ map(0x0000, 0x0007).ram();
+ map(0x0008, 0x000f).rw(this, FUNC(cloak_state::graph_processor_r), FUNC(cloak_state::graph_processor_w));
+ map(0x0010, 0x07ff).ram();
+ map(0x0800, 0x0fff).ram().share("share1");
+ map(0x1000, 0x1000).w(this, FUNC(cloak_state::cloak_irq_reset_1_w));
+ map(0x1200, 0x1200).w(this, FUNC(cloak_state::cloak_clearbmp_w));
+ map(0x1400, 0x1400).w(this, FUNC(cloak_state::cloak_custom_w));
+ map(0x2000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/cloud9.cpp b/src/mame/drivers/cloud9.cpp
index e1cf83946bc..e4353f9e9a2 100644
--- a/src/mame/drivers/cloud9.cpp
+++ b/src/mame/drivers/cloud9.cpp
@@ -276,26 +276,27 @@ WRITE8_MEMBER(cloud9_state::nvram_store_w)
*
*************************************/
-ADDRESS_MAP_START(cloud9_state::cloud9_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROMBANK("bank1") AM_WRITE(cloud9_videoram_w)
- AM_RANGE(0x0000, 0x0001) AM_WRITE(cloud9_bitmode_addr_w)
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(cloud9_bitmode_r, cloud9_bitmode_w)
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5400, 0x547f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5480, 0x54ff) AM_WRITE(irq_ack_w)
- AM_RANGE(0x5500, 0x557f) AM_RAM_WRITE(cloud9_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x5580, 0x5587) AM_MIRROR(0x0078) AM_DEVWRITE("videolatch", ls259_device, write_d7) // video control registers
- AM_RANGE(0x5600, 0x5607) AM_MIRROR(0x0078) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x5680, 0x56ff) AM_WRITE(nvram_store_w)
- AM_RANGE(0x5700, 0x577f) AM_WRITE(nvram_recall_w)
- AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x007e) AM_READ_PORT("IN0")
- AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x007e) AM_READ_PORT("IN1")
- AM_RANGE(0x5900, 0x5903) AM_MIRROR(0x007c) AM_READ(leta_r)
- AM_RANGE(0x5a00, 0x5a0f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x5b00, 0x5b0f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x5c00, 0x5cff) AM_MIRROR(0x0300) AM_DEVREADWRITE("nvram", x2212_device, read, write)
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void cloud9_state::cloud9_map(address_map &map)
+{
+ map(0x0000, 0x4fff).bankr("bank1").w(this, FUNC(cloud9_state::cloud9_videoram_w));
+ map(0x0000, 0x0001).w(this, FUNC(cloud9_state::cloud9_bitmode_addr_w));
+ map(0x0002, 0x0002).rw(this, FUNC(cloud9_state::cloud9_bitmode_r), FUNC(cloud9_state::cloud9_bitmode_w));
+ map(0x5000, 0x53ff).ram().share("spriteram");
+ map(0x5400, 0x547f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5480, 0x54ff).w(this, FUNC(cloud9_state::irq_ack_w));
+ map(0x5500, 0x557f).ram().w(this, FUNC(cloud9_state::cloud9_paletteram_w)).share("paletteram");
+ map(0x5580, 0x5587).mirror(0x0078).w(m_videolatch, FUNC(ls259_device::write_d7)); // video control registers
+ map(0x5600, 0x5607).mirror(0x0078).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x5680, 0x56ff).w(this, FUNC(cloud9_state::nvram_store_w));
+ map(0x5700, 0x577f).w(this, FUNC(cloud9_state::nvram_recall_w));
+ map(0x5800, 0x5800).mirror(0x007e).portr("IN0");
+ map(0x5801, 0x5801).mirror(0x007e).portr("IN1");
+ map(0x5900, 0x5903).mirror(0x007c).r(this, FUNC(cloud9_state::leta_r));
+ map(0x5a00, 0x5a0f).mirror(0x00f0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x5b00, 0x5b0f).mirror(0x00f0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x5c00, 0x5cff).mirror(0x0300).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write));
+ map(0x6000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/clowndwn.cpp b/src/mame/drivers/clowndwn.cpp
index c52dbb4ece2..59cf332c9c4 100644
--- a/src/mame/drivers/clowndwn.cpp
+++ b/src/mame/drivers/clowndwn.cpp
@@ -31,15 +31,16 @@ public:
void clowndwn_map(address_map &map);
};
-ADDRESS_MAP_START(clowndwn_state::clowndwn_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x4100, 0x4103) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x4200, 0x4203) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x4400, 0x4403) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("pia3", pia6821_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia4", pia6821_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void clowndwn_state::clowndwn_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x4100, 0x4103).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4200, 0x4203).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4400, 0x4403).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4800, 0x4803).rw("pia3", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x5000, 0x5003).rw("pia4", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe000, 0xffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( clowndwn )
INPUT_PORTS_END
diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp
index 9bec05b97c2..a6bc0a519c0 100644
--- a/src/mame/drivers/clpoker.cpp
+++ b/src/mame/drivers/clpoker.cpp
@@ -79,28 +79,31 @@ private:
bool m_nmi_enable;
};
-ADDRESS_MAP_START(clpoker_state::prg_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0xf001, 0xf001) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE(0xf002, 0xf002) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(clpoker_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi_outputs", i8255_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi_inputs", i8255_device, read, write)
- AM_RANGE(0x30, 0x30) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x32, 0x32) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xc0, 0xc0) AM_READNOP // mystery read at startup
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(clpoker_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void clpoker_state::prg_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram().w(this, FUNC(clpoker_state::videoram_w)).share("videoram");
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xf000, 0xf000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0xf001, 0xf001).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0xf002, 0xf002).w("ramdac", FUNC(ramdac_device::mask_w));
+}
+
+void clpoker_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi_outputs", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x10, 0x13).rw("ppi_inputs", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x30, 0x30).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x32, 0x32).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x34, 0x34).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xc0, 0xc0).nopr(); // mystery read at startup
+}
+
+void clpoker_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
WRITE8_MEMBER(clpoker_state::output_a_w)
{
diff --git a/src/mame/drivers/clshroad.cpp b/src/mame/drivers/clshroad.cpp
index c5659435ff9..fbd506daaaf 100644
--- a/src/mame/drivers/clshroad.cpp
+++ b/src/mame/drivers/clshroad.cpp
@@ -70,25 +70,27 @@ WRITE_LINE_MEMBER(clshroad_state::sound_irq_mask_w)
}
-ADDRESS_MAP_START(clshroad_state::clshroad_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x95ff) AM_RAM
- AM_RANGE(0x9600, 0x97ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x9800, 0x9dff) AM_RAM
- AM_RANGE(0x9e00, 0x9fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa100, 0xa107) AM_READ(input_r)
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1
- AM_RANGE(0xb000, 0xb003) AM_WRITEONLY AM_SHARE("vregs") // Scroll
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(clshroad_state::clshroad_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("custom", wiping_sound_device, sound_w)
- AM_RANGE(0x9600, 0x97ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void clshroad_state::clshroad_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x95ff).ram();
+ map(0x9600, 0x97ff).ram().share("share1");
+ map(0x9800, 0x9dff).ram();
+ map(0x9e00, 0x9fff).ram().share("spriteram");
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xa100, 0xa107).r(this, FUNC(clshroad_state::input_r));
+ map(0xa800, 0xafff).ram().w(this, FUNC(clshroad_state::vram_1_w)).share("vram_1"); // Layer 1
+ map(0xb000, 0xb003).writeonly().share("vregs"); // Scroll
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(clshroad_state::vram_0_w)).share("vram_0"); // Layer 0
+}
+
+void clshroad_state::clshroad_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).w("custom", FUNC(wiping_sound_device::sound_w));
+ map(0x9600, 0x97ff).ram().share("share1");
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+}
diff --git a/src/mame/drivers/cm1800.cpp b/src/mame/drivers/cm1800.cpp
index dafba38e526..1c7dae6ad9a 100644
--- a/src/mame/drivers/cm1800.cpp
+++ b/src/mame/drivers/cm1800.cpp
@@ -64,17 +64,19 @@ READ8_MEMBER(cm1800_state::uart_status_r)
return (m_uart->dav_r()) | (m_uart->tbmt_r() << 2);
}
-ADDRESS_MAP_START(cm1800_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM AM_REGION("roms", 0)
- AM_RANGE( 0x0800, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cm1800_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0x01, 0x01) AM_READ(uart_status_r)
-ADDRESS_MAP_END
+void cm1800_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom().region("roms", 0);
+ map(0x0800, 0xffff).ram();
+}
+
+void cm1800_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0x01, 0x01).r(this, FUNC(cm1800_state::uart_status_r));
+}
/* Input ports */
static INPUT_PORTS_START( cm1800 )
diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp
index 424e910cdf6..446b235c0c6 100644
--- a/src/mame/drivers/cmi.cpp
+++ b/src/mame/drivers/cmi.cpp
@@ -1070,49 +1070,55 @@ READ16_MEMBER( cmi_state::midi_dma_r )
}
/* The maps are dynamically populated */
-ADDRESS_MAP_START(cmi_state::maincpu1_map)
- AM_RANGE(0xfffe, 0xffff) AM_READ(vector_r<0>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::maincpu2_map)
- AM_RANGE(0xfffe, 0xffff) AM_READ(vector_r<1>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::muskeys_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("cmi10_pia_u21", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("cmi10_pia_u20", pia6821_device, read, write)
- AM_RANGE(0x00a0, 0x00a1) AM_DEVREADWRITE("acia_mkbd_kbd", acia6850_device, read, write)
- AM_RANGE(0x00b0, 0x00b1) AM_DEVREADWRITE("acia_mkbd_cmi", acia6850_device, read, write)
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0xb000, 0xb400) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::alphakeys_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_READ_PORT("ANK_OPTIONS")
- AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("ank_pia", pia6821_device, read, write)
- AM_RANGE(0xc000, 0xc3ff) AM_ROM AM_MIRROR(0x3c00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::midicpu_map)
- AM_RANGE(0x000000, 0x003fff) AM_ROM
- AM_RANGE(0x040000, 0x05ffff) AM_READWRITE(midi_dma_r, midi_dma_w)
+void cmi_state::maincpu1_map(address_map &map)
+{
+ map(0xfffe, 0xffff).r(this, FUNC(cmi_state::vector_r<0>));
+}
+
+void cmi_state::maincpu2_map(address_map &map)
+{
+ map(0xfffe, 0xffff).r(this, FUNC(cmi_state::vector_r<1>));
+}
+
+void cmi_state::muskeys_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram();
+ map(0x0080, 0x0083).rw(m_cmi10_pia_u21, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_cmi10_pia_u20, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x00a0, 0x00a1).rw(m_acia_mkbd_kbd, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x00b0, 0x00b1).rw(m_acia_mkbd_cmi, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x4000, 0x47ff).ram();
+ map(0xb000, 0xb400).rom();
+ map(0xf000, 0xffff).rom();
+}
+
+void cmi_state::alphakeys_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram();
+ map(0x4000, 0x7fff).portr("ANK_OPTIONS");
+ map(0x8000, 0xbfff).rw(m_ank_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc000, 0xc3ff).rom().mirror(0x3c00);
+}
+
+void cmi_state::midicpu_map(address_map &map)
+{
+ map(0x000000, 0x003fff).rom();
+ map(0x040000, 0x05ffff).rw(this, FUNC(cmi_state::midi_dma_r), FUNC(cmi_state::midi_dma_w));
// AM_RANGE(0x060000, 0x06001f) TIMERS
// AM_RANGE(0x060050, 0x06005f) ACIA
// AM_RANGE(0x060070, 0x06007f) SMPTE
- AM_RANGE(0x080000, 0x083fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::cmi07cpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_NOP // TODO
- AM_RANGE(0x4000, 0x4fff) AM_NOP // TODO
- AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("cmi07_ptm", ptm6840_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("cmi07_ram")
-ADDRESS_MAP_END
+ map(0x080000, 0x083fff).ram();
+}
+
+void cmi_state::cmi07cpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).noprw(); // TODO
+ map(0x4000, 0x4fff).noprw(); // TODO
+ map(0x8000, 0x8fff).rw(m_cmi07_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xc000, 0xffff).ram().share("cmi07_ram");
+}
/* Input ports */
static INPUT_PORTS_START( cmi2x )
diff --git a/src/mame/drivers/cmmb.cpp b/src/mame/drivers/cmmb.cpp
index bd3b43e7541..a272317871b 100644
--- a/src/mame/drivers/cmmb.cpp
+++ b/src/mame/drivers/cmmb.cpp
@@ -204,29 +204,30 @@ WRITE8_MEMBER(cmmb_state::flash_dbg_1_w)
}
/* overlap empty addresses */
-ADDRESS_MAP_START(cmmb_state::cmmb_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0x0fff) AM_RAM /* zero page address */
+void cmmb_state::cmmb_map(address_map &map)
+{
+ map.global_mask(0xffff);
+ map(0x0000, 0x0fff).ram(); /* zero page address */
// AM_RANGE(0x13c0, 0x13ff) AM_RAM //spriteram
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN3")
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("IN4")
- AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN5")
- AM_RANGE(0x2480, 0x249f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2505, 0x2505) AM_WRITE(irq_enable_w)
- AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w)
+ map(0x1000, 0x13ff).ram().share("videoram");
+ map(0x2000, 0x2000).portr("IN3");
+ map(0x2001, 0x2001).portr("IN4");
+ map(0x2011, 0x2011).portr("IN5");
+ map(0x2480, 0x249f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2505, 0x2505).w(this, FUNC(cmmb_state::irq_enable_w));
+ map(0x2600, 0x2600).w(this, FUNC(cmmb_state::irq_ack_w));
//AM_RANGE(0x4000, 0x400f) AM_READWRITE(cmmb_input_r,cmmb_output_w)
//AM_RANGE(0x4900, 0x4900) AM_READ(kludge_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x18000)
- AM_RANGE(0xa000, 0xafff) AM_RAM
- AM_RANGE(0xb000, 0xbfff) AM_READWRITE(cmmb_charram_r,cmmb_charram_w)
- AM_RANGE(0xc000, 0xc00f) AM_READWRITE(cmmb_input_r,cmmb_output_w)
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x9fff).rom().region("maincpu", 0x18000);
+ map(0xa000, 0xafff).ram();
+ map(0xb000, 0xbfff).rw(this, FUNC(cmmb_state::cmmb_charram_r), FUNC(cmmb_state::cmmb_charram_w));
+ map(0xc000, 0xc00f).rw(this, FUNC(cmmb_state::cmmb_input_r), FUNC(cmmb_state::cmmb_output_w));
// debugging, to be removed
// AM_RANGE(0x2aaa, 0x2aaa) AM_WRITE(flash_dbg_0_w)
// AM_RANGE(0x5555, 0x5555) AM_WRITE(flash_dbg_1_w)
- AM_RANGE(0xc010, 0xffff) AM_ROM AM_REGION("maincpu", 0x1c010)
-ADDRESS_MAP_END
+ map(0xc010, 0xffff).rom().region("maincpu", 0x1c010);
+}
static INPUT_PORTS_START( cmmb )
diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp
index ac39fdccd06..2f0d3afc50f 100644
--- a/src/mame/drivers/cninja.cpp
+++ b/src/mame/drivers/cninja.cpp
@@ -47,7 +47,6 @@ Note about version levels using Mutant Fighter as the example:
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "machine/decocrpt.h"
#include "sound/2203intf.h"
#include "sound/ym2151.h"
@@ -106,63 +105,65 @@ READ16_MEMBER(cninja_state::cninjabl2_sprite_dma_r)
}
-ADDRESS_MAP_START(cninja_state::cninja_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
+void cninja_state::cninja_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
- AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
- AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
+ map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w));
+ map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x14c000, 0x14c7ff).writeonly().share("pf1_rowscroll");
+ map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll");
- AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w)
- AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
+ map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w));
+ map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll");
+ map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll");
- AM_RANGE(0x184000, 0x187fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x190000, 0x190007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
- AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x184000, 0x187fff).ram().share("ram");
+ map(0x190000, 0x190007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff);
+ map(0x19c000, 0x19dfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
- AM_RANGE(0x1bc000, 0x1bffff) AM_READWRITE(cninja_protection_region_0_104_r,cninja_protection_region_0_104_w) AM_SHARE("prot16ram") /* Protection device */
+ map(0x1a4000, 0x1a47ff).ram().share("spriteram"); /* Sprites */
+ map(0x1b4000, 0x1b4001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */
+ map(0x1bc000, 0x1bffff).rw(this, FUNC(cninja_state::cninja_protection_region_0_104_r), FUNC(cninja_state::cninja_protection_region_0_104_w)).share("prot16ram"); /* Protection device */
- AM_RANGE(0x308000, 0x308fff) AM_WRITENOP /* Bootleg only */
-ADDRESS_MAP_END
+ map(0x308000, 0x308fff).nopw(); /* Bootleg only */
+}
-ADDRESS_MAP_START(cninja_state::cninjabl_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
+void cninja_state::cninjabl_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
- AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_SHARE("spriteram") /* bootleg sprite-ram (sprites rewritten here in new format) */
+ map(0x138000, 0x1387ff).ram().share("spriteram"); /* bootleg sprite-ram (sprites rewritten here in new format) */
- AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
- AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
+ map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w));
+ map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x14c000, 0x14c7ff).writeonly().share("pf1_rowscroll");
+ map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll");
- AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) // not used / incorrect on this
- AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
+ map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w)); // not used / incorrect on this
+ map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll");
+ map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll");
- AM_RANGE(0x17ff22, 0x17ff23) AM_READ_PORT("DSW")
- AM_RANGE(0x17ff28, 0x17ff29) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x17ff2a, 0x17ff2b) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x17ff2c, 0x17ff2d) AM_READ_PORT("INPUTS")
+ map(0x17ff22, 0x17ff23).portr("DSW");
+ map(0x17ff28, 0x17ff29).portr("SYSTEM");
+ map(0x17ff2b, 0x17ff2b).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x17ff2c, 0x17ff2d).portr("INPUTS");
- AM_RANGE(0x180000, 0x187fff) AM_RAM // more ram on bootleg?
+ map(0x180000, 0x187fff).ram(); // more ram on bootleg?
- AM_RANGE(0x190000, 0x190007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
- AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x190000, 0x190007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff);
+ map(0x19c000, 0x19dfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
-ADDRESS_MAP_END
+ map(0x1b4000, 0x1b4001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */
+}
READ16_MEMBER( cninja_state::sshangha_protection_region_8_146_r )
{
@@ -208,68 +209,70 @@ WRITE16_MEMBER( cninja_state::sshangha_protection_region_6_146_w )
m_ioprot->write_data( space, deco146_addr, data, mem_mask, cs );
}
-ADDRESS_MAP_START(cninja_state::edrandy_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
-
- AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
- AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
-
- AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w)
- AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
-
- AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x194000, 0x197fff) AM_RAM AM_SHARE("ram") /* Main ram */
- AM_RANGE(0x198000, 0x19bfff) AM_READWRITE(sshangha_protection_region_6_146_r,sshangha_protection_region_6_146_w) AM_SHARE("prot16ram") /* Protection device */
+void cninja_state::edrandy_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+
+ map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w));
+ map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x14c000, 0x14c7ff).ram().share("pf1_rowscroll");
+ map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll");
+
+ map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w));
+ map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll");
+ map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll");
+
+ map(0x188000, 0x189fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x194000, 0x197fff).ram().share("ram"); /* Main ram */
+ map(0x198000, 0x19bfff).rw(this, FUNC(cninja_state::sshangha_protection_region_6_146_r), FUNC(cninja_state::sshangha_protection_region_6_146_w)).share("prot16ram"); /* Protection device */
// AM_RANGE(0x198000, 0x1987ff) AM_READWRITE(sshangha_protection_region_6_146_r,sshangha_protection_region_6_146_w) AM_SHARE("prot16ram") /* Protection device */
- AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(sshangha_protection_region_8_146_r,sshangha_protection_region_8_146_w)
+ map(0x1a0000, 0x1a3fff).rw(this, FUNC(cninja_state::sshangha_protection_region_8_146_r), FUNC(cninja_state::sshangha_protection_region_8_146_w));
- AM_RANGE(0x1a4000, 0x1a4007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
- AM_RANGE(0x1ac000, 0x1ac001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
- AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x1bc800, 0x1bcfff) AM_WRITENOP /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */
-ADDRESS_MAP_END
+ map(0x1a4000, 0x1a4007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff);
+ map(0x1ac000, 0x1ac001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */
+ map(0x1bc000, 0x1bc7ff).ram().share("spriteram"); /* Sprites */
+ map(0x1bc800, 0x1bcfff).nopw(); /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */
+}
WRITE16_MEMBER(cninja_state::robocop2_priority_w)
{
COMBINE_DATA(&m_priority);
}
-ADDRESS_MAP_START(cninja_state::robocop2_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
+void cninja_state::robocop2_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
- AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
- AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
+ map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w));
+ map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x14c000, 0x14c7ff).ram().share("pf1_rowscroll");
+ map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll");
- AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w)
- AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
+ map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w));
+ map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll");
+ map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll");
- AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_SHARE("spriteram")
+ map(0x180000, 0x1807ff).ram().share("spriteram");
// AM_RANGE(0x18c000, 0x18c0ff) AM_WRITE(cninja_loopback_w) /* Protection writes */
// AM_RANGE(0x18c000, 0x18c7ff) AM_DEVREAD("ioprot", deco146_device,robocop2_prot_r) /* Protection device */
// AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w)
- AM_RANGE(0x18c000, 0x18ffff) AM_READWRITE(mutantf_protection_region_0_146_r,mutantf_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */
+ map(0x18c000, 0x18ffff).rw(this, FUNC(cninja_state::mutantf_protection_region_0_146_r), FUNC(cninja_state::mutantf_protection_region_0_146_w)).share("prot16ram"); /* Protection device */
-AM_RANGE(0x198000, 0x198001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
- AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1b0000, 0x1b0007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
- AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_SHARE("ram") /* Main ram */
- AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(robocop2_priority_w)
- AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */
-ADDRESS_MAP_END
+map(0x198000, 0x198001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */
+ map(0x1a8000, 0x1a9fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1b0000, 0x1b0007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff);
+ map(0x1b8000, 0x1bbfff).ram().share("ram"); /* Main ram */
+ map(0x1f0000, 0x1f0001).w(this, FUNC(cninja_state::robocop2_priority_w));
+ map(0x1f8000, 0x1f8001).portr("DSW3"); /* Dipswitch #3 */
+}
@@ -296,87 +299,94 @@ READ16_MEMBER( cninja_state::mutantf_71_r )
return 0xffff; // todo
}
-ADDRESS_MAP_START(cninja_state::mutantf_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x180001) AM_WRITE(robocop2_priority_w)
- AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */
- AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(mutantf_protection_region_0_146_r,mutantf_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */
- AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) AM_READ(mutantf_71_r)
- AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write)
-
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(cninja_pf12_control_w)
- AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x306000, 0x307fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_SHARE("pf2_rowscroll")
-
- AM_RANGE(0x310000, 0x31000f) AM_WRITE(cninja_pf34_control_w)
- AM_RANGE(0x314000, 0x315fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_SHARE("pf4_rowscroll")
-
- AM_RANGE(0xad00ac, 0xad00ff) AM_READNOP /* Reads from here seem to be a game code bug */
-ADDRESS_MAP_END
+void cninja_state::mutantf_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x140000, 0x1407ff).ram().share("spriteram2");
+ map(0x160000, 0x161fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x180001).w(this, FUNC(cninja_state::robocop2_priority_w));
+ map(0x180002, 0x180003).nopw(); /* VBL irq ack */
+ map(0x1a0000, 0x1a3fff).rw(this, FUNC(cninja_state::mutantf_protection_region_0_146_r), FUNC(cninja_state::mutantf_protection_region_0_146_w)).share("prot16ram"); /* Protection device */
+ map(0x1c0000, 0x1c0001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)).r(this, FUNC(cninja_state::mutantf_71_r));
+ map(0x1e0000, 0x1e0001).w(m_spriteram2, FUNC(buffered_spriteram16_device::write));
+
+ map(0x300000, 0x30000f).w(this, FUNC(cninja_state::cninja_pf12_control_w));
+ map(0x304000, 0x305fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x306000, 0x307fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x308000, 0x3087ff).ram().share("pf1_rowscroll");
+ map(0x30a000, 0x30a7ff).ram().share("pf2_rowscroll");
+
+ map(0x310000, 0x31000f).w(this, FUNC(cninja_state::cninja_pf34_control_w));
+ map(0x314000, 0x315fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x316000, 0x317fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x318000, 0x3187ff).ram().share("pf3_rowscroll");
+ map(0x31a000, 0x31a7ff).ram().share("pf4_rowscroll");
+
+ map(0xad00ac, 0xad00ff).nopr(); /* Reads from here seem to be a game code bug */
+}
/******************************************************************************/
-ADDRESS_MAP_START(cninja_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cninja_state::sound_map_mutantf)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_NOP
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cninja_state::stoneage_s_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cninja_state::cninjabl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cninja_state::cninjabl2_s_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(cninjabl2_oki_bank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cninja_state::cninjabl2_oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("oki1", 0)
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void cninja_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w));
+}
+
+void cninja_state::sound_map_mutantf(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).noprw();
+ map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w));
+}
+
+void cninja_state::stoneage_s_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+}
+
+void cninja_state::cninjabl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void cninja_state::cninjabl2_s_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(cninja_state::cninjabl2_oki_bank_w));
+ map(0x9800, 0x9800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+}
+
+void cninja_state::cninjabl2_oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom().region("oki1", 0);
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
/***********************************************************
Basic INPUT PORTS, DIPs
diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp
index f7d4c1d7795..bd0f0a71fc7 100644
--- a/src/mame/drivers/cntsteer.cpp
+++ b/src/mame/drivers/cntsteer.cpp
@@ -579,54 +579,58 @@ READ8_MEMBER(cntsteer_state::cntsteer_adx_r)
/***************************************************************************/
-ADDRESS_MAP_START(cntsteer_state::gekitsui_cpu1_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1200, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(cntsteer_foreground_vram_w) AM_SHARE("videoram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(cntsteer_foreground_attr_w) AM_SHARE("colorram")
- AM_RANGE(0x3000, 0x3003) AM_WRITE(zerotrgt_ctrl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cntsteer_state::gekitsui_cpu2_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("videoram2")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("COINS")
- AM_RANGE(0x3000, 0x3004) AM_WRITE(zerotrgt_vregs_w)
- AM_RANGE(0x3005, 0x3005) AM_WRITE(gekitsui_sub_irq_ack)
- AM_RANGE(0x3007, 0x3007) AM_WRITE(cntsteer_sound_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cntsteer_state::cntsteer_cpu1_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(cntsteer_foreground_vram_w) AM_SHARE("videoram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(cntsteer_foreground_attr_w) AM_SHARE("colorram")
- AM_RANGE(0x3000, 0x3000) AM_WRITE(cntsteer_sub_nmi_w)
- AM_RANGE(0x3001, 0x3001) AM_WRITE(cntsteer_sub_irq_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cntsteer_state::cntsteer_cpu2_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("videoram2")
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE(cntsteer_background_mirror_r,cntsteer_background_w)
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0")
- AM_RANGE(0x3001, 0x3001) AM_READ(cntsteer_adx_r)
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("COINS")
- AM_RANGE(0x3000, 0x3004) AM_WRITE(cntsteer_vregs_w)
- AM_RANGE(0x3005, 0x3005) AM_WRITE(gekitsui_sub_irq_ack)
- AM_RANGE(0x3006, 0x3006) AM_WRITE(cntsteer_main_irq_w)
- AM_RANGE(0x3007, 0x3007) AM_WRITE(cntsteer_sound_w)
- AM_RANGE(0x3007, 0x3007) AM_READNOP //m6809 bug.
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void cntsteer_state::gekitsui_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x11ff).ram().share("spriteram");
+ map(0x1200, 0x1fff).ram();
+ map(0x2000, 0x23ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_vram_w)).share("videoram");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_attr_w)).share("colorram");
+ map(0x3000, 0x3003).w(this, FUNC(cntsteer_state::zerotrgt_ctrl_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void cntsteer_state::gekitsui_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(cntsteer_state::cntsteer_background_w)).share("videoram2");
+ map(0x3000, 0x3000).portr("DSW0");
+ map(0x3001, 0x3001).portr("P2");
+ map(0x3002, 0x3002).portr("P1");
+ map(0x3003, 0x3003).portr("COINS");
+ map(0x3000, 0x3004).w(this, FUNC(cntsteer_state::zerotrgt_vregs_w));
+ map(0x3005, 0x3005).w(this, FUNC(cntsteer_state::gekitsui_sub_irq_ack));
+ map(0x3007, 0x3007).w(this, FUNC(cntsteer_state::cntsteer_sound_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void cntsteer_state::cntsteer_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x11ff).ram().share("spriteram");
+ map(0x2000, 0x23ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_vram_w)).share("videoram");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_attr_w)).share("colorram");
+ map(0x3000, 0x3000).w(this, FUNC(cntsteer_state::cntsteer_sub_nmi_w));
+ map(0x3001, 0x3001).w(this, FUNC(cntsteer_state::cntsteer_sub_irq_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void cntsteer_state::cntsteer_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(cntsteer_state::cntsteer_background_w)).share("videoram2");
+ map(0x2000, 0x2fff).rw(this, FUNC(cntsteer_state::cntsteer_background_mirror_r), FUNC(cntsteer_state::cntsteer_background_w));
+ map(0x3000, 0x3000).portr("DSW0");
+ map(0x3001, 0x3001).r(this, FUNC(cntsteer_state::cntsteer_adx_r));
+ map(0x3002, 0x3002).portr("P1");
+ map(0x3003, 0x3003).portr("COINS");
+ map(0x3000, 0x3004).w(this, FUNC(cntsteer_state::cntsteer_vregs_w));
+ map(0x3005, 0x3005).w(this, FUNC(cntsteer_state::gekitsui_sub_irq_ack));
+ map(0x3006, 0x3006).w(this, FUNC(cntsteer_state::cntsteer_main_irq_w));
+ map(0x3007, 0x3007).w(this, FUNC(cntsteer_state::cntsteer_sound_w));
+ map(0x3007, 0x3007).nopr(); //m6809 bug.
+ map(0x4000, 0xffff).rom();
+}
/***************************************************************************/
@@ -652,17 +656,18 @@ INTERRUPT_GEN_MEMBER(cntsteer_state::sound_interrupt)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(cntsteer_state::sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
+void cntsteer_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
// AM_RANGE(0x1000, 0x1000) AM_WRITE(nmiack_w)
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(nmimask_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x2000, 0x2000).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w(this, FUNC(cntsteer_state::nmimask_w));
+ map(0xe000, 0xffff).rom();
+}
/***************************************************************************/
diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp
index 6a224f9b8e6..16d5b99c469 100644
--- a/src/mame/drivers/cobra.cpp
+++ b/src/mame/drivers/cobra.cpp
@@ -1744,16 +1744,17 @@ WRITE32_MEMBER(cobra_state::main_cpu_dc_store)
}
}
-ADDRESS_MAP_START(cobra_state::cobra_main_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM
- AM_RANGE(0x80000cf8, 0x80000cff) AM_READWRITE(main_mpc106_r, main_mpc106_w)
- AM_RANGE(0xc0000000, 0xc03fffff) AM_RAM AM_SHARE("gfx_main_ram_0") // GFX board main ram, bank 0
- AM_RANGE(0xc7c00000, 0xc7ffffff) AM_RAM AM_SHARE("gfx_main_ram_1") // GFX board main ram, bank 1
- AM_RANGE(0xfff00000, 0xfff7ffff) AM_ROM AM_REGION("user1", 0) /* Boot ROM */
- AM_RANGE(0xfff80000, 0xfffbffff) AM_READWRITE(main_comram_r, main_comram_w)
- AM_RANGE(0xffff0000, 0xffff0007) AM_READWRITE(main_fifo_r, main_fifo_w)
-ADDRESS_MAP_END
+void cobra_state::cobra_main_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("main_ram");
+ map(0x07c00000, 0x07ffffff).ram();
+ map(0x80000cf8, 0x80000cff).rw(this, FUNC(cobra_state::main_mpc106_r), FUNC(cobra_state::main_mpc106_w));
+ map(0xc0000000, 0xc03fffff).ram().share("gfx_main_ram_0"); // GFX board main ram, bank 0
+ map(0xc7c00000, 0xc7ffffff).ram().share("gfx_main_ram_1"); // GFX board main ram, bank 1
+ map(0xfff00000, 0xfff7ffff).rom().region("user1", 0); /* Boot ROM */
+ map(0xfff80000, 0xfffbffff).rw(this, FUNC(cobra_state::main_comram_r), FUNC(cobra_state::main_comram_w));
+ map(0xffff0000, 0xffff0007).rw(this, FUNC(cobra_state::main_fifo_r), FUNC(cobra_state::main_fifo_w));
+}
/*****************************************************************************/
@@ -2084,28 +2085,29 @@ WRITE8_MEMBER(cobra_state::sub_jvs_w)
}
}
-ADDRESS_MAP_START(cobra_state::cobra_sub_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("sub_ram") // Main RAM
- AM_RANGE(0x70000000, 0x7003ffff) AM_READWRITE(sub_comram_r, sub_comram_w) // Double buffered shared RAM between Main and Sub
+void cobra_state::cobra_sub_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("sub_ram"); // Main RAM
+ map(0x70000000, 0x7003ffff).rw(this, FUNC(cobra_state::sub_comram_r), FUNC(cobra_state::sub_comram_w)); // Double buffered shared RAM between Main and Sub
// AM_RANGE(0x78000000, 0x780000ff) AM_NOP // SCSI controller (unused)
- AM_RANGE(0x78040000, 0x7804ffff) AM_DEVREADWRITE16("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w, 0xffffffff)
- AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE16(sub_ata0_r, sub_ata0_w, 0xffffffff)
- AM_RANGE(0x780c0010, 0x780c001f) AM_READWRITE16(sub_ata1_r, sub_ata1_w, 0xffffffff)
- AM_RANGE(0x78200000, 0x782000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w) // PSAC registers
- AM_RANGE(0x78210000, 0x78217fff) AM_RAM_WRITE(sub_psac_palette_w) AM_SHARE("paletteram") // PSAC palette RAM
- AM_RANGE(0x78220000, 0x7823ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w) // PSAC tile RAM
- AM_RANGE(0x78240000, 0x7827ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w) // PSAC character RAM
- AM_RANGE(0x78280000, 0x7828000f) AM_NOP // ???
- AM_RANGE(0x78300000, 0x7830000f) AM_READWRITE(sub_psac2_r, sub_psac2_w) // PSAC
- AM_RANGE(0x7e000000, 0x7e000003) AM_READWRITE(sub_unk7e_r, sub_debug_w)
- AM_RANGE(0x7e040000, 0x7e041fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */
- AM_RANGE(0x7e180000, 0x7e180003) AM_READWRITE(sub_unk1_r, sub_unk1_w) // TMS57002?
- AM_RANGE(0x7e200000, 0x7e200003) AM_READWRITE(sub_config_r, sub_config_w)
- AM_RANGE(0x7e280000, 0x7e28ffff) AM_NOP // LANC
- AM_RANGE(0x7e300000, 0x7e30ffff) AM_NOP // LANC
- AM_RANGE(0x7e380000, 0x7e380003) AM_READWRITE(sub_mainbd_r, sub_mainbd_w)
- AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user2", 0) /* Boot ROM */
-ADDRESS_MAP_END
+ map(0x78040000, 0x7804ffff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w));
+ map(0x78080000, 0x7808000f).rw(this, FUNC(cobra_state::sub_ata0_r), FUNC(cobra_state::sub_ata0_w));
+ map(0x780c0010, 0x780c001f).rw(this, FUNC(cobra_state::sub_ata1_r), FUNC(cobra_state::sub_ata1_w));
+ map(0x78200000, 0x782000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w)); // PSAC registers
+ map(0x78210000, 0x78217fff).ram().w(this, FUNC(cobra_state::sub_psac_palette_w)).share("paletteram"); // PSAC palette RAM
+ map(0x78220000, 0x7823ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w)); // PSAC tile RAM
+ map(0x78240000, 0x7827ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w)); // PSAC character RAM
+ map(0x78280000, 0x7828000f).noprw(); // ???
+ map(0x78300000, 0x7830000f).rw(this, FUNC(cobra_state::sub_psac2_r), FUNC(cobra_state::sub_psac2_w)); // PSAC
+ map(0x7e000000, 0x7e000003).rw(this, FUNC(cobra_state::sub_unk7e_r), FUNC(cobra_state::sub_debug_w));
+ map(0x7e040000, 0x7e041fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */
+ map(0x7e180000, 0x7e180003).rw(this, FUNC(cobra_state::sub_unk1_r), FUNC(cobra_state::sub_unk1_w)); // TMS57002?
+ map(0x7e200000, 0x7e200003).rw(this, FUNC(cobra_state::sub_config_r), FUNC(cobra_state::sub_config_w));
+ map(0x7e280000, 0x7e28ffff).noprw(); // LANC
+ map(0x7e300000, 0x7e30ffff).noprw(); // LANC
+ map(0x7e380000, 0x7e380003).rw(this, FUNC(cobra_state::sub_mainbd_r), FUNC(cobra_state::sub_mainbd_w));
+ map(0x7ff80000, 0x7fffffff).rom().region("user2", 0); /* Boot ROM */
+}
/*****************************************************************************/
@@ -3190,19 +3192,20 @@ WRITE64_MEMBER(cobra_state::gfx_debug_state_w)
}
}
-ADDRESS_MAP_START(cobra_state::cobra_gfx_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("gfx_main_ram_0")
- AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM AM_SHARE("gfx_main_ram_1")
- AM_RANGE(0x10000000, 0x100007ff) AM_WRITE(gfx_fifo0_w)
- AM_RANGE(0x18000000, 0x180007ff) AM_WRITE(gfx_fifo1_w)
- AM_RANGE(0x1e000000, 0x1e0007ff) AM_WRITE(gfx_fifo2_w)
- AM_RANGE(0x20000000, 0x20000007) AM_WRITE(gfx_buf_w) // this might really map to 0x1e000000, depending on the pagetable
- AM_RANGE(0x7f000000, 0x7f00ffff) AM_RAM AM_SHARE("pagetable")
- AM_RANGE(0xfff00000, 0xfff7ffff) AM_ROM AM_REGION("user3", 0) /* Boot ROM */
- AM_RANGE(0xfff80000, 0xfff80007) AM_WRITE(gfx_debug_state_w)
- AM_RANGE(0xffff0000, 0xffff0007) AM_READWRITE(gfx_unk1_r, gfx_unk1_w)
- AM_RANGE(0xffff0010, 0xffff001f) AM_READ(gfx_fifo_r)
-ADDRESS_MAP_END
+void cobra_state::cobra_gfx_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("gfx_main_ram_0");
+ map(0x07c00000, 0x07ffffff).ram().share("gfx_main_ram_1");
+ map(0x10000000, 0x100007ff).w(this, FUNC(cobra_state::gfx_fifo0_w));
+ map(0x18000000, 0x180007ff).w(this, FUNC(cobra_state::gfx_fifo1_w));
+ map(0x1e000000, 0x1e0007ff).w(this, FUNC(cobra_state::gfx_fifo2_w));
+ map(0x20000000, 0x20000007).w(this, FUNC(cobra_state::gfx_buf_w)); // this might really map to 0x1e000000, depending on the pagetable
+ map(0x7f000000, 0x7f00ffff).ram().share("pagetable");
+ map(0xfff00000, 0xfff7ffff).rom().region("user3", 0); /* Boot ROM */
+ map(0xfff80000, 0xfff80007).w(this, FUNC(cobra_state::gfx_debug_state_w));
+ map(0xffff0000, 0xffff0007).rw(this, FUNC(cobra_state::gfx_unk1_r), FUNC(cobra_state::gfx_unk1_w));
+ map(0xffff0010, 0xffff001f).r(this, FUNC(cobra_state::gfx_fifo_r));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index 78574399992..0092206c6fc 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -399,9 +399,10 @@ MACHINE_CONFIG_END
// MACHINE_CONFIG ( coco_floating )
//-------------------------------------------------
-ADDRESS_MAP_START(coco_state::coco_floating_map)
- AM_RANGE(0x0000, 0xFFFF) AM_READ(floating_bus_read)
-ADDRESS_MAP_END
+void coco_state::coco_floating_map(address_map &map)
+{
+ map(0x0000, 0xFFFF).r(this, FUNC(coco_state::floating_bus_read));
+}
MACHINE_CONFIG_START(coco_state::coco_floating)
diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp
index 24e2d0292da..a1bd10a3cf1 100644
--- a/src/mame/drivers/coco3.cpp
+++ b/src/mame/drivers/coco3.cpp
@@ -30,29 +30,30 @@
// ADDRESS_MAP( coco3_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(coco3_state::coco3_mem)
- AM_RANGE(0x0000, 0x1FFF) AM_READ_BANK("rbank0") AM_WRITE_BANK("wbank0")
- AM_RANGE(0x2000, 0x3FFF) AM_READ_BANK("rbank1") AM_WRITE_BANK("wbank1")
- AM_RANGE(0x4000, 0x5FFF) AM_READ_BANK("rbank2") AM_WRITE_BANK("wbank2")
- AM_RANGE(0x6000, 0x7FFF) AM_READ_BANK("rbank3") AM_WRITE_BANK("wbank3")
- AM_RANGE(0x8000, 0x9FFF) AM_READ_BANK("rbank4") AM_WRITE_BANK("wbank4")
- AM_RANGE(0xA000, 0xBFFF) AM_READ_BANK("rbank5") AM_WRITE_BANK("wbank5")
- AM_RANGE(0xC000, 0xDFFF) AM_READ_BANK("rbank6") AM_WRITE_BANK("wbank6")
- AM_RANGE(0xE000, 0xFDFF) AM_READ_BANK("rbank7") AM_WRITE_BANK("wbank7")
- AM_RANGE(0xFE00, 0xFEFF) AM_READ_BANK("rbank8") AM_WRITE_BANK("wbank8")
- AM_RANGE(0xFF00, 0xFF1F) AM_READWRITE(ff00_read, ff00_write)
- AM_RANGE(0xFF20, 0xFF3F) AM_READWRITE(ff20_read, ff20_write)
- AM_RANGE(0xFF40, 0xFF5F) AM_READWRITE(ff40_read, ff40_write)
- AM_RANGE(0xFF60, 0xFF8F) AM_READWRITE(ff60_read, ff60_write)
- AM_RANGE(0xFF90, 0xFFDF) AM_DEVREADWRITE(GIME_TAG, gime_device, read, write)
+void coco3_state::coco3_mem(address_map &map)
+{
+ map(0x0000, 0x1FFF).bankr("rbank0").bankw("wbank0");
+ map(0x2000, 0x3FFF).bankr("rbank1").bankw("wbank1");
+ map(0x4000, 0x5FFF).bankr("rbank2").bankw("wbank2");
+ map(0x6000, 0x7FFF).bankr("rbank3").bankw("wbank3");
+ map(0x8000, 0x9FFF).bankr("rbank4").bankw("wbank4");
+ map(0xA000, 0xBFFF).bankr("rbank5").bankw("wbank5");
+ map(0xC000, 0xDFFF).bankr("rbank6").bankw("wbank6");
+ map(0xE000, 0xFDFF).bankr("rbank7").bankw("wbank7");
+ map(0xFE00, 0xFEFF).bankr("rbank8").bankw("wbank8");
+ map(0xFF00, 0xFF1F).rw(this, FUNC(coco3_state::ff00_read), FUNC(coco3_state::ff00_write));
+ map(0xFF20, 0xFF3F).rw(this, FUNC(coco3_state::ff20_read), FUNC(coco3_state::ff20_write));
+ map(0xFF40, 0xFF5F).rw(this, FUNC(coco3_state::ff40_read), FUNC(coco3_state::ff40_write));
+ map(0xFF60, 0xFF8F).rw(this, FUNC(coco3_state::ff60_read), FUNC(coco3_state::ff60_write));
+ map(0xFF90, 0xFFDF).rw(m_gime, FUNC(gime_device::read), FUNC(gime_device::write));
// While Tepolt and other sources say that the interrupt vectors are mapped to
// the same memory accessed at $BFFx, William Astle offered evidence that this
// memory on a CoCo 3 is not the same.
//
// http://lost.l-w.ca/0x05/coco3-and-interrupt-vectors/
- AM_RANGE(0xFFE0, 0xFFFF) AM_ROM AM_REGION(MAINCPU_TAG, 0x7FE0)
-ADDRESS_MAP_END
+ map(0xFFE0, 0xFFFF).rom().region(MAINCPU_TAG, 0x7FE0);
+}
diff --git a/src/mame/drivers/cocoloco.cpp b/src/mame/drivers/cocoloco.cpp
index 6d387910ed7..5a028791fa7 100644
--- a/src/mame/drivers/cocoloco.cpp
+++ b/src/mame/drivers/cocoloco.cpp
@@ -399,18 +399,19 @@ WRITE8_MEMBER( cocoloco_state::coincounter_w )
* Memory Map Information *
***********************************/
-ADDRESS_MAP_START(cocoloco_state::cocoloco_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(vram_r, vram_w) // 256 x 256 x 1
- AM_RANGE(0x6001, 0x6001) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0x6003, 0x6003) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0x8003, 0x8003) AM_WRITE(vbank_w)
- AM_RANGE(0x8005, 0x8005) AM_WRITE(coincounter_w)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa005, 0xa005) AM_WRITE(vram_clear_w)
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void cocoloco_state::cocoloco_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).rw(this, FUNC(cocoloco_state::vram_r), FUNC(cocoloco_state::vram_w)); // 256 x 256 x 1
+ map(0x6001, 0x6001).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x6002, 0x6002).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0x6003, 0x6003).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0x8003, 0x8003).w(this, FUNC(cocoloco_state::vbank_w));
+ map(0x8005, 0x8005).w(this, FUNC(cocoloco_state::coincounter_w));
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa005, 0xa005).w(this, FUNC(cocoloco_state::vram_clear_w));
+ map(0xd000, 0xffff).rom();
+}
/*
1800-3fff: RW --> code inits reading and writing the whole range.
diff --git a/src/mame/drivers/codata.cpp b/src/mame/drivers/codata.cpp
index d85cb857376..a6af58b8ebf 100644
--- a/src/mame/drivers/codata.cpp
+++ b/src/mame/drivers/codata.cpp
@@ -34,18 +34,19 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(codata_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x200000, 0x203fff) AM_ROM AM_REGION("user1", 0);
- AM_RANGE(0x400000, 0x403fff) AM_ROM AM_REGION("user1", 0x4000);
- AM_RANGE(0x600000, 0x600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("uart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00)
- AM_RANGE(0x800000, 0x800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("timer", am9513_device, read16, write16)
- AM_RANGE(0xe00000, 0xe00001) AM_MIRROR(0x1ffffe) AM_READ_PORT("INPUT")
+void codata_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("rambase");
+ map(0x200000, 0x203fff).rom().region("user1", 0);
+ map(0x400000, 0x403fff).rom().region("user1", 0x4000);
+ map(0x600000, 0x600007).mirror(0x1ffff8).rw("uart", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0xff00);
+ map(0x800000, 0x800003).mirror(0x1ffffc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
+ map(0xe00000, 0xe00001).mirror(0x1ffffe).portr("INPUT");
//AM_RANGE(0xa00000, 0xbfffff) page map (rw)
//AM_RANGE(0xc00000, 0xdfffff) segment map (rw), context register (r)
//AM_RANGE(0xe00000, 0xffffff) context register (w), 16-bit parallel input port (r)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( codata )
diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp
index d60735f6552..5530f107b39 100644
--- a/src/mame/drivers/coinmstr.cpp
+++ b/src/mame/drivers/coinmstr.cpp
@@ -339,59 +339,64 @@ READ8_MEMBER(coinmstr_state::ff_r)
// Common memory map
-ADDRESS_MAP_START(coinmstr_state::coinmstr_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_SHARE("attr_ram1")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_SHARE("attr_ram2")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_SHARE("attr_ram3")
-ADDRESS_MAP_END
+void coinmstr_state::coinmstr_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_bg_w)).share("videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr1_w)).share("attr_ram1");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr2_w)).share("attr_ram2");
+ map(0xf800, 0xffff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr3_w)).share("attr_ram3");
+}
/* 2x 6462 hardware C000-DFFF & E000-FFFF */
-ADDRESS_MAP_START(coinmstr_state::jpcoin_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM /* 2x 6462 hardware */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_SHARE("attr_ram1")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_SHARE("attr_ram2")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_SHARE("attr_ram3")
-ADDRESS_MAP_END
+void coinmstr_state::jpcoin_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram(); /* 2x 6462 hardware */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_bg_w)).share("videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr1_w)).share("attr_ram1");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr2_w)).share("attr_ram2");
+ map(0xf800, 0xffff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr3_w)).share("attr_ram3");
+}
// Different I/O mappping for every game
-ADDRESS_MAP_START(coinmstr_state::quizmstr_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(question_r)
- AM_RANGE(0x00, 0x03) AM_WRITE(question_w)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x41, 0x41) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x50, 0x53) AM_READNOP
- AM_RANGE(0x50, 0x53) AM_WRITENOP
- AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0x70, 0x70) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x71, 0x71) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xc0, 0xc3) AM_READNOP
- AM_RANGE(0xc0, 0xc3) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coinmstr_state::trailblz_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(question_r)
- AM_RANGE(0x00, 0x03) AM_WRITE(question_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x48, 0x49) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x49, 0x49) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //?
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0xc1, 0xc3) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coinmstr_state::supnudg2_io_map)
+void coinmstr_state::quizmstr_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(coinmstr_state::question_r));
+ map(0x00, 0x03).w(this, FUNC(coinmstr_state::question_w));
+ map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x41, 0x41).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x48, 0x4b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x50, 0x53).nopr();
+ map(0x50, 0x53).nopw();
+ map(0x58, 0x5b).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x70, 0x70).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x71, 0x71).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xc0, 0xc3).nopr();
+ map(0xc0, 0xc3).nopw();
+}
+
+void coinmstr_state::trailblz_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(coinmstr_state::question_r));
+ map(0x00, 0x03).w(this, FUNC(coinmstr_state::question_w));
+ map(0x40, 0x40).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x41, 0x41).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x48, 0x49).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x49, 0x49).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x50, 0x53).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //?
+ map(0x60, 0x63).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x70, 0x73).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc1, 0xc3).nopw();
+}
+
+void coinmstr_state::supnudg2_io_map(address_map &map)
+{
/*
out 40
in 40
@@ -420,22 +425,23 @@ out C3
E0-E1 CRTC
*/
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(question_r)
- AM_RANGE(0x00, 0x03) AM_WRITE(question_w)
- AM_RANGE(0x48, 0x48) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x49, 0x49) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0x78, 0x79) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x79, 0x79) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xc0, 0xc1) AM_READNOP
- AM_RANGE(0xc0, 0xc3) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coinmstr_state::pokeroul_io_map)
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(coinmstr_state::question_r));
+ map(0x00, 0x03).w(this, FUNC(coinmstr_state::question_w));
+ map(0x48, 0x48).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x49, 0x49).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x40, 0x43).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x50, 0x53).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x68, 0x6b).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x78, 0x79).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x79, 0x79).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xc0, 0xc1).nopr();
+ map(0xc0, 0xc3).nopw();
+}
+
+void coinmstr_state::pokeroul_io_map(address_map &map)
+{
/*
out 68
in 69
@@ -456,18 +462,19 @@ out 7A
E0-E1 CRTC
*/
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x48, 0x49) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x49, 0x49) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia0", pia6821_device, read, write) /* confirmed */
- AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) /* confirmed */
- AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) /* confirmed */
- AM_RANGE(0xc0, 0xc1) AM_READ(ff_r) /* needed to boot */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coinmstr_state::jpcoin_io_map)
+ map.global_mask(0xff);
+ map(0x40, 0x40).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x41, 0x41).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x48, 0x49).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x49, 0x49).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x58, 0x5b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */
+ map(0x68, 0x6b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */
+ map(0x78, 0x7b).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */
+ map(0xc0, 0xc1).r(this, FUNC(coinmstr_state::ff_r)); /* needed to boot */
+}
+
+void coinmstr_state::jpcoin_io_map(address_map &map)
+{
/*
out C0
in C1
@@ -484,17 +491,17 @@ out DA
E0-E1 CRTC
*/
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("crtc", mc6845_device, address_w) /* confirmed */
- AM_RANGE(0xe1, 0xe1) AM_DEVWRITE("crtc", mc6845_device, register_w) /* confirmed */
- AM_RANGE(0xc0, 0xc1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xc1, 0xc1) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("pia0", pia6821_device, read, write) /* confirmed */
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("pia2", pia6821_device, read, write) /* confirmed */
+ map.global_mask(0xff);
+ map(0xe0, 0xe0).w("crtc", FUNC(mc6845_device::address_w)); /* confirmed */
+ map(0xe1, 0xe1).w("crtc", FUNC(mc6845_device::register_w)); /* confirmed */
+ map(0xc0, 0xc1).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xc1, 0xc1).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xc8, 0xcb).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */
+ map(0xd0, 0xd3).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xd8, 0xdb).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */
// AM_RANGE(0xc0, 0xc1) AM_READ(ff_r) /* needed to boot */
- AM_RANGE(0xc4, 0xc4) AM_READ(ff_r) /* needed to boot */
-ADDRESS_MAP_END
+ map(0xc4, 0xc4).r(this, FUNC(coinmstr_state::ff_r)); /* needed to boot */
+}
static INPUT_PORTS_START( quizmstr )
diff --git a/src/mame/drivers/coinmvga.cpp b/src/mame/drivers/coinmvga.cpp
index 01919609061..ebc8b27f1dd 100644
--- a/src/mame/drivers/coinmvga.cpp
+++ b/src/mame/drivers/coinmvga.cpp
@@ -315,34 +315,36 @@ READ16_MEMBER(coinmvga_state::test_r)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(coinmvga_state::coinmvga_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0) //maybe not
+void coinmvga_state::coinmvga_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x0fffff).rom().region("maincpu", 0); //maybe not
// AM_RANGE(0x0a0000, 0x0fffff) AM_RAM
// AM_RANGE(0x100000, 0x1fffff) AM_RAM //colorama
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("vram")
+ map(0x210000, 0x21ffff).ram().share("vram");
// AM_RANGE(0x40746e, 0x40746f) AM_READ(test_r) AM_WRITENOP //touch screen related, colorama
// AM_RANGE(0x403afa, 0x403afb) AM_READ(test_r) AM_WRITENOP //touch screen related, cmrltv75
- AM_RANGE(0x400000, 0x40ffff) AM_RAM
+ map(0x400000, 0x40ffff).ram();
- AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00)
- AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x600002, 0x600003) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
- AM_RANGE(0x600004, 0x600005) AM_DEVWRITE8("ramdac2", ramdac_device, index_w, 0xff00)
- AM_RANGE(0x600004, 0x600005) AM_DEVWRITE8("ramdac2", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x600006, 0x600007) AM_DEVWRITE8("ramdac2", ramdac_device, mask_w, 0xff00)
- AM_RANGE(0x600008, 0x600009) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff)
- AM_RANGE(0x610000, 0x61000f) AM_RAM //touch screen i/o
+ map(0x600000, 0x600000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x600001, 0x600001).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x600002, 0x600002).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x600004, 0x600004).w("ramdac2", FUNC(ramdac_device::index_w));
+ map(0x600005, 0x600005).w("ramdac2", FUNC(ramdac_device::pal_w));
+ map(0x600006, 0x600006).w("ramdac2", FUNC(ramdac_device::mask_w));
+ map(0x600008, 0x600009).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+ map(0x610000, 0x61000f).ram(); //touch screen i/o
- AM_RANGE(0x700000, 0x7fffff) AM_ROM AM_REGION("maincpu", 0) // ?
+ map(0x700000, 0x7fffff).rom().region("maincpu", 0); // ?
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") //"arrow" r?
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
+ map(0x800000, 0x800001).portr("DSW1"); //"arrow" r?
+ map(0x800002, 0x800003).portr("DSW2");
//0x800008 "arrow" w?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(coinmvga_state::coinmvga_io_map)
+void coinmvga_state::coinmvga_io_map(address_map &map)
+{
/* Digital I/O ports (ports 4-B are valid on 16-bit H8/3xx) */
// AM_RANGE(h8_device::PORT_4, h8_device::PORT_4)
// AM_RANGE(h8_device::PORT_5, h8_device::PORT_5)
@@ -358,7 +360,7 @@ ADDRESS_MAP_START(coinmvga_state::coinmvga_io_map)
// AM_RANGE(h8_device::ADC_1, h8_device::ADC_1)
// AM_RANGE(h8_device::ADC_2, h8_device::ADC_2)
// AM_RANGE(h8_device::ADC_3, h8_device::ADC_3)
-ADDRESS_MAP_END
+}
/* unknown writes (cmrltv75):
@@ -622,13 +624,15 @@ INTERRUPT_GEN_MEMBER(coinmvga_state::vblank_irq)
* Machine Drivers *
*************************/
-ADDRESS_MAP_START(coinmvga_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void coinmvga_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
-ADDRESS_MAP_START(coinmvga_state::ramdac2_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac2",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void coinmvga_state::ramdac2_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac2", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(coinmvga_state::coinmvga)
diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp
index 87a208bc139..ebe96d7da9e 100644
--- a/src/mame/drivers/coleco.cpp
+++ b/src/mame/drivers/coleco.cpp
@@ -94,28 +94,31 @@ WRITE8_MEMBER( coleco_state::paddle_on_w )
/* Memory Maps */
-ADDRESS_MAP_START(coleco_state::coleco_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) AM_SHARE("ram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coleco_state::coleco_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_WRITE(paddle_off_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_WRITE(paddle_on_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x1f) AM_DEVWRITE("sn76489a", sn76489a_device, write)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x1d) AM_READ(paddle_1_r)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x1d) AM_READ(paddle_2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coleco_state::czz50_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) AM_SHARE("ram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void coleco_state::coleco_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x6000, 0x63ff).ram().mirror(0x1c00).share("ram");
+ map(0x8000, 0xffff).rom();
+}
+
+void coleco_state::coleco_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x80).mirror(0x1f).w(this, FUNC(coleco_state::paddle_off_w));
+ map(0xa0, 0xa0).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0xa1, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0xc0, 0xc0).mirror(0x1f).w(this, FUNC(coleco_state::paddle_on_w));
+ map(0xe0, 0xe0).mirror(0x1f).w("sn76489a", FUNC(sn76489a_device::write));
+ map(0xe0, 0xe0).mirror(0x1d).r(this, FUNC(coleco_state::paddle_1_r));
+ map(0xe2, 0xe2).mirror(0x1d).r(this, FUNC(coleco_state::paddle_2_r));
+}
+
+void coleco_state::czz50_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x63ff).ram().mirror(0x1c00).share("ram");
+ map(0x8000, 0xffff).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp
index 5cdfc068b0b..64df611e046 100644
--- a/src/mame/drivers/combatsc.cpp
+++ b/src/mame/drivers/combatsc.cpp
@@ -346,56 +346,59 @@ READ8_MEMBER(combatsc_state::unk_r)
*
*************************************/
-ADDRESS_MAP_START(combatsc_state::combatsc_map)
- AM_RANGE(0x0000, 0x0007) AM_WRITE(combatsc_pf_control_w)
- AM_RANGE(0x001f, 0x001f) AM_READ(unk_r)
- AM_RANGE(0x0020, 0x005f) AM_READWRITE(combatsc_scrollram_r, combatsc_scrollram_w)
+void combatsc_state::combatsc_map(address_map &map)
+{
+ map(0x0000, 0x0007).w(this, FUNC(combatsc_state::combatsc_pf_control_w));
+ map(0x001f, 0x001f).r(this, FUNC(combatsc_state::unk_r));
+ map(0x0020, 0x005f).rw(this, FUNC(combatsc_state::combatsc_scrollram_r), FUNC(combatsc_state::combatsc_scrollram_w));
// AM_RANGE(0x0060, 0x00ff) AM_WRITEONLY /* RAM */
- AM_RANGE(0x0200, 0x0201) AM_READWRITE(protection_r, protection_w)
- AM_RANGE(0x0206, 0x0206) AM_WRITE(protection_clock_w)
-
- AM_RANGE(0x0400, 0x0400) AM_READ_PORT("IN0")
- AM_RANGE(0x0401, 0x0401) AM_READ_PORT("DSW3") /* DSW #3 */
- AM_RANGE(0x0402, 0x0402) AM_READ_PORT("DSW1") /* DSW #1 */
- AM_RANGE(0x0403, 0x0403) AM_READ_PORT("DSW2") /* DSW #2 */
- AM_RANGE(0x0404, 0x0407) AM_READ(trackball_r) /* 1P & 2P controls / trackball */
- AM_RANGE(0x0408, 0x0408) AM_WRITE(combatsc_coin_counter_w) /* coin counters */
- AM_RANGE(0x040c, 0x040c) AM_WRITE(combatsc_vreg_w)
- AM_RANGE(0x0410, 0x0410) AM_READNOP AM_WRITE(combatsc_bankselect_w) // read is clr a (discarded)
- AM_RANGE(0x0414, 0x0414) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x0418, 0x0418) AM_WRITE(combatsc_sh_irqtrigger_w)
- AM_RANGE(0x041c, 0x041c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset? */
-
- AM_RANGE(0x0600, 0x06ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0x0800, 0x1fff) AM_RAM /* RAM */
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(combatsc_video_r, combatsc_video_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM area */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(combatsc_state::combatscb_map)
- AM_RANGE(0x0000, 0x04ff) AM_RAM
- AM_RANGE(0x0500, 0x0500) AM_WRITE(combatscb_bankselect_w)
- AM_RANGE(0x0600, 0x06ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0x0800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(combatsc_video_r, combatsc_video_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM/RAM area */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(combatsc_state::combatsc_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
-
- AM_RANGE(0x9000, 0x9000) AM_WRITE(combatsc_play_w) /* upd7759 play voice */
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("upd", upd7759_device, port_w) /* upd7759 voice select */
- AM_RANGE(0xb000, 0xb000) AM_READ(combatsc_busy_r) /* upd7759 busy? */
- AM_RANGE(0xc000, 0xc000) AM_WRITE(combatsc_voice_reset_w) /* upd7759 reset? */
-
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* soundlatch read? */
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM 2203 intercepted */
-ADDRESS_MAP_END
+ map(0x0200, 0x0201).rw(this, FUNC(combatsc_state::protection_r), FUNC(combatsc_state::protection_w));
+ map(0x0206, 0x0206).w(this, FUNC(combatsc_state::protection_clock_w));
+
+ map(0x0400, 0x0400).portr("IN0");
+ map(0x0401, 0x0401).portr("DSW3"); /* DSW #3 */
+ map(0x0402, 0x0402).portr("DSW1"); /* DSW #1 */
+ map(0x0403, 0x0403).portr("DSW2"); /* DSW #2 */
+ map(0x0404, 0x0407).r(this, FUNC(combatsc_state::trackball_r)); /* 1P & 2P controls / trackball */
+ map(0x0408, 0x0408).w(this, FUNC(combatsc_state::combatsc_coin_counter_w)); /* coin counters */
+ map(0x040c, 0x040c).w(this, FUNC(combatsc_state::combatsc_vreg_w));
+ map(0x0410, 0x0410).nopr().w(this, FUNC(combatsc_state::combatsc_bankselect_w)); // read is clr a (discarded)
+ map(0x0414, 0x0414).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0418, 0x0418).w(this, FUNC(combatsc_state::combatsc_sh_irqtrigger_w));
+ map(0x041c, 0x041c).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset? */
+
+ map(0x0600, 0x06ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0x0800, 0x1fff).ram(); /* RAM */
+ map(0x2000, 0x3fff).rw(this, FUNC(combatsc_state::combatsc_video_r), FUNC(combatsc_state::combatsc_video_w));
+ map(0x4000, 0x7fff).bankr("bank1"); /* banked ROM area */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void combatsc_state::combatscb_map(address_map &map)
+{
+ map(0x0000, 0x04ff).ram();
+ map(0x0500, 0x0500).w(this, FUNC(combatsc_state::combatscb_bankselect_w));
+ map(0x0600, 0x06ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0x0800, 0x1fff).ram();
+ map(0x2000, 0x3fff).rw(this, FUNC(combatsc_state::combatsc_video_r), FUNC(combatsc_state::combatsc_video_w));
+ map(0x4000, 0x7fff).bankr("bank1"); /* banked ROM/RAM area */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void combatsc_state::combatsc_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM */
+ map(0x8000, 0x87ff).ram(); /* RAM */
+
+ map(0x9000, 0x9000).w(this, FUNC(combatsc_state::combatsc_play_w)); /* upd7759 play voice */
+ map(0xa000, 0xa000).w(m_upd7759, FUNC(upd7759_device::port_w)); /* upd7759 voice select */
+ map(0xb000, 0xb000).r(this, FUNC(combatsc_state::combatsc_busy_r)); /* upd7759 busy? */
+ map(0xc000, 0xc000).w(this, FUNC(combatsc_state::combatsc_voice_reset_w)); /* upd7759 reset? */
+
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* soundlatch read? */
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM 2203 intercepted */
+}
WRITE8_MEMBER(combatsc_state::combatscb_msm_w)
{
@@ -410,16 +413,17 @@ WRITE8_MEMBER(combatsc_state::combatscb_sound_irq_ack)
m_audiocpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(combatsc_state::combatscb_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM 2203 */
- AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ymsnd", ym2203_device, read) /* ??? */
- AM_RANGE(0x9800, 0x9800) AM_WRITE(combatscb_msm_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* soundlatch read? */
- AM_RANGE(0xa800, 0xa800) AM_WRITE(combatscb_sound_irq_ack)
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bl_abank")
-ADDRESS_MAP_END
+void combatsc_state::combatscb_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM */
+ map(0x8000, 0x87ff).ram(); /* RAM */
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM 2203 */
+ map(0x9008, 0x9009).r("ymsnd", FUNC(ym2203_device::read)); /* ??? */
+ map(0x9800, 0x9800).w(this, FUNC(combatsc_state::combatscb_msm_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* soundlatch read? */
+ map(0xa800, 0xa800).w(this, FUNC(combatsc_state::combatscb_sound_irq_ack));
+ map(0xc000, 0xffff).bankr("bl_abank");
+}
/*************************************
*
diff --git a/src/mame/drivers/comebaby.cpp b/src/mame/drivers/comebaby.cpp
index 7eba6e2c9b8..41a6eac692c 100644
--- a/src/mame/drivers/comebaby.cpp
+++ b/src/mame/drivers/comebaby.cpp
@@ -218,16 +218,18 @@ uint32_t comebaby_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-ADDRESS_MAP_START(comebaby_state::comebaby_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_RAM
- AM_RANGE(0x000c0000, 0x000fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(comebaby_state::comebaby_io)
- AM_IMPORT_FROM(pcat32_io_common)
-ADDRESS_MAP_END
+void comebaby_state::comebaby_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).ram();
+ map(0x000c0000, 0x000fffff).rom().region("bios", 0);
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void comebaby_state::comebaby_io(address_map &map)
+{
+ pcat32_io_common(map);
+}
static INPUT_PORTS_START( comebaby )
INPUT_PORTS_END
diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp
index 5a022f446ac..2b026570302 100644
--- a/src/mame/drivers/commando.cpp
+++ b/src/mame/drivers/commando.cpp
@@ -56,37 +56,40 @@ Note : there is an ingame typo bug that doesn't display the bonus life values
/* Memory Maps */
-ADDRESS_MAP_START(commando_state::commando_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(commando_c804_w)
- AM_RANGE(0xc808, 0xc809) AM_WRITE(commando_scrollx_w)
- AM_RANGE(0xc80a, 0xc80b) AM_WRITE(commando_scrolly_w)
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(commando_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(commando_colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(commando_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(commando_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xfdff) AM_RAM
- AM_RANGE(0xfe00, 0xff7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xff80, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(commando_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(commando_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ym2", ym2203_device, write)
-ADDRESS_MAP_END
+void commando_state::commando_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc804, 0xc804).w(this, FUNC(commando_state::commando_c804_w));
+ map(0xc808, 0xc809).w(this, FUNC(commando_state::commando_scrollx_w));
+ map(0xc80a, 0xc80b).w(this, FUNC(commando_state::commando_scrolly_w));
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(commando_state::commando_videoram2_w)).share("videoram2");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(commando_state::commando_colorram2_w)).share("colorram2");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(commando_state::commando_videoram_w)).share("videoram");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(commando_state::commando_colorram_w)).share("colorram");
+ map(0xe000, 0xfdff).ram();
+ map(0xfe00, 0xff7f).ram().share("spriteram");
+ map(0xff80, 0xffff).ram();
+}
+
+void commando_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom().share("decrypted_opcodes");
+}
+
+void commando_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8001).w("ym1", FUNC(ym2203_device::write));
+ map(0x8002, 0x8003).w("ym2", FUNC(ym2203_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/compc.cpp b/src/mame/drivers/compc.cpp
index 7c3f0f7e9ff..3a4a88c3c55 100644
--- a/src/mame/drivers/compc.cpp
+++ b/src/mame/drivers/compc.cpp
@@ -172,22 +172,25 @@ static INPUT_PORTS_START(compc)
PORT_INCLUDE(pc_keyboard)
INPUT_PORTS_END
-ADDRESS_MAP_START(compc_state::compc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(compc_state::compc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
- AM_RANGE(0x0060, 0x0063) AM_READWRITE(pio_r, pio_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(compc_state::compciii_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
- AM_RANGE(0x0060, 0x0063) AM_READWRITE(pioiii_r, pioiii_w)
-ADDRESS_MAP_END
+void compc_state::compc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void compc_state::compc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0063).rw(this, FUNC(compc_state::pio_r), FUNC(compc_state::pio_w));
+}
+
+void compc_state::compciii_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0063).rw(this, FUNC(compc_state::pioiii_r), FUNC(compc_state::pioiii_w));
+}
MACHINE_CONFIG_START(compc_state::compc)
MCFG_CPU_ADD("maincpu", I8088, 4772720*2)
diff --git a/src/mame/drivers/compgolf.cpp b/src/mame/drivers/compgolf.cpp
index 80ac9ee3191..6649b12ee1b 100644
--- a/src/mame/drivers/compgolf.cpp
+++ b/src/mame/drivers/compgolf.cpp
@@ -60,20 +60,21 @@ WRITE8_MEMBER(compgolf_state::compgolf_ctrl_w)
*
*************************************/
-ADDRESS_MAP_START(compgolf_state::compgolf_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(compgolf_video_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(compgolf_back_w) AM_SHARE("bg_ram")
- AM_RANGE(0x2000, 0x2060) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2061, 0x2061) AM_WRITENOP
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("P1")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") AM_WRITE(compgolf_ctrl_w)
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2")
- AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void compgolf_state::compgolf_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x17ff).ram().w(this, FUNC(compgolf_state::compgolf_video_w)).share("videoram");
+ map(0x1800, 0x1fff).ram().w(this, FUNC(compgolf_state::compgolf_back_w)).share("bg_ram");
+ map(0x2000, 0x2060).ram().share("spriteram");
+ map(0x2061, 0x2061).nopw();
+ map(0x3000, 0x3000).portr("P1");
+ map(0x3001, 0x3001).portr("P2").w(this, FUNC(compgolf_state::compgolf_ctrl_w));
+ map(0x3002, 0x3002).portr("DSW1");
+ map(0x3003, 0x3003).portr("DSW2");
+ map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp
index e940929774b..6fe593d274a 100644
--- a/src/mame/drivers/compis.cpp
+++ b/src/mame/drivers/compis.cpp
@@ -393,46 +393,49 @@ WRITE16_MEMBER( compis_state::pcs6_14_15_w )
// ADDRESS_MAP( compis_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(compis_state::compis_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0x60000, 0x63fff) AM_MIRROR(0x1c000) AM_DEVICE(I80130_TAG, i80130_device, rom_map)
- AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0)
-ADDRESS_MAP_END
+void compis_state::compis_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).ram();
+ map(0x60000, 0x63fff).mirror(0x1c000).m(m_osp, FUNC(i80130_device::rom_map));
+ map(0xe0000, 0xeffff).mirror(0x10000).rom().region(I80186_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( compis2_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(compis_state::compis2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
- AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0)
-ADDRESS_MAP_END
+void compis_state::compis2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x3ffff).ram();
+ map(0xe0000, 0xeffff).mirror(0x10000).rom().region(I80186_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( compis_io )
//-------------------------------------------------
-ADDRESS_MAP_START(compis_state::compis_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0007) /* PCS0 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8255_TAG, i8255_device, read, write, 0xff00)
- AM_RANGE(0x0080, 0x0087) /* PCS1 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0100, 0x011f) /* PCS2 */ AM_MIRROR(0x60) AM_DEVREADWRITE8(MM58174A_TAG, mm58274c_device, read, write, 0x00ff)
- AM_RANGE(0x0180, 0x01ff) /* PCS3 */ AM_DEVREADWRITE(GRAPHICS_TAG, compis_graphics_slot_device, pcs3_r, pcs3_w)
- //AM_RANGE(0x0200, 0x0201) /* PCS4 */ AM_MIRROR(0x7e)
- AM_RANGE(0x0280, 0x028f) /* PCS5 */ AM_MIRROR(0x70) AM_DEVICE(I80130_TAG, i80130_device, io_map)
- AM_RANGE(0x0300, 0x030f) AM_READWRITE(pcs6_0_1_r, pcs6_0_1_w)
- AM_RANGE(0x0310, 0x031f) AM_READWRITE(pcs6_2_3_r, pcs6_2_3_w)
- AM_RANGE(0x0320, 0x032f) AM_READWRITE(pcs6_4_5_r, pcs6_4_5_w)
- AM_RANGE(0x0330, 0x033f) AM_READWRITE(pcs6_6_7_r, pcs6_6_7_w)
- AM_RANGE(0x0340, 0x034f) AM_READWRITE(pcs6_8_9_r, pcs6_8_9_w)
- AM_RANGE(0x0350, 0x035f) AM_READWRITE(pcs6_10_11_r, pcs6_10_11_w)
- AM_RANGE(0x0360, 0x036f) AM_READWRITE(pcs6_12_13_r, pcs6_12_13_w)
- AM_RANGE(0x0370, 0x037f) AM_READWRITE(pcs6_14_15_r, pcs6_14_15_w)
-ADDRESS_MAP_END
+void compis_state::compis_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0007) /* PCS0 */ .mirror(0x78).rw(I8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00);
+ map(0x0080, 0x0087) /* PCS1 */ .mirror(0x78).rw(I8253_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0100, 0x011f) /* PCS2 */ .mirror(0x60).rw(MM58174A_TAG, FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)).umask16(0x00ff);
+ map(0x0180, 0x01ff) /* PCS3 */ .rw(GRAPHICS_TAG, FUNC(compis_graphics_slot_device::pcs3_r), FUNC(compis_graphics_slot_device::pcs3_w));
+ //map(0x0200, 0x0201) /* PCS4 */ .mirror(0x7e);
+ map(0x0280, 0x028f) /* PCS5 */ .mirror(0x70).m(I80130_TAG, FUNC(i80130_device::io_map));
+ map(0x0300, 0x030f).rw(this, FUNC(compis_state::pcs6_0_1_r), FUNC(compis_state::pcs6_0_1_w));
+ map(0x0310, 0x031f).rw(this, FUNC(compis_state::pcs6_2_3_r), FUNC(compis_state::pcs6_2_3_w));
+ map(0x0320, 0x032f).rw(this, FUNC(compis_state::pcs6_4_5_r), FUNC(compis_state::pcs6_4_5_w));
+ map(0x0330, 0x033f).rw(this, FUNC(compis_state::pcs6_6_7_r), FUNC(compis_state::pcs6_6_7_w));
+ map(0x0340, 0x034f).rw(this, FUNC(compis_state::pcs6_8_9_r), FUNC(compis_state::pcs6_8_9_w));
+ map(0x0350, 0x035f).rw(this, FUNC(compis_state::pcs6_10_11_r), FUNC(compis_state::pcs6_10_11_w));
+ map(0x0360, 0x036f).rw(this, FUNC(compis_state::pcs6_12_13_r), FUNC(compis_state::pcs6_12_13_w));
+ map(0x0370, 0x037f).rw(this, FUNC(compis_state::pcs6_14_15_r), FUNC(compis_state::pcs6_14_15_w));
+}
diff --git a/src/mame/drivers/compucolor.cpp b/src/mame/drivers/compucolor.cpp
index 7d4db38ebee..4ddc2f1cac2 100644
--- a/src/mame/drivers/compucolor.cpp
+++ b/src/mame/drivers/compucolor.cpp
@@ -83,17 +83,19 @@ public:
void compucolor2_mem(address_map &map);
};
-ADDRESS_MAP_START(compucolor2_state::compucolor2_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION(I8080_TAG, 0)
- AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(compucolor2_state::compucolor2_io)
- AM_RANGE(0x00, 0x0f) AM_MIRROR(0x10) AM_DEVICE(TMS5501_TAG, tms5501_device, io_map)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0x10) AM_DEVREADWRITE(CRT5027_TAG, crt5027_device, read, write)
- AM_RANGE(0x80, 0x9f) AM_MIRROR(0x60) AM_ROM AM_REGION("ua1", 0)
-ADDRESS_MAP_END
+void compucolor2_state::compucolor2_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region(I8080_TAG, 0);
+ map(0x6000, 0x6fff).mirror(0x1000).ram().share("videoram");
+ map(0x8000, 0xffff).ram();
+}
+
+void compucolor2_state::compucolor2_io(address_map &map)
+{
+ map(0x00, 0x0f).mirror(0x10).m(m_mioc, FUNC(tms5501_device::io_map));
+ map(0x60, 0x6f).mirror(0x10).rw(m_vtac, FUNC(crt5027_device::read), FUNC(crt5027_device::write));
+ map(0x80, 0x9f).mirror(0x60).rom().region("ua1", 0);
+}
static INPUT_PORTS_START( compucolor2 )
PORT_START("Y0")
diff --git a/src/mame/drivers/comquest.cpp b/src/mame/drivers/comquest.cpp
index 0e9ec13ae20..57ff8434d98 100644
--- a/src/mame/drivers/comquest.cpp
+++ b/src/mame/drivers/comquest.cpp
@@ -62,10 +62,11 @@ WRITE8_MEMBER(comquest_state::comquest_write)
}
#endif
-ADDRESS_MAP_START(comquest_state::comquest_mem)
+void comquest_state::comquest_mem(address_map &map)
+{
// { 0x0000, 0x7fff, SMH_BANK(1) },
- AM_RANGE(0x0000, 0xfff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0000, 0xfff).rom();
+}
static INPUT_PORTS_START( comquest )
PORT_START("in0")
diff --git a/src/mame/drivers/comx35.cpp b/src/mame/drivers/comx35.cpp
index 8925c55d6fe..cb11fde8a9a 100644
--- a/src/mame/drivers/comx35.cpp
+++ b/src/mame/drivers/comx35.cpp
@@ -292,20 +292,22 @@ WRITE8_MEMBER( comx35_state::io_w )
// ADDRESS_MAP( comx35_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(comx35_state::comx35_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w)
-ADDRESS_MAP_END
+void comx35_state::comx35_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(comx35_state::mem_r), FUNC(comx35_state::mem_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( comx35_io )
//-------------------------------------------------
-ADDRESS_MAP_START(comx35_state::comx35_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x07) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void comx35_state::comx35_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x07).rw(this, FUNC(comx35_state::io_r), FUNC(comx35_state::io_w));
+}
diff --git a/src/mame/drivers/concept.cpp b/src/mame/drivers/concept.cpp
index 967a7621e60..57eb691ca98 100644
--- a/src/mame/drivers/concept.cpp
+++ b/src/mame/drivers/concept.cpp
@@ -42,15 +42,16 @@
#include "screen.h"
#include "speaker.h"
-ADDRESS_MAP_START(concept_state::concept_memmap)
- AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION("maincpu", 0x010000) /* boot ROM mirror */
- AM_RANGE(0x000008, 0x000fff) AM_RAM /* static RAM */
- AM_RANGE(0x010000, 0x011fff) AM_ROM AM_REGION("maincpu", 0x010000) /* boot ROM */
- AM_RANGE(0x020000, 0x021fff) AM_ROM AM_REGION("macsbug", 0x0) /* macsbugs ROM (optional) */
- AM_RANGE(0x030000, 0x03ffff) AM_READWRITE(concept_io_r,concept_io_w) /* I/O space */
-
- AM_RANGE(0x080000, 0x0fffff) AM_RAM AM_SHARE("videoram")/* AM_RAMBANK(2) */ /* DRAM */
-ADDRESS_MAP_END
+void concept_state::concept_memmap(address_map &map)
+{
+ map(0x000000, 0x000007).rom().region("maincpu", 0x010000); /* boot ROM mirror */
+ 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(this, 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 */
+}
static INPUT_PORTS_START( concept )
diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp
index 86075041e3d..360a3ce00d7 100644
--- a/src/mame/drivers/contra.cpp
+++ b/src/mame/drivers/contra.cpp
@@ -55,50 +55,52 @@ WRITE8_MEMBER(contra_state::contra_coin_counter_w)
}
-ADDRESS_MAP_START(contra_state::contra_map)
- AM_RANGE(0x0000, 0x0007) AM_WRITE(contra_K007121_ctrl_0_w)
- AM_RANGE(0x0010, 0x0010) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0011, 0x0011) AM_READ_PORT("P1")
- AM_RANGE(0x0012, 0x0012) AM_READ_PORT("P2")
-
- AM_RANGE(0x0014, 0x0014) AM_READ_PORT("DSW1")
- AM_RANGE(0x0015, 0x0015) AM_READ_PORT("DSW2")
- AM_RANGE(0x0016, 0x0016) AM_READ_PORT("DSW3")
-
- AM_RANGE(0x0018, 0x0018) AM_WRITE(contra_coin_counter_w)
- AM_RANGE(0x001a, 0x001a) AM_WRITE(contra_sh_irqtrigger_w)
- AM_RANGE(0x001c, 0x001c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x001e, 0x001e) AM_WRITENOP /* ? */
- AM_RANGE(0x0060, 0x0067) AM_WRITE(contra_K007121_ctrl_1_w)
-
- AM_RANGE(0x0c00, 0x0cff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
-
- AM_RANGE(0x1000, 0x1fff) AM_RAM
-
- AM_RANGE(0x2000, 0x5fff) AM_READONLY
- AM_RANGE(0x2000, 0x23ff) AM_WRITE(contra_fg_cram_w) AM_SHARE("fg_cram")
- AM_RANGE(0x2400, 0x27ff) AM_WRITE(contra_fg_vram_w) AM_SHARE("fg_vram")
- AM_RANGE(0x2800, 0x2bff) AM_WRITE(contra_text_cram_w) AM_SHARE("tx_cram")
- AM_RANGE(0x2c00, 0x2fff) AM_WRITE(contra_text_vram_w) AM_SHARE("tx_vram")
- AM_RANGE(0x3000, 0x37ff) AM_WRITEONLY AM_SHARE("spriteram")/* 2nd bank is at 0x5000 */
- AM_RANGE(0x3800, 0x3fff) AM_WRITEONLY // second sprite buffer
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(contra_bg_cram_w) AM_SHARE("bg_cram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(contra_bg_vram_w) AM_SHARE("bg_vram")
- AM_RANGE(0x4800, 0x5fff) AM_WRITEONLY
-
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x7000, 0x7000) AM_WRITE(contra_bankswitch_w)
-
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(contra_state::sound_map)
- AM_RANGE(0x0000, 0x0000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void contra_state::contra_map(address_map &map)
+{
+ map(0x0000, 0x0007).w(this, FUNC(contra_state::contra_K007121_ctrl_0_w));
+ map(0x0010, 0x0010).portr("SYSTEM");
+ map(0x0011, 0x0011).portr("P1");
+ map(0x0012, 0x0012).portr("P2");
+
+ map(0x0014, 0x0014).portr("DSW1");
+ map(0x0015, 0x0015).portr("DSW2");
+ map(0x0016, 0x0016).portr("DSW3");
+
+ map(0x0018, 0x0018).w(this, FUNC(contra_state::contra_coin_counter_w));
+ map(0x001a, 0x001a).w(this, FUNC(contra_state::contra_sh_irqtrigger_w));
+ map(0x001c, 0x001c).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x001e, 0x001e).nopw(); /* ? */
+ map(0x0060, 0x0067).w(this, FUNC(contra_state::contra_K007121_ctrl_1_w));
+
+ map(0x0c00, 0x0cff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+
+ map(0x1000, 0x1fff).ram();
+
+ map(0x2000, 0x5fff).readonly();
+ map(0x2000, 0x23ff).w(this, FUNC(contra_state::contra_fg_cram_w)).share("fg_cram");
+ map(0x2400, 0x27ff).w(this, FUNC(contra_state::contra_fg_vram_w)).share("fg_vram");
+ map(0x2800, 0x2bff).w(this, FUNC(contra_state::contra_text_cram_w)).share("tx_cram");
+ map(0x2c00, 0x2fff).w(this, FUNC(contra_state::contra_text_vram_w)).share("tx_vram");
+ map(0x3000, 0x37ff).writeonly().share("spriteram");/* 2nd bank is at 0x5000 */
+ map(0x3800, 0x3fff).writeonly(); // second sprite buffer
+ map(0x4000, 0x43ff).w(this, FUNC(contra_state::contra_bg_cram_w)).share("bg_cram");
+ map(0x4400, 0x47ff).w(this, FUNC(contra_state::contra_bg_vram_w)).share("bg_vram");
+ map(0x4800, 0x5fff).writeonly();
+
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x7000, 0x7000).w(this, FUNC(contra_state::contra_bankswitch_w));
+
+ map(0x8000, 0xffff).rom();
+}
+
+void contra_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x4000).nopw(); /* read triggers irq reset and latch read (in the hardware only). */
+ map(0x6000, 0x67ff).ram();
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/controlid.cpp b/src/mame/drivers/controlid.cpp
index a1bc1d9e0e7..e50f6172bf6 100644
--- a/src/mame/drivers/controlid.cpp
+++ b/src/mame/drivers/controlid.cpp
@@ -62,13 +62,15 @@ private:
* Memory map information *
*************************/
-ADDRESS_MAP_START(controlidx628_state::prog_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void controlidx628_state::prog_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
-ADDRESS_MAP_START(controlidx628_state::io_map)
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void controlidx628_state::io_map(address_map &map)
+{
+ map(0x8000, 0xffff).ram();
+}
WRITE8_MEMBER( controlidx628_state::p0_w )
diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp
index 0022c3056ac..e4b8c63342c 100644
--- a/src/mame/drivers/coolpool.cpp
+++ b/src/mame/drivers/coolpool.cpp
@@ -605,38 +605,41 @@ READ16_MEMBER(coolpool_state::coolpool_input_r)
*
*************************************/
-ADDRESS_MAP_START(coolpool_state::amerdart_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("vram_base")
- AM_RANGE(0x04000000, 0x0400000f) AM_WRITE(amerdart_misc_w)
- AM_RANGE(0x05000000, 0x0500000f) AM_READWRITE(amerdart_iop_r, amerdart_iop_w)
- AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xffb00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(coolpool_state::coolpool_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base")
- AM_RANGE(0x01000000, 0x010000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) // IMSG176P-40
- AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w)
- AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w)
- AM_RANGE(0x03000000, 0x03ffffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(coolpool_state::nballsht_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base")
- AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w)
- AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w)
- AM_RANGE(0x04000000, 0x040000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) // IMSG176P-40
- AM_RANGE(0x06000000, 0x0601ffff) AM_MIRROR(0x00020000) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xff000000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void coolpool_state::amerdart_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram().share("vram_base");
+ map(0x04000000, 0x0400000f).w(this, FUNC(coolpool_state::amerdart_misc_w));
+ map(0x05000000, 0x0500000f).rw(this, FUNC(coolpool_state::amerdart_iop_r), FUNC(coolpool_state::amerdart_iop_w));
+ map(0x06000000, 0x06007fff).ram().w(this, 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("user1", 0);
+}
+
+
+void coolpool_state::coolpool_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("vram_base");
+ map(0x01000000, 0x010000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40
+ map(0x02000000, 0x020000ff).rw(this, FUNC(coolpool_state::coolpool_iop_r), FUNC(coolpool_state::coolpool_iop_w));
+ map(0x03000000, 0x0300000f).w(this, FUNC(coolpool_state::coolpool_misc_w));
+ map(0x03000000, 0x03ffffff).rom().region("gfx1", 0);
+ map(0x06000000, 0x06007fff).ram().w(this, 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("user1", 0);
+}
+
+
+void coolpool_state::nballsht_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("vram_base");
+ map(0x02000000, 0x020000ff).rw(this, FUNC(coolpool_state::coolpool_iop_r), FUNC(coolpool_state::coolpool_iop_w));
+ map(0x03000000, 0x0300000f).w(this, 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(this, 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("user1", 0);
+}
@@ -646,37 +649,41 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(coolpool_state::amerdart_dsp_pgm_map)
- AM_RANGE(0x000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void coolpool_state::amerdart_dsp_pgm_map(address_map &map)
+{
+ map(0x000, 0x0fff).rom();
+}
/* 000 - 0FF TMS32015 Internal Data RAM (256 words) in Data Address Space */
-ADDRESS_MAP_START(coolpool_state::amerdart_dsp_io_map)
- AM_RANGE(0x00, 0x01) AM_WRITE(dsp_romaddr_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(amerdart_dsp_answer_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac", dac_word_interface, write)
- AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0")
- AM_RANGE(0x06, 0x06) AM_READ(amerdart_trackball_r)
- AM_RANGE(0x07, 0x07) AM_READ(amerdart_dsp_cmd_r)
-ADDRESS_MAP_END
+void coolpool_state::amerdart_dsp_io_map(address_map &map)
+{
+ map(0x00, 0x01).w(this, FUNC(coolpool_state::dsp_romaddr_w));
+ map(0x02, 0x02).w(this, FUNC(coolpool_state::amerdart_dsp_answer_w));
+ map(0x03, 0x03).w("dac", FUNC(dac_word_interface::write));
+ map(0x04, 0x04).r(this, FUNC(coolpool_state::dsp_rom_r));
+ map(0x05, 0x05).portr("IN0");
+ map(0x06, 0x06).r(this, FUNC(coolpool_state::amerdart_trackball_r));
+ map(0x07, 0x07).r(this, FUNC(coolpool_state::amerdart_dsp_cmd_r));
+}
-ADDRESS_MAP_START(coolpool_state::coolpool_dsp_pgm_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void coolpool_state::coolpool_dsp_pgm_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(coolpool_state::coolpool_dsp_io_map)
- AM_RANGE(0x00, 0x01) AM_WRITE(dsp_romaddr_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(dsp_cmd_r, dsp_answer_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac", dac_word_interface, write)
- AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
+void coolpool_state::coolpool_dsp_io_map(address_map &map)
+{
+ map(0x00, 0x01).w(this, FUNC(coolpool_state::dsp_romaddr_w));
+ map(0x02, 0x02).rw(this, FUNC(coolpool_state::dsp_cmd_r), FUNC(coolpool_state::dsp_answer_w));
+ map(0x03, 0x03).w("dac", FUNC(dac_word_interface::write));
+ map(0x04, 0x04).r(this, FUNC(coolpool_state::dsp_rom_r));
+ map(0x05, 0x05).portr("IN0");
+ map(0x07, 0x07).portr("IN1");
+}
diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp
index 04f6fb2b5a3..00bcf159fc8 100644
--- a/src/mame/drivers/coolridr.cpp
+++ b/src/mame/drivers/coolridr.cpp
@@ -2824,33 +2824,35 @@ WRITE32_MEMBER(coolridr_state::sysh1_dma_w)
}
-ADDRESS_MAP_START(coolridr_state::system_h1_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_SHARE("share1") AM_WRITENOP
- AM_RANGE(0x01000000, 0x01ffffff) AM_ROM AM_REGION("gfx_data",0x0000000)
-
- AM_RANGE(0x03c00000, 0x03c1ffff) AM_MIRROR(0x00200000) AM_RAM_WRITE(sysh1_dma_w) AM_SHARE("fb_vram") /* mostly mapped at 0x03e00000 */
-
- AM_RANGE(0x03f00000, 0x03f0ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/
- AM_RANGE(0x03f40000, 0x03f4ffff) AM_RAM AM_SHARE("txt_vram")//text tilemap + "lineram"
- AM_RANGE(0x04000000, 0x0400000f) AM_READWRITE(sysh1_unk_blit_r,sysh1_unk_blit_w) AM_SHARE("sysh1_txt_blit")
- AM_RANGE(0x04000010, 0x04000013) AM_WRITE(sysh1_blit_mode_w)
- AM_RANGE(0x04000014, 0x04000017) AM_WRITE(sysh1_blit_data_w)
- AM_RANGE(0x04000018, 0x0400001b) AM_WRITE(sysh1_fb_mode_w)
- AM_RANGE(0x0400001c, 0x0400001f) AM_WRITE(sysh1_fb_data_w)
-
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("sysh1_workrah")
- AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_SHARE("share1")
-
- AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coolridr_state::aquastge_h1_map)
- AM_IMPORT_FROM(system_h1_map)
- AM_RANGE(0x03c00000, 0x03c0ffff) AM_MIRROR(0x00200000) AM_RAM_WRITE(sysh1_dma_w) AM_SHARE("fb_vram") /* mostly mapped at 0x03e00000 */
- AM_RANGE(0x03f50000, 0x03f5ffff) AM_RAM // video registers
- AM_RANGE(0x03e10000, 0x03e1ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/
- AM_RANGE(0x03f00000, 0x03f0ffff) AM_RAM /*Communication area RAM*/
-ADDRESS_MAP_END
+void coolridr_state::system_h1_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom().share("share1").nopw();
+ map(0x01000000, 0x01ffffff).rom().region("gfx_data", 0x0000000);
+
+ map(0x03c00000, 0x03c1ffff).mirror(0x00200000).ram().w(this, FUNC(coolridr_state::sysh1_dma_w)).share("fb_vram"); /* mostly mapped at 0x03e00000 */
+
+ map(0x03f00000, 0x03f0ffff).ram().share("share3"); /*Communication area RAM*/
+ map(0x03f40000, 0x03f4ffff).ram().share("txt_vram");//text tilemap + "lineram"
+ map(0x04000000, 0x0400000f).rw(this, FUNC(coolridr_state::sysh1_unk_blit_r), FUNC(coolridr_state::sysh1_unk_blit_w)).share("sysh1_txt_blit");
+ map(0x04000010, 0x04000013).w(this, FUNC(coolridr_state::sysh1_blit_mode_w));
+ map(0x04000014, 0x04000017).w(this, FUNC(coolridr_state::sysh1_blit_data_w));
+ map(0x04000018, 0x0400001b).w(this, FUNC(coolridr_state::sysh1_fb_mode_w));
+ map(0x0400001c, 0x0400001f).w(this, FUNC(coolridr_state::sysh1_fb_data_w));
+
+ map(0x06000000, 0x060fffff).ram().share("sysh1_workrah");
+ map(0x20000000, 0x201fffff).rom().share("share1");
+
+ map(0x60000000, 0x600003ff).nopw();
+}
+
+void coolridr_state::aquastge_h1_map(address_map &map)
+{
+ system_h1_map(map);
+ map(0x03c00000, 0x03c0ffff).mirror(0x00200000).ram().w(this, FUNC(coolridr_state::sysh1_dma_w)).share("fb_vram"); /* mostly mapped at 0x03e00000 */
+ map(0x03f50000, 0x03f5ffff).ram(); // video registers
+ map(0x03e10000, 0x03e1ffff).ram().share("share3"); /*Communication area RAM*/
+ map(0x03f00000, 0x03f0ffff).ram(); /*Communication area RAM*/
+}
READ16_MEMBER( coolridr_state::h1_soundram_r)
{
@@ -2988,42 +2990,45 @@ WRITE32_MEMBER(coolridr_state::sysh1_sound_dma_w)
-ADDRESS_MAP_START(coolridr_state::coolridr_submap)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM // note: SH7032 only supports 64KB
-
- AM_RANGE(0x01000000, 0x0100ffff) AM_RAM //communication RAM
-
- AM_RANGE(0x03000000, 0x0307ffff) AM_READWRITE16(h1_soundram_r, h1_soundram_w,0xffffffff) //AM_SHARE("soundram")
- AM_RANGE(0x03100000, 0x03100fff) AM_DEVREADWRITE16("scsp1", scsp_device, read, write, 0xffffffff)
- AM_RANGE(0x03200000, 0x0327ffff) AM_READWRITE16(h1_soundram2_r, h1_soundram2_w,0xffffffff) //AM_SHARE("soundram2")
- AM_RANGE(0x03300000, 0x03300fff) AM_DEVREADWRITE16("scsp2", scsp_device, read, write, 0xffffffff)
-
- AM_RANGE(0x04000000, 0x0400003f) AM_READWRITE(sysh1_sound_dma_r,sysh1_sound_dma_w) AM_SHARE("sound_dma")
-// AM_RANGE(0x04200000, 0x0420003f) AM_RAM /* unknown */
-
- AM_RANGE(0x05000000, 0x05000fff) AM_RAM
- AM_RANGE(0x05200000, 0x052001ff) AM_RAM
- AM_RANGE(0x05300000, 0x0530ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/
-// AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7032_r,sh7032_w,0xffffffff) // SH-7032H internal i/o
- AM_RANGE(0x06000000, 0x060001ff) AM_RAM AM_SHARE("nvram") // backup RAM
- AM_RANGE(0x06100000, 0x06100003) AM_READ_PORT("IN0") AM_WRITE8(lamps_w,0x000000ff)
- AM_RANGE(0x06100004, 0x06100007) AM_READ_PORT("IN1")
- AM_RANGE(0x06100008, 0x0610000b) AM_READ_PORT("IN5")
- AM_RANGE(0x0610000c, 0x0610000f) AM_READ_PORT("IN6")
- AM_RANGE(0x06100010, 0x06100013) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0x06100014, 0x06100017) AM_READ_PORT("IN3")
- AM_RANGE(0x0610001c, 0x0610001f) AM_READWRITE8(analog_mux_r,analog_mux_w,0x000000ff) //AM_WRITENOP
- AM_RANGE(0x06200000, 0x06200fff) AM_RAM //network related?
- AM_RANGE(0x07ffe000, 0x07ffffff) AM_RAM // On-Chip RAM (actually mapped at 0x0fffe000-0x0fffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(coolridr_state::aquastge_submap)
- AM_IMPORT_FROM(coolridr_submap)
- AM_RANGE(0x05200000, 0x0537ffff) AM_RAM
- AM_RANGE(0x05210000, 0x0521ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/
- AM_RANGE(0x06000200, 0x06000207) AM_WRITENOP // program bug?
- AM_RANGE(0x06100018, 0x0610001b) AM_READ_PORT("IN7")
-ADDRESS_MAP_END
+void coolridr_state::coolridr_submap(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom(); // note: SH7032 only supports 64KB
+
+ map(0x01000000, 0x0100ffff).ram(); //communication RAM
+
+ map(0x03000000, 0x0307ffff).rw(this, FUNC(coolridr_state::h1_soundram_r), FUNC(coolridr_state::h1_soundram_w)); //.share("soundram");
+ map(0x03100000, 0x03100fff).rw("scsp1", FUNC(scsp_device::read), FUNC(scsp_device::write));
+ map(0x03200000, 0x0327ffff).rw(this, FUNC(coolridr_state::h1_soundram2_r), FUNC(coolridr_state::h1_soundram2_w)); //.share("soundram2");
+ map(0x03300000, 0x03300fff).rw("scsp2", FUNC(scsp_device::read), FUNC(scsp_device::write));
+
+ map(0x04000000, 0x0400003f).rw(this, FUNC(coolridr_state::sysh1_sound_dma_r), FUNC(coolridr_state::sysh1_sound_dma_w)).share("sound_dma");
+// map(0x04200000, 0x0420003f).ram(); /* unknown */
+
+ map(0x05000000, 0x05000fff).ram();
+ map(0x05200000, 0x052001ff).ram();
+ map(0x05300000, 0x0530ffff).ram().share("share3"); /*Communication area RAM*/
+// map(0x05fffe00, 0x05ffffff).rw(this, FUNC(coolridr_state::sh7032_r), FUNC(coolridr_state::sh7032_w)); // SH-7032H internal i/o
+ map(0x06000000, 0x060001ff).ram().share("nvram"); // backup RAM
+ map(0x06100000, 0x06100003).portr("IN0");
+ map(0x06100003, 0x06100003).w(this, FUNC(coolridr_state::lamps_w));
+ map(0x06100004, 0x06100007).portr("IN1");
+ map(0x06100008, 0x0610000b).portr("IN5");
+ map(0x0610000c, 0x0610000f).portr("IN6");
+ map(0x06100010, 0x06100013).portr("IN2").nopw();
+ map(0x06100014, 0x06100017).portr("IN3");
+ map(0x0610001f, 0x0610001f).rw(this, FUNC(coolridr_state::analog_mux_r), FUNC(coolridr_state::analog_mux_w)); // .nopw();
+ map(0x06200000, 0x06200fff).ram(); //network related?
+ map(0x07ffe000, 0x07ffffff).ram(); // On-Chip RAM (actually mapped at 0x0fffe000-0x0fffffff)
+}
+
+void coolridr_state::aquastge_submap(address_map &map)
+{
+ coolridr_submap(map);
+ map(0x05200000, 0x0537ffff).ram();
+ map(0x05210000, 0x0521ffff).ram().share("share3"); /*Communication area RAM*/
+ map(0x06000200, 0x06000207).nopw(); // program bug?
+ map(0x06100018, 0x0610001b).portr("IN7");
+}
/* TODO: what is this for, volume mixing? MIDI? */
WRITE8_MEMBER(coolridr_state::sound_to_sh1_w)
@@ -3031,14 +3036,15 @@ WRITE8_MEMBER(coolridr_state::sound_to_sh1_w)
sound_fifo = data;
}
-ADDRESS_MAP_START(coolridr_state::system_h1_sound_map)
- AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_REGION("scsp1",0) AM_SHARE("soundram")
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp1", scsp_device, read, write)
- AM_RANGE(0x200000, 0x27ffff) AM_RAM AM_REGION("scsp2",0) AM_SHARE("soundram2")
- AM_RANGE(0x300000, 0x300fff) AM_DEVREADWRITE("scsp2", scsp_device, read, write)
- AM_RANGE(0x800000, 0x80ffff) AM_MIRROR(0x200000) AM_RAM
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(sound_to_sh1_w,0x00ff)
-ADDRESS_MAP_END
+void coolridr_state::system_h1_sound_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).ram().region("scsp1", 0).share("soundram");
+ map(0x100000, 0x100fff).rw("scsp1", FUNC(scsp_device::read), FUNC(scsp_device::write));
+ map(0x200000, 0x27ffff).ram().region("scsp2", 0).share("soundram2");
+ map(0x300000, 0x300fff).rw("scsp2", FUNC(scsp_device::read), FUNC(scsp_device::write));
+ map(0x800000, 0x80ffff).mirror(0x200000).ram();
+ map(0x900001, 0x900001).w(this, FUNC(coolridr_state::sound_to_sh1_w));
+}
diff --git a/src/mame/drivers/cop01.cpp b/src/mame/drivers/cop01.cpp
index 6ca1018e572..0e4fc1f2694 100644
--- a/src/mame/drivers/cop01.cpp
+++ b/src/mame/drivers/cop01.cpp
@@ -123,51 +123,56 @@ READ8_MEMBER(cop01_state::cop01_sound_irq_ack_w)
*
*************************************/
-ADDRESS_MAP_START(cop01_state::cop01_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM /* c000-c7ff in cop01 */
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(cop01_background_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xe0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf3ff) AM_WRITE(cop01_foreground_w) AM_SHARE("fgvideoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cop01_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x40, 0x43) AM_WRITE(cop01_vreg_w)
- AM_RANGE(0x44, 0x44) AM_WRITE(cop01_sound_command_w)
- AM_RANGE(0x45, 0x45) AM_WRITE(cop01_irq_ack_w) /* ? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cop01_state::mightguy_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x40, 0x43) AM_WRITE(cop01_vreg_w)
- AM_RANGE(0x44, 0x44) AM_WRITE(cop01_sound_command_w)
- AM_RANGE(0x45, 0x45) AM_WRITE(cop01_irq_ack_w) /* ? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cop01_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_READ(cop01_sound_irq_ack_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cop01_state::audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_READ(cop01_sound_command_r)
-ADDRESS_MAP_END
+void cop01_state::cop01_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram(); /* c000-c7ff in cop01 */
+ map(0xd000, 0xdfff).ram().w(this, FUNC(cop01_state::cop01_background_w)).share("bgvideoram");
+ map(0xe000, 0xe0ff).writeonly().share("spriteram");
+ map(0xf000, 0xf3ff).w(this, FUNC(cop01_state::cop01_foreground_w)).share("fgvideoram");
+}
+
+void cop01_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).portr("P2");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x40, 0x43).w(this, FUNC(cop01_state::cop01_vreg_w));
+ map(0x44, 0x44).w(this, FUNC(cop01_state::cop01_sound_command_w));
+ map(0x45, 0x45).w(this, FUNC(cop01_state::cop01_irq_ack_w)); /* ? */
+}
+
+void cop01_state::mightguy_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).portr("P2");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x40, 0x43).w(this, FUNC(cop01_state::cop01_vreg_w));
+ map(0x44, 0x44).w(this, FUNC(cop01_state::cop01_sound_command_w));
+ map(0x45, 0x45).w(this, FUNC(cop01_state::cop01_irq_ack_w)); /* ? */
+}
+
+void cop01_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8000).r(this, FUNC(cop01_state::cop01_sound_irq_ack_w));
+ map(0xc000, 0xc7ff).ram();
+}
+
+void cop01_state::audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x04, 0x05).w("ay3", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r(this, FUNC(cop01_state::cop01_sound_command_r));
+}
/*
@@ -239,14 +244,15 @@ WRITE8_MEMBER(cop01_state::prot_data_w)
}
}
-ADDRESS_MAP_START(cop01_state::mightguy_audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0x02, 0x02) AM_WRITE(prot_address_w) /* 1412M2 address? */
- AM_RANGE(0x03, 0x03) AM_WRITE(prot_data_w) /* 1412M2 data? */
- AM_RANGE(0x03, 0x03) AM_READ(prot_data_r) /* 1412M2? */
- AM_RANGE(0x06, 0x06) AM_READ(cop01_sound_command_r)
-ADDRESS_MAP_END
+void cop01_state::mightguy_audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write));
+ map(0x02, 0x02).w(this, FUNC(cop01_state::prot_address_w)); /* 1412M2 address? */
+ map(0x03, 0x03).w(this, FUNC(cop01_state::prot_data_w)); /* 1412M2 data? */
+ map(0x03, 0x03).r(this, FUNC(cop01_state::prot_data_r)); /* 1412M2? */
+ map(0x06, 0x06).r(this, FUNC(cop01_state::cop01_sound_command_r));
+}
/*************************************
diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp
index 2c6eec37eb3..dac8bbb90f3 100644
--- a/src/mame/drivers/cops.cpp
+++ b/src/mame/drivers/cops.cpp
@@ -802,27 +802,29 @@ WRITE_LINE_MEMBER(cops_state::via2_irq)
*
*************************************/
-ADDRESS_MAP_START(cops_state::cops_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x9fff) AM_ROM AM_REGION("program", 0)
- AM_RANGE(0xa000, 0xafff) AM_READWRITE(io1_r, io1_w)
- AM_RANGE(0xb000, 0xb00f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 1 */
- AM_RANGE(0xb800, 0xb80f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) /* VIA 2 */
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE(io2_r, io2_w)
- AM_RANGE(0xd000, 0xd007) AM_READWRITE(dacia_r, dacia_w)
- AM_RANGE(0xd800, 0xd80f) AM_DEVREADWRITE("via6522_3", via6522_device, read, write) /* VIA 3 */
- AM_RANGE(0xe000, 0xffff) AM_ROMBANK("sysbank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cops_state::revlatns_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x9fff) AM_ROM AM_REGION("program", 0)
- AM_RANGE(0xa000, 0xafff) AM_READWRITE(io1_lm_r, io1_w)
- AM_RANGE(0xb000, 0xb00f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 1 */
- AM_RANGE(0xc000, 0xc00f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0xd000, 0xd007) AM_READWRITE(dacia_r, dacia_w)
- AM_RANGE(0xe000, 0xffff) AM_ROMBANK("sysbank1")
-ADDRESS_MAP_END
+void cops_state::cops_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x9fff).rom().region("program", 0);
+ map(0xa000, 0xafff).rw(this, FUNC(cops_state::io1_r), FUNC(cops_state::io1_w));
+ map(0xb000, 0xb00f).rw("via6522_1", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 1 */
+ map(0xb800, 0xb80f).rw("via6522_2", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 2 */
+ map(0xc000, 0xcfff).rw(this, FUNC(cops_state::io2_r), FUNC(cops_state::io2_w));
+ map(0xd000, 0xd007).rw(this, FUNC(cops_state::dacia_r), FUNC(cops_state::dacia_w));
+ map(0xd800, 0xd80f).rw("via6522_3", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 3 */
+ map(0xe000, 0xffff).bankr("sysbank1");
+}
+
+void cops_state::revlatns_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x9fff).rom().region("program", 0);
+ map(0xa000, 0xafff).rw(this, FUNC(cops_state::io1_lm_r), FUNC(cops_state::io1_w));
+ map(0xb000, 0xb00f).rw("via6522_1", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 1 */
+ map(0xc000, 0xc00f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0xd000, 0xd007).rw(this, FUNC(cops_state::dacia_r), FUNC(cops_state::dacia_w));
+ map(0xe000, 0xffff).bankr("sysbank1");
+}
static INPUT_PORTS_START( cops )
PORT_START("SW0")
diff --git a/src/mame/drivers/copsnrob.cpp b/src/mame/drivers/copsnrob.cpp
index c5bad1c3865..de45158fde4 100644
--- a/src/mame/drivers/copsnrob.cpp
+++ b/src/mame/drivers/copsnrob.cpp
@@ -90,28 +90,29 @@ WRITE8_MEMBER(copsnrob_state::copsnrob_misc2_w)
*
*************************************/
-ADDRESS_MAP_START(copsnrob_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0500, 0x0507) AM_DEVWRITE("latch", f9334_device, write_d0)
- AM_RANGE(0x0600, 0x0600) AM_WRITEONLY AM_SHARE("trucky")
- AM_RANGE(0x0700, 0x07ff) AM_WRITEONLY AM_SHARE("truckram")
- AM_RANGE(0x0800, 0x08ff) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x0900, 0x0903) AM_WRITEONLY AM_SHARE("carimage")
- AM_RANGE(0x0a00, 0x0a03) AM_WRITEONLY AM_SHARE("cary")
- AM_RANGE(0x0b00, 0x0bff) AM_RAM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x1000) AM_READ(copsnrob_misc_r)
- AM_RANGE(0x1000, 0x1000) AM_WRITE(copsnrob_misc2_w)
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("CTRL1")
- AM_RANGE(0x1006, 0x1006) AM_READ_PORT("CTRL2")
- AM_RANGE(0x100a, 0x100a) AM_READ_PORT("CTRL3")
- AM_RANGE(0x100e, 0x100e) AM_READ_PORT("CTRL4")
- AM_RANGE(0x1012, 0x1012) AM_READ_PORT("DSW")
- AM_RANGE(0x1016, 0x1016) AM_READ_PORT("IN1")
- AM_RANGE(0x101a, 0x101a) AM_READ_PORT("IN2")
- AM_RANGE(0x1200, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void copsnrob_state::main_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0500, 0x0507).w("latch", FUNC(f9334_device::write_d0));
+ map(0x0600, 0x0600).writeonly().share("trucky");
+ map(0x0700, 0x07ff).writeonly().share("truckram");
+ map(0x0800, 0x08ff).ram().share("bulletsram");
+ map(0x0900, 0x0903).writeonly().share("carimage");
+ map(0x0a00, 0x0a03).writeonly().share("cary");
+ map(0x0b00, 0x0bff).ram();
+ map(0x0c00, 0x0fff).ram().share("videoram");
+ map(0x1000, 0x1000).r(this, FUNC(copsnrob_state::copsnrob_misc_r));
+ map(0x1000, 0x1000).w(this, FUNC(copsnrob_state::copsnrob_misc2_w));
+ map(0x1002, 0x1002).portr("CTRL1");
+ map(0x1006, 0x1006).portr("CTRL2");
+ map(0x100a, 0x100a).portr("CTRL3");
+ map(0x100e, 0x100e).portr("CTRL4");
+ map(0x1012, 0x1012).portr("DSW");
+ map(0x1016, 0x1016).portr("IN1");
+ map(0x101a, 0x101a).portr("IN2");
+ map(0x1200, 0x1fff).rom();
+}
diff --git a/src/mame/drivers/corona.cpp b/src/mame/drivers/corona.cpp
index 15e38a57824..6bcfc71b49b 100644
--- a/src/mame/drivers/corona.cpp
+++ b/src/mame/drivers/corona.cpp
@@ -627,44 +627,48 @@ WRITE8_MEMBER(corona_state::wc_meters_w)
*/
-ADDRESS_MAP_START(corona_state::winner81_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xb800, 0xb8ff) AM_RAM // copied from 8000 (0x10 bytes, repeated)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::winner81_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x70, 0x70) AM_WRITE(blitter_x_w)
- AM_RANGE(0x71, 0x71) AM_WRITE(blitter_unk_w)
- AM_RANGE(0x72, 0x72) AM_WRITE(blitter_trig_wdht_w)
- AM_RANGE(0x74, 0x74) AM_WRITE(blitter_y_w)
- AM_RANGE(0x75, 0x75) AM_READ(blitter_status_r)
- AM_RANGE(0x76, 0x76) AM_WRITE(blitter_aux_w)
-
- AM_RANGE(0xd8, 0xd8) AM_WRITENOP /* dunno, but is writing 0's very often */
- AM_RANGE(0xdf, 0xdf) AM_WRITE(sound_latch_w)
-
- AM_RANGE(0xe8, 0xe8) AM_READ_PORT("IN0") /* credits for players A, B, C, D */
- AM_RANGE(0xe9, 0xe9) AM_READ_PORT("IN3")
- AM_RANGE(0xea, 0xea) AM_READ_PORT("IN1") /* left & right for all players */
- AM_RANGE(0xeb, 0xeb) AM_READ_PORT("IN2") /* bet for all players */
- AM_RANGE(0xec, 0xec) AM_READ_PORT("IN4")
- AM_RANGE(0xed, 0xed) AM_READ_PORT("DSW1") /* DIP switches bank 1 */
- AM_RANGE(0xee, 0xee) AM_READ_PORT("DSW2")
- AM_RANGE(0xef, 0xef) AM_WRITE(wc_meters_w) /* meters: coin1 = bit0, coin2 = bit1, coinout = bit2 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::winner81_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::winner81_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void corona_state::winner81_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x8fff).ram().share("nvram");
+ map(0xb800, 0xb8ff).ram(); // copied from 8000 (0x10 bytes, repeated)
+}
+
+void corona_state::winner81_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x70, 0x70).w(this, FUNC(corona_state::blitter_x_w));
+ map(0x71, 0x71).w(this, FUNC(corona_state::blitter_unk_w));
+ map(0x72, 0x72).w(this, FUNC(corona_state::blitter_trig_wdht_w));
+ map(0x74, 0x74).w(this, FUNC(corona_state::blitter_y_w));
+ map(0x75, 0x75).r(this, FUNC(corona_state::blitter_status_r));
+ map(0x76, 0x76).w(this, FUNC(corona_state::blitter_aux_w));
+
+ map(0xd8, 0xd8).nopw(); /* dunno, but is writing 0's very often */
+ map(0xdf, 0xdf).w(this, FUNC(corona_state::sound_latch_w));
+
+ map(0xe8, 0xe8).portr("IN0"); /* credits for players A, B, C, D */
+ map(0xe9, 0xe9).portr("IN3");
+ map(0xea, 0xea).portr("IN1"); /* left & right for all players */
+ map(0xeb, 0xeb).portr("IN2"); /* bet for all players */
+ map(0xec, 0xec).portr("IN4");
+ map(0xed, 0xed).portr("DSW1"); /* DIP switches bank 1 */
+ map(0xee, 0xee).portr("DSW2");
+ map(0xef, 0xef).w(this, FUNC(corona_state::wc_meters_w)); /* meters: coin1 = bit0, coin2 = bit1, coinout = bit2 */
+}
+
+void corona_state::winner81_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x8000, 0x83ff).ram();
+}
+
+void corona_state::winner81_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/* Winners Circle 1982
@@ -684,42 +688,46 @@ ADDRESS_MAP_END
FE ---> Sound Latch (writes 01, 02 and 03 during attract)...
*/
-ADDRESS_MAP_START(corona_state::winner82_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0x80ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::winner82_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(blitter_x_w)
- AM_RANGE(0xf1, 0xf1) AM_WRITE(blitter_y_w)
- AM_RANGE(0xf2, 0xf2) AM_WRITE(blitter_trig_wdht_w)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(blitter_aux_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(blitter_unk_w)
- AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r)
-
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW1") /* coinage DIP SW */
- AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN0") /* controls for players A & B */
- AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN1") /* credits for players A, B, C, D */
- AM_RANGE(0xfb, 0xfb) AM_READ_PORT("IN3") /* single credits for players A, B, C, D, + fix bits 3, 4, 5, 6 in meters */
- AM_RANGE(0xfc, 0xfc) AM_WRITE(wc_meters_w)
- AM_RANGE(0xfd, 0xfd) AM_READ_PORT("IN2") /* controls for players C & D */
- AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w)
- AM_RANGE(0xff, 0xff) AM_READ_PORT("DSW2") /* no idea */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::winner82_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::winner82_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_WRITENOP /* socket for another ay, inited but never played */
-ADDRESS_MAP_END
+void corona_state::winner82_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).ram().share("nvram");
+ map(0x8000, 0x80ff).ram();
+}
+
+void corona_state::winner82_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(corona_state::blitter_x_w));
+ map(0xf1, 0xf1).w(this, FUNC(corona_state::blitter_y_w));
+ map(0xf2, 0xf2).w(this, FUNC(corona_state::blitter_trig_wdht_w));
+ map(0xf3, 0xf3).w(this, FUNC(corona_state::blitter_aux_w));
+ map(0xf4, 0xf4).w(this, FUNC(corona_state::blitter_unk_w));
+ map(0xf5, 0xf5).r(this, FUNC(corona_state::blitter_status_r));
+
+ map(0xf8, 0xf8).portr("DSW1"); /* coinage DIP SW */
+ map(0xf9, 0xf9).portr("IN0"); /* controls for players A & B */
+ map(0xfa, 0xfa).portr("IN1"); /* credits for players A, B, C, D */
+ map(0xfb, 0xfb).portr("IN3"); /* single credits for players A, B, C, D, + fix bits 3, 4, 5, 6 in meters */
+ map(0xfc, 0xfc).w(this, FUNC(corona_state::wc_meters_w));
+ map(0xfd, 0xfd).portr("IN2"); /* controls for players C & D */
+ map(0xfe, 0xfe).w(this, FUNC(corona_state::sound_latch_w));
+ map(0xff, 0xff).portr("DSW2"); /* no idea */
+}
+
+void corona_state::winner82_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram();
+}
+
+void corona_state::winner82_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x03).nopw(); /* socket for another ay, inited but never played */
+}
/* Ruleta RE-800
@@ -748,38 +756,42 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(corona_state::re800_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") //801a comm?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::re800_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(blitter_x_w)
- AM_RANGE(0xf1, 0xf1) AM_WRITE(blitter_y_w)
- AM_RANGE(0xf2, 0xf2) AM_WRITE(blitter_trig_wdht_w)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(blitter_aux_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(blitter_unk_w)
- AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r)
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("IN1")
- AM_RANGE(0xf9, 0xf9) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc, 0xfc) AM_WRITE(mux_port_w)
- AM_RANGE(0xfd, 0xfd) AM_READ(mux_port_r)
- AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w)
- AM_RANGE(0xff, 0xff) AM_WRITE(ball_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::re800_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::re800_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void corona_state::re800_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x87ff).ram().share("nvram"); //801a comm?
+}
+
+void corona_state::re800_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(corona_state::blitter_x_w));
+ map(0xf1, 0xf1).w(this, FUNC(corona_state::blitter_y_w));
+ map(0xf2, 0xf2).w(this, FUNC(corona_state::blitter_trig_wdht_w));
+ map(0xf3, 0xf3).w(this, FUNC(corona_state::blitter_aux_w));
+ map(0xf4, 0xf4).w(this, FUNC(corona_state::blitter_unk_w));
+ map(0xf5, 0xf5).r(this, FUNC(corona_state::blitter_status_r));
+ map(0xf8, 0xf8).portr("IN1");
+ map(0xf9, 0xf9).portr("DSW1");
+ map(0xfc, 0xfc).w(this, FUNC(corona_state::mux_port_w));
+ map(0xfd, 0xfd).r(this, FUNC(corona_state::mux_port_r));
+ map(0xfe, 0xfe).w(this, FUNC(corona_state::sound_latch_w));
+ map(0xff, 0xff).w(this, FUNC(corona_state::ball_w));
+}
+
+void corona_state::re800_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x8000, 0x83ff).ram();
+}
+
+void corona_state::re800_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/* Lucky Roulette
@@ -808,38 +820,42 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(corona_state::luckyrlt_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::luckyrlt_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(blitter_x_w)
- AM_RANGE(0xf1, 0xf1) AM_WRITE(blitter_y_w)
- AM_RANGE(0xf2, 0xf2) AM_WRITE(blitter_trig_wdht_w)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(blitter_aux_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(blitter_unk_w)
- AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r)
-
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW2")
- AM_RANGE(0xf9, 0xf9) AM_WRITE(ball_w)
- AM_RANGE(0xfa, 0xfa) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc, 0xfc) AM_WRITE(mux_port_w)
- AM_RANGE(0xfd, 0xfd) AM_READ(mux_port_r)
- AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::luckyrlt_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(corona_state::luckyrlt_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void corona_state::luckyrlt_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().share("nvram");
+}
+
+void corona_state::luckyrlt_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(corona_state::blitter_x_w));
+ map(0xf1, 0xf1).w(this, FUNC(corona_state::blitter_y_w));
+ map(0xf2, 0xf2).w(this, FUNC(corona_state::blitter_trig_wdht_w));
+ map(0xf3, 0xf3).w(this, FUNC(corona_state::blitter_aux_w));
+ map(0xf4, 0xf4).w(this, FUNC(corona_state::blitter_unk_w));
+ map(0xf5, 0xf5).r(this, FUNC(corona_state::blitter_status_r));
+
+ map(0xf8, 0xf8).portr("DSW2");
+ map(0xf9, 0xf9).w(this, FUNC(corona_state::ball_w));
+ map(0xfa, 0xfa).portr("DSW1");
+ map(0xfc, 0xfc).w(this, FUNC(corona_state::mux_port_w));
+ map(0xfd, 0xfd).r(this, FUNC(corona_state::mux_port_r));
+ map(0xfe, 0xfe).w(this, FUNC(corona_state::sound_latch_w));
+}
+
+void corona_state::luckyrlt_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram();
+}
+
+void corona_state::luckyrlt_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/*********************************
diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp
index d9482ff4414..a2711de60f6 100644
--- a/src/mame/drivers/cortex.cpp
+++ b/src/mame/drivers/cortex.cpp
@@ -85,20 +85,22 @@ private:
required_ioport m_io_dsw;
};
-ADDRESS_MAP_START(cortex_state::mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x8000, 0xefff) AM_RAM
- AM_RANGE(0xf100, 0xf11f) AM_RAM // memory mapping unit
- AM_RANGE(0xf120, 0xf120) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xf121, 0xf121) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write)
+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, 0xf120).rw("crtc", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0xf121, 0xf121).rw("crtc", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
//AM_RANGE(0xf140, 0xf147) // fdc tms9909
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(cortex_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x18) AM_DEVWRITE("control", ls259_device, write_d0)
- AM_RANGE(0x0000, 0x0000) AM_READ(pio_r)
- AM_RANGE(0x0001, 0x0001) AM_READ(keyboard_r)
+void cortex_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0007).mirror(0x18).w("control", FUNC(ls259_device::write_d0));
+ map(0x0000, 0x0000).r(this, FUNC(cortex_state::pio_r));
+ map(0x0001, 0x0001).r(this, 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)
@@ -108,7 +110,7 @@ ADDRESS_MAP_START(cortex_state::io_map)
//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)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( cortex )
diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp
index 4471b97e5ee..81a10e46730 100644
--- a/src/mame/drivers/cosmic.cpp
+++ b/src/mame/drivers/cosmic.cpp
@@ -376,61 +376,66 @@ WRITE8_MEMBER(cosmic_state::flip_screen_w)
}
-ADDRESS_MAP_START(cosmic_state::panic_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x601f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1")
- AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2")
- AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW")
- AM_RANGE(0x6803, 0x6803) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x7000, 0x700b) AM_WRITE(panic_sound_output_w)
- AM_RANGE(0x700c, 0x700e) AM_WRITE(cosmic_color_register_w)
- AM_RANGE(0x700f, 0x700f) AM_WRITE(flip_screen_w)
- AM_RANGE(0x7800, 0x7801) AM_WRITE(panic_sound_output2_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cosmic_state::cosmica_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x601f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1")
- AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2")
- AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW")
- AM_RANGE(0x6803, 0x6803) AM_READ(cosmica_pixel_clock_r)
- AM_RANGE(0x7000, 0x700b) AM_WRITE(cosmica_sound_output_w)
- AM_RANGE(0x700c, 0x700d) AM_WRITE(cosmic_color_register_w)
- AM_RANGE(0x700f, 0x700f) AM_WRITE(flip_screen_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cosmic_state::cosmicg_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cosmic_state::cosmicg_io_map)
- AM_RANGE(0x00, 0x00) AM_READ(cosmicg_port_0_r)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x00, 0x15) AM_WRITE(cosmicg_output_w)
- AM_RANGE(0x16, 0x17) AM_WRITE(cosmic_color_register_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cosmic_state::magspot_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3800, 0x3807) AM_READ(magspot_coinage_dip_r)
- AM_RANGE(0x4000, 0x401f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x4800, 0x4800) AM_WRITE(dac_w)
- AM_RANGE(0x480c, 0x480d) AM_WRITE(cosmic_color_register_w)
- AM_RANGE(0x480f, 0x480f) AM_WRITE(flip_screen_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
- AM_RANGE(0x5001, 0x5001) AM_READ_PORT("IN1")
- AM_RANGE(0x5002, 0x5002) AM_READ_PORT("IN2")
- AM_RANGE(0x5003, 0x5003) AM_READ_PORT("IN3")
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void cosmic_state::panic_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x601f).writeonly().share("spriteram");
+ map(0x6800, 0x6800).portr("P1");
+ map(0x6801, 0x6801).portr("P2");
+ map(0x6802, 0x6802).portr("DSW");
+ map(0x6803, 0x6803).portr("SYSTEM");
+ map(0x7000, 0x700b).w(this, FUNC(cosmic_state::panic_sound_output_w));
+ map(0x700c, 0x700e).w(this, FUNC(cosmic_state::cosmic_color_register_w));
+ map(0x700f, 0x700f).w(this, FUNC(cosmic_state::flip_screen_w));
+ map(0x7800, 0x7801).w(this, FUNC(cosmic_state::panic_sound_output2_w));
+}
+
+
+void cosmic_state::cosmica_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x601f).writeonly().share("spriteram");
+ map(0x6800, 0x6800).portr("P1");
+ map(0x6801, 0x6801).portr("P2");
+ map(0x6802, 0x6802).portr("DSW");
+ map(0x6803, 0x6803).r(this, FUNC(cosmic_state::cosmica_pixel_clock_r));
+ map(0x7000, 0x700b).w(this, FUNC(cosmic_state::cosmica_sound_output_w));
+ map(0x700c, 0x700d).w(this, FUNC(cosmic_state::cosmic_color_register_w));
+ map(0x700f, 0x700f).w(this, FUNC(cosmic_state::flip_screen_w));
+}
+
+
+void cosmic_state::cosmicg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("videoram");
+}
+
+void cosmic_state::cosmicg_io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(cosmic_state::cosmicg_port_0_r));
+ map(0x01, 0x01).portr("IN1");
+ map(0x00, 0x15).w(this, FUNC(cosmic_state::cosmicg_output_w));
+ map(0x16, 0x17).w(this, FUNC(cosmic_state::cosmic_color_register_w));
+}
+
+
+void cosmic_state::magspot_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3800, 0x3807).r(this, FUNC(cosmic_state::magspot_coinage_dip_r));
+ map(0x4000, 0x401f).writeonly().share("spriteram");
+ map(0x4800, 0x4800).w(this, FUNC(cosmic_state::dac_w));
+ map(0x480c, 0x480d).w(this, FUNC(cosmic_state::cosmic_color_register_w));
+ map(0x480f, 0x480f).w(this, FUNC(cosmic_state::flip_screen_w));
+ map(0x5000, 0x5000).portr("IN0");
+ map(0x5001, 0x5001).portr("IN1");
+ map(0x5002, 0x5002).portr("IN2");
+ map(0x5003, 0x5003).portr("IN3");
+ map(0x6000, 0x7fff).ram().share("videoram");
+}
WRITE_LINE_MEMBER(cosmic_state::panic_coin_inserted)
diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp
index a064a532350..609bf5631e4 100644
--- a/src/mame/drivers/cosmicos.cpp
+++ b/src/mame/drivers/cosmicos.cpp
@@ -179,20 +179,22 @@ WRITE8_MEMBER( cosmicos_state::display_w )
/* Memory Maps */
-ADDRESS_MAP_START(cosmicos_state::cosmicos_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void cosmicos_state::cosmicos_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(cosmicos_state::read), FUNC(cosmicos_state::write));
+}
-ADDRESS_MAP_START(cosmicos_state::cosmicos_io)
+void cosmicos_state::cosmicos_io(address_map &map)
+{
// AM_RANGE(0x00, 0x00)
- AM_RANGE(0x01, 0x01) AM_READ(video_on_r)
- AM_RANGE(0x02, 0x02) AM_READWRITE(video_off_r, audio_latch_w)
+ map(0x01, 0x01).r(this, FUNC(cosmicos_state::video_on_r));
+ map(0x02, 0x02).rw(this, FUNC(cosmicos_state::video_off_r), FUNC(cosmicos_state::audio_latch_w));
// AM_RANGE(0x03, 0x03)
// AM_RANGE(0x04, 0x04)
- AM_RANGE(0x05, 0x05) AM_READWRITE(hex_keyboard_r, hex_keylatch_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(reset_counter_r, segment_w)
- AM_RANGE(0x07, 0x07) AM_READWRITE(data_r, display_w)
-ADDRESS_MAP_END
+ map(0x05, 0x05).rw(this, FUNC(cosmicos_state::hex_keyboard_r), FUNC(cosmicos_state::hex_keylatch_w));
+ map(0x06, 0x06).rw(this, FUNC(cosmicos_state::reset_counter_r), FUNC(cosmicos_state::segment_w));
+ map(0x07, 0x07).rw(this, FUNC(cosmicos_state::data_r), FUNC(cosmicos_state::display_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp
index 88e32f6fb54..16ef8d7b843 100644
--- a/src/mame/drivers/cp1.cpp
+++ b/src/mame/drivers/cp1.cpp
@@ -181,10 +181,11 @@ WRITE8_MEMBER(cp1_state::i8155_portc_w)
}
-ADDRESS_MAP_START(cp1_state::cp1_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0xff ) AM_READWRITE( i8155_read, i8155_write)
-ADDRESS_MAP_END
+void cp1_state::cp1_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0xff).rw(this, FUNC(cp1_state::i8155_read), FUNC(cp1_state::i8155_write));
+}
/* Input ports */
INPUT_PORTS_START( cp1 )
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 5497eafc7eb..5ac0dced03b 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -535,34 +535,36 @@ All PRGx go to B-board. Provision for up to 4MB of ROM space, which was never us
*/
-ADDRESS_MAP_START(cps_state::main_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+void cps_state::main_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x800007).portr("IN1"); /* Player input ports */
/* forgottn, willow, cawing, nemo, varth read from 800010. Probably debug input leftover from development */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800020, 0x800021) AM_READNOP /* ? Used by Rockman ? not mapped according to PAL */
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800020, 0x800021).nopr(); /* ? Used by Rockman ? not mapped according to PAL */
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
/* Forgotten Worlds has dial controls on B-board mapped at 800040-80005f. See below */
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
/* CPS-B custom is mapped by the PAL IOB2 on the B-board. SF2 revision "E" World and USA 910228 has it at a different
address, see DRIVER_INIT */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */
- AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x800180, 0x800187).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */
+ map(0x800188, 0x80018f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* SF2CE executes code from here */
+ map(0xff0000, 0xffffff).ram().share("mainram");
+}
/* Forgotten Worlds has a NEC uPD4701AC on the B-board handling dial inputs from the CN-MOWS connector. */
/* The memory mapping is handled by PAL LWIO */
-ADDRESS_MAP_START(cps_state::forgottn_map)
- AM_IMPORT_FROM(main_map)
- AM_RANGE(0x800040, 0x800041) AM_DEVWRITE8("upd4701", upd4701_device, reset_x, 0x00ff)
- AM_RANGE(0x800048, 0x800049) AM_DEVWRITE8("upd4701", upd4701_device, reset_y, 0x00ff)
- AM_RANGE(0x800052, 0x800055) AM_DEVREAD8("upd4701", upd4701_device, read_x, 0x00ff)
- AM_RANGE(0x80005a, 0x80005d) AM_DEVREAD8("upd4701", upd4701_device, read_y, 0x00ff)
-ADDRESS_MAP_END
+void cps_state::forgottn_map(address_map &map)
+{
+ main_map(map);
+ map(0x800041, 0x800041).w("upd4701", FUNC(upd4701_device::reset_x));
+ map(0x800049, 0x800049).w("upd4701", FUNC(upd4701_device::reset_y));
+ map(0x800052, 0x800055).r("upd4701", FUNC(upd4701_device::read_x)).umask16(0x00ff);
+ map(0x80005a, 0x80005d).r("upd4701", FUNC(upd4701_device::read_y)).umask16(0x00ff);
+}
/*
PAL SOU1 (16P8 @ 13E):
@@ -587,84 +589,90 @@ SOUNDA15 = pin13 = ( I1 )
/SOUNDCE = pin12 = ! ( !I0 & (!I1 | ( I1 & !I2)) )
*/
-ADDRESS_MAP_START(cps_state::sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
- AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w)
- AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */
- AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound command */
- AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* Sound timer fade */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::qsound_main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom (mapped by LWIO/IOB1 PAL on B-board) */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */
- AM_RANGE(0xf00000, 0xf0ffff) AM_READ(qsound_rom_r) /* Slammasters protection */
- AM_RANGE(0xf18000, 0xf19fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
- AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */
- AM_RANGE(0xf1c002, 0xf1c003) AM_READ_PORT("IN3") /* Player 4 controls ("Muscle Bombers") */
- AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
- AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::qsound_sub_map) // used by cps2.c too
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* banked (contains music data) */
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("qsound_ram1")
- AM_RANGE(0xd000, 0xd002) AM_DEVWRITE("qsound", qsound_device, qsound_w)
- AM_RANGE(0xd003, 0xd003) AM_WRITE(qsound_banksw_w)
- AM_RANGE(0xd007, 0xd007) AM_DEVREAD("qsound", qsound_device, qsound_r)
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("qsound_ram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::qsound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("decrypted")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sf2m3_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800010, 0x800011) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800028, 0x80002f) AM_READ(cps1_hack_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x800186, 0x800187) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */
- AM_RANGE(0x800190, 0x800197) AM_WRITE(cps1_soundlatch_w) /* Sound command */
- AM_RANGE(0x800198, 0x80019f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
- AM_RANGE(0x8001a0, 0x8001c3) AM_WRITE(cps1_cps_a_w)
- AM_RANGE(0x8001c4, 0x8001c5) AM_WRITE(sf2m3_layer_w)
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sf2m10_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1")
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_hack_dsw_r)
- AM_RANGE(0x800020, 0x800021) AM_READNOP
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs")
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w)
- AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w)
- AM_RANGE(0x8001a2, 0x8001b3) AM_WRITE(cps1_cps_a_w) // make 8001b2 point at 800110
- AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // writes FFFF here a lot
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xe00000, 0xefffff) AM_RAM // it writes to the whole range at start
- AM_RANGE(0xf1c000, 0xf1c001) AM_READ(cps1_in2_r)
- AM_RANGE(0xfeff00, 0xfeffff) AM_RAM // fix stack crash at start
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+void cps_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xd000, 0xd7ff).ram();
+ map(0xf000, 0xf001).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf004, 0xf004).w(this, FUNC(cps_state::cps1_snd_bankswitch_w));
+ map(0xf006, 0xf006).w(this, FUNC(cps_state::cps1_oki_pin7_w)); /* controls pin 7 of OKI chip */
+ map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound command */
+ map(0xf00a, 0xf00a).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); /* Sound timer fade */
+}
+
+void cps_state::qsound_main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x800000, 0x800007).portr("IN1"); /* Player input ports */
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom (mapped by LWIO/IOB1 PAL on B-board) */
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* SF2CE executes code from here */
+ map(0xf00000, 0xf0ffff).r(this, FUNC(cps_state::qsound_rom_r)); /* Slammasters protection */
+ map(0xf18000, 0xf19fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */
+ map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */
+ map(0xf1c002, 0xf1c003).portr("IN3"); /* Player 4 controls ("Muscle Bombers") */
+ map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
+ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
+ map(0xf1e000, 0xf1ffff).rw(this, FUNC(cps_state::qsound_sharedram2_r), FUNC(cps_state::qsound_sharedram2_w)); /* Q RAM */
+ map(0xff0000, 0xffffff).ram().share("mainram");
+}
+
+void cps_state::qsound_sub_map(address_map &map)
+{ // used by cps2.c too
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1"); /* banked (contains music data) */
+ map(0xc000, 0xcfff).ram().share("qsound_ram1");
+ map(0xd000, 0xd002).w("qsound", FUNC(qsound_device::qsound_w));
+ map(0xd003, 0xd003).w(this, FUNC(cps_state::qsound_banksw_w));
+ map(0xd007, 0xd007).r("qsound", FUNC(qsound_device::qsound_r));
+ map(0xf000, 0xffff).ram().share("qsound_ram2");
+}
+
+void cps_state::qsound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("decrypted");
+}
+
+void cps_state::sf2m3_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800010, 0x800011).portr("IN1"); /* Player input ports */
+ map(0x800028, 0x80002f).r(this, FUNC(cps_state::cps1_hack_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */
+ map(0x800186, 0x800187).r(this, FUNC(cps_state::cps1_in2_r)); /* Buttons 4,5,6 for both players */
+ map(0x800190, 0x800197).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */
+ map(0x800198, 0x80019f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */
+ map(0x8001a0, 0x8001c3).w(this, FUNC(cps_state::cps1_cps_a_w));
+ map(0x8001c4, 0x8001c5).w(this, FUNC(cps_state::sf2m3_layer_w));
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::sf2m10_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x800007).portr("IN1");
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_hack_dsw_r));
+ map(0x800020, 0x800021).nopr();
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs");
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x800180, 0x800187).w(this, FUNC(cps_state::cps1_soundlatch_w));
+ map(0x800188, 0x80018f).w(this, FUNC(cps_state::cps1_soundlatch2_w));
+ map(0x8001a2, 0x8001b3).w(this, FUNC(cps_state::cps1_cps_a_w)); // make 8001b2 point at 800110
+ map(0x8001fe, 0x8001ff).nopw(); // writes FFFF here a lot
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xe00000, 0xefffff).ram(); // it writes to the whole range at start
+ map(0xf1c000, 0xf1c001).r(this, FUNC(cps_state::cps1_in2_r));
+ map(0xfeff00, 0xfeffff).ram(); // fix stack crash at start
+ map(0xff0000, 0xffffff).ram().share("mainram");
+}
/***********************************************************
INPUT PORTS, DIPs
diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp
index a1c50963ee9..c6f2569ffdb 100644
--- a/src/mame/drivers/cps2.cpp
+++ b/src/mame/drivers/cps2.cpp
@@ -926,65 +926,68 @@ READ16_MEMBER(cps_state::joy_or_paddle_ecofghtr_r)
*
*************************************/
-ADDRESS_MAP_START(cps_state::cps2_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM /* 68000 ROM */
- AM_RANGE(0x400000, 0x40000b) AM_RAM AM_SHARE("output") /* CPS2 object output */
- AM_RANGE(0x618000, 0x619fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
- AM_RANGE(0x660000, 0x663fff) AM_RAM /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
- AM_RANGE(0x662000, 0x662001) AM_RAM /* Network adapter related, accessed in SSF2TB */
- AM_RANGE(0x662008, 0x662009) AM_RAM /* Network adapter related, accessed in SSF2TB */
- AM_RANGE(0x662020, 0x662021) AM_RAM /* Network adapter related, accessed in SSF2TB */
- AM_RANGE(0x664000, 0x664001) AM_RAM /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
- AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_SHARE("objram1") /* Object RAM, no game seems to use it directly */
- AM_RANGE(0x708000, 0x709fff) AM_MIRROR(0x006000) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_SHARE("objram2") /* Object RAM */
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* mirror (sfa) */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* mirror (sfa) */
- AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2") /* IN2 + EEPROM */
- AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r) /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
- AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w) /* EEPROM */
- AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP /* Unknown (reset once on startup) */
- AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r) /* unknown (xmcotaj hangs if this is 0) */
- AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w) /* bit 0 = Object ram bank swap */
- AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x804140, 0x80417f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) /* CPS-B custom */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* Video RAM */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM /* RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::decrypted_opcodes_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_SHARE("decrypted_opcodes") /* 68000 ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::dead_cps2_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM /* 68000 ROM */
- AM_RANGE(0x400000, 0x40000b) AM_RAM AM_SHARE("output") /* CPS2 object output */
- AM_RANGE(0x618000, 0x619fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
- AM_RANGE(0x660000, 0x663fff) AM_RAM /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
- AM_RANGE(0x662000, 0x662001) AM_RAM /* Network adapter related, accessed in SSF2TB */
- AM_RANGE(0x662008, 0x662009) AM_RAM /* Network adapter related, accessed in SSF2TB */
- AM_RANGE(0x662020, 0x662021) AM_RAM /* Network adapter related, accessed in SSF2TB */
- AM_RANGE(0x664000, 0x664001) AM_RAM /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
- AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_SHARE("objram1") /* Object RAM, no game seems to use it directly */
- AM_RANGE(0x708000, 0x709fff) AM_MIRROR(0x006000) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_SHARE("objram2") /* Object RAM */
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* mirror (sfa) */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* mirror (sfa) */
- AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2") /* IN2 + EEPROM */
- AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r) /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
- AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w) /* EEPROM */
- AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP /* Unknown (reset once on startup) */
- AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r) /* unknown (xmcotaj hangs if this is 0) */
- AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w) /* bit 0 = Object ram bank swap */
- AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x804140, 0x80417f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) /* CPS-B custom */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* Video RAM */
- AM_RANGE(0xff0000, 0xffffef) AM_RAM /* RAM */
- AM_RANGE(0xfffff0, 0xfffffb) AM_RAM AM_SHARE("output") /* CPS2 output */
- AM_RANGE(0xfffffc, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void cps_state::cps2_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom(); /* 68000 ROM */
+ map(0x400000, 0x40000b).ram().share("output"); /* CPS2 object output */
+ map(0x618000, 0x619fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */
+ map(0x660000, 0x663fff).ram(); /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
+ map(0x662000, 0x662001).ram(); /* Network adapter related, accessed in SSF2TB */
+ map(0x662008, 0x662009).ram(); /* Network adapter related, accessed in SSF2TB */
+ map(0x662020, 0x662021).ram(); /* Network adapter related, accessed in SSF2TB */
+ map(0x664000, 0x664001).ram(); /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
+ map(0x700000, 0x701fff).w(this, FUNC(cps_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */
+ map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps_state::cps2_objram2_r), FUNC(cps_state::cps2_objram2_w)).share("objram2"); /* Object RAM */
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */
+ map(0x804000, 0x804001).portr("IN0"); /* IN0 */
+ map(0x804010, 0x804011).portr("IN1"); /* IN1 */
+ map(0x804020, 0x804021).portr("IN2"); /* IN2 + EEPROM */
+ map(0x804030, 0x804031).r(this, FUNC(cps_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
+ map(0x804040, 0x804041).w(this, FUNC(cps_state::cps2_eeprom_port_w)); /* EEPROM */
+ map(0x8040a0, 0x8040a1).nopw(); /* Unknown (reset once on startup) */
+ map(0x8040b0, 0x8040b3).r(this, FUNC(cps_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */
+ map(0x8040e0, 0x8040e1).w(this, FUNC(cps_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */
+ map(0x804100, 0x80413f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x804140, 0x80417f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)); /* CPS-B custom */
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */
+ map(0xff0000, 0xffffff).ram(); /* RAM */
+}
+
+void cps_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().share("decrypted_opcodes"); /* 68000 ROM */
+}
+
+void cps_state::dead_cps2_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom(); /* 68000 ROM */
+ map(0x400000, 0x40000b).ram().share("output"); /* CPS2 object output */
+ map(0x618000, 0x619fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */
+ map(0x660000, 0x663fff).ram(); /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
+ map(0x662000, 0x662001).ram(); /* Network adapter related, accessed in SSF2TB */
+ map(0x662008, 0x662009).ram(); /* Network adapter related, accessed in SSF2TB */
+ map(0x662020, 0x662021).ram(); /* Network adapter related, accessed in SSF2TB */
+ map(0x664000, 0x664001).ram(); /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
+ map(0x700000, 0x701fff).w(this, FUNC(cps_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */
+ map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps_state::cps2_objram2_r), FUNC(cps_state::cps2_objram2_w)).share("objram2"); /* Object RAM */
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */
+ map(0x804000, 0x804001).portr("IN0"); /* IN0 */
+ map(0x804010, 0x804011).portr("IN1"); /* IN1 */
+ map(0x804020, 0x804021).portr("IN2"); /* IN2 + EEPROM */
+ map(0x804030, 0x804031).r(this, FUNC(cps_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
+ map(0x804040, 0x804041).w(this, FUNC(cps_state::cps2_eeprom_port_w)); /* EEPROM */
+ map(0x8040a0, 0x8040a1).nopw(); /* Unknown (reset once on startup) */
+ map(0x8040b0, 0x8040b3).r(this, FUNC(cps_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */
+ map(0x8040e0, 0x8040e1).w(this, FUNC(cps_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */
+ map(0x804100, 0x80413f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x804140, 0x80417f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)); /* CPS-B custom */
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */
+ map(0xff0000, 0xffffef).ram(); /* RAM */
+ map(0xfffff0, 0xfffffb).ram().share("output"); /* CPS2 output */
+ map(0xfffffc, 0xffffff).ram();
+}
/*************************************
diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp
index aed09d9f26d..d2a468f2e2c 100644
--- a/src/mame/drivers/cps3.cpp
+++ b/src/mame/drivers/cps3.cpp
@@ -2147,77 +2147,79 @@ WRITE32_MEMBER(cps3_state::cps3_colourram_w)
/* there are more unknown writes, but you get the idea */
-ADDRESS_MAP_START(cps3_state::cps3_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("bios", 0) // Bios ROM
- AM_RANGE(0x02000000, 0x0207ffff) AM_RAM AM_SHARE("mainram") // Main RAM
+void cps3_state::cps3_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().region("bios", 0); // Bios ROM
+ map(0x02000000, 0x0207ffff).ram().share("mainram"); // Main RAM
- AM_RANGE(0x03000000, 0x030003ff) AM_RAM // 'FRAM' (SFIII memory test mode ONLY)
+ map(0x03000000, 0x030003ff).ram(); // 'FRAM' (SFIII memory test mode ONLY)
// AM_RANGE(0x04000000, 0x0407dfff) AM_RAM AM_SHARE("spriteram")//AM_WRITEONLY // Sprite RAM (jojoba tests this size)
- AM_RANGE(0x04000000, 0x0407ffff) AM_RAM AM_SHARE("spriteram")//AM_WRITEONLY // Sprite RAM
+ map(0x04000000, 0x0407ffff).ram().share("spriteram");//AM_WRITEONLY // Sprite RAM
- AM_RANGE(0x04080000, 0x040bffff) AM_READWRITE(cps3_colourram_r, cps3_colourram_w) AM_SHARE("colourram") // Colour RAM (jojoba tests this size) 0x20000 colours?!
+ map(0x04080000, 0x040bffff).rw(this, FUNC(cps3_state::cps3_colourram_r), FUNC(cps3_state::cps3_colourram_w)).share("colourram"); // Colour RAM (jojoba tests this size) 0x20000 colours?!
// video registers of some kind probably
- AM_RANGE(0x040C0000, 0x040C0003) AM_READ(cps3_40C0000_r)//?? every frame
- AM_RANGE(0x040C0004, 0x040C0007) AM_READ(cps3_40C0004_r)//AM_READ(cps3_40C0004_r) // warzard reads this!
+ map(0x040C0000, 0x040C0003).r(this, FUNC(cps3_state::cps3_40C0000_r));//?? every frame
+ map(0x040C0004, 0x040C0007).r(this, FUNC(cps3_state::cps3_40C0004_r));//AM_READ(cps3_40C0004_r) // warzard reads this!
// AM_RANGE(0x040C0008, 0x040C000b) AM_WRITENOP//??
- AM_RANGE(0x040C000c, 0x040C000f) AM_READ(cps3_vbl_r)// AM_WRITENOP/
+ map(0x040C000c, 0x040C000f).r(this, FUNC(cps3_state::cps3_vbl_r));// AM_WRITENOP/
- AM_RANGE(0x040C0000, 0x040C001f) AM_WRITE(cps3_unk_vidregs_w)
- AM_RANGE(0x040C0020, 0x040C002b) AM_WRITEONLY AM_SHARE("tmap20_regs")
- AM_RANGE(0x040C0030, 0x040C003b) AM_WRITEONLY AM_SHARE("tmap30_regs")
- AM_RANGE(0x040C0040, 0x040C004b) AM_WRITEONLY AM_SHARE("tmap40_regs")
- AM_RANGE(0x040C0050, 0x040C005b) AM_WRITEONLY AM_SHARE("tmap50_regs")
+ map(0x040C0000, 0x040C001f).w(this, FUNC(cps3_state::cps3_unk_vidregs_w));
+ map(0x040C0020, 0x040C002b).writeonly().share("tmap20_regs");
+ map(0x040C0030, 0x040C003b).writeonly().share("tmap30_regs");
+ map(0x040C0040, 0x040C004b).writeonly().share("tmap40_regs");
+ map(0x040C0050, 0x040C005b).writeonly().share("tmap50_regs");
- AM_RANGE(0x040C0060, 0x040C007f) AM_RAM AM_SHARE("fullscreenzoom")
+ map(0x040C0060, 0x040C007f).ram().share("fullscreenzoom");
- AM_RANGE(0x040C0094, 0x040C009b) AM_WRITE(cps3_characterdma_w)
+ map(0x040C0094, 0x040C009b).w(this, FUNC(cps3_state::cps3_characterdma_w));
- AM_RANGE(0x040C00a0, 0x040C00af) AM_WRITE(cps3_palettedma_w)
+ map(0x040C00a0, 0x040C00af).w(this, FUNC(cps3_state::cps3_palettedma_w));
- AM_RANGE(0x040C0084, 0x040C0087) AM_WRITE(cram_bank_w)
- AM_RANGE(0x040C0088, 0x040C008b) AM_WRITE(cram_gfxflash_bank_w)
+ map(0x040C0084, 0x040C0087).w(this, FUNC(cps3_state::cram_bank_w));
+ map(0x040C0088, 0x040C008b).w(this, FUNC(cps3_state::cram_gfxflash_bank_w));
- AM_RANGE(0x040e0000, 0x040e02ff) AM_DEVREADWRITE("cps3sound", cps3_sound_device, cps3_sound_r, cps3_sound_w)
+ map(0x040e0000, 0x040e02ff).rw(m_cps3sound, FUNC(cps3_sound_device::cps3_sound_r), FUNC(cps3_sound_device::cps3_sound_w));
- AM_RANGE(0x04100000, 0x041fffff) AM_READWRITE(cram_data_r, cram_data_w)
- AM_RANGE(0x04200000, 0x043fffff) AM_READWRITE(cps3_gfxflash_r, cps3_gfxflash_w) // GFX Flash ROMS
+ map(0x04100000, 0x041fffff).rw(this, FUNC(cps3_state::cram_data_r), FUNC(cps3_state::cram_data_w));
+ map(0x04200000, 0x043fffff).rw(this, FUNC(cps3_state::cps3_gfxflash_r), FUNC(cps3_state::cps3_gfxflash_w)); // GFX Flash ROMS
- AM_RANGE(0x05000000, 0x05000003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x05000004, 0x05000007) AM_READ_PORT("EXTRA")
+ map(0x05000000, 0x05000003).portr("INPUTS");
+ map(0x05000004, 0x05000007).portr("EXTRA");
- AM_RANGE(0x05000008, 0x0500000b) AM_WRITENOP // ?? every frame
+ map(0x05000008, 0x0500000b).nopw(); // ?? every frame
- AM_RANGE(0x05000a00, 0x05000a1f) AM_READ(cps3_unk_io_r ) // ?? every frame
+ map(0x05000a00, 0x05000a1f).r(this, FUNC(cps3_state::cps3_unk_io_r)); // ?? every frame
- AM_RANGE(0x05001000, 0x05001203) AM_READWRITE(cps3_eeprom_r, cps3_eeprom_w )
+ map(0x05001000, 0x05001203).rw(this, FUNC(cps3_state::cps3_eeprom_r), FUNC(cps3_state::cps3_eeprom_w));
- AM_RANGE(0x05040000, 0x0504ffff) AM_READWRITE(cps3_ssram_r,cps3_ssram_w) // 'SS' RAM (Score Screen) (text tilemap + toles)
+ map(0x05040000, 0x0504ffff).rw(this, FUNC(cps3_state::cps3_ssram_r), FUNC(cps3_state::cps3_ssram_w)); // 'SS' RAM (Score Screen) (text tilemap + toles)
//0x25050020
- AM_RANGE(0x05050020, 0x05050023) AM_WRITE(cps3_ss_bank_base_w )
- AM_RANGE(0x05050024, 0x05050027) AM_WRITE(cps3_ss_pal_base_w )
+ map(0x05050020, 0x05050023).w(this, FUNC(cps3_state::cps3_ss_bank_base_w));
+ map(0x05050024, 0x05050027).w(this, FUNC(cps3_state::cps3_ss_pal_base_w));
- AM_RANGE(0x05100000, 0x05100003) AM_WRITE(cps3_irq12_ack_w )
- AM_RANGE(0x05110000, 0x05110003) AM_WRITE(cps3_irq10_ack_w )
+ map(0x05100000, 0x05100003).w(this, FUNC(cps3_state::cps3_irq12_ack_w));
+ map(0x05110000, 0x05110003).w(this, FUNC(cps3_state::cps3_irq10_ack_w));
- AM_RANGE(0x05140000, 0x05140003) AM_DEVREADWRITE8("wd33c93", wd33c93_device, read, write, 0x00ff00ff )
+ map(0x05140000, 0x05140003).rw("wd33c93", FUNC(wd33c93_device::read), FUNC(wd33c93_device::write)).umask32(0x00ff00ff);
- AM_RANGE(0x06000000, 0x067fffff) AM_READWRITE(cps3_flash1_r, cps3_flash1_w ) /* Flash ROMs simm 1 */
- AM_RANGE(0x06800000, 0x06ffffff) AM_READWRITE(cps3_flash2_r, cps3_flash2_w ) /* Flash ROMs simm 2 */
+ map(0x06000000, 0x067fffff).rw(this, FUNC(cps3_state::cps3_flash1_r), FUNC(cps3_state::cps3_flash1_w)); /* Flash ROMs simm 1 */
+ map(0x06800000, 0x06ffffff).rw(this, FUNC(cps3_state::cps3_flash2_r), FUNC(cps3_state::cps3_flash2_w)); /* Flash ROMs simm 2 */
- AM_RANGE(0x07ff0048, 0x07ff004b) AM_WRITENOP // bit 0 toggles during programming
- AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM_WRITE(cps3_0xc0000000_ram_w ) AM_SHARE("0xc0000000_ram") /* Executes code from here */
-ADDRESS_MAP_END
+ map(0x07ff0048, 0x07ff004b).nopw(); // bit 0 toggles during programming
+ map(0xc0000000, 0xc00003ff).ram().w(this, FUNC(cps3_state::cps3_0xc0000000_ram_w)).share("0xc0000000_ram"); /* Executes code from here */
+}
-ADDRESS_MAP_START(cps3_state::decrypted_opcodes_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("bios", 0) // Bios ROM
- AM_RANGE(0x06000000, 0x06ffffff) AM_ROM AM_SHARE("decrypted_gamerom")
- AM_RANGE(0xc0000000, 0xc00003ff) AM_ROM AM_SHARE("0xc0000000_ram_decrypted")
-ADDRESS_MAP_END
+void cps3_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().region("bios", 0); // Bios ROM
+ map(0x06000000, 0x06ffffff).rom().share("decrypted_gamerom");
+ map(0xc0000000, 0xc00003ff).rom().share("0xc0000000_ram_decrypted");
+}
static INPUT_PORTS_START( cps3 )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/craft.cpp b/src/mame/drivers/craft.cpp
index ea320a17586..3228365e81b 100644
--- a/src/mame/drivers/craft.cpp
+++ b/src/mame/drivers/craft.cpp
@@ -185,17 +185,20 @@ void craft_state::video_update()
* Address maps *
\****************************************************/
-ADDRESS_MAP_START(craft_state::craft_prg_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void craft_state::craft_prg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
-ADDRESS_MAP_START(craft_state::craft_data_map)
- AM_RANGE(0x0100, 0x04ff) AM_RAM
-ADDRESS_MAP_END
+void craft_state::craft_data_map(address_map &map)
+{
+ map(0x0100, 0x04ff).ram();
+}
-ADDRESS_MAP_START(craft_state::craft_io_map)
- AM_RANGE(AVR8_IO_PORTA, AVR8_IO_PORTD) AM_READWRITE( port_r, port_w )
-ADDRESS_MAP_END
+void craft_state::craft_io_map(address_map &map)
+{
+ map(AVR8_IO_PORTA, AVR8_IO_PORTD).rw(this, FUNC(craft_state::port_r), FUNC(craft_state::port_w));
+}
/****************************************************\
* Input ports *
diff --git a/src/mame/drivers/crbaloon.cpp b/src/mame/drivers/crbaloon.cpp
index 734350f90a2..6a039cf8487 100644
--- a/src/mame/drivers/crbaloon.cpp
+++ b/src/mame/drivers/crbaloon.cpp
@@ -192,14 +192,15 @@ WRITE8_MEMBER(crbaloon_state::port_sound_w)
*
*************************************/
-ADDRESS_MAP_START(crbaloon_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 is not decoded */
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* not fully populated */
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(crbaloon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(crbaloon_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x5800, 0x7fff) AM_NOP
-ADDRESS_MAP_END
+void crbaloon_state::main_map(address_map &map)
+{
+ map.global_mask(0x7fff); /* A15 is not decoded */
+ map(0x0000, 0x3fff).rom(); /* not fully populated */
+ map(0x4000, 0x43ff).mirror(0x0400).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(crbaloon_state::crbaloon_videoram_w)).share("videoram");
+ map(0x5000, 0x53ff).mirror(0x0400).ram().w(this, FUNC(crbaloon_state::crbaloon_colorram_w)).share("colorram");
+ map(0x5800, 0x7fff).noprw();
+}
@@ -209,23 +210,24 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(crbaloon_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xf)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("DSW0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_SELECT(0x0c) AM_READ(pc3259_r)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN1")
-
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* not connected */
- AM_RANGE(0x01, 0x01) AM_WRITENOP /* watchdog */
- AM_RANGE(0x02, 0x04) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x05, 0x05) AM_WRITE(crbaloon_audio_set_music_freq)
- AM_RANGE(0x06, 0x06) AM_WRITE(port_sound_w)
- AM_RANGE(0x07, 0x0b) AM_WRITE(pc3092_w) AM_SHARE("pc3092_data")
- AM_RANGE(0x0c, 0x0c) AM_WRITENOP /* MSK - to PC3259 */
- AM_RANGE(0x0d, 0x0d) AM_WRITENOP /* schematics has it in a box marked "NOT USE" */
- AM_RANGE(0x0e, 0x0f) AM_WRITENOP
-ADDRESS_MAP_END
+void crbaloon_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xf);
+ map(0x00, 0x00).mirror(0x0c).portr("DSW0");
+ map(0x01, 0x01).mirror(0x0c).portr("IN0");
+ map(0x02, 0x02).select(0x0c).r(this, FUNC(crbaloon_state::pc3259_r));
+ map(0x03, 0x03).mirror(0x0c).portr("IN1");
+
+ map(0x00, 0x00).nopw(); /* not connected */
+ map(0x01, 0x01).nopw(); /* watchdog */
+ map(0x02, 0x04).writeonly().share("spriteram");
+ map(0x05, 0x05).w(this, FUNC(crbaloon_state::crbaloon_audio_set_music_freq));
+ map(0x06, 0x06).w(this, FUNC(crbaloon_state::port_sound_w));
+ map(0x07, 0x0b).w(this, FUNC(crbaloon_state::pc3092_w)).share("pc3092_data");
+ map(0x0c, 0x0c).nopw(); /* MSK - to PC3259 */
+ map(0x0d, 0x0d).nopw(); /* schematics has it in a box marked "NOT USE" */
+ map(0x0e, 0x0f).nopw();
+}
diff --git a/src/mame/drivers/crgolf.cpp b/src/mame/drivers/crgolf.cpp
index d1ad58e73ef..b0f78dd3613 100644
--- a/src/mame/drivers/crgolf.cpp
+++ b/src/mame/drivers/crgolf.cpp
@@ -276,21 +276,23 @@ WRITE_LINE_MEMBER(crgolf_state::screenb_enable_w)
*
*************************************/
-ADDRESS_MAP_START(crgolf_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x8800, 0x8800) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write)
- AM_RANGE(0x9000, 0x9000) AM_WRITE(rom_bank_select_w)
- AM_RANGE(0xa000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crgolf_state::vrambank_map)
- AM_RANGE(0x0000, 0x5fff) AM_RAM AM_SHARE("vrama")
- AM_RANGE(0x8000, 0xdfff) AM_RAM AM_SHARE("vramb")
-ADDRESS_MAP_END
+void crgolf_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x8007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x8800, 0x8800).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x8800, 0x8800).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0x9000, 0x9000).w(this, FUNC(crgolf_state::rom_bank_select_w));
+ map(0xa000, 0xffff).m(m_vrambank, FUNC(address_map_bank_device::amap8));
+}
+
+void crgolf_state::vrambank_map(address_map &map)
+{
+ map(0x0000, 0x5fff).ram().share("vrama");
+ map(0x8000, 0xdfff).ram().share("vramb");
+}
/*************************************
@@ -299,16 +301,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(crgolf_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xc002, 0xc002) AM_WRITENOP
- AM_RANGE(0xe000, 0xe000) AM_READWRITE(switch_input_r, switch_input_select_w)
- AM_RANGE(0xe001, 0xe001) AM_READWRITE(analog_input_r, unknown_w)
- AM_RANGE(0xe003, 0xe003) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
- AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void crgolf_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xc002, 0xc002).nopw();
+ map(0xe000, 0xe000).rw(this, FUNC(crgolf_state::switch_input_r), FUNC(crgolf_state::switch_input_select_w));
+ map(0xe001, 0xe001).rw(this, FUNC(crgolf_state::analog_input_r), FUNC(crgolf_state::unknown_w));
+ map(0xe003, 0xe003).r("soundlatch1", FUNC(generic_latch_8_device::read));
+ map(0xe003, 0xe003).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
@@ -316,30 +319,33 @@ ADDRESS_MAP_END
-ADDRESS_MAP_START(crgolf_state::mastrglf_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x8fff) AM_RAM // maybe RAM and ROM here?
- AM_RANGE(0x9000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
+void crgolf_state::mastrglf_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).bankr("bank1");
+ map(0x6000, 0x8fff).ram(); // maybe RAM and ROM here?
+ map(0x9000, 0x9fff).ram();
+ map(0xa000, 0xffff).m(m_vrambank, FUNC(address_map_bank_device::amap8));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(crgolf_state::mastrglf_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
+void crgolf_state::mastrglf_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0));
// AM_RANGE(0x20, 0x20) AM_WRITE(rom_bank_select_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write)
- AM_RANGE(0xa0, 0xa0) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x40, 0x40).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0xa0, 0xa0).r("soundlatch2", FUNC(generic_latch_8_device::read));
+}
-ADDRESS_MAP_START(crgolf_state::mastrglf_submap)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void crgolf_state::mastrglf_submap(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+}
READ8_MEMBER(crgolf_state::unk_sub_02_r)
@@ -362,17 +368,18 @@ WRITE8_MEMBER(crgolf_state::unk_sub_0c_w)
}
-ADDRESS_MAP_START(crgolf_state::mastrglf_subio)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) AM_WRITENOP
- AM_RANGE(0x02, 0x02) AM_READ(unk_sub_02_r )
- AM_RANGE(0x05, 0x05) AM_READ(unk_sub_05_r )
- AM_RANGE(0x06, 0x06) AM_READNOP
- AM_RANGE(0x07, 0x07) AM_READ(unk_sub_07_r )
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(unk_sub_0c_w)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void crgolf_state::mastrglf_subio(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch1", FUNC(generic_latch_8_device::read)).nopw();
+ map(0x02, 0x02).r(this, FUNC(crgolf_state::unk_sub_02_r));
+ map(0x05, 0x05).r(this, FUNC(crgolf_state::unk_sub_05_r));
+ map(0x06, 0x06).nopr();
+ map(0x07, 0x07).r(this, FUNC(crgolf_state::unk_sub_07_r));
+ map(0x08, 0x08).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x0c, 0x0c).w(this, FUNC(crgolf_state::unk_sub_0c_w));
+ map(0x10, 0x11).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp
index dfaf75357e6..a6432aaeb3b 100644
--- a/src/mame/drivers/crimfght.cpp
+++ b/src/mame/drivers/crimfght.cpp
@@ -81,37 +81,40 @@ WRITE8_MEMBER(crimfght_state::ym2151_ct_w)
m_k007232->set_bank(bank_a, bank_b);
}
-ADDRESS_MAP_START(crimfght_state::crimfght_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
- AM_RANGE(0x0400, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x5fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) /* video RAM + sprite RAM */
- AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P1")
- AM_RANGE(0x3f82, 0x3f82) AM_READ_PORT("P2")
- AM_RANGE(0x3f83, 0x3f83) AM_READ_PORT("DSW2")
- AM_RANGE(0x3f84, 0x3f84) AM_READ_PORT("DSW3")
- AM_RANGE(0x3f85, 0x3f85) AM_READ_PORT("P3")
- AM_RANGE(0x3f86, 0x3f86) AM_READ_PORT("P4")
- AM_RANGE(0x3f87, 0x3f87) AM_READ_PORT("DSW1")
- AM_RANGE(0x3f88, 0x3f88) AM_MIRROR(0x03) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(crimfght_coin_w) // 051550
- AM_RANGE(0x3f8c, 0x3f8c) AM_MIRROR(0x03) AM_WRITE(sound_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x18000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crimfght_state::bank0000_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
+void crimfght_state::crimfght_map(address_map &map)
+{
+ map(0x0000, 0x03ff).m(m_bank0000, FUNC(address_map_bank_device::amap8));
+ map(0x0400, 0x1fff).ram();
+ map(0x2000, 0x5fff).rw(this, FUNC(crimfght_state::k052109_051960_r), FUNC(crimfght_state::k052109_051960_w)); /* video RAM + sprite RAM */
+ map(0x3f80, 0x3f80).portr("SYSTEM");
+ map(0x3f81, 0x3f81).portr("P1");
+ map(0x3f82, 0x3f82).portr("P2");
+ map(0x3f83, 0x3f83).portr("DSW2");
+ map(0x3f84, 0x3f84).portr("DSW3");
+ map(0x3f85, 0x3f85).portr("P3");
+ map(0x3f86, 0x3f86).portr("P4");
+ map(0x3f87, 0x3f87).portr("DSW1");
+ map(0x3f88, 0x3f88).mirror(0x03).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(crimfght_state::crimfght_coin_w)); // 051550
+ map(0x3f8c, 0x3f8c).mirror(0x03).w(this, FUNC(crimfght_state::sound_w));
+ map(0x6000, 0x7fff).bankr("rombank"); /* banked ROM */
+ map(0x8000, 0xffff).rom().region("maincpu", 0x18000);
+}
+
+void crimfght_state::bank0000_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
// full memory map derived from schematics
-ADDRESS_MAP_START(crimfght_state::crimfght_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe00f) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("k007232", k007232_device, read, write)
-ADDRESS_MAP_END
+void crimfght_state::crimfght_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).mirror(0x1800).ram();
+ map(0xa000, 0xa001).mirror(0x1ffe).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc000, 0xc000).mirror(0x1fff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe00f).mirror(0x1ff0).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/crospang.cpp b/src/mame/drivers/crospang.cpp
index 2043c6e76f3..aed4eba32a8 100644
--- a/src/mame/drivers/crospang.cpp
+++ b/src/mame/drivers/crospang.cpp
@@ -45,71 +45,77 @@
/* main cpu */
-ADDRESS_MAP_START(crospang_state::crospang_base_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_WRITENOP // writes to rom quite often
-
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x270000, 0x270001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x270004, 0x270007) AM_WRITENOP // ??
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN")
- AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crospang_state::crospang_map)
- AM_IMPORT_FROM(crospang_base_map)
-
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP
- AM_RANGE(0x100002, 0x100003) AM_WRITE(crospang_fg_scrolly_w)
- AM_RANGE(0x100004, 0x100005) AM_WRITE(crospang_bg_scrollx_w)
- AM_RANGE(0x100006, 0x100007) AM_WRITE(crospang_bg_scrolly_w)
- AM_RANGE(0x100008, 0x100009) AM_WRITE(crospang_fg_scrollx_w)
- AM_RANGE(0x10000e, 0x10000f) AM_WRITENOP
-
- AM_RANGE(0x320000, 0x32ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crospang_state::bestri_map)
- AM_IMPORT_FROM(crospang_base_map)
-
- AM_RANGE(0x100004, 0x100005) AM_WRITE(bestri_fg_scrollx_w)
- AM_RANGE(0x100006, 0x100007) AM_WRITE(bestri_fg_scrolly_w)
- AM_RANGE(0x10000a, 0x10000b) AM_WRITE(bestri_bg_scrolly_w)
- AM_RANGE(0x10000c, 0x10000d) AM_WRITE(bestri_bg_scrollx_w)
- AM_RANGE(0x10000e, 0x10000f) AM_WRITE(bestri_tilebank_w)
-
- AM_RANGE(0x3a0000, 0x3affff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crospang_state::bestria_map)
- AM_IMPORT_FROM(crospang_base_map)
-
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ??
- AM_RANGE(0x100006, 0x100007) AM_WRITE(bestri_fg_scrollx_w)
- AM_RANGE(0x100008, 0x100009) AM_WRITE(bestri_fg_scrolly_w)
- AM_RANGE(0x10000a, 0x10000b) AM_WRITE(bestri_bg_scrollx_w)
- AM_RANGE(0x10000c, 0x10000d) AM_WRITE(bestri_bg_scrolly_w)
- AM_RANGE(0x10000e, 0x10000f) AM_WRITE(bestri_tilebank_w)
-
- AM_RANGE(0x340000, 0x34ffff) AM_RAM
-ADDRESS_MAP_END
+void crospang_state::crospang_base_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().nopw(); // writes to rom quite often
+
+ map(0x120000, 0x1207ff).ram().w(this, FUNC(crospang_state::crospang_fg_videoram_w)).share("fg_videoram");
+ map(0x122000, 0x1227ff).ram().w(this, 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));
+ map(0x270004, 0x270007).nopw(); // ??
+ map(0x280000, 0x280001).portr("P1_P2");
+ map(0x280002, 0x280003).portr("COIN");
+ map(0x280004, 0x280005).portr("DSW");
+}
+
+void crospang_state::crospang_map(address_map &map)
+{
+ crospang_base_map(map);
+
+ map(0x100000, 0x100001).nopw();
+ map(0x100002, 0x100003).w(this, FUNC(crospang_state::crospang_fg_scrolly_w));
+ map(0x100004, 0x100005).w(this, FUNC(crospang_state::crospang_bg_scrollx_w));
+ map(0x100006, 0x100007).w(this, FUNC(crospang_state::crospang_bg_scrolly_w));
+ map(0x100008, 0x100009).w(this, FUNC(crospang_state::crospang_fg_scrollx_w));
+ map(0x10000e, 0x10000f).nopw();
+
+ map(0x320000, 0x32ffff).ram();
+}
+
+void crospang_state::bestri_map(address_map &map)
+{
+ crospang_base_map(map);
+
+ map(0x100004, 0x100005).w(this, FUNC(crospang_state::bestri_fg_scrollx_w));
+ map(0x100006, 0x100007).w(this, FUNC(crospang_state::bestri_fg_scrolly_w));
+ map(0x10000a, 0x10000b).w(this, FUNC(crospang_state::bestri_bg_scrolly_w));
+ map(0x10000c, 0x10000d).w(this, FUNC(crospang_state::bestri_bg_scrollx_w));
+ map(0x10000e, 0x10000f).w(this, FUNC(crospang_state::bestri_tilebank_w));
+
+ map(0x3a0000, 0x3affff).ram();
+}
+
+void crospang_state::bestria_map(address_map &map)
+{
+ crospang_base_map(map);
+
+ map(0x100000, 0x100001).nopw(); // ??
+ map(0x100006, 0x100007).w(this, FUNC(crospang_state::bestri_fg_scrollx_w));
+ map(0x100008, 0x100009).w(this, FUNC(crospang_state::bestri_fg_scrolly_w));
+ map(0x10000a, 0x10000b).w(this, FUNC(crospang_state::bestri_bg_scrollx_w));
+ map(0x10000c, 0x10000d).w(this, FUNC(crospang_state::bestri_bg_scrolly_w));
+ map(0x10000e, 0x10000f).w(this, FUNC(crospang_state::bestri_tilebank_w));
+
+ map(0x340000, 0x34ffff).ram();
+}
/* sound cpu */
-ADDRESS_MAP_START(crospang_state::crospang_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crospang_state::crospang_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void crospang_state::crospang_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+}
+
+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));
+ map(0x02, 0x02).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/* verified from M68000 code */
diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp
index 72ddc779c0b..ea375c5892c 100644
--- a/src/mame/drivers/crshrace.cpp
+++ b/src/mame/drivers/crshrace.cpp
@@ -146,40 +146,43 @@ WRITE8_MEMBER(crshrace_state::crshrace_sh_bankswitch_w)
}
-ADDRESS_MAP_START(crshrace_state::crshrace_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("user2", 0) AM_MIRROR(0x100000)
- AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xd00000, 0xd01fff) AM_RAM_WRITE(crshrace_videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0xe00000, 0xe01fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM
- AM_RANGE(0xffc000, 0xffc001) AM_WRITE(crshrace_roz_bank_w)
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(crshrace_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") AM_WRITE(crshrace_gfxctrl_w)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2")
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW0")
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("P3")
- AM_RANGE(0xfff020, 0xfff03f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0xfff044, 0xfff047) AM_WRITEONLY // ??? moves during race
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crshrace_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crshrace_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+void crshrace_state::crshrace_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x300000, 0x3fffff).rom().region("user1", 0);
+ map(0x400000, 0x4fffff).rom().region("user2", 0).mirror(0x100000);
+ map(0xa00000, 0xa0ffff).ram().share("spriteram2");
+ map(0xd00000, 0xd01fff).ram().w(this, FUNC(crshrace_state::crshrace_videoram1_w)).share("videoram1");
+ map(0xe00000, 0xe01fff).ram().share("spriteram");
+ map(0xfe0000, 0xfeffff).ram();
+ map(0xffc000, 0xffc001).w(this, FUNC(crshrace_state::crshrace_roz_bank_w));
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(crshrace_state::crshrace_videoram2_w)).share("videoram2");
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("P1").w(this, FUNC(crshrace_state::crshrace_gfxctrl_w));
+ map(0xfff002, 0xfff003).portr("P2");
+ map(0xfff004, 0xfff005).portr("DSW0");
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff009, 0xfff009).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xfff00a, 0xfff00b).portr("DSW1");
+ map(0xfff00e, 0xfff00f).portr("P3");
+ map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0xfff044, 0xfff047).writeonly(); // ??? moves during race
+}
+
+void crshrace_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void crshrace_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(crshrace_state::crshrace_sh_bankswitch_w));
+ map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
static INPUT_PORTS_START( crshrace )
diff --git a/src/mame/drivers/crvision.cpp b/src/mame/drivers/crvision.cpp
index cb82376e39d..47dff8631d9 100644
--- a/src/mame/drivers/crvision.cpp
+++ b/src/mame/drivers/crvision.cpp
@@ -142,38 +142,40 @@ CN1 - main board connector (17x2 pin header)
ADDRESS_MAP( crvision_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(crvision_state::crvision_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, vram_read)
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, register_read)
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, vram_write)
- AM_RANGE(0x3001, 0x3001) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, register_write)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(BANK_ROM2)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(BANK_ROM1)
+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, 0x2000).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::vram_read));
+ map(0x2001, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::register_read));
+ map(0x3000, 0x3000).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::vram_write));
+ map(0x3001, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::register_write));
+ map(0x4000, 0x7fff).bankr(BANK_ROM2);
+ map(0x8000, 0xbfff).bankr(BANK_ROM1);
// AM_RANGE(0xc000, 0xe7ff) AM_RAMBANK(3)
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0xe801, 0xe801) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0xe801, 0xe801) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write)
+ map(0xe800, 0xe800).w(m_cent_data_out, FUNC(output_latch_device::write));
+ map(0xe801, 0xe801).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0xe801, 0xe801).w("cent_ctrl_out", FUNC(output_latch_device::write));
// AM_RANGE(0xe802, 0xf7ff) AM_RAMBANK(4)
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0)
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).rom().region(M6502_TAG, 0);
+}
/*-------------------------------------------------
ADDRESS_MAP( lasr2001_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(laser2001_state::lasr2001_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, vram_read)
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, register_read)
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, vram_write)
- AM_RANGE(0x3001, 0x3001) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, register_write)
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK(BANK_ROM2)
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK(BANK_ROM1)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0)
-ADDRESS_MAP_END
+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, 0x2000).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::vram_read));
+ map(0x2001, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::register_read));
+ map(0x3000, 0x3000).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::vram_write));
+ map(0x3001, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::register_write));
+ map(0x4000, 0x7fff).bankrw(BANK_ROM2);
+ map(0x8000, 0xbfff).bankrw(BANK_ROM1);
+ map(0xc000, 0xffff).rom().region(M6502_TAG, 0);
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/crystal.cpp b/src/mame/drivers/crystal.cpp
index 08fc0f4ec53..d8494ec7e5f 100644
--- a/src/mame/drivers/crystal.cpp
+++ b/src/mame/drivers/crystal.cpp
@@ -650,39 +650,40 @@ WRITE32_MEMBER(crystal_state::DMA1_w)
}
-ADDRESS_MAP_START(crystal_state::crystal_mem)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_WRITENOP
+void crystal_state::crystal_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom().nopw();
- AM_RANGE(0x01200000, 0x0120000f) AM_READ(Input_r)
- AM_RANGE(0x01280000, 0x01280003) AM_WRITE(Banksw_w)
- AM_RANGE(0x01400000, 0x0140ffff) AM_RAM AM_SHARE("nvram")
+ map(0x01200000, 0x0120000f).r(this, FUNC(crystal_state::Input_r));
+ map(0x01280000, 0x01280003).w(this, FUNC(crystal_state::Banksw_w));
+ map(0x01400000, 0x0140ffff).ram().share("nvram");
- AM_RANGE(0x01800000, 0x0180ffff) AM_RAM AM_SHARE("sysregs")
+ map(0x01800000, 0x0180ffff).ram().share("sysregs");
- AM_RANGE(0x01800800, 0x01800803) AM_READWRITE(DMA0_r, DMA0_w)
- AM_RANGE(0x01800810, 0x01800813) AM_READWRITE(DMA1_r, DMA1_w)
+ map(0x01800800, 0x01800803).rw(this, FUNC(crystal_state::DMA0_r), FUNC(crystal_state::DMA0_w));
+ map(0x01800810, 0x01800813).rw(this, FUNC(crystal_state::DMA1_r), FUNC(crystal_state::DMA1_w));
- AM_RANGE(0x01800c04, 0x01800c07) AM_WRITE(IntAck_w)
+ map(0x01800c04, 0x01800c07).w(this, FUNC(crystal_state::IntAck_w));
- AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w)
- AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w)
- AM_RANGE(0x01801410, 0x01801413) AM_READWRITE(Timer2_r, Timer2_w)
- AM_RANGE(0x01801418, 0x0180141b) AM_READWRITE(Timer3_r, Timer3_w)
- AM_RANGE(0x01802004, 0x01802007) AM_READWRITE(PIO_r, PIO_w)
+ map(0x01801400, 0x01801403).rw(this, FUNC(crystal_state::Timer0_r), FUNC(crystal_state::Timer0_w));
+ map(0x01801408, 0x0180140b).rw(this, FUNC(crystal_state::Timer1_r), FUNC(crystal_state::Timer1_w));
+ map(0x01801410, 0x01801413).rw(this, FUNC(crystal_state::Timer2_r), FUNC(crystal_state::Timer2_w));
+ map(0x01801418, 0x0180141b).rw(this, FUNC(crystal_state::Timer3_r), FUNC(crystal_state::Timer3_w));
+ map(0x01802004, 0x01802007).rw(this, FUNC(crystal_state::PIO_r), FUNC(crystal_state::PIO_w));
- AM_RANGE(0x02000000, 0x027fffff) AM_RAM AM_SHARE("workram")
+ map(0x02000000, 0x027fffff).ram().share("workram");
- AM_RANGE(0x03000000, 0x0300ffff) AM_RAM AM_SHARE("vidregs")
- AM_RANGE(0x030000a4, 0x030000a7) AM_READWRITE(FlipCount_r, FlipCount_w)
- AM_RANGE(0x03800000, 0x03ffffff) AM_RAM AM_SHARE("textureram")
- AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("frameram")
- AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vrender0_device, vr0_snd_read, vr0_snd_write)
+ map(0x03000000, 0x0300ffff).ram().share("vidregs");
+ map(0x030000a4, 0x030000a7).rw(this, FUNC(crystal_state::FlipCount_r), FUNC(crystal_state::FlipCount_w));
+ map(0x03800000, 0x03ffffff).ram().share("textureram");
+ map(0x04000000, 0x047fffff).ram().share("frameram");
+ map(0x04800000, 0x04800fff).rw("vrender", FUNC(vrender0_device::vr0_snd_read), FUNC(vrender0_device::vr0_snd_write));
- AM_RANGE(0x05000000, 0x05ffffff) AM_ROMBANK("bank1")
- AM_RANGE(0x05000000, 0x05000003) AM_READWRITE(FlashCmd_r, FlashCmd_w)
+ map(0x05000000, 0x05ffffff).bankr("bank1");
+ map(0x05000000, 0x05000003).rw(this, FUNC(crystal_state::FlashCmd_r), FUNC(crystal_state::FlashCmd_w));
- AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch")
-ADDRESS_MAP_END
+ map(0x44414F4C, 0x44414F7F).ram().share("reset_patch");
+}
// Trivia R Us
// To do: touch panel, RTC
@@ -708,57 +709,59 @@ WRITE32_MEMBER(crystal_state::trivrus_input_w)
m_trivrus_input = data & 0xff;
}
-ADDRESS_MAP_START(crystal_state::trivrus_mem)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_WRITENOP
+void crystal_state::trivrus_mem(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().nopw();
// 0x01280000 & 0x0000ffff (written at boot)
- AM_RANGE(0x01500000, 0x01500003) AM_READWRITE(trivrus_input_r, trivrus_input_w)
+ map(0x01500000, 0x01500003).rw(this, FUNC(crystal_state::trivrus_input_r), FUNC(crystal_state::trivrus_input_w));
// 0x01500010 & 0x000000ff = sec
// 0x01500010 & 0x00ff0000 = min
// 0x01500014 & 0x000000ff = hour
// 0x01500014 & 0x00ff0000 = day
// 0x01500018 & 0x000000ff = month
// 0x0150001c & 0x000000ff = year - 2000
- AM_RANGE(0x01600000, 0x01607fff) AM_RAM AM_SHARE("nvram")
+ map(0x01600000, 0x01607fff).ram().share("nvram");
- AM_RANGE(0x01800000, 0x0180ffff) AM_RAM AM_SHARE("sysregs")
+ map(0x01800000, 0x0180ffff).ram().share("sysregs");
- AM_RANGE(0x01800800, 0x01800803) AM_READWRITE(DMA0_r, DMA0_w)
- AM_RANGE(0x01800810, 0x01800813) AM_READWRITE(DMA1_r, DMA1_w)
+ map(0x01800800, 0x01800803).rw(this, FUNC(crystal_state::DMA0_r), FUNC(crystal_state::DMA0_w));
+ map(0x01800810, 0x01800813).rw(this, FUNC(crystal_state::DMA1_r), FUNC(crystal_state::DMA1_w));
- AM_RANGE(0x01800c04, 0x01800c07) AM_WRITE(IntAck_w)
+ map(0x01800c04, 0x01800c07).w(this, FUNC(crystal_state::IntAck_w));
- AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w)
- AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w)
- AM_RANGE(0x01801410, 0x01801413) AM_READWRITE(Timer2_r, Timer2_w)
- AM_RANGE(0x01801418, 0x0180141b) AM_READWRITE(Timer3_r, Timer3_w)
- AM_RANGE(0x01802004, 0x01802007) AM_READWRITE(PIO_r, PIO_w)
+ map(0x01801400, 0x01801403).rw(this, FUNC(crystal_state::Timer0_r), FUNC(crystal_state::Timer0_w));
+ map(0x01801408, 0x0180140b).rw(this, FUNC(crystal_state::Timer1_r), FUNC(crystal_state::Timer1_w));
+ map(0x01801410, 0x01801413).rw(this, FUNC(crystal_state::Timer2_r), FUNC(crystal_state::Timer2_w));
+ map(0x01801418, 0x0180141b).rw(this, FUNC(crystal_state::Timer3_r), FUNC(crystal_state::Timer3_w));
+ map(0x01802004, 0x01802007).rw(this, FUNC(crystal_state::PIO_r), FUNC(crystal_state::PIO_w));
- AM_RANGE(0x02000000, 0x027fffff) AM_RAM AM_SHARE("workram")
+ map(0x02000000, 0x027fffff).ram().share("workram");
- AM_RANGE(0x03000000, 0x0300ffff) AM_RAM AM_SHARE("vidregs")
- AM_RANGE(0x030000a4, 0x030000a7) AM_READWRITE(FlipCount_r, FlipCount_w)
- AM_RANGE(0x03800000, 0x03ffffff) AM_RAM AM_SHARE("textureram")
- AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("frameram")
- AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vrender0_device, vr0_snd_read, vr0_snd_write)
+ map(0x03000000, 0x0300ffff).ram().share("vidregs");
+ map(0x030000a4, 0x030000a7).rw(this, FUNC(crystal_state::FlipCount_r), FUNC(crystal_state::FlipCount_w));
+ map(0x03800000, 0x03ffffff).ram().share("textureram");
+ map(0x04000000, 0x047fffff).ram().share("frameram");
+ map(0x04800000, 0x04800fff).rw("vrender", FUNC(vrender0_device::vr0_snd_read), FUNC(vrender0_device::vr0_snd_write));
- AM_RANGE(0x05000000, 0x05ffffff) AM_ROMBANK("bank1")
- AM_RANGE(0x05000000, 0x05000003) AM_READWRITE(FlashCmd_r, FlashCmd_w)
+ map(0x05000000, 0x05ffffff).bankr("bank1");
+ map(0x05000000, 0x05000003).rw(this, FUNC(crystal_state::FlashCmd_r), FUNC(crystal_state::FlashCmd_w));
// AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(crystal_state::crospuzl_mem)
- AM_IMPORT_FROM( trivrus_mem )
+}
- AM_RANGE(0x01500000, 0x01500003) AM_READ(FlashCmd_r)
- AM_RANGE(0x01500100, 0x01500103) AM_WRITE(FlashCmd_w)
- AM_RANGE(0x01510000, 0x01510003) AM_READ_PORT("IN0")
- AM_RANGE(0x01511000, 0x01511003) AM_READ_PORT("IN1")
- AM_RANGE(0x01512000, 0x01512003) AM_READ_PORT("IN2")
- AM_RANGE(0x01513000, 0x01513003) AM_READ_PORT("IN3")
-ADDRESS_MAP_END
+void crystal_state::crospuzl_mem(address_map &map)
+{
+ trivrus_mem(map);
+
+ map(0x01500000, 0x01500003).r(this, FUNC(crystal_state::FlashCmd_r));
+ map(0x01500100, 0x01500103).w(this, FUNC(crystal_state::FlashCmd_w));
+ map(0x01510000, 0x01510003).portr("IN0");
+ map(0x01511000, 0x01511003).portr("IN1");
+ map(0x01512000, 0x01512003).portr("IN2");
+ map(0x01513000, 0x01513003).portr("IN3");
+}
// Crazy Dou Di Zhu II
// To do: HY04 (pic?) protection
@@ -801,41 +804,42 @@ crzyddz2 in out
return 0xffffff00 | data | m_crzyddz2_prot;
}
-ADDRESS_MAP_START(crystal_state::crzyddz2_mem)
- AM_RANGE(0x00000000, 0x00ffffff) AM_ROM AM_WRITENOP
+void crystal_state::crzyddz2_mem(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).rom().nopw();
- AM_RANGE(0x01280000, 0x01280003) AM_WRITE(Banksw_w)
- AM_RANGE(0x01400000, 0x0140ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x01500000, 0x01500003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x01500004, 0x01500007) AM_READ(crzyddz2_key_r)
+ map(0x01280000, 0x01280003).w(this, FUNC(crystal_state::Banksw_w));
+ map(0x01400000, 0x0140ffff).ram().share("nvram");
+ map(0x01500000, 0x01500003).portr("P1_P2");
+ map(0x01500004, 0x01500007).r(this, FUNC(crystal_state::crzyddz2_key_r));
- AM_RANGE(0x01800000, 0x0180ffff) AM_RAM AM_SHARE("sysregs")
+ map(0x01800000, 0x0180ffff).ram().share("sysregs");
- AM_RANGE(0x01800800, 0x01800803) AM_READWRITE(DMA0_r, DMA0_w)
- AM_RANGE(0x01800810, 0x01800813) AM_READWRITE(DMA1_r, DMA1_w)
+ map(0x01800800, 0x01800803).rw(this, FUNC(crystal_state::DMA0_r), FUNC(crystal_state::DMA0_w));
+ map(0x01800810, 0x01800813).rw(this, FUNC(crystal_state::DMA1_r), FUNC(crystal_state::DMA1_w));
- AM_RANGE(0x01800c04, 0x01800c07) AM_WRITE(IntAck_w)
+ map(0x01800c04, 0x01800c07).w(this, FUNC(crystal_state::IntAck_w));
- AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w)
- AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w)
- AM_RANGE(0x01801410, 0x01801413) AM_READWRITE(Timer2_r, Timer2_w)
- AM_RANGE(0x01801418, 0x0180141b) AM_READWRITE(Timer3_r, Timer3_w)
- AM_RANGE(0x01802004, 0x01802007) AM_READWRITE(PIO_r, crzyddz2_PIO_w)
+ map(0x01801400, 0x01801403).rw(this, FUNC(crystal_state::Timer0_r), FUNC(crystal_state::Timer0_w));
+ map(0x01801408, 0x0180140b).rw(this, FUNC(crystal_state::Timer1_r), FUNC(crystal_state::Timer1_w));
+ map(0x01801410, 0x01801413).rw(this, FUNC(crystal_state::Timer2_r), FUNC(crystal_state::Timer2_w));
+ map(0x01801418, 0x0180141b).rw(this, FUNC(crystal_state::Timer3_r), FUNC(crystal_state::Timer3_w));
+ map(0x01802004, 0x01802007).rw(this, FUNC(crystal_state::PIO_r), FUNC(crystal_state::crzyddz2_PIO_w));
- AM_RANGE(0x02000000, 0x027fffff) AM_RAM AM_SHARE("workram")
+ map(0x02000000, 0x027fffff).ram().share("workram");
- AM_RANGE(0x03000000, 0x0300ffff) AM_RAM AM_SHARE("vidregs")
- AM_RANGE(0x030000a4, 0x030000a7) AM_READWRITE(FlipCount_r, FlipCount_w)
- AM_RANGE(0x03800000, 0x03ffffff) AM_RAM AM_SHARE("textureram")
- AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("frameram")
- AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vrender0_device, vr0_snd_read, vr0_snd_write)
+ map(0x03000000, 0x0300ffff).ram().share("vidregs");
+ map(0x030000a4, 0x030000a7).rw(this, FUNC(crystal_state::FlipCount_r), FUNC(crystal_state::FlipCount_w));
+ map(0x03800000, 0x03ffffff).ram().share("textureram");
+ map(0x04000000, 0x047fffff).ram().share("frameram");
+ map(0x04800000, 0x04800fff).rw("vrender", FUNC(vrender0_device::vr0_snd_read), FUNC(vrender0_device::vr0_snd_write));
- AM_RANGE(0x05000000, 0x05ffffff) AM_ROMBANK("bank1")
- AM_RANGE(0x05000000, 0x05000003) AM_READWRITE(FlashCmd_r, FlashCmd_w)
+ map(0x05000000, 0x05ffffff).bankr("bank1");
+ map(0x05000000, 0x05000003).rw(this, FUNC(crystal_state::FlashCmd_r), FUNC(crystal_state::FlashCmd_w));
// AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch")
-ADDRESS_MAP_END
+}
void crystal_state::PatchReset( )
diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp
index c026dc1bbd2..dc707b2a5c0 100644
--- a/src/mame/drivers/csplayh5.cpp
+++ b/src/mame/drivers/csplayh5.cpp
@@ -130,21 +130,23 @@ WRITE16_MEMBER(csplayh5_state::csplayh5_mux_w)
m_mux_data = (~data & 0x1f);
}
-ADDRESS_MAP_START(csplayh5_state::csplayh5_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void csplayh5_state::csplayh5_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("DSW") AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00)
- AM_RANGE(0x200200, 0x200201) AM_READWRITE(csplayh5_mux_r,csplayh5_mux_w)
- AM_RANGE(0x200400, 0x200401) AM_READ_PORT("SYSTEM")
+ map(0x200000, 0x200001).portr("DSW");
+ map(0x200000, 0x200000).w(m_nichisnd, FUNC(nichisnd_device::sound_host_command_w));
+ map(0x200200, 0x200201).rw(this, FUNC(csplayh5_state::csplayh5_mux_r), FUNC(csplayh5_state::csplayh5_mux_w));
+ map(0x200400, 0x200401).portr("SYSTEM");
- AM_RANGE(0x200600, 0x200607) AM_DEVREADWRITE8("v9958", v9958_device, read, write, 0x00ff)
+ map(0x200600, 0x200607).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write)).umask16(0x00ff);
- AM_RANGE(0x800000, 0xbfffff) AM_ROM AM_REGION("blit_gfx",0) // GFX ROM routes here
+ map(0x800000, 0xbfffff).rom().region("blit_gfx", 0); // GFX ROM routes here
- AM_RANGE(0xc00000, 0xc7ffff) AM_RAM AM_SHARE("nvram") AM_MIRROR(0x380000) // work RAM
+ map(0xc00000, 0xc7ffff).ram().share("nvram").mirror(0x380000); // work RAM
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
#if USE_H8
READ16_MEMBER(csplayh5_state::test_r)
diff --git a/src/mame/drivers/cswat.cpp b/src/mame/drivers/cswat.cpp
index 7e844dede43..4abc14e1fff 100644
--- a/src/mame/drivers/cswat.cpp
+++ b/src/mame/drivers/cswat.cpp
@@ -137,18 +137,19 @@ READ8_MEMBER(cswat_state::sensors_r)
return machine().rand();
}
-ADDRESS_MAP_START(cswat_state::cswat_map)
- AM_RANGE(0x0000, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM
+void cswat_state::cswat_map(address_map &map)
+{
+ map(0x0000, 0x0bff).ram().w(this, FUNC(cswat_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram();
// AM_RANGE(0x1800, 0x1800) AM_READNOP // ? reads here after writing to $4000
- AM_RANGE(0x2000, 0x2000) AM_WRITE(irq_ack_w) // writes 1 at end of vblank irq, 0 at gamestart
- AM_RANGE(0x2000, 0x2001) AM_READ(dipswitch_r)
- AM_RANGE(0x2002, 0x2002) AM_WRITE(irq_ack_w) // writes 0 at start of vblank irq
- AM_RANGE(0x2002, 0x2002) AM_READ(sensors_r)
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("IN0")
+ map(0x2000, 0x2000).w(this, FUNC(cswat_state::irq_ack_w)); // writes 1 at end of vblank irq, 0 at gamestart
+ map(0x2000, 0x2001).r(this, FUNC(cswat_state::dipswitch_r));
+ map(0x2002, 0x2002).w(this, FUNC(cswat_state::irq_ack_w)); // writes 0 at start of vblank irq
+ map(0x2002, 0x2002).r(this, FUNC(cswat_state::sensors_r));
+ map(0x2003, 0x2003).portr("IN0");
// AM_RANGE(0x4000, 0x4009) AM_NOP // ?
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/ct486.cpp b/src/mame/drivers/ct486.cpp
index 4287fa3d0b3..44824156745 100644
--- a/src/mame/drivers/ct486.cpp
+++ b/src/mame/drivers/ct486.cpp
@@ -95,12 +95,14 @@ WRITE_LINE_MEMBER( ct486_state::cs4031_hold )
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(ct486_state::ct486_map)
-ADDRESS_MAP_END
+void ct486_state::ct486_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(ct486_state::ct486_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void ct486_state::ct486_io(address_map &map)
+{
+ map.unmap_value_high();
+}
//**************************************************************************
diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp
index 04aaeb87d6a..265d2775488 100644
--- a/src/mame/drivers/cubeqst.cpp
+++ b/src/mame/drivers/cubeqst.cpp
@@ -425,30 +425,33 @@ WRITE16_MEMBER(cubeqst_state::write_sndram)
m_soundcpu->sndram_w(space, offset, data, mem_mask);
}
-ADDRESS_MAP_START(cubeqst_state::m68k_program_map)
- ADDRESS_MAP_GLOBAL_MASK(0x03ffff)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x020000, 0x027fff) AM_READWRITE(read_rotram, write_rotram)
- AM_RANGE(0x028000, 0x028fff) AM_READWRITE(read_sndram, write_sndram)
- AM_RANGE(0x038000, 0x038001) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x038002, 0x038003) AM_READWRITE(chop_r, ldaud_w)
- AM_RANGE(0x038008, 0x038009) AM_READWRITE(line_r, reset_w)
- AM_RANGE(0x03800e, 0x03800f) AM_READWRITE(laserdisc_r, laserdisc_w)
- AM_RANGE(0x03c800, 0x03c9ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x03cc00, 0x03cc01) AM_WRITE(control_w)
- AM_RANGE(0x03e000, 0x03efff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x03f000, 0x03ffff) AM_RAM
-ADDRESS_MAP_END
+void cubeqst_state::m68k_program_map(address_map &map)
+{
+ map.global_mask(0x03ffff);
+ map(0x000000, 0x01ffff).rom();
+ map(0x020000, 0x027fff).rw(this, FUNC(cubeqst_state::read_rotram), FUNC(cubeqst_state::write_rotram));
+ map(0x028000, 0x028fff).rw(this, FUNC(cubeqst_state::read_sndram), FUNC(cubeqst_state::write_sndram));
+ map(0x038000, 0x038001).rw(this, FUNC(cubeqst_state::io_r), FUNC(cubeqst_state::io_w));
+ map(0x038002, 0x038003).rw(this, FUNC(cubeqst_state::chop_r), FUNC(cubeqst_state::ldaud_w));
+ map(0x038008, 0x038009).rw(this, FUNC(cubeqst_state::line_r), FUNC(cubeqst_state::reset_w));
+ map(0x03800e, 0x03800f).rw(this, FUNC(cubeqst_state::laserdisc_r), FUNC(cubeqst_state::laserdisc_w));
+ map(0x03c800, 0x03c9ff).ram().w(this, FUNC(cubeqst_state::palette_w)).share("paletteram");
+ map(0x03cc00, 0x03cc01).w(this, FUNC(cubeqst_state::control_w));
+ map(0x03e000, 0x03efff).ram().share("nvram");
+ map(0x03f000, 0x03ffff).ram();
+}
/* For the bit-sliced CPUs */
-ADDRESS_MAP_START(cubeqst_state::rotate_map)
- AM_RANGE(0x000, 0x1ff) AM_ROM
-ADDRESS_MAP_END
+void cubeqst_state::rotate_map(address_map &map)
+{
+ map(0x000, 0x1ff).rom();
+}
-ADDRESS_MAP_START(cubeqst_state::line_sound_map)
- AM_RANGE(0x000, 0x0ff) AM_ROM
-ADDRESS_MAP_END
+void cubeqst_state::line_sound_map(address_map &map)
+{
+ map(0x000, 0x0ff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp
index e8b7fbd196b..535bc2fe0a1 100644
--- a/src/mame/drivers/cubo.cpp
+++ b/src/mame/drivers/cubo.cpp
@@ -416,25 +416,27 @@ WRITE8_MEMBER( cubo_state::akiko_cia_0_port_a_write )
-ADDRESS_MAP_START(cubo_state::overlay_2mb_map32)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cubo_state::cubo_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32)
- AM_RANGE(0x800000, 0x800003) AM_READ_PORT("DIPSW1")
- AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2")
- AM_RANGE(0xa80000, 0xb7ffff) AM_NOP
- AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
- AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
- AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000)
- AM_RANGE(0xe80000, 0xf7ffff) AM_NOP
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void cubo_state::overlay_2mb_map32(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
+
+void cubo_state::cubo_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap32));
+ map(0x800000, 0x800003).portr("DIPSW1");
+ map(0x800010, 0x800013).portr("DIPSW2");
+ map(0xa80000, 0xb7ffff).noprw();
+ map(0xb80000, 0xb8003f).rw("akiko", FUNC(akiko_device::read), FUNC(akiko_device::write));
+ map(0xbf0000, 0xbfffff).rw(this, FUNC(cubo_state::cia_r), FUNC(cubo_state::gayle_cia_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(cubo_state::custom_chip_r), FUNC(cubo_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).rom().region("kickstart", 0x80000);
+ map(0xe80000, 0xf7ffff).noprw();
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
/*************************************
diff --git a/src/mame/drivers/cultures.cpp b/src/mame/drivers/cultures.cpp
index 7850967463b..de3209d1989 100644
--- a/src/mame/drivers/cultures.cpp
+++ b/src/mame/drivers/cultures.cpp
@@ -188,54 +188,58 @@ WRITE8_MEMBER(cultures_state::bg_bank_w)
}
-ADDRESS_MAP_START(cultures_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cultures_state::vrambank_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(bg0_videoram_w) AM_SHARE("bg0_videoram")
- AM_RANGE(0x4000, 0x6fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cultures_state::cultures_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("prgbank")
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cultures_state::cultures_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_RAM
- AM_RANGE(0x10, 0x13) AM_RAM
- AM_RANGE(0x20, 0x23) AM_RAM AM_SHARE("bg0_regs_x")
- AM_RANGE(0x30, 0x33) AM_RAM AM_SHARE("bg0_regs_y")
- AM_RANGE(0x40, 0x43) AM_RAM AM_SHARE("bg1_regs_x")
- AM_RANGE(0x50, 0x53) AM_RAM AM_SHARE("bg1_regs_y")
- AM_RANGE(0x60, 0x63) AM_RAM AM_SHARE("bg2_regs_x")
- AM_RANGE(0x70, 0x73) AM_RAM AM_SHARE("bg2_regs_y")
- AM_RANGE(0x80, 0x80) AM_WRITE(cpu_bankswitch_w)
- AM_RANGE(0x90, 0x90) AM_WRITE(misc_w)
- AM_RANGE(0xa0, 0xa0) AM_WRITE(bg_bank_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xd0, 0xd0) AM_READ_PORT("SW1_A")
- AM_RANGE(0xd1, 0xd1) AM_READ_PORT("SW1_B")
- AM_RANGE(0xd2, 0xd2) AM_READ_PORT("SW2_A")
- AM_RANGE(0xd3, 0xd3) AM_READ_PORT("SW2_B")
- AM_RANGE(0xe0, 0xe0) AM_READ_PORT("KEY0")
- AM_RANGE(0xe1, 0xe1) AM_READ_PORT("KEY1")
- AM_RANGE(0xe2, 0xe2) AM_READ_PORT("KEY2")
- AM_RANGE(0xe3, 0xe3) AM_READ_PORT("KEY3")
- AM_RANGE(0xe4, 0xe4) AM_READ_PORT("KEY4")
- AM_RANGE(0xe5, 0xe5) AM_READ_PORT("START")
- AM_RANGE(0xf0, 0xf0) AM_READ_PORT("UNUSED1")
- AM_RANGE(0xf1, 0xf1) AM_READ_PORT("UNUSED2")
- AM_RANGE(0xf2, 0xf2) AM_READ_PORT("UNUSED3")
- AM_RANGE(0xf3, 0xf3) AM_READ_PORT("UNUSED4")
- AM_RANGE(0xf7, 0xf7) AM_READ_PORT("COINS")
-ADDRESS_MAP_END
+void cultures_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
+
+void cultures_state::vrambank_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(cultures_state::bg0_videoram_w)).share("bg0_videoram");
+ map(0x4000, 0x6fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void cultures_state::cultures_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("prgbank");
+ map(0x8000, 0xbfff).m(m_vrambank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xdfff).ram();
+ map(0xf000, 0xffff).ram();
+}
+
+void cultures_state::cultures_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).ram();
+ map(0x10, 0x13).ram();
+ map(0x20, 0x23).ram().share("bg0_regs_x");
+ map(0x30, 0x33).ram().share("bg0_regs_y");
+ map(0x40, 0x43).ram().share("bg1_regs_x");
+ map(0x50, 0x53).ram().share("bg1_regs_y");
+ map(0x60, 0x63).ram().share("bg2_regs_x");
+ map(0x70, 0x73).ram().share("bg2_regs_y");
+ map(0x80, 0x80).w(this, FUNC(cultures_state::cpu_bankswitch_w));
+ map(0x90, 0x90).w(this, FUNC(cultures_state::misc_w));
+ map(0xa0, 0xa0).w(this, FUNC(cultures_state::bg_bank_w));
+ map(0xc0, 0xc0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xd0, 0xd0).portr("SW1_A");
+ map(0xd1, 0xd1).portr("SW1_B");
+ map(0xd2, 0xd2).portr("SW2_A");
+ map(0xd3, 0xd3).portr("SW2_B");
+ map(0xe0, 0xe0).portr("KEY0");
+ map(0xe1, 0xe1).portr("KEY1");
+ map(0xe2, 0xe2).portr("KEY2");
+ map(0xe3, 0xe3).portr("KEY3");
+ map(0xe4, 0xe4).portr("KEY4");
+ map(0xe5, 0xe5).portr("START");
+ map(0xf0, 0xf0).portr("UNUSED1");
+ map(0xf1, 0xf1).portr("UNUSED2");
+ map(0xf2, 0xf2).portr("UNUSED3");
+ map(0xf3, 0xf3).portr("UNUSED4");
+ map(0xf7, 0xf7).portr("COINS");
+}
static INPUT_PORTS_START( cultures )
diff --git a/src/mame/drivers/cupidon.cpp b/src/mame/drivers/cupidon.cpp
index b8597858320..1e53524984d 100644
--- a/src/mame/drivers/cupidon.cpp
+++ b/src/mame/drivers/cupidon.cpp
@@ -79,23 +79,24 @@ uint32_t cupidon_state::screen_update_cupidon(screen_device &screen, bitmap_ind1
}
// could be pumped through the get_cs function (if they use the memory protection features we might have to) but that's slow...
-ADDRESS_MAP_START(cupidon_state::cupidon_map)
- AM_RANGE(0x0000000, 0x07fffff) AM_ROM AM_MIRROR(0x1000000)
+void cupidon_state::cupidon_map(address_map &map)
+{
+ map(0x0000000, 0x07fffff).rom().mirror(0x1000000);
- AM_RANGE(0x1000000, 0x100ffff) AM_RAM
- AM_RANGE(0x1800000, 0x1800003) AM_READ(cupidon_return_ffffffff)
- AM_RANGE(0x2000074, 0x2000077) AM_RAM // port
+ map(0x1000000, 0x100ffff).ram();
+ map(0x1800000, 0x1800003).r(this, FUNC(cupidon_state::cupidon_return_ffffffff));
+ map(0x2000074, 0x2000077).ram(); // port
// AM_RANGE(0x2000040, 0x200004f) AM_RAM
// might just be 4mb of VRAM
- AM_RANGE(0x3000000, 0x33bffff) AM_RAM
- AM_RANGE(0x33c0000, 0x33fffff) AM_RAM AM_SHARE("gfxram") // seems to upload graphics to here, tiles etc. if you skip the loop after the romtest in funnyfm
+ map(0x3000000, 0x33bffff).ram();
+ map(0x33c0000, 0x33fffff).ram().share("gfxram"); // seems to upload graphics to here, tiles etc. if you skip the loop after the romtest in funnyfm
// AM_RANGE(0x3400000, 0x3400fff) AM_RAM
// AM_RANGE(0x3F80000, 0x3F80003) AM_RAM
- AM_RANGE(0x3FF0400, 0x3FF0403) AM_RAM // register? gangrose likes to read this?
-ADDRESS_MAP_END
+ map(0x3FF0400, 0x3FF0403).ram(); // register? gangrose likes to read this?
+}
static INPUT_PORTS_START( cupidon )
INPUT_PORTS_END
diff --git a/src/mame/drivers/cv1k.cpp b/src/mame/drivers/cv1k.cpp
index 8c813aaf2b6..34ff368d9c0 100644
--- a/src/mame/drivers/cv1k.cpp
+++ b/src/mame/drivers/cv1k.cpp
@@ -342,34 +342,37 @@ WRITE8_MEMBER( cv1k_state::serial_rtc_eeprom_w )
}
-ADDRESS_MAP_START(cv1k_state::cv1k_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason..
- AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("mainram")// work RAM
- AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(flash_io_r, flash_io_w, 0xffffffffffffffffU)
- AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, 0xffffffffffffffffU)
- AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, 0xffffffffffffffffU)
+void cv1k_state::cv1k_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rom().region("maincpu", 0).nopw().share("rombase"); // mmmbanc writes here on startup for some reason..
+ map(0x0c000000, 0x0c7fffff).ram().share("mainram");// work RAM
+ map(0x10000000, 0x10000007).rw(this, FUNC(cv1k_state::flash_io_r), FUNC(cv1k_state::flash_io_w));
+ map(0x10400000, 0x10400007).w("ymz770", FUNC(ymz770_device::write));
+ map(0x10C00000, 0x10C00007).rw(this, FUNC(cv1k_state::serial_rtc_eeprom_r), FUNC(cv1k_state::serial_rtc_eeprom_w));
// AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset
- AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM // mem mapped cache (sh3 internal?)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cv1k_state::cv1k_d_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason..
- AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("mainram") // work RAM
- AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(flash_io_r, flash_io_w, 0xffffffffffffffffU)
- AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, 0xffffffffffffffffU)
- AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, 0xffffffffffffffffU)
+ map(0xf0000000, 0xf0ffffff).ram(); // mem mapped cache (sh3 internal?)
+}
+
+void cv1k_state::cv1k_d_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rom().region("maincpu", 0).nopw().share("rombase"); // mmmbanc writes here on startup for some reason..
+ map(0x0c000000, 0x0cffffff).ram().share("mainram"); // work RAM
+ map(0x10000000, 0x10000007).rw(this, FUNC(cv1k_state::flash_io_r), FUNC(cv1k_state::flash_io_w));
+ map(0x10400000, 0x10400007).w("ymz770", FUNC(ymz770_device::write));
+ map(0x10C00000, 0x10C00007).rw(this, FUNC(cv1k_state::serial_rtc_eeprom_r), FUNC(cv1k_state::serial_rtc_eeprom_w));
// AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset
- AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM // mem mapped cache (sh3 internal?)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cv1k_state::cv1k_port)
- AM_RANGE(SH3_PORT_C, SH3_PORT_C+7) AM_READ_PORT("PORT_C")
- AM_RANGE(SH3_PORT_D, SH3_PORT_D+7) AM_READ_PORT("PORT_D")
- AM_RANGE(SH3_PORT_E, SH3_PORT_E+7) AM_READ( flash_port_e_r )
- AM_RANGE(SH3_PORT_F, SH3_PORT_F+7) AM_READ_PORT("PORT_F")
- AM_RANGE(SH3_PORT_L, SH3_PORT_L+7) AM_READ_PORT("PORT_L")
- AM_RANGE(SH3_PORT_J, SH3_PORT_J+7) AM_DEVREADWRITE( "blitter", epic12_device, fpga_r, fpga_w )
-ADDRESS_MAP_END
+ map(0xf0000000, 0xf0ffffff).ram(); // mem mapped cache (sh3 internal?)
+}
+
+void cv1k_state::cv1k_port(address_map &map)
+{
+ map(SH3_PORT_C, SH3_PORT_C+7).portr("PORT_C");
+ map(SH3_PORT_D, SH3_PORT_D+7).portr("PORT_D");
+ map(SH3_PORT_E, SH3_PORT_E+7).r(this, FUNC(cv1k_state::flash_port_e_r));
+ map(SH3_PORT_F, SH3_PORT_F+7).portr("PORT_F");
+ map(SH3_PORT_L, SH3_PORT_L+7).portr("PORT_L");
+ map(SH3_PORT_J, SH3_PORT_J+7).rw(m_blitter, FUNC(epic12_device::fpga_r), FUNC(epic12_device::fpga_w));
+}
static INPUT_PORTS_START( cv1k_base )
diff --git a/src/mame/drivers/cvicny.cpp b/src/mame/drivers/cvicny.cpp
index f78ffc91a35..4cf6a80a593 100644
--- a/src/mame/drivers/cvicny.cpp
+++ b/src/mame/drivers/cvicny.cpp
@@ -77,14 +77,15 @@ READ8_MEMBER( cvicny_state::key_r )
return ((data << 4) ^ 0xf0) | data;
}
-ADDRESS_MAP_START(cvicny_state::cvicny_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM // 1 x 2716
- AM_RANGE(0x0800, 0x0bff) AM_RAM AM_MIRROR(0x400) // 2x 2114 static ram
- AM_RANGE(0x1000, 0x17ff) AM_READ(key_r)
- AM_RANGE(0x1800, 0x1fff) AM_WRITE(digit_w)
- AM_RANGE(0x2000, 0x27ff) AM_WRITE(segment_w)
-ADDRESS_MAP_END
+void cvicny_state::cvicny_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom(); // 1 x 2716
+ map(0x0800, 0x0bff).ram().mirror(0x400); // 2x 2114 static ram
+ map(0x1000, 0x17ff).r(this, FUNC(cvicny_state::key_r));
+ map(0x1800, 0x1fff).w(this, FUNC(cvicny_state::digit_w));
+ map(0x2000, 0x27ff).w(this, FUNC(cvicny_state::segment_w));
+}
/* Input ports */
diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp
index bd6d137f3ac..37b821f7618 100644
--- a/src/mame/drivers/cvs.cpp
+++ b/src/mame/drivers/cvs.cpp
@@ -445,28 +445,31 @@ WRITE8_MEMBER(cvs_state::audio_command_w)
*
*************************************/
-ADDRESS_MAP_START(cvs_state::cvs_main_cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_bullet_ram_or_palette_r, cvs_bullet_ram_or_palette_w) AM_SHARE("bullet_ram")
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_2_or_character_ram_r, cvs_s2636_2_or_character_ram_w)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_1_or_character_ram_r, cvs_s2636_1_or_character_ram_w)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_0_or_character_ram_r, cvs_s2636_0_or_character_ram_w)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(cvs_video_or_color_ram_r, cvs_video_or_color_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x33ff) AM_ROM
- AM_RANGE(0x4000, 0x53ff) AM_ROM
- AM_RANGE(0x6000, 0x73ff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cvs_state::cvs_main_cpu_io_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(cvs_input_r, cvs_scroll_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cvs_state::cvs_main_cpu_data_map)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(cvs_collision_r, audio_command_w)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(cvs_collision_clear, cvs_video_fx_w)
-ADDRESS_MAP_END
+void cvs_state::cvs_main_cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x13ff).rom();
+ map(0x1400, 0x14ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_bullet_ram_or_palette_r), FUNC(cvs_state::cvs_bullet_ram_or_palette_w)).share("bullet_ram");
+ map(0x1500, 0x15ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_s2636_2_or_character_ram_r), FUNC(cvs_state::cvs_s2636_2_or_character_ram_w));
+ map(0x1600, 0x16ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_s2636_1_or_character_ram_r), FUNC(cvs_state::cvs_s2636_1_or_character_ram_w));
+ map(0x1700, 0x17ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_s2636_0_or_character_ram_r), FUNC(cvs_state::cvs_s2636_0_or_character_ram_w));
+ map(0x1800, 0x1bff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_video_or_color_ram_r), FUNC(cvs_state::cvs_video_or_color_ram_w)).share("video_ram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x33ff).rom();
+ map(0x4000, 0x53ff).rom();
+ map(0x6000, 0x73ff).rom();
+}
+
+void cvs_state::cvs_main_cpu_io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(cvs_state::cvs_input_r), FUNC(cvs_state::cvs_scroll_w));
+}
+
+void cvs_state::cvs_main_cpu_data_map(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(cvs_state::cvs_collision_r), FUNC(cvs_state::audio_command_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(cvs_state::cvs_collision_clear), FUNC(cvs_state::cvs_video_fx_w));
+}
/*************************************
*
@@ -474,15 +477,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cvs_state::cvs_dac_cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x107f) AM_RAM
- AM_RANGE(0x1800, 0x1800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1840, 0x1840) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x1880, 0x1883) AM_WRITE(cvs_4_bit_dac_data_w) AM_SHARE("4bit_dac")
- AM_RANGE(0x1884, 0x1887) AM_WRITE(cvs_unknown_w) AM_SHARE("dac3_state") /* ???? not connected to anything */
-ADDRESS_MAP_END
+void cvs_state::cvs_dac_cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x107f).ram();
+ map(0x1800, 0x1800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1840, 0x1840).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x1880, 0x1883).w(this, FUNC(cvs_state::cvs_4_bit_dac_data_w)).share("4bit_dac");
+ map(0x1884, 0x1887).w(this, FUNC(cvs_state::cvs_unknown_w)).share("dac3_state"); /* ???? not connected to anything */
+}
@@ -492,15 +496,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cvs_state::cvs_speech_cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x1d00, 0x1d00) AM_WRITE(cvs_speech_rom_address_lo_w)
- AM_RANGE(0x1d40, 0x1d40) AM_WRITE(cvs_speech_rom_address_hi_w)
- AM_RANGE(0x1d80, 0x1d80) AM_READ(cvs_speech_command_r)
- AM_RANGE(0x1ddc, 0x1dde) AM_WRITE(cvs_tms5110_ctl_w) AM_SHARE("tms5110_ctl")
- AM_RANGE(0x1ddf, 0x1ddf) AM_WRITE(cvs_tms5110_pdc_w)
-ADDRESS_MAP_END
+void cvs_state::cvs_speech_cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).rom();
+ map(0x1d00, 0x1d00).w(this, FUNC(cvs_state::cvs_speech_rom_address_lo_w));
+ map(0x1d40, 0x1d40).w(this, FUNC(cvs_state::cvs_speech_rom_address_hi_w));
+ map(0x1d80, 0x1d80).r(this, FUNC(cvs_state::cvs_speech_command_r));
+ map(0x1ddc, 0x1dde).w(this, FUNC(cvs_state::cvs_tms5110_ctl_w)).share("tms5110_ctl");
+ map(0x1ddf, 0x1ddf).w(this, FUNC(cvs_state::cvs_tms5110_pdc_w));
+}
/*************************************
diff --git a/src/mame/drivers/cxgz80.cpp b/src/mame/drivers/cxgz80.cpp
index 490c1fbec5a..7fc17cf9435 100644
--- a/src/mame/drivers/cxgz80.cpp
+++ b/src/mame/drivers/cxgz80.cpp
@@ -268,12 +268,13 @@ READ8_MEMBER(cxgz80_state::ch2001_input_r)
// Chess 2001
-ADDRESS_MAP_START(cxgz80_state::ch2001_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x3fff) AM_READWRITE(ch2001_input_r, ch2001_leds_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x3fff) AM_WRITE(ch2001_speaker_on_w)
-ADDRESS_MAP_END
+void cxgz80_state::ch2001_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).mirror(0x3800).ram();
+ map(0x8000, 0x8000).mirror(0x3fff).rw(this, FUNC(cxgz80_state::ch2001_input_r), FUNC(cxgz80_state::ch2001_leds_w));
+ map(0xc000, 0xc000).mirror(0x3fff).w(this, FUNC(cxgz80_state::ch2001_speaker_on_w));
+}
diff --git a/src/mame/drivers/cxhumax.cpp b/src/mame/drivers/cxhumax.cpp
index f834c0a80e8..e4b75c11aab 100644
--- a/src/mame/drivers/cxhumax.cpp
+++ b/src/mame/drivers/cxhumax.cpp
@@ -943,40 +943,41 @@ uint32_t cxhumax_state::screen_update_cxhumax(screen_device &screen, bitmap_rgb3
return 0;
}
-ADDRESS_MAP_START(cxhumax_state::cxhumax_map)
- AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("ram") AM_MIRROR(0x40000000) // 64?MB RAM
- AM_RANGE(0xe0000000, 0xe000ffff) AM_READWRITE(cx_hsx_r, cx_hsx_w) // HSX
- AM_RANGE(0xe0010000, 0xe0010003) AM_READWRITE(cx_romdescr_r, cx_romdescr_w) // ROM Descriptor
- AM_RANGE(0xe0010004, 0xe001000f) AM_READWRITE(cx_isaromdescr_r, cx_isaromdescr_w) // ISA/ROM Descriptors
- AM_RANGE(0xe0010010, 0xe001001f) AM_READWRITE(cx_isadescr_r, cx_isadescr_w) // ISA Descriptors
- AM_RANGE(0xe0010020, 0xe001002f) AM_READWRITE(cx_rommap_r, cx_rommap_w) // ROM Mapping
- AM_RANGE(0xe0010030, 0xe0010033) AM_READWRITE(cx_rommode_r, cx_rommode_w) // ISA Mode
- AM_RANGE(0xe0010034, 0xe0010037) AM_READWRITE(cx_xoemask_r, cx_xoemask_w) // XOE Mask
- AM_RANGE(0xe0010040, 0xe0010047) AM_READWRITE(cx_pci_r, cx_pci_w) // PCI
- AM_RANGE(0xe0010080, 0xe00100ff) AM_READWRITE(cx_extdesc_r, cx_extdesc_w) // Extended Control
- AM_RANGE(0xe0400014, 0xe0400017) AM_WRITE(cx_remap_w) // RST_REMAP_REG
- AM_RANGE(0xe0400024, 0xe0400027) AM_READWRITE(cx_scratch_r, cx_scratch_w) // RST_SCRATCH_REG - System Scratch Register
- AM_RANGE(0xe0430000, 0xe0430103) AM_READWRITE(cx_timers_r, cx_timers_w) // Timers
- AM_RANGE(0xe0411000, 0xe0411033) AM_READWRITE(cx_uart2_r, cx_uart2_w) // UART2
- AM_RANGE(0xe0440000, 0xe0440013) AM_READWRITE(cx_pll_r, cx_pll_w) // PLL Registers
- AM_RANGE(0xe0440020, 0xe0440037) AM_READWRITE(cx_clkdiv_r, cx_clkdiv_w) // Clock Divider Registers
- AM_RANGE(0xe0440094, 0xe0440097) AM_READWRITE(cx_pllprescale_r, cx_pllprescale_w) // PLL Prescale
- AM_RANGE(0xe0440100, 0xe0440173) AM_READWRITE(cx_chipcontrol_r, cx_chipcontrol_w) // Chip Control Registers
- AM_RANGE(0xe0450000, 0xe0450037) AM_READWRITE(cx_intctrl_r, cx_intctrl_w) // Interrupt Controller Registers
- AM_RANGE(0xe0490000, 0xe0490017) AM_READWRITE(cx_ss_r, cx_ss_w) // Synchronous Serial Port
- AM_RANGE(0xe04e0000, 0xe04e001f) AM_READWRITE(cx_i2c0_r, cx_i2c0_w) // I2C0
- AM_RANGE(0xe04e1000, 0xe04e101f) AM_READWRITE(cx_i2c1_r, cx_i2c1_w) // I2C1
- AM_RANGE(0xe04e2000, 0xe04e201f) AM_READWRITE(cx_i2c2_r, cx_i2c2_w) // I2C2
- AM_RANGE(0xe0500300, 0xe050030b) AM_READWRITE(cx_mc_cfg_r, cx_mc_cfg_w) // Memory Controller configuration
- AM_RANGE(0xe0560000, 0xe05600fb) AM_READWRITE(cx_drm0_r, cx_drm0_w) // DRM0
- AM_RANGE(0xe0570000, 0xe05700fb) AM_READWRITE(cx_drm1_r, cx_drm1_w) // DRM1
- AM_RANGE(0xe05d0800, 0xe05d0bff) AM_READWRITE(cx_hdmi_r, cx_hdmi_w) // HDMI
- AM_RANGE(0xe0600000, 0xe063ffff) AM_READWRITE(cx_gxa_r, cx_gxa_w) // GXA
- AM_RANGE(0xe4017000, 0xe40173ff) AM_RAM // HSX - BSP - 1K Video Shared Dual Port RAM (shared with MVP)
- AM_RANGE(0xe4080000, 0xe4083fff) AM_RAM // HSX - TSP 0 - 16K Private Instructions/Data and Host-Shared Data
- AM_RANGE(0xf0000000, 0xf03fffff) AM_READWRITE(flash_r, flash_w) AM_MIRROR(0x08000000) // 4MB FLASH (INTEL 28F320J3D)
- AM_RANGE(0xf4000000, 0xf43fffff) AM_READ(dummy_flash_r) // do we need it?
-ADDRESS_MAP_END
+void cxhumax_state::cxhumax_map(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).ram().share("ram").mirror(0x40000000); // 64?MB RAM
+ map(0xe0000000, 0xe000ffff).rw(this, FUNC(cxhumax_state::cx_hsx_r), FUNC(cxhumax_state::cx_hsx_w)); // HSX
+ map(0xe0010000, 0xe0010003).rw(this, FUNC(cxhumax_state::cx_romdescr_r), FUNC(cxhumax_state::cx_romdescr_w)); // ROM Descriptor
+ map(0xe0010004, 0xe001000f).rw(this, FUNC(cxhumax_state::cx_isaromdescr_r), FUNC(cxhumax_state::cx_isaromdescr_w)); // ISA/ROM Descriptors
+ map(0xe0010010, 0xe001001f).rw(this, FUNC(cxhumax_state::cx_isadescr_r), FUNC(cxhumax_state::cx_isadescr_w)); // ISA Descriptors
+ map(0xe0010020, 0xe001002f).rw(this, FUNC(cxhumax_state::cx_rommap_r), FUNC(cxhumax_state::cx_rommap_w)); // ROM Mapping
+ map(0xe0010030, 0xe0010033).rw(this, FUNC(cxhumax_state::cx_rommode_r), FUNC(cxhumax_state::cx_rommode_w)); // ISA Mode
+ map(0xe0010034, 0xe0010037).rw(this, FUNC(cxhumax_state::cx_xoemask_r), FUNC(cxhumax_state::cx_xoemask_w)); // XOE Mask
+ map(0xe0010040, 0xe0010047).rw(this, FUNC(cxhumax_state::cx_pci_r), FUNC(cxhumax_state::cx_pci_w)); // PCI
+ map(0xe0010080, 0xe00100ff).rw(this, FUNC(cxhumax_state::cx_extdesc_r), FUNC(cxhumax_state::cx_extdesc_w)); // Extended Control
+ map(0xe0400014, 0xe0400017).w(this, FUNC(cxhumax_state::cx_remap_w)); // RST_REMAP_REG
+ map(0xe0400024, 0xe0400027).rw(this, FUNC(cxhumax_state::cx_scratch_r), FUNC(cxhumax_state::cx_scratch_w)); // RST_SCRATCH_REG - System Scratch Register
+ map(0xe0430000, 0xe0430103).rw(this, FUNC(cxhumax_state::cx_timers_r), FUNC(cxhumax_state::cx_timers_w)); // Timers
+ map(0xe0411000, 0xe0411033).rw(this, FUNC(cxhumax_state::cx_uart2_r), FUNC(cxhumax_state::cx_uart2_w)); // UART2
+ map(0xe0440000, 0xe0440013).rw(this, FUNC(cxhumax_state::cx_pll_r), FUNC(cxhumax_state::cx_pll_w)); // PLL Registers
+ map(0xe0440020, 0xe0440037).rw(this, FUNC(cxhumax_state::cx_clkdiv_r), FUNC(cxhumax_state::cx_clkdiv_w)); // Clock Divider Registers
+ map(0xe0440094, 0xe0440097).rw(this, FUNC(cxhumax_state::cx_pllprescale_r), FUNC(cxhumax_state::cx_pllprescale_w)); // PLL Prescale
+ map(0xe0440100, 0xe0440173).rw(this, FUNC(cxhumax_state::cx_chipcontrol_r), FUNC(cxhumax_state::cx_chipcontrol_w)); // Chip Control Registers
+ map(0xe0450000, 0xe0450037).rw(this, FUNC(cxhumax_state::cx_intctrl_r), FUNC(cxhumax_state::cx_intctrl_w)); // Interrupt Controller Registers
+ map(0xe0490000, 0xe0490017).rw(this, FUNC(cxhumax_state::cx_ss_r), FUNC(cxhumax_state::cx_ss_w)); // Synchronous Serial Port
+ map(0xe04e0000, 0xe04e001f).rw(this, FUNC(cxhumax_state::cx_i2c0_r), FUNC(cxhumax_state::cx_i2c0_w)); // I2C0
+ map(0xe04e1000, 0xe04e101f).rw(this, FUNC(cxhumax_state::cx_i2c1_r), FUNC(cxhumax_state::cx_i2c1_w)); // I2C1
+ map(0xe04e2000, 0xe04e201f).rw(this, FUNC(cxhumax_state::cx_i2c2_r), FUNC(cxhumax_state::cx_i2c2_w)); // I2C2
+ map(0xe0500300, 0xe050030b).rw(this, FUNC(cxhumax_state::cx_mc_cfg_r), FUNC(cxhumax_state::cx_mc_cfg_w)); // Memory Controller configuration
+ map(0xe0560000, 0xe05600fb).rw(this, FUNC(cxhumax_state::cx_drm0_r), FUNC(cxhumax_state::cx_drm0_w)); // DRM0
+ map(0xe0570000, 0xe05700fb).rw(this, FUNC(cxhumax_state::cx_drm1_r), FUNC(cxhumax_state::cx_drm1_w)); // DRM1
+ map(0xe05d0800, 0xe05d0bff).rw(this, FUNC(cxhumax_state::cx_hdmi_r), FUNC(cxhumax_state::cx_hdmi_w)); // HDMI
+ map(0xe0600000, 0xe063ffff).rw(this, FUNC(cxhumax_state::cx_gxa_r), FUNC(cxhumax_state::cx_gxa_w)); // GXA
+ map(0xe4017000, 0xe40173ff).ram(); // HSX - BSP - 1K Video Shared Dual Port RAM (shared with MVP)
+ map(0xe4080000, 0xe4083fff).ram(); // HSX - TSP 0 - 16K Private Instructions/Data and Host-Shared Data
+ map(0xf0000000, 0xf03fffff).rw(this, FUNC(cxhumax_state::flash_r), FUNC(cxhumax_state::flash_w)).mirror(0x08000000); // 4MB FLASH (INTEL 28F320J3D)
+ map(0xf4000000, 0xf43fffff).r(this, FUNC(cxhumax_state::dummy_flash_r)); // do we need it?
+}
static INPUT_PORTS_START( cxhumax )
INPUT_PORTS_END
diff --git a/src/mame/drivers/cyberbal.cpp b/src/mame/drivers/cyberbal.cpp
index ced3401ec8b..61e3296afba 100644
--- a/src/mame/drivers/cyberbal.cpp
+++ b/src/mame/drivers/cyberbal.cpp
@@ -121,30 +121,31 @@ WRITE16_MEMBER(cyberbal_state::p2_reset_w)
*
*************************************/
-ADDRESS_MAP_START(cyberbal_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfc0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xfc8000, 0xfcffff) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0xff00)
- AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0xfd2000, 0xfd3fff) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w)
- AM_RANGE(0xfd4000, 0xfd5fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xfd6000, 0xfd7fff) AM_WRITE(p2_reset_w)
- AM_RANGE(0xfd8000, 0xfd9fff) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0xff00)
- AM_RANGE(0xfe0000, 0xfe0fff) AM_READ_PORT("IN0")
- AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1")
- AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette")
- AM_RANGE(0xfec000, 0xfecfff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette")
- AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield2", tilemap_device, write16) AM_SHARE("playfield2")
- AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha2", tilemap_device, write16) AM_SHARE("alpha2")
- AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob2")
- AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("ff3800")
- AM_RANGE(0xff4000, 0xff5fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xff6000, 0xff6fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xff7000, 0xff77ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xffa000, 0xffbfff) AM_READONLY AM_WRITENOP AM_SHARE("extraram")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+void cyberbal_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0xfc0000, 0xfc0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xfc8000, 0xfcffff).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)).umask16(0xff00);
+ map(0xfd0000, 0xfd1fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0xfd2000, 0xfd3fff).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w));
+ map(0xfd4000, 0xfd5fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xfd6000, 0xfd7fff).w(this, FUNC(cyberbal_state::p2_reset_w));
+ map(0xfd8000, 0xfd9fff).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)).umask16(0xff00);
+ map(0xfe0000, 0xfe0fff).portr("IN0");
+ map(0xfe1000, 0xfe1fff).portr("IN1");
+ map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette");
+ map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette");
+ map(0xff0000, 0xff1fff).ram().w(m_playfield2_tilemap, FUNC(tilemap_device::write16)).share("playfield2");
+ map(0xff2000, 0xff2fff).ram().w(m_alpha2_tilemap, FUNC(tilemap_device::write16)).share("alpha2");
+ map(0xff3000, 0xff37ff).ram().share("mob2");
+ map(0xff3800, 0xff3fff).ram().share("ff3800");
+ map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield");
+ map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha");
+ map(0xff7000, 0xff77ff).ram().share("mob");
+ map(0xff7800, 0xff9fff).ram().share("sharedram");
+ map(0xffa000, 0xffbfff).readonly().nopw().share("extraram");
+ map(0xffc000, 0xffffff).ram().share("mainram");
+}
@@ -154,24 +155,25 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cyberbal_state::extra_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfdffff) AM_WRITE(video_int_ack_w)
- AM_RANGE(0xfe0000, 0xfe0fff) AM_READ_PORT("IN0")
- AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1")
- AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette")
- AM_RANGE(0xfec000, 0xfecfff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette")
- AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield2", tilemap_device, write16) AM_SHARE("playfield2")
- AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha2", tilemap_device, write16) AM_SHARE("alpha2")
- AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob2")
- AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("ff3800")
- AM_RANGE(0xff4000, 0xff5fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xff6000, 0xff6fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xff7000, 0xff77ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("extraram")
- AM_RANGE(0xffc000, 0xffffff) AM_READONLY AM_WRITENOP AM_SHARE("mainram")
-ADDRESS_MAP_END
+void cyberbal_state::extra_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0xfc0000, 0xfdffff).w(this, FUNC(cyberbal_state::video_int_ack_w));
+ map(0xfe0000, 0xfe0fff).portr("IN0");
+ map(0xfe1000, 0xfe1fff).portr("IN1");
+ map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette");
+ map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette");
+ map(0xff0000, 0xff1fff).ram().w(m_playfield2_tilemap, FUNC(tilemap_device::write16)).share("playfield2");
+ map(0xff2000, 0xff2fff).ram().w(m_alpha2_tilemap, FUNC(tilemap_device::write16)).share("alpha2");
+ map(0xff3000, 0xff37ff).ram().share("mob2");
+ map(0xff3800, 0xff3fff).ram().share("ff3800");
+ map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield");
+ map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha");
+ map(0xff7000, 0xff77ff).ram().share("mob");
+ map(0xff7800, 0xff9fff).ram().share("sharedram");
+ map(0xffa000, 0xffbfff).ram().share("extraram");
+ map(0xffc000, 0xffffff).readonly().nopw().share("mainram");
+}
@@ -181,20 +183,21 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cyberbal_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x2800, 0x2801) AM_WRITE(sound_68k_6502_w)
- AM_RANGE(0x2802, 0x2803) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_r, sound_irq_ack_w)
- AM_RANGE(0x2804, 0x2805) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_response_w)
- AM_RANGE(0x2806, 0x2807) AM_WRITE(sound_bank_select_w)
- AM_RANGE(0x2c00, 0x2c01) AM_DEVREAD("soundcomm", atari_sound_comm_device, sound_command_r)
- AM_RANGE(0x2c02, 0x2c03) AM_READ(special_port3_r)
- AM_RANGE(0x2c04, 0x2c05) AM_READ(sound_68k_6502_r)
- AM_RANGE(0x2c06, 0x2c07) AM_READ(sound_6502_stat_r)
- AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("soundbank")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void cyberbal_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2001).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2800, 0x2801).w(this, FUNC(cyberbal_state::sound_68k_6502_w));
+ map(0x2802, 0x2803).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w));
+ map(0x2804, 0x2805).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w));
+ map(0x2806, 0x2807).w(this, FUNC(cyberbal_state::sound_bank_select_w));
+ map(0x2c00, 0x2c01).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r));
+ map(0x2c02, 0x2c03).r(this, FUNC(cyberbal_state::special_port3_r));
+ map(0x2c04, 0x2c05).r(this, FUNC(cyberbal_state::sound_68k_6502_r));
+ map(0x2c06, 0x2c07).r(this, FUNC(cyberbal_state::sound_6502_stat_r));
+ map(0x3000, 0x3fff).bankr("soundbank");
+ map(0x4000, 0xffff).rom();
+}
@@ -204,14 +207,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cyberbal_state::sound_68k_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0xff8000, 0xff87ff) AM_READ(sound_68k_r)
- AM_RANGE(0xff8800, 0xff8fff) AM_WRITE(sound_68k_w)
- AM_RANGE(0xff9000, 0xff97ff) AM_WRITE(io_68k_irq_ack_w)
- AM_RANGE(0xff9800, 0xff9fff) AM_WRITE(sound_68k_dac_w)
- AM_RANGE(0xfff000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void cyberbal_state::sound_68k_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0xff8000, 0xff87ff).r(this, FUNC(cyberbal_state::sound_68k_r));
+ map(0xff8800, 0xff8fff).w(this, FUNC(cyberbal_state::sound_68k_w));
+ map(0xff9000, 0xff97ff).w(this, FUNC(cyberbal_state::io_68k_irq_ack_w));
+ map(0xff9800, 0xff9fff).w(this, FUNC(cyberbal_state::sound_68k_dac_w));
+ map(0xfff000, 0xffffff).ram();
+}
@@ -221,25 +225,26 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(cyberbal2p_state::cyberbal2p_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfc0003) AM_READ_PORT("IN0")
- AM_RANGE(0xfc2000, 0xfc2003) AM_READ_PORT("IN1")
- AM_RANGE(0xfc4000, 0xfc4003) AM_READ_PORT("IN2")
- AM_RANGE(0xfc6000, 0xfc6003) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0xff00)
- AM_RANGE(0xfc8000, 0xfc8fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xfca000, 0xfcafff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfd0000, 0xfd0003) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0xfd2000, 0xfd2003) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w)
- AM_RANGE(0xfd4000, 0xfd4003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xfd6000, 0xfd6003) AM_WRITE(video_int_ack_w)
- AM_RANGE(0xfd8000, 0xfd8003) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0xff00)
- AM_RANGE(0xfe0000, 0xfe0003) AM_READ(sound_state_r)
- AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xff3800, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void cyberbal2p_state::cyberbal2p_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0xfc0000, 0xfc0003).portr("IN0");
+ map(0xfc2000, 0xfc2003).portr("IN1");
+ map(0xfc4000, 0xfc4003).portr("IN2");
+ map(0xfc6000, 0xfc6003).r("jsa", FUNC(atari_jsa_ii_device::main_response_r)).umask16(0xff00);
+ map(0xfc8000, 0xfc8fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xfca000, 0xfcafff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xfd0000, 0xfd0003).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0xfd2000, 0xfd2003).w("jsa", FUNC(atari_jsa_ii_device::sound_reset_w));
+ map(0xfd4000, 0xfd4003).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xfd6000, 0xfd6003).w(this, FUNC(cyberbal2p_state::video_int_ack_w));
+ map(0xfd8000, 0xfd8003).w("jsa", FUNC(atari_jsa_ii_device::main_command_w)).umask16(0xff00);
+ map(0xfe0000, 0xfe0003).r(this, FUNC(cyberbal2p_state::sound_state_r));
+ map(0xff0000, 0xff1fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield");
+ map(0xff2000, 0xff2fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha");
+ map(0xff3000, 0xff37ff).ram().share("mob");
+ map(0xff3800, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/cybertnk.cpp b/src/mame/drivers/cybertnk.cpp
index 2f13d2e9a63..3bdaafb5019 100644
--- a/src/mame/drivers/cybertnk.cpp
+++ b/src/mame/drivers/cybertnk.cpp
@@ -607,50 +607,53 @@ WRITE8_MEMBER( cybertnk_state::cybertnk_cnt_w )
}
-ADDRESS_MAP_START(cybertnk_state::master_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM /*Work RAM*/
- AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spr_ram") // non-tile based sprite ram
- AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(tilemap0_vram_w) AM_SHARE("tilemap0_vram")
- AM_RANGE(0x0c4000, 0x0c5fff) AM_RAM_WRITE(tilemap1_vram_w) AM_SHARE("tilemap1_vram")
- AM_RANGE(0x0c8000, 0x0c9fff) AM_RAM_WRITE(tilemap2_vram_w) AM_SHARE("tilemap2_vram")
- AM_RANGE(0x0e0000, 0x0e0fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x100000, 0x107fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* 2x palettes, one for each screen */
-
- AM_RANGE(0x110000, 0x110001) AM_WRITE8(cybertnk_sound_cmd_w,0xffff)
- AM_RANGE(0x110002, 0x110003) AM_READ_PORT("DSW1") AM_WRITENOP// watchdog?
- AM_RANGE(0x110004, 0x110005) AM_READ8(cybertnk_io_rdy_r,0xff00)
- AM_RANGE(0x110006, 0x110007) AM_READ_PORT("IN0")
- AM_RANGE(0x110006, 0x110007) AM_WRITE8(cybertnk_mux_w,0xffff)
- AM_RANGE(0x110008, 0x110009) AM_READ_PORT("IN1") AM_WRITE8(cybertnk_cnt_w, 0xffff)
- AM_RANGE(0x11000a, 0x11000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x11000c, 0x11000d) AM_WRITE8(cybertnk_irq_ack_w,0xffff)
-
- AM_RANGE(0x110040, 0x110045) AM_RAM AM_SHARE("tilemap0_scroll")
- AM_RANGE(0x110048, 0x11004d) AM_RAM AM_SHARE("tilemap1_scroll")
- AM_RANGE(0x110080, 0x110085) AM_RAM AM_SHARE("tilemap2_scroll")
-
- AM_RANGE(0x1100d4, 0x1100d5) AM_READ8(cybertnk_mux_r, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cybertnk_state::slave_mem)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x020000, 0x020001) AM_READNOP // POST debug?
- AM_RANGE(0x07fff8, 0x07fffd) AM_READNOP // POST debug?
- AM_RANGE(0x080000, 0x083fff) AM_RAM /*Work RAM*/
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM AM_SHARE("roadram")
- AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x140000, 0x140003) AM_NOP /*Watchdog? Written during loops and interrupts*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cybertnk_state::sound_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", y8950_device, read, write)
- AM_RANGE(0xa001, 0xa001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xa005, 0xa006) AM_NOP
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", y8950_device, read, write)
-ADDRESS_MAP_END
+void cybertnk_state::master_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x087fff).ram(); /*Work RAM*/
+ map(0x0a0000, 0x0a0fff).ram().share("spr_ram"); // non-tile based sprite ram
+ map(0x0c0000, 0x0c1fff).ram().w(this, FUNC(cybertnk_state::tilemap0_vram_w)).share("tilemap0_vram");
+ map(0x0c4000, 0x0c5fff).ram().w(this, FUNC(cybertnk_state::tilemap1_vram_w)).share("tilemap1_vram");
+ map(0x0c8000, 0x0c9fff).ram().w(this, FUNC(cybertnk_state::tilemap2_vram_w)).share("tilemap2_vram");
+ map(0x0e0000, 0x0e0fff).ram().share("sharedram");
+ map(0x100000, 0x107fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* 2x palettes, one for each screen */
+
+ map(0x110000, 0x110001).w(this, FUNC(cybertnk_state::cybertnk_sound_cmd_w));
+ map(0x110002, 0x110003).portr("DSW1").nopw();// watchdog?
+ map(0x110004, 0x110004).r(this, FUNC(cybertnk_state::cybertnk_io_rdy_r));
+ map(0x110006, 0x110007).portr("IN0");
+ map(0x110006, 0x110007).w(this, FUNC(cybertnk_state::cybertnk_mux_w));
+ map(0x110008, 0x110009).portr("IN1").w(this, FUNC(cybertnk_state::cybertnk_cnt_w));
+ map(0x11000a, 0x11000b).portr("DSW2");
+ map(0x11000c, 0x11000d).w(this, FUNC(cybertnk_state::cybertnk_irq_ack_w));
+
+ map(0x110040, 0x110045).ram().share("tilemap0_scroll");
+ map(0x110048, 0x11004d).ram().share("tilemap1_scroll");
+ map(0x110080, 0x110085).ram().share("tilemap2_scroll");
+
+ map(0x1100d5, 0x1100d5).r(this, FUNC(cybertnk_state::cybertnk_mux_r));
+}
+
+void cybertnk_state::slave_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x020000, 0x020001).nopr(); // POST debug?
+ map(0x07fff8, 0x07fffd).nopr(); // POST debug?
+ map(0x080000, 0x083fff).ram(); /*Work RAM*/
+ map(0x0c0000, 0x0c0fff).ram().share("roadram");
+ map(0x100000, 0x100fff).ram().share("sharedram");
+ map(0x140000, 0x140003).noprw(); /*Watchdog? Written during loops and interrupts*/
+}
+
+void cybertnk_state::sound_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa001).rw("ym1", FUNC(y8950_device::read), FUNC(y8950_device::write));
+ map(0xa001, 0xa001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xa005, 0xa006).noprw();
+ map(0xc000, 0xc001).rw("ym2", FUNC(y8950_device::read), FUNC(y8950_device::write));
+}
// Player 1 controls the Driving and the Cannons
// Player 2 controls the Machine Guns
diff --git a/src/mame/drivers/cybiko.cpp b/src/mame/drivers/cybiko.cpp
index eee6af78903..412a64c8518 100644
--- a/src/mame/drivers/cybiko.cpp
+++ b/src/mame/drivers/cybiko.cpp
@@ -61,11 +61,12 @@ ToDo:
///////////////////////////
// 512 kbyte ram + no memory mapped flash
-ADDRESS_MAP_START(cybiko_state::cybikov1_mem)
- AM_RANGE( 0x000000, 0x007fff ) AM_ROM
- AM_RANGE( 0x600000, 0x600001 ) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w )
+void cybiko_state::cybikov1_mem(address_map &map)
+{
+ map(0x000000, 0x007fff).rom();
+ map(0x600000, 0x600001).rw(this, FUNC(cybiko_state::cybiko_lcd_r), FUNC(cybiko_state::cybiko_lcd_w));
// AM_RANGE( 0xe00000, 0xe07fff ) AM_READ( cybikov1_key_r )
-ADDRESS_MAP_END
+}
/*
@@ -101,21 +102,23 @@ ptr: 243150=24297a
// +-------------------------------------+
// 256 kbyte ram + 256 kbyte memory mapped flash
-ADDRESS_MAP_START(cybiko_state::cybikov2_mem)
- AM_RANGE( 0x000000, 0x007fff ) AM_ROM
- AM_RANGE( 0x100000, 0x13ffff ) AM_DEVREAD8("flash2", sst_39vf020_device, read, 0xffff) AM_MIRROR( 0x0c0000 )
- AM_RANGE( 0x600000, 0x600001 ) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w ) AM_MIRROR( 0x1ffffe )
- AM_RANGE( 0xe00000, 0xffdbff ) AM_READ( cybikov2_key_r )
-ADDRESS_MAP_END
+void cybiko_state::cybikov2_mem(address_map &map)
+{
+ map(0x000000, 0x007fff).rom();
+ map(0x100000, 0x13ffff).r("flash2", FUNC(sst_39vf020_device::read)).mirror(0x0c0000);
+ map(0x600000, 0x600001).rw(this, FUNC(cybiko_state::cybiko_lcd_r), FUNC(cybiko_state::cybiko_lcd_w)).mirror(0x1ffffe);
+ map(0xe00000, 0xffdbff).r(this, FUNC(cybiko_state::cybikov2_key_r));
+}
// 2048 kbyte ram + 512 kbyte memory mapped flash
-ADDRESS_MAP_START(cybiko_state::cybikoxt_mem)
- AM_RANGE( 0x000000, 0x007fff ) AM_ROM AM_MIRROR( 0x038000 )
- AM_RANGE( 0x100000, 0x100001 ) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w )
- AM_RANGE( 0x200000, 0x200003 ) AM_WRITE( cybiko_usb_w )
- AM_RANGE( 0x600000, 0x67ffff ) AM_DEVREAD("flashxt", sst_39vf400a_device, read) AM_MIRROR( 0x180000 )
- AM_RANGE( 0xe00000, 0xefffff ) AM_READ( cybikoxt_key_r )
-ADDRESS_MAP_END
+void cybiko_state::cybikoxt_mem(address_map &map)
+{
+ map(0x000000, 0x007fff).rom().mirror(0x038000);
+ map(0x100000, 0x100001).rw(this, FUNC(cybiko_state::cybiko_lcd_r), FUNC(cybiko_state::cybiko_lcd_w));
+ map(0x200000, 0x200003).w(this, FUNC(cybiko_state::cybiko_usb_w));
+ map(0x600000, 0x67ffff).r("flashxt", FUNC(sst_39vf400a_device::read)).mirror(0x180000);
+ map(0xe00000, 0xefffff).r(this, FUNC(cybiko_state::cybikoxt_key_r));
+}
WRITE16_MEMBER(cybiko_state::serflash_w)
{
@@ -182,25 +185,28 @@ READ16_MEMBER(cybiko_state::port0_r)
// ADDRESS MAP - IO //
//////////////////////
-ADDRESS_MAP_START(cybiko_state::cybikov1_io)
- AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(serflash_w)
- AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(clock_r, clock_w)
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(adc1_r)
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(adc2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cybiko_state::cybikov2_io)
- AM_RANGE(h8_device::PORT_1, h8_device::PORT_1) AM_READ(port0_r)
- AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(serflash_w)
- AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(clock_r, clock_w)
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(adc1_r)
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(adc2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cybiko_state::cybikoxt_io)
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READ(xtpower_r)
- AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(xtclock_r, xtclock_w)
-ADDRESS_MAP_END
+void cybiko_state::cybikov1_io(address_map &map)
+{
+ map(h8_device::PORT_3, h8_device::PORT_3).w(this, FUNC(cybiko_state::serflash_w));
+ map(h8_device::PORT_F, h8_device::PORT_F).rw(this, FUNC(cybiko_state::clock_r), FUNC(cybiko_state::clock_w));
+ map(h8_device::ADC_1, h8_device::ADC_1).r(this, FUNC(cybiko_state::adc1_r));
+ map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(cybiko_state::adc2_r));
+}
+
+void cybiko_state::cybikov2_io(address_map &map)
+{
+ map(h8_device::PORT_1, h8_device::PORT_1).r(this, FUNC(cybiko_state::port0_r));
+ map(h8_device::PORT_3, h8_device::PORT_3).w(this, FUNC(cybiko_state::serflash_w));
+ map(h8_device::PORT_F, h8_device::PORT_F).rw(this, FUNC(cybiko_state::clock_r), FUNC(cybiko_state::clock_w));
+ map(h8_device::ADC_1, h8_device::ADC_1).r(this, FUNC(cybiko_state::adc1_r));
+ map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(cybiko_state::adc2_r));
+}
+
+void cybiko_state::cybikoxt_io(address_map &map)
+{
+ map(h8_device::PORT_A, h8_device::PORT_A).r(this, FUNC(cybiko_state::xtpower_r));
+ map(h8_device::PORT_F, h8_device::PORT_F).rw(this, FUNC(cybiko_state::xtclock_r), FUNC(cybiko_state::xtclock_w));
+}
/////////////////
// INPUT PORTS //
diff --git a/src/mame/drivers/cybstorm.cpp b/src/mame/drivers/cybstorm.cpp
index d11b2907bae..256fc0d4b71 100644
--- a/src/mame/drivers/cybstorm.cpp
+++ b/src/mame/drivers/cybstorm.cpp
@@ -88,32 +88,34 @@ WRITE32_MEMBER(cybstorm_state::latch_w)
*
*************************************/
-ADDRESS_MAP_START(cybstorm_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE16("vad", atari_vad_device, control_read, control_write, 0xffffffff)
- AM_RANGE(0x3f0000, 0x3fffff) AM_DEVICE16("vadbank", address_map_bank_device, amap16, 0xffffffff)
- AM_RANGE(0x9f0000, 0x9f0003) AM_READ_PORT("9F0000")
- AM_RANGE(0x9f0010, 0x9f0013) AM_READ(special_port1_r)
- AM_RANGE(0x9f0030, 0x9f0033) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff0000)
- AM_RANGE(0x9f0040, 0x9f0043) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff0000)
- AM_RANGE(0x9f0050, 0x9f0053) AM_WRITE(latch_w)
- AM_RANGE(0xfb0000, 0xfb0003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w)
- AM_RANGE(0xfc0000, 0xfc0003) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write32)
- AM_RANGE(0xfd0000, 0xfd0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00)
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cybstorm_state::vadbank_map)
- AM_RANGE(0x000000, 0x001fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2")
- AM_RANGE(0x002000, 0x003fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield")
- AM_RANGE(0x004000, 0x005fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext")
- AM_RANGE(0x006000, 0x007fff) AM_RAM AM_SHARE("vad:mob")
- AM_RANGE(0x008000, 0x008eff) AM_DEVWRITE("vad", atari_vad_device, alpha_w) AM_SHARE("vad:alpha")
- AM_RANGE(0x008f00, 0x008f7f) AM_RAM AM_SHARE("vad:eof")
- AM_RANGE(0x008f80, 0x008fff) AM_RAM AM_SHARE("vad:mob:slip")
- AM_RANGE(0x009000, 0x00ffff) AM_RAM
-ADDRESS_MAP_END
+void cybstorm_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x20ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write));
+ map(0x3f0000, 0x3fffff).m(m_vadbank, FUNC(address_map_bank_device::amap16));
+ map(0x9f0000, 0x9f0003).portr("9F0000");
+ map(0x9f0010, 0x9f0013).r(this, FUNC(cybstorm_state::special_port1_r));
+ map(0x9f0031, 0x9f0031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r));
+ map(0x9f0041, 0x9f0041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w));
+ map(0x9f0050, 0x9f0053).w(this, FUNC(cybstorm_state::latch_w));
+ map(0xfb0000, 0xfb0003).w("watchdog", FUNC(watchdog_timer_device::reset32_w));
+ map(0xfc0000, 0xfc0003).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write32));
+ map(0xfd0000, 0xfd0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00);
+ map(0xfe0000, 0xffffff).ram();
+}
+
+void cybstorm_state::vadbank_map(address_map &map)
+{
+ map(0x000000, 0x001fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2");
+ map(0x002000, 0x003fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield");
+ map(0x004000, 0x005fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext");
+ map(0x006000, 0x007fff).ram().share("vad:mob");
+ map(0x008000, 0x008eff).w(m_vad, FUNC(atari_vad_device::alpha_w)).share("vad:alpha");
+ map(0x008f00, 0x008f7f).ram().share("vad:eof");
+ map(0x008f80, 0x008fff).ram().share("vad:mob:slip");
+ map(0x009000, 0x00ffff).ram();
+}
diff --git a/src/mame/drivers/cyclemb.cpp b/src/mame/drivers/cyclemb.cpp
index 6cbd4bb52e7..3ae36db92b1 100644
--- a/src/mame/drivers/cyclemb.cpp
+++ b/src/mame/drivers/cyclemb.cpp
@@ -572,41 +572,45 @@ WRITE8_MEMBER( cyclemb_state::skydest_i8741_0_w )
}
-ADDRESS_MAP_START(cyclemb_state::cyclemb_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("bank1")
- AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("cram")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("obj1_ram") //ORAM1 (only a000-a3ff tested)
- AM_RANGE(0xa800, 0xafff) AM_RAM AM_SHARE("obj2_ram") //ORAM2 (only a800-abff tested)
- AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("obj3_ram") //ORAM3 (only b000-b3ff tested)
- AM_RANGE(0xb800, 0xbfff) AM_RAM //WRAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cyclemb_state::cyclemb_io)
+void cyclemb_state::cyclemb_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).bankr("bank1");
+ map(0x9000, 0x97ff).ram().share("vram");
+ map(0x9800, 0x9fff).ram().share("cram");
+ map(0xa000, 0xa7ff).ram().share("obj1_ram"); //ORAM1 (only a000-a3ff tested)
+ map(0xa800, 0xafff).ram().share("obj2_ram"); //ORAM2 (only a800-abff tested)
+ map(0xb000, 0xb7ff).ram().share("obj3_ram"); //ORAM3 (only b000-b3ff tested)
+ map(0xb800, 0xbfff).ram(); //WRAM
+}
+
+void cyclemb_state::cyclemb_io(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(cyclemb_bankswitch_w)
+ map(0xc000, 0xc000).w(this, FUNC(cyclemb_state::cyclemb_bankswitch_w));
//AM_RANGE(0xc020, 0xc020) AM_WRITENOP // ?
- AM_RANGE(0xc09e, 0xc09f) AM_READWRITE(skydest_i8741_0_r, skydest_i8741_0_w)
- AM_RANGE(0xc0bf, 0xc0bf) AM_WRITE(cyclemb_flip_w) //flip screen
-ADDRESS_MAP_END
+ map(0xc09e, 0xc09f).rw(this, FUNC(cyclemb_state::skydest_i8741_0_r), FUNC(cyclemb_state::skydest_i8741_0_w));
+ map(0xc0bf, 0xc0bf).w(this, FUNC(cyclemb_state::cyclemb_flip_w)); //flip screen
+}
-ADDRESS_MAP_START(cyclemb_state::skydest_io)
+void cyclemb_state::skydest_io(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(cyclemb_bankswitch_w)
+ map(0xc000, 0xc000).w(this, FUNC(cyclemb_state::cyclemb_bankswitch_w));
//AM_RANGE(0xc020, 0xc020) AM_WRITENOP // ?
- AM_RANGE(0xc080, 0xc081) AM_READWRITE(skydest_i8741_0_r, skydest_i8741_0_w)
+ map(0xc080, 0xc081).rw(this, FUNC(cyclemb_state::skydest_i8741_0_r), FUNC(cyclemb_state::skydest_i8741_0_w));
//AM_RANGE(0xc0a0, 0xc0a0) AM_WRITENOP // ?
- AM_RANGE(0xc0bf, 0xc0bf) AM_WRITE(cyclemb_flip_w) //flip screen
-ADDRESS_MAP_END
+ map(0xc0bf, 0xc0bf).w(this, FUNC(cyclemb_state::cyclemb_flip_w)); //flip screen
+}
-ADDRESS_MAP_START(cyclemb_state::cyclemb_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM
+void cyclemb_state::cyclemb_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x63ff).ram();
-ADDRESS_MAP_END
+}
READ8_MEMBER(cyclemb_state::skydest_i8741_1_r)
{
@@ -633,11 +637,12 @@ WRITE8_MEMBER(cyclemb_state::skydest_i8741_1_w)
}
-ADDRESS_MAP_START(cyclemb_state::cyclemb_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x40, 0x41) AM_READWRITE(skydest_i8741_1_r, skydest_i8741_1_w)
-ADDRESS_MAP_END
+void cyclemb_state::cyclemb_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x40, 0x41).rw(this, FUNC(cyclemb_state::skydest_i8741_1_r), FUNC(cyclemb_state::skydest_i8741_1_w));
+}
void cyclemb_state::machine_start()
diff --git a/src/mame/drivers/czk80.cpp b/src/mame/drivers/czk80.cpp
index 615d9ccea81..6d4572cc9d5 100644
--- a/src/mame/drivers/czk80.cpp
+++ b/src/mame/drivers/czk80.cpp
@@ -105,24 +105,26 @@ READ8_MEMBER( czk80_state::port81_r )
return (m_term_data) ? 3 : 1;
}
-ADDRESS_MAP_START(czk80_state::czk80_mem)
- AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x2000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(czk80_state::czk80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_WRITE(port40_w)
- AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("pio", z80pio_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x80, 0x80) AM_READ(port80_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
- AM_RANGE(0x81, 0x81) AM_READ(port81_r)
+void czk80_state::czk80_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bankr0").bankw("bankw0");
+ map(0x2000, 0xdfff).ram();
+ map(0xe000, 0xffff).bankr("bankr1").bankw("bankw1");
+}
+
+void czk80_state::czk80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).w(this, FUNC(czk80_state::port40_w));
+ map(0x4c, 0x4f).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw("dart", FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w));
+ map(0x54, 0x57).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x80, 0x80).r(this, FUNC(czk80_state::port80_r)).w(m_terminal, FUNC(generic_terminal_device::write));
+ map(0x81, 0x81).r(this, FUNC(czk80_state::port81_r));
/* Select one of the below */
//AM_RANGE(0xc0, 0xc0) AM_READ(portc0_r)
- AM_RANGE(0xc0, 0xc1) AM_DEVICE("fdc", upd765a_device, map)
-ADDRESS_MAP_END
+ map(0xc0, 0xc1).m(m_fdc, FUNC(upd765a_device::map));
+}
/* Input ports */
static INPUT_PORTS_START( czk80 )
diff --git a/src/mame/drivers/d400.cpp b/src/mame/drivers/d400.cpp
index 888ce75a96b..48b75976a26 100644
--- a/src/mame/drivers/d400.cpp
+++ b/src/mame/drivers/d400.cpp
@@ -34,17 +34,18 @@ u32 d400_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const
return 0;
}
-ADDRESS_MAP_START(d400_state::mem_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
+void d400_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
//AM_RANGE(0x4000, 0x403f) AM_DEVREADWRITE("vpac", crt9007_device, read, write)
- AM_RANGE(0x4800, 0x48ff) AM_RAM
- AM_RANGE(0x5000, 0x50ff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0x7880, 0x78bf) AM_DEVREADWRITE("novram", x2210_device, read, write)
- AM_RANGE(0x7c00, 0x7c00) AM_WRITENOP
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0x4800, 0x48ff).ram();
+ map(0x5000, 0x50ff).ram();
+ map(0x6000, 0x6fff).ram();
+ map(0x7800, 0x780f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0x7880, 0x78bf).rw("novram", FUNC(x2210_device::read), FUNC(x2210_device::write));
+ map(0x7c00, 0x7c00).nopw();
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( d461 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp
index 33558abb0b4..8a8053e09aa 100644
--- a/src/mame/drivers/d6800.cpp
+++ b/src/mame/drivers/d6800.cpp
@@ -110,13 +110,14 @@ private:
/* Memory Maps */
-ADDRESS_MAP_START(d6800_state::d6800_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0200, 0x0fff) AM_RAM
- AM_RANGE(0x8010, 0x8013) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_ROM
-ADDRESS_MAP_END
+void d6800_state::d6800_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("videoram");
+ map(0x0200, 0x0fff).ram();
+ map(0x8010, 0x8013).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc000, 0xc7ff).mirror(0x3800).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp
index c4d0496c244..212be5a3796 100644
--- a/src/mame/drivers/d6809.cpp
+++ b/src/mame/drivers/d6809.cpp
@@ -123,15 +123,16 @@ WRITE8_MEMBER( d6809_state::term_w )
m_terminal->write(space, 0, data);
}
-ADDRESS_MAP_START(d6809_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
+void d6809_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
// 00-FF is for various devices.
- AM_RANGE(0x0000, 0x0003) AM_DEVREADWRITE("acia1", mos6551_device, read, write)
- AM_RANGE(0x0004, 0x0007) AM_DEVREADWRITE("acia2", mos6551_device, read, write)
- AM_RANGE(0x00ff, 0x00ff) AM_READWRITE(term_r,term_w)
- AM_RANGE(0x1000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+ map(0x0000, 0x0003).rw("acia1", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x0004, 0x0007).rw("acia2", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x00ff, 0x00ff).rw(this, FUNC(d6809_state::term_r), FUNC(d6809_state::term_w));
+ map(0x1000, 0xdfff).ram();
+ map(0xe000, 0xffff).rom().region("roms", 0);
+}
/* Input ports */
diff --git a/src/mame/drivers/d9final.cpp b/src/mame/drivers/d9final.cpp
index efb3c41e4c7..797cbe9f2b6 100644
--- a/src/mame/drivers/d9final.cpp
+++ b/src/mame/drivers/d9final.cpp
@@ -126,31 +126,33 @@ READ8_MEMBER(d9final_state::prot_latch_r)
}
-ADDRESS_MAP_START(d9final_state::d9final_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc800, 0xcbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sc0_lovram) AM_SHARE("lo_vram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sc0_hivram) AM_SHARE("hi_vram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sc0_cram) AM_SHARE("cram")
- AM_RANGE(0xf000, 0xf007) AM_READ(prot_latch_r) //AM_DEVREADWRITE("essnd", es8712_device, read, write)
- AM_RANGE(0xf800, 0xf80f) AM_DEVREADWRITE("rtc", rtc62421_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(d9final_state::d9final_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void d9final_state::d9final_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().share("nvram");
+ map(0xc800, 0xcbff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xcc00, 0xcfff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(d9final_state::sc0_lovram)).share("lo_vram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(d9final_state::sc0_hivram)).share("hi_vram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(d9final_state::sc0_cram)).share("cram");
+ map(0xf000, 0xf007).r(this, FUNC(d9final_state::prot_latch_r)); //AM_DEVREADWRITE("essnd", es8712_device, read, write)
+ map(0xf800, 0xf80f).rw("rtc", FUNC(rtc62421_device::read), FUNC(rtc62421_device::write));
+}
+
+void d9final_state::d9final_io(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_WRITENOP //bit 0: irq enable? screen enable?
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWB")
- AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWC")
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x60, 0x60) AM_READ_PORT("DSWD")
- AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0")
- AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN1") AM_WRITE(bank_w)
- AM_RANGE(0xe0, 0xe0) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
+ map(0x00, 0x00).portr("DSWA");
+ map(0x20, 0x20).portr("DSWB");
+ map(0x40, 0x40).portr("DSWC");
+ map(0x40, 0x41).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x60, 0x60).portr("DSWD");
+ map(0x80, 0x80).portr("IN0");
+ map(0xa0, 0xa0).portr("IN1").w(this, FUNC(d9final_state::bank_w));
+ map(0xe0, 0xe0).portr("IN2");
+}
static INPUT_PORTS_START( d9final )
PORT_START("IN0")
diff --git a/src/mame/drivers/dacholer.cpp b/src/mame/drivers/dacholer.cpp
index d603936f186..4d04fe96722 100644
--- a/src/mame/drivers/dacholer.cpp
+++ b/src/mame/drivers/dacholer.cpp
@@ -233,47 +233,52 @@ WRITE8_MEMBER(dacholer_state::main_irq_ack_w)
}
-ADDRESS_MAP_START(dacholer_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8800, 0x97ff) AM_RAM
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x400) AM_RAM_WRITE(background_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(foreground_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dacholer_state::itaten_main_map)
- AM_IMPORT_FROM( main_map )
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xb7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dacholer_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWA")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB")
- AM_RANGE(0x05, 0x05) AM_READNOP // watchdog in itaten
- AM_RANGE(0x20, 0x20) AM_WRITE(coins_w)
- AM_RANGE(0x21, 0x21) AM_WRITE(bg_bank_w)
- AM_RANGE(0x22, 0x22) AM_WRITE(bg_scroll_x_w)
- AM_RANGE(0x23, 0x23) AM_WRITE(bg_scroll_y_w)
- AM_RANGE(0x24, 0x24) AM_WRITE(main_irq_ack_w)
- AM_RANGE(0x27, 0x27) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dacholer_state::snd_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0xd000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dacholer_state::itaten_snd_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
+void dacholer_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8800, 0x97ff).ram();
+ map(0xc000, 0xc3ff).mirror(0x400).ram().w(this, FUNC(dacholer_state::background_w)).share("bgvideoram");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(dacholer_state::foreground_w)).share("fgvideoram");
+ map(0xe000, 0xe0ff).ram().share("spriteram");
+}
+
+void dacholer_state::itaten_main_map(address_map &map)
+{
+ main_map(map);
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xb7ff).ram();
+}
+
+void dacholer_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).portr("P2");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x03, 0x03).portr("DSWA");
+ map(0x04, 0x04).portr("DSWB");
+ map(0x05, 0x05).nopr(); // watchdog in itaten
+ map(0x20, 0x20).w(this, FUNC(dacholer_state::coins_w));
+ map(0x21, 0x21).w(this, FUNC(dacholer_state::bg_bank_w));
+ map(0x22, 0x22).w(this, FUNC(dacholer_state::bg_scroll_x_w));
+ map(0x23, 0x23).w(this, FUNC(dacholer_state::bg_scroll_y_w));
+ map(0x24, 0x24).w(this, FUNC(dacholer_state::main_irq_ack_w));
+ map(0x27, 0x27).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+
+void dacholer_state::snd_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0xd000, 0xe7ff).ram();
+}
+
+
+void dacholer_state::itaten_snd_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0xe000, 0xe7ff).ram();
+}
WRITE8_MEMBER(dacholer_state::adpcm_w)
@@ -302,25 +307,27 @@ WRITE8_MEMBER(dacholer_state::music_irq_w)
m_music_interrupt_enable = data;
}
-ADDRESS_MAP_START(dacholer_state::snd_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(music_irq_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(snd_irq_w)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(snd_ack_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(adpcm_w)
- AM_RANGE(0x86, 0x87) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x8a, 0x8b) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay3", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dacholer_state::itaten_snd_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x86, 0x87) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x8a, 0x8b) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay3", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void dacholer_state::snd_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x04, 0x04).w(this, FUNC(dacholer_state::music_irq_w));
+ map(0x08, 0x08).w(this, FUNC(dacholer_state::snd_irq_w));
+ map(0x0c, 0x0c).w(this, FUNC(dacholer_state::snd_ack_w));
+ map(0x80, 0x80).w(this, FUNC(dacholer_state::adpcm_w));
+ map(0x86, 0x87).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x8a, 0x8b).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x8e, 0x8f).w("ay3", FUNC(ay8910_device::data_address_w));
+}
+
+void dacholer_state::itaten_snd_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x86, 0x87).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x8a, 0x8b).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x8e, 0x8f).w("ay3", FUNC(ay8910_device::data_address_w));
+}
static INPUT_PORTS_START( dacholer )
diff --git a/src/mame/drivers/dai.cpp b/src/mame/drivers/dai.cpp
index d2bfcb9f8bb..9501de50f9e 100644
--- a/src/mame/drivers/dai.cpp
+++ b/src/mame/drivers/dai.cpp
@@ -67,22 +67,24 @@ Timings:
#include "speaker.h"
/* I/O ports */
-ADDRESS_MAP_START(dai_state::dai_io)
-ADDRESS_MAP_END
+void dai_state::dai_io(address_map &map)
+{
+}
/* memory w/r functions */
-ADDRESS_MAP_START(dai_state::dai_mem)
- AM_RANGE( 0x0000, 0xbfff) AM_RAMBANK("bank1")
- AM_RANGE( 0xc000, 0xdfff) AM_ROM
- AM_RANGE( 0xe000, 0xefff) AM_ROMBANK("bank2")
- AM_RANGE( 0xf000, 0xf7ff) AM_WRITE(dai_stack_interrupt_circuit_w )
- AM_RANGE( 0xf800, 0xf8ff) AM_RAM
- AM_RANGE( 0xfb00, 0xfbff) AM_READWRITE(dai_amd9511_r, dai_amd9511_w )
- AM_RANGE( 0xfc00, 0xfcff) AM_READWRITE(dai_pit_r, dai_pit_w) // AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE( 0xfd00, 0xfdff) AM_READWRITE(dai_io_discrete_devices_r, dai_io_discrete_devices_w )
- AM_RANGE( 0xfe00, 0xfeff) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0xff00, 0xff0f) AM_MIRROR(0xf0) AM_DEVICE("tms5501", tms5501_device, io_map)
-ADDRESS_MAP_END
+void dai_state::dai_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).bankrw("bank1");
+ map(0xc000, 0xdfff).rom();
+ map(0xe000, 0xefff).bankr("bank2");
+ map(0xf000, 0xf7ff).w(this, FUNC(dai_state::dai_stack_interrupt_circuit_w));
+ map(0xf800, 0xf8ff).ram();
+ map(0xfb00, 0xfbff).rw(this, FUNC(dai_state::dai_amd9511_r), FUNC(dai_state::dai_amd9511_w));
+ map(0xfc00, 0xfcff).rw(this, FUNC(dai_state::dai_pit_r), FUNC(dai_state::dai_pit_w)); // AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+ map(0xfd00, 0xfdff).rw(this, FUNC(dai_state::dai_io_discrete_devices_r), FUNC(dai_state::dai_io_discrete_devices_w));
+ map(0xfe00, 0xfeff).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xff00, 0xff0f).mirror(0xf0).m(m_tms5501, FUNC(tms5501_device::io_map));
+}
/* keyboard input */
diff --git a/src/mame/drivers/dai3wksi.cpp b/src/mame/drivers/dai3wksi.cpp
index 75a55ba3954..9a2b95e307d 100644
--- a/src/mame/drivers/dai3wksi.cpp
+++ b/src/mame/drivers/dai3wksi.cpp
@@ -321,16 +321,17 @@ WRITE8_MEMBER(dai3wksi_state::dai3wksi_audio_3_w)
*
*************************************/
-ADDRESS_MAP_START(dai3wksi_state::main_map)
- AM_RANGE(0x0000, 0x1bff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x2400, 0x24ff) AM_MIRROR(0x100) AM_READ_PORT("IN0")
- AM_RANGE(0x2800, 0x28ff) AM_MIRROR(0x100) AM_READ_PORT("IN1")
- AM_RANGE(0x3000, 0x3000) AM_WRITE(dai3wksi_audio_1_w)
- AM_RANGE(0x3400, 0x3400) AM_WRITE(dai3wksi_audio_2_w)
- AM_RANGE(0x3800, 0x3800) AM_WRITE(dai3wksi_audio_3_w)
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void dai3wksi_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1bff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x2400, 0x24ff).mirror(0x100).portr("IN0");
+ map(0x2800, 0x28ff).mirror(0x100).portr("IN1");
+ map(0x3000, 0x3000).w(this, FUNC(dai3wksi_state::dai3wksi_audio_1_w));
+ map(0x3400, 0x3400).w(this, FUNC(dai3wksi_state::dai3wksi_audio_2_w));
+ map(0x3800, 0x3800).w(this, FUNC(dai3wksi_state::dai3wksi_audio_3_w));
+ map(0x8000, 0xbfff).ram().share("videoram");
+}
/*************************************
diff --git a/src/mame/drivers/dambustr.cpp b/src/mame/drivers/dambustr.cpp
index 3f5dccb4cf3..5500409bc75 100644
--- a/src/mame/drivers/dambustr.cpp
+++ b/src/mame/drivers/dambustr.cpp
@@ -87,42 +87,43 @@ WRITE8_MEMBER(dambustr_state::dambustr_noise_enable_w)
}
-ADDRESS_MAP_START(dambustr_state::dambustr_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-
- AM_RANGE(0x8000, 0x8000) AM_WRITE(dambustr_bg_color_w)
- AM_RANGE(0x8001, 0x8001) AM_WRITE(dambustr_bg_split_line_w)
-
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd860, 0xd87f) AM_RAM AM_SHARE("bulletsram")
-
- AM_RANGE(0xd880, 0xd8ff) AM_RAM
-
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
- AM_RANGE(0xe002, 0xe003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xe004, 0xe007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
-
- AM_RANGE(0xe800, 0xefff) AM_READ_PORT("IN1")
- AM_RANGE(0xe800, 0xe802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xe803, 0xe803) AM_WRITE(dambustr_noise_enable_w)
- AM_RANGE(0xe804, 0xe804) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) // probably louder than normal shot
- AM_RANGE(0xe805, 0xe805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) // normal shot (like Galaxian)
- AM_RANGE(0xe806, 0xe807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
-
- AM_RANGE(0xf000, 0xf7ff) AM_READ_PORT("DSW")
- AM_RANGE(0xf001, 0xf001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xf004, 0xf004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xf006, 0xf006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xf007, 0xf007) AM_WRITE(galaxold_flip_screen_y_w)
-
- AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0xf800, 0xffff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+void dambustr_state::dambustr_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+
+ map(0x8000, 0x8000).w(this, FUNC(dambustr_state::dambustr_bg_color_w));
+ map(0x8001, 0x8001).w(this, FUNC(dambustr_state::dambustr_bg_split_line_w));
+
+ map(0xc000, 0xc7ff).ram();
+
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(dambustr_state::galaxold_videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).r(this, FUNC(dambustr_state::galaxold_videoram_r));
+ map(0xd800, 0xd83f).ram().w(this, FUNC(dambustr_state::galaxold_attributesram_w)).share("attributesram");
+ map(0xd840, 0xd85f).ram().share("spriteram");
+ map(0xd860, 0xd87f).ram().share("bulletsram");
+
+ map(0xd880, 0xd8ff).ram();
+
+ map(0xe000, 0xe000).portr("IN0");
+ map(0xe002, 0xe003).w(this, FUNC(dambustr_state::galaxold_coin_counter_w));
+ map(0xe004, 0xe007).w(m_custom, FUNC(galaxian_sound_device::lfo_freq_w));
+
+ map(0xe800, 0xefff).portr("IN1");
+ map(0xe800, 0xe802).w(m_custom, FUNC(galaxian_sound_device::background_enable_w));
+ map(0xe803, 0xe803).w(this, FUNC(dambustr_state::dambustr_noise_enable_w));
+ map(0xe804, 0xe804).w(m_custom, FUNC(galaxian_sound_device::fire_enable_w)); // probably louder than normal shot
+ map(0xe805, 0xe805).w(m_custom, FUNC(galaxian_sound_device::fire_enable_w)); // normal shot (like Galaxian)
+ map(0xe806, 0xe807).w(m_custom, FUNC(galaxian_sound_device::vol_w));
+
+ map(0xf000, 0xf7ff).portr("DSW");
+ map(0xf001, 0xf001).w(this, FUNC(dambustr_state::galaxold_nmi_enable_w));
+ map(0xf004, 0xf004).w(this, FUNC(dambustr_state::galaxold_stars_enable_w));
+ map(0xf006, 0xf006).w(this, FUNC(dambustr_state::galaxold_flip_screen_x_w));
+ map(0xf007, 0xf007).w(this, FUNC(dambustr_state::galaxold_flip_screen_y_w));
+
+ map(0xf800, 0xf800).w(m_custom, FUNC(galaxian_sound_device::pitch_w));
+ map(0xf800, 0xffff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
/* verified from Z80 code */
diff --git a/src/mame/drivers/darius.cpp b/src/mame/drivers/darius.cpp
index 8405fb5cbde..5f3aefc5598 100644
--- a/src/mame/drivers/darius.cpp
+++ b/src/mame/drivers/darius.cpp
@@ -192,40 +192,43 @@ WRITE16_MEMBER(darius_state::coin_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(darius_state::darius_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main RAM */
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x0b0000, 0x0b0001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0xc00000, 0xc00001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0xc00002, 0xc00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("P1")
- AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("P2")
- AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc0000e, 0xc0000f) AM_READ(coin_r)
- AM_RANGE(0xc00010, 0xc00011) AM_READ_PORT("DSW")
- AM_RANGE(0xc00050, 0xc00051) AM_NOP // unknown, written by both cpus - always 0?
- AM_RANGE(0xc00060, 0xc00061) AM_WRITE(coin_w)
- AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xd20000, 0xd20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xd40000, 0xd40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xd50000, 0xd50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd80000, 0xd80fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* palette */
- AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE("fg_ram")
- AM_RANGE(0xe10000, 0xe10fff) AM_RAM /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(darius_state::darius_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM /* local RAM */
- AM_RANGE(0xc00050, 0xc00051) AM_NOP // unknown, written by both cpus - always 0?
- AM_RANGE(0xd80000, 0xd80fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE("fg_ram")
-ADDRESS_MAP_END
+void darius_state::darius_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x080000, 0x08ffff).ram(); /* main RAM */
+ map(0x0a0000, 0x0a0001).w(this, FUNC(darius_state::cpua_ctrl_w));
+ map(0x0b0000, 0x0b0001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0xc00000, 0xc00001).nopr();
+ map(0xc00001, 0xc00001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xc00003, 0xc00003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xc00008, 0xc00009).portr("P1");
+ map(0xc0000a, 0xc0000b).portr("P2");
+ map(0xc0000c, 0xc0000d).portr("SYSTEM");
+ map(0xc0000e, 0xc0000f).r(this, FUNC(darius_state::coin_r));
+ map(0xc00010, 0xc00011).portr("DSW");
+ map(0xc00050, 0xc00051).noprw(); // unknown, written by both cpus - always 0?
+ map(0xc00060, 0xc00061).w(this, FUNC(darius_state::coin_w));
+ map(0xd00000, 0xd0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); /* tilemaps */
+ map(0xd20000, 0xd20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xd40000, 0xd40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xd50000, 0xd50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd80000, 0xd80fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* palette */
+ map(0xe00100, 0xe00fff).ram().share("spriteram");
+ map(0xe01000, 0xe02fff).ram().share("share2");
+ map(0xe08000, 0xe0ffff).ram().w(this, FUNC(darius_state::darius_fg_layer_w)).share("fg_ram");
+ map(0xe10000, 0xe10fff).ram(); /* ??? */
+}
+
+void darius_state::darius_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram(); /* local RAM */
+ map(0xc00050, 0xc00051).noprw(); // unknown, written by both cpus - always 0?
+ map(0xd80000, 0xd80fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xe00100, 0xe00fff).ram().share("spriteram");
+ map(0xe01000, 0xe02fff).ram().share("share2");
+ map(0xe08000, 0xe0ffff).ram().w(this, FUNC(darius_state::darius_fg_layer_w)).share("fg_ram");
+}
/*****************************************************
@@ -418,28 +421,30 @@ WRITE8_MEMBER(darius_state::darius_write_portB1)
Sound memory structures / ADPCM
*****************************************************/
-ADDRESS_MAP_START(darius_state::darius_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xb001, 0xb001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(darius_fm0_pan)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(darius_fm1_pan)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(darius_psg0_pan)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(darius_psg1_pan)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(darius_da_pan)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(adpcm_command_w) /* ADPCM command for second Z80 to read from port 0x00 */
+void darius_state::darius_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb000, 0xb000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xb001, 0xb001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xc000, 0xc000).w(this, FUNC(darius_state::darius_fm0_pan));
+ map(0xc400, 0xc400).w(this, FUNC(darius_state::darius_fm1_pan));
+ map(0xc800, 0xc800).w(this, FUNC(darius_state::darius_psg0_pan));
+ map(0xcc00, 0xcc00).w(this, FUNC(darius_state::darius_psg1_pan));
+ map(0xd000, 0xd000).w(this, FUNC(darius_state::darius_da_pan));
+ map(0xd400, 0xd400).w(this, FUNC(darius_state::adpcm_command_w)); /* ADPCM command for second Z80 to read from port 0x00 */
// AM_RANGE(0xd800, 0xd800) AM_WRITE(display_value) /* ??? */
- AM_RANGE(0xdc00, 0xdc00) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+ map(0xdc00, 0xdc00).w(this, FUNC(darius_state::sound_bankswitch_w));
+}
-ADDRESS_MAP_START(darius_state::darius_sound2_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP
+void darius_state::darius_sound2_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().nopw();
/* yes, no RAM */
-ADDRESS_MAP_END
+}
WRITE_LINE_MEMBER(darius_state::darius_adpcm_int)
@@ -482,13 +487,14 @@ WRITE8_MEMBER(darius_state::adpcm_data_w)
m_msm->reset_w(!(data & 0x20)); /* my best guess, but it could be output enable as well */
}
-ADDRESS_MAP_START(darius_state::darius_sound2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(adpcm_command_read, adpcm_nmi_disable)
- AM_RANGE(0x01, 0x01) AM_WRITE(adpcm_nmi_enable)
- AM_RANGE(0x02, 0x02) AM_READ(readport2) AM_WRITE(adpcm_data_w) /* readport2 ??? */
- AM_RANGE(0x03, 0x03) AM_READ(readport3) /* ??? */
-ADDRESS_MAP_END
+void darius_state::darius_sound2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(darius_state::adpcm_command_read), FUNC(darius_state::adpcm_nmi_disable));
+ map(0x01, 0x01).w(this, FUNC(darius_state::adpcm_nmi_enable));
+ map(0x02, 0x02).r(this, FUNC(darius_state::readport2)).w(this, FUNC(darius_state::adpcm_data_w)); /* readport2 ??? */
+ map(0x03, 0x03).r(this, FUNC(darius_state::readport3)); /* ??? */
+}
/***********************************************************
diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp
index c0b584af4f5..44c571fe480 100644
--- a/src/mame/drivers/darkmist.cpp
+++ b/src/mame/drivers/darkmist.cpp
@@ -44,34 +44,36 @@ WRITE8_MEMBER(darkmist_state::hw_w)
membank("bank1")->set_entry((data&0x80)?1:0);
}
-ADDRESS_MAP_START(darkmist_state::memmap)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1")
- AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2")
- AM_RANGE(0xc803, 0xc803) AM_READ_PORT("START")
- AM_RANGE(0xc804, 0xc804) AM_WRITE(hw_w)
- AM_RANGE(0xc805, 0xc805) AM_WRITEONLY AM_SHARE("spritebank")
- AM_RANGE(0xc806, 0xc806) AM_READ_PORT("DSW1")
- AM_RANGE(0xc807, 0xc807) AM_READ_PORT("DSW2")
- AM_RANGE(0xc808, 0xc808) AM_READ_PORT("UNK")
- AM_RANGE(0xd000, 0xd0ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0xd200, 0xd2ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xd400, 0xd41f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0xd600, 0xd67f) AM_DEVREADWRITE("t5182", t5182_device, sharedram_r, sharedram_w)
- AM_RANGE(0xd680, 0xd680) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
- AM_RANGE(0xd681, 0xd681) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r)
- AM_RANGE(0xd682, 0xd682) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
- AM_RANGE(0xd683, 0xd683) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w)
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(darkmist_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void darkmist_state::memmap(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc801, 0xc801).portr("P1");
+ map(0xc802, 0xc802).portr("P2");
+ map(0xc803, 0xc803).portr("START");
+ map(0xc804, 0xc804).w(this, FUNC(darkmist_state::hw_w));
+ map(0xc805, 0xc805).writeonly().share("spritebank");
+ map(0xc806, 0xc806).portr("DSW1");
+ map(0xc807, 0xc807).portr("DSW2");
+ map(0xc808, 0xc808).portr("UNK");
+ map(0xd000, 0xd0ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0xd200, 0xd2ff).ram().w(m_palette, FUNC(palette_device::write_indirect_ext)).share("palette_ext");
+ map(0xd400, 0xd41f).ram().share("scroll");
+ map(0xd600, 0xd67f).rw(m_t5182, FUNC(t5182_device::sharedram_r), FUNC(t5182_device::sharedram_w));
+ map(0xd680, 0xd680).w(m_t5182, FUNC(t5182_device::sound_irq_w));
+ map(0xd681, 0xd681).r(m_t5182, FUNC(t5182_device::sharedram_semaphore_snd_r));
+ map(0xd682, 0xd682).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_acquire_w));
+ map(0xd683, 0xd683).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_release_w));
+ map(0xd800, 0xdfff).ram().w(this, FUNC(darkmist_state::tx_vram_w)).share("videoram");
+ map(0xe000, 0xefff).ram().share("workram");
+ map(0xf000, 0xffff).ram().share("spriteram");
+}
+
+void darkmist_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).bankr("bank1");
+}
static INPUT_PORTS_START( darkmist )
PORT_START("P1")
diff --git a/src/mame/drivers/darkseal.cpp b/src/mame/drivers/darkseal.cpp
index 1a74f3205c0..a3028273af4 100644
--- a/src/mame/drivers/darkseal.cpp
+++ b/src/mame/drivers/darkseal.cpp
@@ -38,45 +38,47 @@ WRITE16_MEMBER(darkseal_state::irq_ack_w)
/******************************************************************************/
-ADDRESS_MAP_START(darkseal_state::darkseal_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(palette_24bit_rg_w) AM_SHARE("paletteram")
- AM_RANGE(0x141000, 0x141fff) AM_RAM_WRITE(palette_24bit_b_w) AM_SHARE("paletteram2")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x180006, 0x180007) AM_READNOP AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
- AM_RANGE(0x180008, 0x180009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16)
- AM_RANGE(0x18000a, 0x18000b) AM_READNOP AM_WRITE(irq_ack_w)
-
- AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
-
- AM_RANGE(0x220000, 0x220fff) AM_RAM AM_SHARE("pf1_rowscroll")
+void darkseal_state::darkseal_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("ram");
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x140000, 0x140fff).ram().w(this, FUNC(darkseal_state::palette_24bit_rg_w)).share("paletteram");
+ map(0x141000, 0x141fff).ram().w(this, FUNC(darkseal_state::palette_24bit_b_w)).share("paletteram2");
+ map(0x180000, 0x180001).portr("DSW");
+ map(0x180002, 0x180003).portr("P1_P2");
+ map(0x180004, 0x180005).portr("SYSTEM");
+ map(0x180006, 0x180007).nopr().w(m_spriteram, FUNC(buffered_spriteram16_device::write));
+ map(0x180008, 0x180009).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x18000a, 0x18000b).nopr().w(this, FUNC(darkseal_state::irq_ack_w));
+
+ map(0x200000, 0x201fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x203fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x240000, 0x24000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w));
+
+ map(0x220000, 0x220fff).ram().share("pf1_rowscroll");
// pf2 & 4 rowscrolls are where? (maybe don't exist?)
- AM_RANGE(0x222000, 0x222fff) AM_RAM AM_SHARE("pf3_rowscroll")
+ map(0x222000, 0x222fff).ram().share("pf3_rowscroll");
- AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x262000, 0x263fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x2a0000, 0x2a000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
-ADDRESS_MAP_END
+ map(0x260000, 0x261fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x262000, 0x263fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x2a0000, 0x2a000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(darkseal_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void darkseal_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/daruma.cpp b/src/mame/drivers/daruma.cpp
index f26b771e11e..74ef4071a69 100644
--- a/src/mame/drivers/daruma.cpp
+++ b/src/mame/drivers/daruma.cpp
@@ -83,18 +83,20 @@ WRITE8_MEMBER(daruma_state::dev2_w)
//m_speaker->level_w(data & 0x01);
}
-ADDRESS_MAP_START(daruma_state::mem_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void daruma_state::mem_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
-ADDRESS_MAP_START(daruma_state::mem_io)
- AM_RANGE(0x0000, 0x0000) AM_READ(dev0_r)
- AM_RANGE(0x1000, 0x1000) AM_WRITE(dev1_w)
+void daruma_state::mem_io(address_map &map)
+{
+ map(0x0000, 0x0000).r(this, FUNC(daruma_state::dev0_r));
+ map(0x1000, 0x1000).w(this, FUNC(daruma_state::dev1_w));
// AM_RANGE(0x2000, 0x2000) AM_WRITE(dev2_w)
// AM_RANGE(0x3000, 0x3000) AM_WRITE(dev3_w)
- AM_RANGE(0x4000, 0x4000) AM_READ(dev4_r)
- AM_RANGE(0x8000, 0xffff) AM_RAM /* 32K CMOS SRAM (HYUNDAY hy62256a) */
-ADDRESS_MAP_END
+ map(0x4000, 0x4000).r(this, FUNC(daruma_state::dev4_r));
+ map(0x8000, 0xffff).ram(); /* 32K CMOS SRAM (HYUNDAY hy62256a) */
+}
//TODO: These buttons and switches are all guesses. We'll need to further investigate this.
static INPUT_PORTS_START( daruma )
diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp
index aa59a2c1779..68c57f14fb5 100644
--- a/src/mame/drivers/dassault.cpp
+++ b/src/mame/drivers/dassault.cpp
@@ -213,7 +213,6 @@ TODO:
#include "includes/dassault.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "machine/mb8421.h"
#include "sound/2203intf.h"
#include "sound/ym2151.h"
@@ -275,62 +274,65 @@ READ16_MEMBER(dassault_state::dassault_sub_control_r)
/**********************************************************************************/
-ADDRESS_MAP_START(dassault_state::dassault_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void dassault_state::dassault_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
- AM_RANGE(0x100000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x100000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x140004, 0x140005) AM_WRITE(main_irq_ack_w)
- AM_RANGE(0x140006, 0x140007) AM_WRITENOP /* ? */
+ map(0x140004, 0x140005).w(this, FUNC(dassault_state::main_irq_ack_w));
+ map(0x140006, 0x140007).nopw(); /* ? */
- AM_RANGE(0x180000, 0x180001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
+ map(0x180001, 0x180001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r)
- AM_RANGE(0x1c000a, 0x1c000b) AM_WRITE(priority_w)
- AM_RANGE(0x1c000c, 0x1c000d) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write)
- AM_RANGE(0x1c000e, 0x1c000f) AM_WRITE(dassault_control_w)
+ map(0x1c0000, 0x1c000f).r(this, FUNC(dassault_state::dassault_control_r));
+ map(0x1c000a, 0x1c000b).w(this, FUNC(dassault_state::priority_w));
+ map(0x1c000c, 0x1c000d).w(m_spriteram2, FUNC(buffered_spriteram16_device::write));
+ map(0x1c000e, 0x1c000f).w(this, FUNC(dassault_state::dassault_control_w));
- AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x212000, 0x212fff) AM_WRITEONLY AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
+ map(0x200000, 0x201fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x203fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x212000, 0x212fff).writeonly().share("pf2_rowscroll");
+ map(0x220000, 0x22000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
- AM_RANGE(0x240000, 0x240fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x252000, 0x252fff) AM_WRITEONLY AM_SHARE("pf4_rowscroll")
- AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
+ map(0x240000, 0x240fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x242000, 0x242fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x252000, 0x252fff).writeonly().share("pf4_rowscroll");
+ map(0x260000, 0x26000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w));
- AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("ram") /* Main ram */
- AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram2") /* Spriteram (2nd) */
- AM_RANGE(0x3fe000, 0x3fefff) AM_DEVREADWRITE("sharedram", mb8421_mb8431_16_device, left_r, left_w)
-ADDRESS_MAP_END
+ map(0x3f8000, 0x3fbfff).ram().share("ram"); /* Main ram */
+ map(0x3fc000, 0x3fcfff).ram().share("spriteram2"); /* Spriteram (2nd) */
+ map(0x3fe000, 0x3fefff).rw("sharedram", FUNC(mb8421_mb8431_16_device::left_r), FUNC(mb8421_mb8431_16_device::left_w));
+}
-ADDRESS_MAP_START(dassault_state::dassault_sub_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void dassault_state::dassault_sub_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
- AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
- AM_RANGE(0x100002, 0x100003) AM_WRITE(sub_irq_ack_w)
- AM_RANGE(0x100004, 0x100007) AM_WRITENOP /* ? */
- AM_RANGE(0x100004, 0x100005) AM_READ(dassault_sub_control_r)
+ map(0x100000, 0x100001).w(m_spriteram, FUNC(buffered_spriteram16_device::write));
+ map(0x100002, 0x100003).w(this, FUNC(dassault_state::sub_irq_ack_w));
+ map(0x100004, 0x100007).nopw(); /* ? */
+ map(0x100004, 0x100005).r(this, FUNC(dassault_state::dassault_sub_control_r));
- AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("ram2") /* Sub cpu ram */
- AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram") /* Sprite ram */
- AM_RANGE(0x3fe000, 0x3fefff) AM_DEVREADWRITE("sharedram", mb8421_mb8431_16_device, right_r, right_w)
-ADDRESS_MAP_END
+ map(0x3f8000, 0x3fbfff).ram().share("ram2"); /* Sub cpu ram */
+ map(0x3fc000, 0x3fcfff).ram().share("spriteram"); /* Sprite ram */
+ map(0x3fe000, 0x3fefff).rw("sharedram", FUNC(mb8421_mb8431_16_device::right_r), FUNC(mb8421_mb8431_16_device::right_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(dassault_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void dassault_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp
index ffeaf62a46d..a017913cd5c 100644
--- a/src/mame/drivers/datum.cpp
+++ b/src/mame/drivers/datum.cpp
@@ -81,16 +81,17 @@ private:
};
-ADDRESS_MAP_START(datum_state::datum_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK (0x7fff) // A15 not used
- AM_RANGE(0x0000, 0x007f) AM_RAM // inside CPU
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM // main ram 2x 2114
- AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void datum_state::datum_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x7fff); // A15 not used
+ map(0x0000, 0x007f).ram(); // inside CPU
+ map(0x1000, 0x13ff).mirror(0x0c00).ram(); // main ram 2x 2114
+ map(0x4000, 0x4001).mirror(0x0ffe).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x5000, 0x5003).mirror(0x0ffc).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x6000, 0x6003).mirror(0x0ffc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x7000, 0x77ff).mirror(0x0800).rom().region("roms", 0);
+}
/* Input ports */
diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp
index 1ad1273e0e9..ee3e5325d66 100644
--- a/src/mame/drivers/dblcrown.cpp
+++ b/src/mame/drivers/dblcrown.cpp
@@ -339,35 +339,37 @@ WRITE8_MEMBER(dblcrown_state::watchdog_w)
}
-ADDRESS_MAP_START(dblcrown_state::dblcrown_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rom_bank")
- AM_RANGE(0xa000, 0xb7ff) AM_RAM // work ram
- AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_r, palette_w)
- AM_RANGE(0xfe00, 0xfeff) AM_RAM // ???
- AM_RANGE(0xff00, 0xffff) AM_RAM // ???, intentional fall-through
- AM_RANGE(0xff00, 0xff01) AM_READWRITE(vram_bank_r, vram_bank_w)
- AM_RANGE(0xff04, 0xff04) AM_READWRITE(irq_source_r,irq_source_w)
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dblcrown_state::dblcrown_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSWB")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWC")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWD")
- AM_RANGE(0x04, 0x04) AM_READ(in_mux_r)
- AM_RANGE(0x05, 0x05) AM_READ(in_mux_type_r)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x20, 0x21) AM_DEVWRITE("ymz", ymz284_device, address_data_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(watchdog_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(output_w)
-ADDRESS_MAP_END
+void dblcrown_state::dblcrown_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("rom_bank");
+ map(0xa000, 0xb7ff).ram(); // work ram
+ map(0xb800, 0xbfff).ram().share("nvram");
+ map(0xc000, 0xdfff).rw(this, FUNC(dblcrown_state::vram_r), FUNC(dblcrown_state::vram_w));
+ map(0xf000, 0xf1ff).rw(this, FUNC(dblcrown_state::palette_r), FUNC(dblcrown_state::palette_w));
+ map(0xfe00, 0xfeff).ram(); // ???
+ map(0xff00, 0xffff).ram(); // ???, intentional fall-through
+ map(0xff00, 0xff01).rw(this, FUNC(dblcrown_state::vram_bank_r), FUNC(dblcrown_state::vram_bank_w));
+ map(0xff04, 0xff04).rw(this, FUNC(dblcrown_state::irq_source_r), FUNC(dblcrown_state::irq_source_w));
+
+}
+
+void dblcrown_state::dblcrown_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x00).portr("DSWA");
+ map(0x01, 0x01).portr("DSWB");
+ map(0x02, 0x02).portr("DSWC");
+ map(0x03, 0x03).portr("DSWD");
+ map(0x04, 0x04).r(this, FUNC(dblcrown_state::in_mux_r));
+ map(0x05, 0x05).r(this, FUNC(dblcrown_state::in_mux_type_r));
+ map(0x10, 0x13).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x20, 0x21).w("ymz", FUNC(ymz284_device::address_data_w));
+ map(0x30, 0x30).w(this, FUNC(dblcrown_state::watchdog_w));
+ map(0x40, 0x40).w(this, FUNC(dblcrown_state::output_w));
+}
static INPUT_PORTS_START( dblcrown )
PORT_START("IN0")
diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp
index 0280b416518..050ac8f0693 100644
--- a/src/mame/drivers/dblewing.cpp
+++ b/src/mame/drivers/dblewing.cpp
@@ -173,29 +173,31 @@ WRITE_LINE_MEMBER( dblewing_state::soundlatch_irq_w )
m_soundlatch_pending = bool(state);
}
-ADDRESS_MAP_START(dblewing_state::dblewing_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void dblewing_state::dblewing_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x104000, 0x104fff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x106000, 0x106fff) AM_RAM AM_SHARE("pf2_rowscroll")
+ map(0x100000, 0x100fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x102000, 0x102fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x104000, 0x104fff).ram().share("pf1_rowscroll");
+ map(0x106000, 0x106fff).ram().share("pf2_rowscroll");
// AM_RANGE(0x280000, 0x2807ff) AM_DEVREADWRITE("ioprot104", deco104_device, dblewing_prot_r, dblewing_prot_w) AM_SHARE("prot16ram")
- AM_RANGE(0x280000, 0x283fff) AM_READWRITE(wf_protection_region_0_104_r,wf_protection_region_0_104_w) AM_SHARE("prot16ram") /* Protection device */
+ map(0x280000, 0x283fff).rw(this, FUNC(dblewing_state::wf_protection_region_0_104_r), FUNC(dblewing_state::wf_protection_region_0_104_w)).share("prot16ram"); /* Protection device */
- AM_RANGE(0x284000, 0x284001) AM_RAM
- AM_RANGE(0x288000, 0x288001) AM_RAM
- AM_RANGE(0x28c000, 0x28c00f) AM_RAM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x320000, 0x3207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM
-ADDRESS_MAP_END
+ map(0x284000, 0x284001).ram();
+ map(0x288000, 0x288001).ram();
+ map(0x28c000, 0x28c00f).ram().w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x300000, 0x3007ff).ram().share("spriteram");
+ map(0x320000, 0x3207ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xff3fff).mirror(0xc000).ram();
+}
-ADDRESS_MAP_START(dblewing_state::decrypted_opcodes_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
+void dblewing_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().share("decrypted_opcodes");
+}
READ8_MEMBER(dblewing_state::irq_latch_r)
{
@@ -203,19 +205,21 @@ READ8_MEMBER(dblewing_state::irq_latch_r)
return m_soundlatch_pending ? 0 : 1;
}
-ADDRESS_MAP_START(dblewing_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write)
- AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("ioprot", deco104_device, soundlatch_r)
- AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch?
- AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dblewing_state::sound_io)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
+void dblewing_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write));
+ map(0xb000, 0xb000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc000, 0xc000).r(m_deco104, FUNC(deco104_device::soundlatch_r));
+ map(0xd000, 0xd000).r(this, FUNC(dblewing_state::irq_latch_r)); //timing? sound latch?
+ map(0xf000, 0xf000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void dblewing_state::sound_io(address_map &map)
+{
+ map(0x0000, 0xffff).rom().region("audiocpu", 0);
+}
diff --git a/src/mame/drivers/dbox.cpp b/src/mame/drivers/dbox.cpp
index 6e16d12feb3..64103d867bd 100644
--- a/src/mame/drivers/dbox.cpp
+++ b/src/mame/drivers/dbox.cpp
@@ -568,15 +568,16 @@ READ16_MEMBER (dbox_state::sysflash_r){
/* End of flash emulation */
#endif
-ADDRESS_MAP_START(dbox_state::dbox_map)
+void dbox_state::dbox_map(address_map &map)
+{
// CS0 - bootrom
// 008004ee Address mask CS0 00000040, 003ffff5 (ffffffff) - Mask: 003fff00 FCM:0f DD:1 PS: 16-Bit
// 008004f8 Base address CS0 00000044, 0000005b (ffffffff) - Base: 00000000 BFC:05 WP:1 FTE:0 NCS:1 Valid: Yes
#if LOCALFLASH
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_READ16(sysflash_r, 0xffffffff) AM_REGION("flash", 0)
- AM_RANGE(0x000000, 0x3fffff) AM_WRITE16(sysflash_w, 0xffffffff)
+ map(0x000000, 0x3fffff).rom().r(this, FUNC(dbox_state::sysflash_r)).region("flash", 0);
+ map(0x000000, 0x3fffff).w(this, FUNC(dbox_state::sysflash_w));
#else
- AM_RANGE(0x000000, 0x3fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff)
+ map(0x000000, 0x3fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
#endif
// CS2 - CS demux
// 0000009a Address mask CS2 00000050, 00007fff (ffffffff) - Mask: 00007f00 FCM:0f DD:3 PS: External DSACK response
@@ -586,13 +587,13 @@ ADDRESS_MAP_START(dbox_state::dbox_map)
// 000000aa Address mask CS3 00000058, 000007f2 (ffffffff) - Mask: 00000700 FCM:0f DD:0 PS: 8-bit
// 000000b2 Base address CS3 0000005c, 00780003 (ffffffff) - Base: 00780000 BFC:00 WP:0 FTE:0 NCS:1 Valid: Yes
// AM_RANGE(0x780000, 0x7807ff)
- AM_RANGE(0x780100, 0x7801ff) AM_WRITE8(sda5708_reset, 0xffffffff)
- AM_RANGE(0x780600, 0x7806ff) AM_WRITE8(sda5708_clk, 0xffffffff)
+ map(0x780100, 0x7801ff).w(this, FUNC(dbox_state::sda5708_reset));
+ map(0x780600, 0x7806ff).w(this, FUNC(dbox_state::sda5708_clk));
// CS1 - RAM area
// 0000008a Address mask CS1 00000048, 003ffff5 (ffffffff) - Mask: 003fff00 FCM:0f DD:1 PS: 16-Bit
// 00000092 Base address CS1 0000004c, 00800003 (ffffffff) - Base: 00800000 BFC:00 WP:0 FTE:0 NCS:1 Valid: Yes
- AM_RANGE(0x800000, 0xcfffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x800000, 0xcfffff).ram();
+}
/* Input ports */
static INPUT_PORTS_START( dbox )
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index 551ba68ffe5..c834d239355 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -106,55 +106,58 @@ WRITE16_MEMBER(dbz_state::dbz_sound_cause_nmi)
}
-ADDRESS_MAP_START(dbz_state::dbz_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x480000, 0x48ffff) AM_RAM
- AM_RANGE(0x490000, 0x491fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // '157 RAM is mirrored twice
- AM_RANGE(0x492000, 0x493fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0x498000, 0x49ffff) AM_DEVREAD("k056832", k056832_device, rom_word_8000_r) // code near a60 in dbz2, subroutine at 730 in dbz
- AM_RANGE(0x4a0000, 0x4a0fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w)
- AM_RANGE(0x4a1000, 0x4a3fff) AM_RAM
- AM_RANGE(0x4a8000, 0x4abfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette
- AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
- AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x4c4000, 0x4c4007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x4c8000, 0x4c8007) AM_DEVWRITE("k056832", k056832_device, b_word_w)
- AM_RANGE(0x4cc000, 0x4cc03f) AM_DEVWRITE("k056832", k056832_device, word_w)
- AM_RANGE(0x4d0000, 0x4d001f) AM_DEVWRITE("k053936_1", k053936_device, ctrl_w)
- AM_RANGE(0x4d4000, 0x4d401f) AM_DEVWRITE("k053936_2", k053936_device, ctrl_w)
- AM_RANGE(0x4e0000, 0x4e0001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x4e0002, 0x4e0003) AM_READ_PORT("SYSTEM_DSW1")
- AM_RANGE(0x4e4000, 0x4e4001) AM_READ_PORT("DSW2")
- AM_RANGE(0x4e8000, 0x4e8001) AM_WRITENOP
- AM_RANGE(0x4ec000, 0x4ec001) AM_WRITE(dbzcontrol_w)
- AM_RANGE(0x4f0000, 0x4f0001) AM_WRITE(dbz_sound_command_w)
- AM_RANGE(0x4f4000, 0x4f4001) AM_WRITE(dbz_sound_cause_nmi)
- AM_RANGE(0x4f8000, 0x4f801f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00) // 251 #1
- AM_RANGE(0x4fc000, 0x4fc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) // 251 #2
-
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(dbz_bg2_videoram_w) AM_SHARE("bg2_videoram")
- AM_RANGE(0x508000, 0x509fff) AM_RAM_WRITE(dbz_bg1_videoram_w) AM_SHARE("bg1_videoram")
- AM_RANGE(0x510000, 0x513fff) AM_DEVREADWRITE("k053936_1", k053936_device, linectrl_r, linectrl_w) // ?? guess, it might not be
- AM_RANGE(0x518000, 0x51bfff) AM_DEVREADWRITE("k053936_2", k053936_device, linectrl_r, linectrl_w) // ?? guess, it might not be
- AM_RANGE(0x600000, 0x6fffff) AM_READNOP // PSAC 1 ROM readback window
- AM_RANGE(0x700000, 0x7fffff) AM_READNOP // PSAC 2 ROM readback window
-ADDRESS_MAP_END
+void dbz_state::dbz_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x480000, 0x48ffff).ram();
+ map(0x490000, 0x491fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // '157 RAM is mirrored twice
+ map(0x492000, 0x493fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x498000, 0x49ffff).r(m_k056832, FUNC(k056832_device::rom_word_8000_r)); // code near a60 in dbz2, subroutine at 730 in dbz
+ map(0x4a0000, 0x4a0fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w));
+ map(0x4a1000, 0x4a3fff).ram();
+ map(0x4a8000, 0x4abfff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); // palette
+ map(0x4c0000, 0x4c0001).r(m_k053246, FUNC(k053247_device::k053246_word_r));
+ map(0x4c0000, 0x4c0007).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+ map(0x4c4000, 0x4c4007).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+ map(0x4c8000, 0x4c8007).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x4cc000, 0x4cc03f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x4d0000, 0x4d001f).w(m_k053936_1, FUNC(k053936_device::ctrl_w));
+ map(0x4d4000, 0x4d401f).w(m_k053936_2, FUNC(k053936_device::ctrl_w));
+ map(0x4e0000, 0x4e0001).portr("P1_P2");
+ map(0x4e0002, 0x4e0003).portr("SYSTEM_DSW1");
+ map(0x4e4000, 0x4e4001).portr("DSW2");
+ map(0x4e8000, 0x4e8001).nopw();
+ map(0x4ec000, 0x4ec001).w(this, FUNC(dbz_state::dbzcontrol_w));
+ map(0x4f0000, 0x4f0001).w(this, FUNC(dbz_state::dbz_sound_command_w));
+ map(0x4f4000, 0x4f4001).w(this, FUNC(dbz_state::dbz_sound_cause_nmi));
+ map(0x4f8000, 0x4f801f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0xff00); // 251 #1
+ map(0x4fc000, 0x4fc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); // 251 #2
+
+ map(0x500000, 0x501fff).ram().w(this, FUNC(dbz_state::dbz_bg2_videoram_w)).share("bg2_videoram");
+ map(0x508000, 0x509fff).ram().w(this, FUNC(dbz_state::dbz_bg1_videoram_w)).share("bg1_videoram");
+ map(0x510000, 0x513fff).rw(m_k053936_1, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); // ?? guess, it might not be
+ map(0x518000, 0x51bfff).rw(m_k053936_2, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); // ?? guess, it might not be
+ map(0x600000, 0x6fffff).nopr(); // PSAC 1 ROM readback window
+ map(0x700000, 0x7fffff).nopr(); // PSAC 2 ROM readback window
+}
/* dbz sound */
/* IRQ: from YM2151. NMI: from 68000. Port 0: write to ack NMI */
-ADDRESS_MAP_START(dbz_state::dbz_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe000, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dbz_state::dbz_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP
-ADDRESS_MAP_END
+void dbz_state::dbz_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd000, 0xd002).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe000, 0xe001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void dbz_state::dbz_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw();
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index bcca1a1e08e..1ee148f590a 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -361,21 +361,22 @@ WRITE8_MEMBER(dc_cons_state::dc_flash_w)
}
#endif
-ADDRESS_MAP_START(dc_cons_state::dc_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_WRITENOP // BIOS
- AM_RANGE(0x00200000, 0x0021ffff) AM_ROM AM_REGION("dcflash",0)//AM_READWRITE8(dc_flash_r,dc_flash_w, 0xffffffffffffffffU)
- AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w )
- AM_RANGE(0x005f6c00, 0x005f6cff) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7000, 0x005f701f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7080, 0x005f709f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE32(dc_mess_g1_ctrl_r, dc_mess_g1_ctrl_w, 0xffffffffffffffffU )
- AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w )
- AM_RANGE(0x005f7c00, 0x005f7cff) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU)
- AM_RANGE(0x005f8000, 0x005f9fff) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU)
- AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE(dc_modem_r, dc_modem_w )
- AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU)
- AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU )
- AM_RANGE(0x00800000, 0x009fffff) AM_READWRITE(sh4_soundram_r, sh4_soundram_w )
+void dc_cons_state::dc_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom().nopw(); // BIOS
+ map(0x00200000, 0x0021ffff).rom().region("dcflash", 0);//AM_READWRITE8(dc_flash_r,dc_flash_w, 0xffffffffffffffffU)
+ map(0x005f6800, 0x005f69ff).rw(this, FUNC(dc_cons_state::dc_sysctrl_r), FUNC(dc_cons_state::dc_sysctrl_w));
+ map(0x005f6c00, 0x005f6cff).m(m_maple, FUNC(maple_dc_device::amap));
+ map(0x005f7000, 0x005f701f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)).umask64(0x0000ffff0000ffff);
+ map(0x005f7080, 0x005f709f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)).umask64(0x0000ffff0000ffff);
+ map(0x005f7400, 0x005f74ff).rw(this, FUNC(dc_cons_state::dc_mess_g1_ctrl_r), FUNC(dc_cons_state::dc_mess_g1_ctrl_w));
+ map(0x005f7800, 0x005f78ff).rw(this, FUNC(dc_cons_state::dc_g2_ctrl_r), FUNC(dc_cons_state::dc_g2_ctrl_w));
+ map(0x005f7c00, 0x005f7cff).m(m_powervr2, FUNC(powervr2_device::pd_dma_map));
+ map(0x005f8000, 0x005f9fff).m(m_powervr2, FUNC(powervr2_device::ta_map));
+ map(0x00600000, 0x006007ff).rw(this, FUNC(dc_cons_state::dc_modem_r), FUNC(dc_cons_state::dc_modem_w));
+ map(0x00700000, 0x00707fff).rw(this, FUNC(dc_cons_state::dc_aica_reg_r), FUNC(dc_cons_state::dc_aica_reg_w));
+ map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff);
+ map(0x00800000, 0x009fffff).rw(this, FUNC(dc_cons_state::sh4_soundram_r), FUNC(dc_cons_state::sh4_soundram_w));
// AM_RANGE(0x01000000, 0x01ffffff) G2 Ext Device #1
// AM_RANGE(0x02700000, 0x02707fff) AICA reg mirror
// AM_RANGE(0x02800000, 0x02ffffff) AICA wave mem mirror
@@ -383,40 +384,42 @@ ADDRESS_MAP_START(dc_cons_state::dc_map)
// AM_RANGE(0x03000000, 0x03ffffff) G2 Ext Device #2
/* Area 1 */
- AM_RANGE(0x04000000, 0x04ffffff) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access
- AM_RANGE(0x05000000, 0x05ffffff) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
+ map(0x04000000, 0x04ffffff).ram().share("dc_texture_ram"); // texture memory 64 bit access
+ map(0x05000000, 0x05ffffff).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
/* Area 3 */
- AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("dc_ram")
- AM_RANGE(0x0d000000, 0x0dffffff) AM_RAM AM_SHARE("dc_ram")// extra ram on Naomi (mirror on DC)
- AM_RANGE(0x0e000000, 0x0effffff) AM_RAM AM_SHARE("dc_ram")// mirror
- AM_RANGE(0x0f000000, 0x0fffffff) AM_RAM AM_SHARE("dc_ram")// mirror
+ map(0x0c000000, 0x0cffffff).ram().share("dc_ram");
+ map(0x0d000000, 0x0dffffff).ram().share("dc_ram");// extra ram on Naomi (mirror on DC)
+ map(0x0e000000, 0x0effffff).ram().share("dc_ram");// mirror
+ map(0x0f000000, 0x0fffffff).ram().share("dc_ram");// mirror
/* Area 4 */
- AM_RANGE(0x10000000, 0x107fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w)
- AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU)
- AM_RANGE(0x11000000, 0x117fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue
+ map(0x10000000, 0x107fffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
+ map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
+ map(0x11000000, 0x117fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue
- AM_RANGE(0x12000000, 0x127fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w)
- AM_RANGE(0x12800000, 0x12ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU)
- AM_RANGE(0x13000000, 0x137fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue
+ map(0x12000000, 0x127fffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
+ map(0x12800000, 0x12ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
+ map(0x13000000, 0x137fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue
// AM_RANGE(0x14000000, 0x17ffffff) G2 Ext Device #3
- AM_RANGE(0x8c000000, 0x8cffffff) AM_RAM AM_SHARE("dc_ram") // another RAM mirror
+ map(0x8c000000, 0x8cffffff).ram().share("dc_ram"); // another RAM mirror
- AM_RANGE(0xa0000000, 0xa01fffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0xa0000000, 0xa01fffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(dc_cons_state::dc_port)
- AM_RANGE(0x00000000, 0x00000007) AM_READWRITE(dc_pdtra_r, dc_pdtra_w )
-ADDRESS_MAP_END
+void dc_cons_state::dc_port(address_map &map)
+{
+ map(0x00000000, 0x00000007).rw(this, FUNC(dc_cons_state::dc_pdtra_r), FUNC(dc_cons_state::dc_pdtra_w));
+}
-ADDRESS_MAP_START(dc_cons_state::dc_audio_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("dc_sound_ram") /* shared with SH-4 */
- AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w)
-ADDRESS_MAP_END
+void dc_cons_state::dc_audio_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x001fffff).ram().share("dc_sound_ram"); /* shared with SH-4 */
+ map(0x00800000, 0x00807fff).rw(this, FUNC(dc_cons_state::dc_arm_aica_r), FUNC(dc_cons_state::dc_arm_aica_w));
+}
static INPUT_PORTS_START( dc )
PORT_START("P1:0")
diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp
index 11605515d63..4a3c61cc0f0 100644
--- a/src/mame/drivers/dcheese.cpp
+++ b/src/mame/drivers/dcheese.cpp
@@ -171,19 +171,20 @@ WRITE8_MEMBER(dcheese_state::bsmt_data_w)
*
*************************************/
-ADDRESS_MAP_START(dcheese_state::main_cpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("200000") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x220000, 0x220001) AM_READ_PORT("220000") AM_WRITE(madmax_blitter_color_w)
- AM_RANGE(0x240000, 0x240001) AM_READ_PORT("240000") AM_WRITE(eeprom_control_w)
- AM_RANGE(0x260000, 0x26001f) AM_WRITE(madmax_blitter_xparam_w)
- AM_RANGE(0x280000, 0x28001f) AM_WRITE(madmax_blitter_yparam_w)
- AM_RANGE(0x2a0000, 0x2a003f) AM_READWRITE(madmax_blitter_vidparam_r, madmax_blitter_vidparam_w)
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_WRITE(madmax_blitter_unknown_w)
-ADDRESS_MAP_END
+void dcheese_state::main_cpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ 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(this, FUNC(dcheese_state::madmax_blitter_color_w));
+ map(0x240000, 0x240001).portr("240000").w(this, FUNC(dcheese_state::eeprom_control_w));
+ map(0x260000, 0x26001f).w(this, FUNC(dcheese_state::madmax_blitter_xparam_w));
+ map(0x280000, 0x28001f).w(this, FUNC(dcheese_state::madmax_blitter_yparam_w));
+ map(0x2a0000, 0x2a003f).rw(this, FUNC(dcheese_state::madmax_blitter_vidparam_r), FUNC(dcheese_state::madmax_blitter_vidparam_w));
+ map(0x2e0001, 0x2e0001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x300000, 0x300001).w(this, FUNC(dcheese_state::madmax_blitter_unknown_w));
+}
@@ -193,14 +194,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(dcheese_state::sound_cpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_READWRITE(sound_status_r, sound_control_w)
- AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x0700) AM_WRITE(bsmt_data_w)
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dcheese_state::sound_cpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rw(this, FUNC(dcheese_state::sound_status_r), FUNC(dcheese_state::sound_control_w));
+ map(0x0800, 0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1000, 0x10ff).mirror(0x0700).w(this, FUNC(dcheese_state::bsmt_data_w));
+ map(0x1800, 0x1fff).ram();
+ map(0x2000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/dcon.cpp b/src/mame/drivers/dcon.cpp
index 25c20277caf..8ec949416b1 100644
--- a/src/mame/drivers/dcon.cpp
+++ b/src/mame/drivers/dcon.cpp
@@ -38,31 +38,33 @@ READ8_MEMBER(dcon_state::sdgndmps_sound_comms_r)
return m_seibu_sound->main_r(space, offset);
}
-ADDRESS_MAP_START(dcon_state::dcon_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x80000, 0x8bfff) AM_RAM
-
- AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(background_w) AM_SHARE("back_data")
- AM_RANGE(0x8c800, 0x8cfff) AM_RAM_WRITE(foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x8d000, 0x8d7ff) AM_RAM_WRITE(midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x8d800, 0x8e7ff) AM_RAM_WRITE(text_w) AM_SHARE("textram")
- AM_RANGE(0x8e800, 0x8f7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x8f800, 0x8ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9d000, 0x9d7ff) AM_WRITE(gfxbank_w)
-
- AM_RANGE(0xa0000, 0xa000d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0xc0080, 0xc0081) AM_WRITENOP
- AM_RANGE(0xc00c0, 0xc00c1) AM_WRITENOP
- AM_RANGE(0xe0000, 0xe0001) AM_READ_PORT("DSW")
- AM_RANGE(0xe0002, 0xe0003) AM_READ_PORT("P1_P2")
- AM_RANGE(0xe0004, 0xe0005) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dcon_state::sdgndmps_map)
- AM_IMPORT_FROM(dcon_map)
- AM_RANGE(0xa0000, 0xa000d) AM_READ8(sdgndmps_sound_comms_r, 0x00ff)
-ADDRESS_MAP_END
+void dcon_state::dcon_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0x80000, 0x8bfff).ram();
+
+ map(0x8c000, 0x8c7ff).ram().w(this, FUNC(dcon_state::background_w)).share("back_data");
+ map(0x8c800, 0x8cfff).ram().w(this, FUNC(dcon_state::foreground_w)).share("fore_data");
+ map(0x8d000, 0x8d7ff).ram().w(this, FUNC(dcon_state::midground_w)).share("mid_data");
+ map(0x8d800, 0x8e7ff).ram().w(this, FUNC(dcon_state::text_w)).share("textram");
+ map(0x8e800, 0x8f7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x8f800, 0x8ffff).ram().share("spriteram");
+ map(0x9d000, 0x9d7ff).w(this, FUNC(dcon_state::gfxbank_w));
+
+ map(0xa0000, 0xa000d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0xc0000, 0xc004f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0xc0080, 0xc0081).nopw();
+ map(0xc00c0, 0xc00c1).nopw();
+ map(0xe0000, 0xe0001).portr("DSW");
+ map(0xe0002, 0xe0003).portr("P1_P2");
+ map(0xe0004, 0xe0005).portr("SYSTEM");
+}
+
+void dcon_state::sdgndmps_map(address_map &map)
+{
+ dcon_map(map);
+ map(0xa0000, 0xa000d).r(this, FUNC(dcon_state::sdgndmps_sound_comms_r)).umask16(0x00ff);
+}
/******************************************************************************/
diff --git a/src/mame/drivers/dct11em.cpp b/src/mame/drivers/dct11em.cpp
index e39cd45a9d1..a19e68639eb 100644
--- a/src/mame/drivers/dct11em.cpp
+++ b/src/mame/drivers/dct11em.cpp
@@ -27,12 +27,13 @@ public:
void dct11em_mem(address_map &map);
};
-ADDRESS_MAP_START(dct11em_state::dct11em_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_RAM // RAM
- AM_RANGE( 0x2000, 0x2fff ) AM_RAM // Optional RAM
- AM_RANGE( 0xa000, 0xdfff ) AM_ROM // RAM
-ADDRESS_MAP_END
+void dct11em_state::dct11em_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram(); // RAM
+ map(0x2000, 0x2fff).ram(); // Optional RAM
+ map(0xa000, 0xdfff).rom(); // RAM
+}
/* Input ports */
static INPUT_PORTS_START( dct11em )
diff --git a/src/mame/drivers/dday.cpp b/src/mame/drivers/dday.cpp
index 74242aaf235..9fa0fb511fc 100644
--- a/src/mame/drivers/dday.cpp
+++ b/src/mame/drivers/dday.cpp
@@ -58,22 +58,23 @@ write:
#include "speaker.h"
-ADDRESS_MAP_START(dday_state::dday_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_WRITE(dday_sl_control_w)
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(dday_textvideoram_w) AM_SHARE("textvideoram")
- AM_RANGE(0x5400, 0x57ff) AM_RAM_WRITE(dday_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x5800, 0x5bff) AM_RAM_WRITE(dday_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x5c00, 0x5fff) AM_READWRITE(dday_colorram_r, dday_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0x63ff) AM_RAM
- AM_RANGE(0x6400, 0x6401) AM_MIRROR(0x000e) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x6800, 0x6801) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x6c00, 0x6c00) AM_READ_PORT("BUTTONS")
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0")
- AM_RANGE(0x7400, 0x7400) AM_READ_PORT("DSW1")
- AM_RANGE(0x7800, 0x7800) AM_READWRITE(dday_countdown_timer_r, dday_control_w)
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("PADDLE")
-ADDRESS_MAP_END
+void dday_state::dday_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4000).w(this, FUNC(dday_state::dday_sl_control_w));
+ map(0x5000, 0x53ff).ram().w(this, FUNC(dday_state::dday_textvideoram_w)).share("textvideoram");
+ map(0x5400, 0x57ff).ram().w(this, FUNC(dday_state::dday_fgvideoram_w)).share("fgvideoram");
+ map(0x5800, 0x5bff).ram().w(this, FUNC(dday_state::dday_bgvideoram_w)).share("bgvideoram");
+ map(0x5c00, 0x5fff).rw(this, FUNC(dday_state::dday_colorram_r), FUNC(dday_state::dday_colorram_w)).share("colorram");
+ map(0x6000, 0x63ff).ram();
+ map(0x6400, 0x6401).mirror(0x000e).w(m_ay1, FUNC(ay8910_device::address_data_w));
+ map(0x6800, 0x6801).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x6c00, 0x6c00).portr("BUTTONS");
+ map(0x7000, 0x7000).portr("DSW0");
+ map(0x7400, 0x7400).portr("DSW1");
+ map(0x7800, 0x7800).rw(this, FUNC(dday_state::dday_countdown_timer_r), FUNC(dday_state::dday_control_w));
+ map(0x7c00, 0x7c00).portr("PADDLE");
+}
diff --git a/src/mame/drivers/ddayjlc.cpp b/src/mame/drivers/ddayjlc.cpp
index 90eff6bbeb2..d9a163f526b 100644
--- a/src/mame/drivers/ddayjlc.cpp
+++ b/src/mame/drivers/ddayjlc.cpp
@@ -266,41 +266,43 @@ WRITE8_MEMBER(ddayjlc_state::i8257_LMSR_w)
}
}
-ADDRESS_MAP_START(ddayjlc_state::main_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(ddayjlc_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(ddayjlc_bgram_w) AM_SHARE("bgram") /* 9800-981f - videoregs */
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0xe000, 0xe003) AM_WRITE(i8257_CH0_w)
- AM_RANGE(0xe008, 0xe008) AM_WRITENOP
- AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_w)
- AM_RANGE(0xf100, 0xf100) AM_WRITENOP
- AM_RANGE(0xf080, 0xf080) AM_WRITE(char_bank_w)
- AM_RANGE(0xf081, 0xf081) AM_WRITENOP
- AM_RANGE(0xf083, 0xf083) AM_WRITE(i8257_LMSR_w)
- AM_RANGE(0xf084, 0xf084) AM_WRITE(bg0_w)
- AM_RANGE(0xf085, 0xf085) AM_WRITE(bg1_w)
- AM_RANGE(0xf086, 0xf086) AM_WRITE(bg2_w)
- AM_RANGE(0xf101, 0xf101) AM_WRITE(main_nmi_w)
- AM_RANGE(0xf102, 0xf105) AM_WRITE(prot_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("INPUTS")
- AM_RANGE(0xf100, 0xf100) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf180, 0xf180) AM_READ_PORT("DSW1")
- AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ddayjlc_state::sound_cpu)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x7000, 0x7000) AM_WRITE(sound_nmi_w)
-ADDRESS_MAP_END
+void ddayjlc_state::main_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().share("mainram");
+ map(0x9000, 0x93ff).ram().share("spriteram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(ddayjlc_state::ddayjlc_videoram_w)).share("videoram");
+ map(0x9800, 0x9fff).ram().w(this, FUNC(ddayjlc_state::ddayjlc_bgram_w)).share("bgram"); /* 9800-981f - videoregs */
+ map(0xa000, 0xdfff).bankr("bank1").nopw();
+ map(0xe000, 0xe003).w(this, FUNC(ddayjlc_state::i8257_CH0_w));
+ map(0xe008, 0xe008).nopw();
+ map(0xf000, 0xf000).w(this, FUNC(ddayjlc_state::sound_w));
+ map(0xf100, 0xf100).nopw();
+ map(0xf080, 0xf080).w(this, FUNC(ddayjlc_state::char_bank_w));
+ map(0xf081, 0xf081).nopw();
+ map(0xf083, 0xf083).w(this, FUNC(ddayjlc_state::i8257_LMSR_w));
+ map(0xf084, 0xf084).w(this, FUNC(ddayjlc_state::bg0_w));
+ map(0xf085, 0xf085).w(this, FUNC(ddayjlc_state::bg1_w));
+ map(0xf086, 0xf086).w(this, FUNC(ddayjlc_state::bg2_w));
+ map(0xf101, 0xf101).w(this, FUNC(ddayjlc_state::main_nmi_w));
+ map(0xf102, 0xf105).w(this, FUNC(ddayjlc_state::prot_w));
+ map(0xf000, 0xf000).portr("INPUTS");
+ map(0xf100, 0xf100).portr("SYSTEM");
+ map(0xf180, 0xf180).portr("DSW1");
+ map(0xf200, 0xf200).portr("DSW2");
+}
+
+
+void ddayjlc_state::sound_cpu(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x5000, 0x5000).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x7000, 0x7000).w(this, FUNC(ddayjlc_state::sound_nmi_w));
+}
static INPUT_PORTS_START( ddayjlc )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/ddealer.cpp b/src/mame/drivers/ddealer.cpp
index 0b2f0e6f6eb..084a8dec283 100644
--- a/src/mame/drivers/ddealer.cpp
+++ b/src/mame/drivers/ddealer.cpp
@@ -472,28 +472,29 @@ WRITE16_MEMBER(ddealer_state::mcu_shared_w)
}
}
-ADDRESS_MAP_START(ddealer_state::ddealer)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("UNK")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ymsnd", ym2203_device, write, 0x00ff) // ym ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08cfff) AM_RAM AM_SHARE("vregs") // palette ram
+void ddealer_state::ddealer(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080006, 0x080007).portr("UNK");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x084000, 0x084003).w("ymsnd", FUNC(ym2203_device::write)).umask16(0x00ff); // ym ?
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08cfff).ram().share("vregs"); // palette ram
/* this might actually be 1 tilemap with some funky rowscroll / columnscroll enabled, I'm not sure */
- AM_RANGE(0x090000, 0x090fff) AM_RAM AM_SHARE("left_fg_vratop")
- AM_RANGE(0x091000, 0x091fff) AM_RAM AM_SHARE("right_fg_vratop")
- AM_RANGE(0x092000, 0x092fff) AM_RAM AM_SHARE("left_fg_vrabot")
- AM_RANGE(0x093000, 0x093fff) AM_RAM AM_SHARE("right_fg_vrabot")
+ map(0x090000, 0x090fff).ram().share("left_fg_vratop");
+ map(0x091000, 0x091fff).ram().share("right_fg_vratop");
+ map(0x092000, 0x092fff).ram().share("left_fg_vrabot");
+ map(0x093000, 0x093fff).ram().share("right_fg_vrabot");
//AM_RANGE(0x094000, 0x094001) AM_NOP // always 0?
- AM_RANGE(0x098000, 0x098001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(back_vram_w) AM_SHARE("back_vram") // bg tilemap
- AM_RANGE(0x0f0000, 0x0fdfff) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0x0fe000, 0x0fefff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("mcu_shared_ram")
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x098000, 0x098001).w(this, FUNC(ddealer_state::flipscreen_w));
+ map(0x09c000, 0x09cfff).ram().w(this, FUNC(ddealer_state::back_vram_w)).share("back_vram"); // bg tilemap
+ map(0x0f0000, 0x0fdfff).ram().share("work_ram");
+ map(0x0fe000, 0x0fefff).ram().w(this, FUNC(ddealer_state::mcu_shared_w)).share("mcu_shared_ram");
+ map(0x0ff000, 0x0fffff).ram();
+}
static INPUT_PORTS_START( ddealer )
PORT_START("IN0")
diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp
index 2daf04e9e75..aa8cea9a4f6 100644
--- a/src/mame/drivers/ddenlovr.cpp
+++ b/src/mame/drivers/ddenlovr.cpp
@@ -1956,39 +1956,40 @@ WRITE16_MEMBER(ddenlovr_state::quiz365_protection_w)
COMBINE_DATA(m_quiz365_protection + offset);
}
-ADDRESS_MAP_START(ddenlovr_state::quiz365_map)
- AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
+void ddenlovr_state::quiz365_map(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom(); // ROM
- AM_RANGE(0x200000, 0x2003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
+ map(0x200000, 0x2003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
- AM_RANGE(0x200c02, 0x200c03) AM_READ(quiz365_protection_r) // Protection
- AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(quiz365_protection_w) // Protection
+ map(0x200c02, 0x200c03).r(this, FUNC(ddenlovr_state::quiz365_protection_r)); // Protection
+ map(0x200e0a, 0x200e0d).w(this, FUNC(ddenlovr_state::quiz365_protection_w)); // Protection
// AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ?
- AM_RANGE(0x300200, 0x300201) AM_WRITE8(ddenlovr_select2_w, 0x00ff)
- AM_RANGE(0x300202, 0x300203) AM_WRITE8(quiz365_coincounter_w, 0x00ff) // Coin Counters + more stuff written on startup
- AM_RANGE(0x300204, 0x300207) AM_READ(quiz365_input2_r) //
-
- AM_RANGE(0x300240, 0x300247) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0x300248, 0x30024f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0x300250, 0x300257) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0x300258, 0x30025f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0x300268, 0x300269) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0x30026a, 0x30026b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0x30026c, 0x30026d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff)
- AM_RANGE(0x300270, 0x300271) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
- AM_RANGE(0x300280, 0x300283) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r) // Video Chip
-
- AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)// Sound
- AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0x300340, 0x30035f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
- AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x3003c0, 0x3003cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
-
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0x300201, 0x300201).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w));
+ map(0x300203, 0x300203).w(this, FUNC(ddenlovr_state::quiz365_coincounter_w)); // Coin Counters + more stuff written on startup
+ map(0x300204, 0x300207).r(this, FUNC(ddenlovr_state::quiz365_input2_r)); //
+
+ map(0x300240, 0x300247).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0x300248, 0x30024f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0x300250, 0x300257).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0x300258, 0x30025f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0x300269, 0x300269).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x30026b, 0x30026b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x30026d, 0x30026d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x300270, 0x300271).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover)
+ map(0x300280, 0x300283).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0x300286, 0x300287).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
+
+ map(0x3002c1, 0x3002c1).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));// Sound
+ map(0x300300, 0x300303).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x300340, 0x30035f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x300380, 0x300383).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x300385, 0x300385).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x3003c0, 0x3003cf).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff);
+
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
READ16_MEMBER(ddenlovr_state::ddenlovj_dsw_r)
@@ -2012,36 +2013,37 @@ CUSTOM_INPUT_MEMBER(ddenlovr_state::ddenlovj_blitter_r)
return m_ddenlovr_blitter_irq_flag ? 0x03 : 0x00; // bit 4 = 1 -> blitter busy
}
-ADDRESS_MAP_START(ddenlovr_state::ddenlovj_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
+void ddenlovr_state::ddenlovj_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
- AM_RANGE(0x200000, 0x2003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
+ map(0x200000, 0x2003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
// AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ? B0 on startup, then 00
- AM_RANGE(0x300040, 0x300047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0x300048, 0x30004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0x300050, 0x300057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0x300058, 0x30005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0x300068, 0x300069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0x30006a, 0x30006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0x30006c, 0x30006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff)
- AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
- AM_RANGE(0x300080, 0x300083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
- AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
- AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
- AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
- AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x300186, 0x300187) AM_READ(ddenlovj_dsw_r) // DSW
- AM_RANGE(0x300188, 0x300189) AM_WRITE8(ddenlovj_coincounter_w, 0x00ff)
- AM_RANGE(0x30018a, 0x30018b) AM_WRITE8(ddenlovr_select_w, 0x00ff) // DSW select
- AM_RANGE(0x30018c, 0x30018d) AM_WRITE8(ddenlovr_oki_bank_w, 0x00ff)
- AM_RANGE(0x3001c0, 0x3001cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)// Sound
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0x300040, 0x300047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0x300048, 0x30004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0x300050, 0x300057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0x300058, 0x30005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0x300069, 0x300069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x30006b, 0x30006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x30006d, 0x30006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x300070, 0x300071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover)
+ map(0x300080, 0x300083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0x300086, 0x300087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
+ map(0x3000c0, 0x3000c3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x300100, 0x30011f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x300140, 0x300143).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x300180, 0x300181).portr("P1");
+ map(0x300182, 0x300183).portr("P2");
+ map(0x300184, 0x300185).portr("SYSTEM");
+ map(0x300186, 0x300187).r(this, FUNC(ddenlovr_state::ddenlovj_dsw_r)); // DSW
+ map(0x300189, 0x300189).w(this, FUNC(ddenlovr_state::ddenlovj_coincounter_w));
+ map(0x30018b, 0x30018b).w(this, FUNC(ddenlovr_state::ddenlovr_select_w)); // DSW select
+ map(0x30018d, 0x30018d).w(this, FUNC(ddenlovr_state::ddenlovr_oki_bank_w));
+ map(0x3001c0, 0x3001cf).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x300241, 0x300241).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));// Sound
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
READ16_MEMBER(ddenlovr_state::ddenlovrk_protection1_r)
@@ -2067,73 +2069,75 @@ WRITE16_MEMBER(ddenlovr_state::ddenlovrk_protection2_w)
m_oki->set_rom_bank((*m_protection2) & 0x7);
}
-ADDRESS_MAP_START(ddenlovr_state::ddenlovrk_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
+void ddenlovr_state::ddenlovrk_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
- AM_RANGE(0x100000, 0x100001) AM_RAM_READ(ddenlovrk_protection1_r) AM_SHARE("protection1")
- AM_RANGE(0x200000, 0x200001) AM_READWRITE(ddenlovrk_protection2_r, ddenlovrk_protection2_w) AM_SHARE("protection2")
+ map(0x100000, 0x100001).ram().r(this, FUNC(ddenlovr_state::ddenlovrk_protection1_r)).share("protection1");
+ map(0x200000, 0x200001).rw(this, FUNC(ddenlovr_state::ddenlovrk_protection2_r), FUNC(ddenlovr_state::ddenlovrk_protection2_w)).share("protection2");
- AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
+ map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
// AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00
- AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff)
- AM_RANGE(0xe00070, 0xe00071) AM_READNOP
- AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
-
- AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
- AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
- AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
- AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
- AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0xe00070, 0xe00071).nopr();
+ map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
+ map(0xe00100, 0xe00101).portr("P1");
+ map(0xe00102, 0xe00103).portr("P2");
+ map(0xe00104, 0xe00105).portr("SYSTEM");
+ map(0xe00200, 0xe00201).portr("DSW");
+ map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
-ADDRESS_MAP_START(ddenlovr_state::ddenlovr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x300000, 0x300001) AM_WRITE8(ddenlovr_oki_bank_w, 0x00ff)
+void ddenlovr_state::ddenlovr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
- AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
+ map(0x300001, 0x300001).w(this, FUNC(ddenlovr_state::ddenlovr_oki_bank_w));
+
+ map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
// AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00
- AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff)
- AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
- AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
-
- AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
- AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
- AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
- AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
- AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0xe00070, 0xe00071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover)
+ map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
+
+ map(0xe00100, 0xe00101).portr("P1");
+ map(0xe00102, 0xe00103).portr("P2");
+ map(0xe00104, 0xe00105).portr("SYSTEM");
+ map(0xe00200, 0xe00201).portr("DSW");
+ map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
CUSTOM_INPUT_MEMBER(ddenlovr_state::nettoqc_special_r)
@@ -2177,38 +2181,39 @@ WRITE8_MEMBER(ddenlovr_state::nettoqc_oki_bank_w )
m_oki->set_rom_bank(data & 3);
}
-ADDRESS_MAP_START(ddenlovr_state::nettoqc_map)
- AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
-
- AM_RANGE(0x200000, 0x2003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
- AM_RANGE(0x200c02, 0x200c03) AM_READ(nettoqc_protection1_r) // Protection 1
- AM_RANGE(0x200e0a, 0x200e0d) AM_WRITEONLY AM_SHARE("protection1") // ""
- AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ?
-
- AM_RANGE(0x300040, 0x300047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0x300048, 0x30004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0x300050, 0x300057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0x300058, 0x30005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0x300068, 0x300069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0x30006a, 0x30006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0x30006c, 0x30006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff)
- AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
- AM_RANGE(0x300080, 0x300083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
- AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
- AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
- AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
- AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x300186, 0x300187) AM_READ(nettoqc_input_r) // DSW's
- AM_RANGE(0x300188, 0x300189) AM_WRITE8(nettoqc_coincounter_w, 0x00ff)
- AM_RANGE(0x30018a, 0x30018b) AM_WRITE8(ddenlovr_select_w, 0x00ff)
- AM_RANGE(0x30018c, 0x30018d) AM_WRITE8(nettoqc_oki_bank_w, 0x00ff)
- AM_RANGE(0x3001c0, 0x3001cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void ddenlovr_state::nettoqc_map(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom(); // ROM
+
+ map(0x200000, 0x2003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
+ map(0x200c02, 0x200c03).r(this, FUNC(ddenlovr_state::nettoqc_protection1_r)); // Protection 1
+ map(0x200e0a, 0x200e0d).writeonly().share("protection1"); // ""
+ map(0x201000, 0x2017ff).writeonly(); // ?
+
+ map(0x300040, 0x300047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0x300048, 0x30004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0x300050, 0x300057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0x300058, 0x30005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0x300069, 0x300069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x30006b, 0x30006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x30006d, 0x30006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x300070, 0x300071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover)
+ map(0x300080, 0x300083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0x300086, 0x300087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
+ map(0x3000c0, 0x3000c3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x300100, 0x30011f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x300140, 0x300143).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x300180, 0x300181).portr("P1");
+ map(0x300182, 0x300183).portr("P2");
+ map(0x300184, 0x300185).portr("SYSTEM");
+ map(0x300186, 0x300187).r(this, FUNC(ddenlovr_state::nettoqc_input_r)); // DSW's
+ map(0x300189, 0x300189).w(this, FUNC(ddenlovr_state::nettoqc_coincounter_w));
+ map(0x30018b, 0x30018b).w(this, FUNC(ddenlovr_state::ddenlovr_select_w));
+ map(0x30018d, 0x30018d).w(this, FUNC(ddenlovr_state::nettoqc_oki_bank_w));
+ map(0x3001c0, 0x3001cf).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x300241, 0x300241).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
READ16_MEMBER(ddenlovr_state::ultrchmp_protection2_r)
@@ -2226,42 +2231,43 @@ WRITE16_MEMBER(ddenlovr_state::ultrchmp_protection2_w)
m_oki->set_rom_bank(data & 0xf);
}
-ADDRESS_MAP_START(ddenlovr_state::ultrchmp_map)
- AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
-
- AM_RANGE(0x224680, 0x224681) AM_RAM_READ(ultrchmp_protection2_r) AM_SHARE("protection2") // Protection 2
- AM_RANGE(0x313570, 0x313571) AM_WRITE(ultrchmp_protection2_w) // "" + OKI bank
-
- AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
-
- AM_RANGE(0xd00c02, 0xd00c03) AM_READ(nettoqc_protection1_r) // Protection 1
- AM_RANGE(0xd00e0a, 0xd00e0d) AM_WRITEONLY AM_SHARE("protection1") // ""
-
- AM_RANGE(0xd01000, 0xd017ff) AM_WRITEONLY // ?
-
- AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff)
- AM_RANGE(0xe00070, 0xe00071) AM_READNOP
- AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
-
- AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
- AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
- AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
- AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
- AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (Battey-backed)
-ADDRESS_MAP_END
+void ddenlovr_state::ultrchmp_map(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom(); // ROM
+
+ map(0x224680, 0x224681).ram().r(this, FUNC(ddenlovr_state::ultrchmp_protection2_r)).share("protection2"); // Protection 2
+ map(0x313570, 0x313571).w(this, FUNC(ddenlovr_state::ultrchmp_protection2_w)); // "" + OKI bank
+
+ map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
+
+ map(0xd00c02, 0xd00c03).r(this, FUNC(ddenlovr_state::nettoqc_protection1_r)); // Protection 1
+ map(0xd00e0a, 0xd00e0d).writeonly().share("protection1"); // ""
+
+ map(0xd01000, 0xd017ff).writeonly(); // ?
+
+ map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0xe00070, 0xe00071).nopr();
+ map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
+
+ map(0xe00100, 0xe00101).portr("P1");
+ map(0xe00102, 0xe00103).portr("P2");
+ map(0xe00104, 0xe00105).portr("SYSTEM");
+ map(0xe00200, 0xe00201).portr("DSW");
+ map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xff0000, 0xffffff).ram().share("nvram"); // RAM (Battey-backed)
+}
/***************************************************************************
@@ -2291,78 +2297,82 @@ WRITE8_MEMBER(ddenlovr_state::rongrong_select_w)
}
-ADDRESS_MAP_START(ddenlovr_state::quizchq_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
-ADDRESS_MAP_END
+void ddenlovr_state::quizchq_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0x8000, 0x81ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+}
-ADDRESS_MAP_START(ddenlovr_state::quizchq_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
-
- AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(ddenlovr_select2_w)
- AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r)
-
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym2413", ym2413_device, write)
-
- AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
-
- AM_RANGE(0xa0, 0xaf) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(quizchq_oki_bank_w)
- AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at 8000
-ADDRESS_MAP_END
+void ddenlovr_state::quizchq_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::rongrong_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1b, 0x1b).rw(this, FUNC(ddenlovr_state::rongrong_blitter_busy_r), FUNC(ddenlovr_state::rongrong_blitter_busy_w));
+ map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::rongrong_input_r));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::rongrong_select_w));
+ map(0x20, 0x20).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w));
+ map(0x22, 0x23).r(this, FUNC(ddenlovr_state::rongrong_input2_r));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x60, 0x61).w("ym2413", FUNC(ym2413_device::write));
-ADDRESS_MAP_START(ddenlovr_state::rongrong_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w)
-ADDRESS_MAP_END
+ map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
-ADDRESS_MAP_START(ddenlovr_state::rongrong_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
-
- AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w)
-
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym2413", ym2413_device, write)
-
- AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
-
- AM_RANGE(0xa0, 0xa0) AM_WRITE(ddenlovr_select2_w)
- AM_RANGE(0xa2, 0xa3) AM_READ(rongrong_input2_r)
- AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at f000, and protection device at f705/f706/f601
-ADDRESS_MAP_END
+ map(0xa0, 0xaf).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0xc0, 0xc0).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w));
+ map(0xc2, 0xc2).nopw(); // enables palette RAM at 8000
+}
+
+
+
+void ddenlovr_state::rongrong_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0xf000, 0xf1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+}
+
+void ddenlovr_state::rongrong_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::rongrong_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1b, 0x1b).rw(this, FUNC(ddenlovr_state::rongrong_blitter_busy_r), FUNC(ddenlovr_state::rongrong_blitter_busy_w));
+
+ map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::rongrong_input_r));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::rongrong_select_w));
+
+ map(0x20, 0x2f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x60, 0x61).w("ym2413", FUNC(ym2413_device::write));
+
+ map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+
+ map(0xa0, 0xa0).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w));
+ map(0xa2, 0xa3).r(this, FUNC(ddenlovr_state::rongrong_input2_r));
+ map(0xc2, 0xc2).nopw(); // enables palette RAM at f000, and protection device at f705/f706/f601
+}
/*
1e input select,1c input read
3e=dsw1 3d=dsw2
@@ -2429,77 +2439,81 @@ READ8_MEMBER(ddenlovr_state::mmpanic_link_r){ return 0xff; }
/* Main CPU */
-ADDRESS_MAP_START(ddenlovr_state::mmpanic_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x0051, 0x0051) AM_READ(magic_r) // ?
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
-ADDRESS_MAP_END
+void ddenlovr_state::mmpanic_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x0051, 0x0051).r(this, FUNC(ddenlovr_state::magic_r)); // ?
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0x8000, 0x81ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+}
-ADDRESS_MAP_START(ddenlovr_state::mmpanic_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
+void ddenlovr_state::mmpanic_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
// Layers 0-3:
- AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x38, 0x38) AM_READ(unk_r) // ? must be 78 on startup
+ map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x38, 0x38).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
// Layers 4-7:
- AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base2_w)
- AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask2_w)
- AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen2_w)
- AM_RANGE(0x4c, 0x4f) AM_WRITE(ddenlovr_transparency_mask2_w)
- AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor2_w)
- AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority2_w)
- AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable2_w)
- AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup
-
- AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w)
- AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r) // Video Chip
- AM_RANGE(0x64, 0x65) AM_WRITE(mmpanic_blitter2_w)
- AM_RANGE(0x68, 0x68) AM_WRITE(ddenlovr_select_w)
- AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w)
- AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0")
- AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1")
- AM_RANGE(0x6c, 0x6d) AM_READ(mmpanic_link_r) // Other cabinets?
- AM_RANGE(0x74, 0x74) AM_WRITE(mmpanic_rombank_w)
- AM_RANGE(0x78, 0x78) AM_WRITENOP // 0, during RST 08 (irq acknowledge?)
- AM_RANGE(0x7c, 0x7c) AM_DEVREADWRITE("oki", okim6295_device, read, write) // Sound
- AM_RANGE(0x8c, 0x8c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x88, 0x88) AM_WRITE(mmpanic_leds_w) // Leds
- AM_RANGE(0x90, 0x90) AM_WRITENOP // written just before port 8c
- AM_RANGE(0x94, 0x94) AM_READ_PORT("DSW1")
- AM_RANGE(0x98, 0x98) AM_READ_PORT("DSW2")
- AM_RANGE(0x9c, 0x9c) AM_READ_PORT("DSW3") // DSW 1&2 high bits
- AM_RANGE(0xa6, 0xa6) AM_WRITE(mmpanic_leds2_w) //
-ADDRESS_MAP_END
+ map(0x40, 0x43).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base2_w));
+ map(0x44, 0x47).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask2_w));
+ map(0x48, 0x4b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen2_w));
+ map(0x4c, 0x4f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask2_w));
+ map(0x54, 0x54).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor2_w));
+ map(0x55, 0x55).w(this, FUNC(ddenlovr_state::ddenlovr_priority2_w));
+ map(0x56, 0x56).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable2_w));
+ map(0x58, 0x58).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+
+ map(0x60, 0x61).w(this, FUNC(ddenlovr_state::mmpanic_blitter_w));
+ map(0x63, 0x63).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); // Video Chip
+ map(0x64, 0x65).w(this, FUNC(ddenlovr_state::mmpanic_blitter2_w));
+ map(0x68, 0x68).w(this, FUNC(ddenlovr_state::ddenlovr_select_w));
+ map(0x69, 0x69).w(this, FUNC(ddenlovr_state::mmpanic_lockout_w));
+ map(0x6a, 0x6a).portr("IN0");
+ map(0x6b, 0x6b).portr("IN1");
+ map(0x6c, 0x6d).r(this, FUNC(ddenlovr_state::mmpanic_link_r)); // Other cabinets?
+ map(0x74, 0x74).w(this, FUNC(ddenlovr_state::mmpanic_rombank_w));
+ map(0x78, 0x78).nopw(); // 0, during RST 08 (irq acknowledge?)
+ map(0x7c, 0x7c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x8c, 0x8c).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x88, 0x88).w(this, FUNC(ddenlovr_state::mmpanic_leds_w)); // Leds
+ map(0x90, 0x90).nopw(); // written just before port 8c
+ map(0x94, 0x94).portr("DSW1");
+ map(0x98, 0x98).portr("DSW2");
+ map(0x9c, 0x9c).portr("DSW3"); // DSW 1&2 high bits
+ map(0xa6, 0xa6).w(this, FUNC(ddenlovr_state::mmpanic_leds2_w)); //
+}
/* Sound CPU */
-ADDRESS_MAP_START(ddenlovr_state::mmpanic_sound_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x66ff) AM_RAM // RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM // ROM
-ADDRESS_MAP_END
+void ddenlovr_state::mmpanic_sound_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x66ff).ram(); // RAM
+ map(0x8000, 0xffff).rom(); // ROM
+}
-ADDRESS_MAP_START(ddenlovr_state::mmpanic_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x02, 0x02) AM_READNOP // read just before port 00
- AM_RANGE(0x04, 0x04) AM_NOP // read only once at the start
- AM_RANGE(0x06, 0x06) AM_WRITENOP // almost always 1, sometimes 0
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void ddenlovr_state::mmpanic_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x02, 0x02).nopr(); // read just before port 00
+ map(0x04, 0x04).noprw(); // read only once at the start
+ map(0x06, 0x06).nopw(); // almost always 1, sometimes 0
+ map(0x08, 0x09).w("ym2413", FUNC(ym2413_device::write));
+ map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x0e, 0x0e).w("aysnd", FUNC(ay8910_device::address_w));
+}
@@ -2509,15 +2523,16 @@ ADDRESS_MAP_END
/* Main CPU */
-ADDRESS_MAP_START(ddenlovr_state::funkyfig_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
+void ddenlovr_state::funkyfig_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
- AM_RANGE(0x8400, 0x87ff) AM_WRITENOP
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).bankr("bank1");
+ map(0x8000, 0x81ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+ map(0x8400, 0x87ff).nopw();
+}
READ8_MEMBER(ddenlovr_state::funkyfig_busy_r)
@@ -2590,47 +2605,49 @@ WRITE8_MEMBER(ddenlovr_state::funkyfig_lockout_w)
}
}
-ADDRESS_MAP_START(ddenlovr_state::funkyfig_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write) // Sound
- AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w) // Leds
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x04, 0x04) AM_READ(funkyfig_busy_r)
- AM_RANGE(0x1c, 0x1c) AM_READ(funkyfig_dsw_r)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(funkyfig_rombank_w)
- AM_RANGE(0x20, 0x21) AM_WRITE(funkyfig_blitter_w)
- AM_RANGE(0x23, 0x23) AM_READ(rongrong_gfxrom_r) // Video Chip
- AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
+void ddenlovr_state::funkyfig_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x01, 0x01).w(this, FUNC(ddenlovr_state::mmpanic_leds_w)); // Leds
+ map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x04, 0x04).r(this, FUNC(ddenlovr_state::funkyfig_busy_r));
+ map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::funkyfig_dsw_r));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::funkyfig_rombank_w));
+ map(0x20, 0x21).w(this, FUNC(ddenlovr_state::funkyfig_blitter_w));
+ map(0x23, 0x23).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); // Video Chip
+ map(0x40, 0x4f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
// Layers 0-3:
- AM_RANGE(0x60, 0x63) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x64, 0x67) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x68, 0x6b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x6c, 0x6f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x74, 0x74) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x75, 0x75) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x76, 0x76) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x78, 0x78) AM_READ(unk_r) // ? must be 78 on startup
-
- AM_RANGE(0x80, 0x80) AM_WRITE(ddenlovr_select2_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(funkyfig_lockout_w)
- AM_RANGE(0x82, 0x82) AM_READ(funkyfig_coin_r)
- AM_RANGE(0x83, 0x83) AM_READ(funkyfig_key_r)
-
- AM_RANGE(0xa2, 0xa2) AM_WRITE(mmpanic_leds2_w)
-ADDRESS_MAP_END
+ map(0x60, 0x63).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x64, 0x67).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x68, 0x6b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x6c, 0x6f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x74, 0x74).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x75, 0x75).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x76, 0x76).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x78, 0x78).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w));
+ map(0x81, 0x81).w(this, FUNC(ddenlovr_state::funkyfig_lockout_w));
+ map(0x82, 0x82).r(this, FUNC(ddenlovr_state::funkyfig_coin_r));
+ map(0x83, 0x83).r(this, FUNC(ddenlovr_state::funkyfig_key_r));
+
+ map(0xa2, 0xa2).w(this, FUNC(ddenlovr_state::mmpanic_leds2_w));
+}
/* Sound CPU */
-ADDRESS_MAP_START(ddenlovr_state::funkyfig_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x04) AM_READNOP // read only once at the start
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void ddenlovr_state::funkyfig_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x04).nopr(); // read only once at the start
+ map(0x08, 0x09).w("ym2413", FUNC(ym2413_device::write));
+ map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x0e, 0x0e).w("aysnd", FUNC(ay8910_device::address_w));
+}
/***************************************************************************
@@ -2645,12 +2662,13 @@ WRITE8_MEMBER(ddenlovr_state::hanakanz_rombank_w)
membank("bank2")->set_entry(((data & 0xf0) >> 4));
}
-ADDRESS_MAP_START(ddenlovr_state::hanakanz_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
-ADDRESS_MAP_END
+void ddenlovr_state::hanakanz_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+}
WRITE8_MEMBER(ddenlovr_state::hanakanz_keyb_w)
@@ -2766,94 +2784,98 @@ READ8_MEMBER(ddenlovr_state::hanakanz_rand_r)
return machine().rand();
}
-ADDRESS_MAP_START(ddenlovr_state::hanakanz_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x91, 0x92) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ddenlovr_state::hkagerou_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w)
- AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+void ddenlovr_state::hanakanz_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0x90, 0x90).portr("SYSTEM");
+ map(0x91, 0x92).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r));
+ map(0x93, 0x93).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
+ map(0x94, 0x94).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x96, 0x96).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write));
+ map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe0, 0xef).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
+
+
+void ddenlovr_state::hkagerou_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write));
+ map(0xb0, 0xb0).portr("SYSTEM");
+ map(0xb1, 0xb2).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r));
+ map(0xb3, 0xb3).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
+ map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0xb6, 0xb6).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe0, 0xef).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
// same as hkagerou, different inputs, no RTC
-ADDRESS_MAP_START(ddenlovr_state::kotbinyo_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
+void ddenlovr_state::kotbinyo_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write));
+ map(0xb0, 0xb0).portr("SYSTEM");
// AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0xb1, 0xb1) AM_READ_PORT("KEYB0")
- AM_RANGE(0xb2, 0xb2) AM_READ_PORT("KEYB1")
- AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w)
+ map(0xb1, 0xb1).portr("KEYB0");
+ map(0xb2, 0xb2).portr("KEYB1");
+ map(0xb3, 0xb3).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
// AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0xb6, 0xb6).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+}
// same as hkagerou, different inputs, no RTC
-ADDRESS_MAP_START(ddenlovr_state::kotbinsp_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
+void ddenlovr_state::kotbinsp_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write));
+ map(0x90, 0x90).portr("SYSTEM");
// AM_RANGE(0x91, 0x91) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0x91, 0x91) AM_READ_PORT("KEYB0")
- AM_RANGE(0x92, 0x92) AM_READ_PORT("KEYB1")
- AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w)
+ map(0x91, 0x91).portr("KEYB0");
+ map(0x92, 0x92).portr("KEYB1");
+ map(0x93, 0x93).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
// AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x96, 0x96).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(ddenlovr_state::mjreach1_protection_w)
@@ -2866,26 +2888,27 @@ READ8_MEMBER(ddenlovr_state::mjreach1_protection_r)
return m_prot_val;
}
-ADDRESS_MAP_START(ddenlovr_state::mjreach1_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0x90, 0x90) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x92, 0x92) AM_READ(hanakanz_rand_r)
- AM_RANGE(0x93, 0x93) AM_READWRITE(mjreach1_protection_r, mjreach1_protection_w)
- AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0x97, 0x97) AM_WRITE(hanakanz_coincounter_w)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+void ddenlovr_state::mjreach1_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0x90, 0x90).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x92, 0x92).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0x93, 0x93).rw(this, FUNC(ddenlovr_state::mjreach1_protection_r), FUNC(ddenlovr_state::mjreach1_protection_w));
+ map(0x94, 0x94).portr("SYSTEM");
+ map(0x95, 0x96).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r));
+ map(0x97, 0x97).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
+ map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write));
+ map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe0, 0xef).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
/***************************************************************************
@@ -2992,28 +3015,29 @@ WRITE8_MEMBER(ddenlovr_state::mjchuuka_oki_bank_w )
#endif
}
-ADDRESS_MAP_START(ddenlovr_state::mjchuuka_portmap) // 16 bit I/O
- AM_RANGE(0x13, 0x13) AM_MIRROR(0xff00) AM_READ(hanakanz_rand_r)
- AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_oki_bank_w)
- AM_RANGE(0x20, 0x20) AM_SELECT(0xff00) AM_WRITE(mjchuuka_blitter_w)
- AM_RANGE(0x21, 0x21) AM_SELECT(0xff00) AM_WRITE(mjchuuka_palette_w)
- AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_0_r)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_coincounter_w)
- AM_RANGE(0x41, 0x41) AM_MIRROR(0xff00) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x42, 0x42) AM_MIRROR(0xff00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x43, 0x44) AM_MIRROR(0xff00) AM_READ(mjchuuka_keyb_r)
- AM_RANGE(0x45, 0x45) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_1_r)
- AM_RANGE(0x60, 0x60) AM_MIRROR(0xff00) AM_READ_PORT("DSW1")
- AM_RANGE(0x61, 0x61) AM_MIRROR(0xff00) AM_READ_PORT("DSW2")
- AM_RANGE(0x62, 0x62) AM_MIRROR(0xff00) AM_READ_PORT("DSW3")
- AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4")
- AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5") // DSW 1-4 high bits
- AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void ddenlovr_state::mjchuuka_portmap(address_map &map)
+{ // 16 bit I/O
+ map(0x13, 0x13).mirror(0xff00).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0x1c, 0x1c).mirror(0xff00).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x1e, 0x1e).mirror(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_oki_bank_w));
+ map(0x20, 0x20).select(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_blitter_w));
+ map(0x21, 0x21).select(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_palette_w));
+ map(0x23, 0x23).mirror(0xff00).r(this, FUNC(ddenlovr_state::mjchuuka_gfxrom_0_r));
+ map(0x40, 0x40).mirror(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_coincounter_w));
+ map(0x41, 0x41).mirror(0xff00).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x42, 0x42).mirror(0xff00).portr("SYSTEM");
+ map(0x43, 0x44).mirror(0xff00).r(this, FUNC(ddenlovr_state::mjchuuka_keyb_r));
+ map(0x45, 0x45).mirror(0xff00).r(this, FUNC(ddenlovr_state::mjchuuka_gfxrom_1_r));
+ map(0x60, 0x60).mirror(0xff00).portr("DSW1");
+ map(0x61, 0x61).mirror(0xff00).portr("DSW2");
+ map(0x62, 0x62).mirror(0xff00).portr("DSW3");
+ map(0x63, 0x63).mirror(0xff00).portr("DSW4");
+ map(0x64, 0x64).mirror(0xff00).portr("DSW5"); // DSW 1-4 high bits
+ map(0x80, 0x80).mirror(0xff00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa0, 0xa1).mirror(0xff00).w("ym2413", FUNC(ym2413_device::write));
+ map(0xc0, 0xcf).mirror(0xff00).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0xe0, 0xe1).mirror(0xff00).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/***************************************************************************
@@ -3037,57 +3061,59 @@ READ8_MEMBER(ddenlovr_state::mjschuka_protection_r)
return m_prot_val;
}
-ADDRESS_MAP_START(ddenlovr_state::mjschuka_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int
- AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w)
+void ddenlovr_state::mjschuka_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mjflove_rombank_w));
- AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog
+ map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x38, 0x38).nopr(); // ? ack or watchdog
- AM_RANGE(0x40, 0x41) AM_WRITE(mjmyster_blitter_w)
- AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x50, 0x50) AM_WRITE(mjflove_okibank_w)
+ map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjmyster_blitter_w));
+ map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x50, 0x50).w(this, FUNC(ddenlovr_state::mjflove_okibank_w));
- AM_RANGE(0x54, 0x54) AM_READWRITE(mjschuka_protection_r, mjschuka_protection_w)
+ map(0x54, 0x54).rw(this, FUNC(ddenlovr_state::mjschuka_protection_r), FUNC(ddenlovr_state::mjschuka_protection_w));
// 58 writes ? (0/1)
- AM_RANGE(0x5c, 0x5c) AM_READ(hanakanz_rand_r)
-
- AM_RANGE(0x60, 0x60) AM_WRITE(sryudens_coincounter_w)
- AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x62, 0x62) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x63, 0x64) AM_READ(sryudens_keyb_r)
-
- AM_RANGE(0x68, 0x68) AM_READ_PORT("DSW1")
- AM_RANGE(0x69, 0x69) AM_READ_PORT("DSW2")
- AM_RANGE(0x6a, 0x6a) AM_READ_PORT("DSW3")
- AM_RANGE(0x6b, 0x6b) AM_READ_PORT("DSW4")
- AM_RANGE(0x6c, 0x6c) AM_READ_PORT("DSW5") // DSW 1-4 high bits
- AM_RANGE(0x70, 0x71) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x74, 0x74) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x78, 0x79) AM_DEVWRITE("ym2413", ym2413_device, write)
-ADDRESS_MAP_END
+ map(0x5c, 0x5c).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+
+ map(0x60, 0x60).w(this, FUNC(ddenlovr_state::sryudens_coincounter_w));
+ map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x62, 0x62).portr("SYSTEM");
+ map(0x63, 0x64).r(this, FUNC(ddenlovr_state::sryudens_keyb_r));
+
+ map(0x68, 0x68).portr("DSW1");
+ map(0x69, 0x69).portr("DSW2");
+ map(0x6a, 0x6a).portr("DSW3");
+ map(0x6b, 0x6b).portr("DSW4");
+ map(0x6c, 0x6c).portr("DSW5"); // DSW 1-4 high bits
+ map(0x70, 0x71).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x74, 0x74).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x78, 0x79).w("ym2413", FUNC(ym2413_device::write));
+}
/***************************************************************************
Mahjong The Mysterious World
***************************************************************************/
-ADDRESS_MAP_START(ddenlovr_state::mjmyster_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM/RAM (Banked)
- AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) // RAM enabled by bit 4 of rombank
- AM_RANGE(0xf200, 0xffff) AM_WRITENOP // ""
-ADDRESS_MAP_END
+void ddenlovr_state::mjmyster_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM/RAM (Banked)
+ map(0xf000, 0xf1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); // RAM enabled by bit 4 of rombank
+ map(0xf200, 0xffff).nopw(); // ""
+}
WRITE8_MEMBER(ddenlovr_state::mjmyster_rambank_w)
{
@@ -3168,33 +3194,34 @@ WRITE8_MEMBER(ddenlovr_state::mjmyster_blitter_w)
blitter_w(0, offset, data, 0xfc);
}
-ADDRESS_MAP_START(ddenlovr_state::mjmyster_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(mmpanic_rombank_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w)
- AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w)
- AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r)
- AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
- AM_RANGE(0xc2, 0xc2) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xc3, 0xc3) AM_READ(mjmyster_dsw_r)
-ADDRESS_MAP_END
+void ddenlovr_state::mjmyster_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::mjmyster_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1c, 0x1c).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mmpanic_rombank_w));
+ map(0x20, 0x20).w(this, FUNC(ddenlovr_state::mjmyster_select2_w));
+ map(0x21, 0x21).w(this, FUNC(ddenlovr_state::mjmyster_coincounter_w));
+ map(0x22, 0x22).r(this, FUNC(ddenlovr_state::mjmyster_coins_r));
+ map(0x23, 0x23).r(this, FUNC(ddenlovr_state::mjmyster_keyb_r));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x42, 0x43).w("ym2413", FUNC(ym2413_device::write));
+ map(0x44, 0x44).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x46, 0x46).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x48, 0x48).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+ map(0xc2, 0xc2).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xc3, 0xc3).r(this, FUNC(ddenlovr_state::mjmyster_dsw_r));
+}
/***************************************************************************
Hanafuda Hana Ginga
@@ -3216,15 +3243,16 @@ READ8_MEMBER(ddenlovr_state::hginga_protection_r)
return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xf601 - 0x8000];
}
-ADDRESS_MAP_START(ddenlovr_state::hginga_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM/RAM (Banked)
- AM_RANGE(0xf601, 0xf601) AM_READ(hginga_protection_r)
- AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) // RAM enabled by bit 4 of rombank
- AM_RANGE(0xf700, 0xf706) AM_WRITENOP
-ADDRESS_MAP_END
+void ddenlovr_state::hginga_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM/RAM (Banked)
+ map(0xf601, 0xf601).r(this, FUNC(ddenlovr_state::hginga_protection_r));
+ map(0xf000, 0xf1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); // RAM enabled by bit 4 of rombank
+ map(0xf700, 0xf706).nopw();
+}
READ8_MEMBER(ddenlovr_state::hginga_dsw_r )
{
@@ -3338,31 +3366,32 @@ WRITE8_MEMBER(ddenlovr_state::hginga_blitter_w)
blitter_w(0, offset, data, 0xfc);
}
-ADDRESS_MAP_START(ddenlovr_state::hginga_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
- AM_RANGE(0x22, 0x23) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w)
- AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w)
- AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r)
- AM_RANGE(0x43, 0x43) AM_READ(hginga_input_r)
- AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x80, 0x80) AM_WRITE(hginga_80_w)
- AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0xa8, 0xab) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0xac, 0xaf) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0xb8, 0xb8) AM_READ(unk_r) // ? must be 78 on startup
-ADDRESS_MAP_END
+void ddenlovr_state::hginga_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::hginga_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::mjmyster_rambank_w));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w));
+ map(0x22, 0x23).w("ym2413", FUNC(ym2413_device::write));
+ map(0x24, 0x24).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x26, 0x26).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x28, 0x28).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x40, 0x40).w(this, FUNC(ddenlovr_state::hginga_input_w));
+ map(0x41, 0x41).w(this, FUNC(ddenlovr_state::hginga_coins_w));
+ map(0x42, 0x42).r(this, FUNC(ddenlovr_state::hginga_coins_r));
+ map(0x43, 0x43).r(this, FUNC(ddenlovr_state::hginga_input_r));
+ map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hginga_80_w));
+ map(0xa0, 0xa3).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0xa4, 0xa7).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0xa8, 0xab).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0xac, 0xaf).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xb5, 0xb5).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xb6, 0xb6).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0xb8, 0xb8).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+}
/***************************************************************************
@@ -3437,42 +3466,44 @@ READ8_MEMBER(ddenlovr_state::hgokou_protection_r)
return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xe601 - 0x8000];
}
-ADDRESS_MAP_START(ddenlovr_state::hgokou_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
- AM_RANGE(0xe601, 0xe601) AM_READ(hgokou_protection_r)
- AM_RANGE(0xe700, 0xe706) AM_WRITENOP
-ADDRESS_MAP_END
+void ddenlovr_state::hgokou_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0xe000, 0xe1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+ map(0xe601, 0xe601).r(this, FUNC(ddenlovr_state::hgokou_protection_r));
+ map(0xe700, 0xe706).nopw();
+}
-ADDRESS_MAP_START(ddenlovr_state::hgokou_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int
- AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x4c, 0x4f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup
- AM_RANGE(0x60, 0x60) AM_WRITE(hgokou_dsw_sel_w)
- AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w)
- AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x84, 0x84) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x86, 0x86) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x88, 0x88) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r)
-ADDRESS_MAP_END
+void ddenlovr_state::hgokou_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::hginga_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); // ? ack on RTC int
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w));
+ map(0x20, 0x2f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x40, 0x43).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x44, 0x47).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x48, 0x4b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x4c, 0x4f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x54, 0x54).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x55, 0x55).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x56, 0x56).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x58, 0x58).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+ map(0x60, 0x60).w(this, FUNC(ddenlovr_state::hgokou_dsw_sel_w));
+ map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hgokou_input_w));
+ map(0x62, 0x62).r(this, FUNC(ddenlovr_state::hgokou_input_r));
+ map(0x80, 0x80).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x82, 0x83).w("ym2413", FUNC(ym2413_device::write));
+ map(0x84, 0x84).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x86, 0x86).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x88, 0x88).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xb0, 0xb0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+}
/***************************************************************************
@@ -3503,32 +3534,33 @@ READ8_MEMBER(ddenlovr_state::hgokbang_input_r)
return 0xff;
}
-ADDRESS_MAP_START(ddenlovr_state::hgokbang_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int
- AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x22, 0x23) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(hgokou_dsw_sel_w)
- AM_RANGE(0x41, 0x41) AM_WRITE(hgokou_input_w)
- AM_RANGE(0x42, 0x42) AM_READ(hgokou_input_r)
- AM_RANGE(0x43, 0x43) AM_READ(hgokbang_input_r)
- AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0xa8, 0xab) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0xac, 0xaf) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0xb8, 0xb8) AM_READ(unk_r) // ? must be 78 on startup
- AM_RANGE(0xe0, 0xe0) AM_READ(hanakanz_rand_r)
-ADDRESS_MAP_END
+void ddenlovr_state::hgokbang_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::hginga_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); // ? ack on RTC int
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w));
+ map(0x20, 0x20).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x22, 0x23).w("ym2413", FUNC(ym2413_device::write));
+ map(0x24, 0x24).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x26, 0x26).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x28, 0x28).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x40, 0x40).w(this, FUNC(ddenlovr_state::hgokou_dsw_sel_w));
+ map(0x41, 0x41).w(this, FUNC(ddenlovr_state::hgokou_input_w));
+ map(0x42, 0x42).r(this, FUNC(ddenlovr_state::hgokou_input_r));
+ map(0x43, 0x43).r(this, FUNC(ddenlovr_state::hgokbang_input_r));
+ map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0xa0, 0xa3).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0xa4, 0xa7).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0xa8, 0xab).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0xac, 0xaf).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xb5, 0xb5).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xb6, 0xb6).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0xb8, 0xb8).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+ map(0xe0, 0xe0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+}
/***************************************************************************
@@ -3584,37 +3616,39 @@ WRITE8_MEMBER(ddenlovr_state::hparadis_coin_w)
}
}
-ADDRESS_MAP_START(ddenlovr_state::hparadis_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0xc000, 0xc1ff) AM_WRITE(rongrong_palette_w)
-ADDRESS_MAP_END
+void ddenlovr_state::hparadis_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0xc000, 0xc1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+}
// the RTC seems unused
-ADDRESS_MAP_START(ddenlovr_state::hparadis_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
- AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
- AM_RANGE(0xa0, 0xa0) AM_WRITE(hginga_input_w)
- AM_RANGE(0xa1, 0xa1) AM_WRITE(hparadis_coin_w)
- AM_RANGE(0xa2, 0xa3) AM_READ(hparadis_input_r)
- AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at c000
-ADDRESS_MAP_END
+void ddenlovr_state::hparadis_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::rongrong_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1b, 0x1b).rw(this, FUNC(ddenlovr_state::rongrong_blitter_busy_r), FUNC(ddenlovr_state::rongrong_blitter_busy_w));
+ map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::hparadis_dsw_r));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hparadis_select_w));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x60, 0x61).w("ym2413", FUNC(ym2413_device::write));
+ map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+ map(0xa0, 0xa0).w(this, FUNC(ddenlovr_state::hginga_input_w));
+ map(0xa1, 0xa1).w(this, FUNC(ddenlovr_state::hparadis_coin_w));
+ map(0xa2, 0xa3).r(this, FUNC(ddenlovr_state::hparadis_input_r));
+ map(0xc2, 0xc2).nopw(); // enables palette RAM at c000
+}
/***************************************************************************
@@ -3636,33 +3670,34 @@ READ8_MEMBER(ddenlovr_state::mjmywrld_coins_r)
return 0xff;
}
-ADDRESS_MAP_START(ddenlovr_state::mjmywrld_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
- AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w)
- AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w)
- AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r)
- AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
- AM_RANGE(0xc0, 0xc0) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xe0, 0xe0) AM_READ(mjmyster_dsw_r)
-ADDRESS_MAP_END
+void ddenlovr_state::mjmywrld_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(ddenlovr_state::mjmyster_blitter_w));
+ map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x1c, 0x1c).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w));
+ map(0x20, 0x20).w(this, FUNC(ddenlovr_state::mjmyster_select2_w));
+ map(0x21, 0x21).w(this, FUNC(ddenlovr_state::mjmyster_coincounter_w));
+ map(0x22, 0x22).r(this, FUNC(ddenlovr_state::mjmywrld_coins_r));
+ map(0x23, 0x23).r(this, FUNC(ddenlovr_state::mjmyster_keyb_r));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x42, 0x43).w("ym2413", FUNC(ym2413_device::write));
+ map(0x44, 0x44).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x46, 0x46).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x48, 0x48).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+ map(0xc0, 0xc0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xe0, 0xe0).r(this, FUNC(ddenlovr_state::mjmyster_dsw_r));
+}
/***************************************************************************
@@ -3720,47 +3755,48 @@ READ16_MEMBER(ddenlovr_state::akamaru_e0010d_r)
return 0xffff; // read but not used, it seems
}
-ADDRESS_MAP_START(ddenlovr_state::akamaru_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
+void ddenlovr_state::akamaru_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
- AM_RANGE(0x213570, 0x213571) AM_WRITE(akamaru_protection1_w) // OKI bank
- AM_RANGE(0x624680, 0x624681) AM_READ(akamaru_protection1_r)
+ map(0x213570, 0x213571).w(this, FUNC(ddenlovr_state::akamaru_protection1_w)); // OKI bank
+ map(0x624680, 0x624681).r(this, FUNC(ddenlovr_state::akamaru_protection1_r));
- AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff)
- AM_RANGE(0xd00e00, 0xd00e09) AM_WRITENOP
- AM_RANGE(0xd01000, 0xd017ff) AM_WRITENOP // 0
+ map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff);
+ map(0xd00e00, 0xd00e09).nopw();
+ map(0xd01000, 0xd017ff).nopw(); // 0
- AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff)
- AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff)
- AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff)
- AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff)
- AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff)
- AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff)
- AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
- AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff)
- AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
+ map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff);
+ map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff);
+ map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff);
+ map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff);
+ map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xe00070, 0xe00071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover)
+ map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff);
+ map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip
- AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
- AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
- AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
+ map(0xe00100, 0xe00101).portr("P1");
+ map(0xe00102, 0xe00103).portr("P2");
+ map(0xe00104, 0xe00105).portr("SYSTEM");
- AM_RANGE(0xe00106, 0xe00107) AM_READ(akamaru_protection2_r)
- AM_RANGE(0xe00108, 0xe0010b) AM_WRITEONLY AM_SHARE("protection2")
+ map(0xe00106, 0xe00107).r(this, FUNC(ddenlovr_state::akamaru_protection2_r));
+ map(0xe00108, 0xe0010b).writeonly().share("protection2");
- AM_RANGE(0xe0010c, 0xe0010d) AM_READ(akamaru_e0010d_r)
- AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r) // DSW
+ map(0xe0010c, 0xe0010d).r(this, FUNC(ddenlovr_state::akamaru_e0010d_r));
+ map(0xe00200, 0xe00201).r(this, FUNC(ddenlovr_state::akamaru_dsw_r)); // DSW
- AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r) // Blitter Busy & IRQ
+ map(0xe00204, 0xe00205).r(this, FUNC(ddenlovr_state::akamaru_blitter_r)); // Blitter Busy & IRQ
- AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_READNOP
- AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
- AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff).nopr();
+ map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
/***************************************************************************
@@ -3822,34 +3858,35 @@ WRITE8_MEMBER(ddenlovr_state::mjflove_coincounter_w)
}
}
-ADDRESS_MAP_START(ddenlovr_state::mjflove_portmap) // 16 bit I/O
- AM_RANGE(0x0010, 0x0010) AM_READ(hanakanz_rand_r) AM_MIRROR(0xff00)
- AM_RANGE(0x001c, 0x001c) AM_READ_PORT("DSW2") AM_MIRROR(0xff00)
- AM_RANGE(0x001e, 0x001e) AM_WRITE(hanakanz_keyb_w) AM_MIRROR(0xff00)
- AM_RANGE(0x0020, 0x0023) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x0024, 0x0027) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x0028, 0x002b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x002c, 0x002f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x0034, 0x0034) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x0035, 0x0035) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x0036, 0x0036) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x0038, 0x0038) AM_READNOP // ? ack or watchdog
- AM_RANGE(0x0040, 0x0041) AM_WRITE(mjflove_blitter_w) AM_MIRROR(0xff00)
- AM_RANGE(0x0043, 0x0043) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x0080, 0x0081) AM_READ(mjflove_keyb_r)
- AM_RANGE(0x0082, 0x0082) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x00da, 0x00da) AM_READ(mjflove_protection_r) AM_MIRROR(0xff00)
- AM_RANGE(0x00f2, 0x00f2) AM_WRITE(mjmyster_rambank_w) AM_MIRROR(0xff00)
- AM_RANGE(0x00f8, 0x00f8) AM_WRITE(mjflove_rombank_w) AM_MIRROR(0xff00)
- AM_RANGE(0x00fa, 0x00fa) AM_WRITE(mjflove_okibank_w)
- AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1")
- AM_RANGE(0x0181, 0x0181) AM_WRITENOP // ? int. enable
- AM_RANGE(0x0184, 0x0184) AM_WRITE(mjflove_coincounter_w)
- AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x0280, 0x028f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x0300, 0x0301) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x0380, 0x0380) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+void ddenlovr_state::mjflove_portmap(address_map &map)
+{ // 16 bit I/O
+ map(0x0010, 0x0010).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)).mirror(0xff00);
+ map(0x001c, 0x001c).portr("DSW2").mirror(0xff00);
+ map(0x001e, 0x001e).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)).mirror(0xff00);
+ map(0x0020, 0x0023).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x0024, 0x0027).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x0028, 0x002b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x002c, 0x002f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x0034, 0x0034).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x0035, 0x0035).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x0036, 0x0036).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x0038, 0x0038).nopr(); // ? ack or watchdog
+ map(0x0040, 0x0041).w(this, FUNC(ddenlovr_state::mjflove_blitter_w)).mirror(0xff00);
+ map(0x0043, 0x0043).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x0080, 0x0081).r(this, FUNC(ddenlovr_state::mjflove_keyb_r));
+ map(0x0082, 0x0082).portr("SYSTEM");
+ map(0x00da, 0x00da).r(this, FUNC(ddenlovr_state::mjflove_protection_r)).mirror(0xff00);
+ map(0x00f2, 0x00f2).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)).mirror(0xff00);
+ map(0x00f8, 0x00f8).w(this, FUNC(ddenlovr_state::mjflove_rombank_w)).mirror(0xff00);
+ map(0x00fa, 0x00fa).w(this, FUNC(ddenlovr_state::mjflove_okibank_w));
+ map(0x0100, 0x0100).portr("DSW1");
+ map(0x0181, 0x0181).nopw(); // ? int. enable
+ map(0x0184, 0x0184).w(this, FUNC(ddenlovr_state::mjflove_coincounter_w));
+ map(0x0200, 0x0201).w("ym2413", FUNC(ym2413_device::write));
+ map(0x0280, 0x028f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x0300, 0x0301).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x0380, 0x0380).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/***************************************************************************
@@ -3872,24 +3909,25 @@ READ8_MEMBER(ddenlovr_state::jongtei_busy_r)
return 0x04; // !bit 2 = blitter busy
}
-ADDRESS_MAP_START(ddenlovr_state::jongtei_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, jongtei_okibank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0x43, 0x43) AM_WRITE(hanakanz_coincounter_w)
- AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r)
- AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+void ddenlovr_state::jongtei_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::jongtei_busy_r), FUNC(ddenlovr_state::jongtei_okibank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::jongtei_dsw_keyb_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x40, 0x40).portr("SYSTEM");
+ map(0x41, 0x42).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r));
+ map(0x43, 0x43).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
+ map(0x46, 0x46).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0x60, 0x60).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x63, 0x64).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0x80, 0x81).w("ym2413", FUNC(ym2413_device::write));
+ map(0xa0, 0xa0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xcf).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
/***************************************************************************
@@ -3928,38 +3966,40 @@ READ8_MEMBER(ddenlovr_state::mjgnight_protection_r)
return m_prot_val;
}
-ADDRESS_MAP_START(ddenlovr_state::mjgnight_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, jongtei_okibank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r)
- AM_RANGE(0x46, 0x46) AM_WRITE(mjgnight_coincounter_w)
- AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r)
- AM_RANGE(0x47, 0x47) AM_READWRITE(mjgnight_protection_r, mjgnight_protection_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w)
- AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w)
- AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+void ddenlovr_state::mjgnight_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::jongtei_busy_r), FUNC(ddenlovr_state::jongtei_okibank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::jongtei_dsw_keyb_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x40, 0x40).portr("SYSTEM");
+ map(0x41, 0x42).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r));
+ map(0x46, 0x46).w(this, FUNC(ddenlovr_state::mjgnight_coincounter_w));
+ map(0x46, 0x46).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0x47, 0x47).rw(this, FUNC(ddenlovr_state::mjgnight_protection_r), FUNC(ddenlovr_state::mjgnight_protection_w));
+ map(0x60, 0x60).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w));
+ map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hanakanz_palette_w));
+ map(0x63, 0x64).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0x80, 0x81).w("ym2413", FUNC(ym2413_device::write));
+ map(0xa0, 0xa0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xcf).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
/***************************************************************************
Mahjong Seiryu Densetsu
***************************************************************************/
-ADDRESS_MAP_START(ddenlovr_state::sryudens_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
-ADDRESS_MAP_END
+void ddenlovr_state::sryudens_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0xe000, 0xe1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+}
READ8_MEMBER(ddenlovr_state::sryudens_keyb_r)
{
@@ -4003,36 +4043,37 @@ WRITE8_MEMBER(ddenlovr_state::sryudens_rambank_w)
//logerror("%04x: rambank = %02x\n", m_maincpu->pc(), data);
}
-ADDRESS_MAP_START(ddenlovr_state::sryudens_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int
- AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w)
- AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog
- AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w)
- AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x50, 0x50) AM_READ(hanakanz_rand_r)
- AM_RANGE(0x70, 0x70) AM_WRITE(quizchq_oki_bank_w)
- AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW1")
- AM_RANGE(0x91, 0x91) AM_READ_PORT("DSW2")
- AM_RANGE(0x92, 0x92) AM_READ_PORT("DSW4")
- AM_RANGE(0x93, 0x93) AM_READ_PORT("DSW3")
- AM_RANGE(0x94, 0x94) AM_READ_PORT("DSWTOP")
- AM_RANGE(0x98, 0x98) AM_WRITE(sryudens_coincounter_w)
- AM_RANGE(0x99, 0x99) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x9a, 0x9a) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x9b, 0x9c) AM_READ(sryudens_keyb_r)
-ADDRESS_MAP_END
+void ddenlovr_state::sryudens_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x02, 0x03).w("ym2413", FUNC(ym2413_device::write));
+ map(0x04, 0x05).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mjflove_rombank_w));
+ map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x38, 0x38).nopr(); // ? ack or watchdog
+ map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjflove_blitter_w));
+ map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x50, 0x50).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0x70, 0x70).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w));
+ map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x90, 0x90).portr("DSW1");
+ map(0x91, 0x91).portr("DSW2");
+ map(0x92, 0x92).portr("DSW4");
+ map(0x93, 0x93).portr("DSW3");
+ map(0x94, 0x94).portr("DSWTOP");
+ map(0x98, 0x98).w(this, FUNC(ddenlovr_state::sryudens_coincounter_w));
+ map(0x99, 0x99).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x9a, 0x9a).portr("SYSTEM");
+ map(0x9b, 0x9c).r(this, FUNC(ddenlovr_state::sryudens_keyb_r));
+}
/***************************************************************************
@@ -4057,45 +4098,47 @@ WRITE8_MEMBER(ddenlovr_state::janshinp_coincounter_w)
#endif
}
-ADDRESS_MAP_START(ddenlovr_state::janshinp_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddenlovr_state::janshinp_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW4")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWTOP")
- AM_RANGE(0x08, 0x08) AM_WRITE(janshinp_coincounter_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x0a, 0x0a) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0b, 0x0c) AM_READ(sryudens_keyb_r)
- AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int
- AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w)
- AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog
- AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w)
- AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x50, 0x5f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x60, 0x60) AM_READ(hanakanz_rand_r)
- AM_RANGE(0x70, 0x70) AM_WRITE(quizchq_oki_bank_w)
- AM_RANGE(0x80, 0x80) AM_RAM
- AM_RANGE(0x90, 0x90) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x92, 0x93) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x94, 0x95) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void ddenlovr_state::janshinp_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0xe000, 0xe1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w));
+}
+
+void ddenlovr_state::janshinp_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1");
+ map(0x01, 0x01).portr("DSW2");
+ map(0x02, 0x02).portr("DSW4");
+ map(0x03, 0x03).portr("DSW3");
+ map(0x04, 0x04).portr("DSWTOP");
+ map(0x08, 0x08).w(this, FUNC(ddenlovr_state::janshinp_coincounter_w));
+ map(0x09, 0x09).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x0a, 0x0a).portr("SYSTEM");
+ map(0x0b, 0x0c).r(this, FUNC(ddenlovr_state::sryudens_keyb_r));
+ map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mjflove_rombank_w));
+ map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x38, 0x38).nopr(); // ? ack or watchdog
+ map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjflove_blitter_w));
+ map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x50, 0x5f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x60, 0x60).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0x70, 0x70).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w));
+ map(0x80, 0x80).ram();
+ map(0x90, 0x90).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x92, 0x93).w("ym2413", FUNC(ym2413_device::write));
+ map(0x94, 0x95).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/***************************************************************************
@@ -4142,41 +4185,43 @@ READ8_MEMBER(ddenlovr_state::seljan2_dsw_r )
return 0xff;
}
-ADDRESS_MAP_START(ddenlovr_state::seljan2_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(seljan2_palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddenlovr_state::seljan2_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x1c, 0x1c) AM_READ(seljan2_busy_r) AM_WRITE(hanakanz_keyb_w)
- AM_RANGE(0x1e, 0x1e) AM_WRITE(sryudens_coincounter_w)
- AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
- AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog
- AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w)
- AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r)
- AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0x54, 0x54) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x58, 0x58) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x5c, 0x5c) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) // dsw
- AM_RANGE(0x60, 0x60) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int
- AM_RANGE(0x70, 0x70) AM_WRITE(seljan2_rombank_w)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM") AM_WRITE(seljan2_palette_enab_w) // writes: 1 = palette RAM at b000, 0 = ROM
- AM_RANGE(0x84, 0x84) AM_READ(daimyojn_keyb1_r)
- AM_RANGE(0x88, 0x88) AM_READ(daimyojn_keyb2_r)
- AM_RANGE(0x90, 0x90) AM_WRITE(quizchq_oki_bank_w)
- AM_RANGE(0xa0, 0xa0) AM_READ(hanakanz_rand_r)
-ADDRESS_MAP_END
+void ddenlovr_state::seljan2_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked)
+ map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked)
+ map(0x8000, 0xffff).w(this, FUNC(ddenlovr_state::seljan2_palette_w));
+}
+
+void ddenlovr_state::seljan2_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::seljan2_busy_r)).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w));
+ map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::sryudens_coincounter_w));
+ map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w));
+ map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
+ map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0x38, 0x38).nopr(); // ? ack or watchdog
+ map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjflove_blitter_w));
+ map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r));
+ map(0x50, 0x51).w("ym2413", FUNC(ym2413_device::write));
+ map(0x54, 0x54).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x58, 0x58).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x5c, 0x5c).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // dsw
+ map(0x60, 0x60).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int
+ map(0x70, 0x70).w(this, FUNC(ddenlovr_state::seljan2_rombank_w));
+ map(0x80, 0x80).portr("SYSTEM").w(this, FUNC(ddenlovr_state::seljan2_palette_enab_w)); // writes: 1 = palette RAM at b000, 0 = ROM
+ map(0x84, 0x84).r(this, FUNC(ddenlovr_state::daimyojn_keyb1_r));
+ map(0x88, 0x88).r(this, FUNC(ddenlovr_state::daimyojn_keyb2_r));
+ map(0x90, 0x90).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w));
+ map(0xa0, 0xa0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+}
/***************************************************************************
@@ -4299,47 +4344,49 @@ WRITE8_MEMBER(ddenlovr_state::htengoku_blit_romregion_w)
logerror("%04x: unmapped romregion=%02X\n", m_maincpu->pc(), data);
}
-ADDRESS_MAP_START(ddenlovr_state::htengoku_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(htengoku_select_w) // Controls
- AM_RANGE( 0x21, 0x21 ) AM_WRITE(htengoku_coin_w) //
- AM_RANGE( 0x22, 0x22 ) AM_READ(htengoku_coin_r) //
- AM_RANGE( 0x23, 0x23 ) AM_READ(htengoku_input_r) //
- AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // AY8910
- AM_RANGE( 0x42, 0x42 ) AM_DEVREAD("aysnd", ay8910_device, data_r) //
- AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) //
- AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0xa0, 0xa3 ) AM_WRITE(ddenlovr_palette_base_w) // ddenlovr mixer chip
- AM_RANGE( 0xa4, 0xa7 ) AM_WRITE(ddenlovr_palette_mask_w)
- AM_RANGE( 0xa8, 0xab ) AM_WRITE(ddenlovr_transparency_pen_w)
- AM_RANGE( 0xac, 0xaf ) AM_WRITE(ddenlovr_transparency_mask_w)
+void ddenlovr_state::htengoku_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x07).w(this, FUNC(ddenlovr_state::dynax_blitter_rev2_w)); // Blitter
+ map(0x20, 0x20).w(this, FUNC(ddenlovr_state::htengoku_select_w)); // Controls
+ map(0x21, 0x21).w(this, FUNC(ddenlovr_state::htengoku_coin_w)); //
+ map(0x22, 0x22).r(this, FUNC(ddenlovr_state::htengoku_coin_r)); //
+ map(0x23, 0x23).r(this, FUNC(ddenlovr_state::htengoku_input_r)); //
+ map(0x40, 0x40).w("aysnd", FUNC(ay8910_device::address_w)); // AY8910
+ map(0x42, 0x42).r("aysnd", FUNC(ay8910_device::data_r)); //
+ map(0x44, 0x44).w("aysnd", FUNC(ay8910_device::data_w)); //
+ map(0x46, 0x47).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0xa0, 0xa3).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); // ddenlovr mixer chip
+ map(0xa4, 0xa7).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w));
+ map(0xa8, 0xab).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w));
+ map(0xac, 0xaf).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w));
// b0-b3 ?
- AM_RANGE( 0xb4, 0xb4 ) AM_WRITE(ddenlovr_bgcolor_w)
- AM_RANGE( 0xb5, 0xb5 ) AM_WRITE(ddenlovr_priority_w)
- AM_RANGE( 0xb6, 0xb6 ) AM_WRITE(ddenlovr_layer_enable_w)
- AM_RANGE( 0xb8, 0xb8 ) AM_READ(unk_r) // ? must be 78 on startup
- AM_RANGE( 0xc2, 0xc2 ) AM_WRITE(htengoku_rombank_w) // BANK ROM Select
- AM_RANGE( 0xc0, 0xc0 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0xc1, 0xc1 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0xc3, 0xc3 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0xc4, 0xc4 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0xc5, 0xc5 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(htengoku_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0xe0, 0xe7 ) AM_DEVWRITE("mainlatch", ls259_device, write_d1)
-ADDRESS_MAP_END
+ map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w));
+ map(0xb5, 0xb5).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w));
+ map(0xb6, 0xb6).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w));
+ map(0xb8, 0xb8).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup
+ map(0xc2, 0xc2).w(this, FUNC(ddenlovr_state::htengoku_rombank_w)); // BANK ROM Select
+ map(0xc0, 0xc0).w(this, FUNC(ddenlovr_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0xc1, 0xc1).w(this, FUNC(ddenlovr_state::dynax_extra_scrolly_w)); // screen scroll Y
+ map(0xc3, 0xc3).w(this, FUNC(ddenlovr_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0xc4, 0xc4).w(this, FUNC(ddenlovr_state::dynax_blit_pen_w)); // Destination Pen
+ map(0xc5, 0xc5).w(this, FUNC(ddenlovr_state::dynax_blit_dest_w)); // Destination Layer
+ map(0xc6, 0xc6).w(this, FUNC(ddenlovr_state::htengoku_blit_romregion_w)); // Blitter ROM bank
+ map(0xe0, 0xe7).w(m_mainlatch, FUNC(ls259_device::write_d1));
+}
/***************************************************************************
Hanafuda Hana Tengoku
***************************************************************************/
-ADDRESS_MAP_START(ddenlovr_state::htengoku_mem_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void ddenlovr_state::htengoku_mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram().share("nvram");
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
ADDRESS_MAP_START(dynax_state::htengoku_banked_map)
AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000)
@@ -4502,28 +4549,29 @@ READ8_MEMBER(ddenlovr_state::daimyojn_year_hack_r)
return offset ? 1 : 0; // year = 0x10 (BCD)
}
-ADDRESS_MAP_START(ddenlovr_state::daimyojn_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, daimyojn_okibank_w)
- AM_RANGE(0x2e, 0x2e) AM_WRITE(daimyojn_palette_sel_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_blitter_reg_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
- AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
- AM_RANGE(0x40, 0x40) AM_WRITE(daimyojn_blitter_data_palette_w)
- AM_RANGE(0x42, 0x44) AM_READ(hanakanz_gfxrom_r)
- AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x8a, 0x8b) AM_READ(daimyojn_year_hack_r) // ?
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write)
- AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa8, 0xa8) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xaa, 0xaa) AM_READ(daimyojn_keyb1_r)
- AM_RANGE(0xac, 0xac) AM_READ(daimyojn_keyb2_r)
- AM_RANGE(0xae, 0xae) AM_WRITE(hanakanz_coincounter_w)
- AM_RANGE(0xb0, 0xb0) AM_WRITE(mjmyster_rambank_w)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(mjflove_rombank_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(hanakanz_rand_r)
- AM_RANGE(0xe0, 0xe0) AM_READWRITE(daimyojn_protection_r, daimyojn_protection_w)
-ADDRESS_MAP_END
+void ddenlovr_state::daimyojn_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::jongtei_busy_r), FUNC(ddenlovr_state::daimyojn_okibank_w));
+ map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::daimyojn_palette_sel_w));
+ map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w));
+ map(0x31, 0x31).w(this, FUNC(ddenlovr_state::jongtei_dsw_keyb_w));
+ map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r));
+ map(0x40, 0x40).w(this, FUNC(ddenlovr_state::daimyojn_blitter_data_palette_w));
+ map(0x42, 0x44).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r));
+ map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x8a, 0x8b).r(this, FUNC(ddenlovr_state::daimyojn_year_hack_r)); // ?
+ map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write));
+ map(0xa2, 0xa2).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa8, 0xa8).portr("SYSTEM");
+ map(0xaa, 0xaa).r(this, FUNC(ddenlovr_state::daimyojn_keyb1_r));
+ map(0xac, 0xac).r(this, FUNC(ddenlovr_state::daimyojn_keyb2_r));
+ map(0xae, 0xae).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w));
+ map(0xb0, 0xb0).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w));
+ map(0xc0, 0xc0).w(this, FUNC(ddenlovr_state::mjflove_rombank_w));
+ map(0xd0, 0xd0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r));
+ map(0xe0, 0xe0).rw(this, FUNC(ddenlovr_state::daimyojn_protection_r), FUNC(ddenlovr_state::daimyojn_protection_w));
+}
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index d00c1528e75..c0ecf4f353b 100644
--- a/src/mame/drivers/ddragon.cpp
+++ b/src/mame/drivers/ddragon.cpp
@@ -489,48 +489,50 @@ READ8_MEMBER(ddragon_state::dd_adpcm_status_r)
*
*************************************/
-ADDRESS_MAP_START(ddragon_state::ddragon_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x1000, 0x11ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1200, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x2000, 0x21ff) AM_READWRITE(ddragon_comram_r, ddragon_comram_w) AM_SHARE("comram") AM_MIRROR(0x0600)
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1")
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2")
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("EXTRA")
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0")
- AM_RANGE(0x3804, 0x3804) AM_READ_PORT("DSW1")
- AM_RANGE(0x3808, 0x3808) AM_WRITE(ddragon_bankswitch_w)
- AM_RANGE(0x3809, 0x3809) AM_WRITEONLY AM_SHARE("scrollx_lo")
- AM_RANGE(0x380a, 0x380a) AM_WRITEONLY AM_SHARE("scrolly_lo")
- AM_RANGE(0x380b, 0x380f) AM_READWRITE(ddragon_interrupt_r, ddragon_interrupt_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ddragon_state::dd2_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x2000, 0x21ff) AM_READWRITE(ddragon_comram_r, ddragon_comram_w) AM_SHARE("comram") AM_MIRROR(0x0600)
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1")
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2")
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("EXTRA")
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0")
- AM_RANGE(0x3804, 0x3804) AM_READ_PORT("DSW1")
- AM_RANGE(0x3808, 0x3808) AM_WRITE(ddragon_bankswitch_w)
- AM_RANGE(0x3809, 0x3809) AM_WRITEONLY AM_SHARE("scrollx_lo")
- AM_RANGE(0x380a, 0x380a) AM_WRITEONLY AM_SHARE("scrolly_lo")
- AM_RANGE(0x380b, 0x380f) AM_READWRITE(ddragon_interrupt_r, ddragon_interrupt_w)
- AM_RANGE(0x3c00, 0x3dff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3e00, 0x3fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ddragon_state::ddragon_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("rambase");
+ map(0x1000, 0x11ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x1200, 0x13ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x1800, 0x1fff).ram().w(this, FUNC(ddragon_state::ddragon_fgvideoram_w)).share("fgvideoram");
+ map(0x2000, 0x21ff).rw(this, FUNC(ddragon_state::ddragon_comram_r), FUNC(ddragon_state::ddragon_comram_w)).share("comram").mirror(0x0600);
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(ddragon_state::ddragon_bgvideoram_w)).share("bgvideoram");
+ map(0x3800, 0x3800).portr("P1");
+ map(0x3801, 0x3801).portr("P2");
+ map(0x3802, 0x3802).portr("EXTRA");
+ map(0x3803, 0x3803).portr("DSW0");
+ map(0x3804, 0x3804).portr("DSW1");
+ map(0x3808, 0x3808).w(this, FUNC(ddragon_state::ddragon_bankswitch_w));
+ map(0x3809, 0x3809).writeonly().share("scrollx_lo");
+ map(0x380a, 0x380a).writeonly().share("scrolly_lo");
+ map(0x380b, 0x380f).rw(this, FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void ddragon_state::dd2_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram();
+ map(0x1800, 0x1fff).ram().w(this, FUNC(ddragon_state::ddragon_fgvideoram_w)).share("fgvideoram");
+ map(0x2000, 0x21ff).rw(this, FUNC(ddragon_state::ddragon_comram_r), FUNC(ddragon_state::ddragon_comram_w)).share("comram").mirror(0x0600);
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(ddragon_state::ddragon_bgvideoram_w)).share("bgvideoram");
+ map(0x3800, 0x3800).portr("P1");
+ map(0x3801, 0x3801).portr("P2");
+ map(0x3802, 0x3802).portr("EXTRA");
+ map(0x3803, 0x3803).portr("DSW0");
+ map(0x3804, 0x3804).portr("DSW1");
+ map(0x3808, 0x3808).w(this, FUNC(ddragon_state::ddragon_bankswitch_w));
+ map(0x3809, 0x3809).writeonly().share("scrollx_lo");
+ map(0x380a, 0x380a).writeonly().share("scrolly_lo");
+ map(0x380b, 0x380f).rw(this, FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w));
+ map(0x3c00, 0x3dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3e00, 0x3fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
@@ -540,32 +542,36 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(ddragon_state::sub_map)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(ddragon_hd63701_internal_registers_r, ddragon_hd63701_internal_registers_w)
- AM_RANGE(0x0020, 0x0fff) AM_RAM
- AM_RANGE(0x8000, 0x81ff) AM_RAM AM_SHARE("comram")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ddragon_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw(this, FUNC(ddragon_state::ddragon_hd63701_internal_registers_r), FUNC(ddragon_state::ddragon_hd63701_internal_registers_w));
+ map(0x0020, 0x0fff).ram();
+ map(0x8000, 0x81ff).ram().share("comram");
+ map(0xc000, 0xffff).rom();
+}
-ADDRESS_MAP_START(ddragon_state::ddragonba_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x8000, 0x81ff) AM_RAM AM_SHARE("comram")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ddragon_state::ddragonba_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x8000, 0x81ff).ram().share("comram");
+ map(0xc000, 0xffff).rom();
+}
-ADDRESS_MAP_START(ddragon_state::dd2_sub_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("comram")
- AM_RANGE(0xd000, 0xd000) AM_WRITE(ddragon2_sub_irq_ack_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(ddragon2_sub_irq_w)
-ADDRESS_MAP_END
+void ddragon_state::dd2_sub_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram().share("comram");
+ map(0xd000, 0xd000).w(this, FUNC(ddragon_state::ddragon2_sub_irq_ack_w));
+ map(0xe000, 0xe000).w(this, FUNC(ddragon_state::ddragon2_sub_irq_w));
+}
-ADDRESS_MAP_START(ddragon_state::ddragonba_sub_portmap)
- AM_RANGE(0x0000, 0x01ff) AM_WRITE(ddragonba_port_w)
-ADDRESS_MAP_END
+void ddragon_state::ddragonba_sub_portmap(address_map &map)
+{
+ map(0x0000, 0x01ff).w(this, FUNC(ddragon_state::ddragonba_port_w));
+}
@@ -575,23 +581,25 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(ddragon_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1800, 0x1800) AM_READ(dd_adpcm_status_r)
- AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write)
- AM_RANGE(0x3800, 0x3807) AM_WRITE(dd_adpcm_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ddragon_state::dd2_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void ddragon_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1800, 0x1800).r(this, FUNC(ddragon_state::dd_adpcm_status_r));
+ map(0x2800, 0x2801).rw("fmsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x3800, 0x3807).w(this, FUNC(ddragon_state::dd_adpcm_w));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void ddragon_state::dd2_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("fmsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp
index dc92e9dbaea..fddd3b85eef 100644
--- a/src/mame/drivers/ddragon3.cpp
+++ b/src/mame/drivers/ddragon3.cpp
@@ -290,101 +290,107 @@ CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_c0_r)
*
*************************************/
-ADDRESS_MAP_START(ddragon3_state::ddragon3_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x000004, 0x000007) AM_WRITENOP
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */
- AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */
- AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w)
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
- AM_RANGE(0x100006, 0x100007) AM_READ_PORT("P3")
- AM_RANGE(0x100000, 0x100001) AM_WRITE(ddragon3_vreg_w)
- AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x100004, 0x100005) AM_WRITE(irq6_ack_w)
- AM_RANGE(0x100006, 0x100007) AM_WRITE(irq5_ack_w)
- AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */
- AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddragon3_state::dd3b_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */
- AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */
- AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w)
- AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */
- AM_RANGE(0x140000, 0x140001) AM_WRITE(ddragon3_vreg_w)
- AM_RANGE(0x140002, 0x140003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x140004, 0x140005) AM_WRITE(irq6_ack_w)
- AM_RANGE(0x140006, 0x140007) AM_WRITE(irq5_ack_w)
- AM_RANGE(0x140008, 0x140009) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2")
- AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3")
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddragon3_state::ctribe_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */
- AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */
- AM_RANGE(0x082800, 0x082fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c000f) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w)
- AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */
- AM_RANGE(0x140000, 0x140001) AM_WRITE(ddragon3_vreg_w)
- AM_RANGE(0x140002, 0x140003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x140004, 0x140005) AM_WRITE(irq6_ack_w)
- AM_RANGE(0x140006, 0x140007) AM_WRITE(irq5_ack_w)
- AM_RANGE(0x140008, 0x140009) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2")
- AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3")
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wwfwfest_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(wwfwfest_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram - 4 bytes per tile */
- AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* BG0 Ram - 4 bytes per tile */
- AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* BG1 Ram - 2 bytes per tile */
- AM_RANGE(0x100000, 0x100007) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w)
- AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w)
- AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w)
- AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite)
- AM_RANGE(0x140010, 0x140011) AM_WRITE8(wwfwfest_priority_w, 0x00ff)
- AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1")
- AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2")
- AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3")
- AM_RANGE(0x140026, 0x140027) AM_READ_PORT("P4")
- AM_RANGE(0x180000, 0x18ffff) AM_READWRITE(wwfwfest_paletteram_r,wwfwfest_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ddragon3_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ddragon3_state::ctribe_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void ddragon3_state::ddragon3_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x000004, 0x000007).nopw();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */
+ map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */
+ map(0x0c0000, 0x0c000f).w(this, FUNC(ddragon3_state::ddragon3_scroll_w));
+ map(0x100000, 0x100001).portr("P1_P2");
+ map(0x100002, 0x100003).portr("SYSTEM");
+ map(0x100004, 0x100005).portr("DSW");
+ map(0x100006, 0x100007).portr("P3");
+ map(0x100000, 0x100001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w));
+ map(0x100003, 0x100003).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x100004, 0x100005).w(this, FUNC(ddragon3_state::irq6_ack_w));
+ map(0x100006, 0x100007).w(this, FUNC(ddragon3_state::irq5_ack_w));
+ map(0x140000, 0x1405ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */
+ map(0x180000, 0x180fff).ram().share("spriteram");
+ map(0x1c0000, 0x1c3fff).ram(); /* work RAM */
+}
+
+void ddragon3_state::dd3b_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */
+ map(0x081000, 0x081fff).ram().share("spriteram");
+ map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */
+ map(0x0c0000, 0x0c000f).w(this, FUNC(ddragon3_state::ddragon3_scroll_w));
+ map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */
+ map(0x140000, 0x140001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w));
+ map(0x140003, 0x140003).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x140004, 0x140005).w(this, FUNC(ddragon3_state::irq6_ack_w));
+ map(0x140006, 0x140007).w(this, FUNC(ddragon3_state::irq5_ack_w));
+ map(0x140008, 0x140009).w(m_spriteram, FUNC(buffered_spriteram16_device::write));
+ map(0x180000, 0x180001).portr("IN0");
+ map(0x180002, 0x180003).portr("IN1");
+ map(0x180004, 0x180005).portr("IN2");
+ map(0x180006, 0x180007).portr("IN3");
+ map(0x1c0000, 0x1c3fff).ram(); /* work RAM */
+}
+
+void ddragon3_state::ctribe_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */
+ map(0x081000, 0x081fff).ram().share("spriteram");
+ map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */
+ map(0x082800, 0x082fff).ram();
+ map(0x0c0000, 0x0c000f).rw(this, FUNC(ddragon3_state::ddragon3_scroll_r), FUNC(ddragon3_state::ddragon3_scroll_w));
+ map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */
+ map(0x140000, 0x140001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w));
+ map(0x140003, 0x140003).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x140004, 0x140005).w(this, FUNC(ddragon3_state::irq6_ack_w));
+ map(0x140006, 0x140007).w(this, FUNC(ddragon3_state::irq5_ack_w));
+ map(0x140008, 0x140009).w(m_spriteram, FUNC(buffered_spriteram16_device::write));
+ map(0x180000, 0x180001).portr("IN0");
+ map(0x180002, 0x180003).portr("IN1");
+ map(0x180004, 0x180005).portr("IN2");
+ map(0x180006, 0x180007).portr("IN3");
+ map(0x1c0000, 0x1c3fff).ram(); /* work RAM */
+}
+
+void wwfwfest_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0c1fff).ram().w(this, FUNC(wwfwfest_state::wwfwfest_fg0_videoram_w)).share("fg0_videoram"); /* FG0 Ram - 4 bytes per tile */
+ map(0x0c2000, 0x0c3fff).ram().share("spriteram"); /* SPR Ram */
+ map(0x080000, 0x080fff).ram().w(this, FUNC(wwfwfest_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* BG0 Ram - 4 bytes per tile */
+ map(0x082000, 0x082fff).ram().w(this, FUNC(wwfwfest_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* BG1 Ram - 2 bytes per tile */
+ map(0x100000, 0x100007).rw(this, FUNC(wwfwfest_state::ddragon3_scroll_r), FUNC(wwfwfest_state::ddragon3_scroll_w));
+ map(0x10000a, 0x10000b).w(this, FUNC(wwfwfest_state::wwfwfest_flipscreen_w));
+ map(0x140000, 0x140003).w(this, FUNC(wwfwfest_state::wwfwfest_irq_ack_w));
+ map(0x14000c, 0x14000d).w(this, FUNC(wwfwfest_state::wwfwfest_soundwrite));
+ map(0x140011, 0x140011).w(this, FUNC(wwfwfest_state::wwfwfest_priority_w));
+ map(0x140020, 0x140021).portr("P1");
+ map(0x140022, 0x140023).portr("P2");
+ map(0x140024, 0x140025).portr("P3");
+ map(0x140026, 0x140027).portr("P4");
+ map(0x180000, 0x18ffff).rw(this, FUNC(wwfwfest_state::wwfwfest_paletteram_r), FUNC(wwfwfest_state::wwfwfest_paletteram_w)).share("palette");
+ map(0x1c0000, 0x1c3fff).ram(); /* Work Ram */
+}
+
+
+void ddragon3_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd800, 0xd800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).w(this, FUNC(ddragon3_state::oki_bankswitch_w));
+}
+
+
+void ddragon3_state::ctribe_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ym2151", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*************************************
*
diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp
index d68fff3d3fb..4e090881c2e 100644
--- a/src/mame/drivers/ddribble.cpp
+++ b/src/mame/drivers/ddribble.cpp
@@ -108,44 +108,48 @@ WRITE8_MEMBER(ddribble_state::ddribble_vlm5030_ctrl_w)
}
-ADDRESS_MAP_START(ddribble_state::cpu0_map)
- AM_RANGE(0x0000, 0x0004) AM_WRITE(K005885_0_w) /* video registers (005885 #1) */
- AM_RANGE(0x0800, 0x0804) AM_WRITE(K005885_1_w) /* video registers (005885 #2) */
- AM_RANGE(0x1800, 0x187f) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") /* palette */
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(ddribble_fg_videoram_w) AM_SHARE("fg_videoram") /* Video RAM 1 */
- AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram_1") /* Object RAM 1 */
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("sharedram") /* shared RAM with CPU #1 */
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(ddribble_bg_videoram_w) AM_SHARE("bg_videoram") /* Video RAM 2 */
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("spriteram_2") /* Object RAM 2 */
- AM_RANGE(0x8000, 0x8000) AM_WRITE(ddribble_bankswitch_w) /* bankswitch control */
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddribble_state::cpu1_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ddribble_sharedram_r, ddribble_sharedram_w) /* shared RAM with CPU #0 */
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(ddribble_snd_sharedram_r, ddribble_snd_sharedram_w) /* shared RAM with CPU #2 */
- AM_RANGE(0x2800, 0x2800) AM_READ_PORT("DSW1")
- AM_RANGE(0x2801, 0x2801) AM_READ_PORT("P1")
- AM_RANGE(0x2802, 0x2802) AM_READ_PORT("P2")
- AM_RANGE(0x2803, 0x2803) AM_READ_PORT("SYSTEM") /* coinsw & start */
- AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("DSW2")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW3")
- AM_RANGE(0x3400, 0x3400) AM_WRITE(ddribble_coin_counter_w) /* coin counters */
- AM_RANGE(0x3c00, 0x3c00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddribble_state::cpu2_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("snd_sharedram") /* shared RAM with CPU #1 */
- AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM2203 */
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* Speech data */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ddribble_state::vlm_map)
- AM_RANGE(0x0000, 0xffff) AM_ROMBANK("vlmbank")
-ADDRESS_MAP_END
+void ddribble_state::cpu0_map(address_map &map)
+{
+ map(0x0000, 0x0004).w(this, FUNC(ddribble_state::K005885_0_w)); /* video registers (005885 #1) */
+ map(0x0800, 0x0804).w(this, FUNC(ddribble_state::K005885_1_w)); /* video registers (005885 #2) */
+ map(0x1800, 0x187f).ram().w("palette", FUNC(palette_device::write_indirect)).share("palette"); /* palette */
+ map(0x2000, 0x2fff).ram().w(this, FUNC(ddribble_state::ddribble_fg_videoram_w)).share("fg_videoram"); /* Video RAM 1 */
+ map(0x3000, 0x3fff).ram().share("spriteram_1"); /* Object RAM 1 */
+ map(0x4000, 0x5fff).ram().share("sharedram"); /* shared RAM with CPU #1 */
+ map(0x6000, 0x6fff).ram().w(this, FUNC(ddribble_state::ddribble_bg_videoram_w)).share("bg_videoram"); /* Video RAM 2 */
+ map(0x7000, 0x7fff).ram().share("spriteram_2"); /* Object RAM 2 */
+ map(0x8000, 0x8000).w(this, FUNC(ddribble_state::ddribble_bankswitch_w)); /* bankswitch control */
+ map(0x8000, 0x9fff).bankr("bank1"); /* banked ROM */
+ map(0xa000, 0xffff).rom(); /* ROM */
+}
+
+void ddribble_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(ddribble_state::ddribble_sharedram_r), FUNC(ddribble_state::ddribble_sharedram_w)); /* shared RAM with CPU #0 */
+ map(0x2000, 0x27ff).rw(this, FUNC(ddribble_state::ddribble_snd_sharedram_r), FUNC(ddribble_state::ddribble_snd_sharedram_w)); /* shared RAM with CPU #2 */
+ map(0x2800, 0x2800).portr("DSW1");
+ map(0x2801, 0x2801).portr("P1");
+ map(0x2802, 0x2802).portr("P2");
+ map(0x2803, 0x2803).portr("SYSTEM"); /* coinsw & start */
+ map(0x2c00, 0x2c00).portr("DSW2");
+ map(0x3000, 0x3000).portr("DSW3");
+ map(0x3400, 0x3400).w(this, FUNC(ddribble_state::ddribble_coin_counter_w)); /* coin counters */
+ map(0x3c00, 0x3c00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void ddribble_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("snd_sharedram"); /* shared RAM with CPU #1 */
+ map(0x1000, 0x1001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM2203 */
+ map(0x3000, 0x3000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* Speech data */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void ddribble_state::vlm_map(address_map &map)
+{
+ map(0x0000, 0xffff).bankr("vlmbank");
+}
static INPUT_PORTS_START( ddribble )
PORT_START("P1")
diff --git a/src/mame/drivers/de_2.cpp b/src/mame/drivers/de_2.cpp
index be9374de77c..1fa92069a5c 100644
--- a/src/mame/drivers/de_2.cpp
+++ b/src/mame/drivers/de_2.cpp
@@ -135,17 +135,18 @@ ADDRESS_MAP_START(de_2_state::de_2_map)
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
-ADDRESS_MAP_START(de_2_state::de_2_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0x2400, 0x2400) AM_READ(sound_latch_r)
- AM_RANGE(0x2800, 0x2800) AM_WRITE(sample_bank_w)
+void de_2_state::de_2_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2400, 0x2400).r(this, FUNC(de_2_state::sound_latch_r));
+ map(0x2800, 0x2800).w(this, FUNC(de_2_state::sample_bank_w));
// 0x2c00 - 4052(?)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(sample_w)
+ map(0x3000, 0x3000).w(this, FUNC(de_2_state::sample_w));
// 0x3800 - Watchdog reset
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("sample_bank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x4000, 0x7fff).bankr("sample_bank");
+ map(0x8000, 0xffff).rom();
+}
static INPUT_PORTS_START( de_2 )
PORT_START("INP0")
diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp
index 8ce7c0a9ace..539bd98f37a 100644
--- a/src/mame/drivers/deadang.cpp
+++ b/src/mame/drivers/deadang.cpp
@@ -64,59 +64,63 @@ READ16_MEMBER(deadang_state::ghunter_trackball_high_r)
/* Memory Maps */
-ADDRESS_MAP_START(deadang_state::main_map)
- AM_RANGE(0x00000, 0x037ff) AM_RAM
- AM_RANGE(0x03800, 0x03fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x05000, 0x05fff) AM_WRITEONLY
- AM_RANGE(0x06000, 0x0600f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0x06010, 0x07fff) AM_WRITEONLY
- AM_RANGE(0x08000, 0x087ff) AM_WRITE(text_w) AM_SHARE("videoram")
- AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY
- AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW")
- AM_RANGE(0x0c000, 0x0cfff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0d000, 0x0dfff) AM_WRITEONLY
- AM_RANGE(0x0e000, 0x0e0ff) AM_WRITEONLY AM_SHARE("scroll_ram")
- AM_RANGE(0x0e100, 0x0ffff) AM_WRITEONLY
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deadang_state::sub_map)
- AM_RANGE(0x00000, 0x037ff) AM_RAM
- AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(foreground_w) AM_SHARE("video_data")
- AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x08000, 0x08001) AM_WRITE(bank_w)
- AM_RANGE(0x0c000, 0x0c001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xe0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deadang_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_device, adr_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm1", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6005, 0x6006) AM_DEVWRITE("adpcm2", seibu_adpcm_device, adr_w)
- AM_RANGE(0x6008, 0x6009) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0x601a, 0x601a) AM_DEVWRITE("adpcm2", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deadang_state::sound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
+void deadang_state::main_map(address_map &map)
+{
+ map(0x00000, 0x037ff).ram();
+ map(0x03800, 0x03fff).ram().share("spriteram");
+ map(0x04000, 0x04fff).ram().share("share1");
+ map(0x05000, 0x05fff).writeonly();
+ map(0x06000, 0x0600f).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0x06010, 0x07fff).writeonly();
+ map(0x08000, 0x087ff).w(this, FUNC(deadang_state::text_w)).share("videoram");
+ map(0x08800, 0x0bfff).writeonly();
+ map(0x0a000, 0x0a001).portr("P1_P2");
+ map(0x0a002, 0x0a003).portr("DSW");
+ map(0x0c000, 0x0cfff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0d000, 0x0dfff).writeonly();
+ map(0x0e000, 0x0e0ff).writeonly().share("scroll_ram");
+ map(0x0e100, 0x0ffff).writeonly();
+ map(0xc0000, 0xfffff).rom();
+}
+
+void deadang_state::sub_map(address_map &map)
+{
+ map(0x00000, 0x037ff).ram();
+ map(0x03800, 0x03fff).ram().w(this, FUNC(deadang_state::foreground_w)).share("video_data");
+ map(0x04000, 0x04fff).ram().share("share1");
+ map(0x08000, 0x08001).w(this, FUNC(deadang_state::bank_w));
+ map(0x0c000, 0x0c001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xe0000, 0xfffff).rom();
+}
+
+void deadang_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4005, 0x4006).w(m_adpcm1, FUNC(seibu_adpcm_device::adr_w));
+ map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401a, 0x401a).w(m_adpcm1, FUNC(seibu_adpcm_device::ctl_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6005, 0x6006).w(m_adpcm2, FUNC(seibu_adpcm_device::adr_w));
+ map(0x6008, 0x6009).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x601a, 0x601a).w(m_adpcm2, FUNC(seibu_adpcm_device::ctl_w));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
+
+void deadang_state::sound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
/* Input Ports */
diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp
index 0a4e9e62600..2f3e3252d64 100644
--- a/src/mame/drivers/dec0.cpp
+++ b/src/mame/drivers/dec0.cpp
@@ -333,7 +333,6 @@ Notes:
#include "cpu/m68000/m68000.h"
#include "cpu/m6502/m6502.h"
-#include "cpu/h6280/h6280.h"
#include "cpu/z80/z80.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/m6805/m68705.h"
@@ -428,57 +427,60 @@ WRITE16_MEMBER(dec0_state::midres_sound_w)
/******************************************************************************/
-ADDRESS_MAP_START(dec0_state::dec0_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */
- AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x242000, 0x24207f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x242400, 0x2427ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
- AM_RANGE(0x242800, 0x243fff) AM_RAM /* Robocop only */
- AM_RANGE(0x244000, 0x245fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x246000, 0x246007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) /* first tile layer */
- AM_RANGE(0x246010, 0x246017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x248000, 0x24807f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x248400, 0x2487ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
- AM_RANGE(0x24a000, 0x24a7ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x24c000, 0x24c007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) /* second tile layer */
- AM_RANGE(0x24c010, 0x24c017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x24c800, 0x24c87f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x24cc00, 0x24cfff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
- AM_RANGE(0x24d000, 0x24d7ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("AN0")
- AM_RANGE(0x300008, 0x300009) AM_READ_PORT("AN1")
- AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
- AM_RANGE(0x30c010, 0x30c01f) AM_WRITE(dec0_control_w) /* Priority, sound, etc. */
- AM_RANGE(0x30c012, 0x30c013) AM_READNOP // clr.w for sprite DMA
- AM_RANGE(0x30c018, 0x30c019) AM_READNOP // clr.w for irq ack
- AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x314000, 0x3147ff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_SHARE("ram") /* Main ram */
- AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec0_state::robocop_sub_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM /* Main ram */
- AM_RANGE(0x1f2000, 0x1f3fff) AM_RAM AM_SHARE("robocop_shared") /* Shared ram */
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("sub", h6280_device, irq_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec0_state::hippodrm_sub_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x180000, 0x18001f) AM_RAM AM_SHARE("hippodrm_shared")
- AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control0_8bit_packed_w)
- AM_RANGE(0x1a0010, 0x1a001f) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control1_8bit_swap_w)
- AM_RANGE(0x1a1000, 0x1a17ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
- AM_RANGE(0x1d0000, 0x1d00ff) AM_READWRITE(hippodrm_prot_r, hippodrm_prot_w)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* Main ram */
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("sub", h6280_device, irq_status_w)
- AM_RANGE(0x1ff402, 0x1ff403) AM_READ_PORT("VBLANK")
-ADDRESS_MAP_END
+void dec0_state::dec0_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x240000, 0x240007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */
+ map(0x240010, 0x240017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x242000, 0x24207f).rw(m_tilegen1, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x242400, 0x2427ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x242800, 0x243fff).ram(); /* Robocop only */
+ map(0x244000, 0x245fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x246000, 0x246007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_0_w)); /* first tile layer */
+ map(0x246010, 0x246017).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x248000, 0x24807f).rw(m_tilegen2, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x248400, 0x2487ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x24a000, 0x24a7ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x24c000, 0x24c007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_0_w)); /* second tile layer */
+ map(0x24c010, 0x24c017).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x24c800, 0x24c87f).rw(m_tilegen3, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x24cc00, 0x24cfff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x24d000, 0x24d7ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x300000, 0x300001).portr("AN0");
+ map(0x300008, 0x300009).portr("AN1");
+ map(0x30c000, 0x30c00b).r(this, FUNC(dec0_state::dec0_controls_r));
+ map(0x30c010, 0x30c01f).w(this, FUNC(dec0_state::dec0_control_w)); /* Priority, sound, etc. */
+ map(0x30c012, 0x30c013).nopr(); // clr.w for sprite DMA
+ 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(0xff8000, 0xffbfff).ram().share("ram"); /* Main ram */
+ map(0xffc000, 0xffc7ff).ram().share("spriteram"); /* Sprites */
+}
+
+void dec0_state::robocop_sub_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x1f0000, 0x1f1fff).ram(); /* Main ram */
+ map(0x1f2000, 0x1f3fff).ram().share("robocop_shared"); /* Shared ram */
+ map(0x1ff400, 0x1ff403).w(m_subcpu, FUNC(h6280_device::irq_status_w));
+}
+
+void dec0_state::hippodrm_sub_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x180000, 0x18001f).ram().share("hippodrm_shared");
+ map(0x1a0000, 0x1a0007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control0_8bit_packed_w));
+ map(0x1a0010, 0x1a001f).w(m_tilegen3, FUNC(deco_bac06_device::pf_control1_8bit_swap_w));
+ map(0x1a1000, 0x1a17ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w));
+ map(0x1d0000, 0x1d00ff).rw(this, FUNC(dec0_state::hippodrm_prot_r), FUNC(dec0_state::hippodrm_prot_w));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8"); /* Main ram */
+ map(0x1ff400, 0x1ff403).w(m_subcpu, FUNC(h6280_device::irq_status_w));
+ map(0x1ff402, 0x1ff403).portr("VBLANK");
+}
@@ -569,114 +571,120 @@ READ16_MEMBER(dec0_state::slyspy_state_r)
}
-ADDRESS_MAP_START(dec0_state::slyspy_protection_map)
- AM_RANGE(0x04000, 0x04001) AM_MIRROR(0x30000) AM_READ(slyspy_state_r) AM_WRITENOP
- AM_RANGE(0x0a000, 0x0a001) AM_MIRROR(0x30000) AM_WRITE(slyspy_state_w)
+void dec0_state::slyspy_protection_map(address_map &map)
+{
+ map(0x04000, 0x04001).mirror(0x30000).r(this, FUNC(dec0_state::slyspy_state_r)).nopw();
+ map(0x0a000, 0x0a001).mirror(0x30000).w(this, FUNC(dec0_state::slyspy_state_w));
// Default state (called by Traps 1, 3, 4, 7, C)
- AM_RANGE(0x00000, 0x00007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w)
- AM_RANGE(0x00010, 0x00017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x02000, 0x0207f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_colscroll_w)
- AM_RANGE(0x02400, 0x027ff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_rowscroll_w)
- AM_RANGE(0x06000, 0x07fff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w)
- AM_RANGE(0x08000, 0x08007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w)
- AM_RANGE(0x08010, 0x08017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x0c000, 0x0c07f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_colscroll_w)
- AM_RANGE(0x0c400, 0x0c7ff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_rowscroll_w)
- AM_RANGE(0x0e000, 0x0ffff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w)
+ map(0x00000, 0x00007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_0_w));
+ map(0x00010, 0x00017).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x02000, 0x0207f).w(m_tilegen2, FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x02400, 0x027ff).w(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x06000, 0x07fff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w));
+ map(0x08000, 0x08007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w));
+ map(0x08010, 0x08017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x0c000, 0x0c07f).w(m_tilegen1, FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x0c400, 0x0c7ff).w(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x0e000, 0x0ffff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w));
// State 1 (Called by Trap 9)
- AM_RANGE(0x18000, 0x19fff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w)
- AM_RANGE(0x1c000, 0x1dfff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w)
+ map(0x18000, 0x19fff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w));
+ map(0x1c000, 0x1dfff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w));
// State 2 (Called by Trap A)
- AM_RANGE(0x20000, 0x21fff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w)
- AM_RANGE(0x22000, 0x23fff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w)
- AM_RANGE(0x2e000, 0x2ffff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w)
+ map(0x20000, 0x21fff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w));
+ map(0x22000, 0x23fff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w));
+ map(0x2e000, 0x2ffff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w));
// State 3 (Called by Trap B)
- AM_RANGE(0x30000, 0x31fff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w)
- AM_RANGE(0x38000, 0x39fff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w)
-ADDRESS_MAP_END
+ map(0x30000, 0x31fff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w));
+ map(0x38000, 0x39fff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w));
+}
-ADDRESS_MAP_START(dec0_state::slyspy_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
+void dec0_state::slyspy_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
/* The location of pf1 & pf2 can change in the 240000 - 24ffff region according to protection */
- AM_RANGE(0x240000, 0x24ffff) AM_DEVICE("pfprotect", address_map_bank_device, amap16)
+ map(0x240000, 0x24ffff).m(m_pfprotect, FUNC(address_map_bank_device::amap16));
/* Pf3 is unaffected by protection */
- AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w)
- AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x300800, 0x30087f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x300c00, 0x300fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
- AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x304000, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */
- AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x314000, 0x314001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x314002, 0x314003) AM_WRITE(dec0_priority_w)
- AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r)
- AM_RANGE(0x31c000, 0x31c00f) AM_READ(slyspy_protection_r) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dec0_state::midres_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x1407ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x160001) AM_WRITE(dec0_priority_w)
- AM_RANGE(0x180000, 0x18000f) AM_READ(midres_controls_r)
- AM_RANGE(0x180008, 0x18000f) AM_WRITENOP /* ?? watchdog ?? */
- AM_RANGE(0x1a0000, 0x1a0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-
- AM_RANGE(0x200000, 0x200007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w)
- AM_RANGE(0x200010, 0x200017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x220000, 0x2207ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x220800, 0x220fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) /* mirror address used in end sequence */
- AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
-
- AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w)
- AM_RANGE(0x280010, 0x280017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x2a0000, 0x2a07ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x2c0000, 0x2c007f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x2c0400, 0x2c07ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
-
- AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w)
- AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec0_state::midresb_map)
- AM_IMPORT_FROM( midres_map )
- AM_RANGE(0x160010, 0x160011) AM_WRITE(dec0_priority_w)
- AM_RANGE(0x180000, 0x18000f) AM_READ(dec0_controls_r)
- AM_RANGE(0x180012, 0x180013) AM_NOP
- AM_RANGE(0x180014, 0x180015) AM_WRITE(midres_sound_w)
- AM_RANGE(0x180018, 0x180019) AM_NOP
- AM_RANGE(0x1a0000, 0x1a0001) AM_READ_PORT("AN0")
- AM_RANGE(0x1a0008, 0x1a0009) AM_READ_PORT("AN1")
-ADDRESS_MAP_END
+ map(0x300000, 0x300007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_0_w));
+ map(0x300010, 0x300017).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x300800, 0x30087f).rw(m_tilegen3, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x300c00, 0x300fff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x301000, 0x3017ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x304000, 0x307fff).ram().share("ram"); /* Sly spy main ram */
+ map(0x308000, 0x3087ff).ram().share("spriteram"); /* Sprites */
+ map(0x310000, 0x3107ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x314001, 0x314001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x314002, 0x314003).w(this, FUNC(dec0_state::dec0_priority_w));
+ map(0x314008, 0x31400f).r(this, FUNC(dec0_state::slyspy_controls_r));
+ map(0x31c000, 0x31c00f).r(this, FUNC(dec0_state::slyspy_protection_r)).nopw();
+}
+
+
+void dec0_state::midres_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("ram");
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x160001).w(this, FUNC(dec0_state::dec0_priority_w));
+ map(0x180000, 0x18000f).r(this, FUNC(dec0_state::midres_controls_r));
+ map(0x180008, 0x18000f).nopw(); /* ?? watchdog ?? */
+ map(0x1a0001, 0x1a0001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+
+ map(0x200000, 0x200007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_0_w));
+ map(0x200010, 0x200017).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x220000, 0x2207ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x220800, 0x220fff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); /* mirror address used in end sequence */
+ map(0x240000, 0x24007f).rw(m_tilegen2, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x240400, 0x2407ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+
+ map(0x280000, 0x280007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_0_w));
+ map(0x280010, 0x280017).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x2a0000, 0x2a07ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x2c0000, 0x2c007f).rw(m_tilegen3, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x2c0400, 0x2c07ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+
+ map(0x300000, 0x300007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w));
+ map(0x300010, 0x300017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x320000, 0x321fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x340000, 0x34007f).rw(m_tilegen1, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x340400, 0x3407ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+}
+
+void dec0_state::midresb_map(address_map &map)
+{
+ midres_map(map);
+ map(0x160010, 0x160011).w(this, FUNC(dec0_state::dec0_priority_w));
+ map(0x180000, 0x18000f).r(this, FUNC(dec0_state::dec0_controls_r));
+ map(0x180012, 0x180013).noprw();
+ map(0x180014, 0x180015).w(this, FUNC(dec0_state::midres_sound_w));
+ map(0x180018, 0x180019).noprw();
+ map(0x1a0000, 0x1a0001).portr("AN0");
+ map(0x1a0008, 0x1a0009).portr("AN1");
+}
/******************************************************************************/
-ADDRESS_MAP_START(dec0_state::dec0_s_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dec0_state::dec0_s_map(address_map &map)
+{
+ 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();
+}
/* Physical memory map (21 bits) */
-ADDRESS_MAP_START(dec0_state::slyspy_s_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_DEVICE("sndprotect", address_map_bank_device, amap8 )
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void dec0_state::slyspy_s_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x080000, 0x0fffff).m(m_sndprotect, FUNC(address_map_bank_device::amap8));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w));
+}
// sly spy sound state protection machine emulation
// similar to the video state machine
@@ -700,41 +708,43 @@ READ8_MEMBER(dec0_state::slyspy_sound_state_reset_r)
return 0xff;
}
-ADDRESS_MAP_START(dec0_state::slyspy_sound_protection_map)
- AM_RANGE(0x020000, 0x020001) AM_MIRROR(0x180000) AM_READ(slyspy_sound_state_r) /* Protection counter */
- AM_RANGE(0x050000, 0x050001) AM_MIRROR(0x180000) AM_READ(slyspy_sound_state_reset_r)
+void dec0_state::slyspy_sound_protection_map(address_map &map)
+{
+ map(0x020000, 0x020001).mirror(0x180000).r(this, FUNC(dec0_state::slyspy_sound_state_r)); /* Protection counter */
+ map(0x050000, 0x050001).mirror(0x180000).r(this, FUNC(dec0_state::slyspy_sound_state_reset_r));
// state 0
- AM_RANGE(0x010000, 0x010001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x030000, 0x030001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x060000, 0x060001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x070000, 0x070001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ map(0x010000, 0x010001).w("ym2", FUNC(ym3812_device::write));
+ map(0x030000, 0x030001).w("ym1", FUNC(ym2203_device::write));
+ map(0x060000, 0x060001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x070000, 0x070001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
// state 1
- AM_RANGE(0x090000, 0x090001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x0f0000, 0x0f0001) AM_DEVWRITE("ym2", ym3812_device, write)
+ map(0x090000, 0x090001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0c0000, 0x0c0001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x0e0000, 0x0e0001).w("ym1", FUNC(ym2203_device::write));
+ map(0x0f0000, 0x0f0001).w("ym2", FUNC(ym3812_device::write));
// state 2
- AM_RANGE(0x110000, 0x110001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x170000, 0x170001) AM_DEVWRITE("ym2", ym3812_device, write)
+ map(0x110000, 0x110001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x130000, 0x130001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).w("ym1", FUNC(ym2203_device::write));
+ map(0x170000, 0x170001).w("ym2", FUNC(ym3812_device::write));
// state 3
- AM_RANGE(0x190000, 0x190001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1e0000, 0x1e0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f0001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+ map(0x190000, 0x190001).w("ym2", FUNC(ym3812_device::write));
+ map(0x1c0000, 0x1c0001).w("ym1", FUNC(ym2203_device::write));
+ map(0x1e0000, 0x1e0001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f0001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
-ADDRESS_MAP_START(dec0_state::midres_s_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x108000, 0x108001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x118000, 0x118001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x138000, 0x138001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void dec0_state::midres_s_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x108000, 0x108001).w("ym2", FUNC(ym3812_device::write));
+ map(0x118000, 0x118001).w("ym1", FUNC(ym2203_device::write));
+ map(0x130000, 0x130001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x138000, 0x138001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w));
+}
@@ -766,96 +776,100 @@ WRITE16_MEMBER( dec0_automat_state::automat_palette_w )
-ADDRESS_MAP_START(dec0_automat_state::automat_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
-
- AM_RANGE(0x240000, 0x240007) AM_RAM /* text layer */
- AM_RANGE(0x240010, 0x240017) AM_RAM
- AM_RANGE(0x242000, 0x24207f) AM_RAM
- AM_RANGE(0x242400, 0x2427ff) AM_RAM
- AM_RANGE(0x242800, 0x243fff) AM_RAM
- AM_RANGE(0x244000, 0x245fff) AM_RAM AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x246000, 0x246007) AM_RAM /* first tile layer */
- AM_RANGE(0x246010, 0x246017) AM_RAM
- AM_RANGE(0x248000, 0x24807f) AM_RAM
- AM_RANGE(0x248400, 0x2487ff) AM_RAM
- AM_RANGE(0x24a000, 0x24a7ff) AM_RAM AM_DEVREADWRITE("tilegen2",deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x24c000, 0x24c007) AM_RAM /* second tile layer */
- AM_RANGE(0x24c010, 0x24c017) AM_RAM
- AM_RANGE(0x24c800, 0x24c87f) AM_RAM
- AM_RANGE(0x24cc00, 0x24cfff) AM_RAM
- AM_RANGE(0x24d000, 0x24d7ff) AM_RAM AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
-
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("AN0")
- AM_RANGE(0x300008, 0x300009) AM_READ_PORT("AN1")
- AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
- AM_RANGE(0x30c000, 0x30c01f) AM_WRITE(automat_control_w) /* Priority, sound, etc. */
- AM_RANGE(0x310000, 0x3107ff) AM_READWRITE(automat_palette_r, automat_palette_w) AM_SHARE("palette")
- AM_RANGE(0x314000, 0x3147ff) AM_RAM
+void dec0_automat_state::automat_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+
+ map(0x240000, 0x240007).ram(); /* text layer */
+ map(0x240010, 0x240017).ram();
+ map(0x242000, 0x24207f).ram();
+ map(0x242400, 0x2427ff).ram();
+ map(0x242800, 0x243fff).ram();
+ map(0x244000, 0x245fff).ram().rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x246000, 0x246007).ram(); /* first tile layer */
+ map(0x246010, 0x246017).ram();
+ map(0x248000, 0x24807f).ram();
+ map(0x248400, 0x2487ff).ram();
+ map(0x24a000, 0x24a7ff).ram().rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x24c000, 0x24c007).ram(); /* second tile layer */
+ map(0x24c010, 0x24c017).ram();
+ map(0x24c800, 0x24c87f).ram();
+ map(0x24cc00, 0x24cfff).ram();
+ map(0x24d000, 0x24d7ff).ram().rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+
+ map(0x300000, 0x300001).portr("AN0");
+ map(0x300008, 0x300009).portr("AN1");
+ map(0x30c000, 0x30c00b).r(this, FUNC(dec0_automat_state::dec0_controls_r));
+ map(0x30c000, 0x30c01f).w(this, FUNC(dec0_automat_state::automat_control_w)); /* Priority, sound, etc. */
+ map(0x310000, 0x3107ff).rw(this, FUNC(dec0_automat_state::automat_palette_r), FUNC(dec0_automat_state::automat_palette_w)).share("palette");
+ map(0x314000, 0x3147ff).ram();
// video regs are moved to here..
- AM_RANGE(0x400000, 0x400007) AM_WRITE(automat_scroll_w)
- AM_RANGE(0x400008, 0x400009) AM_WRITE(dec0_priority_w)
+ map(0x400000, 0x400007).w(this, FUNC(dec0_automat_state::automat_scroll_w));
+ map(0x400008, 0x400009).w(this, FUNC(dec0_automat_state::dec0_priority_w));
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ???
+ map(0x500000, 0x500001).nopw(); // ???
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_SHARE("ram") /* Main ram */
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("spriteram") /* Sprites */
-ADDRESS_MAP_END
+ map(0xff8000, 0xffbfff).ram().share("ram"); /* Main ram */
+ map(0xffc000, 0xffcfff).ram().share("spriteram"); /* Sprites */
+}
-ADDRESS_MAP_START(dec0_automat_state::secretab_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
+void dec0_automat_state::secretab_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
// AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w)
// AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x246000, 0x247fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
+ map(0x246000, 0x247fff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
// AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
// AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
// AM_RANGE(0x200000, 0x300007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w)
// AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x24e000, 0x24ffff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
+ map(0x24e000, 0x24ffff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
// AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
// AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
- AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r)
- AM_RANGE(0x314000, 0x314001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-
- AM_RANGE(0x300000, 0x300007) AM_RAM
- AM_RANGE(0x300010, 0x300017) AM_RAM
- AM_RANGE(0x300800, 0x30087f) AM_RAM
- AM_RANGE(0x300c00, 0x300fff) AM_RAM
- AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x301800, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */
- AM_RANGE(0x310000, 0x3107ff) AM_READWRITE(automat_palette_r, automat_palette_w) AM_SHARE("palette")
- AM_RANGE(0xb08000, 0xb08fff) AM_RAM AM_SHARE("spriteram") /* Sprites */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dec0_automat_state::automat_s_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("2203a", ym2203_device, read, write)
- AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("2203b", ym2203_device, read, write)
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec0_automat_state::secretab_s_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("2203a", ym2203_device, read, write)
- AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ym3812", ym3812_device, read, write)
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w)
-ADDRESS_MAP_END
+ map(0x314008, 0x31400f).r(this, FUNC(dec0_automat_state::slyspy_controls_r));
+ map(0x314001, 0x314001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+
+ map(0x300000, 0x300007).ram();
+ map(0x300010, 0x300017).ram();
+ map(0x300800, 0x30087f).ram();
+ map(0x300c00, 0x300fff).ram();
+ map(0x301000, 0x3017ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x301800, 0x307fff).ram().share("ram"); /* Sly spy main ram */
+ map(0x310000, 0x3107ff).rw(this, FUNC(dec0_automat_state::automat_palette_r), FUNC(dec0_automat_state::automat_palette_w)).share("palette");
+ map(0xb08000, 0xb08fff).ram().share("spriteram"); /* Sprites */
+}
+
+
+void dec0_automat_state::automat_s_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).rw("2203a", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xd000, 0xd001).rw("2203b", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe000).w(m_adpcm_select2, FUNC(ls157_device::ba_w));
+ map(0xe800, 0xe800).w(this, FUNC(dec0_automat_state::sound_bankswitch_w));
+ map(0xf000, 0xf000).w(m_adpcm_select1, FUNC(ls157_device::ba_w));
+}
+
+void dec0_automat_state::secretab_s_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).rw("2203a", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xd000, 0xd001).rw("ym3812", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe000).w(m_adpcm_select2, FUNC(ls157_device::ba_w));
+ map(0xe800, 0xe800).w(this, FUNC(dec0_automat_state::sound_bankswitch_w));
+ map(0xf000, 0xf000).w(m_adpcm_select1, FUNC(ls157_device::ba_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp
index 4fef96dd373..6f2bb935736 100644
--- a/src/mame/drivers/dec8.cpp
+++ b/src/mame/drivers/dec8.cpp
@@ -463,332 +463,349 @@ WRITE8_MEMBER(dec8_state::flip_screen_w){ flip_screen_set(data); }
/******************************************************************************/
-ADDRESS_MAP_START(dec8_state::lastmisn_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
- AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r)
- AM_RANGE(0x1807, 0x1807) AM_READWRITE(i8751_l_r, flip_screen_w)
- AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmisn_scrollx_w) /* Scroll LSB */
- AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmisn_scrolly_w) /* Scroll LSB */
- AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x180d, 0x180d) AM_WRITE(lastmisn_control_w) /* Bank switch + Scroll MSB */
- AM_RANGE(0x180e, 0x180f) AM_WRITE(lastmisn_i8751_w)
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::lastmisn_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
- AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
- AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w)
- AM_RANGE(0x2800, 0x2fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::shackled_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0")
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
- AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
- AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmisn_scrollx_w) /* Scroll LSB */
- AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmisn_scrolly_w) /* Scroll LSB */
- AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w)
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::shackled_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0")
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
- AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r)
- AM_RANGE(0x1807, 0x1807) AM_READWRITE(i8751_l_r, flip_screen_w)
- AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmisn_scrollx_w) /* Scroll LSB */
- AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmisn_scrolly_w) /* Scroll LSB */
- AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */
- AM_RANGE(0x180e, 0x180f) AM_WRITE(shackled_i8751_w)
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::gondo_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x2800, 0x2bff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r) /* Player 1 rotary */
- AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r) /* Player 2 rotary */
- AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3") /* VBL */
- AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2") /* Fire buttons */
- AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
- AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
- AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r)
- AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r)
- AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::garyoret_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x2800, 0x2bff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x3808, 0x3808) AM_READNOP /* ? */
- AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1") /* Player 2 + VBL */
- AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0") /* Player 1 */
- AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
- AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
- AM_RANGE(0x3838, 0x3839) AM_WRITE(dec8_i8751_w)
- AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r)
- AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::meikyuh_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
- AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror?
- AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_8bit_r, pf_rowscroll_8bit_w)
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */
- AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2") /* Player 3 */
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") /* Start buttons + VBL */
- AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1") /* Dip */
- AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w)
- AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r)
- AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
- AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
- AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::csilver_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN1")
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN0")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2")
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
- AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* Dip 1, DMA */
- AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
- AM_RANGE(0x1808, 0x180b) AM_WRITE(dec8_scroll2_w)
- AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x180d, 0x180d) AM_WRITE(csilver_control_w)
- AM_RANGE(0x180e, 0x180f) AM_WRITE(csilver_i8751_w)
- AM_RANGE(0x1c00, 0x1c00) AM_READ(i8751_h_r)
- AM_RANGE(0x1e00, 0x1e00) AM_READ(i8751_l_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w)
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::csilver_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2")
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
- AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::oscar_map)
- AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x0f00, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x3800, 0x3bff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0")
- AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1")
- AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2") /* VBL & coins */
- AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1")
- AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_w)
- AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w) /* BNKS */
- AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w) /* SOUN */
- AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP /* COINCL */
- AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::oscar_sub_map)
- AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x0f00, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::srdarwin_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x13ff) AM_RAM
- AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x1800, 0x1801) AM_WRITE(dec8_i8751_w)
- AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w) /* Maybe.. */
- AM_RANGE(0x1803, 0x1803) AM_WRITENOP /* NMI ack */
- AM_RANGE(0x1804, 0x1804) AM_DEVWRITE("spriteram", buffered_spriteram8_device, write) /* DMA */
- AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */
- AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w) /* Sound */
- AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w) /* Flipscreen */
- AM_RANGE(0x2800, 0x288f) AM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3000, 0x308f) AM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0") /* Player 1 */
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1") /* Player 2 (cocktail) + VBL */
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dec8_state::cobra_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
- AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x31ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0") /* Dip 1 */
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_w)
- AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") /* VBL & coins */
- AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_w)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w)
- AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dec8_state::lastmisn_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x1800, 0x1800).portr("IN0");
+ map(0x1801, 0x1801).portr("IN1");
+ map(0x1802, 0x1802).portr("IN2");
+ map(0x1803, 0x1803).portr("DSW0"); /* Dip 1 */
+ map(0x1804, 0x1804).portr("DSW1"); /* Dip 2 */
+ map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w));
+ map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x1806, 0x1806).r(this, FUNC(dec8_state::i8751_h_r));
+ map(0x1807, 0x1807).rw(this, FUNC(dec8_state::i8751_l_r), FUNC(dec8_state::flip_screen_w));
+ map(0x1809, 0x1809).w(this, FUNC(dec8_state::lastmisn_scrollx_w)); /* Scroll LSB */
+ map(0x180b, 0x180b).w(this, FUNC(dec8_state::lastmisn_scrolly_w)); /* Scroll LSB */
+ map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x180d, 0x180d).w(this, FUNC(dec8_state::lastmisn_control_w)); /* Bank switch + Scroll MSB */
+ map(0x180e, 0x180f).w(this, FUNC(dec8_state::lastmisn_i8751_w));
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().share("share2");
+ map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data");
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::lastmisn_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x1800, 0x1800).portr("IN0");
+ map(0x1801, 0x1801).portr("IN1");
+ map(0x1802, 0x1802).portr("IN2");
+ map(0x1803, 0x1803).portr("DSW0"); /* Dip 1 */
+ map(0x1804, 0x1804).portr("DSW1"); /* Dip 2 */
+ map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w));
+ map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x1807, 0x1807).w(this, FUNC(dec8_state::flip_screen_w));
+ map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w));
+ map(0x2800, 0x2fff).writeonly().share("spriteram");
+ map(0x3000, 0x37ff).ram().share("share2");
+ map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void dec8_state::shackled_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x1800, 0x1800).portr("IN0");
+ map(0x1801, 0x1801).portr("IN1");
+ map(0x1802, 0x1802).portr("IN2");
+ map(0x1803, 0x1803).portr("DSW0");
+ map(0x1804, 0x1804).portr("DSW1");
+ map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w));
+ map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x1807, 0x1807).w(this, FUNC(dec8_state::flip_screen_w));
+ map(0x1809, 0x1809).w(this, FUNC(dec8_state::lastmisn_scrollx_w)); /* Scroll LSB */
+ map(0x180b, 0x180b).w(this, FUNC(dec8_state::lastmisn_scrolly_w)); /* Scroll LSB */
+ map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x180d, 0x180d).w(this, FUNC(dec8_state::shackled_control_w)); /* Bank switch + Scroll MSB */
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w));
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().share("share2");
+ map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data");
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::shackled_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x1800, 0x1800).portr("IN0");
+ map(0x1801, 0x1801).portr("IN1");
+ map(0x1802, 0x1802).portr("IN2");
+ map(0x1803, 0x1803).portr("DSW0");
+ map(0x1804, 0x1804).portr("DSW1");
+ map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w));
+ map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x1806, 0x1806).r(this, FUNC(dec8_state::i8751_h_r));
+ map(0x1807, 0x1807).rw(this, FUNC(dec8_state::i8751_l_r), FUNC(dec8_state::flip_screen_w));
+ map(0x1809, 0x1809).w(this, FUNC(dec8_state::lastmisn_scrollx_w)); /* Scroll LSB */
+ map(0x180b, 0x180b).w(this, FUNC(dec8_state::lastmisn_scrolly_w)); /* Scroll LSB */
+ map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x180d, 0x180d).w(this, FUNC(dec8_state::shackled_control_w)); /* Bank switch + Scroll MSB */
+ map(0x180e, 0x180f).w(this, FUNC(dec8_state::shackled_i8751_w));
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().share("share2");
+ map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void dec8_state::gondo_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram();
+ map(0x1800, 0x1fff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2000, 0x27ff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data");
+ map(0x2800, 0x2bff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x2c00, 0x2fff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x3000, 0x37ff).ram().share("spriteram"); /* Sprites */
+ map(0x3800, 0x3800).portr("DSW0"); /* Dip 1 */
+ map(0x3801, 0x3801).portr("DSW1"); /* Dip 2 */
+ map(0x380a, 0x380b).r(this, FUNC(dec8_state::gondo_player_1_r)); /* Player 1 rotary */
+ map(0x380c, 0x380d).r(this, FUNC(dec8_state::gondo_player_2_r)); /* Player 2 rotary */
+ map(0x380e, 0x380e).portr("IN3"); /* VBL */
+ map(0x380f, 0x380f).portr("IN2"); /* Fire buttons */
+ map(0x3810, 0x3810).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x3818, 0x382f).w(this, FUNC(dec8_state::gondo_scroll_w));
+ map(0x3830, 0x3830).w(this, FUNC(dec8_state::ghostb_bank_w)); /* Bank + NMI enable */
+ map(0x3838, 0x3838).r(this, FUNC(dec8_state::i8751_h_r));
+ map(0x3839, 0x3839).r(this, FUNC(dec8_state::i8751_l_r));
+ map(0x383a, 0x383b).w(this, FUNC(dec8_state::dec8_i8751_w));
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::garyoret_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram();
+ map(0x1800, 0x1fff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2000, 0x27ff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data");
+ map(0x2800, 0x2bff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x2c00, 0x2fff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x3000, 0x37ff).ram().share("spriteram"); /* Sprites */
+ map(0x3800, 0x3800).portr("DSW0"); /* Dip 1 */
+ map(0x3801, 0x3801).portr("DSW1"); /* Dip 2 */
+ map(0x3808, 0x3808).nopr(); /* ? */
+ map(0x380a, 0x380a).portr("IN1"); /* Player 2 + VBL */
+ map(0x380b, 0x380b).portr("IN0"); /* Player 1 */
+ map(0x3810, 0x3810).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x3818, 0x382f).w(this, FUNC(dec8_state::gondo_scroll_w));
+ map(0x3830, 0x3830).w(this, FUNC(dec8_state::ghostb_bank_w)); /* Bank + NMI enable */
+ map(0x3838, 0x3839).w(this, FUNC(dec8_state::dec8_i8751_w));
+ map(0x383a, 0x383a).r(this, FUNC(dec8_state::i8751_h_r));
+ map(0x383b, 0x383b).r(this, FUNC(dec8_state::i8751_l_r));
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::meikyuh_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x17ff).ram();
+ map(0x1800, 0x1fff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2000, 0x27ff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w));
+ map(0x2800, 0x2bff).ram(); // colscroll? mirror?
+ map(0x2c00, 0x2fff).rw("tilegen1", FUNC(deco_bac06_device::pf_rowscroll_8bit_r), FUNC(deco_bac06_device::pf_rowscroll_8bit_w));
+ map(0x3000, 0x37ff).ram().share("spriteram");
+ map(0x3800, 0x3800).portr("IN0"); /* Player 1 */
+ map(0x3800, 0x3800).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x3801, 0x3801).portr("IN1"); /* Player 2 */
+ map(0x3802, 0x3802).portr("IN2"); /* Player 3 */
+ map(0x3803, 0x3803).portr("DSW0"); /* Start buttons + VBL */
+ map(0x3820, 0x3820).portr("DSW1"); /* Dip */
+ map(0x3820, 0x3827).w("tilegen1", FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x3830, 0x383f).rw("tilegen1", FUNC(deco_bac06_device::pf_control1_8bit_r), FUNC(deco_bac06_device::pf_control1_8bit_w));
+ map(0x3840, 0x3840).r(this, FUNC(dec8_state::i8751_h_r));
+ map(0x3840, 0x3840).w(this, FUNC(dec8_state::ghostb_bank_w));
+ map(0x3860, 0x3860).r(this, FUNC(dec8_state::i8751_l_r));
+ map(0x3860, 0x3861).w(this, FUNC(dec8_state::dec8_i8751_w));
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::csilver_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x1800, 0x1800).portr("IN1");
+ map(0x1801, 0x1801).portr("IN0");
+ map(0x1803, 0x1803).portr("IN2");
+ map(0x1804, 0x1804).portr("DSW1"); /* Dip 2 */
+ map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w));
+ map(0x1805, 0x1805).portr("DSW0").w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* Dip 1, DMA */
+ map(0x1807, 0x1807).w(this, FUNC(dec8_state::flip_screen_w));
+ map(0x1808, 0x180b).w(this, FUNC(dec8_state::dec8_scroll2_w));
+ map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x180d, 0x180d).w(this, FUNC(dec8_state::csilver_control_w));
+ map(0x180e, 0x180f).w(this, FUNC(dec8_state::csilver_i8751_w));
+ map(0x1c00, 0x1c00).r(this, FUNC(dec8_state::i8751_h_r));
+ map(0x1e00, 0x1e00).r(this, FUNC(dec8_state::i8751_l_r));
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w));
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().share("share2");
+ map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data");
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::csilver_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1");
+ map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x1803, 0x1803).portr("IN2");
+ map(0x1804, 0x1804).portr("DSW1");
+ map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w));
+ map(0x1805, 0x1805).portr("DSW0").w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().share("share2");
+ map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void dec8_state::oscar_map(address_map &map)
+{
+ map(0x0000, 0x0eff).ram().share("share1");
+ map(0x0f00, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().share("share2");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w));
+ map(0x3000, 0x37ff).ram().share("spriteram"); /* Sprites */
+ map(0x3800, 0x3bff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x3c00, 0x3c00).portr("IN0");
+ map(0x3c01, 0x3c01).portr("IN1");
+ map(0x3c02, 0x3c02).portr("IN2"); /* VBL & coins */
+ map(0x3c03, 0x3c03).portr("DSW0"); /* Dip 1 */
+ map(0x3c04, 0x3c04).portr("DSW1");
+ map(0x3c00, 0x3c07).w("tilegen1", FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x3c10, 0x3c1f).w("tilegen1", FUNC(deco_bac06_device::pf_control1_8bit_w));
+ map(0x3c80, 0x3c80).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x3d00, 0x3d00).w(this, FUNC(dec8_state::dec8_bank_w)); /* BNKS */
+ map(0x3d80, 0x3d80).w(this, FUNC(dec8_state::dec8_sound_w)); /* SOUN */
+ map(0x3e00, 0x3e00).nopw(); /* COINCL */
+ map(0x3e80, 0x3e83).w(this, FUNC(dec8_state::oscar_int_w));
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::oscar_sub_map(address_map &map)
+{
+ map(0x0000, 0x0eff).ram().share("share1");
+ map(0x0f00, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().share("share2");
+ map(0x3e80, 0x3e83).w(this, FUNC(dec8_state::oscar_int_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void dec8_state::srdarwin_map(address_map &map)
+{
+ map(0x0000, 0x05ff).ram();
+ map(0x0600, 0x07ff).ram().share("spriteram");
+ map(0x0800, 0x0fff).ram().w(this, FUNC(dec8_state::srdarwin_videoram_w)).share("videoram");
+ map(0x1000, 0x13ff).ram();
+ map(0x1400, 0x17ff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data");
+ map(0x1800, 0x1801).w(this, FUNC(dec8_state::dec8_i8751_w));
+ map(0x1802, 0x1802).w(this, FUNC(dec8_state::i8751_reset_w)); /* Maybe.. */
+ map(0x1803, 0x1803).nopw(); /* NMI ack */
+ map(0x1804, 0x1804).w(m_spriteram, FUNC(buffered_spriteram8_device::write)); /* DMA */
+ map(0x1805, 0x1806).w(this, FUNC(dec8_state::srdarwin_control_w)); /* Scroll & Bank */
+ map(0x2000, 0x2000).rw(this, FUNC(dec8_state::i8751_h_r), FUNC(dec8_state::dec8_sound_w)); /* Sound */
+ map(0x2001, 0x2001).rw(this, FUNC(dec8_state::i8751_l_r), FUNC(dec8_state::flip_screen_w)); /* Flipscreen */
+ map(0x2800, 0x288f).w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x3000, 0x308f).w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext");
+ map(0x3800, 0x3800).portr("DSW0"); /* Dip 1 */
+ map(0x3801, 0x3801).portr("IN0"); /* Player 1 */
+ map(0x3802, 0x3802).portr("IN1"); /* Player 2 (cocktail) + VBL */
+ map(0x3803, 0x3803).portr("DSW1"); /* Dip 2 */
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void dec8_state::cobra_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0fff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w));
+ map(0x1000, 0x17ff).rw("tilegen2", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w));
+ map(0x1800, 0x1fff).ram();
+ map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x31ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette");
+ map(0x3200, 0x37ff).writeonly(); /* Unused */
+ map(0x3800, 0x3800).portr("IN0"); /* Player 1 */
+ map(0x3801, 0x3801).portr("IN1"); /* Player 2 */
+ map(0x3802, 0x3802).portr("DSW0"); /* Dip 1 */
+ map(0x3803, 0x3803).portr("DSW1"); /* Dip 2 */
+ map(0x3800, 0x3807).w("tilegen1", FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x3810, 0x381f).w("tilegen1", FUNC(deco_bac06_device::pf_control1_8bit_w));
+ map(0x3a00, 0x3a00).portr("IN2"); /* VBL & coins */
+ map(0x3a00, 0x3a07).w("tilegen2", FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x3a10, 0x3a1f).w("tilegen2", FUNC(deco_bac06_device::pf_control1_8bit_w));
+ map(0x3c00, 0x3c00).w(this, FUNC(dec8_state::dec8_bank_w));
+ map(0x3c02, 0x3c02).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */
+ map(0x3e00, 0x3e00).w(this, FUNC(dec8_state::dec8_sound_w));
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
/******************************************************************************/
/* Used for Cobra Command, Maze Hunter, Super Real Darwin etc */
-ADDRESS_MAP_START(dec8_state::dec8_s_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dec8_state::dec8_s_map(address_map &map)
+{
+ map(0x0000, 0x05ff).ram();
+ map(0x2000, 0x2001).w("ym1", FUNC(ym2203_device::write));
+ map(0x4000, 0x4001).w("ym2", FUNC(ym3812_device::write));
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
/* Used by Gondomania, Psycho-Nics Oscar & Garyo Retsuden */
-ADDRESS_MAP_START(dec8_state::oscar_s_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym2", ym3526_device, write)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dec8_state::oscar_s_map(address_map &map)
+{
+ map(0x0000, 0x05ff).ram();
+ map(0x2000, 0x2001).w("ym1", FUNC(ym2203_device::write));
+ map(0x4000, 0x4001).w("ym2", FUNC(ym3526_device::write));
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
/* Used by Last Mission, Shackled & Breywood */
-ADDRESS_MAP_START(dec8_state::ym3526_s_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3526_device, write)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dec8_state::ym3526_s_map(address_map &map)
+{
+ map(0x0000, 0x05ff).ram();
+ map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write));
+ map(0x1000, 0x1001).w("ym2", FUNC(ym3526_device::write));
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
/* Captain Silver - same sound system as Pocket Gal */
-ADDRESS_MAP_START(dec8_state::csilver_s_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3526_device, write)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(csilver_adpcm_data_w) /* ADPCM data for the MSM5205 chip */
- AM_RANGE(0x2000, 0x2000) AM_WRITE(csilver_sound_bank_w)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x3400, 0x3400) AM_READ(csilver_adpcm_reset_r) /* ? not sure */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dec8_state::csilver_s_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write));
+ map(0x1000, 0x1001).w("ym2", FUNC(ym3526_device::write));
+ map(0x1800, 0x1800).w(this, FUNC(dec8_state::csilver_adpcm_data_w)); /* ADPCM data for the MSM5205 chip */
+ map(0x2000, 0x2000).w(this, FUNC(dec8_state::csilver_sound_bank_w));
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x3400, 0x3400).r(this, FUNC(dec8_state::csilver_adpcm_reset_r)); /* ? not sure */
+ map(0x4000, 0x7fff).bankr("soundbank");
+ map(0x8000, 0xffff).rom();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp
index 2b2711abc90..908102486bd 100644
--- a/src/mame/drivers/deco156.cpp
+++ b/src/mame/drivers/deco156.cpp
@@ -124,41 +124,43 @@ WRITE32_MEMBER(deco156_state::pf2_rowscroll_w){ data &= 0x0000ffff; mem_mask &=
WRITE32_MEMBER(deco156_state::spriteram_w){ data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&m_spriteram[offset]); }
-ADDRESS_MAP_START(deco156_state::hvysmsh_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x120000, 0x120003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x120000, 0x120003) AM_WRITENOP // Volume control in low byte
- AM_RANGE(0x120004, 0x120007) AM_WRITE(hvysmsh_eeprom_w)
- AM_RANGE(0x120008, 0x12000b) AM_WRITENOP // IRQ ack?
- AM_RANGE(0x12000c, 0x12000f) AM_WRITE(hvysmsh_oki_0_bank_w)
- AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x160000, 0x160003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1a0000, 0x1a0fff) AM_READWRITE(pf1_rowscroll_r, pf1_rowscroll_w)
- AM_RANGE(0x1a4000, 0x1a4fff) AM_READWRITE(pf2_rowscroll_r, pf2_rowscroll_w)
- AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x1d0010, 0x1d002f) AM_READNOP // Check for DMA complete?
- AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(spriteram_r, spriteram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deco156_state::wcvol95_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x120000, 0x120fff) AM_READWRITE(pf1_rowscroll_r, pf1_rowscroll_w)
- AM_RANGE(0x124000, 0x124fff) AM_READWRITE(pf2_rowscroll_r, pf2_rowscroll_w)
- AM_RANGE(0x130000, 0x137fff) AM_RAM
- AM_RANGE(0x140000, 0x140003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x150000, 0x150003) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x160000, 0x161fff) AM_READWRITE(spriteram_r, spriteram_w)
- AM_RANGE(0x170000, 0x170003) AM_NOP // Irq ack?
- AM_RANGE(0x180000, 0x180fff) AM_READONLY AM_DEVWRITE16("palette", palette_device, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x1a0000, 0x1a0007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
+void deco156_state::hvysmsh_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x107fff).ram();
+ map(0x120000, 0x120003).portr("INPUTS");
+ map(0x120000, 0x120003).nopw(); // Volume control in low byte
+ map(0x120004, 0x120007).w(this, FUNC(deco156_state::hvysmsh_eeprom_w));
+ map(0x120008, 0x12000b).nopw(); // IRQ ack?
+ map(0x12000c, 0x12000f).w(this, FUNC(deco156_state::hvysmsh_oki_0_bank_w));
+ map(0x140000, 0x140000).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x160000, 0x160000).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x180000, 0x18001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x190000, 0x191fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x194000, 0x195fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1a0000, 0x1a0fff).rw(this, FUNC(deco156_state::pf1_rowscroll_r), FUNC(deco156_state::pf1_rowscroll_w));
+ map(0x1a4000, 0x1a4fff).rw(this, FUNC(deco156_state::pf2_rowscroll_r), FUNC(deco156_state::pf2_rowscroll_w));
+ map(0x1c0000, 0x1c0fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x1d0010, 0x1d002f).nopr(); // Check for DMA complete?
+ map(0x1e0000, 0x1e1fff).rw(this, FUNC(deco156_state::spriteram_r), FUNC(deco156_state::spriteram_w));
+}
+
+void deco156_state::wcvol95_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x110000, 0x111fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x114000, 0x115fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x120000, 0x120fff).rw(this, FUNC(deco156_state::pf1_rowscroll_r), FUNC(deco156_state::pf1_rowscroll_w));
+ map(0x124000, 0x124fff).rw(this, FUNC(deco156_state::pf2_rowscroll_r), FUNC(deco156_state::pf2_rowscroll_w));
+ map(0x130000, 0x137fff).ram();
+ map(0x140000, 0x140003).portr("INPUTS");
+ map(0x150000, 0x150003).portw("EEPROMOUT");
+ map(0x160000, 0x161fff).rw(this, FUNC(deco156_state::spriteram_r), FUNC(deco156_state::spriteram_w));
+ map(0x170000, 0x170003).noprw(); // Irq ack?
+ map(0x180000, 0x180fff).readonly().w(m_palette, FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x1a0000, 0x1a0007).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x000000ff);
+}
/***************************************************************************/
diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp
index 63487755f80..e325f51e388 100644
--- a/src/mame/drivers/deco32.cpp
+++ b/src/mame/drivers/deco32.cpp
@@ -368,7 +368,6 @@ NOTE: There are several unpopulated locations (denoted by *) for additional rom
#include "includes/deco32.h"
#include "cpu/arm/arm.h"
-#include "cpu/h6280/h6280.h"
#include "cpu/m6809/m6809.h"
#include "cpu/z80/z80.h"
#include "machine/decocrpt.h"
@@ -383,268 +382,277 @@ NOTE: There are several unpopulated locations (denoted by *) for additional rom
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(captaven_state::captaven_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100007) AM_READ(_71_r)
- AM_RANGE(0x100000, 0x100003) AM_WRITE(buffer_spriteram_w<0>)
- AM_RANGE(0x108000, 0x108003) AM_WRITENOP /* ? */
- AM_RANGE(0x110000, 0x111fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>)
- AM_RANGE(0x120000, 0x127fff) AM_RAM /* Main RAM */
- AM_RANGE(0x128000, 0x12ffff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff)
- AM_RANGE(0x130000, 0x131fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x148000, 0x14800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff)
- AM_RANGE(0x160000, 0x167fff) AM_RAM /* Extra work RAM */
- AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_dsw1_r, 0x000000ff)
- AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_dsw2_r, 0x0000ff00)
- AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_dsw3_r, 0x00ff0000)
- AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_soundcpu_status_r, 0xff000000)
- AM_RANGE(0x178000, 0x178003) AM_WRITE(pri_w)
- AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x192000, 0x193fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) /* Mirror address - bug in program code */
- AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) // unused
- AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") // unused
-ADDRESS_MAP_END
+void captaven_state::captaven_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100007).r(this, FUNC(captaven_state::_71_r));
+ map(0x100000, 0x100003).w(this, FUNC(captaven_state::buffer_spriteram_w<0>));
+ map(0x108000, 0x108003).nopw(); /* ? */
+ map(0x110000, 0x111fff).rw(this, FUNC(captaven_state::spriteram_r<0>), FUNC(captaven_state::spriteram_w<0>));
+ map(0x120000, 0x127fff).ram(); /* Main RAM */
+ map(0x128000, 0x12ffff).rw(this, FUNC(captaven_state::ioprot_r), FUNC(captaven_state::ioprot_w)).umask32(0x0000ffff);
+ map(0x130000, 0x131fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x148000, 0x14800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff);
+ map(0x160000, 0x167fff).ram(); /* Extra work RAM */
+ map(0x168000, 0x168000).r(this, FUNC(captaven_state::captaven_dsw1_r));
+ map(0x168001, 0x168001).r(this, FUNC(captaven_state::captaven_dsw2_r));
+ map(0x168002, 0x168002).r(this, FUNC(captaven_state::captaven_dsw3_r));
+ map(0x168003, 0x168003).r(this, FUNC(captaven_state::captaven_soundcpu_status_r));
+ map(0x178000, 0x178003).w(this, FUNC(captaven_state::pri_w));
+ map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x190000, 0x191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x192000, 0x193fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); /* Mirror address - bug in program code */
+ map(0x194000, 0x195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1a0000, 0x1a3fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x1a4000, 0x1a5fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x1c0000, 0x1c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1d0000, 0x1d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1d4000, 0x1d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused
+ map(0x1e0000, 0x1e3fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x1e4000, 0x1e5fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused
+}
-ADDRESS_MAP_START(fghthist_state::fghthist_map)
- ADDRESS_MAP_UNMAP_HIGH
+void fghthist_state::fghthist_map(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(pf1_data_w) // wtf??
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x11ffff) AM_RAM
- AM_RANGE(0x120020, 0x120023) AM_READ16(fghthist_in0_r, 0x0000ffff)
- AM_RANGE(0x120024, 0x120027) AM_READ16(fghthist_in1_r, 0x0000ffff)
- AM_RANGE(0x120028, 0x12002b) AM_READ8(eeprom_r, 0x000000ff)
- AM_RANGE(0x12002c, 0x12002f) AM_WRITE8(eeprom_w, 0x000000ff)
- AM_RANGE(0x12002c, 0x12002f) AM_WRITE8(volume_w, 0x0000ff00)
- AM_RANGE(0x1201fc, 0x1201ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
- AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w)
- AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w)
- AM_RANGE(0x16c010, 0x16c013) AM_READ(unk_status_r)
- AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>)
- AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<0>)
- AM_RANGE(0x17c020, 0x17c023) AM_READ(unk_status_r)
- AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32")
- AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits
- AM_RANGE(0x208800, 0x208803) AM_WRITENOP /* ? */
-ADDRESS_MAP_END
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x11ffff).ram();
+ map(0x120020, 0x120021).r(this, FUNC(fghthist_state::fghthist_in0_r));
+ map(0x120024, 0x120025).r(this, FUNC(fghthist_state::fghthist_in1_r));
+ map(0x120028, 0x120028).r(this, FUNC(fghthist_state::eeprom_r));
+ map(0x12002c, 0x12002c).w(this, FUNC(fghthist_state::eeprom_w));
+ map(0x12002d, 0x12002d).w(this, FUNC(fghthist_state::volume_w));
+ map(0x1201fc, 0x1201fc).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x140000, 0x140003).w(this, FUNC(fghthist_state::vblank_ack_w));
+ map(0x168000, 0x169fff).ram().w(this, FUNC(fghthist_state::buffered_palette_w)).share("paletteram");
+ map(0x16c008, 0x16c00b).w(this, FUNC(fghthist_state::palette_dma_w));
+ map(0x16c010, 0x16c013).r(this, FUNC(fghthist_state::unk_status_r));
+ map(0x178000, 0x179fff).rw(this, FUNC(fghthist_state::spriteram_r<0>), FUNC(fghthist_state::spriteram_w<0>));
+ map(0x17c010, 0x17c013).w(this, FUNC(fghthist_state::buffer_spriteram_w<0>));
+ map(0x17c020, 0x17c023).r(this, FUNC(fghthist_state::unk_status_r));
+ map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x192000, 0x193fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x194000, 0x195fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
+ map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(fghthist_state::ioprot_r), FUNC(fghthist_state::ioprot_w)).umask32(0xffff0000).share("prot32ram"); // only maps on 16-bits
+ map(0x208800, 0x208803).nopw(); /* ? */
+}
-ADDRESS_MAP_START(fghthist_state::fghthsta_memmap)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x11ffff) AM_RAM
- AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w)
- AM_RANGE(0x150000, 0x150003) AM_WRITE8(eeprom_w, 0x000000ff)
- AM_RANGE(0x150000, 0x150003) AM_WRITE8(volume_w, 0x0000ff00)
- AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w)
- AM_RANGE(0x16c010, 0x16c013) AM_READ(unk_status_r)
- AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>)
- AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<0>)
- AM_RANGE(0x17c020, 0x17c023) AM_READ(unk_status_r)
- AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32")
- AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits
-ADDRESS_MAP_END
+void fghthist_state::fghthsta_memmap(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x11ffff).ram();
+ map(0x140000, 0x140003).w(this, FUNC(fghthist_state::vblank_ack_w));
+ map(0x150000, 0x150000).w(this, FUNC(fghthist_state::eeprom_w));
+ map(0x150001, 0x150001).w(this, FUNC(fghthist_state::volume_w));
+ map(0x168000, 0x169fff).ram().w(this, FUNC(fghthist_state::buffered_palette_w)).share("paletteram");
+ map(0x16c008, 0x16c00b).w(this, FUNC(fghthist_state::palette_dma_w));
+ map(0x16c010, 0x16c013).r(this, FUNC(fghthist_state::unk_status_r));
+ map(0x178000, 0x179fff).rw(this, FUNC(fghthist_state::spriteram_r<0>), FUNC(fghthist_state::spriteram_w<0>));
+ map(0x17c010, 0x17c013).w(this, FUNC(fghthist_state::buffer_spriteram_w<0>));
+ map(0x17c020, 0x17c023).r(this, FUNC(fghthist_state::unk_status_r));
+ map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x192000, 0x193fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x194000, 0x195fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
+ map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(fghthist_state::ioprot_r), FUNC(fghthist_state::ioprot_w)).umask32(0xffff0000).share("prot32ram"); // only maps on 16-bits
+}
// the video drawing (especially sprite) code on this is too slow to cope with proper partial updates
// raster effects appear to need some work on it anyway?
-ADDRESS_MAP_START(dragngun_state::dragngun_map)
- AM_RANGE(0x0000000, 0x00fffff) AM_ROM
- AM_RANGE(0x0100000, 0x011ffff) AM_RAM
- AM_RANGE(0x0120000, 0x0127fff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff)
+void dragngun_state::dragngun_map(address_map &map)
+{
+ map(0x0000000, 0x00fffff).rom();
+ map(0x0100000, 0x011ffff).ram();
+ map(0x0120000, 0x0127fff).rw(this, FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff);
// AM_RANGE(0x01204c0, 0x01204c3) AM_WRITE(sound_w)
- AM_RANGE(0x0128000, 0x012800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff)
- AM_RANGE(0x0130000, 0x0131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x0138000, 0x0138003) AM_NOP /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */
- AM_RANGE(0x0138008, 0x013800b) AM_WRITE(palette_dma_w)
- AM_RANGE(0x0170100, 0x0170103) AM_WRITENOP
- AM_RANGE(0x0170038, 0x017003b) AM_WRITENOP
- AM_RANGE(0x017002C, 0x017002f) AM_WRITENOP
- AM_RANGE(0x0170224, 0x0170227) AM_WRITENOP
- AM_RANGE(0x0180000, 0x018001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x0190000, 0x0191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x0194000, 0x0195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x01a0000, 0x01a3fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x01a4000, 0x01a5fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x01c0000, 0x01c001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x01d0000, 0x01d1fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x01d4000, 0x01d5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) // unused
- AM_RANGE(0x01e0000, 0x01e3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x01e4000, 0x01e5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") // unused
- AM_RANGE(0x0204800, 0x0204fff) AM_RAM // ace? 0x10 byte increments only // 13f ff stuff
- AM_RANGE(0x0208000, 0x0208fff) AM_RAM AM_SHARE("lay0")
- AM_RANGE(0x020c000, 0x020cfff) AM_RAM AM_SHARE("lay1")
- AM_RANGE(0x0210000, 0x0217fff) AM_RAM AM_SHARE("look0")
- AM_RANGE(0x0218000, 0x021ffff) AM_RAM AM_SHARE("look1")
- AM_RANGE(0x0220000, 0x0221fff) AM_RAM AM_SHARE("spriteram") /* Main spriteram */
- AM_RANGE(0x0228000, 0x02283ff) AM_RAM //0x10 byte increments only
- AM_RANGE(0x0230000, 0x0230003) AM_WRITE(spriteram_dma_w)
- AM_RANGE(0x0300000, 0x03fffff) AM_ROM
- AM_RANGE(0x0400000, 0x0400003) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x0410000, 0x0410003) AM_WRITE(volume_w)
- AM_RANGE(0x0418000, 0x0418003) AM_WRITE(speaker_switch_w)
- AM_RANGE(0x0420000, 0x0420003) AM_READWRITE8(eeprom_r, eeprom_w, 0x000000ff)
- AM_RANGE(0x0430000, 0x043001f) AM_WRITE(lightgun_w)
- AM_RANGE(0x0438000, 0x0438003) AM_READ(lightgun_r)
- AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("IN2")
- AM_RANGE(0x0500000, 0x0500003) AM_WRITE(sprite_control_w)
+ map(0x0128000, 0x012800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff);
+ map(0x0130000, 0x0131fff).ram().w(this, FUNC(dragngun_state::buffered_palette_w)).share("paletteram");
+ map(0x0138000, 0x0138003).noprw(); /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */
+ map(0x0138008, 0x013800b).w(this, FUNC(dragngun_state::palette_dma_w));
+ map(0x0170100, 0x0170103).nopw();
+ map(0x0170038, 0x017003b).nopw();
+ map(0x017002C, 0x017002f).nopw();
+ map(0x0170224, 0x0170227).nopw();
+ map(0x0180000, 0x018001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x0190000, 0x0191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x0194000, 0x0195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x01a0000, 0x01a3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x01a4000, 0x01a5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x01c0000, 0x01c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x01d0000, 0x01d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x01d4000, 0x01d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused
+ map(0x01e0000, 0x01e3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x01e4000, 0x01e5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused
+ map(0x0204800, 0x0204fff).ram(); // ace? 0x10 byte increments only // 13f ff stuff
+ map(0x0208000, 0x0208fff).ram().share("lay0");
+ map(0x020c000, 0x020cfff).ram().share("lay1");
+ map(0x0210000, 0x0217fff).ram().share("look0");
+ map(0x0218000, 0x021ffff).ram().share("look1");
+ map(0x0220000, 0x0221fff).ram().share("spriteram"); /* Main spriteram */
+ map(0x0228000, 0x02283ff).ram(); //0x10 byte increments only
+ map(0x0230000, 0x0230003).w(this, FUNC(dragngun_state::spriteram_dma_w));
+ map(0x0300000, 0x03fffff).rom();
+ map(0x0400000, 0x0400000).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0410000, 0x0410003).w(this, FUNC(dragngun_state::volume_w));
+ map(0x0418000, 0x0418003).w(this, FUNC(dragngun_state::speaker_switch_w));
+ map(0x0420000, 0x0420000).rw(this, FUNC(dragngun_state::eeprom_r), FUNC(dragngun_state::eeprom_w));
+ map(0x0430000, 0x043001f).w(this, FUNC(dragngun_state::lightgun_w));
+ map(0x0438000, 0x0438003).r(this, FUNC(dragngun_state::lightgun_r));
+ map(0x0440000, 0x0440003).portr("IN2");
+ map(0x0500000, 0x0500003).w(this, FUNC(dragngun_state::sprite_control_w));
// this is clearly the dvi video related area
- AM_RANGE(0x1000000, 0x1000007) AM_READ(unk_video_r)
- AM_RANGE(0x1000100, 0x1007fff) AM_RAM
- AM_RANGE(0x10b0000, 0x10b01ff) AM_RAM
- AM_RANGE(0x1400000, 0x1ffffff) AM_ROM AM_REGION("dvi", 0x00000) // reads from here during boss battles when the videos should be displayed at the offsets where the DVI headers are // as a result it ends up writing what looks like pointers to the frame data in the ram area above
-ADDRESS_MAP_END
+ map(0x1000000, 0x1000007).r(this, FUNC(dragngun_state::unk_video_r));
+ map(0x1000100, 0x1007fff).ram();
+ map(0x10b0000, 0x10b01ff).ram();
+ map(0x1400000, 0x1ffffff).rom().region("dvi", 0x00000); // reads from here during boss battles when the videos should be displayed at the offsets where the DVI headers are // as a result it ends up writing what looks like pointers to the frame data in the ram area above
+}
-ADDRESS_MAP_START(dragngun_state::lockloadu_map)
- AM_IMPORT_FROM(dragngun_map)
- AM_RANGE(0x0170000, 0x0170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */
-ADDRESS_MAP_END
+void dragngun_state::lockloadu_map(address_map &map)
+{
+ dragngun_map(map);
+ map(0x0170000, 0x0170007).r(this, FUNC(dragngun_state::lockload_gun_mirror_r)); /* Not on Dragongun */
+}
-ADDRESS_MAP_START(dragngun_state::lockload_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x11ffff) AM_RAM
- AM_RANGE(0x120000, 0x127fff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff)
- AM_RANGE(0x128000, 0x12800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff)
- AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x138000, 0x138003) AM_READONLY AM_WRITENOP //palette dma complete in bit 0x8? ack? return 0 else tight loop
- AM_RANGE(0x138008, 0x13800b) AM_WRITE(palette_dma_w)
- AM_RANGE(0x170000, 0x170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */
- AM_RANGE(0x178008, 0x17800f) AM_WRITE(gun_irq_ack_w) /* Gun read ACK's */
- AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) // unused
- AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") // unused
- AM_RANGE(0x204800, 0x204fff) AM_RAM //0x10 byte increments only
- AM_RANGE(0x208000, 0x208fff) AM_RAM AM_SHARE("lay0")
- AM_RANGE(0x20c000, 0x20cfff) AM_RAM AM_SHARE("lay1")
- AM_RANGE(0x210000, 0x217fff) AM_RAM AM_SHARE("look0")
- AM_RANGE(0x218000, 0x21ffff) AM_RAM AM_SHARE("look1")
- AM_RANGE(0x220000, 0x221fff) AM_RAM AM_SHARE("spriteram") /* Main spriteram */
- AM_RANGE(0x228000, 0x2283ff) AM_RAM //0x10 byte increments only
- AM_RANGE(0x230000, 0x230003) AM_WRITE(spriteram_dma_w)
- AM_RANGE(0x300000, 0x3fffff) AM_ROM
- AM_RANGE(0x410000, 0x410003) AM_WRITE(volume_w)
- AM_RANGE(0x420000, 0x420003) AM_READWRITE8(eeprom_r, eeprom_w, 0x000000ff)
- AM_RANGE(0x440000, 0x440003) AM_READ_PORT("IN2")
- AM_RANGE(0x500000, 0x500003) AM_WRITE(sprite_control_w)
-ADDRESS_MAP_END
+void dragngun_state::lockload_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x11ffff).ram();
+ map(0x120000, 0x127fff).rw(this, FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff);
+ map(0x128000, 0x12800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff);
+ map(0x130000, 0x131fff).ram().w(this, FUNC(dragngun_state::buffered_palette_w)).share("paletteram");
+ map(0x138000, 0x138003).readonly().nopw(); //palette dma complete in bit 0x8? ack? return 0 else tight loop
+ map(0x138008, 0x13800b).w(this, FUNC(dragngun_state::palette_dma_w));
+ map(0x170000, 0x170007).r(this, FUNC(dragngun_state::lockload_gun_mirror_r)); /* Not on Dragongun */
+ map(0x178008, 0x17800f).w(this, FUNC(dragngun_state::gun_irq_ack_w)); /* Gun read ACK's */
+ map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x190000, 0x191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x194000, 0x195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1a0000, 0x1a3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x1a4000, 0x1a5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x1c0000, 0x1c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1d0000, 0x1d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1d4000, 0x1d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused
+ map(0x1e0000, 0x1e3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x1e4000, 0x1e5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused
+ map(0x204800, 0x204fff).ram(); //0x10 byte increments only
+ map(0x208000, 0x208fff).ram().share("lay0");
+ map(0x20c000, 0x20cfff).ram().share("lay1");
+ map(0x210000, 0x217fff).ram().share("look0");
+ map(0x218000, 0x21ffff).ram().share("look1");
+ map(0x220000, 0x221fff).ram().share("spriteram"); /* Main spriteram */
+ map(0x228000, 0x2283ff).ram(); //0x10 byte increments only
+ map(0x230000, 0x230003).w(this, FUNC(dragngun_state::spriteram_dma_w));
+ map(0x300000, 0x3fffff).rom();
+ map(0x410000, 0x410003).w(this, FUNC(dragngun_state::volume_w));
+ map(0x420000, 0x420000).rw(this, FUNC(dragngun_state::eeprom_r), FUNC(dragngun_state::eeprom_w));
+ map(0x440000, 0x440003).portr("IN2");
+ map(0x500000, 0x500003).w(this, FUNC(dragngun_state::sprite_control_w));
+}
-ADDRESS_MAP_START(nslasher_state::tattass_map)
- AM_RANGE(0x000000, 0x0f7fff) AM_ROM
- AM_RANGE(0x0f8000, 0x0fffff) AM_ROM AM_WRITENOP
- AM_RANGE(0x100000, 0x11ffff) AM_RAM
- AM_RANGE(0x120000, 0x120003) AM_NOP /* ACIA (unused) */
- AM_RANGE(0x130000, 0x130003) AM_WRITENOP /* Coin port (unused?) */
- AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w)
- AM_RANGE(0x150000, 0x150003) AM_WRITE(tattass_control_w) /* Volume port/Eprom/Priority */
- AM_RANGE(0x162000, 0x162fff) AM_RAM /* 'Jack' RAM!? */
- AM_RANGE(0x163000, 0x16309f) AM_DEVREADWRITE16("deco_ace", deco_ace_device, ace_r, ace_w, 0x0000ffff) /* 'Ace' RAM */
- AM_RANGE(0x164000, 0x164003) AM_WRITENOP /* Palette control BG2/3 ($1a constant) */
- AM_RANGE(0x164004, 0x164007) AM_WRITENOP /* Palette control Obj1 ($6 constant) */
- AM_RANGE(0x164008, 0x16400b) AM_WRITENOP /* Palette control Obj2 ($5 constant) */
- AM_RANGE(0x16400c, 0x16400f) AM_WRITENOP
- AM_RANGE(0x168000, 0x169fff) AM_DEVREADWRITE("deco_ace", deco_ace_device, buffered_palette_r, buffered_palette_w)
- AM_RANGE(0x16c000, 0x16c003) AM_WRITENOP
- AM_RANGE(0x16c008, 0x16c00b) AM_DEVWRITE16("deco_ace", deco_ace_device, palette_dma_w, 0xffffffff)
- AM_RANGE(0x170000, 0x171fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>)
- AM_RANGE(0x174000, 0x174003) AM_WRITENOP /* Sprite DMA mode (2) */
- AM_RANGE(0x174010, 0x174013) AM_WRITE(buffer_spriteram_w<0>)
- AM_RANGE(0x174018, 0x17401b) AM_WRITENOP /* Sprite 'CPU' (unused) */
- AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<1>, spriteram_w<1>)
- AM_RANGE(0x17c000, 0x17c003) AM_WRITENOP /* Sprite DMA mode (2) */
- AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<1>)
- AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */
- AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32")
- AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000)
- AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff)
-ADDRESS_MAP_END
+void nslasher_state::tattass_map(address_map &map)
+{
+ map(0x000000, 0x0f7fff).rom();
+ map(0x0f8000, 0x0fffff).rom().nopw();
+ map(0x100000, 0x11ffff).ram();
+ map(0x120000, 0x120003).noprw(); /* ACIA (unused) */
+ map(0x130000, 0x130003).nopw(); /* Coin port (unused?) */
+ map(0x140000, 0x140003).w(this, FUNC(nslasher_state::vblank_ack_w));
+ map(0x150000, 0x150003).w(this, FUNC(nslasher_state::tattass_control_w)); /* Volume port/Eprom/Priority */
+ map(0x162000, 0x162fff).ram(); /* 'Jack' RAM!? */
+ map(0x163000, 0x16309f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)).umask32(0x0000ffff); /* 'Ace' RAM */
+ map(0x164000, 0x164003).nopw(); /* Palette control BG2/3 ($1a constant) */
+ map(0x164004, 0x164007).nopw(); /* Palette control Obj1 ($6 constant) */
+ map(0x164008, 0x16400b).nopw(); /* Palette control Obj2 ($5 constant) */
+ map(0x16400c, 0x16400f).nopw();
+ map(0x168000, 0x169fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette_r), FUNC(deco_ace_device::buffered_palette_w));
+ map(0x16c000, 0x16c003).nopw();
+ map(0x16c008, 0x16c00b).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w));
+ map(0x170000, 0x171fff).rw(this, FUNC(nslasher_state::spriteram_r<0>), FUNC(nslasher_state::spriteram_w<0>));
+ map(0x174000, 0x174003).nopw(); /* Sprite DMA mode (2) */
+ map(0x174010, 0x174013).w(this, FUNC(nslasher_state::buffer_spriteram_w<0>));
+ map(0x174018, 0x17401b).nopw(); /* Sprite 'CPU' (unused) */
+ map(0x178000, 0x179fff).rw(this, FUNC(nslasher_state::spriteram_r<1>), FUNC(nslasher_state::spriteram_w<1>));
+ map(0x17c000, 0x17c003).nopw(); /* Sprite DMA mode (2) */
+ map(0x17c010, 0x17c013).w(this, FUNC(nslasher_state::buffer_spriteram_w<1>));
+ map(0x17c018, 0x17c01b).nopw(); /* Sprite 'CPU' (unused) */
+ map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x192000, 0x193fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x194000, 0x195fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
+ map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(nslasher_state::ioprot_r), FUNC(nslasher_state::ioprot_w)).umask32(0xffff0000);
+ map(0x200000, 0x207fff).r(this, FUNC(nslasher_state::nslasher_debug_r)).umask32(0x0000ffff);
+}
-ADDRESS_MAP_START(nslasher_state::nslasher_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x11ffff) AM_RAM
- AM_RANGE(0x120000, 0x1200ff) AM_NOP /* ACIA (unused) */
- AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w)
- AM_RANGE(0x150000, 0x150003) AM_WRITE8(eeprom_w, 0x000000ff)
- AM_RANGE(0x150000, 0x150003) AM_WRITE8(volume_w, 0x0000ff00)
- AM_RANGE(0x163000, 0x16309f) AM_DEVREADWRITE16("deco_ace", deco_ace_device, ace_r, ace_w, 0x0000ffff) /* 'Ace' RAM */
- AM_RANGE(0x164000, 0x164003) AM_WRITENOP /* Palette control BG2/3 ($1a constant) */
- AM_RANGE(0x164004, 0x164007) AM_WRITENOP /* Palette control Obj1 ($4 constant) */
- AM_RANGE(0x164008, 0x16400b) AM_WRITENOP /* Palette control Obj2 ($6 constant) */
- AM_RANGE(0x16400c, 0x16400f) AM_WRITENOP
- AM_RANGE(0x168000, 0x169fff) AM_DEVREADWRITE("deco_ace", deco_ace_device, buffered_palette_r, buffered_palette_w)
- AM_RANGE(0x16c000, 0x16c003) AM_WRITENOP
- AM_RANGE(0x16c008, 0x16c00b) AM_DEVWRITE16("deco_ace", deco_ace_device, palette_dma_w, 0xffffffff)
- AM_RANGE(0x170000, 0x171fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>)
- AM_RANGE(0x174000, 0x174003) AM_WRITENOP /* Sprite DMA mode (2) */
- AM_RANGE(0x174010, 0x174013) AM_WRITE(buffer_spriteram_w<0>)
- AM_RANGE(0x174018, 0x17401b) AM_WRITENOP /* Sprite 'CPU' (unused) */
- AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<1>, spriteram_w<1>)
- AM_RANGE(0x17c000, 0x17c003) AM_WRITENOP /* Sprite DMA mode (2) */
- AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<1>)
- AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */
- AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32")
- AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32")
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32")
- AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32")
- AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000)
- AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff) // seems to be debug switches / code activated by this?
-ADDRESS_MAP_END
+void nslasher_state::nslasher_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x11ffff).ram();
+ map(0x120000, 0x1200ff).noprw(); /* ACIA (unused) */
+ map(0x140000, 0x140003).w(this, FUNC(nslasher_state::vblank_ack_w));
+ map(0x150000, 0x150000).w(this, FUNC(nslasher_state::eeprom_w));
+ map(0x150001, 0x150001).w(this, FUNC(nslasher_state::volume_w));
+ map(0x163000, 0x16309f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)).umask32(0x0000ffff); /* 'Ace' RAM */
+ map(0x164000, 0x164003).nopw(); /* Palette control BG2/3 ($1a constant) */
+ map(0x164004, 0x164007).nopw(); /* Palette control Obj1 ($4 constant) */
+ map(0x164008, 0x16400b).nopw(); /* Palette control Obj2 ($6 constant) */
+ map(0x16400c, 0x16400f).nopw();
+ map(0x168000, 0x169fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette_r), FUNC(deco_ace_device::buffered_palette_w));
+ map(0x16c000, 0x16c003).nopw();
+ map(0x16c008, 0x16c00b).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w));
+ map(0x170000, 0x171fff).rw(this, FUNC(nslasher_state::spriteram_r<0>), FUNC(nslasher_state::spriteram_w<0>));
+ map(0x174000, 0x174003).nopw(); /* Sprite DMA mode (2) */
+ map(0x174010, 0x174013).w(this, FUNC(nslasher_state::buffer_spriteram_w<0>));
+ map(0x174018, 0x17401b).nopw(); /* Sprite 'CPU' (unused) */
+ map(0x178000, 0x179fff).rw(this, FUNC(nslasher_state::spriteram_r<1>), FUNC(nslasher_state::spriteram_w<1>));
+ map(0x17c000, 0x17c003).nopw(); /* Sprite DMA mode (2) */
+ map(0x17c010, 0x17c013).w(this, FUNC(nslasher_state::buffer_spriteram_w<1>));
+ map(0x17c018, 0x17c01b).nopw(); /* Sprite 'CPU' (unused) */
+ map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x192000, 0x193fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32");
+ map(0x194000, 0x195fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32");
+ map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32");
+ map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32");
+ map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(nslasher_state::ioprot_r), FUNC(nslasher_state::ioprot_w)).umask32(0xffff0000);
+ map(0x200000, 0x207fff).r(this, FUNC(nslasher_state::nslasher_debug_r)).umask32(0x0000ffff); // seems to be debug switches / code activated by this?
+}
// H6280 based sound
-ADDRESS_MAP_START(deco32_state::h6280_sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void deco32_state::h6280_sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x110000, 0x110001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).ram();
+ map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w));
+}
ADDRESS_MAP_START(deco32_state::h6280_sound_custom_latch_map)
AM_IMPORT_FROM(h6280_sound_map)
@@ -652,29 +660,32 @@ ADDRESS_MAP_START(deco32_state::h6280_sound_custom_latch_map)
ADDRESS_MAP_END
// Z80 based sound
-ADDRESS_MAP_START(deco32_state::z80_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
-ADDRESS_MAP_END
+void deco32_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xb000, 0xb000).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc000, 0xc000).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xd000, 0xd000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+}
ADDRESS_MAP_START(deco32_state::z80_sound_io)
AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
ADDRESS_MAP_END
// lockload needs hi bits of OKI2 bankswitching
-ADDRESS_MAP_START(dragngun_state::lockload_sound_map)
- AM_IMPORT_FROM(z80_sound_map)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(lockload_okibank_hi_w)
-ADDRESS_MAP_END
+void dragngun_state::lockload_sound_map(address_map &map)
+{
+ z80_sound_map(map);
+ map(0xe000, 0xe000).w(this, FUNC(dragngun_state::lockload_okibank_hi_w));
+}
-ADDRESS_MAP_START(dragngun_state::lockloadu_sound_map)
- AM_IMPORT_FROM(h6280_sound_map)
- AM_RANGE(0x150000, 0x150000) AM_WRITE(lockload_okibank_hi_w)
-ADDRESS_MAP_END
+void dragngun_state::lockloadu_sound_map(address_map &map)
+{
+ h6280_sound_map(map);
+ map(0x150000, 0x150000).w(this, FUNC(dragngun_state::lockload_okibank_hi_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/deco_ld.cpp b/src/mame/drivers/deco_ld.cpp
index be9d7c495ac..d73d592e5f2 100644
--- a/src/mame/drivers/deco_ld.cpp
+++ b/src/mame/drivers/deco_ld.cpp
@@ -269,26 +269,27 @@ READ8_MEMBER(deco_ld_state::acia_status_hack_r)
return 0xff;
}
-ADDRESS_MAP_START(deco_ld_state::rblaster_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN0") AM_WRITENOP // (w) coin lockout
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW1")
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("DSW2")
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN1")
- AM_RANGE(0x1004, 0x1004) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(decold_sound_cmd_w)
- AM_RANGE(0x1005, 0x1005) AM_READ(sound_status_r)
+void deco_ld_state::rblaster_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1000).portr("IN0").nopw(); // (w) coin lockout
+ map(0x1001, 0x1001).portr("DSW1");
+ map(0x1002, 0x1002).portr("DSW2");
+ map(0x1003, 0x1003).portr("IN1");
+ map(0x1004, 0x1004).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(this, FUNC(deco_ld_state::decold_sound_cmd_w));
+ map(0x1005, 0x1005).r(this, FUNC(deco_ld_state::sound_status_r));
//AM_RANGE(0x1006, 0x1007) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0x1006, 0x1006) AM_READ(acia_status_hack_r)
- AM_RANGE(0x1007, 0x1007) AM_DEVREADWRITE("laserdisc", sony_ldp1000_device, status_r, command_w)
- AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("vram0")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("attr0")
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("vram1")
- AM_RANGE(0x3c00, 0x3fff) AM_RAM AM_SHARE("attr1")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x1006, 0x1006).r(this, FUNC(deco_ld_state::acia_status_hack_r));
+ map(0x1007, 0x1007).rw(m_laserdisc, FUNC(sony_ldp1000_device::status_r), FUNC(sony_ldp1000_device::command_w));
+ map(0x1800, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2000, 0x27ff).ram();
+ map(0x2800, 0x2bff).ram().share("vram0");
+ map(0x2c00, 0x2fff).ram().share("attr0");
+ map(0x3000, 0x37ff).ram();
+ map(0x3800, 0x3bff).ram().share("vram1");
+ map(0x3c00, 0x3fff).ram().share("attr1");
+ map(0x4000, 0xffff).rom();
+}
/* sound arrangement is pratically identical to Zero Target. */
@@ -306,15 +307,16 @@ INTERRUPT_GEN_MEMBER(deco_ld_state::sound_interrupt)
}
-ADDRESS_MAP_START(deco_ld_state::rblaster_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void deco_ld_state::rblaster_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x2000, 0x2000).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0xe000, 0xffff).rom();
+}
CUSTOM_INPUT_MEMBER( deco_ld_state::begas_vblank_r )
{
diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp
index 9ee88f3661d..e9fc98a4deb 100644
--- a/src/mame/drivers/deco_mlc.cpp
+++ b/src/mame/drivers/deco_mlc.cpp
@@ -295,50 +295,52 @@ WRITE16_MEMBER( deco_mlc_state::sh96_protection_region_0_146_w )
/******************************************************************************/
-ADDRESS_MAP_START(deco_mlc_state::avengrgs_map)
- AM_RANGE(0x0000000, 0x00fffff) AM_ROM AM_MIRROR(0xff000000)
- AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0xff000000)
- AM_RANGE(0x0200000, 0x0200003) AM_READ(mlc_200000_r) AM_MIRROR(0xff000000)
- AM_RANGE(0x0200004, 0x0200007) AM_READ(mlc_200004_r) AM_MIRROR(0xff000000)
- AM_RANGE(0x0200070, 0x0200073) AM_READ(mlc_200070_r) AM_MIRROR(0xff000000)
- AM_RANGE(0x0200074, 0x0200077) AM_READ(mlc_scanline_r) AM_MIRROR(0xff000000)
- AM_RANGE(0x020007c, 0x020007f) AM_READ(mlc_20007c_r) AM_MIRROR(0xff000000)
- AM_RANGE(0x0200000, 0x020007f) AM_WRITE(irq_ram_w) AM_SHARE("irq_ram") AM_MIRROR(0xff000000)
- AM_RANGE(0x0200080, 0x02000ff) AM_RAM AM_SHARE("clip_ram") AM_MIRROR(0xff000000)
- AM_RANGE(0x0204000, 0x0206fff) AM_READWRITE( spriteram_r, spriteram_w ) AM_MIRROR(0xff000000)
- AM_RANGE(0x0280000, 0x029ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0xff000000)
- AM_RANGE(0x0300000, 0x0307fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff).cswidth(32) AM_SHARE("palette") AM_MIRROR(0xff000000)
- AM_RANGE(0x0400000, 0x0400003) AM_READ_PORT("INPUTS") AM_MIRROR(0xff000000)
- AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("INPUTS2") AM_MIRROR(0xff000000)
- AM_RANGE(0x0440004, 0x0440007) AM_READ_PORT("INPUTS3") AM_MIRROR(0xff000000)
- AM_RANGE(0x0440008, 0x044000b) AM_READ(mlc_440008_r) AM_MIRROR(0xff000000)
- AM_RANGE(0x044001c, 0x044001f) AM_READWRITE(mlc_44001c_r, mlc_44001c_w) AM_MIRROR(0xff000000)
- AM_RANGE(0x0500000, 0x0500003) AM_WRITE(eeprom_w) AM_MIRROR(0xff000000)
- AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff000000) AM_MIRROR(0xff000000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deco_mlc_state::decomlc_map)
- AM_RANGE(0x0000000, 0x00fffff) AM_ROM
- AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0200000, 0x0200003) AM_READ(mlc_200000_r)
- AM_RANGE(0x0200004, 0x0200007) AM_READ(mlc_200004_r)
- AM_RANGE(0x0200070, 0x0200073) AM_READ(mlc_200070_r)
- AM_RANGE(0x0200074, 0x0200077) AM_READ(mlc_scanline_r)
- AM_RANGE(0x020007c, 0x020007f) AM_READ(mlc_20007c_r)
- AM_RANGE(0x0200000, 0x020007f) AM_WRITE(irq_ram_w) AM_SHARE("irq_ram")
- AM_RANGE(0x0200080, 0x02000ff) AM_RAM AM_SHARE("clip_ram")
- AM_RANGE(0x0204000, 0x0206fff) AM_READWRITE( spriteram_r, spriteram_w )
- AM_RANGE(0x0280000, 0x029ffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x0300000, 0x0307fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff).cswidth(32) AM_SHARE("palette")
- AM_RANGE(0x0400000, 0x0400003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("INPUTS2")
- AM_RANGE(0x0440004, 0x0440007) AM_READ_PORT("INPUTS3")
- AM_RANGE(0x0440008, 0x044000b) AM_READ(mlc_440008_r)
- AM_RANGE(0x044001c, 0x044001f) AM_READWRITE(mlc_44001c_r, mlc_44001c_w)
- AM_RANGE(0x0500000, 0x0500003) AM_WRITE(eeprom_w)
- AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff000000)
- AM_RANGE(0x070f000, 0x070ffff) AM_READWRITE16(sh96_protection_region_0_146_r, sh96_protection_region_0_146_w, 0xffff0000)
-ADDRESS_MAP_END
+void deco_mlc_state::avengrgs_map(address_map &map)
+{
+ map(0x0000000, 0x00fffff).rom().mirror(0xff000000);
+ map(0x0100000, 0x011ffff).ram().share("mainram").mirror(0xff000000);
+ map(0x0200000, 0x0200003).r(this, FUNC(deco_mlc_state::mlc_200000_r)).mirror(0xff000000);
+ map(0x0200004, 0x0200007).r(this, FUNC(deco_mlc_state::mlc_200004_r)).mirror(0xff000000);
+ map(0x0200070, 0x0200073).r(this, FUNC(deco_mlc_state::mlc_200070_r)).mirror(0xff000000);
+ map(0x0200074, 0x0200077).r(this, FUNC(deco_mlc_state::mlc_scanline_r)).mirror(0xff000000);
+ map(0x020007c, 0x020007f).r(this, FUNC(deco_mlc_state::mlc_20007c_r)).mirror(0xff000000);
+ map(0x0200000, 0x020007f).w(this, FUNC(deco_mlc_state::irq_ram_w)).share("irq_ram").mirror(0xff000000);
+ map(0x0200080, 0x02000ff).ram().share("clip_ram").mirror(0xff000000);
+ map(0x0204000, 0x0206fff).rw(this, FUNC(deco_mlc_state::spriteram_r), FUNC(deco_mlc_state::spriteram_w)).mirror(0xff000000);
+ map(0x0280000, 0x029ffff).ram().share("vram").mirror(0xff000000);
+ map(0x0300000, 0x0307fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).cswidth(32).share("palette").mirror(0xff000000);
+ map(0x0400000, 0x0400003).portr("INPUTS").mirror(0xff000000);
+ map(0x0440000, 0x0440003).portr("INPUTS2").mirror(0xff000000);
+ map(0x0440004, 0x0440007).portr("INPUTS3").mirror(0xff000000);
+ map(0x0440008, 0x044000b).r(this, FUNC(deco_mlc_state::mlc_440008_r)).mirror(0xff000000);
+ map(0x044001c, 0x044001f).rw(this, FUNC(deco_mlc_state::mlc_44001c_r), FUNC(deco_mlc_state::mlc_44001c_w)).mirror(0xff000000);
+ map(0x0500000, 0x0500003).w(this, FUNC(deco_mlc_state::eeprom_w)).mirror(0xff000000);
+ map(0x0600000, 0x0600007).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0xff000000).mirror(0xff000000);
+}
+
+void deco_mlc_state::decomlc_map(address_map &map)
+{
+ map(0x0000000, 0x00fffff).rom();
+ map(0x0100000, 0x011ffff).ram().share("mainram");
+ map(0x0200000, 0x0200003).r(this, FUNC(deco_mlc_state::mlc_200000_r));
+ map(0x0200004, 0x0200007).r(this, FUNC(deco_mlc_state::mlc_200004_r));
+ map(0x0200070, 0x0200073).r(this, FUNC(deco_mlc_state::mlc_200070_r));
+ map(0x0200074, 0x0200077).r(this, FUNC(deco_mlc_state::mlc_scanline_r));
+ map(0x020007c, 0x020007f).r(this, FUNC(deco_mlc_state::mlc_20007c_r));
+ map(0x0200000, 0x020007f).w(this, FUNC(deco_mlc_state::irq_ram_w)).share("irq_ram");
+ map(0x0200080, 0x02000ff).ram().share("clip_ram");
+ map(0x0204000, 0x0206fff).rw(this, FUNC(deco_mlc_state::spriteram_r), FUNC(deco_mlc_state::spriteram_w));
+ map(0x0280000, 0x029ffff).ram().share("vram");
+ map(0x0300000, 0x0307fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).cswidth(32).share("palette");
+ map(0x0400000, 0x0400003).portr("INPUTS");
+ map(0x0440000, 0x0440003).portr("INPUTS2");
+ map(0x0440004, 0x0440007).portr("INPUTS3");
+ map(0x0440008, 0x044000b).r(this, FUNC(deco_mlc_state::mlc_440008_r));
+ map(0x044001c, 0x044001f).rw(this, FUNC(deco_mlc_state::mlc_44001c_r), FUNC(deco_mlc_state::mlc_44001c_w));
+ map(0x0500000, 0x0500003).w(this, FUNC(deco_mlc_state::eeprom_w));
+ map(0x0600000, 0x0600007).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0xff000000);
+ map(0x070f000, 0x070ffff).rw(this, FUNC(deco_mlc_state::sh96_protection_region_0_146_r), FUNC(deco_mlc_state::sh96_protection_region_0_146_w)).umask32(0xffff0000);
+}
/******************************************************************************/
diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp
index 0757326f443..ca76e6ffff4 100644
--- a/src/mame/drivers/decocass.cpp
+++ b/src/mame/drivers/decocass.cpp
@@ -80,59 +80,61 @@ READ8_MEMBER(decocass_state::mirrorcolorram_r)
}
-ADDRESS_MAP_START(decocass_state::decocass_map)
- AM_RANGE(0x0000, 0x5fff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x6000, 0xbfff) AM_RAM_WRITE(decocass_charram_w) AM_SHARE("charram") /* still RMS3 RAM */
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(decocass_fgvideoram_w) AM_SHARE("fgvideoram") /* DSP3 RAM */
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(decocass_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc800, 0xcbff) AM_READWRITE(mirrorvideoram_r, mirrorvideoram_w)
- AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(mirrorcolorram_r, mirrorcolorram_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(decocass_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(decocass_objectram_w) AM_SHARE("objectram")
- AM_RANGE(0xe000, 0xe0ff) AM_RAM_WRITE(decocass_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xe300, 0xe300) AM_READ_PORT("DSW1") AM_WRITE(decocass_watchdog_count_w)
- AM_RANGE(0xe301, 0xe301) AM_READ_PORT("DSW2") AM_WRITE(decocass_watchdog_flip_w)
- AM_RANGE(0xe302, 0xe302) AM_WRITE(decocass_color_missiles_w)
- AM_RANGE(0xe400, 0xe400) AM_WRITE(decocass_reset_w)
+void decocass_state::decocass_map(address_map &map)
+{
+ map(0x0000, 0x5fff).ram().share("rambase");
+ map(0x6000, 0xbfff).ram().w(this, FUNC(decocass_state::decocass_charram_w)).share("charram"); /* still RMS3 RAM */
+ map(0xc000, 0xc3ff).ram().w(this, FUNC(decocass_state::decocass_fgvideoram_w)).share("fgvideoram"); /* DSP3 RAM */
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(decocass_state::decocass_colorram_w)).share("colorram");
+ map(0xc800, 0xcbff).rw(this, FUNC(decocass_state::mirrorvideoram_r), FUNC(decocass_state::mirrorvideoram_w));
+ map(0xcc00, 0xcfff).rw(this, FUNC(decocass_state::mirrorcolorram_r), FUNC(decocass_state::mirrorcolorram_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(decocass_state::decocass_tileram_w)).share("tileram");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(decocass_state::decocass_objectram_w)).share("objectram");
+ map(0xe000, 0xe0ff).ram().w(this, FUNC(decocass_state::decocass_paletteram_w)).share("paletteram");
+ map(0xe300, 0xe300).portr("DSW1").w(this, FUNC(decocass_state::decocass_watchdog_count_w));
+ map(0xe301, 0xe301).portr("DSW2").w(this, FUNC(decocass_state::decocass_watchdog_flip_w));
+ map(0xe302, 0xe302).w(this, FUNC(decocass_state::decocass_color_missiles_w));
+ map(0xe400, 0xe400).w(this, FUNC(decocass_state::decocass_reset_w));
/* BIO-3 board */
- AM_RANGE(0xe402, 0xe402) AM_WRITE(decocass_mode_set_w) /* scroll mode regs + various enable regs */
- AM_RANGE(0xe403, 0xe403) AM_WRITE(decocass_back_h_shift_w) /* back (both) tilemap x scroll */
- AM_RANGE(0xe404, 0xe404) AM_WRITE(decocass_back_vl_shift_w) /* back (left) (top@rot0) tilemap y scroll */
- AM_RANGE(0xe405, 0xe405) AM_WRITE(decocass_back_vr_shift_w) /* back (right) (bot@rot0) tilemap y scroll */
- AM_RANGE(0xe406, 0xe406) AM_WRITE(decocass_part_h_shift_w) /* headlight */
- AM_RANGE(0xe407, 0xe407) AM_WRITE(decocass_part_v_shift_w) /* headlight */
-
- AM_RANGE(0xe410, 0xe410) AM_WRITE(decocass_color_center_bot_w)
- AM_RANGE(0xe411, 0xe411) AM_WRITE(decocass_center_h_shift_space_w)
- AM_RANGE(0xe412, 0xe412) AM_WRITE(decocass_center_v_shift_w)
- AM_RANGE(0xe413, 0xe413) AM_WRITE(decocass_coin_counter_w)
- AM_RANGE(0xe414, 0xe414) AM_READWRITE(decocass_sound_command_main_r, decocass_sound_command_w)
- AM_RANGE(0xe415, 0xe416) AM_WRITE(decocass_quadrature_decoder_reset_w)
- AM_RANGE(0xe417, 0xe417) AM_WRITE(decocass_nmi_reset_w)
- AM_RANGE(0xe420, 0xe42f) AM_WRITE(decocass_adc_w)
-
- AM_RANGE(0xe500, 0xe5ff) AM_READWRITE(decocass_e5xx_r, decocass_e5xx_w) /* read data from 8041/status */
-
- AM_RANGE(0xe600, 0xe6ff) AM_READ(decocass_input_r) /* inputs */
- AM_RANGE(0xe700, 0xe700) AM_READ(decocass_sound_data_r) /* read sound CPU data */
- AM_RANGE(0xe701, 0xe701) AM_READ(decocass_sound_ack_r) /* read sound CPU ack status */
-
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(decocass_state::decocass_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_READWRITE(decocass_sound_nmi_enable_r, decocass_sound_nmi_enable_w)
- AM_RANGE(0x1800, 0x1fff) AM_READWRITE(decocass_sound_data_ack_reset_r, decocass_sound_data_ack_reset_w)
- AM_RANGE(0x2000, 0x2fff) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x8000, 0x8fff) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa000, 0xafff) AM_READ(decocass_sound_command_r)
- AM_RANGE(0xc000, 0xcfff) AM_WRITE(decocass_sound_data_w)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xe402, 0xe402).w(this, FUNC(decocass_state::decocass_mode_set_w)); /* scroll mode regs + various enable regs */
+ map(0xe403, 0xe403).w(this, FUNC(decocass_state::decocass_back_h_shift_w)); /* back (both) tilemap x scroll */
+ map(0xe404, 0xe404).w(this, FUNC(decocass_state::decocass_back_vl_shift_w)); /* back (left) (top@rot0) tilemap y scroll */
+ map(0xe405, 0xe405).w(this, FUNC(decocass_state::decocass_back_vr_shift_w)); /* back (right) (bot@rot0) tilemap y scroll */
+ map(0xe406, 0xe406).w(this, FUNC(decocass_state::decocass_part_h_shift_w)); /* headlight */
+ map(0xe407, 0xe407).w(this, FUNC(decocass_state::decocass_part_v_shift_w)); /* headlight */
+
+ map(0xe410, 0xe410).w(this, FUNC(decocass_state::decocass_color_center_bot_w));
+ map(0xe411, 0xe411).w(this, FUNC(decocass_state::decocass_center_h_shift_space_w));
+ map(0xe412, 0xe412).w(this, FUNC(decocass_state::decocass_center_v_shift_w));
+ map(0xe413, 0xe413).w(this, FUNC(decocass_state::decocass_coin_counter_w));
+ map(0xe414, 0xe414).rw(this, FUNC(decocass_state::decocass_sound_command_main_r), FUNC(decocass_state::decocass_sound_command_w));
+ map(0xe415, 0xe416).w(this, FUNC(decocass_state::decocass_quadrature_decoder_reset_w));
+ map(0xe417, 0xe417).w(this, FUNC(decocass_state::decocass_nmi_reset_w));
+ map(0xe420, 0xe42f).w(this, FUNC(decocass_state::decocass_adc_w));
+
+ map(0xe500, 0xe5ff).rw(this, FUNC(decocass_state::decocass_e5xx_r), FUNC(decocass_state::decocass_e5xx_w)); /* read data from 8041/status */
+
+ map(0xe600, 0xe6ff).r(this, FUNC(decocass_state::decocass_input_r)); /* inputs */
+ map(0xe700, 0xe700).r(this, FUNC(decocass_state::decocass_sound_data_r)); /* read sound CPU data */
+ map(0xe701, 0xe701).r(this, FUNC(decocass_state::decocass_sound_ack_r)); /* read sound CPU ack status */
+
+ map(0xf000, 0xffff).rom();
+}
+
+void decocass_state::decocass_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x17ff).rw(this, FUNC(decocass_state::decocass_sound_nmi_enable_r), FUNC(decocass_state::decocass_sound_nmi_enable_w));
+ map(0x1800, 0x1fff).rw(this, FUNC(decocass_state::decocass_sound_data_ack_reset_r), FUNC(decocass_state::decocass_sound_data_ack_reset_w));
+ map(0x2000, 0x2fff).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x4000, 0x4fff).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6fff).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x8000, 0x8fff).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa000, 0xafff).r(this, FUNC(decocass_state::decocass_sound_command_r));
+ map(0xc000, 0xcfff).w(this, FUNC(decocass_state::decocass_sound_data_w));
+ map(0xf800, 0xffff).rom();
+}
static INPUT_PORTS_START( decocass )
diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp
index 83b64f2fa5d..6339b5f8f11 100644
--- a/src/mame/drivers/dectalk.cpp
+++ b/src/mame/drivers/dectalk.cpp
@@ -792,29 +792,32 @@ a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4
| | | | |
*/
-ADDRESS_MAP_START(dectalk_state::m68k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x740000) AM_ROM /* ROM */
- AM_RANGE(0x080000, 0x093fff) AM_MIRROR(0x760000) AM_RAM /* RAM */
- AM_RANGE(0x094000, 0x0943ff) AM_MIRROR(0x763c00) AM_WRITE8(led_write, 0x00ff) /* LED array */
- AM_RANGE(0x094000, 0x0941ff) AM_MIRROR(0x763c00) AM_DEVREADWRITE8("x2212", x2212_device, read, write, 0xff00) /* Xicor X2212 NVRAM */
- AM_RANGE(0x094200, 0x0943ff) AM_MIRROR(0x763c00) AM_READWRITE8(nvram_recall, nvram_store, 0xff00) /* Xicor X2212 NVRAM */
- AM_RANGE(0x098000, 0x09801f) AM_MIRROR(0x763fe0) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0x00ff ) /* DUART */
- AM_RANGE(0x09c000, 0x09c001) AM_MIRROR(0x763ff8) AM_READWRITE(m68k_spcflags_r, m68k_spcflags_w) /* SPC flags reg */
- AM_RANGE(0x09c002, 0x09c003) AM_MIRROR(0x763ff8) AM_WRITE(m68k_infifo_w) /* SPC fifo reg */
- AM_RANGE(0x09c004, 0x09c005) AM_MIRROR(0x763ff8) AM_READWRITE(m68k_tlcflags_r, m68k_tlcflags_w) /* telephone status flags */
- AM_RANGE(0x09c006, 0x09c007) AM_MIRROR(0x763ff8) AM_READ(m68k_tlc_dtmf_r) /* telephone dtmf read */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dectalk_state::tms32010_mem)
- AM_RANGE(0x000, 0x7ff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dectalk_state::tms32010_io)
- AM_RANGE(0, 0) AM_WRITE(spc_latch_outfifo_error_stats) // *set* the outfifo_status_r semaphore, and also latch the error bit at D0.
- AM_RANGE(1, 1) AM_READWRITE(spc_infifo_data_r, spc_outfifo_data_w) //read from input fifo, write to sound fifo
+void dectalk_state::m68k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).mirror(0x740000).rom(); /* ROM */
+ map(0x080000, 0x093fff).mirror(0x760000).ram(); /* RAM */
+ map(0x094000, 0x0943ff).mirror(0x763c00).w(this, FUNC(dectalk_state::led_write)).umask16(0x00ff); /* LED array */
+ map(0x094000, 0x0941ff).mirror(0x763c00).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0xff00); /* Xicor X2212 NVRAM */
+ map(0x094200, 0x0943ff).mirror(0x763c00).rw(this, FUNC(dectalk_state::nvram_recall), FUNC(dectalk_state::nvram_store)).umask16(0xff00); /* Xicor X2212 NVRAM */
+ map(0x098000, 0x09801f).mirror(0x763fe0).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); /* DUART */
+ map(0x09c000, 0x09c001).mirror(0x763ff8).rw(this, FUNC(dectalk_state::m68k_spcflags_r), FUNC(dectalk_state::m68k_spcflags_w)); /* SPC flags reg */
+ map(0x09c002, 0x09c003).mirror(0x763ff8).w(this, FUNC(dectalk_state::m68k_infifo_w)); /* SPC fifo reg */
+ map(0x09c004, 0x09c005).mirror(0x763ff8).rw(this, FUNC(dectalk_state::m68k_tlcflags_r), FUNC(dectalk_state::m68k_tlcflags_w)); /* telephone status flags */
+ map(0x09c006, 0x09c007).mirror(0x763ff8).r(this, FUNC(dectalk_state::m68k_tlc_dtmf_r)); /* telephone dtmf read */
+}
+
+void dectalk_state::tms32010_mem(address_map &map)
+{
+ map(0x000, 0x7ff).rom(); /* ROM */
+}
+
+void dectalk_state::tms32010_io(address_map &map)
+{
+ map(0, 0).w(this, FUNC(dectalk_state::spc_latch_outfifo_error_stats)); // *set* the outfifo_status_r semaphore, and also latch the error bit at D0.
+ map(1, 1).rw(this, FUNC(dectalk_state::spc_infifo_data_r), FUNC(dectalk_state::spc_outfifo_data_w)); //read from input fifo, write to sound fifo
//AM_RANGE(8, 8) //the newer firmware seems to want something mapped here?
-ADDRESS_MAP_END
+}
/******************************************************************************
Input Ports
diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp
index da2c32c1935..1dc8b4e2051 100644
--- a/src/mame/drivers/decwritr.cpp
+++ b/src/mame/drivers/decwritr.cpp
@@ -225,16 +225,17 @@ WRITE8_MEMBER( decwriter_state::la120_DC305_w )
0 1 1 1 x x x x x x x x x x * * RW PTR (DC305 ASIC,e25)
1 * * * * * * * * * * * * * * * Expansion space (open bus)
*/
-ADDRESS_MAP_START(decwriter_state::la120_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x27ff ) AM_ROM
- AM_RANGE( 0x3000, 0x301f ) AM_READWRITE(la120_KBD_r, la120_LED_w) AM_MIRROR(0xFE0) // keyboard read, write to status and 7seg LEDS
- AM_RANGE( 0x4000, 0x43ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'low ram'
- AM_RANGE( 0x5000, 0x53ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'high ram'
- AM_RANGE( 0x6000, 0x67ff ) /*AM_MIRROR(0x08fe)*/AM_MIRROR(0x800) AM_READWRITE(la120_NVR_r, la120_NVR_w) // ER1400 EAROM; a10,9,8 are c3,2,1, a0 is clk, data i/o on d7, d0 always reads as 0 (there may have once been a second er1400 with data i/o on d0, sharing same address controls as the d7 one, not populated on shipping boards), d1-d6 read open bus
- AM_RANGE( 0x7000, 0x7003 ) AM_MIRROR(0x0ffc) AM_READWRITE(la120_DC305_r, la120_DC305_w) // DC305 printer controller ASIC stuff; since this can generate interrupts (dot interrupt, lf interrupt, 2.5ms interrupt) this needs to be split to its own device.
+void decwriter_state::la120_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x27ff).rom();
+ map(0x3000, 0x301f).rw(this, FUNC(decwriter_state::la120_KBD_r), FUNC(decwriter_state::la120_LED_w)).mirror(0xFE0); // keyboard read, write to status and 7seg LEDS
+ map(0x4000, 0x43ff).mirror(0x0c00).ram(); // 1k 'low ram'
+ map(0x5000, 0x53ff).mirror(0x0c00).ram(); // 1k 'high ram'
+ map(0x6000, 0x67ff) /*.mirror(0x08fe)*/ .mirror(0x800).rw(this, FUNC(decwriter_state::la120_NVR_r), FUNC(decwriter_state::la120_NVR_w)); // ER1400 EAROM; a10,9,8 are c3,2,1, a0 is clk, data i/o on d7, d0 always reads as 0 (there may have once been a second er1400 with data i/o on d0, sharing same address controls as the d7 one, not populated on shipping boards), d1-d6 read open bus
+ map(0x7000, 0x7003).mirror(0x0ffc).rw(this, FUNC(decwriter_state::la120_DC305_r), FUNC(decwriter_state::la120_DC305_w)); // DC305 printer controller ASIC stuff; since this can generate interrupts (dot interrupt, lf interrupt, 2.5ms interrupt) this needs to be split to its own device.
// 8000-ffff is reserved for expansion (i.e. unused, open bus)
-ADDRESS_MAP_END
+}
/*
* 8080 IO address map (x = ignored; * = selects address within this range)
@@ -245,14 +246,15 @@ ADDRESS_MAP_END
0 x x x x x 1 x RW Flags Read/Write
1 x x x x x x x RW Expansion (Open bus)
*/
-ADDRESS_MAP_START(decwriter_state::la120_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) // 8251 Data
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) // 8251 Status/Control
- //AM_RANGE(0x02, 0x02) AM_MIRROR(0x7D) // other io ports, serial loopback etc, see table 4-9 in TM
+void decwriter_state::la120_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).mirror(0x7C).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); // 8251 Data
+ map(0x01, 0x01).mirror(0x7C).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 8251 Status/Control
+ //map(0x02, 0x02).mirror(0x7D); // other io ports, serial loopback etc, see table 4-9 in TM
// 0x80-0xff are reserved for expansion (i.e. unused, open bus)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+ map.global_mask(0xff);
+}
/* Input ports */
static INPUT_PORTS_START( la120 )
diff --git a/src/mame/drivers/deniam.cpp b/src/mame/drivers/deniam.cpp
index 3e2d152cd8c..1179d5ac987 100644
--- a/src/mame/drivers/deniam.cpp
+++ b/src/mame/drivers/deniam.cpp
@@ -73,55 +73,59 @@ WRITE16_MEMBER(deniam_state::deniam_irq_ack_w)
m_maincpu->set_input_line(4, CLEAR_LINE);
}
-ADDRESS_MAP_START(deniam_state::deniam16b_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w)
- AM_RANGE(0xc40004, 0xc40005) AM_WRITE(deniam_irq_ack_w)
- AM_RANGE(0xc44000, 0xc44001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1")
- AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") AM_WRITENOP
- AM_RANGE(0xc44006, 0xc44007) AM_READNOP /* unused? */
- AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deniam_state::sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(deniam_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x07, 0x07) AM_WRITE(deniam16b_oki_rom_bank_w)
-ADDRESS_MAP_END
+void deniam_state::deniam16b_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(deniam_state::deniam_videoram_w)).share("videoram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(deniam_state::deniam_textram_w)).share("textram");
+ map(0x440000, 0x4407ff).writeonly().share("spriteram");
+ map(0x840000, 0x840fff).w(this, FUNC(deniam_state::deniam_palette_w)).share("paletteram");
+ map(0xc40000, 0xc40000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc40002, 0xc40003).rw(this, FUNC(deniam_state::deniam_coinctrl_r), FUNC(deniam_state::deniam_coinctrl_w));
+ map(0xc40004, 0xc40005).w(this, FUNC(deniam_state::deniam_irq_ack_w));
+ map(0xc44000, 0xc44001).portr("SYSTEM");
+ map(0xc44002, 0xc44003).portr("P1");
+ map(0xc44004, 0xc44005).portr("P2").nopw();
+ map(0xc44006, 0xc44007).nopr(); /* unused? */
+ map(0xc4400a, 0xc4400b).portr("DSW");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void deniam_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void deniam_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x02, 0x03).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x05, 0x05).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x07, 0x07).w(this, FUNC(deniam_state::deniam16b_oki_rom_bank_w));
+}
/* identical to 16b, but handles sound directly */
-ADDRESS_MAP_START(deniam_state::deniam16c_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w)
- AM_RANGE(0xc40004, 0xc40005) AM_WRITE(deniam_irq_ack_w)
- AM_RANGE(0xc40006, 0xc40007) AM_WRITE(deniam16c_oki_rom_bank_w)
- AM_RANGE(0xc44000, 0xc44001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1")
- AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2")
- AM_RANGE(0xc44006, 0xc44007) AM_READNOP /* read unused? extra input port/dipswitches? */
- AM_RANGE(0xc40008, 0xc4000b) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0xff00)
- AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW") /* probably YM3812 input port */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void deniam_state::deniam16c_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(deniam_state::deniam_videoram_w)).share("videoram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(deniam_state::deniam_textram_w)).share("textram");
+ map(0x440000, 0x4407ff).writeonly().share("spriteram");
+ map(0x840000, 0x840fff).w(this, FUNC(deniam_state::deniam_palette_w)).share("paletteram");
+ map(0xc40001, 0xc40001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc40002, 0xc40003).rw(this, FUNC(deniam_state::deniam_coinctrl_r), FUNC(deniam_state::deniam_coinctrl_w));
+ map(0xc40004, 0xc40005).w(this, FUNC(deniam_state::deniam_irq_ack_w));
+ map(0xc40006, 0xc40007).w(this, FUNC(deniam_state::deniam16c_oki_rom_bank_w));
+ map(0xc44000, 0xc44001).portr("SYSTEM");
+ map(0xc44002, 0xc44003).portr("P1");
+ map(0xc44004, 0xc44005).portr("P2");
+ map(0xc44006, 0xc44007).nopr(); /* read unused? extra input port/dipswitches? */
+ map(0xc40008, 0xc4000b).w("ymsnd", FUNC(ym3812_device::write)).umask16(0xff00);
+ map(0xc4400a, 0xc4400b).portr("DSW"); /* probably YM3812 input port */
+ map(0xff0000, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/deshoros.cpp b/src/mame/drivers/deshoros.cpp
index 0daa0756d64..d1f41acdb92 100644
--- a/src/mame/drivers/deshoros.cpp
+++ b/src/mame/drivers/deshoros.cpp
@@ -170,23 +170,24 @@ WRITE8_MEMBER(destiny_state::sound_w)
m_beeper->set_state(~offset & 1);
}
-ADDRESS_MAP_START(destiny_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_READWRITE(printer_status_r, firq_ack_w)
- AM_RANGE(0x9001, 0x9001) AM_READ_PORT("SYSTEM") AM_WRITE(nmi_ack_w)
- AM_RANGE(0x9002, 0x9002) AM_READWRITE(display_ready_r, display_w)
- AM_RANGE(0x9003, 0x9003) AM_READ_PORT("KEY1")
- AM_RANGE(0x9004, 0x9004) AM_READ_PORT("KEY2")
- AM_RANGE(0x9005, 0x9005) AM_READ_PORT("DIPSW") AM_WRITE(out_w)
+void destiny_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("bank1");
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).rw(this, FUNC(destiny_state::printer_status_r), FUNC(destiny_state::firq_ack_w));
+ map(0x9001, 0x9001).portr("SYSTEM").w(this, FUNC(destiny_state::nmi_ack_w));
+ map(0x9002, 0x9002).rw(this, FUNC(destiny_state::display_ready_r), FUNC(destiny_state::display_w));
+ map(0x9003, 0x9003).portr("KEY1");
+ map(0x9004, 0x9004).portr("KEY2");
+ map(0x9005, 0x9005).portr("DIPSW").w(this, FUNC(destiny_state::out_w));
// AM_RANGE(0x9006, 0x9006) AM_NOP // printer motor on
// AM_RANGE(0x9007, 0x9007) AM_NOP // printer data
- AM_RANGE(0x900a, 0x900b) AM_WRITE(sound_w)
- AM_RANGE(0x900c, 0x900c) AM_WRITE(bank_select_w)
+ map(0x900a, 0x900b).w(this, FUNC(destiny_state::sound_w));
+ map(0x900c, 0x900c).w(this, FUNC(destiny_state::bank_select_w));
// AM_RANGE(0x900d, 0x900d) AM_NOP // printer motor off
// AM_RANGE(0x900e, 0x900e) AM_NOP // printer motor jam reset
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xc000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/destroyr.cpp b/src/mame/drivers/destroyr.cpp
index f372cd7f8d9..b2ece1255ac 100644
--- a/src/mame/drivers/destroyr.cpp
+++ b/src/mame/drivers/destroyr.cpp
@@ -290,21 +290,22 @@ READ8_MEMBER(destroyr_state::scanline_r)
}
-ADDRESS_MAP_START(destroyr_state::destroyr_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0xf00) AM_RAM
- AM_RANGE(0x1000, 0x1001) AM_MIRROR(0xffe) AM_READ(input_r)
- AM_RANGE(0x1000, 0x1007) AM_MIRROR(0xff0) AM_DEVWRITE("outlatch", f9334_device, write_d0)
- AM_RANGE(0x1008, 0x1008) AM_MIRROR(0xff7) AM_WRITE(misc_w)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0xfff) AM_READ_PORT("IN2")
- AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0xf00) AM_WRITEONLY AM_SHARE("alpha_nuram")
- AM_RANGE(0x4000, 0x401f) AM_MIRROR(0xfe0) AM_WRITEONLY AM_SHARE("major_obj_ram")
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(cursor_load_w)
- AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(interrupt_ack_w)
- AM_RANGE(0x5002, 0x5007) AM_MIRROR(0xff8) AM_WRITEONLY AM_SHARE("minor_obj_ram")
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0xfff) AM_READ(scanline_r)
- AM_RANGE(0x7000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void destroyr_state::destroyr_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).mirror(0xf00).ram();
+ map(0x1000, 0x1001).mirror(0xffe).r(this, FUNC(destroyr_state::input_r));
+ map(0x1000, 0x1007).mirror(0xff0).w("outlatch", FUNC(f9334_device::write_d0));
+ map(0x1008, 0x1008).mirror(0xff7).w(this, FUNC(destroyr_state::misc_w));
+ map(0x2000, 0x2000).mirror(0xfff).portr("IN2");
+ map(0x3000, 0x30ff).mirror(0xf00).writeonly().share("alpha_nuram");
+ map(0x4000, 0x401f).mirror(0xfe0).writeonly().share("major_obj_ram");
+ map(0x5000, 0x5000).mirror(0xff8).w(this, FUNC(destroyr_state::cursor_load_w));
+ map(0x5001, 0x5001).mirror(0xff8).w(this, FUNC(destroyr_state::interrupt_ack_w));
+ map(0x5002, 0x5007).mirror(0xff8).writeonly().share("minor_obj_ram");
+ map(0x6000, 0x6000).mirror(0xfff).r(this, FUNC(destroyr_state::scanline_r));
+ map(0x7000, 0x7fff).rom();
+}
static INPUT_PORTS_START( destroyr )
diff --git a/src/mame/drivers/dfruit.cpp b/src/mame/drivers/dfruit.cpp
index 7980e851d7d..4c557c18291 100644
--- a/src/mame/drivers/dfruit.cpp
+++ b/src/mame/drivers/dfruit.cpp
@@ -164,31 +164,33 @@ WRITE8_MEMBER(dfruit_state::dfruit_ram_1_w) { ram_bank_w(offset, data, 1); }
WRITE8_MEMBER(dfruit_state::dfruit_ram_2_w) { ram_bank_w(offset, data, 2); }
WRITE8_MEMBER(dfruit_state::dfruit_ram_3_w) { ram_bank_w(offset, data, 3); }
-ADDRESS_MAP_START(dfruit_state::tc0091lvc_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_READ(dfruit_rom_r)
-
- AM_RANGE(0x8000, 0x9fff) AM_RAM
-
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE(dfruit_ram_0_r,dfruit_ram_0_w)
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(dfruit_ram_1_r,dfruit_ram_1_w)
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(dfruit_ram_2_r,dfruit_ram_2_w)
- AM_RANGE(0xf000, 0xfdff) AM_READWRITE(dfruit_ram_3_r,dfruit_ram_3_w)
-
- AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("tc0091lvc", tc0091lvc_device, vregs_r, vregs_w)
- AM_RANGE(0xff00, 0xff02) AM_READWRITE(dfruit_irq_vector_r, dfruit_irq_vector_w)
- AM_RANGE(0xff03, 0xff03) AM_READWRITE(dfruit_irq_enable_r, dfruit_irq_enable_w)
- AM_RANGE(0xff04, 0xff07) AM_READWRITE(dfruit_ram_bank_r, dfruit_ram_bank_w)
- AM_RANGE(0xff08, 0xff08) AM_READWRITE(dfruit_rom_bank_r, dfruit_rom_bank_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dfruit_state::dfruit_map)
- AM_IMPORT_FROM(tc0091lvc_map)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa004, 0xa005) AM_DEVREADWRITE("opn", ym2203_device, read, write)
- AM_RANGE(0xa008, 0xa008) AM_READNOP //watchdog
-ADDRESS_MAP_END
+void dfruit_state::tc0091lvc_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).r(this, FUNC(dfruit_state::dfruit_rom_r));
+
+ map(0x8000, 0x9fff).ram();
+
+ map(0xc000, 0xcfff).rw(this, FUNC(dfruit_state::dfruit_ram_0_r), FUNC(dfruit_state::dfruit_ram_0_w));
+ map(0xd000, 0xdfff).rw(this, FUNC(dfruit_state::dfruit_ram_1_r), FUNC(dfruit_state::dfruit_ram_1_w));
+ map(0xe000, 0xefff).rw(this, FUNC(dfruit_state::dfruit_ram_2_r), FUNC(dfruit_state::dfruit_ram_2_w));
+ map(0xf000, 0xfdff).rw(this, FUNC(dfruit_state::dfruit_ram_3_r), FUNC(dfruit_state::dfruit_ram_3_w));
+
+ map(0xfe00, 0xfeff).rw(m_vdp, FUNC(tc0091lvc_device::vregs_r), FUNC(tc0091lvc_device::vregs_w));
+ map(0xff00, 0xff02).rw(this, FUNC(dfruit_state::dfruit_irq_vector_r), FUNC(dfruit_state::dfruit_irq_vector_w));
+ map(0xff03, 0xff03).rw(this, FUNC(dfruit_state::dfruit_irq_enable_r), FUNC(dfruit_state::dfruit_irq_enable_w));
+ map(0xff04, 0xff07).rw(this, FUNC(dfruit_state::dfruit_ram_bank_r), FUNC(dfruit_state::dfruit_ram_bank_w));
+ map(0xff08, 0xff08).rw(this, FUNC(dfruit_state::dfruit_rom_bank_r), FUNC(dfruit_state::dfruit_rom_bank_w));
+}
+
+
+void dfruit_state::dfruit_map(address_map &map)
+{
+ tc0091lvc_map(map);
+ map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa004, 0xa005).rw("opn", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa008, 0xa008).nopr(); //watchdog
+}
static INPUT_PORTS_START( dfruit )
diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp
index 9da42091534..620f5212dcb 100644
--- a/src/mame/drivers/dgn_beta.cpp
+++ b/src/mame/drivers/dgn_beta.cpp
@@ -140,40 +140,41 @@ static const unsigned char dgnbeta_palette[] =
*/
-ADDRESS_MAP_START(dgn_beta_state::dgnbeta_map)
- AM_RANGE(0x0000, 0x0FFF) AM_RAMBANK("bank1")
- AM_RANGE(0x1000, 0x1FFF) AM_RAMBANK("bank2")
- AM_RANGE(0x2000, 0x2FFF) AM_RAMBANK("bank3")
- AM_RANGE(0x3000, 0x3FFF) AM_RAMBANK("bank4")
- AM_RANGE(0x4000, 0x4FFF) AM_RAMBANK("bank5")
- AM_RANGE(0x5000, 0x5FFF) AM_RAMBANK("bank6")
- AM_RANGE(0x6000, 0x6FFF) AM_RAMBANK("bank7") AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7FFF) AM_RAMBANK("bank8")
- AM_RANGE(0x8000, 0x8FFF) AM_RAMBANK("bank9")
- AM_RANGE(0x9000, 0x9FFF) AM_RAMBANK("bank10")
- AM_RANGE(0xA000, 0xAFFF) AM_RAMBANK("bank11")
- AM_RANGE(0xB000, 0xBFFF) AM_RAMBANK("bank12")
- AM_RANGE(0xC000, 0xCFFF) AM_RAMBANK("bank13")
- AM_RANGE(0xD000, 0xDFFF) AM_RAMBANK("bank14")
- AM_RANGE(0xE000, 0xEFFF) AM_RAMBANK("bank15")
- AM_RANGE(0xF000, 0xFBFF) AM_RAMBANK("bank16")
- AM_RANGE(0xfC00, 0xfC1F) AM_NOP
- AM_RANGE(0xFC20, 0xFC23) AM_DEVREADWRITE(PIA_0_TAG, pia6821_device, read, write)
- AM_RANGE(0xFC24, 0xFC27) AM_DEVREADWRITE(PIA_1_TAG, pia6821_device, read, write)
- AM_RANGE(0xFC28, 0xfC7F) AM_NOP
- AM_RANGE(0xfc80, 0xfc80) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xfc81, 0xfc81) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0xfc82, 0xfC9F) AM_NOP
- AM_RANGE(0xFCA0, 0xFCA3) AM_READNOP AM_WRITE(dgnbeta_colour_ram_w) /* 4x4bit colour ram for graphics modes */
- AM_RANGE(0xFCC0, 0xFCC3) AM_DEVREADWRITE(PIA_2_TAG, pia6821_device, read, write)
- AM_RANGE(0xfcC4, 0xfcdf) AM_NOP
- AM_RANGE(0xfce0, 0xfce3) AM_READWRITE(dgnbeta_wd2797_r, dgnbeta_wd2797_w) /* Onboard disk interface */
- AM_RANGE(0xfce4, 0xfdff) AM_NOP
- AM_RANGE(0xFE00, 0xFE0F) AM_READWRITE(dgn_beta_page_r, dgn_beta_page_w)
- AM_RANGE(0xfe10, 0xfEff) AM_NOP
- AM_RANGE(0xFF00, 0xFFFF) AM_RAMBANK("bank17")
-
-ADDRESS_MAP_END
+void dgn_beta_state::dgnbeta_map(address_map &map)
+{
+ map(0x0000, 0x0FFF).bankrw("bank1");
+ map(0x1000, 0x1FFF).bankrw("bank2");
+ map(0x2000, 0x2FFF).bankrw("bank3");
+ map(0x3000, 0x3FFF).bankrw("bank4");
+ map(0x4000, 0x4FFF).bankrw("bank5");
+ map(0x5000, 0x5FFF).bankrw("bank6");
+ map(0x6000, 0x6FFF).bankrw("bank7").share("videoram");
+ map(0x7000, 0x7FFF).bankrw("bank8");
+ map(0x8000, 0x8FFF).bankrw("bank9");
+ map(0x9000, 0x9FFF).bankrw("bank10");
+ map(0xA000, 0xAFFF).bankrw("bank11");
+ map(0xB000, 0xBFFF).bankrw("bank12");
+ map(0xC000, 0xCFFF).bankrw("bank13");
+ map(0xD000, 0xDFFF).bankrw("bank14");
+ map(0xE000, 0xEFFF).bankrw("bank15");
+ map(0xF000, 0xFBFF).bankrw("bank16");
+ map(0xfC00, 0xfC1F).noprw();
+ map(0xFC20, 0xFC23).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xFC24, 0xFC27).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xFC28, 0xfC7F).noprw();
+ map(0xfc80, 0xfc80).w(m_mc6845, FUNC(mc6845_device::address_w));
+ map(0xfc81, 0xfc81).rw(m_mc6845, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xfc82, 0xfC9F).noprw();
+ map(0xFCA0, 0xFCA3).nopr().w(this, FUNC(dgn_beta_state::dgnbeta_colour_ram_w)); /* 4x4bit colour ram for graphics modes */
+ map(0xFCC0, 0xFCC3).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xfcC4, 0xfcdf).noprw();
+ map(0xfce0, 0xfce3).rw(this, FUNC(dgn_beta_state::dgnbeta_wd2797_r), FUNC(dgn_beta_state::dgnbeta_wd2797_w)); /* Onboard disk interface */
+ map(0xfce4, 0xfdff).noprw();
+ map(0xFE00, 0xFE0F).rw(this, FUNC(dgn_beta_state::dgn_beta_page_r), FUNC(dgn_beta_state::dgn_beta_page_w));
+ map(0xfe10, 0xfEff).noprw();
+ map(0xFF00, 0xFFFF).bankrw("bank17");
+
+}
diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp
index 5d204a01845..790684a7441 100644
--- a/src/mame/drivers/dgpix.cpp
+++ b/src/mame/drivers/dgpix.cpp
@@ -324,24 +324,26 @@ READ32_MEMBER(dgpix_state::vblank_r)
return m_vblank->read();
}
-ADDRESS_MAP_START(dgpix_state::cpu_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM
- AM_RANGE(0x40000000, 0x4003ffff) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0xe0000000, 0xe1ffffff) AM_READWRITE(flash_r, flash_w)
- AM_RANGE(0xe2000000, 0xe3ffffff) AM_READWRITE(flash_r, flash_w)
- AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("flash", 0x1c00000) AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dgpix_state::io_map)
- AM_RANGE(0x0200, 0x0203) AM_READNOP // used to sync with the protecion PIC? tested bits 0 and 1
- AM_RANGE(0x0400, 0x0403) AM_READWRITE(vblank_r, vbuffer_w)
- AM_RANGE(0x0a10, 0x0a13) AM_READ_PORT("INPUTS")
- AM_RANGE(0x0200, 0x0203) AM_WRITE(coin_w)
- AM_RANGE(0x0c00, 0x0c03) AM_WRITENOP // writes only: 1, 0, 1 at startup
- AM_RANGE(0x0c80, 0x0c83) AM_WRITENOP // sound commands / latches
- AM_RANGE(0x0c80, 0x0c83) AM_READNOP //read at startup -> cmp 0xFE
- AM_RANGE(0x0c84, 0x0c87) AM_READNOP // sound status, checks bit 0x40 and 0x80
-ADDRESS_MAP_END
+void dgpix_state::cpu_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram();
+ map(0x40000000, 0x4003ffff).rw(this, FUNC(dgpix_state::vram_r), FUNC(dgpix_state::vram_w));
+ map(0xe0000000, 0xe1ffffff).rw(this, FUNC(dgpix_state::flash_r), FUNC(dgpix_state::flash_w));
+ map(0xe2000000, 0xe3ffffff).rw(this, FUNC(dgpix_state::flash_r), FUNC(dgpix_state::flash_w));
+ map(0xffc00000, 0xffffffff).rom().region("flash", 0x1c00000).share("nvram");
+}
+
+void dgpix_state::io_map(address_map &map)
+{
+ map(0x0200, 0x0203).nopr(); // used to sync with the protecion PIC? tested bits 0 and 1
+ map(0x0400, 0x0403).rw(this, FUNC(dgpix_state::vblank_r), FUNC(dgpix_state::vbuffer_w));
+ map(0x0a10, 0x0a13).portr("INPUTS");
+ map(0x0200, 0x0203).w(this, FUNC(dgpix_state::coin_w));
+ map(0x0c00, 0x0c03).nopw(); // writes only: 1, 0, 1 at startup
+ map(0x0c80, 0x0c83).nopw(); // sound commands / latches
+ map(0x0c80, 0x0c83).nopr(); //read at startup -> cmp 0xFE
+ map(0x0c84, 0x0c87).nopr(); // sound status, checks bit 0x40 and 0x80
+}
static INPUT_PORTS_START( dgpix )
diff --git a/src/mame/drivers/diablo1300.cpp b/src/mame/drivers/diablo1300.cpp
index 3b3b150c21c..ca29ab9b7be 100644
--- a/src/mame/drivers/diablo1300.cpp
+++ b/src/mame/drivers/diablo1300.cpp
@@ -154,13 +154,15 @@ public:
void diablo1300_data_map(address_map &map);
};
-ADDRESS_MAP_START( diablo1300_state::diablo1300_map) //, AS_PROGRAM, 16, diablo1300_state )
- AM_RANGE(0x0000, 0x01ff) AM_ROM
-ADDRESS_MAP_END
+void diablo1300_state::diablo1300_map(address_map &map)
+{ //, AS_PROGRAM, 16, diablo1300_state )
+ map(0x0000, 0x01ff).rom();
+}
-ADDRESS_MAP_START( diablo1300_state::diablo1300_data_map ) // , AS_DATA, 8, diablo1300_state )
- AM_RANGE(0x00, 0x1f) AM_RAM
-ADDRESS_MAP_END
+void diablo1300_state::diablo1300_data_map(address_map &map)
+{ // , AS_DATA, 8, diablo1300_state )
+ map(0x00, 0x1f).ram();
+}
static INPUT_PORTS_START( diablo1300 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp
index 44c91300af6..598dc96f0bd 100644
--- a/src/mame/drivers/didact.cpp
+++ b/src/mame/drivers/didact.cpp
@@ -285,12 +285,13 @@ void md6802_state::machine_reset()
}
// This address map is traced from schema
-ADDRESS_MAP_START(md6802_state::md6802_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE(PIA1_TAG, pia6821_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE(PIA2_TAG, pia6821_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE(0xe000, 0xe7ff) AM_ROM AM_MIRROR(0x1800) AM_REGION("maincpu", 0xe000)
-ADDRESS_MAP_END
+void md6802_state::md6802_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().mirror(0x1800);
+ map(0xa000, 0xa003).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).mirror(0x1ffc);
+ map(0xc000, 0xc003).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).mirror(0x1ffc);
+ map(0xe000, 0xe7ff).rom().mirror(0x1800).region("maincpu", 0xe000);
+}
/*
* ___________________________________________________________________________________________________________ _____________________________________________________
@@ -477,13 +478,14 @@ void mp68a_state::machine_start()
}
// This address map is traced from pcb
-ADDRESS_MAP_START(mp68a_state::mp68a_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0xf000)
- AM_RANGE(0x0500, 0x0503) AM_DEVREADWRITE(PIA1_TAG, pia6820_device, read, write) AM_MIRROR(0xf0fc)
- AM_RANGE(0x0600, 0x0603) AM_DEVREADWRITE(PIA2_TAG, pia6820_device, read, write) AM_MIRROR(0xf0fc)
- AM_RANGE(0x0700, 0x07ff) AM_RAM AM_MIRROR(0xf000)
- AM_RANGE(0x0800, 0x0bff) AM_ROM AM_MIRROR(0xf400) AM_REGION("maincpu", 0x0800)
-ADDRESS_MAP_END
+void mp68a_state::mp68a_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().mirror(0xf000);
+ map(0x0500, 0x0503).rw(m_pia1, FUNC(pia6820_device::read), FUNC(pia6820_device::write)).mirror(0xf0fc);
+ map(0x0600, 0x0603).rw(m_pia2, FUNC(pia6820_device::read), FUNC(pia6820_device::write)).mirror(0xf0fc);
+ map(0x0700, 0x07ff).ram().mirror(0xf000);
+ map(0x0800, 0x0bff).rom().mirror(0xf400).region("maincpu", 0x0800);
+}
static INPUT_PORTS_START( md6802 )
PORT_START("LINE0") /* KEY ROW 0 */
diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp
index e370b36c5b9..80d4c6143a2 100644
--- a/src/mame/drivers/dietgo.cpp
+++ b/src/mame/drivers/dietgo.cpp
@@ -24,7 +24,6 @@ PAL16R6A 11H
#include "includes/dietgo.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "sound/ym2151.h"
#include "sound/okim6295.h"
#include "machine/decocrpt.h"
@@ -52,36 +51,39 @@ WRITE16_MEMBER( dietgo_state::dietgo_protection_region_0_104_w )
}
-ADDRESS_MAP_START(dietgo_state::dietgo_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x210000, 0x211fff) AM_DEVWRITE("tilegen1", deco16ic_device, pf1_data_w)
- AM_RANGE(0x212000, 0x213fff) AM_DEVWRITE("tilegen1", deco16ic_device, pf2_data_w)
- AM_RANGE(0x220000, 0x2207ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x222000, 0x2227ff) AM_WRITEONLY AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x280000, 0x2807ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300000, 0x300bff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x340000, 0x343fff) AM_READWRITE(dietgo_protection_region_0_104_r,dietgo_protection_region_0_104_w)AM_SHARE("prot16ram") /* Protection device */
- AM_RANGE(0x380000, 0x38ffff) AM_RAM // mainram
-ADDRESS_MAP_END
+void dietgo_state::dietgo_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x210000, 0x211fff).w(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_w));
+ map(0x212000, 0x213fff).w(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_w));
+ map(0x220000, 0x2207ff).writeonly().share("pf1_rowscroll");
+ map(0x222000, 0x2227ff).writeonly().share("pf2_rowscroll");
+ map(0x280000, 0x2807ff).ram().share("spriteram");
+ map(0x300000, 0x300bff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x340000, 0x343fff).rw(this, FUNC(dietgo_state::dietgo_protection_region_0_104_r), FUNC(dietgo_state::dietgo_protection_region_0_104_w)).share("prot16ram"); /* Protection device */
+ map(0x380000, 0x38ffff).ram(); // mainram
+}
-ADDRESS_MAP_START(dietgo_state::decrypted_opcodes_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
+void dietgo_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().share("decrypted_opcodes");
+}
/* Physical memory map (21 bits) */
-ADDRESS_MAP_START(dietgo_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
- AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot104", deco104_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void dietgo_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).noprw(); /* YM2203 - this board doesn't have one */
+ map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).noprw(); /* This board only has 1 oki chip */
+ map(0x140000, 0x140000).r(m_deco104, FUNC(deco104_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
diff --git a/src/mame/drivers/digel804.cpp b/src/mame/drivers/digel804.cpp
index 9d329605596..b937342f6ec 100644
--- a/src/mame/drivers/digel804.cpp
+++ b/src/mame/drivers/digel804.cpp
@@ -468,89 +468,93 @@ WRITE8_MEMBER( digel804_state::acia_control_w )
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(digel804_state::z80_mem_804_1_4)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM // 3f in mapper = rom J3
+void digel804_state::z80_mem_804_1_4(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom(); // 3f in mapper = rom J3
//AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram") // 6f in mapper = RAM D43 (6164)
//AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("main_ram") // 77 in mapper = RAM D44 (6164)
//AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("main_ram") // 7b in mapper = RAM D45 (6164)
//AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("main_ram") // 7d in mapper = RAM D46 (6164)
- AM_RANGE(0x4000,0xbfff) AM_RAMBANK("bankedram")
+ map(0x4000, 0xbfff).bankrw("bankedram");
// c000-cfff is open bus in mapper, 7f
- AM_RANGE(0xd000, 0xd7ff) AM_RAM // 7e in mapper = RAM P3 (6116)
- AM_RANGE(0xd800, 0xf7ff) AM_ROM // 5f in mapper = rom K3
+ map(0xd000, 0xd7ff).ram(); // 7e in mapper = RAM P3 (6116)
+ map(0xd800, 0xf7ff).rom(); // 5f in mapper = rom K3
// f800-ffff is open bus in mapper, 7f
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(ep804_state::z80_mem_804_1_2)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM // 3f in mapper = rom D41
- AM_RANGE(0x2000, 0x3fff) AM_ROM // 5f in mapper = rom D42
+void ep804_state::z80_mem_804_1_2(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom(); // 3f in mapper = rom D41
+ map(0x2000, 0x3fff).rom(); // 5f in mapper = rom D42
//AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram") // 6f in mapper = RAM D43 (6164)
//AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("main_ram") // 77 in mapper = RAM D44 (6164)
//AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("main_ram") // 7b in mapper = RAM D45 (6164)
//AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("main_ram") // 7d in mapper = RAM D46 (6164)
- AM_RANGE(0x4000,0xbfff) AM_RAMBANK("bankedram")
+ map(0x4000, 0xbfff).bankrw("bankedram");
// c000-cfff is open bus in mapper, 7f
//AM_RANGE(0xc000, 0xc7ff) AM_RAM // hack for now to test, since sometimes it writes to c3ff
- AM_RANGE(0xd000, 0xd7ff) AM_RAM // 7e in mapper = RAM D47 (6116)
+ map(0xd000, 0xd7ff).ram(); // 7e in mapper = RAM D47 (6116)
// d800-ffff is open bus in mapper, 7f
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(digel804_state::z80_io_1_4)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void digel804_state::z80_io_1_4(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// io bits: x 1 x x x * * *
// writes to 47, 4e, 57, 5e, 67, 6e, 77, 7e, c7, ce, d7, de, e7, ee, f7, fe all go to 47, same with reads
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x38) AM_WRITE(op00) // W, banked ram
- AM_RANGE(0x40, 0x40) AM_MIRROR(0xB8) AM_READWRITE(ip40, op40) // RW, eprom socket data bus input/output value
- AM_RANGE(0x41, 0x41) AM_MIRROR(0xB8) AM_WRITE(op41) // W, eprom socket address low out
- AM_RANGE(0x42, 0x42) AM_MIRROR(0xB8) AM_WRITE(op42) // W, eprom socket address hi/control out
- AM_RANGE(0x43, 0x43) AM_MIRROR(0xB8) AM_READWRITE(ip43, op43_1_4) // RW, mode and status register, also checks if keypad is pressed; write is unknown
- AM_RANGE(0x44, 0x44) AM_MIRROR(0xB8) AM_WRITE(op44) // W, 10937 vfd controller, z80 power and state control reg
- AM_RANGE(0x45, 0x45) AM_MIRROR(0xB8) AM_WRITE(op45) // W, speaker bit; every write inverts state
- AM_RANGE(0x46, 0x46) AM_MIRROR(0xB8) AM_READWRITE(ip46, op46) // RW, reads keypad, writes controls the front panel leds.
- AM_RANGE(0x47, 0x47) AM_MIRROR(0xB8) AM_WRITE(op47) // W eprom socket power and timing control
+ map(0x00, 0x00).mirror(0x38).w(this, FUNC(digel804_state::op00)); // W, banked ram
+ map(0x40, 0x40).mirror(0xB8).rw(this, FUNC(digel804_state::ip40), FUNC(digel804_state::op40)); // RW, eprom socket data bus input/output value
+ map(0x41, 0x41).mirror(0xB8).w(this, FUNC(digel804_state::op41)); // W, eprom socket address low out
+ map(0x42, 0x42).mirror(0xB8).w(this, FUNC(digel804_state::op42)); // W, eprom socket address hi/control out
+ map(0x43, 0x43).mirror(0xB8).rw(this, FUNC(digel804_state::ip43), FUNC(digel804_state::op43_1_4)); // RW, mode and status register, also checks if keypad is pressed; write is unknown
+ map(0x44, 0x44).mirror(0xB8).w(this, FUNC(digel804_state::op44)); // W, 10937 vfd controller, z80 power and state control reg
+ map(0x45, 0x45).mirror(0xB8).w(this, FUNC(digel804_state::op45)); // W, speaker bit; every write inverts state
+ map(0x46, 0x46).mirror(0xB8).rw(this, FUNC(digel804_state::ip46), FUNC(digel804_state::op46)); // RW, reads keypad, writes controls the front panel leds.
+ map(0x47, 0x47).mirror(0xB8).w(this, FUNC(digel804_state::op47)); // W eprom socket power and timing control
// io bits: 1 0 x x x * * *
// writes to 80, 88, 90, 98, a0, a8, b0, b8 all go to 80, same with reads
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x38) AM_WRITE(acia_txd_w) // (ACIA xmit reg)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x38) AM_READ(acia_rxd_r) // (ACIA rcv reg)
- AM_RANGE(0x82, 0x82) AM_MIRROR(0x38) AM_WRITE(acia_reset_w) // (ACIA reset reg)
- AM_RANGE(0x83, 0x83) AM_MIRROR(0x38) AM_READ(acia_status_r) // (ACIA status reg)
- AM_RANGE(0x84, 0x84) AM_MIRROR(0x38) AM_WRITE(acia_command_w) // (ACIA command reg)
- AM_RANGE(0x85, 0x85) AM_MIRROR(0x38) AM_READ(acia_command_r) // (ACIA command reg)
- AM_RANGE(0x86, 0x86) AM_MIRROR(0x38) AM_WRITE(acia_control_w) // (ACIA control reg)
- AM_RANGE(0x87, 0x87) AM_MIRROR(0x38) AM_READ(acia_control_r) // (ACIA control reg)
+ map(0x80, 0x80).mirror(0x38).w(this, FUNC(digel804_state::acia_txd_w)); // (ACIA xmit reg)
+ map(0x81, 0x81).mirror(0x38).r(this, FUNC(digel804_state::acia_rxd_r)); // (ACIA rcv reg)
+ map(0x82, 0x82).mirror(0x38).w(this, FUNC(digel804_state::acia_reset_w)); // (ACIA reset reg)
+ map(0x83, 0x83).mirror(0x38).r(this, FUNC(digel804_state::acia_status_r)); // (ACIA status reg)
+ map(0x84, 0x84).mirror(0x38).w(this, FUNC(digel804_state::acia_command_w)); // (ACIA command reg)
+ map(0x85, 0x85).mirror(0x38).r(this, FUNC(digel804_state::acia_command_r)); // (ACIA command reg)
+ map(0x86, 0x86).mirror(0x38).w(this, FUNC(digel804_state::acia_control_w)); // (ACIA control reg)
+ map(0x87, 0x87).mirror(0x38).r(this, FUNC(digel804_state::acia_control_r)); // (ACIA control reg)
//AM_RANGE(0x80,0x87) AM_MIRROR(0x38) AM_SHIFT(-1) AM_DEVREADWRITE("acia", mos6551_device, read, write) // this doesn't work since we lack an AM_SHIFT command
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(ep804_state::z80_io_1_2)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void ep804_state::z80_io_1_2(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// io bits: x 1 x x x * * *
// writes to 47, 4e, 57, 5e, 67, 6e, 77, 7e, c7, ce, d7, de, e7, ee, f7, fe all go to 47, same with reads
- AM_RANGE(0x40, 0x40) AM_MIRROR(0xB8) AM_READWRITE(ip40, op40) // RW, eprom socket data bus input/output value
- AM_RANGE(0x41, 0x41) AM_MIRROR(0xB8) AM_WRITE(op41) // W, eprom socket address low out
- AM_RANGE(0x42, 0x42) AM_MIRROR(0xB8) AM_WRITE(op42) // W, eprom socket address hi/control out
- AM_RANGE(0x43, 0x43) AM_MIRROR(0xB8) AM_READWRITE(ip43, op43) // RW, mode and status register, also checks if keypad is pressed; write is unknown
- AM_RANGE(0x44, 0x44) AM_MIRROR(0xB8) AM_WRITE(op44) // W, 10937 vfd controller, z80 power and state control reg
- AM_RANGE(0x45, 0x45) AM_MIRROR(0xB8) AM_WRITE(op45) // W, speaker bit; every write inverts state
- AM_RANGE(0x46, 0x46) AM_MIRROR(0xB8) AM_READWRITE(ip46, op46) // RW, reads keypad, writes controls the front panel leds.
- AM_RANGE(0x47, 0x47) AM_MIRROR(0xB8) AM_WRITE(op47) // W eprom socket power and timing control
+ map(0x40, 0x40).mirror(0xB8).rw(this, FUNC(ep804_state::ip40), FUNC(ep804_state::op40)); // RW, eprom socket data bus input/output value
+ map(0x41, 0x41).mirror(0xB8).w(this, FUNC(ep804_state::op41)); // W, eprom socket address low out
+ map(0x42, 0x42).mirror(0xB8).w(this, FUNC(ep804_state::op42)); // W, eprom socket address hi/control out
+ map(0x43, 0x43).mirror(0xB8).rw(this, FUNC(ep804_state::ip43), FUNC(ep804_state::op43)); // RW, mode and status register, also checks if keypad is pressed; write is unknown
+ map(0x44, 0x44).mirror(0xB8).w(this, FUNC(ep804_state::op44)); // W, 10937 vfd controller, z80 power and state control reg
+ map(0x45, 0x45).mirror(0xB8).w(this, FUNC(ep804_state::op45)); // W, speaker bit; every write inverts state
+ map(0x46, 0x46).mirror(0xB8).rw(this, FUNC(ep804_state::ip46), FUNC(ep804_state::op46)); // RW, reads keypad, writes controls the front panel leds.
+ map(0x47, 0x47).mirror(0xB8).w(this, FUNC(ep804_state::op47)); // W eprom socket power and timing control
// io bits: 1 0 x x x * * *
// writes to 80, 88, 90, 98, a0, a8, b0, b8 all go to 80, same with reads
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x38) AM_WRITE(acia_txd_w) // (ACIA xmit reg)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x38) AM_READ(acia_rxd_r) // (ACIA rcv reg)
- AM_RANGE(0x82, 0x82) AM_MIRROR(0x38) AM_WRITE(acia_reset_w) // (ACIA reset reg)
- AM_RANGE(0x83, 0x83) AM_MIRROR(0x38) AM_READ(acia_status_r) // (ACIA status reg)
- AM_RANGE(0x84, 0x84) AM_MIRROR(0x38) AM_WRITE(acia_command_w) // (ACIA command reg)
- AM_RANGE(0x85, 0x85) AM_MIRROR(0x38) AM_READ(acia_command_r) // (ACIA command reg)
- AM_RANGE(0x86, 0x86) AM_MIRROR(0x38) AM_WRITE(acia_control_w) // (ACIA control reg)
- AM_RANGE(0x87, 0x87) AM_MIRROR(0x38) AM_READ(acia_control_r) // (ACIA control reg)
+ map(0x80, 0x80).mirror(0x38).w(this, FUNC(ep804_state::acia_txd_w)); // (ACIA xmit reg)
+ map(0x81, 0x81).mirror(0x38).r(this, FUNC(ep804_state::acia_rxd_r)); // (ACIA rcv reg)
+ map(0x82, 0x82).mirror(0x38).w(this, FUNC(ep804_state::acia_reset_w)); // (ACIA reset reg)
+ map(0x83, 0x83).mirror(0x38).r(this, FUNC(ep804_state::acia_status_r)); // (ACIA status reg)
+ map(0x84, 0x84).mirror(0x38).w(this, FUNC(ep804_state::acia_command_w)); // (ACIA command reg)
+ map(0x85, 0x85).mirror(0x38).r(this, FUNC(ep804_state::acia_command_r)); // (ACIA command reg)
+ map(0x86, 0x86).mirror(0x38).w(this, FUNC(ep804_state::acia_control_w)); // (ACIA control reg)
+ map(0x87, 0x87).mirror(0x38).r(this, FUNC(ep804_state::acia_control_r)); // (ACIA control reg)
//AM_RANGE(0x80,0x87) AM_MIRROR(0x38) AM_SHIFT(-1) AM_DEVREADWRITE("acia", mos6551_device, read, write) // this doesn't work since we lack an AM_SHIFT command
-ADDRESS_MAP_END
+}
/******************************************************************************
diff --git a/src/mame/drivers/digijet.cpp b/src/mame/drivers/digijet.cpp
index 08635fa7473..adcb112da5b 100644
--- a/src/mame/drivers/digijet.cpp
+++ b/src/mame/drivers/digijet.cpp
@@ -41,8 +41,9 @@ public:
void io_map(address_map &map);
};
-ADDRESS_MAP_START(digijet_state::io_map)
-ADDRESS_MAP_END
+void digijet_state::io_map(address_map &map)
+{
+}
static INPUT_PORTS_START( digijet )
INPUT_PORTS_END
diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp
index bd6e8d36d6c..45604e6ce5a 100644
--- a/src/mame/drivers/dim68k.cpp
+++ b/src/mame/drivers/dim68k.cpp
@@ -184,33 +184,34 @@ WRITE16_MEMBER( dim68k_state::dim68k_banksw_w )
{
}
-ADDRESS_MAP_START(dim68k_state::dim68k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x00feffff) AM_RAM AM_SHARE("ram") // 16MB RAM / ROM at boot
- AM_RANGE(0x00ff0000, 0x00ff1fff) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0x00ff2000, 0x00ff7fff) AM_RAM // Graphics Video RAM
- AM_RANGE(0x00ff8000, 0x00ff8001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff)
- AM_RANGE(0x00ff8002, 0x00ff8003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff)
- AM_RANGE(0x00ff8004, 0x00ff8005) AM_WRITE(dim68k_video_high_w)
- AM_RANGE(0x00ff8008, 0x00ff8009) AM_WRITE(dim68k_video_control_w)
- AM_RANGE(0x00ff800a, 0x00ff800b) AM_WRITE(dim68k_video_reset_w)
- AM_RANGE(0x00ff8800, 0x00ff8fff) AM_ROM AM_REGION("cop6512",0) // slot 1 controller rom
- AM_RANGE(0x00ff9000, 0x00ff97ff) AM_ROM AM_REGION("copz80",0) // slot 2 controller rom
- AM_RANGE(0x00ff9800, 0x00ff9fff) AM_ROM AM_REGION("cop8086",0) // slot 3 controller rom
+void dim68k_state::dim68k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x00feffff).ram().share("ram"); // 16MB RAM / ROM at boot
+ map(0x00ff0000, 0x00ff1fff).rom().region("bootrom", 0);
+ map(0x00ff2000, 0x00ff7fff).ram(); // Graphics Video RAM
+ map(0x00ff8001, 0x00ff8001).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x00ff8003, 0x00ff8003).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x00ff8004, 0x00ff8005).w(this, FUNC(dim68k_state::dim68k_video_high_w));
+ map(0x00ff8008, 0x00ff8009).w(this, FUNC(dim68k_state::dim68k_video_control_w));
+ map(0x00ff800a, 0x00ff800b).w(this, FUNC(dim68k_state::dim68k_video_reset_w));
+ map(0x00ff8800, 0x00ff8fff).rom().region("cop6512", 0); // slot 1 controller rom
+ map(0x00ff9000, 0x00ff97ff).rom().region("copz80", 0); // slot 2 controller rom
+ map(0x00ff9800, 0x00ff9fff).rom().region("cop8086", 0); // slot 3 controller rom
#if 0
- AM_RANGE(0x00ffa000, 0x00ffa7ff) AM_ROM // slot 4 controller rom
- AM_RANGE(0x00ffa800, 0x00ffafff) AM_ROM // slot 5 controller rom
- AM_RANGE(0x00ffb000, 0x00ffb7ff) AM_ROM // slot 6 controller rom
+ map(0x00ffa000, 0x00ffa7ff).rom(); // slot 4 controller rom
+ map(0x00ffa800, 0x00ffafff).rom(); // slot 5 controller rom
+ map(0x00ffb000, 0x00ffb7ff).rom(); // slot 6 controller rom
#endif
- AM_RANGE(0x00ffc400, 0x00ffc41f) AM_READWRITE(dim68k_duart_r,dim68k_duart_w) // Signetics SCN2681AC1N40 Dual UART
- AM_RANGE(0x00ffc800, 0x00ffc801) AM_READWRITE(dim68k_speaker_r,dim68k_speaker_w)
- AM_RANGE(0x00ffcc00, 0x00ffcc1f) AM_READWRITE(dim68k_game_switches_r,dim68k_reset_timers_w)
- AM_RANGE(0x00ffd000, 0x00ffd003) AM_DEVICE8("fdc",upd765a_device,map,0x00ff) // NEC uPD765A
- AM_RANGE(0x00ffd004, 0x00ffd005) AM_READWRITE(dim68k_fdc_r,dim68k_fdc_w)
+ map(0x00ffc400, 0x00ffc41f).rw(this, FUNC(dim68k_state::dim68k_duart_r), FUNC(dim68k_state::dim68k_duart_w)); // Signetics SCN2681AC1N40 Dual UART
+ map(0x00ffc800, 0x00ffc801).rw(this, FUNC(dim68k_state::dim68k_speaker_r), FUNC(dim68k_state::dim68k_speaker_w));
+ map(0x00ffcc00, 0x00ffcc1f).rw(this, FUNC(dim68k_state::dim68k_game_switches_r), FUNC(dim68k_state::dim68k_reset_timers_w));
+ map(0x00ffd000, 0x00ffd003).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff); // NEC uPD765A
+ map(0x00ffd004, 0x00ffd005).rw(this, FUNC(dim68k_state::dim68k_fdc_r), FUNC(dim68k_state::dim68k_fdc_w));
//AM_RANGE(0x00ffd400, 0x00ffd403) emulation trap control
- AM_RANGE(0x00ffd800, 0x00ffd801) AM_WRITE(dim68k_printer_strobe_w)
- AM_RANGE(0x00ffdc00, 0x00ffdc01) AM_WRITE(dim68k_banksw_w)
-ADDRESS_MAP_END
+ map(0x00ffd800, 0x00ffd801).w(this, FUNC(dim68k_state::dim68k_printer_strobe_w));
+ map(0x00ffdc00, 0x00ffdc01).w(this, FUNC(dim68k_state::dim68k_banksw_w));
+}
/* Input ports */
static INPUT_PORTS_START( dim68k )
diff --git a/src/mame/drivers/discoboy.cpp b/src/mame/drivers/discoboy.cpp
index 73efdd841d5..b657643cf15 100644
--- a/src/mame/drivers/discoboy.cpp
+++ b/src/mame/drivers/discoboy.cpp
@@ -273,20 +273,22 @@ WRITE8_MEMBER(discoboy_state::rambank2_w)
printf("unk rb2_w\n");
}
-ADDRESS_MAP_START(discoboy_state::discoboy_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xc7ff) AM_DEVICE("rambank1", address_map_bank_device, amap8)
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("att_ram")
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(rambank2_r, rambank2_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(discoboy_state::rambank1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("ram_1")
- AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("ram_2")
-ADDRESS_MAP_END
+void discoboy_state::discoboy_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xc7ff).m(m_rambank1, FUNC(address_map_bank_device::amap8));
+ map(0xc800, 0xcfff).ram().share("att_ram");
+ map(0xd000, 0xdfff).rw(this, FUNC(discoboy_state::rambank2_r), FUNC(discoboy_state::rambank2_w));
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram();
+}
+
+void discoboy_state::rambank1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("ram_1");
+ map(0x0800, 0x0fff).ram().share("ram_2");
+}
READ8_MEMBER(discoboy_state::port_06_r)
@@ -294,16 +296,17 @@ READ8_MEMBER(discoboy_state::port_06_r)
return 0x00;
}
-ADDRESS_MAP_START(discoboy_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") AM_WRITE(port_00_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_01_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P1")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB")
- AM_RANGE(0x06, 0x06) AM_READWRITE(port_06_r, port_06_w) // ???
- AM_RANGE(0x07, 0x07) AM_WRITE(rambank_select_w) // 0x20 is palette bank bit.. others?
-ADDRESS_MAP_END
+void discoboy_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSWA").w(this, FUNC(discoboy_state::port_00_w));
+ map(0x01, 0x01).portr("SYSTEM").w(this, FUNC(discoboy_state::port_01_w));
+ map(0x02, 0x02).portr("P1");
+ map(0x03, 0x03).portr("P2").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x04, 0x04).portr("DSWB");
+ map(0x06, 0x06).rw(this, FUNC(discoboy_state::port_06_r), FUNC(discoboy_state::port_06_w)); // ???
+ map(0x07, 0x07).w(this, FUNC(discoboy_state::rambank_select_w)); // 0x20 is palette bank bit.. others?
+}
/* Sound */
@@ -318,15 +321,16 @@ WRITE8_MEMBER(discoboy_state::yunsung8_sound_bankswitch_w)
logerror("%s: Bank %02X\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(discoboy_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("sndbank")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(yunsung8_sound_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void discoboy_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("sndbank");
+ map(0xe000, 0xe000).w(this, FUNC(discoboy_state::yunsung8_sound_bankswitch_w));
+ map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( discoboy )
diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp
index 31b7d12cae3..bc51a4a44e3 100644
--- a/src/mame/drivers/divebomb.cpp
+++ b/src/mame/drivers/divebomb.cpp
@@ -103,33 +103,35 @@ To verify against original HW:
*
*************************************/
-ADDRESS_MAP_START(divebomb_state::divebomb_fgcpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(divebomb_state::divebomb_fgcpu_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn0", sn76489_device, write)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("sn3", sn76489_device, write)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("sn4", sn76489_device, write)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("sn5", sn76489_device, write)
- AM_RANGE(0x10, 0x10) AM_READWRITE(fgcpu_roz_comm_r, fgcpu_roz_comm_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(fgcpu_spr_comm_r, fgcpu_spr_comm_w)
- AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0")
- AM_RANGE(0x31, 0x31) AM_READ_PORT("IN1")
- AM_RANGE(0x32, 0x32) AM_READ_PORT("DSW1")
- AM_RANGE(0x33, 0x33) AM_READ_PORT("DSW2")
+void divebomb_state::divebomb_fgcpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(divebomb_state::fgram_w)).share("fgram");
+ map(0xe000, 0xffff).ram();
+}
+
+
+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(0x10, 0x10).rw(this, FUNC(divebomb_state::fgcpu_roz_comm_r), FUNC(divebomb_state::fgcpu_roz_comm_w));
+ map(0x20, 0x20).rw(this, FUNC(divebomb_state::fgcpu_spr_comm_r), FUNC(divebomb_state::fgcpu_spr_comm_w));
+ map(0x30, 0x30).portr("IN0");
+ map(0x31, 0x31).portr("IN1");
+ map(0x32, 0x32).portr("DSW1");
+ map(0x33, 0x33).portr("DSW2");
// 34/35 aren't read but PCB has 4 banks of dips populated, so logically they would map here even if unused
- AM_RANGE(0x34, 0x34) AM_READ_PORT("DSW3")
- AM_RANGE(0x35, 0x35) AM_READ_PORT("DSW4")
- AM_RANGE(0x36, 0x36) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x37, 0x37) AM_READ(fgcpu_comm_flags_r)
-ADDRESS_MAP_END
+ map(0x34, 0x34).portr("DSW3");
+ map(0x35, 0x35).portr("DSW4");
+ map(0x36, 0x36).portr("SYSTEM");
+ map(0x37, 0x37).r(this, FUNC(divebomb_state::fgcpu_comm_flags_r));
+}
READ8_MEMBER(divebomb_state::fgcpu_spr_comm_r)
@@ -182,19 +184,21 @@ READ8_MEMBER(divebomb_state::fgcpu_comm_flags_r)
*
*************************************/
-ADDRESS_MAP_START(divebomb_state::divebomb_spritecpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xdfff) AM_WRITENOP
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void divebomb_state::divebomb_spritecpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().share("spriteram");
+ map(0xc800, 0xdfff).nopw();
+ map(0xe000, 0xffff).ram();
+}
-ADDRESS_MAP_START(divebomb_state::divebomb_spritecpu_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(spritecpu_port00_w)
- AM_RANGE(0x80, 0x80) AM_READWRITE(spritecpu_comm_r, spritecpu_comm_w)
-ADDRESS_MAP_END
+void divebomb_state::divebomb_spritecpu_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(divebomb_state::spritecpu_port00_w));
+ map(0x80, 0x80).rw(this, FUNC(divebomb_state::spritecpu_comm_r), FUNC(divebomb_state::spritecpu_comm_w));
+}
READ8_MEMBER(divebomb_state::spritecpu_comm_r)
@@ -226,27 +230,29 @@ WRITE8_MEMBER(divebomb_state::spritecpu_port00_w)
*
*************************************/
-ADDRESS_MAP_START(divebomb_state::divebomb_rozcpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_DEVREADWRITE("k051316_1", k051316_device, read, write)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_DEVREADWRITE("k051316_2", k051316_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(divebomb_state::divebomb_rozcpu_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(rozcpu_bank_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(rozcpu_wrap2_enable_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(rozcpu_enable1_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(rozcpu_enable2_w)
- AM_RANGE(0x14, 0x14) AM_WRITE(rozcpu_wrap1_enable_w)
- AM_RANGE(0x20, 0x2f) AM_DEVWRITE("k051316_1", k051316_device, ctrl_w)
- AM_RANGE(0x30, 0x3f) AM_DEVWRITE("k051316_2", k051316_device, ctrl_w)
- AM_RANGE(0x40, 0x40) AM_READWRITE(rozcpu_comm_r, rozcpu_comm_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(rozcpu_pal_w)
-ADDRESS_MAP_END
+void divebomb_state::divebomb_rozcpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().rw(m_k051316_1, FUNC(k051316_device::read), FUNC(k051316_device::write));
+ map(0xd000, 0xd7ff).ram().rw(m_k051316_2, FUNC(k051316_device::read), FUNC(k051316_device::write));
+ map(0xe000, 0xffff).ram();
+}
+
+
+void divebomb_state::divebomb_rozcpu_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(divebomb_state::rozcpu_bank_w));
+ map(0x10, 0x10).w(this, FUNC(divebomb_state::rozcpu_wrap2_enable_w));
+ map(0x12, 0x12).w(this, FUNC(divebomb_state::rozcpu_enable1_w));
+ map(0x13, 0x13).w(this, FUNC(divebomb_state::rozcpu_enable2_w));
+ map(0x14, 0x14).w(this, FUNC(divebomb_state::rozcpu_wrap1_enable_w));
+ map(0x20, 0x2f).w(m_k051316_1, FUNC(k051316_device::ctrl_w));
+ map(0x30, 0x3f).w(m_k051316_2, FUNC(k051316_device::ctrl_w));
+ map(0x40, 0x40).rw(this, FUNC(divebomb_state::rozcpu_comm_r), FUNC(divebomb_state::rozcpu_comm_w));
+ map(0x50, 0x50).w(this, FUNC(divebomb_state::rozcpu_pal_w));
+}
WRITE8_MEMBER(divebomb_state::rozcpu_bank_w)
diff --git a/src/mame/drivers/diverboy.cpp b/src/mame/drivers/diverboy.cpp
index 69dd294a177..b64ce3fda16 100644
--- a/src/mame/drivers/diverboy.cpp
+++ b/src/mame/drivers/diverboy.cpp
@@ -161,30 +161,32 @@ WRITE8_MEMBER(diverboy_state::okibank_w)
-ADDRESS_MAP_START(diverboy_state::diverboy_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM
- AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w)
- AM_RANGE(0x140000, 0x1407ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW")
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("COINS")
+void diverboy_state::diverboy_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram();
+ map(0x080000, 0x083fff).ram().share("spriteram");
+ map(0x100000, 0x100001).w(this, FUNC(diverboy_state::soundcmd_w));
+ map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x180001).portr("P1_P2");
+ map(0x180002, 0x180003).portr("DSW");
+ map(0x180008, 0x180009).portr("COINS");
// AM_RANGE(0x18000a, 0x18000b) AM_READNOP
// AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
- AM_RANGE(0x320000, 0x3207ff) AM_WRITEONLY /* ?? */
- AM_RANGE(0x322000, 0x3227ff) AM_WRITEONLY /* ?? */
+ map(0x320000, 0x3207ff).writeonly(); /* ?? */
+ map(0x322000, 0x3227ff).writeonly(); /* ?? */
// AM_RANGE(0x340000, 0x340001) AM_WRITENOP
// AM_RANGE(0x340002, 0x340003) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(diverboy_state::snd_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+}
+
+void diverboy_state::snd_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(diverboy_state::okibank_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp
index c3c275001c6..181b9973841 100644
--- a/src/mame/drivers/djboy.cpp
+++ b/src/mame/drivers/djboy.cpp
@@ -244,60 +244,66 @@ WRITE8_MEMBER(djboy_state::cpu2_bankswitch_w)
/******************************************************************************/
-ADDRESS_MAP_START(djboy_state::cpu0_am)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xafff) AM_ROMBANK("bank4")
- AM_RANGE(0xb000, 0xbfff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_r, spriteram_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djboy_state::cpu0_port_am)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(cpu0_bankswitch_w)
-ADDRESS_MAP_END
+void djboy_state::cpu0_am(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xafff).bankr("bank4");
+ map(0xb000, 0xbfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w));
+ map(0xc000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xefff).ram().share("share1");
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram();
+}
+
+void djboy_state::cpu0_port_am(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(djboy_state::cpu0_bankswitch_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(djboy_state::cpu1_am)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(djboy_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(djboy_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd400, 0xd8ff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djboy_state::cpu1_port_am)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(cpu1_bankswitch_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_sound_cpu2)
- AM_RANGE(0x04, 0x04) AM_READWRITE(beast_data_r, beast_data_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(djboy_scrolly_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(djboy_scrollx_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(trigger_nmi_on_cpu0)
- AM_RANGE(0x0c, 0x0c) AM_READ(beast_status_r)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(coin_count_w)
-ADDRESS_MAP_END
+void djboy_state::cpu1_am(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank2");
+ map(0xc000, 0xcfff).ram().w(this, FUNC(djboy_state::djboy_videoram_w)).share("videoram");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(djboy_state::djboy_paletteram_w)).share("paletteram");
+ map(0xd400, 0xd8ff).ram();
+ map(0xe000, 0xffff).ram().share("share1");
+}
+
+void djboy_state::cpu1_port_am(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(djboy_state::cpu1_bankswitch_w));
+ map(0x02, 0x02).w(this, FUNC(djboy_state::trigger_nmi_on_sound_cpu2));
+ map(0x04, 0x04).rw(this, FUNC(djboy_state::beast_data_r), FUNC(djboy_state::beast_data_w));
+ map(0x06, 0x06).w(this, FUNC(djboy_state::djboy_scrolly_w));
+ map(0x08, 0x08).w(this, FUNC(djboy_state::djboy_scrollx_w));
+ map(0x0a, 0x0a).w(this, FUNC(djboy_state::trigger_nmi_on_cpu0));
+ map(0x0c, 0x0c).r(this, FUNC(djboy_state::beast_status_r));
+ map(0x0e, 0x0e).w(this, FUNC(djboy_state::coin_count_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(djboy_state::cpu2_am)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djboy_state::cpu2_port_am)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(cpu2_bankswitch_w)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
-ADDRESS_MAP_END
+void djboy_state::cpu2_am(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xdfff).ram();
+}
+
+void djboy_state::cpu2_port_am(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(djboy_state::cpu2_bankswitch_w));
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x06, 0x06).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x07, 0x07).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp
index a34897f213e..94a32288641 100644
--- a/src/mame/drivers/djmain.cpp
+++ b/src/mame/drivers/djmain.cpp
@@ -373,58 +373,63 @@ WRITE_LINE_MEMBER( djmain_state::ide_interrupt )
*
*************************************/
-ADDRESS_MAP_START(djmain_state::maincpu_djmain)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // PRG ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM // WORK RAM
- AM_RANGE(0x480000, 0x48443f) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // COLOR RAM
- AM_RANGE(0x500000, 0x57ffff) AM_READWRITE(sndram_r, sndram_w) // SOUND RAM
- AM_RANGE(0x580000, 0x58003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) // VIDEO REG (tilemap)
- AM_RANGE(0x590000, 0x590007) AM_WRITE(unknown590000_w) // ??
- AM_RANGE(0x5a0000, 0x5a005f) AM_DEVWRITE("k055555", k055555_device, K055555_long_w) // 055555: priority encoder
- AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00ff00)
- AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff00ff)
- AM_RANGE(0x5c0000, 0x5c0003) AM_READ8(inp1_r, 0xffffffff) // DSW3,BTN3,BTN2,BTN1 // input port control (buttons and DIP switches)
- AM_RANGE(0x5c8000, 0x5c8003) AM_READ8(inp2_r, 0xffffffff) // DSW1,DSW2,UNK2,UNK1 // input port control (DIP switches)
- AM_RANGE(0x5d0000, 0x5d0003) AM_WRITE(light_ctrl_1_w) // light/coin blocker control
- AM_RANGE(0x5d2000, 0x5d2003) AM_WRITE(light_ctrl_2_w) // light/coin blocker control
- AM_RANGE(0x5d4000, 0x5d4003) AM_WRITE(v_ctrl_w) // VIDEO control
- AM_RANGE(0x5d6000, 0x5d6003) AM_WRITE(sndram_bank_w) // SOUND RAM bank
- AM_RANGE(0x5e0000, 0x5e0003) AM_READWRITE(turntable_r, turntable_select_w) // input port control (turn tables)
- AM_RANGE(0x600000, 0x601fff) AM_READ(v_rom_r) // VIDEO ROM readthrough (for POST)
- AM_RANGE(0x801000, 0x8017ff) AM_RAM AM_SHARE("obj_ram") // OBJECT RAM
- AM_RANGE(0x802000, 0x802fff) AM_WRITE(unknown802000_w) // ??
- AM_RANGE(0x803000, 0x80309f) AM_READWRITE(obj_ctrl_r, obj_ctrl_w) // OBJECT REGS
- AM_RANGE(0x803800, 0x803fff) AM_READ(obj_rom_r) // OBJECT ROM readthrough (for POST)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djmain_state::maincpu_djmainj)
- AM_IMPORT_FROM(maincpu_djmain)
-
- AM_RANGE(0xc00000, 0xc01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) // VIDEO RAM (tilemap) (beatmania)
- AM_RANGE(0xc02000, 0xc02047) AM_WRITE(unknownc02000_w) // ??
- AM_RANGE(0xf00000, 0xf0000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) // IDE control regs (beatmania)
- AM_RANGE(0xf40000, 0xf4000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) // IDE status control reg (beatmania)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djmain_state::maincpu_djmainu)
- AM_IMPORT_FROM(maincpu_djmain)
-
- AM_RANGE(0xd00000, 0xd0000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) // IDE control regs (hiphopmania)
- AM_RANGE(0xd40000, 0xd4000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) // IDE status control reg (hiphopmania)
- AM_RANGE(0xe00000, 0xe01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) // VIDEO RAM (tilemap) (hiphopmania)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djmain_state::maincpu_djmaina)
- AM_IMPORT_FROM(maincpu_djmain)
-
- AM_RANGE(0xc00000, 0xc0000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) // IDE control regs
- AM_RANGE(0xc40000, 0xc4000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) // IDE status control reg
- AM_RANGE(0xf00000, 0xf01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) // VIDEO RAM (tilemap)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(djmain_state::k054539_map)
- AM_RANGE(0x000000, 0xffffff) AM_RAM AM_SHARE("sndram")
-ADDRESS_MAP_END
+void djmain_state::maincpu_djmain(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // PRG ROM
+ map(0x400000, 0x40ffff).ram(); // WORK RAM
+ map(0x480000, 0x48443f).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // COLOR RAM
+ map(0x500000, 0x57ffff).rw(this, FUNC(djmain_state::sndram_r), FUNC(djmain_state::sndram_w)); // SOUND RAM
+ map(0x580000, 0x58003f).rw(m_k056832, FUNC(k056832_device::long_r), FUNC(k056832_device::long_w)); // VIDEO REG (tilemap)
+ map(0x590000, 0x590007).w(this, FUNC(djmain_state::unknown590000_w)); // ??
+ map(0x5a0000, 0x5a005f).w(m_k055555, FUNC(k055555_device::K055555_long_w)); // 055555: priority encoder
+ map(0x5b0000, 0x5b04ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask32(0xff00ff00);
+ map(0x5b0000, 0x5b04ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask32(0x00ff00ff);
+ map(0x5c0000, 0x5c0003).r(this, FUNC(djmain_state::inp1_r)); // DSW3,BTN3,BTN2,BTN1 // input port control (buttons and DIP switches)
+ map(0x5c8000, 0x5c8003).r(this, FUNC(djmain_state::inp2_r)); // DSW1,DSW2,UNK2,UNK1 // input port control (DIP switches)
+ map(0x5d0000, 0x5d0003).w(this, FUNC(djmain_state::light_ctrl_1_w)); // light/coin blocker control
+ map(0x5d2000, 0x5d2003).w(this, FUNC(djmain_state::light_ctrl_2_w)); // light/coin blocker control
+ map(0x5d4000, 0x5d4003).w(this, FUNC(djmain_state::v_ctrl_w)); // VIDEO control
+ map(0x5d6000, 0x5d6003).w(this, FUNC(djmain_state::sndram_bank_w)); // SOUND RAM bank
+ map(0x5e0000, 0x5e0003).rw(this, FUNC(djmain_state::turntable_r), FUNC(djmain_state::turntable_select_w)); // input port control (turn tables)
+ map(0x600000, 0x601fff).r(this, FUNC(djmain_state::v_rom_r)); // VIDEO ROM readthrough (for POST)
+ map(0x801000, 0x8017ff).ram().share("obj_ram"); // OBJECT RAM
+ map(0x802000, 0x802fff).w(this, FUNC(djmain_state::unknown802000_w)); // ??
+ map(0x803000, 0x80309f).rw(this, FUNC(djmain_state::obj_ctrl_r), FUNC(djmain_state::obj_ctrl_w)); // OBJECT REGS
+ map(0x803800, 0x803fff).r(this, FUNC(djmain_state::obj_rom_r)); // OBJECT ROM readthrough (for POST)
+}
+
+void djmain_state::maincpu_djmainj(address_map &map)
+{
+ maincpu_djmain(map);
+
+ map(0xc00000, 0xc01fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); // VIDEO RAM (tilemap) (beatmania)
+ map(0xc02000, 0xc02047).w(this, FUNC(djmain_state::unknownc02000_w)); // ??
+ map(0xf00000, 0xf0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // IDE control regs (beatmania)
+ map(0xf40000, 0xf4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); // IDE status control reg (beatmania)
+}
+
+void djmain_state::maincpu_djmainu(address_map &map)
+{
+ maincpu_djmain(map);
+
+ map(0xd00000, 0xd0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // IDE control regs (hiphopmania)
+ map(0xd40000, 0xd4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); // IDE status control reg (hiphopmania)
+ map(0xe00000, 0xe01fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); // VIDEO RAM (tilemap) (hiphopmania)
+}
+
+void djmain_state::maincpu_djmaina(address_map &map)
+{
+ maincpu_djmain(map);
+
+ map(0xc00000, 0xc0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // IDE control regs
+ map(0xc40000, 0xc4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); // IDE status control reg
+ map(0xf00000, 0xf01fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); // VIDEO RAM (tilemap)
+}
+
+void djmain_state::k054539_map(address_map &map)
+{
+ map(0x000000, 0xffffff).ram().share("sndram");
+}
/*************************************
diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp
index 4f080c35a9f..231c17f5921 100644
--- a/src/mame/drivers/dkong.cpp
+++ b/src/mame/drivers/dkong.cpp
@@ -797,124 +797,132 @@ WRITE8_MEMBER(dkong_state::nmi_mask_w)
*
*************************************/
-ADDRESS_MAP_START(dkong_state::dkong_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */
- AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram")
- AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("ls175.3d", latch8_device, write) /* IN0, sound CPU intf */
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w)/* IN1 */
-
- AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */
- AM_RANGE(0x7d00, 0x7d07) AM_DEVWRITE("ls259.6h", latch8_device, bit0_w) /* Sound signals */
-
- AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
- AM_RANGE(0x7d81, 0x7d81) AM_WRITE(radarscp_grid_enable_w)
- AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w)
- AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
- AM_RANGE(0x7d84, 0x7d84) AM_WRITE(nmi_mask_w)
- AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
- AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dkong_state::dkongjr_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x6c00, 0x6fff) AM_RAM /* DK3 bootleg only */
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */
- AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram")
- AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */
-
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("ls174.3d", latch8_device, write) /* IN0, sound interface */
-
- AM_RANGE(0x7c80, 0x7c87) AM_DEVWRITE("ls259.4h", latch8_device, bit0_w) /* latch for sound and signals above */
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(dkongjr_gfxbank_w)
-
- AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */
- AM_RANGE(0x7d00, 0x7d07) AM_DEVWRITE("ls259.6h", latch8_device, bit0_w) /* Sound addrs */
-
- AM_RANGE(0x7d80, 0x7d87) AM_DEVWRITE("ls259.5h", latch8_device, bit0_w) /* latch for sound and signals above*/
- AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
- AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w)
- AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
- AM_RANGE(0x7d84, 0x7d84) AM_WRITE(nmi_mask_w)
- AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
- AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w)
-
- AM_RANGE(0x8000, 0x9fff) AM_ROM /* bootleg DKjr only */
- AM_RANGE(0xb000, 0xbfff) AM_ROM /* pestplce only */
- AM_RANGE(0xd000, 0xdfff) AM_ROM /* DK3 bootleg only */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dkong_state::dkong3_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x6800, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */
- AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram")
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("latch1", latch8_device, write)
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_DEVWRITE("latch2", latch8_device, write)
- AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_DEVWRITE("latch3", latch8_device, write)
- AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW1") AM_WRITE(dkong3_2a03_reset_w)
- AM_RANGE(0x7e80, 0x7e80) AM_WRITE(dkong3_coin_counter_w)
- AM_RANGE(0x7e81, 0x7e81) AM_WRITE(dkong3_gfxbank_w)
- AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w)
- AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
- AM_RANGE(0x7e84, 0x7e84) AM_WRITE(nmi_mask_w)
- AM_RANGE(0x7e85, 0x7e85) AM_WRITE(dkong_z80dma_rdy_w) /* ==> DMA Chip */
- AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dkong_state::dkong3_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("z80dma", z80dma_device, read, write) /* dma controller */
-ADDRESS_MAP_END
+void dkong_state::dkong_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x6000, 0x6bff).ram();
+ map(0x7000, 0x73ff).ram().share("sprite_ram"); /* sprite set 1 */
+ map(0x7400, 0x77ff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram");
+ map(0x7800, 0x780f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); /* P8257 control registers */
+ map(0x7c00, 0x7c00).portr("IN0").w("ls175.3d", FUNC(latch8_device::write)); /* IN0, sound CPU intf */
+ map(0x7c80, 0x7c80).portr("IN1").w(this, FUNC(dkong_state::radarscp_grid_color_w));/* IN1 */
+
+ map(0x7d00, 0x7d00).r(this, FUNC(dkong_state::dkong_in2_r)); /* IN2 */
+ map(0x7d00, 0x7d07).w(m_dev_6h, FUNC(latch8_device::bit0_w)); /* Sound signals */
+
+ map(0x7d80, 0x7d80).portr("DSW0").w(this, FUNC(dkong_state::dkong_audio_irq_w)); /* DSW0 */
+ map(0x7d81, 0x7d81).w(this, FUNC(dkong_state::radarscp_grid_enable_w));
+ map(0x7d82, 0x7d82).w(this, FUNC(dkong_state::dkong_flipscreen_w));
+ map(0x7d83, 0x7d83).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */
+ map(0x7d84, 0x7d84).w(this, FUNC(dkong_state::nmi_mask_w));
+ map(0x7d85, 0x7d85).w(this, FUNC(dkong_state::p8257_drq_w)); /* P8257 ==> /DRQ0 /DRQ1 */
+ map(0x7d86, 0x7d87).w(this, FUNC(dkong_state::dkong_palettebank_w));
+}
+
+void dkong_state::dkongjr_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram();
+ map(0x6c00, 0x6fff).ram(); /* DK3 bootleg only */
+ map(0x7000, 0x73ff).ram().share("sprite_ram"); /* sprite set 1 */
+ map(0x7400, 0x77ff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram");
+ map(0x7800, 0x780f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); /* P8257 control registers */
+
+ map(0x7c00, 0x7c00).portr("IN0").w("ls174.3d", FUNC(latch8_device::write)); /* IN0, sound interface */
+
+ map(0x7c80, 0x7c87).w("ls259.4h", FUNC(latch8_device::bit0_w)); /* latch for sound and signals above */
+ map(0x7c80, 0x7c80).portr("IN1").w(this, FUNC(dkong_state::dkongjr_gfxbank_w));
+
+ map(0x7d00, 0x7d00).r(this, FUNC(dkong_state::dkong_in2_r)); /* IN2 */
+ map(0x7d00, 0x7d07).w(m_dev_6h, FUNC(latch8_device::bit0_w)); /* Sound addrs */
+
+ map(0x7d80, 0x7d87).w("ls259.5h", FUNC(latch8_device::bit0_w)); /* latch for sound and signals above*/
+ map(0x7d80, 0x7d80).portr("DSW0").w(this, FUNC(dkong_state::dkong_audio_irq_w)); /* DSW0 */
+ map(0x7d82, 0x7d82).w(this, FUNC(dkong_state::dkong_flipscreen_w));
+ map(0x7d83, 0x7d83).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */
+ map(0x7d84, 0x7d84).w(this, FUNC(dkong_state::nmi_mask_w));
+ map(0x7d85, 0x7d85).w(this, FUNC(dkong_state::p8257_drq_w)); /* P8257 ==> /DRQ0 /DRQ1 */
+ map(0x7d86, 0x7d87).w(this, FUNC(dkong_state::dkong_palettebank_w));
+
+ map(0x8000, 0x9fff).rom(); /* bootleg DKjr only */
+ map(0xb000, 0xbfff).rom(); /* pestplce only */
+ map(0xd000, 0xdfff).rom(); /* DK3 bootleg only */
+}
+
+void dkong_state::dkong3_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x6800, 0x6fff).ram();
+ map(0x7000, 0x73ff).ram().share("sprite_ram"); /* sprite set 1 */
+ map(0x7400, 0x77ff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram");
+ map(0x7c00, 0x7c00).portr("IN0").w("latch1", FUNC(latch8_device::write));
+ map(0x7c80, 0x7c80).portr("IN1").w("latch2", FUNC(latch8_device::write));
+ map(0x7d00, 0x7d00).portr("DSW0").w("latch3", FUNC(latch8_device::write));
+ map(0x7d80, 0x7d80).portr("DSW1").w(this, FUNC(dkong_state::dkong3_2a03_reset_w));
+ map(0x7e80, 0x7e80).w(this, FUNC(dkong_state::dkong3_coin_counter_w));
+ map(0x7e81, 0x7e81).w(this, FUNC(dkong_state::dkong3_gfxbank_w));
+ map(0x7e82, 0x7e82).w(this, FUNC(dkong_state::dkong_flipscreen_w));
+ map(0x7e83, 0x7e83).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */
+ map(0x7e84, 0x7e84).w(this, FUNC(dkong_state::nmi_mask_w));
+ map(0x7e85, 0x7e85).w(this, FUNC(dkong_state::dkong_z80dma_rdy_w)); /* ==> DMA Chip */
+ map(0x7e86, 0x7e87).w(this, FUNC(dkong_state::dkong_palettebank_w));
+ map(0x8000, 0x9fff).rom(); /* DK3 and bootleg DKjr only */
+}
+
+void dkong_state::dkong3_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_z80dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); /* dma controller */
+}
/* Epos conversions */
-ADDRESS_MAP_START(dkong_state::epos_readport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READ(epos_decrypt_rom) /* Switch protection logic */
-ADDRESS_MAP_END
+void dkong_state::epos_readport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).r(this, FUNC(dkong_state::epos_decrypt_rom)); /* Switch protection logic */
+}
/* S2650 conversions */
-ADDRESS_MAP_START(dkong_state::s2650_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("sprite_ram") /* 0x7000 */
- AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x007f) AM_READ_PORT("IN0") AM_DEVWRITE("ls175.3d", latch8_device, write)
- AM_RANGE(0x1480, 0x1480) AM_READ_PORT("IN1")
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x007f) AM_READ(dkong_in2_r) /* IN2 */
- AM_RANGE(0x1500, 0x1507) AM_DEVWRITE("ls259.6h", latch8_device, bit0_w) /* Sound signals */
- AM_RANGE(0x1580, 0x1580) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
- AM_RANGE(0x1582, 0x1582) AM_WRITE(dkong_flipscreen_w)
- AM_RANGE(0x1583, 0x1583) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
- AM_RANGE(0x1584, 0x1584) AM_NOP /* Possibly still interrupt enable */
- AM_RANGE(0x1585, 0x1585) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
- AM_RANGE(0x1586, 0x1587) AM_WRITE(dkong_palettebank_w)
- AM_RANGE(0x1600, 0x17ff) AM_RAM /* 0x6400 spriteram location */
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") /* 0x7400 */
- AM_RANGE(0x1C00, 0x1f7f) AM_RAM /* 0x6000 */
- AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */
+void dkong_state::s2650_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram().share("sprite_ram"); /* 0x7000 */
+ map(0x1400, 0x1400).mirror(0x007f).portr("IN0").w("ls175.3d", FUNC(latch8_device::write));
+ map(0x1480, 0x1480).portr("IN1");
+ map(0x1500, 0x1500).mirror(0x007f).r(this, FUNC(dkong_state::dkong_in2_r)); /* IN2 */
+ map(0x1500, 0x1507).w(m_dev_6h, FUNC(latch8_device::bit0_w)); /* Sound signals */
+ map(0x1580, 0x1580).portr("DSW0").w(this, FUNC(dkong_state::dkong_audio_irq_w)); /* DSW0 */
+ map(0x1582, 0x1582).w(this, FUNC(dkong_state::dkong_flipscreen_w));
+ map(0x1583, 0x1583).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */
+ map(0x1584, 0x1584).noprw(); /* Possibly still interrupt enable */
+ map(0x1585, 0x1585).w(this, FUNC(dkong_state::p8257_drq_w)); /* P8257 ==> /DRQ0 /DRQ1 */
+ map(0x1586, 0x1587).w(this, FUNC(dkong_state::dkong_palettebank_w));
+ map(0x1600, 0x17ff).ram(); /* 0x6400 spriteram location */
+ map(0x1800, 0x1bff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram"); /* 0x7400 */
+ map(0x1C00, 0x1f7f).ram(); /* 0x6000 */
+ map(0x1f80, 0x1f8f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); /* P8257 control registers */
/* 0x6800 not remapped */
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w)
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x5000, 0x5fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w)
- AM_RANGE(0x6000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dkong_state::s2650_io_map)
- AM_RANGE(0x00, 0x00) AM_READ(s2650_port0_r)
- AM_RANGE(0x01, 0x01) AM_READ(s2650_port1_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dkong_state::s2650_data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(s2650_data_w)
-ADDRESS_MAP_END
+ map(0x2000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rw(this, FUNC(dkong_state::s2650_mirror_r), FUNC(dkong_state::s2650_mirror_w));
+ map(0x4000, 0x4fff).rom();
+ map(0x5000, 0x5fff).rw(this, FUNC(dkong_state::s2650_mirror_r), FUNC(dkong_state::s2650_mirror_w));
+ map(0x6000, 0x6fff).rom();
+ map(0x7000, 0x7fff).rw(this, FUNC(dkong_state::s2650_mirror_r), FUNC(dkong_state::s2650_mirror_w));
+}
+
+void dkong_state::s2650_io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(dkong_state::s2650_port0_r));
+ map(0x01, 0x01).r(this, FUNC(dkong_state::s2650_port1_r));
+}
+
+void dkong_state::s2650_data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).w(this, FUNC(dkong_state::s2650_data_w));
+}
diff --git a/src/mame/drivers/dlair.cpp b/src/mame/drivers/dlair.cpp
index 739739cf65d..b34a32335c0 100644
--- a/src/mame/drivers/dlair.cpp
+++ b/src/mame/drivers/dlair.cpp
@@ -380,20 +380,21 @@ WRITE8_MEMBER(dlair_state::laserdisc_w)
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(dlair_state::dlus_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("P1")
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ(laserdisc_r)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE(misc_w)
- AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1fc7) AM_WRITE(laserdisc_w)
- AM_RANGE(0xe030, 0xe037) AM_MIRROR(0x1fc0) AM_WRITE(led_den2_w)
- AM_RANGE(0xe038, 0xe03f) AM_MIRROR(0x1fc0) AM_WRITE(led_den1_w)
-ADDRESS_MAP_END
+void dlair_state::dlus_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).mirror(0x1800).ram();
+ map(0xc000, 0xc000).mirror(0x1fc7).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xc008, 0xc008).mirror(0x1fc7).portr("P1");
+ map(0xc010, 0xc010).mirror(0x1fc7).portr("SYSTEM");
+ map(0xc020, 0xc020).mirror(0x1fc7).r(this, FUNC(dlair_state::laserdisc_r));
+ map(0xe000, 0xe000).mirror(0x1fc7).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0xe008, 0xe008).mirror(0x1fc7).w(this, FUNC(dlair_state::misc_w));
+ map(0xe010, 0xe010).mirror(0x1fc7).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xe020, 0xe020).mirror(0x1fc7).w(this, FUNC(dlair_state::laserdisc_w));
+ map(0xe030, 0xe037).mirror(0x1fc0).w(this, FUNC(dlair_state::led_den2_w));
+ map(0xe038, 0xe03f).mirror(0x1fc0).w(this, FUNC(dlair_state::led_den1_w));
+}
@@ -404,31 +405,33 @@ ADDRESS_MAP_END
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(dlair_state::dleuro_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1f47) // WT LED 1
- AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1f47) // WT LED 2
- AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1f47) AM_WRITE(led_den1_w) // WT EXT LED 1
- AM_RANGE(0xe018, 0xe018) AM_MIRROR(0x1f47) AM_WRITE(led_den2_w) // WT EXT LED 2
- AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1f47) AM_WRITE(laserdisc_w) // DISC WT
- AM_RANGE(0xe028, 0xe028) AM_MIRROR(0x1f47) AM_WRITE(dleuro_misc_w) // WT MISC
- AM_RANGE(0xe030, 0xe030) AM_MIRROR(0x1f47) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) // CLR WDOG
- AM_RANGE(0xe080, 0xe080) AM_MIRROR(0x1f47) AM_READ_PORT("P1") // CP A
- AM_RANGE(0xe088, 0xe088) AM_MIRROR(0x1f47) AM_READ_PORT("SYSTEM") // CP B
- AM_RANGE(0xe090, 0xe090) AM_MIRROR(0x1f47) AM_READ_PORT("DSW1") // OPT SW A
- AM_RANGE(0xe098, 0xe098) AM_MIRROR(0x1f47) AM_READ_PORT("DSW2") // OPT SW B
- AM_RANGE(0xe0a0, 0xe0a0) AM_MIRROR(0x1f47) AM_READ(laserdisc_r) // RD DISC DATA
-ADDRESS_MAP_END
+void dlair_state::dleuro_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).mirror(0x1800).ram();
+ map(0xc000, 0xc7ff).mirror(0x1800).ram().share("videoram");
+ map(0xe000, 0xe000).mirror(0x1f47); // WT LED 1
+ map(0xe008, 0xe008).mirror(0x1f47); // WT LED 2
+ map(0xe010, 0xe010).mirror(0x1f47).w(this, FUNC(dlair_state::led_den1_w)); // WT EXT LED 1
+ map(0xe018, 0xe018).mirror(0x1f47).w(this, FUNC(dlair_state::led_den2_w)); // WT EXT LED 2
+ map(0xe020, 0xe020).mirror(0x1f47).w(this, FUNC(dlair_state::laserdisc_w)); // DISC WT
+ map(0xe028, 0xe028).mirror(0x1f47).w(this, FUNC(dlair_state::dleuro_misc_w)); // WT MISC
+ map(0xe030, 0xe030).mirror(0x1f47).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // CLR WDOG
+ map(0xe080, 0xe080).mirror(0x1f47).portr("P1"); // CP A
+ map(0xe088, 0xe088).mirror(0x1f47).portr("SYSTEM"); // CP B
+ map(0xe090, 0xe090).mirror(0x1f47).portr("DSW1"); // OPT SW A
+ map(0xe098, 0xe098).mirror(0x1f47).portr("DSW2"); // OPT SW B
+ map(0xe0a0, 0xe0a0).mirror(0x1f47).r(this, FUNC(dlair_state::laserdisc_r)); // RD DISC DATA
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(dlair_state::dleuro_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x7c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
-ADDRESS_MAP_END
+void dlair_state::dleuro_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x7c).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x80, 0x83).mirror(0x7c).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+}
/*
diff --git a/src/mame/drivers/dlair2.cpp b/src/mame/drivers/dlair2.cpp
index 857c93c872b..d74cbd125ff 100644
--- a/src/mame/drivers/dlair2.cpp
+++ b/src/mame/drivers/dlair2.cpp
@@ -73,18 +73,20 @@ uint32_t dlair2_state::screen_update( screen_device &screen, bitmap_ind16 &bitma
return 0;
}
-ADDRESS_MAP_START(dlair2_state::dlair2_map)
- AM_RANGE(0x00000, 0xeffff) AM_RAM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+void dlair2_state::dlair2_map(address_map &map)
+{
+ map(0x00000, 0xeffff).ram();
+ map(0xf0000, 0xfffff).rom().region("ipl", 0);
+}
-ADDRESS_MAP_START(dlair2_state::dlair2_io)
+void dlair2_state::dlair2_io(address_map &map)
+{
// AM_RANGE(0x020, 0x020) ICR
// AM_RANGE(0x042, 0x043) sound related
// AM_RANGE(0x061, 0x061) sound related
// AM_RANGE(0x200, 0x203) i/o, coin, eeprom
// AM_RANGE(0x2f8, 0x2ff) COM2
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( dlair2 )
/* dummy active high structure */
diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp
index f68e3c2200e..40a689c2166 100644
--- a/src/mame/drivers/dm7000.cpp
+++ b/src/mame/drivers/dm7000.cpp
@@ -227,24 +227,25 @@ WRITE16_MEMBER( dm7000_state::dm7000_enet_w )
400f 0xxx IDE Controller
*/
-ADDRESS_MAP_START(dm7000_state::dm7000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // RAM page 0 - 32MB
- AM_RANGE(0x20000000, 0x21ffffff) AM_RAM // RAM page 1 - 32MB
+void dm7000_state::dm7000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x01ffffff).ram(); // RAM page 0 - 32MB
+ map(0x20000000, 0x21ffffff).ram(); // RAM page 1 - 32MB
- AM_RANGE(0x40030000, 0x4003000f) AM_READWRITE8(dm7000_iic0_r, dm7000_iic0_w, 0xffffffff)
- AM_RANGE(0x40040000, 0x40040007) AM_READWRITE8(dm7000_scc0_r, dm7000_scc0_w, 0xffffffff)
- AM_RANGE(0x40060000, 0x40060047) AM_READWRITE8(dm7000_gpio0_r, dm7000_gpio0_w, 0xffffffff)
- AM_RANGE(0x400b0000, 0x400b000f) AM_READWRITE8(dm7000_iic1_r, dm7000_iic1_w, 0xffffffff)
- AM_RANGE(0x400c0000, 0x400c0007) AM_READWRITE8(dm7000_scp0_r, dm7000_scp0_w, 0xffffffff)
+ map(0x40030000, 0x4003000f).rw(this, FUNC(dm7000_state::dm7000_iic0_r), FUNC(dm7000_state::dm7000_iic0_w));
+ map(0x40040000, 0x40040007).rw(this, FUNC(dm7000_state::dm7000_scc0_r), FUNC(dm7000_state::dm7000_scc0_w));
+ map(0x40060000, 0x40060047).rw(this, FUNC(dm7000_state::dm7000_gpio0_r), FUNC(dm7000_state::dm7000_gpio0_w));
+ map(0x400b0000, 0x400b000f).rw(this, FUNC(dm7000_state::dm7000_iic1_r), FUNC(dm7000_state::dm7000_iic1_w));
+ map(0x400c0000, 0x400c0007).rw(this, FUNC(dm7000_state::dm7000_scp0_r), FUNC(dm7000_state::dm7000_scp0_w));
/* ENET - ASIX AX88796 */
- AM_RANGE(0x72000300, 0x720003ff) AM_READWRITE16(dm7000_enet_r, dm7000_enet_w, 0xffffffff)
+ map(0x72000300, 0x720003ff).rw(this, FUNC(dm7000_state::dm7000_enet_r), FUNC(dm7000_state::dm7000_enet_w));
- AM_RANGE(0x7f800000, 0x7ffdffff) AM_ROM AM_REGION("user2",0)
- AM_RANGE(0x7ffe0000, 0x7fffffff) AM_ROM AM_REGION("user1",0)
+ map(0x7f800000, 0x7ffdffff).rom().region("user2", 0);
+ map(0x7ffe0000, 0x7fffffff).rom().region("user1", 0);
//AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( dm7000 )
diff --git a/src/mame/drivers/dmax8000.cpp b/src/mame/drivers/dmax8000.cpp
index 4c00ec56958..be4b2fbef44 100644
--- a/src/mame/drivers/dmax8000.cpp
+++ b/src/mame/drivers/dmax8000.cpp
@@ -98,27 +98,29 @@ WRITE8_MEMBER( dmax8000_state::port40_w )
membank("bankr0")->set_entry(BIT(data, 0));
}
-ADDRESS_MAP_START(dmax8000_state::dmax8000_mem)
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x1000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dmax8000_state::dmax8000_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio1", z80pio_device, read, write) // fdd controls
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio2", z80pio_device, read, write) // centronics & parallel ports
- AM_RANGE(0x14, 0x17) AM_WRITE(port14_w) // control lines for the centronics & parallel ports
+void dmax8000_state::dmax8000_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0xffff).ram();
+}
+
+void dmax8000_state::dmax8000_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x04, 0x07).rw("dart1", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x08, 0x0b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).rw("pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // fdd controls
+ map(0x10, 0x13).rw("pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // centronics & parallel ports
+ map(0x14, 0x17).w(this, FUNC(dmax8000_state::port14_w)); // control lines for the centronics & parallel ports
//AM_RANGE(0x18, 0x19) AM_MIRROR(2) AM_DEVREADWRITE("am9511", am9512_device, read, write) // optional numeric coprocessor
//AM_RANGE(0x1c, 0x1d) AM_MIRROR(2) // optional hard disk controller (1C=status, 1D=data)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("dart2", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) // memory bank control
+ map(0x20, 0x23).rw("dart2", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x40, 0x40).w(this, FUNC(dmax8000_state::port40_w)); // memory bank control
//AM_RANGE(0x60, 0x67) // optional IEEE488 GPIB
- AM_RANGE(0x70, 0x7f) AM_DEVREADWRITE("rtc", mm58274c_device, read, write) // optional RTC
-ADDRESS_MAP_END
+ map(0x70, 0x7f).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)); // optional RTC
+}
/* Input ports */
static INPUT_PORTS_START( dmax8000 )
diff --git a/src/mame/drivers/dmndrby.cpp b/src/mame/drivers/dmndrby.cpp
index 5d06938d1a8..b0289b3c597 100644
--- a/src/mame/drivers/dmndrby.cpp
+++ b/src/mame/drivers/dmndrby.cpp
@@ -145,31 +145,33 @@ WRITE8_MEMBER(dmndrby_state::output_w)
// popmessage("%02x|%02x|%02x|%02x|%02x|%02x|%02x|%02x|",m_io_port[0],m_io_port[1],m_io_port[2],m_io_port[3],m_io_port[4],m_io_port[5],m_io_port[6],m_io_port[7]);
}
-ADDRESS_MAP_START(dmndrby_state::memmap)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc000, 0xc007) AM_READ(input_r)
- AM_RANGE(0xc000, 0xc007) AM_WRITE(output_w)
- AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW1")
- AM_RANGE(0xc803, 0xc803) AM_READ_PORT("DSW2")
- AM_RANGE(0xca00, 0xca00) AM_WRITENOP//(vblank_irq_w) //???
- AM_RANGE(0xca01, 0xca01) AM_WRITENOP //watchdog
- AM_RANGE(0xca02, 0xca02) AM_RAM_WRITE(dderby_sound_w)
- AM_RANGE(0xca03, 0xca03) AM_WRITENOP//(timer_irq_w) //???
- AM_RANGE(0xcc00, 0xcc05) AM_RAM AM_SHARE("scroll_ram")
- AM_RANGE(0xce08, 0xce1f) AM_RAM AM_SHARE("sprite_ram") // horse sprites
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("vidchars") // char ram
- AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("vidattribs") // colours/ attrib ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dmndrby_state::dderby_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x1000) AM_RAM //???
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4001, 0x4001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x6000, 0x67ff) AM_RAM
-ADDRESS_MAP_END
+void dmndrby_state::memmap(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x8fff).ram().share("nvram");
+ map(0xc000, 0xc007).r(this, FUNC(dmndrby_state::input_r));
+ map(0xc000, 0xc007).w(this, FUNC(dmndrby_state::output_w));
+ map(0xc802, 0xc802).portr("DSW1");
+ map(0xc803, 0xc803).portr("DSW2");
+ map(0xca00, 0xca00).nopw();//(vblank_irq_w) //???
+ map(0xca01, 0xca01).nopw(); //watchdog
+ map(0xca02, 0xca02).ram().w(this, FUNC(dmndrby_state::dderby_sound_w));
+ map(0xca03, 0xca03).nopw();//(timer_irq_w) //???
+ map(0xcc00, 0xcc05).ram().share("scroll_ram");
+ map(0xce08, 0xce1f).ram().share("sprite_ram"); // horse sprites
+ map(0xd000, 0xd3ff).ram().share("vidchars"); // char ram
+ map(0xd400, 0xd7ff).ram().share("vidattribs"); // colours/ attrib ram
+}
+
+void dmndrby_state::dderby_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x1000).ram(); //???
+ map(0x4000, 0x4001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4001, 0x4001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x6000, 0x67ff).ram();
+}
static INPUT_PORTS_START( dderby )
PORT_START("IN0")
diff --git a/src/mame/drivers/dms5000.cpp b/src/mame/drivers/dms5000.cpp
index 4b96f38e9e7..c76711cb6e8 100644
--- a/src/mame/drivers/dms5000.cpp
+++ b/src/mame/drivers/dms5000.cpp
@@ -30,15 +30,17 @@ public:
};
-ADDRESS_MAP_START(dms5000_state::dms5000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dms5000_state::dms5000_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void dms5000_state::dms5000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).ram();
+ map(0xfc000, 0xfffff).rom().region("user1", 0);
+}
+
+void dms5000_state::dms5000_io(address_map &map)
+{
+ map.unmap_value_high();
+}
/* Input ports */
static INPUT_PORTS_START( dms5000 )
diff --git a/src/mame/drivers/dms86.cpp b/src/mame/drivers/dms86.cpp
index 74846c17e7b..742b8ee8245 100644
--- a/src/mame/drivers/dms86.cpp
+++ b/src/mame/drivers/dms86.cpp
@@ -81,23 +81,25 @@ READ16_MEMBER( dms86_state::port9c_r )
}
-ADDRESS_MAP_START(dms86_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("roms",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dms86_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x82, 0x83) AM_READ(port82_r)
+void dms86_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).ram();
+ map(0xfe000, 0xfffff).rom().region("roms", 0);
+}
+
+void dms86_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x82, 0x83).r(this, FUNC(dms86_state::port82_r));
//AM_RANGE(0x80, 0x87) AM_DEVREADWRITE8("sio1", z80sio_device, ba_cd_r, ba_cd_w, 0x00ff)
- AM_RANGE(0x88, 0x8f) AM_DEVREADWRITE8("ctc", z80ctc_device, read, write, 0x00ff)
- AM_RANGE(0x90, 0x97) AM_DEVREADWRITE8("sio2", z80sio_device, ba_cd_r, ba_cd_w, 0x00ff)
- AM_RANGE(0x9A, 0x9B) AM_READ(port9a_r) // parallel SASI port
- AM_RANGE(0x9c, 0x9d) AM_READ(port9c_r)
- AM_RANGE(0x9c, 0x9d) AM_DEVWRITE8("terminal", generic_terminal_device, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0x88, 0x8f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff);
+ map(0x90, 0x97).rw("sio2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).umask16(0x00ff);
+ map(0x9A, 0x9B).r(this, FUNC(dms86_state::port9a_r)); // parallel SASI port
+ map(0x9c, 0x9d).r(this, FUNC(dms86_state::port9c_r));
+ map(0x9c, 0x9c).w("terminal", FUNC(generic_terminal_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( dms86 )
diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp
index e31c9f11632..9da496c0f82 100644
--- a/src/mame/drivers/dmv.cpp
+++ b/src/mame/drivers/dmv.cpp
@@ -513,34 +513,36 @@ uint8_t dmv_state::program_read(address_space &space, int cas, offs_t offset)
return data;
}
-ADDRESS_MAP_START(dmv_state::dmv_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(program_r, program_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dmv_state::dmv_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(leds_w)
- AM_RANGE(0x10, 0x10) AM_READWRITE(ramsel_r, ramsel_w)
- AM_RANGE(0x11, 0x11) AM_READWRITE(romsel_r, romsel_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(tc_set_w)
- AM_RANGE(0x13, 0x13) AM_READ(sys_status_r)
- AM_RANGE(0x14, 0x14) AM_WRITE(fdd_motor_w)
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("dma8237", am9517a_device, read, write)
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("kb_ctrl_mcu", upi41_cpu_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x50, 0x51) AM_DEVICE("i8272", i8272a_device, map)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0xa0, 0xa1) AM_DEVREADWRITE("upd7220", upd7220_device, read, write)
- AM_RANGE(0xd0, 0xd7) AM_WRITE(switch16_w)
- AM_RANGE(0xe0, 0xe7) AM_WRITE(rambank_w)
-
- AM_RANGE(0x60, 0x6f) AM_READWRITE(ifsel0_r, ifsel0_w)
- AM_RANGE(0x70, 0x7f) AM_READWRITE(ifsel1_r, ifsel1_w)
- AM_RANGE(0x30, 0x3f) AM_READWRITE(ifsel2_r, ifsel2_w)
- AM_RANGE(0xb0, 0xbf) AM_READWRITE(ifsel3_r, ifsel3_w)
- AM_RANGE(0xc0, 0xcf) AM_READWRITE(ifsel4_r, ifsel4_w)
-ADDRESS_MAP_END
+void dmv_state::dmv_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(dmv_state::program_r), FUNC(dmv_state::program_w));
+}
+
+void dmv_state::dmv_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(dmv_state::leds_w));
+ map(0x10, 0x10).rw(this, FUNC(dmv_state::ramsel_r), FUNC(dmv_state::ramsel_w));
+ map(0x11, 0x11).rw(this, FUNC(dmv_state::romsel_r), FUNC(dmv_state::romsel_w));
+ map(0x12, 0x12).w(this, FUNC(dmv_state::tc_set_w));
+ map(0x13, 0x13).r(this, FUNC(dmv_state::sys_status_r));
+ map(0x14, 0x14).w(this, FUNC(dmv_state::fdd_motor_w));
+ map(0x20, 0x2f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x40, 0x41).rw("kb_ctrl_mcu", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+ map(0x50, 0x51).m(m_fdc, FUNC(i8272a_device::map));
+ map(0x80, 0x83).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xa0, 0xa1).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write));
+ map(0xd0, 0xd7).w(this, FUNC(dmv_state::switch16_w));
+ map(0xe0, 0xe7).w(this, FUNC(dmv_state::rambank_w));
+
+ map(0x60, 0x6f).rw(this, FUNC(dmv_state::ifsel0_r), FUNC(dmv_state::ifsel0_w));
+ map(0x70, 0x7f).rw(this, FUNC(dmv_state::ifsel1_r), FUNC(dmv_state::ifsel1_w));
+ map(0x30, 0x3f).rw(this, FUNC(dmv_state::ifsel2_r), FUNC(dmv_state::ifsel2_w));
+ map(0xb0, 0xbf).rw(this, FUNC(dmv_state::ifsel3_r), FUNC(dmv_state::ifsel3_w));
+ map(0xc0, 0xcf).rw(this, FUNC(dmv_state::ifsel4_r), FUNC(dmv_state::ifsel4_w));
+}
READ8_MEMBER(dmv_state::kb_mcu_port1_r)
{
@@ -560,10 +562,11 @@ WRITE8_MEMBER(dmv_state::kb_mcu_port2_w)
m_slot7->keyint_w(BIT(data, 4));
}
-ADDRESS_MAP_START(dmv_state::upd7220_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void dmv_state::upd7220_map(address_map &map)
+{
+ map.global_mask(0x1ffff);
+ map(0x00000, 0x1ffff).ram().share("video_ram");
+}
/* Input ports */
INPUT_PORTS_START( dmv )
diff --git a/src/mame/drivers/docastle.cpp b/src/mame/drivers/docastle.cpp
index 9be86dd759d..e7ecfb0e410 100644
--- a/src/mame/drivers/docastle.cpp
+++ b/src/mame/drivers/docastle.cpp
@@ -220,79 +220,86 @@ WRITE8_MEMBER(docastle_state::idsoccer_adpcm_w)
}
/* Memory Maps */
-ADDRESS_MAP_START(docastle_state::docastle_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x97ff) AM_RAM
- AM_RANGE(0x9800, 0x99ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w)
- AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb400, 0xb7ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(docastle_nmitrigger_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(docastle_state::docastle_map2)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared1_r, docastle_shared0_w)
- AM_RANGE(0xc000, 0xc007) AM_SELECT(0x0080) AM_READWRITE(inputs_flipscreen_r, flipscreen_w)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("sn3", sn76489a_device, write)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("sn4", sn76489a_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(docastle_state::docastle_map3)
- AM_RANGE(0x0000, 0x00ff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8008) AM_READ(docastle_shared1_r) // ???
- AM_RANGE(0xc003, 0xc003) AM_NOP // EP according to schematics
- AM_RANGE(0xc432, 0xc435) AM_NOP // ???
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(docastle_state::docastle_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("crtc", mc6845_device, register_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(docastle_state::dorunrun_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w)
- AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(docastle_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb400, 0xb7ff) AM_RAM_WRITE(docastle_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xb800, 0xb800) AM_WRITE(docastle_nmitrigger_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(docastle_state::dorunrun_map2)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("sn3", sn76489a_device, write)
- AM_RANGE(0xac00, 0xac00) AM_DEVWRITE("sn4", sn76489a_device, write)
- AM_RANGE(0xc000, 0xc007) AM_SELECT(0x0080) AM_READWRITE(inputs_flipscreen_r, flipscreen_w)
- AM_RANGE(0xe000, 0xe008) AM_READWRITE(docastle_shared1_r, docastle_shared0_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(docastle_state::idsoccer_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x57ff) AM_RAM
- AM_RANGE(0x5800, 0x59ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x6000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w)
- AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb400, 0xb7ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(idsoccer_adpcm_status_r, idsoccer_adpcm_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(docastle_nmitrigger_w)
-ADDRESS_MAP_END
+void docastle_state::docastle_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x97ff).ram();
+ map(0x9800, 0x99ff).ram().share("spriteram");
+ map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared0_r), FUNC(docastle_state::docastle_shared1_w));
+ map(0xa800, 0xa800).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xb000, 0xb3ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_videoram_w)).share("videoram");
+ map(0xb400, 0xb7ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_colorram_w)).share("colorram");
+ map(0xe000, 0xe000).w(this, FUNC(docastle_state::docastle_nmitrigger_w));
+}
+
+void docastle_state::docastle_map2(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared1_r), FUNC(docastle_state::docastle_shared0_w));
+ map(0xc000, 0xc007).select(0x0080).rw(this, 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));
+}
+
+void docastle_state::docastle_map3(address_map &map)
+{
+ map(0x0000, 0x00ff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8008).r(this, FUNC(docastle_state::docastle_shared1_r)); // ???
+ map(0xc003, 0xc003).noprw(); // EP according to schematics
+ map(0xc432, 0xc435).noprw(); // ???
+}
+
+void docastle_state::docastle_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x02, 0x02).w(m_crtc, FUNC(mc6845_device::register_w));
+}
+
+
+void docastle_state::dorunrun_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x37ff).ram();
+ map(0x3800, 0x39ff).ram().share("spriteram");
+ map(0x4000, 0x9fff).rom();
+ map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared0_r), FUNC(docastle_state::docastle_shared1_w));
+ map(0xa800, 0xa800).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xb000, 0xb3ff).ram().w(this, FUNC(docastle_state::docastle_videoram_w)).share("videoram");
+ map(0xb400, 0xb7ff).ram().w(this, FUNC(docastle_state::docastle_colorram_w)).share("colorram");
+ map(0xb800, 0xb800).w(this, FUNC(docastle_state::docastle_nmitrigger_w));
+}
+
+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(0xc000, 0xc007).select(0x0080).rw(this, FUNC(docastle_state::inputs_flipscreen_r), FUNC(docastle_state::flipscreen_w));
+ map(0xe000, 0xe008).rw(this, FUNC(docastle_state::docastle_shared1_r), FUNC(docastle_state::docastle_shared0_w));
+}
+
+
+void docastle_state::idsoccer_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x57ff).ram();
+ map(0x5800, 0x59ff).ram().share("spriteram");
+ map(0x6000, 0x9fff).rom();
+ map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared0_r), FUNC(docastle_state::docastle_shared1_w));
+ map(0xa800, 0xa800).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xb000, 0xb3ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_videoram_w)).share("videoram");
+ map(0xb400, 0xb7ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_colorram_w)).share("colorram");
+ map(0xc000, 0xc000).rw(this, FUNC(docastle_state::idsoccer_adpcm_status_r), FUNC(docastle_state::idsoccer_adpcm_w));
+ map(0xe000, 0xe000).w(this, FUNC(docastle_state::docastle_nmitrigger_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/dogfgt.cpp b/src/mame/drivers/dogfgt.cpp
index c33657a1064..d5351e3489e 100644
--- a/src/mame/drivers/dogfgt.cpp
+++ b/src/mame/drivers/dogfgt.cpp
@@ -60,31 +60,33 @@ WRITE8_MEMBER(dogfgt_state::dogfgt_soundcontrol_w)
-ADDRESS_MAP_START(dogfgt_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram")
- AM_RANGE(0x0f80, 0x0fdf) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x1000, 0x17ff) AM_WRITE(dogfgt_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
- AM_RANGE(0x1800, 0x1800) AM_WRITE(dogfgt_1800_w) /* text color, flip screen & coin counters */
- AM_RANGE(0x1810, 0x1810) AM_READ_PORT("P2")
- AM_RANGE(0x1810, 0x1810) AM_WRITE(subirqtrigger_w)
- AM_RANGE(0x1820, 0x1820) AM_READ_PORT("DSW1")
- AM_RANGE(0x1820, 0x1823) AM_WRITE(dogfgt_scroll_w)
- AM_RANGE(0x1824, 0x1824) AM_WRITE(dogfgt_plane_select_w)
- AM_RANGE(0x1830, 0x1830) AM_READ_PORT("DSW2")
- AM_RANGE(0x1830, 0x1830) AM_WRITE(dogfgt_soundlatch_w)
- AM_RANGE(0x1840, 0x1840) AM_WRITE(dogfgt_soundcontrol_w)
- AM_RANGE(0x1870, 0x187f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dogfgt_bitmapram_r, dogfgt_bitmapram_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dogfgt_state::sub_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(sharedram_r, sharedram_w)
- AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_irqack_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void dogfgt_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rw(this, FUNC(dogfgt_state::sharedram_r), FUNC(dogfgt_state::sharedram_w)).share("sharedram");
+ map(0x0f80, 0x0fdf).writeonly().share("spriteram");
+ map(0x1000, 0x17ff).w(this, FUNC(dogfgt_state::dogfgt_bgvideoram_w)).share("bgvideoram");
+ map(0x1800, 0x1800).portr("P1");
+ map(0x1800, 0x1800).w(this, FUNC(dogfgt_state::dogfgt_1800_w)); /* text color, flip screen & coin counters */
+ map(0x1810, 0x1810).portr("P2");
+ map(0x1810, 0x1810).w(this, FUNC(dogfgt_state::subirqtrigger_w));
+ map(0x1820, 0x1820).portr("DSW1");
+ map(0x1820, 0x1823).w(this, FUNC(dogfgt_state::dogfgt_scroll_w));
+ map(0x1824, 0x1824).w(this, FUNC(dogfgt_state::dogfgt_plane_select_w));
+ map(0x1830, 0x1830).portr("DSW2");
+ map(0x1830, 0x1830).w(this, FUNC(dogfgt_state::dogfgt_soundlatch_w));
+ map(0x1840, 0x1840).w(this, FUNC(dogfgt_state::dogfgt_soundcontrol_w));
+ map(0x1870, 0x187f).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2000, 0x3fff).rw(this, FUNC(dogfgt_state::dogfgt_bitmapram_r), FUNC(dogfgt_state::dogfgt_bitmapram_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void dogfgt_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x27ff).rw(this, FUNC(dogfgt_state::sharedram_r), FUNC(dogfgt_state::sharedram_w));
+ map(0x4000, 0x4000).w(this, FUNC(dogfgt_state::sub_irqack_w));
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp
index d9fd3bda93d..7af993dad48 100644
--- a/src/mame/drivers/dolphunk.cpp
+++ b/src/mame/drivers/dolphunk.cpp
@@ -184,19 +184,21 @@ TIMER_DEVICE_CALLBACK_MEMBER(dauphin_state::dauphin_c)
m_cass->output(BIT(m_cass_data, 0) ? -1.0 : +1.0); // 2000Hz
}
-ADDRESS_MAP_START(dauphin_state::dauphin_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x01ff) AM_ROM
- AM_RANGE( 0x0200, 0x02ff) AM_RAM
- AM_RANGE( 0x0c00, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dauphin_state::dauphin_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_WRITE(port00_w) // 4-led display
- AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // speaker (NOT a keyclick)
- AM_RANGE(0x07, 0x07) AM_READ(port07_r) // pushbuttons
-ADDRESS_MAP_END
+void dauphin_state::dauphin_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x01ff).rom();
+ map(0x0200, 0x02ff).ram();
+ map(0x0c00, 0x0fff).rom();
+}
+
+void dauphin_state::dauphin_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x03).w(this, FUNC(dauphin_state::port00_w)); // 4-led display
+ map(0x06, 0x06).w(this, FUNC(dauphin_state::port06_w)); // speaker (NOT a keyclick)
+ map(0x07, 0x07).r(this, FUNC(dauphin_state::port07_r)); // pushbuttons
+}
/* Input ports */
static INPUT_PORTS_START( dauphin )
diff --git a/src/mame/drivers/dominob.cpp b/src/mame/drivers/dominob.cpp
index b75679d5719..72bb27f9062 100644
--- a/src/mame/drivers/dominob.cpp
+++ b/src/mame/drivers/dominob.cpp
@@ -179,25 +179,26 @@ WRITE8_MEMBER(dominob_state::dominob_d008_w)
/* is there a purpose on this ? always set to 0x00 (read from 0xc47b in RAM) */
}
-ADDRESS_MAP_START(dominob_state::memmap)
- AM_RANGE(0x0000, 0xbfff) AM_ROM AM_WRITENOP // there are some garbage writes to ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xd008, 0xd008) AM_WRITE(dominob_d008_w)
- AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("IN0")
- AM_RANGE(0xd010, 0xd010) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0xd018, 0xd018) AM_READ_PORT("IN2") AM_WRITENOP
-
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe840, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf07f) AM_RAM AM_SHARE("bgram")
- AM_RANGE(0xf080, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void dominob_state::memmap(address_map &map)
+{
+ map(0x0000, 0xbfff).rom().nopw(); // there are some garbage writes to ROM
+ map(0xc000, 0xc7ff).ram();
+
+ map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xd008, 0xd008).w(this, FUNC(dominob_state::dominob_d008_w));
+ map(0xd00c, 0xd00c).portr("IN0");
+ map(0xd010, 0xd010).portr("IN1").nopw();
+ map(0xd018, 0xd018).portr("IN2").nopw();
+
+ map(0xe000, 0xe7ff).ram().share("videoram");
+ map(0xe800, 0xe83f).ram().share("spriteram");
+ map(0xe840, 0xefff).ram();
+ map(0xf000, 0xf07f).ram().share("bgram");
+ map(0xf080, 0xf7ff).ram();
+ map(0xf800, 0xfbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xfc00, 0xffff).ram();
+}
/* I don't know if this has a purpose - also read in 'arkatayt' but not handled */
READ8_MEMBER(dominob_state::dominob_unk_port02_r)
@@ -205,10 +206,11 @@ READ8_MEMBER(dominob_state::dominob_unk_port02_r)
return 0xff;
}
-ADDRESS_MAP_START(dominob_state::portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_READ(dominob_unk_port02_r)
-ADDRESS_MAP_END
+void dominob_state::portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x02).r(this, FUNC(dominob_state::dominob_unk_port02_r));
+}
static INPUT_PORTS_START( dominob )
diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp
index 9ef8f215a1d..f0ddc0c10b9 100644
--- a/src/mame/drivers/dooyong.cpp
+++ b/src/mame/drivers/dooyong.cpp
@@ -794,190 +794,201 @@ uint32_t popbingo_state::screen_update_popbingo(screen_device &screen, bitmap_in
***************************************************************************/
-ADDRESS_MAP_START(dooyong_z80_ym2203_state::lastday_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xc008, 0xc00f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xc010, 0xc010) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc010, 0xc010) AM_WRITE(lastday_ctrl_w) /* coin counter, flip screen */
- AM_RANGE(0xc011, 0xc011) AM_READ_PORT("P1")
- AM_RANGE(0xc011, 0xc011) AM_WRITE(bankswitch_w)
- AM_RANGE(0xc012, 0xc012) AM_READ_PORT("P2")
- AM_RANGE(0xc012, 0xc012) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc013, 0xc013) AM_READ_PORT("DSWA")
- AM_RANGE(0xc014, 0xc014) AM_READ_PORT("DSWB")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(lastday_tx_r, lastday_tx_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
+void dooyong_z80_ym2203_state::lastday_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc007).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xc008, 0xc00f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xc010, 0xc010).portr("SYSTEM");
+ map(0xc010, 0xc010).w(this, FUNC(dooyong_z80_ym2203_state::lastday_ctrl_w)); /* coin counter, flip screen */
+ map(0xc011, 0xc011).portr("P1");
+ map(0xc011, 0xc011).w(this, FUNC(dooyong_z80_ym2203_state::bankswitch_w));
+ map(0xc012, 0xc012).portr("P2");
+ map(0xc012, 0xc012).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc013, 0xc013).portr("DSWA");
+ map(0xc014, 0xc014).portr("DSWB");
+ map(0xc800, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd000, 0xdfff).rw(this, FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w));
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("spriteram");
+}
-ADDRESS_MAP_START(dooyong_z80_ym2203_state::pollux_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(lastday_tx_r, lastday_tx_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA") AM_WRITE(bankswitch_w)
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P1")
- AM_RANGE(0xf003, 0xf003) AM_READ_PORT("P2")
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf008, 0xf008) AM_WRITE(pollux_ctrl_w) /* coin counter, flip screen */
- AM_RANGE(0xf010, 0xf010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf018, 0xf01f) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xf020, 0xf027) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w)
-ADDRESS_MAP_END
+void dooyong_z80_ym2203_state::pollux_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xefff).rw(this, FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w));
+ map(0xf000, 0xf000).portr("DSWA").w(this, FUNC(dooyong_z80_ym2203_state::bankswitch_w));
+ map(0xf001, 0xf001).portr("DSWB");
+ map(0xf002, 0xf002).portr("P1");
+ map(0xf003, 0xf003).portr("P2");
+ map(0xf004, 0xf004).portr("SYSTEM");
+ map(0xf008, 0xf008).w(this, FUNC(dooyong_z80_ym2203_state::pollux_ctrl_w)); /* coin counter, flip screen */
+ map(0xf010, 0xf010).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf018, 0xf01f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xf020, 0xf027).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xf800, 0xffff).rw(this, FUNC(dooyong_z80_ym2203_state::paletteram_flytiger_r), FUNC(dooyong_z80_ym2203_state::paletteram_flytiger_w));
+}
-ADDRESS_MAP_START(dooyong_z80_ym2203_state::gulfstrm_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(lastday_tx_r, lastday_tx_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA")
- AM_RANGE(0xf000, 0xf000) AM_WRITE(bankswitch_w)
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2")
- AM_RANGE(0xf003, 0xf003) AM_READ_PORT("P1")
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf008, 0xf008) AM_WRITE(pollux_ctrl_w) /* coin counter, flip screen */
- AM_RANGE(0xf010, 0xf010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf018, 0xf01f) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xf020, 0xf027) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
+void dooyong_z80_ym2203_state::gulfstrm_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xefff).rw(this, FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w));
+ map(0xf000, 0xf000).portr("DSWA");
+ map(0xf000, 0xf000).w(this, FUNC(dooyong_z80_ym2203_state::bankswitch_w));
+ map(0xf001, 0xf001).portr("DSWB");
+ map(0xf002, 0xf002).portr("P2");
+ map(0xf003, 0xf003).portr("P1");
+ map(0xf004, 0xf004).portr("SYSTEM");
+ map(0xf008, 0xf008).w(this, FUNC(dooyong_z80_ym2203_state::pollux_ctrl_w)); /* coin counter, flip screen */
+ map(0xf010, 0xf010).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf018, 0xf01f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xf020, 0xf027).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xf800, 0xffff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
-ADDRESS_MAP_START(dooyong_z80_state::bluehawk_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSWA")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(flip_screen_w)
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("DSWB")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc008, 0xc008) AM_WRITE(bankswitch_w)
- AM_RANGE(0xc010, 0xc010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc018, 0xc01f) AM_DEVWRITE("fg2", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xc040, 0xc047) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xc048, 0xc04f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xc800, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(bluehawk_tx_r, bluehawk_tx_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void dooyong_z80_state::bluehawk_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("DSWA");
+ map(0xc000, 0xc000).w(this, FUNC(dooyong_z80_state::flip_screen_w));
+ map(0xc001, 0xc001).portr("DSWB");
+ map(0xc002, 0xc002).portr("P1");
+ map(0xc003, 0xc003).portr("P2");
+ map(0xc004, 0xc004).portr("SYSTEM");
+ map(0xc008, 0xc008).w(this, FUNC(dooyong_z80_state::bankswitch_w));
+ map(0xc010, 0xc010).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc018, 0xc01f).w(m_fg2, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xc040, 0xc047).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xc048, 0xc04f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xc800, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd000, 0xdfff).rw(this, FUNC(dooyong_z80_state::bluehawk_tx_r), FUNC(dooyong_z80_state::bluehawk_tx_w));
+ map(0xe000, 0xefff).ram().share("spriteram");
+ map(0xf000, 0xffff).ram();
+}
-ADDRESS_MAP_START(dooyong_z80_state::flytiger_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("P1")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(bankswitch_w)
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P2")
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe006, 0xe006) AM_READ_PORT("DSWA")
- AM_RANGE(0xe008, 0xe008) AM_READ_PORT("DSWB")
- AM_RANGE(0xe010, 0xe010) AM_WRITE(flytiger_ctrl_w) /* coin counter, flip screen */
- AM_RANGE(0xe020, 0xe020) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xe030, 0xe037) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xe040, 0xe047) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xe800, 0xefff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w)
- AM_RANGE(0xf000, 0xffff) AM_READWRITE(lastday_tx_r, lastday_tx_w)
-ADDRESS_MAP_END
+void dooyong_z80_state::flytiger_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().share("spriteram");
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xe000).portr("P1");
+ map(0xe000, 0xe000).w(this, FUNC(dooyong_z80_state::bankswitch_w));
+ map(0xe002, 0xe002).portr("P2");
+ map(0xe004, 0xe004).portr("SYSTEM");
+ map(0xe006, 0xe006).portr("DSWA");
+ map(0xe008, 0xe008).portr("DSWB");
+ map(0xe010, 0xe010).w(this, FUNC(dooyong_z80_state::flytiger_ctrl_w)); /* coin counter, flip screen */
+ map(0xe020, 0xe020).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xe030, 0xe037).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xe040, 0xe047).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xe800, 0xefff).rw(this, FUNC(dooyong_z80_state::paletteram_flytiger_r), FUNC(dooyong_z80_state::paletteram_flytiger_w));
+ map(0xf000, 0xffff).rw(this, FUNC(dooyong_z80_state::lastday_tx_r), FUNC(dooyong_z80_state::lastday_tx_w));
+}
-ADDRESS_MAP_START(dooyong_z80_state::primella_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM /* what is this? looks like a palette? scratchpad RAM maybe? */
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(bluehawk_tx_r, bluehawk_tx_w)
- AM_RANGE(0xf000, 0xf7ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSWA")
- AM_RANGE(0xf800, 0xf800) AM_WRITE(primella_ctrl_w) /* bank switch, flip screen etc */
- AM_RANGE(0xf810, 0xf810) AM_READ_PORT("DSWB")
- AM_RANGE(0xf810, 0xf810) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf820, 0xf820) AM_READ_PORT("P1")
- AM_RANGE(0xf830, 0xf830) AM_READ_PORT("P2")
- AM_RANGE(0xf840, 0xf840) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w)
- AM_RANGE(0xfc08, 0xfc0f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w)
-ADDRESS_MAP_END
+void dooyong_z80_state::primella_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd3ff).ram(); /* what is this? looks like a palette? scratchpad RAM maybe? */
+ map(0xe000, 0xefff).rw(this, FUNC(dooyong_z80_state::bluehawk_tx_r), FUNC(dooyong_z80_state::bluehawk_tx_w));
+ map(0xf000, 0xf7ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xf800).portr("DSWA");
+ map(0xf800, 0xf800).w(this, FUNC(dooyong_z80_state::primella_ctrl_w)); /* bank switch, flip screen etc */
+ map(0xf810, 0xf810).portr("DSWB");
+ map(0xf810, 0xf810).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf820, 0xf820).portr("P1");
+ map(0xf830, 0xf830).portr("P2");
+ map(0xf840, 0xf840).portr("SYSTEM");
+ map(0xfc00, 0xfc07).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+ map(0xfc08, 0xfc0f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w));
+}
-ADDRESS_MAP_START(rshark_state::rshark_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff) /* super-x needs this and is similar */
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04cfff) AM_RAM
- AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x04e000, 0x04ffff) AM_RAM
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c4000, 0x0c400f) AM_DEVWRITE8("bg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x0c4010, 0x0c401f) AM_DEVWRITE8("bg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x0c8000, 0x0c8fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0c0012, 0x0c0013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(ctrl_w) /* flip screen + unknown stuff */
- AM_RANGE(0x0cc000, 0x0cc00f) AM_DEVWRITE8("fg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x0cc010, 0x0cc01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
-ADDRESS_MAP_END
+void rshark_state::rshark_map(address_map &map)
+{
+ map.global_mask(0xfffff); /* super-x needs this and is similar */
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04cfff).ram();
+ map(0x04d000, 0x04dfff).ram().share("spriteram");
+ map(0x04e000, 0x04ffff).ram();
+ map(0x0c0002, 0x0c0003).portr("DSW");
+ map(0x0c0004, 0x0c0005).portr("P1_P2");
+ map(0x0c0006, 0x0c0007).portr("SYSTEM");
+ map(0x0c4000, 0x0c400f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x0c4010, 0x0c401f).w(m_bg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x0c8000, 0x0c8fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0c0013, 0x0c0013).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0014, 0x0c0015).w(this, FUNC(rshark_state::ctrl_w)); /* flip screen + unknown stuff */
+ map(0x0cc000, 0x0cc00f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x0cc010, 0x0cc01f).w(m_fg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+}
-ADDRESS_MAP_START(rshark_state::superx_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0d0000, 0x0dcfff) AM_RAM
- AM_RANGE(0x0dd000, 0x0ddfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0de000, 0x0dffff) AM_RAM
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P1_P2")
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x084000, 0x08400f) AM_DEVWRITE8("bg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x084010, 0x08401f) AM_DEVWRITE8("bg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x088000, 0x088fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x080012, 0x080013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x080014, 0x080015) AM_WRITE(ctrl_w) /* flip screen + unknown stuff */
- AM_RANGE(0x08c000, 0x08c00f) AM_DEVWRITE8("fg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x08c010, 0x08c01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
-ADDRESS_MAP_END
+void rshark_state::superx_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x0d0000, 0x0dcfff).ram();
+ map(0x0dd000, 0x0ddfff).ram().share("spriteram");
+ map(0x0de000, 0x0dffff).ram();
+ map(0x080002, 0x080003).portr("DSW");
+ map(0x080004, 0x080005).portr("P1_P2");
+ map(0x080006, 0x080007).portr("SYSTEM");
+ map(0x084000, 0x08400f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x084010, 0x08401f).w(m_bg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x088000, 0x088fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x080013, 0x080013).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x080014, 0x080015).w(this, FUNC(rshark_state::ctrl_w)); /* flip screen + unknown stuff */
+ map(0x08c000, 0x08c00f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x08c010, 0x08c01f).w(m_fg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+}
-ADDRESS_MAP_START(popbingo_state::popbingo_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04cfff) AM_RAM
- AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x04e000, 0x04ffff) AM_RAM
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c0012, 0x0c0013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(ctrl_w)
- AM_RANGE(0x0c0018, 0x0c001b) AM_WRITENOP // ?
- AM_RANGE(0x0c4000, 0x0c400f) AM_DEVWRITE8("bg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x0c4010, 0x0c401f) AM_DEVWRITE8("bg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff)
- AM_RANGE(0x0c8000, 0x0c8fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+void popbingo_state::popbingo_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04cfff).ram();
+ map(0x04d000, 0x04dfff).ram().share("spriteram");
+ map(0x04e000, 0x04ffff).ram();
+ map(0x0c0002, 0x0c0003).portr("DSW");
+ map(0x0c0004, 0x0c0005).portr("P1_P2");
+ map(0x0c0006, 0x0c0007).portr("SYSTEM");
+ map(0x0c0013, 0x0c0013).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0014, 0x0c0015).w(this, FUNC(popbingo_state::ctrl_w));
+ map(0x0c0018, 0x0c001b).nopw(); // ?
+ map(0x0c4000, 0x0c400f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x0c4010, 0x0c401f).w(m_bg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff);
+ map(0x0c8000, 0x0c8fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
//AM_RANGE(0x08c000, 0x08c00f) AM_DEVWRITE8("fg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) apparently not present
//AM_RANGE(0x08c010, 0x08c01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) apparently not present
- AM_RANGE(0x0dc000, 0x0dc01f) AM_RAM // registers of some kind?
-ADDRESS_MAP_END
+ map(0x0dc000, 0x0dc01f).ram(); // registers of some kind?
+}
-ADDRESS_MAP_START(dooyong_z80_ym2203_state::lastday_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void dooyong_z80_ym2203_state::lastday_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
-ADDRESS_MAP_START(dooyong_z80_ym2203_state::pollux_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf802, 0xf803) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xf804, 0xf805) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void dooyong_z80_ym2203_state::pollux_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf802, 0xf803).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf804, 0xf805).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
ADDRESS_MAP_START(dooyong_state::bluehawk_sound_map)
AM_RANGE(0x0000, 0xefff) AM_ROM
diff --git a/src/mame/drivers/dorachan.cpp b/src/mame/drivers/dorachan.cpp
index 49c24368319..5012c96dab7 100644
--- a/src/mame/drivers/dorachan.cpp
+++ b/src/mame/drivers/dorachan.cpp
@@ -130,24 +130,26 @@ WRITE8_MEMBER(dorachan_state::control_w)
}
-ADDRESS_MAP_START(dorachan_state::dorachan_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x23ff) AM_ROM
- AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ(protection_r)
- AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("IN0")
- AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READ_PORT("IN1")
- AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ(v128_r)
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x77ff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dorachan_state::dorachan_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_WRITENOP
- AM_RANGE(0x02, 0x02) AM_WRITENOP
- AM_RANGE(0x03, 0x03) AM_WRITE(control_w)
-ADDRESS_MAP_END
+void dorachan_state::dorachan_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x1800, 0x1fff).ram();
+ map(0x2000, 0x23ff).rom();
+ map(0x2400, 0x2400).mirror(0x03ff).r(this, FUNC(dorachan_state::protection_r));
+ map(0x2800, 0x2800).mirror(0x03ff).portr("IN0");
+ map(0x2c00, 0x2c00).mirror(0x03ff).portr("IN1");
+ map(0x3800, 0x3800).mirror(0x03ff).r(this, FUNC(dorachan_state::v128_r));
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x77ff).rom();
+}
+
+void dorachan_state::dorachan_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).nopw();
+ map(0x02, 0x02).nopw();
+ map(0x03, 0x03).w(this, FUNC(dorachan_state::control_w));
+}
diff --git a/src/mame/drivers/dotrikun.cpp b/src/mame/drivers/dotrikun.cpp
index 75c440c1550..bdc7fae441e 100644
--- a/src/mame/drivers/dotrikun.cpp
+++ b/src/mame/drivers/dotrikun.cpp
@@ -142,16 +142,18 @@ uint32_t dotrikun_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
*
*************************************/
-ADDRESS_MAP_START(dotrikun_state::dotrikun_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x85ff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE(0x8600, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dotrikun_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ_PORT("INPUTS") AM_WRITE(color_w)
-ADDRESS_MAP_END
+void dotrikun_state::dotrikun_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x85ff).ram().w(this, FUNC(dotrikun_state::vram_w)).share("vram");
+ map(0x8600, 0x87ff).ram();
+}
+
+void dotrikun_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0xff).portr("INPUTS").w(this, FUNC(dotrikun_state::color_w));
+}
/*************************************
diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp
index cce3f8462b3..8ee696b9ef5 100644
--- a/src/mame/drivers/dps1.cpp
+++ b/src/mame/drivers/dps1.cpp
@@ -58,35 +58,37 @@ private:
//required_device<floppy_connector> m_floppy1;
};
-ADDRESS_MAP_START(dps1_state::mem_map)
- AM_RANGE(0x0000, 0x03ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x0400, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dps1_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("uart", mc2661_device, read, write) // S2651
- AM_RANGE(0xb0, 0xb1) AM_DEVICE("fdc", upd765_family_device, map)
- AM_RANGE(0xb2, 0xb3) AM_WRITE(portb2_w) // set dma fdc->memory
- AM_RANGE(0xb4, 0xb5) AM_WRITE(portb4_w) // set dma memory->fdc
- AM_RANGE(0xb6, 0xb7) AM_WRITE(portb6_w) // enable eprom
- AM_RANGE(0xb8, 0xb9) AM_WRITE(portb8_w) // set A16-23
- AM_RANGE(0xba, 0xbb) AM_WRITE(portba_w) // set A8-15
- AM_RANGE(0xbc, 0xbd) AM_WRITE(portbc_w) // set A0-7
- AM_RANGE(0xbe, 0xbf) AM_WRITE(portbe_w) // disable eprom
- AM_RANGE(0xff, 0xff) AM_READWRITE(portff_r, portff_w)
+void dps1_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x03ff).bankr("bankr0").bankw("bankw0");
+ map(0x0400, 0xffff).ram();
+}
+
+void dps1_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw("uart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // S2651
+ map(0xb0, 0xb1).m(m_fdc, FUNC(upd765_family_device::map));
+ map(0xb2, 0xb3).w(this, FUNC(dps1_state::portb2_w)); // set dma fdc->memory
+ map(0xb4, 0xb5).w(this, FUNC(dps1_state::portb4_w)); // set dma memory->fdc
+ map(0xb6, 0xb7).w(this, FUNC(dps1_state::portb6_w)); // enable eprom
+ map(0xb8, 0xb9).w(this, FUNC(dps1_state::portb8_w)); // set A16-23
+ map(0xba, 0xbb).w(this, FUNC(dps1_state::portba_w)); // set A8-15
+ map(0xbc, 0xbd).w(this, FUNC(dps1_state::portbc_w)); // set A0-7
+ map(0xbe, 0xbf).w(this, FUNC(dps1_state::portbe_w)); // disable eprom
+ map(0xff, 0xff).rw(this, FUNC(dps1_state::portff_r), FUNC(dps1_state::portff_w));
// other allocated ports, optional
// AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("uart2", mc2661_device, read, write) // S2651
// AM_RANGE(0x08, 0x0b) parallel ports
// AM_RANGE(0x10, 0x11) // interrupt response
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("am9519a", am9519_device, data_r, data_w)
- AM_RANGE(0x15, 0x15) AM_DEVREADWRITE("am9519a", am9519_device, stat_r, cmd_w)
- AM_RANGE(0x16, 0x16) AM_DEVREADWRITE("am9519b", am9519_device, data_r, data_w)
- AM_RANGE(0x17, 0x17) AM_DEVREADWRITE("am9519b", am9519_device, stat_r, cmd_w)
+ map(0x14, 0x14).rw("am9519a", FUNC(am9519_device::data_r), FUNC(am9519_device::data_w));
+ map(0x15, 0x15).rw("am9519a", FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w));
+ map(0x16, 0x16).rw("am9519b", FUNC(am9519_device::data_r), FUNC(am9519_device::data_w));
+ map(0x17, 0x17).rw("am9519b", FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w));
// AM_RANGE(0x18, 0x1f) control lines 0 to 7
- AM_RANGE(0xe0, 0xe3) AM_NOP //unknown device
-ADDRESS_MAP_END
+ map(0xe0, 0xe3).noprw(); //unknown device
+}
// read from disk, to memory
diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp
index ecb9912fb42..eefef179f4a 100644
--- a/src/mame/drivers/dragon.cpp
+++ b/src/mame/drivers/dragon.cpp
@@ -36,8 +36,9 @@
// ADDRESS_MAP( dragon_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(dragon_state::dragon_mem)
-ADDRESS_MAP_END
+void dragon_state::dragon_mem(address_map &map)
+{
+}
//**************************************************************************
diff --git a/src/mame/drivers/dragrace.cpp b/src/mame/drivers/dragrace.cpp
index 5f7ca805d5c..9edc9f2e0d3 100644
--- a/src/mame/drivers/dragrace.cpp
+++ b/src/mame/drivers/dragrace.cpp
@@ -118,25 +118,26 @@ READ8_MEMBER(dragrace_state::dragrace_scanline_r)
}
-ADDRESS_MAP_START(dragrace_state::dragrace_map)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x0800, 0x083f) AM_READ(dragrace_input_r)
- AM_RANGE(0x0900, 0x0907) AM_DEVWRITE("latch_f5", addressable_latch_device, write_d0)
- AM_RANGE(0x0908, 0x090f) AM_DEVWRITE("latch_a5", addressable_latch_device, write_d0)
- AM_RANGE(0x0910, 0x0917) AM_DEVWRITE("latch_h5", addressable_latch_device, write_d0)
- AM_RANGE(0x0918, 0x091f) AM_DEVWRITE("latch_e5", addressable_latch_device, write_d0)
- AM_RANGE(0x0920, 0x0927) AM_DEVWRITE("latch_f5", addressable_latch_device, clear)
- AM_RANGE(0x0928, 0x092f) AM_DEVWRITE("latch_a5", addressable_latch_device, clear)
- AM_RANGE(0x0930, 0x0937) AM_DEVWRITE("latch_h5", addressable_latch_device, clear)
- AM_RANGE(0x0938, 0x093f) AM_DEVWRITE("latch_e5", addressable_latch_device, clear)
- AM_RANGE(0x0a00, 0x0aff) AM_WRITEONLY AM_SHARE("playfield_ram")
- AM_RANGE(0x0b00, 0x0bff) AM_WRITEONLY AM_SHARE("position_ram")
- AM_RANGE(0x0c00, 0x0c00) AM_READ(dragrace_steering_r)
- AM_RANGE(0x0d00, 0x0d00) AM_READ(dragrace_scanline_r)
- AM_RANGE(0x0e00, 0x0eff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1000, 0x1fff) AM_ROM /* program */
- AM_RANGE(0xf800, 0xffff) AM_ROM /* program mirror */
-ADDRESS_MAP_END
+void dragrace_state::dragrace_map(address_map &map)
+{
+ map(0x0080, 0x00ff).ram();
+ map(0x0800, 0x083f).r(this, FUNC(dragrace_state::dragrace_input_r));
+ map(0x0900, 0x0907).w("latch_f5", FUNC(addressable_latch_device::write_d0));
+ map(0x0908, 0x090f).w("latch_a5", FUNC(addressable_latch_device::write_d0));
+ map(0x0910, 0x0917).w("latch_h5", FUNC(addressable_latch_device::write_d0));
+ map(0x0918, 0x091f).w("latch_e5", FUNC(addressable_latch_device::write_d0));
+ map(0x0920, 0x0927).w("latch_f5", FUNC(addressable_latch_device::clear));
+ map(0x0928, 0x092f).w("latch_a5", FUNC(addressable_latch_device::clear));
+ map(0x0930, 0x0937).w("latch_h5", FUNC(addressable_latch_device::clear));
+ map(0x0938, 0x093f).w("latch_e5", FUNC(addressable_latch_device::clear));
+ map(0x0a00, 0x0aff).writeonly().share("playfield_ram");
+ map(0x0b00, 0x0bff).writeonly().share("position_ram");
+ map(0x0c00, 0x0c00).r(this, FUNC(dragrace_state::dragrace_steering_r));
+ map(0x0d00, 0x0d00).r(this, FUNC(dragrace_state::dragrace_scanline_r));
+ map(0x0e00, 0x0eff).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x1000, 0x1fff).rom(); /* program */
+ map(0xf800, 0xffff).rom(); /* program mirror */
+}
static INPUT_PORTS_START( dragrace )
diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp
index d8e5f64a3e0..53343842402 100644
--- a/src/mame/drivers/dreambal.cpp
+++ b/src/mame/drivers/dreambal.cpp
@@ -111,33 +111,34 @@ WRITE16_MEMBER( dreambal_state::dreambal_protection_region_0_104_w )
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
-ADDRESS_MAP_START(dreambal_state::dreambal_map)
+void dreambal_state::dreambal_map(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x101000, 0x101fff) AM_RAM
- AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x103000, 0x103fff) AM_RAM
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x101000, 0x101fff).ram();
+ map(0x102000, 0x102fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x103000, 0x103fff).ram();
- AM_RANGE(0x120000, 0x123fff) AM_RAM
- AM_RANGE(0x140000, 0x1403ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x120000, 0x123fff).ram();
+ map(0x140000, 0x1403ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x160000, 0x163fff) AM_READWRITE(dreambal_protection_region_0_104_r,dreambal_protection_region_0_104_w)AM_SHARE("prot16ram") /* Protection device */
+ map(0x160000, 0x163fff).rw(this, FUNC(dreambal_state::dreambal_protection_region_0_104_r), FUNC(dreambal_state::dreambal_protection_region_0_104_w)).share("prot16ram"); /* Protection device */
- AM_RANGE(0x161000, 0x16100f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
+ map(0x161000, 0x16100f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
- AM_RANGE(0x180000, 0x180001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x180001, 0x180001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x162000, 0x162001) AM_WRITENOP // writes 0003 on startup
- AM_RANGE(0x163000, 0x163001) AM_WRITENOP // something on bit 1
- AM_RANGE(0x164000, 0x164001) AM_WRITENOP // something on bit 1
+ map(0x162000, 0x162001).nopw(); // writes 0003 on startup
+ map(0x163000, 0x163001).nopw(); // something on bit 1
+ map(0x164000, 0x164001).nopw(); // something on bit 1
- AM_RANGE(0x165000, 0x165001) AM_WRITE( dreambal_eeprom_w ) // EEP Write?
+ map(0x165000, 0x165001).w(this, FUNC(dreambal_state::dreambal_eeprom_w)); // EEP Write?
- AM_RANGE(0x16c002, 0x16c00d) AM_WRITENOP // writes 0000 to 0005 on startup
- AM_RANGE(0x1a0000, 0x1a0003) AM_WRITENOP // RS-232C status / data ports (byte access)
-ADDRESS_MAP_END
+ map(0x16c002, 0x16c00d).nopw(); // writes 0000 to 0005 on startup
+ map(0x1a0000, 0x1a0003).nopw(); // RS-232C status / data ports (byte access)
+}
static const gfx_layout tile_8x8_layout =
diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp
index c3f92107b6d..a9820d1ec94 100644
--- a/src/mame/drivers/dreamwld.cpp
+++ b/src/mame/drivers/dreamwld.cpp
@@ -431,15 +431,17 @@ READ32_MEMBER(dreamwld_state::dreamwld_protdata_r)
return dat << 24;
}
-ADDRESS_MAP_START(dreamwld_state::oki1_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki1bank")
-ADDRESS_MAP_END
+void dreamwld_state::oki1_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("oki1bank");
+}
-ADDRESS_MAP_START(dreamwld_state::oki2_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki2bank")
-ADDRESS_MAP_END
+void dreamwld_state::oki2_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("oki2bank");
+}
WRITE32_MEMBER(dreamwld_state::dreamwld_6295_0_bank_w)
{
@@ -458,33 +460,35 @@ WRITE32_MEMBER(dreamwld_state::dreamwld_6295_1_bank_w)
}
-ADDRESS_MAP_START(dreamwld_state::baryon_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_WRITENOP
+void dreamwld_state::baryon_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom().nopw();
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(dreamwld_bg_videoram_w ) AM_SHARE("bg_videoram")
- AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(dreamwld_bg2_videoram_w ) AM_SHARE("bg2_videoram")
- AM_RANGE(0x804000, 0x8043ff) AM_READWRITE16(lineram16_r, lineram16_w, 0xffffffff) // linescroll
- AM_RANGE(0x804400, 0x805fff) AM_RAM AM_SHARE("vregs")
+ map(0x400000, 0x401fff).ram().share("spriteram");
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x800000, 0x801fff).ram().w(this, FUNC(dreamwld_state::dreamwld_bg_videoram_w)).share("bg_videoram");
+ map(0x802000, 0x803fff).ram().w(this, FUNC(dreamwld_state::dreamwld_bg2_videoram_w)).share("bg2_videoram");
+ map(0x804000, 0x8043ff).rw(this, FUNC(dreamwld_state::lineram16_r), FUNC(dreamwld_state::lineram16_w)); // linescroll
+ map(0x804400, 0x805fff).ram().share("vregs");
- AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS")
- AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("c00004")
+ map(0xc00000, 0xc00003).portr("INPUTS");
+ map(0xc00004, 0xc00007).portr("c00004");
- AM_RANGE(0xc0000c, 0xc0000f) AM_WRITE(dreamwld_6295_0_bank_w) // sfx
- AM_RANGE(0xc00018, 0xc0001b) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0xff000000) // sfx
+ map(0xc0000c, 0xc0000f).w(this, FUNC(dreamwld_state::dreamwld_6295_0_bank_w)); // sfx
+ map(0xc00018, 0xc00018).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // sfx
- AM_RANGE(0xc00030, 0xc00033) AM_READ(dreamwld_protdata_r) // it reads protection data (irq code) from here and puts it at ffd000
+ map(0xc00030, 0xc00033).r(this, FUNC(dreamwld_state::dreamwld_protdata_r)); // it reads protection data (irq code) from here and puts it at ffd000
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM AM_SHARE("workram") // work ram
-ADDRESS_MAP_END
+ map(0xfe0000, 0xffffff).ram().share("workram"); // work ram
+}
-ADDRESS_MAP_START(dreamwld_state::dreamwld_map)
- AM_IMPORT_FROM( baryon_map )
+void dreamwld_state::dreamwld_map(address_map &map)
+{
+ baryon_map(map);
- AM_RANGE(0xc0002c, 0xc0002f) AM_WRITE(dreamwld_6295_1_bank_w) // sfx
- AM_RANGE(0xc00028, 0xc0002b) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0xff000000) // sfx
-ADDRESS_MAP_END
+ map(0xc0002c, 0xc0002f).w(this, FUNC(dreamwld_state::dreamwld_6295_1_bank_w)); // sfx
+ map(0xc00028, 0xc00028).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // sfx
+}
static INPUT_PORTS_START( dreamwld )
diff --git a/src/mame/drivers/drgnmst.cpp b/src/mame/drivers/drgnmst.cpp
index dc58ce88218..fa5cb9c3de2 100644
--- a/src/mame/drivers/drgnmst.cpp
+++ b/src/mame/drivers/drgnmst.cpp
@@ -181,29 +181,30 @@ WRITE8_MEMBER(drgnmst_state::drgnmst_snd_control_w)
/***************************** 68000 Memory Map *****************************/
-ADDRESS_MAP_START(drgnmst_state::drgnmst_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1")
- AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2")
- AM_RANGE(0x800030, 0x800031) AM_WRITE(drgnmst_coin_w)
- AM_RANGE(0x800100, 0x80011f) AM_WRITEONLY AM_SHARE("vidregs")
- AM_RANGE(0x800120, 0x800121) AM_WRITENOP
- AM_RANGE(0x80014a, 0x80014b) AM_WRITENOP
- AM_RANGE(0x800154, 0x800155) AM_WRITEONLY AM_SHARE("vidregs2") // seems to be priority control
- AM_RANGE(0x800176, 0x800177) AM_READ_PORT("EXTRA")
- AM_RANGE(0x800180, 0x800181) AM_WRITE(drgnmst_snd_command_w)
- AM_RANGE(0x800188, 0x800189) AM_WRITE(drgnmst_snd_flag_w)
- AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(drgnmst_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(drgnmst_md_videoram_w) AM_SHARE("md_videoram")
- AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(drgnmst_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(drgnmst_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x920000, 0x923fff) AM_RAM AM_SHARE("rowscrollram") // rowscroll ram
- AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void drgnmst_state::drgnmst_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x800000, 0x800001).portr("P1_P2");
+ map(0x800018, 0x800019).portr("SYSTEM");
+ map(0x80001a, 0x80001b).portr("DSW1");
+ map(0x80001c, 0x80001d).portr("DSW2");
+ map(0x800030, 0x800031).w(this, FUNC(drgnmst_state::drgnmst_coin_w));
+ map(0x800100, 0x80011f).writeonly().share("vidregs");
+ map(0x800120, 0x800121).nopw();
+ map(0x80014a, 0x80014b).nopw();
+ map(0x800154, 0x800155).writeonly().share("vidregs2"); // seems to be priority control
+ map(0x800176, 0x800177).portr("EXTRA");
+ map(0x800180, 0x800181).w(this, FUNC(drgnmst_state::drgnmst_snd_command_w));
+ map(0x800188, 0x800189).w(this, FUNC(drgnmst_state::drgnmst_snd_flag_w));
+ map(0x8001e0, 0x8001e1).nopw();
+ map(0x900000, 0x903fff).ram().w(this, FUNC(drgnmst_state::drgnmst_paletteram_w)).share("paletteram");
+ map(0x904000, 0x907fff).ram().w(this, FUNC(drgnmst_state::drgnmst_md_videoram_w)).share("md_videoram");
+ map(0x908000, 0x90bfff).ram().w(this, FUNC(drgnmst_state::drgnmst_bg_videoram_w)).share("bg_videoram");
+ map(0x90c000, 0x90ffff).ram().w(this, FUNC(drgnmst_state::drgnmst_fg_videoram_w)).share("fg_videoram");
+ map(0x920000, 0x923fff).ram().share("rowscrollram"); // rowscroll ram
+ map(0x930000, 0x9307ff).ram().share("spriteram"); // Sprites
+ map(0xff0000, 0xffffff).ram();
+}
static INPUT_PORTS_START( drgnmst )
diff --git a/src/mame/drivers/dribling.cpp b/src/mame/drivers/dribling.cpp
index e5b5b741d60..9b120bc05c8 100644
--- a/src/mame/drivers/dribling.cpp
+++ b/src/mame/drivers/dribling.cpp
@@ -175,18 +175,20 @@ WRITE8_MEMBER(dribling_state::iowrite)
*
*************************************/
-ADDRESS_MAP_START(dribling_state::dribling_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(dribling_colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dribling_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(ioread, iowrite)
-ADDRESS_MAP_END
+void dribling_state::dribling_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("videoram");
+ map(0x4000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram().w(this, FUNC(dribling_state::dribling_colorram_w)).share("colorram");
+}
+
+
+void dribling_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(dribling_state::ioread), FUNC(dribling_state::iowrite));
+}
diff --git a/src/mame/drivers/drmicro.cpp b/src/mame/drivers/drmicro.cpp
index e929a70e464..e14f69d90af 100644
--- a/src/mame/drivers/drmicro.cpp
+++ b/src/mame/drivers/drmicro.cpp
@@ -76,22 +76,24 @@ WRITE8_MEMBER(drmicro_state::pcm_set_w)
*
*************************************/
-ADDRESS_MAP_START(drmicro_state::drmicro_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(drmicro_videoram_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(drmicro_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76496_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn3", sn76496_device, write)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") AM_WRITE(pcm_set_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_WRITE(nmi_enable_w)
- AM_RANGE(0x05, 0x05) AM_NOP // unused? / watchdog?
-ADDRESS_MAP_END
+void drmicro_state::drmicro_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().w(this, FUNC(drmicro_state::drmicro_videoram_w));
+ map(0xf000, 0xffff).ram();
+}
+
+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(0x03, 0x03).portr("DSW1").w(this, FUNC(drmicro_state::pcm_set_w));
+ map(0x04, 0x04).portr("DSW2").w(this, FUNC(drmicro_state::nmi_enable_w));
+ map(0x05, 0x05).noprw(); // unused? / watchdog?
+}
/*************************************
*
diff --git a/src/mame/drivers/drtomy.cpp b/src/mame/drivers/drtomy.cpp
index c5b5c4cb3f1..8cbc3972b40 100644
--- a/src/mame/drivers/drtomy.cpp
+++ b/src/mame/drivers/drtomy.cpp
@@ -174,20 +174,21 @@ WRITE16_MEMBER(drtomy_state::drtomy_okibank_w)
/* unknown bit 2 -> (data & 4) */
}
-ADDRESS_MAP_START(drtomy_state::drtomy_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(drtomy_vram_fg_w) AM_SHARE("videorafg") /* Video RAM FG */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(drtomy_vram_bg_w) AM_SHARE("videorabg") /* Video RAM BG */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(drtomy_okibank_w) /* OKI banking */
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI 6295*/
- AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
+void drtomy_state::drtomy_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); /* ROM */
+ map(0x100000, 0x100fff).ram().w(this, FUNC(drtomy_state::drtomy_vram_fg_w)).share("videorafg"); /* Video RAM FG */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(drtomy_state::drtomy_vram_bg_w)).share("videorabg"); /* Video RAM BG */
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW1");
+ map(0x700002, 0x700003).portr("DSW2");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x70000c, 0x70000d).w(this, FUNC(drtomy_state::drtomy_okibank_w)); /* OKI banking */
+ map(0x70000f, 0x70000f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI 6295*/
+ map(0xffc000, 0xffffff).ram(); /* Work RAM */
+}
static const gfx_layout tilelayout8=
{
diff --git a/src/mame/drivers/drw80pkr.cpp b/src/mame/drivers/drw80pkr.cpp
index 9b6faf205f0..f52d308229a 100644
--- a/src/mame/drivers/drw80pkr.cpp
+++ b/src/mame/drivers/drw80pkr.cpp
@@ -401,13 +401,15 @@ DRIVER_INIT_MEMBER(drw80pkr_state,drw80pkr)
* Memory map information *
*************************/
-ADDRESS_MAP_START(drw80pkr_state::drw80pkr_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void drw80pkr_state::drw80pkr_map(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bank1");
+}
-ADDRESS_MAP_START(drw80pkr_state::drw80pkr_io_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w)
-ADDRESS_MAP_END
+void drw80pkr_state::drw80pkr_io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(drw80pkr_state::drw80pkr_io_r), FUNC(drw80pkr_state::drw80pkr_io_w));
+}
/*************************
* Input ports *
diff --git a/src/mame/drivers/dsb46.cpp b/src/mame/drivers/dsb46.cpp
index d536b53421e..8ef6c2fc634 100644
--- a/src/mame/drivers/dsb46.cpp
+++ b/src/mame/drivers/dsb46.cpp
@@ -56,23 +56,25 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(dsb46_state::dsb46_mem)
- AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("read") AM_WRITE_BANK("write")
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dsb46_state::dsb46_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write)
- AM_RANGE(0x1a, 0x1a) AM_WRITE(port1a_w)
+void dsb46_state::dsb46_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankr("read").bankw("write");
+ map(0x0800, 0xffff).ram();
+}
+
+void dsb46_state::dsb46_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x08, 0x0b).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x1a, 0x1a).w(this, FUNC(dsb46_state::port1a_w));
//AM_RANGE(0x10, 0x10) disk related
//AM_RANGE(0x14, 0x14) ?? (read after CTC1 TRG3)
//AM_RANGE(0x18, 0x18) ??
//AM_RANGE(0x1c, 0x1c) disk data
//AM_RANGE(0x1d, 0x1d) disk status (FF = no fdc)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( dsb46 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/dual68.cpp b/src/mame/drivers/dual68.cpp
index 4f4174b47f7..78c6b0235ce 100644
--- a/src/mame/drivers/dual68.cpp
+++ b/src/mame/drivers/dual68.cpp
@@ -48,31 +48,34 @@ WRITE16_MEMBER( dual68_state::terminal_w )
m_terminal->write(space, 0, data >> 8);
}
-ADDRESS_MAP_START(dual68_state::dual68_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0000ffff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x00080000, 0x00081fff) AM_ROM AM_REGION("user1",0)
- AM_RANGE(0x007f0000, 0x007f0001) AM_WRITE(terminal_w)
- AM_RANGE(0x00800000, 0x00801fff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dual68_state::sio4_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dual68_state::sio4_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x22, 0x22) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0x23, 0x23) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x2a, 0x2a) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
- AM_RANGE(0x2b, 0x2b) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0x32, 0x32) AM_DEVREADWRITE("uart3", i8251_device, status_r, control_w)
- AM_RANGE(0x33, 0x33) AM_DEVREADWRITE("uart3", i8251_device, data_r, data_w)
- AM_RANGE(0x3a, 0x3a) AM_DEVREADWRITE("uart4", i8251_device, status_r, control_w)
- AM_RANGE(0x3b, 0x3b) AM_DEVREADWRITE("uart4", i8251_device, data_r, data_w)
-ADDRESS_MAP_END
+void dual68_state::dual68_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0000ffff).ram().share("ram");
+ map(0x00080000, 0x00081fff).rom().region("user1", 0);
+ map(0x007f0000, 0x007f0001).w(this, FUNC(dual68_state::terminal_w));
+ map(0x00800000, 0x00801fff).rom().region("user1", 0);
+}
+
+void dual68_state::sio4_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0xffff).ram();
+}
+
+void dual68_state::sio4_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x22, 0x22).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x23, 0x23).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x2a, 0x2a).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x2b, 0x2b).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x32, 0x32).rw("uart3", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x33, 0x33).rw("uart3", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x3a, 0x3a).rw("uart4", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x3b, 0x3b).rw("uart4", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+}
/* Input ports */
static INPUT_PORTS_START( dual68 )
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index 6fa1526aeb4..22c7810dff3 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -143,34 +143,36 @@ READ16_MEMBER(duet16_state::sysstat_r)
return 0xb484;
}
-ADDRESS_MAP_START(duet16_state::duet16_mem)
- AM_RANGE(0x00000, 0x8ffff) AM_RAM
- AM_RANGE(0xa8000, 0xbffff) AM_RAM AM_SHARE("gvram")
- AM_RANGE(0xc0000, 0xc0fff) AM_RAM AM_SHARE("cvram")
- AM_RANGE(0xf8000, 0xf801f) AM_READWRITE8(dmapg_r, dmapg_w, 0x00ff)
- AM_RANGE(0xf8000, 0xf801f) AM_DEVREADWRITE8("dmac", am9517a_device, read, write, 0xff00)
- AM_RANGE(0xf8020, 0xf8023) AM_READWRITE8(pic_r, pic_w, 0x00ff)
- AM_RANGE(0xf8040, 0xf804f) AM_DEVREADWRITE8("itm", ptm6840_device, read, write, 0x00ff)
- AM_RANGE(0xf8060, 0xf8067) AM_DEVREADWRITE8("bgpit", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xf8080, 0xf8087) AM_DEVREADWRITE8("sio", upd7201_new_device, ba_cd_r, ba_cd_w, 0x00ff)
- AM_RANGE(0xf80a0, 0xf80a1) AM_DEVREADWRITE8("kbusart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf80a2, 0xf80a3) AM_DEVREADWRITE8("kbusart", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xf80c0, 0xf80c1) AM_DEVREADWRITE8("crtc", h46505_device, status_r, address_w, 0x00ff)
- AM_RANGE(0xf80c2, 0xf80c3) AM_DEVREADWRITE8("crtc", h46505_device, register_r, register_w, 0x00ff)
- AM_RANGE(0xf80e0, 0xf80e3) AM_DEVREADWRITE8("i8741", upi41_cpu_device, upi41_master_r, upi41_master_w, 0x00ff)
- AM_RANGE(0xf8100, 0xf8103) AM_DEVICE8("fdc", upd765a_device, map, 0x00ff)
- AM_RANGE(0xf8120, 0xf8121) AM_READWRITE8(rtc_r, rtc_w, 0x00ff)
- AM_RANGE(0xf8160, 0xf819f) AM_WRITE8(pal_w, 0xffff)
- AM_RANGE(0xf8200, 0xf8201) AM_READ(sysstat_r)
- AM_RANGE(0xf8220, 0xf8221) AM_WRITE8(fdcctrl_w, 0x00ff)
- AM_RANGE(0xf8260, 0xf8261) AM_WRITE8(rtc_addr_w, 0x00ff)
- AM_RANGE(0xf8280, 0xf8281) AM_READ8(rtc_stat_r, 0x00ff)
- AM_RANGE(0xf8280, 0xf8281) AM_WRITE8(dispctrl_w, 0x00ff)
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("rom", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(duet16_state::duet16_io)
-ADDRESS_MAP_END
+void duet16_state::duet16_mem(address_map &map)
+{
+ map(0x00000, 0x8ffff).ram();
+ map(0xa8000, 0xbffff).ram().share("gvram");
+ map(0xc0000, 0xc0fff).ram().share("cvram");
+ map(0xf8000, 0xf801f).rw(this, FUNC(duet16_state::dmapg_r), FUNC(duet16_state::dmapg_w)).umask16(0x00ff);
+ map(0xf8000, 0xf801f).rw("dmac", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0xff00);
+ map(0xf8020, 0xf8023).rw(this, FUNC(duet16_state::pic_r), FUNC(duet16_state::pic_w)).umask16(0x00ff);
+ map(0xf8040, 0xf804f).rw("itm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0xf8060, 0xf8067).rw("bgpit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xf8080, 0xf8087).rw("sio", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0x00ff);
+ map(0xf80a0, 0xf80a0).rw("kbusart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf80a2, 0xf80a2).rw("kbusart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf80c0, 0xf80c0).rw("crtc", FUNC(h46505_device::status_r), FUNC(h46505_device::address_w));
+ map(0xf80c2, 0xf80c2).rw("crtc", FUNC(h46505_device::register_r), FUNC(h46505_device::register_w));
+ map(0xf80e0, 0xf80e3).rw("i8741", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask16(0x00ff);
+ map(0xf8100, 0xf8103).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0xf8120, 0xf8120).rw(this, FUNC(duet16_state::rtc_r), FUNC(duet16_state::rtc_w));
+ map(0xf8160, 0xf819f).w(this, FUNC(duet16_state::pal_w));
+ map(0xf8200, 0xf8201).r(this, FUNC(duet16_state::sysstat_r));
+ map(0xf8220, 0xf8220).w(this, FUNC(duet16_state::fdcctrl_w));
+ map(0xf8260, 0xf8260).w(this, FUNC(duet16_state::rtc_addr_w));
+ map(0xf8280, 0xf8280).r(this, FUNC(duet16_state::rtc_stat_r));
+ map(0xf8280, 0xf8280).w(this, FUNC(duet16_state::dispctrl_w));
+ map(0xfe000, 0xfffff).rom().region("rom", 0);
+}
+
+void duet16_state::duet16_io(address_map &map)
+{
+}
WRITE8_MEMBER(duet16_state::pal_w)
{
diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp
index d72f7d4dbae..5844a016ada 100644
--- a/src/mame/drivers/dunhuang.cpp
+++ b/src/mame/drivers/dunhuang.cpp
@@ -428,11 +428,12 @@ WRITE8_MEMBER(dunhuang_state::layers_w)
Memory Maps
***************************************************************************/
-ADDRESS_MAP_START(dunhuang_state::dunhuang_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" )
-ADDRESS_MAP_END
+void dunhuang_state::dunhuang_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("mainbank");
+}
// Inputs
@@ -483,53 +484,55 @@ WRITE8_MEMBER(dunhuang_state::rombank_w)
}
-ADDRESS_MAP_START(dunhuang_state::dunhuang_io_map)
- AM_RANGE( 0x0000, 0x0000 ) AM_WRITE(pos_x_w )
- AM_RANGE( 0x0001, 0x0001 ) AM_WRITE(pos_y_w )
- AM_RANGE( 0x0002, 0x0004 ) AM_WRITE(tile_w )
- AM_RANGE( 0x0005, 0x0007 ) AM_WRITE(tile2_w )
+void dunhuang_state::dunhuang_io_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(dunhuang_state::pos_x_w));
+ map(0x0001, 0x0001).w(this, FUNC(dunhuang_state::pos_y_w));
+ map(0x0002, 0x0004).w(this, FUNC(dunhuang_state::tile_w));
+ map(0x0005, 0x0007).w(this, FUNC(dunhuang_state::tile2_w));
- AM_RANGE( 0x0008, 0x0008 ) AM_WRITE(vert_clear_w )
+ map(0x0008, 0x0008).w(this, FUNC(dunhuang_state::vert_clear_w));
- AM_RANGE( 0x000c, 0x000c ) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ map(0x000c, 0x000c).r("watchdog", FUNC(watchdog_timer_device::reset_r));
- AM_RANGE( 0x000f, 0x000f ) AM_WRITE(block_addr_lo_w )
- AM_RANGE( 0x0010, 0x0010 ) AM_WRITE(block_addr_hi_w )
+ map(0x000f, 0x000f).w(this, FUNC(dunhuang_state::block_addr_lo_w));
+ map(0x0010, 0x0010).w(this, FUNC(dunhuang_state::block_addr_hi_w));
// AM_RANGE( 0x0011, 0x0011 ) ?
- AM_RANGE( 0x0012, 0x0012 ) AM_WRITE(block_c_w )
- AM_RANGE( 0x0015, 0x0015 ) AM_WRITE(block_x_w )
- AM_RANGE( 0x0016, 0x0016 ) AM_WRITE(block_y_w )
- AM_RANGE( 0x0017, 0x0017 ) AM_WRITE(block_w_w )
- AM_RANGE( 0x0018, 0x0018 ) AM_WRITE(block_h_w )
+ map(0x0012, 0x0012).w(this, FUNC(dunhuang_state::block_c_w));
+ map(0x0015, 0x0015).w(this, FUNC(dunhuang_state::block_x_w));
+ map(0x0016, 0x0016).w(this, FUNC(dunhuang_state::block_y_w));
+ map(0x0017, 0x0017).w(this, FUNC(dunhuang_state::block_w_w));
+ map(0x0018, 0x0018).w(this, FUNC(dunhuang_state::block_h_w));
- AM_RANGE( 0x0019, 0x0019 ) AM_WRITE(clear_y_w )
- AM_RANGE( 0x001a, 0x001a ) AM_WRITE(horiz_clear_w )
+ map(0x0019, 0x0019).w(this, FUNC(dunhuang_state::clear_y_w));
+ map(0x001a, 0x001a).w(this, FUNC(dunhuang_state::horiz_clear_w));
- AM_RANGE( 0x001b, 0x001b ) AM_WRITE(block_dest_w )
+ map(0x001b, 0x001b).w(this, FUNC(dunhuang_state::block_dest_w));
- AM_RANGE( 0x0081, 0x0081 ) AM_DEVWRITE("ymsnd", ym2413_device, register_port_w)
- AM_RANGE( 0x0089, 0x0089 ) AM_DEVWRITE("ymsnd", ym2413_device, data_port_w)
+ map(0x0081, 0x0081).w("ymsnd", FUNC(ym2413_device::register_port_w));
+ map(0x0089, 0x0089).w("ymsnd", FUNC(ym2413_device::data_port_w));
- AM_RANGE( 0x0082, 0x0082 ) AM_DEVWRITE("oki", okim6295_device, write)
+ map(0x0082, 0x0082).w("oki", FUNC(okim6295_device::write));
- AM_RANGE( 0x0083, 0x0083 ) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE( 0x008b, 0x008b ) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE( 0x0093, 0x0093 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x0083, 0x0083).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x008b, 0x008b).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0093, 0x0093).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE( 0x0084, 0x0084 ) AM_READ(service_r )
- AM_RANGE( 0x0085, 0x0085 ) AM_READ(input_r )
+ map(0x0084, 0x0084).r(this, FUNC(dunhuang_state::service_r));
+ map(0x0085, 0x0085).r(this, FUNC(dunhuang_state::input_r));
- AM_RANGE( 0x0086, 0x0086 ) AM_WRITE(rombank_w )
- AM_RANGE( 0x0087, 0x0087 ) AM_WRITE(layers_w )
+ map(0x0086, 0x0086).w(this, FUNC(dunhuang_state::rombank_w));
+ map(0x0087, 0x0087).w(this, FUNC(dunhuang_state::layers_w));
- AM_RANGE( 0x0088, 0x0088 ) AM_DEVREAD("ay8910", ay8910_device, data_r )
- AM_RANGE( 0x0090, 0x0090 ) AM_DEVWRITE("ay8910", ay8910_device, data_w )
- AM_RANGE( 0x0098, 0x0098 ) AM_DEVWRITE("ay8910", ay8910_device, address_w )
-ADDRESS_MAP_END
+ map(0x0088, 0x0088).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0090, 0x0090).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0x0098, 0x0098).w("ay8910", FUNC(ay8910_device::address_w));
+}
-ADDRESS_MAP_START(dunhuang_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void dunhuang_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
/***************************************************************************
Input Ports
diff --git a/src/mame/drivers/dvk_kcgd.cpp b/src/mame/drivers/dvk_kcgd.cpp
index 5d75683148d..0c1d76d925d 100644
--- a/src/mame/drivers/dvk_kcgd.cpp
+++ b/src/mame/drivers/dvk_kcgd.cpp
@@ -120,18 +120,19 @@ protected:
required_device<screen_device> m_screen;
};
-ADDRESS_MAP_START(kcgd_state::kcgd_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0000000, 0077777) AM_READWRITE(vram_mmap_r, vram_mmap_w)
- AM_RANGE (0100000, 0157777) AM_ROM
- AM_RANGE (0160000, 0160001) AM_MIRROR(03774) AM_READWRITE(vram_addr_r, vram_addr_w)
- AM_RANGE (0160002, 0160003) AM_MIRROR(03774) AM_READWRITE(vram_data_r, vram_data_w)
- AM_RANGE (0167770, 0167771) AM_READWRITE(status_r, status_w)
- AM_RANGE (0167772, 0167773) AM_READWRITE8(palette_index_r, palette_index_w, 0x00ff) // reads always return 0
- AM_RANGE (0167772, 0167773) AM_READWRITE8(palette_data_r, palette_data_w, 0xff00)
-// AM_RANGE (0176560, 0176567) AM_RAM // USART2 -- host
-// AM_RANGE (0177560, 0177567) AM_RAM // USART3 -- keyboard
-ADDRESS_MAP_END
+void kcgd_state::kcgd_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0000000, 0077777).rw(this, FUNC(kcgd_state::vram_mmap_r), FUNC(kcgd_state::vram_mmap_w));
+ map(0100000, 0157777).rom();
+ map(0160000, 0160001).mirror(03774).rw(this, FUNC(kcgd_state::vram_addr_r), FUNC(kcgd_state::vram_addr_w));
+ map(0160002, 0160003).mirror(03774).rw(this, FUNC(kcgd_state::vram_data_r), FUNC(kcgd_state::vram_data_w));
+ map(0167770, 0167771).rw(this, FUNC(kcgd_state::status_r), FUNC(kcgd_state::status_w));
+ map(0167772, 0167772).rw(this, FUNC(kcgd_state::palette_index_r), FUNC(kcgd_state::palette_index_w)); // reads always return 0
+ map(0167773, 0167773).rw(this, FUNC(kcgd_state::palette_data_r), FUNC(kcgd_state::palette_data_w));
+// map(0176560, 0176567).ram(); // USART2 -- host
+// map(0177560, 0177567).ram(); // USART3 -- keyboard
+}
void kcgd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp
index 34100bd55fb..fbceeecbda4 100644
--- a/src/mame/drivers/dvk_ksm.cpp
+++ b/src/mame/drivers/dvk_ksm.cpp
@@ -159,22 +159,24 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(ksm_state::ksm_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x0000, 0x0fff) AM_ROM
- AM_RANGE (0x2000, 0x20ff) AM_RAM AM_MIRROR(0x0700)
- AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksm_state::ksm_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x5e, 0x5f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE (0x6e, 0x6e) AM_DEVREADWRITE("i8251kbd", i8251_device, data_r, data_w)
- AM_RANGE (0x6f, 0x6f) AM_DEVREADWRITE("i8251kbd", i8251_device, status_r, control_w)
- AM_RANGE (0x76, 0x76) AM_DEVREADWRITE("i8251line", i8251_device, data_r, data_w)
- AM_RANGE (0x77, 0x77) AM_DEVREADWRITE("i8251line", i8251_device, status_r, control_w)
- AM_RANGE (0x78, 0x7b) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+void ksm_state::ksm_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x20ff).ram().mirror(0x0700);
+ map(0xc000, 0xffff).ram().share("videoram");
+}
+
+void ksm_state::ksm_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x5e, 0x5f).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x6e, 0x6e).rw(m_i8251kbd, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x6f, 0x6f).rw(m_i8251kbd, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x76, 0x76).rw(m_i8251line, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x77, 0x77).rw(m_i8251line, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x78, 0x7b).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( ksm )
diff --git a/src/mame/drivers/dwarfd.cpp b/src/mame/drivers/dwarfd.cpp
index a29453b7a59..b264c03a710 100644
--- a/src/mame/drivers/dwarfd.cpp
+++ b/src/mame/drivers/dwarfd.cpp
@@ -409,39 +409,44 @@ READ8_MEMBER(dwarfd_state::qc_b8_r)
return machine().rand();
}
-ADDRESS_MAP_START(dwarfd_state::mem_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dwarfd_state::pokeresp_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dwarfd_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-
- AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("i8275", i8275_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITENOP // unknown
- AM_RANGE(0x60, 0x60) AM_WRITE(output1_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(output2_w)
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("DSW1")
- AM_RANGE(0xc1, 0xc1) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dwarfd_state::qc_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dwarfd_state::qc_io_map)
- AM_IMPORT_FROM( io_map )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xb8, 0xb8) AM_READ(qc_b8_r)
-ADDRESS_MAP_END
+void dwarfd_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).rw(this, FUNC(dwarfd_state::dwarfd_ram_r), FUNC(dwarfd_state::dwarfd_ram_w));
+}
+
+void dwarfd_state::pokeresp_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rw(this, FUNC(dwarfd_state::dwarfd_ram_r), FUNC(dwarfd_state::dwarfd_ram_w));
+}
+
+void dwarfd_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+
+ map(0x20, 0x21).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0x40, 0x40).nopw(); // unknown
+ map(0x60, 0x60).w(this, FUNC(dwarfd_state::output1_w));
+ map(0x80, 0x80).w(this, FUNC(dwarfd_state::output2_w));
+ map(0xc0, 0xc0).portr("DSW1");
+ map(0xc1, 0xc1).portr("DSW2");
+}
+
+void dwarfd_state::qc_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).rw(this, FUNC(dwarfd_state::dwarfd_ram_r), FUNC(dwarfd_state::dwarfd_ram_w));
+}
+
+void dwarfd_state::qc_io_map(address_map &map)
+{
+ io_map(map);
+ map.global_mask(0xff);
+ map(0xb8, 0xb8).r(this, FUNC(dwarfd_state::qc_b8_r));
+}
static INPUT_PORTS_START( dwarfd )
PORT_START("DSW1")
diff --git a/src/mame/drivers/dynadice.cpp b/src/mame/drivers/dynadice.cpp
index 430db08e4ab..b99214dcbf9 100644
--- a/src/mame/drivers/dynadice.cpp
+++ b/src/mame/drivers/dynadice.cpp
@@ -113,33 +113,37 @@ WRITE8_MEMBER(dynadice_state::sound_control_w)
}
-ADDRESS_MAP_START(dynadice_state::dynadice_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(dynadice_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynadice_state::dynadice_io_map)
- AM_RANGE(0x50, 0x50) AM_READ_PORT("IN0")
- AM_RANGE(0x51, 0x51) AM_READ_PORT("IN1")
- AM_RANGE(0x52, 0x52) AM_READ_PORT("DSW")
- AM_RANGE(0x62, 0x62) AM_WRITENOP
- AM_RANGE(0x63, 0x63) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x70, 0x77) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynadice_state::dynadice_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynadice_state::dynadice_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(sound_control_w)
-ADDRESS_MAP_END
+void dynadice_state::dynadice_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram().w(this, FUNC(dynadice_state::dynadice_videoram_w)).share("videoram");
+ map(0x4000, 0x40ff).ram().share("nvram");
+}
+
+void dynadice_state::dynadice_io_map(address_map &map)
+{
+ map(0x50, 0x50).portr("IN0");
+ map(0x51, 0x51).portr("IN1");
+ map(0x52, 0x52).portr("DSW");
+ map(0x62, 0x62).nopw();
+ map(0x63, 0x63).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x70, 0x77).nopw();
+}
+
+void dynadice_state::dynadice_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x2000, 0x23ff).ram();
+}
+
+void dynadice_state::dynadice_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(dynadice_state::sound_data_w));
+ map(0x03, 0x03).w(this, FUNC(dynadice_state::sound_control_w));
+}
static INPUT_PORTS_START( dynadice )
PORT_START("IN0")
diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp
index 27d70abaf86..c9dd404b89d 100644
--- a/src/mame/drivers/dynax.cpp
+++ b/src/mame/drivers/dynax.cpp
@@ -368,174 +368,191 @@ MACHINE_RESET_MEMBER(dynax_state,adpcm)
m_msm->reset_w(1);
}
-ADDRESS_MAP_START(dynax_state::cdracula_mem_map)
- AM_RANGE( 0x0000, 0xbfff ) AM_ROM
- AM_RANGE( 0xc000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::sprtmtch_mem_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::hnoridur_mem_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::mcnpshnt_mem_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::nanajign_mem_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::mjdialq2_mem_map)
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0x0800, 0x0fff ) AM_RAM
- AM_RANGE( 0x1000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::yarunara_mem_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void dynax_state::cdracula_mem_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xffff).ram();
+}
+
+void dynax_state::sprtmtch_mem_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void dynax_state::hnoridur_mem_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
+
+void dynax_state::mcnpshnt_mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
+
+void dynax_state::nanajign_mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
+
+void dynax_state::mjdialq2_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x0800, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().share("nvram");
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void dynax_state::yarunara_mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
//identical to yarunara, but nvram is in the 0x6000 - 0x6fff range
-ADDRESS_MAP_START(dynax_state::quiztvqq_mem_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::jantouki_mem_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::jantouki_sound_mem_map)
- AM_RANGE( 0x0000, 0x77ff ) AM_ROM
- AM_RANGE( 0x7800, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(dynax_state::hnoridur_banked_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x80000, 0x800ff) AM_WRITE(hnoridur_palette_lo_w)
- AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(hnoridur_palette_hi_w)
- AM_RANGE(0xc0000, 0xc7fff) AM_RAM // hnoridur: R/W RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::mjelctrn_banked_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x80000, 0x800ff) AM_WRITE(nanajign_palette_lo_w)
- AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(nanajign_palette_hi_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::nanajign_banked_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x80000, 0x800ff) AM_WRITE(nanajign_palette_lo_w)
- AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(nanajign_palette_hi_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::yarunara_banked_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x80000, 0x801ff) AM_WRITE(tenkai_palette_w)
- AM_RANGE(0xe0000, 0xe000f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::mjangels_banked_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0x010000)
- AM_RANGE(0x080000, 0x0801ff) AM_WRITE(tenkai_palette_w)
- AM_RANGE(0x0a0000, 0x0bffff) AM_ROM AM_REGION("maincpu", 0x0b0000)
- AM_RANGE(0x0e0000, 0x0e000f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("maincpu", 0x110000)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(dynax_state::hanamai_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0x41, 0x47 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select hnkochou only
- AM_RANGE( 0x60, 0x60 ) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x61, 0x61 ) AM_READ(hanamai_keyboard_1_r) // P2
- AM_RANGE( 0x62, 0x62 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x63, 0x63 ) AM_READ(ret_ff) // ?
- AM_RANGE( 0x64, 0x64 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x65, 0x65 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select hanamai only
- AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x67, 0x67 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x68, 0x68 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable
- AM_RANGE( 0x69, 0x69 ) AM_WRITE(hanamai_priority_w) // layer priority
- AM_RANGE( 0x6a, 0x6a ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x6b, 0x6b ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x6c, 0x6c ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits)
- AM_RANGE( 0x6d, 0x6d ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x6e, 0x6e ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // 2 x DSW
- AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE("aysnd", ay8912_device, address_data_w) // AY8912
+void dynax_state::quiztvqq_mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram().share("nvram");
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
+
+void dynax_state::jantouki_mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void dynax_state::jantouki_sound_mem_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank2");
+}
+
+
+
+void dynax_state::hnoridur_banked_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom().region("maincpu", 0x10000);
+ map(0x80000, 0x800ff).w(this, FUNC(dynax_state::hnoridur_palette_lo_w));
+ map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::hnoridur_palette_hi_w));
+ map(0xc0000, 0xc7fff).ram(); // hnoridur: R/W RAM
+}
+
+void dynax_state::mjelctrn_banked_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom().region("maincpu", 0x10000);
+ map(0x80000, 0x800ff).w(this, FUNC(dynax_state::nanajign_palette_lo_w));
+ map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::nanajign_palette_hi_w));
+}
+
+void dynax_state::nanajign_banked_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom().region("maincpu", 0x10000);
+ map(0x80000, 0x800ff).w(this, FUNC(dynax_state::nanajign_palette_lo_w));
+ map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::nanajign_palette_hi_w));
+}
+
+void dynax_state::yarunara_banked_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom().region("maincpu", 0x10000);
+ map(0x80000, 0x801ff).w(this, FUNC(dynax_state::tenkai_palette_w));
+ map(0xe0000, 0xe000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
+
+void dynax_state::mjangels_banked_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0x010000);
+ map(0x080000, 0x0801ff).w(this, FUNC(dynax_state::tenkai_palette_w));
+ map(0x0a0000, 0x0bffff).rom().region("maincpu", 0x0b0000);
+ map(0x0e0000, 0x0e000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x100000, 0x13ffff).rom().region("maincpu", 0x110000);
+}
+
+
+
+void dynax_state::hanamai_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x20, 0x20).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
+ map(0x41, 0x47).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
+ map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select hnkochou only
+ map(0x60, 0x60).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x61, 0x61).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2
+ map(0x62, 0x62).portr("COINS"); // Coins
+ map(0x63, 0x63).r(this, FUNC(dynax_state::ret_ff)); // ?
+ map(0x64, 0x64).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x65, 0x65).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select hanamai only
+ map(0x66, 0x66).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x67, 0x67).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x68, 0x68).w(this, FUNC(dynax_state::dynax_layer_enable_w)); // Layers Enable
+ map(0x69, 0x69).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority
+ map(0x6a, 0x6a).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x6b, 0x6b).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x6c, 0x6c).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits)
+ map(0x6d, 0x6d).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x6e, 0x6e).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x70, 0x77).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x78, 0x79).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // 2 x DSW
+ map(0x7a, 0x7b).w("aysnd", FUNC(ay8912_device::address_data_w)); // AY8912
// AM_RANGE( 0x7c, 0x7c ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x7d, 0x7d ) AM_WRITENOP //
- AM_RANGE( 0x7e, 0x7e ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank
-ADDRESS_MAP_END
+ map(0x7e, 0x7e).w(this, FUNC(dynax_state::dynax_blit_romregion_w)); // Blitter ROM bank
+}
-ADDRESS_MAP_START(dynax_state::hnoridur_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
+void dynax_state::hnoridur_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
// AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x22, 0x22 ) AM_READ(hanamai_keyboard_1_r) // P2
- AM_RANGE( 0x23, 0x23 ) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW1") // DSW2
- AM_RANGE( 0x25, 0x25 ) AM_READ_PORT("DSW3") // DSW4
- AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW2") // DSW3
- AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, DSW0
- AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912
- AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
- AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable
- AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x46, 0x46 ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w)
- AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select
- AM_RANGE( 0x55, 0x55 ) AM_WRITENOP // ? VBlank IRQ Ack
- AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // ?
- AM_RANGE( 0x60, 0x67 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("outlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+ map(0x20, 0x20).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x21, 0x21).portr("COINS"); // Coins
+ map(0x22, 0x22).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2
+ map(0x23, 0x23).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x24, 0x24).portr("DSW1"); // DSW2
+ map(0x25, 0x25).portr("DSW3"); // DSW4
+ map(0x26, 0x26).portr("DSW2"); // DSW3
+ map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x32, 0x32).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x34, 0x35).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x36, 0x36).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912, DSW0
+ map(0x38, 0x38).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912
+ map(0x3a, 0x3a).w("aysnd", FUNC(ay8912_device::address_w)); //
+ map(0x40, 0x40).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x41, 0x41).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x42, 0x42).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0x43, 0x43).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x44, 0x44).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable
+ map(0x45, 0x45).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x46, 0x46).w(this, FUNC(dynax_state::dynax_blit_romregion_w)); // Blitter ROM bank
+ map(0x47, 0x47).w(this, FUNC(dynax_state::hnoridur_palbank_w));
+ map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x51, 0x51).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
+ map(0x54, 0x54).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select
+ map(0x55, 0x55).nopw(); // ? VBlank IRQ Ack
+ map(0x56, 0x56).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x57, 0x57).r(this, FUNC(dynax_state::ret_ff)); // ?
+ map(0x60, 0x67).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x70, 0x77).w("outlatch", FUNC(ls259_device::write_d0));
+}
/***************************************************************************
Hana Jingi
@@ -566,65 +583,68 @@ READ8_MEMBER(dynax_state::hjingi_keyboard_1_r)
return hanamai_keyboard_1_r(space, 0) | ioport("BET")->read();
}
-ADDRESS_MAP_START(dynax_state::hjingi_mem_map)
- AM_RANGE( 0x0000, 0x01ff ) AM_ROM
- AM_RANGE( 0x0200, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void dynax_state::hjingi_mem_map(address_map &map)
+{
+ map(0x0000, 0x01ff).rom();
+ map(0x0200, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x7fff).rom();
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xffff).bankr("bank1");
+}
-ADDRESS_MAP_START(dynax_state::hjingi_banked_map)
- AM_RANGE(0x80000, 0x800ff) AM_WRITE(hnoridur_palette_lo_w)
- AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(hnoridur_palette_hi_w)
-ADDRESS_MAP_END
+void dynax_state::hjingi_banked_map(address_map &map)
+{
+ map(0x80000, 0x800ff).w(this, FUNC(dynax_state::hnoridur_palette_lo_w));
+ map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::hnoridur_palette_hi_w));
+}
-ADDRESS_MAP_START(dynax_state::hjingi_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
+void dynax_state::hjingi_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
// AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x22, 0x22 ) AM_READ(hjingi_keyboard_1_r) // P2 + Hopper
- AM_RANGE( 0x23, 0x23 ) AM_READ(hjingi_keyboard_0_r) // P1 + Hopper
- AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW1") // DSW1
- AM_RANGE( 0x25, 0x25 ) AM_READ_PORT("DSW3") // DSW3
- AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW2") // DSW2
+ map(0x20, 0x20).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x21, 0x21).portr("COINS"); // Coins
+ map(0x22, 0x22).r(this, FUNC(dynax_state::hjingi_keyboard_1_r)); // P2 + Hopper
+ map(0x23, 0x23).r(this, FUNC(dynax_state::hjingi_keyboard_0_r)); // P1 + Hopper
+ map(0x24, 0x24).portr("DSW1"); // DSW1
+ map(0x25, 0x25).portr("DSW3"); // DSW3
+ map(0x26, 0x26).portr("DSW2"); // DSW2
- AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
+ map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x32, 0x32).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x34, 0x35).w("ym2413", FUNC(ym2413_device::write)); //
- AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, DSW0
- AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912
- AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
+ map(0x36, 0x36).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912, DSW0
+ map(0x38, 0x38).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912
+ map(0x3a, 0x3a).w("aysnd", FUNC(ay8912_device::address_w)); //
- AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable
- AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x46, 0x46 ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w)
+ map(0x40, 0x40).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x41, 0x41).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x42, 0x42).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0x43, 0x43).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x44, 0x44).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable
+ map(0x45, 0x45).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x46, 0x46).w(this, FUNC(dynax_state::dynax_blit_romregion_w)); // Blitter ROM bank
+ map(0x47, 0x47).w(this, FUNC(dynax_state::hnoridur_palbank_w));
- AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
+ map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x51, 0x51).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
- AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // palette bank select
+ map(0x54, 0x54).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // palette bank select
- AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // Blitter Busy
+ map(0x56, 0x56).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x57, 0x57).r(this, FUNC(dynax_state::ret_ff)); // Blitter Busy
- AM_RANGE( 0x60, 0x67 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // Flip screen, layer half select, etc.
+ map(0x60, 0x67).w(m_mainlatch, FUNC(ls259_device::write_d0)); // Flip screen, layer half select, etc.
- AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("outlatch", ls259_device, write_d0) // Coin Counters, Hopper, Coin Lockout
+ map(0x70, 0x77).w("outlatch", FUNC(ls259_device::write_d0)); // Coin Counters, Hopper, Coin Lockout
- AM_RANGE( 0x80, 0x80 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select
-ADDRESS_MAP_END
+ map(0x80, 0x80).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select
+}
/***************************************************************************
@@ -706,143 +726,148 @@ WRITE8_MEMBER(dynax_state::yarunara_blit_romregion_w)
logerror("%s: unmapped romregion=%02X\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(dynax_state::yarunara_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x01 ) AM_WRITE(yarunara_input_w) // Controls
- AM_RANGE( 0x02, 0x03 ) AM_READ(yarunara_input_r) //
- AM_RANGE( 0x11, 0x17 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x22, 0x22 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912
- AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
- AM_RANGE( 0x48, 0x48 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x49, 0x49 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0x4a, 0x4a ) AM_WRITE(yarunara_rombank_w) // BANK ROM Select
- AM_RANGE( 0x4b, 0x4b ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT("DSW0") // DSW 1
- AM_RANGE( 0x4f, 0x4f ) AM_READ_PORT("DSW1") // DSW 2
- AM_RANGE( 0x50, 0x57 ) AM_DEVWRITE("mainlatch", ls259_device, write_d1)
- AM_RANGE( 0x68, 0x68 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x69, 0x69 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x6a, 0x6a ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0x6b, 0x6b ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x6c, 0x6c ) AM_WRITE(hanamai_priority_w) // layer priority and enable
- AM_RANGE( 0x6d, 0x6d ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x6e, 0x6e ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank
-ADDRESS_MAP_END
+void dynax_state::yarunara_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(dynax_state::yarunara_input_w)); // Controls
+ map(0x02, 0x03).r(this, FUNC(dynax_state::yarunara_input_r)); //
+ map(0x11, 0x17).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
+ map(0x20, 0x20).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x22, 0x22).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x24, 0x25).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x28, 0x28).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912
+ map(0x2a, 0x2a).w("aysnd", FUNC(ay8912_device::address_w)); //
+ map(0x48, 0x48).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x49, 0x49).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
+ map(0x4a, 0x4a).w(this, FUNC(dynax_state::yarunara_rombank_w)); // BANK ROM Select
+ map(0x4b, 0x4b).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x4c, 0x4c).portr("DSW0"); // DSW 1
+ map(0x4f, 0x4f).portr("DSW1"); // DSW 2
+ map(0x50, 0x57).w(m_mainlatch, FUNC(ls259_device::write_d1));
+ map(0x68, 0x68).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x69, 0x69).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x6a, 0x6a).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0x6b, 0x6b).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x6c, 0x6c).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable
+ map(0x6d, 0x6d).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x6e, 0x6e).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank
+}
// Almost identical to hnoridur
-ADDRESS_MAP_START(dynax_state::mcnpshnt_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
+void dynax_state::mcnpshnt_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
// AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x22, 0x22 ) AM_READ(hanamai_keyboard_1_r) // P2
- AM_RANGE( 0x23, 0x23 ) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW0") // DSW2
- AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW1") // DSW3
- AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912
- AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
- AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable
- AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x46, 0x46 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w)
- AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select
- AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // ?
- AM_RANGE( 0x60, 0x67 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("outlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dynax_state::sprtmtch_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x10, 0x11 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // 2 x DSW
+ map(0x20, 0x20).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x21, 0x21).portr("COINS"); // Coins
+ map(0x22, 0x22).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2
+ map(0x23, 0x23).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x24, 0x24).portr("DSW0"); // DSW2
+ map(0x26, 0x26).portr("DSW1"); // DSW3
+ map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x32, 0x32).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x34, 0x35).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x38, 0x38).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912
+ map(0x3a, 0x3a).w("aysnd", FUNC(ay8912_device::address_w)); //
+ map(0x40, 0x40).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x41, 0x41).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x42, 0x42).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0x43, 0x43).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x44, 0x44).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable
+ map(0x45, 0x45).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x46, 0x46).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank
+ map(0x47, 0x47).w(this, FUNC(dynax_state::hnoridur_palbank_w));
+ map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x51, 0x51).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
+ map(0x54, 0x54).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select
+ map(0x56, 0x56).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x57, 0x57).r(this, FUNC(dynax_state::ret_ff)); // ?
+ map(0x60, 0x67).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x70, 0x77).w("outlatch", FUNC(ls259_device::write_d0));
+}
+
+
+void dynax_state::sprtmtch_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
+ map(0x10, 0x11).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // 2 x DSW
// AM_RANGE( 0x12, 0x12 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x13, 0x13 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x20, 0x20 ) AM_READ_PORT("P1") // P1
- AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("P2") // P2
- AM_RANGE( 0x22, 0x22 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x23, 0x23 ) AM_READ(ret_ff) // ?
- AM_RANGE( 0x30, 0x30 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable
- AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select
- AM_RANGE( 0x32, 0x32 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x33, 0x33 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x34, 0x34 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits)
- AM_RANGE( 0x35, 0x35 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x36, 0x36 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x37, 0x37 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x40, 0x47 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(dynax_state::mjfriday_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x01, 0x01 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits)
- AM_RANGE( 0x02, 0x02 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select
- AM_RANGE( 0x03, 0x03 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x10, 0x17 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x41, 0x47 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
+ map(0x20, 0x20).portr("P1"); // P1
+ map(0x21, 0x21).portr("P2"); // P2
+ map(0x22, 0x22).portr("COINS"); // Coins
+ map(0x23, 0x23).r(this, FUNC(dynax_state::ret_ff)); // ?
+ map(0x30, 0x30).w(this, FUNC(dynax_state::dynax_layer_enable_w)); // Layers Enable
+ map(0x31, 0x31).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select
+ map(0x32, 0x32).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x33, 0x33).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x34, 0x34).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits)
+ map(0x35, 0x35).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x36, 0x36).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x37, 0x37).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x40, 0x47).w(m_mainlatch, FUNC(ls259_device::write_d0));
+}
+
+
+
+void dynax_state::mjfriday_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x01, 0x01).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits)
+ map(0x02, 0x02).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select
+ map(0x03, 0x03).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x10, 0x17).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x41, 0x47).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
// AM_RANGE( 0x50, 0x50 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x51, 0x51 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x60, 0x60 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x61, 0x61 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x62, 0x62 ) AM_READ(hanamai_keyboard_1_r) // P2
- AM_RANGE( 0x63, 0x63 ) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x64, 0x64 ) AM_READ_PORT("DSW0") // DSW
- AM_RANGE( 0x67, 0x67 ) AM_READ_PORT("DSW1") // DSW
- AM_RANGE( 0x70, 0x71 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
+ map(0x60, 0x60).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x61, 0x61).portr("COINS"); // Coins
+ map(0x62, 0x62).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2
+ map(0x63, 0x63).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x64, 0x64).portr("DSW0"); // DSW
+ map(0x67, 0x67).portr("DSW1"); // DSW
+ map(0x70, 0x71).w("ym2413", FUNC(ym2413_device::write)); //
// AM_RANGE( 0x80, 0x80 ) AM_WRITENOP // IRQ ack?
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dynax_state::nanajign_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x02, 0x02 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912
- AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
- AM_RANGE( 0x10, 0x10 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x12, 0x12 ) AM_READ(hanamai_keyboard_1_r) // P2
- AM_RANGE( 0x13, 0x13 ) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x14, 0x14 ) AM_READ_PORT("DSW0") // DSW1
- AM_RANGE( 0x15, 0x15 ) AM_READ_PORT("DSW1") // DSW2
- AM_RANGE( 0x16, 0x16 ) AM_READ_PORT("DSW2") // DSW3
+}
+
+
+void dynax_state::nanajign_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x02, 0x02).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x04, 0x05).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x08, 0x08).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912
+ map(0x0a, 0x0a).w("aysnd", FUNC(ay8912_device::address_w)); //
+ map(0x10, 0x10).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x11, 0x11).portr("COINS"); // Coins
+ map(0x12, 0x12).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2
+ map(0x13, 0x13).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x14, 0x14).portr("DSW0"); // DSW1
+ map(0x15, 0x15).portr("DSW1"); // DSW2
+ map(0x16, 0x16).portr("DSW2"); // DSW3
// AM_RANGE( 0x20, 0x21 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x31, 0x37 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x40, 0x47 ) AM_DEVWRITE("outlatch", ls259_device, write_d0) // Coin Counter
- AM_RANGE( 0x50, 0x57 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0x6a, 0x6a ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select
- AM_RANGE( 0x6c, 0x6c ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x70, 0x70 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x72, 0x72 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0x73, 0x73 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x74, 0x74 ) AM_WRITE(hanamai_priority_w) // layer priority and enable
- AM_RANGE( 0x75, 0x75 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x76, 0x76 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0x77, 0x77 ) AM_WRITE(hnoridur_palbank_w)
-ADDRESS_MAP_END
+ map(0x31, 0x37).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
+ map(0x40, 0x47).w("outlatch", FUNC(ls259_device::write_d0)); // Coin Counter
+ map(0x50, 0x57).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x60, 0x60).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x62, 0x62).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
+ map(0x6a, 0x6a).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select
+ map(0x6c, 0x6c).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x70, 0x70).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x71, 0x71).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x72, 0x72).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0x73, 0x73).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x74, 0x74).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable
+ map(0x75, 0x75).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x76, 0x76).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank
+ map(0x77, 0x77).w(this, FUNC(dynax_state::hnoridur_palbank_w));
+}
/***************************************************************************
@@ -866,34 +891,35 @@ WRITE8_MEMBER(dynax_state::jantouki_rombank_w)
output().set_led_value(0, data & 0x10); // maybe
}
-ADDRESS_MAP_START(dynax_state::jantouki_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void dynax_state::jantouki_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE( 0x40, 0x41 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x48, 0x48 ) AM_WRITE(jantouki_rombank_w) // BANK ROM Select
- AM_RANGE( 0x49, 0x49 ) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE( 0x4a, 0x4a ) AM_READ(jantouki_soundlatch_ack_r) // Soundlatch status
- AM_RANGE( 0x4b, 0x4b ) AM_WRITE(dynax_blit2_dest_w) // Destination Layer 2
- AM_RANGE( 0x4d, 0x4d ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0x4f, 0x4f ) AM_WRITE(dynax_blit2_romregion_w) // Blitter 2 ROM bank
- AM_RANGE( 0x50, 0x50 ) AM_WRITE(jantouki_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x51, 0x51 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x52, 0x52 ) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x54, 0x54 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x55, 0x55 ) AM_READ_PORT("DSW0") // DSW1
- AM_RANGE( 0x56, 0x56 ) AM_READ_PORT("DSW1") // DSW2
- AM_RANGE( 0x58, 0x5f ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_blit_palette67_w) // Layers Palettes (Low Bits)
- AM_RANGE( 0x61, 0x61 ) AM_WRITE(dynax_blit_palette45_w) //
- AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x63, 0x63 ) AM_WRITE(dynax_blit_palette01_w) //
- AM_RANGE( 0x64, 0x64 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x65, 0x65 ) AM_WRITE(dynax_blit2_pen_w) // Destination Pen 2
- AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x67, 0x67 ) AM_READ(jantouki_blitter_busy_r) //
- AM_RANGE( 0x69, 0x6f ) AM_WRITE(jantouki_blitter2_rev2_w) // Blitter 2
- AM_RANGE( 0x71, 0x77 ) AM_WRITE(jantouki_blitter_rev2_w) // Blitter
- AM_RANGE( 0x78, 0x7e ) AM_WRITE(jantouki_layer_enable_w) // Layers Enable
-ADDRESS_MAP_END
+ map(0x48, 0x48).w(this, FUNC(dynax_state::jantouki_rombank_w)); // BANK ROM Select
+ map(0x49, 0x49).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0x4a, 0x4a).r(this, FUNC(dynax_state::jantouki_soundlatch_ack_r)); // Soundlatch status
+ map(0x4b, 0x4b).w(this, FUNC(dynax_state::dynax_blit2_dest_w)); // Destination Layer 2
+ map(0x4d, 0x4d).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0x4f, 0x4f).w(this, FUNC(dynax_state::dynax_blit2_romregion_w)); // Blitter 2 ROM bank
+ map(0x50, 0x50).w(this, FUNC(dynax_state::jantouki_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x51, 0x51).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x52, 0x52).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x54, 0x54).portr("COINS"); // Coins
+ map(0x55, 0x55).portr("DSW0"); // DSW1
+ map(0x56, 0x56).portr("DSW1"); // DSW2
+ map(0x58, 0x5f).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x60, 0x60).w(this, FUNC(dynax_state::dynax_blit_palette67_w)); // Layers Palettes (Low Bits)
+ map(0x61, 0x61).w(this, FUNC(dynax_state::dynax_blit_palette45_w)); //
+ map(0x62, 0x62).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x63, 0x63).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); //
+ map(0x64, 0x64).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x65, 0x65).w(this, FUNC(dynax_state::dynax_blit2_pen_w)); // Destination Pen 2
+ map(0x66, 0x66).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x67, 0x67).r(this, FUNC(dynax_state::jantouki_blitter_busy_r)); //
+ map(0x69, 0x6f).w(this, FUNC(dynax_state::jantouki_blitter2_rev2_w)); // Blitter 2
+ map(0x71, 0x77).w(this, FUNC(dynax_state::jantouki_blitter_rev2_w)); // Blitter
+ map(0x78, 0x7e).w(this, FUNC(dynax_state::jantouki_layer_enable_w)); // Layers Enable
+}
/***************************************************************************
Jantouki - Sound CPU
@@ -904,19 +930,20 @@ READ8_MEMBER(dynax_state::jantouki_soundlatch_status_r)
return m_soundlatch->pending_r() ? 0 : 0x80;
}
-ADDRESS_MAP_START(dynax_state::jantouki_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_WRITE(jantouki_sound_rombank_w) // BANK ROM Select
- AM_RANGE( 0x10, 0x10 ) AM_WRITE(jantouki_sound_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x21, 0x21 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912
- AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE("aysnd", ay8912_device, data_address_w) //
- AM_RANGE( 0x28, 0x29 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) //
- AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x40, 0x40 ) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x50, 0x50 ) AM_READ(jantouki_soundlatch_status_r) // Soundlatch status
- AM_RANGE( 0x60, 0x60 ) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE( 0x70, 0x70 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void dynax_state::jantouki_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(dynax_state::jantouki_sound_rombank_w)); // BANK ROM Select
+ map(0x10, 0x10).w(this, FUNC(dynax_state::jantouki_sound_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x21, 0x21).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912
+ map(0x22, 0x23).w("aysnd", FUNC(ay8912_device::data_address_w)); //
+ map(0x28, 0x29).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); //
+ map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x40, 0x40).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x50, 0x50).r(this, FUNC(dynax_state::jantouki_soundlatch_status_r)); // Soundlatch status
+ map(0x60, 0x60).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x70, 0x70).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+}
@@ -937,64 +964,66 @@ READ8_MEMBER(dynax_state::mjelctrn_dsw_r)
return ioport(dswnames[dsw])->read();
}
-ADDRESS_MAP_START(dynax_state::mjelctrn_io_map)
+void dynax_state::mjelctrn_io_map(address_map &map)
+{
//ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_MIRROR(0xff00) AM_WRITE(adpcm_reset_w) // MSM5205 reset
- AM_RANGE( 0x02, 0x02 ) AM_MIRROR(0xff00) AM_WRITE(adpcm_data_w) // MSM5205 data
- AM_RANGE( 0x04, 0x05 ) AM_MIRROR(0xff00) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x08, 0x08 ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912
- AM_RANGE( 0x0a, 0x0a ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
+ map(0x00, 0x00).mirror(0xff00).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset
+ map(0x02, 0x02).mirror(0xff00).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data
+ map(0x04, 0x05).mirror(0xff00).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x08, 0x08).mirror(0xff00).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912
+ map(0x0a, 0x0a).mirror(0xff00).w("aysnd", FUNC(ay8912_device::address_w)); //
// AM_RANGE( 0x20, 0x20 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x21, 0x21 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x40, 0x47 ) AM_MIRROR(0xff00) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE( 0x60, 0x60 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0x62, 0x62 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
+ map(0x40, 0x47).mirror(0xff00).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0x60, 0x60).mirror(0xff00).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X
+ map(0x62, 0x62).mirror(0xff00).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y
// AM_RANGE( 0x64, 0x64 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
// AM_RANGE( 0x66, 0x66 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0x6a, 0x6a ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select
- AM_RANGE( 0x80, 0x80 ) AM_MIRROR(0xff00) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x81, 0x81 ) AM_MIRROR(0xff00) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x82, 0x82 ) AM_MIRROR(0xff00) AM_READ(mjelctrn_keyboard_1_r) // P2
- AM_RANGE( 0x83, 0x83 ) AM_MIRROR(0xff00) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x84, 0x84 ) AM_MIRROR(0xff00) AM_READ(mjelctrn_dsw_r) // DSW8 x 4
- AM_RANGE( 0x85, 0x85 ) AM_MIRROR(0xff00) AM_READ_PORT("SW1") // DSW2
- AM_RANGE( 0xa1, 0xa7 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0xc0, 0xc7 ) AM_MIRROR(0xff00) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0xe0, 0xe0 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0xe1, 0xe1 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0xe2, 0xe2 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0xe3, 0xe3 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0xe4, 0xe4 ) AM_MIRROR(0xff00) AM_WRITE(hanamai_priority_w) // layer priority and enable
- AM_RANGE( 0xe5, 0xe5 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0xe6, 0xe6 ) AM_MIRROR(0xff00) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0xe7, 0xe7 ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_palbank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::mjembase_io_map)
+ map(0x6a, 0x6a).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select
+ map(0x80, 0x80).mirror(0xff00).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x81, 0x81).mirror(0xff00).portr("COINS"); // Coins
+ map(0x82, 0x82).mirror(0xff00).r(this, FUNC(dynax_state::mjelctrn_keyboard_1_r)); // P2
+ map(0x83, 0x83).mirror(0xff00).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x84, 0x84).mirror(0xff00).r(this, FUNC(dynax_state::mjelctrn_dsw_r)); // DSW8 x 4
+ map(0x85, 0x85).mirror(0xff00).portr("SW1"); // DSW2
+ map(0xa1, 0xa7).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
+ map(0xc0, 0xc7).mirror(0xff00).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xe0, 0xe0).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0xe1, 0xe1).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer
+ map(0xe2, 0xe2).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0xe3, 0xe3).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0xe4, 0xe4).mirror(0xff00).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable
+ map(0xe5, 0xe5).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0xe6, 0xe6).mirror(0xff00).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank
+ map(0xe7, 0xe7).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_palbank_w));
+}
+
+void dynax_state::mjembase_io_map(address_map &map)
+{
//ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x04, 0x05 ) AM_MIRROR(0xff00) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x06, 0x06 ) AM_MIRROR(0xff00) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, dsw0
- AM_RANGE( 0x08, 0x08 ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, data_w) //
- AM_RANGE( 0x0a, 0x0a ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, address_w) //
- AM_RANGE( 0x20, 0x20 ) AM_MIRROR(0xff00) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x21, 0x21 ) AM_MIRROR(0xff00) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x22, 0x22 ) AM_MIRROR(0xff00) AM_READ(mjelctrn_keyboard_1_r) // P2
- AM_RANGE( 0x23, 0x23 ) AM_MIRROR(0xff00) AM_READ(hanamai_keyboard_0_r) // P1
- AM_RANGE( 0x24, 0x24 ) AM_MIRROR(0xff00) AM_READ_PORT("DSW3")
+ map(0x04, 0x05).mirror(0xff00).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x06, 0x06).mirror(0xff00).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912, dsw0
+ map(0x08, 0x08).mirror(0xff00).w("aysnd", FUNC(ay8912_device::data_w)); //
+ map(0x0a, 0x0a).mirror(0xff00).w("aysnd", FUNC(ay8912_device::address_w)); //
+ map(0x20, 0x20).mirror(0xff00).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x21, 0x21).mirror(0xff00).portr("COINS"); // Coins
+ map(0x22, 0x22).mirror(0xff00).r(this, FUNC(dynax_state::mjelctrn_keyboard_1_r)); // P2
+ map(0x23, 0x23).mirror(0xff00).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1
+ map(0x24, 0x24).mirror(0xff00).portr("DSW3");
// AM_RANGE( 0x40, 0x40 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x41, 0x41 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x61, 0x67 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x80, 0x87 ) AM_MIRROR(0xff00) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0xa0, 0xa0 ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select
- AM_RANGE( 0xc0, 0xc0 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0xc1, 0xc1 ) AM_MIRROR(0xff00) AM_WRITE(mjembase_blit_dest_w) // Destination Layer
- AM_RANGE( 0xc2, 0xc2 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes
- AM_RANGE( 0xc3, 0xc3 ) AM_MIRROR(0xff00) AM_WRITE(mjembase_blit_palette23_w) //
- AM_RANGE( 0xc4, 0xc4 ) AM_MIRROR(0xff00) AM_WRITE(mjembase_priority_w) // layer priority and enable
- AM_RANGE( 0xc5, 0xc5 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0xc6, 0xc6 ) AM_MIRROR(0xff00) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0xc7, 0xc7 ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_palbank_w)
-ADDRESS_MAP_END
+ map(0x61, 0x67).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
+ map(0x80, 0x87).mirror(0xff00).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa0, 0xa0).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select
+ map(0xc0, 0xc0).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0xc1, 0xc1).mirror(0xff00).w(this, FUNC(dynax_state::mjembase_blit_dest_w)); // Destination Layer
+ map(0xc2, 0xc2).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes
+ map(0xc3, 0xc3).mirror(0xff00).w(this, FUNC(dynax_state::mjembase_blit_palette23_w)); //
+ map(0xc4, 0xc4).mirror(0xff00).w(this, FUNC(dynax_state::mjembase_priority_w)); // layer priority and enable
+ map(0xc5, 0xc5).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0xc6, 0xc6).mirror(0xff00).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank
+ map(0xc7, 0xc7).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_palbank_w));
+}
/***************************************************************************
@@ -1202,33 +1231,38 @@ WRITE8_MEMBER(dynax_state::tenkai_blit_romregion_w)
logerror("%04x: unmapped romregion=%02X\n", m_maincpu->pc(), data);
}
-ADDRESS_MAP_START(dynax_state::tenkai_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
- AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // AY8910
- AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) //
- AM_RANGE( 0x10010, 0x10010 ) AM_DEVWRITE("aysnd", ay8910_device, address_w) //
- AM_RANGE( 0x10020, 0x10021 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x10040, 0x10040 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x10044, 0x10044 ) AM_WRITE(tenkai_blit_dest_w) // Destination Layer
- AM_RANGE( 0x10048, 0x10048 ) AM_WRITE(tenkai_blit_palette23_w) // Layers Palettes
- AM_RANGE( 0x1004c, 0x1004c ) AM_WRITE(tenkai_blit_palette01_w) //
- AM_RANGE( 0x10050, 0x10050 ) AM_WRITE(tenkai_priority_w) // layer priority and enable
- AM_RANGE( 0x10054, 0x10054 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x10058, 0x10058 ) AM_WRITE(tenkai_blit_romregion_w) // Blitter ROM bank
- ;map(0x10060, 0x1007f).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d1(space, offset >> 2, data, mem_mask); });
- AM_RANGE( 0x100c0, 0x100c0 ) AM_WRITE(tenkai_ipsel_w)
- AM_RANGE( 0x100c1, 0x100c1 ) AM_WRITE(tenkai_ip_w)
- AM_RANGE( 0x100c2, 0x100c3 ) AM_READ(tenkai_ip_r)
- AM_RANGE( 0x100e1, 0x100e7 ) AM_WRITE(tenkai_blitter_rev2_w) // Blitter (inverted scroll values)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::tenkai_banked_map)
- AM_RANGE( 0x00000, 0x3ffff ) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE( 0x80000, 0x8000f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0x90000, 0x97fff ) AM_READWRITE(tenkai_palette_r, tenkai_palette_w)
-ADDRESS_MAP_END
+void dynax_state::tenkai_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+ map(0x10000, 0x10000).r("aysnd", FUNC(ay8910_device::data_r)); // AY8910
+ map(0x10008, 0x10008).w("aysnd", FUNC(ay8910_device::data_w)); //
+ map(0x10010, 0x10010).w("aysnd", FUNC(ay8910_device::address_w)); //
+ map(0x10020, 0x10021).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x10040, 0x10040).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x10044, 0x10044).w(this, FUNC(dynax_state::tenkai_blit_dest_w)); // Destination Layer
+ map(0x10048, 0x10048).w(this, FUNC(dynax_state::tenkai_blit_palette23_w)); // Layers Palettes
+ map(0x1004c, 0x1004c).w(this, FUNC(dynax_state::tenkai_blit_palette01_w)); //
+ map(0x10050, 0x10050).w(this, FUNC(dynax_state::tenkai_priority_w)); // layer priority and enable
+ map(0x10054, 0x10054).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x10058, 0x10058).w(this, FUNC(dynax_state::tenkai_blit_romregion_w)); // Blitter ROM bank
+ map(0x10060, 0x1007f).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_mainlatch->write_d1(space, offset >> 2, data, mem_mask);
+ });
+ map(0x100c0, 0x100c0).w(this, FUNC(dynax_state::tenkai_ipsel_w));
+ map(0x100c1, 0x100c1).w(this, FUNC(dynax_state::tenkai_ip_w));
+ map(0x100c2, 0x100c3).r(this, FUNC(dynax_state::tenkai_ip_r));
+ map(0x100e1, 0x100e7).w(this, FUNC(dynax_state::tenkai_blitter_rev2_w)); // Blitter (inverted scroll values)
+}
+
+void dynax_state::tenkai_banked_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom().region("maincpu", 0x10000);
+ map(0x80000, 0x8000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x90000, 0x97fff).rw(this, FUNC(dynax_state::tenkai_palette_r), FUNC(dynax_state::tenkai_palette_w));
+}
/***************************************************************************
Mahjong Gekisha
@@ -1276,34 +1310,36 @@ WRITE8_MEMBER(dynax_state::gekisha_p4_w)
}
-ADDRESS_MAP_START(dynax_state::gekisha_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynax_state::gekisha_banked_map)
- AM_RANGE( 0x00000, 0x0ffff ) AM_ROM AM_REGION("maincpu", 0x8000)
- AM_RANGE( 0x10000, 0x10000 ) AM_WRITENOP // ? 0
- AM_RANGE( 0x10001, 0x10001 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits)
- AM_RANGE( 0x10002, 0x10002 ) AM_WRITENOP // ? 1
- AM_RANGE( 0x10003, 0x10003 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x10010, 0x10017 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x10020, 0x10021 ) AM_WRITE(gekisha_hopper_w)
- AM_RANGE( 0x10041, 0x10047 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
+void dynax_state::gekisha_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
+
+void dynax_state::gekisha_banked_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom().region("maincpu", 0x8000);
+ map(0x10000, 0x10000).nopw(); // ? 0
+ map(0x10001, 0x10001).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits)
+ map(0x10002, 0x10002).nopw(); // ? 1
+ map(0x10003, 0x10003).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x10010, 0x10017).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x10020, 0x10021).w(this, FUNC(dynax_state::gekisha_hopper_w));
+ map(0x10041, 0x10047).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter
// AM_RANGE( 0x10050, 0x10050 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x10051, 0x10051 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x10060, 0x10060 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select
- AM_RANGE( 0x10061, 0x10061 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x10062, 0x10062 ) AM_READ(gekisha_keyboard_1_r) // P2
- AM_RANGE( 0x10063, 0x10063 ) AM_READ(gekisha_keyboard_0_r) // P1
- AM_RANGE( 0x10064, 0x10064 ) AM_READ_PORT("DSW1") // DSW
- AM_RANGE( 0x10065, 0x10065 ) AM_READ_PORT("DSW3") // DSW
- AM_RANGE( 0x10066, 0x10066 ) AM_READ_PORT("DSW4") // DSW
- AM_RANGE( 0x10067, 0x10067 ) AM_READ_PORT("DSW2") // DSW
- AM_RANGE( 0x10070, 0x10071 ) AM_DEVWRITE("ym2413", ym2413_device, write) //
- AM_RANGE( 0x10080, 0x10080 ) AM_WRITENOP // ? 0,1,6 (bit 0 = screen disable?)
-ADDRESS_MAP_END
+ map(0x10060, 0x10060).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select
+ map(0x10061, 0x10061).portr("COINS"); // Coins
+ map(0x10062, 0x10062).r(this, FUNC(dynax_state::gekisha_keyboard_1_r)); // P2
+ map(0x10063, 0x10063).r(this, FUNC(dynax_state::gekisha_keyboard_0_r)); // P1
+ map(0x10064, 0x10064).portr("DSW1"); // DSW
+ map(0x10065, 0x10065).portr("DSW3"); // DSW
+ map(0x10066, 0x10066).portr("DSW4"); // DSW
+ map(0x10067, 0x10067).portr("DSW2"); // DSW
+ map(0x10070, 0x10071).w("ym2413", FUNC(ym2413_device::write)); //
+ map(0x10080, 0x10080).nopw(); // ? 0,1,6 (bit 0 = screen disable?)
+}
/***************************************************************************
@@ -1321,29 +1357,30 @@ WRITE8_MEMBER(dynax_state::cdracula_sound_rombank_w)
logerror("%s: warning, invalid sound bank = %02x\n", machine().describe_context(), data);
}
-ADDRESS_MAP_START(dynax_state::cdracula_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(cdracula_blitter_rev2_w) // Blitter + Destination Layers
- AM_RANGE( 0x10, 0x10 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE( 0x11, 0x11 ) AM_NOP // unpopulated oki
+void dynax_state::cdracula_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x07).w(this, FUNC(dynax_state::cdracula_blitter_rev2_w)); // Blitter + Destination Layers
+ map(0x10, 0x10).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x11, 0x11).noprw(); // unpopulated oki
// AM_RANGE( 0x12, 0x12 ) AM_WRITENOP // CRT Controller
// AM_RANGE( 0x13, 0x13 ) AM_WRITENOP // CRT Controller
- AM_RANGE( 0x20, 0x20 ) AM_READ_PORT("P1") // P1
- AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("P2") // P2
- AM_RANGE( 0x22, 0x22 ) AM_READ_PORT("COINS") // Coins
- AM_RANGE( 0x30, 0x30 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable
+ map(0x20, 0x20).portr("P1"); // P1
+ map(0x21, 0x21).portr("P2"); // P2
+ map(0x22, 0x22).portr("COINS"); // Coins
+ map(0x30, 0x30).w(this, FUNC(dynax_state::dynax_layer_enable_w)); // Layers Enable
// AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select
- AM_RANGE( 0x32, 0x32 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0x33, 0x33 ) AM_WRITE(dynax_blit_flags_w) // Flags + Do Blit
- AM_RANGE( 0x34, 0x34 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits)
- AM_RANGE( 0x35, 0x35 ) AM_WRITE(dynax_blit_palette23_w) //
- AM_RANGE( 0x36, 0x36 ) AM_WRITE(dynax_blit_backpen_w) // Background Color
- AM_RANGE( 0x37, 0x37 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0x40, 0x47 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE( 0x60, 0x60 ) AM_READ_PORT("DSW2")
- AM_RANGE( 0x61, 0x61 ) AM_READ_PORT("DSW1")
- AM_RANGE( 0x6b, 0x6b ) AM_WRITE(cdracula_sound_rombank_w) // OKI Bank
-ADDRESS_MAP_END
+ map(0x32, 0x32).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen
+ map(0x33, 0x33).w(this, FUNC(dynax_state::dynax_blit_flags_w)); // Flags + Do Blit
+ map(0x34, 0x34).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits)
+ map(0x35, 0x35).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); //
+ map(0x36, 0x36).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color
+ map(0x37, 0x37).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack
+ map(0x40, 0x47).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0x60, 0x60).portr("DSW2");
+ map(0x61, 0x61).portr("DSW1");
+ map(0x6b, 0x6b).w(this, FUNC(dynax_state::cdracula_sound_rombank_w)); // OKI Bank
+}
/***************************************************************************
diff --git a/src/mame/drivers/dynduke.cpp b/src/mame/drivers/dynduke.cpp
index da9c00c2496..874070a189d 100644
--- a/src/mame/drivers/dynduke.cpp
+++ b/src/mame/drivers/dynduke.cpp
@@ -80,71 +80,77 @@ Also, implemented conditional port for Coin Mode (SW1:1)
/* Memory Maps */
-ADDRESS_MAP_START(dynduke_state::master_map)
- AM_RANGE(0x00000, 0x06fff) AM_RAM
- AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x08000, 0x080ff) AM_RAM AM_SHARE("scroll_ram")
- AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW")
- AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP
- AM_RANGE(0x0b006, 0x0b007) AM_WRITE(control_w)
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(text_w) AM_SHARE("videoram")
- AM_RANGE(0x0d000, 0x0d00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0xa0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynduke_state::slave_map)
- AM_RANGE(0x00000, 0x05fff) AM_RAM
- AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(background_w) AM_SHARE("back_data")
- AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x07000, 0x07fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x0a000, 0x0a001) AM_WRITE(gfxbank_w)
- AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void dynduke_state::master_map(address_map &map)
+{
+ map(0x00000, 0x06fff).ram();
+ map(0x07000, 0x07fff).ram().share("spriteram");
+ map(0x08000, 0x080ff).ram().share("scroll_ram");
+ map(0x0a000, 0x0afff).ram().share("share1");
+ map(0x0b000, 0x0b001).portr("P1_P2");
+ map(0x0b002, 0x0b003).portr("DSW");
+ map(0x0b004, 0x0b005).nopw();
+ map(0x0b006, 0x0b007).w(this, FUNC(dynduke_state::control_w));
+ map(0x0c000, 0x0c7ff).ram().w(this, FUNC(dynduke_state::text_w)).share("videoram");
+ map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0xa0000, 0xfffff).rom();
+}
+
+void dynduke_state::slave_map(address_map &map)
+{
+ map(0x00000, 0x05fff).ram();
+ map(0x06000, 0x067ff).ram().w(this, FUNC(dynduke_state::background_w)).share("back_data");
+ map(0x06800, 0x06fff).ram().w(this, FUNC(dynduke_state::foreground_w)).share("fore_data");
+ map(0x07000, 0x07fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08000, 0x08fff).ram().share("share1");
+ map(0x0a000, 0x0a001).w(this, FUNC(dynduke_state::gfxbank_w));
+ map(0x0c000, 0x0c001).nopw();
+ map(0xc0000, 0xfffff).rom();
+}
/* Memory map used by DlbDyn - probably an addressing PAL is different */
-ADDRESS_MAP_START(dynduke_state::masterj_map)
- AM_RANGE(0x00000, 0x06fff) AM_RAM
- AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x08000, 0x087ff) AM_RAM_WRITE(text_w) AM_SHARE("videoram")
- AM_RANGE(0x09000, 0x0900d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0x0c000, 0x0c0ff) AM_RAM AM_SHARE("scroll_ram")
- AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x0f000, 0x0f001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0f002, 0x0f003) AM_READ_PORT("DSW")
- AM_RANGE(0x0f004, 0x0f005) AM_WRITENOP
- AM_RANGE(0x0f006, 0x0f007) AM_WRITE(control_w)
- AM_RANGE(0xa0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynduke_state::sound_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynduke_state::sound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(dynduke_state::sei80bu_encrypted_full_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
+void dynduke_state::masterj_map(address_map &map)
+{
+ map(0x00000, 0x06fff).ram();
+ map(0x07000, 0x07fff).ram().share("spriteram");
+ map(0x08000, 0x087ff).ram().w(this, FUNC(dynduke_state::text_w)).share("videoram");
+ map(0x09000, 0x0900d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0x0c000, 0x0c0ff).ram().share("scroll_ram");
+ map(0x0e000, 0x0efff).ram().share("share1");
+ map(0x0f000, 0x0f001).portr("P1_P2");
+ map(0x0f002, 0x0f003).portr("DSW");
+ map(0x0f004, 0x0f005).nopw();
+ map(0x0f006, 0x0f007).w(this, FUNC(dynduke_state::control_w));
+ map(0xa0000, 0xfffff).rom();
+}
+
+void dynduke_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void dynduke_state::sound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+}
+
+void dynduke_state::sei80bu_encrypted_full_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audiocpu", 0);
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
/* Input Ports */
diff --git a/src/mame/drivers/e100.cpp b/src/mame/drivers/e100.cpp
index 9f1066f7677..b79ba6a87f2 100644
--- a/src/mame/drivers/e100.cpp
+++ b/src/mame/drivers/e100.cpp
@@ -423,13 +423,14 @@ WRITE_LINE_MEMBER(e100_state::pia1_cb2_w)
}
// This map is derived from info in "TEMAL 100 - teknisk manual Esselte 100"
-ADDRESS_MAP_START(e100_state::e100_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc800, 0xc81f) AM_READWRITE(pia_r, pia_w) AM_MIRROR(0x07e0)
- AM_RANGE(0xd000, 0xffff) AM_ROM AM_REGION("roms", 0x1000)
-ADDRESS_MAP_END
+void e100_state::e100_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x8000, 0x87ff).rom().region("roms", 0);
+ map(0xc000, 0xc3ff).ram().share("videoram");
+ map(0xc800, 0xc81f).rw(this, FUNC(e100_state::pia_r), FUNC(e100_state::pia_w)).mirror(0x07e0);
+ map(0xd000, 0xffff).rom().region("roms", 0x1000);
+}
/* E100 Input ports
* Four e100 keys are not mapped yet,
diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp
index 24177aaf8ea..2ef947a1bb9 100644
--- a/src/mame/drivers/eacc.cpp
+++ b/src/mame/drivers/eacc.cpp
@@ -94,14 +94,15 @@ private:
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(eacc_state::eacc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xc7ff) // A11,A12,A13 not connected
- AM_RANGE(0x0000, 0x001f) AM_RAM AM_SHARE("nvram") // inside cpu, battery-backed
- AM_RANGE(0x0020, 0x007f) AM_RAM // inside cpu
- AM_RANGE(0x4000, 0x47ff) AM_ROM AM_MIRROR(0x8000)
- AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x7fc) AM_DEVREADWRITE("pia", pia6821_device, read, write)
-ADDRESS_MAP_END
+void eacc_state::eacc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xc7ff); // A11,A12,A13 not connected
+ map(0x0000, 0x001f).ram().share("nvram"); // inside cpu, battery-backed
+ map(0x0020, 0x007f).ram(); // inside cpu
+ map(0x4000, 0x47ff).rom().mirror(0x8000);
+ map(0x8000, 0x8003).mirror(0x7fc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+}
/******************************************************************************
diff --git a/src/mame/drivers/ec184x.cpp b/src/mame/drivers/ec184x.cpp
index 737fbcbea5c..cd2722a8bf3 100644
--- a/src/mame/drivers/ec184x.cpp
+++ b/src/mame/drivers/ec184x.cpp
@@ -183,37 +183,43 @@ MACHINE_RESET_MEMBER(ec184x_state, ec1841)
}
-ADDRESS_MAP_START(ec184x_state::ec1840_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ec184x_state::ec1841_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ec184x_state::ec1847_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ec184x_state::ec1840_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5150_mb_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ec184x_state::ec1841_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ec1841_mb_device, map, 0xffff)
- AM_RANGE(0x02b0, 0x02b3) AM_READWRITE8(memboard_r, memboard_w, 0xffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ec184x_state::ec1847_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
+void ec184x_state::ec1840_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void ec184x_state::ec1841_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void ec184x_state::ec1847_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xe0000, 0xfffff).rom().region("bios", 0);
+}
+
+void ec184x_state::ec1840_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5150_mb_device::map));
+}
+
+void ec184x_state::ec1841_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ec1841_mb_device::map));
+ map(0x02b0, 0x02b3).rw(this, FUNC(ec184x_state::memboard_r), FUNC(ec184x_state::memboard_w));
+}
+
+void ec184x_state::ec1847_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
// AM_RANGE(0x0210, 0x021f) AM_RAM // internal (non-standard?) bus extender
-ADDRESS_MAP_END
+}
// XXX verify everything
diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp
index 5ba1963ad22..d847633a447 100644
--- a/src/mame/drivers/ec65.cpp
+++ b/src/mame/drivers/ec65.cpp
@@ -67,27 +67,29 @@ public:
void ec65k_mem(address_map &map);
};
-ADDRESS_MAP_START(ec65_state::ec65_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write)
- AM_RANGE(0xe010, 0xe011) AM_DEVREADWRITE(ACIA6850_TAG, acia6850_device, read, write)
- AM_RANGE(0xe100, 0xe10f) AM_DEVREADWRITE(VIA6522_0_TAG, via6522_device, read, write)
- AM_RANGE(0xe110, 0xe11f) AM_DEVREADWRITE(VIA6522_1_TAG, via6522_device, read, write)
- AM_RANGE(0xe130, 0xe133) AM_DEVREADWRITE(ACIA6551_TAG, mos6551_device, read, write)
- AM_RANGE(0xe140, 0xe140) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0xe141, 0xe141) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r , register_w)
- AM_RANGE(0xe400, 0xe7ff) AM_RAM // 1KB on-board RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ec65k_state::ec65k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ec65_state::ec65_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw(PIA6821_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe010, 0xe011).rw(ACIA6850_TAG, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe100, 0xe10f).rw(m_via_0, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe110, 0xe11f).rw(m_via_1, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe130, 0xe133).rw(ACIA6551_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xe140, 0xe140).w(MC6845_TAG, FUNC(mc6845_device::address_w));
+ map(0xe141, 0xe141).rw(MC6845_TAG, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xe400, 0xe7ff).ram(); // 1KB on-board RAM
+ map(0xe800, 0xefff).ram().share("videoram");
+ map(0xf000, 0xffff).rom();
+}
+
+void ec65k_state::ec65k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().share("videoram");
+ map(0xf000, 0xffff).rom();
+}
/* Input ports */
static INPUT_PORTS_START( ec65 )
diff --git a/src/mame/drivers/ecoinf1.cpp b/src/mame/drivers/ecoinf1.cpp
index 3d5ea19ad8b..4d18854a09c 100644
--- a/src/mame/drivers/ecoinf1.cpp
+++ b/src/mame/drivers/ecoinf1.cpp
@@ -29,14 +29,16 @@ public:
};
-ADDRESS_MAP_START(ecoinf1_state::older_memmap)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ecoinf1_state::older_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void ecoinf1_state::older_memmap(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x4fff).ram();
+}
+
+void ecoinf1_state::older_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+}
diff --git a/src/mame/drivers/ecoinf2.cpp b/src/mame/drivers/ecoinf2.cpp
index 940162e6020..b32c3452b33 100644
--- a/src/mame/drivers/ecoinf2.cpp
+++ b/src/mame/drivers/ecoinf2.cpp
@@ -230,25 +230,27 @@ WRITE8_MEMBER(ecoinf2_state::ox_port5c_out_w)
// Watchdog?
}
-ADDRESS_MAP_START(ecoinf2_state::oxo_memmap)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ecoinf2_state::oxo_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_RAM // z180 internal area?
-
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ic10_lamp", i8255_device, read, write) //*
- AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("ic24_coin", i8255_device, read, write) //*
- AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("ic22_inpt", i8255_device, read, write) //*
- AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ic23_reel", i8255_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("ic13_leds", i8255_device, read, write) //*
+void ecoinf2_state::oxo_memmap(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void ecoinf2_state::oxo_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).ram(); // z180 internal area?
+
+ map(0x40, 0x43).rw("ic10_lamp", FUNC(i8255_device::read), FUNC(i8255_device::write)); //*
+ map(0x44, 0x47).rw("ic24_coin", FUNC(i8255_device::read), FUNC(i8255_device::write)); //*
+ map(0x48, 0x4b).rw("ic22_inpt", FUNC(i8255_device::read), FUNC(i8255_device::write)); //*
+ map(0x4c, 0x4f).rw("ic23_reel", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x50, 0x53).rw("ic13_leds", FUNC(i8255_device::read), FUNC(i8255_device::write)); //*
// AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ic25_dips", i8255_device, read, write) // is this an 8255, or a mirrored byte read?
// AM_RANGE(0x5c, 0x5c) AM_WRITE(ox_port5c_out_w)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( ecoinf2 )
diff --git a/src/mame/drivers/ecoinf3.cpp b/src/mame/drivers/ecoinf3.cpp
index ac88dea594b..e77a3912d21 100644
--- a/src/mame/drivers/ecoinf3.cpp
+++ b/src/mame/drivers/ecoinf3.cpp
@@ -427,28 +427,30 @@ WRITE8_MEMBER(ecoinf3_state::ppi8255_intf_e_write_a_alpha_display)
std::transform(std::begin(m_chars), std::end(m_chars), std::begin(m_vfd_outputs), set_display);
}
-ADDRESS_MAP_START(ecoinf3_state::pyramid_memmap)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ecoinf3_state::pyramid_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_RAM // z180 internal area!
-
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppi8255_a", i8255_device, read, write)
- AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("ppi8255_b", i8255_device, read, write)
- AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("ppi8255_c", i8255_device, read, write)
- AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ppi8255_d", i8255_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("ppi8255_e", i8255_device, read, write)
- AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ppi8255_f", i8255_device, read, write)
- AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("ppi8255_g", i8255_device, read, write)
- AM_RANGE(0x5c, 0x5f) AM_DEVREADWRITE("ppi8255_h", i8255_device, read, write)
+void ecoinf3_state::pyramid_memmap(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void ecoinf3_state::pyramid_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).ram(); // z180 internal area!
+
+ map(0x40, 0x43).rw("ppi8255_a", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x44, 0x47).rw("ppi8255_b", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x48, 0x4b).rw("ppi8255_c", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x4c, 0x4f).rw("ppi8255_d", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x50, 0x53).rw("ppi8255_e", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x54, 0x57).rw("ppi8255_f", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ 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?
- AM_RANGE(0xDB, 0xDB) AM_DEVWRITE("sn1", sn76489_device, write) // no idea what the sound chip is, this sounds terrible
+ map(0xDB, 0xDB).w("sn1", FUNC(sn76489_device::write)); // no idea what the sound chip is, this sounds terrible
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/ecoinfr.cpp b/src/mame/drivers/ecoinfr.cpp
index 62a5cc51846..a7fe682a397 100644
--- a/src/mame/drivers/ecoinfr.cpp
+++ b/src/mame/drivers/ecoinfr.cpp
@@ -476,45 +476,47 @@ WRITE8_MEMBER(ecoinfr_state::ec_port18_out_w)
}
-ADDRESS_MAP_START(ecoinfr_state::memmap)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
-
- AM_RANGE(0xa000, 0xa000) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, status_r, control_w)
-
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(ecoinfr_state::portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(ec_port00_out_w) AM_READ_PORT("IN0") // Reel 1 Write
- AM_RANGE(0x01, 0x01) AM_WRITE(ec_port01_out_w) AM_READ_PORT("IN1") // Reel 2 Write + Reels Opto Read
- AM_RANGE(0x02, 0x02) AM_WRITE(ec_port02_out_w) AM_READ_PORT("IN2") // Reel 3 Write
- AM_RANGE(0x03, 0x03) AM_WRITE(ec_port03_out_w) AM_READ_PORT("IN3")
- AM_RANGE(0x04, 0x04) AM_WRITE(ec_port04_out_w) AM_READ_PORT("IN4")
- AM_RANGE(0x05, 0x05) AM_WRITE(ec_port05_out_w) AM_READ_PORT("IN5")
- AM_RANGE(0x06, 0x06) AM_WRITE(ec_port06_out_w) AM_READ_PORT("IN6")
- AM_RANGE(0x07, 0x07) AM_WRITE(ec_port07_out_w) AM_READ_PORT("IN7")
- AM_RANGE(0x08, 0x08) AM_WRITE(ec_port08_out_bank_strobe_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(ec_port09_out_reelen_w) // 09 Reel Enables
- AM_RANGE(0x0a, 0x0a) AM_WRITE(ec_port0a_out_w) // 10 (Sound 1)
- AM_RANGE(0x0b, 0x0b) AM_WRITE(ec_port0b_out_w) // 11 (Sound 2)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(ec_port0c_out_cred_strobe_w)
- AM_RANGE(0x0d, 0x0d) AM_WRITE(ec_port0d_out_cred_data_w)
+void ecoinfr_state::memmap(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+
+ map(0xa000, 0xa000).rw(UPD8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xa001, 0xa001).rw(UPD8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+
+}
+
+
+
+void ecoinfr_state::portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(ecoinfr_state::ec_port00_out_w)).portr("IN0"); // Reel 1 Write
+ map(0x01, 0x01).w(this, FUNC(ecoinfr_state::ec_port01_out_w)).portr("IN1"); // Reel 2 Write + Reels Opto Read
+ map(0x02, 0x02).w(this, FUNC(ecoinfr_state::ec_port02_out_w)).portr("IN2"); // Reel 3 Write
+ map(0x03, 0x03).w(this, FUNC(ecoinfr_state::ec_port03_out_w)).portr("IN3");
+ map(0x04, 0x04).w(this, FUNC(ecoinfr_state::ec_port04_out_w)).portr("IN4");
+ map(0x05, 0x05).w(this, FUNC(ecoinfr_state::ec_port05_out_w)).portr("IN5");
+ map(0x06, 0x06).w(this, FUNC(ecoinfr_state::ec_port06_out_w)).portr("IN6");
+ map(0x07, 0x07).w(this, FUNC(ecoinfr_state::ec_port07_out_w)).portr("IN7");
+ map(0x08, 0x08).w(this, FUNC(ecoinfr_state::ec_port08_out_bank_strobe_w));
+ map(0x09, 0x09).w(this, FUNC(ecoinfr_state::ec_port09_out_reelen_w)); // 09 Reel Enables
+ map(0x0a, 0x0a).w(this, FUNC(ecoinfr_state::ec_port0a_out_w)); // 10 (Sound 1)
+ map(0x0b, 0x0b).w(this, FUNC(ecoinfr_state::ec_port0b_out_w)); // 11 (Sound 2)
+ map(0x0c, 0x0c).w(this, FUNC(ecoinfr_state::ec_port0c_out_cred_strobe_w));
+ map(0x0d, 0x0d).w(this, FUNC(ecoinfr_state::ec_port0d_out_cred_data_w));
// AM_RANGE(0x0e, 0x0e) AM_WRITE(ec_port0e_out_w)
- AM_RANGE(0x0f, 0x0f) AM_WRITE(ec_port0f_out_bank_segdata_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(ec_port10_out_w) // 16 (Meter)
- AM_RANGE(0x11, 0x11) AM_WRITE(ec_port11_out_w) // SEC
- AM_RANGE(0x12, 0x12) AM_WRITE(ec_port12_out_w) // SEC
- AM_RANGE(0x13, 0x13) AM_WRITE(ec_port13_out_w)
- AM_RANGE(0x14, 0x14) AM_WRITE(ec_port14_out_w)
- AM_RANGE(0x15, 0x15) AM_WRITE(ec_port15_out_w) // SEC + VDF (3rd party)
- AM_RANGE(0x16, 0x16) AM_WRITE(ec_port16_out_w)
- AM_RANGE(0x17, 0x17) AM_WRITE(ec_port17_out_w) // Hopper + VDF (3rd party)
- AM_RANGE(0x18, 0x18) AM_WRITE(ec_port18_out_w) // 24 (Watchdog)
-ADDRESS_MAP_END
+ map(0x0f, 0x0f).w(this, FUNC(ecoinfr_state::ec_port0f_out_bank_segdata_w));
+ map(0x10, 0x10).w(this, FUNC(ecoinfr_state::ec_port10_out_w)); // 16 (Meter)
+ map(0x11, 0x11).w(this, FUNC(ecoinfr_state::ec_port11_out_w)); // SEC
+ map(0x12, 0x12).w(this, FUNC(ecoinfr_state::ec_port12_out_w)); // SEC
+ map(0x13, 0x13).w(this, FUNC(ecoinfr_state::ec_port13_out_w));
+ map(0x14, 0x14).w(this, FUNC(ecoinfr_state::ec_port14_out_w));
+ map(0x15, 0x15).w(this, FUNC(ecoinfr_state::ec_port15_out_w)); // SEC + VDF (3rd party)
+ map(0x16, 0x16).w(this, FUNC(ecoinfr_state::ec_port16_out_w));
+ map(0x17, 0x17).w(this, FUNC(ecoinfr_state::ec_port17_out_w)); // Hopper + VDF (3rd party)
+ map(0x18, 0x18).w(this, FUNC(ecoinfr_state::ec_port18_out_w)); // 24 (Watchdog)
+}
CUSTOM_INPUT_MEMBER(ecoinfr_state::ecoinfr_reel1_opto_r)
{
diff --git a/src/mame/drivers/egghunt.cpp b/src/mame/drivers/egghunt.cpp
index ff0bac2e31a..8ac8ca9ccfa 100644
--- a/src/mame/drivers/egghunt.cpp
+++ b/src/mame/drivers/egghunt.cpp
@@ -238,33 +238,36 @@ WRITE8_MEMBER(egghunt_state::egghunt_okibanking_w)
m_oki->set_rom_bank((data >> 4) & 1);
}
-ADDRESS_MAP_START(egghunt_state::egghunt_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(egghunt_atram_w) AM_SHARE("atram")
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(egghunt_bgram_r, egghunt_bgram_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(egghunt_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(egghunt_vidram_bank_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(egghunt_gfx_banking_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P1")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_WRITE(egghunt_soundlatch_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("UNK") AM_WRITENOP
- AM_RANGE(0x07, 0x07) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(egghunt_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe001, 0xe001) AM_READWRITE(egghunt_okibanking_r, egghunt_okibanking_w)
- AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void egghunt_state::egghunt_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(egghunt_state::egghunt_atram_w)).share("atram");
+ map(0xd000, 0xdfff).rw(this, FUNC(egghunt_state::egghunt_bgram_r), FUNC(egghunt_state::egghunt_bgram_w));
+ map(0xe000, 0xffff).ram();
+}
+
+
+void egghunt_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1").w(this, FUNC(egghunt_state::egghunt_vidram_bank_w));
+ map(0x01, 0x01).portr("SYSTEM").w(this, FUNC(egghunt_state::egghunt_gfx_banking_w));
+ map(0x02, 0x02).portr("P1");
+ map(0x03, 0x03).portr("P2").w(this, FUNC(egghunt_state::egghunt_soundlatch_w));
+ map(0x04, 0x04).portr("DSW2");
+ map(0x06, 0x06).portr("UNK").nopw();
+ map(0x07, 0x07).nopw();
+}
+
+void egghunt_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe001, 0xe001).rw(this, FUNC(egghunt_state::egghunt_okibanking_r), FUNC(egghunt_state::egghunt_okibanking_w));
+ map(0xe004, 0xe004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf000, 0xffff).ram();
+}
static INPUT_PORTS_START( egghunt )
diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp
index 34ceb6caadc..5de72a14224 100644
--- a/src/mame/drivers/einstein.cpp
+++ b/src/mame/drivers/einstein.cpp
@@ -413,31 +413,33 @@ void einstein_state::machine_reset()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(einstein_state::einstein_mem)
- AM_RANGE(0x0000, 0x07fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
- AM_RANGE(0x8000, 0x0ffff) AM_RAMBANK("bank3")
-ADDRESS_MAP_END
+void einstein_state::einstein_mem(address_map &map)
+{
+ map(0x0000, 0x07fff).bankr("bank1").bankw("bank2");
+ map(0x8000, 0x0ffff).bankrw("bank3");
+}
// I/O ports are decoded into 8 blocks using address lines A3 to A7
-ADDRESS_MAP_START(einstein_state::einstein_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff04) AM_READWRITE(reset_r, reset_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I030, ay8910_device, data_r, address_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xff04) AM_DEVWRITE(IC_I030, ay8910_device, data_w)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0xff06) AM_DEVREADWRITE("vdp", tms9129_device, vram_read, vram_write)
- AM_RANGE(0x09, 0x09) AM_MIRROR(0xff06) AM_DEVREADWRITE("vdp", tms9129_device, register_read, register_write)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0xff06) AM_DEVREADWRITE(IC_I060, i8251_device, data_r, data_w)
- AM_RANGE(0x11, 0x11) AM_MIRROR(0xff06) AM_DEVREADWRITE(IC_I060, i8251_device, status_r, control_w)
- AM_RANGE(0x18, 0x1b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I042, wd1770_device, read, write)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_READWRITE(kybint_msk_r, kybint_msk_w)
- AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_WRITE(adcint_msk_w)
- AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_WRITE(drsel_w)
- AM_RANGE(0x24, 0x24) AM_MIRROR(0xff00) AM_READWRITE(rom_r, rom_w)
- AM_RANGE(0x25, 0x25) AM_MIRROR(0xff00) AM_WRITE(fireint_msk_w)
- AM_RANGE(0x28, 0x2b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I058, z80ctc_device, read, write)
- AM_RANGE(0x30, 0x33) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I063, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x38, 0x38) AM_MIRROR(0xff07) AM_DEVREADWRITE("adc", adc0844_device, read, write)
-ADDRESS_MAP_END
+void einstein_state::einstein_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).mirror(0xff04).rw(this, 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, 0x08).mirror(0xff06).rw("vdp", FUNC(tms9129_device::vram_read), FUNC(tms9129_device::vram_write));
+ map(0x09, 0x09).mirror(0xff06).rw("vdp", FUNC(tms9129_device::register_read), FUNC(tms9129_device::register_write));
+ map(0x10, 0x10).mirror(0xff06).rw(IC_I060, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x11, 0x11).mirror(0xff06).rw(IC_I060, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x18, 0x1b).mirror(0xff04).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write));
+ map(0x20, 0x20).mirror(0xff00).rw(this, FUNC(einstein_state::kybint_msk_r), FUNC(einstein_state::kybint_msk_w));
+ map(0x21, 0x21).mirror(0xff00).w(this, FUNC(einstein_state::adcint_msk_w));
+ map(0x23, 0x23).mirror(0xff00).w(this, FUNC(einstein_state::drsel_w));
+ map(0x24, 0x24).mirror(0xff00).rw(this, FUNC(einstein_state::rom_r), FUNC(einstein_state::rom_w));
+ map(0x25, 0x25).mirror(0xff00).w(this, FUNC(einstein_state::fireint_msk_w));
+ map(0x28, 0x2b).mirror(0xff04).rw(IC_I058, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x30, 0x33).mirror(0xff04).rw(IC_I063, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x38, 0x38).mirror(0xff07).rw("adc", FUNC(adc0844_device::read), FUNC(adc0844_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/electron.cpp b/src/mame/drivers/electron.cpp
index 8d289364d29..10e2d02b926 100644
--- a/src/mame/drivers/electron.cpp
+++ b/src/mame/drivers/electron.cpp
@@ -88,14 +88,15 @@ PALETTE_INIT_MEMBER(electron_state, electron)
palette.set_pen_colors(0, electron_palette, ARRAY_LENGTH(electron_palette));
}
-ADDRESS_MAP_START(electron_state::electron_mem)
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(electron_mem_r, electron_mem_w) /* 32KB of RAM */
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE(electron_paged_r, electron_paged_w) /* Banked ROM pages */
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("mos", 0) AM_WRITE(electron_mos_w) /* OS ROM */
- AM_RANGE(0xfc00, 0xfcff) AM_READWRITE(electron_fred_r, electron_fred_w ) /* FRED */
- AM_RANGE(0xfd00, 0xfdff) AM_READWRITE(electron_jim_r, electron_jim_w ) /* JIM */
- AM_RANGE(0xfe00, 0xfeff) AM_READWRITE(electron_sheila_r, electron_sheila_w ) /* SHEILA */
-ADDRESS_MAP_END
+void electron_state::electron_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(this, FUNC(electron_state::electron_mem_r), FUNC(electron_state::electron_mem_w)); /* 32KB of RAM */
+ map(0x8000, 0xbfff).rw(this, FUNC(electron_state::electron_paged_r), FUNC(electron_state::electron_paged_w)); /* Banked ROM pages */
+ map(0xc000, 0xffff).rom().region("mos", 0).w(this, FUNC(electron_state::electron_mos_w)); /* OS ROM */
+ map(0xfc00, 0xfcff).rw(this, FUNC(electron_state::electron_fred_r), FUNC(electron_state::electron_fred_w)); /* FRED */
+ map(0xfd00, 0xfdff).rw(this, FUNC(electron_state::electron_jim_r), FUNC(electron_state::electron_jim_w)); /* JIM */
+ map(0xfe00, 0xfeff).rw(this, FUNC(electron_state::electron_sheila_r), FUNC(electron_state::electron_sheila_w)); /* SHEILA */
+}
INPUT_CHANGED_MEMBER(electron_state::trigger_reset)
{
diff --git a/src/mame/drivers/elekscmp.cpp b/src/mame/drivers/elekscmp.cpp
index 7fe1c306533..e9d2e376be7 100644
--- a/src/mame/drivers/elekscmp.cpp
+++ b/src/mame/drivers/elekscmp.cpp
@@ -98,14 +98,15 @@ READ8_MEMBER(elekscmp_state::keyboard_r)
return 0;
}
-ADDRESS_MAP_START(elekscmp_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x0fff)
- AM_RANGE(0x000, 0x5ff) AM_ROM // ROM
- AM_RANGE(0x700, 0x707) AM_WRITE(hex_display_w)
- AM_RANGE(0x708, 0x70f) AM_READ(keyboard_r)
- AM_RANGE(0x800, 0xfff) AM_RAM // RAM - up to 2K of RAM
-ADDRESS_MAP_END
+void elekscmp_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x0fff);
+ map(0x000, 0x5ff).rom(); // ROM
+ map(0x700, 0x707).w(this, FUNC(elekscmp_state::hex_display_w));
+ map(0x708, 0x70f).r(this, FUNC(elekscmp_state::keyboard_r));
+ map(0x800, 0xfff).ram(); // RAM - up to 2K of RAM
+}
/* Input ports */
static INPUT_PORTS_START( elekscmp )
diff --git a/src/mame/drivers/elektronmono.cpp b/src/mame/drivers/elektronmono.cpp
index 012e624b92c..a8dc80ae335 100644
--- a/src/mame/drivers/elektronmono.cpp
+++ b/src/mame/drivers/elektronmono.cpp
@@ -143,16 +143,17 @@ void elekmono_state::machine_reset()
{
}
-ADDRESS_MAP_START(elekmono_state::elektron_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x00100000, 0x001fffff) AM_RAM // patch memory
- AM_RANGE(0x00200000, 0x002fffff) AM_RAM // main RAM
+void elekmono_state::elektron_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom().region("maincpu", 0);
+ map(0x00100000, 0x001fffff).ram(); // patch memory
+ map(0x00200000, 0x002fffff).ram(); // main RAM
// 00300000 = Coldfire SIM
// 00400000 = DSP1 Hi08 host registers (ICR, CVR, ISR, IVR, unused, RXH/TXH, RXM/TXM, RXL/TXL)
// 00500000 = DSP2 Hi08 host registers (same as DSP1)
- AM_RANGE(0x01000000, 0x01001fff) AM_RAM
- AM_RANGE(0x10000000, 0x107fffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0x01000000, 0x01001fff).ram();
+ map(0x10000000, 0x107fffff).rom().region("maincpu", 0);
+}
MACHINE_CONFIG_START(elekmono_state::elektron)
MCFG_CPU_ADD("maincpu", MCF5206E, XTAL(25'447'000))
diff --git a/src/mame/drivers/elf.cpp b/src/mame/drivers/elf.cpp
index d0f4a77519d..0f0fc2422b1 100644
--- a/src/mame/drivers/elf.cpp
+++ b/src/mame/drivers/elf.cpp
@@ -74,17 +74,19 @@ WRITE8_MEMBER( elf2_state::memory_w )
/* Memory Maps */
-ADDRESS_MAP_START(elf2_state::elf2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x00ff) AM_RAMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(elf2_state::elf2_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x01, 0x01) AM_READ(dispon_r)
- AM_RANGE(0x04, 0x04) AM_READWRITE(data_r, data_w)
-ADDRESS_MAP_END
+void elf2_state::elf2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x0000, 0x00ff).bankrw("bank1");
+}
+
+void elf2_state::elf2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x01, 0x01).r(this, FUNC(elf2_state::dispon_r));
+ map(0x04, 0x04).rw(this, FUNC(elf2_state::data_r), FUNC(elf2_state::data_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp
index 60e08f31e88..53d8d84410f 100644
--- a/src/mame/drivers/elwro800.cpp
+++ b/src/mame/drivers/elwro800.cpp
@@ -369,33 +369,38 @@ WRITE8_MEMBER(elwro800_state::elwro800jr_io_w)
*
*************************************/
-ADDRESS_MAP_START(elwro800_state::elwro800_mem)
- AM_RANGE(0x0000, 0x1fff) AM_DEVICE("bank1", address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2", address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xffff) AM_RAMBANK("rambank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(elwro800_state::elwro800_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(elwro800jr_io_r, elwro800jr_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(elwro800_state::elwro800_m1)
- AM_RANGE(0x0000, 0x1fff) AM_DEVICE("bank1", address_map_bank_device, amap8)
- AM_RANGE(0x0066, 0x0066) AM_READ(nmi_r)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2", address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0xffff) AM_RAMBANK("rambank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(elwro800_state::elwro800_bank1)
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("rambank1")
- AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x0000) AM_WRITENOP // BAS0 ROM
- AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("maincpu", 0x4000) AM_WRITENOP // BOOT ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(elwro800_state::elwro800_bank2)
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("rambank2")
- AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x2000) AM_WRITENOP // BAS1 ROM
-ADDRESS_MAP_END
+void elwro800_state::elwro800_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).m(m_bank1, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_bank2, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xffff).bankrw("rambank3");
+}
+
+void elwro800_state::elwro800_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(elwro800_state::elwro800jr_io_r), FUNC(elwro800_state::elwro800jr_io_w));
+}
+
+void elwro800_state::elwro800_m1(address_map &map)
+{
+ map(0x0000, 0x1fff).m(m_bank1, FUNC(address_map_bank_device::amap8));
+ map(0x0066, 0x0066).r(this, FUNC(elwro800_state::nmi_r));
+ map(0x2000, 0x3fff).m(m_bank2, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0xffff).bankrw("rambank3");
+}
+
+void elwro800_state::elwro800_bank1(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("rambank1");
+ map(0x2000, 0x3fff).rom().region("maincpu", 0x0000).nopw(); // BAS0 ROM
+ map(0x4000, 0x5fff).rom().region("maincpu", 0x4000).nopw(); // BOOT ROM
+}
+
+void elwro800_state::elwro800_bank2(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("rambank2");
+ map(0x2000, 0x3fff).rom().region("maincpu", 0x2000).nopw(); // BAS1 ROM
+}
/*************************************
*
diff --git a/src/mame/drivers/embargo.cpp b/src/mame/drivers/embargo.cpp
index 93e0763ae81..34d80938dae 100644
--- a/src/mame/drivers/embargo.cpp
+++ b/src/mame/drivers/embargo.cpp
@@ -162,11 +162,12 @@ WRITE8_MEMBER(embargo_state::input_select_w)
*
*************************************/
-ADDRESS_MAP_START(embargo_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1e00, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void embargo_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1e00, 0x1fff).ram();
+ map(0x2000, 0x3fff).ram().share("videoram");
+}
@@ -176,16 +177,18 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(embargo_state::main_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(port_1_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(dial_r, port_2_w)
- AM_RANGE(0x03, 0x03) AM_WRITENOP /* always 0xFE */
-ADDRESS_MAP_END
+void embargo_state::main_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN0").w(this, FUNC(embargo_state::port_1_w));
+ map(0x02, 0x02).rw(this, FUNC(embargo_state::dial_r), FUNC(embargo_state::port_2_w));
+ map(0x03, 0x03).nopw(); /* always 0xFE */
+}
-ADDRESS_MAP_START(embargo_state::main_data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ_PORT("IN2")
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(input_port_bit_r, input_select_w)
-ADDRESS_MAP_END
+void embargo_state::main_data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).portr("IN2");
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(embargo_state::input_port_bit_r), FUNC(embargo_state::input_select_w));
+}
diff --git a/src/mame/drivers/enigma2.cpp b/src/mame/drivers/enigma2.cpp
index c14cb0c6f74..d1ff8e3d18b 100644
--- a/src/mame/drivers/enigma2.cpp
+++ b/src/mame/drivers/enigma2.cpp
@@ -438,52 +438,56 @@ CUSTOM_INPUT_MEMBER(enigma2_state::p2_controls_r)
return ioport("P1CONTROLS")->read();
}
-ADDRESS_MAP_START(enigma2_state::engima2_main_cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP
- AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x4fff) AM_ROM AM_WRITENOP
- AM_RANGE(0x5000, 0x57ff) AM_READ(dip_switch_r) AM_WRITENOP
- AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_NOP
- AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_READ_PORT("IN0") AM_WRITENOP
- AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE(sound_data_w)
- AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_NOP
- AM_RANGE(0x5805, 0x5805) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE(enigma2_flip_screen_w)
- AM_RANGE(0x5806, 0x5807) AM_MIRROR(0x07f8) AM_NOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(enigma2_state::engima2a_main_cpu_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP
- AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x4fff) AM_ROM AM_WRITENOP
- AM_RANGE(0x5000, 0x57ff) AM_READ(dip_switch_r) AM_WRITENOP
- AM_RANGE(0x5800, 0x5fff) AM_NOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(enigma2_state::engima2a_main_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_NOP
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITENOP
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x03, 0x03) AM_READNOP AM_WRITE(sound_data_w)
- AM_RANGE(0x04, 0x04) AM_NOP
- AM_RANGE(0x05, 0x05) AM_READNOP AM_WRITE(enigma2_flip_screen_w)
- AM_RANGE(0x06, 0x07) AM_NOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(enigma2_state::engima2_audio_cpu_map)
- AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM AM_WRITENOP
- AM_RANGE(0x2000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x1ffc) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void enigma2_state::engima2_main_cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom().nopw();
+ map(0x2000, 0x3fff).mirror(0x4000).ram().share("videoram");
+ map(0x4000, 0x4fff).rom().nopw();
+ map(0x5000, 0x57ff).r(this, FUNC(enigma2_state::dip_switch_r)).nopw();
+ map(0x5800, 0x5800).mirror(0x07f8).noprw();
+ map(0x5801, 0x5801).mirror(0x07f8).portr("IN0").nopw();
+ map(0x5802, 0x5802).mirror(0x07f8).portr("IN1").nopw();
+ map(0x5803, 0x5803).mirror(0x07f8).nopr().w(this, FUNC(enigma2_state::sound_data_w));
+ map(0x5804, 0x5804).mirror(0x07f8).noprw();
+ map(0x5805, 0x5805).mirror(0x07f8).nopr().w(this, FUNC(enigma2_state::enigma2_flip_screen_w));
+ map(0x5806, 0x5807).mirror(0x07f8).noprw();
+}
+
+
+void enigma2_state::engima2a_main_cpu_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().nopw();
+ map(0x2000, 0x3fff).mirror(0x4000).ram().share("videoram");
+ map(0x4000, 0x4fff).rom().nopw();
+ map(0x5000, 0x57ff).r(this, FUNC(enigma2_state::dip_switch_r)).nopw();
+ map(0x5800, 0x5fff).noprw();
+}
+
+
+void enigma2_state::engima2a_main_cpu_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).noprw();
+ map(0x01, 0x01).portr("IN0").nopw();
+ map(0x02, 0x02).portr("IN1").nopw();
+ map(0x03, 0x03).nopr().w(this, FUNC(enigma2_state::sound_data_w));
+ map(0x04, 0x04).noprw();
+ map(0x05, 0x05).nopr().w(this, FUNC(enigma2_state::enigma2_flip_screen_w));
+ map(0x06, 0x07).noprw();
+}
+
+
+void enigma2_state::engima2_audio_cpu_map(address_map &map)
+{
+ map(0x0000, 0x0fff).mirror(0x1000).rom().nopw();
+ map(0x2000, 0x7fff).noprw();
+ map(0x8000, 0x83ff).mirror(0x1c00).ram();
+ map(0xa000, 0xa001).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xa002, 0xa002).mirror(0x1ffc).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xa003, 0xa003).mirror(0x1ffc).noprw();
+ map(0xc000, 0xffff).noprw();
+}
diff --git a/src/mame/drivers/enmirage.cpp b/src/mame/drivers/enmirage.cpp
index 481dd3b1d0e..a30eb7855ca 100644
--- a/src/mame/drivers/enmirage.cpp
+++ b/src/mame/drivers/enmirage.cpp
@@ -123,17 +123,18 @@ void enmirage_state::machine_reset()
membank("sndbank")->set_base(memregion("es5503")->base() );
}
-ADDRESS_MAP_START(enmirage_state::mirage_map)
- AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("sndbank") // 32k window on 128k of wave RAM
- AM_RANGE(0x8000, 0xbfff) AM_RAM // main RAM
- AM_RANGE(0xc000, 0xdfff) AM_RAM // expansion RAM
- AM_RANGE(0xe100, 0xe101) AM_DEVREADWRITE("acia6850", acia6850_device, read, write)
- AM_RANGE(0xe200, 0xe2ff) AM_DEVREADWRITE("via6522", via6522_device, read, write)
- AM_RANGE(0xe400, 0xe4ff) AM_NOP
- AM_RANGE(0xe800, 0xe803) AM_DEVREADWRITE("wd1772", wd1772_device, read, write)
- AM_RANGE(0xec00, 0xecef) AM_DEVREADWRITE("es5503", es5503_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("osrom", 0)
-ADDRESS_MAP_END
+void enmirage_state::mirage_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankrw("sndbank"); // 32k window on 128k of wave RAM
+ map(0x8000, 0xbfff).ram(); // main RAM
+ map(0xc000, 0xdfff).ram(); // expansion RAM
+ map(0xe100, 0xe101).rw("acia6850", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe200, 0xe2ff).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe400, 0xe4ff).noprw();
+ map(0xe800, 0xe803).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write));
+ map(0xec00, 0xecef).rw("es5503", FUNC(es5503_device::read), FUNC(es5503_device::write));
+ map(0xf000, 0xffff).rom().region("osrom", 0);
+}
// port A: front panel
// bits 0-2: column select from 0-7
diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp
index 7c628786fe5..e4c90d5e397 100644
--- a/src/mame/drivers/eolith.cpp
+++ b/src/mame/drivers/eolith.cpp
@@ -217,18 +217,19 @@ WRITE8_MEMBER(eolith_state::soundcpu_to_qs1000)
*
*************************************/
-ADDRESS_MAP_START(eolith_state::eolith_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM // fort2b wants ram here
- AM_RANGE(0x40000000, 0x401fffff) AM_RAM
- AM_RANGE(0x90000000, 0x9003ffff) AM_READWRITE16(eolith_vram_r, eolith_vram_w, 0xffffffff)
- AM_RANGE(0xfc000000, 0xfc000003) AM_READ(eolith_custom_r)
- AM_RANGE(0xfc400000, 0xfc400003) AM_WRITE(systemcontrol_w)
- AM_RANGE(0xfc800000, 0xfc800003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
- AM_RANGE(0xfca00000, 0xfca00003) AM_READ_PORT("DSW1")
- AM_RANGE(0xfcc00000, 0xfcc0005b) AM_WRITENOP // crt registers ?
- AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("maindata", 0)
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void eolith_state::eolith_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram(); // fort2b wants ram here
+ map(0x40000000, 0x401fffff).ram();
+ map(0x90000000, 0x9003ffff).rw(this, FUNC(eolith_state::eolith_vram_r), FUNC(eolith_state::eolith_vram_w));
+ map(0xfc000000, 0xfc000003).r(this, FUNC(eolith_state::eolith_custom_r));
+ map(0xfc400000, 0xfc400003).w(this, FUNC(eolith_state::systemcontrol_w));
+ map(0xfc800000, 0xfc800003).w("soundlatch", FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
+ map(0xfca00000, 0xfca00003).portr("DSW1");
+ map(0xfcc00000, 0xfcc0005b).nopw(); // crt registers ?
+ map(0xfd000000, 0xfeffffff).rom().region("maindata", 0);
+ map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
+}
ADDRESS_MAP_START(eolith_state::hidctch3_map)
AM_IMPORT_FROM(eolith_map)
@@ -245,14 +246,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(eolith_state::sound_prg_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void eolith_state::sound_prg_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(eolith_state::sound_io_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("sound_bank")
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void eolith_state::sound_io_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("sound_bank");
+ map(0x8000, 0x8000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
/*************************************
diff --git a/src/mame/drivers/eolith16.cpp b/src/mame/drivers/eolith16.cpp
index be76d0ff196..7561dcdccff 100644
--- a/src/mame/drivers/eolith16.cpp
+++ b/src/mame/drivers/eolith16.cpp
@@ -71,19 +71,20 @@ READ16_MEMBER(eolith16_state::eolith16_custom_r)
return m_special_io->read();
}
-ADDRESS_MAP_START(eolith16_state::eolith16_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM
- AM_RANGE(0x50000000, 0x5000ffff) AM_RAMBANK("vrambank") AM_SHARE("vram")
- AM_RANGE(0x90000000, 0x9000002f) AM_WRITENOP //?
- AM_RANGE(0xff000000, 0xff1fffff) AM_ROM AM_REGION("maindata", 0)
- AM_RANGE(0xffe40000, 0xffe40001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xffe80000, 0xffe80001) AM_WRITE(eeprom_w)
- AM_RANGE(0xffea0000, 0xffea0001) AM_READ(eolith16_custom_r)
- AM_RANGE(0xffea0002, 0xffea0003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xffec0000, 0xffec0001) AM_READNOP // not used?
- AM_RANGE(0xffec0002, 0xffec0003) AM_READ_PORT("INPUTS")
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void eolith16_state::eolith16_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram();
+ map(0x50000000, 0x5000ffff).bankrw("vrambank").share("vram");
+ map(0x90000000, 0x9000002f).nopw(); //?
+ map(0xff000000, 0xff1fffff).rom().region("maindata", 0);
+ map(0xffe40001, 0xffe40001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xffe80000, 0xffe80001).w(this, FUNC(eolith16_state::eeprom_w));
+ map(0xffea0000, 0xffea0001).r(this, FUNC(eolith16_state::eolith16_custom_r));
+ map(0xffea0002, 0xffea0003).portr("SYSTEM");
+ map(0xffec0000, 0xffec0001).nopr(); // not used?
+ map(0xffec0002, 0xffec0003).portr("INPUTS");
+ map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( eolith16 )
PORT_START("SPECIAL")
diff --git a/src/mame/drivers/ep64.cpp b/src/mame/drivers/ep64.cpp
index c0ab98d949f..f78b1f419b0 100644
--- a/src/mame/drivers/ep64.cpp
+++ b/src/mame/drivers/ep64.cpp
@@ -363,52 +363,57 @@ WRITE8_MEMBER( ep64_state::wr2_w )
// ADDRESS_MAP( ep64_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(ep64_state::ep64_mem)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE(DAVE_TAG, dave_device, z80_program_map)
-ADDRESS_MAP_END
+void ep64_state::ep64_mem(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_dave, FUNC(dave_device::z80_program_map));
+}
//-------------------------------------------------
// ADDRESS_MAP( ep64_io )
//-------------------------------------------------
-ADDRESS_MAP_START(ep64_state::ep64_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE(DAVE_TAG, dave_device, z80_io_map)
-ADDRESS_MAP_END
+void ep64_state::ep64_io(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_dave, FUNC(dave_device::z80_io_map));
+}
//-------------------------------------------------
// ADDRESS_MAP( dave_64k_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(ep64_state::dave_64k_mem)
- AM_RANGE(0x000000, 0x007fff) AM_ROM AM_REGION(Z80_TAG, 0)
+void ep64_state::dave_64k_mem(address_map &map)
+{
+ map(0x000000, 0x007fff).rom().region(Z80_TAG, 0);
//AM_RANGE(0x010000, 0x01ffff) // mapped by the cartslot
- AM_RANGE(0x3f0000, 0x3fffff) AM_DEVICE(NICK_TAG, nick_device, vram_map)
-ADDRESS_MAP_END
+ map(0x3f0000, 0x3fffff).m(m_nick, FUNC(nick_device::vram_map));
+}
//-------------------------------------------------
// ADDRESS_MAP( dave_128k_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(ep64_state::dave_128k_mem)
- AM_IMPORT_FROM(dave_64k_mem)
- AM_RANGE(0x3e0000, 0x3effff) AM_RAM
-ADDRESS_MAP_END
+void ep64_state::dave_128k_mem(address_map &map)
+{
+ dave_64k_mem(map);
+ map(0x3e0000, 0x3effff).ram();
+}
//-------------------------------------------------
// ADDRESS_MAP( dave_io )
//-------------------------------------------------
-ADDRESS_MAP_START(ep64_state::dave_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x8f) AM_DEVICE(NICK_TAG, nick_device, vio_map)
- AM_RANGE(0xb5, 0xb5) AM_READWRITE(rd0_r, wr0_w)
- AM_RANGE(0xb6, 0xb6) AM_READ(rd1_r) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0xb7, 0xb7) AM_WRITE(wr2_w)
-ADDRESS_MAP_END
+void ep64_state::dave_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x8f).m(m_nick, FUNC(nick_device::vio_map));
+ map(0xb5, 0xb5).rw(this, FUNC(ep64_state::rd0_r), FUNC(ep64_state::wr0_w));
+ map(0xb6, 0xb6).r(this, FUNC(ep64_state::rd1_r)).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0xb7, 0xb7).w(this, FUNC(ep64_state::wr2_w));
+}
diff --git a/src/mame/drivers/epos.cpp b/src/mame/drivers/epos.cpp
index 44e0dbabcb6..0b55aafaa29 100644
--- a/src/mame/drivers/epos.cpp
+++ b/src/mame/drivers/epos.cpp
@@ -70,18 +70,20 @@ WRITE8_MEMBER(epos_state::dealer_decrypt_rom)
*
*************************************/
-ADDRESS_MAP_START(epos_state::epos_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(epos_state::dealer_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank2")
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void epos_state::epos_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).ram().share("videoram");
+}
+
+void epos_state::dealer_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("bank1");
+ map(0x6000, 0x6fff).bankr("bank2");
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).ram().share("videoram");
+}
/*************************************
*
@@ -89,25 +91,27 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(epos_state::epos_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_1_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("UNK")
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(epos_state::dealer_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_WRITE(dealer_pal_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x20, 0x24) AM_WRITE(dealer_decrypt_rom)
- AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x38, 0x38) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x3c, 0x3c) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void epos_state::epos_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x01, 0x01).portr("SYSTEM").w(this, FUNC(epos_state::port_1_w));
+ map(0x02, 0x02).portr("INPUTS").w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x03, 0x03).portr("UNK");
+ map(0x06, 0x06).w("aysnd", FUNC(ay8910_device::address_w));
+}
+
+void epos_state::dealer_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).w(this, FUNC(epos_state::dealer_pal_w));
+ map(0x10, 0x13).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x20, 0x24).w(this, FUNC(epos_state::dealer_decrypt_rom));
+ map(0x34, 0x34).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x38, 0x38).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x3c, 0x3c).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x40, 0x40).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
READ8_MEMBER(epos_state::i8255_porta_r)
{
diff --git a/src/mame/drivers/eprom.cpp b/src/mame/drivers/eprom.cpp
index 60ff51ba64d..17297286809 100644
--- a/src/mame/drivers/eprom.cpp
+++ b/src/mame/drivers/eprom.cpp
@@ -145,54 +145,56 @@ template<bool maincpu> WRITE16_MEMBER(eprom_state::sync_w)
*
*************************************/
-ADDRESS_MAP_START(eprom_state::main_map)
- AM_RANGE(0x000000, 0x09ffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x16cc00, 0x16cc01) AM_READWRITE(sync_r, sync_w<true>)
- AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
- AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r)
- AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r)
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_base_device, main_response_r, 0x00ff)
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w)
- AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_base_device, sound_reset_w)
- AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_base_device, main_command_w, 0x00ff)
- AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x3f0000, 0x3f9fff) AM_RAM
- AM_RANGE(0x3f0000, 0x3f1fff) AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x3f4000, 0x3f4f7f) AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0x3f4f80, 0x3f4fff) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x3f8000, 0x3f9fff) AM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(eprom_state::guts_map)
- AM_RANGE(0x000000, 0x09ffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x16cc00, 0x16cc01) AM_READWRITE(sync_r, sync_w<true>)
- AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
- AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r)
- AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r)
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff)
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
+void eprom_state::main_map(address_map &map)
+{
+ map(0x000000, 0x09ffff).rom();
+ map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x160000, 0x16ffff).ram().share("share1");
+ map(0x16cc00, 0x16cc01).rw(this, FUNC(eprom_state::sync_r), FUNC(eprom_state::sync_w<true>));
+ map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x26000f).portr("260000");
+ map(0x260010, 0x26001f).r(this, FUNC(eprom_state::special_port1_r));
+ map(0x260020, 0x26002f).r(this, FUNC(eprom_state::adc_r));
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_base_device::main_response_r));
+ map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x360000, 0x360001).w(this, FUNC(eprom_state::video_int_ack_w));
+ map(0x360010, 0x360011).w(this, FUNC(eprom_state::eprom_latch_w));
+ map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_base_device::sound_reset_w));
+ map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_base_device::main_command_w));
+ map(0x3e0000, 0x3e0fff).ram().share("paletteram");
+ map(0x3f0000, 0x3f9fff).ram();
+ map(0x3f0000, 0x3f1fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x3f2000, 0x3f3fff).ram().share("mob");
+ map(0x3f4000, 0x3f4f7f).w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0x3f4f80, 0x3f4fff).ram().share("mob:slip");
+ map(0x3f8000, 0x3f9fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext");
+}
+
+
+void eprom_state::guts_map(address_map &map)
+{
+ map(0x000000, 0x09ffff).rom();
+ map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x160000, 0x16ffff).ram().share("share1");
+ map(0x16cc00, 0x16cc01).rw(this, FUNC(eprom_state::sync_r), FUNC(eprom_state::sync_w<true>));
+ map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x26000f).portr("260000");
+ map(0x260010, 0x26001f).r(this, FUNC(eprom_state::special_port1_r));
+ map(0x260020, 0x26002f).r(this, FUNC(eprom_state::adc_r));
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r));
+ map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x360000, 0x360001).w(this, FUNC(eprom_state::video_int_ack_w));
// AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w)
- AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w)
- AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff)
- AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0xff0000, 0xff1fff) AM_RAM AM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext")
- AM_RANGE(0xff8000, 0xff9fff) AM_RAM AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xffc000, 0xffcf7f) AM_RAM AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xffcf80, 0xffcfff) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0xffd000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w));
+ map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w));
+ map(0x3e0000, 0x3e0fff).ram().share("paletteram");
+ map(0xff0000, 0xff1fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext");
+ map(0xff8000, 0xff9fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0xffa000, 0xffbfff).ram().share("mob");
+ map(0xffc000, 0xffcf7f).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0xffcf80, 0xffcfff).ram().share("mob:slip");
+ map(0xffd000, 0xffffff).ram();
+}
@@ -202,19 +204,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(eprom_state::extra_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x16cc00, 0x16cc01) AM_READWRITE(sync_r, sync_w<false>) AM_SHARE("sync_data")
- AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
- AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r)
- AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r)
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_base_device, main_response_r, 0x00ff)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w)
- AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_base_device, sound_reset_w)
- AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_base_device, main_command_w, 0x00ff)
-ADDRESS_MAP_END
+void eprom_state::extra_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x160000, 0x16ffff).ram().share("share1");
+ map(0x16cc00, 0x16cc01).rw(this, FUNC(eprom_state::sync_r), FUNC(eprom_state::sync_w<false>)).share("sync_data");
+ map(0x260000, 0x26000f).portr("260000");
+ map(0x260010, 0x26001f).r(this, FUNC(eprom_state::special_port1_r));
+ map(0x260020, 0x26002f).r(this, FUNC(eprom_state::adc_r));
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_base_device::main_response_r));
+ map(0x360000, 0x360001).w(this, FUNC(eprom_state::video_int_ack_w));
+ map(0x360010, 0x360011).w(this, FUNC(eprom_state::eprom_latch_w));
+ map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_base_device::sound_reset_w));
+ map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_base_device::main_command_w));
+}
diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp
index 9fc9bcbeaba..a2c68344dd0 100644
--- a/src/mame/drivers/equites.cpp
+++ b/src/mame/drivers/equites.cpp
@@ -640,66 +640,78 @@ WRITE_LINE_MEMBER(equites_state::mcu_switch_w)
/******************************************************************************/
// CPU Memory Maps
-ADDRESS_MAP_START(equites_state::equites_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM area is written several times (dev system?)
- AM_RANGE(0x040000, 0x040fff) AM_RAM
- AM_RANGE(0x080000, 0x080fff) AM_READWRITE8(equites_fg_videoram_r, equites_fg_videoram_w, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c01ff) AM_RAM_WRITE(equites_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x0c0200, 0x0c0fff) AM_RAM
- AM_RANGE(0x100000, 0x1001ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x100000, 0x100001) AM_READ(equites_spriteram_kludge_r)
- AM_RANGE(0x140000, 0x1407ff) AM_READWRITE8(mcu_ram_r, mcu_ram_w, 0x00ff)
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN1") AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- ;map(0x180000, 0x180001).select(0x03c000).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_a3(space, offset >> 13, data, mem_mask); }).umask16(0xff00);
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("IN0") AM_WRITE(equites_scrollreg_w)
- AM_RANGE(0x380000, 0x380001) AM_WRITE8(equites_bgcolor_w, 0xff00)
- AM_RANGE(0x780000, 0x780001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
-ADDRESS_MAP_END
+void equites_state::equites_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x00ffff).rom(); // ROM area is written several times (dev system?)
+ map(0x040000, 0x040fff).ram();
+ map(0x080000, 0x080fff).rw(this, FUNC(equites_state::equites_fg_videoram_r), FUNC(equites_state::equites_fg_videoram_w)).umask16(0x00ff);
+ map(0x0c0000, 0x0c01ff).ram().w(this, FUNC(equites_state::equites_bg_videoram_w)).share("bg_videoram");
+ map(0x0c0200, 0x0c0fff).ram();
+ map(0x100000, 0x1001ff).ram().share("spriteram");
+ map(0x100000, 0x100001).r(this, FUNC(equites_state::equites_spriteram_kludge_r));
+ map(0x140000, 0x1407ff).rw(this, FUNC(equites_state::mcu_ram_r), FUNC(equites_state::mcu_ram_w)).umask16(0x00ff);
+ map(0x180000, 0x180001).portr("IN1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x180000, 0x180000).select(0x03c000).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_mainlatch->write_a3(space, offset >> 13, data, mem_mask);
+ });
+ map(0x180001, 0x180001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1c0000, 0x1c0001).portr("IN0").w(this, FUNC(equites_state::equites_scrollreg_w));
+ map(0x380000, 0x380000).w(this, FUNC(equites_state::equites_bgcolor_w));
+ map(0x780000, 0x780001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+}
-ADDRESS_MAP_START(gekisou_state::gekisou_map)
- AM_IMPORT_FROM( equites_map )
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram") // mainram is battery-backed
- AM_RANGE(0x580000, 0x580001) AM_SELECT(0x020000) AM_WRITE(gekisou_unknown_bit_w)
-ADDRESS_MAP_END
+void gekisou_state::gekisou_map(address_map &map)
+{
+ equites_map(map);
+ map(0x040000, 0x040fff).ram().share("nvram"); // mainram is battery-backed
+ map(0x580000, 0x580001).select(0x020000).w(this, FUNC(gekisou_state::gekisou_unknown_bit_w));
+}
-ADDRESS_MAP_START(splndrbt_state::splndrbt_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN1")
- AM_RANGE(0x0c0000, 0x0c0001) AM_SELECT(0x020000) AM_WRITE8(equites_bgcolor_w, 0xff00)
- ;map(0x0c0000, 0x0c0001).select(0x03c000).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_a3(space, offset >> 13, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100000, 0x100001) AM_WRITE(splndrbt_bg_scrollx_w)
- AM_RANGE(0x140000, 0x140001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(splndrbt_bg_scrolly_w)
- AM_RANGE(0x180000, 0x1807ff) AM_READWRITE8(mcu_ram_r, mcu_ram_w, 0x00ff)
- AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x001000) AM_READWRITE8(equites_fg_videoram_r, equites_fg_videoram_w, 0x00ff)
- AM_RANGE(0x400000, 0x4007ff) AM_RAM_WRITE(equites_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x400800, 0x400fff) AM_RAM
- AM_RANGE(0x600000, 0x6000ff) AM_RAM AM_SHARE("spriteram") // sprite RAM 0,1
- AM_RANGE(0x600100, 0x6001ff) AM_RAM AM_SHARE("spriteram_2") // sprite RAM 2 (8-bit)
-ADDRESS_MAP_END
+void splndrbt_state::splndrbt_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x040fff).ram();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x0c0000, 0x0c0001).portr("IN1");
+ map(0x0c0000, 0x0c0000).select(0x020000).w(this, FUNC(splndrbt_state::equites_bgcolor_w));
+ map(0x0c0001, 0x0c0001).select(0x03c000).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_mainlatch->write_a3(space, offset >> 13, data, mem_mask);
+ });
+ map(0x100000, 0x100001).w(this, FUNC(splndrbt_state::splndrbt_bg_scrollx_w));
+ map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1c0000, 0x1c0001).w(this, FUNC(splndrbt_state::splndrbt_bg_scrolly_w));
+ map(0x180000, 0x1807ff).rw(this, FUNC(splndrbt_state::mcu_ram_r), FUNC(splndrbt_state::mcu_ram_w)).umask16(0x00ff);
+ map(0x200000, 0x200fff).mirror(0x001000).rw(this, FUNC(splndrbt_state::equites_fg_videoram_r), FUNC(splndrbt_state::equites_fg_videoram_w)).umask16(0x00ff);
+ map(0x400000, 0x4007ff).ram().w(this, FUNC(splndrbt_state::equites_bg_videoram_w)).share("bg_videoram");
+ map(0x400800, 0x400fff).ram();
+ map(0x600000, 0x6000ff).ram().share("spriteram"); // sprite RAM 0,1
+ map(0x600100, 0x6001ff).ram().share("spriteram_2"); // sprite RAM 2 (8-bit)
+}
-ADDRESS_MAP_START(equites_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc080, 0xc08d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0xc0a0, 0xc0a1) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0xc0b0, 0xc0b0) AM_WRITENOP // n.c.
- AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(equites_cymbal_ctrl_w)
- AM_RANGE(0xc0d0, 0xc0d0) AM_WRITE(equites_dac_latch_w) // followed by 1 (and usually 0) on 8155 port B
- AM_RANGE(0xc0e0, 0xc0e0) AM_WRITE(equites_dac_latch_w) // followed by 2 (and usually 0) on 8155 port B
- AM_RANGE(0xc0f8, 0xc0ff) AM_WRITE(equites_c0f8_w)
- AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("audio8155", i8155_device, memory_r, memory_w)
-ADDRESS_MAP_END
+void equites_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc080, 0xc08d).w(m_msm, FUNC(msm5232_device::write));
+ map(0xc0a0, 0xc0a1).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0xc0b0, 0xc0b0).nopw(); // n.c.
+ map(0xc0c0, 0xc0c0).w(this, FUNC(equites_state::equites_cymbal_ctrl_w));
+ map(0xc0d0, 0xc0d0).w(this, FUNC(equites_state::equites_dac_latch_w)); // followed by 1 (and usually 0) on 8155 port B
+ map(0xc0e0, 0xc0e0).w(this, FUNC(equites_state::equites_dac_latch_w)); // followed by 2 (and usually 0) on 8155 port B
+ map(0xc0f8, 0xc0ff).w(this, FUNC(equites_state::equites_c0f8_w));
+ map(0xe000, 0xe0ff).rw("audio8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+}
-ADDRESS_MAP_START(equites_state::sound_portmap)
- AM_RANGE(0x00e0, 0x00e7) AM_DEVREADWRITE("audio8155", i8155_device, io_r, io_w)
-ADDRESS_MAP_END
+void equites_state::sound_portmap(address_map &map)
+{
+ map(0x00e0, 0x00e7).rw("audio8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+}
ADDRESS_MAP_START(equites_state::mcu_map)
diff --git a/src/mame/drivers/ertictac.cpp b/src/mame/drivers/ertictac.cpp
index 9ada51a3550..03b983d33c8 100644
--- a/src/mame/drivers/ertictac.cpp
+++ b/src/mame/drivers/ertictac.cpp
@@ -62,17 +62,18 @@ READ32_MEMBER(ertictac_state::ertictac_podule_r)
return 0;
}
-ADDRESS_MAP_START(ertictac_state::ertictac_map)
- AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w)
- AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_SHARE("physicalram") /* physical RAM - 16 MB for now, should be 512k for the A310 */
-
- AM_RANGE(0x03000000, 0x033fffff) AM_READWRITE(archimedes_ioc_r, archimedes_ioc_w)
- AM_RANGE(0x03340000, 0x0334001f) AM_READ(ertictac_podule_r)
- AM_RANGE(0x033c0000, 0x033c001f) AM_READ(ertictac_podule_r)
- AM_RANGE(0x03400000, 0x035fffff) AM_READWRITE(archimedes_vidc_r, archimedes_vidc_w)
- AM_RANGE(0x03600000, 0x037fffff) AM_READWRITE(archimedes_memc_r, archimedes_memc_w)
- AM_RANGE(0x03800000, 0x03ffffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE(archimedes_memc_page_w)
-ADDRESS_MAP_END
+void ertictac_state::ertictac_map(address_map &map)
+{
+ map(0x00000000, 0x01ffffff).rw(this, FUNC(ertictac_state::archimedes_memc_logical_r), FUNC(ertictac_state::archimedes_memc_logical_w));
+ map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */
+
+ map(0x03000000, 0x033fffff).rw(this, FUNC(ertictac_state::archimedes_ioc_r), FUNC(ertictac_state::archimedes_ioc_w));
+ map(0x03340000, 0x0334001f).r(this, FUNC(ertictac_state::ertictac_podule_r));
+ map(0x033c0000, 0x033c001f).r(this, FUNC(ertictac_state::ertictac_podule_r));
+ map(0x03400000, 0x035fffff).rw(this, FUNC(ertictac_state::archimedes_vidc_r), FUNC(ertictac_state::archimedes_vidc_w));
+ map(0x03600000, 0x037fffff).rw(this, FUNC(ertictac_state::archimedes_memc_r), FUNC(ertictac_state::archimedes_memc_w));
+ map(0x03800000, 0x03ffffff).rom().region("maincpu", 0).w(this, FUNC(ertictac_state::archimedes_memc_page_w));
+}
static INPUT_PORTS_START( ertictac )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp
index 5ab9872759a..d6e1dd1fdf0 100644
--- a/src/mame/drivers/esd16.cpp
+++ b/src/mame/drivers/esd16.cpp
@@ -123,108 +123,131 @@ WRITE16_MEMBER(esd16_state::esd_eeprom_w)
}
-#define ESD16_IO_AREA_DSW( _BASE ) \
- AM_RANGE(_BASE + 0x0, _BASE + 0x1) AM_WRITENOP /* Irq Ack */ \
- AM_RANGE(_BASE + 0x2, _BASE + 0x3) AM_READ_PORT("P1_P2") \
- AM_RANGE(_BASE + 0x4, _BASE + 0x5) AM_READ_PORT("SYSTEM") \
- AM_RANGE(_BASE + 0x6, _BASE + 0x7) AM_READ_PORT("DSW") \
- AM_RANGE(_BASE + 0x8, _BASE + 0x9) AM_WRITE(esd16_tilemap0_color_w) \
- AM_RANGE(_BASE + 0xa, _BASE + 0xb) AM_WRITENOP /* Unknown */ \
- AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITE(esd16_sound_command_w) \
- AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITENOP /* n/c */
-#define ESD16_IO_AREA_EEPROM( _BASE ) \
- AM_RANGE(_BASE + 0x0, _BASE + 0x1) AM_WRITENOP /* Irq Ack */ \
- AM_RANGE(_BASE + 0x2, _BASE + 0x3) AM_READ_PORT("P1_P2") \
- AM_RANGE(_BASE + 0x4, _BASE + 0x5) AM_READ_PORT("SYSTEM") \
- AM_RANGE(_BASE + 0x6, _BASE + 0x7) AM_READ(esd_eeprom_r) \
- AM_RANGE(_BASE + 0x8, _BASE + 0x9) AM_WRITE(esd16_tilemap0_color_w) \
- AM_RANGE(_BASE + 0xa, _BASE + 0xb) AM_WRITENOP /* Unknown */ \
- AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITE(esd16_sound_command_w) \
- AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITE(esd_eeprom_w)
-#define ESD16_VID_ATTR_AREA( _BASE ) \
- AM_RANGE(_BASE + 0x0, _BASE + 0x3) AM_WRITEONLY AM_SHARE("scroll_0") \
- AM_RANGE(_BASE + 0x4, _BASE + 0x7) AM_WRITEONLY AM_SHARE("scroll_1") \
- AM_RANGE(_BASE + 0x8, _BASE + 0x9) AM_WRITEONLY AM_SHARE("platform_x") \
- AM_RANGE(_BASE + 0xa, _BASE + 0xb) AM_WRITEONLY AM_SHARE("platform_y") \
- AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITENOP \
- AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITEONLY AM_SHARE("head_layersize")
-#define ESD16_PALETTE_AREA( _BASE ) \
- AM_RANGE(_BASE + 0x000, _BASE + 0xfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-#define ESD16_SPRITE_AREA( _BASE ) \
- AM_RANGE(_BASE + 0x000, _BASE + 0x7ff) AM_WRITEONLY AM_SHARE("spriteram") AM_MIRROR(0x000800)
-#define ESD16_VRAM_AREA( _BASE ) \
- AM_RANGE(_BASE + 0x00000, _BASE + 0x03fff) AM_WRITE(esd16_vram_0_w) AM_SHARE("vram_0") AM_MIRROR(0x4000) \
- AM_RANGE(_BASE + 0x20000, _BASE + 0x23fff) AM_WRITE(esd16_vram_1_w) AM_SHARE("vram_1") AM_MIRROR(0x4000)
+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(this, FUNC(esd16_state::esd16_tilemap0_color_w));
+ map(base + 0xa, base + 0xb).nopw(); /* Unknown */
+ map(base + 0xc, base + 0xd).w(this, FUNC(esd16_state::esd16_sound_command_w));
+ map(base + 0xe, base + 0xf).nopw(); /* n/c */
+}
+
+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 + 0x7).r(this, FUNC(esd16_state::esd_eeprom_r));
+ map(base + 0x8, base + 0x9).w(this, FUNC(esd16_state::esd16_tilemap0_color_w));
+ map(base + 0xa, base + 0xb).nopw(); /* Unknown */
+ map(base + 0xc, base + 0xd).w(this, FUNC(esd16_state::esd16_sound_command_w));
+ map(base + 0xe, base + 0xf).w(this, FUNC(esd16_state::esd_eeprom_w));
+}
+
+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");
+ map(base + 0x8, base + 0x9).writeonly().share("platform_x");
+ map(base + 0xa, base + 0xb).writeonly().share("platform_y");
+ map(base + 0xc, base + 0xd).nopw();
+ map(base + 0xe, base + 0xf).writeonly().share("head_layersize");
+}
+
+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::esd16_sprite_area(address_map &map, u32 base)
+{
+ map(base + 0x000, base + 0x7ff).writeonly().share("spriteram").mirror(0x000800);
+}
+
+void esd16_state::esd16_vram_area(address_map &map, u32 base)
+{
+ map(base + 0x00000, base + 0x03fff).w(this, FUNC(esd16_state::esd16_vram_0_w)).share("vram_0").mirror(0x4000);
+ map(base + 0x20000, base + 0x23fff).w(this, FUNC(esd16_state::esd16_vram_1_w)).share("vram_1").mirror(0x4000);
+}
+
/*** Memory Maps ***/
-ADDRESS_MAP_START(esd16_state::multchmp_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
+void esd16_state::multchmp_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
- ESD16_PALETTE_AREA( 0x200000 )
- ESD16_SPRITE_AREA( 0x300000 )
- ESD16_VRAM_AREA( 0x400000 )
- ESD16_VID_ATTR_AREA( 0x500000 )
- ESD16_IO_AREA_DSW( 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);
- AM_RANGE(0x700008, 0x70000b) AM_READNOP // unused protection?
-ADDRESS_MAP_END
+ map(0x700008, 0x70000b).nopr(); // unused protection?
+}
-ADDRESS_MAP_START(esd16_state::jumppop_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x120000, 0x123fff) AM_RAM
- AM_RANGE(0x1a0000, 0x1a7fff) AM_RAM
+void esd16_state::jumppop_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x120000, 0x123fff).ram();
+ map(0x1a0000, 0x1a7fff).ram();
- AM_RANGE(0x180008, 0x180009) AM_WRITE(esd16_tilemap0_color_jumppop_w) // todo
+ map(0x180008, 0x180009).w(this, FUNC(esd16_state::esd16_tilemap0_color_jumppop_w)); // todo
- ESD16_PALETTE_AREA( 0x140000 )
- ESD16_SPRITE_AREA( 0x160000 )
- ESD16_IO_AREA_DSW( 0x180000 )
- ESD16_VRAM_AREA( 0x300000 )
- ESD16_VID_ATTR_AREA( 0x380000 )
-ADDRESS_MAP_END
+ 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);
+}
-ADDRESS_MAP_START(esd16_state::hedpanic_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
+void esd16_state::hedpanic_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
- ESD16_PALETTE_AREA( 0x800000 )
- ESD16_SPRITE_AREA( 0x900000 )
- ESD16_VRAM_AREA( 0xa00000 )
- ESD16_VID_ATTR_AREA( 0xb00000 )
- ESD16_IO_AREA_EEPROM( 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);
- AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) // protection
-ADDRESS_MAP_END
+ map(0xd00008, 0xd00009).w(this, FUNC(esd16_state::hedpanic_platform_w)); // protection
+}
/* Multi Champ Deluxe, like Head Panic but different addresses */
-ADDRESS_MAP_START(esd16_state::mchampdx_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
+void esd16_state::mchampdx_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram();
- ESD16_VRAM_AREA( 0x300000 )
- ESD16_PALETTE_AREA( 0x400000 )
- ESD16_IO_AREA_EEPROM( 0x500000 )
- ESD16_SPRITE_AREA( 0x600000 )
- ESD16_VID_ATTR_AREA( 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);
- AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) // not used in mchampdx?
-ADDRESS_MAP_END
+ map(0xd00008, 0xd00009).w(this, FUNC(esd16_state::hedpanic_platform_w)); // not used in mchampdx?
+}
/* Tang Tang & Deluxe 5 - like the others but again with different addresses */
-ADDRESS_MAP_START(esd16_state::tangtang_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x700000, 0x70ffff) AM_RAM
-
- ESD16_PALETTE_AREA( 0x100000 )
- ESD16_SPRITE_AREA( 0x200000 )
- ESD16_VRAM_AREA( 0x300000 )
- ESD16_VID_ATTR_AREA( 0x400000 )
- ESD16_IO_AREA_EEPROM( 0x500000 )
- AM_RANGE(0x600008, 0x600009) AM_WRITE(hedpanic_platform_w)
-ADDRESS_MAP_END
+void esd16_state::tangtang_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x700000, 0x70ffff).ram();
+
+ 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(this, FUNC(esd16_state::hedpanic_platform_w));
+}
/***************************************************************************
@@ -241,11 +264,12 @@ WRITE8_MEMBER(esd16_state::esd16_sound_rombank_w)
membank("bank1")->set_entry(bank);
}
-ADDRESS_MAP_START(esd16_state::multchmp_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void esd16_state::multchmp_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+ map(0xf800, 0xffff).ram(); // RAM
+}
READ8_MEMBER(esd16_state::esd16_sound_command_r)
{
@@ -254,15 +278,16 @@ READ8_MEMBER(esd16_state::esd16_sound_command_r)
return m_soundlatch->read(space, 0);
}
-ADDRESS_MAP_START(esd16_state::multchmp_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3812_device, write) // YM3812
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295
- AM_RANGE(0x03, 0x03) AM_READ(esd16_sound_command_r) // From Main CPU
- AM_RANGE(0x04, 0x04) AM_WRITENOP // ? $00, $30
- AM_RANGE(0x05, 0x05) AM_WRITE(esd16_sound_rombank_w) // ROM Bank
- AM_RANGE(0x06, 0x06) AM_NOP // ? At the start / ? 1 (End of NMI routine)
-ADDRESS_MAP_END
+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(this, FUNC(esd16_state::esd16_sound_command_r)); // From Main CPU
+ map(0x04, 0x04).nopw(); // ? $00, $30
+ map(0x05, 0x05).w(this, FUNC(esd16_state::esd16_sound_rombank_w)); // ROM Bank
+ map(0x06, 0x06).noprw(); // ? At the start / ? 1 (End of NMI routine)
+}
/***************************************************************************
diff --git a/src/mame/drivers/esh.cpp b/src/mame/drivers/esh.cpp
index 8182b20d16b..61b683e1824 100644
--- a/src/mame/drivers/esh.cpp
+++ b/src/mame/drivers/esh.cpp
@@ -210,27 +210,29 @@ WRITE8_MEMBER(esh_state::nmi_line_w)
/* PROGRAM MAPS */
-ADDRESS_MAP_START(esh_state::z80_0_mem)
- AM_RANGE(0x0000,0x3fff) AM_ROM
- AM_RANGE(0xe000,0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000,0xf3ff) AM_RAM AM_SHARE("tile_ram")
- AM_RANGE(0xf400,0xf7ff) AM_RAM AM_SHARE("tile_ctrl_ram")
-ADDRESS_MAP_END
+void esh_state::z80_0_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xf000, 0xf3ff).ram().share("tile_ram");
+ map(0xf400, 0xf7ff).ram().share("tile_ctrl_ram");
+}
/* IO MAPS */
-ADDRESS_MAP_START(esh_state::z80_0_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0,0xf0) AM_READ_PORT("IN0")
- AM_RANGE(0xf1,0xf1) AM_READ_PORT("IN1")
- AM_RANGE(0xf2,0xf2) AM_READ_PORT("IN2")
- AM_RANGE(0xf3,0xf3) AM_READ_PORT("IN3")
- AM_RANGE(0xf4,0xf4) AM_READWRITE(ldp_read,ldp_write)
- AM_RANGE(0xf5,0xf5) AM_WRITE(misc_write) /* Continuously writes repeating patterns */
- AM_RANGE(0xf8,0xfd) AM_WRITE(led_writes)
- AM_RANGE(0xfe,0xfe) AM_WRITE(nmi_line_w) /* Both 0xfe and 0xff flip quickly between 0 and 1 */
- AM_RANGE(0xff,0xff) AM_NOP /* (they're probably not NMI enables - likely LED's like their neighbors :) */
-ADDRESS_MAP_END /* (someday 0xf8-0xff will probably be a single handler) */
+void esh_state::z80_0_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).portr("IN0");
+ map(0xf1, 0xf1).portr("IN1");
+ map(0xf2, 0xf2).portr("IN2");
+ map(0xf3, 0xf3).portr("IN3");
+ map(0xf4, 0xf4).rw(this, FUNC(esh_state::ldp_read), FUNC(esh_state::ldp_write));
+ map(0xf5, 0xf5).w(this, FUNC(esh_state::misc_write)); /* Continuously writes repeating patterns */
+ map(0xf8, 0xfd).w(this, FUNC(esh_state::led_writes));
+ map(0xfe, 0xfe).w(this, FUNC(esh_state::nmi_line_w)); /* Both 0xfe and 0xff flip quickly between 0 and 1 */
+ map(0xff, 0xff).noprw(); /* (they're probably not NMI enables - likely LED's like their neighbors :) */
+} /* (someday 0xf8-0xff will probably be a single handler) */
/* PORTS */
diff --git a/src/mame/drivers/espial.cpp b/src/mame/drivers/espial.cpp
index a8eafd7fe8b..eafd31e2a70 100644
--- a/src/mame/drivers/espial.cpp
+++ b/src/mame/drivers/espial.cpp
@@ -101,63 +101,67 @@ WRITE8_MEMBER(espial_state::espial_master_soundlatch_w)
}
-ADDRESS_MAP_START(espial_state::espial_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x5800, 0x5fff) AM_RAM
- AM_RANGE(0x6081, 0x6081) AM_READ_PORT("IN0")
- AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1")
- AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN1")
- AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN2")
- AM_RANGE(0x6090, 0x6090) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(espial_master_soundlatch_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w)
- AM_RANGE(0x7100, 0x7100) AM_WRITE(espial_master_interrupt_mask_w)
- AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w)
- AM_RANGE(0x8000, 0x801f) AM_RAM AM_SHARE("spriteram_1")
- AM_RANGE(0x8020, 0x803f) AM_READONLY
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x880f) AM_WRITEONLY AM_SHARE("spriteram_3")
- AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_SHARE("attributeram")
- AM_RANGE(0x9000, 0x901f) AM_RAM AM_SHARE("spriteram_2")
- AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_SHARE("scrollram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xcfff) AM_ROM
-ADDRESS_MAP_END
+void espial_state::espial_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x5800, 0x5fff).ram();
+ map(0x6081, 0x6081).portr("IN0");
+ map(0x6082, 0x6082).portr("DSW1");
+ map(0x6083, 0x6083).portr("IN1");
+ map(0x6084, 0x6084).portr("IN2");
+ map(0x6090, 0x6090).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(this, FUNC(espial_state::espial_master_soundlatch_w));
+ map(0x7000, 0x7000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w));
+ map(0x7100, 0x7100).w(this, FUNC(espial_state::espial_master_interrupt_mask_w));
+ map(0x7200, 0x7200).w(this, FUNC(espial_state::espial_flipscreen_w));
+ map(0x8000, 0x801f).ram().share("spriteram_1");
+ map(0x8020, 0x803f).readonly();
+ map(0x8400, 0x87ff).ram().w(this, FUNC(espial_state::espial_videoram_w)).share("videoram");
+ map(0x8800, 0x880f).writeonly().share("spriteram_3");
+ map(0x8c00, 0x8fff).ram().w(this, FUNC(espial_state::espial_attributeram_w)).share("attributeram");
+ map(0x9000, 0x901f).ram().share("spriteram_2");
+ map(0x9020, 0x903f).ram().w(this, FUNC(espial_state::espial_scrollram_w)).share("scrollram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(espial_state::espial_colorram_w)).share("colorram");
+ map(0xc000, 0xcfff).rom();
+}
/* there are a lot of unmapped reads from all over memory as the
code uses POP instructions in a delay loop */
-ADDRESS_MAP_START(espial_state::netwars_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5800, 0x5fff) AM_RAM
- AM_RANGE(0x6081, 0x6081) AM_READ_PORT("IN0")
- AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1")
- AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN1")
- AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN2")
- AM_RANGE(0x6090, 0x6090) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(espial_master_soundlatch_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w)
- AM_RANGE(0x7100, 0x7100) AM_WRITE(espial_master_interrupt_mask_w)
- AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x801f) AM_RAM AM_SHARE("spriteram_1")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_SHARE("attributeram")
- AM_RANGE(0x8800, 0x880f) AM_RAM AM_SHARE("spriteram_3")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9000, 0x901f) AM_RAM AM_SHARE("spriteram_2")
- AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_SHARE("scrollram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(espial_state::espial_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_WRITE(espial_sound_nmi_mask_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(espial_state::espial_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void espial_state::netwars_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x5800, 0x5fff).ram();
+ map(0x6081, 0x6081).portr("IN0");
+ map(0x6082, 0x6082).portr("DSW1");
+ map(0x6083, 0x6083).portr("IN1");
+ map(0x6084, 0x6084).portr("IN2");
+ map(0x6090, 0x6090).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(this, FUNC(espial_state::espial_master_soundlatch_w));
+ map(0x7000, 0x7000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w));
+ map(0x7100, 0x7100).w(this, FUNC(espial_state::espial_master_interrupt_mask_w));
+ map(0x7200, 0x7200).w(this, FUNC(espial_state::espial_flipscreen_w));
+ map(0x8000, 0x87ff).ram().w(this, FUNC(espial_state::espial_videoram_w)).share("videoram");
+ map(0x8000, 0x801f).ram().share("spriteram_1");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(espial_state::espial_attributeram_w)).share("attributeram");
+ map(0x8800, 0x880f).ram().share("spriteram_3");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(espial_state::espial_colorram_w)).share("colorram");
+ map(0x9000, 0x901f).ram().share("spriteram_2");
+ map(0x9020, 0x903f).ram().w(this, FUNC(espial_state::espial_scrollram_w)).share("scrollram");
+}
+
+
+void espial_state::espial_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x4000).w(this, FUNC(espial_state::espial_sound_nmi_mask_w));
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
+
+void espial_state::espial_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/* verified from Z80 code */
diff --git a/src/mame/drivers/esprit.cpp b/src/mame/drivers/esprit.cpp
index 64a5b0f5aa4..f807f578fd1 100644
--- a/src/mame/drivers/esprit.cpp
+++ b/src/mame/drivers/esprit.cpp
@@ -43,22 +43,24 @@ private:
optional_device<palette_device> m_palette;
};
-ADDRESS_MAP_START(esprit_state::mem_map)
- ADDRESS_MAP_GLOBAL_MASK (0x7fff)
- AM_RANGE(0x0058,0x0058) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x0059,0x0059) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0080,0x1fff) AM_RAM
- AM_RANGE(0x2000,0x6fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x7000,0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(esprit_state::mem3_map)
- AM_RANGE(0x0000,0x202f) AM_RAM
- AM_RANGE(0x2030,0x3fff) AM_RAM AM_SHARE("videoram") // it might start at 3000
- AM_RANGE(0x81c0,0x81c0) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x81c1,0x81c1) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0xe000,0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void esprit_state::mem_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0058, 0x0058).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x0059, 0x0059).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0080, 0x1fff).ram();
+ map(0x2000, 0x6fff).ram().share("videoram");
+ map(0x7000, 0x7fff).rom().region("roms", 0);
+}
+
+void esprit_state::mem3_map(address_map &map)
+{
+ map(0x0000, 0x202f).ram();
+ map(0x2030, 0x3fff).ram().share("videoram"); // it might start at 3000
+ map(0x81c0, 0x81c0).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x81c1, 0x81c1).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xe000, 0xffff).rom().region("roms", 0);
+}
static INPUT_PORTS_START( esprit )
INPUT_PORTS_END
diff --git a/src/mame/drivers/esq1.cpp b/src/mame/drivers/esq1.cpp
index a07f82d9080..33e657ba3a0 100644
--- a/src/mame/drivers/esq1.cpp
+++ b/src/mame/drivers/esq1.cpp
@@ -503,28 +503,30 @@ WRITE8_MEMBER(esq1_state::seqdosram_w)
}
}
-ADDRESS_MAP_START(esq1_state::esq1_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM // OSRAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM // SEQRAM
- AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("es5503", es5503_device, read, write)
- AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0x6800, 0x68ff) AM_WRITE(analog_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("osbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("osrom", 0x8000) // OS "high" ROM is always mapped here
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(esq1_state::sq80_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM // OSRAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM // SEQRAM
+void esq1_state::esq1_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram(); // OSRAM
+ map(0x4000, 0x5fff).ram(); // SEQRAM
+ map(0x6000, 0x63ff).rw("es5503", FUNC(es5503_device::read), FUNC(es5503_device::write));
+ map(0x6400, 0x640f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0x6800, 0x68ff).w(this, FUNC(esq1_state::analog_w));
+ map(0x7000, 0x7fff).bankr("osbank");
+ map(0x8000, 0xffff).rom().region("osrom", 0x8000); // OS "high" ROM is always mapped here
+}
+
+void esq1_state::sq80_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram(); // OSRAM
+ map(0x4000, 0x5fff).ram(); // SEQRAM
// AM_RANGE(0x4000, 0x5fff) AM_READWRITE(seqdosram_r, seqdosram_w)
- AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("es5503", es5503_device, read, write)
- AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0x6800, 0x68ff) AM_WRITE(analog_w)
- AM_RANGE(0x6c00, 0x6dff) AM_WRITE(mapper_w)
- AM_RANGE(0x6e00, 0x6fff) AM_READWRITE(wd1772_r, wd1772_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("osbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("osrom", 0x8000) // OS "high" ROM is always mapped here
-ADDRESS_MAP_END
+ map(0x6000, 0x63ff).rw("es5503", FUNC(es5503_device::read), FUNC(es5503_device::write));
+ map(0x6400, 0x640f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0x6800, 0x68ff).w(this, FUNC(esq1_state::analog_w));
+ map(0x6c00, 0x6dff).w(this, FUNC(esq1_state::mapper_w));
+ map(0x6e00, 0x6fff).rw(this, FUNC(esq1_state::wd1772_r), FUNC(esq1_state::wd1772_w));
+ map(0x7000, 0x7fff).bankr("osbank");
+ map(0x8000, 0xffff).rom().region("osrom", 0x8000); // OS "high" ROM is always mapped here
+}
// from the schematics:
//
diff --git a/src/mame/drivers/esq5505.cpp b/src/mame/drivers/esq5505.cpp
index 43c53dfd03b..14fe07729e6 100644
--- a/src/mame/drivers/esq5505.cpp
+++ b/src/mame/drivers/esq5505.cpp
@@ -378,46 +378,50 @@ WRITE16_MEMBER(esq5505_state::lower_w)
}
}
-ADDRESS_MAP_START(esq5505_state::vfx_map)
- AM_RANGE(0x000000, 0x007fff) AM_READWRITE(lower_r, lower_w)
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write)
- AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc1ffff) AM_ROM AM_REGION("osrom", 0)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(esq5505_state::vfxsd_map)
- AM_RANGE(0x000000, 0x00ffff) AM_READWRITE(lower_r, lower_w)
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write)
- AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x00ff)
- AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_device, read, write, 0x00ff)
- AM_RANGE(0x330000, 0x3bffff) AM_RAM // sequencer memory?
- AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("osrom", 0)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(esq5505_state::eps_map)
- AM_RANGE(0x000000, 0x007fff) AM_READWRITE(lower_r, lower_w)
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write)
- AM_RANGE(0x240000, 0x2400ff) AM_DEVREADWRITE("mc68450", hd63450_device, read, write)
- AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_device, read, write, 0x00ff)
- AM_RANGE(0x580000, 0x7fffff) AM_RAM // sample RAM?
- AM_RANGE(0xc00000, 0xc1ffff) AM_ROM AM_REGION("osrom", 0)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(esq5505_state::sq1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_READWRITE(lower_r, lower_w)
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write)
- AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x0ff)
- AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x330000, 0x3bffff) AM_RAM // sequencer memory?
- AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("osrom", 0)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
-ADDRESS_MAP_END
+void esq5505_state::vfx_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w));
+ map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write));
+ map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask16(0x00ff);
+ map(0xc00000, 0xc1ffff).rom().region("osrom", 0);
+ map(0xff0000, 0xffffff).ram().share("osram");
+}
+
+void esq5505_state::vfxsd_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w));
+ map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write));
+ map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask16(0x00ff);
+ map(0x2c0000, 0x2c0007).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff);
+ map(0x330000, 0x3bffff).ram(); // sequencer memory?
+ map(0xc00000, 0xc3ffff).rom().region("osrom", 0);
+ map(0xff0000, 0xffffff).ram().share("osram");
+}
+
+void esq5505_state::eps_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w));
+ map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write));
+ map(0x240000, 0x2400ff).rw(m_dmac, FUNC(hd63450_device::read), FUNC(hd63450_device::write));
+ map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x2c0000, 0x2c0007).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff);
+ map(0x580000, 0x7fffff).ram(); // sample RAM?
+ map(0xc00000, 0xc1ffff).rom().region("osrom", 0);
+ map(0xff0000, 0xffffff).ram().share("osram");
+}
+
+void esq5505_state::sq1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w));
+ map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write));
+ map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask16(0x00ff);
+ map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x330000, 0x3bffff).ram(); // sequencer memory?
+ map(0xc00000, 0xc3ffff).rom().region("osrom", 0);
+ map(0xff0000, 0xffffff).ram().share("osram");
+}
WRITE_LINE_MEMBER(esq5505_state::esq5505_otis_irq)
{
diff --git a/src/mame/drivers/esqasr.cpp b/src/mame/drivers/esqasr.cpp
index ae445bb74f5..8ce0a98e8a6 100644
--- a/src/mame/drivers/esqasr.cpp
+++ b/src/mame/drivers/esqasr.cpp
@@ -91,16 +91,18 @@ void esqasr_state::machine_reset()
{
}
-ADDRESS_MAP_START(esqasr_state::asr_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xf00000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(esqasr_state::asrx_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x08000000, 0x081fffff) AM_RAM
- AM_RANGE(0x0be00000, 0x0befffff) AM_RAM
-ADDRESS_MAP_END
+void esqasr_state::asr_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().region("maincpu", 0);
+ map(0xf00000, 0xffffff).ram();
+}
+
+void esqasr_state::asrx_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom().region("maincpu", 0);
+ map(0x08000000, 0x081fffff).ram();
+ map(0x0be00000, 0x0befffff).ram();
+}
WRITE_LINE_MEMBER(esqasr_state::esq5506_otto_irq)
{
diff --git a/src/mame/drivers/esqkt.cpp b/src/mame/drivers/esqkt.cpp
index 1fed678febe..0f90c6d8e11 100644
--- a/src/mame/drivers/esqkt.cpp
+++ b/src/mame/drivers/esqkt.cpp
@@ -151,14 +151,15 @@ void esqkt_state::machine_reset()
m_bCalibSecondByte = false;
}
-ADDRESS_MAP_START(esqkt_state::kt_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("osrom", 0)
- AM_RANGE(0x200000, 0x20003f) AM_DEVREADWRITE8("ensoniq1", es5506_device, read, write, 0xffffffff)
- AM_RANGE(0x240000, 0x24003f) AM_DEVREADWRITE8("ensoniq2", es5506_device, read, write, 0xffffffff)
- AM_RANGE(0x280000, 0x2801ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0xffffffff)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
-ADDRESS_MAP_END
+void esqkt_state::kt_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("osrom", 0);
+ map(0x200000, 0x20003f).rw("ensoniq1", FUNC(es5506_device::read), FUNC(es5506_device::write));
+ map(0x240000, 0x24003f).rw("ensoniq2", FUNC(es5506_device::read), FUNC(es5506_device::write));
+ map(0x280000, 0x2801ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w));
+ map(0x300000, 0x30001f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0xff0000, 0xffffff).ram().share("osram");
+}
WRITE_LINE_MEMBER(esqkt_state::esq5506_otto_irq)
{
diff --git a/src/mame/drivers/esqmr.cpp b/src/mame/drivers/esqmr.cpp
index 5ebb9ce9b97..4687c7a8f61 100644
--- a/src/mame/drivers/esqmr.cpp
+++ b/src/mame/drivers/esqmr.cpp
@@ -234,12 +234,13 @@ void esqmr_state::machine_reset()
{
}
-ADDRESS_MAP_START(esqmr_state::mr_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0)
+void esqmr_state::mr_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom().region("maincpu", 0);
// AM_RANGE(0x200000, 0x20003f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0xffffffff)
// AM_RANGE(0x240000, 0x24003f) AM_DEVREADWRITE8("ensoniq2", es5506_device, read, write, 0xffffffff)
// AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
-ADDRESS_MAP_END
+}
WRITE_LINE_MEMBER(esqmr_state::esq5506_otto_irq)
{
diff --git a/src/mame/drivers/esripsys.cpp b/src/mame/drivers/esripsys.cpp
index 8910f6b7f29..a06378be848 100644
--- a/src/mame/drivers/esripsys.cpp
+++ b/src/mame/drivers/esripsys.cpp
@@ -564,50 +564,54 @@ WRITE8_MEMBER(esripsys_state::esripsys_dac_w)
*
*************************************/
-ADDRESS_MAP_START(esripsys_state::game_cpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x4000, 0x42ff) AM_RAM AM_SHARE("pal_ram")
- AM_RANGE(0x4300, 0x4300) AM_WRITE(esripsys_bg_intensity_w)
- AM_RANGE(0x4400, 0x47ff) AM_NOP // Collision detection RAM
- AM_RANGE(0x4800, 0x4bff) AM_READWRITE(g_status_r, g_status_w)
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(g_iobus_r, g_iobus_w)
- AM_RANGE(0x5000, 0x53ff) AM_WRITE(g_ioadd_w)
- AM_RANGE(0x5400, 0x57ff) AM_NOP
- AM_RANGE(0x5c00, 0x5fff) AM_READWRITE(uart_r, uart_w)
- AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(esripsys_state::frame_cpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x4000, 0x4fff) AM_READWRITE(fdt_r, fdt_w)
- AM_RANGE(0x6000, 0x6000) AM_READWRITE(f_status_r, f_status_w)
- AM_RANGE(0x8000, 0x8000) AM_WRITE(frame_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(esripsys_state::sound_cpu_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_RAM // Not installed on later PCBs
- AM_RANGE(0x2008, 0x2009) AM_READWRITE(tms5220_r, tms5220_w)
- AM_RANGE(0x200a, 0x200b) AM_WRITE(esripsys_dac_w)
- AM_RANGE(0x200c, 0x200c) AM_DEVWRITE("dacvol", dac_byte_interface, write)
- AM_RANGE(0x200d, 0x200d) AM_WRITE(control_w)
- AM_RANGE(0x200e, 0x200e) AM_READWRITE(s_200e_r, s_200e_w)
- AM_RANGE(0x200f, 0x200f) AM_READWRITE(s_200f_r, s_200f_w)
- AM_RANGE(0x2020, 0x2027) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write)
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank3")
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank4")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(esripsys_state::video_cpu_map)
- AM_RANGE(0x000, 0x1ff) AM_ROM
-ADDRESS_MAP_END
+void esripsys_state::game_cpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().share("share1");
+ map(0x4000, 0x42ff).ram().share("pal_ram");
+ map(0x4300, 0x4300).w(this, FUNC(esripsys_state::esripsys_bg_intensity_w));
+ map(0x4400, 0x47ff).noprw(); // Collision detection RAM
+ map(0x4800, 0x4bff).rw(this, FUNC(esripsys_state::g_status_r), FUNC(esripsys_state::g_status_w));
+ map(0x4c00, 0x4fff).rw(this, FUNC(esripsys_state::g_iobus_r), FUNC(esripsys_state::g_iobus_w));
+ map(0x5000, 0x53ff).w(this, FUNC(esripsys_state::g_ioadd_w));
+ map(0x5400, 0x57ff).noprw();
+ map(0x5c00, 0x5fff).rw(this, FUNC(esripsys_state::uart_r), FUNC(esripsys_state::uart_w));
+ map(0x6000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xffff).rom();
+}
+
+
+void esripsys_state::frame_cpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().share("share1");
+ map(0x4000, 0x4fff).rw(this, FUNC(esripsys_state::fdt_r), FUNC(esripsys_state::fdt_w));
+ map(0x6000, 0x6000).rw(this, FUNC(esripsys_state::f_status_r), FUNC(esripsys_state::f_status_w));
+ map(0x8000, 0x8000).w(this, FUNC(esripsys_state::frame_w));
+ map(0xc000, 0xffff).rom();
+}
+
+
+void esripsys_state::sound_cpu_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0fff).ram(); // Not installed on later PCBs
+ map(0x2008, 0x2009).rw(this, FUNC(esripsys_state::tms5220_r), FUNC(esripsys_state::tms5220_w));
+ map(0x200a, 0x200b).w(this, FUNC(esripsys_state::esripsys_dac_w));
+ map(0x200c, 0x200c).w("dacvol", FUNC(dac_byte_interface::write));
+ map(0x200d, 0x200d).w(this, FUNC(esripsys_state::control_w));
+ map(0x200e, 0x200e).rw(this, FUNC(esripsys_state::s_200e_r), FUNC(esripsys_state::s_200e_w));
+ map(0x200f, 0x200f).rw(this, FUNC(esripsys_state::s_200f_r), FUNC(esripsys_state::s_200f_w));
+ map(0x2020, 0x2027).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0x8000, 0x9fff).bankr("bank2");
+ map(0xa000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xdfff).bankr("bank4");
+ map(0xe000, 0xffff).rom();
+}
+
+
+void esripsys_state::video_cpu_map(address_map &map)
+{
+ map(0x000, 0x1ff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/et3400.cpp b/src/mame/drivers/et3400.cpp
index bbe3a48bda9..a50641dbbd5 100644
--- a/src/mame/drivers/et3400.cpp
+++ b/src/mame/drivers/et3400.cpp
@@ -137,15 +137,16 @@ WRITE8_MEMBER(et3400_state::pia_bw)
}
-ADDRESS_MAP_START(et3400_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_RAM
- AM_RANGE( 0x1000, 0x1003 ) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE( 0x1400, 0x23ff ) AM_ROM AM_REGION("roms", 0)
- AM_RANGE( 0xc000, 0xc0ff ) AM_READ(keypad_r)
- AM_RANGE( 0xc100, 0xc1ff ) AM_WRITE(display_w)
- AM_RANGE( 0xfc00, 0xffff ) AM_ROM AM_REGION("roms", 0x1000)
-ADDRESS_MAP_END
+void et3400_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1003).mirror(0x03fc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1400, 0x23ff).rom().region("roms", 0);
+ map(0xc000, 0xc0ff).r(this, FUNC(et3400_state::keypad_r));
+ map(0xc100, 0xc1ff).w(this, FUNC(et3400_state::display_w));
+ map(0xfc00, 0xffff).rom().region("roms", 0x1000);
+}
WRITE_LINE_MEMBER(et3400_state::reset_key_w)
{
diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp
index 9955e428df7..bde64892b81 100644
--- a/src/mame/drivers/eti660.cpp
+++ b/src/mame/drivers/eti660.cpp
@@ -80,20 +80,22 @@ WRITE8_MEMBER( eti660_state::colorram_w )
/* Memory Maps */
-ADDRESS_MAP_START(eti660_state::mem_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x0400, 0x047f) AM_RAM
- AM_RANGE(0x0480, 0x05ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0600, 0x0fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(eti660_state::io_map)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(pia_r, pia_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(colorram_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispoff_r, tone_latch_w)
-ADDRESS_MAP_END
+void eti660_state::mem_map(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x047f).ram();
+ map(0x0480, 0x05ff).ram().share("videoram");
+ map(0x0600, 0x0fff).ram();
+}
+
+void eti660_state::io_map(address_map &map)
+{
+ map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w));
+ map(0x02, 0x02).rw(this, FUNC(eti660_state::pia_r), FUNC(eti660_state::pia_w));
+ map(0x03, 0x03).w(this, FUNC(eti660_state::colorram_w));
+ map(0x04, 0x04).rw(m_cti, FUNC(cdp1864_device::dispoff_r), FUNC(cdp1864_device::tone_latch_w));
+}
/* Input Ports */
static INPUT_PORTS_START( eti660 )
diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp
index 2a4d8a7eaa4..455d530ff98 100644
--- a/src/mame/drivers/ettrivia.cpp
+++ b/src/mame/drivers/ettrivia.cpp
@@ -155,21 +155,23 @@ WRITE8_MEMBER(ettrivia_state::b800_w)
m_b800_prev = data;
}
-ADDRESS_MAP_START(ettrivia_state::cpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9000, 0x9000) AM_WRITE(ettrivia_control_w)
- AM_RANGE(0x9800, 0x9800) AM_WRITENOP
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP
- AM_RANGE(0xb000, 0xb000) AM_READ(b000_r) AM_WRITE(b000_w)
- AM_RANGE(0xb800, 0xb800) AM_WRITE(b800_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(ettrivia_fg_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ettrivia_bg_w) AM_SHARE("bg_videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ettrivia_state::io_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(ettrivia_question_r)
-ADDRESS_MAP_END
+void ettrivia_state::cpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x9000, 0x9000).w(this, FUNC(ettrivia_state::ettrivia_control_w));
+ map(0x9800, 0x9800).nopw();
+ map(0xa000, 0xa000).nopw();
+ map(0xb000, 0xb000).r(this, FUNC(ettrivia_state::b000_r)).w(this, FUNC(ettrivia_state::b000_w));
+ map(0xb800, 0xb800).w(this, FUNC(ettrivia_state::b800_w));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(ettrivia_state::ettrivia_fg_w)).share("fg_videoram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(ettrivia_state::ettrivia_bg_w)).share("bg_videoram");
+}
+
+void ettrivia_state::io_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(ettrivia_state::ettrivia_question_r));
+}
static INPUT_PORTS_START( ettrivia )
PORT_START("IN0")
diff --git a/src/mame/drivers/eurocom2.cpp b/src/mame/drivers/eurocom2.cpp
index db78bfcaa18..6be6bd3bfee 100644
--- a/src/mame/drivers/eurocom2.cpp
+++ b/src/mame/drivers/eurocom2.cpp
@@ -330,26 +330,28 @@ uint32_t eurocom2_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-ADDRESS_MAP_START(eurocom2_state::eurocom2_map)
- AM_RANGE(0x0000, 0xefff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xfcef) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xfcf0, 0xfcf3) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0xfcf4, 0xfcf5) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xfcf6, 0xfcf7) AM_WRITE(vico_w)
- AM_RANGE(0xfcf8, 0xfcfb) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0xfd30, 0xfd37) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0xfd38, 0xfd38) AM_READWRITE(fdc_aux_r, fdc_aux_w)
- AM_RANGE(0xfd40, 0xffff) AM_ROM AM_REGION("maincpu", 0xd40) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(waveterm_state::waveterm_map)
- AM_IMPORT_FROM(eurocom2_map)
- AM_RANGE(0xfd00, 0xfd03) AM_DEVREADWRITE("pia3", pia6821_device, read, write)
- AM_RANGE(0xfd08, 0xfd0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xfd10, 0xfd17) AM_UNMAP
- AM_RANGE(0xfd18, 0xfd18) AM_READ(waveterm_adc) // AD558 ADC
+void eurocom2_state::eurocom2_map(address_map &map)
+{
+ map(0x0000, 0xefff).ram().share("videoram");
+ map(0xf000, 0xfcef).rom().region("maincpu", 0);
+ map(0xfcf0, 0xfcf3).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xfcf4, 0xfcf5).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xfcf6, 0xfcf7).w(this, FUNC(eurocom2_state::vico_w));
+ map(0xfcf8, 0xfcfb).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xfd30, 0xfd37).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0xfd38, 0xfd38).rw(this, FUNC(eurocom2_state::fdc_aux_r), FUNC(eurocom2_state::fdc_aux_w));
+ map(0xfd40, 0xffff).rom().region("maincpu", 0xd40).nopw();
+}
+
+void waveterm_state::waveterm_map(address_map &map)
+{
+ eurocom2_map(map);
+ map(0xfd00, 0xfd03).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xfd08, 0xfd0f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xfd10, 0xfd17).unmaprw();
+ map(0xfd18, 0xfd18).r(this, FUNC(waveterm_state::waveterm_adc)); // AD558 ADC
// AM_RANGE(0xfd20, 0xfd20) AM_READ(waveterm_dac) // ZN432 DAC ??
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START(eurocom2)
PORT_START("S1")
diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp
index 7fa2d3cab2e..84722eb92d8 100644
--- a/src/mame/drivers/europc.cpp
+++ b/src/mame/drivers/europc.cpp
@@ -496,18 +496,20 @@ static INPUT_PORTS_START( europc )
PORT_BIT(0xfffe, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
-ADDRESS_MAP_START(europc_pc_state::europc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(europc_pc_state::europc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
- AM_RANGE(0x0060, 0x0063) AM_READWRITE(europc_pio_r, europc_pio_w)
- AM_RANGE(0x0250, 0x025f) AM_READWRITE(europc_jim_r, europc_jim_w)
- AM_RANGE(0x02e0, 0x02e0) AM_READ(europc_jim2_r)
-ADDRESS_MAP_END
+void europc_pc_state::europc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void europc_pc_state::europc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0063).rw(this, FUNC(europc_pc_state::europc_pio_r), FUNC(europc_pc_state::europc_pio_w));
+ map(0x0250, 0x025f).rw(this, FUNC(europc_pc_state::europc_jim_r), FUNC(europc_pc_state::europc_jim_w));
+ map(0x02e0, 0x02e0).r(this, FUNC(europc_pc_state::europc_jim2_r));
+}
/* 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)
diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp
index 550aeddf845..7e865be7d6b 100644
--- a/src/mame/drivers/evmbug.cpp
+++ b/src/mame/drivers/evmbug.cpp
@@ -48,18 +48,20 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-ADDRESS_MAP_START(evmbug_state::mem_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0xec00, 0xefff) AM_RAM
-ADDRESS_MAP_END
+void evmbug_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0xec00, 0xefff).ram();
+}
-ADDRESS_MAP_START(evmbug_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
+void evmbug_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x0000, 0x0003) AM_DEVREAD("uart1", tms9902_device, cruread)
//AM_RANGE(0x0000, 0x001f) AM_DEVWRITE("uart1", tms9902_device, cruwrite)
- AM_RANGE(0x0000, 0x0003) AM_READ(rs232_r)
- AM_RANGE(0x0000, 0x001f) AM_WRITE(rs232_w)
-ADDRESS_MAP_END
+ map(0x0000, 0x0003).r(this, FUNC(evmbug_state::rs232_r));
+ map(0x0000, 0x001f).w(this, FUNC(evmbug_state::rs232_w));
+}
/* Input ports */
static INPUT_PORTS_START( evmbug )
diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp
index 13d7e6deb8b..36e316d3387 100644
--- a/src/mame/drivers/excali64.cpp
+++ b/src/mame/drivers/excali64.cpp
@@ -120,31 +120,33 @@ private:
required_device<floppy_connector> m_floppy1;
};
-ADDRESS_MAP_START(excali64_state::mem_map)
- AM_RANGE(0x0000, 0x1FFF) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
- AM_RANGE(0x2000, 0x2FFF) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2")
- AM_RANGE(0x3000, 0x3FFF) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3")
- AM_RANGE(0x4000, 0xBFFF) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4")
- AM_RANGE(0xC000, 0xFFFF) AM_RAM AM_REGION("rambank", 0xC000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(excali64_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_READ(port00_r)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w)
- AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0x0e) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x31, 0x31) AM_MIRROR(0x0e) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x50, 0x5f) AM_READ(port50_r)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x70, 0x7f) AM_WRITE(port70_w)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0xe4, 0xe7) AM_WRITE(porte4_w)
- AM_RANGE(0xe8, 0xeb) AM_READ(porte8_r)
- AM_RANGE(0xec, 0xef) AM_WRITE(portec_w)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("fdc", wd2793_device, read, write)
-ADDRESS_MAP_END
+void excali64_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x1FFF).bankr("bankr1").bankw("bankw1");
+ map(0x2000, 0x2FFF).bankr("bankr2").bankw("bankw2");
+ map(0x3000, 0x3FFF).bankr("bankr3").bankw("bankw3");
+ map(0x4000, 0xBFFF).bankr("bankr4").bankw("bankw4");
+ map(0xC000, 0xFFFF).ram().region("rambank", 0xC000);
+}
+
+void excali64_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).r(this, FUNC(excali64_state::port00_r));
+ map(0x10, 0x10).mirror(0x0e).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x11, 0x11).mirror(0x0e).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x20, 0x23).mirror(0x0c).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x30, 0x30).mirror(0x0e).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x31, 0x31).mirror(0x0e).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x50, 0x5f).r(this, FUNC(excali64_state::port50_r));
+ map(0x60, 0x63).mirror(0x0c).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x70, 0x7f).w(this, FUNC(excali64_state::port70_w));
+ map(0xe0, 0xe3).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0xe4, 0xe7).w(this, FUNC(excali64_state::porte4_w));
+ map(0xe8, 0xeb).r(this, FUNC(excali64_state::porte8_r));
+ map(0xec, 0xef).w(this, FUNC(excali64_state::portec_w));
+ map(0xf0, 0xf3).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+}
static INPUT_PORTS_START( excali64 )
diff --git a/src/mame/drivers/exedexes.cpp b/src/mame/drivers/exedexes.cpp
index 0794d2ae45e..3dc285a8032 100644
--- a/src/mame/drivers/exedexes.cpp
+++ b/src/mame/drivers/exedexes.cpp
@@ -34,36 +34,38 @@ TIMER_DEVICE_CALLBACK_MEMBER(exedexes_state::exedexes_scanline)
}
-ADDRESS_MAP_START(exedexes_state::exedexes_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW0")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1")
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(exedexes_c804_w) /* coin counters + text layer enable */
- AM_RANGE(0xc806, 0xc806) AM_WRITENOP /* Watchdog ?? */
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(exedexes_videoram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(exedexes_colorram_w) AM_SHARE("colorram") /* Color RAM */
- AM_RANGE(0xd800, 0xd801) AM_WRITEONLY AM_SHARE("nbg_yscroll")
- AM_RANGE(0xd802, 0xd803) AM_WRITEONLY AM_SHARE("nbg_xscroll")
- AM_RANGE(0xd804, 0xd805) AM_WRITEONLY AM_SHARE("bg_scroll")
- AM_RANGE(0xd807, 0xd807) AM_WRITE(exedexes_gfxctrl_w) /* layer enables */
- AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(exedexes_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn2", sn76489_device, write)
-ADDRESS_MAP_END
+void exedexes_state::exedexes_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW0");
+ map(0xc004, 0xc004).portr("DSW1");
+ map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc804, 0xc804).w(this, FUNC(exedexes_state::exedexes_c804_w)); /* coin counters + text layer enable */
+ map(0xc806, 0xc806).nopw(); /* Watchdog ?? */
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(exedexes_state::exedexes_videoram_w)).share("videoram"); /* Video RAM */
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(exedexes_state::exedexes_colorram_w)).share("colorram"); /* Color RAM */
+ map(0xd800, 0xd801).writeonly().share("nbg_yscroll");
+ map(0xd802, 0xd803).writeonly().share("nbg_xscroll");
+ map(0xd804, 0xd805).writeonly().share("bg_scroll");
+ map(0xd807, 0xd807).w(this, FUNC(exedexes_state::exedexes_gfxctrl_w)); /* layer enables */
+ map(0xe000, 0xefff).ram(); /* Work RAM */
+ map(0xf000, 0xffff).ram().share("spriteram"); /* Sprite RAM */
+}
+
+
+
+void exedexes_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ 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));
+}
diff --git a/src/mame/drivers/exelv.cpp b/src/mame/drivers/exelv.cpp
index adc0ab04564..cf781c67530 100644
--- a/src/mame/drivers/exelv.cpp
+++ b/src/mame/drivers/exelv.cpp
@@ -409,35 +409,37 @@ READ8_MEMBER(exelv_state::rom_r)
@>f800-@>ffff: tms7020/tms7040 internal ROM
*/
-ADDRESS_MAP_START(exelv_state::tms7020_mem)
- AM_RANGE(0x0080, 0x00ff) AM_NOP
- AM_RANGE(0x0124, 0x0124) AM_DEVREAD("tms3556", tms3556_device, vram_r)
- AM_RANGE(0x0125, 0x0125) AM_DEVREAD("tms3556", tms3556_device, reg_r)
- AM_RANGE(0x0128, 0x0128) AM_DEVREAD("tms3556", tms3556_device, initptr_r)
- AM_RANGE(0x012d, 0x012d) AM_DEVWRITE("tms3556", tms3556_device, reg_w)
- AM_RANGE(0x012e, 0x012e) AM_DEVWRITE("tms3556", tms3556_device, vram_w)
-
- AM_RANGE(0x0130, 0x0130) AM_READWRITE(mailbox_wx319_r, mailbox_wx318_w)
- AM_RANGE(0x0200, 0x7fff) AM_READ(rom_r)
- AM_RANGE(0x8000, 0xbfff) AM_NOP
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* CPU RAM */
- AM_RANGE(0xc800, 0xf7ff) AM_NOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exelv_state::tms7040_mem)
- AM_RANGE(0x0080, 0x00ff) AM_NOP
- AM_RANGE(0x0124, 0x0124) AM_DEVREAD("tms3556", tms3556_device, vram_r)
- AM_RANGE(0x0125, 0x0125) AM_DEVREAD("tms3556", tms3556_device, reg_r)
- AM_RANGE(0x0128, 0x0128) AM_DEVREAD("tms3556", tms3556_device, initptr_r)
- AM_RANGE(0x012d, 0x012d) AM_DEVWRITE("tms3556", tms3556_device, reg_w)
- AM_RANGE(0x012e, 0x012e) AM_DEVWRITE("tms3556", tms3556_device, vram_w)
- AM_RANGE(0x0130, 0x0130) AM_READWRITE(mailbox_wx319_r, mailbox_wx318_w)
- AM_RANGE(0x0200, 0x7fff) AM_ROMBANK("bank1") /* system ROM */
- AM_RANGE(0x8000, 0xbfff) AM_NOP
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* CPU RAM */
- AM_RANGE(0xc800, 0xefff) AM_NOP
-ADDRESS_MAP_END
+void exelv_state::tms7020_mem(address_map &map)
+{
+ map(0x0080, 0x00ff).noprw();
+ map(0x0124, 0x0124).r(m_tms3556, FUNC(tms3556_device::vram_r));
+ map(0x0125, 0x0125).r(m_tms3556, FUNC(tms3556_device::reg_r));
+ map(0x0128, 0x0128).r(m_tms3556, FUNC(tms3556_device::initptr_r));
+ map(0x012d, 0x012d).w(m_tms3556, FUNC(tms3556_device::reg_w));
+ map(0x012e, 0x012e).w(m_tms3556, FUNC(tms3556_device::vram_w));
+
+ map(0x0130, 0x0130).rw(this, FUNC(exelv_state::mailbox_wx319_r), FUNC(exelv_state::mailbox_wx318_w));
+ map(0x0200, 0x7fff).r(this, FUNC(exelv_state::rom_r));
+ map(0x8000, 0xbfff).noprw();
+ map(0xc000, 0xc7ff).ram(); /* CPU RAM */
+ map(0xc800, 0xf7ff).noprw();
+}
+
+
+void exelv_state::tms7040_mem(address_map &map)
+{
+ map(0x0080, 0x00ff).noprw();
+ map(0x0124, 0x0124).r(m_tms3556, FUNC(tms3556_device::vram_r));
+ map(0x0125, 0x0125).r(m_tms3556, FUNC(tms3556_device::reg_r));
+ map(0x0128, 0x0128).r(m_tms3556, FUNC(tms3556_device::initptr_r));
+ map(0x012d, 0x012d).w(m_tms3556, FUNC(tms3556_device::reg_w));
+ map(0x012e, 0x012e).w(m_tms3556, FUNC(tms3556_device::vram_w));
+ map(0x0130, 0x0130).rw(this, FUNC(exelv_state::mailbox_wx319_r), FUNC(exelv_state::mailbox_wx318_w));
+ map(0x0200, 0x7fff).bankr("bank1"); /* system ROM */
+ map(0x8000, 0xbfff).noprw();
+ map(0xc000, 0xc7ff).ram(); /* CPU RAM */
+ map(0xc800, 0xefff).noprw();
+}
/* keyboard: ??? */
diff --git a/src/mame/drivers/exerion.cpp b/src/mame/drivers/exerion.cpp
index 28640198681..8e5e3e22b3c 100644
--- a/src/mame/drivers/exerion.cpp
+++ b/src/mame/drivers/exerion.cpp
@@ -191,22 +191,23 @@ READ8_MEMBER(exerion_state::exerion_protection_r)
*
*************************************/
-ADDRESS_MAP_START(exerion_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x6008, 0x600b) AM_READ(exerion_protection_r)
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x887f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8880, 0x8bff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("DSW0")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(exerion_videoreg_w)
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xd800, 0xd801) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xd802, 0xd802) AM_DEVREAD("ay2", ay8910_device, data_r)
-ADDRESS_MAP_END
+void exerion_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram().share("main_ram");
+ map(0x6008, 0x600b).r(this, FUNC(exerion_state::exerion_protection_r));
+ map(0x8000, 0x87ff).ram().share("videoram");
+ map(0x8800, 0x887f).ram().share("spriteram");
+ map(0x8880, 0x8bff).ram();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa800, 0xa800).portr("DSW0");
+ map(0xb000, 0xb000).portr("DSW1");
+ map(0xc000, 0xc000).w(this, FUNC(exerion_state::exerion_videoreg_w));
+ map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xd000, 0xd001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xd800, 0xd801).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xd802, 0xd802).r("ay2", FUNC(ay8910_device::data_r));
+}
@@ -216,13 +217,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(exerion_state::sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x800c) AM_WRITE(exerion_video_latch_w)
- AM_RANGE(0xa000, 0xa000) AM_READ(exerion_video_timing_r)
-ADDRESS_MAP_END
+void exerion_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x800c).w(this, FUNC(exerion_state::exerion_video_latch_w));
+ map(0xa000, 0xa000).r(this, FUNC(exerion_state::exerion_video_timing_r));
+}
diff --git a/src/mame/drivers/exidy.cpp b/src/mame/drivers/exidy.cpp
index 774178478a3..4cc23184cc0 100644
--- a/src/mame/drivers/exidy.cpp
+++ b/src/mame/drivers/exidy.cpp
@@ -200,104 +200,112 @@ WRITE8_MEMBER(exidy_state::fax_bank_select_w)
*
*************************************/
-ADDRESS_MAP_START(exidy_state::exidy_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite1_xpos")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite1_ypos")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite2_xpos")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite2_ypos")
- AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_READ_PORT("DSW")
- AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("spriteno")
- AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_READ_PORT("IN0")
- AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("sprite_enable")
- AM_RANGE(0x5103, 0x5103) AM_MIRROR(0x00fc) AM_READ(exidy_interrupt_r)
- AM_RANGE(0x5210, 0x5212) AM_WRITEONLY AM_SHARE("color_latch")
- AM_RANGE(0x5213, 0x5213) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::sidetrac_map)
- AM_IMPORT_FROM(exidy_map)
- AM_RANGE(0x0800, 0x3fff) AM_ROM
- AM_RANGE(0x4800, 0x4fff) AM_ROM AM_SHARE("characterram")
- AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
- AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w)
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::targ_map)
- AM_IMPORT_FROM(exidy_map)
- AM_RANGE(0x0800, 0x3fff) AM_ROM
- AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram")
- AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
- AM_RANGE(0x5201, 0x5201) AM_WRITE(targ_audio_2_w)
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::spectar_map)
- AM_IMPORT_FROM(exidy_map)
- AM_RANGE(0x0800, 0x3fff) AM_ROM
- AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram")
- AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
- AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w)
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::rallys_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0800, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram")
- AM_RANGE(0x5000, 0x5000) AM_WRITEONLY AM_SHARE("sprite1_xpos")
- AM_RANGE(0x5001, 0x5001) AM_WRITEONLY AM_SHARE("sprite1_ypos")
- AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_READ_PORT("DSW")
- AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("spriteno")
- AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_READ_PORT("IN0")
- AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("sprite_enable")
- AM_RANGE(0x5103, 0x5103) AM_MIRROR(0x00fc) AM_READ(exidy_interrupt_r)
- AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
- AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w)
- AM_RANGE(0x5210, 0x5212) AM_WRITEONLY AM_SHARE("color_latch")
- AM_RANGE(0x5213, 0x5213) AM_READ_PORT("IN2")
- AM_RANGE(0x5300, 0x5300) AM_WRITEONLY AM_SHARE("sprite2_xpos")
- AM_RANGE(0x5301, 0x5301) AM_WRITEONLY AM_SHARE("sprite2_ypos")
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::venture_map)
- AM_IMPORT_FROM(exidy_map)
- AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram")
- AM_RANGE(0x5200, 0x520f) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::pepper2_map)
- AM_IMPORT_FROM(exidy_map)
- AM_RANGE(0x4800, 0x4fff) AM_NOP
- AM_RANGE(0x5200, 0x520f) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("characterram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exidy_state::fax_map)
- AM_IMPORT_FROM(exidy_map)
- AM_RANGE(0x0400, 0x07ff) AM_RAM
- AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("IN4")
- AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("IN3")
- AM_RANGE(0x2000, 0x2000) AM_WRITE(fax_bank_select_w)
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x5200, 0x520f) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x5213, 0x5217) AM_WRITENOP /* empty control lines on color/sound board */
- AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("characterram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void exidy_state::exidy_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x4000, 0x43ff).mirror(0x0400).ram().share("videoram");
+ map(0x5000, 0x5000).mirror(0x003f).writeonly().share("sprite1_xpos");
+ map(0x5040, 0x5040).mirror(0x003f).writeonly().share("sprite1_ypos");
+ map(0x5080, 0x5080).mirror(0x003f).writeonly().share("sprite2_xpos");
+ map(0x50c0, 0x50c0).mirror(0x003f).writeonly().share("sprite2_ypos");
+ map(0x5100, 0x5100).mirror(0x00fc).portr("DSW");
+ map(0x5100, 0x5100).mirror(0x00fc).writeonly().share("spriteno");
+ map(0x5101, 0x5101).mirror(0x00fc).portr("IN0");
+ map(0x5101, 0x5101).mirror(0x00fc).writeonly().share("sprite_enable");
+ map(0x5103, 0x5103).mirror(0x00fc).r(this, FUNC(exidy_state::exidy_interrupt_r));
+ map(0x5210, 0x5212).writeonly().share("color_latch");
+ map(0x5213, 0x5213).portr("IN2");
+}
+
+
+void exidy_state::sidetrac_map(address_map &map)
+{
+ exidy_map(map);
+ map(0x0800, 0x3fff).rom();
+ map(0x4800, 0x4fff).rom().share("characterram");
+ map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w));
+ map(0x5201, 0x5201).w(this, FUNC(exidy_state::spectar_audio_2_w));
+ map(0xff00, 0xffff).rom().region("maincpu", 0x3f00);
+}
+
+
+void exidy_state::targ_map(address_map &map)
+{
+ exidy_map(map);
+ map(0x0800, 0x3fff).rom();
+ map(0x4800, 0x4fff).ram().share("characterram");
+ map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w));
+ map(0x5201, 0x5201).w(this, FUNC(exidy_state::targ_audio_2_w));
+ map(0xff00, 0xffff).rom().region("maincpu", 0x3f00);
+}
+
+
+void exidy_state::spectar_map(address_map &map)
+{
+ exidy_map(map);
+ map(0x0800, 0x3fff).rom();
+ map(0x4800, 0x4fff).ram().share("characterram");
+ map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w));
+ map(0x5201, 0x5201).w(this, FUNC(exidy_state::spectar_audio_2_w));
+ map(0xff00, 0xffff).rom().region("maincpu", 0x3f00);
+}
+
+
+void exidy_state::rallys_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0800, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0x0400).ram().share("videoram");
+ map(0x4800, 0x4fff).ram().share("characterram");
+ map(0x5000, 0x5000).writeonly().share("sprite1_xpos");
+ map(0x5001, 0x5001).writeonly().share("sprite1_ypos");
+ map(0x5100, 0x5100).mirror(0x00fc).portr("DSW");
+ map(0x5100, 0x5100).mirror(0x00fc).writeonly().share("spriteno");
+ map(0x5101, 0x5101).mirror(0x00fc).portr("IN0");
+ map(0x5101, 0x5101).mirror(0x00fc).writeonly().share("sprite_enable");
+ map(0x5103, 0x5103).mirror(0x00fc).r(this, FUNC(exidy_state::exidy_interrupt_r));
+ map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w));
+ map(0x5201, 0x5201).w(this, FUNC(exidy_state::spectar_audio_2_w));
+ map(0x5210, 0x5212).writeonly().share("color_latch");
+ map(0x5213, 0x5213).portr("IN2");
+ map(0x5300, 0x5300).writeonly().share("sprite2_xpos");
+ map(0x5301, 0x5301).writeonly().share("sprite2_ypos");
+ map(0xff00, 0xffff).rom().region("maincpu", 0x3f00);
+}
+
+
+void exidy_state::venture_map(address_map &map)
+{
+ exidy_map(map);
+ map(0x4800, 0x4fff).ram().share("characterram");
+ map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void exidy_state::pepper2_map(address_map &map)
+{
+ exidy_map(map);
+ map(0x4800, 0x4fff).noprw();
+ map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x6000, 0x6fff).ram().share("characterram");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void exidy_state::fax_map(address_map &map)
+{
+ exidy_map(map);
+ map(0x0400, 0x07ff).ram();
+ map(0x1a00, 0x1a00).portr("IN4");
+ map(0x1c00, 0x1c00).portr("IN3");
+ map(0x2000, 0x2000).w(this, FUNC(exidy_state::fax_bank_select_w));
+ map(0x2000, 0x3fff).bankr("bank1");
+ map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x5213, 0x5217).nopw(); /* empty control lines on color/sound board */
+ map(0x6000, 0x6fff).ram().share("characterram");
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp
index 1a107cd65d2..1362450230d 100644
--- a/src/mame/drivers/exidy440.cpp
+++ b/src/mame/drivers/exidy440.cpp
@@ -468,27 +468,28 @@ void exidy440_state::machine_reset()
*
*************************************/
-ADDRESS_MAP_START(exidy440_state::exidy440_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("imageram")
- AM_RANGE(0x2000, 0x209f) AM_RAM_WRITE(exidy440_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x20a0, 0x29ff) AM_RAM
- AM_RANGE(0x2a00, 0x2aff) AM_READWRITE(exidy440_videoram_r, exidy440_videoram_w)
- AM_RANGE(0x2b00, 0x2b00) AM_READ(exidy440_vertical_pos_r)
- AM_RANGE(0x2b01, 0x2b01) AM_READWRITE(exidy440_horizontal_pos_r, exidy440_interrupt_clear_w)
- AM_RANGE(0x2b02, 0x2b02) AM_RAM AM_SHARE("scanline")
- AM_RANGE(0x2b03, 0x2b03) AM_READ_PORT("IN0") AM_WRITE(exidy440_control_w)
- AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(exidy440_paletteram_r, exidy440_paletteram_w)
- AM_RANGE(0x2e00, 0x2e1f) AM_RAM_WRITE(sound_command_w)
- AM_RANGE(0x2e20, 0x2e3f) AM_READWRITE(exidy440_input_port_3_r, exidy440_input_port_3_w)
- AM_RANGE(0x2e40, 0x2e5f) AM_READNOP AM_WRITE(exidy440_coin_counter_w) /* read: clear coin counters I/O2 */
- AM_RANGE(0x2e60, 0x2e7f) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x2e80, 0x2e9f) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0x2ea0, 0x2ebf) AM_READ(sound_command_ack_r) AM_WRITENOP
- AM_RANGE(0x2ec0, 0x2eff) AM_NOP
- AM_RANGE(0x3000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE(bankram_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void exidy440_state::exidy440_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("imageram");
+ map(0x2000, 0x209f).ram().w(this, FUNC(exidy440_state::exidy440_spriteram_w)).share("spriteram");
+ map(0x20a0, 0x29ff).ram();
+ map(0x2a00, 0x2aff).rw(this, FUNC(exidy440_state::exidy440_videoram_r), FUNC(exidy440_state::exidy440_videoram_w));
+ map(0x2b00, 0x2b00).r(this, FUNC(exidy440_state::exidy440_vertical_pos_r));
+ map(0x2b01, 0x2b01).rw(this, FUNC(exidy440_state::exidy440_horizontal_pos_r), FUNC(exidy440_state::exidy440_interrupt_clear_w));
+ map(0x2b02, 0x2b02).ram().share("scanline");
+ map(0x2b03, 0x2b03).portr("IN0").w(this, FUNC(exidy440_state::exidy440_control_w));
+ map(0x2c00, 0x2dff).rw(this, FUNC(exidy440_state::exidy440_paletteram_r), FUNC(exidy440_state::exidy440_paletteram_w));
+ map(0x2e00, 0x2e1f).ram().w(this, FUNC(exidy440_state::sound_command_w));
+ map(0x2e20, 0x2e3f).rw(this, FUNC(exidy440_state::exidy440_input_port_3_r), FUNC(exidy440_state::exidy440_input_port_3_w));
+ map(0x2e40, 0x2e5f).nopr().w(this, FUNC(exidy440_state::exidy440_coin_counter_w)); /* read: clear coin counters I/O2 */
+ map(0x2e60, 0x2e7f).portr("IN1").nopw();
+ map(0x2e80, 0x2e9f).portr("IN2").nopw();
+ map(0x2ea0, 0x2ebf).r(this, FUNC(exidy440_state::sound_command_ack_r)).nopw();
+ map(0x2ec0, 0x2eff).noprw();
+ map(0x3000, 0x3fff).ram();
+ map(0x4000, 0x7fff).bankr("bank1").w(this, FUNC(exidy440_state::bankram_w));
+ map(0x8000, 0xffff).rom();
+}
/*************************************
@@ -497,19 +498,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(exidy440_state::exidy440_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x801f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("custom", exidy440_sound_device, m6844_r, m6844_w)
- AM_RANGE(0x8400, 0x840f) AM_MIRROR(0x03f0) AM_DEVREADWRITE("custom", exidy440_sound_device, sound_volume_r, sound_volume_w)
- AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_DEVREAD("custom", exidy440_sound_device, sound_command_r) AM_WRITENOP
- AM_RANGE(0x8c00, 0x93ff) AM_NOP
- AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x03fc) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_banks_w)
- AM_RANGE(0x9800, 0x9800) AM_MIRROR(0x03ff) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_interrupt_clear_w)
- AM_RANGE(0x9c00, 0x9fff) AM_NOP
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_NOP
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void exidy440_state::exidy440_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).noprw();
+ map(0x8000, 0x801f).mirror(0x03e0).rw(m_custom, FUNC(exidy440_sound_device::m6844_r), FUNC(exidy440_sound_device::m6844_w));
+ map(0x8400, 0x840f).mirror(0x03f0).rw(m_custom, FUNC(exidy440_sound_device::sound_volume_r), FUNC(exidy440_sound_device::sound_volume_w));
+ map(0x8800, 0x8800).mirror(0x03ff).r(m_custom, FUNC(exidy440_sound_device::sound_command_r)).nopw();
+ map(0x8c00, 0x93ff).noprw();
+ map(0x9400, 0x9403).mirror(0x03fc).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_banks_w));
+ map(0x9800, 0x9800).mirror(0x03ff).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_interrupt_clear_w));
+ map(0x9c00, 0x9fff).noprw();
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xdfff).noprw();
+ map(0xe000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/exp85.cpp b/src/mame/drivers/exp85.cpp
index 768fe15be45..b222d664219 100644
--- a/src/mame/drivers/exp85.cpp
+++ b/src/mame/drivers/exp85.cpp
@@ -40,21 +40,23 @@
/* Memory Maps */
-ADDRESS_MAP_START(exp85_state::exp85_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xf8ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(exp85_state::exp85_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE(I8355_TAG, i8355_device, io_r, io_w)
- AM_RANGE(0xf8, 0xfd) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w)
+void exp85_state::exp85_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankr("bank1");
+ map(0xc000, 0xdfff).rom();
+ map(0xf000, 0xf7ff).rom();
+ map(0xf800, 0xf8ff).ram();
+}
+
+void exp85_state::exp85_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf0, 0xf3).rw(I8355_TAG, FUNC(i8355_device::io_r), FUNC(i8355_device::io_w));
+ map(0xf8, 0xfd).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
// AM_RANGE(0xfe, 0xff) AM_DEVREADWRITE(I8279_TAG, i8279_r, i8279_w)
-ADDRESS_MAP_END
+}
/* Input Ports */
diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp
index 34f884a1478..2a30954dd68 100644
--- a/src/mame/drivers/expro02.cpp
+++ b/src/mame/drivers/expro02.cpp
@@ -661,167 +661,178 @@ WRITE8_MEMBER( expro02_state::expro02_6295_bankswitch_w )
*************************************/
-ADDRESS_MAP_START(expro02_state::expro02_video_base_map)
- AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fg_ind8ram")
- AM_RANGE(0x520000, 0x53ffff) AM_RAM AM_SHARE("bg_rgb555ram")
- AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette?
- AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // sprites? 0x72f words tested
- AM_RANGE(0x780000, 0x78001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0xd80000, 0xd80001) AM_DEVWRITE("view2_0",kaneko_view2_tilemap_device,galsnew_vram_1_tilebank_w) /* ??? */
- AM_RANGE(0xe80000, 0xe80001) AM_DEVWRITE("view2_0",kaneko_view2_tilemap_device,galsnew_vram_0_tilebank_w) /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::expro02_video_base_map_noview2)
- AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fg_ind8ram")
- AM_RANGE(0x520000, 0x53ffff) AM_RAM AM_SHARE("bg_rgb555ram")
- AM_RANGE(0x580000, 0x583fff) AM_NOP // games still makes leftover accesses
- AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette?
- AM_RANGE(0x680000, 0x68001f) AM_NOP // games still makes leftover accesses
- AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // sprites? 0x72f words tested
- AM_RANGE(0x780000, 0x78001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0xd80000, 0xd80001) AM_NOP // games still makes leftover accesses
- AM_RANGE(0xe80000, 0xe80001) AM_NOP // games still makes leftover accesses
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::expro02_map)
- AM_IMPORT_FROM(expro02_video_base_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // main program
- AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("user2",0) // other data
- AM_RANGE(0x100000, 0x3fffff) AM_ROM AM_REGION("user1",0) // main data
- AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00)
- AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ??? */
- AM_RANGE(0xc80000, 0xc8ffff) AM_RAM
- AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w)
-ADDRESS_MAP_END
+void expro02_state::expro02_video_base_map(address_map &map)
+{
+ map(0x500000, 0x51ffff).ram().share("fg_ind8ram");
+ map(0x520000, 0x53ffff).ram().share("bg_rgb555ram");
+ map(0x580000, 0x583fff).rw(m_view2_0, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x600000, 0x600fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette?
+ map(0x680000, 0x68001f).rw(m_view2_0, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x700000, 0x700fff).ram().share("spriteram"); // sprites? 0x72f words tested
+ map(0x780000, 0x78001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0xd80000, 0xd80001).w(m_view2_0, FUNC(kaneko_view2_tilemap_device::galsnew_vram_1_tilebank_w)); /* ??? */
+ map(0xe80000, 0xe80001).w(m_view2_0, FUNC(kaneko_view2_tilemap_device::galsnew_vram_0_tilebank_w)); /* ??? */
+}
+
+void expro02_state::expro02_video_base_map_noview2(address_map &map)
+{
+ map(0x500000, 0x51ffff).ram().share("fg_ind8ram");
+ map(0x520000, 0x53ffff).ram().share("bg_rgb555ram");
+ map(0x580000, 0x583fff).noprw(); // games still makes leftover accesses
+ map(0x600000, 0x600fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette?
+ map(0x680000, 0x68001f).noprw(); // games still makes leftover accesses
+ map(0x700000, 0x700fff).ram().share("spriteram"); // sprites? 0x72f words tested
+ map(0x780000, 0x78001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0xd80000, 0xd80001).noprw(); // games still makes leftover accesses
+ map(0xe80000, 0xe80001).noprw(); // games still makes leftover accesses
+}
+
+void expro02_state::expro02_map(address_map &map)
+{
+ expro02_video_base_map(map);
+ map(0x000000, 0x03ffff).rom(); // main program
+ map(0x080000, 0x0fffff).rom().region("user2", 0); // other data
+ map(0x100000, 0x3fffff).rom().region("user1", 0); // main data
+ map(0x400001, 0x400001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w));
+ map(0xa00000, 0xa00001).nopw(); /* ??? */
+ map(0xc80000, 0xc8ffff).ram();
+ map(0xe00000, 0xe00015).rw("calc1_mcu", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w));
+}
// bigger ROM space, OKI commands moved, no CALC mcu
-ADDRESS_MAP_START(expro02_state::fantasia_map)
- AM_IMPORT_FROM(expro02_video_base_map)
- AM_RANGE(0x000000, 0x4fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x800006, 0x800007) AM_NOP // ? used ?
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00)
- AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ??? */
- AM_RANGE(0xc80000, 0xc8ffff) AM_RAM
- AM_RANGE(0xf00000, 0xf00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(expro02_state::comad_map)
- AM_IMPORT_FROM(expro02_video_base_map_noview2)
- AM_RANGE(0x000000, 0x4fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
+void expro02_state::fantasia_map(address_map &map)
+{
+ expro02_video_base_map(map);
+ map(0x000000, 0x4fffff).rom();
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x800006, 0x800007).noprw(); // ? used ?
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w));
+ map(0xa00000, 0xa00001).nopw(); /* ??? */
+ map(0xc80000, 0xc8ffff).ram();
+ map(0xf00000, 0xf00000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+
+
+void expro02_state::comad_map(address_map &map)
+{
+ expro02_video_base_map_noview2(map);
+ map(0x000000, 0x4fffff).rom();
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
// AM_RANGE(0x800006, 0x800007) ??
- AM_RANGE(0x80000a, 0x80000b) AM_READ(comad_timer_r) /* bits 8-a = timer? palette update code waits for them to be 111 */
- AM_RANGE(0x80000c, 0x80000d) AM_READ(comad_timer_r) /* missw96 bits 8-a = timer? palette update code waits for them to be 111 */
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM
- AM_RANGE(0xc80000, 0xc8ffff) AM_RAM
- AM_RANGE(0xf00000, 0xf00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */
- AM_RANGE(0xf80000, 0xf80001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* newfant */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::fantsia2_map)
- AM_IMPORT_FROM(expro02_video_base_map_noview2)
- AM_RANGE(0x000000, 0x4fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
+ map(0x80000a, 0x80000b).r(this, FUNC(expro02_state::comad_timer_r)); /* bits 8-a = timer? palette update code waits for them to be 111 */
+ map(0x80000c, 0x80000d).r(this, FUNC(expro02_state::comad_timer_r)); /* missw96 bits 8-a = timer? palette update code waits for them to be 111 */
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */
+ map(0xc00000, 0xc0ffff).ram();
+ map(0xc80000, 0xc8ffff).ram();
+ map(0xf00000, 0xf00000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */
+ map(0xf80000, 0xf80000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* newfant */
+}
+
+void expro02_state::fantsia2_map(address_map &map)
+{
+ expro02_video_base_map_noview2(map);
+ map(0x000000, 0x4fffff).rom();
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
// AM_RANGE(0x800006, 0x800007) ??
- AM_RANGE(0x800008, 0x800009) AM_READ(comad_timer_r) /* bits 8-a = timer? palette update code waits for them to be 111 */
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* coin counters, + ? */
- AM_RANGE(0xc80000, 0xc80001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00)
- AM_RANGE(0xf80000, 0xf8ffff) AM_RAM
-ADDRESS_MAP_END
-
-
-
-
-ADDRESS_MAP_START(expro02_state::galhustl_map)
- AM_IMPORT_FROM(expro02_video_base_map_noview2)
-
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x2fffff) AM_ROM AM_REGION("maincpudata", 0)
-
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00)
- AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP // ?
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
- AM_RANGE(0xe80000, 0xe8ffff) AM_RAM
-
- AM_RANGE(0x780000, 0x78001f) AM_NOP // prevent sprites being flipped
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::zipzap_map)
- AM_IMPORT_FROM(expro02_video_base_map_noview2)
-
- AM_RANGE(0x000000, 0x4fffff) AM_ROM
- AM_RANGE(0x701000, 0x71ffff) AM_RAM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00)
- AM_RANGE(0xc00000, 0xc00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */
- AM_RANGE(0xc80000, 0xc8ffff) AM_RAM // main ram
-
- AM_RANGE(0x780000, 0x78001f) AM_NOP // prevent sprites being flipped
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::supmodel_map)
- AM_IMPORT_FROM(expro02_video_base_map_noview2)
- AM_RANGE(0x000000, 0x4fffff) AM_ROM
- AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram")
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x800006, 0x800007) AM_READ(comad_timer_r)
- AM_RANGE(0x800008, 0x800009) AM_READ(comad_timer_r)
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP
- AM_RANGE(0xc80000, 0xc8ffff) AM_RAM
- AM_RANGE(0xd80000, 0xd80001) AM_WRITENOP
- AM_RANGE(0xe00012, 0xe00013) AM_WRITENOP
- AM_RANGE(0xe80000, 0xe80001) AM_WRITENOP
- AM_RANGE(0xf80000, 0xf80001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::smissw_map)
- AM_IMPORT_FROM(expro02_video_base_map_noview2)
- AM_RANGE(0x000000, 0x4fffff) AM_ROM
- AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram")
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x800006, 0x800007) AM_READ(comad_timer_r)
- AM_RANGE(0x80000e, 0x80000f) AM_READ(comad_timer_r)
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM
- AM_RANGE(0xd80000, 0xd80001) AM_WRITENOP
- AM_RANGE(0xe00012, 0xe00013) AM_WRITENOP
- AM_RANGE(0xe80000, 0xe80001) AM_WRITENOP
- AM_RANGE(0xf00000, 0xf00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(expro02_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+ map(0x800008, 0x800009).r(this, FUNC(expro02_state::comad_timer_r)); /* bits 8-a = timer? palette update code waits for them to be 111 */
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */
+ map(0xa00000, 0xa00001).nopw(); /* coin counters, + ? */
+ map(0xc80000, 0xc80000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00);
+ map(0xf80000, 0xf8ffff).ram();
+}
+
+
+
+
+void expro02_state::galhustl_map(address_map &map)
+{
+ expro02_video_base_map_noview2(map);
+
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x2fffff).rom().region("maincpudata", 0);
+
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w));
+ map(0xa00000, 0xa00001).nopw(); // ?
+ map(0xd00000, 0xd00000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe80000, 0xe8ffff).ram();
+
+ map(0x780000, 0x78001f).noprw(); // prevent sprites being flipped
+}
+
+void expro02_state::zipzap_map(address_map &map)
+{
+ expro02_video_base_map_noview2(map);
+
+ map(0x000000, 0x4fffff).rom();
+ map(0x701000, 0x71ffff).ram();
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w));
+ map(0xc00000, 0xc00000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */
+ map(0xc80000, 0xc8ffff).ram(); // main ram
+
+ map(0x780000, 0x78001f).noprw(); // prevent sprites being flipped
+}
+
+void expro02_state::supmodel_map(address_map &map)
+{
+ expro02_video_base_map_noview2(map);
+ map(0x000000, 0x4fffff).rom();
+ map(0x500000, 0x51ffff).ram().share("fgvideoram");
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x800006, 0x800007).r(this, FUNC(expro02_state::comad_timer_r));
+ map(0x800008, 0x800009).r(this, FUNC(expro02_state::comad_timer_r));
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */
+ map(0xa00000, 0xa00001).nopw();
+ map(0xc80000, 0xc8ffff).ram();
+ map(0xd80000, 0xd80001).nopw();
+ map(0xe00012, 0xe00013).nopw();
+ map(0xe80000, 0xe80001).nopw();
+ map(0xf80000, 0xf80000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */
+}
+
+void expro02_state::smissw_map(address_map &map)
+{
+ expro02_video_base_map_noview2(map);
+ map(0x000000, 0x4fffff).rom();
+ map(0x500000, 0x51ffff).ram().share("fgvideoram");
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x800006, 0x800007).r(this, FUNC(expro02_state::comad_timer_r));
+ map(0x80000e, 0x80000f).r(this, FUNC(expro02_state::comad_timer_r));
+ map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */
+ map(0xa00000, 0xa00001).nopw();
+ map(0xc00000, 0xc0ffff).ram();
+ map(0xd80000, 0xd80001).nopw();
+ map(0xe00012, 0xe00013).nopw();
+ map(0xe80000, 0xe80001).nopw();
+ map(0xf00000, 0xf00000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */
+}
+
+void expro02_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
/*************************************
*
diff --git a/src/mame/drivers/exprraid.cpp b/src/mame/drivers/exprraid.cpp
index b89138e8d12..77d501c9fdd 100644
--- a/src/mame/drivers/exprraid.cpp
+++ b/src/mame/drivers/exprraid.cpp
@@ -274,39 +274,42 @@ READ8_MEMBER(exprraid_state::vblank_r)
}
-ADDRESS_MAP_START(exprraid_state::master_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(exprraid_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(exprraid_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW0") /* DSW 0 */
- AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1") /* Controls */
- AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2") /* Coins */
- AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW1") /* DSW 1 */
- AM_RANGE(0x2000, 0x2000) AM_WRITE(exprraid_int_clear_w)
- AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x2002, 0x2002) AM_WRITE(exprraid_flipscreen_w)
- AM_RANGE(0x2003, 0x2003) AM_WRITENOP // DMA SWAP - Allow writes to video and sprite RAM
- AM_RANGE(0x2800, 0x2800) AM_READ(exprraid_prot_data_r)
- AM_RANGE(0x2801, 0x2801) AM_READ(exprraid_prot_status_r)
- AM_RANGE(0x2800, 0x2803) AM_WRITE(exprraid_bgselect_w)
- AM_RANGE(0x2804, 0x2804) AM_WRITE(exprraid_scrolly_w)
- AM_RANGE(0x2805, 0x2806) AM_WRITE(exprraid_scrollx_w)
- AM_RANGE(0x2807, 0x2807) AM_WRITE(exprraid_prot_data_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(exprraid_state::master_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(exprraid_state::slave_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym2", ym3526_device, read, write)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void exprraid_state::master_map(address_map &map)
+{
+ map(0x0000, 0x05ff).ram().share("main_ram");
+ map(0x0600, 0x07ff).ram().share("spriteram");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(exprraid_state::exprraid_videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(exprraid_state::exprraid_colorram_w)).share("colorram");
+ map(0x1800, 0x1800).portr("DSW0"); /* DSW 0 */
+ map(0x1801, 0x1801).portr("IN1"); /* Controls */
+ map(0x1802, 0x1802).portr("IN2"); /* Coins */
+ map(0x1803, 0x1803).portr("DSW1"); /* DSW 1 */
+ map(0x2000, 0x2000).w(this, FUNC(exprraid_state::exprraid_int_clear_w));
+ map(0x2001, 0x2001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x2002, 0x2002).w(this, FUNC(exprraid_state::exprraid_flipscreen_w));
+ map(0x2003, 0x2003).nopw(); // DMA SWAP - Allow writes to video and sprite RAM
+ map(0x2800, 0x2800).r(this, FUNC(exprraid_state::exprraid_prot_data_r));
+ map(0x2801, 0x2801).r(this, FUNC(exprraid_state::exprraid_prot_status_r));
+ map(0x2800, 0x2803).w(this, FUNC(exprraid_state::exprraid_bgselect_w));
+ map(0x2804, 0x2804).w(this, FUNC(exprraid_state::exprraid_scrolly_w));
+ map(0x2805, 0x2806).w(this, FUNC(exprraid_state::exprraid_scrollx_w));
+ map(0x2807, 0x2807).w(this, FUNC(exprraid_state::exprraid_prot_data_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void exprraid_state::master_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN0");
+}
+
+void exprraid_state::slave_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x4000, 0x4001).rw("ym2", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(exprraid_state::coin_inserted_deco16)
diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp
index 56a368bdab2..a529d509ed1 100644
--- a/src/mame/drivers/exterm.cpp
+++ b/src/mame/drivers/exterm.cpp
@@ -254,28 +254,30 @@ WRITE8_MEMBER(exterm_state::sound_control_w)
*
*************************************/
-ADDRESS_MAP_START(exterm_state::master_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_MIRROR(0xfc700000) AM_RAM AM_SHARE("master_videoram")
- AM_RANGE(0x00800000, 0x00bfffff) AM_MIRROR(0xfc400000) AM_RAM
- AM_RANGE(0x01000000, 0x013fffff) AM_MIRROR(0xfc000000) AM_READWRITE(exterm_host_data_r, exterm_host_data_w)
- AM_RANGE(0x01400000, 0x0143ffff) AM_MIRROR(0xfc000000) AM_READ(exterm_input_port_0_r)
- AM_RANGE(0x01440000, 0x0147ffff) AM_MIRROR(0xfc000000) AM_READ(exterm_input_port_1_r)
- AM_RANGE(0x01480000, 0x014bffff) AM_MIRROR(0xfc000000) AM_READ_PORT("DSW")
- AM_RANGE(0x01500000, 0x0153ffff) AM_MIRROR(0xfc000000) AM_WRITE(exterm_output_port_0_w)
- AM_RANGE(0x01580000, 0x015bffff) AM_MIRROR(0xfc000000) AM_WRITE8(sound_latch_w, 0x00ff)
- AM_RANGE(0x015c0000, 0x015fffff) AM_MIRROR(0xfc000000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x01800000, 0x01807fff) AM_MIRROR(0xfc7f8000) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x02800000, 0x02807fff) AM_MIRROR(0xfc7f8000) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x03000000, 0x03ffffff) AM_MIRROR(0xfc000000) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exterm_state::slave_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_MIRROR(0xfbf00000) AM_RAM AM_SHARE("slave_videoram")
- AM_RANGE(0x04000000, 0x047fffff) AM_MIRROR(0xfb800000) AM_RAM
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("slave", tms34010_device, io_register_r, io_register_w)
-ADDRESS_MAP_END
+void exterm_state::master_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).mirror(0xfc700000).ram().share("master_videoram");
+ map(0x00800000, 0x00bfffff).mirror(0xfc400000).ram();
+ map(0x01000000, 0x013fffff).mirror(0xfc000000).rw(this, FUNC(exterm_state::exterm_host_data_r), FUNC(exterm_state::exterm_host_data_w));
+ map(0x01400000, 0x0143ffff).mirror(0xfc000000).r(this, FUNC(exterm_state::exterm_input_port_0_r));
+ map(0x01440000, 0x0147ffff).mirror(0xfc000000).r(this, FUNC(exterm_state::exterm_input_port_1_r));
+ map(0x01480000, 0x014bffff).mirror(0xfc000000).portr("DSW");
+ map(0x01500000, 0x0153ffff).mirror(0xfc000000).w(this, FUNC(exterm_state::exterm_output_port_0_w));
+ map(0x01580000, 0x015bffff).mirror(0xfc000000).w(this, FUNC(exterm_state::sound_latch_w)).umask16(0x00ff);
+ map(0x015c0000, 0x015fffff).mirror(0xfc000000).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ 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("user1", 0);
+ map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
+}
+
+
+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));
+}
@@ -285,25 +287,27 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(exterm_state::sound_master_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_WRITE(ym2151_data_latch_w)
- AM_RANGE(0x6000, 0x67ff) AM_WRITE(sound_nmi_rate_w)
- AM_RANGE(0x6800, 0x6fff) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
- AM_RANGE(0x7000, 0x77ff) AM_READ(sound_nmi_to_slave_r)
+void exterm_state::sound_master_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x4000, 0x5fff).w(this, FUNC(exterm_state::ym2151_data_latch_w));
+ map(0x6000, 0x67ff).w(this, FUNC(exterm_state::sound_nmi_rate_w));
+ map(0x6800, 0x6fff).r("soundlatch1", FUNC(generic_latch_8_device::read));
+ map(0x7000, 0x77ff).r(this, FUNC(exterm_state::sound_nmi_to_slave_r));
/* AM_RANGE(0x7800, 0x7fff) unknown - to S4-13 */
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_WRITE(sound_control_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(exterm_state::sound_slave_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x3ffe) AM_DEVWRITE("dacvol", dac_byte_interface, write)
- AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x3ffe) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom();
+ map(0xa000, 0xbfff).w(this, FUNC(exterm_state::sound_control_w));
+}
+
+
+void exterm_state::sound_slave_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x3800).ram();
+ map(0x4000, 0x5fff).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+ map(0x8000, 0x8000).mirror(0x3ffe).w("dacvol", FUNC(dac_byte_interface::write));
+ map(0x8001, 0x8001).mirror(0x3ffe).w("dac", FUNC(dac_byte_interface::write));
+}
diff --git a/src/mame/drivers/extrema.cpp b/src/mame/drivers/extrema.cpp
index 2eb3472ce65..73ba1b3fad4 100644
--- a/src/mame/drivers/extrema.cpp
+++ b/src/mame/drivers/extrema.cpp
@@ -32,14 +32,16 @@ public:
-ADDRESS_MAP_START(extrema_state::extrema_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void extrema_state::extrema_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(extrema_state::extrema_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void extrema_state::extrema_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+}
static INPUT_PORTS_START( extrema )
diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp
index 00118d1717c..08b123be666 100644
--- a/src/mame/drivers/exzisus.cpp
+++ b/src/mame/drivers/exzisus.cpp
@@ -100,51 +100,55 @@ DRIVER_INIT_MEMBER(exzisus_state,exzisus)
**************************************************************************/
-ADDRESS_MAP_START(exzisus_state::cpua_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpuabank")
- AM_RANGE(0xc000, 0xc5ff) AM_RAM AM_SHARE("objectram1")
- AM_RANGE(0xc600, 0xdfff) AM_RAM AM_SHARE("videoram1")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("sharedram_ac")
- AM_RANGE(0xf400, 0xf400) AM_WRITE(cpua_bankswitch_w)
- AM_RANGE(0xf404, 0xf404) AM_WRITE(cpub_reset_w) // ??
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("sharedram_ab")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(exzisus_state::cpub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubbank")
- AM_RANGE(0xc000, 0xc5ff) AM_RAM AM_SHARE("objectram0")
- AM_RANGE(0xc600, 0xdfff) AM_RAM AM_SHARE("videoram0")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w)
- AM_RANGE(0xf001, 0xf001) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w)
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("P1")
- AM_RANGE(0xf400, 0xf400) AM_WRITE(cpub_bankswitch_w)
- AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P2")
- AM_RANGE(0xf402, 0xf402) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf402, 0xf402) AM_WRITE(coincounter_w)
- AM_RANGE(0xf404, 0xf404) AM_READ_PORT("DSWA")
- AM_RANGE(0xf404, 0xf404) AM_WRITENOP // ??
- AM_RANGE(0xf405, 0xf405) AM_READ_PORT("DSWB")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("sharedram_ab")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(exzisus_state::cpuc_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x85ff) AM_RAM AM_SHARE("objectram1")
- AM_RANGE(0x8600, 0x9fff) AM_RAM AM_SHARE("videoram1")
- AM_RANGE(0xa000, 0xafff) AM_RAM AM_SHARE("sharedram_ac")
- AM_RANGE(0xb000, 0xbfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(exzisus_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
-ADDRESS_MAP_END
+void exzisus_state::cpua_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("cpuabank");
+ map(0xc000, 0xc5ff).ram().share("objectram1");
+ map(0xc600, 0xdfff).ram().share("videoram1");
+ map(0xe000, 0xefff).ram().share("sharedram_ac");
+ map(0xf400, 0xf400).w(this, FUNC(exzisus_state::cpua_bankswitch_w));
+ map(0xf404, 0xf404).w(this, FUNC(exzisus_state::cpub_reset_w)); // ??
+ map(0xf800, 0xffff).ram().share("sharedram_ab");
+}
+
+void exzisus_state::cpub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("cpubbank");
+ map(0xc000, 0xc5ff).ram().share("objectram0");
+ map(0xc600, 0xdfff).ram().share("videoram0");
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xf000).nopr().w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xf001, 0xf001).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xf400, 0xf400).portr("P1");
+ map(0xf400, 0xf400).w(this, FUNC(exzisus_state::cpub_bankswitch_w));
+ map(0xf401, 0xf401).portr("P2");
+ map(0xf402, 0xf402).portr("SYSTEM");
+ map(0xf402, 0xf402).w(this, FUNC(exzisus_state::coincounter_w));
+ map(0xf404, 0xf404).portr("DSWA");
+ map(0xf404, 0xf404).nopw(); // ??
+ map(0xf405, 0xf405).portr("DSWB");
+ map(0xf800, 0xffff).ram().share("sharedram_ab");
+}
+
+void exzisus_state::cpuc_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x85ff).ram().share("objectram1");
+ map(0x8600, 0x9fff).ram().share("videoram1");
+ map(0xa000, 0xafff).ram().share("sharedram_ac");
+ map(0xb000, 0xbfff).ram();
+}
+
+void exzisus_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/ez2d.cpp b/src/mame/drivers/ez2d.cpp
index 0cb5fc7a219..bb3464ff7e0 100644
--- a/src/mame/drivers/ez2d.cpp
+++ b/src/mame/drivers/ez2d.cpp
@@ -69,8 +69,9 @@ uint32_t ez2d_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
-ADDRESS_MAP_START(ez2d_state::ez2d_map)
-ADDRESS_MAP_END
+void ez2d_state::ez2d_map(address_map &map)
+{
+}
static INPUT_PORTS_START( ez2d )
INPUT_PORTS_END
diff --git a/src/mame/drivers/f-32.cpp b/src/mame/drivers/f-32.cpp
index e82ab423f88..6e2229a9d9e 100644
--- a/src/mame/drivers/f-32.cpp
+++ b/src/mame/drivers/f-32.cpp
@@ -82,12 +82,13 @@ uint32_t mosaicf2_state::screen_update_mosaicf2(screen_device &screen, bitmap_in
-ADDRESS_MAP_START(mosaicf2_state::common_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM
- AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x80000000, 0x80ffffff) AM_ROM AM_REGION("user2",0)
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
+void mosaicf2_state::common_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram();
+ map(0x40000000, 0x4003ffff).ram().share("videoram");
+ map(0x80000000, 0x80ffffff).rom().region("user2", 0);
+ map(0xfff00000, 0xffffffff).rom().region("user1", 0);
+}
READ32_MEMBER(mosaicf2_state::f32_input_port_1_r)
{
@@ -101,19 +102,20 @@ READ32_MEMBER(mosaicf2_state::f32_input_port_1_r)
}
-ADDRESS_MAP_START(mosaicf2_state::mosaicf2_io)
- AM_RANGE(0x4000, 0x4003) AM_DEVREAD8("oki", okim6295_device, read, 0x000000ff)
- AM_RANGE(0x4810, 0x4813) AM_DEVREAD8("ymsnd", ym2151_device, status_r, 0x000000ff)
- AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1")
- AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r)
- AM_RANGE(0x5400, 0x5403) AM_READ_PORT("EEPROMIN")
- AM_RANGE(0x6000, 0x6003) AM_DEVWRITE8("oki", okim6295_device, write, 0x000000ff)
- AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8("ymsnd", ym2151_device, data_w, 0x000000ff)
- AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x000000ff)
- AM_RANGE(0x7000, 0x7003) AM_WRITE_PORT("EEPROMCLK")
- AM_RANGE(0x7200, 0x7203) AM_WRITE_PORT("EEPROMCS")
- AM_RANGE(0x7400, 0x7403) AM_WRITE_PORT("EEPROMOUT")
-ADDRESS_MAP_END
+void mosaicf2_state::mosaicf2_io(address_map &map)
+{
+ map(0x4003, 0x4003).r("oki", FUNC(okim6295_device::read));
+ map(0x4813, 0x4813).r("ymsnd", FUNC(ym2151_device::status_r));
+ map(0x5000, 0x5003).portr("P1");
+ map(0x5200, 0x5203).r(this, FUNC(mosaicf2_state::f32_input_port_1_r));
+ map(0x5400, 0x5403).portr("EEPROMIN");
+ map(0x6003, 0x6003).w("oki", FUNC(okim6295_device::write));
+ map(0x6803, 0x6803).w("ymsnd", FUNC(ym2151_device::data_w));
+ map(0x6813, 0x6813).w("ymsnd", FUNC(ym2151_device::register_w));
+ map(0x7000, 0x7003).portw("EEPROMCLK");
+ map(0x7200, 0x7203).portw("EEPROMCS");
+ map(0x7400, 0x7403).portw("EEPROMOUT");
+}
static INPUT_PORTS_START( mosaicf2 )
@@ -221,22 +223,24 @@ INPUT_PORTS_END
-ADDRESS_MAP_START(mosaicf2_state::royalpk2_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM
- AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x80000000, 0x807fffff) AM_ROM AM_REGION("user2",0)
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
+void mosaicf2_state::royalpk2_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram();
+ map(0x40000000, 0x4003ffff).ram().share("videoram");
+ map(0x80000000, 0x807fffff).rom().region("user2", 0);
+ map(0xfff00000, 0xffffffff).rom().region("user1", 0);
+}
-ADDRESS_MAP_START(mosaicf2_state::royalpk2_io)
- AM_RANGE(0x4900, 0x4903) AM_READ_PORT("SYSTEM_P2")
+void mosaicf2_state::royalpk2_io(address_map &map)
+{
+ map(0x4900, 0x4903).portr("SYSTEM_P2");
- AM_RANGE(0x4a00, 0x4a03) AM_READ_PORT("EEPROMIN")
+ map(0x4a00, 0x4a03).portr("EEPROMIN");
- AM_RANGE(0x6800, 0x6803) AM_WRITE_PORT("EEPROMCLK")
- AM_RANGE(0x6900, 0x6903) AM_WRITE_PORT("EEPROMCS")
- AM_RANGE(0x6a00, 0x6a03) AM_WRITE_PORT("EEPROMOUT")
-ADDRESS_MAP_END
+ map(0x6800, 0x6803).portw("EEPROMCLK");
+ map(0x6900, 0x6903).portw("EEPROMCS");
+ map(0x6a00, 0x6a03).portw("EEPROMOUT");
+}
MACHINE_CONFIG_START(mosaicf2_state::royalpk2)
diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp
index ed900364a8e..0f6658a79cb 100644
--- a/src/mame/drivers/f1gp.cpp
+++ b/src/mame/drivers/f1gp.cpp
@@ -53,75 +53,80 @@ READ8_MEMBER(f1gp_state::command_pending_r)
}
-ADDRESS_MAP_START(f1gp_state::f1gp_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w)
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram")
- AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE("spr1cgram") // SPR-1 CG RAM
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM AM_SHARE("spr2cgram") // SPR-2 CG RAM
- AM_RANGE(0xf00000, 0xf003ff) AM_RAM AM_SHARE("spr1vram") // SPR-1 VRAM
- AM_RANGE(0xf10000, 0xf103ff) AM_RAM AM_SHARE("spr2vram") // SPR-2 VRAM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") // DUAL RAM
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // PALETTE
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp_gfxctrl_w)
+void f1gp_state::f1gp_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x2fffff).rom().region("user1", 0);
+ map(0xa00000, 0xbfffff).rom().region("user2", 0);
+ map(0xc00000, 0xc3ffff).rw(this, FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w));
+ map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram");
+ map(0xd02000, 0xd03fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd04000, 0xd05fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd06000, 0xd07fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xe00000, 0xe03fff).ram().share("spr1cgram"); // SPR-1 CG RAM
+ map(0xe04000, 0xe07fff).ram().share("spr2cgram"); // SPR-2 CG RAM
+ map(0xf00000, 0xf003ff).ram().share("spr1vram"); // SPR-1 VRAM
+ map(0xf10000, 0xf103ff).ram().share("spr2vram"); // SPR-2 VRAM
+ map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
+ map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
+ map(0xfff000, 0xfff001).portr("INPUTS");
+ map(0xfff000, 0xfff001).w(this, FUNC(f1gp_state::f1gp_gfxctrl_w));
// AM_RANGE(0xfff002, 0xfff003) analog wheel?
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_READ8(command_pending_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
- AM_RANGE(0xfff040, 0xfff05f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::f1gp2_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_SHARE("sprcgram") // SPR-1 CG RAM + SPR-2 CG RAM
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram") // BACK VRAM
- AM_RANGE(0xe00000, 0xe00fff) AM_RAM AM_SHARE("spritelist") // not checked + SPR-1 VRAM + SPR-2 VRAM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") // DUAL RAM
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // PALETTE
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") AM_WRITE(f1gp2_gfxctrl_w)
+ map(0xfff004, 0xfff005).portr("DSW1");
+ map(0xfff002, 0xfff005).w(this, FUNC(f1gp_state::f1gp_fgscroll_w));
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff009, 0xfff009).r(this, FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+ map(0xfff040, 0xfff05f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0xfff050, 0xfff051).portr("DSW3");
+}
+
+void f1gp_state::f1gp2_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x2fffff).rom().region("user1", 0);
+ map(0xa00000, 0xa07fff).ram().share("sprcgram"); // SPR-1 CG RAM + SPR-2 CG RAM
+ map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram"); // BACK VRAM
+ map(0xe00000, 0xe00fff).ram().share("spritelist"); // not checked + SPR-1 VRAM + SPR-2 VRAM
+ map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
+ map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
+ map(0xfff000, 0xfff001).portr("INPUTS").w(this, FUNC(f1gp_state::f1gp2_gfxctrl_w));
// AM_RANGE(0xfff002, 0xfff003) analog wheel?
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_READ8(command_pending_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW3")
- AM_RANGE(0xfff020, 0xfff03f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0xfff044, 0xfff047) AM_WRITE(f1gp_fgscroll_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::f1gp_cpu2_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp
- AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp2
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+ map(0xfff004, 0xfff005).portr("DSW1");
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff009, 0xfff009).r(this, FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff00a, 0xfff00b).portr("DSW3");
+ map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0xfff044, 0xfff047).w(this, FUNC(f1gp_state::f1gp_fgscroll_w));
+}
+
+void f1gp_state::f1gp_cpu2_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0xff8000, 0xffbfff).ram();
+ map(0xffc000, 0xffcfff).ram().share("sharedram");
+ map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
+
+void f1gp_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void f1gp_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp
+ map(0x0c, 0x0c).w(this, FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp2
+ map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
WRITE16_MEMBER(f1gp_state::f1gpb_misc_w)
{
@@ -148,44 +153,46 @@ WRITE16_MEMBER(f1gp_state::f1gpb_misc_w)
*/
}
-ADDRESS_MAP_START(f1gp_state::f1gpb_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x800000, 0x801fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w)
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram")
- AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM //unused
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM //unused
- AM_RANGE(0xf00000, 0xf003ff) AM_RAM //unused
- AM_RANGE(0xf10000, 0xf103ff) AM_RAM //unused
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_READNOP //?
- AM_RANGE(0xfff006, 0xfff007) AM_WRITENOP
- AM_RANGE(0xfff00a, 0xfff00b) AM_RAM AM_SHARE("fgregs")
- AM_RANGE(0xfff00e, 0xfff00f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfff00c, 0xfff00d) AM_WRITE(f1gpb_misc_w)
- AM_RANGE(0xfff010, 0xfff011) AM_WRITENOP
- AM_RANGE(0xfff020, 0xfff023) AM_WRITENOP // GGA access
- AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
- AM_RANGE(0xfff800, 0xfff809) AM_RAM AM_SHARE("rozregs")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::f1gpb_cpu2_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void f1gp_state::f1gpb_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x2fffff).rom().region("user1", 0);
+ map(0xa00000, 0xbfffff).rom().region("user2", 0);
+ map(0x800000, 0x801fff).ram().share("spriteram");
+ map(0xc00000, 0xc3ffff).rw(this, FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w));
+ map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram");
+ map(0xd02000, 0xd03fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd04000, 0xd05fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd06000, 0xd07fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xe00000, 0xe03fff).ram(); //unused
+ map(0xe04000, 0xe07fff).ram(); //unused
+ map(0xf00000, 0xf003ff).ram(); //unused
+ map(0xf10000, 0xf103ff).ram(); //unused
+ map(0xff8000, 0xffbfff).ram();
+ map(0xffc000, 0xffcfff).ram().share("sharedram");
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram");
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("INPUTS");
+ map(0xfff004, 0xfff005).portr("DSW1");
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff008, 0xfff009).nopr(); //?
+ map(0xfff006, 0xfff007).nopw();
+ map(0xfff00a, 0xfff00b).ram().share("fgregs");
+ map(0xfff00f, 0xfff00f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfff00c, 0xfff00d).w(this, FUNC(f1gp_state::f1gpb_misc_w));
+ map(0xfff010, 0xfff011).nopw();
+ map(0xfff020, 0xfff023).nopw(); // GGA access
+ map(0xfff050, 0xfff051).portr("DSW3");
+ map(0xfff800, 0xfff809).ram().share("rozregs");
+}
+
+void f1gp_state::f1gpb_cpu2_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0xff8000, 0xffbfff).ram();
+ map(0xffc000, 0xffcfff).ram().share("sharedram");
+ map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
static INPUT_PORTS_START( f1gp )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/famibox.cpp b/src/mame/drivers/famibox.cpp
index 22db44c74b7..6df5adee03e 100644
--- a/src/mame/drivers/famibox.cpp
+++ b/src/mame/drivers/famibox.cpp
@@ -376,17 +376,18 @@ WRITE8_MEMBER(famibox_state::famibox_system_w)
*******************************************************/
-ADDRESS_MAP_START(famibox_state::famibox_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(famibox_IN0_r, famibox_IN0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(famibox_IN1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x5000, 0x5fff) AM_READWRITE(famibox_system_r, famibox_system_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubank1")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("cpubank2")
-ADDRESS_MAP_END
+void famibox_state::famibox_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(famibox_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(famibox_state::famibox_IN0_r), FUNC(famibox_state::famibox_IN0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(famibox_state::famibox_IN1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x5000, 0x5fff).rw(this, FUNC(famibox_state::famibox_system_r), FUNC(famibox_state::famibox_system_w));
+ map(0x6000, 0x7fff).ram();
+ map(0x8000, 0xbfff).bankr("cpubank1");
+ map(0xc000, 0xffff).bankr("cpubank2");
+}
/******************************************************
diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp
index 11ff1d1abd6..91fb7102fdc 100644
--- a/src/mame/drivers/fantland.cpp
+++ b/src/mame/drivers/fantland.cpp
@@ -124,43 +124,45 @@ WRITE16_MEMBER(fantland_state::spriteram2_16_w)
spriteram_2[2 * offset + 1] = data >> 8;
}
-ADDRESS_MAP_START(fantland_state::fantland_map)
- AM_RANGE( 0x00000, 0x07fff ) AM_RAM
- AM_RANGE( 0x08000, 0x7ffff ) AM_ROM
+void fantland_state::fantland_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x08000, 0x7ffff).rom();
- AM_RANGE( 0xa2000, 0xa21ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0xa2000, 0xa21ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE( 0xa3000, 0xa3001 ) AM_READ_PORT("a3000") AM_WRITE(fantland_nmi_enable_16_w )
- AM_RANGE( 0xa3002, 0xa3003 ) AM_READ_PORT("a3002") AM_WRITE(fantland_soundlatch_16_w )
+ map(0xa3000, 0xa3001).portr("a3000").w(this, FUNC(fantland_state::fantland_nmi_enable_16_w));
+ map(0xa3002, 0xa3003).portr("a3002").w(this, FUNC(fantland_state::fantland_soundlatch_16_w));
- AM_RANGE( 0xa4000, 0xa67ff ) AM_READWRITE(spriteram_16_r, spriteram_16_w ) AM_SHARE("spriteram")
- AM_RANGE( 0xc0000, 0xcffff ) AM_READWRITE(spriteram2_16_r, spriteram2_16_w ) AM_SHARE("spriteram2")
+ map(0xa4000, 0xa67ff).rw(this, FUNC(fantland_state::spriteram_16_r), FUNC(fantland_state::spriteram_16_w)).share("spriteram");
+ map(0xc0000, 0xcffff).rw(this, FUNC(fantland_state::spriteram2_16_r), FUNC(fantland_state::spriteram2_16_w)).share("spriteram2");
- AM_RANGE( 0xe0000, 0xfffff ) AM_ROM
-ADDRESS_MAP_END
+ map(0xe0000, 0xfffff).rom();
+}
/***************************************************************************
Galaxy Gunners
***************************************************************************/
-ADDRESS_MAP_START(fantland_state::galaxygn_map)
- AM_RANGE( 0x00000, 0x07fff ) AM_RAM
- AM_RANGE( 0x10000, 0x2ffff ) AM_ROM
+void fantland_state::galaxygn_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x10000, 0x2ffff).rom();
- AM_RANGE( 0x52000, 0x521ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0x52000, 0x521ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE( 0x53000, 0x53000 ) AM_READ_PORT("P1") AM_WRITE(fantland_nmi_enable_w )
- AM_RANGE( 0x53001, 0x53001 ) AM_READ_PORT("P2")
- AM_RANGE( 0x53002, 0x53002 ) AM_READ_PORT("DSW1") AM_WRITE(fantland_soundlatch_w )
- AM_RANGE( 0x53003, 0x53003 ) AM_READ_PORT("DSW2")
+ map(0x53000, 0x53000).portr("P1").w(this, FUNC(fantland_state::fantland_nmi_enable_w));
+ map(0x53001, 0x53001).portr("P2");
+ map(0x53002, 0x53002).portr("DSW1").w(this, FUNC(fantland_state::fantland_soundlatch_w));
+ map(0x53003, 0x53003).portr("DSW2");
- AM_RANGE( 0x54000, 0x567ff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x60000, 0x6ffff ) AM_RAM AM_SHARE("spriteram2")
+ map(0x54000, 0x567ff).ram().share("spriteram");
+ map(0x60000, 0x6ffff).ram().share("spriteram2");
- AM_RANGE( 0x70000, 0x7ffff ) AM_ROM
- AM_RANGE( 0xf0000, 0xfffff ) AM_ROM
-ADDRESS_MAP_END
+ map(0x70000, 0x7ffff).rom();
+ map(0xf0000, 0xfffff).rom();
+}
/***************************************************************************
@@ -236,51 +238,53 @@ READ8_MEMBER(fantland_state::borntofi_inputs_r)
return m_input_ret[offset];
}
-ADDRESS_MAP_START(fantland_state::borntofi_map)
- AM_RANGE( 0x00000, 0x07fff ) AM_RAM
- AM_RANGE( 0x10000, 0x2ffff ) AM_ROM
+void fantland_state::borntofi_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x10000, 0x2ffff).rom();
- AM_RANGE( 0x52000, 0x521ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE( 0x53000, 0x53001 ) AM_READWRITE(borntofi_inputs_r, borntofi_nmi_enable_w )
- AM_RANGE( 0x53002, 0x53002 ) AM_READ_PORT( "DSW" ) AM_WRITE(fantland_soundlatch_w )
- AM_RANGE( 0x53003, 0x53003 ) AM_READ_PORT( "Controls" )
+ map(0x52000, 0x521ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x53000, 0x53001).rw(this, FUNC(fantland_state::borntofi_inputs_r), FUNC(fantland_state::borntofi_nmi_enable_w));
+ map(0x53002, 0x53002).portr("DSW").w(this, FUNC(fantland_state::fantland_soundlatch_w));
+ map(0x53003, 0x53003).portr("Controls");
- AM_RANGE( 0x54000, 0x567ff ) AM_RAM AM_SHARE("spriteram")
+ map(0x54000, 0x567ff).ram().share("spriteram");
- AM_RANGE( 0x57000, 0x57000 ) AM_READ_PORT( "P1 Lightgun Y" )
- AM_RANGE( 0x57001, 0x57001 ) AM_READ_PORT( "P1 Lightgun X" )
- AM_RANGE( 0x57002, 0x57002 ) AM_READ_PORT( "P2 Lightgun Y" )
- AM_RANGE( 0x57003, 0x57003 ) AM_READ_PORT( "P2 Lightgun X" )
+ map(0x57000, 0x57000).portr("P1 Lightgun Y");
+ map(0x57001, 0x57001).portr("P1 Lightgun X");
+ map(0x57002, 0x57002).portr("P2 Lightgun Y");
+ map(0x57003, 0x57003).portr("P2 Lightgun X");
- AM_RANGE( 0x60000, 0x6ffff ) AM_RAM AM_SHARE("spriteram2")
+ map(0x60000, 0x6ffff).ram().share("spriteram2");
- AM_RANGE( 0x70000, 0x7ffff ) AM_ROM
- AM_RANGE( 0xf0000, 0xfffff ) AM_ROM
-ADDRESS_MAP_END
+ map(0x70000, 0x7ffff).rom();
+ map(0xf0000, 0xfffff).rom();
+}
/***************************************************************************
Wheels Runner
***************************************************************************/
-ADDRESS_MAP_START(fantland_state::wheelrun_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM
+void fantland_state::wheelrun_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
- AM_RANGE(0x30000, 0x3ffff) AM_ROM
- AM_RANGE(0x70000, 0x7ffff) AM_ROM
+ map(0x30000, 0x3ffff).rom();
+ map(0x70000, 0x7ffff).rom();
- AM_RANGE(0x52000, 0x521ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0x52000, 0x521ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE(0x53000, 0x53000) AM_READ_PORT( "53000" ) AM_WRITE(borntofi_nmi_enable_w )
- AM_RANGE(0x53001, 0x53001) AM_READ_PORT( "53001" )
- AM_RANGE(0x53002, 0x53002) AM_READ_PORT( "53002" ) AM_WRITE(fantland_soundlatch_w )
- AM_RANGE(0x53003, 0x53003) AM_READ_PORT( "53003" ) AM_WRITENOP
+ map(0x53000, 0x53000).portr("53000").w(this, FUNC(fantland_state::borntofi_nmi_enable_w));
+ map(0x53001, 0x53001).portr("53001");
+ map(0x53002, 0x53002).portr("53002").w(this, FUNC(fantland_state::fantland_soundlatch_w));
+ map(0x53003, 0x53003).portr("53003").nopw();
- AM_RANGE(0x54000, 0x567ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x60000, 0x6ffff) AM_RAM AM_SHARE("spriteram2")
+ map(0x54000, 0x567ff).ram().share("spriteram");
+ map(0x60000, 0x6ffff).ram().share("spriteram2");
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xf0000, 0xfffff).rom();
+}
@@ -290,22 +294,25 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(fantland_state::fantland_sound_map)
- AM_RANGE( 0x00000, 0x01fff ) AM_RAM
- AM_RANGE( 0x80000, 0x9ffff ) AM_ROM
- AM_RANGE( 0xc0000, 0xfffff ) AM_ROM
-ADDRESS_MAP_END
+void fantland_state::fantland_sound_map(address_map &map)
+{
+ map(0x00000, 0x01fff).ram();
+ map(0x80000, 0x9ffff).rom();
+ map(0xc0000, 0xfffff).rom();
+}
-ADDRESS_MAP_START(fantland_state::fantland_sound_iomap)
- AM_RANGE( 0x0080, 0x0080 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE( 0x0180, 0x0180 ) AM_DEVWRITE("dac", dac_byte_interface, write )
-ADDRESS_MAP_END
+void fantland_state::fantland_sound_iomap(address_map &map)
+{
+ map(0x0080, 0x0080).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x0100, 0x0101).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x0180, 0x0180).w("dac", FUNC(dac_byte_interface::write));
+}
-ADDRESS_MAP_START(fantland_state::galaxygn_sound_iomap)
- AM_RANGE( 0x0080, 0x0080 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
-ADDRESS_MAP_END
+void fantland_state::galaxygn_sound_iomap(address_map &map)
+{
+ map(0x0080, 0x0080).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x0100, 0x0101).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+}
/***************************************************************************
@@ -400,29 +407,31 @@ WRITE_LINE_MEMBER(fantland_state::borntofi_adpcm_int_2) { borntofi_adpcm_int(m_m
WRITE_LINE_MEMBER(fantland_state::borntofi_adpcm_int_3) { borntofi_adpcm_int(m_msm4, 3); }
-ADDRESS_MAP_START(fantland_state::borntofi_sound_map)
- AM_RANGE( 0x00000, 0x003ff ) AM_RAM
- AM_RANGE( 0x04000, 0x04000 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE( 0x04000, 0x0401f ) AM_WRITE(borntofi_msm5205_w)
- AM_RANGE( 0x08000, 0x0ffff ) AM_ROM
- AM_RANGE( 0xf8000, 0xfffff ) AM_ROM
-ADDRESS_MAP_END
+void fantland_state::borntofi_sound_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram();
+ map(0x04000, 0x04000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04000, 0x0401f).w(this, FUNC(fantland_state::borntofi_msm5205_w));
+ map(0x08000, 0x0ffff).rom();
+ map(0xf8000, 0xfffff).rom();
+}
/***************************************************************************
Wheels Runner
***************************************************************************/
-ADDRESS_MAP_START(fantland_state::wheelrun_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
+void fantland_state::wheelrun_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // on a car crash / hit
- AM_RANGE(0xc000, 0xc000) AM_WRITENOP // ""
+ map(0xb000, 0xb000).nopw(); // on a car crash / hit
+ map(0xc000, 0xc000).nopw(); // ""
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // during NMI
-ADDRESS_MAP_END
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // during NMI
+}
diff --git a/src/mame/drivers/fanucs15.cpp b/src/mame/drivers/fanucs15.cpp
index 61cba533231..a219255f572 100644
--- a/src/mame/drivers/fanucs15.cpp
+++ b/src/mame/drivers/fanucs15.cpp
@@ -333,28 +333,32 @@ private:
virtual void machine_reset() override;
};
-ADDRESS_MAP_START(fanucs15_state::maincpu_mem)
- AM_RANGE(0x00000000, 0x0017ffff) AM_ROM AM_REGION("base1b", 0)
- AM_RANGE(0x000f8000, 0x000fffff) AM_RAM // filled with 0x96 on boot
- AM_RANGE(0xffff0000, 0xffffffff) AM_RAM // initial stack
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fanucs15_state::pmccpu_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("base1a", 0)
- AM_RANGE(0xfde000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fanucs15_state::gfxcpu_mem)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_REGION("gfxboard", 0)
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fanucs15_state::convcpu_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("conversational", 0x40000)
- AM_RANGE(0x040000, 0x07ffff) AM_ROM AM_REGION("conversational", 0)
- AM_RANGE(0x800000, 0x87ffff) AM_RAM
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("conversational", 0)
-ADDRESS_MAP_END
+void fanucs15_state::maincpu_mem(address_map &map)
+{
+ map(0x00000000, 0x0017ffff).rom().region("base1b", 0);
+ map(0x000f8000, 0x000fffff).ram(); // filled with 0x96 on boot
+ map(0xffff0000, 0xffffffff).ram(); // initial stack
+}
+
+void fanucs15_state::pmccpu_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("base1a", 0);
+ map(0xfde000, 0xffffff).ram();
+}
+
+void fanucs15_state::gfxcpu_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom().region("gfxboard", 0);
+ map(0xfe0000, 0xfeffff).ram();
+}
+
+void fanucs15_state::convcpu_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("conversational", 0x40000);
+ map(0x040000, 0x07ffff).rom().region("conversational", 0);
+ map(0x800000, 0x87ffff).ram();
+ map(0xf80000, 0xffffff).rom().region("conversational", 0);
+}
/* Input ports */
static INPUT_PORTS_START( fanucs15 )
diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp
index 98c780fcd36..4af42b30450 100644
--- a/src/mame/drivers/fanucspmg.cpp
+++ b/src/mame/drivers/fanucspmg.cpp
@@ -716,35 +716,37 @@ READ16_MEMBER(fanucspmg_state::magic_r)
return 0x0041; // 31 = memory error
}
-ADDRESS_MAP_START(fanucspmg_state::maincpu_mem)
- AM_RANGE(0x00000, 0x7ffff) AM_RAM // main RAM
-
- AM_RANGE(0x80000, 0x81fff) AM_RAM // believed to be shared RAM with a CPU inside the Program File
- AM_RANGE(0x88000, 0x88001) AM_NOP // Program File "ready" bit
-
- AM_RANGE(0xf0000, 0xf0003) AM_DEVREADWRITE8(PIC0_TAG, pic8259_device, read, write, 0x00ff)
- AM_RANGE(0xf0004, 0xf0007) AM_DEVICE8(FDC_TAG, upd765a_device, map, 0x00ff)
- AM_RANGE(0xf0008, 0xf000f) AM_DEVREADWRITE8(PIT0_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xf0010, 0xf0011) AM_DEVREADWRITE8(USART0_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf0012, 0xf0013) AM_DEVREADWRITE8(USART0_TAG, i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xf0014, 0xf0015) AM_DEVREADWRITE8(USART1_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf0016, 0xf0017) AM_DEVREADWRITE8(USART1_TAG, i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xf0018, 0xf0019) AM_DEVREADWRITE8(USART2_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf001a, 0xf001b) AM_DEVREADWRITE8(USART2_TAG, i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xf001c, 0xf001d) AM_DEVREADWRITE8(USART3_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf001e, 0xf001f) AM_DEVREADWRITE8(USART3_TAG, i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xf0020, 0xf0029) AM_DEVREADWRITE8(DMAC_TAG, i8257_device, read, write, 0xffff)
- AM_RANGE(0xf0042, 0xf0043) AM_READ(magic_r)
- AM_RANGE(0xf0046, 0xf0047) AM_WRITE8(dma_page_w, 0x00ff)
- AM_RANGE(0xf0048, 0xf004f) AM_DEVREADWRITE8(PIT1_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xf2000, 0xf2003) AM_DEVREADWRITE8(PIC1_TAG, pic8259_device, read, write, 0x00ff)
-
- AM_RANGE(0xf8000, 0xf9fff) AM_READWRITE8(shared_r, shared_w, 0xffff)
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(MAINCPU_TAG, 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fanucspmg_state::maincpu_io)
-ADDRESS_MAP_END
+void fanucspmg_state::maincpu_mem(address_map &map)
+{
+ map(0x00000, 0x7ffff).ram(); // main RAM
+
+ map(0x80000, 0x81fff).ram(); // believed to be shared RAM with a CPU inside the Program File
+ map(0x88000, 0x88001).noprw(); // Program File "ready" bit
+
+ map(0xf0000, 0xf0003).rw(m_pic0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0xf0004, 0xf0007).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0xf0008, 0xf000f).rw(m_pit0, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xf0010, 0xf0010).rw(m_usart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf0012, 0xf0012).rw(m_usart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf0014, 0xf0014).rw(m_usart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf0016, 0xf0016).rw(m_usart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf0018, 0xf0018).rw(m_usart2, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf001a, 0xf001a).rw(m_usart2, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf001c, 0xf001c).rw(m_usart3, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf001e, 0xf001e).rw(m_usart3, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf0020, 0xf0029).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write));
+ map(0xf0042, 0xf0043).r(this, FUNC(fanucspmg_state::magic_r));
+ map(0xf0046, 0xf0046).w(this, FUNC(fanucspmg_state::dma_page_w));
+ map(0xf0048, 0xf004f).rw(m_pit1, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xf2000, 0xf2003).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+
+ map(0xf8000, 0xf9fff).rw(this, FUNC(fanucspmg_state::shared_r), FUNC(fanucspmg_state::shared_w));
+ map(0xfc000, 0xfffff).rom().region(MAINCPU_TAG, 0);
+}
+
+void fanucspmg_state::maincpu_io(address_map &map)
+{
+}
WRITE_LINE_MEMBER(fanucspmg_state::vsync_w)
{
@@ -817,24 +819,25 @@ WRITE8_MEMBER(fanucspmg_state::video_ctrl_w)
m_video_ctrl = data;
}
-ADDRESS_MAP_START(fanucspmg_state::subcpu_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION(SUBCPU_TAG, 0)
-
- AM_RANGE(0x4000, 0x45ff) AM_READWRITE(vram1_r, vram1_w)
- AM_RANGE(0x4800, 0x4dff) AM_READWRITE(vram2_r, vram2_w)
-
- AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE(CRTC_TAG, mc6845_device, status_r, address_w)
- AM_RANGE(0x5001, 0x5001) AM_DEVREADWRITE(CRTC_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0x5008, 0x5008) AM_WRITE(keyboard_row_w)
- AM_RANGE(0x5009, 0x5009) AM_READ(keyboard_r)
- AM_RANGE(0x500a, 0x500b) AM_WRITENOP // keyboard rows 2 and 3 control what's written here. dip switches?
- AM_RANGE(0x500c, 0x500c) AM_WRITE(vbl_ctrl_w)
- AM_RANGE(0x500d, 0x500d) AM_WRITE(vram_bank_w)
- AM_RANGE(0x500e, 0x500e) AM_READ(vblank_ack_r)
- AM_RANGE(0x5018, 0x5018) AM_WRITE(video_ctrl_w)
-
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE(SHARED_TAG) // shared RAM
-ADDRESS_MAP_END
+void fanucspmg_state::subcpu_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region(SUBCPU_TAG, 0);
+
+ map(0x4000, 0x45ff).rw(this, FUNC(fanucspmg_state::vram1_r), FUNC(fanucspmg_state::vram1_w));
+ map(0x4800, 0x4dff).rw(this, FUNC(fanucspmg_state::vram2_r), FUNC(fanucspmg_state::vram2_w));
+
+ map(0x5000, 0x5000).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x5001, 0x5001).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x5008, 0x5008).w(this, FUNC(fanucspmg_state::keyboard_row_w));
+ map(0x5009, 0x5009).r(this, FUNC(fanucspmg_state::keyboard_r));
+ map(0x500a, 0x500b).nopw(); // keyboard rows 2 and 3 control what's written here. dip switches?
+ map(0x500c, 0x500c).w(this, FUNC(fanucspmg_state::vbl_ctrl_w));
+ map(0x500d, 0x500d).w(this, FUNC(fanucspmg_state::vram_bank_w));
+ map(0x500e, 0x500e).r(this, FUNC(fanucspmg_state::vblank_ack_r));
+ map(0x5018, 0x5018).w(this, FUNC(fanucspmg_state::video_ctrl_w));
+
+ map(0xe000, 0xffff).ram().share(SHARED_TAG); // shared RAM
+}
/* Input ports */
static INPUT_PORTS_START( fanucspmg )
diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp
index 5b4e58e1569..f9b9fe72ab4 100644
--- a/src/mame/drivers/fastfred.cpp
+++ b/src/mame/drivers/fastfred.cpp
@@ -187,69 +187,73 @@ WRITE8_MEMBER(fastfred_state::sound_nmi_mask_w)
m_sound_nmi_mask = data & 1;
}
-ADDRESS_MAP_START(fastfred_state::fastfred_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_MIRROR(0x400) AM_RAM_WRITE(fastfred_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(fastfred_attributes_w) AM_SHARE("attributesram")
- AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd860, 0xdbff) AM_RAM // Unused, but initialized
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("BUTTONS") AM_WRITEONLY AM_SHARE("bgcolor")
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("JOYS")
- AM_RANGE(0xf000, 0xf007) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW") AM_WRITENOP
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fastfred_state::jumpcoas_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd03f) AM_RAM_WRITE(fastfred_attributes_w) AM_SHARE("attributesram")
- AM_RANGE(0xd040, 0xd05f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd060, 0xd3ff) AM_RAM
- AM_RANGE(0xd800, 0xdbff) AM_MIRROR(0x400) AM_RAM_WRITE(fastfred_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe000) AM_WRITEONLY AM_SHARE("bgcolor")
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSW1")
- AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSW2")
- AM_RANGE(0xe802, 0xe802) AM_READ_PORT("BUTTONS")
- AM_RANGE(0xe803, 0xe803) AM_READ_PORT("JOYS")
- AM_RANGE(0xf000, 0xf007) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0)
+void fastfred_state::fastfred_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd3ff).mirror(0x400).ram().w(this, FUNC(fastfred_state::fastfred_videoram_w)).share("videoram");
+ map(0xd800, 0xd83f).ram().w(this, FUNC(fastfred_state::fastfred_attributes_w)).share("attributesram");
+ map(0xd840, 0xd85f).ram().share("spriteram");
+ map(0xd860, 0xdbff).ram(); // Unused, but initialized
+ map(0xe000, 0xe000).portr("BUTTONS").writeonly().share("bgcolor");
+ map(0xe800, 0xe800).portr("JOYS");
+ map(0xf000, 0xf007).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xf000, 0xf000).portr("DSW").nopw();
+ map(0xf800, 0xf800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
+
+
+void fastfred_state::jumpcoas_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd03f).ram().w(this, FUNC(fastfred_state::fastfred_attributes_w)).share("attributesram");
+ map(0xd040, 0xd05f).ram().share("spriteram");
+ map(0xd060, 0xd3ff).ram();
+ map(0xd800, 0xdbff).mirror(0x400).ram().w(this, FUNC(fastfred_state::fastfred_videoram_w)).share("videoram");
+ map(0xe000, 0xe000).writeonly().share("bgcolor");
+ map(0xe800, 0xe800).portr("DSW1");
+ map(0xe801, 0xe801).portr("DSW2");
+ map(0xe802, 0xe802).portr("BUTTONS");
+ map(0xe803, 0xe803).portr("JOYS");
+ map(0xf000, 0xf007).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0));
//AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) // Why doesn't this work???
- AM_RANGE(0xf800, 0xf801) AM_READNOP AM_DEVWRITE("ay8910.1", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fastfred_state::imago_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x1fff) AM_READ(imago_sprites_offset_r)
- AM_RANGE(0x2000, 0x6fff) AM_ROM
- AM_RANGE(0xb000, 0xb3ff) AM_RAM // same fg videoram (which one of the 2 is really used?)
- AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(imago_sprites_dma_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(imago_fg_videoram_w) AM_SHARE("imago_fg_vram")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(fastfred_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(fastfred_attributes_w) AM_SHARE("attributesram")
- AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd860, 0xd8ff) AM_RAM // Unused, but initialized
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("BUTTONS")
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("JOYS")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW")
- AM_RANGE(0xf000, 0xf007) AM_MIRROR(0x03f8) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xf400, 0xf400) AM_WRITENOP // writes 0 or 2
- AM_RANGE(0xf401, 0xf401) AM_WRITE(imago_sprites_bank_w)
- AM_RANGE(0xf800, 0xf800) AM_READNOP AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fastfred_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_nmi_mask_w)
- AM_RANGE(0x4000, 0x4000) AM_WRITEONLY // Reset PSG's
- AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay8910.1", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay8910.2", ay8910_device, address_data_w)
- AM_RANGE(0x7000, 0x7000) AM_READNOP // only for Imago, read but not used
-ADDRESS_MAP_END
+ map(0xf800, 0xf801).nopr().w("ay8910.1", FUNC(ay8910_device::address_data_w));
+}
+
+
+void fastfred_state::imago_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x1fff).r(this, FUNC(fastfred_state::imago_sprites_offset_r));
+ map(0x2000, 0x6fff).rom();
+ map(0xb000, 0xb3ff).ram(); // same fg videoram (which one of the 2 is really used?)
+ map(0xb800, 0xbfff).ram().w(this, FUNC(fastfred_state::imago_sprites_dma_w));
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcbff).ram().w(this, FUNC(fastfred_state::imago_fg_videoram_w)).share("imago_fg_vram");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(fastfred_state::fastfred_videoram_w)).share("videoram");
+ map(0xd800, 0xd83f).ram().w(this, FUNC(fastfred_state::fastfred_attributes_w)).share("attributesram");
+ map(0xd840, 0xd85f).ram().share("spriteram");
+ map(0xd860, 0xd8ff).ram(); // Unused, but initialized
+ map(0xe000, 0xe000).portr("BUTTONS");
+ map(0xe800, 0xe800).portr("JOYS");
+ map(0xf000, 0xf000).portr("DSW");
+ map(0xf000, 0xf007).mirror(0x03f8).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xf400, 0xf400).nopw(); // writes 0 or 2
+ map(0xf401, 0xf401).w(this, FUNC(fastfred_state::imago_sprites_bank_w));
+ map(0xf800, 0xf800).nopr().w("soundlatch", FUNC(generic_latch_8_device::write));
+}
+
+void fastfred_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(fastfred_state::sound_nmi_mask_w));
+ map(0x4000, 0x4000).writeonly(); // Reset PSG's
+ map(0x5000, 0x5001).w("ay8910.1", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).w("ay8910.2", FUNC(ay8910_device::address_data_w));
+ map(0x7000, 0x7000).nopr(); // only for Imago, read but not used
+}
static INPUT_PORTS_START( common )
diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp
index 37bb256e017..f4325aa232e 100644
--- a/src/mame/drivers/fastinvaders.cpp
+++ b/src/mame/drivers/fastinvaders.cpp
@@ -508,59 +508,63 @@ logerror("dma write\n");
***************************************************************************/
-ADDRESS_MAP_START(fastinvaders_state::fastinvaders_map)
+void fastinvaders_state::fastinvaders_map(address_map &map)
+{
//AM_RANGE(0x0000, 0x1fff) AM_ROM AM_MIRROR(0x8000)
- AM_RANGE(0x0000, 0x27ff) AM_ROM AM_MIRROR(0x8000)
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_MIRROR(0x8000) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fastinvaders_state::fastinvaders_io_base)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fastinvaders_state::fastinvaders_6845_io)
- AM_IMPORT_FROM(fastinvaders_io_base)
-
- AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("6845", mc6845_device, address_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("6845", mc6845_device, register_r, register_w)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch
+ map(0x0000, 0x27ff).rom().mirror(0x8000);
+ map(0x2800, 0x2fff).ram().mirror(0x8000).share("videoram");
+ map(0x3000, 0x33ff).ram().mirror(0x8000);
+}
+
+void fastinvaders_state::fastinvaders_io_base(address_map &map)
+{
+}
+
+void fastinvaders_state::fastinvaders_6845_io(address_map &map)
+{
+ fastinvaders_io_base(map);
+
+ map(0x10, 0x1f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write));
+ map(0x20, 0x20).w(m_crtc6845, FUNC(mc6845_device::address_w));
+ map(0x21, 0x21).rw(m_crtc6845, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x30, 0x33).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x40, 0x4f).w(this, FUNC(fastinvaders_state::io_40_w)); //ds4 //latch
//AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch
- AM_RANGE(0x60, 0x60) AM_READ(io_60_r)
- AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear
- AM_RANGE(0x80, 0x80) AM_NOP //ds8 write here a LOT ?????
- AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command
- AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear
- AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear
- AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear
- AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear
- AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear
- AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fastinvaders_state::fastinvaders_8275_io)
- AM_IMPORT_FROM(fastinvaders_io_base)
-
- AM_RANGE( 0x20, 0x21 ) AM_DEVREADWRITE("8275", i8275_device, read, write)
-
-AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch
+ map(0x60, 0x60).r(this, FUNC(fastinvaders_state::io_60_r));
+ map(0x70, 0x70).w(this, FUNC(fastinvaders_state::io_70_w)); //ds7 rest55,rest65,trap, irq0 clear
+ map(0x80, 0x80).noprw(); //ds8 write here a LOT ?????
+ map(0x90, 0x90).w(this, FUNC(fastinvaders_state::io_90_w)); //ds9 sound command
+ map(0xa0, 0xa0).w(this, FUNC(fastinvaders_state::io_a0_w)); //ds10 irq1 clear
+ map(0xb0, 0xb0).w(this, FUNC(fastinvaders_state::io_b0_w)); //ds11 irq2 clear
+ map(0xc0, 0xc0).w(this, FUNC(fastinvaders_state::io_c0_w)); //ds12 irq3 clear
+ map(0xd0, 0xd0).w(this, FUNC(fastinvaders_state::io_d0_w)); //ds13 irq5 clear
+ map(0xe0, 0xe0).w(this, FUNC(fastinvaders_state::io_e0_w)); //ds14 irq4 clear
+ map(0xf0, 0xf0).w(this, FUNC(fastinvaders_state::io_f0_w)); //ds15 irq6 clear
+}
+
+
+void fastinvaders_state::fastinvaders_8275_io(address_map &map)
+{
+ fastinvaders_io_base(map);
+
+ map(0x20, 0x21).rw(m_crtc8275, FUNC(i8275_device::read), FUNC(i8275_device::write));
+
+map(0x10, 0x1f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write));
+ map(0x30, 0x33).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x40, 0x4f).w(this, FUNC(fastinvaders_state::io_40_w)); //ds4 //latch
//AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch
- AM_RANGE(0x60, 0x60) AM_READ(io_60_r)
- AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear
- AM_RANGE(0x80, 0x80) AM_NOP //write here a LOT
+ map(0x60, 0x60).r(this, FUNC(fastinvaders_state::io_60_r));
+ map(0x70, 0x70).w(this, FUNC(fastinvaders_state::io_70_w)); //ds7 rest55,rest65,trap, irq0 clear
+ map(0x80, 0x80).noprw(); //write here a LOT
//AM_RANGE(0x80, 0x80) AM_WRITE(io_80_w) //ds8 ????
- AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command
- AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear
- AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear
- AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear
- AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear
- AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear
- AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear
-ADDRESS_MAP_END
+ map(0x90, 0x90).w(this, FUNC(fastinvaders_state::io_90_w)); //ds9 sound command
+ map(0xa0, 0xa0).w(this, FUNC(fastinvaders_state::io_a0_w)); //ds10 irq1 clear
+ map(0xb0, 0xb0).w(this, FUNC(fastinvaders_state::io_b0_w)); //ds11 irq2 clear
+ map(0xc0, 0xc0).w(this, FUNC(fastinvaders_state::io_c0_w)); //ds12 irq3 clear
+ map(0xd0, 0xd0).w(this, FUNC(fastinvaders_state::io_d0_w)); //ds13 irq5 clear
+ map(0xe0, 0xe0).w(this, FUNC(fastinvaders_state::io_e0_w)); //ds14 irq4 clear
+ map(0xf0, 0xf0).w(this, FUNC(fastinvaders_state::io_f0_w)); //ds15 irq6 clear
+}
diff --git a/src/mame/drivers/fastlane.cpp b/src/mame/drivers/fastlane.cpp
index 9c056d5f7ff..c5a4dd93cfc 100644
--- a/src/mame/drivers/fastlane.cpp
+++ b/src/mame/drivers/fastlane.cpp
@@ -77,27 +77,28 @@ WRITE8_MEMBER(fastlane_state::fastlane_k2_k007232_w)
{
m_k007232_2->write(space, offset ^ 1, data);
}
-ADDRESS_MAP_START(fastlane_state::fastlane_map)
- AM_RANGE(0x0000, 0x005f) AM_RAM_WRITE(k007121_registers_w) AM_SHARE("k007121_regs") /* 007121 registers */
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW3")
- AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2")
- AM_RANGE(0x0802, 0x0802) AM_READ_PORT("P1")
- AM_RANGE(0x0803, 0x0803) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0900, 0x0900) AM_READ_PORT("DSW1")
- AM_RANGE(0x0901, 0x0901) AM_READ_PORT("DSW2")
- AM_RANGE(0x0b00, 0x0b00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0c00, 0x0c00) AM_WRITE(fastlane_bankswitch_w) /* bankswitch control */
- AM_RANGE(0x0d00, 0x0d0d) AM_READWRITE(fastlane_k1_k007232_r, fastlane_k1_k007232_w) /* 007232 registers (chip 1) */
- AM_RANGE(0x0e00, 0x0e0d) AM_READWRITE(fastlane_k2_k007232_r, fastlane_k2_k007232_w) /* 007232 registers (chip 2) */
- AM_RANGE(0x0f00, 0x0f1f) AM_DEVREADWRITE("k051733", k051733_device, read, write) /* 051733 (protection) */
- AM_RANGE(0x1000, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0x1800, 0x1fff) AM_RAM /* Work RAM */
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(fastlane_vram1_w) AM_SHARE("videoram1") /* Video RAM (chip 1) */
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fastlane_vram2_w) AM_SHARE("videoram2") /* Video RAM (chip 2) */
- AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
+void fastlane_state::fastlane_map(address_map &map)
+{
+ map(0x0000, 0x005f).ram().w(this, FUNC(fastlane_state::k007121_registers_w)).share("k007121_regs"); /* 007121 registers */
+ map(0x0800, 0x0800).portr("DSW3");
+ map(0x0801, 0x0801).portr("P2");
+ map(0x0802, 0x0802).portr("P1");
+ map(0x0803, 0x0803).portr("SYSTEM");
+ map(0x0900, 0x0900).portr("DSW1");
+ map(0x0901, 0x0901).portr("DSW2");
+ map(0x0b00, 0x0b00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x0c00, 0x0c00).w(this, FUNC(fastlane_state::fastlane_bankswitch_w)); /* bankswitch control */
+ map(0x0d00, 0x0d0d).rw(this, FUNC(fastlane_state::fastlane_k1_k007232_r), FUNC(fastlane_state::fastlane_k1_k007232_w)); /* 007232 registers (chip 1) */
+ map(0x0e00, 0x0e0d).rw(this, FUNC(fastlane_state::fastlane_k2_k007232_r), FUNC(fastlane_state::fastlane_k2_k007232_w)); /* 007232 registers (chip 2) */
+ map(0x0f00, 0x0f1f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* 051733 (protection) */
+ map(0x1000, 0x17ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0x1800, 0x1fff).ram(); /* Work RAM */
+ map(0x2000, 0x27ff).ram().w(this, FUNC(fastlane_state::fastlane_vram1_w)).share("videoram1"); /* Video RAM (chip 1) */
+ map(0x2800, 0x2fff).ram().w(this, FUNC(fastlane_state::fastlane_vram2_w)).share("videoram2"); /* Video RAM (chip 2) */
+ map(0x3000, 0x3fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x4000, 0x7fff).bankr("bank1"); /* banked ROM */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
/***************************************************************************
diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp
index 6c136ec07b8..a23689f12e3 100644
--- a/src/mame/drivers/fb01.cpp
+++ b/src/mame/drivers/fb01.cpp
@@ -64,30 +64,32 @@ private:
};
-ADDRESS_MAP_START(fb01_state::fb01_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("nvram") // 2 * 8KB S-RAM
-ADDRESS_MAP_END
+void fb01_state::fb01_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).ram().share("nvram"); // 2 * 8KB S-RAM
+}
-ADDRESS_MAP_START(fb01_state::fb01_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void fb01_state::fb01_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// 00-01 YM2164
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ym2164", ym2151_device, register_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ym2164", ym2151_device, status_r, data_w)
+ map(0x00, 0x00).w("ym2164", FUNC(ym2151_device::register_w));
+ map(0x01, 0x01).rw("ym2164", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
// 10-11 USART uPD71051C 4MHz & 4MHz / 8
- AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("upd71051", i8251_device, data_r, data_w)
- AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("upd71051", i8251_device, status_r, control_w)
+ map(0x10, 0x10).rw(m_upd71051, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x11, 0x11).rw(m_upd71051, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// 20 PANEL SWITCH
- AM_RANGE(0x20, 0x20) AM_READ_PORT("PANEL")
+ map(0x20, 0x20).portr("PANEL");
// 30-31 HD44780A
- AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("hd44780", hd44780_device, control_read, control_write)
- AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("hd44780", hd44780_device, data_read, data_write)
-ADDRESS_MAP_END
+ map(0x30, 0x30).rw("hd44780", FUNC(hd44780_device::control_read), FUNC(hd44780_device::control_write));
+ map(0x31, 0x31).rw("hd44780", FUNC(hd44780_device::data_read), FUNC(hd44780_device::data_write));
+}
static INPUT_PORTS_START( fb01 )
diff --git a/src/mame/drivers/fc100.cpp b/src/mame/drivers/fc100.cpp
index 0e339440c19..6ebb90adcf2 100644
--- a/src/mame/drivers/fc100.cpp
+++ b/src/mame/drivers/fc100.cpp
@@ -118,34 +118,36 @@ private:
};
-ADDRESS_MAP_START(fc100_state::fc100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_REGION("roms", 0)
+void fc100_state::fc100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5fff).rom().region("roms", 0);
//AM_RANGE(0x6000, 0x6fff) // mapped by the cartslot
- AM_RANGE( 0x7800, 0x7fff ) AM_READ_BANK("bankr") AM_WRITE_BANK("bankw") // Banked RAM/ROM
- AM_RANGE( 0x8000, 0xbfff ) AM_RAM // expansion ram pack - if omitted you get a 'Pages?' prompt at boot
- AM_RANGE( 0xc000, 0xffff ) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fc100_state::fc100_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0F) AM_READ(port00_r)
+ map(0x7800, 0x7fff).bankr("bankr").bankw("bankw"); // Banked RAM/ROM
+ map(0x8000, 0xbfff).ram(); // expansion ram pack - if omitted you get a 'Pages?' prompt at boot
+ map(0xc000, 0xffff).ram().share("videoram");
+}
+
+void fc100_state::fc100_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x0F).r(this, FUNC(fc100_state::port00_r));
// AM_RANGE(0x10, 0x10) AM_WRITE(port10_w) // vdg, unknown effects
- AM_RANGE(0x21, 0x21) AM_DEVWRITE("psg", ay8910_device, data_w)
- AM_RANGE(0x22, 0x22) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x23, 0x23) AM_DEVWRITE("psg", ay8910_device, address_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(port31_w)
- AM_RANGE(0x33, 0x33) AM_WRITE(port33_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x42, 0x42) AM_WRITENOP // bit 0 could be printer select
- AM_RANGE(0x43, 0x43) AM_WRITE(port43_w)
- AM_RANGE(0x44, 0x44) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0x60, 0x61) AM_WRITE(port60_w)
- AM_RANGE(0x70, 0x71) AM_WRITE(port70_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0xb8, 0xb8) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+ map(0x21, 0x21).w("psg", FUNC(ay8910_device::data_w));
+ map(0x22, 0x22).r("psg", FUNC(ay8910_device::data_r));
+ map(0x23, 0x23).w("psg", FUNC(ay8910_device::address_w));
+ map(0x31, 0x31).w(this, FUNC(fc100_state::port31_w));
+ map(0x33, 0x33).w(this, FUNC(fc100_state::port33_w));
+ map(0x40, 0x40).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x42, 0x42).nopw(); // bit 0 could be printer select
+ map(0x43, 0x43).w(this, FUNC(fc100_state::port43_w));
+ map(0x44, 0x44).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0x60, 0x61).w(this, FUNC(fc100_state::port60_w));
+ map(0x70, 0x71).w(this, FUNC(fc100_state::port70_w));
+ map(0xb0, 0xb0).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xb8, 0xb8).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
static INPUT_PORTS_START( fc100 )
PORT_START("KEY.0")
diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp
index e62c2c74026..0bedae62ffb 100644
--- a/src/mame/drivers/fccpu30.cpp
+++ b/src/mame/drivers/fccpu30.cpp
@@ -328,29 +328,30 @@ private:
uint8_t m_board_id;
};
-ADDRESS_MAP_START(cpu30_state::cpu30_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x00000000, 0x00000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */
- AM_RANGE (0x00000000, 0x00000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just during reset */
+void cpu30_state::cpu30_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x00000007).ram().w(this, FUNC(cpu30_state::bootvect_w)); /* After first write we act as RAM */
+ map(0x00000000, 0x00000007).rom().r(this, FUNC(cpu30_state::bootvect_r)); /* ROM mirror just during reset */
// AM_RANGE (0x00000008, 0x003fffff) AM_RAM /* RAM installed in machine start */
- AM_RANGE (0xff000000, 0xff7fffff) AM_ROM AM_REGION("roms", 0x000000)
- AM_RANGE (0xff800c00, 0xff800dff) AM_DEVREADWRITE8("pit1", pit68230_device, read, write, 0xffffffff)
- AM_RANGE (0xff800e00, 0xff800fff) AM_DEVREADWRITE8("pit2", pit68230_device, read, write, 0xffffffff)
- AM_RANGE (0xff802000, 0xff8021ff) AM_DEVREADWRITE8("duscc", duscc68562_device, read, write, 0xffffffff) /* Port 1&2 - Dual serial port DUSCC */
- AM_RANGE (0xff802200, 0xff8023ff) AM_DEVREADWRITE8("duscc2", duscc68562_device, read, write, 0xffffffff) /* Port 3&4 - Dual serial port DUSCC */
- AM_RANGE (0xff803000, 0xff8031ff) AM_DEVREADWRITE8("rtc", rtc72423_device, read, write, 0xffffffff)
+ map(0xff000000, 0xff7fffff).rom().region("roms", 0x000000);
+ map(0xff800c00, 0xff800dff).rw(m_pit1, FUNC(pit68230_device::read), FUNC(pit68230_device::write));
+ map(0xff800e00, 0xff800fff).rw(m_pit2, FUNC(pit68230_device::read), FUNC(pit68230_device::write));
+ map(0xff802000, 0xff8021ff).rw(m_dusccterm, FUNC(duscc68562_device::read), FUNC(duscc68562_device::write)); /* Port 1&2 - Dual serial port DUSCC */
+ map(0xff802200, 0xff8023ff).rw("duscc2", FUNC(duscc68562_device::read), FUNC(duscc68562_device::write)); /* Port 3&4 - Dual serial port DUSCC */
+ map(0xff803000, 0xff8031ff).rw(m_rtc, FUNC(rtc72423_device::read), FUNC(rtc72423_device::write));
// AM_RANGE (0xff803400, 0xff8035ff) AM_DEVREADWRITE8("scsi", mb87033_device, read, write, 0xffffffff) /* TODO: implement MB87344 SCSI device */
- AM_RANGE (0xff803400, 0xff8035ff) AM_READWRITE8(scsi_r, scsi_w, 0x000000ff) /* mock driver to log calls to device */
+ map(0xff803400, 0xff8035ff).rw(this, FUNC(cpu30_state::scsi_r), FUNC(cpu30_state::scsi_w)).umask32(0x000000ff); /* mock driver to log calls to device */
// AM_RANGE (0xff803800, 0xff80397f) AM_DEVREADWRITE8("fdc", wd37c65c_device, read, write, 0xffffffff) /* TODO: implement WD3/C65C fdc controller */
- AM_RANGE (0xff803800, 0xff80397f) AM_READWRITE8(fdc_r, fdc_w, 0x000000ff) /* mock driver to log calls to device */
- AM_RANGE (0xff803980, 0xff8039ff) AM_READ8(slot1_status_r, 0x000000ff)
- AM_RANGE (0xffc00000, 0xffcfffff) AM_RAM AM_SHARE ("nvram") /* On-board SRAM with battery backup (nvram) */
- AM_RANGE (0xffd00000, 0xffdfffff) AM_DEVREADWRITE8("fga002", fga002_device, read, write, 0xffffffff) /* FGA-002 Force Gate Array */
- AM_RANGE (0xffe00000, 0xffefffff) AM_ROM AM_REGION("roms", 0x800000)
+ map(0xff803800, 0xff80397f).rw(this, FUNC(cpu30_state::fdc_r), FUNC(cpu30_state::fdc_w)).umask32(0x000000ff); /* mock driver to log calls to device */
+ map(0xff803980, 0xff8039ff).r(this, FUNC(cpu30_state::slot1_status_r)).umask32(0x000000ff);
+ map(0xffc00000, 0xffcfffff).ram().share("nvram"); /* On-board SRAM with battery backup (nvram) */
+ map(0xffd00000, 0xffdfffff).rw(m_fga002, FUNC(fga002_device::read), FUNC(fga002_device::write)); /* FGA-002 Force Gate Array */
+ map(0xffe00000, 0xffefffff).rom().region("roms", 0x800000);
//AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */
//AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START (cpu30)
diff --git a/src/mame/drivers/fcombat.cpp b/src/mame/drivers/fcombat.cpp
index 36bdda26c0e..985edef36a1 100644
--- a/src/mame/drivers/fcombat.cpp
+++ b/src/mame/drivers/fcombat.cpp
@@ -113,38 +113,40 @@ WRITE8_MEMBER(fcombat_state::ee00_w)
{
}
-ADDRESS_MAP_START(fcombat_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe000) AM_READ(fcombat_port01_r)
- AM_RANGE(0xe100, 0xe100) AM_READ_PORT("DSW0")
- AM_RANGE(0xe200, 0xe200) AM_READ_PORT("DSW1")
- AM_RANGE(0xe300, 0xe300) AM_READ(e300_r)
- AM_RANGE(0xe400, 0xe400) AM_READ(fcombat_protection_r) // protection?
- AM_RANGE(0xe800, 0xe800) AM_WRITE(fcombat_videoreg_w) // at least bit 0 for flip screen and joystick input multiplexor
- AM_RANGE(0xe900, 0xe900) AM_WRITE(e900_w)
- AM_RANGE(0xea00, 0xea00) AM_WRITE(ea00_w)
- AM_RANGE(0xeb00, 0xeb00) AM_WRITE(eb00_w)
- AM_RANGE(0xec00, 0xec00) AM_WRITE(ec00_w)
- AM_RANGE(0xed00, 0xed00) AM_WRITE(ed00_w)
- AM_RANGE(0xee00, 0xee00) AM_WRITE(ee00_w) // related to protection ? - doesn't seem to have any effect
- AM_RANGE(0xef00, 0xef00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fcombat_state::audio_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ay3", ay8910_device, data_r)
- AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("ay3", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void fcombat_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd7ff).ram().share("videoram");
+ map(0xd800, 0xd8ff).ram().share("spriteram");
+ map(0xe000, 0xe000).r(this, FUNC(fcombat_state::fcombat_port01_r));
+ map(0xe100, 0xe100).portr("DSW0");
+ map(0xe200, 0xe200).portr("DSW1");
+ map(0xe300, 0xe300).r(this, FUNC(fcombat_state::e300_r));
+ map(0xe400, 0xe400).r(this, FUNC(fcombat_state::fcombat_protection_r)); // protection?
+ map(0xe800, 0xe800).w(this, FUNC(fcombat_state::fcombat_videoreg_w)); // at least bit 0 for flip screen and joystick input multiplexor
+ map(0xe900, 0xe900).w(this, FUNC(fcombat_state::e900_w));
+ map(0xea00, 0xea00).w(this, FUNC(fcombat_state::ea00_w));
+ map(0xeb00, 0xeb00).w(this, FUNC(fcombat_state::eb00_w));
+ map(0xec00, 0xec00).w(this, FUNC(fcombat_state::ec00_w));
+ map(0xed00, 0xed00).w(this, FUNC(fcombat_state::ed00_w));
+ map(0xee00, 0xee00).w(this, FUNC(fcombat_state::ee00_w)); // related to protection ? - doesn't seem to have any effect
+ map(0xef00, 0xef00).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
+
+
+void fcombat_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8002, 0x8003).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0xa001, 0xa001).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa003).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0xc001, 0xc001).r("ay3", FUNC(ay8910_device::data_r));
+ map(0xc002, 0xc003).w("ay3", FUNC(ay8910_device::data_address_w));
+}
diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp
index 7277bc962f5..04190d90368 100644
--- a/src/mame/drivers/fcrash.cpp
+++ b/src/mame/drivers/fcrash.cpp
@@ -663,228 +663,243 @@ uint32_t cps_state::screen_update_fcrash(screen_device &screen, bitmap_ind16 &bi
}
-ADDRESS_MAP_START(cps_state::knightsb_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2") /* Player 3 controls */
- AM_RANGE(0x800004, 0x800005) AM_WRITENOP // writes 0000 here
- AM_RANGE(0x800006, 0x800007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800030, 0x800037) AM_WRITENOP //AM_WRITE(cps1_coinctrl_w) only writes bit 15
- AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x800180, 0x800181) AM_WRITENOP //AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
- AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown
- AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0x980000, 0x98002f) AM_WRITE(knightsb_layer_w)
- AM_RANGE(0x990000, 0x990001) AM_WRITENOP // same as 880000
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::dinopic_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x800222, 0x800223) AM_WRITE(dinopic_layer2_w)
- AM_RANGE(0x880000, 0x880001) AM_WRITENOP // always 0
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0x980000, 0x98000b) AM_WRITE(dinopic_layer_w)
- AM_RANGE(0xf18000, 0xf19fff) AM_RAM
- AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */
- AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
- AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::fcrash_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x880006, 0x880007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */
- AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x890000, 0x890001) AM_WRITENOP // palette related?
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::punipic_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x880000, 0x880001) AM_WRITENOP // same as 98000C
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0x980000, 0x98000f) AM_WRITE(punipic_layer_w)
- AM_RANGE(0x990000, 0x990001) AM_WRITENOP // unknown
- AM_RANGE(0x991000, 0x991017) AM_WRITENOP // unknown
- AM_RANGE(0xf18000, 0xf19fff) AM_RAM
- AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sf2m1_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
- AM_RANGE(0x800012, 0x800013) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x800180, 0x800181) AM_WRITENOP // only once at boot, for 80010c
- AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
- AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown
- AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0x980000, 0x9801ff) AM_WRITE(sf2m1_layer_w)
- AM_RANGE(0x990000, 0x990001) AM_WRITENOP // same as 880000
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sf2mdt_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x708100, 0x7081ff) AM_WRITE(sf2mdta_layer_w)
- AM_RANGE(0x70c000, 0x70c001) AM_READ_PORT("IN1")
- AM_RANGE(0x70c008, 0x70c009) AM_READ_PORT("IN2")
- AM_RANGE(0x70c018, 0x70c01f) AM_READ(cps1_hack_dsw_r)
- AM_RANGE(0x70c106, 0x70c107) AM_WRITE(cawingbl_soundlatch_w)
- AM_RANGE(0x70d000, 0x70d001) AM_WRITENOP // writes FFFF
+void cps_state::knightsb_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x800001).portr("IN1"); /* Player input ports */
+ map(0x800002, 0x800003).portr("IN2"); /* Player 3 controls */
+ map(0x800004, 0x800005).nopw(); // writes 0000 here
+ map(0x800006, 0x800007).w(this, FUNC(cps_state::fcrash_soundlatch_w)); /* Sound command */
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800030, 0x800037).nopw(); //AM_WRITE(cps1_coinctrl_w) only writes bit 15
+ map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */
+ map(0x800180, 0x800181).nopw(); //AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ map(0x880000, 0x880001).nopw(); // unknown
+ map(0x900000, 0x93ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0x980000, 0x98002f).w(this, FUNC(cps_state::knightsb_layer_w));
+ map(0x990000, 0x990001).nopw(); // same as 880000
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::dinopic_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x800007).portr("IN1"); /* Player input ports */
+ map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x800222, 0x800223).w(this, FUNC(cps_state::dinopic_layer2_w));
+ map(0x880000, 0x880001).nopw(); // always 0
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0x980000, 0x98000b).w(this, FUNC(cps_state::dinopic_layer_w));
+ map(0xf18000, 0xf19fff).ram();
+ map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */
+ map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
+ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::fcrash_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800030, 0x800031).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */
+ map(0x880000, 0x880001).portr("IN1"); /* Player input ports */
+ map(0x880006, 0x880007).w(this, FUNC(cps_state::fcrash_soundlatch_w)); /* Sound command */
+ map(0x880008, 0x88000f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x890000, 0x890001).nopw(); // palette related?
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::punipic_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x800007).portr("IN1"); /* Player input ports */
+ map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x880000, 0x880001).nopw(); // same as 98000C
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0x980000, 0x98000f).w(this, FUNC(cps_state::punipic_layer_w));
+ map(0x990000, 0x990001).nopw(); // unknown
+ map(0x991000, 0x991017).nopw(); // unknown
+ map(0xf18000, 0xf19fff).ram();
+ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
+ map(0xff0000, 0xffffff).ram().share("mainram");
+}
+
+void cps_state::sf2m1_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x800007).portr("IN1"); /* Player input ports */
+ map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */
+ map(0x800012, 0x800013).r(this, FUNC(cps_state::cps1_in2_r)); /* Buttons 4,5,6 for both players */
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x800180, 0x800181).nopw(); // only once at boot, for 80010c
+ map(0x800188, 0x80018f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */
+ map(0x880000, 0x880001).nopw(); // unknown
+ map(0x900000, 0x93ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0x980000, 0x9801ff).w(this, FUNC(cps_state::sf2m1_layer_w));
+ map(0x990000, 0x990001).nopw(); // same as 880000
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::sf2mdt_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x708100, 0x7081ff).w(this, FUNC(cps_state::sf2mdta_layer_w));
+ map(0x70c000, 0x70c001).portr("IN1");
+ map(0x70c008, 0x70c009).portr("IN2");
+ map(0x70c018, 0x70c01f).r(this, FUNC(cps_state::cps1_hack_dsw_r));
+ map(0x70c106, 0x70c107).w(this, FUNC(cps_state::cawingbl_soundlatch_w));
+ map(0x70d000, 0x70d001).nopw(); // writes FFFF
//AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sf2b_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x708100, 0x7081ff) AM_WRITE(sf2mdta_layer_w)
- AM_RANGE(0x70c000, 0x70c001) AM_READ_PORT("IN1")
- AM_RANGE(0x70c008, 0x70c009) AM_READ_PORT("IN2")
- AM_RANGE(0x70c018, 0x70c01f) AM_READ(cps1_hack_dsw_r)
- AM_RANGE(0x70c106, 0x70c107) AM_WRITE(cawingbl_soundlatch_w)
- AM_RANGE(0x70d000, 0x70d001) AM_WRITENOP // writes FFFF
+ 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(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::sf2b_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x708100, 0x7081ff).w(this, FUNC(cps_state::sf2mdta_layer_w));
+ map(0x70c000, 0x70c001).portr("IN1");
+ map(0x70c008, 0x70c009).portr("IN2");
+ map(0x70c018, 0x70c01f).r(this, FUNC(cps_state::cps1_hack_dsw_r));
+ map(0x70c106, 0x70c107).w(this, FUNC(cps_state::cawingbl_soundlatch_w));
+ map(0x70d000, 0x70d001).nopw(); // writes FFFF
//AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sgyxz_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x880006, 0x88000d) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x88000e, 0x88000f) AM_WRITE(cps1_soundlatch_w)
- AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
- AM_RANGE(0x890000, 0x890001) AM_WRITE(cps1_soundlatch2_w)
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
- AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::wofabl_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
- AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x880006, 0x880007) AM_WRITE(cps1_soundlatch_w)
- AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
- AM_RANGE(0x890000, 0x890001) AM_WRITE(cps1_soundlatch2_w)
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
- AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::slampic_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800006, 0x800007) AM_WRITENOP //AM_WRITE(cps1_soundlatch2_w)
- AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x880000, 0x880001) AM_WRITENOP //AM_WRITE(cps1_soundlatch_w) /* Sound command */
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0x980000, 0x98000d) AM_WRITE(slampic_layer_w)
- AM_RANGE(0xf00000, 0xf0ffff) AM_READ(qsound_rom_r) /* Slammasters protection */
- AM_RANGE(0xf18000, 0xf19fff) AM_RAM
- AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */
- AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
- AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0xf1f000, 0xf1ffff) AM_NOP // writes 0 to range, then reads F1F6EC
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xdc00, 0xdc01) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(fcrash_snd_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_0_data_w)
- AM_RANGE(0xec00, 0xec00) AM_WRITE(fcrash_msm5205_1_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::kodb_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
- AM_RANGE(0xe400, 0xe400) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sf2mdt_z80map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write)
- AM_RANGE(0xdc00, 0xdc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(sf2mdt_snd_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::knightsb_z80map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xcffe, 0xcfff) AM_WRITENOP // writes lots of data
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write)
- AM_RANGE(0xdc00, 0xdc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(knightsb_snd_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cps_state::sgyxz_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
- AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w)
- AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */
- AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound command */
- AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* Sound timer fade */
-ADDRESS_MAP_END
+ map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, 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(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::sgyxz_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800030, 0x800031).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */
+ map(0x880000, 0x880001).portr("IN1"); /* Player input ports */
+ map(0x880006, 0x88000d).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x88000e, 0x88000f).w(this, FUNC(cps_state::cps1_soundlatch_w));
+ map(0x880e78, 0x880e79).r(this, FUNC(cps_state::cps1_in2_r)); /* Player 3 controls (later games) */
+ map(0x890000, 0x890001).w(this, FUNC(cps_state::cps1_soundlatch2_w));
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
+ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::wofabl_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x800030, 0x800031).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */
+ map(0x880000, 0x880001).portr("IN1"); /* Player input ports */
+ map(0x880006, 0x880007).w(this, FUNC(cps_state::cps1_soundlatch_w));
+ map(0x880008, 0x88000f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x880e78, 0x880e79).r(this, FUNC(cps_state::cps1_in2_r)); /* Player 3 controls (later games) */
+ map(0x890000, 0x890001).w(this, FUNC(cps_state::cps1_soundlatch2_w));
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
+ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void cps_state::slampic_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800006, 0x800007).nopw(); //AM_WRITE(cps1_soundlatch2_w)
+ map(0x800000, 0x800007).portr("IN1"); /* Player input ports */
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x880000, 0x880001).nopw(); //AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0x980000, 0x98000d).w(this, FUNC(cps_state::slampic_layer_w));
+ map(0xf00000, 0xf0ffff).r(this, FUNC(cps_state::qsound_rom_r)); /* Slammasters protection */
+ map(0xf18000, 0xf19fff).ram();
+ map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */
+ map(0xf1c004, 0xf1c005).w(this, 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();
+}
+
+void cps_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xd000, 0xd7ff).ram();
+ map(0xd800, 0xd801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xdc00, 0xdc01).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xe000, 0xe000).w(this, FUNC(cps_state::fcrash_snd_bankswitch_w));
+ map(0xe400, 0xe400).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).w(this, FUNC(cps_state::fcrash_msm5205_0_data_w));
+ map(0xec00, 0xec00).w(this, FUNC(cps_state::fcrash_msm5205_1_data_w));
+}
+
+void cps_state::kodb_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xd000, 0xd7ff).ram();
+ map(0xe000, 0xe001).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe400, 0xe400).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void cps_state::sf2mdt_z80map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xd000, 0xd7ff).ram();
+ map(0xd800, 0xd801).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xdc00, 0xdc00).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe000).w(this, FUNC(cps_state::sf2mdt_snd_bankswitch_w));
+ map(0xe400, 0xe400).w(this, FUNC(cps_state::fcrash_msm5205_0_data_w));
+ map(0xe800, 0xe800).w(this, FUNC(cps_state::fcrash_msm5205_1_data_w));
+}
+
+void cps_state::knightsb_z80map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xcffe, 0xcfff).nopw(); // writes lots of data
+ map(0xd000, 0xd7ff).ram();
+ map(0xd800, 0xd801).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xdc00, 0xdc00).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe000).w(this, FUNC(cps_state::knightsb_snd_bankswitch_w));
+ map(0xe400, 0xe400).w(this, FUNC(cps_state::fcrash_msm5205_0_data_w));
+ map(0xe800, 0xe800).w(this, FUNC(cps_state::fcrash_msm5205_1_data_w));
+}
+
+void cps_state::sgyxz_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xd000, 0xd7ff).ram();
+ map(0xf000, 0xf001).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf004, 0xf004).w(this, FUNC(cps_state::cps1_snd_bankswitch_w));
+ map(0xf006, 0xf006).w(this, FUNC(cps_state::cps1_oki_pin7_w)); /* controls pin 7 of OKI chip */
+ map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound command */
+ map(0xf00a, 0xf00a).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); /* Sound timer fade */
+}
#define CPS1_COINAGE_1 \
@@ -3077,19 +3092,20 @@ WRITE16_MEMBER(cps_state::varthb_layer_w)
m_cps_a_regs[0x06 / 2] = data;
}
-ADDRESS_MAP_START(cps_state::varthb_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1")
- AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w)
- AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r)
- AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
- AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs")
- AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
- AM_RANGE(0x800188, 0x800189) AM_WRITE(varthb_layer_w)
- AM_RANGE(0x980000, 0x98000b) AM_WRITE(dinopic_layer_w)
- AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+void cps_state::varthb_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x800000, 0x800001).portr("IN1");
+ map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w));
+ map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r));
+ map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w));
+ map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs");
+ map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x800188, 0x800189).w(this, FUNC(cps_state::varthb_layer_w));
+ map(0x980000, 0x98000b).w(this, FUNC(cps_state::dinopic_layer_w));
+ map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
+ map(0xff0000, 0xffffff).ram().share("mainram");
+}
MACHINE_CONFIG_START(cps_state::varthb)
diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp
index f8e1a7837fb..81bc7d6bb7b 100644
--- a/src/mame/drivers/feversoc.cpp
+++ b/src/mame/drivers/feversoc.cpp
@@ -193,21 +193,22 @@ WRITE16_MEMBER( feversoc_state::output2_w )
}
-ADDRESS_MAP_START(feversoc_state::feversoc_map)
- AM_RANGE(0x00000000, 0x0003ffff) AM_ROM
- AM_RANGE(0x02000000, 0x0202ffff) AM_RAM AM_SHARE("workram1") //work ram
- AM_RANGE(0x02030000, 0x0203ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x02034000, 0x0203dfff) AM_RAM AM_SHARE("workram2") //work ram
- AM_RANGE(0x0203e000, 0x0203ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x06000000, 0x06000003) AM_WRITE16(output_w, 0xffff0000)
- AM_RANGE(0x06000000, 0x06000003) AM_WRITE16(output2_w, 0x0000ffff)
- AM_RANGE(0x06000004, 0x06000007) AM_WRITE16(feversoc_irq_ack, 0x0000ffff)
- AM_RANGE(0x06000008, 0x0600000b) AM_READ16(in_r, 0xffffffff)
- AM_RANGE(0x0600000c, 0x0600000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000)
+void feversoc_state::feversoc_map(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).rom();
+ map(0x02000000, 0x0202ffff).ram().share("workram1"); //work ram
+ map(0x02030000, 0x0203ffff).ram().share("nvram");
+ map(0x02034000, 0x0203dfff).ram().share("workram2"); //work ram
+ map(0x0203e000, 0x0203ffff).ram().share("spriteram");
+ map(0x06000000, 0x06000001).w(this, FUNC(feversoc_state::output_w));
+ map(0x06000002, 0x06000003).w(this, FUNC(feversoc_state::output2_w));
+ map(0x06000006, 0x06000007).w(this, FUNC(feversoc_state::feversoc_irq_ack));
+ map(0x06000008, 0x0600000b).r(this, FUNC(feversoc_state::in_r));
+ map(0x0600000d, 0x0600000d).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
//AM_RANGE(0x06010000, 0x0601007f) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write) AM_RAM
- AM_RANGE(0x06010060, 0x06010063) AM_WRITENOP // sprite buffering
- AM_RANGE(0x06018000, 0x06019fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
-ADDRESS_MAP_END
+ map(0x06010060, 0x06010063).nopw(); // sprite buffering
+ map(0x06018000, 0x06019fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+}
static const gfx_layout spi_spritelayout =
{
diff --git a/src/mame/drivers/fgoal.cpp b/src/mame/drivers/fgoal.cpp
index 51e3a1770b2..2ba6088f291 100644
--- a/src/mame/drivers/fgoal.cpp
+++ b/src/mame/drivers/fgoal.cpp
@@ -207,39 +207,40 @@ WRITE8_MEMBER(fgoal_state::sound2_w)
}
-ADDRESS_MAP_START(fgoal_state::cpu_map)
-
- AM_RANGE(0x0000, 0x00ef) AM_RAM
-
- AM_RANGE(0x00f0, 0x00f0) AM_READ(row_r)
- AM_RANGE(0x00f1, 0x00f1) AM_READ(analog_r)
- AM_RANGE(0x00f2, 0x00f2) AM_READ_PORT("IN0")
- AM_RANGE(0x00f3, 0x00f3) AM_READ_PORT("IN1")
- AM_RANGE(0x00f4, 0x00f4) AM_READ(address_hi_r)
- AM_RANGE(0x00f5, 0x00f5) AM_READ(address_lo_r)
- AM_RANGE(0x00f6, 0x00f6) AM_READ(shifter_r)
- AM_RANGE(0x00f7, 0x00f7) AM_READ(shifter_reverse_r)
- AM_RANGE(0x00f8, 0x00fb) AM_READ(nmi_reset_r)
- AM_RANGE(0x00fc, 0x00ff) AM_READ(irq_reset_r)
-
- AM_RANGE(0x00f0, 0x00f0) AM_WRITE(row_w)
- AM_RANGE(0x00f1, 0x00f1) AM_WRITE(col_w)
- AM_RANGE(0x00f2, 0x00f2) AM_WRITE(row_w)
- AM_RANGE(0x00f3, 0x00f3) AM_WRITE(col_w)
- AM_RANGE(0x00f4, 0x00f7) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x00f8, 0x00fb) AM_WRITE(sound1_w)
- AM_RANGE(0x00fc, 0x00ff) AM_WRITE(sound2_w)
-
- AM_RANGE(0x0100, 0x03ff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("video_ram")
-
- AM_RANGE(0x8000, 0x8000) AM_WRITE(ypos_w)
- AM_RANGE(0x8001, 0x8001) AM_WRITE(xpos_w)
- AM_RANGE(0x8002, 0x8002) AM_WRITE(color_w)
-
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void fgoal_state::cpu_map(address_map &map)
+{
+
+ map(0x0000, 0x00ef).ram();
+
+ map(0x00f0, 0x00f0).r(this, FUNC(fgoal_state::row_r));
+ map(0x00f1, 0x00f1).r(this, FUNC(fgoal_state::analog_r));
+ map(0x00f2, 0x00f2).portr("IN0");
+ map(0x00f3, 0x00f3).portr("IN1");
+ map(0x00f4, 0x00f4).r(this, FUNC(fgoal_state::address_hi_r));
+ map(0x00f5, 0x00f5).r(this, FUNC(fgoal_state::address_lo_r));
+ map(0x00f6, 0x00f6).r(this, FUNC(fgoal_state::shifter_r));
+ map(0x00f7, 0x00f7).r(this, FUNC(fgoal_state::shifter_reverse_r));
+ map(0x00f8, 0x00fb).r(this, FUNC(fgoal_state::nmi_reset_r));
+ map(0x00fc, 0x00ff).r(this, FUNC(fgoal_state::irq_reset_r));
+
+ map(0x00f0, 0x00f0).w(this, FUNC(fgoal_state::row_w));
+ map(0x00f1, 0x00f1).w(this, FUNC(fgoal_state::col_w));
+ map(0x00f2, 0x00f2).w(this, FUNC(fgoal_state::row_w));
+ map(0x00f3, 0x00f3).w(this, FUNC(fgoal_state::col_w));
+ map(0x00f4, 0x00f7).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x00f8, 0x00fb).w(this, FUNC(fgoal_state::sound1_w));
+ map(0x00fc, 0x00ff).w(this, FUNC(fgoal_state::sound2_w));
+
+ map(0x0100, 0x03ff).ram();
+ map(0x4000, 0x7fff).ram().share("video_ram");
+
+ map(0x8000, 0x8000).w(this, FUNC(fgoal_state::ypos_w));
+ map(0x8001, 0x8001).w(this, FUNC(fgoal_state::xpos_w));
+ map(0x8002, 0x8002).w(this, FUNC(fgoal_state::color_w));
+
+ map(0xa000, 0xbfff).rom();
+ map(0xd000, 0xffff).rom();
+}
static INPUT_PORTS_START( fgoal )
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
index 9bf994e1139..d7de37c9427 100644
--- a/src/mame/drivers/fidel6502.cpp
+++ b/src/mame/drivers/fidel6502.cpp
@@ -1151,146 +1151,162 @@ DRIVER_INIT_MEMBER(fidel6502_state, chesster)
// CSC, SU9, RSC
-ADDRESS_MAP_START(fidel6502_state::csc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x4000) AM_RAM
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x4400) AM_RAM
- AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x47fc) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x1800, 0x1803) AM_MIRROR(0x47fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel6502_state::su9_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1003) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x1800, 0x1803) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel6502_state::rsc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+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
-ADDRESS_MAP_START(fidel6502_state::eas_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r)
- AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x7020, 0x7027) AM_WRITE(eas_segment_w) AM_READNOP
- AM_RANGE(0x7030, 0x7037) AM_WRITE(eas_led_w) AM_READNOP
- AM_RANGE(0x7050, 0x7050) AM_READ(eas_input_r)
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel6502_state::eag_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r)
- AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x7020, 0x7027) AM_WRITE(eas_segment_w) AM_READNOP
- AM_RANGE(0x7030, 0x7037) AM_WRITE(eas_led_w) AM_READNOP
- AM_RANGE(0x7050, 0x7050) AM_READ(eas_input_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM //AM_WRITENOP
-ADDRESS_MAP_END
+void fidel6502_state::eas_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r));
+ map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7020, 0x7027).w(this, FUNC(fidel6502_state::eas_segment_w)).nopr();
+ map(0x7030, 0x7037).w(this, FUNC(fidel6502_state::eas_led_w)).nopr();
+ map(0x7050, 0x7050).r(this, 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(this, FUNC(fidel6502_state::cartridge_r));
+ map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7020, 0x7027).w(this, FUNC(fidel6502_state::eas_segment_w)).nopr();
+ map(0x7030, 0x7037).w(this, FUNC(fidel6502_state::eas_led_w)).nopr();
+ map(0x7050, 0x7050).r(this, FUNC(fidel6502_state::eas_input_r));
+ map(0x8000, 0xffff).rom(); //AM_WRITENOP
+}
// SC9
-ADDRESS_MAP_START(fidel6502_state::sc9_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r)
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(sc9_control_w)
- AM_RANGE(0x8000, 0x8007) AM_MIRROR(0x1ff8) AM_WRITE(sc9_led_w) AM_READNOP
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_READ(sc9_input_r)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void fidel6502_state::sc9_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r));
+ map(0x6000, 0x6000).mirror(0x1fff).w(this, FUNC(fidel6502_state::sc9_control_w));
+ map(0x8000, 0x8007).mirror(0x1ff8).w(this, FUNC(fidel6502_state::sc9_led_w)).nopr();
+ map(0xa000, 0xa000).mirror(0x1fff).r(this, FUNC(fidel6502_state::sc9_input_r));
+ map(0xc000, 0xffff).rom();
+}
-ADDRESS_MAP_START(fidel6502_state::sc9d_map)
- AM_IMPORT_FROM( sc9_map )
- AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_READ(sc9d_input_r)
-ADDRESS_MAP_END
+void fidel6502_state::sc9d_map(address_map &map)
+{
+ sc9_map(map);
+ map(0xa000, 0xa007).mirror(0x1ff8).r(this, FUNC(fidel6502_state::sc9d_input_r));
+}
// SC12
-ADDRESS_MAP_START(fidel6502_state::sc12_trampoline)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(sc12_trampoline_r, sc12_trampoline_w)
-ADDRESS_MAP_END
+void fidel6502_state::sc12_trampoline(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(fidel6502_state::sc12_trampoline_r), FUNC(fidel6502_state::sc12_trampoline_w));
+}
-ADDRESS_MAP_START(fidel6502_state::sc12_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r)
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(sc12_control_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_READ(sc12_input_r)
- AM_RANGE(0xc000, 0xcfff) AM_MIRROR(0x1000) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void fidel6502_state::sc12_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram();
+ map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r));
+ map(0x6000, 0x6000).mirror(0x1fff).w(this, FUNC(fidel6502_state::sc12_control_w));
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xa007).mirror(0x1ff8).r(this, FUNC(fidel6502_state::sc12_input_r));
+ map(0xc000, 0xcfff).mirror(0x1000).rom();
+ map(0xe000, 0xffff).rom();
+}
// Excellence
-ADDRESS_MAP_START(fidel6502_state::fexcel_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcel_ttl_r, fexcel_ttl_w)
+void fidel6502_state::fexcel_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x3800).ram();
+ map(0x4000, 0x4007).mirror(0x3ff8).rw(this, FUNC(fidel6502_state::fexcel_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w));
//AM_RANGE(0x8000, 0x8000) AM_READNOP // checks for opening book module, but hw doesn't have a module slot
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xc000, 0xffff).rom();
+}
-ADDRESS_MAP_START(fidel6502_state::fexcelp_map)
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcel_ttl_r, fexcel_ttl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void fidel6502_state::fexcelp_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x2000).ram();
+ map(0x4000, 0x4007).mirror(0x3ff8).rw(this, FUNC(fidel6502_state::fexcel_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w));
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(fidel6502_state::fexcelb_map)
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcelb_ttl_r, fexcel_ttl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void fidel6502_state::fexcelb_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x2000).ram();
+ map(0x4000, 0x4007).mirror(0x3ff8).rw(this, FUNC(fidel6502_state::fexcelb_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w));
+ map(0x8000, 0xffff).rom();
+}
// Designer Display, Phantom, Chesster
-ADDRESS_MAP_START(fidel6502_state::fdesdis_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, fdesdis_control_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x6007) AM_MIRROR(0x1ff8) AM_WRITE(fdesdis_lcd_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel6502_state::fphantom_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel6502_state::chesster_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, chesster_control_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVWRITE("dac8", dac_byte_interface, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel6502_state::kishon_map)
- AM_IMPORT_FROM( chesster_map )
- AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, kishon_control_w)
-ADDRESS_MAP_END
+void fidel6502_state::fdesdis_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2007).mirror(0x1ff8).rw(this, FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::fdesdis_control_w));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x6000, 0x6007).mirror(0x1ff8).w(this, 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("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+void fidel6502_state::chesster_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2007).mirror(0x1ff8).rw(this, FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::chesster_control_w));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x6000, 0x6000).mirror(0x1fff).w("dac8", FUNC(dac_byte_interface::write));
+ map(0x8000, 0xffff).rom();
+}
+
+void fidel6502_state::kishon_map(address_map &map)
+{
+ chesster_map(map);
+ map(0x2000, 0x2007).mirror(0x1ff8).rw(this, FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::kishon_control_w));
+}
diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp
index 324523b9f20..5e7ffbb40ac 100644
--- a/src/mame/drivers/fidel68k.cpp
+++ b/src/mame/drivers/fidel68k.cpp
@@ -392,47 +392,52 @@ WRITE8_MEMBER(fidel68k_state::eag_mux_w)
// Excel 68000
-ADDRESS_MAP_START(fidel68k_state::fex68k_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_leds_w, 0x00ff)
- AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_7seg_w, 0xff00)
- AM_RANGE(0x044000, 0x047fff) AM_RAM
- AM_RANGE(0x100000, 0x10000f) AM_MIRROR(0x03fff0) AM_READ8(eag_input1_r, 0x00ff)
- AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x03fff0) AM_WRITE8(fex68k_mux_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel68k_state::fex68km2_map)
- AM_IMPORT_FROM( fex68k_map )
- AM_RANGE(0x200000, 0x21ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel68k_state::fex68km3_map)
- AM_IMPORT_FROM( fex68k_map )
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
-ADDRESS_MAP_END
+void fidel68k_state::fex68k_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x000000, 0x00000f).mirror(0x00fff0).w(this, FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff);
+ map(0x000000, 0x00000f).mirror(0x00fff0).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00);
+ map(0x044000, 0x047fff).ram();
+ map(0x100000, 0x10000f).mirror(0x03fff0).r(this, FUNC(fidel68k_state::eag_input1_r)).umask16(0x00ff);
+ map(0x140000, 0x14000f).mirror(0x03fff0).w(this, 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
-ADDRESS_MAP_START(fidel68k_state::fdes2265_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x000000, 0x00000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff)
- AM_RANGE(0x044000, 0x047fff) AM_RAM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x140000, 0x14000f) AM_READ8(fdes68k_input_r, 0xff00)
- AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel68k_state::fdes2325_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x10000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff00ff)
- AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff00ff)
- AM_RANGE(0x180000, 0x18000f) AM_READ8(fdes68k_input_r, 0xff00ff00)
- AM_RANGE(0x300000, 0x37ffff) AM_RAM
- AM_RANGE(0x500000, 0x507fff) AM_RAM
-ADDRESS_MAP_END
+void fidel68k_state::fdes2265_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x00ffff).rom();
+ map(0x000000, 0x00000f).w(this, FUNC(fidel68k_state::fdes68k_lcd_w)).umask16(0x00ff);
+ map(0x044000, 0x047fff).ram();
+ map(0x100000, 0x10ffff).ram();
+ map(0x140000, 0x14000f).r(this, FUNC(fidel68k_state::fdes68k_input_r)).umask16(0xff00);
+ map(0x140000, 0x14000f).w(this, 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(this, FUNC(fidel68k_state::fdes68k_lcd_w)).umask32(0x00ff00ff);
+ map(0x140000, 0x14000f).w(this, FUNC(fidel68k_state::fdes68k_control_w)).umask32(0x00ff00ff);
+ map(0x180000, 0x18000f).r(this, FUNC(fidel68k_state::fdes68k_input_r)).umask32(0xff00ff00);
+ map(0x300000, 0x37ffff).ram();
+ map(0x500000, 0x507fff).ram();
+}
// EAG
@@ -443,44 +448,47 @@ DRIVER_INIT_MEMBER(fidel68k_state, eag)
m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x200000 + m_ram->size() - 1, m_ram->pointer());
}
-ADDRESS_MAP_START(fidel68k_state::eag_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x104000, 0x107fff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00) AM_READNOP
- AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff)
- AM_RANGE(0x400000, 0x407fff) AM_READ8(cartridge_r, 0xff00)
- AM_RANGE(0x400000, 0x400001) AM_WRITE8(eag_mux_w, 0x00ff)
- AM_RANGE(0x400002, 0x400007) AM_WRITENOP // ?
- AM_RANGE(0x604000, 0x607fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x700002, 0x700003) AM_READ8(eag_input2_r, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel68k_state::eagv7_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x104000, 0x107fff) AM_RAM
- AM_RANGE(0x200000, 0x2fffff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00ff00) AM_READNOP
- AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff00ff)
- AM_RANGE(0x400000, 0x407fff) AM_READ8(cartridge_r, 0xff00ff00)
- AM_RANGE(0x400000, 0x400003) AM_WRITE8(eag_mux_w, 0x00ff0000)
- AM_RANGE(0x400004, 0x400007) AM_WRITENOP // ?
- AM_RANGE(0x604000, 0x607fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x700000, 0x700003) AM_READ8(eag_input2_r, 0x000000ff)
- AM_RANGE(0x800000, 0x807fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidel68k_state::eagv11_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM
- AM_RANGE(0x00200000, 0x003fffff) AM_RAM
- AM_RANGE(0x00b00000, 0x00b0000f) AM_MIRROR(0x00000010) AM_WRITE8(eag_7seg_w, 0xff00ff00) AM_READNOP
- AM_RANGE(0x00b00000, 0x00b0000f) AM_MIRROR(0x00000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff00ff)
- AM_RANGE(0x00c00000, 0x00c07fff) AM_READ8(cartridge_r, 0xff00ff00)
- AM_RANGE(0x00c00000, 0x00c00003) AM_WRITE8(eag_mux_w, 0x00ff0000)
- AM_RANGE(0x00c00004, 0x00c00007) AM_WRITENOP // ?
- AM_RANGE(0x00e04000, 0x00e07fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x00f00000, 0x00f00003) AM_READ8(eag_input2_r, 0x000000ff)
- AM_RANGE(0x01000000, 0x0101ffff) AM_RAM
-ADDRESS_MAP_END
+void fidel68k_state::eag_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x104000, 0x107fff).ram();
+ map(0x300000, 0x30000f).mirror(0x000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00).nopr();
+ map(0x300000, 0x30000f).mirror(0x000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff);
+ map(0x400000, 0x407fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask16(0xff00);
+ map(0x400001, 0x400001).w(this, FUNC(fidel68k_state::eag_mux_w));
+ map(0x400002, 0x400007).nopw(); // ?
+ map(0x604000, 0x607fff).ram().share("nvram");
+ map(0x700003, 0x700003).r(this, 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(this, FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr();
+ map(0x300000, 0x30000f).mirror(0x000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff);
+ map(0x400000, 0x407fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00);
+ map(0x400001, 0x400001).w(this, FUNC(fidel68k_state::eag_mux_w));
+ map(0x400004, 0x400007).nopw(); // ?
+ map(0x604000, 0x607fff).ram().share("nvram");
+ map(0x700003, 0x700003).r(this, 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(this, FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr();
+ map(0x00b00000, 0x00b0000f).mirror(0x00000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff);
+ map(0x00c00000, 0x00c07fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00);
+ map(0x00c00001, 0x00c00001).w(this, FUNC(fidel68k_state::eag_mux_w));
+ map(0x00c00004, 0x00c00007).nopw(); // ?
+ map(0x00e04000, 0x00e07fff).ram().share("nvram");
+ map(0x00f00003, 0x00f00003).r(this, FUNC(fidel68k_state::eag_input2_r));
+ map(0x01000000, 0x0101ffff).ram();
+}
diff --git a/src/mame/drivers/fidelmcs48.cpp b/src/mame/drivers/fidelmcs48.cpp
index b3a6fcdbab2..72880a7e87e 100644
--- a/src/mame/drivers/fidelmcs48.cpp
+++ b/src/mame/drivers/fidelmcs48.cpp
@@ -116,9 +116,10 @@ READ_LINE_MEMBER(fidelmcs48_state::sc6_input7_r)
// SC6
-ADDRESS_MAP_START(fidelmcs48_state::sc6_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void fidelmcs48_state::sc6_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
index 63bbf17ab6d..f067ae5d43a 100644
--- a/src/mame/drivers/fidelz80.cpp
+++ b/src/mame/drivers/fidelz80.cpp
@@ -1126,62 +1126,70 @@ READ8_MEMBER(fidelz80_state::dsc_input_r)
// CC10 and VCC/UVC
-ADDRESS_MAP_START(fidelz80_state::cc10_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x0f00) AM_RAM
- AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0f00) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidelz80_state::vcc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fidelz80_state::vcc_io)
- ADDRESS_MAP_GLOBAL_MASK(0x03)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+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
-ADDRESS_MAP_START(fidelz80_state::bcc_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0f00) AM_RAM
-ADDRESS_MAP_END
+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();
+}
-ADDRESS_MAP_START(fidelz80_state::bcc_io)
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE(0x00, 0x07) AM_READWRITE(bcc_input_r, bcc_control_w)
-ADDRESS_MAP_END
+void fidelz80_state::bcc_io(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x07).rw(this, FUNC(fidelz80_state::bcc_input_r), FUNC(fidelz80_state::bcc_control_w));
+}
// SCC
-ADDRESS_MAP_START(fidelz80_state::scc_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x5000, 0x50ff) AM_RAM
-ADDRESS_MAP_END
+void fidelz80_state::scc_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x5000, 0x50ff).ram();
+}
-ADDRESS_MAP_START(fidelz80_state::scc_io)
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE(0x00, 0x07) AM_READWRITE(scc_input_r, scc_control_w)
-ADDRESS_MAP_END
+void fidelz80_state::scc_io(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x07).rw(this, FUNC(fidelz80_state::scc_input_r), FUNC(fidelz80_state::scc_control_w));
+}
// VSC
-ADDRESS_MAP_START(fidelz80_state::vsc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x1000) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
-ADDRESS_MAP_END
+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)
@@ -1203,37 +1211,41 @@ WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w)
m_z80pio->write(space, offset & 3, data);
}
-ADDRESS_MAP_START(fidelz80_state::vsc_io)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x00, 0x0f) AM_READWRITE(vsc_io_trampoline_r, vsc_io_trampoline_w)
-ADDRESS_MAP_END
+void fidelz80_state::vsc_io(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x00, 0x0f).rw(this, FUNC(fidelz80_state::vsc_io_trampoline_r), FUNC(fidelz80_state::vsc_io_trampoline_w));
+}
// VBRC
-ADDRESS_MAP_START(fidelz80_state::vbrc_main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(vbrc_speech_w)
-ADDRESS_MAP_END
+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(this, FUNC(fidelz80_state::vbrc_speech_w));
+}
-ADDRESS_MAP_START(fidelz80_state::vbrc_main_io)
- ADDRESS_MAP_GLOBAL_MASK(0x01)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("mcu", i8041_device, upi41_master_r, upi41_master_w)
-ADDRESS_MAP_END
+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
-ADDRESS_MAP_START(fidelz80_state::dsc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x1fff) AM_WRITE(dsc_control_w)
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(dsc_select_w)
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(dsc_input_r)
- AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x1c00) AM_RAM
-ADDRESS_MAP_END
+void fidelz80_state::dsc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x4000).mirror(0x1fff).w(this, FUNC(fidelz80_state::dsc_control_w));
+ map(0x6000, 0x6000).mirror(0x1fff).w(this, FUNC(fidelz80_state::dsc_select_w));
+ map(0x8000, 0x8000).mirror(0x1fff).r(this, FUNC(fidelz80_state::dsc_input_r));
+ map(0xa000, 0xa3ff).mirror(0x1c00).ram();
+}
diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp
index 4ccbbf3aeb8..eb3db65eeb8 100644
--- a/src/mame/drivers/finalizr.cpp
+++ b/src/mame/drivers/finalizr.cpp
@@ -104,41 +104,44 @@ WRITE8_MEMBER(finalizr_state::i8039_T0_w)
*/
}
-ADDRESS_MAP_START(finalizr_state::main_map)
- AM_RANGE(0x0001, 0x0001) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x0003, 0x0003) AM_WRITE(finalizr_videoctrl_w)
- AM_RANGE(0x0004, 0x0004) AM_WRITE(finalizr_flipscreen_w)
+void finalizr_state::main_map(address_map &map)
+{
+ map(0x0001, 0x0001).writeonly().share("scroll");
+ map(0x0003, 0x0003).w(this, FUNC(finalizr_state::finalizr_videoctrl_w));
+ map(0x0004, 0x0004).w(this, FUNC(finalizr_state::finalizr_flipscreen_w));
// AM_RANGE(0x0020, 0x003f) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW3")
- AM_RANGE(0x0808, 0x0808) AM_READ_PORT("DSW2")
- AM_RANGE(0x0810, 0x0810) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0811, 0x0811) AM_READ_PORT("P1")
- AM_RANGE(0x0812, 0x0812) AM_READ_PORT("P2")
- AM_RANGE(0x0813, 0x0813) AM_READ_PORT("DSW1")
- AM_RANGE(0x0818, 0x0818) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0819, 0x0819) AM_WRITE(finalizr_coin_w)
- AM_RANGE(0x081a, 0x081a) AM_DEVWRITE("snsnd", sn76489a_device, write) /* This address triggers the SN chip to read the data port. */
- AM_RANGE(0x081b, 0x081b) AM_WRITENOP /* Loads the snd command into the snd latch */
- AM_RANGE(0x081c, 0x081c) AM_WRITE(finalizr_i8039_irq_w) /* custom sound chip */
- AM_RANGE(0x081d, 0x081d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* custom sound chip */
- AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("colorram2")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x3000, 0x31ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3200, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("spriteram_2")
- AM_RANGE(0x3a00, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(finalizr_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(finalizr_state::sound_io_map)
- AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x0800, 0x0800).portr("DSW3");
+ map(0x0808, 0x0808).portr("DSW2");
+ map(0x0810, 0x0810).portr("SYSTEM");
+ map(0x0811, 0x0811).portr("P1");
+ map(0x0812, 0x0812).portr("P2");
+ map(0x0813, 0x0813).portr("DSW1");
+ map(0x0818, 0x0818).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x0819, 0x0819).w(this, 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(0x081b, 0x081b).nopw(); /* Loads the snd command into the snd latch */
+ map(0x081c, 0x081c).w(this, FUNC(finalizr_state::finalizr_i8039_irq_w)); /* custom sound chip */
+ map(0x081d, 0x081d).w("soundlatch", FUNC(generic_latch_8_device::write)); /* custom sound chip */
+ map(0x2000, 0x23ff).ram().share("colorram");
+ map(0x2400, 0x27ff).ram().share("videoram");
+ map(0x2800, 0x2bff).ram().share("colorram2");
+ map(0x2c00, 0x2fff).ram().share("videoram2");
+ map(0x3000, 0x31ff).ram().share("spriteram");
+ map(0x3200, 0x37ff).ram();
+ map(0x3800, 0x39ff).ram().share("spriteram_2");
+ map(0x3a00, 0x3fff).ram();
+ map(0x4000, 0xffff).rom();
+}
+
+void finalizr_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void finalizr_state::sound_io_map(address_map &map)
+{
+ map(0x00, 0xff).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( finalizr )
diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp
index cab1f94f253..f551f34a0fc 100644
--- a/src/mame/drivers/fireball.cpp
+++ b/src/mame/drivers/fireball.cpp
@@ -293,18 +293,20 @@ WRITE8_MEMBER(fireball_state::p3_w)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(fireball_state::fireball_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void fireball_state::fireball_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
-ADDRESS_MAP_START(fireball_state::fireball_io_map)
+void fireball_state::fireball_io_map(address_map &map)
+{
- AM_RANGE(0x00, 0x01)AM_READWRITE(io_00_r,io_00_w)
- AM_RANGE(0x02, 0x03)AM_READWRITE(io_02_r,io_02_w)
- AM_RANGE(0x04, 0x05)AM_READWRITE(io_04_r,io_04_w)
- AM_RANGE(0x06, 0x07)AM_READWRITE(io_06_r,io_06_w)
+ map(0x00, 0x01).rw(this, FUNC(fireball_state::io_00_r), FUNC(fireball_state::io_00_w));
+ map(0x02, 0x03).rw(this, FUNC(fireball_state::io_02_r), FUNC(fireball_state::io_02_w));
+ map(0x04, 0x05).rw(this, FUNC(fireball_state::io_04_r), FUNC(fireball_state::io_04_w));
+ map(0x06, 0x07).rw(this, FUNC(fireball_state::io_06_r), FUNC(fireball_state::io_06_w));
-ADDRESS_MAP_END
+}
/*************************
diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp
index 95a421d715a..0f54e31fc8e 100644
--- a/src/mame/drivers/firebeat.cpp
+++ b/src/mame/drivers/firebeat.cpp
@@ -933,54 +933,58 @@ MACHINE_START_MEMBER(firebeat_state,firebeat)
m_maincpu->ppcdrc_add_fastram(0x00000000, 0x01ffffff, false, m_work_ram);
}
-ADDRESS_MAP_START(firebeat_state::firebeat_map)
- AM_RANGE(0x00000000, 0x01ffffff) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0x70000000, 0x70000fff) AM_READWRITE8(midi_uart_r, midi_uart_w, 0xff000000)
- AM_RANGE(0x70006000, 0x70006003) AM_WRITE(extend_board_irq_w)
- AM_RANGE(0x70008000, 0x7000800f) AM_READ(keyboard_wheel_r)
- AM_RANGE(0x7000a000, 0x7000a003) AM_READ(extend_board_irq_r)
- AM_RANGE(0x74000000, 0x740003ff) AM_READWRITE(ppc_spu_share_r, ppc_spu_share_w) // SPU shared RAM
- AM_RANGE(0x7d000200, 0x7d00021f) AM_READ(cabinet_r)
- AM_RANGE(0x7d000340, 0x7d000347) AM_READ(sensor_r)
- AM_RANGE(0x7d000400, 0x7d000403) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff0000)
- AM_RANGE(0x7d000800, 0x7d000803) AM_READ(input_r)
- AM_RANGE(0x7d400000, 0x7d5fffff) AM_DEVREADWRITE8("flash_main", fujitsu_29f016a_device, read, write, 0xffffffff)
- AM_RANGE(0x7d800000, 0x7d9fffff) AM_DEVREADWRITE8("flash_snd1", fujitsu_29f016a_device, read, write, 0xffffffff)
- AM_RANGE(0x7da00000, 0x7dbfffff) AM_DEVREADWRITE8("flash_snd2", fujitsu_29f016a_device, read, write, 0xffffffff)
- AM_RANGE(0x7dc00000, 0x7dc0000f) AM_DEVREADWRITE8("duart_com", pc16552_device, read, write, 0xffffffff)
- AM_RANGE(0x7e000000, 0x7e00003f) AM_DEVREADWRITE8("rtc", rtc65271_device, rtc_r, rtc_w, 0xffffffff)
- AM_RANGE(0x7e000100, 0x7e00013f) AM_DEVREADWRITE8("rtc", rtc65271_device, xram_r, xram_w, 0xffffffff)
- AM_RANGE(0x7e800000, 0x7e8000ff) AM_DEVREADWRITE("gcu0", k057714_device, read, write)
- AM_RANGE(0x7fe00000, 0x7fe0000f) AM_READWRITE(ata_command_r, ata_command_w)
- AM_RANGE(0x7fe80000, 0x7fe8000f) AM_READWRITE(ata_control_r, ata_control_w)
- AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(firebeat_state::firebeat2_map)
- AM_IMPORT_FROM(firebeat_map)
- AM_RANGE(0x7e800100, 0x7e8001ff) AM_DEVREADWRITE("gcu1", k057714_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(firebeat_state::spu_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_READ(spu_unk_r)
- AM_RANGE(0x220000, 0x220001) AM_WRITE(spu_220000_w)
- AM_RANGE(0x230000, 0x230001) AM_WRITE(spu_irq_ack_w)
- AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_sdram_bank_w)
- AM_RANGE(0x280000, 0x2807ff) AM_READWRITE(m68k_spu_share_r, m68k_spu_share_w)
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("spu_ata", ata_interface_device, read_cs0, write_cs0)
- AM_RANGE(0x340000, 0x34000f) AM_DEVREADWRITE("spu_ata", ata_interface_device, read_cs1, write_cs1)
- AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rf5c400", rf5c400_device, rf5c400_r, rf5c400_w)
- AM_RANGE(0x800000, 0x83ffff) AM_RAM // SDRAM
- AM_RANGE(0xfc0000, 0xffffff) AM_RAM // SDRAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(firebeat_state::ymz280b_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x1fffff) AM_DEVREAD("flash_snd1", fujitsu_29f016a_device, read)
- AM_RANGE(0x200000, 0x3fffff) AM_DEVREAD("flash_snd2", fujitsu_29f016a_device, read)
-ADDRESS_MAP_END
+void firebeat_state::firebeat_map(address_map &map)
+{
+ map(0x00000000, 0x01ffffff).ram().share("work_ram");
+ map(0x70000000, 0x70000fff).rw(this, FUNC(firebeat_state::midi_uart_r), FUNC(firebeat_state::midi_uart_w)).umask32(0xff000000);
+ map(0x70006000, 0x70006003).w(this, FUNC(firebeat_state::extend_board_irq_w));
+ map(0x70008000, 0x7000800f).r(this, FUNC(firebeat_state::keyboard_wheel_r));
+ map(0x7000a000, 0x7000a003).r(this, FUNC(firebeat_state::extend_board_irq_r));
+ map(0x74000000, 0x740003ff).rw(this, FUNC(firebeat_state::ppc_spu_share_r), FUNC(firebeat_state::ppc_spu_share_w)); // SPU shared RAM
+ map(0x7d000200, 0x7d00021f).r(this, FUNC(firebeat_state::cabinet_r));
+ map(0x7d000340, 0x7d000347).r(this, FUNC(firebeat_state::sensor_r));
+ map(0x7d000400, 0x7d000401).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+ map(0x7d000800, 0x7d000803).r(this, FUNC(firebeat_state::input_r));
+ map(0x7d400000, 0x7d5fffff).rw("flash_main", FUNC(fujitsu_29f016a_device::read), FUNC(fujitsu_29f016a_device::write));
+ map(0x7d800000, 0x7d9fffff).rw("flash_snd1", FUNC(fujitsu_29f016a_device::read), FUNC(fujitsu_29f016a_device::write));
+ map(0x7da00000, 0x7dbfffff).rw("flash_snd2", FUNC(fujitsu_29f016a_device::read), FUNC(fujitsu_29f016a_device::write));
+ map(0x7dc00000, 0x7dc0000f).rw(m_duart_com, FUNC(pc16552_device::read), FUNC(pc16552_device::write));
+ map(0x7e000000, 0x7e00003f).rw("rtc", FUNC(rtc65271_device::rtc_r), FUNC(rtc65271_device::rtc_w));
+ map(0x7e000100, 0x7e00013f).rw("rtc", FUNC(rtc65271_device::xram_r), FUNC(rtc65271_device::xram_w));
+ map(0x7e800000, 0x7e8000ff).rw("gcu0", FUNC(k057714_device::read), FUNC(k057714_device::write));
+ map(0x7fe00000, 0x7fe0000f).rw(this, FUNC(firebeat_state::ata_command_r), FUNC(firebeat_state::ata_command_w));
+ map(0x7fe80000, 0x7fe8000f).rw(this, FUNC(firebeat_state::ata_control_r), FUNC(firebeat_state::ata_control_w));
+ map(0x7ff80000, 0x7fffffff).rom().region("user1", 0); /* System BIOS */
+}
+
+void firebeat_state::firebeat2_map(address_map &map)
+{
+ firebeat_map(map);
+ map(0x7e800100, 0x7e8001ff).rw("gcu1", FUNC(k057714_device::read), FUNC(k057714_device::write));
+}
+
+void firebeat_state::spu_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x13ffff).ram();
+ map(0x200000, 0x200001).r(this, FUNC(firebeat_state::spu_unk_r));
+ map(0x220000, 0x220001).w(this, FUNC(firebeat_state::spu_220000_w));
+ map(0x230000, 0x230001).w(this, FUNC(firebeat_state::spu_irq_ack_w));
+ map(0x260000, 0x260001).w(this, FUNC(firebeat_state::spu_sdram_bank_w));
+ map(0x280000, 0x2807ff).rw(this, FUNC(firebeat_state::m68k_spu_share_r), FUNC(firebeat_state::m68k_spu_share_w));
+ map(0x300000, 0x30000f).rw(m_spuata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0));
+ map(0x340000, 0x34000f).rw(m_spuata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1));
+ map(0x400000, 0x400fff).rw("rf5c400", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w));
+ map(0x800000, 0x83ffff).ram(); // SDRAM
+ map(0xfc0000, 0xffffff).ram(); // SDRAM
+}
+
+void firebeat_state::ymz280b_map(address_map &map)
+{
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x1fffff).r("flash_snd1", FUNC(fujitsu_29f016a_device::read));
+ map(0x200000, 0x3fffff).r("flash_snd2", FUNC(fujitsu_29f016a_device::read));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp
index a5c4a36964c..f6dce8ee2e7 100644
--- a/src/mame/drivers/firefox.cpp
+++ b/src/mame/drivers/firefox.cpp
@@ -555,36 +555,37 @@ void firefox_state::machine_start()
*
*************************************/
-ADDRESS_MAP_START(firefox_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2800, 0x2aff) AM_RAM_WRITE(sprite_palette_w) AM_SHARE("sprite_palette")
- AM_RANGE(0x2b00, 0x2b00) AM_MIRROR(0x04ff) AM_WRITE(firefox_objram_bank_w)
- AM_RANGE(0x2c00, 0x2eff) AM_RAM_WRITE(tile_palette_w) AM_SHARE("tile_palette")
- AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x40ff) AM_READWRITE(nvram_r, nvram_w) /* NOVRAM */
- AM_RANGE(0x4100, 0x4100) AM_MIRROR(0x00f8) AM_READ_PORT("rdin0") /* RDIN0 */
- AM_RANGE(0x4101, 0x4101) AM_MIRROR(0x00f8) AM_READ_PORT("rdin1") /* RDIN1 */
- AM_RANGE(0x4102, 0x4102) AM_MIRROR(0x00f8) AM_READ(firefox_disc_status_r) /* RDIN2 */
- AM_RANGE(0x4103, 0x4103) AM_MIRROR(0x00f8) AM_READ_PORT("opt0") /* OPT0 */
- AM_RANGE(0x4104, 0x4104) AM_MIRROR(0x00f8) AM_READ_PORT("opt1") /* OPT1 */
- AM_RANGE(0x4105, 0x4105) AM_MIRROR(0x00f8) AM_READ(firefox_disc_data_r) /* DREAD */
- AM_RANGE(0x4106, 0x4106) AM_MIRROR(0x00f8) AM_READ(sound_to_main_r) /* RDSOUND */
- AM_RANGE(0x4107, 0x4107) AM_MIRROR(0x00f8) AM_READ(adc_r) /* ADC */
- AM_RANGE(0x4200, 0x4200) AM_MIRROR(0x0047) AM_WRITE(main_irq_clear_w) /* RSTIRQ */
- AM_RANGE(0x4208, 0x4208) AM_MIRROR(0x0047) AM_WRITE(main_firq_clear_w) /* RSTFIRQ */
- AM_RANGE(0x4210, 0x4210) AM_MIRROR(0x0047) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* WDCLK */
- AM_RANGE(0x4218, 0x4218) AM_MIRROR(0x0047) AM_WRITE(firefox_disc_read_w) /* DSKREAD */
- AM_RANGE(0x4220, 0x4223) AM_MIRROR(0x0044) AM_WRITE(adc_select_w) /* ADCSTART */
- AM_RANGE(0x4230, 0x4230) AM_MIRROR(0x0047) AM_WRITE(self_reset_w) /* AMUCK */
- AM_RANGE(0x4280, 0x4287) AM_MIRROR(0x0040) AM_DEVWRITE("latch0", ls259_device, write_d7)
- AM_RANGE(0x4288, 0x428f) AM_MIRROR(0x0040) AM_DEVWRITE("latch1", ls259_device, write_d7)
- AM_RANGE(0x4290, 0x4290) AM_MIRROR(0x0047) AM_WRITE(rom_bank_w) /* WRTREG */
- AM_RANGE(0x4298, 0x4298) AM_MIRROR(0x0047) AM_WRITE(main_to_sound_w) /* WRSOUND */
- AM_RANGE(0x42a0, 0x42a0) AM_MIRROR(0x0047) AM_WRITE(firefox_disc_data_w) /* DSKLATCH */
- AM_RANGE(0x4400, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void firefox_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1fff).ram().w(this, FUNC(firefox_state::tileram_w)).share("tileram");
+ map(0x2000, 0x27ff).ram().share("spriteram");
+ map(0x2800, 0x2aff).ram().w(this, FUNC(firefox_state::sprite_palette_w)).share("sprite_palette");
+ map(0x2b00, 0x2b00).mirror(0x04ff).w(this, FUNC(firefox_state::firefox_objram_bank_w));
+ map(0x2c00, 0x2eff).ram().w(this, FUNC(firefox_state::tile_palette_w)).share("tile_palette");
+ map(0x3000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x40ff).rw(this, FUNC(firefox_state::nvram_r), FUNC(firefox_state::nvram_w)); /* NOVRAM */
+ map(0x4100, 0x4100).mirror(0x00f8).portr("rdin0"); /* RDIN0 */
+ map(0x4101, 0x4101).mirror(0x00f8).portr("rdin1"); /* RDIN1 */
+ map(0x4102, 0x4102).mirror(0x00f8).r(this, FUNC(firefox_state::firefox_disc_status_r)); /* RDIN2 */
+ map(0x4103, 0x4103).mirror(0x00f8).portr("opt0"); /* OPT0 */
+ map(0x4104, 0x4104).mirror(0x00f8).portr("opt1"); /* OPT1 */
+ map(0x4105, 0x4105).mirror(0x00f8).r(this, FUNC(firefox_state::firefox_disc_data_r)); /* DREAD */
+ map(0x4106, 0x4106).mirror(0x00f8).r(this, FUNC(firefox_state::sound_to_main_r)); /* RDSOUND */
+ map(0x4107, 0x4107).mirror(0x00f8).r(this, FUNC(firefox_state::adc_r)); /* ADC */
+ map(0x4200, 0x4200).mirror(0x0047).w(this, FUNC(firefox_state::main_irq_clear_w)); /* RSTIRQ */
+ map(0x4208, 0x4208).mirror(0x0047).w(this, FUNC(firefox_state::main_firq_clear_w)); /* RSTFIRQ */
+ map(0x4210, 0x4210).mirror(0x0047).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* WDCLK */
+ map(0x4218, 0x4218).mirror(0x0047).w(this, FUNC(firefox_state::firefox_disc_read_w)); /* DSKREAD */
+ map(0x4220, 0x4223).mirror(0x0044).w(this, FUNC(firefox_state::adc_select_w)); /* ADCSTART */
+ map(0x4230, 0x4230).mirror(0x0047).w(this, FUNC(firefox_state::self_reset_w)); /* AMUCK */
+ map(0x4280, 0x4287).mirror(0x0040).w("latch0", FUNC(ls259_device::write_d7));
+ map(0x4288, 0x428f).mirror(0x0040).w("latch1", FUNC(ls259_device::write_d7));
+ map(0x4290, 0x4290).mirror(0x0047).w(this, FUNC(firefox_state::rom_bank_w)); /* WRTREG */
+ map(0x4298, 0x4298).mirror(0x0047).w(this, FUNC(firefox_state::main_to_sound_w)); /* WRSOUND */
+ map(0x42a0, 0x42a0).mirror(0x0047).w(this, FUNC(firefox_state::firefox_disc_data_w)); /* DSKLATCH */
+ map(0x4400, 0xffff).rom();
+}
@@ -594,18 +595,19 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(firefox_state::audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x087f) AM_MIRROR(0x0700) AM_RAM /* RIOT ram */
- AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x0760) AM_DEVREADWRITE("riot", riot6532_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_READ(main_to_sound_r)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_to_main_w)
- AM_RANGE(0x2000, 0x200f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x2800, 0x280f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x3000, 0x300f) AM_DEVREADWRITE("pokey3", pokey_device, read, write)
- AM_RANGE(0x3800, 0x380f) AM_DEVREADWRITE("pokey4", pokey_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void firefox_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x087f).mirror(0x0700).ram(); /* RIOT ram */
+ map(0x0880, 0x089f).mirror(0x0760).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x1000, 0x1000).r(this, FUNC(firefox_state::main_to_sound_r));
+ map(0x1800, 0x1800).w(this, FUNC(firefox_state::sound_to_main_w));
+ map(0x2000, 0x200f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x2800, 0x280f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x3000, 0x300f).rw("pokey3", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x3800, 0x380f).rw("pokey4", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/firetrap.cpp b/src/mame/drivers/firetrap.cpp
index cec342c6ec2..56f73459073 100644
--- a/src/mame/drivers/firetrap.cpp
+++ b/src/mame/drivers/firetrap.cpp
@@ -347,52 +347,56 @@ WRITE8_MEMBER(firetrap_state::flip_screen_w)
flip_screen_set(data);
}
-ADDRESS_MAP_START(firetrap_state::firetrap_base_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(firetrap_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(firetrap_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(firetrap_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xe97f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* IRQ acknowledge */
- AM_RANGE(0xf001, 0xf001) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf002, 0xf002) AM_WRITE(firetrap_bankselect_w)
- AM_RANGE(0xf003, 0xf003) AM_WRITE(flip_screen_w)
- AM_RANGE(0xf004, 0xf004) AM_WRITE(firetrap_nmi_disable_w)
- AM_RANGE(0xf005, 0xf005) AM_WRITE(firetrap_8751_w)
- AM_RANGE(0xf008, 0xf009) AM_WRITE(firetrap_bg1_scrollx_w)
- AM_RANGE(0xf00a, 0xf00b) AM_WRITE(firetrap_bg1_scrolly_w)
- AM_RANGE(0xf00c, 0xf00d) AM_WRITE(firetrap_bg2_scrollx_w)
- AM_RANGE(0xf00e, 0xf00f) AM_WRITE(firetrap_bg2_scrolly_w)
- AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0")
- AM_RANGE(0xf011, 0xf011) AM_READ_PORT("IN1")
- AM_RANGE(0xf012, 0xf012) AM_READ_PORT("IN2")
- AM_RANGE(0xf013, 0xf013) AM_READ_PORT("DSW0")
- AM_RANGE(0xf014, 0xf014) AM_READ_PORT("DSW1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(firetrap_state::firetrap_map)
- AM_IMPORT_FROM( firetrap_base_map )
- AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(firetrap_state::firetrap_bootleg_map)
- AM_IMPORT_FROM( firetrap_base_map )
- AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_bootleg_r)
- AM_RANGE(0xf800, 0xf8ff) AM_ROM /* extra ROM in the bootleg with unprotection code */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(firetrap_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_data_w)
- AM_RANGE(0x2400, 0x2400) AM_WRITE(sound_flip_flop_w)
- AM_RANGE(0x2800, 0x2800) AM_WRITE(sound_bankselect_w)
- AM_RANGE(0x3400, 0x3400) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void firetrap_state::firetrap_base_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(firetrap_state::firetrap_bg1videoram_w)).share("bg1videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(firetrap_state::firetrap_bg2videoram_w)).share("bg2videoram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(firetrap_state::firetrap_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xe97f).ram().share("spriteram");
+ map(0xf000, 0xf000).nopw(); /* IRQ acknowledge */
+ map(0xf001, 0xf001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf002, 0xf002).w(this, FUNC(firetrap_state::firetrap_bankselect_w));
+ map(0xf003, 0xf003).w(this, FUNC(firetrap_state::flip_screen_w));
+ map(0xf004, 0xf004).w(this, FUNC(firetrap_state::firetrap_nmi_disable_w));
+ map(0xf005, 0xf005).w(this, FUNC(firetrap_state::firetrap_8751_w));
+ map(0xf008, 0xf009).w(this, FUNC(firetrap_state::firetrap_bg1_scrollx_w));
+ map(0xf00a, 0xf00b).w(this, FUNC(firetrap_state::firetrap_bg1_scrolly_w));
+ map(0xf00c, 0xf00d).w(this, FUNC(firetrap_state::firetrap_bg2_scrollx_w));
+ map(0xf00e, 0xf00f).w(this, FUNC(firetrap_state::firetrap_bg2_scrolly_w));
+ map(0xf010, 0xf010).portr("IN0");
+ map(0xf011, 0xf011).portr("IN1");
+ map(0xf012, 0xf012).portr("IN2");
+ map(0xf013, 0xf013).portr("DSW0");
+ map(0xf014, 0xf014).portr("DSW1");
+}
+
+void firetrap_state::firetrap_map(address_map &map)
+{
+ firetrap_base_map(map);
+ map(0xf016, 0xf016).r(this, FUNC(firetrap_state::firetrap_8751_r));
+}
+
+void firetrap_state::firetrap_bootleg_map(address_map &map)
+{
+ firetrap_base_map(map);
+ map(0xf016, 0xf016).r(this, FUNC(firetrap_state::firetrap_8751_bootleg_r));
+ map(0xf800, 0xf8ff).rom(); /* extra ROM in the bootleg with unprotection code */
+}
+
+void firetrap_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x1001).w("ymsnd", FUNC(ym3526_device::write));
+ map(0x2000, 0x2000).w(this, FUNC(firetrap_state::adpcm_data_w));
+ map(0x2400, 0x2400).w(this, FUNC(firetrap_state::sound_flip_flop_w));
+ map(0x2800, 0x2800).w(this, FUNC(firetrap_state::sound_bankselect_w));
+ map(0x3400, 0x3400).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(firetrap_state::coin_inserted)
{
diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp
index 36ff5a5ef3a..ad0c9dd3122 100644
--- a/src/mame/drivers/firetrk.cpp
+++ b/src/mame/drivers/firetrk.cpp
@@ -295,80 +295,83 @@ WRITE8_MEMBER(firetrk_state::crash_reset_w)
}
-ADDRESS_MAP_START(firetrk_state::firetrk_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("alpha_num_ram")
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("playfield_ram")
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x1020, 0x1020) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_x")
- AM_RANGE(0x1040, 0x1040) AM_MIRROR(0x001f) AM_WRITE(crash_reset_w)
- AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_reset_w)
- AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("car_rot")
- AM_RANGE(0x10a0, 0x10a0) AM_MIRROR(0x001f) AM_WRITE(steer_reset_w)
- AM_RANGE(0x10c0, 0x10c0) AM_MIRROR(0x001f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x10e0, 0x10e0) AM_MIRROR(0x001f) AM_WRITE(blink_on_w) AM_SHARE("blink")
- AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x001f) AM_WRITE(firetrk_motor_snd_w)
- AM_RANGE(0x1420, 0x1420) AM_MIRROR(0x001f) AM_WRITE(firetrk_crash_snd_w)
- AM_RANGE(0x1440, 0x1440) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_snd_w)
- AM_RANGE(0x1460, 0x1460) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_x")
- AM_RANGE(0x1480, 0x1480) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_y")
- AM_RANGE(0x14a0, 0x14a0) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_rot")
- AM_RANGE(0x14c0, 0x14c0) AM_MIRROR(0x001f) AM_WRITE(firetrk_output_w)
- AM_RANGE(0x14e0, 0x14e0) AM_MIRROR(0x001f) AM_WRITE(firetrk_xtndply_w)
- AM_RANGE(0x1800, 0x1807) AM_MIRROR(0x03f8) AM_READ(firetrk_input_r) AM_WRITENOP
- AM_RANGE(0x1c00, 0x1c03) AM_MIRROR(0x03fc) AM_READ(firetrk_dip_r)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(firetrk_state::superbug_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x0100) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x0120, 0x0120) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_x")
- AM_RANGE(0x0140, 0x0140) AM_MIRROR(0x001f) AM_WRITE(crash_reset_w)
- AM_RANGE(0x0160, 0x0160) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_reset_w)
- AM_RANGE(0x0180, 0x0180) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("car_rot")
- AM_RANGE(0x01a0, 0x01a0) AM_MIRROR(0x001f) AM_WRITE(steer_reset_w)
- AM_RANGE(0x01c0, 0x01c0) AM_MIRROR(0x001f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x01e0, 0x01e0) AM_MIRROR(0x001f) AM_WRITE(blink_on_w) AM_SHARE("blink")
- AM_RANGE(0x0200, 0x0207) AM_MIRROR(0x0018) AM_READ(firetrk_input_r)
- AM_RANGE(0x0220, 0x0220) AM_MIRROR(0x001f) AM_WRITE(firetrk_xtndply_w)
- AM_RANGE(0x0240, 0x0243) AM_MIRROR(0x001c) AM_READ(firetrk_dip_r)
- AM_RANGE(0x0260, 0x026f) AM_MIRROR(0x0010) AM_WRITE(superbug_output_w)
- AM_RANGE(0x0280, 0x0280) AM_MIRROR(0x001f) AM_WRITE(superbug_motor_snd_w)
- AM_RANGE(0x02a0, 0x02a0) AM_MIRROR(0x001f) AM_WRITE(firetrk_crash_snd_w)
- AM_RANGE(0x02c0, 0x02c0) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_snd_w)
- AM_RANGE(0x0400, 0x041f) AM_RAM AM_SHARE("alpha_num_ram")
- AM_RANGE(0x0500, 0x05ff) AM_RAM AM_SHARE("playfield_ram")
- AM_RANGE(0x0800, 0x1fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(firetrk_state::montecar_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("alpha_num_ram")
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("playfield_ram")
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x1020, 0x1020) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_x")
- AM_RANGE(0x1040, 0x1040) AM_MIRROR(0x001f) AM_WRITE(montecar_drone_reset_w)
- AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x001f) AM_WRITE(montecar_car_reset_w)
- AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("car_rot")
- AM_RANGE(0x10a0, 0x10a0) AM_MIRROR(0x001f) AM_WRITE(steer_reset_w)
- AM_RANGE(0x10c0, 0x10c0) AM_MIRROR(0x001f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x10e0, 0x10e0) AM_MIRROR(0x001f) AM_WRITE(montecar_skid_reset_w)
- AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x001f) AM_WRITE(firetrk_motor_snd_w)
- AM_RANGE(0x1420, 0x1420) AM_MIRROR(0x001f) AM_WRITE(firetrk_crash_snd_w)
- AM_RANGE(0x1440, 0x1440) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_snd_w)
- AM_RANGE(0x1460, 0x1460) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_x")
- AM_RANGE(0x1480, 0x1480) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_y")
- AM_RANGE(0x14a0, 0x14a0) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_rot")
- AM_RANGE(0x14c0, 0x14c0) AM_MIRROR(0x001f) AM_WRITE(montecar_output_1_w)
- AM_RANGE(0x14e0, 0x14e0) AM_MIRROR(0x001f) AM_WRITE(montecar_output_2_w)
- AM_RANGE(0x1800, 0x1807) AM_MIRROR(0x03f8) AM_READ(montecar_input_r) AM_WRITENOP
- AM_RANGE(0x1c00, 0x1c03) AM_MIRROR(0x03fc) AM_READ(montecar_dip_r)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void firetrk_state::firetrk_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x00ff).mirror(0x0700).ram().share("alpha_num_ram");
+ map(0x0800, 0x08ff).mirror(0x0700).ram().share("playfield_ram");
+ map(0x1000, 0x1000).mirror(0x001f).writeonly().share("scroll_y");
+ map(0x1020, 0x1020).mirror(0x001f).writeonly().share("scroll_x");
+ map(0x1040, 0x1040).mirror(0x001f).w(this, FUNC(firetrk_state::crash_reset_w));
+ map(0x1060, 0x1060).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_reset_w));
+ map(0x1080, 0x1080).mirror(0x001f).writeonly().share("car_rot");
+ map(0x10a0, 0x10a0).mirror(0x001f).w(this, FUNC(firetrk_state::steer_reset_w));
+ map(0x10c0, 0x10c0).mirror(0x001f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x10e0, 0x10e0).mirror(0x001f).w(this, FUNC(firetrk_state::blink_on_w)).share("blink");
+ map(0x1400, 0x1400).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_motor_snd_w));
+ map(0x1420, 0x1420).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_crash_snd_w));
+ map(0x1440, 0x1440).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_snd_w));
+ map(0x1460, 0x1460).mirror(0x001f).writeonly().share("drone_x");
+ map(0x1480, 0x1480).mirror(0x001f).writeonly().share("drone_y");
+ map(0x14a0, 0x14a0).mirror(0x001f).writeonly().share("drone_rot");
+ map(0x14c0, 0x14c0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_output_w));
+ map(0x14e0, 0x14e0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_xtndply_w));
+ map(0x1800, 0x1807).mirror(0x03f8).r(this, FUNC(firetrk_state::firetrk_input_r)).nopw();
+ map(0x1c00, 0x1c03).mirror(0x03fc).r(this, FUNC(firetrk_state::firetrk_dip_r));
+ map(0x2000, 0x3fff).rom();
+}
+
+
+void firetrk_state::superbug_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x0100).mirror(0x001f).writeonly().share("scroll_y");
+ map(0x0120, 0x0120).mirror(0x001f).writeonly().share("scroll_x");
+ map(0x0140, 0x0140).mirror(0x001f).w(this, FUNC(firetrk_state::crash_reset_w));
+ map(0x0160, 0x0160).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_reset_w));
+ map(0x0180, 0x0180).mirror(0x001f).writeonly().share("car_rot");
+ map(0x01a0, 0x01a0).mirror(0x001f).w(this, FUNC(firetrk_state::steer_reset_w));
+ map(0x01c0, 0x01c0).mirror(0x001f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x01e0, 0x01e0).mirror(0x001f).w(this, FUNC(firetrk_state::blink_on_w)).share("blink");
+ map(0x0200, 0x0207).mirror(0x0018).r(this, FUNC(firetrk_state::firetrk_input_r));
+ map(0x0220, 0x0220).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_xtndply_w));
+ map(0x0240, 0x0243).mirror(0x001c).r(this, FUNC(firetrk_state::firetrk_dip_r));
+ map(0x0260, 0x026f).mirror(0x0010).w(this, FUNC(firetrk_state::superbug_output_w));
+ map(0x0280, 0x0280).mirror(0x001f).w(this, FUNC(firetrk_state::superbug_motor_snd_w));
+ map(0x02a0, 0x02a0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_crash_snd_w));
+ map(0x02c0, 0x02c0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_snd_w));
+ map(0x0400, 0x041f).ram().share("alpha_num_ram");
+ map(0x0500, 0x05ff).ram().share("playfield_ram");
+ map(0x0800, 0x1fff).rom();
+}
+
+
+void firetrk_state::montecar_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x00ff).mirror(0x0700).ram().share("alpha_num_ram");
+ map(0x0800, 0x08ff).mirror(0x0700).ram().share("playfield_ram");
+ map(0x1000, 0x1000).mirror(0x001f).writeonly().share("scroll_y");
+ map(0x1020, 0x1020).mirror(0x001f).writeonly().share("scroll_x");
+ map(0x1040, 0x1040).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_drone_reset_w));
+ map(0x1060, 0x1060).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_car_reset_w));
+ map(0x1080, 0x1080).mirror(0x001f).writeonly().share("car_rot");
+ map(0x10a0, 0x10a0).mirror(0x001f).w(this, FUNC(firetrk_state::steer_reset_w));
+ map(0x10c0, 0x10c0).mirror(0x001f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x10e0, 0x10e0).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_skid_reset_w));
+ map(0x1400, 0x1400).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_motor_snd_w));
+ map(0x1420, 0x1420).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_crash_snd_w));
+ map(0x1440, 0x1440).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_snd_w));
+ map(0x1460, 0x1460).mirror(0x001f).writeonly().share("drone_x");
+ map(0x1480, 0x1480).mirror(0x001f).writeonly().share("drone_y");
+ map(0x14a0, 0x14a0).mirror(0x001f).writeonly().share("drone_rot");
+ map(0x14c0, 0x14c0).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_output_1_w));
+ map(0x14e0, 0x14e0).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_output_2_w));
+ map(0x1800, 0x1807).mirror(0x03f8).r(this, FUNC(firetrk_state::montecar_input_r)).nopw();
+ map(0x1c00, 0x1c03).mirror(0x03fc).r(this, FUNC(firetrk_state::montecar_dip_r));
+ map(0x2000, 0x3fff).rom();
+}
static INPUT_PORTS_START( firetrk )
diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp
index 0d629572446..1020192cb6a 100644
--- a/src/mame/drivers/fitfight.cpp
+++ b/src/mame/drivers/fitfight.cpp
@@ -130,18 +130,19 @@ WRITE16_MEMBER(fitfight_state::fitfight_700000_w)
m_fof_700000_data = data;
}
-ADDRESS_MAP_START(fitfight_state::fitfight_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
+void fitfight_state::fitfight_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
- AM_RANGE(0x100000, 0x100001) AM_WRITEONLY AM_SHARE("fof_100000")
+ map(0x100000, 0x100001).writeonly().share("fof_100000");
//written at scanline 5, allways 1. Used by histryma/fitfight @0x0000ec2c/@0x0000f076
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("EXTRA") // for 'histryma' only
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM_DSW2")
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3_DSW1")
+ map(0x200000, 0x200001).portr("P1_P2");
+ map(0x300000, 0x300001).portr("EXTRA"); // for 'histryma' only
+ map(0x400000, 0x400001).portr("SYSTEM_DSW2");
+ map(0x500000, 0x500001).portr("DSW3_DSW1");
- AM_RANGE(0x600000, 0x600001) AM_WRITEONLY AM_SHARE("fof_600000")
+ map(0x600000, 0x600001).writeonly().share("fof_600000");
// Is 0x600000 controlling the slave audio CPU? data is 0x1111000zzzzzzzzz (9 sign. bits)
// Used by histryma/fitfight:
// @0x000031ae/0x00002b3a: 0xF000, once, during POST
@@ -152,76 +153,78 @@ ADDRESS_MAP_START(fitfight_state::fitfight_main_map)
// @0x000037a6/0x000030e6: 0x??dd byte from 0xe08c05, 0xF101 then 0xF001/0xF157 then 0xF057
// AM_RANGE(0x700000, 0x700001) AM_READ(xxxx) /* see init */
- AM_RANGE(0x700000, 0x700001) AM_WRITE(fitfight_700000_w) AM_SHARE("fof_700000")
+ map(0x700000, 0x700001).w(this, FUNC(fitfight_state::fitfight_700000_w)).share("fof_700000");
// kept at 0xe07900/0xe04c56
- AM_RANGE(0x800000, 0x800001) AM_RAM AM_SHARE("fof_800000")
+ map(0x800000, 0x800001).ram().share("fof_800000");
//written at scanline 1, allways 0. Used by histryma/fitfight @0x00001d76/@0x00000f6a
- AM_RANGE(0x900000, 0x900001) AM_RAM AM_SHARE("fof_900000") //mid tilemap scroll
+ map(0x900000, 0x900001).ram().share("fof_900000"); //mid tilemap scroll
// fitfigth: @0x00002b42,@0x00000f76
// histryma: @0x000031b6,@0x00001d82
- AM_RANGE(0xa00000, 0xa00001) AM_RAM AM_SHARE("fof_a00000") //bak tilemap scroll
+ map(0xa00000, 0xa00001).ram().share("fof_a00000"); //bak tilemap scroll
// fitfight: @0x00002b4a,@0x00000f82
// histryma: @0x000031be,@0x00001d8e
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM /* unused layer? */
- AM_RANGE(0xb04000, 0xb07fff) AM_RAM_WRITE(fof_bak_tileram_w) AM_SHARE("fof_bak_tileram")
- AM_RANGE(0xb08000, 0xb0bfff) AM_RAM_WRITE(fof_mid_tileram_w) AM_SHARE("fof_mid_tileram")
- AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM_WRITE(fof_txt_tileram_w) AM_SHARE("fof_txt_tileram")
+ map(0xb00000, 0xb03fff).ram(); /* unused layer? */
+ map(0xb04000, 0xb07fff).ram().w(this, FUNC(fitfight_state::fof_bak_tileram_w)).share("fof_bak_tileram");
+ map(0xb08000, 0xb0bfff).ram().w(this, FUNC(fitfight_state::fof_mid_tileram_w)).share("fof_mid_tileram");
+ map(0xb0c000, 0xb0ffff).ram().w(this, FUNC(fitfight_state::fof_txt_tileram_w)).share("fof_txt_tileram");
- AM_RANGE(0xb10000, 0xb13fff) AM_RAM //used by histryma @0x0000b25a
- AM_RANGE(0xb14000, 0xb17fff) AM_RAM //used by histryma @0x0000b25a,b270
- AM_RANGE(0xb18000, 0xb1bfff) AM_RAM //used by histryma @0x0000b25a,b270,b286
+ map(0xb10000, 0xb13fff).ram(); //used by histryma @0x0000b25a
+ map(0xb14000, 0xb17fff).ram(); //used by histryma @0x0000b25a,b270
+ map(0xb18000, 0xb1bfff).ram(); //used by histryma @0x0000b25a,b270,b286
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0xc00000, 0xc00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
+ map(0xd00000, 0xd007ff).ram().share("spriteram");
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // hot mind uses RAM here (mirror?)
-ADDRESS_MAP_END
+ map(0xe00000, 0xe0ffff).ram();
+ map(0xff0000, 0xffffff).ram(); // hot mind uses RAM here (mirror?)
+}
-ADDRESS_MAP_START(fitfight_state::bbprot_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
+void fitfight_state::bbprot_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
- AM_RANGE(0x100000, 0x100001) AM_WRITEONLY AM_SHARE("fof_100000")
+ map(0x100000, 0x100001).writeonly().share("fof_100000");
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x380000, 0x380001) AM_READ_PORT("EXTRA")
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM_DSW2")
- AM_RANGE(0x480000, 0x480001) AM_READ_PORT("DSW3_DSW1")
+ map(0x300000, 0x300001).portr("P1_P2");
+ map(0x380000, 0x380001).portr("EXTRA");
+ map(0x400000, 0x400001).portr("SYSTEM_DSW2");
+ map(0x480000, 0x480001).portr("DSW3_DSW1");
- AM_RANGE(0x600000, 0x600001) AM_WRITEONLY AM_SHARE("fof_600000")
+ map(0x600000, 0x600001).writeonly().share("fof_600000");
- AM_RANGE(0x700000, 0x700001) AM_READWRITE(bbprot_700000_r, fitfight_700000_w) AM_SHARE("fof_700000")
+ map(0x700000, 0x700001).rw(this, FUNC(fitfight_state::bbprot_700000_r), FUNC(fitfight_state::fitfight_700000_w)).share("fof_700000");
- AM_RANGE(0x800000, 0x800001) AM_WRITEONLY AM_SHARE("fof_800000")
- AM_RANGE(0x900000, 0x900001) AM_WRITEONLY AM_SHARE("fof_900000")
- AM_RANGE(0xa00000, 0xa00001) AM_WRITEONLY AM_SHARE("fof_a00000")
+ map(0x800000, 0x800001).writeonly().share("fof_800000");
+ map(0x900000, 0x900001).writeonly().share("fof_900000");
+ map(0xa00000, 0xa00001).writeonly().share("fof_a00000");
- AM_RANGE(0xb00000, 0xb03fff) AM_WRITENOP /* unused layer? */
- AM_RANGE(0xb04000, 0xb07fff) AM_RAM_WRITE(fof_bak_tileram_w) AM_SHARE("fof_bak_tileram")
- AM_RANGE(0xb08000, 0xb0bfff) AM_RAM_WRITE(fof_mid_tileram_w) AM_SHARE("fof_mid_tileram")
- AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM_WRITE(fof_txt_tileram_w) AM_SHARE("fof_txt_tileram")
+ map(0xb00000, 0xb03fff).nopw(); /* unused layer? */
+ map(0xb04000, 0xb07fff).ram().w(this, FUNC(fitfight_state::fof_bak_tileram_w)).share("fof_bak_tileram");
+ map(0xb08000, 0xb0bfff).ram().w(this, FUNC(fitfight_state::fof_mid_tileram_w)).share("fof_mid_tileram");
+ map(0xb0c000, 0xb0ffff).ram().w(this, FUNC(fitfight_state::fof_txt_tileram_w)).share("fof_txt_tileram");
- AM_RANGE(0xc00000, 0xc00fff) AM_READONLY
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0xc00000, 0xc00fff).readonly();
+ map(0xc00000, 0xc03fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
+ map(0xd00000, 0xd007ff).ram().share("spriteram");
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe00000, 0xe0ffff).ram();
+}
/* 7810 (?) sound cpu */
-ADDRESS_MAP_START(fitfight_state::snd_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* ??? External ROM */
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void fitfight_state::snd_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1"); /* ??? External ROM */
+ map(0x8000, 0x87ff).ram();
+}
READ8_MEMBER(fitfight_state::snd_porta_r)
{
diff --git a/src/mame/drivers/fk1.cpp b/src/mame/drivers/fk1.cpp
index 6ac18c1141c..8037360855c 100644
--- a/src/mame/drivers/fk1.cpp
+++ b/src/mame/drivers/fk1.cpp
@@ -309,26 +309,28 @@ WRITE8_MEMBER( fk1_state::fk1_reset_int_w )
logerror("fk1_reset_int_w\n");
}
-ADDRESS_MAP_START(fk1_state::fk1_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fk1_state::fk1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE( 0x10, 0x13 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE( 0x20, 0x23 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE( 0x30, 0x30 ) AM_READWRITE(fk1_bank_ram_r,fk1_intr_w)
- AM_RANGE( 0x40, 0x40 ) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE( 0x41, 0x41 ) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE( 0x50, 0x50 ) AM_READWRITE(fk1_bank_rom_r,fk1_disk_w)
- AM_RANGE( 0x60, 0x63 ) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write)
- AM_RANGE( 0x70, 0x70 ) AM_READWRITE(fk1_mouse_r,fk1_reset_int_w)
-ADDRESS_MAP_END
+void fk1_state::fk1_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void fk1_state::fk1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x10, 0x13).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x20, 0x23).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x30, 0x30).rw(this, FUNC(fk1_state::fk1_bank_ram_r), FUNC(fk1_state::fk1_intr_w));
+ map(0x40, 0x40).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x41, 0x41).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x50, 0x50).rw(this, FUNC(fk1_state::fk1_bank_rom_r), FUNC(fk1_state::fk1_disk_w));
+ map(0x60, 0x63).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x70, 0x70).rw(this, FUNC(fk1_state::fk1_mouse_r), FUNC(fk1_state::fk1_reset_int_w));
+}
/* Input ports */
static INPUT_PORTS_START( fk1 )
diff --git a/src/mame/drivers/flicker.cpp b/src/mame/drivers/flicker.cpp
index 58b1c689bcb..80a303a280a 100644
--- a/src/mame/drivers/flicker.cpp
+++ b/src/mame/drivers/flicker.cpp
@@ -90,27 +90,32 @@ private:
};
-ADDRESS_MAP_START(flicker_state::flicker_rom)
- AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flicker_state::flicker_memory)
- AM_RANGE(0x0000, 0x003f) AM_RAM AM_SHARE("memory")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flicker_state::flicker_status)
- AM_RANGE(0x0000, 0x000f) AM_RAM AM_SHARE("status")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flicker_state::flicker_rom_ports)
- AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_WRITE(rom0_out)
- AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x0700) AM_WRITE(rom1_out)
- AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x0700) AM_READ(rom2_in)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flicker_state::flicker_ram_ports)
- AM_RANGE(0x00, 0x00) AM_WRITE(ram0_out)
-ADDRESS_MAP_END
+void flicker_state::flicker_rom(address_map &map)
+{
+ map(0x0000, 0x03ff).rom().region("maincpu", 0);
+}
+
+void flicker_state::flicker_memory(address_map &map)
+{
+ map(0x0000, 0x003f).ram().share("memory");
+}
+
+void flicker_state::flicker_status(address_map &map)
+{
+ map(0x0000, 0x000f).ram().share("status");
+}
+
+void flicker_state::flicker_rom_ports(address_map &map)
+{
+ map(0x0000, 0x000f).mirror(0x0700).w(this, FUNC(flicker_state::rom0_out));
+ map(0x0010, 0x001f).mirror(0x0700).w(this, FUNC(flicker_state::rom1_out));
+ map(0x0020, 0x002f).mirror(0x0700).r(this, FUNC(flicker_state::rom2_in));
+}
+
+void flicker_state::flicker_ram_ports(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(flicker_state::ram0_out));
+}
static INPUT_PORTS_START( flicker )
PORT_START("TEST")
diff --git a/src/mame/drivers/flipjack.cpp b/src/mame/drivers/flipjack.cpp
index 3198f267fd6..a94d7677560 100644
--- a/src/mame/drivers/flipjack.cpp
+++ b/src/mame/drivers/flipjack.cpp
@@ -305,41 +305,45 @@ INPUT_CHANGED_MEMBER(flipjack_state::flipjack_coin)
}
-ADDRESS_MAP_START(flipjack_state::flipjack_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x7000, 0x7000) AM_WRITE(flipjack_soundlatch_w)
- AM_RANGE(0x7010, 0x7010) AM_DEVWRITE("crtc", hd6845_device, address_w)
- AM_RANGE(0x7011, 0x7011) AM_DEVWRITE("crtc", hd6845_device, register_w)
- AM_RANGE(0x7020, 0x7020) AM_READ_PORT("DSW")
- AM_RANGE(0x7800, 0x7800) AM_WRITE(flipjack_layer_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("cram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("fb_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flipjack_state::flipjack_main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xff, 0xff) AM_WRITE(flipjack_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flipjack_state::flipjack_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ay1", ay8910_device, address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flipjack_state::flipjack_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(flipjack_sound_nmi_ack_w)
-ADDRESS_MAP_END
+void flipjack_state::flipjack_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x67ff).ram();
+ map(0x6800, 0x6803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7000, 0x7000).w(this, FUNC(flipjack_state::flipjack_soundlatch_w));
+ map(0x7010, 0x7010).w(m_crtc, FUNC(hd6845_device::address_w));
+ map(0x7011, 0x7011).w(m_crtc, FUNC(hd6845_device::register_w));
+ map(0x7020, 0x7020).portr("DSW");
+ map(0x7800, 0x7800).w(this, FUNC(flipjack_state::flipjack_layer_w));
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xbfff).ram().share("cram");
+ map(0xc000, 0xdfff).ram().share("vram");
+ map(0xe000, 0xffff).ram().share("fb_ram");
+}
+
+void flipjack_state::flipjack_main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xff, 0xff).w(this, FUNC(flipjack_state::flipjack_bank_w));
+}
+
+void flipjack_state::flipjack_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x8000, 0x8000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xa000, 0xa000).w("ay1", FUNC(ay8910_device::address_w));
+}
+
+void flipjack_state::flipjack_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(flipjack_state::flipjack_sound_nmi_ack_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/flkatck.cpp b/src/mame/drivers/flkatck.cpp
index c13fbf7cce7..0cf8fd2f136 100644
--- a/src/mame/drivers/flkatck.cpp
+++ b/src/mame/drivers/flkatck.cpp
@@ -92,29 +92,31 @@ WRITE8_MEMBER(flkatck_state::multiply_w)
}
-ADDRESS_MAP_START(flkatck_state::flkatck_map)
- AM_RANGE(0x0000, 0x0007) AM_RAM_WRITE(flkatck_k007121_regs_w) /* 007121 registers */
- AM_RANGE(0x0008, 0x03ff) AM_RAM /* RAM */
- AM_RANGE(0x0400, 0x041f) AM_READWRITE(flkatck_ls138_r, flkatck_ls138_w) /* inputs, DIPS, bankswitch, counters, sound command */
- AM_RANGE(0x0800, 0x0bff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") /* palette */
- AM_RANGE(0x1000, 0x1fff) AM_RAM /* RAM */
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(flkatck_k007121_w) AM_SHARE("k007121_ram") /* Video RAM (007121) */
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0x6000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flkatck_state::flkatck_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
- AM_RANGE(0x9000, 0x9000) AM_READ(multiply_r) // 007452: Protection (see wecleman, but unused here?)
- AM_RANGE(0x9001, 0x9001) AM_READNOP // 007452: ?
- AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w) // 007452: Protection (see wecleman, but unused here?)
- AM_RANGE(0x9004, 0x9004) AM_READNOP // 007452: ?
- AM_RANGE(0x9006, 0x9006) AM_WRITENOP // 007452: ?
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
-ADDRESS_MAP_END
+void flkatck_state::flkatck_map(address_map &map)
+{
+ map(0x0000, 0x0007).ram().w(this, FUNC(flkatck_state::flkatck_k007121_regs_w)); /* 007121 registers */
+ map(0x0008, 0x03ff).ram(); /* RAM */
+ map(0x0400, 0x041f).rw(this, FUNC(flkatck_state::flkatck_ls138_r), FUNC(flkatck_state::flkatck_ls138_w)); /* inputs, DIPS, bankswitch, counters, sound command */
+ map(0x0800, 0x0bff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); /* palette */
+ map(0x1000, 0x1fff).ram(); /* RAM */
+ map(0x2000, 0x3fff).ram().w(this, FUNC(flkatck_state::flkatck_k007121_w)).share("k007121_ram"); /* Video RAM (007121) */
+ map(0x4000, 0x5fff).bankr("bank1"); /* banked ROM */
+ map(0x6000, 0xffff).rom(); /* ROM */
+}
+
+void flkatck_state::flkatck_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM */
+ map(0x8000, 0x87ff).ram(); /* RAM */
+ map(0x9000, 0x9000).r(this, FUNC(flkatck_state::multiply_r)); // 007452: Protection (see wecleman, but unused here?)
+ map(0x9001, 0x9001).nopr(); // 007452: ?
+ map(0x9000, 0x9001).w(this, FUNC(flkatck_state::multiply_w)); // 007452: Protection (see wecleman, but unused here?)
+ map(0x9004, 0x9004).nopr(); // 007452: ?
+ map(0x9006, 0x9006).nopw(); // 007452: ?
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 registers */
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */
+}
static INPUT_PORTS_START( flkatck )
diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp
index fc1a66688c1..01561e7d7f7 100644
--- a/src/mame/drivers/flower.cpp
+++ b/src/mame/drivers/flower.cpp
@@ -335,36 +335,38 @@ WRITE8_MEMBER(flower_state::fgvram_w)
m_fg_tilemap->mark_tile_dirty(offset & 0xff);
}
-ADDRESS_MAP_START(flower_state::shared_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP
- AM_RANGE(0xa001, 0xa001) AM_WRITE(flipscreen_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITENOP // master irq related (0 at start, 1 at end)
- AM_RANGE(0xa003, 0xa003) AM_WRITENOP // slave irq related (0 at start, 1 at end)
- AM_RANGE(0xa004, 0xa004) AM_WRITE(coin_counter_w)
- AM_RANGE(0xa005, 0xa005) AM_WRITENOP
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("P1")
- AM_RANGE(0xa101, 0xa101) AM_READ_PORT("P2")
- AM_RANGE(0xa102, 0xa102) AM_READ_PORT("DSW1")
- AM_RANGE(0xa103, 0xa103) AM_READ_PORT("DSW2")
- AM_RANGE(0xa400, 0xa400) AM_WRITE(sound_command_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("txvram")
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(fgvram_w) AM_SHARE("fgvram")
- AM_RANGE(0xf200, 0xf200) AM_RAM AM_SHARE("fgscroll")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(bgvram_w) AM_SHARE("bgvram")
- AM_RANGE(0xfa00, 0xfa00) AM_RAM AM_SHARE("bgscroll")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(flower_state::audio_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_WRITENOP // audio irq related (0 at start, 1 at end)
- AM_RANGE(0x4001, 0x4001) AM_WRITE(audio_nmi_mask_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x803f) AM_DEVWRITE("flower", flower_sound_device, lower_write)
- AM_RANGE(0xa000, 0xa03f) AM_DEVWRITE("flower", flower_sound_device, upper_write)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
+void flower_state::shared_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram().share("workram");
+ map(0xa000, 0xa000).nopw();
+ map(0xa001, 0xa001).w(this, FUNC(flower_state::flipscreen_w));
+ map(0xa002, 0xa002).nopw(); // master irq related (0 at start, 1 at end)
+ map(0xa003, 0xa003).nopw(); // slave irq related (0 at start, 1 at end)
+ map(0xa004, 0xa004).w(this, FUNC(flower_state::coin_counter_w));
+ map(0xa005, 0xa005).nopw();
+ map(0xa100, 0xa100).portr("P1");
+ map(0xa101, 0xa101).portr("P2");
+ map(0xa102, 0xa102).portr("DSW1");
+ map(0xa103, 0xa103).portr("DSW2");
+ map(0xa400, 0xa400).w(this, FUNC(flower_state::sound_command_w));
+ map(0xe000, 0xefff).ram().share("txvram");
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(flower_state::fgvram_w)).share("fgvram");
+ map(0xf200, 0xf200).ram().share("fgscroll");
+ map(0xf800, 0xf9ff).ram().w(this, FUNC(flower_state::bgvram_w)).share("bgvram");
+ map(0xfa00, 0xfa00).ram().share("bgscroll");
+}
+
+void flower_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4000).nopw(); // audio irq related (0 at start, 1 at end)
+ map(0x4001, 0x4001).w(this, FUNC(flower_state::audio_nmi_mask_w));
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x803f).w("flower", FUNC(flower_sound_device::lower_write));
+ map(0xa000, 0xa03f).w("flower", FUNC(flower_sound_device::upper_write));
+ map(0xc000, 0xc7ff).ram();
+}
INPUT_CHANGED_MEMBER(flower_state::coin_inserted)
{
diff --git a/src/mame/drivers/flstory.cpp b/src/mame/drivers/flstory.cpp
index 5c0cee327b5..f2dd330ba6e 100644
--- a/src/mame/drivers/flstory.cpp
+++ b/src/mame/drivers/flstory.cpp
@@ -32,61 +32,65 @@ WRITE8_MEMBER(flstory_state::snd_reset_w)
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 1 ) ? ASSERT_LINE : CLEAR_LINE);
}
-ADDRESS_MAP_START(flstory_state::base_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
+void flstory_state::base_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
// rumba lumber reads area 0xc800-0xcfff
// onna34ro checks the whole range during POST but having a mirror or not doesn't make any difference for the check to pass
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x800) AM_RAM_WRITE(flstory_videoram_w) AM_SHARE("videoram")
+ map(0xc000, 0xc7ff).mirror(0x800).ram().w(this, FUNC(flstory_state::flstory_videoram_w)).share("videoram");
- AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog */
- AM_RANGE(0xd002, 0xd002) AM_NOP /* unknown read & coin lock out? */
+ map(0xd001, 0xd001).nopw(); /* watchdog */
+ map(0xd002, 0xd002).noprw(); /* unknown read & coin lock out? */
- AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0xd400, 0xd400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd403, 0xd403) AM_READNOP AM_WRITE(snd_reset_w) // unknown read (set/clr side effect?)
+ map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0xd400, 0xd400).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd403, 0xd403).nopr().w(this, FUNC(flstory_state::snd_reset_w)); // unknown read (set/clr side effect?)
- AM_RANGE(0xd401, 0xd401) AM_READ(snd_flag_r)
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("P1")
- AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2")
+ map(0xd401, 0xd401).r(this, FUNC(flstory_state::snd_flag_r));
+ map(0xd800, 0xd800).portr("DSW0");
+ map(0xd801, 0xd801).portr("DSW1");
+ map(0xd802, 0xd802).portr("DSW2");
+ map(0xd803, 0xd803).portr("SYSTEM");
+ map(0xd804, 0xd804).portr("P1");
+ map(0xd806, 0xd806).portr("P2");
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(flstory_scrlram_w) AM_SHARE("scrlram")
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).ram().w(this, FUNC(flstory_state::flstory_scrlram_w)).share("scrlram");
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(flstory_palette_r, flstory_palette_w)
+ map(0xdd00, 0xdeff).rw(this, FUNC(flstory_state::flstory_palette_r), FUNC(flstory_state::flstory_palette_w));
// victorious nine read 0xf80a during attract, unknown purpose
- AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("workram") /* work RAM */
-ADDRESS_MAP_END
+ map(0xe000, 0xe7ff).mirror(0x1800).ram().share("workram"); /* work RAM */
+}
-ADDRESS_MAP_START(flstory_state::flstory_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
+void flstory_state::flstory_map(address_map &map)
+{
+ base_map(map);
+ map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
- AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r)
+ map(0xd805, 0xd805).r(this, FUNC(flstory_state::flstory_mcu_status_r));
// AM_RANGE(0xda00, 0xda00) AM_WRITEONLY
- AM_RANGE(0xdcc0, 0xdcff) AM_RAM /* unknown */
- AM_RANGE(0xdf03, 0xdf03) AM_WRITE(flstory_gfxctrl_w)
-ADDRESS_MAP_END
+ map(0xdcc0, 0xdcff).ram(); /* unknown */
+ map(0xdf03, 0xdf03).w(this, FUNC(flstory_state::flstory_gfxctrl_w));
+}
-ADDRESS_MAP_START(flstory_state::onna34ro_map)
- AM_IMPORT_FROM(base_map)
+void flstory_state::onna34ro_map(address_map &map)
+{
+ base_map(map);
// AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
// AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r)
// AM_RANGE(0xda00, 0xda00) AM_WRITEONLY
- AM_RANGE(0xdcc0, 0xdcff) AM_RAM /* unknown */
- AM_RANGE(0xdf03, 0xdf03) AM_WRITE(flstory_gfxctrl_w)
-ADDRESS_MAP_END
+ map(0xdcc0, 0xdcff).ram(); /* unknown */
+ map(0xdf03, 0xdf03).w(this, FUNC(flstory_state::flstory_gfxctrl_w));
+}
-ADDRESS_MAP_START(flstory_state::onna34ro_mcu_map)
- AM_IMPORT_FROM(onna34ro_map)
- AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r)
-ADDRESS_MAP_END
+void flstory_state::onna34ro_mcu_map(address_map &map)
+{
+ onna34ro_map(map);
+ map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0xd805, 0xd805).r(this, FUNC(flstory_state::flstory_mcu_status_r));
+}
CUSTOM_INPUT_MEMBER(flstory_state::victnine_mcu_status_bit01_r)
{
@@ -95,27 +99,29 @@ CUSTOM_INPUT_MEMBER(flstory_state::victnine_mcu_status_bit01_r)
return (victnine_mcu_status_r(space, 0) & 3);
}
-ADDRESS_MAP_START(flstory_state::victnine_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xd000, 0xd000) AM_READWRITE(victnine_mcu_r, victnine_mcu_w)
+void flstory_state::victnine_map(address_map &map)
+{
+ base_map(map);
+ map(0xd000, 0xd000).rw(this, FUNC(flstory_state::victnine_mcu_r), FUNC(flstory_state::victnine_mcu_w));
- AM_RANGE(0xd805, 0xd805) AM_READ_PORT("EXTRA_P1") /* also mcu */
- AM_RANGE(0xd807, 0xd807) AM_READ_PORT("EXTRA_P2")
+ map(0xd805, 0xd805).portr("EXTRA_P1"); /* also mcu */
+ map(0xd807, 0xd807).portr("EXTRA_P2");
// AM_RANGE(0xda00, 0xda00) AM_WRITEONLY
- AM_RANGE(0xdce0, 0xdce0) AM_READWRITE(victnine_gfxctrl_r, victnine_gfxctrl_w)
- AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP /* unknown */
-ADDRESS_MAP_END
+ map(0xdce0, 0xdce0).rw(this, FUNC(flstory_state::victnine_gfxctrl_r), FUNC(flstory_state::victnine_gfxctrl_w));
+ map(0xdce1, 0xdce1).nopw(); /* unknown */
+}
-ADDRESS_MAP_START(flstory_state::rumba_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
+void flstory_state::rumba_map(address_map &map)
+{
+ base_map(map);
+ map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
- AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r)
- AM_RANGE(0xd807, 0xd807) AM_READ_PORT("EXTRA_P2")
+ map(0xd805, 0xd805).r(this, FUNC(flstory_state::flstory_mcu_status_r));
+ map(0xd807, 0xd807).portr("EXTRA_P2");
// AM_RANGE(0xda00, 0xda00) AM_WRITEONLY
- AM_RANGE(0xdce0, 0xdce0) AM_READWRITE(victnine_gfxctrl_r, victnine_gfxctrl_w)
+ map(0xdce0, 0xdce0).rw(this, FUNC(flstory_state::victnine_gfxctrl_r), FUNC(flstory_state::victnine_gfxctrl_w));
// AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP /* unknown */
-ADDRESS_MAP_END
+}
@@ -162,20 +168,21 @@ WRITE8_MEMBER(flstory_state::sound_control_3_w)
}
-ADDRESS_MAP_START(flstory_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ym2149_device, address_data_w)
- AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w)
- AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w)
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xda00, 0xda00) AM_READ(snd_flag_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>)
- AM_RANGE(0xdc00, 0xdc00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>)
- AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC & unknown read */
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */
-ADDRESS_MAP_END
+void flstory_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).w(m_ay, FUNC(ym2149_device::address_data_w));
+ map(0xca00, 0xca0d).w(m_msm, FUNC(msm5232_device::write));
+ map(0xcc00, 0xcc00).w(this, FUNC(flstory_state::sound_control_0_w));
+ map(0xce00, 0xce00).w(this, FUNC(flstory_state::sound_control_1_w));
+ map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd800, 0xd800).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0xda00, 0xda00).r(this, FUNC(flstory_state::snd_flag_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<1>));
+ map(0xdc00, 0xdc00).w(m_soundnmi, FUNC(input_merger_device::in_clear<1>));
+ map(0xde00, 0xde00).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC & unknown read */
+ map(0xe000, 0xefff).rom(); /* space for diagnostics ROM */
+}
diff --git a/src/mame/drivers/flyball.cpp b/src/mame/drivers/flyball.cpp
index f976c1e8b07..4982897f2e9 100644
--- a/src/mame/drivers/flyball.cpp
+++ b/src/mame/drivers/flyball.cpp
@@ -298,23 +298,24 @@ WRITE_LINE_MEMBER(flyball_state::lamp_w)
*
*************************************/
-ADDRESS_MAP_START(flyball_state::flyball_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x100) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_NOP
- AM_RANGE(0x0801, 0x0801) AM_WRITE(pitcher_pic_w)
- AM_RANGE(0x0802, 0x0802) AM_READ(scanline_r)
- AM_RANGE(0x0803, 0x0803) AM_READ(potsense_r)
- AM_RANGE(0x0804, 0x0804) AM_WRITE(ball_vert_w)
- AM_RANGE(0x0805, 0x0805) AM_WRITE(ball_horz_w)
- AM_RANGE(0x0806, 0x0806) AM_WRITE(pitcher_vert_w)
- AM_RANGE(0x0807, 0x0807) AM_WRITE(pitcher_horz_w)
- AM_RANGE(0x0900, 0x0900) AM_WRITE(potmask_w)
- AM_RANGE(0x0a00, 0x0a07) AM_WRITE(misc_w)
- AM_RANGE(0x0b00, 0x0b00) AM_READ(input_r)
- AM_RANGE(0x0d00, 0x0eff) AM_WRITEONLY AM_SHARE("playfield_ram")
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void flyball_state::flyball_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x00ff).mirror(0x100).ram();
+ map(0x0800, 0x0800).noprw();
+ map(0x0801, 0x0801).w(this, FUNC(flyball_state::pitcher_pic_w));
+ map(0x0802, 0x0802).r(this, FUNC(flyball_state::scanline_r));
+ map(0x0803, 0x0803).r(this, FUNC(flyball_state::potsense_r));
+ map(0x0804, 0x0804).w(this, FUNC(flyball_state::ball_vert_w));
+ map(0x0805, 0x0805).w(this, FUNC(flyball_state::ball_horz_w));
+ map(0x0806, 0x0806).w(this, FUNC(flyball_state::pitcher_vert_w));
+ map(0x0807, 0x0807).w(this, FUNC(flyball_state::pitcher_horz_w));
+ map(0x0900, 0x0900).w(this, FUNC(flyball_state::potmask_w));
+ map(0x0a00, 0x0a07).w(this, FUNC(flyball_state::misc_w));
+ map(0x0b00, 0x0b00).r(this, FUNC(flyball_state::input_r));
+ map(0x0d00, 0x0eff).writeonly().share("playfield_ram");
+ map(0x1000, 0x1fff).rom().region("maincpu", 0);
+}
/*************************************
diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp
index 9a17d4f6bb3..4a63438c638 100644
--- a/src/mame/drivers/fm7.cpp
+++ b/src/mame/drivers/fm7.cpp
@@ -1427,59 +1427,61 @@ WRITE_LINE_MEMBER(fm7_state::fm77av_fmirq)
FFF0 - FFFF: Interrupt vector table
*/
// The FM-7 has only 64kB RAM, so we'll worry about banking when we do the later models
-ADDRESS_MAP_START(fm7_state::fm7_mem)
- AM_RANGE(0x0000,0x7fff) AM_RAM
- AM_RANGE(0x8000,0xfbff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") // also F-BASIC ROM, when enabled
- AM_RANGE(0xfc00,0xfc7f) AM_RAM
- AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w)
+void fm7_state::fm7_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xfbff).bankr("bank1").bankw("bank2"); // also F-BASIC ROM, when enabled
+ map(0xfc00, 0xfc7f).ram();
+ map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w));
// I/O space (FD00-FDFF)
- AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w)
- AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask
- AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags
- AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r)
- AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w)
- AM_RANGE(0xfd06,0xfd0c) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0d,0xfd0d) AM_READWRITE(fm7_psg_select_r,fm7_psg_select_w)
- AM_RANGE(0xfd0e,0xfd0e) AM_READWRITE(fm7_psg_data_r, fm7_psg_data_w)
- AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w)
- AM_RANGE(0xfd10,0xfd17) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w)
- AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w)
- AM_RANGE(0xfd24,0xfd36) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w)
- AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w)
- AM_RANGE(0xfd40,0xfdff) AM_READ(fm7_unknown_r)
+ map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w));
+ map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask
+ map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags
+ map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r));
+ map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w));
+ map(0xfd06, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0d, 0xfd0d).rw(this, FUNC(fm7_state::fm7_psg_select_r), FUNC(fm7_state::fm7_psg_select_w));
+ map(0xfd0e, 0xfd0e).rw(this, FUNC(fm7_state::fm7_psg_data_r), FUNC(fm7_state::fm7_psg_data_w));
+ map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w));
+ map(0xfd10, 0xfd17).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w));
+ map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w));
+ map(0xfd24, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w));
+ map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w));
+ map(0xfd40, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r));
// Boot ROM
- AM_RANGE(0xfe00,0xffdf) AM_ROMBANK("bank17")
- AM_RANGE(0xffe0,0xffef) AM_RAM
- AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm8_mem)
- AM_RANGE(0x0000,0x7fff) AM_RAM
- AM_RANGE(0x8000,0xfbff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") // also F-BASIC ROM, when enabled
- AM_RANGE(0xfc00,0xfc7f) AM_RAM
- AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w)
+ map(0xfe00, 0xffdf).bankr("bank17");
+ map(0xffe0, 0xffef).ram();
+ map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w));
+}
+
+void fm7_state::fm8_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xfbff).bankr("bank1").bankw("bank2"); // also F-BASIC ROM, when enabled
+ map(0xfc00, 0xfc7f).ram();
+ map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w));
// I/O space (FD00-FDFF)
- AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w)
- AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask
- AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags
- AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r)
- AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w)
- AM_RANGE(0xfd06,0xfd0c) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w)
- AM_RANGE(0xfd10,0xfd17) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w)
- AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w)
- AM_RANGE(0xfd24,0xfd36) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w)
- AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w)
- AM_RANGE(0xfd40,0xfdff) AM_READ(fm7_unknown_r)
+ map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w));
+ map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask
+ map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags
+ map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r));
+ map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w));
+ map(0xfd06, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w));
+ map(0xfd10, 0xfd17).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w));
+ map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w));
+ map(0xfd24, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w));
+ map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w));
+ map(0xfd40, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r));
// Boot ROM
- AM_RANGE(0xfe00,0xffdf) AM_ROMBANK("bank17")
- AM_RANGE(0xffe0,0xffef) AM_RAM
- AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w)
-ADDRESS_MAP_END
+ map(0xfe00, 0xffdf).bankr("bank17");
+ map(0xffe0, 0xffef).ram();
+ map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w));
+}
/*
0000 - 3FFF: Video RAM bank 0 (Blue plane)
@@ -1492,248 +1494,259 @@ ADDRESS_MAP_END
FFF0 - FFFF: Interrupt vector table
*/
-ADDRESS_MAP_START(fm7_state::fm7_sub_mem)
- AM_RANGE(0x0000,0xbfff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM
- AM_RANGE(0xc000,0xcfff) AM_RAM // Console RAM
- AM_RANGE(0xd000,0xd37f) AM_RAM // Work RAM
- AM_RANGE(0xd380,0xd3ff) AM_RAM AM_SHARE("shared_ram")
+void fm7_state::fm7_sub_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM
+ map(0xc000, 0xcfff).ram(); // Console RAM
+ map(0xd000, 0xd37f).ram(); // Work RAM
+ map(0xd380, 0xd3ff).ram().share("shared_ram");
// I/O space (D400-D4FF)
- AM_RANGE(0xd400,0xd401) AM_READ(fm7_sub_keyboard_r)
- AM_RANGE(0xd402,0xd402) AM_READ(fm7_cancel_ack)
- AM_RANGE(0xd403,0xd403) AM_READ(fm7_sub_beeper_r)
- AM_RANGE(0xd404,0xd404) AM_READ(fm7_attn_irq_r)
- AM_RANGE(0xd408,0xd408) AM_READWRITE(fm7_crt_r,fm7_crt_w)
- AM_RANGE(0xd409,0xd409) AM_READWRITE(fm7_vram_access_r,fm7_vram_access_w)
- AM_RANGE(0xd40a,0xd40a) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w)
- AM_RANGE(0xd40e,0xd40f) AM_WRITE(fm7_vram_offset_w)
- AM_RANGE(0xd800,0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm11_mem)
- AM_RANGE(0x0000,0x0fff) AM_DEVREADWRITE("av_bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0x1000,0x1fff) AM_DEVREADWRITE("av_bank2", address_map_bank_device, read8, write8)
- AM_RANGE(0x2000,0x2fff) AM_DEVREADWRITE("av_bank3", address_map_bank_device, read8, write8)
- AM_RANGE(0x3000,0x3fff) AM_DEVREADWRITE("av_bank4", address_map_bank_device, read8, write8)
- AM_RANGE(0x4000,0x4fff) AM_DEVREADWRITE("av_bank5", address_map_bank_device, read8, write8)
- AM_RANGE(0x5000,0x5fff) AM_DEVREADWRITE("av_bank6", address_map_bank_device, read8, write8)
- AM_RANGE(0x6000,0x6fff) AM_DEVREADWRITE("av_bank7", address_map_bank_device, read8, write8)
- AM_RANGE(0x7000,0x7fff) AM_DEVREADWRITE("av_bank8", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000,0x8fff) AM_DEVREADWRITE("av_bank9", address_map_bank_device, read8, write8)
- AM_RANGE(0x9000,0x9fff) AM_DEVREADWRITE("av_bank10", address_map_bank_device, read8, write8)
- AM_RANGE(0xa000,0xafff) AM_DEVREADWRITE("av_bank11", address_map_bank_device, read8, write8)
- AM_RANGE(0xb000,0xbfff) AM_DEVREADWRITE("av_bank12", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000,0xcfff) AM_DEVREADWRITE("av_bank13", address_map_bank_device, read8, write8)
- AM_RANGE(0xd000,0xdfff) AM_DEVREADWRITE("av_bank14", address_map_bank_device, read8, write8)
- AM_RANGE(0xe000,0xefff) AM_DEVREADWRITE("av_bank15", address_map_bank_device, read8, write8)
- AM_RANGE(0xf000,0xfbff) AM_DEVREADWRITE("av_bank16", address_map_bank_device, read8, write8)
- AM_RANGE(0xfc00,0xfc7f) AM_RAM
- AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w)
+ map(0xd400, 0xd401).r(this, FUNC(fm7_state::fm7_sub_keyboard_r));
+ map(0xd402, 0xd402).r(this, FUNC(fm7_state::fm7_cancel_ack));
+ map(0xd403, 0xd403).r(this, FUNC(fm7_state::fm7_sub_beeper_r));
+ map(0xd404, 0xd404).r(this, FUNC(fm7_state::fm7_attn_irq_r));
+ map(0xd408, 0xd408).rw(this, FUNC(fm7_state::fm7_crt_r), FUNC(fm7_state::fm7_crt_w));
+ map(0xd409, 0xd409).rw(this, FUNC(fm7_state::fm7_vram_access_r), FUNC(fm7_state::fm7_vram_access_w));
+ map(0xd40a, 0xd40a).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w));
+ map(0xd40e, 0xd40f).w(this, FUNC(fm7_state::fm7_vram_offset_w));
+ map(0xd800, 0xffff).rom();
+}
+
+void fm7_state::fm11_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rw("av_bank1", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x1000, 0x1fff).rw("av_bank2", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x2000, 0x2fff).rw("av_bank3", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x3000, 0x3fff).rw("av_bank4", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x4000, 0x4fff).rw("av_bank5", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x5000, 0x5fff).rw("av_bank6", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x6000, 0x6fff).rw("av_bank7", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x7000, 0x7fff).rw("av_bank8", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0x8fff).rw("av_bank9", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x9000, 0x9fff).rw("av_bank10", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xa000, 0xafff).rw("av_bank11", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xb000, 0xbfff).rw("av_bank12", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xcfff).rw("av_bank13", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xd000, 0xdfff).rw("av_bank14", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xe000, 0xefff).rw("av_bank15", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xf000, 0xfbff).rw("av_bank16", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xfc00, 0xfc7f).ram();
+ map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w));
// I/O space (FD00-FDFF)
- AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w)
- AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask
- AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags
- AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r)
- AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w)
- AM_RANGE(0xfd06,0xfd0a) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0b,0xfd0b) AM_READ(fm77av_boot_mode_r)
- AM_RANGE(0xfd0c,0xfd0c) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w)
- AM_RANGE(0xfd10,0xfd10) AM_WRITE(fm7_init_en_w)
- AM_RANGE(0xfd11,0xfd11) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd12,0xfd12) AM_READWRITE(fm77av_sub_modestatus_r,fm77av_sub_modestatus_w)
- AM_RANGE(0xfd13,0xfd13) AM_WRITE(fm77av_sub_bank_w)
- AM_RANGE(0xfd14,0xfd14) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd17,0xfd17) AM_READ(fm7_fmirq_r)
- AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w)
- AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w)
- AM_RANGE(0xfd24,0xfd2b) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd30,0xfd34) AM_WRITE(fm77av_analog_palette_w)
- AM_RANGE(0xfd35,0xfd36) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w)
- AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w)
- AM_RANGE(0xfd40,0xfd7f) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd80,0xfd93) AM_READWRITE(fm7_mmr_r,fm7_mmr_w)
- AM_RANGE(0xfd94,0xfdff) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfe00,0xffdf) AM_RAM_WRITE(fm77av_bootram_w) AM_SHARE("boot_ram")
- AM_RANGE(0xffe0,0xffef) AM_RAM
- AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w)
-ADDRESS_MAP_END
+ map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w));
+ map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask
+ map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags
+ map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r));
+ map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w));
+ map(0xfd06, 0xfd0a).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0b, 0xfd0b).r(this, FUNC(fm7_state::fm77av_boot_mode_r));
+ map(0xfd0c, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w));
+ map(0xfd10, 0xfd10).w(this, FUNC(fm7_state::fm7_init_en_w));
+ map(0xfd11, 0xfd11).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd12, 0xfd12).rw(this, FUNC(fm7_state::fm77av_sub_modestatus_r), FUNC(fm7_state::fm77av_sub_modestatus_w));
+ map(0xfd13, 0xfd13).w(this, FUNC(fm7_state::fm77av_sub_bank_w));
+ map(0xfd14, 0xfd14).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd17, 0xfd17).r(this, FUNC(fm7_state::fm7_fmirq_r));
+ map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w));
+ map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w));
+ map(0xfd24, 0xfd2b).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd30, 0xfd34).w(this, FUNC(fm7_state::fm77av_analog_palette_w));
+ map(0xfd35, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w));
+ map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w));
+ map(0xfd40, 0xfd7f).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd80, 0xfd93).rw(this, FUNC(fm7_state::fm7_mmr_r), FUNC(fm7_state::fm7_mmr_w));
+ map(0xfd94, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfe00, 0xffdf).ram().w(this, FUNC(fm7_state::fm77av_bootram_w)).share("boot_ram");
+ map(0xffe0, 0xffef).ram();
+ map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w));
+}
// Much of this is guesswork at the moment
-ADDRESS_MAP_START(fm7_state::fm11_sub_mem)
- AM_RANGE(0x0000,0x7fff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM
- AM_RANGE(0x8000,0x8fff) AM_RAM // Console RAM(?)
- AM_RANGE(0x9000,0x9f7f) AM_RAM // Work RAM(?)
- AM_RANGE(0x9f80,0x9fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xafe0,0xafe3) AM_RAM
+void fm7_state::fm11_sub_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM
+ map(0x8000, 0x8fff).ram(); // Console RAM(?)
+ map(0x9000, 0x9f7f).ram(); // Work RAM(?)
+ map(0x9f80, 0x9fff).ram().share("shared_ram");
+ map(0xafe0, 0xafe3).ram();
// AM_RANGE(0xafe4,0xafe4) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w)
- AM_RANGE(0xafe6,0xafe6) AM_READWRITE(fm77av_video_flags_r,fm77av_video_flags_w)
- AM_RANGE(0xaff0,0xaff0) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w)
- AM_RANGE(0xc000,0xffff) AM_ROM // sybsystem ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm11_x86_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0xfefff) AM_RAM
- AM_RANGE(0xff000,0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm11_x86_io)
- AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w)
- AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask
- AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags
- AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r)
- AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w)
- AM_RANGE(0xfd06,0xfd0c) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w)
- AM_RANGE(0xfd10,0xfd17) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w)
- AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w)
- AM_RANGE(0xfd24,0xfd36) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w)
- AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w)
- AM_RANGE(0xfd40,0xfdff) AM_READ(fm7_unknown_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm16_mem)
- AM_RANGE(0x00000,0xfbfff) AM_RAM
- AM_RANGE(0xfc000,0xfffff) AM_ROM // IPL
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm16_io)
- AM_RANGE(0xfd00,0xfd01) AM_READWRITE8(fm7_keyboard_r,fm7_cassette_printer_w,0xffff)
- AM_RANGE(0xfd02,0xfd03) AM_READWRITE8(fm7_cassette_printer_r,fm7_irq_mask_w,0x00ff) // IRQ mask
- AM_RANGE(0xfd02,0xfd03) AM_READWRITE8(fm7_irq_cause_r,fm7_beeper_w,0xff00) // IRQ flags
- AM_RANGE(0xfd04,0xfd05) AM_READ8(fm7_fd04_r,0x00ff)
- AM_RANGE(0xfd04,0xfd05) AM_READWRITE8(fm7_subintf_r,fm7_subintf_w,0xff00)
+ map(0xafe6, 0xafe6).rw(this, FUNC(fm7_state::fm77av_video_flags_r), FUNC(fm7_state::fm77av_video_flags_w));
+ map(0xaff0, 0xaff0).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w));
+ map(0xc000, 0xffff).rom(); // sybsystem ROM
+}
+
+void fm7_state::fm11_x86_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xfefff).ram();
+ map(0xff000, 0xfffff).rom();
+}
+
+void fm7_state::fm11_x86_io(address_map &map)
+{
+ map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w));
+ map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask
+ map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags
+ map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r));
+ map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w));
+ map(0xfd06, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w));
+ map(0xfd10, 0xfd17).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w));
+ map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w));
+ map(0xfd24, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w));
+ map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w));
+ map(0xfd40, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r));
+}
+
+void fm7_state::fm16_mem(address_map &map)
+{
+ map(0x00000, 0xfbfff).ram();
+ map(0xfc000, 0xfffff).rom(); // IPL
+}
+
+void fm7_state::fm16_io(address_map &map)
+{
+ map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w));
+ map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask
+ map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags
+ map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r));
+ map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w));
// AM_RANGE(0xfd06,0xfd0c) AM_READ8(fm7_unknown_r,0xffff)
- AM_RANGE(0xfd0e,0xfd0f) AM_READWRITE8(fm7_rom_en_r,fm7_rom_en_w,0xff00)
+ map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w));
// AM_RANGE(0xfd10,0xfd17) AM_READ8(fm7_unknown_r,0xffff)
- AM_RANGE(0xfd18,0xfd1f) AM_READWRITE8(fm7_fdc_r,fm7_fdc_w,0xffff)
- AM_RANGE(0xfd20,0xfd23) AM_READWRITE8(fm7_kanji_r,fm7_kanji_w,0xffff)
+ map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w));
+ map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w));
// AM_RANGE(0xfd24,0xfd36) AM_READ8(fm7_unknown_r,0xffff)
- AM_RANGE(0xfd36,0xfd37) AM_WRITE8(fm7_multipage_w,0xff00)
- AM_RANGE(0xfd38,0xfd3f) AM_READWRITE8(fm7_palette_r,fm7_palette_w,0xffff)
+ map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w));
+ map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w));
// AM_RANGE(0xfd40,0xfdff) AM_READ8(fm7_unknown_r,0xffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm16_sub_mem)
- AM_RANGE(0x0000,0xafff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM
- AM_RANGE(0xb000,0xffff) AM_ROM // subsystem ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm77av_mem)
- AM_RANGE(0x0000,0x0fff) AM_DEVREADWRITE("av_bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0x1000,0x1fff) AM_DEVREADWRITE("av_bank2", address_map_bank_device, read8, write8)
- AM_RANGE(0x2000,0x2fff) AM_DEVREADWRITE("av_bank3", address_map_bank_device, read8, write8)
- AM_RANGE(0x3000,0x3fff) AM_DEVREADWRITE("av_bank4", address_map_bank_device, read8, write8)
- AM_RANGE(0x4000,0x4fff) AM_DEVREADWRITE("av_bank5", address_map_bank_device, read8, write8)
- AM_RANGE(0x5000,0x5fff) AM_DEVREADWRITE("av_bank6", address_map_bank_device, read8, write8)
- AM_RANGE(0x6000,0x6fff) AM_DEVREADWRITE("av_bank7", address_map_bank_device, read8, write8)
- AM_RANGE(0x7000,0x7fff) AM_DEVREADWRITE("av_bank8", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000,0x8fff) AM_DEVREADWRITE("av_bank9", address_map_bank_device, read8, write8)
- AM_RANGE(0x9000,0x9fff) AM_DEVREADWRITE("av_bank10", address_map_bank_device, read8, write8)
- AM_RANGE(0xa000,0xafff) AM_DEVREADWRITE("av_bank11", address_map_bank_device, read8, write8)
- AM_RANGE(0xb000,0xbfff) AM_DEVREADWRITE("av_bank12", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000,0xcfff) AM_DEVREADWRITE("av_bank13", address_map_bank_device, read8, write8)
- AM_RANGE(0xd000,0xdfff) AM_DEVREADWRITE("av_bank14", address_map_bank_device, read8, write8)
- AM_RANGE(0xe000,0xefff) AM_DEVREADWRITE("av_bank15", address_map_bank_device, read8, write8)
- AM_RANGE(0xf000,0xfbff) AM_DEVREADWRITE("av_bank16", address_map_bank_device, read8, write8)
- AM_RANGE(0xfc00,0xfc7f) AM_RAM
- AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w)
+}
+
+void fm7_state::fm16_sub_mem(address_map &map)
+{
+ map(0x0000, 0xafff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM
+ map(0xb000, 0xffff).rom(); // subsystem ROM
+}
+
+void fm7_state::fm77av_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rw("av_bank1", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x1000, 0x1fff).rw("av_bank2", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x2000, 0x2fff).rw("av_bank3", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x3000, 0x3fff).rw("av_bank4", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x4000, 0x4fff).rw("av_bank5", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x5000, 0x5fff).rw("av_bank6", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x6000, 0x6fff).rw("av_bank7", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x7000, 0x7fff).rw("av_bank8", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0x8fff).rw("av_bank9", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x9000, 0x9fff).rw("av_bank10", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xa000, 0xafff).rw("av_bank11", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xb000, 0xbfff).rw("av_bank12", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xcfff).rw("av_bank13", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xd000, 0xdfff).rw("av_bank14", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xe000, 0xefff).rw("av_bank15", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xf000, 0xfbff).rw("av_bank16", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xfc00, 0xfc7f).ram();
+ map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w));
// I/O space (FD00-FDFF)
- AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w)
- AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask
- AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags
- AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r)
- AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w)
- AM_RANGE(0xfd06,0xfd0a) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0b,0xfd0b) AM_READ(fm77av_boot_mode_r)
- AM_RANGE(0xfd0c,0xfd0c) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd0d,0xfd0d) AM_READWRITE(fm7_psg_select_r,fm7_psg_select_w)
- AM_RANGE(0xfd0e,0xfd0e) AM_READWRITE(fm7_psg_data_r, fm7_psg_data_w)
- AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w)
- AM_RANGE(0xfd10,0xfd10) AM_WRITE(fm7_init_en_w)
- AM_RANGE(0xfd11,0xfd11) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd12,0xfd12) AM_READWRITE(fm77av_sub_modestatus_r,fm77av_sub_modestatus_w)
- AM_RANGE(0xfd13,0xfd13) AM_WRITE(fm77av_sub_bank_w)
- AM_RANGE(0xfd14,0xfd14) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd15,0xfd15) AM_READWRITE(fm7_psg_select_r,fm77av_ym_select_w)
- AM_RANGE(0xfd16,0xfd16) AM_READWRITE(fm7_psg_data_r,fm7_psg_data_w)
- AM_RANGE(0xfd17,0xfd17) AM_READ(fm7_fmirq_r)
- AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w)
- AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w)
- AM_RANGE(0xfd24,0xfd2b) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd30,0xfd34) AM_WRITE(fm77av_analog_palette_w)
- AM_RANGE(0xfd35,0xfd36) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w)
- AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w)
- AM_RANGE(0xfd40,0xfd7f) AM_READ(fm7_unknown_r)
- AM_RANGE(0xfd80,0xfd93) AM_READWRITE(fm7_mmr_r,fm7_mmr_w)
- AM_RANGE(0xfd94,0xfdff) AM_READ(fm7_unknown_r)
+ map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w));
+ map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask
+ map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags
+ map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r));
+ map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w));
+ map(0xfd06, 0xfd0a).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0b, 0xfd0b).r(this, FUNC(fm7_state::fm77av_boot_mode_r));
+ map(0xfd0c, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd0d, 0xfd0d).rw(this, FUNC(fm7_state::fm7_psg_select_r), FUNC(fm7_state::fm7_psg_select_w));
+ map(0xfd0e, 0xfd0e).rw(this, FUNC(fm7_state::fm7_psg_data_r), FUNC(fm7_state::fm7_psg_data_w));
+ map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w));
+ map(0xfd10, 0xfd10).w(this, FUNC(fm7_state::fm7_init_en_w));
+ map(0xfd11, 0xfd11).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd12, 0xfd12).rw(this, FUNC(fm7_state::fm77av_sub_modestatus_r), FUNC(fm7_state::fm77av_sub_modestatus_w));
+ map(0xfd13, 0xfd13).w(this, FUNC(fm7_state::fm77av_sub_bank_w));
+ map(0xfd14, 0xfd14).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd15, 0xfd15).rw(this, FUNC(fm7_state::fm7_psg_select_r), FUNC(fm7_state::fm77av_ym_select_w));
+ map(0xfd16, 0xfd16).rw(this, FUNC(fm7_state::fm7_psg_data_r), FUNC(fm7_state::fm7_psg_data_w));
+ map(0xfd17, 0xfd17).r(this, FUNC(fm7_state::fm7_fmirq_r));
+ map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w));
+ map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w));
+ map(0xfd24, 0xfd2b).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd30, 0xfd34).w(this, FUNC(fm7_state::fm77av_analog_palette_w));
+ map(0xfd35, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w));
+ map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w));
+ map(0xfd40, 0xfd7f).r(this, FUNC(fm7_state::fm7_unknown_r));
+ map(0xfd80, 0xfd93).rw(this, FUNC(fm7_state::fm7_mmr_r), FUNC(fm7_state::fm7_mmr_w));
+ map(0xfd94, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r));
// Boot ROM (RAM on FM77AV and later)
- AM_RANGE(0xfe00,0xffdf) AM_RAM_WRITE(fm77av_bootram_w) AM_SHARE("boot_ram")
- AM_RANGE(0xffe0,0xffef) AM_RAM
- AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm77av_sub_mem)
- AM_RANGE(0x0000,0xbfff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM
- AM_RANGE(0xc000,0xcfff) AM_RAM AM_REGION("maincpu",0x1c000) // Console RAM
- AM_RANGE(0xd000,0xd37f) AM_RAM AM_REGION("maincpu",0x1d000) // Work RAM
- AM_RANGE(0xd380,0xd3ff) AM_RAM AM_SHARE("shared_ram")
+ map(0xfe00, 0xffdf).ram().w(this, FUNC(fm7_state::fm77av_bootram_w)).share("boot_ram");
+ map(0xffe0, 0xffef).ram();
+ map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w));
+}
+
+void fm7_state::fm77av_sub_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM
+ map(0xc000, 0xcfff).ram().region("maincpu", 0x1c000); // Console RAM
+ map(0xd000, 0xd37f).ram().region("maincpu", 0x1d000); // Work RAM
+ map(0xd380, 0xd3ff).ram().share("shared_ram");
// I/O space (D400-D4FF)
- AM_RANGE(0xd400,0xd401) AM_READ(fm7_sub_keyboard_r)
- AM_RANGE(0xd402,0xd402) AM_READ(fm7_cancel_ack)
- AM_RANGE(0xd403,0xd403) AM_READ(fm7_sub_beeper_r)
- AM_RANGE(0xd404,0xd404) AM_READ(fm7_attn_irq_r)
- AM_RANGE(0xd408,0xd408) AM_READWRITE(fm7_crt_r,fm7_crt_w)
- AM_RANGE(0xd409,0xd409) AM_READWRITE(fm7_vram_access_r,fm7_vram_access_w)
- AM_RANGE(0xd40a,0xd40a) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w)
- AM_RANGE(0xd40e,0xd40f) AM_WRITE(fm7_vram_offset_w)
- AM_RANGE(0xd410,0xd42b) AM_READWRITE(fm77av_alu_r, fm77av_alu_w)
- AM_RANGE(0xd430,0xd430) AM_READWRITE(fm77av_video_flags_r,fm77av_video_flags_w)
- AM_RANGE(0xd431,0xd432) AM_READWRITE(fm77av_key_encoder_r,fm77av_key_encoder_w)
- AM_RANGE(0xd500,0xd7ff) AM_RAM AM_REGION("maincpu",0x1d500) // Work RAM
- AM_RANGE(0xd800,0xdfff) AM_ROMBANK("bank20")
- AM_RANGE(0xe000,0xffff) AM_ROMBANK("bank21")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fm7_state::fm7_banked_mem)
+ map(0xd400, 0xd401).r(this, FUNC(fm7_state::fm7_sub_keyboard_r));
+ map(0xd402, 0xd402).r(this, FUNC(fm7_state::fm7_cancel_ack));
+ map(0xd403, 0xd403).r(this, FUNC(fm7_state::fm7_sub_beeper_r));
+ map(0xd404, 0xd404).r(this, FUNC(fm7_state::fm7_attn_irq_r));
+ map(0xd408, 0xd408).rw(this, FUNC(fm7_state::fm7_crt_r), FUNC(fm7_state::fm7_crt_w));
+ map(0xd409, 0xd409).rw(this, FUNC(fm7_state::fm7_vram_access_r), FUNC(fm7_state::fm7_vram_access_w));
+ map(0xd40a, 0xd40a).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w));
+ map(0xd40e, 0xd40f).w(this, FUNC(fm7_state::fm7_vram_offset_w));
+ map(0xd410, 0xd42b).rw(this, FUNC(fm7_state::fm77av_alu_r), FUNC(fm7_state::fm77av_alu_w));
+ map(0xd430, 0xd430).rw(this, FUNC(fm7_state::fm77av_video_flags_r), FUNC(fm7_state::fm77av_video_flags_w));
+ map(0xd431, 0xd432).rw(this, FUNC(fm7_state::fm77av_key_encoder_r), FUNC(fm7_state::fm77av_key_encoder_w));
+ map(0xd500, 0xd7ff).ram().region("maincpu", 0x1d500); // Work RAM
+ map(0xd800, 0xdfff).bankr("bank20");
+ map(0xe000, 0xffff).bankr("bank21");
+}
+
+void fm7_state::fm7_banked_mem(address_map &map)
+{
// Extended RAM
- AM_RANGE(0x00000,0x0ffff) AM_RAM AM_REGION("maincpu",0x00000)
+ map(0x00000, 0x0ffff).ram().region("maincpu", 0x00000);
// Sub CPU space
- AM_RANGE(0x10000,0x1bfff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM
- AM_RANGE(0x1c000,0x1cfff) AM_RAM AM_REGION("maincpu",0x1c000) // Console RAM
- AM_RANGE(0x1d000,0x1d37f) AM_RAM AM_REGION("maincpu",0x1d000) // Work RAM
- AM_RANGE(0x1d380,0x1d3ff) AM_RAM AM_SHARE("shared_ram")
+ map(0x10000, 0x1bfff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM
+ map(0x1c000, 0x1cfff).ram().region("maincpu", 0x1c000); // Console RAM
+ map(0x1d000, 0x1d37f).ram().region("maincpu", 0x1d000); // Work RAM
+ map(0x1d380, 0x1d3ff).ram().share("shared_ram");
// I/O space (D400-D4FF)
- AM_RANGE(0x1d400,0x1d401) AM_READ(fm7_sub_keyboard_r)
- AM_RANGE(0x1d402,0x1d402) AM_READ(fm7_cancel_ack)
- AM_RANGE(0x1d403,0x1d403) AM_READ(fm7_sub_beeper_r)
- AM_RANGE(0x1d404,0x1d404) AM_READ(fm7_attn_irq_r)
- AM_RANGE(0x1d408,0x1d408) AM_READWRITE(fm7_crt_r,fm7_crt_w)
- AM_RANGE(0x1d409,0x1d409) AM_READWRITE(fm7_vram_access_r,fm7_vram_access_w)
- AM_RANGE(0x1d40a,0x1d40a) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w)
- AM_RANGE(0x1d40e,0x1d40f) AM_WRITE(fm7_vram_offset_w)
- AM_RANGE(0x1d410,0x1d42b) AM_READWRITE(fm77av_alu_r, fm77av_alu_w)
- AM_RANGE(0x1d430,0x1d430) AM_READWRITE(fm77av_video_flags_r,fm77av_video_flags_w)
- AM_RANGE(0x1d431,0x1d432) AM_READWRITE(fm77av_key_encoder_r,fm77av_key_encoder_w)
- AM_RANGE(0x1d500,0x1d7ff) AM_RAM AM_REGION("maincpu",0x1d500) // Work RAM
- AM_RANGE(0x1d800,0x1dfff) AM_ROMBANK("bank20")
- AM_RANGE(0x1e000,0x1ffff) AM_ROMBANK("bank21")
+ map(0x1d400, 0x1d401).r(this, FUNC(fm7_state::fm7_sub_keyboard_r));
+ map(0x1d402, 0x1d402).r(this, FUNC(fm7_state::fm7_cancel_ack));
+ map(0x1d403, 0x1d403).r(this, FUNC(fm7_state::fm7_sub_beeper_r));
+ map(0x1d404, 0x1d404).r(this, FUNC(fm7_state::fm7_attn_irq_r));
+ map(0x1d408, 0x1d408).rw(this, FUNC(fm7_state::fm7_crt_r), FUNC(fm7_state::fm7_crt_w));
+ map(0x1d409, 0x1d409).rw(this, FUNC(fm7_state::fm7_vram_access_r), FUNC(fm7_state::fm7_vram_access_w));
+ map(0x1d40a, 0x1d40a).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w));
+ map(0x1d40e, 0x1d40f).w(this, FUNC(fm7_state::fm7_vram_offset_w));
+ map(0x1d410, 0x1d42b).rw(this, FUNC(fm7_state::fm77av_alu_r), FUNC(fm7_state::fm77av_alu_w));
+ map(0x1d430, 0x1d430).rw(this, FUNC(fm7_state::fm77av_video_flags_r), FUNC(fm7_state::fm77av_video_flags_w));
+ map(0x1d431, 0x1d432).rw(this, FUNC(fm7_state::fm77av_key_encoder_r), FUNC(fm7_state::fm77av_key_encoder_w));
+ map(0x1d500, 0x1d7ff).ram().region("maincpu", 0x1d500); // Work RAM
+ map(0x1d800, 0x1dfff).bankr("bank20");
+ map(0x1e000, 0x1ffff).bankr("bank21");
// more RAM?
- AM_RANGE(0x20000,0x2ffff) AM_RAM AM_REGION("maincpu",0x20000)
+ map(0x20000, 0x2ffff).ram().region("maincpu", 0x20000);
// Main CPU space
- AM_RANGE(0x30000,0x35fff) AM_RAM AM_REGION("maincpu",0x30000)
- AM_RANGE(0x36000,0x37fff) AM_READ_BANK("init_bank_r") AM_WRITE_BANK("init_bank_w")
- AM_RANGE(0x38000,0x3fbff) AM_READ_BANK("fbasic_bank_r") AM_WRITE_BANK("fbasic_bank_w")
- AM_RANGE(0x3fc00,0x3ffff) AM_RAM AM_REGION("maincpu",0x3fc00)
+ map(0x30000, 0x35fff).ram().region("maincpu", 0x30000);
+ map(0x36000, 0x37fff).bankr("init_bank_r").bankw("init_bank_w");
+ map(0x38000, 0x3fbff).bankr("fbasic_bank_r").bankw("fbasic_bank_w");
+ map(0x3fc00, 0x3ffff).ram().region("maincpu", 0x3fc00);
-ADDRESS_MAP_END
+}
/* Input ports */
INPUT_PORTS_START( fm7_keyboard )
diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index 774d922a346..c8c606722a5 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -2190,34 +2190,35 @@ WRITE_LINE_MEMBER( towns_state::towns_syndet_irq )
}
-ADDRESS_MAP_START(towns_state::towns_mem)
+void towns_state::towns_mem(address_map &map)
+{
// memory map based on FM-Towns/Bochs (Bochs modified to emulate the FM-Towns)
// may not be (and probably is not) correct
- AM_RANGE(0x00000000, 0x000bffff) AM_RAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffffffff)
- AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffffffff)
- AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7")
- AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM
- AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffffffff)
- AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM
- AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffffffff) AM_SHARE("nvram") // CMOS? RAM
- AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11))
- AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12))
- AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12")
+ map(0x00000000, 0x000bffff).ram();
+ map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
+ map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
+ map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
+ map(0x000cc000, 0x000cff7f).ram();
+ map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
+ map(0x000d0000, 0x000d7fff).ram();
+ map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram"); // CMOS? RAM
+ map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
+ map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
+ map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM
- AM_RANGE(0x80000000, 0x8007ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffffffff) AM_MIRROR(0x80000) // VRAM
- AM_RANGE(0x80100000, 0x8017ffff) AM_READWRITE8(towns_gfx_packed_r,towns_gfx_packed_w,0xffffffff) AM_MIRROR(0x80000) // VRAM
- AM_RANGE(0x81000000, 0x8101ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffffffff) // Sprite RAM
- AM_RANGE(0xc0000000, 0xc0ffffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, static_mem_read, static_mem_write, 0xffffffff)
- AM_RANGE(0xc1000000, 0xc1ffffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffffffff)
- AM_RANGE(0xc2000000, 0xc207ffff) AM_ROM AM_REGION("user",0x000000) // OS ROM
- AM_RANGE(0xc2080000, 0xc20fffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM
- AM_RANGE(0xc2100000, 0xc213ffff) AM_ROM AM_REGION("user",0x180000) // FONT ROM
- AM_RANGE(0xc2140000, 0xc2141fff) AM_READWRITE8(towns_cmos_r,towns_cmos_w,0xffffffff) // CMOS (mirror?)
- AM_RANGE(0xc2180000, 0xc21fffff) AM_ROM AM_REGION("user",0x080000) // F20 ROM
- AM_RANGE(0xc2200000, 0xc2200fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffffffff) // WAVE RAM
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
-ADDRESS_MAP_END
+ map(0x80000000, 0x8007ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x80000); // VRAM
+ map(0x80100000, 0x8017ffff).rw(this, FUNC(towns_state::towns_gfx_packed_r), FUNC(towns_state::towns_gfx_packed_w)).mirror(0x80000); // VRAM
+ map(0x81000000, 0x8101ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
+ map(0xc0000000, 0xc0ffffff).rw(m_icmemcard, FUNC(fmt_icmem_device::static_mem_read), FUNC(fmt_icmem_device::static_mem_write));
+ map(0xc1000000, 0xc1ffffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
+ map(0xc2000000, 0xc207ffff).rom().region("user", 0x000000); // OS ROM
+ map(0xc2080000, 0xc20fffff).rom().region("user", 0x100000); // DIC ROM
+ map(0xc2100000, 0xc213ffff).rom().region("user", 0x180000); // FONT ROM
+ map(0xc2140000, 0xc2141fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)); // CMOS (mirror?)
+ map(0xc2180000, 0xc21fffff).rom().region("user", 0x080000); // F20 ROM
+ map(0xc2200000, 0xc2200fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
+ map(0xfffc0000, 0xffffffff).rom().region("user", 0x200000); // SYSTEM ROM
+}
ADDRESS_MAP_START(towns_state::marty_mem)
AM_RANGE(0x00000000, 0x000bffff) AM_RAM
@@ -2268,64 +2269,65 @@ ADDRESS_MAP_START(towns_state::ux_mem)
AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
ADDRESS_MAP_END
-ADDRESS_MAP_START(towns_state::towns_io)
+void towns_state::towns_io(address_map &map)
+{
// I/O ports derived from FM Towns/Bochs, these are specific to the FM Towns
// System ports
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x0003) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff00ff)
- AM_RANGE(0x0010,0x0013) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff00ff)
- AM_RANGE(0x0020,0x0033) AM_READWRITE8(towns_system_r,towns_system_w, 0xffffffff)
- AM_RANGE(0x0040,0x0047) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff00ff)
- AM_RANGE(0x0050,0x0057) AM_DEVREADWRITE8("pit2", pit8253_device, read, write, 0x00ff00ff)
- AM_RANGE(0x0060,0x0063) AM_READWRITE8(towns_port60_r, towns_port60_w, 0x000000ff)
- AM_RANGE(0x0068,0x006b) AM_READWRITE8(towns_intervaltimer2_r, towns_intervaltimer2_w, 0xffffffff)
- AM_RANGE(0x006c,0x006f) AM_READWRITE8(towns_sys6c_r,towns_sys6c_w, 0x000000ff)
+ map.unmap_value_high();
+ map(0x0000, 0x0003).rw(m_pic_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask32(0x00ff00ff);
+ map(0x0010, 0x0013).rw(m_pic_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask32(0x00ff00ff);
+ map(0x0020, 0x0033).rw(this, FUNC(towns_state::towns_system_r), FUNC(towns_state::towns_system_w));
+ map(0x0040, 0x0047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0x00ff00ff);
+ map(0x0050, 0x0057).rw("pit2", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0x00ff00ff);
+ map(0x0060, 0x0060).rw(this, FUNC(towns_state::towns_port60_r), FUNC(towns_state::towns_port60_w));
+ map(0x0068, 0x006b).rw(this, FUNC(towns_state::towns_intervaltimer2_r), FUNC(towns_state::towns_intervaltimer2_w));
+ map(0x006c, 0x006c).rw(this, FUNC(towns_state::towns_sys6c_r), FUNC(towns_state::towns_sys6c_w));
// 0x0070/0x0080 - CMOS RTC
- AM_RANGE(0x0070,0x0073) AM_READWRITE8(towns_rtc_r,towns_rtc_w,0x000000ff)
- AM_RANGE(0x0080,0x0083) AM_WRITE8(towns_rtc_select_w,0x000000ff)
+ map(0x0070, 0x0070).rw(this, FUNC(towns_state::towns_rtc_r), FUNC(towns_state::towns_rtc_w));
+ map(0x0080, 0x0080).w(this, FUNC(towns_state::towns_rtc_select_w));
// DMA controllers (uPD71071)
- AM_RANGE(0x00a0,0x00af) AM_READWRITE8(towns_dma1_r, towns_dma1_w, 0xffffffff)
- AM_RANGE(0x00b0,0x00bf) AM_READWRITE8(towns_dma2_r, towns_dma2_w, 0xffffffff)
+ map(0x00a0, 0x00af).rw(this, FUNC(towns_state::towns_dma1_r), FUNC(towns_state::towns_dma1_w));
+ map(0x00b0, 0x00bf).rw(this, FUNC(towns_state::towns_dma2_r), FUNC(towns_state::towns_dma2_w));
// Floppy controller
- AM_RANGE(0x0200,0x020f) AM_READWRITE8(towns_floppy_r, towns_floppy_w, 0xffffffff)
+ map(0x0200, 0x020f).rw(this, FUNC(towns_state::towns_floppy_r), FUNC(towns_state::towns_floppy_w));
// CRTC / Video
- AM_RANGE(0x0400,0x0403) AM_READ8(towns_video_unknown_r, 0x000000ff) // R/O (0x400)
- AM_RANGE(0x0404,0x0407) AM_READWRITE8(towns_video_404_r, towns_video_404_w, 0x000000ff) // R/W (0x404)
- AM_RANGE(0x0440,0x045f) AM_READWRITE8(towns_video_440_r, towns_video_440_w, 0xffffffff)
+ map(0x0400, 0x0400).r(this, FUNC(towns_state::towns_video_unknown_r)); // R/O (0x400)
+ map(0x0404, 0x0404).rw(this, FUNC(towns_state::towns_video_404_r), FUNC(towns_state::towns_video_404_w)); // R/W (0x404)
+ map(0x0440, 0x045f).rw(this, FUNC(towns_state::towns_video_440_r), FUNC(towns_state::towns_video_440_w));
// System port
- AM_RANGE(0x0480,0x0483) AM_READWRITE8(towns_sys480_r,towns_sys480_w,0x000000ff) // R/W (0x480)
+ map(0x0480, 0x0480).rw(this, FUNC(towns_state::towns_sys480_r), FUNC(towns_state::towns_sys480_w)); // R/W (0x480)
// IC Memory Card
- AM_RANGE(0x0488,0x048b) AM_DEVREAD8("icmemcard",fmt_icmem_device,status_r,0x00ff0000)
- AM_RANGE(0x0490,0x0493) AM_DEVREADWRITE8("icmemcard",fmt_icmem_device,bank_r,bank_w,0x0000ffff)
+ map(0x048a, 0x048a).r(m_icmemcard, FUNC(fmt_icmem_device::status_r));
+ map(0x0490, 0x0491).rw(m_icmemcard, FUNC(fmt_icmem_device::bank_r), FUNC(fmt_icmem_device::bank_w));
// CD-ROM
- AM_RANGE(0x04c0,0x04cf) AM_READWRITE8(towns_cdrom_r,towns_cdrom_w,0x00ff00ff)
+ map(0x04c0, 0x04cf).rw(this, FUNC(towns_state::towns_cdrom_r), FUNC(towns_state::towns_cdrom_w)).umask32(0x00ff00ff);
// Joystick / Mouse ports
- AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff00ff)
- AM_RANGE(0x04d4,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff0000)
+ map(0x04d0, 0x04d3).r(this, FUNC(towns_state::towns_padport_r)).umask32(0x00ff00ff);
+ map(0x04d6, 0x04d6).w(this, FUNC(towns_state::towns_pad_mask_w));
// Sound (YM3438 [FM], RF5c68 [PCM])
- AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff00ff)
- AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffffffff) // R/W -- volume ports
- AM_RANGE(0x04e4,0x04e7) AM_READ8(unksnd_r, 0xffffffff)
- AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffffffff)
- AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffffffff)
+ map(0x04d8, 0x04df).rw("fm", FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask32(0x00ff00ff);
+ map(0x04e0, 0x04e3).rw(this, FUNC(towns_state::towns_volume_r), FUNC(towns_state::towns_volume_w)); // R/W -- volume ports
+ map(0x04e4, 0x04e7).r(this, FUNC(towns_state::unksnd_r));
+ map(0x04e8, 0x04ef).rw(this, FUNC(towns_state::towns_sound_ctrl_r), FUNC(towns_state::towns_sound_ctrl_w));
+ map(0x04f0, 0x04fb).w("pcm", FUNC(rf5c68_device::rf5c68_w));
// CRTC / Video
- AM_RANGE(0x05c8,0x05cb) AM_READWRITE8(towns_video_5c8_r, towns_video_5c8_w, 0xffffffff)
+ map(0x05c8, 0x05cb).rw(this, FUNC(towns_state::towns_video_5c8_r), FUNC(towns_state::towns_video_5c8_w));
// System ports
- AM_RANGE(0x05e8,0x05ef) AM_READWRITE8(towns_sys5e8_r, towns_sys5e8_w, 0x00ff00ff)
+ map(0x05e8, 0x05ef).rw(this, FUNC(towns_state::towns_sys5e8_r), FUNC(towns_state::towns_sys5e8_w)).umask32(0x00ff00ff);
// Keyboard (8042 MCU)
- AM_RANGE(0x0600,0x0607) AM_READWRITE8(towns_keyboard_r, towns_keyboard_w,0x00ff00ff)
+ map(0x0600, 0x0607).rw(this, FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask32(0x00ff00ff);
// RS-232C interface
- AM_RANGE(0x0a00,0x0a0b) AM_READWRITE8(towns_serial_r, towns_serial_w, 0x00ff00ff)
+ map(0x0a00, 0x0a0b).rw(this, FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask32(0x00ff00ff);
// SCSI controller
- AM_RANGE(0x0c30,0x0c37) AM_DEVREADWRITE8("fmscsi",fmscsi_device,fmscsi_r,fmscsi_w,0x00ff00ff)
+ map(0x0c30, 0x0c37).rw("fmscsi", FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask32(0x00ff00ff);
// CMOS
- AM_RANGE(0x3000,0x4fff) AM_READWRITE8(towns_cmos_r, towns_cmos_w,0x00ff00ff)
+ map(0x3000, 0x4fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask32(0x00ff00ff);
// Something (MS-DOS wants this 0x41ff to be 1)
//AM_RANGE(0x41fc,0x41ff) AM_READ8(towns_41ff_r,0xff000000)
// CRTC / Video (again)
- AM_RANGE(0xfd90,0xfda3) AM_READWRITE8(towns_video_fd90_r, towns_video_fd90_w, 0xffffffff)
- AM_RANGE(0xff80,0xffff) AM_READWRITE8(towns_video_cff80_r,towns_video_cff80_w,0xffffffff)
-ADDRESS_MAP_END
+ map(0xfd90, 0xfda3).rw(this, FUNC(towns_state::towns_video_fd90_r), FUNC(towns_state::towns_video_fd90_w));
+ map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
+}
ADDRESS_MAP_START(towns_state::towns16_io) // for the 386SX based systems
// System ports
diff --git a/src/mame/drivers/fontwriter.cpp b/src/mame/drivers/fontwriter.cpp
index 0461ef49ccf..c9a9f792010 100644
--- a/src/mame/drivers/fontwriter.cpp
+++ b/src/mame/drivers/fontwriter.cpp
@@ -74,17 +74,19 @@ uint32_t fontwriter_state::screen_update(screen_device &screen, bitmap_rgb32 &bi
return 0;
}
-ADDRESS_MAP_START(fontwriter_state::main_map)
- AM_RANGE(0x002000, 0x007fff) AM_RAM
- AM_RANGE(0x008000, 0x00ffff) AM_ROM AM_REGION("maincpu", 0x0000)
- AM_RANGE(0x020000, 0x04ffff) AM_RAM
- AM_RANGE(0x100000, 0x1007ff) AM_RAM
- AM_RANGE(0x200000, 0x3fffff) AM_ROM AM_REGION("maincpu", 0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fontwriter_state::io_map)
- AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READ(vbl_r)
-ADDRESS_MAP_END
+void fontwriter_state::main_map(address_map &map)
+{
+ map(0x002000, 0x007fff).ram();
+ map(0x008000, 0x00ffff).rom().region("maincpu", 0x0000);
+ map(0x020000, 0x04ffff).ram();
+ map(0x100000, 0x1007ff).ram();
+ map(0x200000, 0x3fffff).rom().region("maincpu", 0x0000);
+}
+
+void fontwriter_state::io_map(address_map &map)
+{
+ map(M37710_PORT6, M37710_PORT6).r(this, FUNC(fontwriter_state::vbl_r));
+}
static INPUT_PORTS_START( fontwriter )
INPUT_PORTS_END
diff --git a/src/mame/drivers/foodf.cpp b/src/mame/drivers/foodf.cpp
index 3a22246f7b9..1d5753d4915 100644
--- a/src/mame/drivers/foodf.cpp
+++ b/src/mame/drivers/foodf.cpp
@@ -207,24 +207,26 @@ WRITE16_MEMBER(foodf_state::analog_w)
*************************************/
// complete memory map derived from schematics
-ADDRESS_MAP_START(foodf_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x00ffff) AM_MIRROR(0x3e0000) AM_ROM
- AM_RANGE(0x014000, 0x014fff) AM_MIRROR(0x3e3000) AM_RAM
- AM_RANGE(0x018000, 0x018fff) AM_MIRROR(0x3e3000) AM_RAM
- AM_RANGE(0x01c000, 0x01c0ff) AM_MIRROR(0x3e3f00) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x800000, 0x8007ff) AM_MIRROR(0x03f800) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x900000, 0x9001ff) AM_MIRROR(0x03fe00) AM_DEVREADWRITE8("nvram", x2212_device, read, write, 0x00ff)
- AM_RANGE(0x940000, 0x940007) AM_MIRROR(0x023ff8) AM_READ(analog_r)
- AM_RANGE(0x944000, 0x944007) AM_MIRROR(0x023ff8) AM_WRITE(analog_w)
- AM_RANGE(0x948000, 0x948001) AM_MIRROR(0x023ffe) AM_READ_PORT("SYSTEM") AM_WRITE8(digital_w, 0x00ff)
- AM_RANGE(0x950000, 0x9501ff) AM_MIRROR(0x023e00) AM_WRITE(foodf_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x954000, 0x954001) AM_MIRROR(0x023ffe) AM_WRITE(nvram_recall_w)
- AM_RANGE(0x958000, 0x958001) AM_MIRROR(0x023ffe) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0xa40000, 0xa4001f) AM_MIRROR(0x03ffe0) AM_DEVREADWRITE8("pokey2", pokey_device, read, write, 0x00ff)
- AM_RANGE(0xa80000, 0xa8001f) AM_MIRROR(0x03ffe0) AM_DEVREADWRITE8("pokey1", pokey_device, read, write, 0x00ff)
- AM_RANGE(0xac0000, 0xac001f) AM_MIRROR(0x03ffe0) AM_DEVREADWRITE8("pokey3", pokey_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void foodf_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x00ffff).mirror(0x3e0000).rom();
+ map(0x014000, 0x014fff).mirror(0x3e3000).ram();
+ map(0x018000, 0x018fff).mirror(0x3e3000).ram();
+ map(0x01c000, 0x01c0ff).mirror(0x3e3f00).ram().share("spriteram");
+ map(0x800000, 0x8007ff).mirror(0x03f800).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x900000, 0x9001ff).mirror(0x03fe00).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff);
+ map(0x940000, 0x940007).mirror(0x023ff8).r(this, FUNC(foodf_state::analog_r));
+ map(0x944000, 0x944007).mirror(0x023ff8).w(this, FUNC(foodf_state::analog_w));
+ map(0x948000, 0x948001).mirror(0x023ffe).portr("SYSTEM");
+ map(0x948001, 0x948001).mirror(0x023ffe).w(this, FUNC(foodf_state::digital_w));
+ map(0x950000, 0x9501ff).mirror(0x023e00).w(this, FUNC(foodf_state::foodf_paletteram_w)).share("paletteram");
+ map(0x954000, 0x954001).mirror(0x023ffe).w(this, FUNC(foodf_state::nvram_recall_w));
+ map(0x958000, 0x958001).mirror(0x023ffe).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0xa40000, 0xa4001f).mirror(0x03ffe0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
+ map(0xa80000, 0xa8001f).mirror(0x03ffe0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
+ map(0xac0000, 0xac001f).mirror(0x03ffe0).rw("pokey3", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
+}
diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp
index 01e5332994e..b8bce0296e8 100644
--- a/src/mame/drivers/force68k.cpp
+++ b/src/mame/drivers/force68k.cpp
@@ -233,23 +233,24 @@ private:
required_device<generic_slot_device> m_cart;
};
-ADDRESS_MAP_START(force68k_state::force68k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x000000, 0x000007) AM_ROM AM_READ (bootvect_r) /* Vectors mapped from System EPROM */
- AM_RANGE (0x000008, 0x01ffff) AM_RAM /* DRAM CPU-1B */
+void force68k_state::force68k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x000007).rom().r(this, FUNC(force68k_state::bootvect_r)); /* Vectors mapped from System EPROM */
+ map(0x000008, 0x01ffff).ram(); /* DRAM CPU-1B */
//AM_RANGE (0x020000, 0x07ffff) AM_RAM /* Additional DRAM CPU-1D */
- AM_RANGE (0x080000, 0x083fff) AM_ROM /* System EPROM Area 16Kb DEBUGGER supplied as default on CPU-1B/D */
- AM_RANGE (0x084000, 0x09ffff) AM_ROM /* System EPROM Area 112Kb additional space for System ROM */
+ map(0x080000, 0x083fff).rom(); /* System EPROM Area 16Kb DEBUGGER supplied as default on CPU-1B/D */
+ map(0x084000, 0x09ffff).rom(); /* System EPROM Area 112Kb additional space for System ROM */
//AM_RANGE (0x0a0000, 0x0bffff) AM_ROM /* User EPROM/SRAM Area, max 128Kb mapped by a cartslot */
- AM_RANGE (0x0c0040, 0x0c0043) AM_DEVREADWRITE8 ("aciahost", acia6850_device, read, write, 0x00ff)
- AM_RANGE (0x0c0080, 0x0c0083) AM_DEVREADWRITE8 ("aciaterm", acia6850_device, read, write, 0xff00)
- AM_RANGE (0x0c0100, 0x0c0103) AM_DEVREADWRITE8 ("aciaremt", acia6850_device, read, write, 0x00ff)
- AM_RANGE (0x0c0400, 0x0c042f) AM_DEVREADWRITE8 ("rtc", mm58167_device, read, write, 0x00ff)
- AM_RANGE (0x0e0000, 0x0e0035) AM_DEVREADWRITE8 ("pit", pit68230_device, read, write, 0x00ff)
+ map(0x0c0040, 0x0c0043).rw(m_aciahost, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x0c0080, 0x0c0083).rw(m_aciaterm, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0x0c0100, 0x0c0103).rw(m_aciaremt, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x0c0400, 0x0c042f).rw(m_rtc, FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0e0035).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write)).umask16(0x00ff);
//AM_RANGE(0x0e0200, 0x0e0380) AM_READWRITE(fpu_r, fpu_w) /* optional FPCP 68881 FPU interface */
- AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) */
- AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) */
-ADDRESS_MAP_END
+ map(0x100000, 0xfeffff).rw(this, FUNC(force68k_state::vme_a24_r), FUNC(force68k_state::vme_a24_w)); /* VMEbus Rev B addresses (24 bits) */
+ map(0xff0000, 0xffffff).rw(this, FUNC(force68k_state::vme_a16_r), FUNC(force68k_state::vme_a16_w)); /* VMEbus Rev B addresses (16 bits) */
+}
/* Input ports */
static INPUT_PORTS_START (force68k)
diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp
index ee0dfbc9a69..ef45477609c 100644
--- a/src/mame/drivers/forte2.cpp
+++ b/src/mame/drivers/forte2.cpp
@@ -72,21 +72,23 @@ private:
-ADDRESS_MAP_START(forte2_state::program_mem)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(forte2_state::io_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x98, 0x98) AM_DEVREADWRITE( "tms9928a", tms9928a_device, vram_read, vram_write )
- AM_RANGE(0x99, 0x99) AM_DEVREADWRITE( "tms9928a", tms9928a_device, register_read, register_write )
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r)
+void forte2_state::program_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xffff).ram();
+}
+
+void forte2_state::io_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x98, 0x98).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x99, 0x99).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ 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.
// AM_RANGE(0xa9, 0xab) AM_NOP // Since this arcade board doesn't have one, those ports should be unmapped.
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( pesadelo )
PORT_START("IN0")
diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp
index 6275f44bd7e..d2e05d5e9e1 100644
--- a/src/mame/drivers/fortecar.cpp
+++ b/src/mame/drivers/fortecar.cpp
@@ -535,24 +535,26 @@ Seems to work properly, but must be checked closely...
* Memory Map Information *
***********************************/
-ADDRESS_MAP_START(fortecar_state::fortecar_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xd800, 0xffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fortecar_state::fortecar_ports)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("crtc", mc6845_device, address_w) // pc=444
- AM_RANGE(0x21, 0x21) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("fcppi0", i8255_device, read, write)//M5L8255AP
+void fortecar_state::fortecar_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).rom();
+ map(0xd000, 0xd7ff).ram().share("nvram");
+ map(0xd800, 0xffff).ram().share("vram");
+}
+
+void fortecar_state::fortecar_ports(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x20, 0x20).w("crtc", FUNC(mc6845_device::address_w)); // pc=444
+ map(0x21, 0x21).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x60, 0x63).rw("fcppi0", FUNC(i8255_device::read), FUNC(i8255_device::write));//M5L8255AP
// AM_RANGE(0x80, 0x81) //8251A UART
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("rtc", v3021_device, read, write)
- AM_RANGE(0xa1, 0xa1) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
+ map(0xa0, 0xa0).rw("rtc", FUNC(v3021_device::read), FUNC(v3021_device::write));
+ map(0xa1, 0xa1).portr("DSW");
+}
/*
CRTC REGISTER: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp
index dbce9167c59..245c6aa0e67 100644
--- a/src/mame/drivers/fp1100.cpp
+++ b/src/mame/drivers/fp1100.cpp
@@ -212,21 +212,23 @@ READ8_MEMBER( fp1100_state::slot_id_r )
return m_slot[m_slot_num & 7].id;
}
-ADDRESS_MAP_START(fp1100_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x9000, 0xffff) AM_RAM AM_REGION("wram", 0x9000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fp1100_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
+void fp1100_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x8fff).bankr("bankr0").bankw("bankw0");
+ map(0x9000, 0xffff).ram().region("wram", 0x9000);
+}
+
+void fp1100_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x0000, 0xfeff) slot memory area
- AM_RANGE(0xff00, 0xff7f) AM_READWRITE(slot_id_r,slot_bank_w)
- AM_RANGE(0xff80, 0xffff) AM_READ(sub_to_main_r)
- AM_RANGE(0xff80, 0xff9f) AM_WRITE(irq_mask_w)
- AM_RANGE(0xffa0, 0xffbf) AM_WRITE(main_bank_w)
- AM_RANGE(0xffc0, 0xffff) AM_WRITE(main_to_sub_w)
-ADDRESS_MAP_END
+ map(0xff00, 0xff7f).rw(this, FUNC(fp1100_state::slot_id_r), FUNC(fp1100_state::slot_bank_w));
+ map(0xff80, 0xffff).r(this, FUNC(fp1100_state::sub_to_main_r));
+ map(0xff80, 0xff9f).w(this, FUNC(fp1100_state::irq_mask_w));
+ map(0xffa0, 0xffbf).w(this, FUNC(fp1100_state::main_bank_w));
+ map(0xffc0, 0xffff).w(this, FUNC(fp1100_state::main_to_sub_w));
+}
READ8_MEMBER( fp1100_state::main_to_sub_r )
{
@@ -275,17 +277,18 @@ WRITE8_MEMBER( fp1100_state::kbd_row_w )
m_beep->set_state(BIT(data, 4));
}
-ADDRESS_MAP_START(fp1100_state::sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("sub_ipl",0x0000)
- AM_RANGE(0x2000, 0xdfff) AM_RAM AM_SHARE("videoram") //vram B/R/G
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x3fe) AM_DEVREADWRITE("crtc", mc6845_device, status_r,address_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x3fe) AM_DEVREADWRITE("crtc", mc6845_device, register_r,register_w)
- AM_RANGE(0xe400, 0xe7ff) AM_READ_PORT("DSW") AM_WRITE(kbd_row_w)
- AM_RANGE(0xe800, 0xebff) AM_READWRITE(main_to_sub_r,sub_to_main_w)
+void fp1100_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("sub_ipl", 0x0000);
+ map(0x2000, 0xdfff).ram().share("videoram"); //vram B/R/G
+ map(0xe000, 0xe000).mirror(0x3fe).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).mirror(0x3fe).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xe400, 0xe7ff).portr("DSW").w(this, FUNC(fp1100_state::kbd_row_w));
+ map(0xe800, 0xebff).rw(this, FUNC(fp1100_state::main_to_sub_r), FUNC(fp1100_state::sub_to_main_w));
//AM_RANGE(0xec00, 0xefff) "Acknowledge of INT0" is coded in but isn't currently executed
- AM_RANGE(0xf000, 0xf3ff) AM_WRITE(colour_control_w)
- AM_RANGE(0xf400, 0xff7f) AM_ROM AM_REGION("sub_ipl",0x2400)
-ADDRESS_MAP_END
+ map(0xf000, 0xf3ff).w(this, FUNC(fp1100_state::colour_control_w));
+ map(0xf400, 0xff7f).rom().region("sub_ipl", 0x2400);
+}
/*
d0,1,2 - enable RGB guns (G,R,B)
diff --git a/src/mame/drivers/fp200.cpp b/src/mame/drivers/fp200.cpp
index 2d5ed4bf170..95bd0f0bce6 100644
--- a/src/mame/drivers/fp200.cpp
+++ b/src/mame/drivers/fp200.cpp
@@ -412,18 +412,20 @@ WRITE8_MEMBER(fp200_state::fp200_io_w)
}
}
-ADDRESS_MAP_START(fp200_state::fp200_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
+void fp200_state::fp200_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
// 0xa000, 0xffff exp RAM
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fp200_state::fp200_io)
- AM_RANGE(0x00, 0xff) AM_READWRITE(fp200_io_r,fp200_io_w)
-ADDRESS_MAP_END
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xffff).ram();
+}
+
+void fp200_state::fp200_io(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(fp200_state::fp200_io_r), FUNC(fp200_state::fp200_io_w));
+}
INPUT_CHANGED_MEMBER(fp200_state::keyb_irq)
{
diff --git a/src/mame/drivers/fp6000.cpp b/src/mame/drivers/fp6000.cpp
index 44da3a053ef..35d3ba0912a 100644
--- a/src/mame/drivers/fp6000.cpp
+++ b/src/mame/drivers/fp6000.cpp
@@ -176,14 +176,15 @@ WRITE8_MEMBER(fp6000_state::fp6000_6845_data_w)
m_crtc->register_w(space, offset, data);
}
-ADDRESS_MAP_START(fp6000_state::fp6000_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0xbffff) AM_RAM
- AM_RANGE(0xc0000,0xdffff) AM_RAM AM_SHARE("gvram")//gvram
- AM_RANGE(0xe0000,0xe0fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xe7000,0xe7fff) AM_READWRITE8(fp6000_pcg_r,fp6000_pcg_w,0xffff)
- AM_RANGE(0xf0000,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+void fp6000_state::fp6000_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xbffff).ram();
+ map(0xc0000, 0xdffff).ram().share("gvram");//gvram
+ map(0xe0000, 0xe0fff).ram().share("vram");
+ map(0xe7000, 0xe7fff).rw(this, FUNC(fp6000_state::fp6000_pcg_r), FUNC(fp6000_state::fp6000_pcg_w));
+ map(0xf0000, 0xfffff).rom().region("ipl", 0);
+}
/* Hack until I understand what UART is this one ... */
READ8_MEMBER(fp6000_state::fp6000_key_r)
@@ -226,17 +227,18 @@ READ16_MEMBER(fp6000_state::pit_r)
return machine().rand();
}
-ADDRESS_MAP_START(fp6000_state::fp6000_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x08, 0x09) AM_READ(ex_board_r) // BIOS of some sort ...
- AM_RANGE(0x0a, 0x0b) AM_READ_PORT("DSW") // installed RAM id?
- AM_RANGE(0x10, 0x11) AM_READNOP
- AM_RANGE(0x20, 0x23) AM_READWRITE8(fp6000_key_r,fp6000_key_w,0x00ff)
- AM_RANGE(0x38, 0x39) AM_READ(pit_r) // pit?
- AM_RANGE(0x70, 0x71) AM_WRITE8(fp6000_6845_address_w,0x00ff)
- AM_RANGE(0x72, 0x73) AM_WRITE8(fp6000_6845_data_w,0x00ff)
- AM_RANGE(0x74, 0x75) AM_READ(unk_r) //bit 6 busy flag
-ADDRESS_MAP_END
+void fp6000_state::fp6000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x08, 0x09).r(this, FUNC(fp6000_state::ex_board_r)); // BIOS of some sort ...
+ map(0x0a, 0x0b).portr("DSW"); // installed RAM id?
+ map(0x10, 0x11).nopr();
+ map(0x20, 0x23).rw(this, FUNC(fp6000_state::fp6000_key_r), FUNC(fp6000_state::fp6000_key_w)).umask16(0x00ff);
+ map(0x38, 0x39).r(this, FUNC(fp6000_state::pit_r)); // pit?
+ map(0x70, 0x70).w(this, FUNC(fp6000_state::fp6000_6845_address_w));
+ map(0x72, 0x72).w(this, FUNC(fp6000_state::fp6000_6845_data_w));
+ map(0x74, 0x75).r(this, FUNC(fp6000_state::unk_r)); //bit 6 busy flag
+}
/* Input ports */
static INPUT_PORTS_START( fp6000 )
diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp
index 68acb98e2d6..b8aea34a563 100644
--- a/src/mame/drivers/freekick.cpp
+++ b/src/mame/drivers/freekick.cpp
@@ -193,106 +193,115 @@ WRITE8_MEMBER(freekick_state::freekick_ff_w)
*
*************************************/
-ADDRESS_MAP_START(freekick_state::omega_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM // ram is 2x sony cxk5813d-55
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd900, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
- AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITENOP //bankswitch ?
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write)
- AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::pbillrd_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd900, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
- AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITE(pbillrd_bankswitch_w)
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write)
- AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::freekick_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram") // tilemap
- AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_SHARE("spriteram") // sprites
- AM_RANGE(0xec00, 0xec03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1")
- AM_RANGE(0xf802, 0xf802) AM_READNOP //MUST return bit 0 = 0, otherwise game resets
- AM_RANGE(0xf803, 0xf803) AM_READ(spinner_r)
- AM_RANGE(0xf800, 0xf807) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write)
- AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::gigas_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd900, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
- AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITENOP //bankswitch ?
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write)
- AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::omega_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(spinner_r, gigas_spinner_select_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::gigas_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(spinner_r, gigas_spinner_select_w)
- AM_RANGE(0x01, 0x01) AM_READNOP //unused dip 3
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::oigas_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(spinner_r, gigas_spinner_select_w)
- AM_RANGE(0x01, 0x01) AM_READNOP //unused dip 3
- AM_RANGE(0x02, 0x02) AM_READ(oigas_2_r)
- AM_RANGE(0x03, 0x03) AM_READ(oigas_3_r)
- AM_RANGE(0x05, 0x05) AM_WRITE(oigas_5_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(freekick_state::freekick_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xff, 0xff) AM_READWRITE(freekick_ff_r, freekick_ff_w)
-ADDRESS_MAP_END
+void freekick_state::omega_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram(); // ram is 2x sony cxk5813d-55
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram");
+ map(0xd800, 0xd8ff).ram().share("spriteram");
+ map(0xd900, 0xdfff).ram();
+ map(0xe000, 0xe000).portr("IN0");
+ map(0xe000, 0xe007).w("outlatch", FUNC(ls259_device::write_d0));
+ 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));
+}
+
+void freekick_state::pbillrd_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram");
+ map(0xd800, 0xd8ff).ram().share("spriteram");
+ map(0xd900, 0xdfff).ram();
+ map(0xe000, 0xe000).portr("IN0");
+ map(0xe000, 0xe007).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xe800, 0xe800).portr("IN1");
+ map(0xf000, 0xf000).portr("DSW1").w(this, 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));
+}
+
+void freekick_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+}
+
+void freekick_state::freekick_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom();
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram"); // tilemap
+ map(0xe800, 0xe8ff).ram().share("spriteram"); // sprites
+ map(0xec00, 0xec03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf000, 0xf003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf800, 0xf800).portr("IN0");
+ map(0xf801, 0xf801).portr("IN1");
+ map(0xf802, 0xf802).nopr(); //MUST return bit 0 = 0, otherwise game resets
+ map(0xf803, 0xf803).r(this, FUNC(freekick_state::spinner_r));
+ map(0xf800, 0xf807).w("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));
+}
+
+void freekick_state::gigas_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram");
+ map(0xd800, 0xd8ff).ram().share("spriteram");
+ map(0xd900, 0xdfff).ram();
+ map(0xe000, 0xe000).portr("IN0");
+ map(0xe000, 0xe007).w("outlatch", FUNC(ls259_device::write_d0));
+ 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));
+}
+
+void freekick_state::omega_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(freekick_state::spinner_r), FUNC(freekick_state::gigas_spinner_select_w));
+ map(0x01, 0x01).portr("DSW3");
+}
+
+void freekick_state::gigas_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(freekick_state::spinner_r), FUNC(freekick_state::gigas_spinner_select_w));
+ map(0x01, 0x01).nopr(); //unused dip 3
+}
+
+void freekick_state::oigas_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(freekick_state::spinner_r), FUNC(freekick_state::gigas_spinner_select_w));
+ map(0x01, 0x01).nopr(); //unused dip 3
+ map(0x02, 0x02).r(this, FUNC(freekick_state::oigas_2_r));
+ map(0x03, 0x03).r(this, FUNC(freekick_state::oigas_3_r));
+ map(0x05, 0x05).w(this, FUNC(freekick_state::oigas_5_w));
+}
+
+void freekick_state::freekick_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xff, 0xff).rw(this, FUNC(freekick_state::freekick_ff_r), FUNC(freekick_state::freekick_ff_w));
+}
/*************************************
diff --git a/src/mame/drivers/fresh.cpp b/src/mame/drivers/fresh.cpp
index 52626cb339a..7f54deced29 100644
--- a/src/mame/drivers/fresh.cpp
+++ b/src/mame/drivers/fresh.cpp
@@ -169,54 +169,55 @@ uint32_t fresh_state::screen_update_fresh(screen_device &screen, bitmap_ind16 &b
}
-ADDRESS_MAP_START(fresh_state::fresh_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void fresh_state::fresh_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM_WRITE(fresh_bg_2_videoram_w) AM_SHARE("bg_videoram_2")
- AM_RANGE(0xc10000, 0xc1ffff) AM_RAM_WRITE(fresh_attr_2_videoram_w) AM_SHARE("attr_videoram_2")
- AM_RANGE(0xc20000, 0xc2ffff) AM_RAM_WRITE(fresh_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xc30000, 0xc3ffff) AM_RAM_WRITE(fresh_attr_videoram_w) AM_SHARE("attr_videoram")
+ map(0xc00000, 0xc0ffff).ram().w(this, FUNC(fresh_state::fresh_bg_2_videoram_w)).share("bg_videoram_2");
+ map(0xc10000, 0xc1ffff).ram().w(this, FUNC(fresh_state::fresh_attr_2_videoram_w)).share("attr_videoram_2");
+ map(0xc20000, 0xc2ffff).ram().w(this, FUNC(fresh_state::fresh_bg_videoram_w)).share("bg_videoram");
+ map(0xc30000, 0xc3ffff).ram().w(this, FUNC(fresh_state::fresh_attr_videoram_w)).share("attr_videoram");
// AM_RANGE(0xc70000, 0xc70001) AM_RAM
// AM_RANGE(0xc70002, 0xc70003) AM_RAM
- AM_RANGE(0xc71000, 0xc71001) AM_WRITE(c71000_write)
+ map(0xc71000, 0xc71001).w(this, FUNC(fresh_state::c71000_write));
// AM_RANGE(0xc72000, 0xc72001) AM_RAM
// AM_RANGE(0xc72002, 0xc72003) AM_RAM
// AM_RANGE(0xc73000, 0xc73001) AM_RAM
// AM_RANGE(0xc73002, 0xc73003) AM_RAM
- AM_RANGE(0xc74000, 0xc74001) AM_WRITE(c74000_write)
- AM_RANGE(0xc75000, 0xc75001) AM_WRITE(c75000_write)
- AM_RANGE(0xc76000, 0xc76001) AM_WRITE(c76000_write)
+ map(0xc74000, 0xc74001).w(this, FUNC(fresh_state::c74000_write));
+ map(0xc75000, 0xc75001).w(this, FUNC(fresh_state::c75000_write));
+ map(0xc76000, 0xc76001).w(this, FUNC(fresh_state::c76000_write));
// AM_RANGE(0xc77000, 0xc77001) AM_RAM
// AM_RANGE(0xc77002, 0xc77003) AM_RAM
// written together
- AM_RANGE(0xc40000, 0xc417ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc50000, 0xc517ff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext")
+ map(0xc40000, 0xc417ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xc50000, 0xc517ff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
- AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE8("ymsnd", ym2413_device, register_port_w, 0x00ff)
- AM_RANGE(0xd10000, 0xd10001) AM_DEVWRITE8("ymsnd", ym2413_device, data_port_w, 0x00ff)
+ map(0xd00001, 0xd00001).w("ymsnd", FUNC(ym2413_device::register_port_w));
+ map(0xd10001, 0xd10001).w("ymsnd", FUNC(ym2413_device::data_port_w));
- AM_RANGE(0xd30000, 0xd30001) AM_WRITE(d30000_write)
- AM_RANGE(0xd40000, 0xd40001) AM_READ_PORT("IN0") //AM_WRITENOP // checks for 0x10
+ map(0xd30000, 0xd30001).w(this, FUNC(fresh_state::d30000_write));
+ map(0xd40000, 0xd40001).portr("IN0"); //AM_WRITENOP // checks for 0x10
// AM_RANGE(0xd40002, 0xd40003) AM_WRITENOP
- AM_RANGE(0xd70000, 0xd70001) AM_READ_PORT("IN1") // checks for 0x10, dead loop if fail
+ map(0xd70000, 0xd70001).portr("IN1"); // checks for 0x10, dead loop if fail
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") //AM_WRITENOP
- AM_RANGE(0xe20000, 0xe20001) AM_READ_PORT("DSW1") //AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("DSW2")
- AM_RANGE(0xe60000, 0xe60001) AM_READ_PORT("DSW3")
- AM_RANGE(0xe80000, 0xe80001) AM_READ_PORT("IN6")
- AM_RANGE(0xea0000, 0xea0001) AM_READ_PORT("IN7")
- AM_RANGE(0xec0000, 0xec0001) AM_READ_PORT("IN8")
- AM_RANGE(0xee0000, 0xee0001) AM_READ_PORT("IN9")
+ map(0xe00000, 0xe00001).portr("DSW0"); //AM_WRITENOP
+ map(0xe20000, 0xe20001).portr("DSW1"); //AM_WRITENOP
+ map(0xe40000, 0xe40001).portr("DSW2");
+ map(0xe60000, 0xe60001).portr("DSW3");
+ map(0xe80000, 0xe80001).portr("IN6");
+ map(0xea0000, 0xea0001).portr("IN7");
+ map(0xec0000, 0xec0001).portr("IN8");
+ map(0xee0000, 0xee0001).portr("IN9");
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM
+ map(0xf00000, 0xf0ffff).ram();
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( fresh )
PORT_START("IN0")
diff --git a/src/mame/drivers/fromanc2.cpp b/src/mame/drivers/fromanc2.cpp
index 846aae43839..dc88813d34f 100644
--- a/src/mame/drivers/fromanc2.cpp
+++ b/src/mame/drivers/fromanc2.cpp
@@ -159,130 +159,137 @@ WRITE8_MEMBER(fromanc2_state::subcpu_rombank_w)
*
*************************************/
-ADDRESS_MAP_START(fromanc2_state::fromanc2_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // MAIN ROM
+void fromanc2_state::fromanc2_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // MAIN ROM
+
+ map(0x802000, 0x802fff).nopr(); // ???
+ map(0x800000, 0x803fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_0_w)); // VRAM 0, 1 (1P)
+ map(0x880000, 0x883fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_1_w)); // VRAM 2, 3 (1P)
+ map(0x900000, 0x903fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_2_w)); // VRAM 0, 1 (2P)
+ map(0x980000, 0x983fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_3_w)); // VRAM 2, 3 (2P)
+
+ map(0xa00000, 0xa00fff).ram().w(m_lpalette, FUNC(palette_device::write16)).share("lpalette"); // PALETTE (1P)
+ map(0xa80000, 0xa80fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); // PALETTE (2P)
+
+ map(0xd00000, 0xd00023).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_0_w)); // SCROLL REG (1P/2P)
+ map(0xd00100, 0xd00123).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_2_w)); // SCROLL REG (1P/2P)
+ map(0xd00200, 0xd00223).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_1_w)); // SCROLL REG (1P/2P)
+ map(0xd00300, 0xd00323).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_3_w)); // SCROLL REG (1P/2P)
+
+ map(0xd00400, 0xd00413).nopw(); // ???
+ map(0xd00500, 0xd00513).nopw(); // ???
+
+ map(0xd01000, 0xd01001).w(this, FUNC(fromanc2_state::sndcmd_w)); // SOUND REQ (1P/2P)
+ map(0xd01100, 0xd01101).portr("SYSTEM");
+ map(0xd01200, 0xd01201).w(this, FUNC(fromanc2_state::subcpu_w)); // SUB CPU WRITE
+ map(0xd01300, 0xd01301).r(this, FUNC(fromanc2_state::subcpu_r)); // SUB CPU READ
+ map(0xd01400, 0xd01401).w(this, FUNC(fromanc2_state::fromanc2_gfxbank_0_w)); // GFXBANK (1P)
+ map(0xd01500, 0xd01501).w(this, FUNC(fromanc2_state::fromanc2_gfxbank_1_w)); // GFXBANK (2P)
+ map(0xd01600, 0xd01601).portw("EEPROMOUT"); // EEPROM DATA
+ map(0xd01800, 0xd01801).r(this, FUNC(fromanc2_state::keymatrix_r)); // INPUT KEY MATRIX
+ map(0xd01a00, 0xd01a01).w(this, FUNC(fromanc2_state::portselect_w)); // PORT SELECT (1P/2P)
+
+ map(0xd80000, 0xd8ffff).ram(); // WORK RAM
+}
+
+void fromanc2_state::fromancr_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // MAIN ROM
+
+ map(0x800000, 0x803fff).w(this, FUNC(fromanc2_state::fromancr_videoram_0_w)); // VRAM BG (1P/2P)
+ map(0x880000, 0x883fff).w(this, FUNC(fromanc2_state::fromancr_videoram_1_w)); // VRAM FG (1P/2P)
+ map(0x900000, 0x903fff).w(this, FUNC(fromanc2_state::fromancr_videoram_2_w)); // VRAM TEXT (1P/2P)
+ map(0x980000, 0x983fff).nopw(); // VRAM Unused ?
+
+ map(0xa00000, 0xa00fff).ram().w(m_lpalette, FUNC(palette_device::write16)).share("lpalette"); // PALETTE (1P)
+ map(0xa80000, 0xa80fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); // PALETTE (2P)
+
+ map(0xd00000, 0xd00023).w(this, FUNC(fromanc2_state::fromancr_gfxreg_1_w)); // SCROLL REG (1P/2P)
+ map(0xd00200, 0xd002ff).nopw(); // ?
+ map(0xd00400, 0xd00413).nopw(); // ???
+ map(0xd00500, 0xd00513).nopw(); // ???
+ map(0xd01000, 0xd01001).w(this, FUNC(fromanc2_state::sndcmd_w)); // SOUND REQ (1P/2P)
+ map(0xd00100, 0xd00123).w(this, FUNC(fromanc2_state::fromancr_gfxreg_0_w)); // SCROLL REG (1P/2P)
+ map(0xd01100, 0xd01101).portr("SYSTEM");
+ map(0xd01200, 0xd01201).w(this, FUNC(fromanc2_state::subcpu_w)); // SUB CPU WRITE
+ map(0xd01300, 0xd01301).r(this, FUNC(fromanc2_state::subcpu_r)); // SUB CPU READ
+ map(0xd01400, 0xd01401).nopw(); // COIN COUNTER ?
+ map(0xd01600, 0xd01601).w(this, FUNC(fromanc2_state::fromancr_gfxbank_eeprom_w)); // EEPROM DATA, GFXBANK (1P/2P)
+ map(0xd01800, 0xd01801).r(this, FUNC(fromanc2_state::keymatrix_r)); // INPUT KEY MATRIX
+ map(0xd01a00, 0xd01a01).w(this, FUNC(fromanc2_state::portselect_w)); // PORT SELECT (1P/2P)
+
+ map(0xd80000, 0xd8ffff).ram(); // WORK RAM
+}
+
+void fromanc2_state::fromanc4_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // MAIN ROM
+ map(0x400000, 0x7fffff).rom(); // DATA ROM
+
+ map(0x800000, 0x81ffff).ram(); // WORK RAM
+
+ map(0xd00000, 0xd00001).w(this, FUNC(fromanc2_state::portselect_w)); // PORT SELECT (1P/2P)
+
+ map(0xd10000, 0xd10001).nopw(); // ?
+ map(0xd30000, 0xd30001).nopw(); // ?
+ map(0xd50000, 0xd50001).portw("EEPROMOUT"); // EEPROM DATA
+
+ map(0xd70000, 0xd70001).w(this, FUNC(fromanc2_state::sndcmd_w)); // SOUND REQ (1P/2P)
+
+ map(0xd80000, 0xd8ffff).w(this, FUNC(fromanc2_state::fromanc4_videoram_0_w)); // VRAM FG (1P/2P)
+ map(0xd90000, 0xd9ffff).w(this, FUNC(fromanc2_state::fromanc4_videoram_1_w)); // VRAM BG (1P/2P)
+ map(0xda0000, 0xdaffff).w(this, FUNC(fromanc2_state::fromanc4_videoram_2_w)); // VRAM TEXT (1P/2P)
+
+ map(0xdb0000, 0xdb0fff).ram().w(m_lpalette, FUNC(palette_device::write16)).share("lpalette"); // PALETTE (1P)
+ map(0xdc0000, 0xdc0fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); // PALETTE (2P)
+
+ map(0xd10000, 0xd10001).r(this, FUNC(fromanc2_state::keymatrix_r)); // INPUT KEY MATRIX
+ map(0xd20000, 0xd20001).portr("SYSTEM");
+
+ map(0xe00000, 0xe0001d).w(this, FUNC(fromanc2_state::fromanc4_gfxreg_0_w)); // SCROLL, GFXBANK (1P/2P)
+ map(0xe10000, 0xe1001d).w(this, FUNC(fromanc2_state::fromanc4_gfxreg_1_w)); // SCROLL, GFXBANK (1P/2P)
+ map(0xe20000, 0xe2001d).w(this, FUNC(fromanc2_state::fromanc4_gfxreg_2_w)); // SCROLL, GFXBANK (1P/2P)
+
+ map(0xe30000, 0xe30013).nopw(); // ???
+ map(0xe40000, 0xe40013).nopw(); // ???
- AM_RANGE(0x802000, 0x802fff) AM_READNOP // ???
- AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromanc2_videoram_0_w) // VRAM 0, 1 (1P)
- AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromanc2_videoram_1_w) // VRAM 2, 3 (1P)
- AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromanc2_videoram_2_w) // VRAM 0, 1 (2P)
- AM_RANGE(0x980000, 0x983fff) AM_WRITE(fromanc2_videoram_3_w) // VRAM 2, 3 (2P)
-
- AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") // PALETTE (1P)
- AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") // PALETTE (2P)
-
- AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromanc2_gfxreg_0_w) // SCROLL REG (1P/2P)
- AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromanc2_gfxreg_2_w) // SCROLL REG (1P/2P)
- AM_RANGE(0xd00200, 0xd00223) AM_WRITE(fromanc2_gfxreg_1_w) // SCROLL REG (1P/2P)
- AM_RANGE(0xd00300, 0xd00323) AM_WRITE(fromanc2_gfxreg_3_w) // SCROLL REG (1P/2P)
-
- AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP // ???
- AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP // ???
-
- AM_RANGE(0xd01000, 0xd01001) AM_WRITE(sndcmd_w) // SOUND REQ (1P/2P)
- AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd01200, 0xd01201) AM_WRITE(subcpu_w) // SUB CPU WRITE
- AM_RANGE(0xd01300, 0xd01301) AM_READ(subcpu_r) // SUB CPU READ
- AM_RANGE(0xd01400, 0xd01401) AM_WRITE(fromanc2_gfxbank_0_w) // GFXBANK (1P)
- AM_RANGE(0xd01500, 0xd01501) AM_WRITE(fromanc2_gfxbank_1_w) // GFXBANK (2P)
- AM_RANGE(0xd01600, 0xd01601) AM_WRITE_PORT("EEPROMOUT") // EEPROM DATA
- AM_RANGE(0xd01800, 0xd01801) AM_READ(keymatrix_r) // INPUT KEY MATRIX
- AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(portselect_w) // PORT SELECT (1P/2P)
-
- AM_RANGE(0xd80000, 0xd8ffff) AM_RAM // WORK RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromanc2_state::fromancr_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // MAIN ROM
-
- AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromancr_videoram_0_w) // VRAM BG (1P/2P)
- AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromancr_videoram_1_w) // VRAM FG (1P/2P)
- AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromancr_videoram_2_w) // VRAM TEXT (1P/2P)
- AM_RANGE(0x980000, 0x983fff) AM_WRITENOP // VRAM Unused ?
-
- AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") // PALETTE (1P)
- AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") // PALETTE (2P)
-
- AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromancr_gfxreg_1_w) // SCROLL REG (1P/2P)
- AM_RANGE(0xd00200, 0xd002ff) AM_WRITENOP // ?
- AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP // ???
- AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP // ???
- AM_RANGE(0xd01000, 0xd01001) AM_WRITE(sndcmd_w) // SOUND REQ (1P/2P)
- AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromancr_gfxreg_0_w) // SCROLL REG (1P/2P)
- AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd01200, 0xd01201) AM_WRITE(subcpu_w) // SUB CPU WRITE
- AM_RANGE(0xd01300, 0xd01301) AM_READ(subcpu_r) // SUB CPU READ
- AM_RANGE(0xd01400, 0xd01401) AM_WRITENOP // COIN COUNTER ?
- AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_gfxbank_eeprom_w) // EEPROM DATA, GFXBANK (1P/2P)
- AM_RANGE(0xd01800, 0xd01801) AM_READ(keymatrix_r) // INPUT KEY MATRIX
- AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(portselect_w) // PORT SELECT (1P/2P)
-
- AM_RANGE(0xd80000, 0xd8ffff) AM_RAM // WORK RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromanc2_state::fromanc4_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // MAIN ROM
- AM_RANGE(0x400000, 0x7fffff) AM_ROM // DATA ROM
-
- AM_RANGE(0x800000, 0x81ffff) AM_RAM // WORK RAM
-
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(portselect_w) // PORT SELECT (1P/2P)
-
- AM_RANGE(0xd10000, 0xd10001) AM_WRITENOP // ?
- AM_RANGE(0xd30000, 0xd30001) AM_WRITENOP // ?
- AM_RANGE(0xd50000, 0xd50001) AM_WRITE_PORT("EEPROMOUT") // EEPROM DATA
-
- AM_RANGE(0xd70000, 0xd70001) AM_WRITE(sndcmd_w) // SOUND REQ (1P/2P)
-
- AM_RANGE(0xd80000, 0xd8ffff) AM_WRITE(fromanc4_videoram_0_w) // VRAM FG (1P/2P)
- AM_RANGE(0xd90000, 0xd9ffff) AM_WRITE(fromanc4_videoram_1_w) // VRAM BG (1P/2P)
- AM_RANGE(0xda0000, 0xdaffff) AM_WRITE(fromanc4_videoram_2_w) // VRAM TEXT (1P/2P)
-
- AM_RANGE(0xdb0000, 0xdb0fff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") // PALETTE (1P)
- AM_RANGE(0xdc0000, 0xdc0fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") // PALETTE (2P)
-
- AM_RANGE(0xd10000, 0xd10001) AM_READ(keymatrix_r) // INPUT KEY MATRIX
- AM_RANGE(0xd20000, 0xd20001) AM_READ_PORT("SYSTEM")
-
- AM_RANGE(0xe00000, 0xe0001d) AM_WRITE(fromanc4_gfxreg_0_w) // SCROLL, GFXBANK (1P/2P)
- AM_RANGE(0xe10000, 0xe1001d) AM_WRITE(fromanc4_gfxreg_1_w) // SCROLL, GFXBANK (1P/2P)
- AM_RANGE(0xe20000, 0xe2001d) AM_WRITE(fromanc4_gfxreg_2_w) // SCROLL, GFXBANK (1P/2P)
-
- AM_RANGE(0xe30000, 0xe30013) AM_WRITENOP // ???
- AM_RANGE(0xe40000, 0xe40013) AM_WRITENOP // ???
-
- AM_RANGE(0xe50000, 0xe5000f) AM_DEVREADWRITE8("uart", ns16550_device, ins8250_r, ins8250_w, 0x00ff).cswidth(16) // EXT-COMM PORT ?
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fromanc2_state::fromanc2_sub_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") // ROM(BANK)
- AM_RANGE(0x8000, 0xbfff) AM_RAM // RAM(WORK)
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank2") // RAM(BANK)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromanc2_state::fromanc2_sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(subcpu_rombank_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(maincpu_r_l, maincpu_w_l) // to/from MAIN CPU
- AM_RANGE(0x04, 0x04) AM_READWRITE(maincpu_r_h, maincpu_w_h) // to/from MAIN CPU
- AM_RANGE(0x06, 0x06) AM_WRITE(subcpu_nmi_clr)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fromanc2_state::fromanc2_sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromanc2_state::fromanc2_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP // snd cmd (1P) / ?
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // snd cmd (2P)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_READ(sndcpu_nmi_clr)
-ADDRESS_MAP_END
+ map(0xe50000, 0xe5000f).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask16(0x00ff).cswidth(16); // EXT-COMM PORT ?
+}
+
+
+void fromanc2_state::fromanc2_sub_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0x7fff).bankr("bank1"); // ROM(BANK)
+ map(0x8000, 0xbfff).ram(); // RAM(WORK)
+ map(0xc000, 0xffff).bankrw("bank2"); // RAM(BANK)
+}
+
+void fromanc2_state::fromanc2_sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(fromanc2_state::subcpu_rombank_w));
+ map(0x02, 0x02).rw(this, FUNC(fromanc2_state::maincpu_r_l), FUNC(fromanc2_state::maincpu_w_l)); // to/from MAIN CPU
+ map(0x04, 0x04).rw(this, FUNC(fromanc2_state::maincpu_r_h), FUNC(fromanc2_state::maincpu_w_h)); // to/from MAIN CPU
+ map(0x06, 0x06).w(this, FUNC(fromanc2_state::subcpu_nmi_clr));
+}
+
+
+void fromanc2_state::fromanc2_sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void fromanc2_state::fromanc2_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); // snd cmd (1P) / ?
+ map(0x04, 0x04).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); // snd cmd (2P)
+ map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x0c, 0x0c).r(this, FUNC(fromanc2_state::sndcpu_nmi_clr));
+}
/*************************************
diff --git a/src/mame/drivers/fromance.cpp b/src/mame/drivers/fromance.cpp
index 27132a50be6..1e0552d506a 100644
--- a/src/mame/drivers/fromance.cpp
+++ b/src/mame/drivers/fromance.cpp
@@ -225,28 +225,30 @@ WRITE8_MEMBER(fromance_state::fromance_coinctr_w)
*
*************************************/
-ADDRESS_MAP_START(fromance_state::nekkyoku_main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("SERVICE") AM_WRITE(fromance_portselect_w)
- AM_RANGE(0xf001, 0xf001) AM_READ(fromance_keymatrix_r) AM_WRITENOP
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("COIN") AM_WRITE(fromance_coinctr_w)
- AM_RANGE(0xf003, 0xf003) AM_READ(fromance_busycheck_main_r) AM_DEVWRITE("sublatch", generic_latch_8_device, write)
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2")
- AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromance_state::fromance_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0x9e89, 0x9e89) AM_READNOP // unknown (idolmj)
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("SERVICE") AM_WRITE(fromance_portselect_w)
- AM_RANGE(0xe001, 0xe001) AM_READ(fromance_keymatrix_r)
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("COIN") AM_WRITE(fromance_coinctr_w)
- AM_RANGE(0xe003, 0xe003) AM_READ(fromance_busycheck_main_r) AM_DEVWRITE("sublatch", generic_latch_8_device, write)
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW2")
- AM_RANGE(0xe005, 0xe005) AM_READ_PORT("DSW1")
-ADDRESS_MAP_END
+void fromance_state::nekkyoku_main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xf000, 0xf000).portr("SERVICE").w(this, FUNC(fromance_state::fromance_portselect_w));
+ map(0xf001, 0xf001).r(this, FUNC(fromance_state::fromance_keymatrix_r)).nopw();
+ map(0xf002, 0xf002).portr("COIN").w(this, FUNC(fromance_state::fromance_coinctr_w));
+ map(0xf003, 0xf003).r(this, FUNC(fromance_state::fromance_busycheck_main_r)).w(m_sublatch, FUNC(generic_latch_8_device::write));
+ map(0xf004, 0xf004).portr("DSW2");
+ map(0xf005, 0xf005).portr("DSW1");
+}
+
+void fromance_state::fromance_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0x9e89, 0x9e89).nopr(); // unknown (idolmj)
+ map(0xe000, 0xe000).portr("SERVICE").w(this, FUNC(fromance_state::fromance_portselect_w));
+ map(0xe001, 0xe001).r(this, FUNC(fromance_state::fromance_keymatrix_r));
+ map(0xe002, 0xe002).portr("COIN").w(this, FUNC(fromance_state::fromance_coinctr_w));
+ map(0xe003, 0xe003).r(this, FUNC(fromance_state::fromance_busycheck_main_r)).w(m_sublatch, FUNC(generic_latch_8_device::write));
+ map(0xe004, 0xe004).portr("DSW2");
+ map(0xe005, 0xe005).portr("DSW1");
+}
@@ -256,21 +258,23 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(fromance_state::nekkyoku_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xefff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(fromance_paletteram_r, fromance_paletteram_w)
-ADDRESS_MAP_END
+void fromance_state::nekkyoku_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xefff).rw(this, FUNC(fromance_state::fromance_videoram_r), FUNC(fromance_state::fromance_videoram_w));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xffff).rw(this, FUNC(fromance_state::fromance_paletteram_r), FUNC(fromance_state::fromance_paletteram_w));
+}
-ADDRESS_MAP_START(fromance_state::fromance_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(fromance_paletteram_r, fromance_paletteram_w)
- AM_RANGE(0xd000, 0xffff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w)
-ADDRESS_MAP_END
+void fromance_state::fromance_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).rw(this, FUNC(fromance_state::fromance_paletteram_r), FUNC(fromance_state::fromance_paletteram_w));
+ map(0xd000, 0xffff).rw(this, FUNC(fromance_state::fromance_videoram_r), FUNC(fromance_state::fromance_videoram_w));
+}
@@ -280,44 +284,47 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(fromance_state::nekkyoku_sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
- AM_RANGE(0x12, 0x12) AM_READNOP // unknown
- AM_RANGE(0xe0, 0xe0) AM_WRITE(fromance_rombank_w)
- AM_RANGE(0xe1, 0xe1) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w)
- AM_RANGE(0xe2, 0xe5) AM_WRITE(fromance_scroll_w)
- AM_RANGE(0xe6, 0xe6) AM_DEVREADWRITE("sublatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0xe7, 0xe7) AM_WRITE(fromance_adpcm_reset_w)
- AM_RANGE(0xe8, 0xe8) AM_WRITE(fromance_adpcm_w)
- AM_RANGE(0xe9, 0xea) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromance_state::idolmj_sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
- AM_RANGE(0x12, 0x12) AM_READNOP // unknown
- AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w)
- AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w)
- AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w)
- AM_RANGE(0x26, 0x26) AM_DEVREADWRITE("sublatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x27, 0x27) AM_WRITE(fromance_adpcm_reset_w)
- AM_RANGE(0x28, 0x28) AM_WRITE(fromance_adpcm_w)
- AM_RANGE(0x29, 0x2a) AM_DEVWRITE("aysnd", ym2149_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fromance_state::fromance_sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
- AM_RANGE(0x12, 0x12) AM_READNOP // unknown
- AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w)
- AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w)
- AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w)
- AM_RANGE(0x26, 0x26) AM_DEVREADWRITE("sublatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x27, 0x27) AM_WRITE(fromance_adpcm_reset_w)
- AM_RANGE(0x28, 0x28) AM_WRITE(fromance_adpcm_w)
- AM_RANGE(0x2a, 0x2b) AM_DEVWRITE("ymsnd", ym2413_device, write)
-ADDRESS_MAP_END
+void fromance_state::nekkyoku_sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write));
+ map(0x12, 0x12).nopr(); // unknown
+ map(0xe0, 0xe0).w(this, FUNC(fromance_state::fromance_rombank_w));
+ map(0xe1, 0xe1).r(this, FUNC(fromance_state::fromance_busycheck_sub_r)).w(this, FUNC(fromance_state::fromance_gfxreg_w));
+ map(0xe2, 0xe5).w(this, FUNC(fromance_state::fromance_scroll_w));
+ map(0xe6, 0xe6).rw(m_sublatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xe7, 0xe7).w(this, FUNC(fromance_state::fromance_adpcm_reset_w));
+ map(0xe8, 0xe8).w(this, FUNC(fromance_state::fromance_adpcm_w));
+ map(0xe9, 0xea).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
+
+void fromance_state::idolmj_sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write));
+ map(0x12, 0x12).nopr(); // unknown
+ map(0x20, 0x20).w(this, FUNC(fromance_state::fromance_rombank_w));
+ map(0x21, 0x21).r(this, FUNC(fromance_state::fromance_busycheck_sub_r)).w(this, FUNC(fromance_state::fromance_gfxreg_w));
+ map(0x22, 0x25).w(this, FUNC(fromance_state::fromance_scroll_w));
+ map(0x26, 0x26).rw(m_sublatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x27, 0x27).w(this, FUNC(fromance_state::fromance_adpcm_reset_w));
+ map(0x28, 0x28).w(this, FUNC(fromance_state::fromance_adpcm_w));
+ map(0x29, 0x2a).w("aysnd", FUNC(ym2149_device::data_address_w));
+}
+
+void fromance_state::fromance_sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write));
+ map(0x12, 0x12).nopr(); // unknown
+ map(0x20, 0x20).w(this, FUNC(fromance_state::fromance_rombank_w));
+ map(0x21, 0x21).r(this, FUNC(fromance_state::fromance_busycheck_sub_r)).w(this, FUNC(fromance_state::fromance_gfxreg_w));
+ map(0x22, 0x25).w(this, FUNC(fromance_state::fromance_scroll_w));
+ map(0x26, 0x26).rw(m_sublatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x27, 0x27).w(this, FUNC(fromance_state::fromance_adpcm_reset_w));
+ map(0x28, 0x28).w(this, FUNC(fromance_state::fromance_adpcm_w));
+ map(0x2a, 0x2b).w("ymsnd", FUNC(ym2413_device::write));
+}
/*************************************
diff --git a/src/mame/drivers/fruitpc.cpp b/src/mame/drivers/fruitpc.cpp
index c811e8f4d68..e1e1b22b099 100644
--- a/src/mame/drivers/fruitpc.cpp
+++ b/src/mame/drivers/fruitpc.cpp
@@ -65,25 +65,27 @@ READ8_MEMBER(fruitpc_state::fruit_inp_r)
return 0;
}
-ADDRESS_MAP_START(fruitpc_state::fruitpc_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) // VGA VRAM
- AM_RANGE(0x000c0000, 0x000dffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0x000e0000, 0x000fffff) AM_RAM AM_REGION("bios", 0)
- AM_RANGE(0x00100000, 0x008fffff) AM_RAM // 8MB RAM
- AM_RANGE(0x02000000, 0x28ffffff) AM_NOP
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fruitpc_state::fruitpc_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x0310, 0x0313) AM_READ8(fruit_inp_r, 0xffffffff)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
-ADDRESS_MAP_END
+void fruitpc_state::fruitpc_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); // VGA VRAM
+ map(0x000c0000, 0x000dffff).rom().region("bios", 0);
+ map(0x000e0000, 0x000fffff).ram().region("bios", 0);
+ map(0x00100000, 0x008fffff).ram(); // 8MB RAM
+ map(0x02000000, 0x28ffffff).noprw();
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void fruitpc_state::fruitpc_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x0310, 0x0313).r(this, FUNC(fruitpc_state::fruit_inp_r));
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+}
static INPUT_PORTS_START( fruitpc )
PORT_START("INP1")
diff --git a/src/mame/drivers/ft68m.cpp b/src/mame/drivers/ft68m.cpp
index 7d25d68ac40..21ba93db585 100644
--- a/src/mame/drivers/ft68m.cpp
+++ b/src/mame/drivers/ft68m.cpp
@@ -48,18 +48,19 @@ READ16_MEMBER( ft68m_state::switches_r )
}
-ADDRESS_MAP_START(ft68m_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x200000, 0x201fff) AM_ROM AM_REGION("roms", 0x0000)
- AM_RANGE(0x400000, 0x401fff) AM_ROM AM_REGION("roms", 0x2000)
- AM_RANGE(0x600000, 0x600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("mpsc", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00)
- AM_RANGE(0x800000, 0x800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("stc", am9513_device, read16, write16)
- AM_RANGE(0xa00000, 0xbfffff) AM_RAM //Page Map
- AM_RANGE(0xc00000, 0xdfffff) AM_RAM //Segment Map
- AM_RANGE(0xe00000, 0xffffff) AM_READ(switches_r) //Context Register
-ADDRESS_MAP_END
+void ft68m_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).ram().share("rambase");
+ map(0x200000, 0x201fff).rom().region("roms", 0x0000);
+ map(0x400000, 0x401fff).rom().region("roms", 0x2000);
+ map(0x600000, 0x600007).mirror(0x1ffff8).rw("mpsc", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0xff00);
+ map(0x800000, 0x800003).mirror(0x1ffffc).rw("stc", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
+ map(0xa00000, 0xbfffff).ram(); //Page Map
+ map(0xc00000, 0xdfffff).ram(); //Segment Map
+ map(0xe00000, 0xffffff).r(this, FUNC(ft68m_state::switches_r)); //Context Register
+}
/* Input ports */
diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp
index 0a2906ad092..40a9f166d05 100644
--- a/src/mame/drivers/funkball.cpp
+++ b/src/mame/drivers/funkball.cpp
@@ -326,52 +326,55 @@ READ8_MEMBER( funkball_state::in_r )
return m_inputs[offset]->read();
}
-ADDRESS_MAP_START(funkball_state::funkball_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000affff) AM_RAM
- AM_RANGE(0x000b0000, 0x000bffff) AM_DEVICE("flashbank", address_map_bank_device, amap32)
- AM_RANGE(0x000c0000, 0x000cffff) AM_RAM
- AM_RANGE(0x000d0000, 0x000dffff) AM_RAM
- AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_ext1")
- AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_ext2")
- AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_ext3")
- AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ext4")
- AM_RANGE(0x000f0000, 0x000f3fff) AM_ROMBANK("bios_bank1")
- AM_RANGE(0x000f4000, 0x000f7fff) AM_ROMBANK("bios_bank2")
- AM_RANGE(0x000f8000, 0x000fbfff) AM_ROMBANK("bios_bank3")
- AM_RANGE(0x000fc000, 0x000fffff) AM_ROMBANK("bios_bank4")
- AM_RANGE(0x000e0000, 0x000fffff) AM_WRITE8(bios_ram_w,0xffffffff)
- AM_RANGE(0x00100000, 0x07ffffff) AM_RAM
+void funkball_state::funkball_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000affff).ram();
+ map(0x000b0000, 0x000bffff).m(m_flashbank, FUNC(address_map_bank_device::amap32));
+ map(0x000c0000, 0x000cffff).ram();
+ map(0x000d0000, 0x000dffff).ram();
+ map(0x000e0000, 0x000e3fff).bankr("bios_ext1");
+ map(0x000e4000, 0x000e7fff).bankr("bios_ext2");
+ map(0x000e8000, 0x000ebfff).bankr("bios_ext3");
+ map(0x000ec000, 0x000effff).bankr("bios_ext4");
+ map(0x000f0000, 0x000f3fff).bankr("bios_bank1");
+ map(0x000f4000, 0x000f7fff).bankr("bios_bank2");
+ map(0x000f8000, 0x000fbfff).bankr("bios_bank3");
+ map(0x000fc000, 0x000fffff).bankr("bios_bank4");
+ map(0x000e0000, 0x000fffff).w(this, FUNC(funkball_state::bios_ram_w));
+ map(0x00100000, 0x07ffffff).ram();
// AM_RANGE(0x08000000, 0x0fffffff) AM_NOP
- AM_RANGE(0x40008000, 0x400080ff) AM_READWRITE(biu_ctrl_r, biu_ctrl_w)
- AM_RANGE(0x40010e00, 0x40010eff) AM_RAM AM_SHARE("unk_ram")
- AM_RANGE(0xff000000, 0xfffdffff) AM_DEVREADWRITE("voodoo_0", voodoo_device, voodoo_r, voodoo_w)
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funkball_state::flashbank_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE16("u29", intel_28f320j5_device, read, write, 0xffffffff ) // needed to boot
- AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE16("u30", intel_28f320j5_device, read, write, 0xffffffff ) // i assume it maps directly after
+ map(0x40008000, 0x400080ff).rw(this, FUNC(funkball_state::biu_ctrl_r), FUNC(funkball_state::biu_ctrl_w));
+ map(0x40010e00, 0x40010eff).ram().share("unk_ram");
+ map(0xff000000, 0xfffdffff).rw(m_voodoo, FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void funkball_state::flashbank_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rw("u29", FUNC(intel_28f320j5_device::read), FUNC(intel_28f320j5_device::write)); // needed to boot
+ map(0x00400000, 0x007fffff).rw("u30", FUNC(intel_28f320j5_device::read), FUNC(intel_28f320j5_device::write)); // i assume it maps directly after
// AM_RANGE(0x02000000, 0x023fffff) AM_DEVREADWRITE16("u3", intel_28f320j5_device, read, write, 0xffffffff ) // sound program, don't think it matters where we map it, might not even be visible in this space
/* it checks for 64MBit chips at 0x80000000 the way things are set up, they must return an intel Flash ID of 0x15 */
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(funkball_state::funkball_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x0020, 0x0023) AM_READWRITE8(io20_r, io20_w, 0xffff0000)
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
+void funkball_state::funkball_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x0022, 0x0023).rw(this, FUNC(funkball_state::io20_r), FUNC(funkball_state::io20_w));
+ map(0x00e8, 0x00ef).noprw();
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
- AM_RANGE(0x03f8, 0x03ff) AM_READWRITE8(serial_r,serial_w,0xffffffff)
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+ map(0x03f8, 0x03ff).rw(this, FUNC(funkball_state::serial_r), FUNC(funkball_state::serial_w));
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
- AM_RANGE(0x0360, 0x0363) AM_WRITE(flash_w)
+ map(0x0360, 0x0363).w(this, FUNC(funkball_state::flash_w));
// AM_RANGE(0x0320, 0x0323) AM_READ(test_r)
- AM_RANGE(0x0360, 0x036f) AM_READ8(in_r,0xffffffff) // inputs
-ADDRESS_MAP_END
+ map(0x0360, 0x036f).r(this, FUNC(funkball_state::in_r)); // inputs
+}
static INPUT_PORTS_START( funkball )
PORT_START("IN.0")
diff --git a/src/mame/drivers/funkybee.cpp b/src/mame/drivers/funkybee.cpp
index 773272bf7dd..ac8ed42e1a0 100644
--- a/src/mame/drivers/funkybee.cpp
+++ b/src/mame/drivers/funkybee.cpp
@@ -99,24 +99,26 @@ WRITE_LINE_MEMBER(funkybee_state::coin_counter_2_w)
machine().bookkeeping().coin_counter_w(1, state);
}
-ADDRESS_MAP_START(funkybee_state::funkybee_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(funkybee_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(funkybee_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(funkybee_scroll_w)
- AM_RANGE(0xe800, 0xe807) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xf000, 0xf000) AM_READNOP /* IRQ Ack */
- AM_RANGE(0xf800, 0xf800) AM_READ(funkybee_input_port_0_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funkybee_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+void funkybee_state::funkybee_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xbfff).ram().w(this, FUNC(funkybee_state::funkybee_videoram_w)).share("videoram");
+ map(0xc000, 0xdfff).ram().w(this, FUNC(funkybee_state::funkybee_colorram_w)).share("colorram");
+ map(0xe000, 0xe000).w(this, FUNC(funkybee_state::funkybee_scroll_w));
+ map(0xe800, 0xe807).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xf000, 0xf000).nopr(); /* IRQ Ack */
+ map(0xf800, 0xf800).r(this, FUNC(funkybee_state::funkybee_input_port_0_r)).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0xf801, 0xf801).portr("IN1");
+ map(0xf802, 0xf802).portr("IN2");
+}
+
+void funkybee_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r));
+}
static INPUT_PORTS_START( funkybee )
diff --git a/src/mame/drivers/funkyjet.cpp b/src/mame/drivers/funkyjet.cpp
index 5f2deb1cdf1..e29ccfe8082 100644
--- a/src/mame/drivers/funkyjet.cpp
+++ b/src/mame/drivers/funkyjet.cpp
@@ -93,7 +93,6 @@ Notes:
#include "includes/funkyjet.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "machine/decocrpt.h"
#include "machine/gen_latch.h"
#include "sound/ym2151.h"
@@ -131,35 +130,37 @@ WRITE16_MEMBER( funkyjet_state::funkyjet_protection_region_0_146_w )
}
-ADDRESS_MAP_START(funkyjet_state::funkyjet_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x143fff) AM_RAM
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE(funkyjet_protection_region_0_146_r,funkyjet_protection_region_0_146_w) AM_SHARE("prot16ram") /* Protection device */ // unlikely to be cs0 region
- AM_RANGE(0x184000, 0x184001) AM_WRITENOP
- AM_RANGE(0x188000, 0x188001) AM_WRITENOP
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x340000, 0x340bff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x342000, 0x342bff) AM_RAM AM_SHARE("pf2_rowscroll")
-ADDRESS_MAP_END
+void funkyjet_state::funkyjet_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x120000, 0x1207ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x143fff).ram();
+ map(0x160000, 0x1607ff).ram().share("spriteram");
+ map(0x180000, 0x183fff).rw(this, FUNC(funkyjet_state::funkyjet_protection_region_0_146_r), FUNC(funkyjet_state::funkyjet_protection_region_0_146_w)).share("prot16ram"); /* Protection device */ // unlikely to be cs0 region
+ map(0x184000, 0x184001).nopw();
+ map(0x188000, 0x188001).nopw();
+ map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x320000, 0x321fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x322000, 0x323fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x340000, 0x340bff).ram().share("pf1_rowscroll");
+ map(0x342000, 0x342bff).ram().share("pf2_rowscroll");
+}
/******************************************************************************/
/* Physical memory map (21 bits) */
-ADDRESS_MAP_START(funkyjet_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
- AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco146_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void funkyjet_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).noprw(); /* YM2203 - this board doesn't have one */
+ map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).noprw(); /* This board only has 1 oki chip */
+ map(0x140000, 0x140000).r(m_deco146, FUNC(deco146_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp
index 036281c9e38..5ab5742f15a 100644
--- a/src/mame/drivers/funtech.cpp
+++ b/src/mame/drivers/funtech.cpp
@@ -242,28 +242,29 @@ INTERRUPT_GEN_MEMBER(fun_tech_corp_state::funtech_vblank_interrupt)
-ADDRESS_MAP_START(fun_tech_corp_state::funtech_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
+void fun_tech_corp_state::funtech_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
- AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
+ map(0xc000, 0xc1ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xc800, 0xc9ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
- AM_RANGE(0xd000, 0xd7ff) AM_ROM // maybe
+ map(0xd000, 0xd7ff).rom(); // maybe
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("nvram")
+ map(0xd800, 0xdfff).ram().share("nvram");
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(reel1_ram_w) AM_SHARE("reel1ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(reel2_ram_w) AM_SHARE("reel2ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(reel3_ram_w) AM_SHARE("reel3ram")
- AM_RANGE(0xf600, 0xf7ff) AM_RAM
+ map(0xe000, 0xefff).ram().w(this, FUNC(fun_tech_corp_state::fgram_w)).share("fgram");
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(fun_tech_corp_state::reel1_ram_w)).share("reel1ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(fun_tech_corp_state::reel2_ram_w)).share("reel2ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(fun_tech_corp_state::reel3_ram_w)).share("reel3ram");
+ map(0xf600, 0xf7ff).ram();
- AM_RANGE(0xf840, 0xf87f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf880, 0xf8bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xf900, 0xf93f) AM_RAM AM_SHARE("reel3_scroll")
+ map(0xf840, 0xf87f).ram().share("reel1_scroll");
+ map(0xf880, 0xf8bf).ram().share("reel2_scroll");
+ map(0xf900, 0xf93f).ram().share("reel3_scroll");
- AM_RANGE(0xf9c0, 0xf9ff) AM_RAM AM_SHARE("reel1_alt_scroll") // or a mirror, gets used in 'full screen' mode.
-ADDRESS_MAP_END
+ map(0xf9c0, 0xf9ff).ram().share("reel1_alt_scroll"); // or a mirror, gets used in 'full screen' mode.
+}
WRITE8_MEMBER(fun_tech_corp_state::funtech_lamps_w)
@@ -318,24 +319,25 @@ WRITE8_MEMBER(fun_tech_corp_state::funtech_vreg_w)
-ADDRESS_MAP_START(fun_tech_corp_state::funtech_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void fun_tech_corp_state::funtech_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// lamps?
- AM_RANGE(0x00, 0x00) AM_WRITE(funtech_lamps_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(funtech_coins_w)
+ map(0x00, 0x00).w(this, FUNC(fun_tech_corp_state::funtech_lamps_w));
+ map(0x01, 0x01).w(this, FUNC(fun_tech_corp_state::funtech_coins_w));
- AM_RANGE(0x03, 0x03) AM_WRITE(funtech_vreg_w)
+ map(0x03, 0x03).w(this, FUNC(fun_tech_corp_state::funtech_vreg_w));
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN1")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW1")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW2")
+ map(0x04, 0x04).portr("IN0");
+ map(0x05, 0x05).portr("IN1");
+ map(0x06, 0x06).portr("DSW1");
+ map(0x07, 0x07).portr("DSW2");
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN4")
+ map(0x10, 0x10).portr("IN4");
- AM_RANGE(0x11, 0x11) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+ map(0x11, 0x11).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x12, 0x12).w("aysnd", FUNC(ay8910_device::address_w));
+}
static INPUT_PORTS_START( funtech )
PORT_START("IN0")
diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp
index b41ac5fc564..4b0dce4a367 100644
--- a/src/mame/drivers/funworld.cpp
+++ b/src/mame/drivers/funworld.cpp
@@ -1066,20 +1066,21 @@ WRITE_LINE_MEMBER(funworld_state::pia1_ca2_w)
* Memory map information *
*************************/
-ADDRESS_MAP_START(funworld_state::funworld_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4000, 0x4000) AM_READNOP
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void funworld_state::funworld_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x3000, 0x3fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x4000, 0x4000).nopr();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xffff).rom();
+}
static uint8_t funquiz_question_bank = 0x80;
@@ -1100,55 +1101,58 @@ WRITE8_MEMBER(funworld_state::question_bank_w)
funquiz_question_bank = data;
}
-ADDRESS_MAP_START(funworld_state::funquiz_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-
- AM_RANGE(0x1800, 0x1800) AM_WRITE(question_bank_w)
-
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4000, 0x7fff) AM_READ(questions_r)
-
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funworld_state::magicrd2_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2c00, 0x2cff) AM_RAM /* range for protection */
- AM_RANGE(0x3600, 0x36ff) AM_RAM /* some games use $3603-05 range for protection */
- AM_RANGE(0x3c00, 0x3cff) AM_RAM /* range for protection */
- AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funworld_state::cuoreuno_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads */
- AM_RANGE(0x3e00, 0x3fff) AM_RAM /* some games use $3e03-05 range for protection */
- AM_RANGE(0x4000, 0x5fff) AM_ROM /* used by rcdino4 (dino4 hw ) */
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void funworld_state::funquiz_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+
+ map(0x1800, 0x1800).w(this, FUNC(funworld_state::question_bank_w));
+
+ map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x3000, 0x3fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x4000, 0x7fff).r(this, FUNC(funworld_state::questions_r));
+
+ map(0xc000, 0xffff).rom();
+}
+
+void funworld_state::magicrd2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2c00, 0x2cff).ram(); /* range for protection */
+ map(0x3600, 0x36ff).ram(); /* some games use $3603-05 range for protection */
+ map(0x3c00, 0x3cff).ram(); /* range for protection */
+ map(0x4000, 0x4fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x5000, 0x5fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x6000, 0xffff).rom();
+}
+
+void funworld_state::cuoreuno_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2000, 0x2000).nopr(); /* some unknown reads */
+ map(0x3e00, 0x3fff).ram(); /* some games use $3e03-05 range for protection */
+ map(0x4000, 0x5fff).rom(); /* used by rcdino4 (dino4 hw ) */
+ map(0x6000, 0x6fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
READ8_MEMBER(funworld_state::chinatow_r_32f0)
@@ -1162,51 +1166,54 @@ READ8_MEMBER(funworld_state::chinatow_r_32f0)
return 0xff;
}
-ADDRESS_MAP_START(funworld_state::chinatow_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads */
- AM_RANGE(0x32f0, 0x32ff) AM_READ(chinatow_r_32f0)
- AM_RANGE(0x4000, 0x5fff) AM_ROM /* used by rcdino4 (dino4 hw ) */
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funworld_state::lunapark_map) // mirrored video RAM 4000/5000 to 6000/7000
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x2000)
- AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") AM_MIRROR(0x2000)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funworld_state::saloon_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0")
- AM_RANGE(0x0808, 0x0808) AM_READ_PORT("IN3") // maybe
- AM_RANGE(0x0802, 0x0802) AM_READ_PORT("IN4") // maybe
- AM_RANGE(0x0a01, 0x0a01) AM_READ_PORT("IN1")
- AM_RANGE(0x081c, 0x081c) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x081d, 0x081d) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN2")
- AM_RANGE(0x1800, 0x1800) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
+void funworld_state::chinatow_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2000, 0x2000).nopr(); /* some unknown reads */
+ map(0x32f0, 0x32ff).r(this, FUNC(funworld_state::chinatow_r_32f0));
+ map(0x4000, 0x5fff).rom(); /* used by rcdino4 (dino4 hw ) */
+ map(0x6000, 0x6fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
+
+void funworld_state::lunapark_map(address_map &map)
+{ // mirrored video RAM 4000/5000 to 6000/7000
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x4000, 0x4fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram").mirror(0x2000);
+ map(0x5000, 0x5fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram").mirror(0x2000);
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void funworld_state::saloon_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0800).portr("IN0");
+ map(0x0808, 0x0808).portr("IN3"); // maybe
+ map(0x0802, 0x0802).portr("IN4"); // maybe
+ map(0x0a01, 0x0a01).portr("IN1");
+ map(0x081c, 0x081c).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x081d, 0x081d).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x1000, 0x1000).portr("IN2");
+ map(0x1800, 0x1800).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x1800, 0x1801).w("ay8910", FUNC(ay8910_device::address_data_w));
// AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads... maybe a DSW */
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x6000, 0x6fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
/*
Unknown R/W
@@ -1221,47 +1228,50 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(funworld_state::witchryl_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funworld_state::intergames_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) // WRONG. just a placeholder...
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) // WRONG. just a placeholder...
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x3001, 0x3001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia0", pia6821_device, read, write) // the bookkeeping mode requests a byte from $3400 to advance pages...
- AM_RANGE(0x3800, 0x3803) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // WRONG. just a placeholder...
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funworld_state::fw_a7_11_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4000, 0x4000) AM_READNOP
- AM_RANGE(0x8000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void funworld_state::witchryl_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x4000, 0x4fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x5000, 0x5fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x6000, 0x6000).portr("DSW2");
+ map(0x8000, 0xffff).rom();
+}
+
+void funworld_state::intergames_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); // WRONG. just a placeholder...
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); // WRONG. just a placeholder...
+ map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x3001, 0x3001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x3400, 0x3403).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // the bookkeeping mode requests a byte from $3400 to advance pages...
+ map(0x3800, 0x3803).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // WRONG. just a placeholder...
+ map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
+
+void funworld_state::fw_a7_11_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
+ map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram");
+ map(0x3000, 0x3fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram");
+ map(0x4000, 0x4000).nopr();
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xffff).rom();
+}
/*************************
diff --git a/src/mame/drivers/funybubl.cpp b/src/mame/drivers/funybubl.cpp
index e2f2e99bf98..3b004a800ff 100644
--- a/src/mame/drivers/funybubl.cpp
+++ b/src/mame/drivers/funybubl.cpp
@@ -81,34 +81,37 @@ WRITE8_MEMBER(funybubl_state::funybubl_oki_bank_sw)
}
-ADDRESS_MAP_START(funybubl_state::funybubl_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") // banked port 1?
- AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(funybubl_paldatawrite) AM_SHARE("paletteram") // palette
- AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bank1") // banked port 0?
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(funybubl_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(funybubl_vidram_bank_w) // vidram bank
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(funybubl_cpurombank_w) // rom bank?
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(funybubl_soundcommand_w)
- AM_RANGE(0x06, 0x06) AM_READNOP /* Nothing is done with the data read */
- AM_RANGE(0x06, 0x06) AM_WRITENOP /* Written directly after IO port 0 */
- AM_RANGE(0x07, 0x07) AM_WRITENOP /* Reset something on startup - Sound CPU ?? */
-ADDRESS_MAP_END
+void funybubl_state::funybubl_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank2"); // banked port 1?
+ map(0xc400, 0xcfff).ram().w(this, FUNC(funybubl_state::funybubl_paldatawrite)).share("paletteram"); // palette
+ map(0xd000, 0xdfff).bankrw("bank1"); // banked port 0?
+ map(0xe000, 0xffff).ram();
+}
+
+void funybubl_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(this, FUNC(funybubl_state::funybubl_vidram_bank_w)); // vidram bank
+ map(0x01, 0x01).portr("P1").w(this, FUNC(funybubl_state::funybubl_cpurombank_w)); // rom bank?
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW").w(this, FUNC(funybubl_state::funybubl_soundcommand_w));
+ map(0x06, 0x06).nopr(); /* Nothing is done with the data read */
+ map(0x06, 0x06).nopw(); /* Written directly after IO port 0 */
+ map(0x07, 0x07).nopw(); /* Reset something on startup - Sound CPU ?? */
+}
/* Sound CPU */
-ADDRESS_MAP_START(funybubl_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(funybubl_oki_bank_sw)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void funybubl_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(funybubl_state::funybubl_oki_bank_sw));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/fuukifg2.cpp b/src/mame/drivers/fuukifg2.cpp
index 29c9d3c4203..e87616cf371 100644
--- a/src/mame/drivers/fuukifg2.cpp
+++ b/src/mame/drivers/fuukifg2.cpp
@@ -83,23 +83,24 @@ WRITE8_MEMBER( fuuki16_state::sound_command_w )
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50)); // Fixes glitching in rasters
}
-ADDRESS_MAP_START(fuuki16_state::fuuki16_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram.0") // Layers
- AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram.1") //
- AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram.2") //
- AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(vram_3_w) AM_SHARE("vram.3") //
- AM_RANGE(0x600000, 0x601fff) AM_MIRROR(0x008000) AM_DEVREADWRITE("fuukivid", fuukivid_device, fuuki_sprram_r, fuuki_sprram_w) AM_SHARE("spriteram") // Sprites, mirrored?
- AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x810000, 0x810001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x880000, 0x880001) AM_READ_PORT("DSW")
- AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE8(sound_command_w, 0x00ff) // To Sound CPU
- AM_RANGE(0x8c0000, 0x8c001f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0x8d0000, 0x8d0003) AM_RAM AM_SHARE("unknown") //
- AM_RANGE(0x8e0000, 0x8e0001) AM_RAM AM_SHARE("priority") //
-ADDRESS_MAP_END
+void fuuki16_state::fuuki16_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram(); // RAM
+ map(0x500000, 0x501fff).ram().w(this, FUNC(fuuki16_state::vram_0_w)).share("vram.0"); // Layers
+ map(0x502000, 0x503fff).ram().w(this, FUNC(fuuki16_state::vram_1_w)).share("vram.1"); //
+ map(0x504000, 0x505fff).ram().w(this, FUNC(fuuki16_state::vram_2_w)).share("vram.2"); //
+ map(0x506000, 0x507fff).ram().w(this, FUNC(fuuki16_state::vram_3_w)).share("vram.3"); //
+ map(0x600000, 0x601fff).mirror(0x008000).rw(m_fuukivid, FUNC(fuukivid_device::fuuki_sprram_r), FUNC(fuukivid_device::fuuki_sprram_w)).share("spriteram"); // Sprites, mirrored?
+ map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x800000, 0x800001).portr("SYSTEM");
+ map(0x810000, 0x810001).portr("P1_P2");
+ map(0x880000, 0x880001).portr("DSW");
+ map(0x8a0001, 0x8a0001).w(this, FUNC(fuuki16_state::sound_command_w)); // To Sound CPU
+ map(0x8c0000, 0x8c001f).ram().w(this, FUNC(fuuki16_state::vregs_w)).share("vregs"); // Video Registers
+ map(0x8d0000, 0x8d0003).ram().share("unknown"); //
+ map(0x8e0000, 0x8e0001).ram().share("priority"); //
+}
/***************************************************************************
@@ -128,23 +129,25 @@ WRITE8_MEMBER(fuuki16_state::oki_banking_w)
m_oki->set_rom_bank((data & 6) >> 1);
}
-ADDRESS_MAP_START(fuuki16_state::fuuki16_sound_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x7fff) AM_RAM // RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // Banked ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fuuki16_state::fuuki16_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sound_rombank_w) // ROM Bank
- AM_RANGE(0x11, 0x11) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP // From Main CPU / ? To Main CPU ?
- AM_RANGE(0x20, 0x20) AM_WRITE(oki_banking_w) // Oki Banking
- AM_RANGE(0x30, 0x30) AM_WRITENOP // ? In the NMI routine
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym2", ym3812_device, read, write)
- AM_RANGE(0x60, 0x60) AM_DEVREAD("oki", okim6295_device, read) // M6295
- AM_RANGE(0x61, 0x61) AM_DEVWRITE("oki", okim6295_device, write) // M6295
-ADDRESS_MAP_END
+void fuuki16_state::fuuki16_sound_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x7fff).ram(); // RAM
+ map(0x8000, 0xffff).bankr("bank1"); // Banked ROM
+}
+
+void fuuki16_state::fuuki16_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(fuuki16_state::sound_rombank_w)); // ROM Bank
+ map(0x11, 0x11).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); // From Main CPU / ? To Main CPU ?
+ map(0x20, 0x20).w(this, FUNC(fuuki16_state::oki_banking_w)); // Oki Banking
+ map(0x30, 0x30).nopw(); // ? In the NMI routine
+ map(0x40, 0x41).w("ym1", FUNC(ym2203_device::write));
+ map(0x50, 0x51).rw("ym2", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x60, 0x60).r(m_oki, FUNC(okim6295_device::read)); // M6295
+ map(0x61, 0x61).w(m_oki, FUNC(okim6295_device::write)); // M6295
+}
/***************************************************************************
diff --git a/src/mame/drivers/fuukifg3.cpp b/src/mame/drivers/fuukifg3.cpp
index aae67918876..32a45ac4995 100644
--- a/src/mame/drivers/fuukifg3.cpp
+++ b/src/mame/drivers/fuukifg3.cpp
@@ -206,30 +206,31 @@ WRITE32_MEMBER(fuuki32_state::vregs_w)
}
}
-ADDRESS_MAP_START(fuuki32_state::fuuki32_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM // Work RAM
- AM_RANGE(0x410000, 0x41ffff) AM_RAM // Work RAM (used by asurabus)
-
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram.0") // Tilemap 1
- AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram.1") // Tilemap 2
- AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram.2") // Tilemap bg
- AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(vram_3_w) AM_SHARE("vram.3") // Tilemap bg2
- AM_RANGE(0x508000, 0x517fff) AM_RAM // More tilemap, or linescroll? Seems to be empty all of the time
- AM_RANGE(0x600000, 0x601fff) AM_RAM AM_DEVREADWRITE16("fuukivid", fuukivid_device, fuuki_sprram_r, fuuki_sprram_w, 0xffffffff) // Sprites
- AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette
-
- AM_RANGE(0x800000, 0x800003) AM_READ_PORT("800000") AM_WRITENOP // Coin
- AM_RANGE(0x810000, 0x810003) AM_READ_PORT("810000") AM_WRITENOP // Player Inputs
- AM_RANGE(0x880000, 0x880003) AM_READ_PORT("880000") // Service + DIPS
- AM_RANGE(0x890000, 0x890003) AM_READ_PORT("890000") // More DIPS
-
- AM_RANGE(0x8c0000, 0x8c001f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0x8d0000, 0x8d0003) AM_RAM // Flipscreen Related
- AM_RANGE(0x8e0000, 0x8e0003) AM_RAM AM_SHARE("priority") // Controls layer order
- AM_RANGE(0x903fe0, 0x903fff) AM_READWRITE(snd_020_r, snd_020_w) // Shared with Z80
- AM_RANGE(0xa00000, 0xa00003) AM_WRITEONLY AM_SHARE("tilebank") // Tilebank
-ADDRESS_MAP_END
+void fuuki32_state::fuuki32_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram(); // Work RAM
+ map(0x410000, 0x41ffff).ram(); // Work RAM (used by asurabus)
+
+ map(0x500000, 0x501fff).ram().w(this, FUNC(fuuki32_state::vram_0_w)).share("vram.0"); // Tilemap 1
+ map(0x502000, 0x503fff).ram().w(this, FUNC(fuuki32_state::vram_1_w)).share("vram.1"); // Tilemap 2
+ map(0x504000, 0x505fff).ram().w(this, FUNC(fuuki32_state::vram_2_w)).share("vram.2"); // Tilemap bg
+ map(0x506000, 0x507fff).ram().w(this, FUNC(fuuki32_state::vram_3_w)).share("vram.3"); // Tilemap bg2
+ map(0x508000, 0x517fff).ram(); // More tilemap, or linescroll? Seems to be empty all of the time
+ map(0x600000, 0x601fff).ram().rw(m_fuukivid, FUNC(fuukivid_device::fuuki_sprram_r), FUNC(fuukivid_device::fuuki_sprram_w)); // Sprites
+ map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
+
+ map(0x800000, 0x800003).portr("800000").nopw(); // Coin
+ map(0x810000, 0x810003).portr("810000").nopw(); // Player Inputs
+ map(0x880000, 0x880003).portr("880000"); // Service + DIPS
+ map(0x890000, 0x890003).portr("890000"); // More DIPS
+
+ map(0x8c0000, 0x8c001f).ram().w(this, FUNC(fuuki32_state::vregs_w)).share("vregs"); // Video Registers
+ map(0x8d0000, 0x8d0003).ram(); // Flipscreen Related
+ map(0x8e0000, 0x8e0003).ram().share("priority"); // Controls layer order
+ map(0x903fe0, 0x903fff).rw(this, FUNC(fuuki32_state::snd_020_r), FUNC(fuuki32_state::snd_020_w)); // Shared with Z80
+ map(0xa00000, 0xa00003).writeonly().share("tilebank"); // Tilebank
+}
/***************************************************************************
@@ -259,19 +260,21 @@ WRITE8_MEMBER(fuuki32_state::snd_ymf278b_w)
machine().device<ymf278b_device>("ymf1")->write(space, offset, data);
}
-ADDRESS_MAP_START(fuuki32_state::fuuki32_sound_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
- AM_RANGE(0x7ff0, 0x7fff) AM_READWRITE(snd_z80_r, snd_z80_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fuuki32_state::fuuki32_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sound_bw_w)
- AM_RANGE(0x30, 0x30) AM_WRITENOP // leftover/unused nmi handler related
- AM_RANGE(0x40, 0x45) AM_DEVREAD("ymf1", ymf278b_device, read) AM_WRITE(snd_ymf278b_w)
-ADDRESS_MAP_END
+void fuuki32_state::fuuki32_sound_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom(); // ROM
+ map(0x6000, 0x6fff).ram(); // RAM
+ map(0x7ff0, 0x7fff).rw(this, FUNC(fuuki32_state::snd_z80_r), FUNC(fuuki32_state::snd_z80_w));
+ map(0x8000, 0xffff).bankr("bank1"); // ROM
+}
+
+void fuuki32_state::fuuki32_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(fuuki32_state::sound_bw_w));
+ map(0x30, 0x30).nopw(); // leftover/unused nmi handler related
+ map(0x40, 0x45).r("ymf1", FUNC(ymf278b_device::read)).w(this, FUNC(fuuki32_state::snd_ymf278b_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp
index 0611d59d17d..62b68fd7166 100644
--- a/src/mame/drivers/g627.cpp
+++ b/src/mame/drivers/g627.cpp
@@ -81,19 +81,21 @@ private:
};
-ADDRESS_MAP_START(g627_state::mem_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xc000, 0xc0ff) AM_DEVREADWRITE("i8156", i8155_device, memory_r, memory_w)
- AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("nvram") // battery backed
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(g627_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x02) AM_WRITE(disp_w)
- AM_RANGE(0x03, 0x07) AM_WRITE(lamp_w)
- AM_RANGE(0x10, 0x17) AM_DEVWRITE("astrocade", astrocade_device, astrocade_sound_w)
- AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("i8156", i8155_device, io_r, io_w)
-ADDRESS_MAP_END
+void g627_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0xc000, 0xc0ff).rw("i8156", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0xe000, 0xe0ff).ram().share("nvram"); // battery backed
+}
+
+void g627_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x02).w(this, FUNC(g627_state::disp_w));
+ map(0x03, 0x07).w(this, FUNC(g627_state::lamp_w));
+ map(0x10, 0x17).w("astrocade", FUNC(astrocade_device::astrocade_sound_w));
+ map(0x20, 0x27).rw("i8156", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+}
static INPUT_PORTS_START( g627 )
PORT_START("SWITCH.0")
diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp
index 4b189ed5b16..2f9c3a6509f 100644
--- a/src/mame/drivers/gaelco.cpp
+++ b/src/mame/drivers/gaelco.cpp
@@ -106,91 +106,106 @@ WRITE16_MEMBER(gaelco_state::thoop_encrypted_w)
*
*************************************/
-ADDRESS_MAP_START(gaelco_state::bigkarnk_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x102000, 0x103fff) AM_RAM /* Screen RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
+void gaelco_state::bigkarnk_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); /* ROM */
+ map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::gaelco_vram_w)).share("videoram"); /* Video RAM */
+ map(0x102000, 0x103fff).ram(); /* Screen RAM */
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_DEVWRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SERVICE")
- ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x70000e, 0x70000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) /* Triggers a FIRQ on the sound CPU */
- AM_RANGE(0xff8000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaelco_state::bigkarnk_snd_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */
- AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* OKI6295 */
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW1");
+ map(0x700002, 0x700003).portr("DSW2");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x700008, 0x700009).portr("SERVICE");
+ map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x70000f, 0x70000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* Triggers a FIRQ on the sound CPU */
+ map(0xff8000, 0xffffff).ram(); /* Work RAM */
+}
+
+void gaelco_state::bigkarnk_snd_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* RAM */
+ map(0x0800, 0x0801).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 */
// AM_RANGE(0x0900, 0x0900) AM_WRITENOP /* enable sound output? */
- AM_RANGE(0x0a00, 0x0a01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) /* YM3812 */
- AM_RANGE(0x0b00, 0x0b00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound latch */
- AM_RANGE(0x0c00, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaelco_state::maniacsq_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x102000, 0x103fff) AM_RAM /* Screen RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
+ map(0x0a00, 0x0a01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 */
+ map(0x0b00, 0x0b00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound latch */
+ map(0x0c00, 0xffff).rom(); /* ROM */
+}
+
+void gaelco_state::maniacsq_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::gaelco_vram_w)).share("videoram"); /* Video RAM */
+ map(0x102000, 0x103fff).ram(); /* Screen RAM */
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff)
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaelco_state::squash_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_encrypted_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(gaelco_encrypted_w) AM_SHARE("screenram") /* Screen RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW2");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x70000d, 0x70000d).w(this, FUNC(gaelco_state::OKIM6295_bankswitch_w));
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */
+ map(0xff0000, 0xffffff).ram(); /* Work RAM */
+}
+
+void gaelco_state::squash_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::gaelco_vram_encrypted_w)).share("videoram"); /* Video RAM */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(gaelco_state::gaelco_encrypted_w)).share("screenram"); /* Screen RAM */
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff)
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaelco_state::thoop_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(thoop_vram_encrypted_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(thoop_encrypted_w) AM_SHARE("screenram") /* Screen RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW2");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x70000d, 0x70000d).w(this, FUNC(gaelco_state::OKIM6295_bankswitch_w));
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */
+ map(0xff0000, 0xffffff).ram(); /* Work RAM */
+}
+
+void gaelco_state::thoop_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::thoop_vram_encrypted_w)).share("videoram"); /* Video RAM */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(gaelco_state::thoop_encrypted_w)).share("screenram"); /* Screen RAM */
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff)
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gaelco_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW2");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x70000d, 0x70000d).w(this, FUNC(gaelco_state::OKIM6295_bankswitch_w));
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */
+ map(0xff0000, 0xffffff).ram(); /* Work RAM */
+}
+
+
+void gaelco_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
/*************************************
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp
index 9fb81c41b0d..8e2f79a1940 100644
--- a/src/mame/drivers/gaelco2.cpp
+++ b/src/mame/drivers/gaelco2.cpp
@@ -72,29 +72,31 @@ GFXDECODEINFO(0x0400000, 128)
COMMON
============================================================================*/
-ADDRESS_MAP_START(gaelco2_state::mcu_hostmem_map)
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(shareram_r, shareram_w) // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM
-ADDRESS_MAP_END
+void gaelco2_state::mcu_hostmem_map(address_map &map)
+{
+ map(0x8000, 0xffff).rw(this, FUNC(gaelco2_state::shareram_r), FUNC(gaelco2_state::shareram_w)); // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM
+}
/*============================================================================
MANIAC SQUARE (FINAL)
============================================================================*/
-ADDRESS_MAP_START(gaelco2_state::maniacsq_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DSW #2 + Input 2P */
- AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP /* Sound muting? */
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */
- AM_RANGE(0x500000, 0x500001) AM_WRITE(alighunt_coin_w) /* Coin lockout + counters */
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM */
-ADDRESS_MAP_END
+void gaelco2_state::maniacsq_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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(this, FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM */
+}
static INPUT_PORTS_START( maniacsq )
@@ -479,21 +481,22 @@ WRITE16_MEMBER(gaelco2_state::play2000_shareram_68k_w)
}
-ADDRESS_MAP_START(gaelco2_state::play2000_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0") /* Coins + other buttons? */
+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) ?
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x214000, 0x214fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x215000, 0x217fff) AM_RAM /* Written to, but unused? */
- AM_RANGE(0x218000, 0x218003) AM_RAM /* Written to, but unused? */
- AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x21800a, 0x218fff) AM_RAM /* Written to, but unused? */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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) ?
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_READWRITE(play2000_shareram_68k_r, play2000_shareram_68k_w) AM_SHARE("shareram") /* Work RAM */
-ADDRESS_MAP_END
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).rw(this, 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")
@@ -638,25 +641,26 @@ READ16_MEMBER(bang_state::p1_gun_y){return (m_light0_y->read() * 240 / 0x100) -
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;}
-ADDRESS_MAP_START(bang_state::bang_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_cg1v_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x218004, 0x218009) AM_READONLY /* Video Registers */
- AM_RANGE(0x218004, 0x218007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x218008, 0x218009) AM_WRITENOP /* CLR INT Video */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1")
- AM_RANGE(0x300002, 0x300003) AM_READNOP /* Random number generator? */
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) /* Coin Counters & serial EEPROM */
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2")
- AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN")
- AM_RANGE(0x310000, 0x310001) AM_READ(p1_gun_x) AM_WRITE(bang_clr_gun_int_w) /* Gun 1P X */ /* CLR INT Gun */
- AM_RANGE(0x310002, 0x310003) AM_READ(p2_gun_x) /* Gun 2P X */
- AM_RANGE(0x310004, 0x310005) AM_READ(p1_gun_y) /* Gun 1P Y */
- AM_RANGE(0x310006, 0x310007) AM_READ(p2_gun_y) /* Gun 2P Y */
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
+void bang_state::bang_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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(0x300010, 0x300011).portr("P2");
+ map(0x300020, 0x300021).portr("COIN");
+ map(0x310000, 0x310001).r(this, FUNC(bang_state::p1_gun_x)).w(this, FUNC(bang_state::bang_clr_gun_int_w)); /* Gun 1P X */ /* CLR INT Gun */
+ map(0x310002, 0x310003).r(this, FUNC(bang_state::p2_gun_x)); /* Gun 2P X */
+ map(0x310004, 0x310005).r(this, FUNC(bang_state::p1_gun_y)); /* Gun 1P Y */
+ map(0x310006, 0x310007).r(this, FUNC(bang_state::p2_gun_y)); /* Gun 2P Y */
+ map(0xfe0000, 0xfeffff).ram(); /* Work RAM */
+}
static INPUT_PORTS_START( bang )
@@ -841,20 +845,21 @@ ROM_END
============================================================================*/
-ADDRESS_MAP_START(gaelco2_state::alighunt_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DSW #2 + Input 2P */
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */
- AM_RANGE(0x500000, 0x500001) AM_WRITE(alighunt_coin_w) /* Coin lockout + counters */
- AM_RANGE(0x500006, 0x500007) AM_WRITENOP /* ??? */
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */
-ADDRESS_MAP_END
+void gaelco2_state::alighunt_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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(this, 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) */
+}
static INPUT_PORTS_START( alighunt )
@@ -1108,20 +1113,21 @@ ROM_END
============================================================================*/
-ADDRESS_MAP_START(gaelco2_state::touchgo_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DSW #2 + Input 2P */
- AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2") /* COINSW + Input 3P */
- AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3") /* SERVICESW + Input 4P */
- AM_RANGE(0x500000, 0x500001) AM_SELECT(0x0038) AM_WRITE(wrally2_latch_w) /* Coin counters */
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */
-ADDRESS_MAP_END
+void gaelco2_state::touchgo_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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(this, 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) */
+}
static INPUT_PORTS_START( touchgo )
@@ -1430,20 +1436,21 @@ ROM_END
SNOW BOARD
============================================================================*/
-ADDRESS_MAP_START(gaelco2_state::snowboar_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_cg1v_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x212000, 0x213fff) AM_RAM /* Extra RAM */
- AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1")
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) /* Coin Counters & serial EEPROM */
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2")
- AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN")
- AM_RANGE(0x310000, 0x31ffff) AM_READWRITE(snowboar_protection_r,snowboar_protection_w) AM_SHARE("snowboar_prot") /* Protection */
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
+void gaelco2_state::snowboar_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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(0x300010, 0x300011).portr("P2");
+ map(0x300020, 0x300021).portr("COIN");
+ map(0x310000, 0x31ffff).rw(this, FUNC(gaelco2_state::snowboar_protection_r), FUNC(gaelco2_state::snowboar_protection_w)).share("snowboar_prot"); /* Protection */
+ map(0xfe0000, 0xfeffff).ram(); /* Work RAM */
+}
static INPUT_PORTS_START( snowboar )
@@ -1658,21 +1665,22 @@ ROM_END
WORLD RALLY 2
============================================================================*/
-ADDRESS_MAP_START(wrally2_state::wrally2_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
- AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
- AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */
- AM_RANGE(0x212000, 0x213fff) AM_RAM /* Extra RAM */
- AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DIPSW #2 + Inputs 1P */
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DIPSW #1 */
- AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2") /* Inputs 2P + COINSW */
- AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3") /* SERVICESW */
- AM_RANGE(0x400000, 0x400001) AM_SELECT(0x0038) AM_WRITE(wrally2_latch_w) /* Coin counters, etc. */
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */
-ADDRESS_MAP_END
+void wrally2_state::wrally2_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x200000, 0x20ffff).ram().w(this, 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(this, 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(this, 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) */
+}
static INPUT_PORTS_START( wrally2 )
diff --git a/src/mame/drivers/gaelco3d.cpp b/src/mame/drivers/gaelco3d.cpp
index 52dcefd9df4..20ca37200bf 100644
--- a/src/mame/drivers/gaelco3d.cpp
+++ b/src/mame/drivers/gaelco3d.cpp
@@ -668,64 +668,81 @@ WRITE_LINE_MEMBER(gaelco3d_state::unknown_13a_w)
*
*************************************/
-ADDRESS_MAP_START(gaelco3d_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(gaelco3d_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x51000c, 0x51000d) AM_READ_PORT("IN0")
- AM_RANGE(0x51001c, 0x51001d) AM_READ_PORT("IN1")
- AM_RANGE(0x51002c, 0x51002d) AM_READ_PORT("IN2")
- AM_RANGE(0x51003c, 0x51003d) AM_READ_PORT("IN3")
- AM_RANGE(0x510040, 0x510041) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x510042, 0x510043) AM_READ(sound_status_r)
- AM_RANGE(0x510100, 0x510101) AM_READWRITE(eeprom_data_r, irq_ack_w)
- AM_RANGE(0x510102, 0x510103) AM_DEVREAD8("serial", gaelco_serial_device, data_r, 0x00ff)
- ;map(0x510102, 0x510103).select(0x000038).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 2, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x510104, 0x510105) AM_DEVWRITE8("serial", gaelco_serial_device, data_w, 0x00ff)
- ;map(0x510106, 0x510107).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_SHARE("m68k_ram_base")
- AM_RANGE(0xfe7f80, 0xfe7fff) AM_WRITE(tms_comm_w) AM_SHARE("tms_comm_base")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gaelco3d_state::main020_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(gaelco3d_paletteram_020_w) AM_SHARE("paletteram")
- AM_RANGE(0x51000c, 0x51000f) AM_READ_PORT("IN0")
- AM_RANGE(0x51001c, 0x51001f) AM_READ_PORT("IN1")
- AM_RANGE(0x51002c, 0x51002f) AM_READ_PORT("IN2")
- AM_RANGE(0x51003c, 0x51003f) AM_READ_PORT("IN3")
- AM_RANGE(0x510041, 0x510041) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x510042, 0x510043) AM_READ(sound_status_r)
- AM_RANGE(0x510100, 0x510101) AM_READWRITE(eeprom_data_r, irq_ack_w)
- AM_RANGE(0x510103, 0x510103) AM_DEVREAD("serial", gaelco_serial_device, data_r)
- ;map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 1, data, mem_mask); });
- AM_RANGE(0x510105, 0x510105) AM_DEVWRITE("serial", gaelco_serial_device, data_w)
- ;map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 2, data, mem_mask); });
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_SHARE("m68k_ram_base")
- AM_RANGE(0xfe7f80, 0xfe7fff) AM_WRITE(tms_comm_w) AM_SHARE("tms_comm_base")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaelco3d_state::tms_map)
- AM_RANGE(0x000000, 0x007fff) AM_READWRITE(tms_m68k_ram_r, tms_m68k_ram_w)
- AM_RANGE(0x400000, 0x7fffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0xc00000, 0xc00007) AM_WRITE(gaelco3d_render_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gaelco3d_state::adsp_program_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("adsp_ram_base") /* 1k words internal RAM */
- AM_RANGE(0x37ff, 0x37ff) AM_READNOP /* speedup hammers this for no apparent reason */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaelco3d_state::adsp_data_map)
- AM_RANGE(0x0000, 0x0001) AM_WRITE(adsp_rombank_w)
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1")
- AM_RANGE(0x2000, 0x2000) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_status_w)
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("adsp_fastram") /* 512 words internal RAM */
- AM_RANGE(0x3fe0, 0x3fff) AM_WRITE(adsp_control_w) AM_SHARE("adsp_regs")
-ADDRESS_MAP_END
+void gaelco3d_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(gaelco3d_state::gaelco3d_paletteram_w)).share("paletteram");
+ map(0x51000c, 0x51000d).portr("IN0");
+ map(0x51001c, 0x51001d).portr("IN1");
+ map(0x51002c, 0x51002d).portr("IN2");
+ map(0x51003c, 0x51003d).portr("IN3");
+ map(0x510041, 0x510041).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x510042, 0x510043).r(this, FUNC(gaelco3d_state::sound_status_r));
+ map(0x510100, 0x510101).rw(this, FUNC(gaelco3d_state::eeprom_data_r), FUNC(gaelco3d_state::irq_ack_w));
+ map(0x510103, 0x510103).r(m_serial, FUNC(gaelco_serial_device::data_r));
+ map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_mainlatch->write_d0(space, offset >> 2, data, mem_mask);
+ });
+ map(0x510105, 0x510105).w(m_serial, FUNC(gaelco_serial_device::data_w));
+ map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0xfe0000, 0xfeffff).ram().share("m68k_ram_base");
+ map(0xfe7f80, 0xfe7fff).w(this, FUNC(gaelco3d_state::tms_comm_w)).share("tms_comm_base");
+}
+
+
+void gaelco3d_state::main020_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(gaelco3d_state::gaelco3d_paletteram_020_w)).share("paletteram");
+ map(0x51000c, 0x51000f).portr("IN0");
+ map(0x51001c, 0x51001f).portr("IN1");
+ map(0x51002c, 0x51002f).portr("IN2");
+ map(0x51003c, 0x51003f).portr("IN3");
+ map(0x510041, 0x510041).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x510042, 0x510043).r(this, FUNC(gaelco3d_state::sound_status_r));
+ map(0x510100, 0x510101).rw(this, FUNC(gaelco3d_state::eeprom_data_r), FUNC(gaelco3d_state::irq_ack_w));
+ map(0x510103, 0x510103).r(m_serial, FUNC(gaelco_serial_device::data_r));
+ map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_mainlatch->write_d0(space, offset >> 1, data, mem_mask);
+ });
+ map(0x510105, 0x510105).w(m_serial, FUNC(gaelco_serial_device::data_w));
+ map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 2, data, mem_mask);
+ });
+ map(0xfe0000, 0xfeffff).ram().share("m68k_ram_base");
+ map(0xfe7f80, 0xfe7fff).w(this, FUNC(gaelco3d_state::tms_comm_w)).share("tms_comm_base");
+}
+
+void gaelco3d_state::tms_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rw(this, FUNC(gaelco3d_state::tms_m68k_ram_r), FUNC(gaelco3d_state::tms_m68k_ram_w));
+ map(0x400000, 0x7fffff).rom().region("user2", 0);
+ map(0xc00000, 0xc00007).w(this, FUNC(gaelco3d_state::gaelco3d_render_w));
+}
+
+
+void gaelco3d_state::adsp_program_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("adsp_ram_base"); /* 1k words internal RAM */
+ map(0x37ff, 0x37ff).nopr(); /* speedup hammers this for no apparent reason */
+}
+
+void gaelco3d_state::adsp_data_map(address_map &map)
+{
+ map(0x0000, 0x0001).w(this, FUNC(gaelco3d_state::adsp_rombank_w));
+ map(0x0000, 0x1fff).bankr("bank1");
+ map(0x2000, 0x2000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).umask16(0x00ff);
+ map(0x2000, 0x2000).w(this, FUNC(gaelco3d_state::sound_status_w));
+ map(0x3800, 0x39ff).ram().share("adsp_fastram"); /* 512 words internal RAM */
+ map(0x3fe0, 0x3fff).w(this, FUNC(gaelco3d_state::adsp_control_w)).share("adsp_regs");
+}
diff --git a/src/mame/drivers/gaelcopc.cpp b/src/mame/drivers/gaelcopc.cpp
index ffcf5ece443..fbb0fafd17b 100644
--- a/src/mame/drivers/gaelcopc.cpp
+++ b/src/mame/drivers/gaelcopc.cpp
@@ -60,9 +60,10 @@ uint32_t gaelcopc_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-ADDRESS_MAP_START(gaelcopc_state::gaelcopc_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM
-ADDRESS_MAP_END
+void gaelcopc_state::gaelcopc_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom();
+}
static INPUT_PORTS_START( gaelcopc )
INPUT_PORTS_END
diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp
index 1618019d063..558fc1db0a9 100644
--- a/src/mame/drivers/gaiden.cpp
+++ b/src/mame/drivers/gaiden.cpp
@@ -385,87 +385,94 @@ READ16_MEMBER(gaiden_state::raiga_protection_r)
return m_prot;
}
-ADDRESS_MAP_START(gaiden_state::gaiden_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2") AM_WRITE(gaiden_sproffsety_w)
- AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
- AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w)
- AM_RANGE(0x07a108, 0x07a109) AM_WRITE(gaiden_txoffsety_w)
- AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w)
- AM_RANGE(0x07a204, 0x07a205) AM_WRITE(gaiden_fgscrolly_w)
- AM_RANGE(0x07a208, 0x07a209) AM_WRITE(gaiden_fgoffsety_w)
- AM_RANGE(0x07a20c, 0x07a20d) AM_WRITE(gaiden_fgscrollx_w)
- AM_RANGE(0x07a304, 0x07a305) AM_WRITE(gaiden_bgscrolly_w)
- AM_RANGE(0x07a308, 0x07a309) AM_WRITE(gaiden_bgoffsety_w)
- AM_RANGE(0x07a30c, 0x07a30d) AM_WRITE(gaiden_bgscrollx_w)
- AM_RANGE(0x07a800, 0x07a801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+void gaiden_state::gaiden_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1");
+ map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2");
+ map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3");
+ map(0x076000, 0x077fff).ram().share("spriteram");
+ map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x07a000, 0x07a001).portr("SYSTEM");
+ map(0x07a002, 0x07a003).portr("P1_P2").w(this, FUNC(gaiden_state::gaiden_sproffsety_w));
+ map(0x07a004, 0x07a005).portr("DSW");
+ map(0x07a104, 0x07a105).w(this, FUNC(gaiden_state::gaiden_txscrolly_w));
+ map(0x07a108, 0x07a109).w(this, FUNC(gaiden_state::gaiden_txoffsety_w));
+ map(0x07a10c, 0x07a10d).w(this, FUNC(gaiden_state::gaiden_txscrollx_w));
+ map(0x07a204, 0x07a205).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w));
+ map(0x07a208, 0x07a209).w(this, FUNC(gaiden_state::gaiden_fgoffsety_w));
+ map(0x07a20c, 0x07a20d).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w));
+ map(0x07a304, 0x07a305).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w));
+ map(0x07a308, 0x07a309).w(this, FUNC(gaiden_state::gaiden_bgoffsety_w));
+ map(0x07a30c, 0x07a30d).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w));
+ map(0x07a800, 0x07a801).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
// Ninja Gaiden writes only to the lower byte; Tecmo Knight and Strato Fighter write to the upper byte instead.
// It's not clear which 8 data lines are actually connected, but byte smearing is almost certainly involved.
- AM_RANGE(0x07a802, 0x07a803) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16)
- AM_RANGE(0x07a806, 0x07a807) AM_WRITE(irq_ack_w)
- AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::wildfang_map)
- AM_IMPORT_FROM(gaiden_map)
- AM_RANGE(0x07a006, 0x07a007) AM_READ(wildfang_protection_r)
- AM_RANGE(0x07a804, 0x07a805) AM_WRITE(wildfang_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::raiga_map)
- AM_IMPORT_FROM(gaiden_map)
- AM_RANGE(0x07a006, 0x07a007) AM_READ(raiga_protection_r)
- AM_RANGE(0x07a804, 0x07a805) AM_WRITE(raiga_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::drgnbowl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
- AM_RANGE(0x07a00e, 0x07a00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x07e000, 0x07e001) AM_WRITE8(drgnbowl_irq_ack_w, 0xff00)
- AM_RANGE(0x07f000, 0x07f001) AM_WRITE(gaiden_bgscrolly_w)
- AM_RANGE(0x07f002, 0x07f003) AM_WRITE(gaiden_bgscrollx_w)
- AM_RANGE(0x07f004, 0x07f005) AM_WRITE(gaiden_fgscrolly_w)
- AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_ROM /* raiga only */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_device, write)
- AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */
- AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::drgnbowl_sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::drgnbowl_sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x07a802, 0x07a803).w("soundlatch", FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x07a806, 0x07a807).w(this, FUNC(gaiden_state::irq_ack_w));
+ map(0x07a808, 0x07a809).w(this, FUNC(gaiden_state::gaiden_flip_w));
+}
+
+void gaiden_state::wildfang_map(address_map &map)
+{
+ gaiden_map(map);
+ map(0x07a006, 0x07a007).r(this, FUNC(gaiden_state::wildfang_protection_r));
+ map(0x07a804, 0x07a805).w(this, FUNC(gaiden_state::wildfang_protection_w));
+}
+
+void gaiden_state::raiga_map(address_map &map)
+{
+ gaiden_map(map);
+ map(0x07a006, 0x07a007).r(this, FUNC(gaiden_state::raiga_protection_r));
+ map(0x07a804, 0x07a805).w(this, FUNC(gaiden_state::raiga_protection_w));
+}
+
+void gaiden_state::drgnbowl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1");
+ map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2");
+ map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3");
+ map(0x076000, 0x077fff).ram().share("spriteram");
+ map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x07a000, 0x07a001).portr("SYSTEM");
+ map(0x07a002, 0x07a003).portr("P1_P2");
+ map(0x07a004, 0x07a005).portr("DSW");
+ map(0x07a00e, 0x07a00e).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x07e000, 0x07e000).w(this, FUNC(gaiden_state::drgnbowl_irq_ack_w));
+ map(0x07f000, 0x07f001).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w));
+ map(0x07f002, 0x07f003).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w));
+ map(0x07f004, 0x07f005).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w));
+ map(0x07f006, 0x07f007).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w));
+}
+
+void gaiden_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xefff).rom(); /* raiga only */
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf810, 0xf811).w("ym1", FUNC(ym2203_device::write));
+ map(0xf820, 0xf821).w("ym2", FUNC(ym2203_device::write));
+ map(0xfc00, 0xfc00).noprw(); /* ?? */
+ map(0xfc20, 0xfc20).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
+
+void gaiden_state::drgnbowl_sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void gaiden_state::drgnbowl_sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( common )
PORT_START("SYSTEM")
@@ -914,17 +921,18 @@ Others
2x 8x2 switches DIP
*/
-ADDRESS_MAP_START(gaiden_state::mastninj_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("adpcm_bank")
- AM_RANGE(0xc400, 0xc401) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xcc00, 0xcc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(adpcm_bankswitch_w)
- AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
-ADDRESS_MAP_END
+void gaiden_state::mastninj_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("adpcm_bank");
+ map(0xc400, 0xc401).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc800, 0xc801).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xcc00, 0xcc00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w("adpcm_select2", FUNC(ls157_device::ba_w));
+ map(0xd400, 0xd400).w(this, FUNC(gaiden_state::adpcm_bankswitch_w));
+ map(0xd800, 0xd800).w("adpcm_select1", FUNC(ls157_device::ba_w));
+ map(0xf000, 0xf7ff).ram();
+}
WRITE_LINE_MEMBER(gaiden_state::vck_flipflop_w)
{
@@ -955,30 +963,31 @@ MACHINE_START_MEMBER(gaiden_state,mastninj)
save_item(NAME(m_adpcm_toggle));
}
-ADDRESS_MAP_START(gaiden_state::mastninj_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+void gaiden_state::mastninj_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1");
+ map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2");
+ map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3");
+ map(0x076000, 0x077fff).ram().share("spriteram");
+ map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
// AM_RANGE(0x078800, 0x079fff) AM_RAM
- AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
+ map(0x07a000, 0x07a001).portr("SYSTEM");
+ map(0x07a002, 0x07a003).portr("P1_P2");
+ map(0x07a004, 0x07a005).portr("DSW");
// AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w)
// AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w)
- AM_RANGE(0x07f000, 0x07f001) AM_WRITE(gaiden_bgscrolly_w)
- AM_RANGE(0x07f002, 0x07f003) AM_WRITE(gaiden_bgscrollx_w)
- AM_RANGE(0x07f004, 0x07f005) AM_WRITE(gaiden_fgscrolly_w)
- AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w)
- AM_RANGE(0x07a800, 0x07a801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+ map(0x07f000, 0x07f001).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w));
+ map(0x07f002, 0x07f003).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w));
+ map(0x07f004, 0x07f005).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w));
+ map(0x07f006, 0x07f007).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w));
+ map(0x07a800, 0x07a801).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
// AM_RANGE(0x07a806, 0x07a807) AM_WRITENOP
// AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w)
- AM_RANGE(0x07a00e, 0x07a00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x07e000, 0x07e001) AM_WRITE8(drgnbowl_irq_ack_w, 0xff00)
-ADDRESS_MAP_END
+ map(0x07a00e, 0x07a00e).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x07e000, 0x07e000).w(this, FUNC(gaiden_state::drgnbowl_irq_ack_w));
+}
MACHINE_CONFIG_START(gaiden_state::mastninj)
diff --git a/src/mame/drivers/gal3.cpp b/src/mame/drivers/gal3.cpp
index 365935035d7..0edb037b2e4 100644
--- a/src/mame/drivers/gal3.cpp
+++ b/src/mame/drivers/gal3.cpp
@@ -337,136 +337,141 @@ WRITE32_MEMBER(gal3_state::rso_w)
}
-ADDRESS_MAP_START(gal3_state::cpu_mst_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM
- AM_RANGE(0x20000000, 0x20001fff) AM_RAM AM_SHARE("nvmem") //NVRAM
+void gal3_state::cpu_mst_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom();
+ map(0x20000000, 0x20001fff).ram().share("nvmem"); //NVRAM
/// AM_RANGE(0x40000000, 0x4000ffff) AM_WRITE() //
- AM_RANGE(0x44000000, 0x44000003) AM_READ_PORT("DSW_CPU_mst" )
- AM_RANGE(0x44800000, 0x44800003) AM_READ(led_mst_r) AM_WRITE(led_mst_w) //LEDs
- AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 v-blank ack
- AM_RANGE(0x4c000000, 0x4c000003) AM_READNOP //irq3 ack
- AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1") //CRAM
- AM_RANGE(0x60010000, 0x60017fff) AM_RAM AM_SHARE("share1") //Mirror
- AM_RANGE(0x80000000, 0x8007ffff) AM_RAM //512K Local RAM
+ map(0x44000000, 0x44000003).portr("DSW_CPU_mst");
+ map(0x44800000, 0x44800003).r(this, FUNC(gal3_state::led_mst_r)).w(this, FUNC(gal3_state::led_mst_w)); //LEDs
+ map(0x48000000, 0x48000003).nopr(); //irq1 v-blank ack
+ map(0x4c000000, 0x4c000003).nopr(); //irq3 ack
+ map(0x60000000, 0x60007fff).ram().share("share1"); //CRAM
+ map(0x60010000, 0x60017fff).ram().share("share1"); //Mirror
+ map(0x80000000, 0x8007ffff).ram(); //512K Local RAM
/// AM_RANGE(0xc0000000, 0xc000000b) AM_WRITENOP //upload?
- AM_RANGE(0xc000000c, 0xc000000f) AM_READNOP //irq2 ack
+ map(0xc000000c, 0xc000000f).nopr(); //irq2 ack
/// AM_RANGE(0xd8000000, 0xd800000f) AM_RAM // protection or 68681?
- AM_RANGE(0xf2800000, 0xf2800fff) AM_READWRITE(rso_r, rso_w) //RSO PCB
-ADDRESS_MAP_END
+ map(0xf2800000, 0xf2800fff).rw(this, FUNC(gal3_state::rso_r), FUNC(gal3_state::rso_w)); //RSO PCB
+}
-ADDRESS_MAP_START(gal3_state::cpu_slv_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM
+void gal3_state::cpu_slv_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom();
/// AM_RANGE(0x40000000, 0x4000ffff) AM_WRITE() //
- AM_RANGE(0x44000000, 0x44000003) AM_READ_PORT("DSW_CPU_slv" )
- AM_RANGE(0x44800000, 0x44800003) AM_READ(led_slv_r) AM_WRITE(led_slv_w) //LEDs
- AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 ack
+ map(0x44000000, 0x44000003).portr("DSW_CPU_slv");
+ map(0x44800000, 0x44800003).r(this, FUNC(gal3_state::led_slv_r)).w(this, FUNC(gal3_state::led_slv_w)); //LEDs
+ map(0x48000000, 0x48000003).nopr(); //irq1 ack
/// AM_RANGE(0x50000000, 0x50000003) AM_READ() AM_WRITE()
/// AM_RANGE(0x54000000, 0x54000003) AM_READ() AM_WRITE()
- AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x60010000, 0x60017fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x80000000, 0x8007ffff) AM_RAM //512K Local RAM
+ map(0x60000000, 0x60007fff).ram().share("share1");
+ map(0x60010000, 0x60017fff).ram().share("share1");
+ map(0x80000000, 0x8007ffff).ram(); //512K Local RAM
- AM_RANGE(0xf1200000, 0xf120ffff) AM_RAM //DSP RAM
+ map(0xf1200000, 0xf120ffff).ram(); //DSP RAM
/// AM_RANGE(0xf1400000, 0xf1400003) AM_WRITE(pointram_control_w)
/// AM_RANGE(0xf1440000, 0xf1440003) AM_READWRITE(pointram_data_r,pointram_data_w)
/// AM_RANGE(0x440002, 0x47ffff) AM_WRITENOP /* (frame buffer?) */
/// AM_RANGE(0xf1480000, 0xf14807ff) AM_READWRITE(namcos21_depthcue_r,namcos21_depthcue_w)
- AM_RANGE(0xf1700000, 0xf170ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
- AM_RANGE(0xf1720000, 0xf1720007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
- AM_RANGE(0xf1740000, 0xf175ffff) AM_READWRITE(paletteram32_r,paletteram32_w)
- AM_RANGE(0xf1760000, 0xf1760003) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w)
-
- AM_RANGE(0xf2200000, 0xf220ffff) AM_RAM
- AM_RANGE(0xf2700000, 0xf270ffff) AM_RAM //AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
- AM_RANGE(0xf2720000, 0xf2720007) AM_RAM //AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
- AM_RANGE(0xf2740000, 0xf275ffff) AM_RAM //AM_READWRITE(paletteram16_r,paletteram16_w) AM_SHARE("paletteram")
- AM_RANGE(0xf2760000, 0xf2760003) AM_RAM //AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gal3_state::rs_cpu_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM //64K working RAM
+ map(0xf1700000, 0xf170ffff).rw(this, FUNC(gal3_state::c355_obj_ram_r), FUNC(gal3_state::c355_obj_ram_w)).share("objram");
+ map(0xf1720000, 0xf1720007).rw(this, FUNC(gal3_state::c355_obj_position_r), FUNC(gal3_state::c355_obj_position_w));
+ map(0xf1740000, 0xf175ffff).rw(this, FUNC(gal3_state::paletteram32_r), FUNC(gal3_state::paletteram32_w));
+ map(0xf1760000, 0xf1760003).rw(this, FUNC(gal3_state::namcos21_video_enable_r), FUNC(gal3_state::namcos21_video_enable_w));
+
+ map(0xf2200000, 0xf220ffff).ram();
+ map(0xf2700000, 0xf270ffff).ram(); //AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
+ map(0xf2720000, 0xf2720007).ram(); //AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
+ map(0xf2740000, 0xf275ffff).ram(); //AM_READWRITE(paletteram16_r,paletteram16_w) AM_SHARE("paletteram")
+ map(0xf2760000, 0xf2760003).ram(); //AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w)
+}
+
+void gal3_state::rs_cpu_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); //64K working RAM
/// AM_RANGE(0x180000, 0x183fff) AM_RAM //Nvram
- AM_RANGE(0x1c0000, 0x1c0001) AM_RAM //148?
- AM_RANGE(0x1c2000, 0x1c2001) AM_RAM //?
- AM_RANGE(0x1c4000, 0x1c4001) AM_RAM //?
- AM_RANGE(0x1c6000, 0x1c6001) AM_RAM //?
- AM_RANGE(0x1c8000, 0x1c8001) AM_RAM //?
- AM_RANGE(0x1ca000, 0x1ca001) AM_RAM //?
- AM_RANGE(0x1cc000, 0x1cc001) AM_RAM //?
- AM_RANGE(0x1ce000, 0x1ce001) AM_RAM //?
- AM_RANGE(0x1d2000, 0x1d2001) AM_RAM //?
- AM_RANGE(0x1d4000, 0x1d4001) AM_RAM //?
- AM_RANGE(0x1d6000, 0x1d6001) AM_RAM //?
- AM_RANGE(0x1de000, 0x1de001) AM_RAM //?
- AM_RANGE(0x1e4000, 0x1e4001) AM_RAM //?
- AM_RANGE(0x1e6000, 0x1e6001) AM_RAM //?
-
- AM_RANGE(0x200000, 0x200001) AM_RAM //?
-
- AM_RANGE(0x2c0000, 0x2c0001) AM_RAM //?
- AM_RANGE(0x2c0800, 0x2c0801) AM_RAM //?
- AM_RANGE(0x2c1000, 0x2c1001) AM_RAM //?
- AM_RANGE(0x2c1800, 0x2c1801) AM_RAM //?
- AM_RANGE(0x2c2000, 0x2c2001) AM_RAM //?
- AM_RANGE(0x2c2800, 0x2c2801) AM_RAM //?
- AM_RANGE(0x2c3000, 0x2c3001) AM_RAM //?
- AM_RANGE(0x2c3800, 0x2c3801) AM_RAM //?
- AM_RANGE(0x2c4000, 0x2c4001) AM_RAM //?
-
- AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("rso_shared_ram") //shared RAM
-
- AM_RANGE(0x400000, 0x400017) AM_RAM //MC68681?
- AM_RANGE(0x480000, 0x480017) AM_RAM //?
- AM_RANGE(0x500000, 0x500017) AM_RAM //?
- AM_RANGE(0x580000, 0x580017) AM_RAM //?
- AM_RANGE(0x600000, 0x600017) AM_RAM //?
- AM_RANGE(0x680000, 0x680017) AM_RAM //?
-
- AM_RANGE(0x800000, 0x80000f) AM_RAM //?
- AM_RANGE(0x840000, 0x843fff) AM_RAM //8 bit, 139 SCI RAM?
- AM_RANGE(0x880000, 0x88000f) AM_RAM //?
- AM_RANGE(0x8c0000, 0x8c3fff) AM_RAM //8 bit
- AM_RANGE(0x900000, 0x90000f) AM_RAM //?
- AM_RANGE(0x940000, 0x943fff) AM_RAM //8 bit
- AM_RANGE(0x980000, 0x98000f) AM_RAM //?
- AM_RANGE(0x9c0000, 0x9c3fff) AM_RAM //8 bit
- AM_RANGE(0xa00000, 0xa0000f) AM_RAM //?
- AM_RANGE(0xa40000, 0xa43fff) AM_RAM //8 bit
- AM_RANGE(0xa80000, 0xa8000f) AM_RAM //?
- AM_RANGE(0xac0000, 0xac3fff) AM_RAM //8 bit
- AM_RANGE(0xb00000, 0xb0000f) AM_RAM //?
- AM_RANGE(0xb40000, 0xb43fff) AM_RAM //8 bit
- AM_RANGE(0xb80000, 0xb8000f) AM_RAM //?
- AM_RANGE(0xbc0000, 0xbc3fff) AM_RAM //8 bit
- AM_RANGE(0xc00000, 0xc0000f) AM_RAM //?
- AM_RANGE(0xc40000, 0xc43fff) AM_RAM //8 bit
+ map(0x1c0000, 0x1c0001).ram(); //148?
+ map(0x1c2000, 0x1c2001).ram(); //?
+ map(0x1c4000, 0x1c4001).ram(); //?
+ map(0x1c6000, 0x1c6001).ram(); //?
+ map(0x1c8000, 0x1c8001).ram(); //?
+ map(0x1ca000, 0x1ca001).ram(); //?
+ map(0x1cc000, 0x1cc001).ram(); //?
+ map(0x1ce000, 0x1ce001).ram(); //?
+ map(0x1d2000, 0x1d2001).ram(); //?
+ map(0x1d4000, 0x1d4001).ram(); //?
+ map(0x1d6000, 0x1d6001).ram(); //?
+ map(0x1de000, 0x1de001).ram(); //?
+ map(0x1e4000, 0x1e4001).ram(); //?
+ map(0x1e6000, 0x1e6001).ram(); //?
+
+ map(0x200000, 0x200001).ram(); //?
+
+ map(0x2c0000, 0x2c0001).ram(); //?
+ map(0x2c0800, 0x2c0801).ram(); //?
+ map(0x2c1000, 0x2c1001).ram(); //?
+ map(0x2c1800, 0x2c1801).ram(); //?
+ map(0x2c2000, 0x2c2001).ram(); //?
+ map(0x2c2800, 0x2c2801).ram(); //?
+ map(0x2c3000, 0x2c3001).ram(); //?
+ map(0x2c3800, 0x2c3801).ram(); //?
+ map(0x2c4000, 0x2c4001).ram(); //?
+
+ map(0x300000, 0x300fff).ram().share("rso_shared_ram"); //shared RAM
+
+ map(0x400000, 0x400017).ram(); //MC68681?
+ map(0x480000, 0x480017).ram(); //?
+ map(0x500000, 0x500017).ram(); //?
+ map(0x580000, 0x580017).ram(); //?
+ map(0x600000, 0x600017).ram(); //?
+ map(0x680000, 0x680017).ram(); //?
+
+ map(0x800000, 0x80000f).ram(); //?
+ map(0x840000, 0x843fff).ram(); //8 bit, 139 SCI RAM?
+ map(0x880000, 0x88000f).ram(); //?
+ map(0x8c0000, 0x8c3fff).ram(); //8 bit
+ map(0x900000, 0x90000f).ram(); //?
+ map(0x940000, 0x943fff).ram(); //8 bit
+ map(0x980000, 0x98000f).ram(); //?
+ map(0x9c0000, 0x9c3fff).ram(); //8 bit
+ map(0xa00000, 0xa0000f).ram(); //?
+ map(0xa40000, 0xa43fff).ram(); //8 bit
+ map(0xa80000, 0xa8000f).ram(); //?
+ map(0xac0000, 0xac3fff).ram(); //8 bit
+ map(0xb00000, 0xb0000f).ram(); //?
+ map(0xb40000, 0xb43fff).ram(); //8 bit
+ map(0xb80000, 0xb8000f).ram(); //?
+ map(0xbc0000, 0xbc3fff).ram(); //8 bit
+ map(0xc00000, 0xc0000f).ram(); //?
+ map(0xc40000, 0xc43fff).ram(); //8 bit
/// AM_RANGE(0xc44000, 0xffffff) AM_RAM /////////////
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(gal3_state::sound_cpu_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
+void gal3_state::sound_cpu_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram();
/// AM_RANGE(0x0c0000, 0x0cffff) AM_RAM //00, 20, 30, 40, 50
/// AM_RANGE(0x100000, 0x10000f) AM_RAM
- AM_RANGE(0x110000, 0x113fff) AM_RAM
+ map(0x110000, 0x113fff).ram();
/// AM_RANGE(0x120000, 0x120003) AM_RAM //2ieme byte
/// AM_RANGE(0x200000, 0x20017f) AM_RAM //C140
- AM_RANGE(0x200000, 0x2037ff) AM_DEVREADWRITE8("c140_16a", c140_device, c140_r, c140_w, 0x00ff) //C140///////////
+ map(0x200000, 0x2037ff).rw("c140_16a", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)).umask16(0x00ff); //C140///////////
/// AM_RANGE(0x201000, 0x20117f) AM_RAM //C140
/// AM_RANGE(0x202000, 0x20217f) AM_RAM //C140
/// AM_RANGE(0x203000, 0x20317f) AM_RAM //C140
- AM_RANGE(0x204000, 0x2047ff) AM_DEVREADWRITE8("c140_16g", c140_device, c140_r, c140_w, 0x00ff) //C140
+ map(0x204000, 0x2047ff).rw("c140_16g", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)).umask16(0x00ff); //C140
/// AM_RANGE(0x090000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(gal3_state::psn_b1_cpu_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void gal3_state::psn_b1_cpu_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0xffffff).ram();
+}
static INPUT_PORTS_START( gal3 )
PORT_START("DSW_CPU_mst") //
diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp
index 7560d32cfa8..c2b1140b377 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -832,103 +832,110 @@ MACHINE_RESET_MEMBER(xevious_state,battles)
/* the same memory map is used by all three CPUs; all RAM areas are shared */
-ADDRESS_MAP_START(bosco_state::bosco_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */
- AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r)
- AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0)
- AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx_0", namco_06xx_device, data_r, data_w)
- AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx_0", namco_06xx_device, ctrl_r, ctrl_w)
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(bosco_videoram_w) AM_SHARE("videoram")/* + sprite registers */
- AM_RANGE(0x9000, 0x90ff) AM_DEVREADWRITE("06xx_1", namco_06xx_device, data_r, data_w)
- AM_RANGE(0x9100, 0x9100) AM_DEVREADWRITE("06xx_1", namco_06xx_device, ctrl_r, ctrl_w)
- AM_RANGE(0x9800, 0x980f) AM_WRITEONLY AM_SHARE("bosco_radarattr")
- AM_RANGE(0x9810, 0x9810) AM_WRITE(bosco_scrollx_w)
- AM_RANGE(0x9820, 0x9820) AM_WRITE(bosco_scrolly_w)
- AM_RANGE(0x9830, 0x9830) AM_WRITEONLY AM_SHARE("starcontrol")
- AM_RANGE(0x9840, 0x9840) AM_WRITE(bosco_starclr_w)
- AM_RANGE(0x9870, 0x9877) AM_DEVWRITE("videolatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void bosco_state::bosco_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */
+ map(0x6800, 0x6807).r(this, FUNC(bosco_state::bosco_dsw_r));
+ map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0));
+ map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x7000, 0x70ff).rw("06xx_0", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w));
+ map(0x7100, 0x7100).rw("06xx_0", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w));
+ map(0x7800, 0x7fff).ram().share("share1");
+ map(0x8000, 0x8fff).ram().w(this, FUNC(bosco_state::bosco_videoram_w)).share("videoram");/* + sprite registers */
+ map(0x9000, 0x90ff).rw("06xx_1", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w));
+ map(0x9100, 0x9100).rw("06xx_1", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w));
+ map(0x9800, 0x980f).writeonly().share("bosco_radarattr");
+ map(0x9810, 0x9810).w(this, FUNC(bosco_state::bosco_scrollx_w));
+ map(0x9820, 0x9820).w(this, FUNC(bosco_state::bosco_scrolly_w));
+ map(0x9830, 0x9830).writeonly().share("starcontrol");
+ map(0x9840, 0x9840).w(this, FUNC(bosco_state::bosco_starclr_w));
+ map(0x9870, 0x9877).w(m_videolatch, FUNC(ls259_device::write_d0));
+}
-ADDRESS_MAP_START(galaga_state::galaga_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */
- AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r)
- AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0)
- AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w)
- AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(galaga_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("galaga_ram1")
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("galaga_ram2")
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("galaga_ram3")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("videolatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void galaga_state::galaga_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */
+ map(0x6800, 0x6807).r(this, FUNC(galaga_state::bosco_dsw_r));
+ map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0));
+ map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x7000, 0x70ff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w));
+ map(0x7100, 0x7100).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w));
+ map(0x8000, 0x87ff).ram().w(this, FUNC(galaga_state::galaga_videoram_w)).share("videoram");
+ map(0x8800, 0x8bff).ram().share("galaga_ram1");
+ map(0x9000, 0x93ff).ram().share("galaga_ram2");
+ map(0x9800, 0x9bff).ram().share("galaga_ram3");
+ map(0xa000, 0xa007).w(m_videolatch, FUNC(ls259_device::write_d0));
+}
-ADDRESS_MAP_START(galaga_state::gatsbee_main_map)
- AM_IMPORT_FROM(galaga_map)
- AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x3ff8) AM_DEVWRITE("extralatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void galaga_state::gatsbee_main_map(address_map &map)
+{
+ galaga_map(map);
+ map(0x0000, 0x0007).mirror(0x3ff8).w("extralatch", FUNC(ls259_device::write_d0));
+}
-ADDRESS_MAP_START(xevious_state::xevious_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */
- AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r)
- AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0)
- AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w)
- AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w)
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1") /* work RAM */
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("xevious_sr1") /* work RAM + sprite registers */
- AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("xevious_sr2") /* work RAM + sprite registers */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("xevious_sr3") /* work RAM + sprite registers */
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(xevious_fg_colorram_w) AM_SHARE("fg_colorram")
- AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(xevious_bg_colorram_w) AM_SHARE("bg_colorram")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(xevious_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(xevious_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd000, 0xd07f) AM_WRITE(xevious_vh_latch_w)
- AM_RANGE(0xf000, 0xffff) AM_READWRITE(xevious_bb_r, xevious_bs_w)
-ADDRESS_MAP_END
+void xevious_state::xevious_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */
+ map(0x6800, 0x6807).r(this, FUNC(xevious_state::bosco_dsw_r));
+ map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0));
+ map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x7000, 0x70ff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w));
+ map(0x7100, 0x7100).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w));
+ map(0x7800, 0x7fff).ram().share("share1"); /* work RAM */
+ map(0x8000, 0x87ff).ram().share("xevious_sr1"); /* work RAM + sprite registers */
+ map(0x9000, 0x97ff).ram().share("xevious_sr2"); /* work RAM + sprite registers */
+ map(0xa000, 0xa7ff).ram().share("xevious_sr3"); /* work RAM + sprite registers */
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(xevious_state::xevious_fg_colorram_w)).share("fg_colorram");
+ map(0xb800, 0xbfff).ram().w(this, FUNC(xevious_state::xevious_bg_colorram_w)).share("bg_colorram");
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(xevious_state::xevious_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(xevious_state::xevious_bg_videoram_w)).share("bg_videoram");
+ map(0xd000, 0xd07f).w(this, FUNC(xevious_state::xevious_vh_latch_w));
+ map(0xf000, 0xffff).rw(this, FUNC(xevious_state::xevious_bb_r), FUNC(xevious_state::xevious_bs_w));
+}
-ADDRESS_MAP_START(digdug_state::digdug_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */
- AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0)
- AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w)
- AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w)
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(digdug_videoram_w) AM_SHARE("videoram") /* tilemap RAM (bottom half of RAM 0 */
- AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("share1") /* work RAM (top half for RAM 0 */
- AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("digdug_objram") /* work RAM + sprite registers */
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("digdug_posram") /* work RAM + sprite registers */
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("digdug_flpram") /* work RAM + sprite registers */
- AM_RANGE(0xa000, 0xa007) AM_READNOP AM_DEVWRITE("videolatch", ls259_device, write_d0) /* video latches (spurious reads when setting latch bits) */
- AM_RANGE(0xb800, 0xb83f) AM_DEVREADWRITE("earom", atari_vg_earom_device, read, write) /* non volatile memory data */
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) /* non volatile memory control */
-ADDRESS_MAP_END
+void digdug_state::digdug_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */
+ map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0));
+ map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x7000, 0x70ff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w));
+ map(0x7100, 0x7100).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w));
+ map(0x8000, 0x83ff).ram().w(this, FUNC(digdug_state::digdug_videoram_w)).share("videoram"); /* tilemap RAM (bottom half of RAM 0 */
+ map(0x8400, 0x87ff).ram().share("share1"); /* work RAM (top half for RAM 0 */
+ map(0x8800, 0x8bff).ram().share("digdug_objram"); /* work RAM + sprite registers */
+ map(0x9000, 0x93ff).ram().share("digdug_posram"); /* work RAM + sprite registers */
+ map(0x9800, 0x9bff).ram().share("digdug_flpram"); /* work RAM + sprite registers */
+ map(0xa000, 0xa007).nopr().w(m_videolatch, FUNC(ls259_device::write_d0)); /* video latches (spurious reads when setting latch bits) */
+ map(0xb800, 0xb83f).rw("earom", FUNC(atari_vg_earom_device::read), FUNC(atari_vg_earom_device::write)); /* non volatile memory data */
+ map(0xb840, 0xb840).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); /* non volatile memory control */
+}
/* bootleg 4th CPU replacing the 5xXX chips */
-ADDRESS_MAP_START(galaga_state::galaga_mem4)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x107f) AM_RAM
-ADDRESS_MAP_END
+void galaga_state::galaga_mem4(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x107f).ram();
+}
-ADDRESS_MAP_START(xevious_state::battles_mem4)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x4000, 0x4003) AM_READ(battles_input_port_r)
- AM_RANGE(0x4001, 0x4001) AM_WRITE(battles_CPU4_coin_w)
- AM_RANGE(0x5000, 0x5000) AM_WRITE(battles_noise_sound_w)
- AM_RANGE(0x6000, 0x6000) AM_READWRITE(battles_customio3_r, battles_customio3_w)
- AM_RANGE(0x7000, 0x7000) AM_READWRITE(battles_customio_data3_r, battles_customio_data3_w)
- AM_RANGE(0x8000, 0x80ff) AM_RAM
-ADDRESS_MAP_END
+void xevious_state::battles_mem4(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x4003).r(this, FUNC(xevious_state::battles_input_port_r));
+ map(0x4001, 0x4001).w(this, FUNC(xevious_state::battles_CPU4_coin_w));
+ map(0x5000, 0x5000).w(this, FUNC(xevious_state::battles_noise_sound_w));
+ map(0x6000, 0x6000).rw(this, FUNC(xevious_state::battles_customio3_r), FUNC(xevious_state::battles_customio3_w));
+ map(0x7000, 0x7000).rw(this, FUNC(xevious_state::battles_customio_data3_r), FUNC(xevious_state::battles_customio_data3_w));
+ map(0x8000, 0x80ff).ram();
+}
ADDRESS_MAP_START(galaga_state::dzigzag_mem4)
AM_RANGE(0x0000, 0x0fff) AM_ROM
diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp
index 34412bcab45..1d768ebdb7e 100644
--- a/src/mame/drivers/galastrm.cpp
+++ b/src/mame/drivers/galastrm.cpp
@@ -134,22 +134,23 @@ WRITE32_MEMBER(galastrm_state::galastrm_adstick_ctrl_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(galastrm_state::galastrm_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") /* main CPUA ram */
- AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff)
- AM_RANGE(0x40fff0, 0x40fff3) AM_WRITENOP
- AM_RANGE(0x500000, 0x500007) AM_READWRITE(galastrm_adstick_ctrl_r, galastrm_adstick_ctrl_w)
- AM_RANGE(0x600000, 0x6007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) /* Sound shared ram */
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0x900000, 0x900003) AM_WRITE(galastrm_palette_w) /* TC0110PCR */
- AM_RANGE(0xb00000, 0xb00003) AM_WRITE(galastrm_tc0610_0_w) /* TC0610 */
- AM_RANGE(0xc00000, 0xc00003) AM_WRITE(galastrm_tc0610_1_w)
- AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* piv tilemaps */
- AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
-ADDRESS_MAP_END
+void galastrm_state::galastrm_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ 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();
+ map(0x500000, 0x500007).rw(this, FUNC(galastrm_state::galastrm_adstick_ctrl_r), FUNC(galastrm_state::galastrm_adstick_ctrl_w));
+ 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).w(this, FUNC(galastrm_state::galastrm_palette_w)); /* TC0110PCR */
+ map(0xb00000, 0xb00003).w(this, FUNC(galastrm_state::galastrm_tc0610_0_w)); /* TC0610 */
+ map(0xc00000, 0xc00003).w(this, FUNC(galastrm_state::galastrm_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));
+}
/***********************************************************
INPUT PORTS (dips in eprom)
diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp
index be98062dd6b..b403ecfeae1 100644
--- a/src/mame/drivers/galaxi.cpp
+++ b/src/mame/drivers/galaxi.cpp
@@ -302,53 +302,55 @@ CUSTOM_INPUT_MEMBER(galaxi_state::hopper_r)
Memory Maps
***************************************************************************/
-ADDRESS_MAP_START(galaxi_state::galaxi_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void galaxi_state::galaxi_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
- AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE(galaxi_bg1_w) AM_SHARE("bg1_ram")
- AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE(galaxi_bg2_w) AM_SHARE("bg2_ram")
- AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE(galaxi_bg3_w) AM_SHARE("bg3_ram")
- AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg4_w) AM_SHARE("bg4_ram")
+ map(0x100000, 0x1003ff).ram().w(this, FUNC(galaxi_state::galaxi_bg1_w)).share("bg1_ram");
+ map(0x100400, 0x1007ff).ram().w(this, FUNC(galaxi_state::galaxi_bg2_w)).share("bg2_ram");
+ map(0x100800, 0x100bff).ram().w(this, FUNC(galaxi_state::galaxi_bg3_w)).share("bg3_ram");
+ map(0x100c00, 0x100fff).ram().w(this, FUNC(galaxi_state::galaxi_bg4_w)).share("bg4_ram");
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram")
- AM_RANGE(0x102000, 0x107fff) AM_READNOP // unknown
+ map(0x101000, 0x101fff).ram().w(this, FUNC(galaxi_state::galaxi_fg_w)).share("fg_ram");
+ map(0x102000, 0x107fff).nopr(); // unknown
- AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x300000, 0x3007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w)
- AM_RANGE(0x500002, 0x500003) AM_WRITE(galaxi_500002_w)
- AM_RANGE(0x500004, 0x500005) AM_WRITE(galaxi_500004_w)
+ map(0x500000, 0x500001).portr("INPUTS");
+ map(0x500000, 0x500001).w(this, FUNC(galaxi_state::galaxi_500000_w));
+ map(0x500002, 0x500003).w(this, FUNC(galaxi_state::galaxi_500002_w));
+ map(0x500004, 0x500005).w(this, FUNC(galaxi_state::galaxi_500004_w));
- AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x700001, 0x700001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("nvram") // 2x DS1230Y (non volatile SRAM)
-ADDRESS_MAP_END
+ map(0x600000, 0x607fff).ram().share("nvram"); // 2x DS1230Y (non volatile SRAM)
+}
-ADDRESS_MAP_START(galaxi_state::lastfour_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void galaxi_state::lastfour_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
// bg3+4 / 1+2 seem to be swapped, order, palettes, scroll register etc. all suggest this
- AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE(galaxi_bg3_w) AM_SHARE("bg3_ram")
- AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE(galaxi_bg4_w) AM_SHARE("bg4_ram")
- AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE(galaxi_bg1_w) AM_SHARE("bg1_ram")
- AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg2_w) AM_SHARE("bg2_ram")
+ map(0x100000, 0x1003ff).ram().w(this, FUNC(galaxi_state::galaxi_bg3_w)).share("bg3_ram");
+ map(0x100400, 0x1007ff).ram().w(this, FUNC(galaxi_state::galaxi_bg4_w)).share("bg4_ram");
+ map(0x100800, 0x100bff).ram().w(this, FUNC(galaxi_state::galaxi_bg1_w)).share("bg1_ram");
+ map(0x100c00, 0x100fff).ram().w(this, FUNC(galaxi_state::galaxi_bg2_w)).share("bg2_ram");
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram")
- AM_RANGE(0x102000, 0x107fff) AM_READNOP // unknown
+ map(0x101000, 0x101fff).ram().w(this, FUNC(galaxi_state::galaxi_fg_w)).share("fg_ram");
+ map(0x102000, 0x107fff).nopr(); // unknown
- AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x300000, 0x3007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w)
- AM_RANGE(0x500002, 0x500003) AM_WRITE(galaxi_500002_w)
- AM_RANGE(0x500004, 0x500005) AM_WRITE(galaxi_500004_w)
+ map(0x500000, 0x500001).portr("INPUTS");
+ map(0x500000, 0x500001).w(this, FUNC(galaxi_state::galaxi_500000_w));
+ map(0x500002, 0x500003).w(this, FUNC(galaxi_state::galaxi_500002_w));
+ map(0x500004, 0x500005).w(this, FUNC(galaxi_state::galaxi_500004_w));
- AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x700001, 0x700001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("nvram") // 2x DS1230Y (non volatile SRAM)
-ADDRESS_MAP_END
+ map(0x600000, 0x607fff).ram().share("nvram"); // 2x DS1230Y (non volatile SRAM)
+}
/***************************************************************************
diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp
index 05f09383f48..4cc2db75004 100644
--- a/src/mame/drivers/galaxia.cpp
+++ b/src/mame/drivers/galaxia.cpp
@@ -131,41 +131,45 @@ READ8_MEMBER(galaxia_state::galaxia_collision_clear)
return 0xff;
}
-ADDRESS_MAP_START(galaxia_state::galaxia_mem_map)
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("bullet_ram")
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_2", s2636_device, read_data, write_data)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(galaxia_video_w) AM_SHARE("video_ram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x33ff) AM_ROM
- AM_RANGE(0x7214, 0x7214) AM_READ_PORT("IN0")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxia_state::astrowar_mem_map)
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(galaxia_video_w) AM_SHARE("video_ram")
- AM_RANGE(0x1c00, 0x1cff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("bullet_ram")
- AM_RANGE(0x2000, 0x33ff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxia_state::galaxia_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_WRITE(galaxia_scroll_w) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1")
- AM_RANGE(0x05, 0x05) AM_READNOP
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW0")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW1")
- AM_RANGE(0xac, 0xac) AM_READNOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxia_state::galaxia_data_map)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(galaxia_collision_r, galaxia_ctrlport_w)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(galaxia_collision_clear, galaxia_dataport_w)
-ADDRESS_MAP_END
+void galaxia_state::galaxia_mem_map(address_map &map)
+{
+ map(0x0000, 0x13ff).rom();
+ map(0x1400, 0x14ff).mirror(0x6000).ram().share("bullet_ram");
+ map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1600, 0x16ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1700, 0x17ff).mirror(0x6000).rw(m_s2636_2, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1800, 0x1bff).mirror(0x6000).r(this, FUNC(galaxia_state::cvs_video_or_color_ram_r)).w(this, FUNC(galaxia_state::galaxia_video_w)).share("video_ram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x33ff).rom();
+ map(0x7214, 0x7214).portr("IN0");
+}
+
+void galaxia_state::astrowar_mem_map(address_map &map)
+{
+ map(0x0000, 0x13ff).rom();
+ map(0x1400, 0x14ff).mirror(0x6000).ram();
+ map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1800, 0x1bff).mirror(0x6000).r(this, FUNC(galaxia_state::cvs_video_or_color_ram_r)).w(this, FUNC(galaxia_state::galaxia_video_w)).share("video_ram");
+ map(0x1c00, 0x1cff).mirror(0x6000).ram().share("bullet_ram");
+ map(0x2000, 0x33ff).rom();
+}
+
+void galaxia_state::galaxia_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).w(this, FUNC(galaxia_state::galaxia_scroll_w)).portr("IN0");
+ map(0x02, 0x02).portr("IN1");
+ map(0x05, 0x05).nopr();
+ map(0x06, 0x06).portr("DSW0");
+ map(0x07, 0x07).portr("DSW1");
+ map(0xac, 0xac).nopr();
+}
+
+void galaxia_state::galaxia_data_map(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(galaxia_state::galaxia_collision_r), FUNC(galaxia_state::galaxia_ctrlport_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(galaxia_state::galaxia_collision_clear), FUNC(galaxia_state::galaxia_dataport_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 6ec811f4a76..ec09fa0a810 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -1549,228 +1549,243 @@ LATCH: (write 7000-77ff)
/* map derived from schematics */
-ADDRESS_MAP_START(galaxian_state::galaxian_map_discrete)
- AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
- AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::galaxian_map_base)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w)
- AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x07f8) AM_WRITE(coin_lock_w)
- AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
+void galaxian_state::galaxian_map_discrete(address_map &map)
+{
+ map(0x6004, 0x6007).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x6800, 0x6807).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::sound_w));
+ map(0x7800, 0x7800).mirror(0x07ff).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+void galaxian_state::galaxian_map_base(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0x0400).ram();
+ map(0x5000, 0x53ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5800, 0x58ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x6000, 0x6000).mirror(0x07ff).portr("IN0");
+ map(0x6000, 0x6001).mirror(0x07f8).w(this, FUNC(galaxian_state::start_lamp_w));
+ map(0x6002, 0x6002).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_lock_w));
+ map(0x6003, 0x6003).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
//AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
+ map(0x6800, 0x6800).mirror(0x07ff).portr("IN1");
//AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
+ map(0x7000, 0x7000).mirror(0x07ff).portr("IN2");
+ map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
//AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+ map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
-ADDRESS_MAP_START(galaxian_state::galaxian_map)
- AM_IMPORT_FROM(galaxian_map_base)
- AM_IMPORT_FROM(galaxian_map_discrete)
-ADDRESS_MAP_END
+void galaxian_state::galaxian_map(address_map &map)
+{
+ galaxian_map_base(map);
+ galaxian_map_discrete(map);
+}
/* map derived from schematics */
-ADDRESS_MAP_START(galaxian_state::mooncrst_map_discrete)
- AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
- AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::mooncrst_map_base)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
- AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w)
- AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
+void galaxian_state::mooncrst_map_discrete(address_map &map)
+{
+ map(0xa004, 0xa007).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0xa800, 0xa807).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::sound_w));
+ map(0xb800, 0xb800).mirror(0x07ff).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+void galaxian_state::mooncrst_map_base(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x83ff).mirror(0x0400).ram();
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).mirror(0x07ff).portr("IN0");
+ map(0xa000, 0xa002).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_gfxbank_w));
+ map(0xa003, 0xa003).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
// AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
+ map(0xa800, 0xa800).mirror(0x07ff).portr("IN1");
// AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
+ map(0xb000, 0xb000).mirror(0x07ff).portr("IN2");
+ map(0xb000, 0xb000).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xb004, 0xb004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0xb006, 0xb006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xb007, 0xb007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
// AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::moonqsr_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::mooncrst_map)
- AM_IMPORT_FROM(mooncrst_map_base)
- AM_IMPORT_FROM(mooncrst_map_discrete)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxian_state::fantastc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("8910.0", ay8910_device, address_w)
- AM_RANGE(0x880b, 0x880b) AM_DEVWRITE("8910.0", ay8910_device, data_w)
- AM_RANGE(0x880c, 0x880c) AM_DEVWRITE("8910.1", ay8910_device, address_w)
- AM_RANGE(0x880e, 0x880e) AM_DEVWRITE("8910.1", ay8910_device, data_w)
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
- AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xfffe, 0xfffe) AM_NOP // ?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::timefgtr_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("8910.0", ay8910_device, address_w)
- AM_RANGE(0x880b, 0x880b) AM_DEVWRITE("8910.0", ay8910_device, data_w)
- AM_RANGE(0x880c, 0x880c) AM_DEVWRITE("8910.1", ay8910_device, address_w)
- AM_RANGE(0x880e, 0x880e) AM_DEVWRITE("8910.1", ay8910_device, data_w)
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
- AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void galaxian_state::moonqsr_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().share("decrypted_opcodes");
+}
+
+void galaxian_state::mooncrst_map(address_map &map)
+{
+ mooncrst_map_base(map);
+ mooncrst_map_discrete(map);
+}
+
+
+void galaxian_state::fantastc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8803, 0x8803).w("8910.0", FUNC(ay8910_device::address_w));
+ map(0x880b, 0x880b).w("8910.0", FUNC(ay8910_device::data_w));
+ map(0x880c, 0x880c).w("8910.1", FUNC(ay8910_device::address_w));
+ map(0x880e, 0x880e).w("8910.1", FUNC(ay8910_device::data_w));
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).mirror(0x07ff).portr("IN0");
+ map(0xa800, 0xa800).mirror(0x07ff).portr("IN1");
+ map(0xb000, 0xb000).mirror(0x07ff).portr("IN2");
+ map(0xb000, 0xb000).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xfffe, 0xfffe).noprw(); // ?
+}
+
+void galaxian_state::timefgtr_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8803, 0x8803).w("8910.0", FUNC(ay8910_device::address_w));
+ map(0x880b, 0x880b).w("8910.0", FUNC(ay8910_device::data_w));
+ map(0x880c, 0x880c).w("8910.1", FUNC(ay8910_device::address_w));
+ map(0x880e, 0x880e).w("8910.1", FUNC(ay8910_device::data_w));
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x9bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).mirror(0x07ff).portr("IN0");
+ map(0xa800, 0xa800).mirror(0x07ff).portr("IN1");
+ map(0xb000, 0xb000).mirror(0x07ff).portr("IN2");
+ map(0xb000, 0xb000).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xb004, 0xb004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
// AM_RANGE(0xb800, 0xb800) AM_WRITENOP // ?
// AM_RANGE(0xfff8, 0xffff) AM_WRITENOP // sound related?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::zigzag_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("bank1")
- AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank2")
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x4800, 0x4fff) AM_WRITE(zigzag_ay8910_w)
- AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w)
- AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x07f8) AM_WRITE(zigzag_bankswap_w)
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+}
+
+void galaxian_state::zigzag_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x2fff).bankr("bank1");
+ map(0x3000, 0x3fff).bankr("bank2");
+ map(0x4000, 0x43ff).mirror(0x0400).ram();
+ map(0x4800, 0x4fff).w(this, FUNC(galaxian_state::zigzag_ay8910_w));
+ map(0x5000, 0x53ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5800, 0x58ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x6000, 0x6000).mirror(0x07ff).portr("IN0");
+ map(0x6000, 0x6001).mirror(0x07f8).w(this, FUNC(galaxian_state::start_lamp_w));
+ map(0x6003, 0x6003).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x6800, 0x6800).mirror(0x07ff).portr("IN1");
+ map(0x7000, 0x7000).mirror(0x07ff).portr("IN2");
+ map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x7002, 0x7002).mirror(0x07f8).w(this, FUNC(galaxian_state::zigzag_bankswap_w));
+ map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
/* map derived from schematics */
-ADDRESS_MAP_START(galaxian_state::theend_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_enable_w)
- AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) //POUT2
- AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w)
-ADDRESS_MAP_END
+void galaxian_state::theend_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_enable_w));
+ map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x6805, 0x6805).mirror(0x07f8); //POUT2
+ map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x7000, 0x7000).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8000, 0xffff).rw(this, FUNC(galaxian_state::theend_ppi8255_r), FUNC(galaxian_state::theend_ppi8255_w));
+}
/* map not derived from schematics. Used by explorer and takeoff */
-ADDRESS_MAP_START(galaxian_state::explorer_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x6800, 0x6800) AM_WRITENOP // ????
- AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_enable_w)
- AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) //POUT2
- AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) /* watchdog works for writes as well? (or is it just disabled?) */
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0");
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1");
- AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x0ffc) AM_READ_PORT("IN2");
- AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x0ffc) AM_READ_PORT("IN3");
- AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0fff) AM_WRITE(explorer_sound_control_w);
-ADDRESS_MAP_END
+void galaxian_state::explorer_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x6800, 0x6800).nopw(); // ????
+ map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_enable_w));
+ map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x6805, 0x6805).mirror(0x07f8); //POUT2
+ map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x7000, 0x7000).mirror(0x07ff).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); /* watchdog works for writes as well? (or is it just disabled?) */
+ map(0x8000, 0x8000).mirror(0x0ffc).portr("IN0");
+ map(0x8000, 0x8000).mirror(0x0fff).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x8001, 0x8001).mirror(0x0ffc).portr("IN1");
+ map(0x8002, 0x8002).mirror(0x0ffc).portr("IN2");
+ map(0x8003, 0x8003).mirror(0x0ffc).portr("IN3");
+ map(0x9000, 0x9000).mirror(0x0fff).w(this, FUNC(galaxian_state::explorer_sound_control_w));
+}
/* map derived from schematics */
-ADDRESS_MAP_START(galaxian_state::scobra_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x4000) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x4700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x9800, 0x9803) AM_MIRROR(0x47fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x47fc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xa801, 0xa801) AM_MIRROR(0x47f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x47f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0xa803, 0xa803) AM_MIRROR(0x47f8) AM_WRITE(scramble_background_enable_w)
- AM_RANGE(0xa804, 0xa804) AM_MIRROR(0x47f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0xa805, 0xa805) AM_MIRROR(0x47f8) /* POUT2 */
- AM_RANGE(0xa806, 0xa806) AM_MIRROR(0x47f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xa807, 0xa807) AM_MIRROR(0x47f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x47ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxian_state::anteateruk_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x0400, 0x0bff) AM_RAM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x01f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x01f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x01f8) AM_WRITE(scramble_background_enable_w)
- AM_RANGE(0x1004, 0x1004) AM_MIRROR(0x01f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x1005, 0x1005) AM_MIRROR(0x01f8) //POUT2
- AM_RANGE(0x1006, 0x1006) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x1007, 0x1007) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x0100) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x4000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xc100, 0xc103) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxian_state::spactrai_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x01ff) AM_ROM
- AM_RANGE(0x0200, 0x05ff) AM_RAM // this sits over ROM, does the 0x400 bytes of ROM underneath bank or appear elsewhere?
- AM_RANGE(0x0600, 0x11ff) AM_ROM
- AM_RANGE(0x1200, 0x15ff) AM_RAM AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") // see above comment
- AM_RANGE(0x1600, 0x4fff) AM_ROM
+void galaxian_state::scobra_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).mirror(0x4000).ram();
+ map(0x8800, 0x8bff).mirror(0x4400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9000, 0x90ff).mirror(0x4700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x9800, 0x9803).mirror(0x47fc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa000, 0xa003).mirror(0x47fc).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa801, 0xa801).mirror(0x47f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xa802, 0xa802).mirror(0x47f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0xa803, 0xa803).mirror(0x47f8).w(this, FUNC(galaxian_state::scramble_background_enable_w));
+ map(0xa804, 0xa804).mirror(0x47f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0xa805, 0xa805).mirror(0x47f8); /* POUT2 */
+ map(0xa806, 0xa806).mirror(0x47f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xa807, 0xa807).mirror(0x47f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xb000, 0xb000).mirror(0x47ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+
+void galaxian_state::anteateruk_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x0bff).ram();
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x1001, 0x1001).mirror(0x01f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x1002, 0x1002).mirror(0x01f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x1003, 0x1003).mirror(0x01f8).w(this, FUNC(galaxian_state::scramble_background_enable_w));
+ map(0x1004, 0x1004).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x1005, 0x1005).mirror(0x01f8); //POUT2
+ map(0x1006, 0x1006).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x1007, 0x1007).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x1200, 0x12ff).mirror(0x0100).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x1400, 0x1400).mirror(0x03ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x4000, 0xbfff).rom();
+ map(0xc000, 0xc003).mirror(0x3efc).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc100, 0xc103).mirror(0x3efc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+
+void galaxian_state::spactrai_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x01ff).rom();
+ map(0x0200, 0x05ff).ram(); // this sits over ROM, does the 0x400 bytes of ROM underneath bank or appear elsewhere?
+ map(0x0600, 0x11ff).rom();
+ map(0x1200, 0x15ff).ram().ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); // see above comment
+ map(0x1600, 0x4fff).rom();
// cleared on startup
// AM_RANGE(0x6000, 0x60ff) AM_RAM
@@ -1778,184 +1793,192 @@ ADDRESS_MAP_START(galaxian_state::spactrai_map)
// AM_RANGE(0x7000, 0x70ff) AM_RAM
// standard galaxian mapping?
- AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
- AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
-
-
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
-
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
- AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-
- AM_RANGE(0xfe00, 0xfeff) AM_RAM AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::anteaterg_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x0400, 0x0bff) AM_RAM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x01fc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x2601, 0x2601) AM_MIRROR(0x01f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x2602, 0x2602) AM_MIRROR(0x01f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x2603, 0x2603) AM_MIRROR(0x01f8) AM_WRITE(scramble_background_enable_w)
- AM_RANGE(0x2604, 0x2604) AM_MIRROR(0x01f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x2605, 0x2605) AM_MIRROR(0x01f8) //POUT2
- AM_RANGE(0x2606, 0x2606) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x2607, 0x2607) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x4000, 0x7bff) AM_ROM
- AM_RANGE(0x7c00, 0x7fff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") /* mirror! */
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xf400, 0xf400) AM_MIRROR(0x01ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x01fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::anteatergg_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(galaxian_map_discrete)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5800, 0x58ff) AM_RAM AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
+ map(0x6004, 0x6007).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x6800, 0x6807).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::sound_w));
+ map(0x7800, 0x7800).mirror(0x07ff).w("cust", FUNC(galaxian_sound_device::pitch_w));
+
+ map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+
+
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6800, 0x6800).portr("IN1");
+
+ map(0x7000, 0x7000).portr("IN2");
+ map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+
+ map(0xfe00, 0xfeff).ram().ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+
+}
+
+void galaxian_state::anteaterg_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x0bff).ram();
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x2000, 0x20ff).mirror(0x0300).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x2400, 0x2403).mirror(0x01fc).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x2601, 0x2601).mirror(0x01f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x2602, 0x2602).mirror(0x01f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x2603, 0x2603).mirror(0x01f8).w(this, FUNC(galaxian_state::scramble_background_enable_w));
+ map(0x2604, 0x2604).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x2605, 0x2605).mirror(0x01f8); //POUT2
+ map(0x2606, 0x2606).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x2607, 0x2607).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x4000, 0x7bff).rom();
+ map(0x7c00, 0x7fff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); /* mirror! */
+ map(0x8000, 0xbfff).rom();
+ map(0xf400, 0xf400).mirror(0x01ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xf600, 0xf603).mirror(0x01fc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void galaxian_state::anteatergg_map(address_map &map)
+{
+ map.unmap_value_high();
+ galaxian_map_discrete(map);
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).ram();
+ map(0x5000, 0x53ff).ram().ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5800, 0x58ff).ram().ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
// AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
+ map(0x6000, 0x6000).mirror(0x07ff).portr("IN0");
// AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w)
// AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x07f8) AM_WRITE(coin_lock_w)
// AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+ map(0x6800, 0x6800).mirror(0x07ff).portr("IN1");
+ map(0x7000, 0x7000).mirror(0x07ff).portr("IN2");
+ map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
/* map derived from schematics */
-ADDRESS_MAP_START(galaxian_state::frogger_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xb808, 0xb808) AM_MIRROR(0x07e3) AM_WRITE(irq_enable_w)
- AM_RANGE(0xb80c, 0xb80c) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0xb810, 0xb810) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xb818, 0xb818) AM_MIRROR(0x07e3) AM_WRITE(coin_count_0_w) /* IOPC7 */
- AM_RANGE(0xb81c, 0xb81c) AM_MIRROR(0x07e3) AM_WRITE(coin_count_1_w) /* POUT1 */
- AM_RANGE(0xc000, 0xffff) AM_READWRITE(frogger_ppi8255_r, frogger_ppi8255_w)
-ADDRESS_MAP_END
+void galaxian_state::frogger_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xa800, 0xabff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0xb000, 0xb0ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xb808, 0xb808).mirror(0x07e3).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xb80c, 0xb80c).mirror(0x07e3).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xb810, 0xb810).mirror(0x07e3).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xb818, 0xb818).mirror(0x07e3).w(this, FUNC(galaxian_state::coin_count_0_w)); /* IOPC7 */
+ map(0xb81c, 0xb81c).mirror(0x07e3).w(this, FUNC(galaxian_state::coin_count_1_w)); /* POUT1 */
+ map(0xc000, 0xffff).rw(this, FUNC(galaxian_state::frogger_ppi8255_r), FUNC(galaxian_state::frogger_ppi8255_w));
+}
/* map derived from schematics */
-ADDRESS_MAP_START(galaxian_state::turtles_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x4000) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x4700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_red_w)
- AM_RANGE(0xa008, 0xa008) AM_MIRROR(0x47c7) AM_WRITE(irq_enable_w)
- AM_RANGE(0xa010, 0xa010) AM_MIRROR(0x47c7) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0xa018, 0xa018) AM_MIRROR(0x47c7) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xa020, 0xa020) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_green_w)
- AM_RANGE(0xa028, 0xa028) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_blue_w)
- AM_RANGE(0xa030, 0xa030) AM_MIRROR(0x47c7) AM_WRITE(coin_count_0_w)
- AM_RANGE(0xa038, 0xa038) AM_MIRROR(0x47c7) AM_WRITE(coin_count_1_w)
- AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x47ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xb000, 0xb03f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_0_r, turtles_ppi8255_0_w)
- AM_RANGE(0xb800, 0xb83f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_1_r, turtles_ppi8255_1_w)
-ADDRESS_MAP_END
+void galaxian_state::turtles_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).mirror(0x4000).ram();
+ map(0x9000, 0x93ff).mirror(0x4400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).mirror(0x4700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).mirror(0x47c7).w(this, FUNC(galaxian_state::scramble_background_red_w));
+ map(0xa008, 0xa008).mirror(0x47c7).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xa010, 0xa010).mirror(0x47c7).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xa018, 0xa018).mirror(0x47c7).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xa020, 0xa020).mirror(0x47c7).w(this, FUNC(galaxian_state::scramble_background_green_w));
+ map(0xa028, 0xa028).mirror(0x47c7).w(this, FUNC(galaxian_state::scramble_background_blue_w));
+ map(0xa030, 0xa030).mirror(0x47c7).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0xa038, 0xa038).mirror(0x47c7).w(this, FUNC(galaxian_state::coin_count_1_w));
+ map(0xa800, 0xa800).mirror(0x47ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xb000, 0xb03f).mirror(0x47c0).rw(this, FUNC(galaxian_state::turtles_ppi8255_0_r), FUNC(galaxian_state::turtles_ppi8255_0_w));
+ map(0xb800, 0xb83f).mirror(0x47c0).rw(this, FUNC(galaxian_state::turtles_ppi8255_1_r), FUNC(galaxian_state::turtles_ppi8255_1_w));
+}
/* map NOT derived from schematics */
-ADDRESS_MAP_START(galaxian_state::amigo2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1")
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("IN2")
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("IN3")
- AM_RANGE(0x5000, 0x5000) AM_WRITE(konami_sound_control_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x90ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(scramble_background_red_w)
- AM_RANGE(0xa008, 0xa008) AM_WRITE(irq_enable_w)
- AM_RANGE(0xa010, 0xa010) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0xa018, 0xa018) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xa020, 0xa020) AM_WRITE(scramble_background_green_w)
- AM_RANGE(0xa028, 0xa028) AM_WRITE(scramble_background_blue_w)
- AM_RANGE(0xa030, 0xa030) AM_WRITE(coin_count_0_w)
- AM_RANGE(0xa038, 0xa038) AM_WRITE(coin_count_1_w)
- AM_RANGE(0xa800, 0xa800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::turpins_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x98ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa030, 0xa030) AM_WRITE(coin_count_0_w)
- AM_RANGE(0xa038, 0xa038) AM_WRITE(coin_count_1_w)
- AM_RANGE(0xa801, 0xa801) AM_WRITE(irq_enable_w)
- AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
-ADDRESS_MAP_END
+void galaxian_state::amigo2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4000).portr("IN0").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x4001, 0x4001).portr("IN1");
+ map(0x4002, 0x4002).portr("IN2");
+ map(0x4003, 0x4003).portr("IN3");
+ map(0x5000, 0x5000).w(this, FUNC(galaxian_state::konami_sound_control_w));
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9000, 0x90ff).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).w(this, FUNC(galaxian_state::scramble_background_red_w));
+ map(0xa008, 0xa008).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xa010, 0xa010).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xa018, 0xa018).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xa020, 0xa020).w(this, FUNC(galaxian_state::scramble_background_green_w));
+ map(0xa028, 0xa028).w(this, FUNC(galaxian_state::scramble_background_blue_w));
+ map(0xa030, 0xa030).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0xa038, 0xa038).w(this, FUNC(galaxian_state::coin_count_1_w));
+ map(0xa800, 0xa800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void galaxian_state::turpins_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa030, 0xa030).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0xa038, 0xa038).w(this, FUNC(galaxian_state::coin_count_1_w));
+ map(0xa801, 0xa801).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xa806, 0xa806).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xa807, 0xa807).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc000, 0xc003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* this is the same as theend, except for separate RGB background controls
and some extra ROM space at $7000 and $C000 */
-ADDRESS_MAP_START(galaxian_state::sfx_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_red_w)
- AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_blue_w)
- AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_green_w)
- AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w)
- AM_RANGE(0xc000, 0xefff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxian_state::monsterz_map)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0x3800, 0x3fff) AM_RAM // extra RAM used by protection
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_red_w)
- AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_blue_w)
- AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_green_w)
- AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w)
- AM_RANGE(0xc000, 0xd7ff) AM_ROM
- AM_RANGE(0xd800, 0xd800) AM_READ(monsterz_protection_r)
-ADDRESS_MAP_END
+void galaxian_state::sfx_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x6800, 0x6800).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_red_w));
+ map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_blue_w));
+ map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x6805, 0x6805).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_green_w));
+ map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x7000, 0x7fff).rom();
+ map(0x8000, 0xbfff).rw(this, FUNC(galaxian_state::theend_ppi8255_r), FUNC(galaxian_state::theend_ppi8255_w));
+ map(0xc000, 0xefff).rom();
+}
+
+
+void galaxian_state::monsterz_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0x3800, 0x3fff).ram(); // extra RAM used by protection
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x6800, 0x6800).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_red_w));
+ map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_blue_w));
+ map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x6805, 0x6805).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_green_w));
+ map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x8000, 0xbfff).rw(this, FUNC(galaxian_state::theend_ppi8255_r), FUNC(galaxian_state::theend_ppi8255_w));
+ map(0xc000, 0xd7ff).rom();
+ map(0xd800, 0xd800).r(this, FUNC(galaxian_state::monsterz_protection_r));
+}
/* changes from galaxian map:
@@ -1967,75 +1990,80 @@ ADDRESS_MAP_END
$8000-$afff: additional ROM area
$b000-$bfff: protection
*/
-ADDRESS_MAP_START(galaxian_state::jumpbug_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x00ff) AM_DEVWRITE("8910.0", ay8910_device, data_w)
- AM_RANGE(0x5900, 0x5900) AM_MIRROR(0x00ff) AM_DEVWRITE("8910.0", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
- AM_RANGE(0x6002, 0x6006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w)
- AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0x8000, 0xafff) AM_ROM
- AM_RANGE(0xb000, 0xbfff) AM_READ(jumpbug_protection_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxian_state::frogf_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x07f1) AM_WRITE(galaxian_flip_screen_x_w)
- AM_RANGE(0xa804, 0xa804) AM_MIRROR(0x07f1) AM_WRITE(irq_enable_w)
- AM_RANGE(0xa806, 0xa806) AM_MIRROR(0x07f1) AM_WRITE(galaxian_flip_screen_y_w)
- AM_RANGE(0xa808, 0xa808) AM_MIRROR(0x07f1) AM_WRITE(coin_count_1_w)
- AM_RANGE(0xa80e, 0xa80e) AM_MIRROR(0x07f1) AM_WRITE(coin_count_0_w)
- AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc000, 0xffff) AM_READWRITE(frogf_ppi8255_r, frogf_ppi8255_w)
-ADDRESS_MAP_END
+void galaxian_state::jumpbug_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0x5800, 0x5800).mirror(0x00ff).w("8910.0", FUNC(ay8910_device::data_w));
+ map(0x5900, 0x5900).mirror(0x00ff).w("8910.0", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6000).mirror(0x07ff).portr("IN0");
+ map(0x6002, 0x6006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_gfxbank_w));
+ map(0x6800, 0x6800).mirror(0x07ff).portr("IN1");
+ map(0x7000, 0x7000).mirror(0x07ff).portr("IN2");
+ map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0x7002, 0x7002).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0x8000, 0xafff).rom();
+ map(0xb000, 0xbfff).r(this, FUNC(galaxian_state::jumpbug_protection_r));
+}
+
+
+void galaxian_state::frogf_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9000, 0x90ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa802, 0xa802).mirror(0x07f1).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xa804, 0xa804).mirror(0x07f1).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xa806, 0xa806).mirror(0x07f1).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xa808, 0xa808).mirror(0x07f1).w(this, FUNC(galaxian_state::coin_count_1_w));
+ map(0xa80e, 0xa80e).mirror(0x07f1).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc000, 0xffff).rw(this, FUNC(galaxian_state::frogf_ppi8255_r), FUNC(galaxian_state::frogf_ppi8255_w));
+}
/* mooncrst */
-ADDRESS_MAP_START(galaxian_state::mshuttle_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(irq_enable_w)
- AM_RANGE(0xa001, 0xa001) AM_WRITE(galaxian_stars_enable_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(galaxian_flip_screen_xy_w)
- AM_RANGE(0xa004, 0xa004) AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_trigger_w)
- AM_RANGE(0xa007, 0xa007) AM_WRITE(mshuttle_ay8910_cs_w)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("IN2")
- AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::mshuttle_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::mshuttle_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x08, 0x08) AM_WRITE(mshuttle_ay8910_control_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(mshuttle_ay8910_data_w)
- AM_RANGE(0x0c, 0x0c) AM_READ(mshuttle_ay8910_data_r)
-ADDRESS_MAP_END
+void galaxian_state::mshuttle_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa000, 0xa000).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xa001, 0xa001).w(this, FUNC(galaxian_state::galaxian_stars_enable_w));
+ map(0xa002, 0xa002).w(this, FUNC(galaxian_state::galaxian_flip_screen_xy_w));
+ map(0xa004, 0xa004).w("cclimber_audio", FUNC(cclimber_audio_device::sample_trigger_w));
+ map(0xa007, 0xa007).w(this, FUNC(galaxian_state::mshuttle_ay8910_cs_w));
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xa800, 0xa800).w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("IN2");
+ map(0xb000, 0xb000).w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void galaxian_state::mshuttle_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+void galaxian_state::mshuttle_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x0f);
+ map(0x08, 0x08).w(this, FUNC(galaxian_state::mshuttle_ay8910_control_w));
+ map(0x09, 0x09).w(this, FUNC(galaxian_state::mshuttle_ay8910_data_w));
+ map(0x0c, 0x0c).r(this, FUNC(galaxian_state::mshuttle_ay8910_data_r));
+}
WRITE8_MEMBER(galaxian_state::tenspot_unk_6000_w)
@@ -2053,17 +2081,18 @@ WRITE8_MEMBER(galaxian_state::tenspot_unk_e000_w)
logerror("tenspot_unk_e000_w %02x\n",data);
}
-ADDRESS_MAP_START(galaxian_state::tenspot_select_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("SELECT2")
- AM_RANGE(0x6000, 0x6000) AM_WRITE(tenspot_unk_6000_w)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SELECT")
- AM_RANGE(0x8000, 0x8000) AM_WRITE(tenspot_unk_8000_w)
- AM_RANGE(0xa000, 0xa03f) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_WRITE(tenspot_unk_e000_w)
-ADDRESS_MAP_END
+void galaxian_state::tenspot_select_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x4000).portr("SELECT2");
+ map(0x6000, 0x6000).w(this, FUNC(galaxian_state::tenspot_unk_6000_w));
+ map(0xc000, 0xc000).portr("SELECT");
+ map(0x8000, 0x8000).w(this, FUNC(galaxian_state::tenspot_unk_8000_w));
+ map(0xa000, 0xa03f).ram();
+ map(0xe000, 0xe000).w(this, FUNC(galaxian_state::tenspot_unk_e000_w));
+}
READ8_MEMBER(galaxian_state::froggeram_ppi8255_r)
@@ -2083,19 +2112,20 @@ WRITE8_MEMBER(galaxian_state::froggeram_ppi8255_w)
if (offset & 0x0200) m_ppi8255[1]->write(space, offset & 3, data);
}
-ADDRESS_MAP_START(galaxian_state::froggeram_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_READWRITE(froggeram_ppi8255_r, froggeram_ppi8255_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xa800, 0xabff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb000, 0xb0ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
- AM_RANGE(0xb801, 0xb801) AM_WRITE(irq_enable_w)
- AM_RANGE(0xb802, 0xb802) AM_WRITE(coin_count_0_w)
- AM_RANGE(0xb806, 0xb806) AM_WRITE(galaxian_flip_screen_x_w) // always set to 0?
- AM_RANGE(0xb807, 0xb807) AM_WRITE(galaxian_flip_screen_y_w) // always set to 0?
-ADDRESS_MAP_END
+void galaxian_state::froggeram_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x43ff).rw(this, FUNC(galaxian_state::froggeram_ppi8255_r), FUNC(galaxian_state::froggeram_ppi8255_w));
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xa800, 0xabff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0xb000, 0xb0ff).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xb801, 0xb801).w(this, FUNC(galaxian_state::irq_enable_w));
+ map(0xb802, 0xb802).w(this, FUNC(galaxian_state::coin_count_0_w));
+ map(0xb806, 0xb806).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); // always set to 0?
+ map(0xb807, 0xb807).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); // always set to 0?
+}
/*************************************
*
@@ -2104,103 +2134,117 @@ ADDRESS_MAP_END
*************************************/
/* Konami Frogger with 1 x AY-8910A */
-ADDRESS_MAP_START(galaxian_state::frogger_sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x1000) AM_WRITE(konami_sound_filter_w)
-ADDRESS_MAP_END
+void galaxian_state::frogger_sound_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).mirror(0x1c00).ram();
+ map(0x6000, 0x6fff).mirror(0x1000).w(this, FUNC(galaxian_state::konami_sound_filter_w));
+}
-ADDRESS_MAP_START(galaxian_state::frogger_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(frogger_ay8910_r, frogger_ay8910_w)
-ADDRESS_MAP_END
+void galaxian_state::frogger_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(galaxian_state::frogger_ay8910_r), FUNC(galaxian_state::frogger_ay8910_w));
+}
/* Konami generic with 2 x AY-8910A */
-ADDRESS_MAP_START(galaxian_state::konami_sound_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM
- AM_RANGE(0x9000, 0x9fff) AM_MIRROR(0x6000) AM_WRITE(konami_sound_filter_w)
-ADDRESS_MAP_END
+void galaxian_state::konami_sound_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x8000, 0x83ff).mirror(0x6c00).ram();
+ map(0x9000, 0x9fff).mirror(0x6000).w(this, FUNC(galaxian_state::konami_sound_filter_w));
+}
-ADDRESS_MAP_START(galaxian_state::konami_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(konami_ay8910_r, konami_ay8910_w)
-ADDRESS_MAP_END
+void galaxian_state::konami_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(galaxian_state::konami_ay8910_r), FUNC(galaxian_state::konami_ay8910_w));
+}
/* Checkman with 1 x AY-8910A */
-ADDRESS_MAP_START(galaxian_state::checkman_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-ADDRESS_MAP_END
+void galaxian_state::checkman_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+}
-ADDRESS_MAP_START(galaxian_state::checkman_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("8910.0", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("8910.0", ay8910_device, data_r)
-ADDRESS_MAP_END
+void galaxian_state::checkman_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x03, 0x03).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x05).w("8910.0", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r("8910.0", FUNC(ay8910_device::data_r));
+}
/* Checkman alternate with 1 x AY-8910A */
-ADDRESS_MAP_START(galaxian_state::checkmaj_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("8910.0", ay8910_device, address_data_w)
- AM_RANGE(0xa002, 0xa002) AM_DEVREAD("8910.0", ay8910_device, data_r)
-ADDRESS_MAP_END
+void galaxian_state::checkmaj_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0xa000, 0xa001).w("8910.0", FUNC(ay8910_device::address_data_w));
+ map(0xa002, 0xa002).r("8910.0", FUNC(ay8910_device::data_r));
+}
/* Take Off with 1x AY-8912*/
-ADDRESS_MAP_START(galaxian_state::takeoff_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM
-ADDRESS_MAP_END
+void galaxian_state::takeoff_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x8000, 0x83ff).mirror(0x6c00).ram();
+}
-ADDRESS_MAP_START(galaxian_state::takeoff_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x20) AM_READ(konami_sound_timer_r)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("8912", ay8912_device, address_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8912", ay8912_device, data_r, data_w)
-ADDRESS_MAP_END
+void galaxian_state::takeoff_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x20, 0x20).r(this, FUNC(galaxian_state::konami_sound_timer_r));
+ map(0x40, 0x40).w("8912", FUNC(ay8912_device::address_w));
+ map(0x80, 0x80).rw("8912", FUNC(ay8912_device::data_r), FUNC(ay8912_device::data_w));
+}
/* King and Balloon with DAC */
-ADDRESS_MAP_START(galaxian_state::kingball_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
-ADDRESS_MAP_END
+void galaxian_state::kingball_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+}
-ADDRESS_MAP_START(galaxian_state::kingball_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(kingball_dac_w)
-ADDRESS_MAP_END
+void galaxian_state::kingball_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0xff).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(galaxian_state::kingball_dac_w));
+}
/* SF-X sample player */
-ADDRESS_MAP_START(galaxian_state::sfx_sample_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::sfx_sample_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(sfx_sample_io_r, sfx_sample_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxian_state::turpins_sound_map)
- AM_IMPORT_FROM(konami_sound_map)
- AM_RANGE(0x9000, 0x9000) AM_READ(konami_sound_timer_r) // why does it read it here AND from the AY port?
-ADDRESS_MAP_END
+void galaxian_state::sfx_sample_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x83ff).mirror(0x6c00).ram();
+}
+
+void galaxian_state::sfx_sample_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(galaxian_state::sfx_sample_io_r), FUNC(galaxian_state::sfx_sample_io_w));
+}
+
+void galaxian_state::turpins_sound_map(address_map &map)
+{
+ konami_sound_map(map);
+ map(0x9000, 0x9000).r(this, FUNC(galaxian_state::konami_sound_timer_r)); // why does it read it here AND from the AY port?
+}
/*************************************
diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp
index 00afafb7665..9e6b863c042 100644
--- a/src/mame/drivers/galaxold.cpp
+++ b/src/mame/drivers/galaxold.cpp
@@ -145,233 +145,241 @@ READ8_MEMBER(galaxold_state::drivfrcg_port0_r)
return 0;
}
-ADDRESS_MAP_START(galaxold_state::galaxold_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5400, 0x57ff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5840, 0x585f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5860, 0x587f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5880, 0x58ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6001) AM_WRITE(galaxold_leds_w)
- AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_lockout_w)
- AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
- AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0xfffc, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::mooncrst_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa002, 0xa002) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::hustlerb3_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0")
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-
- AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxold_state::rockclim_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_READWRITE(rockclim_videoram_r, rockclim_videoram_w) AM_SHARE("rockclim_vram")//4800 - 4803 = bg scroll ?
- AM_RANGE(0x4800, 0x4803) AM_WRITE(rockclim_scroll_w)
- AM_RANGE(0x5000, 0x53ff) AM_RAM //?
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("IN2")
- AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("DSW1")
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa000, 0xa002) AM_WRITE(galaxold_gfxbank_w)// a002 - sprite bank
- AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::ckongg_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc000, 0xc001) AM_WRITE(galaxold_leds_w)
- AM_RANGE(0xc002, 0xc002) AM_WRITE(galaxold_coin_lockout_w)
- AM_RANGE(0xc003, 0xc003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xc004, 0xc007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("IN1")
- AM_RANGE(0xc400, 0xc402) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xc403, 0xc403) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0xc405, 0xc405) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0xc406, 0xc407) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW")
- AM_RANGE(0xc801, 0xc801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xc804, 0xc804) AM_WRITENOP // link cut
- AM_RANGE(0xc806, 0xc806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xc807, 0xc807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xcc00, 0xcc00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
+void galaxold_state::galaxold_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x5400, 0x57ff).r(this, FUNC(galaxold_state::galaxold_videoram_r));
+ map(0x5800, 0x583f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5840, 0x585f).ram().share("spriteram");
+ map(0x5860, 0x587f).ram().share("bulletsram");
+ map(0x5880, 0x58ff).ram();
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6000, 0x6001).w(this, FUNC(galaxold_state::galaxold_leds_w));
+ map(0x6002, 0x6002).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w));
+ map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x6800, 0x6800).portr("IN1");
+ map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0x7000, 0x7000).portr("IN2");
+ map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0xfffc, 0xffff).ram();
+}
+
+
+void galaxold_state::mooncrst_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).r(this, FUNC(galaxold_state::galaxold_videoram_r));
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa002, 0xa002).w(this, FUNC(galaxold_state::galaxold_gfxbank_w));
+ map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0xb000, 0xb000).portr("DSW0").w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb004, 0xb004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xb800, 0xb800).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+
+void galaxold_state::hustlerb3_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xb000, 0xb000).portr("DSW0");
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+
+ map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0xb800, 0xb800).w("cust", FUNC(galaxian_sound_device::pitch_w));
+
+}
+
+void galaxold_state::rockclim_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).rw(this, FUNC(galaxold_state::rockclim_videoram_r), FUNC(galaxold_state::rockclim_videoram_w)).share("rockclim_vram");//4800 - 4803 = bg scroll ?
+ map(0x4800, 0x4803).w(this, FUNC(galaxold_state::rockclim_scroll_w));
+ map(0x5000, 0x53ff).ram(); //?
+ map(0x5800, 0x5800).portr("IN2");
+ map(0x6000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).portr("DSW1");
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).r(this, FUNC(galaxold_state::galaxold_videoram_r));
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa000, 0xa002).w(this, FUNC(galaxold_state::galaxold_gfxbank_w));// a002 - sprite bank
+ map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0xb000, 0xb000).portr("DSW0").w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xb800, 0xb800).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+
+void galaxold_state::ckongg_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x9000, 0x93ff).rw(this, FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc000, 0xc001).w(this, FUNC(galaxold_state::galaxold_leds_w));
+ map(0xc002, 0xc002).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w));
+ map(0xc003, 0xc003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0xc004, 0xc007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0xc400, 0xc400).portr("IN1");
+ map(0xc400, 0xc402).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0xc403, 0xc403).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0xc405, 0xc405).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0xc406, 0xc407).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0xc800, 0xc800).portr("DSW");
+ map(0xc801, 0xc801).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xc804, 0xc804).nopw(); // link cut
+ map(0xc806, 0xc806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xc807, 0xc807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xcc00, 0xcc00).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
/* Memory map based on mooncrst_map according to Z80 code - seems to be good but needs further checking */
-ADDRESS_MAP_START(galaxold_state::ckongmc_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa002) AM_WRITE(galaxold_leds_w) /* GUESS */
+void galaxold_state::ckongmc_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x9000, 0x93ff).rw(this, FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa002).w(this, FUNC(galaxold_state::galaxold_leds_w)); /* GUESS */
// AM_RANGE(0xa002, 0xa002) AM_WRITE(galaxold_coin_lockout_w) /* not written */
// AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w) /* not written */
- AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) /* GUESS */
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) /* GUESS */
- AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) /* GUESS */
- AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) /* GUESS */
- AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) /* GUESS */
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_WRITENOP /* AM_WRITE(galaxold_stars_enable_w) */
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) /* GUESS */
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) /* GUESS */
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) /* GUESS */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::scramblb_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6001) AM_WRITENOP /* sound triggers */
- AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
- AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x7002, 0x7002) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x7003, 0x7003) AM_WRITE(scrambold_background_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r)
- AM_RANGE(0x8202, 0x8202) AM_READ(scramblb_protection_2_r)
-ADDRESS_MAP_END
+ map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); /* GUESS */
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); /* GUESS */
+ map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); /* GUESS */
+ map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); /* GUESS */
+ map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); /* GUESS */
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb004, 0xb004).nopw(); /* AM_WRITE(galaxold_stars_enable_w) */
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); /* GUESS */
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); /* GUESS */
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); /* GUESS */
+}
+
+
+void galaxold_state::scramblb_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x5000, 0x503f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6000, 0x6001).nopw(); /* sound triggers */
+ map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x6800, 0x6800).portr("IN1");
+ map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0x7000, 0x7000).portr("IN2");
+ map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x7002, 0x7002).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x7003, 0x7003).w(this, FUNC(galaxold_state::scrambold_background_enable_w));
+ map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0x8102, 0x8102).r(this, FUNC(galaxold_state::scramblb_protection_1_r));
+ map(0x8202, 0x8202).r(this, FUNC(galaxold_state::scramblb_protection_2_r));
+}
READ8_MEMBER(galaxold_state::scramb2_protection_r){ return 0x25; }
READ8_MEMBER(galaxold_state::scramb2_port0_r){ return (ioport("IN0")->read() >> offset) & 0x1; }
READ8_MEMBER(galaxold_state::scramb2_port1_r){ return (ioport("IN1")->read() >> offset) & 0x1; }
READ8_MEMBER(galaxold_state::scramb2_port2_r){ return (ioport("IN2")->read() >> offset) & 0x1; }
-ADDRESS_MAP_START(galaxold_state::scramb2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w) // mirror
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x5800, 0x5fff) AM_READ(scramb2_protection_r) // must return 0x25
- AM_RANGE(0x6000, 0x6007) AM_READ(scramb2_port0_r) // reads from 8 addresses, 1 bit per address
- AM_RANGE(0x6800, 0x6807) AM_READ(scramb2_port1_r) // reads from 8 addresses, 1 bit per address
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7007) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7006, 0x7006) AM_WRITENOP
- AM_RANGE(0x7007, 0x7007) AM_WRITENOP
- AM_RANGE(0x7800, 0x7807) AM_READ(scramb2_port2_r) // reads from 8 addresses, 1 bit per address
- AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
+void galaxold_state::scramb2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).w(this, FUNC(galaxold_state::galaxold_videoram_w)); // mirror
+ map(0x5000, 0x503f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x5800, 0x5fff).r(this, FUNC(galaxold_state::scramb2_protection_r)); // must return 0x25
+ map(0x6000, 0x6007).r(this, FUNC(galaxold_state::scramb2_port0_r)); // reads from 8 addresses, 1 bit per address
+ map(0x6800, 0x6807).r(this, FUNC(galaxold_state::scramb2_port1_r)); // reads from 8 addresses, 1 bit per address
+ map(0x6801, 0x6801).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x6802, 0x6802).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x6804, 0x6804).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x6806, 0x6806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x6807, 0x6807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7007).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7006, 0x7006).nopw();
+ map(0x7007, 0x7007).nopw();
+ map(0x7800, 0x7807).r(this, FUNC(galaxold_state::scramb2_port2_r)); // reads from 8 addresses, 1 bit per address
+ map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
READ8_MEMBER( galaxold_state::scrambler_protection_2_r )
{
@@ -380,39 +388,40 @@ READ8_MEMBER( galaxold_state::scrambler_protection_2_r )
}
// there are still unmapped reads / writes, it's not really clear what gets hooked up to where on these bootlegs, if they go anywhere at all
-ADDRESS_MAP_START(galaxold_state::scrambler_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
-
- AM_RANGE(0x4800, 0x4bff) AM_RAM // mirror, leftovers?
-
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
-
- AM_RANGE(0x5800, 0x587f) AM_RAM
- AM_RANGE(0x5880, 0x58bf) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x58c0, 0x58df) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x58e0, 0x58ff) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6001) AM_WRITENOP /* sound triggers */
- AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
- AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) // should this disable the stars too?
- AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") AM_WRITE(galaxold_nmi_enable_w)
+void galaxold_state::scrambler_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+
+ map(0x4800, 0x4bff).ram(); // mirror, leftovers?
+
+ map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+
+ map(0x5800, 0x587f).ram();
+ map(0x5880, 0x58bf).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x58c0, 0x58df).ram().share("spriteram");
+ map(0x58e0, 0x58ff).ram().share("bulletsram");
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6000, 0x6001).nopw(); /* sound triggers */
+ map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x6800, 0x6800).portr("IN1");
+ map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); // should this disable the stars too?
+ map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0x7000, 0x7000).portr("IN2").w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
// AM_RANGE(0x7001, 0x7001)
- AM_RANGE(0x7002, 0x7002) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x7003, 0x7003) AM_WRITE(scrambold_background_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
+ map(0x7002, 0x7002).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x7003, 0x7003).w(this, FUNC(galaxold_state::scrambold_background_enable_w));
+ map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w));
// AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r)
- AM_RANGE(0x8202, 0x8202) AM_READ(scrambler_protection_2_r)
-ADDRESS_MAP_END
+ map(0x8202, 0x8202).r(this, FUNC(galaxold_state::scrambler_protection_2_r));
+}
WRITE8_MEMBER( galaxold_state::guttang_rombank_w )
{
@@ -430,324 +439,341 @@ WRITE8_MEMBER( galaxold_state::guttang_rombank_w )
}
-ADDRESS_MAP_START(galaxold_state::guttang_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP // 0x2000-0x27ff is banked (so they have room for the new music player), see init
- AM_RANGE(0x4000, 0x47ff) AM_RAM
+void galaxold_state::guttang_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw(); // 0x2000-0x27ff is banked (so they have room for the new music player), see init
+ map(0x4000, 0x47ff).ram();
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
+ map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
- AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5840, 0x585f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5860, 0x587f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5880, 0x58ff) AM_RAM
+ map(0x5800, 0x583f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5840, 0x585f).ram().share("spriteram");
+ map(0x5860, 0x587f).ram().share("bulletsram");
+ map(0x5880, 0x58ff).ram();
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") AM_WRITE( guttang_rombank_w )
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
+ map(0x6000, 0x6000).portr("IN0").w(this, FUNC(galaxold_state::guttang_rombank_w));
+ map(0x6800, 0x6800).portr("IN1");
- AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
+ map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w));
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
- AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
+ map(0x7000, 0x7000).portr("IN2");
+ map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
- AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
+ map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(galaxold_state::_4in1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") /* banked game code */
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5400, 0x57ff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5840, 0x585f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5860, 0x587f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5880, 0x58ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6001) AM_WRITE(galaxold_leds_w)
+void galaxold_state::_4in1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1"); /* banked game code */
+ map(0x4000, 0x47ff).ram();
+ map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x5400, 0x57ff).r(this, FUNC(galaxold_state::galaxold_videoram_r));
+ map(0x5800, 0x583f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5840, 0x585f).ram().share("spriteram");
+ map(0x5860, 0x587f).ram().share("bulletsram");
+ map(0x5880, 0x58ff).ram();
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6000, 0x6001).w(this, FUNC(galaxold_state::galaxold_leds_w));
// AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_lockout_w)
- AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
- AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
+ map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x6800, 0x6800).portr("IN1");
+ map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
// AM_RANGE(0x6803, 0x6803) AM_WRITE(galaxian_noise_enable_w) /* not hooked up? */
- AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0")
- AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7800, 0x78ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7800, 0x78ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x8000, 0x8000) AM_WRITE(_4in1_bank_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROM /* fixed menu code */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::bagmanmc_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb002, 0xb002) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::dkongjrm_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x7fff) AM_ROM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x987f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x98c0, 0x98ff) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0xa000, 0xa0ff) AM_READ_PORT("IN0")
- AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
+ map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0x7000, 0x7000).portr("DSW0");
+ map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x7800, 0x78ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7800, 0x78ff).w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0x8000, 0x8000).w(this, FUNC(galaxold_state::_4in1_bank_w));
+ map(0xc000, 0xdfff).rom(); /* fixed menu code */
+}
+
+
+void galaxold_state::bagmanmc_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).r(this, FUNC(galaxold_state::galaxold_videoram_r));
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb002, 0xb002).w(this, FUNC(galaxold_state::galaxold_gfxbank_w));
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+
+void galaxold_state::dkongjrm_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).rom();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x987f).writeonly().share("spriteram");
+ map(0x98c0, 0x98ff).writeonly().share("spriteram2");
+ map(0xa000, 0xa0ff).portr("IN0");
+ map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
//AM_RANGE(0xa004, 0xa007) AM_WRITE(galaxian_lfo_freq_w)
- AM_RANGE(0xa800, 0xa8ff) AM_READ_PORT("IN1")
- AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
+ map(0xa800, 0xa8ff).portr("IN1");
+ map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
//AM_RANGE(0xa805, 0xa805) AM_WRITE(galaxian)
- AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0xb000, 0xb0ff) AM_READ_PORT("DSW")
- AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
+ map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0xb000, 0xb0ff).portr("DSW");
+ map(0xb000, 0xb000).w(this, FUNC(galaxold_state::galaxold_gfxbank_w));
+ map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
//AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::dkongjrmc_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_RAM_WRITE(galaxold_videoram_w)
- AM_RANGE(0x7000, 0x70ff) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x7100, 0x71ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7800, 0x7800) AM_READ_PORT("DSW")
- AM_RANGE(0x7801, 0x7801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x7802, 0x7802) AM_WRITE(galaxold_leds_w)
- AM_RANGE(0x7804, 0x7804) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0x7806, 0x7806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x7807, 0x7807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7d00, 0x7d02) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0x7d03, 0x7d03) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
- AM_RANGE(0x7d05, 0x7d05) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0x7d06, 0x7d07) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1")
- AM_RANGE(0x8103, 0x8103) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x8104, 0x8107) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x8200, 0x8200) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x9000, 0x9fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::tazzmang)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0") /* mirror */
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x8880, 0x8bff) AM_WRITENOP
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa7ff, 0xa7ff) AM_READ_PORT("IN0") /* mirror */
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0xa803, 0xa803) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
- AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::bongo)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8400, 0x87ff) AM_WRITENOP // not used
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_WRITENOP // not used
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxold_state::bongo_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::ozon1_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4200) AM_RAM
- AM_RANGE(0x4300, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w)
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x6801, 0x6801) AM_WRITENOP //continuosly 0 and 1
- AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN0")
- AM_RANGE(0x8101, 0x8101) AM_READ_PORT("IN1")
- AM_RANGE(0x8102, 0x8102) AM_READ_PORT("IN2")
- AM_RANGE(0x8103, 0x8103) AM_WRITENOP //only one 9b at reset
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxold_state::ozon1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::hunchbkg)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x1500, 0x1501) AM_MIRROR(0x6000) AM_WRITE(galaxold_leds_w) /* not connected ... */
- AM_RANGE(0x1502, 0x1502) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_lockout_w) /* not connected ... */
- AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x1504, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
- AM_RANGE(0x1580, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
- AM_RANGE(0x1600, 0x1600) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
- AM_RANGE(0x1601, 0x1601) AM_MIRROR(0x6000) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x1604, 0x1604) AM_MIRROR(0x6000) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x1606, 0x1606) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x1607, 0x1607) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+
+void galaxold_state::dkongjrmc_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x73ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w));
+ map(0x7000, 0x70ff).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x7100, 0x71ff).ram().share("spriteram");
+ map(0x7400, 0x77ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x7800, 0x7800).portr("DSW");
+ map(0x7801, 0x7801).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x7802, 0x7802).w(this, FUNC(galaxold_state::galaxold_leds_w));
+ map(0x7804, 0x7804).w(this, FUNC(galaxold_state::galaxold_gfxbank_w));
+ map(0x7806, 0x7806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x7807, 0x7807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x7d00, 0x7d02).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0x7d03, 0x7d03).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::noise_enable_w));
+ map(0x7d05, 0x7d05).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0x7d06, 0x7d07).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8100, 0x8100).portr("IN1");
+ map(0x8103, 0x8103).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x8104, 0x8107).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x8200, 0x8200).w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0x9000, 0x9fff).rom();
+}
+
+
+void galaxold_state::tazzmang(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x7000, 0x7000).portr("DSW0"); /* mirror */
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x883f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x8840, 0x885f).ram().share("spriteram");
+ map(0x8860, 0x887f).ram().share("bulletsram");
+ map(0x8880, 0x8bff).nopw();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9800, 0x9800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa7ff, 0xa7ff).portr("IN0"); /* mirror */
+ map(0xa800, 0xa800).portr("IN1").w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0xa803, 0xa803).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w));
+ map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0xb000, 0xb000).portr("DSW0");
+ map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb004, 0xb004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
+}
+
+
+void galaxold_state::bongo(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x8400, 0x87ff).nopw(); // not used
+ map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).nopw(); // not used
+ map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xb000, 0xb000).portr("DSW0");
+ map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0xb004, 0xb004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).nopw();
+}
+
+void galaxold_state::bongo_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r));
+}
+
+
+void galaxold_state::ozon1_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x4200).ram();
+ map(0x4300, 0x43ff).ram();
+ map(0x4800, 0x4bff).rw(this, FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).w(this, FUNC(galaxold_state::galaxold_videoram_w));
+ map(0x5000, 0x503f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x6801, 0x6801).nopw(); //continuosly 0 and 1
+ map(0x6802, 0x6802).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x6806, 0x6806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x6807, 0x6807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x8100, 0x8100).portr("IN0");
+ map(0x8101, 0x8101).portr("IN1");
+ map(0x8102, 0x8102).portr("IN2");
+ map(0x8103, 0x8103).nopw(); //only one 9b at reset
+}
+
+void galaxold_state::ozon1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
+
+
+void galaxold_state::hunchbkg(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1480, 0x14bf).mirror(0x6000).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x14c0, 0x14ff).mirror(0x6000).writeonly().share("spriteram");
+ map(0x1500, 0x1500).mirror(0x6000).portr("IN0");
+ map(0x1500, 0x1501).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_leds_w)); /* not connected ... */
+ map(0x1502, 0x1502).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w)); /* not connected ... */
+ map(0x1503, 0x1503).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x1504, 0x1507).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x1580, 0x1580).mirror(0x6000).portr("IN1");
+ map(0x1580, 0x1587).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::sound_w));
+ map(0x1600, 0x1600).mirror(0x6000).portr("DSW0");
+ map(0x1601, 0x1601).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x1604, 0x1604).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x1606, 0x1606).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x1607, 0x1607).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x1680, 0x1680).mirror(0x6000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
/* hunchbkg style */
-ADDRESS_MAP_START(galaxold_state::spcwarp)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x1500, 0x1501) AM_MIRROR(0x6000) AM_WRITE(galaxold_leds_w)
- AM_RANGE(0x1502, 0x1502) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_lockout_w)
- AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x1504, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
- AM_RANGE(0x1580, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
+void galaxold_state::spcwarp(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1480, 0x14bf).mirror(0x6000).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x14c0, 0x14ff).mirror(0x6000).writeonly().share("spriteram");
+ map(0x1500, 0x1500).mirror(0x6000).portr("IN0");
+ map(0x1500, 0x1501).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_leds_w));
+ map(0x1502, 0x1502).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w));
+ map(0x1503, 0x1503).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x1504, 0x1507).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x1580, 0x1580).mirror(0x6000).portr("IN1");
+ map(0x1580, 0x1587).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::sound_w));
// everything else in the $16xx range is moved to $17xx
- AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
- AM_RANGE(0x1701, 0x1701) AM_MIRROR(0x6000) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x1704, 0x1704) AM_MIRROR(0x6000) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x1706, 0x1706) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x1707, 0x1707) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w)
+ map(0x1680, 0x1680).mirror(0x6000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0x1700, 0x1700).mirror(0x6000).portr("DSW0");
+ map(0x1701, 0x1701).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w));
+ map(0x1704, 0x1704).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_stars_enable_w));
+ map(0x1706, 0x1706).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x1707, 0x1707).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
// the rest
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxold_state::hunchbkg_data)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READNOP // not used
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::drivfrcg)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
- AM_RANGE(0x1580, 0x1582) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w)
- AM_RANGE(0x1583, 0x1583) AM_MIRROR(0x6000) AM_WRITENOP
- AM_RANGE(0x1585, 0x1585) AM_MIRROR(0x6000) AM_WRITENOP
- AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
- AM_RANGE(0x1600, 0x1600) AM_MIRROR(0x6000) AM_READ_PORT("DSW0") AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
- AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ_PORT("DSW1") AM_WRITENOP
- AM_RANGE(0x1701, 0x1701) AM_MIRROR(0x6000) AM_WRITENOP
- AM_RANGE(0x1704, 0x1707) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxold_state::drivfrcg_io)
- AM_RANGE(0x00, 0x00) AM_READ(drivfrcg_port0_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxold_state::racknrol)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1400, 0x143f) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x1440, 0x14bf) AM_MIRROR(0x6000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
- AM_RANGE(0x1600, 0x1600) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
- AM_RANGE(0x1600, 0x1601) AM_MIRROR(0x6000) AM_WRITENOP
- AM_RANGE(0x1606, 0x1606) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x1607, 0x1607) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_READNOP
+ map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
+
+void galaxold_state::hunchbkg_data(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).nopr(); // not used
+}
+
+
+void galaxold_state::drivfrcg(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1480, 0x14bf).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x14c0, 0x14ff).mirror(0x6000).writeonly().share("spriteram");
+ map(0x1500, 0x1500).mirror(0x6000).portr("IN0");
+ map(0x1503, 0x1503).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_counter_w));
+ map(0x1580, 0x1580).mirror(0x6000).portr("IN1");
+ map(0x1580, 0x1582).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::background_enable_w));
+ map(0x1583, 0x1583).mirror(0x6000).nopw();
+ map(0x1585, 0x1585).mirror(0x6000).nopw();
+ map(0x1586, 0x1587).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::lfo_freq_w));
+ map(0x1600, 0x1600).mirror(0x6000).portr("DSW0").w("cust", FUNC(galaxian_sound_device::pitch_w));
+ map(0x1700, 0x1700).mirror(0x6000).portr("DSW1").nopw();
+ map(0x1701, 0x1701).mirror(0x6000).nopw();
+ map(0x1704, 0x1707).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::vol_w));
+ map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
+
+void galaxold_state::drivfrcg_io(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(galaxold_state::drivfrcg_port0_r));
+}
+
+
+void galaxold_state::racknrol(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1400, 0x143f).mirror(0x6000).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x1440, 0x14bf).mirror(0x6000).ram().share("spriteram");
+ map(0x14c0, 0x14ff).mirror(0x6000).ram();
+ map(0x1500, 0x1500).mirror(0x6000).portr("IN0");
+ map(0x1580, 0x1580).mirror(0x6000).portr("IN1");
+ map(0x1600, 0x1600).mirror(0x6000).portr("DSW0");
+ map(0x1600, 0x1601).mirror(0x6000).nopw();
+ map(0x1606, 0x1606).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w));
+ map(0x1607, 0x1607).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w));
+ map(0x1680, 0x1680).mirror(0x6000).nopr();
// AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ(trvchlng_question_r)
// AM_RANGE(0x1701, 0x1703) AM_MIRROR(0x6000) AM_READ(trvchlng_question_w)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxold_state::racknrol_io)
- AM_RANGE(0x1d, 0x1d) AM_DEVWRITE("snsnd", sn76489a_device, write)
+ map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
+
+void galaxold_state::racknrol_io(address_map &map)
+{
+ map(0x1d, 0x1d).w("snsnd", FUNC(sn76489a_device::write));
// AM_RANGE(0x1e, 0x1e) AM_WRITENOP
// AM_RANGE(0x1f, 0x1f) AM_WRITENOP
- AM_RANGE(0x20, 0x3f) AM_WRITE(racknrol_tiles_bank_w) AM_SHARE("racknrol_tbank")
-ADDRESS_MAP_END
+ map(0x20, 0x3f).w(this, FUNC(galaxold_state::racknrol_tiles_bank_w)).share("racknrol_tbank");
+}
READ8_MEMBER(galaxold_state::hexpoola_data_port_r)
{
@@ -763,14 +789,16 @@ READ8_MEMBER(galaxold_state::hexpoola_data_port_r)
return 0;
}
-ADDRESS_MAP_START(galaxold_state::hexpoola_io)
- AM_RANGE(0x00, 0x00) AM_READNOP
- AM_RANGE(0x20, 0x3f) AM_WRITE(racknrol_tiles_bank_w) AM_SHARE("racknrol_tbank")
-ADDRESS_MAP_END
+void galaxold_state::hexpoola_io(address_map &map)
+{
+ map(0x00, 0x00).nopr();
+ map(0x20, 0x3f).w(this, FUNC(galaxold_state::racknrol_tiles_bank_w)).share("racknrol_tbank");
+}
-ADDRESS_MAP_START(galaxold_state::hexpoola_data)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(hexpoola_data_port_r) AM_DEVWRITE("snsnd", sn76496_device, write)
-ADDRESS_MAP_END
+void galaxold_state::hexpoola_data(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(galaxold_state::hexpoola_data_port_r)).w("snsnd", FUNC(sn76496_device::write));
+}
READ8_MEMBER(galaxold_state::bullsdrtg_data_port_r)
{
@@ -793,9 +821,10 @@ READ8_MEMBER(galaxold_state::bullsdrtg_data_port_r)
return 0;
}
-ADDRESS_MAP_START(galaxold_state::bullsdrtg_data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(bullsdrtg_data_port_r) AM_DEVWRITE("snsnd", sn76496_device, write)
-ADDRESS_MAP_END
+void galaxold_state::bullsdrtg_data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(galaxold_state::bullsdrtg_data_port_r)).w("snsnd", FUNC(sn76496_device::write));
+}
/* Lives Dips are spread across two input ports */
CUSTOM_INPUT_MEMBER(galaxold_state::vpool_lives_r)
diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp
index 57275eb5c2f..db4b3d58b11 100644
--- a/src/mame/drivers/galaxy.cpp
+++ b/src/mame/drivers/galaxy.cpp
@@ -38,28 +38,31 @@ Galaksija driver by Krzysztof Strzecha and Miodrag Milanovic
#include "speaker.h"
-ADDRESS_MAP_START(galaxy_state::galaxyp_io)
- ADDRESS_MAP_GLOBAL_MASK(0x01)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay8910", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(galaxy_state::galaxy_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x2037) AM_MIRROR(0x07c0) AM_READ(galaxy_keyboard_r )
- AM_RANGE(0x2038, 0x203f) AM_MIRROR(0x07c0) AM_WRITE(galaxy_latch_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galaxy_state::galaxyp_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM // ROM A
- AM_RANGE(0x1000, 0x1fff) AM_ROM // ROM B
- AM_RANGE(0x2000, 0x2037) AM_MIRROR(0x07c0) AM_READ(galaxy_keyboard_r )
- AM_RANGE(0x2038, 0x203f) AM_MIRROR(0x07c0) AM_WRITE(galaxy_latch_w )
- AM_RANGE(0xe000, 0xefff) AM_ROM // ROM C
- AM_RANGE(0xf000, 0xffff) AM_ROM // ROM D
-ADDRESS_MAP_END
+void galaxy_state::galaxyp_io(address_map &map)
+{
+ map.global_mask(0x01);
+ map.unmap_value_high();
+ map(0x00, 0x00).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).w("ay8910", FUNC(ay8910_device::data_w));
+}
+
+
+void galaxy_state::galaxy_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x2037).mirror(0x07c0).r(this, FUNC(galaxy_state::galaxy_keyboard_r));
+ map(0x2038, 0x203f).mirror(0x07c0).w(this, FUNC(galaxy_state::galaxy_latch_w));
+}
+
+void galaxy_state::galaxyp_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); // ROM A
+ map(0x1000, 0x1fff).rom(); // ROM B
+ map(0x2000, 0x2037).mirror(0x07c0).r(this, FUNC(galaxy_state::galaxy_keyboard_r));
+ map(0x2038, 0x203f).mirror(0x07c0).w(this, FUNC(galaxy_state::galaxy_latch_w));
+ map(0xe000, 0xefff).rom(); // ROM C
+ map(0xf000, 0xffff).rom(); // ROM D
+}
/* 2008-05 FP:
Small note about natural keyboard support. Currently:
diff --git a/src/mame/drivers/galeb.cpp b/src/mame/drivers/galeb.cpp
index 4439da6cb13..cfd298b49d5 100644
--- a/src/mame/drivers/galeb.cpp
+++ b/src/mame/drivers/galeb.cpp
@@ -64,20 +64,21 @@ READ8_MEMBER(galeb_state::tape_data_r)
}
/* Address maps */
-ADDRESS_MAP_START(galeb_state::galeb_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM // RAM
- AM_RANGE( 0xbfe0, 0xbfe7 ) AM_READ(keyboard_r )
- AM_RANGE( 0xbfe0, 0xbfe0 ) AM_WRITE(dac_w)
- AM_RANGE( 0xbffe, 0xbffe ) AM_READ(tape_status_r)
- AM_RANGE( 0xbfff, 0xbfff ) AM_READWRITE(tape_data_r, tape_data_w)
- AM_RANGE( 0xb000, 0xb3ff ) AM_RAM AM_SHARE("video_ram") // video ram
- AM_RANGE( 0xc000, 0xc7ff ) AM_ROM // BASIC 01 ROM
- AM_RANGE( 0xc800, 0xcfff ) AM_ROM // BASIC 02 ROM
- AM_RANGE( 0xd000, 0xd7ff ) AM_ROM // BASIC 03 ROM
- AM_RANGE( 0xd800, 0xdfff ) AM_ROM // BASIC 04 ROM
- AM_RANGE( 0xf000, 0xf7ff ) AM_ROM // Monitor ROM
- AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
+void galeb_state::galeb_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram(); // RAM
+ map(0xbfe0, 0xbfe7).r(this, FUNC(galeb_state::keyboard_r));
+ map(0xbfe0, 0xbfe0).w(this, FUNC(galeb_state::dac_w));
+ map(0xbffe, 0xbffe).r(this, FUNC(galeb_state::tape_status_r));
+ map(0xbfff, 0xbfff).rw(this, FUNC(galeb_state::tape_data_r), FUNC(galeb_state::tape_data_w));
+ map(0xb000, 0xb3ff).ram().share("video_ram"); // video ram
+ map(0xc000, 0xc7ff).rom(); // BASIC 01 ROM
+ map(0xc800, 0xcfff).rom(); // BASIC 02 ROM
+ map(0xd000, 0xd7ff).rom(); // BASIC 03 ROM
+ map(0xd800, 0xdfff).rom(); // BASIC 04 ROM
+ map(0xf000, 0xf7ff).rom(); // Monitor ROM
+ map(0xf800, 0xffff).rom(); // System ROM
+}
/* Input ports */
static INPUT_PORTS_START( galeb )
diff --git a/src/mame/drivers/galgame.cpp b/src/mame/drivers/galgame.cpp
index 699f4e7300a..361fbfbd901 100644
--- a/src/mame/drivers/galgame.cpp
+++ b/src/mame/drivers/galgame.cpp
@@ -286,15 +286,16 @@ WRITE16_MEMBER(galaxygame_state::clk_w)
m_clk = data;
}
-ADDRESS_MAP_START(galaxygame_state::galaxygame_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0xfec0, 0xfecf) AM_READWRITE(ke_r, ke_w)
- AM_RANGE(0xff52, 0xff53) AM_READWRITE(y_r, y_w) // 177522 Y
- AM_RANGE(0xff54, 0xff55) AM_READ_PORT("COINAC") // 177524 COINAC
- AM_RANGE(0xff5a, 0xff5b) AM_READWRITE(x_r, x_w) // 177532 X
- AM_RANGE(0xff5c, 0xff5d) AM_READ_PORT("SR") // 177534 SR
- AM_RANGE(0xff66, 0xff67) AM_WRITE(clk_w) // 177546 KW11 line frequency clock
-ADDRESS_MAP_END
+void galaxygame_state::galaxygame_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0xfec0, 0xfecf).rw(this, FUNC(galaxygame_state::ke_r), FUNC(galaxygame_state::ke_w));
+ map(0xff52, 0xff53).rw(this, FUNC(galaxygame_state::y_r), FUNC(galaxygame_state::y_w)); // 177522 Y
+ map(0xff54, 0xff55).portr("COINAC"); // 177524 COINAC
+ map(0xff5a, 0xff5b).rw(this, FUNC(galaxygame_state::x_r), FUNC(galaxygame_state::x_w)); // 177532 X
+ map(0xff5c, 0xff5d).portr("SR"); // 177534 SR
+ map(0xff66, 0xff67).w(this, FUNC(galaxygame_state::clk_w)); // 177546 KW11 line frequency clock
+}
IRQ_CALLBACK_MEMBER(galaxygame_state::galaxygame_irq_callback)
diff --git a/src/mame/drivers/galgames.cpp b/src/mame/drivers/galgames.cpp
index 6445b2bd59f..8e3a1f53725 100644
--- a/src/mame/drivers/galgames.cpp
+++ b/src/mame/drivers/galgames.cpp
@@ -859,43 +859,46 @@ READ16_MEMBER(galgames_state::fpga_status_r)
return 0x3; // Pass the check at PC = 0xfae & a later one
}
-ADDRESS_MAP_START(galgames_state::galgames_map)
- AM_RANGE( 0x000000, 0x3fffff ) AM_DEVREADWRITE("slot", galgames_slot_device, read, write )
-
- AM_RANGE( 0x400000, 0x400011 ) AM_DEVWRITE("blitter", cesblit_device, regs_w )
- AM_RANGE( 0x400012, 0x400013 ) AM_DEVWRITE("blitter", cesblit_device, addr_hi_w )
- AM_RANGE( 0x400014, 0x400015 ) AM_DEVWRITE("blitter", cesblit_device, color_w )
- AM_RANGE( 0x400020, 0x400021 ) AM_DEVREAD( "blitter", cesblit_device, status_r )
-
- AM_RANGE( 0x600000, 0x600001 ) AM_READ(fpga_status_r )
- AM_RANGE( 0x700000, 0x700001 ) AM_READ(fpga_status_r ) AM_WRITENOP
- AM_RANGE( 0x800020, 0x80003f ) AM_NOP // ?
- AM_RANGE( 0x900000, 0x900001 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
-
- AM_RANGE( 0xa00000, 0xa00001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0xb00000, 0xb7ffff ) AM_READWRITE(galgames_okiram_r, galgames_okiram_w ) // (only low bytes tested) 4x N341024SJ-15
-
- AM_RANGE( 0xc00000, 0xc00001 ) AM_WRITE(galgames_palette_offset_w )
- AM_RANGE( 0xc00002, 0xc00003 ) AM_WRITE(galgames_palette_data_w )
-
- AM_RANGE( 0xd00000, 0xd00001 ) AM_READ_PORT("TRACKBALL_1_X")
- AM_RANGE( 0xd00000, 0xd00001 ) AM_WRITENOP // bit 0: FPGA programming serial in (lsb first)
- AM_RANGE( 0xd00002, 0xd00003 ) AM_READ_PORT("TRACKBALL_1_Y")
- AM_RANGE( 0xd00004, 0xd00005 ) AM_READ_PORT("TRACKBALL_2_X")
- AM_RANGE( 0xd00006, 0xd00007 ) AM_READ_PORT("TRACKBALL_2_Y")
- AM_RANGE( 0xd00008, 0xd00009 ) AM_READ_PORT("P1")
- AM_RANGE( 0xd0000a, 0xd0000b ) AM_READ_PORT("P2")
- AM_RANGE( 0xd0000c, 0xd0000d ) AM_READ_PORT("SYSTEM") AM_WRITE(outputs_w )
-
- AM_RANGE( 0xd0000e, 0xd0000f ) AM_READNOP AM_DEVWRITE8("slot", galgames_slot_device, cart_sel_w, 0x00ff )
- AM_RANGE( 0xd00010, 0xd00011 ) AM_DEVREADWRITE8("slot", galgames_slot_device, eeprom_r, eeprom_w, 0x00ff )
- AM_RANGE( 0xd00012, 0xd00013 ) AM_DEVREADWRITE8("slot", galgames_slot_device, pic_data_r, pic_data_w, 0x00ff )
- AM_RANGE( 0xd00014, 0xd00015 ) AM_DEVREADWRITE8("slot", galgames_slot_device, pic_status_r, ram_sel_w, 0x00ff )
-ADDRESS_MAP_END
+void galgames_state::galgames_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rw(m_slot, FUNC(galgames_slot_device::read), FUNC(galgames_slot_device::write));
+
+ map(0x400000, 0x400011).w(m_blitter, FUNC(cesblit_device::regs_w));
+ map(0x400012, 0x400013).w(m_blitter, FUNC(cesblit_device::addr_hi_w));
+ map(0x400014, 0x400015).w(m_blitter, FUNC(cesblit_device::color_w));
+ map(0x400020, 0x400021).r(m_blitter, FUNC(cesblit_device::status_r));
+
+ map(0x600000, 0x600001).r(this, FUNC(galgames_state::fpga_status_r));
+ map(0x700000, 0x700001).r(this, FUNC(galgames_state::fpga_status_r)).nopw();
+ map(0x800020, 0x80003f).noprw(); // ?
+ map(0x900000, 0x900001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+
+ map(0xa00001, 0xa00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xb00000, 0xb7ffff).rw(this, FUNC(galgames_state::galgames_okiram_r), FUNC(galgames_state::galgames_okiram_w)); // (only low bytes tested) 4x N341024SJ-15
+
+ map(0xc00000, 0xc00001).w(this, FUNC(galgames_state::galgames_palette_offset_w));
+ map(0xc00002, 0xc00003).w(this, FUNC(galgames_state::galgames_palette_data_w));
+
+ map(0xd00000, 0xd00001).portr("TRACKBALL_1_X");
+ map(0xd00000, 0xd00001).nopw(); // bit 0: FPGA programming serial in (lsb first)
+ map(0xd00002, 0xd00003).portr("TRACKBALL_1_Y");
+ map(0xd00004, 0xd00005).portr("TRACKBALL_2_X");
+ map(0xd00006, 0xd00007).portr("TRACKBALL_2_Y");
+ map(0xd00008, 0xd00009).portr("P1");
+ map(0xd0000a, 0xd0000b).portr("P2");
+ map(0xd0000c, 0xd0000d).portr("SYSTEM").w(this, FUNC(galgames_state::outputs_w));
+
+ map(0xd0000e, 0xd0000f).nopr();
+ map(0xd0000f, 0xd0000f).w(m_slot, FUNC(galgames_slot_device::cart_sel_w));
+ map(0xd00011, 0xd00011).rw(m_slot, FUNC(galgames_slot_device::eeprom_r), FUNC(galgames_slot_device::eeprom_w));
+ map(0xd00013, 0xd00013).rw(m_slot, FUNC(galgames_slot_device::pic_data_r), FUNC(galgames_slot_device::pic_data_w));
+ map(0xd00015, 0xd00015).rw(m_slot, FUNC(galgames_slot_device::pic_status_r), FUNC(galgames_slot_device::ram_sel_w));
+}
-ADDRESS_MAP_START(galgames_state::blitter_map)
- AM_RANGE( 0x000000, 0x1fffff ) AM_DEVREAD(":slot", galgames_slot_device, rom_r)
-ADDRESS_MAP_END
+void galgames_state::blitter_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).r(":slot", FUNC(galgames_slot_device::rom_r));
+}
/***************************************************************************
diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp
index b5781e48fac..27da2d486ce 100644
--- a/src/mame/drivers/galivan.cpp
+++ b/src/mame/drivers/galivan.cpp
@@ -62,72 +62,78 @@ READ8_MEMBER(galivan_state::IO_port_c0_r)
-ADDRESS_MAP_START(galivan_state::galivan_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
-
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd800, 0xdfff) AM_WRITE(galivan_videoram_w) AM_SHARE("videoram")
-
- AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe100, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galivan_state::ninjemak_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
-
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd800, 0xdfff) AM_WRITE(galivan_videoram_w) AM_SHARE("videoram")
-
- AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe200, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galivan_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x40, 0x40) AM_WRITE(galivan_gfxbank_w)
- AM_RANGE(0x41, 0x42) AM_WRITE(galivan_scrollx_w)
- AM_RANGE(0x43, 0x44) AM_WRITE(galivan_scrolly_w)
- AM_RANGE(0x45, 0x45) AM_WRITE(galivan_sound_command_w)
+void galivan_state::galivan_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+
+ map(0xc000, 0xdfff).bankr("bank1");
+ map(0xd800, 0xdfff).w(this, FUNC(galivan_state::galivan_videoram_w)).share("videoram");
+
+ map(0xe000, 0xe0ff).ram().share("spriteram");
+ map(0xe100, 0xffff).ram();
+}
+
+void galivan_state::ninjemak_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+
+ map(0xc000, 0xdfff).bankr("bank1");
+ map(0xd800, 0xdfff).w(this, FUNC(galivan_state::galivan_videoram_w)).share("videoram");
+
+ map(0xe000, 0xe1ff).ram().share("spriteram");
+ map(0xe200, 0xffff).ram();
+}
+
+void galivan_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).portr("P2");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x40, 0x40).w(this, FUNC(galivan_state::galivan_gfxbank_w));
+ map(0x41, 0x42).w(this, FUNC(galivan_state::galivan_scrollx_w));
+ map(0x43, 0x44).w(this, FUNC(galivan_state::galivan_scrolly_w));
+ map(0x45, 0x45).w(this, FUNC(galivan_state::galivan_sound_command_w));
// AM_RANGE(0x46, 0x46) AM_WRITENOP
// AM_RANGE(0x47, 0x47) AM_WRITENOP
- AM_RANGE(0xc0, 0xc0) AM_READ(IO_port_c0_r) /* dangar needs to return 0x58 */
-ADDRESS_MAP_END
+ map(0xc0, 0xc0).r(this, FUNC(galivan_state::IO_port_c0_r)); /* dangar needs to return 0x58 */
+}
WRITE8_MEMBER(galivan_state::blit_trigger_w)
{
m_nb1414m4->exec((m_videoram[0] << 8) | (m_videoram[1] & 0xff),m_videoram,m_scrollx,m_scrolly,m_tx_tilemap);
}
-ADDRESS_MAP_START(galivan_state::ninjemak_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") AM_WRITE(ninjemak_gfxbank_w)
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x82, 0x82) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x83, 0x83) AM_READ_PORT("SERVICE")
- AM_RANGE(0x84, 0x84) AM_READ_PORT("DSW1")
- AM_RANGE(0x85, 0x85) AM_READ_PORT("DSW2") AM_WRITE(galivan_sound_command_w)
- AM_RANGE(0x86, 0x86) AM_WRITE(blit_trigger_w) // ??
+void galivan_state::ninjemak_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x80).portr("P1").w(this, FUNC(galivan_state::ninjemak_gfxbank_w));
+ map(0x81, 0x81).portr("P2");
+ map(0x82, 0x82).portr("SYSTEM");
+ map(0x83, 0x83).portr("SERVICE");
+ map(0x84, 0x84).portr("DSW1");
+ map(0x85, 0x85).portr("DSW2").w(this, FUNC(galivan_state::galivan_sound_command_w));
+ map(0x86, 0x86).w(this, FUNC(galivan_state::blit_trigger_w)); // ??
// AM_RANGE(0x87, 0x87) AM_WRITENOP // ??
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galivan_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galivan_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+}
+
+void galivan_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+}
+
+void galivan_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write));
+ map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x04, 0x04).r(this, FUNC(galivan_state::soundlatch_clear_r));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/***************
diff --git a/src/mame/drivers/galpani2.cpp b/src/mame/drivers/galpani2.cpp
index 81e7a951119..f5a2b596810 100644
--- a/src/mame/drivers/galpani2.cpp
+++ b/src/mame/drivers/galpani2.cpp
@@ -347,54 +347,55 @@ WRITE8_MEMBER(galpani2_state::galpani2_oki2_bank_w)
}
-ADDRESS_MAP_START(galpani2_state::galpani2_mem1)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("ram") // Work RAM
- AM_RANGE(0x110000, 0x11000f) AM_RAM // ? corrupted? stack dumper on POST failure, pc+sr on gp2se
- AM_RANGE(0x300000, 0x301fff) AM_RAM // ?
- AM_RANGE(0x302000, 0x303fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x304000, 0x30401f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
+void galpani2_state::galpani2_mem1(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("ram"); // Work RAM
+ map(0x110000, 0x11000f).ram(); // ? corrupted? stack dumper on POST failure, pc+sr on gp2se
+ map(0x300000, 0x301fff).ram(); // ?
+ map(0x302000, 0x303fff).ram().share("spriteram"); // Sprites
+ map(0x304000, 0x30401f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
// AM_RANGE(0x308000, 0x308001) AM_WRITENOP // ? 0 at startup
// AM_RANGE(0x30c000, 0x30c001) AM_WRITENOP // ? hblank effect ?
- AM_RANGE(0x310000, 0x3101ff) AM_RAM_DEVWRITE("bg8palette", palette_device, write16) AM_SHARE("bg8palette") // ?
- AM_RANGE(0x314000, 0x314001) AM_WRITENOP // ? flip backgrounds ?
- AM_RANGE(0x318000, 0x318001) AM_READWRITE(galpani2_eeprom_r, galpani2_eeprom_w) // EEPROM
- AM_RANGE(0x380000, 0x387fff) AM_RAM // Palette?
- AM_RANGE(0x388000, 0x38ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
+ map(0x310000, 0x3101ff).ram().w(m_bg8palette, FUNC(palette_device::write16)).share("bg8palette"); // ?
+ map(0x314000, 0x314001).nopw(); // ? flip backgrounds ?
+ map(0x318000, 0x318001).rw(this, FUNC(galpani2_state::galpani2_eeprom_r), FUNC(galpani2_state::galpani2_eeprom_w)); // EEPROM
+ map(0x380000, 0x387fff).ram(); // Palette?
+ map(0x388000, 0x38ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
// AM_RANGE(0x390000, 0x3901ff) AM_WRITENOP // ? at startup of service mode
- AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("bg8.0") // Background 0
- AM_RANGE(0x440000, 0x440001) AM_RAM AM_SHARE("bg8_scrolly.0") // Background 0 Scroll Y
- AM_RANGE(0x480000, 0x480001) AM_RAM AM_SHARE("bg8_scrollx.0") // Background 0 Scroll X
+ map(0x400000, 0x43ffff).ram().share("bg8.0"); // Background 0
+ map(0x440000, 0x440001).ram().share("bg8_scrolly.0"); // Background 0 Scroll Y
+ map(0x480000, 0x480001).ram().share("bg8_scrollx.0"); // Background 0 Scroll X
// AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP // ? 0 at startup only
- AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("bg8.1") // Background 1
- AM_RANGE(0x540000, 0x540001) AM_RAM AM_SHARE("bg8_scrolly.1") // Background 1 Scroll Y
- AM_RANGE(0x580000, 0x580001) AM_RAM AM_SHARE("bg8_scrollx.1") // Background 1 Scroll X
+ map(0x500000, 0x53ffff).ram().share("bg8.1"); // Background 1
+ map(0x540000, 0x540001).ram().share("bg8_scrolly.1"); // Background 1 Scroll Y
+ map(0x580000, 0x580001).ram().share("bg8_scrollx.1"); // Background 1 Scroll X
// AM_RANGE(0x5c0000, 0x5c0001) AM_WRITENOP // ? 0 at startup only
- AM_RANGE(0x540572, 0x540573) AM_READNOP // ? galpani2 at F0A4
- AM_RANGE(0x54057a, 0x54057b) AM_READNOP // ? galpani2 at F148
- AM_RANGE(0x54059a, 0x54059b) AM_READNOP // ? galpani2 at F0A4
- AM_RANGE(0x5405a2, 0x5405a3) AM_READNOP // ? galpani2 at F0A4 and F148
- AM_RANGE(0x5405aa, 0x5405ab) AM_READNOP // ? galpani2 at F0A4 and F148
- AM_RANGE(0x5405b2, 0x5405b3) AM_READNOP // ? galpani2 at F0A4 and F148
- AM_RANGE(0x5405ba, 0x5405bb) AM_READNOP // ? galpani2 at F0A4 and F148
- AM_RANGE(0x5405c2, 0x5405c3) AM_READNOP // ? galpani2 at F0A4 and F148
- AM_RANGE(0x5405ca, 0x5405cb) AM_READNOP // ? galpani2 at F148
-
- AM_RANGE(0x600000, 0x600001) AM_NOP // Watchdog
- AM_RANGE(0x640000, 0x640001) AM_WRITE8(galpani2_mcu_init_w, 0x00ff ) // ? 0 before resetting and at startup, Reset mcu ?
- AM_RANGE(0x680000, 0x680001) AM_WRITE8(galpani2_mcu_nmi1_w, 0x00ff) // ? 0 -> 1 -> 0 (lev 5) / 0 -> $10 -> 0
- AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE8(galpani2_coin_lockout_w, 0xff00 ) // Coin + Card Lockout
- AM_RANGE(0x780000, 0x780001) AM_READ_PORT("DSW1_P1")
- AM_RANGE(0x780002, 0x780003) AM_READ_PORT("DSW2_P2")
- AM_RANGE(0x780004, 0x780005) AM_READ_PORT("SPECIAL")
- AM_RANGE(0x780006, 0x780007) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff ) // 2 x OKIM6295
- AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff ) //
- AM_RANGE(0xc80000, 0xc80001) AM_WRITE8(galpani2_oki1_bank_w, 0x00ff ) //
- AM_RANGE(0xcc0000, 0xcc0001) AM_WRITE8(galpani2_oki2_bank_w, 0x00ff ) //
-ADDRESS_MAP_END
+ map(0x540572, 0x540573).nopr(); // ? galpani2 at F0A4
+ map(0x54057a, 0x54057b).nopr(); // ? galpani2 at F148
+ map(0x54059a, 0x54059b).nopr(); // ? galpani2 at F0A4
+ map(0x5405a2, 0x5405a3).nopr(); // ? galpani2 at F0A4 and F148
+ map(0x5405aa, 0x5405ab).nopr(); // ? galpani2 at F0A4 and F148
+ map(0x5405b2, 0x5405b3).nopr(); // ? galpani2 at F0A4 and F148
+ map(0x5405ba, 0x5405bb).nopr(); // ? galpani2 at F0A4 and F148
+ map(0x5405c2, 0x5405c3).nopr(); // ? galpani2 at F0A4 and F148
+ map(0x5405ca, 0x5405cb).nopr(); // ? galpani2 at F148
+
+ map(0x600000, 0x600001).noprw(); // Watchdog
+ map(0x640001, 0x640001).w(this, FUNC(galpani2_state::galpani2_mcu_init_w)); // ? 0 before resetting and at startup, Reset mcu ?
+ map(0x680001, 0x680001).w(this, FUNC(galpani2_state::galpani2_mcu_nmi1_w)); // ? 0 -> 1 -> 0 (lev 5) / 0 -> $10 -> 0
+ map(0x6c0000, 0x6c0000).w(this, FUNC(galpani2_state::galpani2_coin_lockout_w)); // Coin + Card Lockout
+ map(0x780000, 0x780001).portr("DSW1_P1");
+ map(0x780002, 0x780003).portr("DSW2_P2");
+ map(0x780004, 0x780005).portr("SPECIAL");
+ map(0x780006, 0x780007).portr("SERVICE");
+ map(0xc00001, 0xc00001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // 2 x OKIM6295
+ map(0xc40001, 0xc40001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+ map(0xc80001, 0xc80001).w(this, FUNC(galpani2_state::galpani2_oki1_bank_w)); //
+ map(0xcc0001, 0xcc0001).w(this, FUNC(galpani2_state::galpani2_oki2_bank_w)); //
+}
/***************************************************************************
@@ -415,20 +416,21 @@ WRITE16_MEMBER(galpani2_state::subdatabank_select_w)
}
-ADDRESS_MAP_START(galpani2_state::galpani2_mem2)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_SHARE("ram2") // Work RAM
- AM_RANGE(0x400000, 0x5fffff) AM_RAM AM_SHARE("bg15") // bg15
+void galpani2_state::galpani2_mem2(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x100000, 0x13ffff).ram().share("ram2"); // Work RAM
+ map(0x400000, 0x5fffff).ram().share("bg15"); // bg15
// AM_RANGE(0x600000, 0x600001) AM_NOP // ? 0 at startup only
// AM_RANGE(0x640000, 0x640001) AM_WRITENOP // ? 0 at startup only
// AM_RANGE(0x680000, 0x680001) AM_WRITENOP // ? 0 at startup only
// AM_RANGE(0x6c0000, 0x6c0001) AM_WRITENOP // ? 0 at startup only
- AM_RANGE(0x700000, 0x700001) AM_NOP // Watchdog
+ map(0x700000, 0x700001).noprw(); // Watchdog
// AM_RANGE(0x740000, 0x740001) AM_WRITENOP // ? Reset mcu
- AM_RANGE(0x780000, 0x780001) AM_WRITE8(galpani2_mcu_nmi2_w, 0x00ff) // ? 0 -> 1 -> 0 (lev 5)
- AM_RANGE(0x7c0000, 0x7c0001) AM_WRITE(subdatabank_select_w) // Rom Bank
- AM_RANGE(0x800000, 0xffffff) AM_ROMBANK("subdatabank")
-ADDRESS_MAP_END
+ map(0x780001, 0x780001).w(this, FUNC(galpani2_state::galpani2_mcu_nmi2_w)); // ? 0 -> 1 -> 0 (lev 5)
+ map(0x7c0000, 0x7c0001).w(this, FUNC(galpani2_state::subdatabank_select_w)); // Rom Bank
+ map(0x800000, 0xffffff).bankr("subdatabank");
+}
/***************************************************************************
diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp
index 1d16c977de6..84671f15f90 100644
--- a/src/mame/drivers/galpani3.cpp
+++ b/src/mame/drivers/galpani3.cpp
@@ -390,42 +390,43 @@ WRITE16_MEMBER(galpani3_state::galpani3_priority_buffer_scrolly_w)
}
-ADDRESS_MAP_START(galpani3_state::galpani3_map)
- AM_RANGE(0x000000, 0x17ffff) AM_ROM
+void galpani3_state::galpani3_map(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom();
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // area [B] - Work RAM
- AM_RANGE(0x280000, 0x287fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // area [A] - palette for sprites
+ map(0x200000, 0x20ffff).ram(); // area [B] - Work RAM
+ map(0x280000, 0x287fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // area [A] - palette for sprites
- AM_RANGE(0x300000, 0x303fff) AM_RAM_WRITE(galpani3_suprnova_sprite32_w) AM_SHARE("spriteram")
- AM_RANGE(0x380000, 0x38003f) AM_RAM_WRITE(galpani3_suprnova_sprite32regs_w) AM_SHARE("sprregs")
+ map(0x300000, 0x303fff).ram().w(this, FUNC(galpani3_state::galpani3_suprnova_sprite32_w)).share("spriteram");
+ map(0x380000, 0x38003f).ram().w(this, FUNC(galpani3_state::galpani3_suprnova_sprite32regs_w)).share("sprregs");
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("mcuram") // area [C]
+ map(0x400000, 0x40ffff).ram().share("mcuram"); // area [C]
- AM_RANGE(0x580000, 0x580001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w)
- AM_RANGE(0x600000, 0x600001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w)
- AM_RANGE(0x680000, 0x680001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w)
- AM_RANGE(0x700000, 0x700001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w)
- AM_RANGE(0x780000, 0x780001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r)
+ map(0x580000, 0x580001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w));
+ map(0x600000, 0x600001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w));
+ map(0x680000, 0x680001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w));
+ map(0x700000, 0x700001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w));
+ map(0x780000, 0x780001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r));
- AM_RANGE(0x800000, 0x9fffff) AM_DEVICE( "grap2_0", kaneko_grap2_device, grap2_map)
- AM_RANGE(0xa00000, 0xbfffff) AM_DEVICE( "grap2_1", kaneko_grap2_device, grap2_map)
- AM_RANGE(0xc00000, 0xdfffff) AM_DEVICE( "grap2_2", kaneko_grap2_device, grap2_map)
+ map(0x800000, 0x9fffff).m("grap2_0", FUNC(kaneko_grap2_device::grap2_map));
+ map(0xa00000, 0xbfffff).m("grap2_1", FUNC(kaneko_grap2_device::grap2_map));
+ map(0xc00000, 0xdfffff).m("grap2_2", FUNC(kaneko_grap2_device::grap2_map));
// ?? priority / alpha buffer?
- AM_RANGE(0xe00000, 0xe7ffff) AM_RAM AM_SHARE("priority_buffer") // area [J] - A area ? odd bytes only, initialized 00..ff,00..ff,..., then cleared
- AM_RANGE(0xe80000, 0xe80001) AM_WRITE(galpani3_priority_buffer_scrollx_w) // scroll?
- AM_RANGE(0xe80002, 0xe80003) AM_WRITE(galpani3_priority_buffer_scrolly_w) // scroll?
-
-
- AM_RANGE(0xf00000, 0xf00001) AM_NOP // ? written once (2nd opcode, $1.b)
- AM_RANGE(0xf00010, 0xf00011) AM_READ_PORT("P1")
- AM_RANGE(0xf00012, 0xf00013) AM_READ_PORT("P2")
- AM_RANGE(0xf00014, 0xf00015) AM_READ_PORT("COIN")
- AM_RANGE(0xf00016, 0xf00017) AM_NOP // ? read, but overwritten
- AM_RANGE(0xf00020, 0xf00023) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // sound
- AM_RANGE(0xf00040, 0xf00041) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0xf00050, 0xf00051) AM_NOP // ? written once (3rd opcode, $30.b)
-ADDRESS_MAP_END
+ map(0xe00000, 0xe7ffff).ram().share("priority_buffer"); // area [J] - A area ? odd bytes only, initialized 00..ff,00..ff,..., then cleared
+ map(0xe80000, 0xe80001).w(this, FUNC(galpani3_state::galpani3_priority_buffer_scrollx_w)); // scroll?
+ map(0xe80002, 0xe80003).w(this, FUNC(galpani3_state::galpani3_priority_buffer_scrolly_w)); // scroll?
+
+
+ map(0xf00000, 0xf00001).noprw(); // ? written once (2nd opcode, $1.b)
+ map(0xf00010, 0xf00011).portr("P1");
+ map(0xf00012, 0xf00013).portr("P2");
+ map(0xf00014, 0xf00015).portr("COIN");
+ map(0xf00016, 0xf00017).noprw(); // ? read, but overwritten
+ map(0xf00020, 0xf00023).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // sound
+ map(0xf00040, 0xf00041).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0xf00050, 0xf00051).noprw(); // ? written once (3rd opcode, $30.b)
+}
MACHINE_CONFIG_START(galpani3_state::galpani3)
diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp
index 1cea0c488f3..6164810d164 100644
--- a/src/mame/drivers/galpanic.cpp
+++ b/src/mame/drivers/galpanic.cpp
@@ -133,33 +133,36 @@ WRITE16_MEMBER(galpanic_state::coin_w)
-ADDRESS_MAP_START(galpanic_state::galpanic_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram")
- AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") /* + work RAM */
- AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* 1024 colors, but only 512 seem to be used */
- AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
- AM_RANGE(0x702000, 0x704fff) AM_RAM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2")
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x900000, 0x900001) AM_WRITE(m6295_bankswitch_w)
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(coin_w) /* coin counters */
- AM_RANGE(0xb00000, 0xb00001) AM_WRITENOP /* ??? */
- AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */
- AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galpanic_state::galpanica_map)
- AM_IMPORT_FROM(galpanic_map)
- AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galpanic_state::galpanic_oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void galpanic_state::galpanic_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x400001, 0x400001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x500000, 0x51ffff).ram().share("fgvideoram");
+ map(0x520000, 0x53ffff).ram().w(this, FUNC(galpanic_state::bgvideoram_w)).share("bgvideoram"); /* + work RAM */
+ map(0x600000, 0x6007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* 1024 colors, but only 512 seem to be used */
+ map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w));
+ map(0x702000, 0x704fff).ram();
+ map(0x800000, 0x800001).portr("DSW1");
+ map(0x800002, 0x800003).portr("DSW2");
+ map(0x800004, 0x800005).portr("SYSTEM");
+ map(0x900000, 0x900001).w(this, FUNC(galpanic_state::m6295_bankswitch_w));
+ map(0xa00000, 0xa00001).w(this, FUNC(galpanic_state::coin_w)); /* coin counters */
+ map(0xb00000, 0xb00001).nopw(); /* ??? */
+ map(0xc00000, 0xc00001).nopw(); /* ??? */
+ map(0xd00000, 0xd00001).nopw(); /* ??? */
+}
+
+void galpanic_state::galpanica_map(address_map &map)
+{
+ galpanic_map(map);
+ map(0xe00000, 0xe00015).rw("calc1_mcu", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w));
+}
+
+void galpanic_state::galpanic_oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( galpanic )
diff --git a/src/mame/drivers/galspnbl.cpp b/src/mame/drivers/galspnbl.cpp
index 8979cf6becf..a0f9324eb5b 100644
--- a/src/mame/drivers/galspnbl.cpp
+++ b/src/mame/drivers/galspnbl.cpp
@@ -57,38 +57,40 @@ WRITE16_MEMBER(galspnbl_state::soundcommand_w)
}
-ADDRESS_MAP_START(galspnbl_state::main_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x700000, 0x703fff) AM_RAM /* galspnbl work RAM */
- AM_RANGE(0x708000, 0x70ffff) AM_RAM /* galspnbl work RAM, bitmaps are decompressed here */
- AM_RANGE(0x800000, 0x803fff) AM_RAM /* hotpinbl work RAM */
- AM_RANGE(0x808000, 0x80ffff) AM_RAM /* hotpinbl work RAM, bitmaps are decompressed here */
- AM_RANGE(0x880000, 0x880fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8ff400, 0x8fffff) AM_WRITENOP /* ??? */
- AM_RANGE(0x900000, 0x900fff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x901000, 0x903fff) AM_WRITENOP /* ??? */
- AM_RANGE(0x904000, 0x904fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x905000, 0x907fff) AM_WRITENOP /* ??? */
- AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_SHARE("bgvideoram")
- AM_RANGE(0xa00000, 0xa00fff) AM_WRITENOP /* more palette ? */
- AM_RANGE(0xa01000, 0xa017ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa01800, 0xa027ff) AM_WRITENOP /* more palette ? */
- AM_RANGE(0xa80000, 0xa80001) AM_READ_PORT("IN0")
- AM_RANGE(0xa80010, 0xa80011) AM_READ_PORT("IN1") AM_WRITE(soundcommand_w)
- AM_RANGE(0xa80020, 0xa80021) AM_READ_PORT("SYSTEM") AM_WRITENOP /* w - could be watchdog, but causes resets when picture is shown */
- AM_RANGE(0xa80030, 0xa80031) AM_READ_PORT("DSW1") AM_WRITENOP /* w - irq ack? */
- AM_RANGE(0xa80040, 0xa80041) AM_READ_PORT("DSW2")
- AM_RANGE(0xa80050, 0xa80051) AM_WRITEONLY AM_SHARE("scroll") /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(galspnbl_state::audio_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xfc00, 0xfc00) AM_NOP /* irq ack ?? */
- AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void galspnbl_state::main_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x700000, 0x703fff).ram(); /* galspnbl work RAM */
+ map(0x708000, 0x70ffff).ram(); /* galspnbl work RAM, bitmaps are decompressed here */
+ map(0x800000, 0x803fff).ram(); /* hotpinbl work RAM */
+ map(0x808000, 0x80ffff).ram(); /* hotpinbl work RAM, bitmaps are decompressed here */
+ map(0x880000, 0x880fff).ram().share("spriteram");
+ map(0x8ff400, 0x8fffff).nopw(); /* ??? */
+ map(0x900000, 0x900fff).ram().share("colorram");
+ map(0x901000, 0x903fff).nopw(); /* ??? */
+ map(0x904000, 0x904fff).ram().share("videoram");
+ map(0x905000, 0x907fff).nopw(); /* ??? */
+ map(0x980000, 0x9bffff).ram().share("bgvideoram");
+ map(0xa00000, 0xa00fff).nopw(); /* more palette ? */
+ map(0xa01000, 0xa017ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa01800, 0xa027ff).nopw(); /* more palette ? */
+ map(0xa80000, 0xa80001).portr("IN0");
+ map(0xa80010, 0xa80011).portr("IN1").w(this, FUNC(galspnbl_state::soundcommand_w));
+ map(0xa80020, 0xa80021).portr("SYSTEM").nopw(); /* w - could be watchdog, but causes resets when picture is shown */
+ map(0xa80030, 0xa80031).portr("DSW1").nopw(); /* w - irq ack? */
+ map(0xa80040, 0xa80041).portr("DSW2");
+ map(0xa80050, 0xa80051).writeonly().share("scroll"); /* ??? */
+}
+
+void galspnbl_state::audio_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xfc00, 0xfc00).noprw(); /* irq ack ?? */
+ map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( galspnbl )
diff --git a/src/mame/drivers/gamate.cpp b/src/mame/drivers/gamate.cpp
index def01b131a3..0dcca70406b 100644
--- a/src/mame/drivers/gamate.cpp
+++ b/src/mame/drivers/gamate.cpp
@@ -116,19 +116,20 @@ READ8_MEMBER(gamate_state::read_cart)
return m_cartslot->read_cart(space, offset);
}
-ADDRESS_MAP_START(gamate_state::gamate_mem)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x4000, 0x400f) AM_MIRROR(0x03f0) AM_READWRITE(sound_r,sound_w)
- AM_RANGE(0x4400, 0x4400) AM_MIRROR(0x03ff) AM_READ_PORT("JOY")
- AM_RANGE(0x4800, 0x4800) AM_MIRROR(0x03ff) AM_READ(gamate_nmi_r)
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0x03f8) AM_DEVICE("video", gamate_video_device, regs_map)
- AM_RANGE(0x5800, 0x5800) AM_READ(card_available_set)
- AM_RANGE(0x5900, 0x5900) AM_WRITE(card_reset)
- AM_RANGE(0x5a00, 0x5a00) AM_READ(card_available_check)
- AM_RANGE(0x6000, 0xdfff) AM_READWRITE(read_cart, write_cart)
-
- AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM AM_SHARE("bios") AM_REGION("maincpu",0)
-ADDRESS_MAP_END
+void gamate_state::gamate_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+ map(0x4000, 0x400f).mirror(0x03f0).rw(this, FUNC(gamate_state::sound_r), FUNC(gamate_state::sound_w));
+ map(0x4400, 0x4400).mirror(0x03ff).portr("JOY");
+ map(0x4800, 0x4800).mirror(0x03ff).r(this, FUNC(gamate_state::gamate_nmi_r));
+ map(0x5000, 0x5007).mirror(0x03f8).m("video", FUNC(gamate_video_device::regs_map));
+ map(0x5800, 0x5800).r(this, FUNC(gamate_state::card_available_set));
+ map(0x5900, 0x5900).w(this, FUNC(gamate_state::card_reset));
+ map(0x5a00, 0x5a00).r(this, FUNC(gamate_state::card_available_check));
+ map(0x6000, 0xdfff).rw(this, FUNC(gamate_state::read_cart), FUNC(gamate_state::write_cart));
+
+ map(0xe000, 0xefff).mirror(0x1000).rom().share("bios").region("maincpu", 0);
+}
static INPUT_PORTS_START( gamate )
diff --git a/src/mame/drivers/gambl186.cpp b/src/mame/drivers/gambl186.cpp
index bcbb19d81cf..1ef84705603 100644
--- a/src/mame/drivers/gambl186.cpp
+++ b/src/mame/drivers/gambl186.cpp
@@ -360,30 +360,32 @@ WRITE16_MEMBER(gambl186_state::upd_w)
// m_upd7759->start_w(1);
}
-ADDRESS_MAP_START(gambl186_state::gambl186_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x40000, 0x7ffff) AM_ROMBANK("data_bank")
- AM_RANGE(0xa0000, 0xbffff) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_r, mem_w, 0xffff)
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("ipl",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gambl186_state::gambl186_io)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03b0_r, port_03b0_w, 0xffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03c0_r, port_03c0_w, 0xffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03d0_r, port_03d0_w, 0xffff)
- AM_RANGE(0x0400, 0x0401) AM_WRITE(upd_w) // upd7759 sample index/input
- AM_RANGE(0x0500, 0x0501) AM_READ_PORT("IN0")
- AM_RANGE(0x0502, 0x0503) AM_READ_PORT("IN1")
- AM_RANGE(0x0504, 0x0505) AM_READ_PORT("IN2") // Seems to writes more upd7759 params in MSB...
+void gambl186_state::gambl186_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram().share("nvram");
+ map(0x40000, 0x7ffff).bankr("data_bank");
+ map(0xa0000, 0xbffff).rw("vga", FUNC(cirrus_gd5428_device::mem_r), FUNC(cirrus_gd5428_device::mem_w));
+ map(0xc0000, 0xfffff).rom().region("ipl", 0);
+}
+
+void gambl186_state::gambl186_io(address_map &map)
+{
+ map(0x03b0, 0x03bf).rw("vga", FUNC(cirrus_gd5428_device::port_03b0_r), FUNC(cirrus_gd5428_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(cirrus_gd5428_device::port_03c0_r), FUNC(cirrus_gd5428_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(cirrus_gd5428_device::port_03d0_r), FUNC(cirrus_gd5428_device::port_03d0_w));
+ map(0x0400, 0x0401).w(this, FUNC(gambl186_state::upd_w)); // upd7759 sample index/input
+ map(0x0500, 0x0501).portr("IN0");
+ map(0x0502, 0x0503).portr("IN1");
+ map(0x0504, 0x0505).portr("IN2"); // Seems to writes more upd7759 params in MSB...
//AM_RANGE(0x0500, 0x050f) AM_READ(unk_r)
- AM_RANGE(0x0580, 0x0581) AM_READ_PORT("DSW1")
- AM_RANGE(0x0582, 0x0583) AM_READ_PORT("JOY")
- AM_RANGE(0x0584, 0x0585) AM_READ_PORT("DSW0") AM_WRITENOP // Watchdog: bit 8
+ map(0x0580, 0x0581).portr("DSW1");
+ map(0x0582, 0x0583).portr("JOY");
+ map(0x0584, 0x0585).portr("DSW0").nopw(); // Watchdog: bit 8
// AM_RANGE(0x0600, 0x0603) AM_WRITENOP // lamps
- AM_RANGE(0x0680, 0x0683) AM_READWRITE(comms_r, comms_w)
- AM_RANGE(0x0700, 0x0701) AM_WRITE(data_bank_w)
-ADDRESS_MAP_END
+ map(0x0680, 0x0683).rw(this, FUNC(gambl186_state::comms_r), FUNC(gambl186_state::comms_w));
+ map(0x0700, 0x0701).w(this, FUNC(gambl186_state::data_bank_w));
+}
diff --git a/src/mame/drivers/gamecom.cpp b/src/mame/drivers/gamecom.cpp
index bfc336a3a64..df803979066 100644
--- a/src/mame/drivers/gamecom.cpp
+++ b/src/mame/drivers/gamecom.cpp
@@ -34,21 +34,22 @@ Game Status:
#include "gamecom.lh"
-ADDRESS_MAP_START(gamecom_state::gamecom_mem_map)
- AM_RANGE( 0x0000, 0x0013 ) AM_RAM AM_REGION("maincpu", 0x00)
- AM_RANGE( 0x0014, 0x0017 ) AM_READWRITE( gamecom_pio_r, gamecom_pio_w ) // buttons
- AM_RANGE( 0x0018, 0x001F ) AM_RAM AM_REGION("maincpu", 0x18)
- AM_RANGE( 0x0020, 0x007F ) AM_READWRITE( gamecom_internal_r, gamecom_internal_w )/* CPU internal register file */
- AM_RANGE( 0x0080, 0x03FF ) AM_RAM AM_REGION("maincpu", 0x80) /* RAM */
- AM_RANGE( 0x0400, 0x0FFF ) AM_NOP /* Nothing */
- AM_RANGE( 0x1000, 0x1FFF ) AM_ROM /* Internal ROM (initially), or External ROM/Flash. Controlled by MMU0 (never swapped out in game.com) */
- AM_RANGE( 0x2000, 0x3FFF ) AM_ROMBANK("bank1") /* External ROM/Flash. Controlled by MMU1 */
- AM_RANGE( 0x4000, 0x5FFF ) AM_ROMBANK("bank2") /* External ROM/Flash. Controlled by MMU2 */
- AM_RANGE( 0x6000, 0x7FFF ) AM_ROMBANK("bank3") /* External ROM/Flash. Controlled by MMU3 */
- AM_RANGE( 0x8000, 0x9FFF ) AM_ROMBANK("bank4") /* External ROM/Flash. Controlled by MMU4 */
- AM_RANGE( 0xA000, 0xDFFF ) AM_RAM AM_SHARE("videoram") /* VRAM */
- AM_RANGE( 0xE000, 0xFFFF ) AM_RAM AM_SHARE("nvram") /* Extended I/O, Extended RAM */
-ADDRESS_MAP_END
+void gamecom_state::gamecom_mem_map(address_map &map)
+{
+ map(0x0000, 0x0013).ram().region("maincpu", 0x00);
+ map(0x0014, 0x0017).rw(this, FUNC(gamecom_state::gamecom_pio_r), FUNC(gamecom_state::gamecom_pio_w)); // buttons
+ map(0x0018, 0x001F).ram().region("maincpu", 0x18);
+ map(0x0020, 0x007F).rw(this, FUNC(gamecom_state::gamecom_internal_r), FUNC(gamecom_state::gamecom_internal_w));/* CPU internal register file */
+ map(0x0080, 0x03FF).ram().region("maincpu", 0x80); /* RAM */
+ map(0x0400, 0x0FFF).noprw(); /* Nothing */
+ map(0x1000, 0x1FFF).rom(); /* Internal ROM (initially), or External ROM/Flash. Controlled by MMU0 (never swapped out in game.com) */
+ map(0x2000, 0x3FFF).bankr("bank1"); /* External ROM/Flash. Controlled by MMU1 */
+ map(0x4000, 0x5FFF).bankr("bank2"); /* External ROM/Flash. Controlled by MMU2 */
+ map(0x6000, 0x7FFF).bankr("bank3"); /* External ROM/Flash. Controlled by MMU3 */
+ map(0x8000, 0x9FFF).bankr("bank4"); /* External ROM/Flash. Controlled by MMU4 */
+ map(0xA000, 0xDFFF).ram().share("videoram"); /* VRAM */
+ map(0xE000, 0xFFFF).ram().share("nvram"); /* Extended I/O, Extended RAM */
+}
static INPUT_PORTS_START( gamecom )
PORT_START("IN0")
diff --git a/src/mame/drivers/gamecstl.cpp b/src/mame/drivers/gamecstl.cpp
index c81a189e18d..673ee9145d6 100644
--- a/src/mame/drivers/gamecstl.cpp
+++ b/src/mame/drivers/gamecstl.cpp
@@ -347,29 +347,31 @@ WRITE32_MEMBER(gamecstl_state::bios_ram_w)
/*****************************************************************************/
-ADDRESS_MAP_START(gamecstl_state::gamecstl_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000affff) AM_RAM
- AM_RANGE(0x000b0000, 0x000b7fff) AM_RAM AM_SHARE("cga_ram")
- AM_RANGE(0x000e0000, 0x000effff) AM_RAM
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x01ffffff) AM_RAM
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gamecstl_state::gamecstl_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00eb) AM_NOP
- AM_RANGE(0x00ec, 0x00ef) AM_NOP
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x0300, 0x03af) AM_NOP
- AM_RANGE(0x03b0, 0x03df) AM_NOP
- AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
- AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+void gamecstl_state::gamecstl_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000affff).ram();
+ map(0x000b0000, 0x000b7fff).ram().share("cga_ram");
+ map(0x000e0000, 0x000effff).ram();
+ map(0x000f0000, 0x000fffff).bankr("bank1");
+ map(0x000f0000, 0x000fffff).w(this, FUNC(gamecstl_state::bios_ram_w));
+ map(0x00100000, 0x01ffffff).ram();
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void gamecstl_state::gamecstl_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e8, 0x00eb).noprw();
+ map(0x00ec, 0x00ef).noprw();
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x0300, 0x03af).noprw();
+ map(0x03b0, 0x03df).noprw();
+ map(0x0278, 0x027b).w(this, FUNC(gamecstl_state::pnp_config_w));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+ map(0x0a78, 0x0a7b).w(this, FUNC(gamecstl_state::pnp_data_w));
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/gamecube.cpp b/src/mame/drivers/gamecube.cpp
index 552fa3a2317..a58dc64a414 100644
--- a/src/mame/drivers/gamecube.cpp
+++ b/src/mame/drivers/gamecube.cpp
@@ -42,11 +42,12 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(gamecube_state::ppc_mem)
- AM_RANGE(0x00000000, 0x017fffff) AM_RAM // 24 MB main memory
- AM_RANGE(0x08000000, 0x081fffff) AM_RAM // 2 MB embedded framebuffer
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROMBANK("boot")
-ADDRESS_MAP_END
+void gamecube_state::ppc_mem(address_map &map)
+{
+ map(0x00000000, 0x017fffff).ram(); // 24 MB main memory
+ map(0x08000000, 0x081fffff).ram(); // 2 MB embedded framebuffer
+ map(0xfff00000, 0xffffffff).bankr("boot");
+}
//**************************************************************************
diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp
index b205eb639e8..9fe9cebc143 100644
--- a/src/mame/drivers/gameking.cpp
+++ b/src/mame/drivers/gameking.cpp
@@ -148,20 +148,21 @@ READ8_MEMBER(gameking_state::lcd_r)
return data;
}
-ADDRESS_MAP_START(gameking_state::gameking_mem)
- AM_RANGE(0x0000, 0x007f) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x0080, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x03ff) AM_RAM // lcd 2nd copy
+void gameking_state::gameking_mem(address_map &map)
+{
+ map(0x0000, 0x007f).rw(this, FUNC(gameking_state::io_r), FUNC(gameking_state::io_w));
+ map(0x0080, 0x01ff).ram();
+ map(0x0200, 0x03ff).ram(); // lcd 2nd copy
- AM_RANGE(0x0600, 0x077f) AM_READWRITE(lcd_r, lcd_w)
- AM_RANGE(0x0d00, 0x0fff) AM_RAM // d00, e00, f00 prooved on handheld
+ map(0x0600, 0x077f).rw(this, FUNC(gameking_state::lcd_r), FUNC(gameking_state::lcd_w));
+ map(0x0d00, 0x0fff).ram(); // d00, e00, f00 prooved on handheld
// AM_RANGE(0x1000, 0x1fff) AM_RAM // sthero writes to $19xx
// AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank3000")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank4000")
- AM_RANGE(0x8000, 0xffaf) AM_ROMBANK("bank8000")
- AM_RANGE(0xffb0, 0xffff) AM_ROMBANK("bankboot") // cpu seems to read from 8000 bank, and for exceptions ignore bank
-ADDRESS_MAP_END
+ map(0x4000, 0x7fff).bankr("bank4000");
+ map(0x8000, 0xffaf).bankr("bank8000");
+ map(0xffb0, 0xffff).bankr("bankboot"); // cpu seems to read from 8000 bank, and for exceptions ignore bank
+}
static INPUT_PORTS_START( gameking )
diff --git a/src/mame/drivers/gameplan.cpp b/src/mame/drivers/gameplan.cpp
index fde843f09bc..45690003b5f 100644
--- a/src/mame/drivers/gameplan.cpp
+++ b/src/mame/drivers/gameplan.cpp
@@ -178,13 +178,14 @@ WRITE8_MEMBER(gameplan_state::r6532_soundlatch_w)
*
*************************************/
-ADDRESS_MAP_START(gameplan_state::gameplan_main_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x2000, 0x200f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* VIA 1 */
- AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 2 */
- AM_RANGE(0x3000, 0x300f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) /* VIA 3 */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void gameplan_state::gameplan_main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+ map(0x2000, 0x200f).mirror(0x07f0).rw(m_via_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 1 */
+ map(0x2800, 0x280f).mirror(0x07f0).rw(m_via_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 2 */
+ map(0x3000, 0x300f).mirror(0x07f0).rw(m_via_2, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 3 */
+ map(0x8000, 0xffff).rom();
+}
@@ -194,25 +195,27 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(gameplan_state::gameplan_audio_map)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM /* 6532 internal RAM */
- AM_RANGE(0x0800, 0x081f) AM_MIRROR(0x17e0) AM_DEVREADWRITE("riot", riot6532_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_ROM
-ADDRESS_MAP_END
+void gameplan_state::gameplan_audio_map(address_map &map)
+{
+ map(0x0000, 0x007f).mirror(0x1780).ram(); /* 6532 internal RAM */
+ map(0x0800, 0x081f).mirror(0x17e0).rw(m_riot, FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0xa000, 0xa000).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xa001, 0xa001).mirror(0x1ffc).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa002).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0xe000, 0xe7ff).mirror(0x1800).rom();
+}
/* same as Gameplan, but larger ROM */
-ADDRESS_MAP_START(gameplan_state::leprechn_audio_map)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM /* 6532 internal RAM */
- AM_RANGE(0x0800, 0x081f) AM_MIRROR(0x17e0) AM_DEVREADWRITE("riot", riot6532_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM
-ADDRESS_MAP_END
+void gameplan_state::leprechn_audio_map(address_map &map)
+{
+ map(0x0000, 0x007f).mirror(0x1780).ram(); /* 6532 internal RAM */
+ map(0x0800, 0x081f).mirror(0x17e0).rw(m_riot, FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0xa000, 0xa000).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xa001, 0xa001).mirror(0x1ffc).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa002).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0xe000, 0xefff).mirror(0x1000).rom();
+}
diff --git a/src/mame/drivers/gamepock.cpp b/src/mame/drivers/gamepock.cpp
index d94cc76167b..adc7e8afd8c 100644
--- a/src/mame/drivers/gamepock.cpp
+++ b/src/mame/drivers/gamepock.cpp
@@ -14,14 +14,15 @@
#include "speaker.h"
-ADDRESS_MAP_START(gamepock_state::gamepock_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x0fff) AM_ROM
- AM_RANGE(0x1000,0x3fff) AM_NOP
+void gamepock_state::gamepock_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x3fff).noprw();
//AM_RANGE(0x4000,0xbfff) AM_ROM // mapped by the cartslot
- AM_RANGE(0xc000,0xc7ff) AM_MIRROR(0x0800) AM_RAM
- AM_RANGE(0xff80,0xffff) AM_RAM /* 128 bytes microcontroller RAM */
-ADDRESS_MAP_END
+ map(0xc000, 0xc7ff).mirror(0x0800).ram();
+ map(0xff80, 0xffff).ram(); /* 128 bytes microcontroller RAM */
+}
static INPUT_PORTS_START( gamepock )
diff --git a/src/mame/drivers/gammagic.cpp b/src/mame/drivers/gammagic.cpp
index 85167b30d57..68e30455f00 100644
--- a/src/mame/drivers/gammagic.cpp
+++ b/src/mame/drivers/gammagic.cpp
@@ -51,27 +51,29 @@ public:
};
// Memory is mostly handled by the chipset
-ADDRESS_MAP_START(gammagic_state::gammagic_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("user", 0x20000)/* System BIOS */
- AM_RANGE(0x00100000, 0x07ffffff) AM_RAM
- AM_RANGE(0x08000000, 0xfffdffff) AM_NOP
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("user", 0x20000)/* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gammagic_state::gammagic_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
- AM_RANGE(0x00f0, 0x01ef) AM_NOP
- AM_RANGE(0x01f8, 0x03af) AM_NOP
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03e0, 0x03ef) AM_NOP
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
- AM_RANGE(0x0400, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void gammagic_state::gammagic_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000e0000, 0x000fffff).rom().region("user", 0x20000);/* System BIOS */
+ map(0x00100000, 0x07ffffff).ram();
+ map(0x08000000, 0xfffdffff).noprw();
+ map(0xfffe0000, 0xffffffff).rom().region("user", 0x20000);/* System BIOS */
+}
+
+void gammagic_state::gammagic_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e8, 0x00ef).noprw();
+ map(0x00f0, 0x01ef).noprw();
+ map(0x01f8, 0x03af).noprw();
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+ map(0x03e0, 0x03ef).noprw();
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+ map(0x0400, 0xffff).noprw();
+}
#define AT_KEYB_HELPER(bit, text, key1) \
PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1)
diff --git a/src/mame/drivers/gamtor.cpp b/src/mame/drivers/gamtor.cpp
index ddcdaef3c0f..c79366e3c7a 100644
--- a/src/mame/drivers/gamtor.cpp
+++ b/src/mame/drivers/gamtor.cpp
@@ -53,26 +53,27 @@ WRITE32_MEMBER(gaminator_state::gamtor_unk_w)
-ADDRESS_MAP_START(gaminator_state::gaminator_map)
- AM_RANGE(0x00000000, 0x07ffffff) AM_ROM
- AM_RANGE(0x08000000, 0x0bffffff) AM_RAM
- AM_RANGE(0x1e040008, 0x1e04000b) AM_WRITE(gamtor_unk_w )
+void gaminator_state::gaminator_map(address_map &map)
+{
+ map(0x00000000, 0x07ffffff).rom();
+ map(0x08000000, 0x0bffffff).ram();
+ map(0x1e040008, 0x1e04000b).w(this, FUNC(gaminator_state::gamtor_unk_w));
- AM_RANGE(0x20000000, 0x2003ffff) AM_RAM
+ map(0x20000000, 0x2003ffff).ram();
/* standard VGA */
//AM_RANGE(0x40000000, 0x40000fff) AM_RAM // regs
- AM_RANGE(0x400003b0, 0x400003bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x400003c0, 0x400003cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x400003d0, 0x400003df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
+ map(0x400003b0, 0x400003bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x400003c0, 0x400003cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x400003d0, 0x400003df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
- AM_RANGE(0x44000000, 0x4401ffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) // VRAM
+ map(0x44000000, 0x4401ffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); // VRAM
// AM_RANGE(0x44000000, 0x44007fff) AM_RAM AM_SHARE("tmapram1") // puts strings here, looks almost like a tilemap, but where are the tiles?
// AM_RANGE(0x440a0000, 0x440a1fff) AM_RAM AM_SHARE("tmapram2") // beetlem (like above, mirror?)
- AM_RANGE(0xe0000000, 0xe00001ff) AM_RAM // nvram?
- AM_RANGE(0xf0000000, 0xf00003ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR
-ADDRESS_MAP_END
+ map(0xe0000000, 0xe00001ff).ram(); // nvram?
+ map(0xf0000000, 0xf00003ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR
+}
static INPUT_PORTS_START( gaminator )
INPUT_PORTS_END
diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp
index 8f2899596fa..6dbcc5feea2 100644
--- a/src/mame/drivers/gaplus.cpp
+++ b/src/mame/drivers/gaplus.cpp
@@ -272,35 +272,38 @@ INTERRUPT_GEN_MEMBER(gaplus_state::vblank_sub2_irq)
}
-ADDRESS_MAP_START(gaplus_state::cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* tilemap RAM (shared with CPU #2) */
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #2 (includes sprite RAM) */
- AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with CPU #3 */
- AM_RANGE(0x6800, 0x680f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x6810, 0x681f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x6820, 0x682f) AM_READWRITE(customio_3_r, customio_3_w) AM_SHARE("customio_3") /* custom I/O chip #3 interface */
- AM_RANGE(0x7000, 0x7fff) AM_WRITE(irq_1_ctrl_w) /* main CPU irq control */
- AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8000, 0x8fff) AM_WRITE(sreset_w) /* reset CPU #2 & #3, enable sound */
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(freset_w) /* reset I/O chips */
- AM_RANGE(0xa000, 0xa7ff) AM_WRITE(starfield_control_w) /* starfield control */
- AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaplus_state::cpu2_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* tilemap RAM (shared with CPU #1) */
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #1 */
+void gaplus_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(gaplus_state::videoram_w)).share("videoram"); /* tilemap RAM (shared with CPU #2) */
+ map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2 (includes sprite RAM) */
+ map(0x6000, 0x63ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with CPU #3 */
+ map(0x6800, 0x680f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x6810, 0x681f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x6820, 0x682f).rw(this, FUNC(gaplus_state::customio_3_r), FUNC(gaplus_state::customio_3_w)).share("customio_3"); /* custom I/O chip #3 interface */
+ map(0x7000, 0x7fff).w(this, FUNC(gaplus_state::irq_1_ctrl_w)); /* main CPU irq control */
+ map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8000, 0x8fff).w(this, FUNC(gaplus_state::sreset_w)); /* reset CPU #2 & #3, enable sound */
+ map(0x9000, 0x9fff).w(this, FUNC(gaplus_state::freset_w)); /* reset I/O chips */
+ map(0xa000, 0xa7ff).w(this, FUNC(gaplus_state::starfield_control_w)); /* starfield control */
+ map(0xa000, 0xffff).rom(); /* ROM */
+}
+
+void gaplus_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(gaplus_state::videoram_w)).share("videoram"); /* tilemap RAM (shared with CPU #1) */
+ map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #1 */
// AM_RANGE(0x500f, 0x500f) AM_WRITENOP /* ??? written 256 times on startup */
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(irq_2_ctrl_w) /* IRQ 2 control */
- AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaplus_state::cpu3_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU + sound registers */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) /* watchdog? */
- AM_RANGE(0x4000, 0x7fff) AM_WRITE(irq_3_ctrl_w) /* interrupt enable/disable */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
+ map(0x6000, 0x6fff).w(this, FUNC(gaplus_state::irq_2_ctrl_w)); /* IRQ 2 control */
+ map(0xa000, 0xffff).rom(); /* ROM */
+}
+
+void gaplus_state::cpu3_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU + sound registers */
+ map(0x2000, 0x3fff).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); /* watchdog? */
+ map(0x4000, 0x7fff).w(this, FUNC(gaplus_state::irq_3_ctrl_w)); /* interrupt enable/disable */
+ map(0xe000, 0xffff).rom(); /* ROM */
+}
static INPUT_PORTS_START( gaplus )
/* The inputs are not memory mapped, they are handled by three I/O chips. */
diff --git a/src/mame/drivers/gatron.cpp b/src/mame/drivers/gatron.cpp
index d3ae5597210..725a66ba642 100644
--- a/src/mame/drivers/gatron.cpp
+++ b/src/mame/drivers/gatron.cpp
@@ -447,18 +447,20 @@ WRITE8_MEMBER(gatron_state::output_port_1_w)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(gatron_state::gat_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76489_device, write) /* PSG */
- AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w) /* lamps */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gatron_state::gat_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+void gatron_state::gat_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x63ff).ram().w(this, FUNC(gatron_state::gat_videoram_w)).share("videoram");
+ map(0x8000, 0x87ff).ram().share("nvram"); /* battery backed RAM */
+ map(0xa000, 0xa000).w("snsnd", FUNC(sn76489_device::write)); /* PSG */
+ map(0xe000, 0xe000).w(this, FUNC(gatron_state::output_port_0_w)); /* lamps */
+}
+
+void gatron_state::gat_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/*************************
diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp
index baa131bdb67..970a27bcb42 100644
--- a/src/mame/drivers/gauntlet.cpp
+++ b/src/mame/drivers/gauntlet.cpp
@@ -272,37 +272,38 @@ WRITE8_MEMBER(gauntlet_state::mixer_w)
*************************************/
/* full map verified from schematics */
-ADDRESS_MAP_START(gauntlet_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x037fff) AM_MIRROR(0x280000) AM_ROM
- AM_RANGE(0x038000, 0x03ffff) AM_MIRROR(0x280000) AM_ROM /* slapstic maps here */
- AM_RANGE(0x040000, 0x07ffff) AM_MIRROR(0x280000) AM_ROM
+void gauntlet_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x037fff).mirror(0x280000).rom();
+ map(0x038000, 0x03ffff).mirror(0x280000).rom(); /* slapstic maps here */
+ map(0x040000, 0x07ffff).mirror(0x280000).rom();
/* MBUS */
- AM_RANGE(0x800000, 0x801fff) AM_MIRROR(0x2fc000) AM_RAM
- AM_RANGE(0x802000, 0x802fff) AM_MIRROR(0x2fc000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x803000, 0x803001) AM_MIRROR(0x2fcef0) AM_READ_PORT("803000")
- AM_RANGE(0x803002, 0x803003) AM_MIRROR(0x2fcef0) AM_READ_PORT("803002")
- AM_RANGE(0x803004, 0x803005) AM_MIRROR(0x2fcef0) AM_READ_PORT("803004")
- AM_RANGE(0x803006, 0x803007) AM_MIRROR(0x2fcef0) AM_READ_PORT("803006")
- AM_RANGE(0x803008, 0x803009) AM_MIRROR(0x2fcef0) AM_READ_PORT("803008")
- AM_RANGE(0x80300e, 0x80300f) AM_MIRROR(0x2fcef0) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0x00ff)
- AM_RANGE(0x803100, 0x803101) AM_MIRROR(0x2fce8e) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x803120, 0x803121) AM_MIRROR(0x2fce8e) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w)
- AM_RANGE(0x803140, 0x803141) AM_MIRROR(0x2fce8e) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x803150, 0x803151) AM_MIRROR(0x2fce8e) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x803170, 0x803171) AM_MIRROR(0x2fce8e) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff)
+ map(0x800000, 0x801fff).mirror(0x2fc000).ram();
+ map(0x802000, 0x802fff).mirror(0x2fc000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x803000, 0x803001).mirror(0x2fcef0).portr("803000");
+ map(0x803002, 0x803003).mirror(0x2fcef0).portr("803002");
+ map(0x803004, 0x803005).mirror(0x2fcef0).portr("803004");
+ map(0x803006, 0x803007).mirror(0x2fcef0).portr("803006");
+ map(0x803008, 0x803009).mirror(0x2fcef0).portr("803008");
+ map(0x80300f, 0x80300f).mirror(0x2fcef0).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r));
+ map(0x803100, 0x803101).mirror(0x2fce8e).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x803120, 0x803121).mirror(0x2fce8e).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w));
+ map(0x803140, 0x803141).mirror(0x2fce8e).w(this, FUNC(gauntlet_state::video_int_ack_w));
+ map(0x803150, 0x803151).mirror(0x2fce8e).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x803171, 0x803171).mirror(0x2fce8e).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w));
/* VBUS */
- AM_RANGE(0x900000, 0x901fff) AM_MIRROR(0x2c8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x902000, 0x903fff) AM_MIRROR(0x2c8000) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x904000, 0x904fff) AM_MIRROR(0x2c8000) AM_RAM
- AM_RANGE(0x905000, 0x905f7f) AM_MIRROR(0x2c8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0x905f6e, 0x905f6f) AM_MIRROR(0x2c8000) AM_RAM_WRITE(gauntlet_yscroll_w) AM_SHARE("yscroll")
- AM_RANGE(0x905f80, 0x905fff) AM_MIRROR(0x2c8000) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x910000, 0x9107ff) AM_MIRROR(0x2cf800) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x930000, 0x930001) AM_MIRROR(0x2cfffe) AM_WRITE(gauntlet_xscroll_w) AM_SHARE("xscroll")
-ADDRESS_MAP_END
+ map(0x900000, 0x901fff).mirror(0x2c8000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x902000, 0x903fff).mirror(0x2c8000).ram().share("mob");
+ map(0x904000, 0x904fff).mirror(0x2c8000).ram();
+ map(0x905000, 0x905f7f).mirror(0x2c8000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0x905f6e, 0x905f6f).mirror(0x2c8000).ram().w(this, FUNC(gauntlet_state::gauntlet_yscroll_w)).share("yscroll");
+ map(0x905f80, 0x905fff).mirror(0x2c8000).ram().share("mob:slip");
+ map(0x910000, 0x9107ff).mirror(0x2cf800).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x930000, 0x930001).mirror(0x2cfffe).w(this, FUNC(gauntlet_state::gauntlet_xscroll_w)).share("xscroll");
+}
@@ -313,20 +314,21 @@ ADDRESS_MAP_END
*************************************/
/* full map verified from schematics */
-ADDRESS_MAP_START(gauntlet_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x1000, 0x100f) AM_MIRROR(0x27c0) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_response_w)
- AM_RANGE(0x1010, 0x101f) AM_MIRROR(0x27c0) AM_DEVREAD("soundcomm", atari_sound_comm_device, sound_command_r)
- AM_RANGE(0x1020, 0x102f) AM_MIRROR(0x27c0) AM_READ_PORT("COIN") AM_WRITE(mixer_w)
- AM_RANGE(0x1030, 0x1030) AM_MIRROR(0x27cf) AM_READ(switch_6502_r)
- AM_RANGE(0x1030, 0x1037) AM_MIRROR(0x27c8) AM_DEVWRITE("soundctl", ls259_device, write_d7)
- AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x1820, 0x182f) AM_MIRROR(0x27c0) AM_DEVWRITE("tms", tms5220_device, data_w)
- AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_r, sound_irq_ack_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void gauntlet_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).mirror(0x2000).ram();
+ map(0x1000, 0x100f).mirror(0x27c0).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w));
+ map(0x1010, 0x101f).mirror(0x27c0).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r));
+ map(0x1020, 0x102f).mirror(0x27c0).portr("COIN").w(this, FUNC(gauntlet_state::mixer_w));
+ map(0x1030, 0x1030).mirror(0x27cf).r(this, FUNC(gauntlet_state::switch_6502_r));
+ map(0x1030, 0x1037).mirror(0x27c8).w(m_soundctl, FUNC(ls259_device::write_d7));
+ map(0x1800, 0x180f).mirror(0x27c0).rw(m_pokey, FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x1810, 0x1811).mirror(0x27ce).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x1820, 0x182f).mirror(0x27c0).w(m_tms5220, FUNC(tms5220_device::data_w));
+ map(0x1830, 0x183f).mirror(0x27c0).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w));
+ map(0x4000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/gb.cpp b/src/mame/drivers/gb.cpp
index 3ea855c177e..be62bc322ec 100644
--- a/src/mame/drivers/gb.cpp
+++ b/src/mame/drivers/gb.cpp
@@ -403,76 +403,80 @@ WRITE8_MEMBER(megaduck_state::bank2_w)
}
-ADDRESS_MAP_START(gb_state::gameboy_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(gb_cart_r, gb_bank_w)
- AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", dmg_ppu_device, vram_r, vram_w) /* 8k VRAM */
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(gb_ram_r, gb_ram_w) /* 8k switched RAM bank (cartridge) */
- AM_RANGE(0xc000, 0xdfff) AM_RAM /* 8k low RAM */
- AM_RANGE(0xe000, 0xfdff) AM_READWRITE(gb_echo_r, gb_echo_w)
- AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", dmg_ppu_device, oam_r, oam_w) /* OAM RAM */
- AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, gb_io_w) /* I/O */
- AM_RANGE(0xff10, 0xff26) AM_DEVREADWRITE("apu", gameboy_sound_device, sound_r, sound_w) /* sound registers */
- AM_RANGE(0xff27, 0xff2f) AM_NOP /* unused */
- AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* Wave ram */
- AM_RANGE(0xff40, 0xff7f) AM_DEVREAD("ppu", dmg_ppu_device, video_r) AM_WRITE(gb_io2_w) /* Video controller & BIOS flip-flop */
- AM_RANGE(0xff80, 0xfffe) AM_RAM /* High RAM */
- AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* Interrupt enable register */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gb_state::sgb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(gb_cart_r, gb_bank_w)
- AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", sgb_ppu_device, vram_r, vram_w) /* 8k VRAM */
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(gb_ram_r, gb_ram_w) /* 8k switched RAM bank (cartridge) */
- AM_RANGE(0xc000, 0xdfff) AM_RAM /* 8k low RAM */
- AM_RANGE(0xe000, 0xfdff) AM_READWRITE(gb_echo_r, gb_echo_w)
- AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", sgb_ppu_device, oam_r, oam_w) /* OAM RAM */
- AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, sgb_io_w) /* I/O */
- AM_RANGE(0xff10, 0xff26) AM_DEVREADWRITE("apu", gameboy_sound_device, sound_r, sound_w) /* sound registers */
- AM_RANGE(0xff27, 0xff2f) AM_NOP /* unused */
- AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* Wave RAM */
- AM_RANGE(0xff40, 0xff7f) AM_DEVREAD("ppu", sgb_ppu_device, video_r) AM_WRITE(gb_io2_w) /* Video controller & BIOS flip-flop */
- AM_RANGE(0xff80, 0xfffe) AM_RAM /* High RAM */
- AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* Interrupt enable register */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gb_state::gbc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(gbc_cart_r, gb_bank_w)
- AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", cgb_ppu_device, vram_r, vram_w) /* 8k banked VRAM */
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(gb_ram_r, gb_ram_w) /* 8k switched RAM bank (cartridge) */
- AM_RANGE(0xc000, 0xcfff) AM_RAM /* 4k fixed RAM bank */
- AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("cgb_ram") /* 4k switched RAM bank */
- AM_RANGE(0xe000, 0xfdff) AM_READWRITE(gb_echo_r, gb_echo_w)
- AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", cgb_ppu_device, oam_r, oam_w) /* OAM RAM */
- AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, gbc_io_w) /* I/O */
- AM_RANGE(0xff10, 0xff26) AM_DEVREADWRITE("apu", gameboy_sound_device, sound_r, sound_w) /* sound controller */
- AM_RANGE(0xff27, 0xff2f) AM_NOP /* unused */
- AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* Wave RAM */
- AM_RANGE(0xff40, 0xff7f) AM_READWRITE(gbc_io2_r, gbc_io2_w) /* Other I/O and video controller */
- AM_RANGE(0xff80, 0xfffe) AM_RAM /* high RAM */
- AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* Interrupt enable register */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megaduck_state::megaduck_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(cart_r, bank1_w)
- AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", dmg_ppu_device, vram_r, vram_w) /* 8k VRAM */
- AM_RANGE(0xa000, 0xafff) AM_NOP /* unused? */
- AM_RANGE(0xb000, 0xb000) AM_WRITE(bank2_w)
- AM_RANGE(0xb001, 0xbfff) AM_NOP /* unused? */
- AM_RANGE(0xc000, 0xfdff) AM_RAM /* 8k/16k? RAM */
- AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", dmg_ppu_device, oam_r, oam_w) /* OAM RAM */
- AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, gb_io_w) /* I/O */
- AM_RANGE(0xff10, 0xff1f) AM_READWRITE(megaduck_video_r, megaduck_video_w) /* video controller */
- AM_RANGE(0xff20, 0xff2f) AM_READWRITE(megaduck_sound_r1, megaduck_sound_w1) /* sound controller pt1 */
- AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* wave ram */
- AM_RANGE(0xff40, 0xff46) AM_READWRITE(megaduck_sound_r2, megaduck_sound_w2) /* sound controller pt2 */
- AM_RANGE(0xff47, 0xff7f) AM_NOP /* unused */
- AM_RANGE(0xff80, 0xfffe) AM_RAM /* high RAM */
- AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* interrupt enable register */
-ADDRESS_MAP_END
+void gb_state::gameboy_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rw(this, FUNC(gb_state::gb_cart_r), FUNC(gb_state::gb_bank_w));
+ map(0x8000, 0x9fff).rw(m_ppu, FUNC(dmg_ppu_device::vram_r), FUNC(dmg_ppu_device::vram_w)); /* 8k VRAM */
+ map(0xa000, 0xbfff).rw(this, FUNC(gb_state::gb_ram_r), FUNC(gb_state::gb_ram_w)); /* 8k switched RAM bank (cartridge) */
+ map(0xc000, 0xdfff).ram(); /* 8k low RAM */
+ map(0xe000, 0xfdff).rw(this, FUNC(gb_state::gb_echo_r), FUNC(gb_state::gb_echo_w));
+ map(0xfe00, 0xfeff).rw(m_ppu, FUNC(dmg_ppu_device::oam_r), FUNC(dmg_ppu_device::oam_w)); /* OAM RAM */
+ map(0xff00, 0xff0f).rw(this, FUNC(gb_state::gb_io_r), FUNC(gb_state::gb_io_w)); /* I/O */
+ map(0xff10, 0xff26).rw(m_apu, FUNC(gameboy_sound_device::sound_r), FUNC(gameboy_sound_device::sound_w)); /* sound registers */
+ map(0xff27, 0xff2f).noprw(); /* unused */
+ map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* Wave ram */
+ map(0xff40, 0xff7f).r(m_ppu, FUNC(dmg_ppu_device::video_r)).w(this, FUNC(gb_state::gb_io2_w)); /* Video controller & BIOS flip-flop */
+ map(0xff80, 0xfffe).ram(); /* High RAM */
+ map(0xffff, 0xffff).rw(this, FUNC(gb_state::gb_ie_r), FUNC(gb_state::gb_ie_w)); /* Interrupt enable register */
+}
+
+void gb_state::sgb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rw(this, FUNC(gb_state::gb_cart_r), FUNC(gb_state::gb_bank_w));
+ map(0x8000, 0x9fff).rw(m_ppu, FUNC(sgb_ppu_device::vram_r), FUNC(sgb_ppu_device::vram_w)); /* 8k VRAM */
+ map(0xa000, 0xbfff).rw(this, FUNC(gb_state::gb_ram_r), FUNC(gb_state::gb_ram_w)); /* 8k switched RAM bank (cartridge) */
+ map(0xc000, 0xdfff).ram(); /* 8k low RAM */
+ map(0xe000, 0xfdff).rw(this, FUNC(gb_state::gb_echo_r), FUNC(gb_state::gb_echo_w));
+ map(0xfe00, 0xfeff).rw(m_ppu, FUNC(sgb_ppu_device::oam_r), FUNC(sgb_ppu_device::oam_w)); /* OAM RAM */
+ map(0xff00, 0xff0f).rw(this, FUNC(gb_state::gb_io_r), FUNC(gb_state::sgb_io_w)); /* I/O */
+ map(0xff10, 0xff26).rw(m_apu, FUNC(gameboy_sound_device::sound_r), FUNC(gameboy_sound_device::sound_w)); /* sound registers */
+ map(0xff27, 0xff2f).noprw(); /* unused */
+ map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* Wave RAM */
+ map(0xff40, 0xff7f).r(m_ppu, FUNC(sgb_ppu_device::video_r)).w(this, FUNC(gb_state::gb_io2_w)); /* Video controller & BIOS flip-flop */
+ map(0xff80, 0xfffe).ram(); /* High RAM */
+ map(0xffff, 0xffff).rw(this, FUNC(gb_state::gb_ie_r), FUNC(gb_state::gb_ie_w)); /* Interrupt enable register */
+}
+
+void gb_state::gbc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rw(this, FUNC(gb_state::gbc_cart_r), FUNC(gb_state::gb_bank_w));
+ map(0x8000, 0x9fff).rw(m_ppu, FUNC(cgb_ppu_device::vram_r), FUNC(cgb_ppu_device::vram_w)); /* 8k banked VRAM */
+ map(0xa000, 0xbfff).rw(this, FUNC(gb_state::gb_ram_r), FUNC(gb_state::gb_ram_w)); /* 8k switched RAM bank (cartridge) */
+ map(0xc000, 0xcfff).ram(); /* 4k fixed RAM bank */
+ map(0xd000, 0xdfff).bankrw("cgb_ram"); /* 4k switched RAM bank */
+ map(0xe000, 0xfdff).rw(this, FUNC(gb_state::gb_echo_r), FUNC(gb_state::gb_echo_w));
+ map(0xfe00, 0xfeff).rw(m_ppu, FUNC(cgb_ppu_device::oam_r), FUNC(cgb_ppu_device::oam_w)); /* OAM RAM */
+ map(0xff00, 0xff0f).rw(this, FUNC(gb_state::gb_io_r), FUNC(gb_state::gbc_io_w)); /* I/O */
+ map(0xff10, 0xff26).rw(m_apu, FUNC(gameboy_sound_device::sound_r), FUNC(gameboy_sound_device::sound_w)); /* sound controller */
+ map(0xff27, 0xff2f).noprw(); /* unused */
+ map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* Wave RAM */
+ map(0xff40, 0xff7f).rw(this, FUNC(gb_state::gbc_io2_r), FUNC(gb_state::gbc_io2_w)); /* Other I/O and video controller */
+ map(0xff80, 0xfffe).ram(); /* high RAM */
+ map(0xffff, 0xffff).rw(this, FUNC(gb_state::gb_ie_r), FUNC(gb_state::gb_ie_w)); /* Interrupt enable register */
+}
+
+void megaduck_state::megaduck_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rw(this, FUNC(megaduck_state::cart_r), FUNC(megaduck_state::bank1_w));
+ map(0x8000, 0x9fff).rw(m_ppu, FUNC(dmg_ppu_device::vram_r), FUNC(dmg_ppu_device::vram_w)); /* 8k VRAM */
+ map(0xa000, 0xafff).noprw(); /* unused? */
+ map(0xb000, 0xb000).w(this, FUNC(megaduck_state::bank2_w));
+ map(0xb001, 0xbfff).noprw(); /* unused? */
+ map(0xc000, 0xfdff).ram(); /* 8k/16k? RAM */
+ map(0xfe00, 0xfeff).rw(m_ppu, FUNC(dmg_ppu_device::oam_r), FUNC(dmg_ppu_device::oam_w)); /* OAM RAM */
+ map(0xff00, 0xff0f).rw(this, FUNC(megaduck_state::gb_io_r), FUNC(megaduck_state::gb_io_w)); /* I/O */
+ map(0xff10, 0xff1f).rw(this, FUNC(megaduck_state::megaduck_video_r), FUNC(megaduck_state::megaduck_video_w)); /* video controller */
+ map(0xff20, 0xff2f).rw(this, FUNC(megaduck_state::megaduck_sound_r1), FUNC(megaduck_state::megaduck_sound_w1)); /* sound controller pt1 */
+ map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* wave ram */
+ map(0xff40, 0xff46).rw(this, FUNC(megaduck_state::megaduck_sound_r2), FUNC(megaduck_state::megaduck_sound_w2)); /* sound controller pt2 */
+ map(0xff47, 0xff7f).noprw(); /* unused */
+ map(0xff80, 0xfffe).ram(); /* high RAM */
+ map(0xffff, 0xffff).rw(this, FUNC(megaduck_state::gb_ie_r), FUNC(megaduck_state::gb_ie_w)); /* interrupt enable register */
+}
static GFXDECODE_START( gb )
GFXDECODE_END
diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp
index cd4eea53ff6..4f671858b35 100644
--- a/src/mame/drivers/gba.cpp
+++ b/src/mame/drivers/gba.cpp
@@ -1237,21 +1237,22 @@ WRITE_LINE_MEMBER(gba_state::dma_vblank_callback)
}
}
-ADDRESS_MAP_START(gba_state::gba_map)
- ADDRESS_MAP_UNMAP_HIGH // for "Fruit Mura no Doubutsu Tachi" and "Classic NES Series"
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM AM_MIRROR(0x01ffc000) AM_READ(gba_bios_r)
- AM_RANGE(0x02000000, 0x0203ffff) AM_RAM AM_MIRROR(0xfc0000)
- AM_RANGE(0x03000000, 0x03007fff) AM_RAM AM_MIRROR(0xff8000)
- AM_RANGE(0x04000000, 0x0400005f) AM_DEVREADWRITE("lcd", gba_lcd_device, video_r, video_w)
- AM_RANGE(0x04000060, 0x040003ff) AM_READWRITE(gba_io_r, gba_io_w)
- AM_RANGE(0x04000400, 0x04ffffff) AM_NOP // Not used
- AM_RANGE(0x05000000, 0x050003ff) AM_MIRROR(0x00fffc00) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_pram_r, gba_pram_w) // Palette RAM
- AM_RANGE(0x06000000, 0x06017fff) AM_MIRROR(0x00fe0000) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM
- AM_RANGE(0x06018000, 0x0601ffff) AM_MIRROR(0x00fe0000) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM
- AM_RANGE(0x07000000, 0x070003ff) AM_MIRROR(0x00fffc00) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_oam_r, gba_oam_w) // OAM
+void gba_state::gba_map(address_map &map)
+{
+ map.unmap_value_high(); // for "Fruit Mura no Doubutsu Tachi" and "Classic NES Series"
+ map(0x00000000, 0x00003fff).rom().mirror(0x01ffc000).r(this, FUNC(gba_state::gba_bios_r));
+ map(0x02000000, 0x0203ffff).ram().mirror(0xfc0000);
+ map(0x03000000, 0x03007fff).ram().mirror(0xff8000);
+ map(0x04000000, 0x0400005f).rw("lcd", FUNC(gba_lcd_device::video_r), FUNC(gba_lcd_device::video_w));
+ map(0x04000060, 0x040003ff).rw(this, FUNC(gba_state::gba_io_r), FUNC(gba_state::gba_io_w));
+ map(0x04000400, 0x04ffffff).noprw(); // Not used
+ map(0x05000000, 0x050003ff).mirror(0x00fffc00).rw("lcd", FUNC(gba_lcd_device::gba_pram_r), FUNC(gba_lcd_device::gba_pram_w)); // Palette RAM
+ map(0x06000000, 0x06017fff).mirror(0x00fe0000).rw("lcd", FUNC(gba_lcd_device::gba_vram_r), FUNC(gba_lcd_device::gba_vram_w)); // VRAM
+ map(0x06018000, 0x0601ffff).mirror(0x00fe0000).rw("lcd", FUNC(gba_lcd_device::gba_vram_r), FUNC(gba_lcd_device::gba_vram_w)); // VRAM
+ map(0x07000000, 0x070003ff).mirror(0x00fffc00).rw("lcd", FUNC(gba_lcd_device::gba_oam_r), FUNC(gba_lcd_device::gba_oam_w)); // OAM
//AM_RANGE(0x08000000, 0x0cffffff) // cart ROM + mirrors, mapped here at machine_start if a cart is present
- AM_RANGE(0x10000000, 0xffffffff) AM_READ(gba_10000000_r) // for "Justice League Chronicles" (game bug)
-ADDRESS_MAP_END
+ map(0x10000000, 0xffffffff).r(this, FUNC(gba_state::gba_10000000_r)); // for "Justice League Chronicles" (game bug)
+}
static INPUT_PORTS_START( gbadv )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/gberet.cpp b/src/mame/drivers/gberet.cpp
index e84e83e2635..ec354030674 100644
--- a/src/mame/drivers/gberet.cpp
+++ b/src/mame/drivers/gberet.cpp
@@ -154,46 +154,48 @@ WRITE8_MEMBER(gberet_state::gberet_sound_w)
m_sn->write(space, 0, *m_soundlatch);
}
-ADDRESS_MAP_START(gberet_state::gberet_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd200, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_SHARE("scrollram")
- AM_RANGE(0xe040, 0xe042) AM_WRITENOP // ???
- AM_RANGE(0xe043, 0xe043) AM_WRITE(gberet_sprite_bank_w)
- AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(gberet_coin_counter_w)
- AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("soundlatch")
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_WRITE(gberet_sound_w)
- AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2")
- AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")
- AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gberet_state::mrgoemon_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd200, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_SHARE("scrollram")
- AM_RANGE(0xe040, 0xe042) AM_WRITENOP // ???
- AM_RANGE(0xe043, 0xe043) AM_WRITE(gberet_sprite_bank_w)
- AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(mrgoemon_coin_counter_w)
- AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("soundlatch")
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_WRITE(gberet_sound_w)
- AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2")
- AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")
- AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf800, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void gberet_state::gberet_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(gberet_state::gberet_colorram_w)).share("colorram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(gberet_state::gberet_videoram_w)).share("videoram");
+ map(0xd000, 0xd0ff).ram().share("spriteram2");
+ map(0xd100, 0xd1ff).ram().share("spriteram");
+ map(0xd200, 0xdfff).ram();
+ map(0xe000, 0xe03f).ram().w(this, FUNC(gberet_state::gberet_scroll_w)).share("scrollram");
+ map(0xe040, 0xe042).nopw(); // ???
+ map(0xe043, 0xe043).w(this, FUNC(gberet_state::gberet_sprite_bank_w));
+ map(0xe044, 0xe044).w(this, FUNC(gberet_state::gberet_flipscreen_w));
+ map(0xf000, 0xf000).w(this, FUNC(gberet_state::gberet_coin_counter_w));
+ map(0xf200, 0xf200).portr("DSW2").writeonly().share("soundlatch");
+ map(0xf400, 0xf400).portr("DSW3").w(this, FUNC(gberet_state::gberet_sound_w));
+ map(0xf600, 0xf600).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf601, 0xf601).portr("P2");
+ map(0xf602, 0xf602).portr("P1");
+ map(0xf603, 0xf603).portr("SYSTEM");
+}
+
+void gberet_state::mrgoemon_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(gberet_state::gberet_colorram_w)).share("colorram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(gberet_state::gberet_videoram_w)).share("videoram");
+ map(0xd000, 0xd0ff).ram().share("spriteram2");
+ map(0xd100, 0xd1ff).ram().share("spriteram");
+ map(0xd200, 0xdfff).ram();
+ map(0xe000, 0xe03f).ram().w(this, FUNC(gberet_state::gberet_scroll_w)).share("scrollram");
+ map(0xe040, 0xe042).nopw(); // ???
+ map(0xe043, 0xe043).w(this, FUNC(gberet_state::gberet_sprite_bank_w));
+ map(0xe044, 0xe044).w(this, FUNC(gberet_state::gberet_flipscreen_w));
+ map(0xf000, 0xf000).w(this, FUNC(gberet_state::mrgoemon_coin_counter_w));
+ map(0xf200, 0xf200).portr("DSW2").writeonly().share("soundlatch");
+ map(0xf400, 0xf400).portr("DSW3").w(this, FUNC(gberet_state::gberet_sound_w));
+ map(0xf600, 0xf600).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf601, 0xf601).portr("P2");
+ map(0xf602, 0xf602).portr("P1");
+ map(0xf603, 0xf603).portr("SYSTEM");
+ map(0xf800, 0xffff).bankr("bank1");
+}
WRITE8_MEMBER(gberet_state::gberetb_flipscreen_w)
@@ -212,26 +214,27 @@ WRITE8_MEMBER(gberet_state::gberetb_nmi_ack_w)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
-ADDRESS_MAP_START(gberet_state::gberetb_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe03f) AM_RAM
- AM_RANGE(0xe040, 0xe043) AM_WRITENOP // ???
- AM_RANGE(0xe044, 0xe044) AM_WRITE(gberetb_flipscreen_w) // did hw even support flipscreen?
- AM_RANGE(0xe800, 0xe8ff) AM_RAM
- AM_RANGE(0xe900, 0xe9ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP // coin counter not supported
- AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2")
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("snsnd", sn76489a_device, write)
- AM_RANGE(0xf600, 0xf600) AM_READ_PORT("P2")
- AM_RANGE(0xf601, 0xf601) AM_READ_PORT("DSW1")
- AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")
- AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf800, 0xf800) AM_READWRITE(gberetb_irq_ack_r, gberetb_nmi_ack_w)
- AM_RANGE(0xf900, 0xf901) AM_WRITE(gberetb_scroll_w)
-ADDRESS_MAP_END
+void gberet_state::gberetb_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(gberet_state::gberet_colorram_w)).share("colorram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(gberet_state::gberet_videoram_w)).share("videoram");
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xe03f).ram();
+ map(0xe040, 0xe043).nopw(); // ???
+ map(0xe044, 0xe044).w(this, FUNC(gberet_state::gberetb_flipscreen_w)); // did hw even support flipscreen?
+ map(0xe800, 0xe8ff).ram();
+ 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(0xf600, 0xf600).portr("P2");
+ map(0xf601, 0xf601).portr("DSW1");
+ map(0xf602, 0xf602).portr("P1");
+ map(0xf603, 0xf603).portr("SYSTEM");
+ map(0xf800, 0xf800).rw(this, FUNC(gberet_state::gberetb_irq_ack_r), FUNC(gberet_state::gberetb_nmi_ack_w));
+ map(0xf900, 0xf901).w(this, FUNC(gberet_state::gberetb_scroll_w));
+}
/*************************************
diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp
index c217e57d068..271ee28f420 100644
--- a/src/mame/drivers/gcpinbal.cpp
+++ b/src/mame/drivers/gcpinbal.cpp
@@ -174,24 +174,25 @@ WRITE8_MEMBER(gcpinbal_state::es8712_reset_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(gcpinbal_state::gcpinbal_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(gcpinbal_tilemaps_word_r, gcpinbal_tilemaps_word_w) AM_SHARE("tilemapram")
- AM_RANGE(0xc80000, 0xc81fff) AM_DEVREADWRITE8("spritegen", excellent_spr_device, read, write, 0x00ff)
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd80010, 0xd8002f) AM_RAM_WRITE(d80010_w) AM_SHARE("d80010")
- AM_RANGE(0xd80040, 0xd8005b) AM_WRITE8(d80040_w, 0x00ff)
- AM_RANGE(0xd80060, 0xd80077) AM_RAM_WRITE(d80060_w) AM_SHARE("d80060")
- AM_RANGE(0xd80080, 0xd80081) AM_READ_PORT("DSW")
- AM_RANGE(0xd80084, 0xd80085) AM_READ_PORT("IN0")
- AM_RANGE(0xd80086, 0xd80087) AM_READ_PORT("IN1")
- AM_RANGE(0xd80088, 0xd80089) AM_WRITE8(bank_w, 0xff00)
- AM_RANGE(0xd8008a, 0xd8008b) AM_WRITE8(eeprom_w, 0xff00)
- AM_RANGE(0xd8008e, 0xd8008f) AM_WRITE8(es8712_reset_w, 0xff00)
- AM_RANGE(0xd800a0, 0xd800a1) AM_MIRROR(0x2) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
- AM_RANGE(0xd800c0, 0xd800cd) AM_DEVWRITE8("essnd", es8712_device, write, 0xff00)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM /* RAM */
-ADDRESS_MAP_END
+void gcpinbal_state::gcpinbal_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0xc00000, 0xc03fff).rw(this, FUNC(gcpinbal_state::gcpinbal_tilemaps_word_r), FUNC(gcpinbal_state::gcpinbal_tilemaps_word_w)).share("tilemapram");
+ map(0xc80000, 0xc81fff).rw(m_sprgen, FUNC(excellent_spr_device::read), FUNC(excellent_spr_device::write)).umask16(0x00ff);
+ map(0xd00000, 0xd00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd80010, 0xd8002f).ram().w(this, FUNC(gcpinbal_state::d80010_w)).share("d80010");
+ map(0xd80040, 0xd8005b).w(this, FUNC(gcpinbal_state::d80040_w)).umask16(0x00ff);
+ map(0xd80060, 0xd80077).ram().w(this, FUNC(gcpinbal_state::d80060_w)).share("d80060");
+ map(0xd80080, 0xd80081).portr("DSW");
+ map(0xd80084, 0xd80085).portr("IN0");
+ map(0xd80086, 0xd80087).portr("IN1");
+ map(0xd80088, 0xd80088).w(this, FUNC(gcpinbal_state::bank_w));
+ map(0xd8008a, 0xd8008a).w(this, FUNC(gcpinbal_state::eeprom_w));
+ map(0xd8008e, 0xd8008e).w(this, FUNC(gcpinbal_state::es8712_reset_w));
+ map(0xd800a0, 0xd800a0).mirror(0x2).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xd800c0, 0xd800cd).w(m_essnd, FUNC(es8712_device::write)).umask16(0xff00);
+ map(0xff0000, 0xffffff).ram(); /* RAM */
+}
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index c494ed3260d..46414834cf9 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -344,157 +344,166 @@ WRITE8_MEMBER(gei_state::signature_w)
}
}
-ADDRESS_MAP_START(gei_state::getrivia_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x600f, 0x600f) AM_WRITE(banksel_w<8>)
- AM_RANGE(0x6017, 0x6017) AM_WRITE(banksel_w<6>)
- AM_RANGE(0x601b, 0x601b) AM_WRITE(banksel_w<4>)
- AM_RANGE(0x601d, 0x601d) AM_WRITE(banksel_w<2>)
- AM_RANGE(0x601e, 0x601e) AM_WRITE(banksel_w<0>)
- AM_RANGE(0x608f, 0x608f) AM_WRITE(banksel_w<9>)
- AM_RANGE(0x6097, 0x6097) AM_WRITE(banksel_w<7>)
- AM_RANGE(0x609b, 0x609b) AM_WRITE(banksel_w<5>)
- AM_RANGE(0x609d, 0x609d) AM_WRITE(banksel_w<3>)
- AM_RANGE(0x609e, 0x609e) AM_WRITE(banksel_w<1>)
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM /* space for diagnostic ROM? */
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::gselect_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
- AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_w<0>)
- AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_w<1>)
- AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_w<2>)
- AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_w<3>)
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
-ADDRESS_MAP_END
+void gei_state::getrivia_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("rombank");
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x600f, 0x600f).w(this, FUNC(gei_state::banksel_w<8>));
+ map(0x6017, 0x6017).w(this, FUNC(gei_state::banksel_w<6>));
+ map(0x601b, 0x601b).w(this, FUNC(gei_state::banksel_w<4>));
+ map(0x601d, 0x601d).w(this, FUNC(gei_state::banksel_w<2>));
+ map(0x601e, 0x601e).w(this, FUNC(gei_state::banksel_w<0>));
+ map(0x608f, 0x608f).w(this, FUNC(gei_state::banksel_w<9>));
+ map(0x6097, 0x6097).w(this, FUNC(gei_state::banksel_w<7>));
+ map(0x609b, 0x609b).w(this, FUNC(gei_state::banksel_w<5>));
+ map(0x609d, 0x609d).w(this, FUNC(gei_state::banksel_w<3>));
+ map(0x609e, 0x609e).w(this, FUNC(gei_state::banksel_w<1>));
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0x8000, 0x9fff).rom(); /* space for diagnostic ROM? */
+ map(0xa000, 0xbfff).rom();
+ map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w));
+}
+
+void gei_state::gselect_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("rombank");
+ map(0x4000, 0x40ff).ram().share("nvram");
+ map(0x4400, 0x4400).w(this, FUNC(gei_state::banksel_w<0>));
+ map(0x4401, 0x4401).w(this, FUNC(gei_state::banksel_w<1>));
+ map(0x4402, 0x4402).w(this, FUNC(gei_state::banksel_w<2>));
+ map(0x4403, 0x4403).w(this, FUNC(gei_state::banksel_w<3>));
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w));
+}
// TODO: where are mapped the lower 0x2000 bytes of the banks?
-ADDRESS_MAP_START(gei_state::amuse_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x606f, 0x606f) AM_WRITE(banksel_w<8>)
- AM_RANGE(0x6077, 0x6077) AM_WRITE(banksel_w<6>)
- AM_RANGE(0x607b, 0x607b) AM_WRITE(banksel_w<4>)
- AM_RANGE(0x607d, 0x607d) AM_WRITE(banksel_w<2>)
- AM_RANGE(0x607e, 0x607e) AM_WRITE(banksel_w<0>)
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::gepoker_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x60ef, 0x60ef) AM_WRITE(banksel_w<4>)
- AM_RANGE(0x60f7, 0x60f7) AM_WRITE(banksel_w<3>)
- AM_RANGE(0x60fb, 0x60fb) AM_WRITE(banksel_w<2>)
- AM_RANGE(0x60fd, 0x60fd) AM_WRITE(banksel_w<1>)
- AM_RANGE(0x60fe, 0x60fe) AM_WRITE(banksel_w<0>)
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */
- AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::amuse1_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_w<0>)
- AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_w<2>)
- AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_w<4>)
- AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_w<6>)
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x5800, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */
- AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::findout_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+void gei_state::amuse_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("rombank");
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x606f, 0x606f).w(this, FUNC(gei_state::banksel_w<8>));
+ map(0x6077, 0x6077).w(this, FUNC(gei_state::banksel_w<6>));
+ map(0x607b, 0x607b).w(this, FUNC(gei_state::banksel_w<4>));
+ map(0x607d, 0x607d).w(this, FUNC(gei_state::banksel_w<2>));
+ map(0x607e, 0x607e).w(this, FUNC(gei_state::banksel_w<0>));
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w));
+}
+
+void gei_state::gepoker_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("rombank");
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x60ef, 0x60ef).w(this, FUNC(gei_state::banksel_w<4>));
+ map(0x60f7, 0x60f7).w(this, FUNC(gei_state::banksel_w<3>));
+ map(0x60fb, 0x60fb).w(this, FUNC(gei_state::banksel_w<2>));
+ map(0x60fd, 0x60fd).w(this, FUNC(gei_state::banksel_w<1>));
+ map(0x60fe, 0x60fe).w(this, FUNC(gei_state::banksel_w<0>));
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0x8000, 0xbfff).rom(); /* space for diagnostic ROM? */
+ map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w));
+ map(0xe000, 0xffff).rom();
+}
+
+void gei_state::amuse1_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("rombank");
+ map(0x4000, 0x43ff).ram().share("nvram");
+ map(0x4400, 0x4400).w(this, FUNC(gei_state::banksel_w<0>));
+ map(0x4401, 0x4401).w(this, FUNC(gei_state::banksel_w<2>));
+ map(0x4402, 0x4402).w(this, FUNC(gei_state::banksel_w<4>));
+ map(0x4403, 0x4403).w(this, FUNC(gei_state::banksel_w<6>));
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5800, 0x5fff).rom();
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0x8000, 0xbfff).rom(); /* space for diagnostic ROM? */
+ map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w));
+ map(0xe000, 0xffff).rom();
+}
+
+void gei_state::findout_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(gei_state::catchall));
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
/* banked ROMs are enabled by low 6 bits of the address */
- AM_RANGE(0x601f, 0x601f) AM_WRITE(banksel_w<0>)
- AM_RANGE(0x602f, 0x602f) AM_WRITE(banksel_w<5>)
- AM_RANGE(0x6037, 0x6037) AM_WRITE(banksel_w<4>)
- AM_RANGE(0x603b, 0x603b) AM_WRITE(banksel_w<3>)
- AM_RANGE(0x603d, 0x603d) AM_WRITE(banksel_w<2>)
- AM_RANGE(0x603e, 0x603e) AM_WRITE(banksel_w<1>)
- AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
- AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
- AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::quizvid_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ map(0x601f, 0x601f).w(this, FUNC(gei_state::banksel_w<0>));
+ map(0x602f, 0x602f).w(this, FUNC(gei_state::banksel_w<5>));
+ map(0x6037, 0x6037).w(this, FUNC(gei_state::banksel_w<4>));
+ map(0x603b, 0x603b).w(this, FUNC(gei_state::banksel_w<3>));
+ map(0x603d, 0x603d).w(this, FUNC(gei_state::banksel_w<2>));
+ map(0x603e, 0x603e).w(this, FUNC(gei_state::banksel_w<1>));
+ map(0x6200, 0x6200).w(this, FUNC(gei_state::signature_w));
+ map(0x6400, 0x6400).r(this, FUNC(gei_state::signature_r));
+ map(0x7800, 0x7fff).rom(); /*space for diagnostic ROM?*/
+ map(0x8000, 0xffff).bankr("rombank");
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w));
+}
+
+void gei_state::quizvid_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(gei_state::catchall));
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
/* banked ROMs are enabled by low 6 bits of the address */
- AM_RANGE(0x602f, 0x602f) AM_READ(banksel_r<5>)
- AM_RANGE(0x6037, 0x6037) AM_READ(banksel_r<4>)
- AM_RANGE(0x603b, 0x603b) AM_READ(banksel_r<3>)
- AM_RANGE(0x603d, 0x603d) AM_READ(banksel_r<2>)
- AM_RANGE(0x603e, 0x603e) AM_READ(banksel_r<1>)
- AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::suprpokr_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
- AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gei_state::sprtauth_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x5600, 0x5600) AM_READ(signature_r)
- AM_RANGE(0x5800, 0x5800) AM_WRITE(signature_w)
- AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
- AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
-ADDRESS_MAP_END
+ map(0x602f, 0x602f).r(this, FUNC(gei_state::banksel_r<5>));
+ map(0x6037, 0x6037).r(this, FUNC(gei_state::banksel_r<4>));
+ map(0x603b, 0x603b).r(this, FUNC(gei_state::banksel_r<3>));
+ map(0x603d, 0x603d).r(this, FUNC(gei_state::banksel_r<2>));
+ map(0x603e, 0x603e).r(this, FUNC(gei_state::banksel_r<1>));
+ map(0x7800, 0x7fff).rom(); /*space for diagnostic ROM?*/
+ map(0x8000, 0xffff).bankr("rombank");
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w));
+}
+
+void gei_state::suprpokr_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6200, 0x6200).w(this, FUNC(gei_state::signature_w));
+ map(0x6400, 0x6400).r(this, FUNC(gei_state::signature_r));
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void gei_state::sprtauth_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().share("nvram");
+ map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5600, 0x5600).r(this, FUNC(gei_state::signature_r));
+ map(0x5800, 0x5800).w(this, FUNC(gei_state::signature_w));
+ map(0x5a00, 0x5cff).w(this, FUNC(gei_state::geimulti_bank_w));
+ map(0x6000, 0x7fff).rom();
+ map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w));
+ map(0x8000, 0xffff).bankr("rombank");
+ map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w));
+}
static INPUT_PORTS_START(reelfun_standard)
PORT_START("IN0")
diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp
index 7fa6821bb6f..83bc5e58ec0 100644
--- a/src/mame/drivers/geneve.cpp
+++ b/src/mame/drivers/geneve.cpp
@@ -294,9 +294,10 @@ public:
Memory map
*/
-ADDRESS_MAP_START(geneve_state::memmap)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE(GENEVE_MAPPER_TAG, bus::ti99::internal::geneve_mapper_device, readm, writem) AM_DEVSETOFFSET(GENEVE_MAPPER_TAG, bus::ti99::internal::geneve_mapper_device, setoffset)
-ADDRESS_MAP_END
+void geneve_state::memmap(address_map &map)
+{
+ map(0x0000, 0xffff).rw(GENEVE_MAPPER_TAG, FUNC(bus::ti99::internal::geneve_mapper_device::readm), FUNC(bus::ti99::internal::geneve_mapper_device::writem)).setoffset(GENEVE_MAPPER_TAG, FUNC(bus::ti99::internal::geneve_mapper_device::setoffset));
+}
/*
CRU map
@@ -306,13 +307,14 @@ ADDRESS_MAP_END
TODO: Check whether A0-A2 are available for CRU addressing since those
bits are usually routed through the mapper first.
*/
-ADDRESS_MAP_START(geneve_state::crumap)
- AM_RANGE(0x0000, 0x0fff) AM_READ( cruread )
- AM_RANGE(0x0000, 0x0003) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read)
+void geneve_state::crumap(address_map &map)
+{
+ map(0x0000, 0x0fff).r(this, FUNC(geneve_state::cruread));
+ map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read));
- AM_RANGE(0x0000, 0x7fff) AM_WRITE( cruwrite )
- AM_RANGE(0x0000, 0x001f) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write)
-ADDRESS_MAP_END
+ map(0x0000, 0x7fff).w(this, FUNC(geneve_state::cruwrite));
+ map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write));
+}
/* TI joysticks. The keyboard is implemented in genboard.c. */
static INPUT_PORTS_START(geneve)
diff --git a/src/mame/drivers/geniusiq.cpp b/src/mame/drivers/geniusiq.cpp
index 289b9f9f066..441ddd1ba05 100644
--- a/src/mame/drivers/geniusiq.cpp
+++ b/src/mame/drivers/geniusiq.cpp
@@ -415,30 +415,31 @@ INPUT_CHANGED_MEMBER( geniusiq_state::send_input )
}
-ADDRESS_MAP_START(geniusiq_state::geniusiq_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1FFFFF) AM_ROM
- AM_RANGE(0x200000, 0x23FFFF) AM_RAM
- AM_RANGE(0x300000, 0x30FFFF) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x310000, 0x31FFFF) AM_RAM
- AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x0e0000) AM_DEVREADWRITE8("flash", intelfsh8_device, read, write, 0x00ff)
- AM_RANGE(0x600300, 0x600301) AM_READ(input_r)
+void geniusiq_state::geniusiq_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1FFFFF).rom();
+ map(0x200000, 0x23FFFF).ram();
+ map(0x300000, 0x30FFFF).ram().share("vram");
+ map(0x310000, 0x31FFFF).ram();
+ map(0x400000, 0x41ffff).mirror(0x0e0000).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff);
+ map(0x600300, 0x600301).r(this, FUNC(geniusiq_state::input_r));
//AM_RANGE(0x600500, 0x60050f) // read during IRQ 5
//AM_RANGE(0x600600, 0x600605) // sound ??
- AM_RANGE(0x600606, 0x600609) AM_WRITE(gfx_base_w)
- AM_RANGE(0x60060a, 0x60060b) AM_WRITE(gfx_idx_w)
- AM_RANGE(0x600802, 0x600803) AM_READ(cart_state_r) // cartridge state
- AM_RANGE(0x600108, 0x600109) AM_READ(unk0_r) // read before run a BASIC program
- AM_RANGE(0x600918, 0x600919) AM_READ(unk0_r) // loop at start if bit 0 is set
- AM_RANGE(0x601008, 0x601009) AM_READ(unk_r) // unknown, read at start and expect that bit 2 changes several times before continue
- AM_RANGE(0x601010, 0x601011) AM_READ(unk0_r) // loop at start if bit 1 is set
- AM_RANGE(0x601018, 0x60101b) AM_WRITE(gfx_dest_w)
- AM_RANGE(0x60101c, 0x60101f) AM_WRITE(gfx_color_w)
- AM_RANGE(0x601060, 0x601063) AM_WRITE(mouse_pos_w)
- AM_RANGE(0x601100, 0x6011ff) AM_RAM AM_SHARE("mouse_gfx") // mouse cursor gfx (24x16)
- AM_RANGE(0xa00000, 0xafffff) AM_DEVREAD("cartslot", generic_slot_device, read16_rom)
+ map(0x600606, 0x600609).w(this, FUNC(geniusiq_state::gfx_base_w));
+ map(0x60060a, 0x60060b).w(this, FUNC(geniusiq_state::gfx_idx_w));
+ map(0x600802, 0x600803).r(this, FUNC(geniusiq_state::cart_state_r)); // cartridge state
+ map(0x600108, 0x600109).r(this, FUNC(geniusiq_state::unk0_r)); // read before run a BASIC program
+ map(0x600918, 0x600919).r(this, FUNC(geniusiq_state::unk0_r)); // loop at start if bit 0 is set
+ map(0x601008, 0x601009).r(this, FUNC(geniusiq_state::unk_r)); // unknown, read at start and expect that bit 2 changes several times before continue
+ map(0x601010, 0x601011).r(this, FUNC(geniusiq_state::unk0_r)); // loop at start if bit 1 is set
+ map(0x601018, 0x60101b).w(this, FUNC(geniusiq_state::gfx_dest_w));
+ map(0x60101c, 0x60101f).w(this, FUNC(geniusiq_state::gfx_color_w));
+ map(0x601060, 0x601063).w(this, FUNC(geniusiq_state::mouse_pos_w));
+ map(0x601100, 0x6011ff).ram().share("mouse_gfx"); // mouse cursor gfx (24x16)
+ map(0xa00000, 0xafffff).r(m_cart, FUNC(generic_slot_device::read16_rom));
// 0x600000 : some memory mapped hardware
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( geniusiq )
diff --git a/src/mame/drivers/genpc.cpp b/src/mame/drivers/genpc.cpp
index 6f6a8ee9e22..9fda89429dc 100644
--- a/src/mame/drivers/genpc.cpp
+++ b/src/mame/drivers/genpc.cpp
@@ -32,15 +32,17 @@ public:
void pc8_map(address_map &map);
};
-ADDRESS_MAP_START(genpc_state::pc8_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(genpc_state::pc8_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
-ADDRESS_MAP_END
+void genpc_state::pc8_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xfe000, 0xfffff).rom().region("bios", 0);
+}
+
+void genpc_state::pc8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+}
static DEVICE_INPUT_DEFAULTS_START(cga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20)
diff --git a/src/mame/drivers/ggconnie.cpp b/src/mame/drivers/ggconnie.cpp
index e6118492772..87cdff42d8b 100644
--- a/src/mame/drivers/ggconnie.cpp
+++ b/src/mame/drivers/ggconnie.cpp
@@ -24,7 +24,6 @@
#include "video/huc6270.h"
#include "video/huc6260.h"
#include "video/huc6202.h"
-#include "cpu/h6280/h6280.h"
#include "sound/c6280.h"
#include "sound/okim6295.h"
#include "machine/msm6242.h"
@@ -70,32 +69,34 @@ WRITE8_MEMBER(ggconnie_state::oki_bank_w)
}
-ADDRESS_MAP_START(ggconnie_state::sgx_mem)
- AM_RANGE( 0x000000, 0x17ffff) AM_ROM
- AM_RANGE( 0x180000, 0x1edfff) AM_NOP
- AM_RANGE( 0x1ee800, 0x1effff) AM_NOP
- AM_RANGE( 0x1f0000, 0x1f5fff) AM_RAM
- AM_RANGE( 0x1f7000, 0x1f7000) AM_READ_PORT("SWA")
- AM_RANGE( 0x1f7100, 0x1f7100) AM_READ_PORT("SWB")
- AM_RANGE( 0x1f7200, 0x1f7200) AM_READ_PORT("SWC")
- AM_RANGE( 0x1f7700, 0x1f7700) AM_READ_PORT("IN1")
- AM_RANGE( 0x1f7800, 0x1f7800) AM_WRITE(output_w)
- AM_RANGE( 0x1fe000, 0x1fe007) AM_DEVREADWRITE( "huc6270_0", huc6270_device, read, write ) AM_MIRROR(0x03E0)
- AM_RANGE( 0x1fe008, 0x1fe00f) AM_DEVREADWRITE( "huc6202", huc6202_device, read, write ) AM_MIRROR(0x03E0)
- AM_RANGE( 0x1fe010, 0x1fe017) AM_DEVREADWRITE( "huc6270_1", huc6270_device, read, write ) AM_MIRROR(0x03E0)
- AM_RANGE( 0x1fe400, 0x1fe7ff) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1fe800, 0x1febff) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w)
- AM_RANGE( 0x1fec00, 0x1fefff) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w)
- AM_RANGE( 0x1f7300, 0x1f7300) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE( 0x1f7400, 0x1f74ff) AM_WRITE(oki_bank_w)
- AM_RANGE( 0x1f7500, 0x1f750f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0x1ff000, 0x1ff000) AM_READ_PORT("IN0") AM_WRITE(lamp_w)
- AM_RANGE( 0x1ff400, 0x1ff7ff) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ggconnie_state::sgx_io)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6202", huc6202_device, io_read, io_write )
-ADDRESS_MAP_END
+void ggconnie_state::sgx_mem(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom();
+ map(0x180000, 0x1edfff).noprw();
+ map(0x1ee800, 0x1effff).noprw();
+ map(0x1f0000, 0x1f5fff).ram();
+ map(0x1f7000, 0x1f7000).portr("SWA");
+ map(0x1f7100, 0x1f7100).portr("SWB");
+ map(0x1f7200, 0x1f7200).portr("SWC");
+ map(0x1f7700, 0x1f7700).portr("IN1");
+ map(0x1f7800, 0x1f7800).w(this, FUNC(ggconnie_state::output_w));
+ map(0x1fe000, 0x1fe007).rw("huc6270_0", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0);
+ map(0x1fe008, 0x1fe00f).rw("huc6202", FUNC(huc6202_device::read), FUNC(huc6202_device::write)).mirror(0x03E0);
+ map(0x1fe010, 0x1fe017).rw("huc6270_1", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0);
+ map(0x1fe400, 0x1fe7ff).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1fe800, 0x1febff).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1fec00, 0x1fefff).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1f7300, 0x1f7300).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1f7400, 0x1f74ff).w(this, FUNC(ggconnie_state::oki_bank_w));
+ map(0x1f7500, 0x1f750f).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x1ff000, 0x1ff000).portr("IN0").w(this, FUNC(ggconnie_state::lamp_w));
+ map(0x1ff400, 0x1ff7ff).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+}
+
+void ggconnie_state::sgx_io(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6202", FUNC(huc6202_device::io_read), FUNC(huc6202_device::io_write));
+}
static INPUT_PORTS_START(ggconnie)
diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp
index 4ed7bf72820..558d075fd76 100644
--- a/src/mame/drivers/ghosteo.cpp
+++ b/src/mame/drivers/ghosteo.cpp
@@ -420,21 +420,23 @@ READ32_MEMBER( ghosteo_state::touryuu_port_10000000_r )
}
-ADDRESS_MAP_START(ghosteo_state::bballoon_map)
- AM_RANGE(0x10000000, 0x10000003) AM_READ_PORT("10000000")
- AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
- AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
- AM_RANGE(0x10300000, 0x10300003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
- AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ghosteo_state::touryuu_map)
- AM_RANGE(0x10000000, 0x10000003) AM_READ(touryuu_port_10000000_r)
- AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
- AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
- AM_RANGE(0x10300000, 0x10300003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
- AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
-ADDRESS_MAP_END
+void ghosteo_state::bballoon_map(address_map &map)
+{
+ map(0x10000000, 0x10000003).portr("10000000");
+ map(0x10100000, 0x10100003).portr("10100000");
+ map(0x10200000, 0x10200003).portr("10200000");
+ map(0x10300000, 0x10300000).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
+ map(0x30000000, 0x31ffffff).ram().share("systememory").mirror(0x02000000);
+}
+
+void ghosteo_state::touryuu_map(address_map &map)
+{
+ map(0x10000000, 0x10000003).r(this, FUNC(ghosteo_state::touryuu_port_10000000_r));
+ map(0x10100000, 0x10100003).portr("10100000");
+ map(0x10200000, 0x10200003).portr("10200000");
+ map(0x10300000, 0x10300000).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
+ map(0x30000000, 0x31ffffff).ram().share("systememory").mirror(0x02000000);
+}
/*
diff --git a/src/mame/drivers/giclassic.cpp b/src/mame/drivers/giclassic.cpp
index 3e6d7315137..8919f06cbe2 100644
--- a/src/mame/drivers/giclassic.cpp
+++ b/src/mame/drivers/giclassic.cpp
@@ -143,18 +143,19 @@ READ16_MEMBER(giclassic_state::vrom_r)
return m_k056832->piratesh_rom_r(space, offset);
}
-ADDRESS_MAP_START(giclassic_state::satellite_main)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
- AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r)
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w)
- AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails
- AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00)
- AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
-ADDRESS_MAP_END
+void giclassic_state::satellite_main(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x100000, 0x103fff).ram();
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x801fff).ram().rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x900000, 0x90003f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w));
+ map(0xb00000, 0xb01fff).r(this, FUNC(giclassic_state::vrom_r));
+ map(0xc00000, 0xc00001).w(this, FUNC(giclassic_state::control_w));
+ map(0xd00000, 0xd0003f).ram(); // these must read/write or 26S (LCD controller) fails
+ map(0xe00000, 0xe0001f).w(m_k056832, FUNC(k056832_device::b_w)).umask16(0xff00);
+ map(0xf00000, 0xf00001).noprw().nopw(); // watchdog reset
+}
static INPUT_PORTS_START( giclassic )
INPUT_PORTS_END
@@ -264,22 +265,23 @@ uint32_t giclassicsvr_state::screen_update_giclassicsvr(screen_device &screen, b
return 0;
}
-ADDRESS_MAP_START(giclassicsvr_state::server_main)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x090000, 0x093fff) AM_RAM
- AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x183fff) AM_RAM
- AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES
- AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES
- AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
- AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1
- AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2
- AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset
- AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w)
- AM_RANGE(0x400000, 0x41ffff) AM_RAM
-ADDRESS_MAP_END
+void giclassicsvr_state::server_main(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x080000, 0x08ffff).ram();
+ map(0x090000, 0x093fff).ram();
+ map(0x100000, 0x107fff).ram().ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x183fff).ram();
+ map(0x280000, 0x281fff).ram().rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x300000, 0x300007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // SPRITES
+ map(0x300060, 0x30006f).r(m_k055673, FUNC(k055673_device::k055673_ps_rom_word_r)); // SPRITES
+ map(0x308000, 0x30803f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w));
+ map(0x320000, 0x32001f).rw("k053252a", FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CRTC 1
+ map(0x320000, 0x32001f).rw("k053252b", FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0xff00); // CRTC 2
+ map(0x380000, 0x380001).nopw(); // watchdog reset
+ map(0x398000, 0x398001).rw(this, FUNC(giclassicsvr_state::control_r), FUNC(giclassicsvr_state::control_w));
+ map(0x400000, 0x41ffff).ram();
+}
static INPUT_PORTS_START( giclassvr )
INPUT_PORTS_END
diff --git a/src/mame/drivers/gijoe.cpp b/src/mame/drivers/gijoe.cpp
index 9e2c3a782b8..76387f11e95 100644
--- a/src/mame/drivers/gijoe.cpp
+++ b/src/mame/drivers/gijoe.cpp
@@ -197,41 +197,43 @@ WRITE16_MEMBER(gijoe_state::sound_irq_w)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(gijoe_state::gijoe_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x110000, 0x110007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x120000, 0x121fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes
- AM_RANGE(0x122000, 0x123fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes mirror read
- AM_RANGE(0x130000, 0x131fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) // Passthrough to tile roms
- AM_RANGE(0x160000, 0x160007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS (board dependent)
- AM_RANGE(0x170000, 0x170001) AM_WRITENOP // Watchdog
- AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") // Main RAM. Spec. 180000-1803ff, 180400-187fff
- AM_RANGE(0x190000, 0x190fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x1b0000, 0x1b003f) AM_DEVWRITE("k056832", k056832_device, word_w)
- AM_RANGE(0x1c0000, 0x1c001f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x1e0000, 0x1e0001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x1e0002, 0x1e0003) AM_READ_PORT("P3_P4")
- AM_RANGE(0x1e4000, 0x1e4001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1e4002, 0x1e4003) AM_READ_PORT("START")
- AM_RANGE(0x1e8000, 0x1e8001) AM_READWRITE(control2_r, control2_w)
- AM_RANGE(0x1f0000, 0x1f0001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
+void gijoe_state::gijoe_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).ram().share("spriteram"); // Sprites
+ map(0x110000, 0x110007).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+ map(0x120000, 0x121fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // Graphic planes
+ map(0x122000, 0x123fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // Graphic planes mirror read
+ map(0x130000, 0x131fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); // Passthrough to tile roms
+ map(0x160000, 0x160007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS (board dependent)
+ map(0x170000, 0x170001).nopw(); // Watchdog
+ map(0x180000, 0x18ffff).ram().share("workram"); // Main RAM. Spec. 180000-1803ff, 180400-187fff
+ map(0x190000, 0x190fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1a0000, 0x1a001f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x1b0000, 0x1b003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x1c0000, 0x1c001f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x1d0000, 0x1d0001).w(this, FUNC(gijoe_state::sound_irq_w));
+ map(0x1e0000, 0x1e0001).portr("P1_P2");
+ map(0x1e0002, 0x1e0003).portr("P3_P4");
+ map(0x1e4000, 0x1e4001).portr("SYSTEM");
+ map(0x1e4002, 0x1e4003).portr("START");
+ map(0x1e8000, 0x1e8001).rw(this, FUNC(gijoe_state::control2_r), FUNC(gijoe_state::control2_w));
+ map(0x1f0000, 0x1f0001).r(m_k053246, FUNC(k053247_device::k053246_word_r));
#if JOE_DEBUG
- AM_RANGE(0x110000, 0x110007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r)
- AM_RANGE(0x160000, 0x160007) AM_DEVREAD("k056832", k056832_device, b_word_r)
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREAD("k053251", k053251_device, lsb_r)
- AM_RANGE(0x1b0000, 0x1b003f) AM_DEVREAD("k056832", k056832_device, word_r)
+ map(0x110000, 0x110007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r));
+ map(0x160000, 0x160007).r(m_k056832, FUNC(k056832_device::b_word_r));
+ map(0x1a0000, 0x1a001f).r(m_k053251, FUNC(k053251_device::lsb_r));
+ map(0x1b0000, 0x1b003f).r(m_k056832, FUNC(k056832_device::word_r));
#endif
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gijoe_state::sound_map)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xfc00, 0xfc03) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
-ADDRESS_MAP_END
+}
+
+void gijoe_state::sound_map(address_map &map)
+{
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xfa2f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xfc00, 0xfc03).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0x0000, 0xefff).rom();
+}
static INPUT_PORTS_START( gijoe )
PORT_START("START")
diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp
index cf55a712d53..995cebc3a36 100644
--- a/src/mame/drivers/gimix.cpp
+++ b/src/mame/drivers/gimix.cpp
@@ -174,44 +174,46 @@ private:
required_ioport m_dma_dip;
};
-ADDRESS_MAP_START(gimix_state::gimix_banked_mem)
- AM_RANGE(0x00000, 0x0dfff) AM_RAMBANK("lower_ram")
- AM_RANGE(0x0e000, 0x0e001) AM_DEVREADWRITE("acia1", acia6850_device, read, write)
- AM_RANGE(0x0e004, 0x0e005) AM_DEVREADWRITE("acia2", acia6850_device, read, write)
+void gimix_state::gimix_banked_mem(address_map &map)
+{
+ map(0x00000, 0x0dfff).bankrw("lower_ram");
+ map(0x0e000, 0x0e001).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x0e004, 0x0e005).rw(m_acia2, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
//AM_RANGE(0x0e018, 0x0e01b) AM_READWRITE(fdc_r, fdc_w) // FD1797 FDC (PIO)
- AM_RANGE(0x0e100, 0x0e1ff) AM_RAM
+ map(0x0e100, 0x0e1ff).ram();
//AM_RANGE(0x0e200, 0x0e20f) // 9511A / 9512 Arithmetic Processor
- AM_RANGE(0x0e210, 0x0e21f) AM_DEVREADWRITE("timer", ptm6840_device, read, write)
- AM_RANGE(0x0e220, 0x0e23f) AM_DEVREADWRITE("rtc", mm58167_device, read, write)
- AM_RANGE(0x0e240, 0x0e3af) AM_RAM
- AM_RANGE(0x0e3b0, 0x0e3b3) AM_READWRITE(dma_r, dma_w) // DMA controller (custom?)
- AM_RANGE(0x0e3b4, 0x0e3b7) AM_READWRITE(fdc_r, fdc_w) // FD1797 FDC
- AM_RANGE(0x0e400, 0x0e7ff) AM_RAM // scratchpad RAM
- AM_RANGE(0x0e800, 0x0efff) AM_RAM
- AM_RANGE(0x0f000, 0x0f7ff) AM_ROMBANK("rombank2")
- AM_RANGE(0x0f800, 0x0ffff) AM_ROMBANK("rombank1")
+ map(0x0e210, 0x0e21f).rw("timer", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0x0e220, 0x0e23f).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write));
+ map(0x0e240, 0x0e3af).ram();
+ map(0x0e3b0, 0x0e3b3).rw(this, FUNC(gimix_state::dma_r), FUNC(gimix_state::dma_w)); // DMA controller (custom?)
+ map(0x0e3b4, 0x0e3b7).rw(this, FUNC(gimix_state::fdc_r), FUNC(gimix_state::fdc_w)); // FD1797 FDC
+ map(0x0e400, 0x0e7ff).ram(); // scratchpad RAM
+ map(0x0e800, 0x0efff).ram();
+ map(0x0f000, 0x0f7ff).bankr("rombank2");
+ map(0x0f800, 0x0ffff).bankr("rombank1");
//AM_RANGE(0x10000, 0x1ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gimix_state::gimix_mem)
- AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0x1000, 0x1fff) AM_DEVREADWRITE("bank2", address_map_bank_device, read8, write8)
- AM_RANGE(0x2000, 0x2fff) AM_DEVREADWRITE("bank3", address_map_bank_device, read8, write8)
- AM_RANGE(0x3000, 0x3fff) AM_DEVREADWRITE("bank4", address_map_bank_device, read8, write8)
- AM_RANGE(0x4000, 0x4fff) AM_DEVREADWRITE("bank5", address_map_bank_device, read8, write8)
- AM_RANGE(0x5000, 0x5fff) AM_DEVREADWRITE("bank6", address_map_bank_device, read8, write8)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREADWRITE("bank7", address_map_bank_device, read8, write8)
- AM_RANGE(0x7000, 0x7fff) AM_DEVREADWRITE("bank8", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("bank9", address_map_bank_device, read8, write8)
- AM_RANGE(0x9000, 0x9fff) AM_DEVREADWRITE("bank10", address_map_bank_device, read8, write8)
- AM_RANGE(0xa000, 0xafff) AM_DEVREADWRITE("bank11", address_map_bank_device, read8, write8)
- AM_RANGE(0xb000, 0xbfff) AM_DEVREADWRITE("bank12", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("bank13", address_map_bank_device, read8, write8)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("bank14", address_map_bank_device, read8, write8)
- AM_RANGE(0xe000, 0xefff) AM_DEVREADWRITE("bank15", address_map_bank_device, read8, write8)
- AM_RANGE(0xf000, 0xfeff) AM_DEVREADWRITE("bank16", address_map_bank_device, read8, write8)
- AM_RANGE(0xff00, 0xffff) AM_ROMBANK("fixedrombank") AM_WRITE(system_w)
-ADDRESS_MAP_END
+}
+
+void gimix_state::gimix_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(m_bank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x1000, 0x1fff).rw(m_bank2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x2000, 0x2fff).rw(m_bank3, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x3000, 0x3fff).rw(m_bank4, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x4000, 0x4fff).rw(m_bank5, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x5000, 0x5fff).rw(m_bank6, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x6000, 0x6fff).rw(m_bank7, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x7000, 0x7fff).rw(m_bank8, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0x8fff).rw(m_bank9, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x9000, 0x9fff).rw(m_bank10, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xa000, 0xafff).rw(m_bank11, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xb000, 0xbfff).rw(m_bank12, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xcfff).rw(m_bank13, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xd000, 0xdfff).rw(m_bank14, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xe000, 0xefff).rw(m_bank15, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xf000, 0xfeff).rw(m_bank16, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xff00, 0xffff).bankr("fixedrombank").w(this, FUNC(gimix_state::system_w));
+}
static INPUT_PORTS_START( gimix )
PORT_START("dma_s2")
diff --git a/src/mame/drivers/ginganin.cpp b/src/mame/drivers/ginganin.cpp
index 466fc5d64bc..9d21569deb3 100644
--- a/src/mame/drivers/ginganin.cpp
+++ b/src/mame/drivers/ginganin.cpp
@@ -76,18 +76,19 @@ f5d6 print 7 digit BCD number: d0.l to (a1)+ color $3000
*/
-ADDRESS_MAP_START(ginganin_state::ginganin_map)
+void ginganin_state::ginganin_map(address_map &map)
+{
/* The ROM area: 10000-13fff is written with: 0000 0000 0000 0001, at startup only. Why? */
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x020000, 0x023fff) AM_RAM
- AM_RANGE(0x030000, 0x0307ff) AM_RAM_WRITE(ginganin_txtram16_w) AM_SHARE("txtram")
- AM_RANGE(0x040000, 0x0407ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x050000, 0x0507ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x060000, 0x06000f) AM_RAM_WRITE(ginganin_vregs16_w) AM_SHARE("vregs")
- AM_RANGE(0x068000, 0x06bfff) AM_RAM_WRITE(ginganin_fgram16_w) AM_SHARE("fgram")
- AM_RANGE(0x070000, 0x070001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x070002, 0x070003) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
+ map(0x000000, 0x01ffff).rom();
+ map(0x020000, 0x023fff).ram();
+ map(0x030000, 0x0307ff).ram().w(this, FUNC(ginganin_state::ginganin_txtram16_w)).share("txtram");
+ map(0x040000, 0x0407ff).ram().share("spriteram");
+ map(0x050000, 0x0507ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x060000, 0x06000f).ram().w(this, FUNC(ginganin_state::ginganin_vregs16_w)).share("vregs");
+ map(0x068000, 0x06bfff).ram().w(this, FUNC(ginganin_state::ginganin_fgram16_w)).share("fgram");
+ map(0x070000, 0x070001).portr("P1_P2");
+ map(0x070002, 0x070003).portr("DSW");
+}
/*
@@ -96,14 +97,15 @@ ADDRESS_MAP_END
**
*/
-ADDRESS_MAP_START(ginganin_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0807) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write)
- AM_RANGE(0x1800, 0x1800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", y8950_device, write)
- AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("psg", ym2149_device, address_data_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ginganin_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0807).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0x1800, 0x1800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x2000, 0x2001).w("ymsnd", FUNC(y8950_device::write));
+ map(0x2800, 0x2801).w("psg", FUNC(ym2149_device::address_data_w));
+ map(0x4000, 0xffff).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/gizmondo.cpp b/src/mame/drivers/gizmondo.cpp
index 0f2476a5328..3d087e1f31e 100644
--- a/src/mame/drivers/gizmondo.cpp
+++ b/src/mame/drivers/gizmondo.cpp
@@ -167,14 +167,15 @@ void gizmondo_state::machine_reset()
ADDRESS MAPS
*******************************************************************************/
-ADDRESS_MAP_START(gizmondo_state::gizmondo_map)
- AM_RANGE(0x00000000, 0x000007ff) AM_ROM
- AM_RANGE(0x00000800, 0x00000fff) AM_DEVREADWRITE16("diskonchip", diskonchip_g3_device, sec_1_r, sec_1_w, 0xffffffff)
- AM_RANGE(0x00001000, 0x000017ff) AM_DEVREADWRITE16("diskonchip", diskonchip_g3_device, sec_2_r, sec_2_w, 0xffffffff)
- AM_RANGE(0x00001800, 0x00001fff) AM_DEVREADWRITE16("diskonchip", diskonchip_g3_device, sec_3_r, sec_3_w, 0xffffffff)
- AM_RANGE(0x30000000, 0x33ffffff) AM_RAM
- AM_RANGE(0x34000000, 0x3413ffff) AM_DEVREADWRITE("gf4500", gf4500_device, read, write)
-ADDRESS_MAP_END
+void gizmondo_state::gizmondo_map(address_map &map)
+{
+ map(0x00000000, 0x000007ff).rom();
+ map(0x00000800, 0x00000fff).rw("diskonchip", FUNC(diskonchip_g3_device::sec_1_r), FUNC(diskonchip_g3_device::sec_1_w));
+ map(0x00001000, 0x000017ff).rw("diskonchip", FUNC(diskonchip_g3_device::sec_2_r), FUNC(diskonchip_g3_device::sec_2_w));
+ map(0x00001800, 0x00001fff).rw("diskonchip", FUNC(diskonchip_g3_device::sec_3_r), FUNC(diskonchip_g3_device::sec_3_w));
+ map(0x30000000, 0x33ffffff).ram();
+ map(0x34000000, 0x3413ffff).rw(m_gf4500, FUNC(gf4500_device::read), FUNC(gf4500_device::write));
+}
/*******************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp
index f05efc79824..b6b0d791850 100644
--- a/src/mame/drivers/gkigt.cpp
+++ b/src/mame/drivers/gkigt.cpp
@@ -225,17 +225,18 @@ WRITE8_MEMBER(igt_gameking_state::unk_w)
}
-ADDRESS_MAP_START(igt_gameking_state::igt_gameking_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x08000000, 0x081fffff) AM_ROM AM_REGION("game", 0)
- AM_RANGE(0x08200000, 0x083fffff) AM_ROM AM_REGION("plx", 0)
+void igt_gameking_state::igt_gameking_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().region("maincpu", 0);
+ map(0x08000000, 0x081fffff).rom().region("game", 0);
+ map(0x08200000, 0x083fffff).rom().region("plx", 0);
// it's unclear how much of this is saved and how much total RAM there is.
- AM_RANGE(0x10000000, 0x1001ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x10020000, 0x17ffffff) AM_RAM
+ map(0x10000000, 0x1001ffff).ram().share("nvram");
+ map(0x10020000, 0x17ffffff).ram();
- AM_RANGE(0x18000000, 0x181fffff) AM_RAM AM_SHARE("vram") // igtsc writes from 18000000 to 1817ffff, ms3 all the way to 181fffff.
+ map(0x18000000, 0x181fffff).ram().share("vram"); // igtsc writes from 18000000 to 1817ffff, ms3 all the way to 181fffff.
// 28000000: MEZ2 SEL, also connected to ymz chip select?
// 28010000: first 28C94 QUART (QRT1 SEL)
@@ -245,36 +246,37 @@ ADDRESS_MAP_START(igt_gameking_state::igt_gameking_map)
// 28050000: SOUND SEL
// 28060000: COLOR SEL
// 28070000: OUT SEL
-// AM_RANGE(0x28010000, 0x2801007f) AM_DEVREADWRITE8("quart1", sc28c94_device, read, write, 0x00ff00ff)
- AM_RANGE(0x28010008, 0x2801000b) AM_READ(uart_status_r)
- AM_RANGE(0x2801001c, 0x2801001f) AM_WRITENOP
- AM_RANGE(0x28010030, 0x28010033) AM_READ(uart_status_r) // channel D
- AM_RANGE(0x28010034, 0x28010037) AM_WRITE(uart_w) // channel D
- AM_RANGE(0x28020000, 0x280205ff) AM_RAM // CMOS?
-// AM_RANGE(0x28020000, 0x2802007f) AM_READ(igt_gk_28010008_r) AM_WRITENOP
- AM_RANGE(0x28030000, 0x28030003) AM_READ_PORT("IN0")
-// AM_RANGE(0x28040000, 0x2804007f) AM_DEVREADWRITE8("quart2", sc28c94_device, read, write, 0x00ff00ff)
- AM_RANGE(0x28040008, 0x2804000b) AM_WRITE8(unk_w,0x00ff0000)
- AM_RANGE(0x28040008, 0x2804000b) AM_READWRITE8(irq_vector_r,irq_enable_w,0x000000ff)
- AM_RANGE(0x28040018, 0x2804001b) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x2804001c, 0x2804001f) AM_READ_PORT("IN4") AM_WRITENOP
- AM_RANGE(0x28040028, 0x2804002b) AM_READNOP AM_WRITE8(irq_ack_w,0x00ff0000)
- // AM_RANGE(0x28040038, 0x2804003b) AM_READ8(timer_r,0x00ff0000)
- AM_RANGE(0x28040038, 0x2804003b) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0x2804003c, 0x2804003f) AM_READ_PORT("IN3") AM_WRITENOP
- AM_RANGE(0x28040050, 0x28040053) AM_READ8(frame_number_r,0x000000ff)
- AM_RANGE(0x28040054, 0x28040057) AM_WRITENOP
-// AM_RANGE(0x28040054, 0x28040057) AM_WRITE8(irq_ack_w,0x000000ff)
-
- AM_RANGE(0x28050000, 0x28050003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff00ff)
- AM_RANGE(0x28060000, 0x28060003) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x000000ff )
- AM_RANGE(0x28060000, 0x28060003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff0000 )
- AM_RANGE(0x28060004, 0x28060007) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x000000ff )
-
- AM_RANGE(0x3b000000, 0x3b1fffff) AM_ROM AM_REGION("snd", 0)
-
- AM_RANGE(0xa1000000, 0xa1011fff) AM_RAM // used by gkkey for restart IAC
-ADDRESS_MAP_END
+// map(0x28010000, 0x2801007f).rw("quart1", FUNC(sc28c94_device::read), FUNC(sc28c94_device::write)).umask32(0x00ff00ff);
+ map(0x28010008, 0x2801000b).r(this, FUNC(igt_gameking_state::uart_status_r));
+ map(0x2801001c, 0x2801001f).nopw();
+ map(0x28010030, 0x28010033).r(this, FUNC(igt_gameking_state::uart_status_r)); // channel D
+ map(0x28010034, 0x28010037).w(this, FUNC(igt_gameking_state::uart_w)); // channel D
+ map(0x28020000, 0x280205ff).ram(); // CMOS?
+// map(0x28020000, 0x2802007f).r(this, FUNC(igt_gameking_state::igt_gk_28010008_r)).nopw();
+ map(0x28030000, 0x28030003).portr("IN0");
+// map(0x28040000, 0x2804007f).rw("quart2", FUNC(sc28c94_device::read), FUNC(sc28c94_device::write)).umask32(0x00ff00ff);
+ map(0x2804000a, 0x2804000a).w(this, FUNC(igt_gameking_state::unk_w));
+ map(0x28040008, 0x28040008).rw(this, FUNC(igt_gameking_state::irq_vector_r), FUNC(igt_gameking_state::irq_enable_w));
+ map(0x28040018, 0x2804001b).portr("IN1").nopw();
+ map(0x2804001c, 0x2804001f).portr("IN4").nopw();
+ map(0x28040028, 0x2804002b).nopr();
+ map(0x2804002a, 0x2804002a).w(this, FUNC(igt_gameking_state::irq_ack_w));
+// map(0x28040038, 0x2804003b).r(this, FUNC(igt_gameking_state::timer_r)).umask32(0x00ff0000);
+ map(0x28040038, 0x2804003b).portr("IN2").nopw();
+ map(0x2804003c, 0x2804003f).portr("IN3").nopw();
+ map(0x28040050, 0x28040050).r(this, FUNC(igt_gameking_state::frame_number_r));
+ map(0x28040054, 0x28040057).nopw();
+// map(0x28040054, 0x28040057).w(this, FUNC(igt_gameking_state::irq_ack_w).umask32(0x000000ff);
+
+ map(0x28050000, 0x28050003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x00ff00ff);
+ map(0x28060000, 0x28060000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x28060002, 0x28060002).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x28060004, 0x28060004).w("ramdac", FUNC(ramdac_device::mask_w));
+
+ map(0x3b000000, 0x3b1fffff).rom().region("snd", 0);
+
+ map(0xa1000000, 0xa1011fff).ram(); // used by gkkey for restart IAC
+}
READ16_MEMBER(igt_gameking_state::version_r)
{
@@ -288,11 +290,12 @@ READ8_MEMBER(igt_gameking_state::timer_r)
return m_timer_count++;
}
-ADDRESS_MAP_START(igt_gameking_state::igt_ms72c_map)
- AM_IMPORT_FROM( igt_gameking_map )
- AM_RANGE(0x18200000, 0x18200003) AM_READ16(version_r, 0x0000ffff)
- AM_RANGE(0x28040038, 0x2804003b) AM_READ8(timer_r,0x00ff0000)
-ADDRESS_MAP_END
+void igt_gameking_state::igt_ms72c_map(address_map &map)
+{
+ igt_gameking_map(map);
+ map(0x18200000, 0x18200001).r(this, FUNC(igt_gameking_state::version_r));
+ map(0x2804003a, 0x2804003a).r(this, FUNC(igt_gameking_state::timer_r));
+}
static INPUT_PORTS_START( igt_gameking )
PORT_START("IN0")
@@ -568,9 +571,10 @@ static GFXDECODE_START( igt_gameking )
GFXDECODE_ENTRY( "cg", 0, igt_gameking_layout, 0x0, 1 )
GFXDECODE_END
-ADDRESS_MAP_START(igt_gameking_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void igt_gameking_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
void igt_gameking_state::machine_start()
{
diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp
index 3fe6e73ab0e..73236b13e32 100644
--- a/src/mame/drivers/gladiatr.cpp
+++ b/src/mame/drivers/gladiatr.cpp
@@ -191,10 +191,6 @@ TODO:
#include "emu.h"
#include "includes/gladiatr.h"
-#include "cpu/m6809/m6809.h"
-#include "cpu/mcs48/mcs48.h"
-#include "cpu/z80/z80.h"
-
#include "machine/74259.h"
#include "machine/clock.h"
#include "machine/nvram.h"
@@ -619,86 +615,94 @@ MACHINE_RESET_MEMBER(ppking_state, ppking)
m_mcu[0].state = 0;
}
-ADDRESS_MAP_START(ppking_state::ppking_cpu1_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
-ADDRESS_MAP_END
+void ppking_state::ppking_cpu1_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcbff).ram().share("spriteram");
+ map(0xcc00, 0xcfff).w(this, FUNC(ppking_state::ppking_video_registers_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(ppking_state::paletteram_w)).share("paletteram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(ppking_state::videoram_w)).share("videoram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(ppking_state::colorram_w)).share("colorram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(ppking_state::textram_w)).share("textram");
+ map(0xf000, 0xf7ff).ram().share("nvram"); /* battery backed RAM */
+}
-ADDRESS_MAP_START(ppking_state::ppking_cpu3_map)
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(ppking_adpcm_w)
- AM_RANGE(0x2000, 0x2fff) AM_READ(adpcm_command_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
+void ppking_state::ppking_cpu3_map(address_map &map)
+{
+ map(0x1000, 0x1fff).w(this, FUNC(ppking_state::ppking_adpcm_w));
+ map(0x2000, 0x2fff).r(this, FUNC(ppking_state::adpcm_command_r));
+ map(0x8000, 0xffff).rom().nopw();
+}
-ADDRESS_MAP_START(ppking_state::ppking_cpu1_io)
+void ppking_state::ppking_cpu1_io(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
+ map(0xc000, 0xc007).w("mainlatch", FUNC(ls259_device::write_d0));
// AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w)
- AM_RANGE(0xc09e, 0xc09f) AM_READ(ppking_qx0_r) AM_WRITE(ppking_qx0_w)
- AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog
- AM_RANGE(0xc0c0, 0xc0c1) AM_READ(ppking_qxcomu_r) AM_WRITE(ppking_qxcomu_w)
-ADDRESS_MAP_END
+ map(0xc09e, 0xc09f).r(this, FUNC(ppking_state::ppking_qx0_r)).w(this, FUNC(ppking_state::ppking_qx0_w));
+ map(0xc0bf, 0xc0bf).noprw(); // watchdog
+ map(0xc0c0, 0xc0c1).r(this, FUNC(ppking_state::ppking_qxcomu_r)).w(this, FUNC(ppking_state::ppking_qxcomu_w));
+}
-ADDRESS_MAP_START(ppking_state::ppking_cpu2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x20, 0x21) AM_READ(ppking_qx1_r) AM_WRITE(ppking_qx1_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(cpu2_irq_ack_w)
- AM_RANGE(0x80, 0x81) AM_READWRITE(ppking_qx3_r,ppking_qx3_w)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(adpcm_command_w)
-ADDRESS_MAP_END
+void ppking_state::ppking_cpu2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x20, 0x21).r(this, FUNC(ppking_state::ppking_qx1_r)).w(this, FUNC(ppking_state::ppking_qx1_w));
+ map(0x40, 0x40).w(this, FUNC(ppking_state::cpu2_irq_ack_w));
+ map(0x80, 0x81).rw(this, FUNC(ppking_state::ppking_qx3_r), FUNC(ppking_state::ppking_qx3_w));
+ map(0xe0, 0xe0).w(this, FUNC(ppking_state::adpcm_command_w));
+}
-ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu1_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xcc00, 0xcfff) AM_WRITE(gladiatr_video_registers_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
-ADDRESS_MAP_END
+void gladiatr_state::gladiatr_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcbff).ram().share("spriteram");
+ map(0xcc00, 0xcfff).w(this, FUNC(gladiatr_state::gladiatr_video_registers_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(gladiatr_state::paletteram_w)).share("paletteram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(gladiatr_state::videoram_w)).share("videoram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(gladiatr_state::colorram_w)).share("colorram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(gladiatr_state::textram_w)).share("textram");
+ map(0xf000, 0xf7ff).ram().share("nvram"); /* battery backed RAM */
+}
ADDRESS_MAP_START(gladiatr_state_base::cpu2_map)
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x83ff) AM_RAM
ADDRESS_MAP_END
-ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu3_map)
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(gladiator_adpcm_w)
- AM_RANGE(0x2000, 0x2fff) AM_READ(adpcm_command_r)
- AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank2") AM_WRITENOP
-ADDRESS_MAP_END
+void gladiatr_state::gladiatr_cpu3_map(address_map &map)
+{
+ map(0x1000, 0x1fff).w(this, FUNC(gladiatr_state::gladiator_adpcm_w));
+ map(0x2000, 0x2fff).r(this, FUNC(gladiatr_state::adpcm_command_r));
+ map(0x4000, 0xffff).bankr("bank2").nopw();
+}
-ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu1_io)
- AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */
- AM_RANGE(0xc09e, 0xc09f) AM_DEVREADWRITE("ucpu", upi41_cpu_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog_reset_w doesn't work
-ADDRESS_MAP_END
+void gladiatr_state::gladiatr_cpu1_io(address_map &map)
+{
+ map(0xc000, 0xc007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xc004, 0xc004).w(this, FUNC(gladiatr_state::gladiatr_irq_patch_w)); /* !!! patch to 2nd CPU IRQ !!! */
+ map(0xc09e, 0xc09f).rw(m_ucpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+ map(0xc0bf, 0xc0bf).noprw(); // watchdog_reset_w doesn't work
+}
-ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("csnd", upi41_cpu_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x40, 0x40) AM_NOP // WRITE(sub_irq_ack_w)
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("cctl", upi41_cpu_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ccpu", upi41_cpu_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0xa0, 0xa7) AM_DEVWRITE("filtlatch", ls259_device, write_d0)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(adpcm_command_w)
-ADDRESS_MAP_END
+void gladiatr_state::gladiatr_cpu2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x20, 0x21).rw(m_csnd, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+ map(0x40, 0x40).noprw(); // WRITE(sub_irq_ack_w)
+ map(0x60, 0x61).rw(m_cctl, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+ map(0x80, 0x81).rw(m_ccpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+ map(0xa0, 0xa7).w("filtlatch", FUNC(ls259_device::write_d0));
+ map(0xe0, 0xe0).w(this, FUNC(gladiatr_state::adpcm_command_w));
+}
static INPUT_PORTS_START( ppking )
diff --git a/src/mame/drivers/glasgow.cpp b/src/mame/drivers/glasgow.cpp
index 88f02f0cc5b..26e524a729a 100644
--- a/src/mame/drivers/glasgow.cpp
+++ b/src/mame/drivers/glasgow.cpp
@@ -490,42 +490,45 @@ void glasgow_state::machine_reset()
}
-ADDRESS_MAP_START(glasgow_state::glasgow_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x010000, 0x010001) AM_WRITE8( glasgow_lcd_w, 0xff00 )
- AM_RANGE(0x010002, 0x010003) AM_READWRITE( glasgow_keys_r, glasgow_keys_w )
- AM_RANGE(0x010004, 0x010005) AM_WRITE8( glasgow_lcd_flag_w, 0xff00 )
- AM_RANGE(0x010006, 0x010007) AM_READWRITE( glasgow_board_r, glasgow_beeper_w )
- AM_RANGE(0x010008, 0x010009) AM_WRITE( glasgow_board_w )
- AM_RANGE(0x01c000, 0x01ffff) AM_RAM // 16KB
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amsterd_state::amsterd_mem)
+void glasgow_state::glasgow_mem(address_map &map)
+{
+ map.global_mask(0x1ffff);
+ map(0x000000, 0x00ffff).rom();
+ map(0x010000, 0x010000).w(this, FUNC(glasgow_state::glasgow_lcd_w));
+ map(0x010002, 0x010003).rw(this, FUNC(glasgow_state::glasgow_keys_r), FUNC(glasgow_state::glasgow_keys_w));
+ map(0x010004, 0x010004).w(this, FUNC(glasgow_state::glasgow_lcd_flag_w));
+ map(0x010006, 0x010007).rw(this, FUNC(glasgow_state::glasgow_board_r), FUNC(glasgow_state::glasgow_beeper_w));
+ map(0x010008, 0x010009).w(this, FUNC(glasgow_state::glasgow_board_w));
+ map(0x01c000, 0x01ffff).ram(); // 16KB
+}
+
+void amsterd_state::amsterd_mem(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x7FFFF)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x800002, 0x800003) AM_WRITE8( write_lcd, 0xff00 )
- AM_RANGE(0x800008, 0x800009) AM_WRITE8( write_lcd_flag, 0xff00 )
- AM_RANGE(0x800004, 0x800005) AM_WRITE8( write_beeper, 0xff00 )
- AM_RANGE(0x800010, 0x800011) AM_WRITE8( write_board, 0xff00 )
- AM_RANGE(0x800020, 0x800021) AM_READ( read_board )
- AM_RANGE(0x800040, 0x800041) AM_READ8( read_newkeys, 0xff00 )
- AM_RANGE(0x800088, 0x800089) AM_WRITE( write_lcd_invert )
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // 16KB
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amsterd_state::dallas32_mem)
+ map(0x000000, 0x00ffff).rom();
+ map(0x800002, 0x800002).w(this, FUNC(amsterd_state::write_lcd));
+ map(0x800008, 0x800008).w(this, FUNC(amsterd_state::write_lcd_flag));
+ map(0x800004, 0x800004).w(this, FUNC(amsterd_state::write_beeper));
+ map(0x800010, 0x800010).w(this, FUNC(amsterd_state::write_board));
+ map(0x800020, 0x800021).r(this, FUNC(amsterd_state::read_board));
+ map(0x800040, 0x800040).r(this, FUNC(amsterd_state::read_newkeys));
+ map(0x800088, 0x800089).w(this, FUNC(amsterd_state::write_lcd_invert));
+ map(0xffc000, 0xffffff).ram(); // 16KB
+}
+
+void amsterd_state::dallas32_mem(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x1FFFF)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x010000, 0x01ffff) AM_RAM // 64KB
- AM_RANGE(0x800000, 0x800003) AM_WRITE8( write_lcd, 0x0000ff00 )
- AM_RANGE(0x800004, 0x800007) AM_WRITE8( write_beeper, 0xff000000 )
- AM_RANGE(0x800008, 0x80000b) AM_WRITE8( write_lcd_flag, 0xff000000 )
- AM_RANGE(0x800010, 0x800013) AM_WRITE8( write_board, 0xff000000 )
- AM_RANGE(0x800020, 0x800023) AM_READ( read_board32 )
- AM_RANGE(0x800040, 0x800043) AM_READ8( read_newkeys, 0xff000000 )
- AM_RANGE(0x800088, 0x80008b) AM_WRITE( write_keys32 )
-ADDRESS_MAP_END
+ map(0x000000, 0x00ffff).rom();
+ map(0x010000, 0x01ffff).ram(); // 64KB
+ map(0x800002, 0x800002).w(this, FUNC(amsterd_state::write_lcd));
+ map(0x800004, 0x800004).w(this, FUNC(amsterd_state::write_beeper));
+ map(0x800008, 0x800008).w(this, FUNC(amsterd_state::write_lcd_flag));
+ map(0x800010, 0x800010).w(this, FUNC(amsterd_state::write_board));
+ map(0x800020, 0x800023).r(this, FUNC(amsterd_state::read_board32));
+ map(0x800040, 0x800040).r(this, FUNC(amsterd_state::read_newkeys));
+ map(0x800088, 0x80008b).w(this, FUNC(amsterd_state::write_keys32));
+}
static INPUT_PORTS_START( chessboard )
diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp
index 9955867a9bc..d48b3532a2b 100644
--- a/src/mame/drivers/glass.cpp
+++ b/src/mame/drivers/glass.cpp
@@ -104,35 +104,38 @@ WRITE_LINE_MEMBER(glass_state::coin2_counter_w)
}
-ADDRESS_MAP_START(glass_state::mcu_hostmem_map)
- AM_RANGE(0x0000, 0xffff) AM_MASK(0x3fff) AM_READWRITE(shareram_r, shareram_w) // shared RAM with the main CPU
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(glass_state::glass_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") // Video RAM
- AM_RANGE(0x102000, 0x102fff) AM_RAM // Extra Video RAM
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") // Video Registers
- AM_RANGE(0x108008, 0x108009) AM_WRITE(clr_int_w) // CLR INT Video
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") // Sprite RAM
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- AM_RANGE(0x700008, 0x700009) AM_WRITE(blitter_w) // serial blitter
- AM_RANGE(0x70000a, 0x70000b) AM_SELECT(0x000070) AM_WRITE(coin_w) // Coin Counters/Lockout
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) // OKI6295 bankswitch
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // OKI6295 status register
- AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") // Work RAM (partially shared with DS5002FP)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(glass_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void glass_state::mcu_hostmem_map(address_map &map)
+{
+ map(0x0000, 0xffff).mask(0x3fff).rw(this, FUNC(glass_state::shareram_r), FUNC(glass_state::shareram_w)); // shared RAM with the main CPU
+}
+
+
+void glass_state::glass_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x101fff).ram().w(this, FUNC(glass_state::vram_w)).share("videoram"); // Video RAM
+ map(0x102000, 0x102fff).ram(); // Extra Video RAM
+ map(0x108000, 0x108007).writeonly().share("vregs"); // Video Registers
+ map(0x108008, 0x108009).w(this, FUNC(glass_state::clr_int_w)); // CLR INT Video
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x440000, 0x440fff).ram().share("spriteram"); // Sprite RAM
+ map(0x700000, 0x700001).portr("DSW2");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x700008, 0x700009).w(this, FUNC(glass_state::blitter_w)); // serial blitter
+ map(0x70000a, 0x70000b).select(0x000070).w(this, FUNC(glass_state::coin_w)); // Coin Counters/Lockout
+ map(0x70000c, 0x70000d).w(this, FUNC(glass_state::OKIM6295_bankswitch_w)); // OKI6295 bankswitch
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI6295 status register
+ map(0xfec000, 0xfeffff).ram().share("shareram"); // Work RAM (partially shared with DS5002FP)
+}
+
+
+void glass_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( glass )
diff --git a/src/mame/drivers/globalfr.cpp b/src/mame/drivers/globalfr.cpp
index 60ce27ff1cd..543174d0e4b 100644
--- a/src/mame/drivers/globalfr.cpp
+++ b/src/mame/drivers/globalfr.cpp
@@ -52,12 +52,13 @@ WRITE16_MEMBER(globalfr_state::vfd_w)
}
}
-ADDRESS_MAP_START(globalfr_state::globalfr_map)
- AM_RANGE(0x002000, 0x002fff) AM_RAM
- AM_RANGE(0x008000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0x8000)
- AM_RANGE(0x0a0000, 0x0a01ff) AM_RAM
- AM_RANGE(0x7e0040, 0x7e0041) AM_WRITE(vfd_w)
-ADDRESS_MAP_END
+void globalfr_state::globalfr_map(address_map &map)
+{
+ map(0x002000, 0x002fff).ram();
+ map(0x008000, 0x07ffff).rom().region("maincpu", 0x8000);
+ map(0x0a0000, 0x0a01ff).ram();
+ map(0x7e0040, 0x7e0041).w(this, FUNC(globalfr_state::vfd_w));
+}
static INPUT_PORTS_START( globalfr )
INPUT_PORTS_END
diff --git a/src/mame/drivers/globalvr.cpp b/src/mame/drivers/globalvr.cpp
index 0e14019948d..66c71f313fc 100644
--- a/src/mame/drivers/globalvr.cpp
+++ b/src/mame/drivers/globalvr.cpp
@@ -77,9 +77,10 @@ protected:
-ADDRESS_MAP_START(globalvr_state::globalvr_map)
- AM_RANGE(0x00000000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void globalvr_state::globalvr_map(address_map &map)
+{
+ map(0x00000000, 0xffffff).ram();
+}
static INPUT_PORTS_START( globalvr )
diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp
index 38a9b806aed..427c801953e 100644
--- a/src/mame/drivers/gluck2.cpp
+++ b/src/mame/drivers/gluck2.cpp
@@ -308,22 +308,23 @@ WRITE8_MEMBER(gluck2_state::counters_w)
* Memory map information *
*********************************************/
-ADDRESS_MAP_START(gluck2_state::gluck2_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x084b) AM_NOP /* see below */
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* 6116 #1 (2K x 8) RAM (only 1st half used) */
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* 6116 #2 (2K x 8) RAM (only 1st half used) */
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW1")
- AM_RANGE(0x2d00, 0x2d01) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x3400, 0x3400) AM_READ_PORT("IN0")
- AM_RANGE(0x3500, 0x3500) AM_READ_PORT("IN1")
- AM_RANGE(0x3600, 0x3600) AM_READ_PORT("IN2")
- AM_RANGE(0x3700, 0x3700) AM_WRITE(counters_w )
- AM_RANGE(0x3d00, 0x3d01) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void gluck2_state::gluck2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x084b).noprw(); /* see below */
+ map(0x1000, 0x13ff).ram().w(this, FUNC(gluck2_state::videoram_w)).share("videoram"); /* 6116 #1 (2K x 8) RAM (only 1st half used) */
+ map(0x1800, 0x1bff).ram().w(this, FUNC(gluck2_state::colorram_w)).share("colorram"); /* 6116 #2 (2K x 8) RAM (only 1st half used) */
+ map(0x2000, 0x2000).portr("SW1");
+ map(0x2d00, 0x2d01).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x3400, 0x3400).portr("IN0");
+ map(0x3500, 0x3500).portr("IN1");
+ map(0x3600, 0x3600).portr("IN2");
+ map(0x3700, 0x3700).w(this, FUNC(gluck2_state::counters_w));
+ map(0x3d00, 0x3d01).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x4000, 0xffff).rom();
+}
/*
0844-0847 PIA0 leftover???
diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp
index 4e4e2ff6897..299e9f975b1 100644
--- a/src/mame/drivers/gmaster.cpp
+++ b/src/mame/drivers/gmaster.cpp
@@ -237,11 +237,12 @@ WRITE8_MEMBER(gmaster_state::gmaster_portf_w)
}
-ADDRESS_MAP_START(gmaster_state::gmaster_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(gmaster_io_r, gmaster_io_w)
+void gmaster_state::gmaster_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).rw(this, FUNC(gmaster_state::gmaster_io_r), FUNC(gmaster_state::gmaster_io_w));
//AM_RANGE(0x8000, 0xfeff) // mapped by the cartslot
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( gmaster )
diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp
index a91bff687c3..55723487f62 100644
--- a/src/mame/drivers/gng.cpp
+++ b/src/mame/drivers/gng.cpp
@@ -65,63 +65,66 @@ READ8_MEMBER(gng_state::diamond_hack_r)
return 0;
}
-ADDRESS_MAP_START(gng_state::gng_map)
- AM_RANGE(0x0000, 0x1dff) AM_RAM
- AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(gng_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(gng_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P1")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P2")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW1")
- AM_RANGE(0x3004, 0x3004) AM_READ_PORT("DSW2")
- AM_RANGE(0x3800, 0x38ff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3900, 0x39ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3b08, 0x3b09) AM_WRITE(gng_bgscrollx_w)
- AM_RANGE(0x3b0a, 0x3b0b) AM_WRITE(gng_bgscrolly_w)
- AM_RANGE(0x3c00, 0x3c00) AM_NOP /* watchdog? */
- AM_RANGE(0x3d00, 0x3d07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(gng_bankswitch_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gng_state::diamond_map)
- AM_RANGE(0x0000, 0x1dff) AM_RAM
- AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(gng_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(gng_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x3000, 0x33ff) AM_NOP // faulty POST?
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P1")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P2")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW1")
- AM_RANGE(0x3004, 0x3004) AM_READ_PORT("DSW2")
- AM_RANGE(0x3800, 0x38ff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3900, 0x39ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3b08, 0x3b09) AM_WRITE(gng_bgscrollx_w)
- AM_RANGE(0x3b0a, 0x3b0b) AM_WRITE(gng_bgscrolly_w)
- AM_RANGE(0x3c00, 0x3c00) AM_NOP /* watchdog? */
- AM_RANGE(0x3d00, 0x3d00) AM_WRITENOP // ? (writes $01 and $0F)
- AM_RANGE(0x3d01, 0x3d01) AM_WRITENOP // ?
- AM_RANGE(0x3e00, 0x3e00) AM_WRITE(gng_bankswitch_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0xffff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_READ(diamond_hack_r)
- AM_RANGE(0x6048, 0x6048) AM_WRITENOP // ?
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(gng_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_device, write)
-ADDRESS_MAP_END
+void gng_state::gng_map(address_map &map)
+{
+ map(0x0000, 0x1dff).ram();
+ map(0x1e00, 0x1fff).ram().share("spriteram");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram");
+ map(0x3000, 0x3000).portr("SYSTEM");
+ map(0x3001, 0x3001).portr("P1");
+ map(0x3002, 0x3002).portr("P2");
+ map(0x3003, 0x3003).portr("DSW1");
+ map(0x3004, 0x3004).portr("DSW2");
+ map(0x3800, 0x38ff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3b08, 0x3b09).w(this, FUNC(gng_state::gng_bgscrollx_w));
+ map(0x3b0a, 0x3b0b).w(this, FUNC(gng_state::gng_bgscrolly_w));
+ map(0x3c00, 0x3c00).noprw(); /* watchdog? */
+ map(0x3d00, 0x3d07).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x3e00, 0x3e00).w(this, FUNC(gng_state::gng_bankswitch_w));
+ map(0x4000, 0x5fff).bankr("bank1");
+ map(0x6000, 0xffff).rom();
+}
+
+void gng_state::diamond_map(address_map &map)
+{
+ map(0x0000, 0x1dff).ram();
+ map(0x1e00, 0x1fff).ram().share("spriteram");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram");
+ map(0x3000, 0x33ff).noprw(); // faulty POST?
+ map(0x3000, 0x3000).portr("SYSTEM");
+ map(0x3001, 0x3001).portr("P1");
+ map(0x3002, 0x3002).portr("P2");
+ map(0x3003, 0x3003).portr("DSW1");
+ map(0x3004, 0x3004).portr("DSW2");
+ map(0x3800, 0x38ff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3b08, 0x3b09).w(this, FUNC(gng_state::gng_bgscrollx_w));
+ map(0x3b0a, 0x3b0b).w(this, FUNC(gng_state::gng_bgscrolly_w));
+ map(0x3c00, 0x3c00).noprw(); /* watchdog? */
+ map(0x3d00, 0x3d00).nopw(); // ? (writes $01 and $0F)
+ map(0x3d01, 0x3d01).nopw(); // ?
+ map(0x3e00, 0x3e00).w(this, FUNC(gng_state::gng_bankswitch_w));
+ map(0x4000, 0x5fff).bankr("bank1");
+ map(0x6000, 0xffff).rom();
+ map(0x6000, 0x6000).r(this, FUNC(gng_state::diamond_hack_r));
+ map(0x6048, 0x6048).nopw(); // ?
+}
+
+
+
+void gng_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write));
+ map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write));
+}
static INPUT_PORTS_START( gng )
diff --git a/src/mame/drivers/go2000.cpp b/src/mame/drivers/go2000.cpp
index f26ac2a6adb..4b181acd502 100644
--- a/src/mame/drivers/go2000.cpp
+++ b/src/mame/drivers/go2000.cpp
@@ -85,36 +85,39 @@ WRITE16_MEMBER(go2000_state::sound_cmd_w)
m_soundcpu->set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(go2000_state::go2000_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x610000, 0x61ffff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x800000, 0x800fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW")
- AM_RANGE(0x620002, 0x620003) AM_WRITE(sound_cmd_w)
+void go2000_state::go2000_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x203fff).ram();
+ map(0x600000, 0x60ffff).ram().share("videoram");
+ map(0x610000, 0x61ffff).ram().share("videoram2");
+ map(0x800000, 0x800fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa00000, 0xa00001).portr("INPUTS");
+ map(0xa00002, 0xa00003).portr("DSW");
+ map(0x620002, 0x620003).w(this, FUNC(go2000_state::sound_cmd_w));
// AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP
// AM_RANGE(0xe00010, 0xe00011) AM_WRITENOP
// AM_RANGE(0xe00020, 0xe00021) AM_WRITENOP
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(go2000_state::go2000_pcm_1_bankswitch_w)
{
membank("bank1")->set_entry(data & 0x07);
}
-ADDRESS_MAP_START(go2000_state::go2000_sound_map)
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x0400, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(go2000_state::go2000_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_WRITE(go2000_pcm_1_bankswitch_w)
-ADDRESS_MAP_END
+void go2000_state::go2000_sound_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0xffff).bankr("bank1");
+}
+
+void go2000_state::go2000_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x00, 0x00).w("dac", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w(this, FUNC(go2000_state::go2000_pcm_1_bankswitch_w));
+}
static INPUT_PORTS_START( go2000 )
diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp
index 31066f425ef..8154a237b8e 100644
--- a/src/mame/drivers/goal92.cpp
+++ b/src/mame/drivers/goal92.cpp
@@ -51,24 +51,25 @@ READ16_MEMBER(goal92_state::goal92_inputs_r)
return 0;
}
-ADDRESS_MAP_START(goal92_state::goal92_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1007ff) AM_RAM
- AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(goal92_background_w) AM_SHARE("bg_data")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(goal92_foreground_w) AM_SHARE("fg_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // it has tiles for clouds, but they aren't used
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(goal92_text_w) AM_SHARE("tx_data")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x104000, 0x13ffff) AM_RAM
- AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140800, 0x140801) AM_WRITENOP
- AM_RANGE(0x140802, 0x140803) AM_WRITENOP
- AM_RANGE(0x180000, 0x18000f) AM_READ(goal92_inputs_r)
- AM_RANGE(0x180008, 0x180009) AM_WRITE(goal92_sound_command_w)
- AM_RANGE(0x18000a, 0x18000b) AM_WRITENOP
- AM_RANGE(0x180010, 0x180017) AM_WRITEONLY AM_SHARE("scrollram")
- AM_RANGE(0x18001c, 0x18001d) AM_READWRITE(goal92_fg_bank_r, goal92_fg_bank_w)
-ADDRESS_MAP_END
+void goal92_state::goal92_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1007ff).ram();
+ map(0x100800, 0x100fff).ram().w(this, FUNC(goal92_state::goal92_background_w)).share("bg_data");
+ map(0x101000, 0x1017ff).ram().w(this, FUNC(goal92_state::goal92_foreground_w)).share("fg_data");
+ map(0x101800, 0x101fff).ram(); // it has tiles for clouds, but they aren't used
+ map(0x102000, 0x102fff).ram().w(this, FUNC(goal92_state::goal92_text_w)).share("tx_data");
+ map(0x103000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x104000, 0x13ffff).ram();
+ map(0x140000, 0x1407ff).ram().share("spriteram");
+ map(0x140800, 0x140801).nopw();
+ map(0x140802, 0x140803).nopw();
+ map(0x180000, 0x18000f).r(this, FUNC(goal92_state::goal92_inputs_r));
+ map(0x180008, 0x180009).w(this, FUNC(goal92_state::goal92_sound_command_w));
+ map(0x18000a, 0x18000b).nopw();
+ map(0x180010, 0x180017).writeonly().share("scrollram");
+ map(0x18001c, 0x18001d).rw(this, FUNC(goal92_state::goal92_fg_bank_r), FUNC(goal92_state::goal92_fg_bank_w));
+}
/* Sound CPU */
@@ -84,16 +85,17 @@ WRITE8_MEMBER(goal92_state::adpcm_data_w)
m_msm5205next = data;
}
-ADDRESS_MAP_START(goal92_state::sound_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_control_w)
- AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w)
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void goal92_state::sound_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xe000, 0xe000).w(this, FUNC(goal92_state::adpcm_control_w));
+ map(0xe400, 0xe400).w(this, FUNC(goal92_state::adpcm_data_w));
+ map(0xe800, 0xe801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xec00, 0xec01).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( goal92 )
PORT_START("DSW1")
diff --git a/src/mame/drivers/goindol.cpp b/src/mame/drivers/goindol.cpp
index c6f710ddc21..719ccf462e5 100644
--- a/src/mame/drivers/goindol.cpp
+++ b/src/mame/drivers/goindol.cpp
@@ -81,38 +81,40 @@ WRITE8_MEMBER(goindol_state::prot_fcb0_w)
-ADDRESS_MAP_START(goindol_state::goindol_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // watchdog?
- AM_RANGE(0xc810, 0xc810) AM_WRITE(goindol_bankswitch_w)
- AM_RANGE(0xc820, 0xc820) AM_READ_PORT("DIAL")
- AM_RANGE(0xc820, 0xd820) AM_WRITEONLY AM_SHARE("fg_scrolly")
- AM_RANGE(0xc830, 0xc830) AM_READ_PORT("P1")
- AM_RANGE(0xc830, 0xd830) AM_WRITEONLY AM_SHARE("fg_scrollx")
- AM_RANGE(0xc834, 0xc834) AM_READ_PORT("P2")
- AM_RANGE(0xd000, 0xd03f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd040, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(goindol_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe000, 0xe03f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xe040, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goindol_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1")
- AM_RANGE(0xf422, 0xf422) AM_READ(prot_f422_r)
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc44, 0xfc44) AM_WRITE(prot_fc44_w)
- AM_RANGE(0xfc66, 0xfc66) AM_WRITE(prot_fc66_w)
- AM_RANGE(0xfcb0, 0xfcb0) AM_WRITE(prot_fcb0_w)
- AM_RANGE(0xfd99, 0xfd99) AM_WRITE(prot_fd99_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goindol_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void goindol_state::goindol_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().share("ram");
+ map(0xc800, 0xc800).nopr().w("soundlatch", FUNC(generic_latch_8_device::write)); // watchdog?
+ map(0xc810, 0xc810).w(this, FUNC(goindol_state::goindol_bankswitch_w));
+ map(0xc820, 0xc820).portr("DIAL");
+ map(0xc820, 0xd820).writeonly().share("fg_scrolly");
+ map(0xc830, 0xc830).portr("P1");
+ map(0xc830, 0xd830).writeonly().share("fg_scrollx");
+ map(0xc834, 0xc834).portr("P2");
+ map(0xd000, 0xd03f).ram().share("spriteram");
+ map(0xd040, 0xd7ff).ram();
+ map(0xd800, 0xdfff).ram().w(this, FUNC(goindol_state::goindol_bg_videoram_w)).share("bg_videoram");
+ map(0xe000, 0xe03f).ram().share("spriteram2");
+ map(0xe040, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(goindol_state::goindol_fg_videoram_w)).share("fg_videoram");
+ map(0xf000, 0xf000).portr("DSW1");
+ map(0xf422, 0xf422).r(this, FUNC(goindol_state::prot_f422_r));
+ map(0xf800, 0xf800).portr("DSW2");
+ map(0xfc44, 0xfc44).w(this, FUNC(goindol_state::prot_fc44_w));
+ map(0xfc66, 0xfc66).w(this, FUNC(goindol_state::prot_fc66_w));
+ map(0xfcb0, 0xfcb0).w(this, FUNC(goindol_state::prot_fcb0_w));
+ map(0xfd99, 0xfd99).w(this, FUNC(goindol_state::prot_fd99_w));
+}
+
+void goindol_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa001).w("ymsnd", FUNC(ym2203_device::write));
+ map(0xc000, 0xc7ff).ram();
+ map(0xd800, 0xd800).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( goindol )
diff --git a/src/mame/drivers/gokidetor.cpp b/src/mame/drivers/gokidetor.cpp
index f00ffb8482c..b67ee1e5fbb 100644
--- a/src/mame/drivers/gokidetor.cpp
+++ b/src/mame/drivers/gokidetor.cpp
@@ -86,36 +86,38 @@ WRITE8_MEMBER(gokidetor_state::ym_porta_w)
}
-ADDRESS_MAP_START(gokidetor_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROM // probably banked
- AM_RANGE(0xa000, 0xbfff) AM_RAM
+void gokidetor_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).rom(); // probably banked
+ map(0xa000, 0xbfff).ram();
// c000-c??? = ?
// c200-c??? = ?
// d000 = ?output
// d001 = ?output
// d101 = ?output
// d1c0 = ?output
- AM_RANGE(0xd800, 0xd80f) AM_DEVREADWRITE("te7750", te7750_device, read, write)
+ map(0xd800, 0xd80f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write));
//AM_RANGE(0xda00, 0xda01) AM_DEVWRITE("pwm", m66240_device, write)
// de00 ?input
// df00 ?input
- AM_RANGE(0xe000, 0xe003) AM_READNOP // ?input
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("ciu", pc060ha_device, master_port_w)
- AM_RANGE(0xf001, 0xf001) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w)
+ map(0xe000, 0xe003).nopr(); // ?input
+ map(0xf000, 0xf000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xf001, 0xf001).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
// f600 ?output
// f700 ?output
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(gokidetor_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+void gokidetor_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
MACHINE_CONFIG_START(gokidetor_state::gokidetor)
diff --git a/src/mame/drivers/goldngam.cpp b/src/mame/drivers/goldngam.cpp
index f13a4c05210..9b5a3b9da73 100644
--- a/src/mame/drivers/goldngam.cpp
+++ b/src/mame/drivers/goldngam.cpp
@@ -307,21 +307,22 @@ READ16_MEMBER(goldngam_state::unk_r)
return test1;
}
-ADDRESS_MAP_START(goldngam_state::swisspkr_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x400002, 0x400003) AM_NOP // hopper status read ?
- AM_RANGE(0x40000c, 0x40000d) AM_READ(unk_r)
- AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("DSW2") // not sure...
- AM_RANGE(0x402000, 0x402001) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x402000, 0x402003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) //wrong
-
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x500200, 0x50020f) AM_RAM //?
- AM_RANGE(0x503000, 0x503001) AM_RAM //int ack ?
- AM_RANGE(0x503002, 0x503003) AM_RAM //int ack ?
- AM_RANGE(0x503006, 0x503007) AM_RAM //int ack ?
-ADDRESS_MAP_END
+void goldngam_state::swisspkr_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x400002, 0x400003).noprw(); // hopper status read ?
+ map(0x40000c, 0x40000d).r(this, FUNC(goldngam_state::unk_r));
+ map(0x40000e, 0x40000f).portr("DSW2"); // not sure...
+ map(0x402001, 0x402001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x402000, 0x402003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //wrong
+
+ map(0xc00000, 0xc3ffff).ram().share("videoram");
+ map(0x500200, 0x50020f).ram(); //?
+ map(0x503000, 0x503001).ram(); //int ack ?
+ map(0x503002, 0x503003).ram(); //int ack ?
+ map(0x503006, 0x503007).ram(); //int ack ?
+}
/* unknown R/W:
@@ -357,12 +358,13 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(goldngam_state::moviecrd_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x503000, 0x5031ff) AM_RAM //int ack ?
-ADDRESS_MAP_END
+void goldngam_state::moviecrd_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0xc00000, 0xc3ffff).ram().share("videoram");
+ map(0x503000, 0x5031ff).ram(); //int ack ?
+}
/*
diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp
index 82655adcf4d..b84571740d3 100644
--- a/src/mame/drivers/goldnpkr.cpp
+++ b/src/mame/drivers/goldnpkr.cpp
@@ -1832,44 +1832,47 @@ READ8_MEMBER(goldnpkr_state::pia1_b_r)
* Memory Map Information *
*********************************************/
-ADDRESS_MAP_START(goldnpkr_state::goldnpkr_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x7fff) AM_ROM /* superdbl uses 0x2000..0x3fff address space */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldnpkr_state::pottnpkr_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldnpkr_state::witchcrd_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2")
+void goldnpkr_state::goldnpkr_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x7fff).rom(); /* superdbl uses 0x2000..0x3fff address space */
+}
+
+void goldnpkr_state::pottnpkr_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x3fff).rom();
+}
+
+void goldnpkr_state::witchcrd_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x2000).portr("SW2");
// AM_RANGE(0x2108, 0x210b) AM_NOP /* unknown 40-pin device */
- AM_RANGE(0x2800, 0x2fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+ map(0x2800, 0x2fff).ram();
+ map(0x4000, 0x7fff).rom();
+}
/*
Witch Card (Video klein)
@@ -1883,33 +1886,35 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(goldnpkr_state::witchcrd_falcon_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2")
- AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldnpkr_state::wildcard_map)
+void goldnpkr_state::witchcrd_falcon_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x2000).portr("SW2");
+ map(0x2100, 0x2100).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2101, 0x2101).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x4000, 0x7fff).rom();
+}
+
+void goldnpkr_state::wildcard_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2")
- AM_RANGE(0x2200, 0x27ff) AM_ROM /* for VK set */
- AM_RANGE(0x2800, 0x2fff) AM_RAM /* for VK set */
- AM_RANGE(0x3000, 0xffff) AM_ROM /* for VK set. bootleg starts from 4000 */
-ADDRESS_MAP_END
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x2000).portr("SW2");
+ map(0x2200, 0x27ff).rom(); /* for VK set */
+ map(0x2800, 0x2fff).ram(); /* for VK set */
+ map(0x3000, 0xffff).rom(); /* for VK set. bootleg starts from 4000 */
+}
/*
Video Klein extended hardware
@@ -1918,19 +1923,20 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(goldnpkr_state::wcrdxtnd_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM //AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2")
- AM_RANGE(0x2200, 0x27ff) AM_ROM /* for VK hardware */
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram") /* Dallas ds1210 + battery backed RAM */
- AM_RANGE(0x3000, 0xffff) AM_ROM /* for VK hardware. bootleg starts from 4000 */
-ADDRESS_MAP_END
+void goldnpkr_state::wcrdxtnd_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); //AM_SHARE("nvram") /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x2000).portr("SW2");
+ map(0x2200, 0x27ff).rom(); /* for VK hardware */
+ map(0x2800, 0x2fff).ram().share("nvram"); /* Dallas ds1210 + battery backed RAM */
+ map(0x3000, 0xffff).rom(); /* for VK hardware. bootleg starts from 4000 */
+}
/*
@@ -1938,29 +1944,32 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(goldnpkr_state::wildcrdb_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2")
- AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2800, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldnpkr_state::wildcrdb_mcu_map)
+void goldnpkr_state::wildcrdb_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x2000).portr("SW2");
+ map(0x2100, 0x2100).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2101, 0x2101).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2800, 0x2fff).ram();
+ map(0x3000, 0x7fff).rom();
+}
+
+void goldnpkr_state::wildcrdb_mcu_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x2fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x2fff).ram();
+}
-ADDRESS_MAP_START(goldnpkr_state::wildcrdb_mcu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void goldnpkr_state::wildcrdb_mcu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+}
/*
wildcrdb:
@@ -1971,42 +1980,45 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(goldnpkr_state::genie_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(goldnpkr_state::mondial_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldnpkr_state::bchancep_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void goldnpkr_state::genie_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x17ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1fff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x3fff).rom();
+}
+
+
+void goldnpkr_state::mondial_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x4000, 0x7fff).bankr("bank1");
+}
+
+void goldnpkr_state::bchancep_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x2000, 0x7fff).rom();
+}
/*********************************************
@@ -4603,12 +4615,13 @@ WRITE8_MEMBER(blitz_state::mcu_portc_w)
}
-ADDRESS_MAP_START(blitz_state::megadpkr_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM //AM_SHARE("nvram") /* battery backed RAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
+void blitz_state::megadpkr_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); //AM_SHARE("nvram") /* battery backed RAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
/* There is another set of PIAs controlled by the code.
Maybe they are just mirrors...
@@ -4616,18 +4629,19 @@ ADDRESS_MAP_START(blitz_state::megadpkr_map)
AM_RANGE(0x10f4, 0x10f7) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
AM_RANGE(0x10f8, 0x10fb) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
*/
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram")
-
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bankdev", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000, 0xbfff) AM_READNOP AM_WRITE(mcu_command_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(blitz_state::megadpkr_banked_map)
- AM_RANGE(0x00000, 0x07fff) AM_READ(cpubank_decrypt_r)
- AM_RANGE(0x08000, 0x087ff) AM_DEVREADWRITE("timekpr", m48t02_device, read, write)
-ADDRESS_MAP_END
+ map(0x1000, 0x13ff).ram().w(this, FUNC(blitz_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(this, FUNC(blitz_state::goldnpkr_colorram_w)).share("colorram");
+
+ map(0x4000, 0x7fff).rw(m_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0xbfff).nopr().w(this, FUNC(blitz_state::mcu_command_w));
+ map(0xc000, 0xffff).rom();
+}
+
+void blitz_state::megadpkr_banked_map(address_map &map)
+{
+ map(0x00000, 0x07fff).r(this, FUNC(blitz_state::cpubank_decrypt_r));
+ map(0x08000, 0x087ff).rw("timekpr", FUNC(m48t02_device::read), FUNC(m48t02_device::write));
+}
static INPUT_PORTS_START( megadpkr )
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index d6ef9482f94..a81e62f4409 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -330,73 +330,76 @@ WRITE8_MEMBER(goldstar_state::p2_lamps_w)
}
-ADDRESS_MAP_START(goldstar_state::goldstar_map)
- AM_RANGE(0x0000, 0xb7ff) AM_ROM
- AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc000, 0xc7ff) AM_ROM
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(goldstar_fg_vidram_w ) AM_SHARE("fg_vidram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(goldstar_fg_atrram_w ) AM_SHARE("fg_atrram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0xf040, 0xf07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf080, 0xf0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xf0c0, 0xf0ff) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1") /* Test Mode */
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("DSW1")
+void goldstar_state::goldstar_map(address_map &map)
+{
+ map(0x0000, 0xb7ff).rom();
+ map(0xb800, 0xbfff).ram().share("nvram");
+ map(0xc000, 0xc7ff).rom();
+ map(0xc800, 0xcfff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0xd800, 0xd9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xe000, 0xe1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xe800, 0xe9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf040, 0xf07f).ram().share("reel1_scroll");
+ map(0xf080, 0xf0bf).ram().share("reel2_scroll");
+ map(0xf0c0, 0xf0ff).ram().share("reel3_scroll");
+
+ map(0xf800, 0xf800).portr("IN0");
+ map(0xf801, 0xf801).portr("IN1"); /* Test Mode */
+ map(0xf802, 0xf802).portr("DSW1");
// AM_RANGE(0xf803, 0xf803)
// AM_RANGE(0xf804, 0xf804)
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW4") /* DSW 4 (also appears in 8910 port) */
- AM_RANGE(0xf806, 0xf806) AM_READ_PORT("DSW7") /* (don't know to which one of the */
- AM_RANGE(0xf810, 0xf810) AM_READ_PORT("UNK1")
- AM_RANGE(0xf811, 0xf811) AM_READ_PORT("UNK2")
- AM_RANGE(0xf820, 0xf820) AM_READ_PORT("DSW2")
- AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xf900, 0xf900) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(goldstar_fa00_w)
- AM_RANGE(0xfb00, 0xfb00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xfd00, 0xfdff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xfe00, 0xfe00) AM_READWRITE(protection_r,protection_w)
-ADDRESS_MAP_END
+ map(0xf805, 0xf805).portr("DSW4"); /* DSW 4 (also appears in 8910 port) */
+ map(0xf806, 0xf806).portr("DSW7"); /* (don't know to which one of the */
+ map(0xf810, 0xf810).portr("UNK1");
+ map(0xf811, 0xf811).portr("UNK2");
+ map(0xf820, 0xf820).portr("DSW2");
+ map(0xf830, 0xf830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xf840, 0xf840).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xf900, 0xf900).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xfa00, 0xfa00).w(this, FUNC(goldstar_state::goldstar_fa00_w));
+ map(0xfb00, 0xfb00).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfd00, 0xfdff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xfe00, 0xfe00).rw(this, FUNC(goldstar_state::protection_r), FUNC(goldstar_state::protection_w));
+}
-ADDRESS_MAP_START(goldstar_state::goldstar_readport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW6")
-ADDRESS_MAP_END
+void goldstar_state::goldstar_readport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).portr("DSW6");
+}
-ADDRESS_MAP_START(sanghopm_state::star100_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
+void sanghopm_state::star100_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(fg_vidram_w) AM_SHARE("fg_vidram") // videoram 1
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_atrram_w) AM_SHARE("fg_atrram") // atrram 1
+ map(0xc800, 0xcfff).ram().w(this, FUNC(sanghopm_state::fg_vidram_w)).share("fg_vidram"); // videoram 1
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(sanghopm_state::fg_atrram_w)).share("fg_atrram"); // atrram 1
- AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xd840, 0xd9ff) AM_RAM
- AM_RANGE(0xda00, 0xda3f) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xda40, 0xdbff) AM_RAM
- AM_RANGE(0xdc00, 0xdc3f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xdc40, 0xdfff) AM_RAM
+ map(0xd800, 0xd83f).ram().share("reel1_scroll");
+ map(0xd840, 0xd9ff).ram();
+ map(0xda00, 0xda3f).ram().share("reel2_scroll");
+ map(0xda40, 0xdbff).ram();
+ map(0xdc00, 0xdc3f).ram().share("reel3_scroll");
+ map(0xdc40, 0xdfff).ram();
- AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xe200, 0xe3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
+ map(0xe000, 0xe1ff).ram().w(this, FUNC(sanghopm_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xe200, 0xe3ff).ram().w(this, FUNC(sanghopm_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xe400, 0xe5ff).ram().w(this, FUNC(sanghopm_state::goldstar_reel3_ram_w)).share("reel3_ram");
- AM_RANGE(0xe600, 0xe7ff) AM_RAM_WRITE(bg_vidram_w) AM_SHARE("bg_vidram") // videoram 2
+ map(0xe600, 0xe7ff).ram().w(this, FUNC(sanghopm_state::bg_vidram_w)).share("bg_vidram"); // videoram 2
- AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
- AM_RANGE(0xea00, 0xebff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
- AM_RANGE(0xec00, 0xedff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
+ map(0xe800, 0xe9ff).ram().w(this, FUNC(sanghopm_state::reel1_attrram_w)).share("reel1_attrram");
+ map(0xea00, 0xebff).ram().w(this, FUNC(sanghopm_state::reel2_attrram_w)).share("reel2_attrram");
+ map(0xec00, 0xedff).ram().w(this, FUNC(sanghopm_state::reel3_attrram_w)).share("reel3_attrram");
- AM_RANGE(0xee00, 0xefff) AM_RAM_WRITE(bg_atrram_w) AM_SHARE("bg_atrram") // atrram 2
+ map(0xee00, 0xefff).ram().w(this, FUNC(sanghopm_state::bg_atrram_w)).share("bg_atrram"); // atrram 2
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
+ map(0xf000, 0xf7ff).ram().share("nvram");
+ map(0xf800, 0xffff).ram();
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(sanghopm_state::coincount_w)
@@ -423,34 +426,35 @@ WRITE8_MEMBER(sanghopm_state::enable_w)
m_enable_reg = data;
}
-ADDRESS_MAP_START(sanghopm_state::star100_readport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void sanghopm_state::star100_readport(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, address_w)
+ map(0x08, 0x08).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::address_w));
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2")
- AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3")
- AM_RANGE(0x14, 0x14) AM_READ_PORT("DSW1")
+ map(0x10, 0x10).portr("IN0");
+ map(0x11, 0x11).portr("IN1");
+ map(0x12, 0x12).portr("IN2");
+ map(0x13, 0x13).portr("IN3");
+ map(0x14, 0x14).portr("DSW1");
- AM_RANGE(0x1c, 0x1c) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0x1d ,0x1d) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE(0x1e ,0x1e) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x1c, 0x1c).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x1d, 0x1d).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x1e, 0x1e).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW4-0") // the first 4 bits map to DSW4 1 to 4.
- AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW4-1") // the first 4 bits map to DSW4 5 to 8.
+ map(0x20, 0x20).portr("DSW4-0"); // the first 4 bits map to DSW4 1 to 4.
+ map(0x21, 0x21).portr("DSW4-1"); // the first 4 bits map to DSW4 5 to 8.
- AM_RANGE(0x24, 0x24) AM_WRITE(coincount_w) // coin counters.
+ map(0x24, 0x24).w(this, FUNC(sanghopm_state::coincount_w)); // coin counters.
- AM_RANGE(0x25, 0x25) AM_READ_PORT("DSW2")
- AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW3")
+ map(0x25, 0x25).portr("DSW2");
+ map(0x26, 0x26).portr("DSW3");
- AM_RANGE(0xe0, 0xe0) AM_WRITENOP // Writing 0's and 1's constantly. Watchdog feeder?
- AM_RANGE(0xe1, 0xe1) AM_WRITE(enable_w) // enable/disable reels register.
+ map(0xe0, 0xe0).nopw(); // Writing 0's and 1's constantly. Watchdog feeder?
+ map(0xe1, 0xe1).w(this, FUNC(sanghopm_state::enable_w)); // enable/disable reels register.
-ADDRESS_MAP_END
+}
/*
08: W (3F) AY8910 data
@@ -601,30 +605,31 @@ WRITE8_MEMBER(goldstar_state::ncb3_port81_w)
}
-ADDRESS_MAP_START(cb3_state::ncb3_map)
- AM_RANGE(0x0000, 0xb7ff) AM_ROM
- AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc000, 0xc7ff) AM_ROM
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xf040, 0xf07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf080, 0xf0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xf100, 0xf17f) AM_RAM AM_SHARE("reel3_scroll") // moved compared to goldstar
-
- AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xf810, 0xf813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xf822, 0xf822) AM_WRITE(goldstar_fa00_w) // hack (connected to ppi output port?, needed for colour banking)
-
- AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xf850, 0xf850) AM_WRITE(p1_lamps_w) /* Control Set 1 lamps */
- AM_RANGE(0xf860, 0xf860) AM_WRITE(p2_lamps_w) /* Control Set 2 lamps */
- AM_RANGE(0xf870, 0xf870) AM_DEVWRITE("snsnd", sn76489_device, write) /* guess... device is initialized, but doesn't seems to be used.*/
-ADDRESS_MAP_END
+void cb3_state::ncb3_map(address_map &map)
+{
+ map(0x0000, 0xb7ff).rom();
+ map(0xb800, 0xbfff).ram().share("nvram");
+ map(0xc000, 0xc7ff).rom();
+ map(0xc800, 0xcfff).ram().w(this, FUNC(cb3_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(cb3_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0xd800, 0xd9ff).ram().w(this, FUNC(cb3_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xe000, 0xe1ff).ram().w(this, FUNC(cb3_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xe800, 0xe9ff).ram().w(this, FUNC(cb3_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf040, 0xf07f).ram().share("reel1_scroll");
+ map(0xf080, 0xf0bf).ram().share("reel2_scroll");
+ map(0xf100, 0xf17f).ram().share("reel3_scroll"); // moved compared to goldstar
+
+ map(0xf800, 0xf803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xf810, 0xf813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xf820, 0xf823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xf822, 0xf822).w(this, FUNC(cb3_state::goldstar_fa00_w)); // hack (connected to ppi output port?, needed for colour banking)
+
+ map(0xf830, 0xf830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xf840, 0xf840).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xf850, 0xf850).w(this, FUNC(cb3_state::p1_lamps_w)); /* Control Set 1 lamps */
+ map(0xf860, 0xf860).w(this, 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.*/
+}
ADDRESS_MAP_START(goldstar_state::ncb3_readwriteport)
ADDRESS_MAP_GLOBAL_MASK(0xff)
@@ -669,38 +674,40 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(goldstar_state::wcherry_map)
- AM_RANGE(0x0000, 0xb7ff) AM_ROM
- AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc000, 0xc7ff) AM_ROM
+void goldstar_state::wcherry_map(address_map &map)
+{
+ map(0x0000, 0xb7ff).rom();
+ map(0xb800, 0xbfff).ram().share("nvram");
+ map(0xc000, 0xc7ff).rom();
/* Video RAM and reels stuff are there just as placeholder, and obviously in wrong offset */
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(goldstar_fg_vidram_w ) AM_SHARE("fg_vidram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(goldstar_fg_atrram_w ) AM_SHARE("fg_atrram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0xf040, 0xf07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf080, 0xf0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xf0c0, 0xf0ff) AM_RAM AM_SHARE("reel3_scroll")
+ map(0xc800, 0xcfff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0xd800, 0xd9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xe000, 0xe1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xe800, 0xe9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf040, 0xf07f).ram().share("reel1_scroll");
+ map(0xf080, 0xf0bf).ram().share("reel2_scroll");
+ map(0xf0c0, 0xf0ff).ram().share("reel3_scroll");
/* Not really PPI's... They are emulated/simulated inside the CPLDs */
- AM_RANGE(0xf600, 0xf603) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xf610, 0xf613) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xf620, 0xf623) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
+ map(0xf600, 0xf603).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xf610, 0xf613).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xf620, 0xf623).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
- AM_RANGE(0xf630, 0xf630) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xf640, 0xf640) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xf650, 0xf650) AM_WRITENOP // AM_WRITE(output_w) // unknown register: 0x3e
- AM_RANGE(0xf660, 0xf660) AM_WRITENOP // AM_WRITE(output_w) // unknown register: 0x3e
- AM_RANGE(0xf670, 0xf670) AM_DEVWRITE("snsnd", sn76489_device, write) /* guess... device is initialized, but doesn't seems to be used.*/
+ map(0xf630, 0xf630).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ 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.*/
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(goldstar_state::wcherry_readwriteport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_END
+void goldstar_state::wcherry_readwriteport(address_map &map)
+{
+ map.global_mask(0xff);
+ }
/* wcherry findings...
@@ -723,27 +730,28 @@ ADDRESS_MAP_START(goldstar_state::wcherry_readwriteport)
*/
-ADDRESS_MAP_START(goldstar_state::cm_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM AM_WRITENOP
+void goldstar_state::cm_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom().nopw();
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM
+ map(0xd000, 0xd7ff).ram().share("nvram");
+ map(0xd800, 0xdfff).ram();
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0xf600, 0xf7ff) AM_RAM
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf600, 0xf7ff).ram();
- AM_RANGE(0xf800, 0xf87f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf880, 0xf9ff) AM_RAM
- AM_RANGE(0xfa00, 0xfa7f) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xfa80, 0xfbff) AM_RAM
- AM_RANGE(0xfc00, 0xfc7f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xfc80, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xf87f).ram().share("reel1_scroll");
+ map(0xf880, 0xf9ff).ram();
+ map(0xfa00, 0xfa7f).ram().share("reel2_scroll");
+ map(0xfa80, 0xfbff).ram();
+ map(0xfc00, 0xfc7f).ram().share("reel3_scroll");
+ map(0xfc80, 0xffff).ram();
+}
ADDRESS_MAP_START(goldstar_state::nfm_map)
@@ -793,76 +801,81 @@ WRITE8_MEMBER(goldstar_state::cm_coincount_w)
popmessage("counters: %02X", data);
}
-ADDRESS_MAP_START(cmaster_state::cm_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Inputs */
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */
- AM_RANGE(0x10, 0x10) AM_WRITE(outport0_w)
- AM_RANGE(0x11, 0x11) AM_WRITE(cm_coincount_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(p1_lamps_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(background_col_w)
- AM_RANGE(0x14, 0x14) AM_WRITE(girl_scroll_w)
-ADDRESS_MAP_END
+void cmaster_state::cm_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x04, 0x07).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Inputs */
+ map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */
+ map(0x10, 0x10).w(this, FUNC(cmaster_state::outport0_w));
+ map(0x11, 0x11).w(this, FUNC(cmaster_state::cm_coincount_w));
+ map(0x12, 0x12).w(this, FUNC(cmaster_state::p1_lamps_w));
+ map(0x13, 0x13).w(this, FUNC(cmaster_state::background_col_w));
+ map(0x14, 0x14).w(this, FUNC(cmaster_state::girl_scroll_w));
+}
-ADDRESS_MAP_START(goldstar_state::pkrmast_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void goldstar_state::pkrmast_portmap(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, address_w)
+ map(0x04, 0x04).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x08, 0x08).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::address_w));
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2")
+ map(0x10, 0x10).portr("IN0");
+ map(0x11, 0x11).portr("IN1");
+ map(0x12, 0x12).portr("IN2");
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW3-0")
- AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW3-1")
- AM_RANGE(0x22, 0x22) AM_WRITE(p1_lamps_w)
+ map(0x20, 0x20).portr("DSW3-0");
+ map(0x21, 0x21).portr("DSW3-1");
+ map(0x22, 0x22).w(this, FUNC(goldstar_state::p1_lamps_w));
- AM_RANGE(0x24, 0x24) AM_WRITE(cm_coincount_w)
- AM_RANGE(0x25, 0x25) AM_READ_PORT("DSW1")
- AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW2")
+ map(0x24, 0x24).w(this, FUNC(goldstar_state::cm_coincount_w));
+ map(0x25, 0x25).portr("DSW1");
+ map(0x26, 0x26).portr("DSW2");
- AM_RANGE(0xf0, 0xf0) AM_WRITENOP /* Writing 0's and 1's constantly. Watchdog feeder? */
-ADDRESS_MAP_END
+ map(0xf0, 0xf0).nopw(); /* Writing 0's and 1's constantly. Watchdog feeder? */
+}
-ADDRESS_MAP_START(goldstar_state::cmast91_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */
- AM_RANGE(0x21, 0x21) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x22, 0x23) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void goldstar_state::cmast91_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */
+ map(0x21, 0x21).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x22, 0x23).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
-ADDRESS_MAP_START(cmaster_state::amcoe1_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */
- AM_RANGE(0x10, 0x10) AM_WRITE(outport0_w)
- AM_RANGE(0x11, 0x11) AM_WRITE(cm_coincount_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(p1_lamps_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(background_col_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+void cmaster_state::amcoe1_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x04, 0x07).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */
+ map(0x10, 0x10).w(this, FUNC(cmaster_state::outport0_w));
+ map(0x11, 0x11).w(this, FUNC(cmaster_state::cm_coincount_w));
+ map(0x12, 0x12).w(this, FUNC(cmaster_state::p1_lamps_w));
+ map(0x13, 0x13).w(this, FUNC(cmaster_state::background_col_w));
+ map(0x20, 0x20).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
-ADDRESS_MAP_START(cmaster_state::amcoe2_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */
- AM_RANGE(0x10, 0x10) AM_WRITE(outport0_w)
- AM_RANGE(0x11, 0x11) AM_WRITE(cm_coincount_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(p1_lamps_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(background_col_w)
-ADDRESS_MAP_END
+void cmaster_state::amcoe2_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x04, 0x07).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */
+ map(0x10, 0x10).w(this, FUNC(cmaster_state::outport0_w));
+ map(0x11, 0x11).w(this, FUNC(cmaster_state::cm_coincount_w));
+ map(0x12, 0x12).w(this, FUNC(cmaster_state::p1_lamps_w));
+ map(0x13, 0x13).w(this, FUNC(cmaster_state::background_col_w));
+}
ADDRESS_MAP_START(goldstar_state::lucky8_map)
@@ -999,51 +1012,53 @@ WRITE8_MEMBER(wingco_state::fl7w4_outc802_w)
m_fl7w4_id->write((data >> 6) & 0x01);
}
-ADDRESS_MAP_START(wingco_state::magodds_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void wingco_state::magodds_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
// where does the extra rom data map?? it seems like it should come straight after the existing rom, but it can't if this is a plain z80?
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa900, 0xaaff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") // +0x100 compared to lucky8
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(magodds_outb850_w) /* lamps */
- AM_RANGE(0xb860, 0xb860) AM_WRITE(magodds_outb860_w) /* watchdog */
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu",0xc000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldstar_state::kkotnoli_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* definitely no NVRAM */
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(wingco_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(wingco_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(wingco_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(wingco_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa900, 0xaaff).ram().w(this, FUNC(wingco_state::goldstar_reel3_ram_w)).share("reel3_ram"); // +0x100 compared to lucky8
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ 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(this, FUNC(wingco_state::magodds_outb850_w)); /* lamps */
+ map(0xb860, 0xb860).w(this, FUNC(wingco_state::magodds_outb860_w)); /* watchdog */
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xc000, 0xffff).rom().region("maincpu", 0xc000);
+}
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input Port */
- AM_RANGE(0xb830, 0xb830) AM_WRITENOP /* no ay8910 */
- AM_RANGE(0xb840, 0xb840) AM_WRITENOP /* no ay8910 */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void goldstar_state::kkotnoli_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram(); /* definitely no NVRAM */
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Port */
+ map(0xb830, 0xb830).nopw(); /* no ay8910 */
+ map(0xb840, 0xb840).nopw(); /* no ay8910 */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xf800, 0xffff).ram();
+}
//WRITE8_MEMBER(goldstar_state::ladylinr_outport_w)
@@ -1062,26 +1077,27 @@ ADDRESS_MAP_END
// popmessage("Output: %02X", data);
//}
-ADDRESS_MAP_START(goldstar_state::ladylinr_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DSW bank */
- AM_RANGE(0xb830, 0xb830) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... unused? */
- AM_RANGE(0xb840, 0xb840) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb850, 0xb850) AM_WRITENOP /* just turn off the lamps, if exist */
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void goldstar_state::ladylinr_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DSW bank */
+ 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(0xf800, 0xffff).ram();
+}
ADDRESS_MAP_START(goldstar_state::wcat3_map)
AM_RANGE(0x0000, 0x7fff) AM_ROM
@@ -1109,30 +1125,31 @@ ADDRESS_MAP_END
/* newer / more capable hw */
-ADDRESS_MAP_START(unkch_state::unkch_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
-
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram")
-
- AM_RANGE(0xd840, 0xd87f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xd880, 0xd8bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xd900, 0xd93f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xdfc0, 0xdfff) AM_RAM
-
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
-
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xf600, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
- AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
- AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
- AM_RANGE(0xfe00, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void unkch_state::unkch_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc1ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xc800, 0xc9ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+
+ map(0xd000, 0xd7ff).ram().share("nvram");
+
+ map(0xd840, 0xd87f).ram().share("reel1_scroll");
+ map(0xd880, 0xd8bf).ram().share("reel2_scroll");
+ map(0xd900, 0xd93f).ram().share("reel3_scroll");
+ map(0xdfc0, 0xdfff).ram();
+
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(unkch_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(unkch_state::goldstar_fg_atrram_w)).share("fg_atrram");
+
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(unkch_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(unkch_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(unkch_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf600, 0xf7ff).ram();
+ map(0xf800, 0xf9ff).ram().w(this, FUNC(unkch_state::reel1_attrram_w)).share("reel1_attrram");
+ map(0xfa00, 0xfbff).ram().w(this, FUNC(unkch_state::reel2_attrram_w)).share("reel2_attrram");
+ map(0xfc00, 0xfdff).ram().w(this, FUNC(unkch_state::reel3_attrram_w)).share("reel3_attrram");
+ map(0xfe00, 0xffff).ram();
+}
WRITE8_MEMBER(unkch_state::coincount_w)
@@ -1195,47 +1212,49 @@ WRITE8_MEMBER(unkch_state::unkcm_0x03_w)
}
-ADDRESS_MAP_START(unkch_state::unkch_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void unkch_state::unkch_portmap(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE(0x01, 0x01) AM_WRITE(coincount_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(unkcm_0x02_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(unkcm_0x03_w)
+ map(0x01, 0x01).w(this, FUNC(unkch_state::coincount_w));
+ map(0x02, 0x02).w(this, FUNC(unkch_state::unkcm_0x02_w));
+ map(0x03, 0x03).w(this, FUNC(unkch_state::unkcm_0x03_w));
- AM_RANGE(0x08, 0x08) AM_READ_PORT("IN0")
- AM_RANGE(0x09, 0x09) AM_READ_PORT("IN1")
- AM_RANGE(0x0a, 0x0a) AM_READ_PORT("DSW4")
- AM_RANGE(0x0b, 0x0b) AM_READ_PORT("DSW3")
+ map(0x08, 0x08).portr("IN0");
+ map(0x09, 0x09).portr("IN1");
+ map(0x0a, 0x0a).portr("DSW4");
+ map(0x0b, 0x0b).portr("DSW3");
- AM_RANGE(0x10, 0x10) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x11, 0x11) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+ map(0x10, 0x10).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x11, 0x11).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x12, 0x12).w("aysnd", FUNC(ay8910_device::address_w));
+}
-ADDRESS_MAP_START(unkch_state::megaline_map)
+void unkch_state::megaline_map(address_map &map)
+{
/* Reels stuff are there just as placeholder, and obviously in wrong offset */
- AM_RANGE(0x0000, 0x9fff) AM_ROM
-
- AM_RANGE(0xd000, 0xd7ff) AM_RAM //AM_SHARE("nvram")
-
- AM_RANGE(0xd840, 0xd87f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xd880, 0xd8bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xd900, 0xd93f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xdfc0, 0xdfff) AM_RAM
-
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
-
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xf600, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
- AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
- AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
- AM_RANGE(0xfe00, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x0000, 0x9fff).rom();
+
+ map(0xd000, 0xd7ff).ram(); //AM_SHARE("nvram")
+
+ map(0xd840, 0xd87f).ram().share("reel1_scroll");
+ map(0xd880, 0xd8bf).ram().share("reel2_scroll");
+ map(0xd900, 0xd93f).ram().share("reel3_scroll");
+ map(0xdfc0, 0xdfff).ram();
+
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(unkch_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(unkch_state::goldstar_fg_atrram_w)).share("fg_atrram");
+
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(unkch_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(unkch_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(unkch_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf600, 0xf7ff).ram();
+ map(0xf800, 0xf9ff).ram().w(this, FUNC(unkch_state::reel1_attrram_w)).share("reel1_attrram");
+ map(0xfa00, 0xfbff).ram().w(this, FUNC(unkch_state::reel2_attrram_w)).share("reel2_attrram");
+ map(0xfc00, 0xfdff).ram().w(this, FUNC(unkch_state::reel3_attrram_w)).share("reel3_attrram");
+ map(0xfe00, 0xffff).ram();
+}
/* unknown I/O byte R/W
@@ -1255,29 +1274,30 @@ ADDRESS_MAP_START(goldstar_state::megaline_portmap)
ADDRESS_MAP_END
-ADDRESS_MAP_START(unkch_state::bonusch_map)
+void unkch_state::bonusch_map(address_map &map)
+{
/* Reels stuff and RAM are there just as placeholder, and obviously in wrong offset */
- AM_RANGE(0x0000, 0xbfff) AM_ROM // ok
+ map(0x0000, 0xbfff).rom(); // ok
- AM_RANGE(0xd800, 0xdfff) AM_RAM //AM_SHARE("nvram")
+ map(0xd800, 0xdfff).ram(); //AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(unkch_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(unkch_state::goldstar_fg_atrram_w)).share("fg_atrram");
/* just placeholders */
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(unkch_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(unkch_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(unkch_state::goldstar_reel3_ram_w)).share("reel3_ram");
- AM_RANGE(0xf640, 0xf67f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf680, 0xf6bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xf700, 0xf73f) AM_RAM AM_SHARE("reel3_scroll")
+ map(0xf640, 0xf67f).ram().share("reel1_scroll");
+ map(0xf680, 0xf6bf).ram().share("reel2_scroll");
+ map(0xf700, 0xf73f).ram().share("reel3_scroll");
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
- AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
- AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
-ADDRESS_MAP_END
+ map(0xf800, 0xf9ff).ram().w(this, FUNC(unkch_state::reel1_attrram_w)).share("reel1_attrram");
+ map(0xfa00, 0xfbff).ram().w(this, FUNC(unkch_state::reel2_attrram_w)).share("reel2_attrram");
+ map(0xfc00, 0xfdff).ram().w(this, FUNC(unkch_state::reel3_attrram_w)).share("reel3_attrram");
+}
/* Bonus Chance W-8
diff --git a/src/mame/drivers/gomoku.cpp b/src/mame/drivers/gomoku.cpp
index c66f59423bd..2fdfd67a7e4 100644
--- a/src/mame/drivers/gomoku.cpp
+++ b/src/mame/drivers/gomoku.cpp
@@ -45,18 +45,19 @@ READ8_MEMBER(gomoku_state::input_port_r)
}
-ADDRESS_MAP_START(gomoku_state::gomoku_map)
- AM_RANGE(0x0000, 0x47ff) AM_ROM
- AM_RANGE(0x4800, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(gomoku_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5400, 0x57ff) AM_RAM_WRITE(gomoku_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x5800, 0x58ff) AM_RAM_WRITE(gomoku_bgram_w) AM_SHARE("bgram")
- AM_RANGE(0x6000, 0x601f) AM_DEVWRITE("gomoku", gomoku_sound_device, sound1_w)
- AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("gomoku", gomoku_sound_device, sound2_w)
- AM_RANGE(0x7000, 0x7007) AM_DEVWRITE("latch", ls259_device, write_d1)
- AM_RANGE(0x7800, 0x7807) AM_READ(input_port_r)
- AM_RANGE(0x7800, 0x7800) AM_WRITENOP
-ADDRESS_MAP_END
+void gomoku_state::gomoku_map(address_map &map)
+{
+ map(0x0000, 0x47ff).rom();
+ map(0x4800, 0x4fff).ram();
+ map(0x5000, 0x53ff).ram().w(this, FUNC(gomoku_state::gomoku_videoram_w)).share("videoram");
+ map(0x5400, 0x57ff).ram().w(this, FUNC(gomoku_state::gomoku_colorram_w)).share("colorram");
+ map(0x5800, 0x58ff).ram().w(this, FUNC(gomoku_state::gomoku_bgram_w)).share("bgram");
+ map(0x6000, 0x601f).w("gomoku", FUNC(gomoku_sound_device::sound1_w));
+ map(0x6800, 0x681f).w("gomoku", FUNC(gomoku_sound_device::sound2_w));
+ map(0x7000, 0x7007).w("latch", FUNC(ls259_device::write_d1));
+ map(0x7800, 0x7807).r(this, FUNC(gomoku_state::input_port_r));
+ map(0x7800, 0x7800).nopw();
+}
static INPUT_PORTS_START( gomoku )
diff --git a/src/mame/drivers/good.cpp b/src/mame/drivers/good.cpp
index e3f4ae10d5b..cdc2072da6b 100644
--- a/src/mame/drivers/good.cpp
+++ b/src/mame/drivers/good.cpp
@@ -114,23 +114,24 @@ uint32_t good_state::screen_update_good(screen_device &screen, bitmap_ind16 &bit
return 0;
}
-ADDRESS_MAP_START(good_state::good_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
+void good_state::good_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
//AM_RANGE(0x270000, 0x270007) AM_RAM // scroll?
- AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x270001, 0x270001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0")
- AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1")
- AM_RANGE(0x280004, 0x280005) AM_READ_PORT("IN2")
+ map(0x280000, 0x280001).portr("IN0");
+ map(0x280002, 0x280003).portr("IN1");
+ map(0x280004, 0x280005).portr("IN2");
- AM_RANGE(0x800000, 0x8007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x800000, 0x8007ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x820000, 0x820fff) AM_RAM_WRITE(fg_tilemapram_w) AM_SHARE("fg_tilemapram")
- AM_RANGE(0x822000, 0x822fff) AM_RAM_WRITE(bg_tilemapram_w) AM_SHARE("bg_tilemapram")
+ map(0x820000, 0x820fff).ram().w(this, FUNC(good_state::fg_tilemapram_w)).share("fg_tilemapram");
+ map(0x822000, 0x822fff).ram().w(this, FUNC(good_state::bg_tilemapram_w)).share("bg_tilemapram");
- AM_RANGE(0xff0000, 0xffefff) AM_RAM
-ADDRESS_MAP_END
+ map(0xff0000, 0xffefff).ram();
+}
static INPUT_PORTS_START( good )
PORT_START("IN0")
diff --git a/src/mame/drivers/goodejan.cpp b/src/mame/drivers/goodejan.cpp
index e87a9b275a3..203c1cca7c5 100644
--- a/src/mame/drivers/goodejan.cpp
+++ b/src/mame/drivers/goodejan.cpp
@@ -437,39 +437,49 @@ WRITE16_MEMBER(goodejan_state::mahjong_panel_w)
m_mux_data = data;
}
-ADDRESS_MAP_START(goodejan_state::goodejan_map)
- AM_RANGE(0x00000, 0x0afff) AM_RAM
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_SHARE("sc0_vram")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_SHARE("sc3_vram")
- AM_RANGE(0x0d000, 0x0dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+void goodejan_state::goodejan_map(address_map &map)
+{
+ map(0x00000, 0x0afff).ram();
+ map(0x0c000, 0x0c7ff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc0vram_w)).share("sc0_vram");
+ map(0x0c800, 0x0cfff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc3vram_w)).share("sc3_vram");
+ map(0x0d000, 0x0dfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
/*Guess: these two aren't used/initialized at all.*/
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_SHARE("sc1_vram")
- AM_RANGE(0x0e800, 0x0efff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_SHARE("sc2_vram")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0e000, 0x0e7ff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc1vram_w)).share("sc1_vram");
+ map(0x0e800, 0x0efff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc2vram_w)).share("sc2_vram");
+ map(0x0f800, 0x0ffff).ram().share("sprite_ram");
+ map(0xc0000, 0xfffff).rom();
+}
/* totmejan CRTC is at 8000-804f,goodejan is at 8000-807f */
-ADDRESS_MAP_START(goodejan_state::common_io_map)
- AM_RANGE(0x9000, 0x9001) AM_WRITE(gfxbank_w)
- AM_RANGE(0xb000, 0xb003) AM_WRITENOP
- AM_RANGE(0xb004, 0xb005) AM_WRITE(mahjong_panel_w)
-
- AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW1")
- AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r)
- AM_RANGE(0xc004, 0xc005) AM_READ_PORT("DSW2") // switches
- AM_RANGE(0xd000, 0xd00f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goodejan_state::totmejan_io_map)
- AM_IMPORT_FROM(common_io_map)
- AM_RANGE(0x8000, 0x804f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goodejan_state::goodejan_io_map)
- AM_IMPORT_FROM(common_io_map)
- ;map(0x8000, 0x807f).lrw16("crtc_rw", [this](address_space &space, offs_t offset, u16 mem_mask){ return m_crtc->read(space, offset ^ 0x20, mem_mask); }, [this](address_space &space, offs_t offset, u16 data, u16 mem_mask){ m_crtc->write(space, offset ^ 0x20, data, mem_mask); });
-ADDRESS_MAP_END
+void goodejan_state::common_io_map(address_map &map)
+{
+ map(0x9000, 0x9001).w(this, FUNC(goodejan_state::gfxbank_w));
+ map(0xb000, 0xb003).nopw();
+ map(0xb004, 0xb005).w(this, FUNC(goodejan_state::mahjong_panel_w));
+
+ map(0xc000, 0xc001).portr("DSW1");
+ map(0xc002, 0xc003).r(this, FUNC(goodejan_state::mahjong_panel_r));
+ map(0xc004, 0xc005).portr("DSW2"); // switches
+ map(0xd000, 0xd00f).rw("seibu_sound", FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+}
+
+void goodejan_state::totmejan_io_map(address_map &map)
+{
+ common_io_map(map);
+ map(0x8000, 0x804f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+}
+
+void goodejan_state::goodejan_io_map(address_map &map)
+{
+ common_io_map(map);
+ map(0x8000, 0x807f).lrw16("crtc_rw",
+ [this](address_space &space, offs_t offset, u16 mem_mask) {
+ return m_crtc->read(space, offset ^ 0x20, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) {
+ m_crtc->write(space, offset ^ 0x20, data, mem_mask);
+ });
+}
static INPUT_PORTS_START( goodejan )
SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
diff --git a/src/mame/drivers/gotcha.cpp b/src/mame/drivers/gotcha.cpp
index 59bea55cd60..3addaacb3ac 100644
--- a/src/mame/drivers/gotcha.cpp
+++ b/src/mame/drivers/gotcha.cpp
@@ -101,33 +101,35 @@ WRITE16_MEMBER(gotcha_state::gotcha_oki_bank_w)
}
-ADDRESS_MAP_START(gotcha_state::gotcha_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x100002, 0x100003) AM_WRITE(gotcha_lamps_w)
- AM_RANGE(0x100004, 0x100005) AM_WRITE(gotcha_oki_bank_w)
- AM_RANGE(0x120000, 0x12ffff) AM_RAM
- AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("DSW")
- AM_RANGE(0x300000, 0x300001) AM_WRITE(gotcha_gfxbank_select_w)
- AM_RANGE(0x300002, 0x300009) AM_WRITE(gotcha_scroll_w)
+void gotcha_state::gotcha_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x100002, 0x100003).w(this, FUNC(gotcha_state::gotcha_lamps_w));
+ map(0x100004, 0x100005).w(this, FUNC(gotcha_state::gotcha_oki_bank_w));
+ map(0x120000, 0x12ffff).ram();
+ map(0x140000, 0x1405ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x1607ff).ram().share("spriteram");
+ map(0x180000, 0x180001).portr("INPUTS");
+ map(0x180002, 0x180003).portr("SYSTEM");
+ map(0x180004, 0x180005).portr("DSW");
+ map(0x300000, 0x300001).w(this, FUNC(gotcha_state::gotcha_gfxbank_select_w));
+ map(0x300002, 0x300009).w(this, FUNC(gotcha_state::gotcha_scroll_w));
// { 0x30000c, 0x30000d,
- AM_RANGE(0x30000e, 0x30000f) AM_WRITE(gotcha_gfxbank_w)
- AM_RANGE(0x320000, 0x320fff) AM_WRITE(gotcha_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x322000, 0x322fff) AM_WRITE(gotcha_bgvideoram_w) AM_SHARE("bgvideoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gotcha_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1)
- AM_RANGE(0xc006, 0xc006) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
-ADDRESS_MAP_END
+ map(0x30000e, 0x30000f).w(this, FUNC(gotcha_state::gotcha_gfxbank_w));
+ map(0x320000, 0x320fff).w(this, FUNC(gotcha_state::gotcha_fgvideoram_w)).share("fgvideoram");
+ map(0x322000, 0x322fff).w(this, FUNC(gotcha_state::gotcha_bgvideoram_w)).share("bgvideoram");
+}
+
+
+void gotcha_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc002, 0xc002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).mirror(1);
+ map(0xc006, 0xc006).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd7ff).ram();
+}
diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp
index 17da3a6cf63..841198a49ed 100644
--- a/src/mame/drivers/gottlieb.cpp
+++ b/src/mame/drivers/gottlieb.cpp
@@ -749,48 +749,50 @@ WRITE8_MEMBER(gottlieb_state::gottlieb_sh_w)
m_r2_sound->write(space, offset, data);
}
-ADDRESS_MAP_START(gottlieb_state::reactor_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0f00) AM_WRITEONLY AM_SHARE("spriteram") /* FRSEL */
- AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM_WRITE(gottlieb_videoram_w) AM_SHARE("videoram") /* BRSEL */
- AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_SHARE("charram") /* BOJRSEL1 */
+void gottlieb_state::reactor_map(address_map &map)
+{
+ map.global_mask(0xffff);
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x20ff).mirror(0x0f00).writeonly().share("spriteram"); /* FRSEL */
+ map(0x3000, 0x33ff).mirror(0x0c00).ram().w(this, FUNC(gottlieb_state::gottlieb_videoram_w)).share("videoram"); /* BRSEL */
+ map(0x4000, 0x4fff).ram().w(this, FUNC(gottlieb_state::gottlieb_charram_w)).share("charram"); /* BOJRSEL1 */
/* AM_RANGE(0x5000, 0x5fff) AM_WRITE() */ /* BOJRSEL2 */
- AM_RANGE(0x6000, 0x601f) AM_MIRROR(0x0fe0) AM_WRITE(gottlieb_paletteram_w) AM_SHARE("paletteram") /* COLSEL */
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff8) AM_WRITE(gottlieb_analog_reset_w) /* A1J2 interface */
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff8) AM_WRITE(gottlieb_sh_w) /* trackball H */
- AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff8) AM_WRITE(reactor_output_w) /* trackball V */
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff8) AM_READ_PORT("DSW")
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff8) AM_READ_PORT("IN1") /* buttons */
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff8) AM_READ_PORT("IN2") /* trackball H */
- AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff8) AM_READ_PORT("IN3") /* trackball V */
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff8) AM_READ_PORT("IN4")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gottlieb_state::gottlieb_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM AM_REGION("maincpu", 0x1000) /* or ROM */
- AM_RANGE(0x2000, 0x2fff) AM_RAM AM_REGION("maincpu", 0x2000) /* or ROM */
- AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0700) AM_WRITEONLY AM_SHARE("spriteram") /* FRSEL */
- AM_RANGE(0x3800, 0x3bff) AM_MIRROR(0x0400) AM_RAM_WRITE(gottlieb_videoram_w) AM_SHARE("videoram") /* BRSEL */
- AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_SHARE("charram") /* BOJRSEL1 */
- AM_RANGE(0x5000, 0x501f) AM_MIRROR(0x07e0) AM_WRITE(gottlieb_paletteram_w) AM_SHARE("paletteram") /* COLSEL */
- AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_WRITE(gottlieb_analog_reset_w) /* A1J2 interface */
- AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_WRITE(gottlieb_sh_w) /* OP20-27 */
- AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_WRITE(general_output_w) /* OP30-37 */
+ map(0x6000, 0x601f).mirror(0x0fe0).w(this, FUNC(gottlieb_state::gottlieb_paletteram_w)).share("paletteram"); /* COLSEL */
+ map(0x7000, 0x7000).mirror(0x0ff8).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x7001, 0x7001).mirror(0x0ff8).w(this, FUNC(gottlieb_state::gottlieb_analog_reset_w)); /* A1J2 interface */
+ map(0x7002, 0x7002).mirror(0x0ff8).w(this, FUNC(gottlieb_state::gottlieb_sh_w)); /* trackball H */
+ map(0x7003, 0x7003).mirror(0x0ff8).w(this, FUNC(gottlieb_state::reactor_output_w)); /* trackball V */
+ map(0x7000, 0x7000).mirror(0x0ff8).portr("DSW");
+ map(0x7001, 0x7001).mirror(0x0ff8).portr("IN1"); /* buttons */
+ map(0x7002, 0x7002).mirror(0x0ff8).portr("IN2"); /* trackball H */
+ map(0x7003, 0x7003).mirror(0x0ff8).portr("IN3"); /* trackball V */
+ map(0x7004, 0x7004).mirror(0x0ff8).portr("IN4");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void gottlieb_state::gottlieb_map(address_map &map)
+{
+ map.global_mask(0xffff);
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x1000, 0x1fff).ram().region("maincpu", 0x1000); /* or ROM */
+ map(0x2000, 0x2fff).ram().region("maincpu", 0x2000); /* or ROM */
+ map(0x3000, 0x30ff).mirror(0x0700).writeonly().share("spriteram"); /* FRSEL */
+ map(0x3800, 0x3bff).mirror(0x0400).ram().w(this, FUNC(gottlieb_state::gottlieb_videoram_w)).share("videoram"); /* BRSEL */
+ map(0x4000, 0x4fff).ram().w(this, FUNC(gottlieb_state::gottlieb_charram_w)).share("charram"); /* BOJRSEL1 */
+ map(0x5000, 0x501f).mirror(0x07e0).w(this, FUNC(gottlieb_state::gottlieb_paletteram_w)).share("paletteram"); /* COLSEL */
+ map(0x5800, 0x5800).mirror(0x07f8).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5801, 0x5801).mirror(0x07f8).w(this, FUNC(gottlieb_state::gottlieb_analog_reset_w)); /* A1J2 interface */
+ map(0x5802, 0x5802).mirror(0x07f8).w(this, FUNC(gottlieb_state::gottlieb_sh_w)); /* OP20-27 */
+ map(0x5803, 0x5803).mirror(0x07f8).w(this, FUNC(gottlieb_state::general_output_w)); /* OP30-37 */
/* AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_WRITE()*/ /* OP40-47 */
- AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_READ_PORT("DSW")
- AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") /* IP10-17 */
- AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_READ_PORT("IN2") /* trackball H */
- AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READ_PORT("IN3") /* trackball V */
- AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_READ_PORT("IN4") /* IP40-47 */
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x5800, 0x5800).mirror(0x07f8).portr("DSW");
+ map(0x5801, 0x5801).mirror(0x07f8).portr("IN1"); /* IP10-17 */
+ map(0x5802, 0x5802).mirror(0x07f8).portr("IN2"); /* trackball H */
+ map(0x5803, 0x5803).mirror(0x07f8).portr("IN3"); /* trackball V */
+ map(0x5804, 0x5804).mirror(0x07f8).portr("IN4"); /* IP40-47 */
+ map(0x6000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/gotya.cpp b/src/mame/drivers/gotya.cpp
index fe3985e7ece..188bd6397ba 100644
--- a/src/mame/drivers/gotya.cpp
+++ b/src/mame/drivers/gotya.cpp
@@ -45,21 +45,22 @@ TODO: Emulated sound
#include "speaker.h"
-ADDRESS_MAP_START(gotya_state::gotya_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("P1")
- AM_RANGE(0x6001, 0x6001) AM_READ_PORT("P2")
- AM_RANGE(0x6002, 0x6002) AM_READ_PORT("DSW")
- AM_RANGE(0x6004, 0x6004) AM_WRITE(gotya_video_control_w)
- AM_RANGE(0x6005, 0x6005) AM_WRITE(gotya_soundlatch_w)
- AM_RANGE(0x6006, 0x6006) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x6007, 0x6007) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gotya_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gotya_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd000, 0xd3df) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0xd3e0, 0xd3ff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
+void gotya_state::gotya_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x5000, 0x5fff).ram();
+ map(0x6000, 0x6000).portr("P1");
+ map(0x6001, 0x6001).portr("P2");
+ map(0x6002, 0x6002).portr("DSW");
+ map(0x6004, 0x6004).w(this, FUNC(gotya_state::gotya_video_control_w));
+ map(0x6005, 0x6005).w(this, FUNC(gotya_state::gotya_soundlatch_w));
+ map(0x6006, 0x6006).writeonly().share("scroll");
+ map(0x6007, 0x6007).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(gotya_state::gotya_videoram_w)).share("videoram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(gotya_state::gotya_colorram_w)).share("colorram");
+ map(0xd000, 0xd3df).ram().share("videoram2");
+ map(0xd3e0, 0xd3ff).ram().share("spriteram");
+}
static INPUT_PORTS_START( gotya )
diff --git a/src/mame/drivers/goupil.cpp b/src/mame/drivers/goupil.cpp
index 6f463a0f4fb..52da4a89092 100644
--- a/src/mame/drivers/goupil.cpp
+++ b/src/mame/drivers/goupil.cpp
@@ -88,7 +88,7 @@ public:
void goupil_g1(machine_config &config);
void goupil_mem(address_map &map);
-private:
+protected:
required_device<acia6850_device> m_acia;
optional_device<ef9364_device> m_ef9364;
required_device<cpu_device> m_maincpu;
@@ -142,62 +142,64 @@ TIMER_DEVICE_CALLBACK_MEMBER( goupil_g1_state::goupil_scanline )
m_ef9364->update_scanline((uint16_t)param);
}
-ADDRESS_MAP_START(goupil_g1_state::goupil_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x3FFF) AM_RAM
- AM_RANGE(0x4000,0x7FFF) AM_RAM
- AM_RANGE(0xC000,0xE3FF) AM_ROM AM_REGION("maincpu", 0xC000) // Basic ROM (BASIC 1 up to BASIC 9).
+void goupil_g1_state::goupil_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3FFF).ram();
+ map(0x4000, 0x7FFF).ram();
+ map(0xC000, 0xE3FF).rom().region("maincpu", 0xC000); // Basic ROM (BASIC 1 up to BASIC 9).
- AM_RANGE(0xE400,0xE7FF) AM_RAM
- AM_RANGE(0xE800,0xE80F) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xE810,0xE81F) AM_DEVREADWRITE("m_via_video", via6522_device, read, write)
+ map(0xE400, 0xE7FF).ram();
+ map(0xE800, 0xE80F).rw(m_acia, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w));
+ map(0xE810, 0xE81F).rw(m_via_video, FUNC(via6522_device::read), FUNC(via6522_device::write));
- AM_RANGE(0xE820,0xE820) AM_DEVREADWRITE("i8279_kb1", i8279_device, data_r, data_w )
- AM_RANGE(0xE821,0xE821) AM_DEVREADWRITE("i8279_kb1", i8279_device, status_r, cmd_w )
+ map(0xE820, 0xE820).rw("i8279_kb1", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0xE821, 0xE821).rw("i8279_kb1", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
- AM_RANGE(0xE830,0xE830) AM_DEVREADWRITE("i8279_kb2", i8279_device, data_r, data_w )
- AM_RANGE(0xE831,0xE831) AM_DEVREADWRITE("i8279_kb2", i8279_device, status_r, cmd_w )
+ map(0xE830, 0xE830).rw("i8279_kb2", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0xE831, 0xE831).rw("i8279_kb2", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
- AM_RANGE(0xE840,0xE84F) AM_DEVREADWRITE("m_via_keyb", via6522_device, read, write)
+ map(0xE840, 0xE84F).rw(m_via_keyb, FUNC(via6522_device::read), FUNC(via6522_device::write));
- AM_RANGE(0xE860,0xE86F) AM_DEVREADWRITE("m_via_modem", via6522_device, read, write)
+ map(0xE860, 0xE86F).rw(m_via_modem, FUNC(via6522_device::read), FUNC(via6522_device::write));
- AM_RANGE(0xE8F0,0xE8FF) AM_DEVREADWRITE("fd1791", fd1791_device, read, write)
+ map(0xE8F0, 0xE8FF).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write));
- AM_RANGE(0xF000,0xF3FF) AM_ROM AM_REGION("maincpu", 0xF000)
- AM_RANGE(0xF400,0xF7FF) AM_ROM AM_REGION("maincpu", 0xF400) // Modem (MOD 3)
- AM_RANGE(0xF800,0xFFFF) AM_ROM AM_REGION("maincpu", 0xF800) // Monitor (MON 1 + MON 2)
-ADDRESS_MAP_END
+ map(0xF000, 0xF3FF).rom().region("maincpu", 0xF000);
+ map(0xF400, 0xF7FF).rom().region("maincpu", 0xF400); // Modem (MOD 3)
+ map(0xF800, 0xFFFF).rom().region("maincpu", 0xF800); // Monitor (MON 1 + MON 2)
+}
-ADDRESS_MAP_START(goupil_g2_state::goupil_g2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x3FFF) AM_RAM
- AM_RANGE(0x4000,0x7FFF) AM_RAM
- AM_RANGE(0x8000,0xE3FF) AM_RAM
+void goupil_g2_state::goupil_g2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3FFF).ram();
+ map(0x4000, 0x7FFF).ram();
+ map(0x8000, 0xE3FF).ram();
- AM_RANGE(0xE400,0xE7FF) AM_RAM
+ map(0xE400, 0xE7FF).ram();
- AM_RANGE(0xE800,0xE80F) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xE810,0xE81F) AM_DEVREADWRITE("m_via_video", via6522_device, read, write)
+ map(0xE800, 0xE80F).rw(m_acia, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w));
+ map(0xE810, 0xE81F).rw(m_via_video, FUNC(via6522_device::read), FUNC(via6522_device::write));
- AM_RANGE(0xE820,0xE820) AM_DEVREADWRITE("i8279_kb1", i8279_device, data_r, data_w )
- AM_RANGE(0xE821,0xE821) AM_DEVREADWRITE("i8279_kb1", i8279_device, status_r, cmd_w )
+ map(0xE820, 0xE820).rw("i8279_kb1", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0xE821, 0xE821).rw("i8279_kb1", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
- AM_RANGE(0xE830,0xE830) AM_DEVREADWRITE("i8279_kb2", i8279_device, data_r, data_w )
- AM_RANGE(0xE831,0xE831) AM_DEVREADWRITE("i8279_kb2", i8279_device, status_r, cmd_w )
+ map(0xE830, 0xE830).rw("i8279_kb2", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0xE831, 0xE831).rw("i8279_kb2", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
- AM_RANGE(0xE840,0xE84F) AM_DEVREADWRITE("m_via_keyb", via6522_device, read, write)
+ map(0xE840, 0xE84F).rw(m_via_keyb, FUNC(via6522_device::read), FUNC(via6522_device::write));
- AM_RANGE(0xE860,0xE86F) AM_DEVREADWRITE("m_via_modem", via6522_device, read, write)
+ map(0xE860, 0xE86F).rw(m_via_modem, FUNC(via6522_device::read), FUNC(via6522_device::write));
- AM_RANGE(0xE870,0xE870) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0xE871,0xE871) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ map(0xE870, 0xE870).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xE871, 0xE871).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- AM_RANGE(0xE8F0,0xE8FF) AM_DEVREADWRITE("fd1791", fd1791_device, read, write)
- AM_RANGE(0xEC00,0xF3FF) AM_READWRITE(visu24x80_ram_r, visu24x80_ram_w)
- AM_RANGE(0xF400,0xF7FF) AM_ROM AM_REGION("maincpu", 0xF400) // Monitor (MON 1)
- AM_RANGE(0xF800,0xFFFF) AM_ROM AM_REGION("maincpu", 0xF800) // Monitor (MON 2)
-ADDRESS_MAP_END
+ map(0xE8F0, 0xE8FF).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write));
+ map(0xEC00, 0xF3FF).rw(this, FUNC(goupil_g2_state::visu24x80_ram_r), FUNC(goupil_g2_state::visu24x80_ram_w));
+ map(0xF400, 0xF7FF).rom().region("maincpu", 0xF400); // Monitor (MON 1)
+ map(0xF800, 0xFFFF).rom().region("maincpu", 0xF800); // Monitor (MON 2)
+}
WRITE8_MEMBER( goupil_g1_state::scanlines_kbd1_w )
{
diff --git a/src/mame/drivers/gp2x.cpp b/src/mame/drivers/gp2x.cpp
index d3502c6b0be..2e05e30d2b8 100644
--- a/src/mame/drivers/gp2x.cpp
+++ b/src/mame/drivers/gp2x.cpp
@@ -343,17 +343,18 @@ READ32_MEMBER( gp2x_state::sdcard_r )
return 0xffff<<16; // at 3e146b0 - indicate timeout & CRC error
}
-ADDRESS_MAP_START(gp2x_state::gp2x_map)
- AM_RANGE(0x00000000, 0x00007fff) AM_ROM
- AM_RANGE(0x01000000, 0x04ffffff) AM_RAM AM_SHARE("ram") // 64 MB of RAM
- AM_RANGE(0x9c000000, 0x9c00001f) AM_READWRITE(nand_r, nand_w)
- AM_RANGE(0xc0000a00, 0xc0000a03) AM_READ(timer_r)
- AM_RANGE(0xc0001208, 0xc000120b) AM_READ(tx_status_r)
- AM_RANGE(0xc0001210, 0xc0001213) AM_WRITE(tx_xmit_w)
- AM_RANGE(0xc0001508, 0xc000150b) AM_READ(sdcard_r)
- AM_RANGE(0xc0002800, 0xc00029ff) AM_READWRITE(gp2x_lcdc_r, gp2x_lcdc_w)
- AM_RANGE(0xc0003a38, 0xc0003a3b) AM_READWRITE(nand_ctrl_r, nand_ctrl_w)
-ADDRESS_MAP_END
+void gp2x_state::gp2x_map(address_map &map)
+{
+ map(0x00000000, 0x00007fff).rom();
+ map(0x01000000, 0x04ffffff).ram().share("ram"); // 64 MB of RAM
+ map(0x9c000000, 0x9c00001f).rw(this, FUNC(gp2x_state::nand_r), FUNC(gp2x_state::nand_w));
+ map(0xc0000a00, 0xc0000a03).r(this, FUNC(gp2x_state::timer_r));
+ map(0xc0001208, 0xc000120b).r(this, FUNC(gp2x_state::tx_status_r));
+ map(0xc0001210, 0xc0001213).w(this, FUNC(gp2x_state::tx_xmit_w));
+ map(0xc0001508, 0xc000150b).r(this, FUNC(gp2x_state::sdcard_r));
+ map(0xc0002800, 0xc00029ff).rw(this, FUNC(gp2x_state::gp2x_lcdc_r), FUNC(gp2x_state::gp2x_lcdc_w));
+ map(0xc0003a38, 0xc0003a3b).rw(this, FUNC(gp2x_state::nand_ctrl_r), FUNC(gp2x_state::nand_ctrl_w));
+}
static INPUT_PORTS_START( gp2x )
INPUT_PORTS_END
diff --git a/src/mame/drivers/gp32.cpp b/src/mame/drivers/gp32.cpp
index 8710b8c373a..b09ab860b91 100644
--- a/src/mame/drivers/gp32.cpp
+++ b/src/mame/drivers/gp32.cpp
@@ -1624,29 +1624,30 @@ void gp32_state::s3c240x_machine_reset()
m_s3c240x_iic.data_index = 0;
}
-ADDRESS_MAP_START(gp32_state::gp32_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM
- AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("s3c240x_ram")
- AM_RANGE(0x14000000, 0x1400003b) AM_READWRITE(s3c240x_memcon_r, s3c240x_memcon_w)
- AM_RANGE(0x14200000, 0x1420005b) AM_READWRITE(s3c240x_usb_host_r, s3c240x_usb_host_w)
- AM_RANGE(0x14400000, 0x14400017) AM_READWRITE(s3c240x_irq_r, s3c240x_irq_w)
- AM_RANGE(0x14600000, 0x1460007b) AM_READWRITE(s3c240x_dma_r, s3c240x_dma_w)
- AM_RANGE(0x14800000, 0x14800017) AM_READWRITE(s3c240x_clkpow_r, s3c240x_clkpow_w)
- AM_RANGE(0x14a00000, 0x14a003ff) AM_READWRITE(s3c240x_lcd_r, s3c240x_lcd_w)
- AM_RANGE(0x14a00400, 0x14a007ff) AM_READWRITE(s3c240x_lcd_palette_r, s3c240x_lcd_palette_w)
- AM_RANGE(0x15000000, 0x1500002b) AM_READWRITE(s3c240x_uart_0_r, s3c240x_uart_0_w)
- AM_RANGE(0x15004000, 0x1500402b) AM_READWRITE(s3c240x_uart_1_r, s3c240x_uart_1_w)
- AM_RANGE(0x15100000, 0x15100043) AM_READWRITE(s3c240x_pwm_r, s3c240x_pwm_w)
- AM_RANGE(0x15200140, 0x152001fb) AM_READWRITE(s3c240x_usb_device_r, s3c240x_usb_device_w)
- AM_RANGE(0x15300000, 0x1530000b) AM_READWRITE(s3c240x_watchdog_r, s3c240x_watchdog_w)
- AM_RANGE(0x15400000, 0x1540000f) AM_READWRITE(s3c240x_iic_r, s3c240x_iic_w)
- AM_RANGE(0x15508000, 0x15508013) AM_READWRITE(s3c240x_iis_r, s3c240x_iis_w)
- AM_RANGE(0x15600000, 0x1560005b) AM_READWRITE(s3c240x_gpio_r, s3c240x_gpio_w)
- AM_RANGE(0x15700040, 0x1570008b) AM_READWRITE(s3c240x_rtc_r, s3c240x_rtc_w)
- AM_RANGE(0x15800000, 0x15800007) AM_READWRITE(s3c240x_adc_r, s3c240x_adc_w)
- AM_RANGE(0x15900000, 0x15900017) AM_READWRITE(s3c240x_spi_r, s3c240x_spi_w)
- AM_RANGE(0x15a00000, 0x15a0003f) AM_READWRITE(s3c240x_mmc_r, s3c240x_mmc_w)
-ADDRESS_MAP_END
+void gp32_state::gp32_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom();
+ map(0x0c000000, 0x0c7fffff).ram().share("s3c240x_ram");
+ map(0x14000000, 0x1400003b).rw(this, FUNC(gp32_state::s3c240x_memcon_r), FUNC(gp32_state::s3c240x_memcon_w));
+ map(0x14200000, 0x1420005b).rw(this, FUNC(gp32_state::s3c240x_usb_host_r), FUNC(gp32_state::s3c240x_usb_host_w));
+ map(0x14400000, 0x14400017).rw(this, FUNC(gp32_state::s3c240x_irq_r), FUNC(gp32_state::s3c240x_irq_w));
+ map(0x14600000, 0x1460007b).rw(this, FUNC(gp32_state::s3c240x_dma_r), FUNC(gp32_state::s3c240x_dma_w));
+ map(0x14800000, 0x14800017).rw(this, FUNC(gp32_state::s3c240x_clkpow_r), FUNC(gp32_state::s3c240x_clkpow_w));
+ map(0x14a00000, 0x14a003ff).rw(this, FUNC(gp32_state::s3c240x_lcd_r), FUNC(gp32_state::s3c240x_lcd_w));
+ map(0x14a00400, 0x14a007ff).rw(this, FUNC(gp32_state::s3c240x_lcd_palette_r), FUNC(gp32_state::s3c240x_lcd_palette_w));
+ map(0x15000000, 0x1500002b).rw(this, FUNC(gp32_state::s3c240x_uart_0_r), FUNC(gp32_state::s3c240x_uart_0_w));
+ map(0x15004000, 0x1500402b).rw(this, FUNC(gp32_state::s3c240x_uart_1_r), FUNC(gp32_state::s3c240x_uart_1_w));
+ map(0x15100000, 0x15100043).rw(this, FUNC(gp32_state::s3c240x_pwm_r), FUNC(gp32_state::s3c240x_pwm_w));
+ map(0x15200140, 0x152001fb).rw(this, FUNC(gp32_state::s3c240x_usb_device_r), FUNC(gp32_state::s3c240x_usb_device_w));
+ map(0x15300000, 0x1530000b).rw(this, FUNC(gp32_state::s3c240x_watchdog_r), FUNC(gp32_state::s3c240x_watchdog_w));
+ map(0x15400000, 0x1540000f).rw(this, FUNC(gp32_state::s3c240x_iic_r), FUNC(gp32_state::s3c240x_iic_w));
+ map(0x15508000, 0x15508013).rw(this, FUNC(gp32_state::s3c240x_iis_r), FUNC(gp32_state::s3c240x_iis_w));
+ map(0x15600000, 0x1560005b).rw(this, FUNC(gp32_state::s3c240x_gpio_r), FUNC(gp32_state::s3c240x_gpio_w));
+ map(0x15700040, 0x1570008b).rw(this, FUNC(gp32_state::s3c240x_rtc_r), FUNC(gp32_state::s3c240x_rtc_w));
+ map(0x15800000, 0x15800007).rw(this, FUNC(gp32_state::s3c240x_adc_r), FUNC(gp32_state::s3c240x_adc_w));
+ map(0x15900000, 0x15900017).rw(this, FUNC(gp32_state::s3c240x_spi_r), FUNC(gp32_state::s3c240x_spi_w));
+ map(0x15a00000, 0x15a0003f).rw(this, FUNC(gp32_state::s3c240x_mmc_r), FUNC(gp32_state::s3c240x_mmc_w));
+}
static INPUT_PORTS_START( gp32 )
PORT_START("IN0")
diff --git a/src/mame/drivers/gp_1.cpp b/src/mame/drivers/gp_1.cpp
index f6602dd54c9..cb5851f2cd7 100644
--- a/src/mame/drivers/gp_1.cpp
+++ b/src/mame/drivers/gp_1.cpp
@@ -81,16 +81,18 @@ private:
};
-ADDRESS_MAP_START(gp_1_state::gp_1_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x8c00, 0x8cff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gp_1_state::gp_1_io)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void gp_1_state::gp_1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("roms", 0);
+ map(0x8c00, 0x8cff).ram().share("nvram");
+}
+
+void gp_1_state::gp_1_io(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x04, 0x07).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
static INPUT_PORTS_START( gp_1 )
PORT_START("DSW0")
diff --git a/src/mame/drivers/gp_2.cpp b/src/mame/drivers/gp_2.cpp
index ad57905dd6c..cfc7529042c 100644
--- a/src/mame/drivers/gp_2.cpp
+++ b/src/mame/drivers/gp_2.cpp
@@ -87,16 +87,18 @@ private:
};
-ADDRESS_MAP_START(gp_2_state::gp_2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x8c00, 0x8dff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gp_2_state::gp_2_io)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void gp_2_state::gp_2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("roms", 0);
+ map(0x8c00, 0x8dff).ram().share("nvram");
+}
+
+void gp_2_state::gp_2_io(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x04, 0x07).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
static INPUT_PORTS_START( gp_1 )
PORT_START("DSW0")
diff --git a/src/mame/drivers/gpworld.cpp b/src/mame/drivers/gpworld.cpp
index f2a56e6fe29..88fa31d5ff5 100644
--- a/src/mame/drivers/gpworld.cpp
+++ b/src/mame/drivers/gpworld.cpp
@@ -321,31 +321,33 @@ WRITE8_MEMBER(gpworld_state::palette_write)
}
/* PROGRAM MAP */
-ADDRESS_MAP_START(gpworld_state::mainmem)
- AM_RANGE(0x0000,0xbfff) AM_ROM
- AM_RANGE(0xc000,0xc7ff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xc800,0xcfff) AM_RAM_WRITE(palette_write) AM_SHARE("palette_ram") /* The memory test reads at 0xc800 */
- AM_RANGE(0xd000,0xd7ff) AM_RAM AM_SHARE("tile_ram")
- AM_RANGE(0xd800,0xd800) AM_READWRITE(ldp_read,ldp_write)
+void gpworld_state::mainmem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().share("sprite_ram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(gpworld_state::palette_write)).share("palette_ram"); /* The memory test reads at 0xc800 */
+ map(0xd000, 0xd7ff).ram().share("tile_ram");
+ map(0xd800, 0xd800).rw(this, FUNC(gpworld_state::ldp_read), FUNC(gpworld_state::ldp_write));
/* AM_RANGE(0xd801,0xd801) AM_READ(???) */
- AM_RANGE(0xda00,0xda00) AM_READ_PORT("INWHEEL") //8255 here....
+ map(0xda00, 0xda00).portr("INWHEEL"); //8255 here....
/* AM_RANGE(0xda01,0xda01) AM_WRITE(???) */ /* These inputs are interesting - there are writes and reads all over these addr's */
- AM_RANGE(0xda02,0xda02) AM_WRITE(brake_gas_write) /*bit 0 select gas/brake input */
- AM_RANGE(0xda20,0xda20) AM_READ(pedal_in)
+ map(0xda02, 0xda02).w(this, FUNC(gpworld_state::brake_gas_write)); /*bit 0 select gas/brake input */
+ map(0xda20, 0xda20).r(this, FUNC(gpworld_state::pedal_in));
- AM_RANGE(0xe000,0xffff) AM_RAM /* Potentially not all work RAM? */
-ADDRESS_MAP_END
+ map(0xe000, 0xffff).ram(); /* Potentially not all work RAM? */
+}
/* I/O MAP */
-ADDRESS_MAP_START(gpworld_state::mainport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_WRITE(misc_io_write)
- AM_RANGE(0x80,0x80) AM_READ_PORT("IN0")
- AM_RANGE(0x81,0x81) AM_READ_PORT("IN1")
- AM_RANGE(0x82,0x82) AM_READ_PORT("DSW1")
- AM_RANGE(0x83,0x83) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+void gpworld_state::mainport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).w(this, FUNC(gpworld_state::misc_io_write));
+ map(0x80, 0x80).portr("IN0");
+ map(0x81, 0x81).portr("IN1");
+ map(0x82, 0x82).portr("DSW1");
+ map(0x83, 0x83).portr("DSW2");
+}
/* PORTS */
diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp
index 4816f6709fb..40cb27fd3e6 100644
--- a/src/mame/drivers/gradius3.cpp
+++ b/src/mame/drivers/gradius3.cpp
@@ -149,48 +149,51 @@ WRITE8_MEMBER(gradius3_state::sound_bank_w)
-ADDRESS_MAP_START(gradius3_state::gradius3_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(cpuA_ctrl_w) /* halt cpu B, irq enable, priority, coin counters, other? */
- AM_RANGE(0x0c8000, 0x0c8001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c8002, 0x0c8003) AM_READ_PORT("P1")
- AM_RANGE(0x0c8004, 0x0c8005) AM_READ_PORT("P2")
- AM_RANGE(0x0c8006, 0x0c8007) AM_READ_PORT("DSW3")
- AM_RANGE(0x0d0000, 0x0d0001) AM_READ_PORT("DSW1")
- AM_RANGE(0x0d0002, 0x0d0003) AM_READ_PORT("DSW2")
- AM_RANGE(0x0d8000, 0x0d8001) AM_WRITE(cpuB_irqtrigger_w)
- AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0e8000, 0x0e8001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0f0000, 0x0f0001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x14c000, 0x153fff) AM_READWRITE(k052109_halfword_r, k052109_halfword_w)
- AM_RANGE(0x180000, 0x19ffff) AM_RAM_WRITE(gradius3_gfxram_w) AM_SHARE("k052109")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gradius3_state::gradius3_map2)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x140000, 0x140001) AM_WRITE(cpuB_irqenable_w)
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x24c000, 0x253fff) AM_READWRITE(k052109_halfword_r, k052109_halfword_w)
- AM_RANGE(0x280000, 0x29ffff) AM_RAM_WRITE(gradius3_gfxram_w) AM_SHARE("k052109")
- AM_RANGE(0x2c0000, 0x2c000f) AM_READWRITE(k051937_halfword_r, k051937_halfword_w)
- AM_RANGE(0x2c0800, 0x2c0fff) AM_READWRITE(k051960_halfword_r, k051960_halfword_w)
- AM_RANGE(0x400000, 0x5fffff) AM_READ(gradius3_gfxrom_r) /* gfx ROMs are mapped here, and copied to RAM */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(gradius3_state::gradius3_s_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */
- AM_RANGE(0xf010, 0xf010) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void gradius3_state::gradius3_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram();
+ map(0x080000, 0x080fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0c0000, 0x0c0001).w(this, FUNC(gradius3_state::cpuA_ctrl_w)); /* halt cpu B, irq enable, priority, coin counters, other? */
+ map(0x0c8000, 0x0c8001).portr("SYSTEM");
+ map(0x0c8002, 0x0c8003).portr("P1");
+ map(0x0c8004, 0x0c8005).portr("P2");
+ map(0x0c8006, 0x0c8007).portr("DSW3");
+ map(0x0d0000, 0x0d0001).portr("DSW1");
+ map(0x0d0002, 0x0d0003).portr("DSW2");
+ map(0x0d8000, 0x0d8001).w(this, FUNC(gradius3_state::cpuB_irqtrigger_w));
+ map(0x0e0000, 0x0e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0e8000, 0x0e8000).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0f0000, 0x0f0001).w(this, FUNC(gradius3_state::sound_irq_w));
+ map(0x100000, 0x103fff).ram().share("share1");
+ map(0x14c000, 0x153fff).rw(this, FUNC(gradius3_state::k052109_halfword_r), FUNC(gradius3_state::k052109_halfword_w));
+ map(0x180000, 0x19ffff).ram().w(this, FUNC(gradius3_state::gradius3_gfxram_w)).share("k052109");
+}
+
+
+void gradius3_state::gradius3_map2(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x140000, 0x140001).w(this, FUNC(gradius3_state::cpuB_irqenable_w));
+ map(0x200000, 0x203fff).ram().share("share1");
+ map(0x24c000, 0x253fff).rw(this, FUNC(gradius3_state::k052109_halfword_r), FUNC(gradius3_state::k052109_halfword_w));
+ map(0x280000, 0x29ffff).ram().w(this, FUNC(gradius3_state::gradius3_gfxram_w)).share("k052109");
+ map(0x2c0000, 0x2c000f).rw(this, FUNC(gradius3_state::k051937_halfword_r), FUNC(gradius3_state::k051937_halfword_w));
+ map(0x2c0800, 0x2c0fff).rw(this, FUNC(gradius3_state::k051960_halfword_r), FUNC(gradius3_state::k051960_halfword_w));
+ map(0x400000, 0x5fffff).r(this, FUNC(gradius3_state::gradius3_gfxrom_r)); /* gfx ROMs are mapped here, and copied to RAM */
+}
+
+
+void gradius3_state::gradius3_s_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf000).w(this, FUNC(gradius3_state::sound_bank_w)); /* 007232 bankswitch */
+ map(0xf010, 0xf010).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf020, 0xf02d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xf030, 0xf031).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf800, 0xffff).ram();
+}
diff --git a/src/mame/drivers/grchamp.cpp b/src/mame/drivers/grchamp.cpp
index 0ac8ef105f3..f405730cb13 100644
--- a/src/mame/drivers/grchamp.cpp
+++ b/src/mame/drivers/grchamp.cpp
@@ -544,49 +544,53 @@ GFXDECODE_END
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(grchamp_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("radarram")
- AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(grchamp_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x78) AM_READ_PORT("ACCEL")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x78) AM_READ(sub_to_main_comm_r)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x78) AM_READ_PORT("WHEEL")
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x78) AM_READ_PORT("DSWA")
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x78) AM_READ_PORT("DSWB")
- AM_RANGE(0x06, 0x06) AM_MIRROR(0x78) AM_READ_PORT("TILT")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x60) AM_READ(pc3259_0_r)
- AM_RANGE(0x09, 0x09) AM_MIRROR(0x60) AM_READ(pc3259_1_r)
- AM_RANGE(0x11, 0x11) AM_MIRROR(0x60) AM_READ(pc3259_2_r)
- AM_RANGE(0x19, 0x19) AM_MIRROR(0x60) AM_READ(pc3259_3_r)
- AM_RANGE(0x00, 0x0f) AM_MIRROR(0x40) AM_WRITE(cpu0_outputs_w)
- AM_RANGE(0x10, 0x13) AM_MIRROR(0x40) AM_WRITE(main_to_sub_comm_w)
- AM_RANGE(0x20, 0x20) AM_SELECT(0x0c) AM_MIRROR(0x53) AM_WRITE(led_board_w)
-ADDRESS_MAP_END
+void grchamp_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0x0400).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().share("radarram");
+ map(0x5000, 0x53ff).mirror(0x0400).ram().share("videoram");
+ map(0x5800, 0x58ff).mirror(0x0700).ram().share("spriteram");
+}
+
+
+void grchamp_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x78).portr("ACCEL");
+ map(0x02, 0x02).mirror(0x78).r(this, FUNC(grchamp_state::sub_to_main_comm_r));
+ map(0x03, 0x03).mirror(0x78).portr("WHEEL");
+ map(0x04, 0x04).mirror(0x78).portr("DSWA");
+ map(0x05, 0x05).mirror(0x78).portr("DSWB");
+ map(0x06, 0x06).mirror(0x78).portr("TILT");
+ map(0x01, 0x01).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_0_r));
+ map(0x09, 0x09).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_1_r));
+ map(0x11, 0x11).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_2_r));
+ map(0x19, 0x19).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_3_r));
+ map(0x00, 0x0f).mirror(0x40).w(this, FUNC(grchamp_state::cpu0_outputs_w));
+ map(0x10, 0x13).mirror(0x40).w(this, FUNC(grchamp_state::main_to_sub_comm_w));
+ map(0x20, 0x20).select(0x0c).mirror(0x53).w(this, FUNC(grchamp_state::led_board_w));
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(grchamp_state::sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(left_w) AM_SHARE("leftram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(right_w) AM_SHARE("rightram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(center_w) AM_SHARE("centerram")
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x5000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
+void grchamp_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram().w(this, FUNC(grchamp_state::left_w)).share("leftram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(grchamp_state::right_w)).share("rightram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(grchamp_state::center_w)).share("centerram");
+ map(0x4000, 0x43ff).mirror(0x0400).ram();
+ map(0x5000, 0x6fff).rom();
+}
-ADDRESS_MAP_START(grchamp_state::sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_READ(main_to_sub_comm_r)
- AM_RANGE(0x00, 0x0f) AM_MIRROR(0x70) AM_WRITE(cpu1_outputs_w)
-ADDRESS_MAP_END
+void grchamp_state::sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).r(this, FUNC(grchamp_state::main_to_sub_comm_r));
+ map(0x00, 0x0f).mirror(0x70).w(this, FUNC(grchamp_state::cpu1_outputs_w));
+}
/* complete memory map derived from schematics;
@@ -619,19 +623,20 @@ ADDRESS_MAP_END
0 1 0 1 0 x x x x x x x x x 0 1 W OPEN BUS
0 1 0 1 0 x x x x x x x x x 1 x RW OPEN BUS
*/
-ADDRESS_MAP_START(grchamp_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
+void grchamp_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
// 2000-3fff are empty rom sockets
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x4801) AM_MIRROR(0x07f8) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x4801, 0x4801) AM_MIRROR(0x07f8) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x4802, 0x4803) AM_MIRROR(0x07f8) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay3", ay8910_device, data_r)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x07fc) AM_READ(soundlatch_r) AM_WRITE(soundlatch_clear7_w)
- AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x07fc) AM_READ(soundlatch_flags_r) AM_WRITENOP // writes here on taitosj reset the secondary semaphore, which doesn't exist on grchamp, but the code tries to reset it anyway!
-ADDRESS_MAP_END
+ map(0x4000, 0x43ff).ram();
+ map(0x4800, 0x4801).mirror(0x07f8).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x4801, 0x4801).mirror(0x07f8).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x4802, 0x4803).mirror(0x07f8).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x4803, 0x4803).mirror(0x07f8).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x4804, 0x4805).mirror(0x07fa).w("ay3", FUNC(ay8910_device::address_data_w));
+ map(0x4805, 0x4805).mirror(0x07fa).r("ay3", FUNC(ay8910_device::data_r));
+ map(0x5000, 0x5000).mirror(0x07fc).r(this, FUNC(grchamp_state::soundlatch_r)).w(this, FUNC(grchamp_state::soundlatch_clear7_w));
+ map(0x5001, 0x5001).mirror(0x07fc).r(this, FUNC(grchamp_state::soundlatch_flags_r)).nopw(); // writes here on taitosj reset the secondary semaphore, which doesn't exist on grchamp, but the code tries to reset it anyway!
+}
diff --git a/src/mame/drivers/grfd2301.cpp b/src/mame/drivers/grfd2301.cpp
index fde8a27fb0d..de5c7a8f812 100644
--- a/src/mame/drivers/grfd2301.cpp
+++ b/src/mame/drivers/grfd2301.cpp
@@ -57,15 +57,17 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(grfd2301_state::mem_map)
- AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(grfd2301_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void grfd2301_state::mem_map(address_map &map)
+{
+ map(0xe000, 0xefff).rom().region("maincpu", 0);
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("videoram");
+}
+
+void grfd2301_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+}
static INPUT_PORTS_START( grfd2301 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp
index 04e46f1ba34..26510918db7 100644
--- a/src/mame/drivers/gridcomp.cpp
+++ b/src/mame/drivers/gridcomp.cpp
@@ -315,36 +315,39 @@ IRQ_CALLBACK_MEMBER(gridcomp_state::irq_callback)
}
-ADDRESS_MAP_START(gridcomp_state::grid1101_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xdfe80, 0xdfe83) AM_DEVREADWRITE8("i7220", i7220_device, read, write, 0x00ff)
- AM_RANGE(0xdfea0, 0xdfeaf) AM_UNMAP // ??
- AM_RANGE(0xdfec0, 0xdfecf) AM_DEVREADWRITE8("modem", i8255_device, read, write, 0x00ff) // incl. DTMF generator
- AM_RANGE(0xdff40, 0xdff5f) AM_NOP // ?? machine ID EAROM, RTC
- AM_RANGE(0xdff80, 0xdff8f) AM_READWRITE(grid_gpib_r, grid_gpib_w) // TMS9914
- AM_RANGE(0xdffc0, 0xdffcf) AM_READWRITE(grid_keyb_r, grid_keyb_w) // Intel 8741 MCU
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gridcomp_state::grid1121_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x90000, 0x97fff) AM_UNMAP // ?? ROM slot
- AM_RANGE(0x9ff00, 0x9ff0f) AM_UNMAP // AM_READ(grid_9ff0_r) // ?? ROM?
- AM_RANGE(0xc0000, 0xcffff) AM_UNMAP // ?? ROM slot -- signature expected: 0x4554, 0x5048
- AM_RANGE(0xdfe00, 0xdfe1f) AM_UNMAP // AM_DEVREADWRITE8("uart8274", i8274_new_device, ba_cd_r, ba_cd_w, 0x00ff)
- AM_RANGE(0xdfe40, 0xdfe4f) AM_UNMAP // ?? diagnostic 8274
- AM_RANGE(0xdfe80, 0xdfe83) AM_DEVREADWRITE8("i7220", i7220_device, read, write, 0x00ff)
- AM_RANGE(0xdfea0, 0xdfeaf) AM_UNMAP // ??
- AM_RANGE(0xdfec0, 0xdfecf) AM_DEVREADWRITE8("modem", i8255_device, read, write, 0x00ff) // incl. DTMF generator
- AM_RANGE(0xdff40, 0xdff5f) AM_NOP // ?? machine ID EAROM, RTC
- AM_RANGE(0xdff80, 0xdff8f) AM_READWRITE(grid_gpib_r, grid_gpib_w) // TMS9914
- AM_RANGE(0xdffc0, 0xdffcf) AM_READWRITE(grid_keyb_r, grid_keyb_w) // Intel 8741 MCU
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gridcomp_state::grid1101_io)
- AM_RANGE(0x0000, 0x000f) AM_DEVICE(I80130_TAG, i80130_device, io_map)
-ADDRESS_MAP_END
+void gridcomp_state::grid1101_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xdfe80, 0xdfe83).rw("i7220", FUNC(i7220_device::read), FUNC(i7220_device::write)).umask16(0x00ff);
+ 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(this, FUNC(gridcomp_state::grid_gpib_r), FUNC(gridcomp_state::grid_gpib_w)); // TMS9914
+ map(0xdffc0, 0xdffcf).rw(this, FUNC(gridcomp_state::grid_keyb_r), FUNC(gridcomp_state::grid_keyb_w)); // Intel 8741 MCU
+ map(0xfc000, 0xfffff).rom().region("user1", 0);
+}
+
+void gridcomp_state::grid1121_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x90000, 0x97fff).unmaprw(); // ?? ROM slot
+ map(0x9ff00, 0x9ff0f).unmaprw(); // AM_READ(grid_9ff0_r) // ?? ROM?
+ map(0xc0000, 0xcffff).unmaprw(); // ?? ROM slot -- signature expected: 0x4554, 0x5048
+ map(0xdfe00, 0xdfe1f).unmaprw(); // AM_DEVREADWRITE8("uart8274", i8274_new_device, ba_cd_r, ba_cd_w, 0x00ff)
+ map(0xdfe40, 0xdfe4f).unmaprw(); // ?? diagnostic 8274
+ map(0xdfe80, 0xdfe83).rw("i7220", FUNC(i7220_device::read), FUNC(i7220_device::write)).umask16(0x00ff);
+ 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(this, FUNC(gridcomp_state::grid_gpib_r), FUNC(gridcomp_state::grid_gpib_w)); // TMS9914
+ map(0xdffc0, 0xdffcf).rw(this, FUNC(gridcomp_state::grid_keyb_r), FUNC(gridcomp_state::grid_keyb_w)); // Intel 8741 MCU
+ map(0xfc000, 0xfffff).rom().region("user1", 0);
+}
+
+void gridcomp_state::grid1101_io(address_map &map)
+{
+ map(0x0000, 0x000f).m(m_osp, FUNC(i80130_device::io_map));
+}
static INPUT_PORTS_START( gridcomp )
INPUT_PORTS_END
diff --git a/src/mame/drivers/gridlee.cpp b/src/mame/drivers/gridlee.cpp
index 932b68e14fb..f575e02ab7f 100644
--- a/src/mame/drivers/gridlee.cpp
+++ b/src/mame/drivers/gridlee.cpp
@@ -299,22 +299,26 @@ WRITE_LINE_MEMBER(gridlee_state::coin_counter_w)
*************************************/
/* CPU 1 read addresses */
-ADDRESS_MAP_START(gridlee_state::cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(gridlee_videoram_w) AM_SHARE("videoram")
- ;map(0x9000, 0x9000).select(0x0070).lw8("latch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_latch->write_d0(space, offset >> 4, data, mem_mask); });
- AM_RANGE(0x9200, 0x9200) AM_WRITE(gridlee_palette_select_w)
- AM_RANGE(0x9380, 0x9380) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9500, 0x9501) AM_READ(analog_port_r)
- AM_RANGE(0x9502, 0x9502) AM_READ_PORT("IN0")
- AM_RANGE(0x9503, 0x9503) AM_READ_PORT("IN1")
- AM_RANGE(0x9600, 0x9600) AM_READ_PORT("DSW")
- AM_RANGE(0x9700, 0x9700) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0x9820, 0x9820) AM_READ(random_num_r)
- AM_RANGE(0x9828, 0x993f) AM_DEVWRITE("gridlee", gridlee_sound_device, gridlee_sound_w)
- AM_RANGE(0x9c00, 0x9cff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void gridlee_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("spriteram");
+ map(0x0800, 0x7fff).ram().w(this, FUNC(gridlee_state::gridlee_videoram_w)).share("videoram");
+ map(0x9000, 0x9000).select(0x0070).lw8("latch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_latch->write_d0(space, offset >> 4, data, mem_mask);
+ });
+ map(0x9200, 0x9200).w(this, FUNC(gridlee_state::gridlee_palette_select_w));
+ map(0x9380, 0x9380).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x9500, 0x9501).r(this, FUNC(gridlee_state::analog_port_r));
+ map(0x9502, 0x9502).portr("IN0");
+ map(0x9503, 0x9503).portr("IN1");
+ map(0x9600, 0x9600).portr("DSW");
+ map(0x9700, 0x9700).portr("IN2").nopw();
+ map(0x9820, 0x9820).r(this, FUNC(gridlee_state::random_num_r));
+ map(0x9828, 0x993f).w("gridlee", FUNC(gridlee_sound_device::gridlee_sound_w));
+ map(0x9c00, 0x9cff).ram().share("nvram");
+ map(0xa000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp
index 4b478bd6e4c..14f66ff58d9 100644
--- a/src/mame/drivers/groundfx.cpp
+++ b/src/mame/drivers/groundfx.cpp
@@ -156,24 +156,25 @@ WRITE32_MEMBER(groundfx_state::motor_control_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(groundfx_state::groundfx_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") /* main CPUA ram */
- AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w) /* gun vibration */
- AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff)
- AM_RANGE(0x600000, 0x600003) AM_READWRITE(adc_r, adc_w)
- AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) // debugging
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */
- AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM // ?? single bytes, blending ??
- AM_RANGE(0xc00000, 0xc00007) AM_READNOP /* Network? */
- AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w) /* perhaps port based rotate control? */
+void groundfx_state::groundfx_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */
+ map(0x300000, 0x303fff).ram().share("spriteram"); /* sprite ram */
+ map(0x400000, 0x400003).w(this, FUNC(groundfx_state::motor_control_w)); /* gun vibration */
+ map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+ map(0x600000, 0x600003).rw(this, FUNC(groundfx_state::adc_r), FUNC(groundfx_state::adc_w));
+ map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ 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)); // debugging
+ map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* 6bpp tilemaps */
+ map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w));
+ map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xb00000, 0xb003ff).ram(); // ?? single bytes, blending ??
+ map(0xc00000, 0xc00007).nopr(); /* Network? */
+ map(0xd00000, 0xd00003).w(this, FUNC(groundfx_state::rotate_control_w)); /* perhaps port based rotate control? */
/* f00000 is seat control? */
-ADDRESS_MAP_END
+}
/***********************************************************
INPUT PORTS (dips in eprom)
diff --git a/src/mame/drivers/gstream.cpp b/src/mame/drivers/gstream.cpp
index e36590d5b49..637872e7236 100644
--- a/src/mame/drivers/gstream.cpp
+++ b/src/mame/drivers/gstream.cpp
@@ -288,21 +288,22 @@ WRITE32_MEMBER(gstream_state::gstream_tilemap3_scrolly_w)
m_tmap3_scrolly = data;
}
-ADDRESS_MAP_START(gstream_state::gstream_32bit_map)
- AM_RANGE(0x00000000, 0x003FFFFF) AM_RAM AM_SHARE("workram") // work ram
+void gstream_state::gstream_32bit_map(address_map &map)
+{
+ map(0x00000000, 0x003FFFFF).ram().share("workram"); // work ram
// AM_RANGE(0x40000000, 0x40FFFFFF) AM_RAM // ?? lots of data gets copied here if present, but game runs without it??
- AM_RANGE(0x80000000, 0x80003FFF) AM_RAM_WRITE(gstream_vram_w) AM_SHARE("vram") // video ram
- AM_RANGE(0x4E000000, 0x4E1FFFFF) AM_ROM AM_REGION("user2",0) // main game rom
- AM_RANGE(0x4F000000, 0x4F000003) AM_WRITE(gstream_tilemap3_scrollx_w)
- AM_RANGE(0x4F200000, 0x4F200003) AM_WRITE(gstream_tilemap3_scrolly_w)
- AM_RANGE(0x4F400000, 0x4F406FFF) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x4F800000, 0x4F800003) AM_WRITE(gstream_tilemap1_scrollx_w)
- AM_RANGE(0x4FA00000, 0x4FA00003) AM_WRITE(gstream_tilemap1_scrolly_w)
- AM_RANGE(0x4FC00000, 0x4FC00003) AM_WRITE(gstream_tilemap2_scrollx_w)
- AM_RANGE(0x4FE00000, 0x4FE00003) AM_WRITE(gstream_tilemap2_scrolly_w)
- AM_RANGE(0xFFC00000, 0xFFC01FFF) AM_RAM AM_SHARE("nvram") // Backup RAM
- AM_RANGE(0xFFF80000, 0xFFFFFFFF) AM_ROM AM_REGION("user1",0) // boot rom
-ADDRESS_MAP_END
+ map(0x80000000, 0x80003FFF).ram().w(this, FUNC(gstream_state::gstream_vram_w)).share("vram"); // video ram
+ map(0x4E000000, 0x4E1FFFFF).rom().region("user2", 0); // main game rom
+ map(0x4F000000, 0x4F000003).w(this, FUNC(gstream_state::gstream_tilemap3_scrollx_w));
+ map(0x4F200000, 0x4F200003).w(this, FUNC(gstream_state::gstream_tilemap3_scrolly_w));
+ map(0x4F400000, 0x4F406FFF).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x4F800000, 0x4F800003).w(this, FUNC(gstream_state::gstream_tilemap1_scrollx_w));
+ map(0x4FA00000, 0x4FA00003).w(this, FUNC(gstream_state::gstream_tilemap1_scrolly_w));
+ map(0x4FC00000, 0x4FC00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrollx_w));
+ map(0x4FE00000, 0x4FE00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrolly_w));
+ map(0xFFC00000, 0xFFC01FFF).ram().share("nvram"); // Backup RAM
+ map(0xFFF80000, 0xFFFFFFFF).rom().region("user1", 0); // boot rom
+}
WRITE32_MEMBER(gstream_state::gstream_oki_banking_w)
{
@@ -369,34 +370,36 @@ WRITE32_MEMBER(gstream_state::gstream_oki_4040_w)
// data == 0 or data == 0x81
}
-ADDRESS_MAP_START(gstream_state::gstream_io)
- AM_RANGE(0x4000, 0x4003) AM_READ_PORT("IN0")
- AM_RANGE(0x4010, 0x4013) AM_READ_PORT("IN1")
- AM_RANGE(0x4020, 0x4023) AM_READ_PORT("IN2") // extra coin switches etc
- AM_RANGE(0x4030, 0x4033) AM_WRITE(gstream_oki_banking_w) // oki banking
- AM_RANGE(0x4040, 0x4043) AM_WRITE(gstream_oki_4040_w) // some clocking?
- AM_RANGE(0x4050, 0x4053) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff) // music and samples
- AM_RANGE(0x4060, 0x4063) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff) // music and samples
-ADDRESS_MAP_END
+void gstream_state::gstream_io(address_map &map)
+{
+ map(0x4000, 0x4003).portr("IN0");
+ map(0x4010, 0x4013).portr("IN1");
+ map(0x4020, 0x4023).portr("IN2"); // extra coin switches etc
+ map(0x4030, 0x4033).w(this, FUNC(gstream_state::gstream_oki_banking_w)); // oki banking
+ map(0x4040, 0x4043).w(this, FUNC(gstream_state::gstream_oki_4040_w)); // some clocking?
+ map(0x4053, 0x4053).rw(m_oki_1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples
+ map(0x4063, 0x4063).rw(m_oki_2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples
+}
-ADDRESS_MAP_START(gstream_state::x2222_32bit_map)
- AM_RANGE(0x00000000, 0x003FFFFF) AM_RAM AM_SHARE("workram") // work ram
- AM_RANGE(0x40000000, 0x403fffff) AM_RAM // ?? data gets copied here if present, but game runs without it??
- AM_RANGE(0x80000000, 0x80003FFF) AM_RAM_WRITE(gstream_vram_w) AM_SHARE("vram") // video ram
+void gstream_state::x2222_32bit_map(address_map &map)
+{
+ map(0x00000000, 0x003FFFFF).ram().share("workram"); // work ram
+ map(0x40000000, 0x403fffff).ram(); // ?? data gets copied here if present, but game runs without it??
+ map(0x80000000, 0x80003FFF).ram().w(this, FUNC(gstream_state::gstream_vram_w)).share("vram"); // video ram
- AM_RANGE(0x4Fc00000, 0x4Fc00003) AM_WRITE(gstream_tilemap2_scrolly_w)
- AM_RANGE(0x4Fd00000, 0x4Fd00003) AM_WRITE(gstream_tilemap2_scrollx_w)
+ map(0x4Fc00000, 0x4Fc00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrolly_w));
+ map(0x4Fd00000, 0x4Fd00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrollx_w));
- AM_RANGE(0x4Fa00000, 0x4Fa00003) AM_WRITE(gstream_tilemap3_scrolly_w)
- AM_RANGE(0x4Fb00000, 0x4Fb00003) AM_WRITE(gstream_tilemap3_scrollx_w)
+ map(0x4Fa00000, 0x4Fa00003).w(this, FUNC(gstream_state::gstream_tilemap3_scrolly_w));
+ map(0x4Fb00000, 0x4Fb00003).w(this, FUNC(gstream_state::gstream_tilemap3_scrollx_w));
- AM_RANGE(0x4Fe00000, 0x4Fe00003) AM_WRITE(gstream_tilemap1_scrolly_w)
- AM_RANGE(0x4Ff00000, 0x4Ff00003) AM_WRITE(gstream_tilemap1_scrollx_w)
+ map(0x4Fe00000, 0x4Fe00003).w(this, FUNC(gstream_state::gstream_tilemap1_scrolly_w));
+ map(0x4Ff00000, 0x4Ff00003).w(this, FUNC(gstream_state::gstream_tilemap1_scrollx_w));
- AM_RANGE(0xFFC00000, 0xFFC01FFF) AM_RAM AM_SHARE("nvram") // Backup RAM (maybe)
- AM_RANGE(0xFFF00000, 0xFFFFFFFF) AM_ROM AM_REGION("user1",0) // boot rom
-ADDRESS_MAP_END
+ map(0xFFC00000, 0xFFC01FFF).ram().share("nvram"); // Backup RAM (maybe)
+ map(0xFFF00000, 0xFFFFFFFF).rom().region("user1", 0); // boot rom
+}
WRITE32_MEMBER(gstream_state::x2222_sound_w)
{
@@ -405,14 +408,15 @@ WRITE32_MEMBER(gstream_state::x2222_sound_w)
printf("x2222_sound_w unk %08x\n", data);
}
-ADDRESS_MAP_START(gstream_state::x2222_io)
- AM_RANGE(0x4000, 0x4003) AM_READ_PORT("P1")
- AM_RANGE(0x4004, 0x4007) AM_READ_PORT("P2")
- AM_RANGE(0x4008, 0x400b) AM_READ_PORT("SYS")
- AM_RANGE(0x4010, 0x4013) AM_READ_PORT("DSW")
- AM_RANGE(0x4028, 0x402b) AM_WRITE( x2222_sound_w )
- AM_RANGE(0x4034, 0x4037) AM_READ_PORT("IN4")
-ADDRESS_MAP_END
+void gstream_state::x2222_io(address_map &map)
+{
+ map(0x4000, 0x4003).portr("P1");
+ map(0x4004, 0x4007).portr("P2");
+ map(0x4008, 0x400b).portr("SYS");
+ map(0x4010, 0x4013).portr("DSW");
+ map(0x4028, 0x402b).w(this, FUNC(gstream_state::x2222_sound_w));
+ map(0x4034, 0x4037).portr("IN4");
+}
static INPUT_PORTS_START( gstream )
PORT_START("IN0")
diff --git a/src/mame/drivers/gstriker.cpp b/src/mame/drivers/gstriker.cpp
index 0bab83e941d..97d711397fb 100644
--- a/src/mame/drivers/gstriker.cpp
+++ b/src/mame/drivers/gstriker.cpp
@@ -246,42 +246,46 @@ GFXDECODE_END
-ADDRESS_MAP_START(gstriker_state::twcup94_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, vram_r, vram_w )
- AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("cg10103_m_vram")
- AM_RANGE(0x180000, 0x180fff) AM_DEVREADWRITE("texttilemap", vs920a_text_tilemap_device, vram_r, vram_w )
- AM_RANGE(0x181000, 0x181fff) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, line_r, line_w )
- AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") AM_MIRROR(0x00f000)
-
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, regs_r, regs_w )
- AM_RANGE(0x200010, 0x200011) AM_WRITENOP
- AM_RANGE(0x200020, 0x200021) AM_WRITENOP
- AM_RANGE(0x200040, 0x20005f) AM_RAM AM_SHARE("mixerregs")
- AM_RANGE(0x200080, 0x20009f) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff)
- AM_RANGE(0x2000a0, 0x2000a1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("work_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gstriker_state::gstriker_map)
- AM_IMPORT_FROM(twcup94_map)
- AM_RANGE(0x200060, 0x200063) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gstriker_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gstriker_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void gstriker_state::twcup94_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x103fff).rw(m_bg, FUNC(mb60553_zooming_tilemap_device::vram_r), FUNC(mb60553_zooming_tilemap_device::vram_w));
+ map(0x140000, 0x141fff).ram().share("cg10103_m_vram");
+ map(0x180000, 0x180fff).rw(m_tx, FUNC(vs920a_text_tilemap_device::vram_r), FUNC(vs920a_text_tilemap_device::vram_w));
+ map(0x181000, 0x181fff).rw(m_bg, FUNC(mb60553_zooming_tilemap_device::line_r), FUNC(mb60553_zooming_tilemap_device::line_w));
+ map(0x1c0000, 0x1c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette").mirror(0x00f000);
+
+ map(0x200000, 0x20000f).rw(m_bg, FUNC(mb60553_zooming_tilemap_device::regs_r), FUNC(mb60553_zooming_tilemap_device::regs_w));
+ map(0x200010, 0x200011).nopw();
+ map(0x200020, 0x200021).nopw();
+ map(0x200040, 0x20005f).ram().share("mixerregs");
+ map(0x200080, 0x20009f).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff);
+ map(0x2000a1, 0x2000a1).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+
+ map(0xffc000, 0xffffff).ram().share("work_ram");
+}
+
+void gstriker_state::gstriker_map(address_map &map)
+{
+ twcup94_map(map);
+ map(0x200060, 0x200063).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
+
+void gstriker_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
+
+void gstriker_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x04, 0x04).w(this, FUNC(gstriker_state::sh_bankswitch_w));
+ map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp
index 00360871397..9607097977a 100644
--- a/src/mame/drivers/gsword.cpp
+++ b/src/mame/drivers/gsword.cpp
@@ -470,65 +470,72 @@ ADDRESS_MAP_START(gsword_state_base::cpu1_map)
ADDRESS_MAP_END
-ADDRESS_MAP_START(gsword_state::cpu1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7e, 0x7f) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_0, write_0)
-ADDRESS_MAP_END
+void gsword_state::cpu1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7e, 0x7f).rw("taito8741", FUNC(taito8741_4pack_device::read_0), FUNC(taito8741_4pack_device::write_0));
+}
-ADDRESS_MAP_START(gsword_state::cpu2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("cpu2_ram")
- AM_RANGE(0x6000, 0x6000) AM_WRITE(sound_command_w)
-ADDRESS_MAP_END
+void gsword_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().share("cpu2_ram");
+ map(0x6000, 0x6000).w(this, FUNC(gsword_state::sound_command_w));
+}
-ADDRESS_MAP_START(gsword_state::cpu2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2)
- AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3)
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_1, write_1)
- AM_RANGE(0x60, 0x60) AM_READWRITE(fake_0_r, ay8910_control_port_0_w)
- AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x80, 0x80) AM_READWRITE(fake_1_r, ay8910_control_port_1_w)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
-
- AM_RANGE(0xe0, 0xe0) AM_READNOP /* ?? */
- AM_RANGE(0xa0, 0xa0) AM_WRITENOP /* ?? */
- AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* watchdog? */
-ADDRESS_MAP_END
+void gsword_state::cpu2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("taito8741", FUNC(taito8741_4pack_device::read_2), FUNC(taito8741_4pack_device::write_2));
+ map(0x20, 0x21).rw("taito8741", FUNC(taito8741_4pack_device::read_3), FUNC(taito8741_4pack_device::write_3));
+ map(0x40, 0x41).rw("taito8741", FUNC(taito8741_4pack_device::read_1), FUNC(taito8741_4pack_device::write_1));
+ map(0x60, 0x60).rw(this, FUNC(gsword_state::fake_0_r), FUNC(gsword_state::ay8910_control_port_0_w));
+ map(0x61, 0x61).rw(m_ay0, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).rw(this, FUNC(gsword_state::fake_1_r), FUNC(gsword_state::ay8910_control_port_1_w));
+ map(0x81, 0x81).rw(m_ay1, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+
+ map(0xe0, 0xe0).nopr(); /* ?? */
+ map(0xa0, 0xa0).nopw(); /* ?? */
+ map(0xe0, 0xe0).nopw(); /* watchdog? */
+}
-ADDRESS_MAP_START(gsword_state::cpu3_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_WRITE(adpcm_data_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void gsword_state::cpu3_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8000).w(this, FUNC(gsword_state::adpcm_data_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
-ADDRESS_MAP_START(josvolly_state::josvolly_cpu1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7e, 0x7f) AM_DEVREADWRITE("mcu1", upi41_cpu_device, upi41_master_r, upi41_master_w)
-ADDRESS_MAP_END
+void josvolly_state::josvolly_cpu1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7e, 0x7f).rw("mcu1", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+}
-ADDRESS_MAP_START(josvolly_state::josvolly_cpu2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("cpu2_ram")
+void josvolly_state::josvolly_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().share("cpu2_ram");
/* NEC D8255A with silkscreen removed and replaced with "AA 007" */
- AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE("aa_007", i8255_device, read, write)
+ map(0x8000, 0x8003).rw("aa_007", FUNC(i8255_device::read), FUNC(i8255_device::write));
// AM_RANGE(0x6000, 0x6000) AM_WRITE(adpcm_soundcommand_w)
- AM_RANGE(0xA000, 0xA001) AM_DEVREADWRITE("mcu2", upi41_cpu_device, upi41_master_r, upi41_master_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(josvolly_state::josvolly_cpu2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(fake_0_r, ay8910_control_port_0_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x40, 0x40) AM_READWRITE(fake_1_r, ay8910_control_port_1_w)
- AM_RANGE(0x41, 0x41) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
+ map(0xA000, 0xA001).rw("mcu2", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
+}
- AM_RANGE(0x81, 0x81) AM_WRITE(cpu2_nmi_enable_w);
- AM_RANGE(0xC1, 0xC1) AM_WRITE(cpu2_irq_clear_w);
-ADDRESS_MAP_END
+void josvolly_state::josvolly_cpu2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(josvolly_state::fake_0_r), FUNC(josvolly_state::ay8910_control_port_0_w));
+ map(0x01, 0x01).rw(m_ay0, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x40, 0x40).rw(this, FUNC(josvolly_state::fake_1_r), FUNC(josvolly_state::ay8910_control_port_1_w));
+ map(0x41, 0x41).rw(m_ay1, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+
+ map(0x81, 0x81).w(this, FUNC(josvolly_state::cpu2_nmi_enable_w));
+ map(0xC1, 0xC1).w(this, FUNC(josvolly_state::cpu2_irq_clear_w));
+}
static INPUT_PORTS_START( gsword )
diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp
index f9006f2a805..502b0c9d7ab 100644
--- a/src/mame/drivers/gticlub.cpp
+++ b/src/mame/drivers/gticlub.cpp
@@ -511,52 +511,55 @@ MACHINE_START_MEMBER(gticlub_state,gticlub)
m_sound_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gticlub_state::sound_irq), this));
}
-ADDRESS_MAP_START(gticlub_state::gticlub_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */
- AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(gticlub_k001604_reg_r, gticlub_k001604_reg_w)
- AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram")
- AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(gticlub_k001604_tile_r, gticlub_k001604_tile_w)
- AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(gticlub_k001604_char_r, gticlub_k001604_char_w)
- AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
- AM_RANGE(0x78040000, 0x7804000f) AM_DEVREADWRITE("k001006_1", k001006_device, read, write)
- AM_RANGE(0x78080000, 0x7808000f) AM_DEVREADWRITE("k001006_2", k001006_device, read, write)
- AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
- AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
- AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff)
- AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w)
- AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */
- AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gticlub_state::hangplt_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */
- AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(gticlub_k001604_reg_r, gticlub_k001604_reg_w)
- AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram")
- AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(gticlub_k001604_tile_r, gticlub_k001604_tile_w)
- AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(gticlub_k001604_char_r, gticlub_k001604_char_w)
- AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
- AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
- AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
- AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff)
- AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w)
- AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */
- AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
+void gticlub_state::gticlub_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram().share("work_ram"); /* Work RAM */
+ map(0x74000000, 0x740000ff).rw(this, FUNC(gticlub_state::gticlub_k001604_reg_r), FUNC(gticlub_state::gticlub_k001604_reg_w));
+ map(0x74010000, 0x7401ffff).ram().w(this, FUNC(gticlub_state::paletteram32_w)).share("paletteram");
+ map(0x74020000, 0x7403ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_tile_r), FUNC(gticlub_state::gticlub_k001604_tile_w));
+ map(0x74040000, 0x7407ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_char_r), FUNC(gticlub_state::gticlub_k001604_char_w));
+ map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
+ map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write));
+ map(0x78080000, 0x7808000f).rw(m_k001006_2, FUNC(k001006_device::read), FUNC(k001006_device::write));
+ map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
+ map(0x7e000000, 0x7e003fff).rw(this, FUNC(gticlub_state::sysreg_r), FUNC(gticlub_state::sysreg_w));
+ map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write));
+ map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w));
+ map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x7f000000, 0x7f3fffff).rom().region("user2", 0); /* Data ROM */
+ map(0x7f800000, 0x7f9fffff).rom().share("share2");
+ map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
+}
+
+void gticlub_state::hangplt_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram().share("work_ram"); /* Work RAM */
+ map(0x74000000, 0x740000ff).rw(this, FUNC(gticlub_state::gticlub_k001604_reg_r), FUNC(gticlub_state::gticlub_k001604_reg_w));
+ map(0x74010000, 0x7401ffff).ram().w(this, FUNC(gticlub_state::paletteram32_w)).share("paletteram");
+ map(0x74020000, 0x7403ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_tile_r), FUNC(gticlub_state::gticlub_k001604_tile_w));
+ map(0x74040000, 0x7407ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_char_r), FUNC(gticlub_state::gticlub_k001604_char_w));
+ map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
+ map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
+ map(0x7e000000, 0x7e003fff).rw(this, FUNC(gticlub_state::sysreg_r), FUNC(gticlub_state::sysreg_w));
+ map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write));
+ map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w));
+ map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x7f000000, 0x7f3fffff).rom().region("user2", 0); /* Data ROM */
+ map(0x7f800000, 0x7f9fffff).rom().share("share2");
+ map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
+}
/**********************************************************************/
-ADDRESS_MAP_START(gticlub_state::sound_memmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */
- AM_RANGE(0x500000, 0x500001) AM_WRITE(soundtimer_en_w) AM_READNOP
- AM_RANGE(0x600000, 0x600001) AM_WRITE(soundtimer_count_w) AM_READNOP
-ADDRESS_MAP_END
+void gticlub_state::sound_memmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x400000, 0x400fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */
+ map(0x500000, 0x500001).w(this, FUNC(gticlub_state::soundtimer_en_w)).nopr();
+ map(0x600000, 0x600001).w(this, FUNC(gticlub_state::soundtimer_count_w)).nopr();
+}
/*****************************************************************************/
@@ -580,34 +583,37 @@ WRITE32_MEMBER(gticlub_state::dsp_dataram1_w)
m_sharc_dataram_1[offset] = data;
}
-ADDRESS_MAP_START(gticlub_state::sharc_map)
- AM_RANGE(0x400000, 0x41ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
- AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
- AM_RANGE(0x600000, 0x6fffff) AM_DEVREADWRITE("k001005", k001005_device, read, write)
- AM_RANGE(0x700000, 0x7000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gticlub_state::hangplt_sharc0_map)
- AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
- AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
- AM_RANGE(0x1400000, 0x14fffff) AM_RAM
- AM_RANGE(0x2400000, 0x27fffff) AM_DEVREAD("konppc", konppc_device, nwk_voodoo_0_r) AM_DEVWRITE("voodoo0", voodoo_device, voodoo_w)
- AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
- AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("konppc", konppc_device, nwk_fifo_0_w)
- AM_RANGE(0x3500000, 0x3507fff) AM_DEVREADWRITE("konppc", konppc_device, K033906_0_r, K033906_0_w)
- AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gticlub_state::hangplt_sharc1_map)
- AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w)
- AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w)
- AM_RANGE(0x1400000, 0x14fffff) AM_RAM
- AM_RANGE(0x2400000, 0x27fffff) AM_DEVREAD("konppc", konppc_device, nwk_voodoo_1_r) AM_DEVWRITE("voodoo1", voodoo_device, voodoo_w)
- AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w)
- AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("konppc", konppc_device, nwk_fifo_1_w)
- AM_RANGE(0x3500000, 0x3507fff) AM_DEVREADWRITE("konppc", konppc_device, K033906_1_r, K033906_1_w)
- AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6")
-ADDRESS_MAP_END
+void gticlub_state::sharc_map(address_map &map)
+{
+ map(0x400000, 0x41ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
+ map(0x500000, 0x5fffff).rw(this, FUNC(gticlub_state::dsp_dataram0_r), FUNC(gticlub_state::dsp_dataram0_w));
+ map(0x600000, 0x6fffff).rw(m_k001005, FUNC(k001005_device::read), FUNC(k001005_device::write));
+ map(0x700000, 0x7000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
+}
+
+void gticlub_state::hangplt_sharc0_map(address_map &map)
+{
+ map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
+ map(0x0500000, 0x05fffff).rw(this, FUNC(gticlub_state::dsp_dataram0_r), FUNC(gticlub_state::dsp_dataram0_w));
+ map(0x1400000, 0x14fffff).ram();
+ map(0x2400000, 0x27fffff).r(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r)).w("voodoo0", FUNC(voodoo_device::voodoo_w));
+ map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
+ map(0x3401000, 0x34fffff).w(m_konppc, FUNC(konppc_device::nwk_fifo_0_w));
+ map(0x3500000, 0x3507fff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w));
+ map(0x3600000, 0x37fffff).bankr("bank5");
+}
+
+void gticlub_state::hangplt_sharc1_map(address_map &map)
+{
+ map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w));
+ map(0x0500000, 0x05fffff).rw(this, FUNC(gticlub_state::dsp_dataram1_r), FUNC(gticlub_state::dsp_dataram1_w));
+ map(0x1400000, 0x14fffff).ram();
+ map(0x2400000, 0x27fffff).r(m_konppc, FUNC(konppc_device::nwk_voodoo_1_r)).w("voodoo1", FUNC(voodoo_device::voodoo_w));
+ map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w));
+ map(0x3401000, 0x34fffff).w(m_konppc, FUNC(konppc_device::nwk_fifo_1_w));
+ map(0x3500000, 0x3507fff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w));
+ map(0x3600000, 0x37fffff).bankr("bank6");
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/gts1.cpp b/src/mame/drivers/gts1.cpp
index f2af3533546..0ac9be4d0ee 100644
--- a/src/mame/drivers/gts1.cpp
+++ b/src/mame/drivers/gts1.cpp
@@ -129,24 +129,27 @@ private:
uint16_t m_z30_out; //!< 4-to-16 decoder outputs
};
-ADDRESS_MAP_START(gts1_state::gts1_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gts1_state::gts1_data)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gts1_state::gts1_io)
- AM_RANGE(0x0000, 0x00ff) AM_READ ( gts1_io_r ) AM_WRITE( gts1_io_w ) // catch undecoded I/O accesss
-
- AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE ( "u4", ra17xx_device, io_r, io_w ) // (U4) solenoid
- AM_RANGE(0x0030, 0x003f) AM_DEVREADWRITE ( "u3", r10696_device, io_r, io_w ) // (U3) solenoid + dips
- AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE ( "u5", ra17xx_device, io_r, io_w ) // (U5) switch matrix
- AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE ( "u2", r10696_device, io_r, io_w ) // (U2) NVRAM io chip
- AM_RANGE(0x00d0, 0x00df) AM_DEVREADWRITE ( "u6", r10788_device, io_r, io_w ) // (U6) display chip
-ADDRESS_MAP_END
+void gts1_state::gts1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void gts1_state::gts1_data(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("nvram");
+}
+
+void gts1_state::gts1_io(address_map &map)
+{
+ map(0x0000, 0x00ff).r(this, FUNC(gts1_state::gts1_io_r)).w(this, FUNC(gts1_state::gts1_io_w)); // catch undecoded I/O accesss
+
+ map(0x0020, 0x002f).rw("u4", FUNC(ra17xx_device::io_r), FUNC(ra17xx_device::io_w)); // (U4) solenoid
+ map(0x0030, 0x003f).rw("u3", FUNC(r10696_device::io_r), FUNC(r10696_device::io_w)); // (U3) solenoid + dips
+ map(0x0040, 0x004f).rw("u5", FUNC(ra17xx_device::io_r), FUNC(ra17xx_device::io_w)); // (U5) switch matrix
+ map(0x0060, 0x006f).rw("u2", FUNC(r10696_device::io_r), FUNC(r10696_device::io_w)); // (U2) NVRAM io chip
+ map(0x00d0, 0x00df).rw("u6", FUNC(r10788_device::io_r), FUNC(r10788_device::io_w)); // (U6) display chip
+}
static INPUT_PORTS_START( gts1_dips )
PORT_START("DSW0")
diff --git a/src/mame/drivers/gts3.cpp b/src/mame/drivers/gts3.cpp
index e9f69e03ab1..1e7f25ca73a 100644
--- a/src/mame/drivers/gts3.cpp
+++ b/src/mame/drivers/gts3.cpp
@@ -71,13 +71,14 @@ private:
};
-ADDRESS_MAP_START(gts3_state::gts3_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x200f) AM_DEVREADWRITE("u4", via6522_device, read, write)
- AM_RANGE(0x2010, 0x201f) AM_DEVREADWRITE("u5", via6522_device, read, write)
- AM_RANGE(0x2020, 0x2023) AM_MIRROR(0x0c) AM_WRITE(segbank_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void gts3_state::gts3_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x200f).rw(m_u4, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x2010, 0x201f).rw(m_u5, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x2020, 0x2023).mirror(0x0c).w(this, FUNC(gts3_state::segbank_w));
+ map(0x4000, 0xffff).rom();
+}
static INPUT_PORTS_START( gts3 )
PORT_START("TTS")
diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp
index d882b2f0ef6..ddfb348e1a3 100644
--- a/src/mame/drivers/gts3a.cpp
+++ b/src/mame/drivers/gts3a.cpp
@@ -72,25 +72,27 @@ private:
};
-ADDRESS_MAP_START(gts3a_state::gts3a_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x200f) AM_DEVREADWRITE("u4", via6522_device, read, write)
- AM_RANGE(0x2010, 0x201f) AM_DEVREADWRITE("u5", via6522_device, read, write)
- AM_RANGE(0x2020, 0x2023) AM_MIRROR(0x0c) AM_WRITE(segbank_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gts3a_state::gts3a_dmd_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_DEVREAD("crtc", mc6845_device, status_r)
- AM_RANGE(0x2001, 0x2001) AM_DEVREAD("crtc", mc6845_device, register_r)
- AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2801, 0x2801) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x3000, 0x3000) AM_READ(dmd_r)
- AM_RANGE(0x3800, 0x3800) AM_WRITE(dmd_w)
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("dmdcpu", 0x78000)
-ADDRESS_MAP_END
+void gts3a_state::gts3a_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x200f).rw(m_u4, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x2010, 0x201f).rw(m_u5, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x2020, 0x2023).mirror(0x0c).w(this, FUNC(gts3a_state::segbank_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void gts3a_state::gts3a_dmd_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2000).r("crtc", FUNC(mc6845_device::status_r));
+ map(0x2001, 0x2001).r("crtc", FUNC(mc6845_device::register_r));
+ map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2801, 0x2801).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x3000, 0x3000).r(this, FUNC(gts3a_state::dmd_r));
+ map(0x3800, 0x3800).w(this, FUNC(gts3a_state::dmd_w));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom().region("dmdcpu", 0x78000);
+}
static INPUT_PORTS_START( gts3a )
PORT_START("TTS")
diff --git a/src/mame/drivers/gts80.cpp b/src/mame/drivers/gts80.cpp
index 8ba2a76543c..9b7f1a02f9c 100644
--- a/src/mame/drivers/gts80.cpp
+++ b/src/mame/drivers/gts80.cpp
@@ -64,17 +64,18 @@ private:
optional_device<gottlieb_sound_r1_device> m_r1_sound;
};
-ADDRESS_MAP_START(gts80_state::gts80_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x017f) AM_RAM
- AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write)
- AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write)
- AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write)
- AM_RANGE(0x1000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void gts80_state::gts80_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x017f).ram();
+ map(0x0200, 0x027f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0280, 0x02ff).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0300, 0x037f).rw("riot3", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x1000, 0x17ff).rom();
+ map(0x1800, 0x18ff).ram().share("nvram"); // 5101L-1 256x4
+ map(0x2000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rom();
+}
static INPUT_PORTS_START( gts80 )
PORT_START("DSW.0")
diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp
index 5220692f3f7..7e50249895a 100644
--- a/src/mame/drivers/gts80a.cpp
+++ b/src/mame/drivers/gts80a.cpp
@@ -54,17 +54,18 @@ private:
optional_device<gottlieb_sound_r1_device> m_r1_sound;
};
-ADDRESS_MAP_START(gts80a_state::gts80a_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x017f) AM_RAM
- AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write)
- AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write)
- AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write)
- AM_RANGE(0x1000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void gts80a_state::gts80a_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x017f).ram();
+ map(0x0200, 0x027f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0280, 0x02ff).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0300, 0x037f).rw("riot3", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x1000, 0x17ff).rom();
+ map(0x1800, 0x18ff).ram().share("nvram"); // 5101L-1 256x4
+ map(0x2000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rom();
+}
static INPUT_PORTS_START( gts80a )
PORT_START("DSW.0")
@@ -432,14 +433,16 @@ uint32_t caveman_state::screen_update_caveman(screen_device &screen, bitmap_ind1
}
-ADDRESS_MAP_START(caveman_state::video_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x5fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void caveman_state::video_map(address_map &map)
+{
+ map.global_mask(0xffff);
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x5fff).ram().share("vram");
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(caveman_state::video_io_map)
+void caveman_state::video_io_map(address_map &map)
+{
// AM_RANGE(0x000, 0x002) AM_READWRITE() // 8259 irq controller
// AM_RANGE(0x100, 0x102) AM_READWRITE() // HD46505
// AM_RANGE(0x200, 0x200) AM_READWRITE() // 8212 in, ?? out
@@ -448,7 +451,7 @@ ADDRESS_MAP_START(caveman_state::video_io_map)
// AM_RANGE(0x400, 0x400) AM_READ() // joystick inputs
// AM_RANGE(0x500, 0x506) AM_WRITE() // palette
-ADDRESS_MAP_END
+}
MACHINE_CONFIG_START(caveman_state::caveman)
gts80a_ss(config);
diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp
index 8895a6d28b8..eda547511c8 100644
--- a/src/mame/drivers/gts80b.cpp
+++ b/src/mame/drivers/gts80b.cpp
@@ -62,17 +62,18 @@ private:
optional_device<gottlieb_sound_r1_device> m_r1_sound;
};
-ADDRESS_MAP_START(gts80b_state::gts80b_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x017f) AM_RAM
- AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write)
- AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write)
- AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write)
- AM_RANGE(0x1000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void gts80b_state::gts80b_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x017f).ram();
+ map(0x0200, 0x027f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0280, 0x02ff).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0300, 0x037f).rw("riot3", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x1000, 0x17ff).rom();
+ map(0x1800, 0x18ff).ram().share("nvram"); // 5101L-1 256x4
+ map(0x2000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rom();
+}
static INPUT_PORTS_START( gts80b )
PORT_START("DSW.0")
diff --git a/src/mame/drivers/guab.cpp b/src/mame/drivers/guab.cpp
index 2f8c3c17811..a9581af713f 100644
--- a/src/mame/drivers/guab.cpp
+++ b/src/mame/drivers/guab.cpp
@@ -116,25 +116,26 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(guab_state::guab_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x0c0000, 0x0c0007) AM_DEVREADWRITE8("i8255_1", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0c0020, 0x0c0027) AM_DEVREADWRITE8("i8255_2", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0c0040, 0x0c0047) AM_DEVREADWRITE8("i8255_3", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0c0060, 0x0c0067) AM_DEVREADWRITE8("i8255_4", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0c0080, 0x0c0083) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff)
- AM_RANGE(0x0c00a0, 0x0c00a3) AM_DEVREADWRITE8("acia6850_2", acia6850_device, read, write, 0x00ff)
- AM_RANGE(0x0c00c0, 0x0c00cf) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0x00ff)
- AM_RANGE(0x0c00e0, 0x0c00e7) AM_DEVREADWRITE8("fdc", wd1773_device, read, write, 0x00ff)
- AM_RANGE(0x080000, 0x080fff) AM_RAM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
- AM_RANGE(0x800000, 0xb0ffff) AM_READWRITE(tms34061_r, tms34061_w)
- AM_RANGE(0xb10000, 0xb1ffff) AM_RAM
- AM_RANGE(0xb80000, 0xb8ffff) AM_RAM
- AM_RANGE(0xb90000, 0xb9ffff) AM_RAM
-ADDRESS_MAP_END
+void guab_state::guab_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x04ffff).rom().region("maincpu", 0x10000);
+ map(0x0c0000, 0x0c0007).rw("i8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0c0020, 0x0c0027).rw("i8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0c0040, 0x0c0047).rw("i8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0c0060, 0x0c0067).rw("i8255_4", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0c0080, 0x0c0083).rw("acia6850_1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x0c00a0, 0x0c00a3).rw("acia6850_2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x0c00c0, 0x0c00cf).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0x0c00e0, 0x0c00e7).rw(m_fdc, FUNC(wd1773_device::read), FUNC(wd1773_device::write)).umask16(0x00ff);
+ map(0x080000, 0x080fff).ram();
+ map(0x100001, 0x100001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w));
+ map(0x100003, 0x100003).w("ef9369", FUNC(ef9369_device::address_w));
+ map(0x800000, 0xb0ffff).rw(this, FUNC(guab_state::tms34061_r), FUNC(guab_state::tms34061_w));
+ map(0xb10000, 0xb1ffff).ram();
+ map(0xb80000, 0xb8ffff).ram();
+ map(0xb90000, 0xb9ffff).ram();
+}
//**************************************************************************
diff --git a/src/mame/drivers/gumbo.cpp b/src/mame/drivers/gumbo.cpp
index 83db81692d0..fceebd31a7c 100644
--- a/src/mame/drivers/gumbo.cpp
+++ b/src/mame/drivers/gumbo.cpp
@@ -52,40 +52,43 @@ PCB Layout
#include "speaker.h"
-ADDRESS_MAP_START(gumbo_state::gumbo_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram
- AM_RANGE(0x1b0000, 0x1b03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2")
- AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW")
- AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x1e0000, 0x1e0fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_SHARE("bg_videoram") // bg tilemap
- AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap
-ADDRESS_MAP_END
+void gumbo_state::gumbo_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x083fff).ram(); // main ram
+ map(0x1b0000, 0x1b03ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x1c0100, 0x1c0101).portr("P1_P2");
+ map(0x1c0200, 0x1c0201).portr("DSW");
+ map(0x1c0301, 0x1c0301).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1e0000, 0x1e0fff).ram().w(this, FUNC(gumbo_state::gumbo_bg_videoram_w)).share("bg_videoram"); // bg tilemap
+ map(0x1f0000, 0x1f3fff).ram().w(this, FUNC(gumbo_state::gumbo_fg_videoram_w)).share("fg_videoram"); // fg tilemap
+}
/* Miss Puzzle has a different memory map */
-ADDRESS_MAP_START(gumbo_state::mspuzzle_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM // main ram
- AM_RANGE(0x190000, 0x197fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap
- AM_RANGE(0x1a0000, 0x1a03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1b0100, 0x1b0101) AM_READ_PORT("P1_P2")
- AM_RANGE(0x1b0200, 0x1b0201) AM_READ_PORT("DSW")
- AM_RANGE(0x1b0300, 0x1b0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_SHARE("bg_videoram") // bg tilemap
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gumbo_state::dblpoint_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram
- AM_RANGE(0x1b0000, 0x1b03ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2")
- AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW")
- AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap
- AM_RANGE(0x1f0000, 0x1f0fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_SHARE("bg_videoram") // bg tilemap
-ADDRESS_MAP_END
+void gumbo_state::mspuzzle_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram(); // main ram
+ map(0x190000, 0x197fff).ram().w(this, FUNC(gumbo_state::gumbo_fg_videoram_w)).share("fg_videoram"); // fg tilemap
+ map(0x1a0000, 0x1a03ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x1b0100, 0x1b0101).portr("P1_P2");
+ map(0x1b0200, 0x1b0201).portr("DSW");
+ map(0x1b0301, 0x1b0301).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1c0000, 0x1c1fff).ram().w(this, FUNC(gumbo_state::gumbo_bg_videoram_w)).share("bg_videoram"); // bg tilemap
+}
+
+void gumbo_state::dblpoint_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).ram(); // main ram
+ map(0x1b0000, 0x1b03ff).w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x1c0100, 0x1c0101).portr("P1_P2");
+ map(0x1c0200, 0x1c0201).portr("DSW");
+ map(0x1c0301, 0x1c0301).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1e0000, 0x1e3fff).ram().w(this, FUNC(gumbo_state::gumbo_fg_videoram_w)).share("fg_videoram"); // fg tilemap
+ map(0x1f0000, 0x1f0fff).ram().w(this, FUNC(gumbo_state::gumbo_bg_videoram_w)).share("bg_videoram"); // bg tilemap
+}
static INPUT_PORTS_START( gumbo )
PORT_START("P1_P2")
diff --git a/src/mame/drivers/gunbustr.cpp b/src/mame/drivers/gunbustr.cpp
index 51b118ea9c9..c321d7a408a 100644
--- a/src/mame/drivers/gunbustr.cpp
+++ b/src/mame/drivers/gunbustr.cpp
@@ -115,19 +115,20 @@ WRITE32_MEMBER(gunbustr_state::gunbustr_gun_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(gunbustr_state::gunbustr_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") /* main CPUA ram */
- AM_RANGE(0x300000, 0x301fff) AM_RAM AM_SHARE("spriteram") /* Sprite ram */
- AM_RANGE(0x380000, 0x380003) AM_WRITE(motor_control_w) /* motor, lamps etc. */
- AM_RANGE(0x390000, 0x3907ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) /* Sound shared ram */
- AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff)
- AM_RANGE(0x500000, 0x500003) AM_READWRITE(gunbustr_gun_r, gunbustr_gun_w) /* gun coord read */
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w)
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0x900000, 0x901fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM /* network ram ?? */
-ADDRESS_MAP_END
+void gunbustr_state::gunbustr_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */
+ map(0x300000, 0x301fff).ram().share("spriteram"); /* Sprite ram */
+ map(0x380000, 0x380003).w(this, FUNC(gunbustr_state::motor_control_w)); /* motor, lamps etc. */
+ map(0x390000, 0x3907ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); /* Sound shared ram */
+ map(0x400000, 0x400007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+ map(0x500000, 0x500003).rw(this, FUNC(gunbustr_state::gunbustr_gun_r), FUNC(gunbustr_state::gunbustr_gun_w)); /* gun coord read */
+ map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w));
+ map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w));
+ map(0x900000, 0x901fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xc00000, 0xc03fff).ram(); /* network ram ?? */
+}
/***********************************************************
INPUT PORTS (dips in eprom)
diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp
index 62f83f3a063..f5db6a81522 100644
--- a/src/mame/drivers/gundealr.cpp
+++ b/src/mame/drivers/gundealr.cpp
@@ -84,38 +84,42 @@ WRITE8_MEMBER(gundealr_state::yamyam_bankswitch_w)
-ADDRESS_MAP_START(gundealr_state::base_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW0")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("IN0")
- AM_RANGE(0xc005, 0xc005) AM_READ_PORT("IN1")
- AM_RANGE(0xc006, 0xc006) AM_READ_PORT("IN2")
- AM_RANGE(0xc016, 0xc016) AM_WRITE(yamyam_bankswitch_w)
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(gundealr_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gundealr_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(gundealr_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("rambase")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gundealr_state::gundealr_main_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xc014, 0xc014) AM_WRITE(gundealr_flipscreen_w)
- AM_RANGE(0xc020, 0xc023) AM_WRITE(gundealr_fg_scroll_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gundealr_state::yamyam_main_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xc010, 0xc013) AM_WRITE(yamyam_fg_scroll_w)
- AM_RANGE(0xc014, 0xc014) AM_WRITE(yamyam_flipscreen_w)
- AM_RANGE(0xc015, 0xc015) AM_WRITENOP // Bit 7 = MCU reset?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gundealr_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void gundealr_state::base_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("DSW0");
+ map(0xc001, 0xc001).portr("DSW1");
+ map(0xc004, 0xc004).portr("IN0");
+ map(0xc005, 0xc005).portr("IN1");
+ map(0xc006, 0xc006).portr("IN2");
+ map(0xc016, 0xc016).w(this, FUNC(gundealr_state::yamyam_bankswitch_w));
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(gundealr_state::gundealr_paletteram_w)).share("paletteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(gundealr_state::gundealr_bg_videoram_w)).share("bg_videoram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(gundealr_state::gundealr_fg_videoram_w)).share("fg_videoram");
+ map(0xe000, 0xffff).ram().share("rambase");
+}
+
+void gundealr_state::gundealr_main_map(address_map &map)
+{
+ base_map(map);
+ map(0xc014, 0xc014).w(this, FUNC(gundealr_state::gundealr_flipscreen_w));
+ map(0xc020, 0xc023).w(this, FUNC(gundealr_state::gundealr_fg_scroll_w));
+}
+
+void gundealr_state::yamyam_main_map(address_map &map)
+{
+ base_map(map);
+ map(0xc010, 0xc013).w(this, FUNC(gundealr_state::yamyam_fg_scroll_w));
+ map(0xc014, 0xc014).w(this, FUNC(gundealr_state::yamyam_flipscreen_w));
+ map(0xc015, 0xc015).nopw(); // Bit 7 = MCU reset?
+}
+
+void gundealr_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
diff --git a/src/mame/drivers/gunpey.cpp b/src/mame/drivers/gunpey.cpp
index 6e87e1aa09f..3f2e115f5b6 100644
--- a/src/mame/drivers/gunpey.cpp
+++ b/src/mame/drivers/gunpey.cpp
@@ -1295,31 +1295,33 @@ WRITE16_MEMBER(gunpey_state::vregs_addr_w)
/***************************************************************************************/
-ADDRESS_MAP_START(gunpey_state::mem_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("wram")
+void gunpey_state::mem_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram().share("wram");
// AM_RANGE(0x50000, 0x500ff) AM_RAM
// AM_RANGE(0x50100, 0x502ff) AM_NOP
- AM_RANGE(0x80000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x80000, 0xfffff).rom();
+}
-ADDRESS_MAP_START(gunpey_state::io_map)
- AM_RANGE(0x7f40, 0x7f45) AM_READ8(inputs_r,0xffff)
+void gunpey_state::io_map(address_map &map)
+{
+ map(0x7f40, 0x7f45).r(this, FUNC(gunpey_state::inputs_r));
- AM_RANGE(0x7f48, 0x7f49) AM_WRITE8(output_w,0x00ff)
- AM_RANGE(0x7f80, 0x7f81) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff)
+ map(0x7f48, 0x7f48).w(this, FUNC(gunpey_state::output_w));
+ map(0x7f80, 0x7f81).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
- AM_RANGE(0x7f88, 0x7f89) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x7f88, 0x7f88).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8(status_r, status_w, 0xffff )
- AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8(blitter_w, 0xffff )
- AM_RANGE(0x7fe0, 0x7fe5) AM_WRITE8(blitter_upper_w, 0xffff )
- AM_RANGE(0x7ff0, 0x7ff5) AM_WRITE8(blitter_upper2_w, 0xffff )
+ map(0x7fc8, 0x7fc9).rw(this, FUNC(gunpey_state::status_r), FUNC(gunpey_state::status_w));
+ map(0x7fd0, 0x7fdf).w(this, FUNC(gunpey_state::blitter_w));
+ map(0x7fe0, 0x7fe5).w(this, FUNC(gunpey_state::blitter_upper_w));
+ map(0x7ff0, 0x7ff5).w(this, FUNC(gunpey_state::blitter_upper2_w));
//AM_RANGE(0x7FF0, 0x7FF1) AM_RAM
- AM_RANGE(0x7fec, 0x7fed) AM_WRITE(vregs_addr_w)
- AM_RANGE(0x7fee, 0x7fef) AM_WRITE(vram_bank_w)
+ map(0x7fec, 0x7fed).w(this, FUNC(gunpey_state::vregs_addr_w));
+ map(0x7fee, 0x7fef).w(this, FUNC(gunpey_state::vram_bank_w));
-ADDRESS_MAP_END
+}
/***************************************************************************************/
diff --git a/src/mame/drivers/gunsmoke.cpp b/src/mame/drivers/gunsmoke.cpp
index 5978615f642..ea5f693de11 100644
--- a/src/mame/drivers/gunsmoke.cpp
+++ b/src/mame/drivers/gunsmoke.cpp
@@ -105,34 +105,36 @@ READ8_MEMBER(gunsmoke_state::gunsmoke_protection_r)
/* Memory Maps */
-ADDRESS_MAP_START(gunsmoke_state::gunsmoke_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc4c9, 0xc4cb) AM_READ(gunsmoke_protection_r)
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(gunsmoke_c804_w) // ROM bank switch, screen flip
- AM_RANGE(0xc806, 0xc806) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(gunsmoke_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(gunsmoke_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xd801) AM_RAM AM_SHARE("scrollx")
- AM_RANGE(0xd802, 0xd802) AM_RAM AM_SHARE("scrolly")
- AM_RANGE(0xd806, 0xd806) AM_WRITE(gunsmoke_d806_w) // sprites and bg enable
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gunsmoke_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_device, write)
-ADDRESS_MAP_END
+void gunsmoke_state::gunsmoke_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc4c9, 0xc4cb).r(this, FUNC(gunsmoke_state::gunsmoke_protection_r));
+ map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc804, 0xc804).w(this, FUNC(gunsmoke_state::gunsmoke_c804_w)); // ROM bank switch, screen flip
+ map(0xc806, 0xc806).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(gunsmoke_state::gunsmoke_videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(gunsmoke_state::gunsmoke_colorram_w)).share("colorram");
+ map(0xd800, 0xd801).ram().share("scrollx");
+ map(0xd802, 0xd802).ram().share("scrolly");
+ map(0xd806, 0xd806).w(this, FUNC(gunsmoke_state::gunsmoke_d806_w)); // sprites and bg enable
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("spriteram");
+}
+
+void gunsmoke_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write));
+ map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/gyruss.cpp b/src/mame/drivers/gyruss.cpp
index e79bc944c18..8f8ab8f3c55 100644
--- a/src/mame/drivers/gyruss.cpp
+++ b/src/mame/drivers/gyruss.cpp
@@ -186,65 +186,71 @@ WRITE_LINE_MEMBER(gyruss_state::coin_counter_2_w)
machine().bookkeeping().coin_counter_w(1, state);
}
-ADDRESS_MAP_START(gyruss_state::main_cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW2") AM_WRITENOP /* watchdog reset */
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("SYSTEM") AM_WRITE(gyruss_sh_irqtrigger_w)
- AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("P1")
- AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2")
- AM_RANGE(0xc0e0, 0xc0e0) AM_READ_PORT("DSW1")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("DSW3") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc180, 0xc187) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gyruss_state::main_cpu2_map)
- AM_RANGE(0x0000, 0x0000) AM_READ(gyruss_scanline_r)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(slave_irq_mask_w) AM_READNOP
- AM_RANGE(0x4000, 0x403f) AM_RAM
- AM_RANGE(0x4040, 0x40ff) AM_RAM_WRITE(gyruss_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x4100, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gyruss_state::audio_cpu1_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gyruss_state::audio_cpu1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x05, 0x05) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("ay3", ay8910_device, address_w)
- AM_RANGE(0x09, 0x09) AM_DEVREAD("ay3", ay8910_device, data_r)
- AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay3", ay8910_device, data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("ay4", ay8910_device, address_w)
- AM_RANGE(0x0d, 0x0d) AM_DEVREAD("ay4", ay8910_device, data_r)
- AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("ay4", ay8910_device, data_w)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay5", ay8910_device, address_w)
- AM_RANGE(0x11, 0x11) AM_DEVREAD("ay5", ay8910_device, data_r)
- AM_RANGE(0x12, 0x12) AM_DEVWRITE("ay5", ay8910_device, data_w)
- AM_RANGE(0x14, 0x14) AM_WRITE(gyruss_i8039_irq_w)
- AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gyruss_state::audio_cpu2_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gyruss_state::audio_cpu2_io_map)
- AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void gyruss_state::main_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().share("colorram");
+ map(0x8400, 0x87ff).ram().share("videoram");
+ map(0x9000, 0x9fff).ram();
+ map(0xa000, 0xa7ff).ram().share("share1");
+ map(0xc000, 0xc000).portr("DSW2").nopw(); /* watchdog reset */
+ map(0xc080, 0xc080).portr("SYSTEM").w(this, FUNC(gyruss_state::gyruss_sh_irqtrigger_w));
+ map(0xc0a0, 0xc0a0).portr("P1");
+ map(0xc0c0, 0xc0c0).portr("P2");
+ map(0xc0e0, 0xc0e0).portr("DSW1");
+ map(0xc100, 0xc100).portr("DSW3").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc180, 0xc187).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void gyruss_state::main_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x0000).r(this, FUNC(gyruss_state::gyruss_scanline_r));
+ map(0x2000, 0x2000).w(this, FUNC(gyruss_state::slave_irq_mask_w)).nopr();
+ map(0x4000, 0x403f).ram();
+ map(0x4040, 0x40ff).ram().w(this, FUNC(gyruss_state::gyruss_spriteram_w)).share("spriteram");
+ map(0x4100, 0x47ff).ram();
+ map(0x6000, 0x67ff).ram().share("share1");
+ map(0xe000, 0xffff).rom();
+}
+
+void gyruss_state::audio_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x63ff).ram();
+ map(0x8000, 0x8000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
+
+void gyruss_state::audio_cpu1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x02, 0x02).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x04, 0x04).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x05, 0x05).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x06, 0x06).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x08, 0x08).w("ay3", FUNC(ay8910_device::address_w));
+ map(0x09, 0x09).r("ay3", FUNC(ay8910_device::data_r));
+ map(0x0a, 0x0a).w("ay3", FUNC(ay8910_device::data_w));
+ map(0x0c, 0x0c).w("ay4", FUNC(ay8910_device::address_w));
+ map(0x0d, 0x0d).r("ay4", FUNC(ay8910_device::data_r));
+ map(0x0e, 0x0e).w("ay4", FUNC(ay8910_device::data_w));
+ map(0x10, 0x10).w("ay5", FUNC(ay8910_device::address_w));
+ map(0x11, 0x11).r("ay5", FUNC(ay8910_device::data_r));
+ map(0x12, 0x12).w("ay5", FUNC(ay8910_device::data_w));
+ map(0x14, 0x14).w(this, FUNC(gyruss_state::gyruss_i8039_irq_w));
+ map(0x18, 0x18).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
+
+void gyruss_state::audio_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void gyruss_state::audio_cpu2_io_map(address_map &map)
+{
+ map(0x00, 0xff).r("soundlatch2", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( gyruss )
diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp
index 84127eae727..d4287b6889d 100644
--- a/src/mame/drivers/h19.cpp
+++ b/src/mame/drivers/h19.cpp
@@ -156,26 +156,28 @@ void h19_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
-ADDRESS_MAP_START(h19_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_ROM
- AM_RANGE(0x4000, 0x4100) AM_MIRROR(0x3e00) AM_RAM
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(h19_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x1f) AM_READ_PORT("SW401")
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x1f) AM_READ_PORT("SW402")
- AM_RANGE(0x40, 0x47) AM_MIRROR(0x18) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w )
- AM_RANGE(0x60, 0x60) AM_MIRROR(0x1E) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x61, 0x61) AM_MIRROR(0x1E) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_READ(kbd_key_r)
- AM_RANGE(0xA0, 0xA0) AM_MIRROR(0x1f) AM_READ(kbd_flags_r)
- AM_RANGE(0xC0, 0xC0) AM_MIRROR(0x1f) AM_WRITE(h19_keyclick_w)
- AM_RANGE(0xE0, 0xE0) AM_MIRROR(0x1f) AM_WRITE(h19_bell_w)
-ADDRESS_MAP_END
+void h19_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).mirror(0x2000).rom();
+ map(0x4000, 0x4100).mirror(0x3e00).ram();
+ map(0xc000, 0xc7ff).mirror(0x3800).ram().share("videoram");
+}
+
+void h19_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x1f).portr("SW401");
+ map(0x20, 0x20).mirror(0x1f).portr("SW402");
+ map(0x40, 0x47).mirror(0x18).rw(m_ace, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
+ map(0x60, 0x60).mirror(0x1E).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x61, 0x61).mirror(0x1E).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x80, 0x80).mirror(0x1f).r(this, FUNC(h19_state::kbd_key_r));
+ map(0xA0, 0xA0).mirror(0x1f).r(this, FUNC(h19_state::kbd_flags_r));
+ map(0xC0, 0xC0).mirror(0x1f).w(this, FUNC(h19_state::h19_keyclick_w));
+ map(0xE0, 0xE0).mirror(0x1f).w(this, FUNC(h19_state::h19_bell_w));
+}
/* Input ports */
static INPUT_PORTS_START( h19 )
diff --git a/src/mame/drivers/h8.cpp b/src/mame/drivers/h8.cpp
index e89cdeb7988..fcd13e92d1f 100644
--- a/src/mame/drivers/h8.cpp
+++ b/src/mame/drivers/h8.cpp
@@ -177,25 +177,27 @@ WRITE8_MEMBER( h8_state::portf1_w )
if (m_digit) output().set_digit_value(m_digit, m_segment);
}
-ADDRESS_MAP_START(h8_state::h8_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM // main rom
- AM_RANGE(0x1400, 0x17ff) AM_RAM // fdc ram
- AM_RANGE(0x1800, 0x1fff) AM_ROM // fdc rom
- AM_RANGE(0x2000, 0x9fff) AM_RAM // main ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(h8_state::h8_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_READWRITE(portf0_r,portf0_w)
- AM_RANGE(0xf1, 0xf1) AM_WRITE(portf1_w)
- AM_RANGE(0xf8, 0xf8) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0xf9, 0xf9) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
+void h8_state::h8_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom(); // main rom
+ map(0x1400, 0x17ff).ram(); // fdc ram
+ map(0x1800, 0x1fff).rom(); // fdc rom
+ map(0x2000, 0x9fff).ram(); // main ram
+}
+
+void h8_state::h8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).rw(this, FUNC(h8_state::portf0_r), FUNC(h8_state::portf0_w));
+ map(0xf1, 0xf1).w(this, FUNC(h8_state::portf1_w));
+ map(0xf8, 0xf8).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf9, 0xf9).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// optional connection to a serial terminal @ 600 baud
//AM_RANGE(0xfa, 0xfa) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
//AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( h8 )
diff --git a/src/mame/drivers/h89.cpp b/src/mame/drivers/h89.cpp
index 4cf13cc9353..92d1ca415c6 100644
--- a/src/mame/drivers/h89.cpp
+++ b/src/mame/drivers/h89.cpp
@@ -49,22 +49,24 @@ public:
};
-ADDRESS_MAP_START(h89_state::h89_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void h89_state::h89_mem(address_map &map)
+{
+ map.unmap_value_high();
// Bank 0 - At startup has the format defined below, but software could swap it for RAM (Later H-89s and
// Early ones with the Org-0 modification),
// TODO - define the RAM so it can swap in/out under program control.
- AM_RANGE(0x0000, 0x0fff) AM_ROM // Page 0-4 - System ROM (at most 4k(MTR-90), early versions(MTR-88, MTR-89) only had 2k)
- AM_RANGE(0x1000, 0x13ff) AM_RAM // Page 5 - Floppy Disk RAM (Write-protectable)
- AM_RANGE(0x1400, 0x1fff) AM_ROM // Page 6-7 - Floppy Disk ROM
+ map(0x0000, 0x0fff).rom(); // Page 0-4 - System ROM (at most 4k(MTR-90), early versions(MTR-88, MTR-89) only had 2k)
+ map(0x1000, 0x13ff).ram(); // Page 5 - Floppy Disk RAM (Write-protectable)
+ map(0x1400, 0x1fff).rom(); // Page 6-7 - Floppy Disk ROM
// Banks 1-7
- AM_RANGE(0x2000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x2000, 0xffff).ram();
+}
-ADDRESS_MAP_START(h89_state::h89_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void h89_state::h89_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// AM_RANGE(0x78, 0x7b) expansion 1 // Options - Cassette I/O (only uses 0x78 - 0x79) Requires MTR-88 ROM
// - H37 5-1/4" Soft-sectored Controller MTR-90 ROM
// - H47 Dual 8" Drives - Requires MTR-89 or MTR-90 ROM
@@ -76,15 +78,15 @@ ADDRESS_MAP_START(h89_state::h89_io)
// AM_RANGE(0xd0, 0xd7) 8250 UART DCE
// AM_RANGE(0xd8, 0xdf) 8250 UART DTE - MODEM
// AM_RANGE(0xe0, 0xe7) 8250 UART DCE - LP
- AM_RANGE(0xe8, 0xef) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w) // 8250 UART console - this
+ map(0xe8, 0xef).rw("ins8250", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); // 8250 UART console - this
// connects internally to a Terminal board
// that is also used in the H19. Ideally,
// the H19 code could be connected and ran
// as a separate thread.
// AM_RANGE(0xf0, 0xf1) // ports defined on the H8 - on the H89, access to these addresses causes a NMI
- AM_RANGE(0xf2, 0xf2) AM_WRITE(port_f2_w) AM_READ_PORT("SW501")
+ map(0xf2, 0xf2).w(this, FUNC(h89_state::port_f2_w)).portr("SW501");
// AM_RANGE(0xf3, 0xf3) // ports defined on the H8 - on the H89, access to these addresses causes a NMI
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( h89 )
diff --git a/src/mame/drivers/halleys.cpp b/src/mame/drivers/halleys.cpp
index d6517e6ac7d..48e0d38ba35 100644
--- a/src/mame/drivers/halleys.cpp
+++ b/src/mame/drivers/halleys.cpp
@@ -1633,45 +1633,47 @@ READ8_MEMBER(halleys_state::io_mirror_r)
//**************************************************************************
// Memory Maps
-ADDRESS_MAP_START(halleys_state::halleys_map)
- AM_RANGE(0x0000, 0x0fff) AM_READWRITE(blitter_r, blitter_w) AM_SHARE("blitter_ram")
- AM_RANGE(0x1f00, 0x1fff) AM_WRITE(bgtile_w) // background tiles?(Ben Bero Beh only)
- AM_RANGE(0x1000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xfeff) AM_RAM // work ram
-
- AM_RANGE(0xff00, 0xffbf) AM_RAM AM_SHARE("io_ram") // I/O write fall-through
-
- AM_RANGE(0xff66, 0xff66) AM_READ(collision_id_r) // HACK: collision detection bypass(Halley's Comet only)
- AM_RANGE(0xff71, 0xff71) AM_READ(blitter_status_r)
- AM_RANGE(0xff80, 0xff83) AM_READ(io_mirror_r)
- AM_RANGE(0xff8a, 0xff8a) AM_WRITE(soundcommand_w)
- AM_RANGE(0xff90, 0xff90) AM_READ_PORT("IN0") // coin/start
- AM_RANGE(0xff91, 0xff91) AM_READ_PORT("IN1") // player 1
- AM_RANGE(0xff92, 0xff92) AM_READ_PORT("IN2") // player 2
- AM_RANGE(0xff93, 0xff93) AM_READ_PORT("IN3") // unused?
- AM_RANGE(0xff94, 0xff94) AM_READ(coin_lockout_r)
- AM_RANGE(0xff95, 0xff95) AM_READ_PORT("DSW1") // dipswitch 4
- AM_RANGE(0xff96, 0xff96) AM_READ_PORT("DSW2") // dipswitch 3
- AM_RANGE(0xff97, 0xff97) AM_READ_PORT("DSW3") // dipswitch 2
- AM_RANGE(0xff9c, 0xff9c) AM_WRITE(firq_ack_w)
-
- AM_RANGE(0xffc0, 0xffdf) AM_READWRITE(paletteram_r, paletteram_w)
- AM_RANGE(0xffe0, 0xffff) AM_READ(vector_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(halleys_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4801) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x4801, 0x4801) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x4802, 0x4803) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_device, data_r)
- AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w)
- AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_device, data_r)
- AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM
-ADDRESS_MAP_END
+void halleys_state::halleys_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(this, FUNC(halleys_state::blitter_r), FUNC(halleys_state::blitter_w)).share("blitter_ram");
+ map(0x1f00, 0x1fff).w(this, FUNC(halleys_state::bgtile_w)); // background tiles?(Ben Bero Beh only)
+ map(0x1000, 0xefff).rom();
+ map(0xf000, 0xfeff).ram(); // work ram
+
+ map(0xff00, 0xffbf).ram().share("io_ram"); // I/O write fall-through
+
+ map(0xff66, 0xff66).r(this, FUNC(halleys_state::collision_id_r)); // HACK: collision detection bypass(Halley's Comet only)
+ map(0xff71, 0xff71).r(this, FUNC(halleys_state::blitter_status_r));
+ map(0xff80, 0xff83).r(this, FUNC(halleys_state::io_mirror_r));
+ map(0xff8a, 0xff8a).w(this, FUNC(halleys_state::soundcommand_w));
+ map(0xff90, 0xff90).portr("IN0"); // coin/start
+ map(0xff91, 0xff91).portr("IN1"); // player 1
+ map(0xff92, 0xff92).portr("IN2"); // player 2
+ map(0xff93, 0xff93).portr("IN3"); // unused?
+ map(0xff94, 0xff94).r(this, FUNC(halleys_state::coin_lockout_r));
+ map(0xff95, 0xff95).portr("DSW1"); // dipswitch 4
+ map(0xff96, 0xff96).portr("DSW2"); // dipswitch 3
+ map(0xff97, 0xff97).portr("DSW3"); // dipswitch 2
+ map(0xff9c, 0xff9c).w(this, FUNC(halleys_state::firq_ack_w));
+
+ map(0xffc0, 0xffdf).rw(this, FUNC(halleys_state::paletteram_r), FUNC(halleys_state::paletteram_w));
+ map(0xffe0, 0xffff).r(this, FUNC(halleys_state::vector_r));
+}
+
+
+void halleys_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4801).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x4801, 0x4801).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x4802, 0x4803).w("ay3", FUNC(ay8910_device::address_data_w));
+ map(0x4803, 0x4803).r("ay3", FUNC(ay8910_device::data_r));
+ map(0x4804, 0x4805).w("ay4", FUNC(ay8910_device::address_data_w));
+ map(0x4805, 0x4805).r("ay4", FUNC(ay8910_device::data_r));
+ map(0x5000, 0x5000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xefff).rom(); // space for diagnostic ROM
+}
//**************************************************************************
diff --git a/src/mame/drivers/hanaawas.cpp b/src/mame/drivers/hanaawas.cpp
index 7453169a0f6..ef987457a86 100644
--- a/src/mame/drivers/hanaawas.cpp
+++ b/src/mame/drivers/hanaawas.cpp
@@ -99,25 +99,27 @@ WRITE8_MEMBER(hanaawas_state::key_matrix_status_w)
m_coin_settings = data & 0xf;
}
-ADDRESS_MAP_START(hanaawas_state::hanaawas_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(hanaawas_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(hanaawas_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x8bff) AM_RAM
- AM_RANGE(0xb000, 0xb000) AM_WRITE(irq_ack_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(hanaawas_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(hanaawas_input_port_0_r, hanaawas_inputs_mux_w)
- AM_RANGE(0x01, 0x01) AM_READNOP AM_WRITE(key_matrix_status_w) /* r bit 1: status ready, presumably of the input mux device / w = configure device? */
- AM_RANGE(0x10, 0x10) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xc0, 0xc0) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void hanaawas_state::hanaawas_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(hanaawas_state::hanaawas_videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(hanaawas_state::hanaawas_colorram_w)).share("colorram");
+ map(0x8800, 0x8bff).ram();
+ map(0xb000, 0xb000).w(this, FUNC(hanaawas_state::irq_ack_w));
+}
+
+
+void hanaawas_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(hanaawas_state::hanaawas_input_port_0_r), FUNC(hanaawas_state::hanaawas_inputs_mux_w));
+ map(0x01, 0x01).nopr().w(this, FUNC(hanaawas_state::key_matrix_status_w)); /* r bit 1: status ready, presumably of the input mux device / w = configure device? */
+ map(0x10, 0x10).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x10, 0x11).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xc0, 0xc0).nopw(); // watchdog
+}
static INPUT_PORTS_START( hanaawas )
PORT_START("COINS")
diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp
index 423f425ed2f..312345211b9 100644
--- a/src/mame/drivers/hankin.cpp
+++ b/src/mame/drivers/hankin.cpp
@@ -101,21 +101,23 @@ private:
};
-ADDRESS_MAP_START(hankin_state::hankin_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("ic11", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("ic10", pia6821_device, read, write)
- AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram") // 5101L 4-bit static ram
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hankin_state::hankin_sub_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("ic2", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x17ff) AM_ROM AM_MIRROR(0x800) AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
+void hankin_state::hankin_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0088, 0x008b).rw(m_ic11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_ic10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0200, 0x02ff).ram().share("nvram"); // 5101L 4-bit static ram
+ map(0x1000, 0x1fff).rom().region("maincpu", 0);
+}
+
+void hankin_state::hankin_sub_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0080, 0x0083).rw(m_ic2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x17ff).rom().mirror(0x800).region("audiocpu", 0);
+}
static INPUT_PORTS_START( hankin )
PORT_START("TEST")
diff --git a/src/mame/drivers/hapyfish.cpp b/src/mame/drivers/hapyfish.cpp
index 8f86c3a7c5a..4823b5349b0 100644
--- a/src/mame/drivers/hapyfish.cpp
+++ b/src/mame/drivers/hapyfish.cpp
@@ -37,9 +37,10 @@ public:
void hapyfish_map(address_map &map);
};
-ADDRESS_MAP_START(hapyfish_state::hapyfish_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM
-ADDRESS_MAP_END
+void hapyfish_state::hapyfish_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom();
+}
static INPUT_PORTS_START( hapyfish )
INPUT_PORTS_END
diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp
index 7bb67bd0893..f5137f03232 100644
--- a/src/mame/drivers/harddriv.cpp
+++ b/src/mame/drivers/harddriv.cpp
@@ -539,45 +539,48 @@ public:
};
-ADDRESS_MAP_START(harddriv_state::driver_68k_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x600000, 0x603fff) AM_READ(hd68k_port0_r)
- AM_RANGE(0x604000, 0x607fff) AM_WRITE(hd68k_nwr_w)
- AM_RANGE(0x608000, 0x60bfff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x60c000, 0x60ffff) AM_WRITE(hd68k_irq_ack_w)
- AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
- AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
- AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
- AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
- AM_RANGE(0xc04000, 0xc07fff) AM_READWRITE(hd68k_msp_io_r, hd68k_msp_io_w)
- AM_RANGE(0xff0000, 0xff001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff00)
- AM_RANGE(0xff4000, 0xff4fff) AM_READWRITE(hd68k_zram_r, hd68k_zram_w)
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(harddriv_state::driver_gsp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0000200f) AM_NOP /* hit during self-test */
- AM_RANGE(0x02000000, 0x0207ffff) AM_READWRITE(hdgsp_vram_2bpp_r, hdgsp_vram_1bpp_w)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("gsp", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xf4000000, 0xf40000ff) AM_READWRITE(hdgsp_control_lo_r, hdgsp_control_lo_w) AM_SHARE("gsp_control_lo")
- AM_RANGE(0xf4800000, 0xf48000ff) AM_READWRITE(hdgsp_control_hi_r, hdgsp_control_hi_w) AM_SHARE("gsp_control_hi")
- AM_RANGE(0xf5000000, 0xf5000fff) AM_READWRITE(hdgsp_paletteram_lo_r, hdgsp_paletteram_lo_w) AM_SHARE("gsp_palram_lo")
- AM_RANGE(0xf5800000, 0xf5800fff) AM_READWRITE(hdgsp_paletteram_hi_r, hdgsp_paletteram_hi_w) AM_SHARE("gsp_palram_hi")
- AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(harddriv_state::driver_msp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("msp_ram")
- AM_RANGE(0x00700000, 0x007fffff) AM_RAM AM_SHARE("msp_ram")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("msp", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xfff00000, 0xffffffff) AM_RAM AM_SHARE("msp_ram")
-ADDRESS_MAP_END
+void harddriv_state::driver_68k_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).rom();
+ map(0x600000, 0x603fff).r(this, FUNC(harddriv_state::hd68k_port0_r));
+ map(0x604000, 0x607fff).w(this, FUNC(harddriv_state::hd68k_nwr_w));
+ map(0x608000, 0x60bfff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x60c000, 0x60ffff).w(this, FUNC(harddriv_state::hd68k_irq_ack_w));
+ map(0xa00000, 0xa7ffff).w(this, FUNC(harddriv_state::hd68k_wr0_write));
+ map(0xa80000, 0xafffff).r(this, FUNC(harddriv_state::hd68k_a80000_r)).w(this, FUNC(harddriv_state::hd68k_wr1_write));
+ map(0xb00000, 0xb7ffff).rw(this, FUNC(harddriv_state::hd68k_adc8_r), FUNC(harddriv_state::hd68k_wr2_write));
+ map(0xb80000, 0xbfffff).rw(this, FUNC(harddriv_state::hd68k_adc12_r), FUNC(harddriv_state::hd68k_adc_control_w));
+ map(0xc00000, 0xc03fff).rw(this, FUNC(harddriv_state::hd68k_gsp_io_r), FUNC(harddriv_state::hd68k_gsp_io_w));
+ map(0xc04000, 0xc07fff).rw(this, FUNC(harddriv_state::hd68k_msp_io_r), FUNC(harddriv_state::hd68k_msp_io_w));
+ map(0xff0000, 0xff001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00);
+ map(0xff4000, 0xff4fff).rw(this, FUNC(harddriv_state::hd68k_zram_r), FUNC(harddriv_state::hd68k_zram_w));
+ map(0xff8000, 0xffffff).ram();
+}
+
+
+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(this, 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(this, FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo");
+ map(0xf4800000, 0xf48000ff).rw(this, FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi");
+ map(0xf5000000, 0xf5000fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo");
+ map(0xf5800000, 0xf5800fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_hi_r), FUNC(harddriv_state::hdgsp_paletteram_hi_w)).share("gsp_palram_hi");
+ map(0xff800000, 0xffffffff).ram().share("gsp_vram");
+}
+
+
+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");
+}
@@ -587,35 +590,37 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(harddriv_state::multisync_68k_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x604000, 0x607fff) AM_READWRITE(hd68k_sound_reset_r, hd68k_nwr_w)
- AM_RANGE(0x608000, 0x60bfff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
- AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
- AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
- AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
- AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
- AM_RANGE(0xc04000, 0xc07fff) AM_READWRITE(hd68k_msp_io_r, hd68k_msp_io_w)
- AM_RANGE(0xff0000, 0xff001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff00)
- AM_RANGE(0xff4000, 0xff4fff) AM_READWRITE(hd68k_zram_r, hd68k_zram_w)
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(harddriv_state::multisync_gsp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0000200f) AM_NOP /* hit during self-test */
- AM_RANGE(0x02000000, 0x020fffff) AM_READWRITE(hdgsp_vram_2bpp_r, hdgsp_vram_2bpp_w)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREAD("gsp", tms34010_device, io_register_r) AM_WRITE(hdgsp_io_w)
- AM_RANGE(0xf4000000, 0xf40000ff) AM_READWRITE(hdgsp_control_lo_r, hdgsp_control_lo_w) AM_SHARE("gsp_control_lo")
- AM_RANGE(0xf4800000, 0xf48000ff) AM_READWRITE(hdgsp_control_hi_r, hdgsp_control_hi_w) AM_SHARE("gsp_control_hi")
- AM_RANGE(0xf5000000, 0xf5000fff) AM_READWRITE(hdgsp_paletteram_lo_r, hdgsp_paletteram_lo_w) AM_SHARE("gsp_palram_lo")
- AM_RANGE(0xf5800000, 0xf5800fff) AM_READWRITE(hdgsp_paletteram_hi_r, hdgsp_paletteram_hi_w) AM_SHARE("gsp_palram_hi")
- AM_RANGE(0xff800000, 0xffbfffff) AM_MIRROR(0x0400000) AM_RAM AM_SHARE("gsp_vram")
-ADDRESS_MAP_END
+void harddriv_state::multisync_68k_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).rom();
+ map(0x604000, 0x607fff).rw(this, FUNC(harddriv_state::hd68k_sound_reset_r), FUNC(harddriv_state::hd68k_nwr_w));
+ map(0x608000, 0x60bfff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x60c000, 0x60ffff).rw(this, FUNC(harddriv_state::hd68k_port0_r), FUNC(harddriv_state::hd68k_irq_ack_w));
+ map(0xa00000, 0xa7ffff).w(this, FUNC(harddriv_state::hd68k_wr0_write));
+ map(0xa80000, 0xafffff).r(this, FUNC(harddriv_state::hd68k_a80000_r)).w(this, FUNC(harddriv_state::hd68k_wr1_write));
+ map(0xb00000, 0xb7ffff).rw(this, FUNC(harddriv_state::hd68k_adc8_r), FUNC(harddriv_state::hd68k_wr2_write));
+ map(0xb80000, 0xbfffff).rw(this, FUNC(harddriv_state::hd68k_adc12_r), FUNC(harddriv_state::hd68k_adc_control_w));
+ map(0xc00000, 0xc03fff).rw(this, FUNC(harddriv_state::hd68k_gsp_io_r), FUNC(harddriv_state::hd68k_gsp_io_w));
+ map(0xc04000, 0xc07fff).rw(this, FUNC(harddriv_state::hd68k_msp_io_r), FUNC(harddriv_state::hd68k_msp_io_w));
+ map(0xff0000, 0xff001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00);
+ map(0xff4000, 0xff4fff).rw(this, FUNC(harddriv_state::hd68k_zram_r), FUNC(harddriv_state::hd68k_zram_w));
+ map(0xff8000, 0xffffff).ram();
+}
+
+
+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(this, 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(this, FUNC(harddriv_state::hdgsp_io_w));
+ map(0xf4000000, 0xf40000ff).rw(this, FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo");
+ map(0xf4800000, 0xf48000ff).rw(this, FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi");
+ map(0xf5000000, 0xf5000fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo");
+ map(0xf5800000, 0xf5800fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_hi_r), FUNC(harddriv_state::hdgsp_paletteram_hi_w)).share("gsp_palram_hi");
+ map(0xff800000, 0xffbfffff).mirror(0x0400000).ram().share("gsp_vram");
+}
@@ -625,36 +630,38 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(harddriv_state::multisync2_68k_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x604000, 0x607fff) AM_WRITE(hd68k_nwr_w)
- AM_RANGE(0x608000, 0x60bfff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
- AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
- AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
- AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
- AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
- AM_RANGE(0xc04000, 0xc07fff) AM_READWRITE(hd68k_msp_io_r, hd68k_msp_io_w)
- AM_RANGE(0xfc0000, 0xfc001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff00)
- AM_RANGE(0xfd0000, 0xfd0fff) AM_MIRROR(0x004000) AM_READWRITE(hd68k_zram_r, hd68k_zram_w)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void harddriv_state::multisync2_68k_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).rom();
+ map(0x604000, 0x607fff).w(this, FUNC(harddriv_state::hd68k_nwr_w));
+ map(0x608000, 0x60bfff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x60c000, 0x60ffff).rw(this, FUNC(harddriv_state::hd68k_port0_r), FUNC(harddriv_state::hd68k_irq_ack_w));
+ map(0xa00000, 0xa7ffff).w(this, FUNC(harddriv_state::hd68k_wr0_write));
+ map(0xa80000, 0xafffff).r(this, FUNC(harddriv_state::hd68k_a80000_r)).w(this, FUNC(harddriv_state::hd68k_wr1_write));
+ map(0xb00000, 0xb7ffff).rw(this, FUNC(harddriv_state::hd68k_adc8_r), FUNC(harddriv_state::hd68k_wr2_write));
+ map(0xb80000, 0xbfffff).rw(this, FUNC(harddriv_state::hd68k_adc12_r), FUNC(harddriv_state::hd68k_adc_control_w));
+ map(0xc00000, 0xc03fff).rw(this, FUNC(harddriv_state::hd68k_gsp_io_r), FUNC(harddriv_state::hd68k_gsp_io_w));
+ map(0xc04000, 0xc07fff).rw(this, FUNC(harddriv_state::hd68k_msp_io_r), FUNC(harddriv_state::hd68k_msp_io_w));
+ map(0xfc0000, 0xfc001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00);
+ map(0xfd0000, 0xfd0fff).mirror(0x004000).rw(this, FUNC(harddriv_state::hd68k_zram_r), FUNC(harddriv_state::hd68k_zram_w));
+ map(0xff0000, 0xffffff).ram();
+}
/* GSP is identical to original multisync */
-ADDRESS_MAP_START(harddriv_state::multisync2_gsp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0000200f) AM_NOP /* hit during self-test */
- AM_RANGE(0x02000000, 0x020fffff) AM_READWRITE(hdgsp_vram_2bpp_r, hdgsp_vram_2bpp_w)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREAD("gsp", tms34010_device, io_register_r) AM_WRITE(hdgsp_io_w)
- AM_RANGE(0xf4000000, 0xf40000ff) AM_READWRITE(hdgsp_control_lo_r, hdgsp_control_lo_w) AM_SHARE("gsp_control_lo")
- AM_RANGE(0xf4800000, 0xf48000ff) AM_READWRITE(hdgsp_control_hi_r, hdgsp_control_hi_w) AM_SHARE("gsp_control_hi")
- AM_RANGE(0xf5000000, 0xf5000fff) AM_READWRITE(hdgsp_paletteram_lo_r, hdgsp_paletteram_lo_w) AM_SHARE("gsp_palram_lo")
- AM_RANGE(0xf5800000, 0xf5800fff) AM_READWRITE(hdgsp_paletteram_hi_r, hdgsp_paletteram_hi_w) AM_SHARE("gsp_palram_hi")
- AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram")
-ADDRESS_MAP_END
+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(this, 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(this, FUNC(harddriv_state::hdgsp_io_w));
+ map(0xf4000000, 0xf40000ff).rw(this, FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo");
+ map(0xf4800000, 0xf48000ff).rw(this, FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi");
+ map(0xf5000000, 0xf5000fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo");
+ map(0xf5800000, 0xf5800fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_hi_r), FUNC(harddriv_state::hdgsp_paletteram_hi_w)).share("gsp_palram_hi");
+ map(0xff800000, 0xffffffff).ram().share("gsp_vram");
+}
@@ -664,18 +671,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(harddriv_state::adsp_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("adsp_pgm_memory")
- AM_RANGE(0x2000, 0x3fff) AM_READNOP // ROM?
-ADDRESS_MAP_END
+void harddriv_state::adsp_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("adsp_pgm_memory");
+ map(0x2000, 0x3fff).nopr(); // ROM?
+}
-ADDRESS_MAP_START(harddriv_state::adsp_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("adsp_data")
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE(hdadsp_special_r, hdadsp_special_w)
-ADDRESS_MAP_END
+void harddriv_state::adsp_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("adsp_data");
+ map(0x2000, 0x2fff).rw(this, FUNC(harddriv_state::hdadsp_special_r), FUNC(harddriv_state::hdadsp_special_w));
+}
@@ -685,45 +694,51 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(harddriv_state::ds3_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("adsp_pgm_memory")
-ADDRESS_MAP_END
+void harddriv_state::ds3_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("adsp_pgm_memory");
+}
-ADDRESS_MAP_START(harddriv_state::ds3_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("adsp_data")
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(hdds3_special_r, hdds3_special_w)
- AM_RANGE(0x3800, 0x3bff) AM_RAM /* internal RAM */
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(hdds3_control_r, hdds3_control_w) /* adsp control regs */
-ADDRESS_MAP_END
+void harddriv_state::ds3_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("adsp_data");
+ map(0x2000, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_special_r), FUNC(harddriv_state::hdds3_special_w));
+ map(0x3800, 0x3bff).ram(); /* internal RAM */
+ map(0x3fe0, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_control_r), FUNC(harddriv_state::hdds3_control_w)); /* adsp control regs */
+}
-ADDRESS_MAP_START(harddriv_state::ds3sdsp_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("ds3sdsp_pgm")
-ADDRESS_MAP_END
+void harddriv_state::ds3sdsp_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("ds3sdsp_pgm");
+}
-ADDRESS_MAP_START(harddriv_state::ds3sdsp_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(hdds3_sdsp_special_r, hdds3_sdsp_special_w)
- AM_RANGE(0x3800, 0x39ff) AM_RAM /* internal RAM */
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(hdds3_sdsp_control_r, hdds3_sdsp_control_w)
-ADDRESS_MAP_END
+void harddriv_state::ds3sdsp_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x2000, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_sdsp_special_r), FUNC(harddriv_state::hdds3_sdsp_special_w));
+ map(0x3800, 0x39ff).ram(); /* internal RAM */
+ map(0x3fe0, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_sdsp_control_r), FUNC(harddriv_state::hdds3_sdsp_control_w));
+}
-ADDRESS_MAP_START(harddriv_state::ds3xdsp_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("ds3xdsp_pgm")
-ADDRESS_MAP_END
+void harddriv_state::ds3xdsp_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("ds3xdsp_pgm");
+}
-ADDRESS_MAP_START(harddriv_state::ds3xdsp_data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM // TODO
- AM_RANGE(0x3800, 0x39ff) AM_RAM /* internal RAM */
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(hdds3_xdsp_control_r, hdds3_xdsp_control_w)
-ADDRESS_MAP_END
+void harddriv_state::ds3xdsp_data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram(); // TODO
+ map(0x3800, 0x39ff).ram(); /* internal RAM */
+ map(0x3fe0, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_xdsp_control_r), FUNC(harddriv_state::hdds3_xdsp_control_w));
+}
@@ -733,12 +748,13 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(harddriv_state::dsk_dsp32_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x001fff) AM_RAM
- AM_RANGE(0x600000, 0x63ffff) AM_RAM AM_SHARE("dsp32_ram")
- AM_RANGE(0xfff800, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void harddriv_state::dsk_dsp32_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x001fff).ram();
+ map(0x600000, 0x63ffff).ram().share("dsp32_ram");
+ map(0xfff800, 0xffffff).ram();
+}
@@ -748,13 +764,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(harddriv_state::dsk2_dsp32_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x001fff) AM_RAM
- AM_RANGE(0x200000, 0x23ffff) AM_RAM
- AM_RANGE(0x400000, 0x5fffff) AM_ROM AM_REGION("user4", 0)
- AM_RANGE(0xfff800, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void harddriv_state::dsk2_dsp32_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x001fff).ram();
+ map(0x200000, 0x23ffff).ram();
+ map(0x400000, 0x5fffff).rom().region("user4", 0);
+ map(0xfff800, 0xffffff).ram();
+}
/*************************************
diff --git a/src/mame/drivers/harriet.cpp b/src/mame/drivers/harriet.cpp
index 6ad1fec992a..d159228845f 100644
--- a/src/mame/drivers/harriet.cpp
+++ b/src/mame/drivers/harriet.cpp
@@ -109,20 +109,21 @@ READ8_MEMBER(harriet_state::keyboard_status_r)
return res;
}
-ADDRESS_MAP_START(harriet_state::harriet_map)
- AM_RANGE(0x000000, 0x007fff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM // NVRAM
- AM_RANGE(0x7f0000, 0x7fffff) AM_RAM // todo: boundaries, 0x7fe000 - 0x7fffff tested on boot
- AM_RANGE(0xf1000e, 0xf1000f) AM_READ8(unk_r,0x00ff)
- AM_RANGE(0xf1001c, 0xf1001f) AM_WRITE8(unk_w,0x00ff)
- AM_RANGE(0xf20022, 0xf20023) AM_READ8(unk2_r,0x00ff)
- AM_RANGE(0xf20024, 0xf20025) AM_READ8(unk2_r,0x00ff)
- AM_RANGE(0xf2002c, 0xf2002d) AM_READ8(unk3_r,0x00ff)
- AM_RANGE(0xf2002e, 0xf2002f) AM_WRITE8(serial_w,0x00ff)
+void harriet_state::harriet_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rom();
+ map(0x040000, 0x040fff).ram(); // NVRAM
+ map(0x7f0000, 0x7fffff).ram(); // todo: boundaries, 0x7fe000 - 0x7fffff tested on boot
+ map(0xf1000f, 0xf1000f).r(this, FUNC(harriet_state::unk_r));
+ map(0xf1001c, 0xf1001f).w(this, FUNC(harriet_state::unk_w)).umask16(0x00ff);
+ map(0xf20023, 0xf20023).r(this, FUNC(harriet_state::unk2_r));
+ map(0xf20025, 0xf20025).r(this, FUNC(harriet_state::unk2_r));
+ map(0xf2002d, 0xf2002d).r(this, FUNC(harriet_state::unk3_r));
+ map(0xf2002f, 0xf2002f).w(this, FUNC(harriet_state::serial_w));
// AM_RANGE(0xf4001e, 0xf4001f) AM_READ8(keyboard_status_r,0x00ff)
// AM_RANGE(0xf4002e, 0xf4002f) AM_READ8(keyboard_status_r,0x00ff)
- AM_RANGE(0xf4003e, 0xf4003f) AM_READ8(keyboard_status_r,0x00ff)
-ADDRESS_MAP_END
+ map(0xf4003f, 0xf4003f).r(this, FUNC(harriet_state::keyboard_status_r));
+}
static INPUT_PORTS_START( harriet )
/* dummy active high structure */
diff --git a/src/mame/drivers/hazelgr.cpp b/src/mame/drivers/hazelgr.cpp
index b117fb4a3df..623a7dc1b18 100644
--- a/src/mame/drivers/hazelgr.cpp
+++ b/src/mame/drivers/hazelgr.cpp
@@ -31,22 +31,24 @@ private:
-ADDRESS_MAP_START(haze_state::mem_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x9000, 0x9fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(haze_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // irq 17E0 => 0183(ch3)
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt) // 91 irq 17F8 => 0A5E
- AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt) // not programmed to interrupt
- AM_RANGE(0xb0, 0xb3) AM_DEVREADWRITE("pio3", z80pio_device, read_alt, write_alt) // not programmed to interrupt
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("pio4", z80pio_device, read_alt, write_alt) // not programmed to interrupt
- AM_RANGE(0xc4, 0xc7) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // irq 17E8 => 023D(ch0),0366(ch1),02BB(ch2),0378(ch3)
- AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("ctc3", z80ctc_device, read, write) // irq 17F0 => 030E(ch0),038A(ch1)
-ADDRESS_MAP_END
+void haze_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x9000, 0x9fff).ram();
+}
+
+void haze_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // irq 17E0 => 0183(ch3)
+ map(0x90, 0x93).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // 91 irq 17F8 => 0A5E
+ map(0xa0, 0xa3).rw("pio2", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // not programmed to interrupt
+ map(0xb0, 0xb3).rw("pio3", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // not programmed to interrupt
+ map(0xc0, 0xc3).rw("pio4", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // not programmed to interrupt
+ map(0xc4, 0xc7).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // irq 17E8 => 023D(ch0),0366(ch1),02BB(ch2),0378(ch3)
+ map(0xc8, 0xcb).rw("ctc3", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // irq 17F0 => 030E(ch0),038A(ch1)
+}
static INPUT_PORTS_START( haze )
diff --git a/src/mame/drivers/hazeltin.cpp b/src/mame/drivers/hazeltin.cpp
index c9234e81d6c..9def1865588 100644
--- a/src/mame/drivers/hazeltin.cpp
+++ b/src/mame/drivers/hazeltin.cpp
@@ -474,21 +474,23 @@ WRITE8_MEMBER(hazl1500_state::refresh_address_w)
m_cpu_db7->write((data >> 7) & 1);
}
-ADDRESS_MAP_START(hazl1500_state::hazl1500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x3000, 0x377f) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x3780, 0x37ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hazl1500_state::hazl1500_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_READWRITE(status_reg_2_r, status_reg_3_w)
- AM_RANGE(0xbf, 0xbf) AM_READWRITE(uart_r, uart_w)
- AM_RANGE(0xdf, 0xdf) AM_READ(kbd_encoder_r)
- AM_RANGE(0xef, 0xef) AM_READWRITE(system_test_r, refresh_address_w)
- AM_RANGE(0xf7, 0xf7) AM_READ(kbd_status_latch_r)
-ADDRESS_MAP_END
+void hazl1500_state::hazl1500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x3000, 0x377f).rw(this, FUNC(hazl1500_state::ram_r), FUNC(hazl1500_state::ram_w));
+ map(0x3780, 0x37ff).ram();
+}
+
+void hazl1500_state::hazl1500_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7f, 0x7f).rw(this, FUNC(hazl1500_state::status_reg_2_r), FUNC(hazl1500_state::status_reg_3_w));
+ map(0xbf, 0xbf).rw(this, FUNC(hazl1500_state::uart_r), FUNC(hazl1500_state::uart_w));
+ map(0xdf, 0xdf).r(this, FUNC(hazl1500_state::kbd_encoder_r));
+ map(0xef, 0xef).rw(this, FUNC(hazl1500_state::system_test_r), FUNC(hazl1500_state::refresh_address_w));
+ map(0xf7, 0xf7).r(this, FUNC(hazl1500_state::kbd_status_latch_r));
+}
/*
Hazeltine 1500 key matrix (from ref[1])
diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp
index 8116878c3ac..ee56ed4aa9a 100644
--- a/src/mame/drivers/hcastle.cpp
+++ b/src/mame/drivers/hcastle.cpp
@@ -41,31 +41,32 @@ WRITE8_MEMBER(hcastle_state::hcastle_coin_w)
-ADDRESS_MAP_START(hcastle_state::hcastle_map)
- AM_RANGE(0x0000, 0x0007) AM_WRITE(hcastle_pf1_control_w)
- AM_RANGE(0x0020, 0x003f) AM_RAM /* rowscroll? */
- AM_RANGE(0x0200, 0x0207) AM_WRITE(hcastle_pf2_control_w)
- AM_RANGE(0x0220, 0x023f) AM_RAM /* rowscroll? */
- AM_RANGE(0x0400, 0x0400) AM_WRITE(hcastle_bankswitch_w)
- AM_RANGE(0x0404, 0x0404) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x0408, 0x0408) AM_WRITE(hcastle_soundirq_w)
- AM_RANGE(0x040c, 0x040c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0410, 0x0410) AM_READ_PORT("SYSTEM") AM_WRITE(hcastle_coin_w)
- AM_RANGE(0x0411, 0x0411) AM_READ_PORT("P1")
- AM_RANGE(0x0412, 0x0412) AM_READ_PORT("P2")
- AM_RANGE(0x0413, 0x0413) AM_READ_PORT("DSW3")
- AM_RANGE(0x0414, 0x0414) AM_READ_PORT("DSW1")
- AM_RANGE(0x0415, 0x0415) AM_READ_PORT("DSW2")
- AM_RANGE(0x0418, 0x0418) AM_READWRITE(hcastle_gfxbank_r, hcastle_gfxbank_w)
- AM_RANGE(0x0600, 0x06ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0x0700, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(hcastle_pf1_video_w) AM_SHARE("pf1_videoram")
- AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(hcastle_pf2_video_w) AM_SHARE("pf2_videoram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void hcastle_state::hcastle_map(address_map &map)
+{
+ map(0x0000, 0x0007).w(this, FUNC(hcastle_state::hcastle_pf1_control_w));
+ map(0x0020, 0x003f).ram(); /* rowscroll? */
+ map(0x0200, 0x0207).w(this, FUNC(hcastle_state::hcastle_pf2_control_w));
+ map(0x0220, 0x023f).ram(); /* rowscroll? */
+ map(0x0400, 0x0400).w(this, FUNC(hcastle_state::hcastle_bankswitch_w));
+ map(0x0404, 0x0404).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0408, 0x0408).w(this, FUNC(hcastle_state::hcastle_soundirq_w));
+ map(0x040c, 0x040c).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x0410, 0x0410).portr("SYSTEM").w(this, FUNC(hcastle_state::hcastle_coin_w));
+ map(0x0411, 0x0411).portr("P1");
+ map(0x0412, 0x0412).portr("P2");
+ map(0x0413, 0x0413).portr("DSW3");
+ map(0x0414, 0x0414).portr("DSW1");
+ map(0x0415, 0x0415).portr("DSW2");
+ map(0x0418, 0x0418).rw(this, FUNC(hcastle_state::hcastle_gfxbank_r), FUNC(hcastle_state::hcastle_gfxbank_w));
+ map(0x0600, 0x06ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0x0700, 0x1fff).ram();
+ map(0x2000, 0x2fff).ram().w(this, FUNC(hcastle_state::hcastle_pf1_video_w)).share("pf1_videoram");
+ map(0x3000, 0x3fff).ram().share("spriteram");
+ map(0x4000, 0x4fff).ram().w(this, FUNC(hcastle_state::hcastle_pf2_video_w)).share("pf2_videoram");
+ map(0x5000, 0x5fff).ram().share("spriteram2");
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
/*****************************************************************************/
@@ -76,19 +77,20 @@ WRITE8_MEMBER(hcastle_state::sound_bank_w)
m_k007232->set_bank(bank_A, bank_B );
}
-ADDRESS_MAP_START(hcastle_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w)
- AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w)
- AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w)
- AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
- AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(sound_bank_w) /* 7232 bankswitch */
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void hcastle_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w));
+ map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w));
+ map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w));
+ map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w));
+ map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w));
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc000).w(this, FUNC(hcastle_state::sound_bank_w)); /* 7232 bankswitch */
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp
index d55fab7a839..d7848d31fb7 100644
--- a/src/mame/drivers/headonb.cpp
+++ b/src/mame/drivers/headonb.cpp
@@ -98,16 +98,18 @@ WRITE8_MEMBER(headonb_state::video_ram_w)
m_tilemap->mark_tile_dirty(offset);
}
-ADDRESS_MAP_START(headonb_state::headonb_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_MIRROR(0x4000)
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0xff00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(headonb_state::headonb_io_map)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
+void headonb_state::headonb_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().mirror(0x4000);
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(headonb_state::video_ram_w)).share("video_ram");
+ map(0xff00, 0xffff).ram();
+}
+
+void headonb_state::headonb_io_map(address_map &map)
+{
+ map(0x01, 0x01).portr("IN0");
+ map(0x04, 0x04).portr("IN1");
+}
/***************************************************************************
diff --git a/src/mame/drivers/hec2hrp.cpp b/src/mame/drivers/hec2hrp.cpp
index b6be3061763..8ba4b81cdc5 100644
--- a/src/mame/drivers/hec2hrp.cpp
+++ b/src/mame/drivers/hec2hrp.cpp
@@ -90,118 +90,127 @@
/*****************************************************************************/
-ADDRESS_MAP_START(hec2hrp_state::hecdisc2_mem)
+void hec2hrp_state::hecdisc2_mem(address_map &map)
+{
/*****************************************************************************/
- ADDRESS_MAP_UNMAP_HIGH
+ map.unmap_value_high();
/* Hardward address mapping*/
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank3") /*zone with ROM at start up, RAM later*/
+ map(0x0000, 0x3fff).bankrw("bank3"); /*zone with ROM at start up, RAM later*/
- AM_RANGE( 0x4000, 0xffff ) AM_RAM
+ map(0x4000, 0xffff).ram();
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(hec2hrp_state::hecdisc2_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void hec2hrp_state::hecdisc2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// ROM Page managing
- AM_RANGE(0x000,0x00f) AM_READWRITE(hector_disc2_io00_port_r, hector_disc2_io00_port_w )
+ map(0x000, 0x00f).rw(this, FUNC(hec2hrp_state::hector_disc2_io00_port_r), FUNC(hec2hrp_state::hector_disc2_io00_port_w));
// RS232 - 8251 managing
- AM_RANGE(0x020,0x02f) AM_READWRITE(hector_disc2_io20_port_r, hector_disc2_io20_port_w )
+ map(0x020, 0x02f).rw(this, FUNC(hec2hrp_state::hector_disc2_io20_port_r), FUNC(hec2hrp_state::hector_disc2_io20_port_w));
// Hector communication managing
- AM_RANGE(0x030,0x03f) AM_READWRITE(hector_disc2_io30_port_r, hector_disc2_io30_port_w )
- AM_RANGE(0x040,0x04f) AM_READWRITE(hector_disc2_io40_port_r, hector_disc2_io40_port_w )
- AM_RANGE(0x050,0x05f) AM_READWRITE(hector_disc2_io50_port_r, hector_disc2_io50_port_w )
+ map(0x030, 0x03f).rw(this, FUNC(hec2hrp_state::hector_disc2_io30_port_r), FUNC(hec2hrp_state::hector_disc2_io30_port_w));
+ map(0x040, 0x04f).rw(this, FUNC(hec2hrp_state::hector_disc2_io40_port_r), FUNC(hec2hrp_state::hector_disc2_io40_port_w));
+ map(0x050, 0x05f).rw(this, FUNC(hec2hrp_state::hector_disc2_io50_port_r), FUNC(hec2hrp_state::hector_disc2_io50_port_w));
// uPD765 link:
- AM_RANGE(0x060,0x061) AM_DEVICE("upd765", upd765a_device, map)
- AM_RANGE(0x070,0x07f) AM_DEVREADWRITE("upd765", upd765a_device, mdma_r, mdma_w)
-ADDRESS_MAP_END
+ map(0x060, 0x061).m("upd765", FUNC(upd765a_device::map));
+ map(0x070, 0x07f).rw("upd765", FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w));
+}
/*****************************************************************************/
-ADDRESS_MAP_START(hec2hrp_state::hec2hrp_mem)
+void hec2hrp_state::hec2hrp_mem(address_map &map)
+{
/*****************************************************************************/
- ADDRESS_MAP_UNMAP_HIGH
+ map.unmap_value_high();
/* Main ROM page*/
- AM_RANGE(0x0000,0x3fff) AM_ROM
+ map(0x0000, 0x3fff).rom();
/* Hardware address mapping*/
- AM_RANGE(0x0800,0x0808) AM_WRITE(hector_switch_bank_w)/* Bank management*/
- AM_RANGE(0x1000,0x1000) AM_WRITE(hector_color_a_w) /* Color c0/c1*/
- AM_RANGE(0x1800,0x1800) AM_WRITE(hector_color_b_w) /* Color c2/c3*/
- AM_RANGE(0x2000,0x2003) AM_WRITE(hector_sn_2000_w) /* Sound*/
- AM_RANGE(0x2800,0x2803) AM_WRITE(hector_sn_2800_w) /* Sound*/
- AM_RANGE(0x3000,0x3000) AM_READWRITE(hector_cassette_r, hector_sn_3000_w)/* Write necessary*/
- AM_RANGE(0x3800,0x3807) AM_READWRITE(hector_keyboard_r, hector_keyboard_w) /* Keyboard*/
+ map(0x0800, 0x0808).w(this, FUNC(hec2hrp_state::hector_switch_bank_w));/* Bank management*/
+ map(0x1000, 0x1000).w(this, FUNC(hec2hrp_state::hector_color_a_w)); /* Color c0/c1*/
+ map(0x1800, 0x1800).w(this, FUNC(hec2hrp_state::hector_color_b_w)); /* Color c2/c3*/
+ map(0x2000, 0x2003).w(this, FUNC(hec2hrp_state::hector_sn_2000_w)); /* Sound*/
+ map(0x2800, 0x2803).w(this, FUNC(hec2hrp_state::hector_sn_2800_w)); /* Sound*/
+ map(0x3000, 0x3000).rw(this, FUNC(hec2hrp_state::hector_cassette_r), FUNC(hec2hrp_state::hector_sn_3000_w));/* Write necessary*/
+ map(0x3800, 0x3807).rw(this, FUNC(hec2hrp_state::hector_keyboard_r), FUNC(hec2hrp_state::hector_keyboard_w)); /* Keyboard*/
/* Video br mapping*/
- AM_RANGE(0x4000,0x49ff) AM_RAM AM_SHARE("videoram")
+ map(0x4000, 0x49ff).ram().share("videoram");
/* continous RAM*/
- AM_RANGE(0x4A00,0xbfff) AM_RAM
+ map(0x4A00, 0xbfff).ram();
/* from 0xC000 to 0xFFFF => Bank Ram for video and data !*/
- AM_RANGE(0xc000,0xffff) AM_RAM AM_SHARE("hector_videoram")
-ADDRESS_MAP_END
+ map(0xc000, 0xffff).ram().share("hector_videoram");
+}
/*****************************************************************************/
-ADDRESS_MAP_START(hec2hrp_state::hec2hrx_mem)
+void hec2hrp_state::hec2hrx_mem(address_map &map)
+{
/*****************************************************************************/
- ADDRESS_MAP_UNMAP_HIGH
+ map.unmap_value_high();
/* Main ROM page*/
- AM_RANGE(0x0000,0x3fff) AM_ROMBANK("bank2")
+ map(0x0000, 0x3fff).bankr("bank2");
/* Hardware address mapping*/
- AM_RANGE(0x0800,0x0808) AM_WRITE(hector_switch_bank_w)/* Bank management*/
- AM_RANGE(0x1000,0x1000) AM_WRITE(hector_color_a_w) /* Color c0/c1*/
- AM_RANGE(0x1800,0x1800) AM_WRITE(hector_color_b_w) /* Color c2/c3*/
- AM_RANGE(0x2000,0x2003) AM_WRITE(hector_sn_2000_w) /* Sound*/
- AM_RANGE(0x2800,0x2803) AM_WRITE(hector_sn_2800_w) /* Sound*/
- AM_RANGE(0x3000,0x3000) AM_READWRITE(hector_cassette_r, hector_sn_3000_w)/* Write necessary*/
- AM_RANGE(0x3800,0x3807) AM_READWRITE(hector_keyboard_r, hector_keyboard_w) /* Keyboard*/
+ map(0x0800, 0x0808).w(this, FUNC(hec2hrp_state::hector_switch_bank_w));/* Bank management*/
+ map(0x1000, 0x1000).w(this, FUNC(hec2hrp_state::hector_color_a_w)); /* Color c0/c1*/
+ map(0x1800, 0x1800).w(this, FUNC(hec2hrp_state::hector_color_b_w)); /* Color c2/c3*/
+ map(0x2000, 0x2003).w(this, FUNC(hec2hrp_state::hector_sn_2000_w)); /* Sound*/
+ map(0x2800, 0x2803).w(this, FUNC(hec2hrp_state::hector_sn_2800_w)); /* Sound*/
+ map(0x3000, 0x3000).rw(this, FUNC(hec2hrp_state::hector_cassette_r), FUNC(hec2hrp_state::hector_sn_3000_w));/* Write necessary*/
+ map(0x3800, 0x3807).rw(this, FUNC(hec2hrp_state::hector_keyboard_r), FUNC(hec2hrp_state::hector_keyboard_w)); /* Keyboard*/
/* Video br mapping*/
- AM_RANGE(0x4000,0x49ff) AM_RAM AM_SHARE("videoram")
+ map(0x4000, 0x49ff).ram().share("videoram");
/* continous RAM*/
- AM_RANGE(0x4A00,0xbfff) AM_RAM
+ map(0x4A00, 0xbfff).ram();
/* from 0xC000 to 0xFFFF => Bank Ram for video and data !*/
- AM_RANGE(0xc000,0xffff) AM_RAMBANK("bank1") AM_SHARE("hector_videoram")
-ADDRESS_MAP_END
+ map(0xc000, 0xffff).bankrw("bank1").share("hector_videoram");
+}
-ADDRESS_MAP_START(hec2hrp_state::hec2hrp_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x000,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w )
-ADDRESS_MAP_END
+void hec2hrp_state::hec2hrp_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x000, 0x0ff).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w));
+}
-ADDRESS_MAP_START(hec2hrp_state::hec2hrx_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0f0,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w )
-ADDRESS_MAP_END
+void hec2hrp_state::hec2hrx_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x0f0, 0x0ff).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w));
+}
-ADDRESS_MAP_START(hec2hrp_state::hec2mdhrx_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void hec2hrp_state::hec2mdhrx_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// Minidisc commands and changing the rom page !*/
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("wd179x", fd1793_device, read, write)
- AM_RANGE(0x08, 0x08) AM_WRITE(minidisc_control_w)
- AM_RANGE(0x0f0,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hec2hrp_state::hec2mx40_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x000,0x0ef) AM_WRITE(hector_mx40_io_port_w )
- AM_RANGE(0x0f0,0x0f3) AM_READWRITE(hector_io_8255_r, hector_io_8255_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hec2hrp_state::hec2mx80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x000,0x0ef) AM_WRITE(hector_mx80_io_port_w )
- AM_RANGE(0x0f0,0x0f3) AM_READWRITE(hector_io_8255_r, hector_io_8255_w )
-
-
-ADDRESS_MAP_END
+ map(0x04, 0x07).rw(m_minidisc_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x08, 0x08).w(this, FUNC(hec2hrp_state::minidisc_control_w));
+ map(0x0f0, 0x0ff).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w));
+}
+
+void hec2hrp_state::hec2mx40_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x000, 0x0ef).w(this, FUNC(hec2hrp_state::hector_mx40_io_port_w));
+ map(0x0f0, 0x0f3).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w));
+}
+
+void hec2hrp_state::hec2mx80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x000, 0x0ef).w(this, FUNC(hec2hrp_state::hector_mx80_io_port_w));
+ map(0x0f0, 0x0f3).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w));
+
+
+}
/* Input ports */
static INPUT_PORTS_START( hec2hrp )
diff --git a/src/mame/drivers/hexion.cpp b/src/mame/drivers/hexion.cpp
index dca86457b7e..2ec6f1eecdd 100644
--- a/src/mame/drivers/hexion.cpp
+++ b/src/mame/drivers/hexion.cpp
@@ -121,58 +121,60 @@ WRITE8_MEMBER(hexion_state::ccu_int_time_w)
m_ccu_int_time = data;
}
-ADDRESS_MAP_START(hexion_state::hexion_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdffe) AM_READWRITE(bankedram_r, bankedram_w)
- AM_RANGE(0xdfff, 0xdfff) AM_WRITE(bankctrl_w)
- AM_RANGE(0xe000, 0xe000) AM_NOP
- AM_RANGE(0xe800, 0xe87f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w)
- AM_RANGE(0xe880, 0xe889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w)
- AM_RANGE(0xe88a, 0xe88e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w)
- AM_RANGE(0xe88f, 0xe88f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
- AM_RANGE(0xe8e0, 0xe8ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
- AM_RANGE(0xf000, 0xf00f) AM_DEVREADWRITE("k053252", k053252_device, read, write)
- AM_RANGE(0xf200, 0xf200) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1")
- AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2")
- AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P1")
- AM_RANGE(0xf403, 0xf403) AM_READ_PORT("P2")
- AM_RANGE(0xf440, 0xf440) AM_READ_PORT("DSW3")
- AM_RANGE(0xf441, 0xf441) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf480, 0xf480) AM_WRITE(bankswitch_w)
- AM_RANGE(0xf4c0, 0xf4c0) AM_WRITE(coincntr_w)
- AM_RANGE(0xf500, 0xf500) AM_WRITE(gfxrom_select_w)
- AM_RANGE(0xf540, 0xf540) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hexion_state::hexionb_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdffe) AM_READWRITE(bankedram_r, bankedram_w)
- AM_RANGE(0xdfff, 0xdfff) AM_WRITE(bankctrl_w)
- AM_RANGE(0xe000, 0xe000) AM_NOP
- AM_RANGE(0xe800, 0xe87f) AM_NOP // all the code to use the k051649 is still present
- AM_RANGE(0xe880, 0xe889) AM_NOP // but the bootleg has an additional M6295 @ 0xf5c0 instead
- AM_RANGE(0xe88a, 0xe88e) AM_NOP
- AM_RANGE(0xe88f, 0xe88f) AM_NOP
- AM_RANGE(0xe8e0, 0xe8ff) AM_NOP
- AM_RANGE(0xf000, 0xf00f) AM_DEVREADWRITE("k053252", k053252_device, read, write)
- AM_RANGE(0xf200, 0xf200) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1")
- AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2")
- AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P1")
- AM_RANGE(0xf403, 0xf403) AM_READ_PORT("P2")
- AM_RANGE(0xf440, 0xf440) AM_READ_PORT("DSW3")
- AM_RANGE(0xf441, 0xf441) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf480, 0xf480) AM_WRITE(bankswitch_w)
- AM_RANGE(0xf4c0, 0xf4c0) AM_WRITE(coincntr_w)
- AM_RANGE(0xf500, 0xf500) AM_WRITE(gfxrom_select_w)
- AM_RANGE(0xf540, 0xf540) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xf5c0, 0xf5c0) AM_DEVWRITE("oki2", okim6295_device, write)
-ADDRESS_MAP_END
+void hexion_state::hexion_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xdffe).rw(this, FUNC(hexion_state::bankedram_r), FUNC(hexion_state::bankedram_w));
+ map(0xdfff, 0xdfff).w(this, FUNC(hexion_state::bankctrl_w));
+ map(0xe000, 0xe000).noprw();
+ map(0xe800, 0xe87f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w));
+ map(0xe880, 0xe889).w("k051649", FUNC(k051649_device::k051649_frequency_w));
+ map(0xe88a, 0xe88e).w("k051649", FUNC(k051649_device::k051649_volume_w));
+ map(0xe88f, 0xe88f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w));
+ map(0xe8e0, 0xe8ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w));
+ map(0xf000, 0xf00f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write));
+ map(0xf200, 0xf200).w("oki", FUNC(okim6295_device::write));
+ map(0xf400, 0xf400).portr("DSW1");
+ map(0xf401, 0xf401).portr("DSW2");
+ map(0xf402, 0xf402).portr("P1");
+ map(0xf403, 0xf403).portr("P2");
+ map(0xf440, 0xf440).portr("DSW3");
+ map(0xf441, 0xf441).portr("SYSTEM");
+ map(0xf480, 0xf480).w(this, FUNC(hexion_state::bankswitch_w));
+ map(0xf4c0, 0xf4c0).w(this, FUNC(hexion_state::coincntr_w));
+ map(0xf500, 0xf500).w(this, FUNC(hexion_state::gfxrom_select_w));
+ map(0xf540, 0xf540).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void hexion_state::hexionb_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xdffe).rw(this, FUNC(hexion_state::bankedram_r), FUNC(hexion_state::bankedram_w));
+ map(0xdfff, 0xdfff).w(this, FUNC(hexion_state::bankctrl_w));
+ map(0xe000, 0xe000).noprw();
+ map(0xe800, 0xe87f).noprw(); // all the code to use the k051649 is still present
+ map(0xe880, 0xe889).noprw(); // but the bootleg has an additional M6295 @ 0xf5c0 instead
+ map(0xe88a, 0xe88e).noprw();
+ map(0xe88f, 0xe88f).noprw();
+ map(0xe8e0, 0xe8ff).noprw();
+ map(0xf000, 0xf00f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write));
+ map(0xf200, 0xf200).w("oki", FUNC(okim6295_device::write));
+ map(0xf400, 0xf400).portr("DSW1");
+ map(0xf401, 0xf401).portr("DSW2");
+ map(0xf402, 0xf402).portr("P1");
+ map(0xf403, 0xf403).portr("P2");
+ map(0xf440, 0xf440).portr("DSW3");
+ map(0xf441, 0xf441).portr("SYSTEM");
+ map(0xf480, 0xf480).w(this, FUNC(hexion_state::bankswitch_w));
+ map(0xf4c0, 0xf4c0).w(this, FUNC(hexion_state::coincntr_w));
+ map(0xf500, 0xf500).w(this, FUNC(hexion_state::gfxrom_select_w));
+ map(0xf540, 0xf540).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xf5c0, 0xf5c0).w("oki2", FUNC(okim6295_device::write));
+}
static INPUT_PORTS_START( hexion )
PORT_START("DSW1")
diff --git a/src/mame/drivers/hideseek.cpp b/src/mame/drivers/hideseek.cpp
index e3b6fec4248..62794511dfd 100644
--- a/src/mame/drivers/hideseek.cpp
+++ b/src/mame/drivers/hideseek.cpp
@@ -63,16 +63,17 @@ uint32_t hideseek_state::screen_update_hideseek(screen_device &screen, bitmap_in
return 0;
}
-ADDRESS_MAP_START(hideseek_state::mem_map)
- AM_RANGE(0x00000000, 0x0003ffff) AM_ROM // On-chip ROM
- AM_RANGE(0x00200000, 0x0023ffff) AM_RAM // CS0
- AM_RANGE(0x00400000, 0x005fffff) AM_ROM AM_REGION("prg", 0) // CS1
+void hideseek_state::mem_map(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).rom(); // On-chip ROM
+ map(0x00200000, 0x0023ffff).ram(); // CS0
+ map(0x00400000, 0x005fffff).rom().region("prg", 0); // CS1
// CS2 - CS3
- AM_RANGE(0x01000000, 0x01ffffff) AM_RAM // DRAM
- AM_RANGE(0xffff8000, 0xffff87ff) AM_RAM // HD64F7045F28 i/os
- AM_RANGE(0xfffff000, 0xffffffff) AM_RAM // on-chip RAM
+ map(0x01000000, 0x01ffffff).ram(); // DRAM
+ map(0xffff8000, 0xffff87ff).ram(); // HD64F7045F28 i/os
+ map(0xfffff000, 0xffffffff).ram(); // on-chip RAM
// AM_RANGE(0x06000000, 0x07ffffff) AM_ROM AM_REGION("blit_data", 0)
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/higemaru.cpp b/src/mame/drivers/higemaru.cpp
index c3e24da5083..790ff23fe37 100644
--- a/src/mame/drivers/higemaru.cpp
+++ b/src/mame/drivers/higemaru.cpp
@@ -33,21 +33,22 @@ TIMER_DEVICE_CALLBACK_MEMBER(higemaru_state::higemaru_scanline)
}
-ADDRESS_MAP_START(higemaru_state::higemaru_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc800, 0xc800) AM_WRITE(higemaru_c800_w)
- AM_RANGE(0xc801, 0xc802) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xc803, 0xc804) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(higemaru_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(higemaru_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd880, 0xd9ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
+void higemaru_state::higemaru_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc000).portr("P1");
+ map(0xc001, 0xc001).portr("P2");
+ map(0xc002, 0xc002).portr("SYSTEM");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc800, 0xc800).w(this, FUNC(higemaru_state::higemaru_c800_w));
+ map(0xc801, 0xc802).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xc803, 0xc804).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(higemaru_state::higemaru_videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(higemaru_state::higemaru_colorram_w)).share("colorram");
+ map(0xd880, 0xd9ff).ram().share("spriteram");
+ map(0xe000, 0xefff).ram();
+}
static INPUT_PORTS_START( higemaru )
diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp
index 4dae4b7705c..a4214fc030e 100644
--- a/src/mame/drivers/highvdeo.cpp
+++ b/src/mame/drivers/highvdeo.cpp
@@ -325,25 +325,27 @@ WRITE16_MEMBER(highvdeo_state::write1_w)
// popmessage("%04x %04x",t1,t3);
}
-ADDRESS_MAP_START(highvdeo_state::tv_vcf_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x40000, 0x4ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/
- AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::tv_vcf_io)
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ(read0_r )
- AM_RANGE(0x000a, 0x000b) AM_READ(read1_r )
- AM_RANGE(0x000c, 0x000d) AM_READ(read2_r )
- AM_RANGE(0x0010, 0x0011) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x0012, 0x0013) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x0014, 0x0015) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x0030, 0x0031) AM_WRITE(tv_vcf_bankselect_w ) AM_READ(tv_oki6376_r )
-ADDRESS_MAP_END
+void highvdeo_state::tv_vcf_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); /*irq vector area*/
+ map(0x00400, 0x03fff).ram().share("nvram");
+ map(0x40000, 0x4ffff).ram().share("blit_ram"); /*blitter ram*/
+ map(0x80000, 0xbffff).bankr("bank1");
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void highvdeo_state::tv_vcf_io(address_map &map)
+{
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w));
+ map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r));
+ map(0x000c, 0x000d).r(this, FUNC(highvdeo_state::read2_r));
+ map(0x0010, 0x0010).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0012, 0x0012).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x0014, 0x0014).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::tv_vcf_bankselect_w)).r(this, FUNC(highvdeo_state::tv_oki6376_r));
+}
READ16_MEMBER(highvdeo_state::tv_ncf_read1_r)
@@ -374,52 +376,56 @@ WRITE16_MEMBER(highvdeo_state::tv_ncf_oki6376_st_w)
}
}
-ADDRESS_MAP_START(highvdeo_state::tv_ncf_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x20000, 0x2ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/
- AM_RANGE(0x40000, 0xbffff) AM_ROM AM_REGION("user1",0x40000)
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::tv_ncf_io)
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0008, 0x0009) AM_WRITE(tv_ncf_oki6376_w )
- AM_RANGE(0x000a, 0x000b) AM_WRITE(tv_ncf_oki6376_st_w )
- AM_RANGE(0x000c, 0x000d) AM_READ(read0_r )
- AM_RANGE(0x0010, 0x0011) AM_READ(tv_ncf_read1_r )
- AM_RANGE(0x0012, 0x0013) AM_READ(read2_r )
- AM_RANGE(0x0030, 0x0031) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x0032, 0x0033) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x0034, 0x0035) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(highvdeo_state::nyjoker_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/
- AM_RANGE(0x40000, 0xbffff) AM_ROM AM_REGION("user1",0x40000)
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::nyjoker_io)
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITENOP // alternate coin counter (bits 0 and 2)
- AM_RANGE(0x0004, 0x0005) AM_WRITE(nyj_write2_w ) // coin and note counter
+void highvdeo_state::tv_ncf_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); /*irq vector area*/
+ map(0x00400, 0x03fff).ram().share("nvram");
+ map(0x20000, 0x2ffff).ram().share("blit_ram"); /*blitter ram*/
+ map(0x40000, 0xbffff).rom().region("user1", 0x40000);
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void highvdeo_state::tv_ncf_io(address_map &map)
+{
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0008, 0x0009).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_w));
+ map(0x000a, 0x000b).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_st_w));
+ map(0x000c, 0x000d).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x0010, 0x0011).r(this, FUNC(highvdeo_state::tv_ncf_read1_r));
+ map(0x0012, 0x0013).r(this, FUNC(highvdeo_state::read2_r));
+ map(0x0030, 0x0030).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0032, 0x0032).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x0034, 0x0034).w("ramdac", FUNC(ramdac_device::pal_w));
+}
+
+
+void highvdeo_state::nyjoker_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); /*irq vector area*/
+ map(0x00400, 0x03fff).ram().share("nvram");
+ map(0x10000, 0x1ffff).ram().share("blit_ram"); /*blitter ram*/
+ map(0x40000, 0xbffff).rom().region("user1", 0x40000);
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void highvdeo_state::nyjoker_io(address_map &map)
+{
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0002, 0x0003).nopw(); // alternate coin counter (bits 0 and 2)
+ map(0x0004, 0x0005).w(this, FUNC(highvdeo_state::nyj_write2_w)); // coin and note counter
// AM_RANGE(0x0006, 0x0007) AM_WRITENOP
- AM_RANGE(0x0008, 0x0009) AM_WRITE(tv_ncf_oki6376_w )
- AM_RANGE(0x000a, 0x000b) AM_WRITE(tv_ncf_oki6376_st_w )
- AM_RANGE(0x000c, 0x000d) AM_READ_PORT("IN0")
- AM_RANGE(0x000e, 0x000f) AM_READ_PORT("DSW")
- AM_RANGE(0x0010, 0x0011) AM_READ_PORT("IN2")
- AM_RANGE(0x0012, 0x0013) AM_READ_PORT("IN3")
- AM_RANGE(0x0014, 0x0015) AM_READ(tv_ncf_read1_r )
- AM_RANGE(0x0020, 0x0021) AM_WRITENOP
- AM_RANGE(0x0030, 0x0031) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x0032, 0x0033) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x0034, 0x0035) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
-ADDRESS_MAP_END
+ map(0x0008, 0x0009).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_w));
+ map(0x000a, 0x000b).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_st_w));
+ map(0x000c, 0x000d).portr("IN0");
+ map(0x000e, 0x000f).portr("DSW");
+ map(0x0010, 0x0011).portr("IN2");
+ map(0x0012, 0x0013).portr("IN3");
+ map(0x0014, 0x0015).r(this, FUNC(highvdeo_state::tv_ncf_read1_r));
+ map(0x0020, 0x0021).nopw();
+ map(0x0030, 0x0030).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0032, 0x0032).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x0034, 0x0034).w("ramdac", FUNC(ramdac_device::pal_w));
+}
WRITE16_MEMBER(highvdeo_state::nyj_write2_w)
@@ -447,22 +453,24 @@ WRITE16_MEMBER(highvdeo_state::tv_tcf_bankselect_w)
membank("bank1")->set_base(&ROM[bankaddress]);
}
-ADDRESS_MAP_START(highvdeo_state::tv_tcf_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x40000, 0x5d4bf) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/
- AM_RANGE(0x7fe00, 0x7ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::tv_tcf_io)
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ(read0_r )
- AM_RANGE(0x000a, 0x000b) AM_READ(read1_r )
- AM_RANGE(0x0030, 0x0031) AM_READ(read2_r ) AM_WRITE(tv_tcf_bankselect_w )
-ADDRESS_MAP_END
+void highvdeo_state::tv_tcf_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); /*irq vector area*/
+ map(0x00400, 0x03fff).ram().share("nvram");
+ map(0x40000, 0x5d4bf).ram().share("blit_ram"); /*blitter ram*/
+ map(0x7fe00, 0x7ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x80000, 0xbffff).bankr("bank1");
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void highvdeo_state::tv_tcf_io(address_map &map)
+{
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w));
+ map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r));
+ map(0x0030, 0x0031).r(this, FUNC(highvdeo_state::read2_r)).w(this, FUNC(highvdeo_state::tv_tcf_bankselect_w));
+}
/****************************
*
@@ -504,29 +512,31 @@ WRITE16_MEMBER(highvdeo_state::write2_w)
}
}
-ADDRESS_MAP_START(highvdeo_state::newmcard_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x40000, 0x7ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/
- AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::newmcard_io)
- AM_RANGE(0x0030, 0x0033) AM_READ(newmcard_status_r )
- AM_RANGE(0x0030, 0x0031) AM_WRITE(tv_tcf_bankselect_w )
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout
- AM_RANGE(0x0004, 0x0005) AM_WRITE(newmcard_vblank_w )
- AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ(read0_r )
- AM_RANGE(0x000a, 0x000b) AM_READ(read1_r )
- AM_RANGE(0x000c, 0x000d) AM_READ(newmcard_vblank_r )
- AM_RANGE(0x000e, 0x000f) AM_READ(read2_r )
- AM_RANGE(0x0010, 0x0011) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x0012, 0x0013) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x0014, 0x0015) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
-ADDRESS_MAP_END
+void highvdeo_state::newmcard_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); /*irq vector area*/
+ map(0x00400, 0x0ffff).ram().share("nvram");
+ map(0x40000, 0x7ffff).ram().share("blit_ram"); /*blitter ram*/
+ map(0x80000, 0xbffff).bankr("bank1");
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void highvdeo_state::newmcard_io(address_map &map)
+{
+ map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::newmcard_status_r));
+ map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::tv_tcf_bankselect_w));
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
+ map(0x0004, 0x0005).w(this, FUNC(highvdeo_state::newmcard_vblank_w));
+ map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w));
+ map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r));
+ map(0x000c, 0x000d).r(this, FUNC(highvdeo_state::newmcard_vblank_r));
+ map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r));
+ map(0x0010, 0x0010).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0012, 0x0012).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x0014, 0x0014).w("ramdac", FUNC(ramdac_device::pal_w));
+}
/****************************
*
@@ -624,52 +634,56 @@ READ16_MEMBER(highvdeo_state::magicbom_status_r)
}
-ADDRESS_MAP_START(highvdeo_state::brasil_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
- AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x40000, 0x7ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/
- AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::brasil_io)
- AM_RANGE(0x0030, 0x0033) AM_READ(brasil_status_r )
- AM_RANGE(0x0030, 0x0031) AM_WRITE(brasil_status_w )
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout
- AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ(read0_r )
- AM_RANGE(0x000a, 0x000b) AM_READ(read1_r )
- AM_RANGE(0x000e, 0x000f) AM_READ(read2_r )
+void highvdeo_state::brasil_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); /*irq vector area*/
+ map(0x00400, 0x0ffff).ram().share("nvram");
+ map(0x40000, 0x7ffff).ram().share("blit_ram"); /*blitter ram*/
+ map(0x80000, 0xbffff).bankr("bank1");
+ map(0xc0000, 0xfffff).rom().region("boot_prg", 0);
+}
+
+void highvdeo_state::brasil_io(address_map &map)
+{
+ map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::brasil_status_r));
+ map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::brasil_status_w));
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
+ map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w));
+ map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r));
+ map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r));
// AM_RANGE(0x000e, 0x000f) AM_WRITE
// AM_RANGE(0xffa2, 0xffa3) AM_WRITE
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::grancapi_io)
- AM_RANGE(0x0030, 0x0033) AM_READ(grancapi_status_r )
- AM_RANGE(0x000e, 0x000f) AM_WRITE(grancapi_status_w )
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout
- AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ(read0_r )
- AM_RANGE(0x000a, 0x000b) AM_READ(read1_r )
- AM_RANGE(0x000e, 0x000f) AM_READ(read2_r )
+}
+
+void highvdeo_state::grancapi_io(address_map &map)
+{
+ map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::grancapi_status_r));
+ map(0x000e, 0x000f).w(this, FUNC(highvdeo_state::grancapi_status_w));
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
+ map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w));
+ map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r));
+ map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r));
// AM_RANGE(0x000e, 0x000f) AM_WRITE
// AM_RANGE(0xffa2, 0xffa3) AM_WRITE
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(highvdeo_state::magicbom_io)
- AM_RANGE(0x0030, 0x0033) AM_READ(magicbom_status_r )
- AM_RANGE(0x000e, 0x000f) AM_WRITE(grancapi_status_w )
- AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout
- AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ(read0_r )
- AM_RANGE(0x000a, 0x000b) AM_READ(read1_r )
- AM_RANGE(0x000e, 0x000f) AM_READ(read2_r )
+}
+
+void highvdeo_state::magicbom_io(address_map &map)
+{
+ map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::magicbom_status_r));
+ map(0x000e, 0x000f).w(this, FUNC(highvdeo_state::grancapi_status_w));
+ map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps
+ map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
+ map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w));
+ map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r));
+ map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r));
+ map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r));
// AM_RANGE(0x000e, 0x000f) AM_WRITE
// AM_RANGE(0xffa2, 0xffa3) AM_WRITE
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( tv_vcf )
@@ -1143,9 +1157,10 @@ INTERRUPT_GEN_MEMBER(highvdeo_state::vblank_irq_80186)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(highvdeo_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void highvdeo_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(highvdeo_state::tv_vcf)
diff --git a/src/mame/drivers/hikaru.cpp b/src/mame/drivers/hikaru.cpp
index a934abdafc7..e4631a199b6 100644
--- a/src/mame/drivers/hikaru.cpp
+++ b/src/mame/drivers/hikaru.cpp
@@ -445,43 +445,45 @@ INPUT_PORTS_END
*/
-ADDRESS_MAP_START(hikaru_state::hikaru_map)
+void hikaru_state::hikaru_map(address_map &map)
+{
// Area 0
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_SHARE("share1") // boot ROM
- AM_RANGE(0x00400000, 0x00400007) AM_NOP // unknown
- AM_RANGE(0x00800000, 0x0083ffff) AM_NOP // MIE + Service/Test switches and more
- AM_RANGE(0x00c00000, 0x00c0ffff) AM_RAM // backup RAM
- AM_RANGE(0x01000000, 0x01000007) AM_NOP // unknown
- AM_RANGE(0x01000100, 0x01000107) AM_NOP // unknown
- AM_RANGE(0x02000000, 0x02ffffff) AM_NOP // banked area (ROMBD + AICA + COMM + other devices)
- AM_RANGE(0x03000000, 0x03ffffff) AM_NOP // banked area (ROMBD + EEPROM + COMM + other devices)
+ map(0x00000000, 0x001fffff).rom().share("share1"); // boot ROM
+ map(0x00400000, 0x00400007).noprw(); // unknown
+ map(0x00800000, 0x0083ffff).noprw(); // MIE + Service/Test switches and more
+ map(0x00c00000, 0x00c0ffff).ram(); // backup RAM
+ map(0x01000000, 0x01000007).noprw(); // unknown
+ map(0x01000100, 0x01000107).noprw(); // unknown
+ map(0x02000000, 0x02ffffff).noprw(); // banked area (ROMBD + AICA + COMM + other devices)
+ map(0x03000000, 0x03ffffff).noprw(); // banked area (ROMBD + EEPROM + COMM + other devices)
// Area 1
- AM_RANGE(0x04000000, 0x0400003f) AM_NOP // memory controller (Master)
+ map(0x04000000, 0x0400003f).noprw(); // memory controller (Master)
// Area 3
- AM_RANGE(0x0c000000, 0x0dffffff) AM_RAM // main Work RAM
+ map(0x0c000000, 0x0dffffff).ram(); // main Work RAM
// Area 5
- AM_RANGE(0x14000000, 0x140000ff) AM_NOP // Master/Slave COMM
- AM_RANGE(0x14000100, 0x143fffff) AM_RAM // GPU command RAM
- AM_RANGE(0x15000000, 0x150000ff) AM_NOP // GPU Regs
- AM_RANGE(0x16010000, 0x17ffffff) AM_RAM // Slave Work RAM
- AM_RANGE(0x16001000, 0x163fffff) AM_RAM // ? \ these two overlap [selected by 040000xx = 0x04,0x06,0x40]
+ map(0x14000000, 0x140000ff).noprw(); // Master/Slave COMM
+ map(0x14000100, 0x143fffff).ram(); // GPU command RAM
+ map(0x15000000, 0x150000ff).noprw(); // GPU Regs
+ map(0x16010000, 0x17ffffff).ram(); // Slave Work RAM
+ map(0x16001000, 0x163fffff).ram(); // ? \ these two overlap [selected by 040000xx = 0x04,0x06,0x40]
// Area 6
- AM_RANGE(0x18001000, 0x1800101f) AM_NOP // unknown
- AM_RANGE(0x1a000000, 0x1a000107) AM_NOP // GPU Regs
- AM_RANGE(0x1a000180, 0x1a0001bf) AM_NOP // GPU Texture Regs A
- AM_RANGE(0x1a000200, 0x1a00023f) AM_NOP // GPU Texture Regs B
- AM_RANGE(0x1a040000, 0x1a04000f) AM_NOP // GPU Texture FIFO (?)
- AM_RANGE(0x1b000000, 0x1b7fffff) AM_NOP // GPU Texture RAM and framebuffer (a 2048x2048x16-bit sheet?)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hikaru_state::hikaru_map_slave)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x001FFFFF) AM_ROM AM_SHARE("share1")
- AM_RANGE(0x0C000000, 0x0DFFFFFF) AM_RAM
- AM_RANGE(0x10000000, 0x100000FF) AM_RAM
- AM_RANGE(0x1A800000, 0x1A8000FF) AM_RAM
- AM_RANGE(0x1B000000, 0x1B0001FF) AM_RAM
-ADDRESS_MAP_END
+ map(0x18001000, 0x1800101f).noprw(); // unknown
+ map(0x1a000000, 0x1a000107).noprw(); // GPU Regs
+ map(0x1a000180, 0x1a0001bf).noprw(); // GPU Texture Regs A
+ map(0x1a000200, 0x1a00023f).noprw(); // GPU Texture Regs B
+ map(0x1a040000, 0x1a04000f).noprw(); // GPU Texture FIFO (?)
+ map(0x1b000000, 0x1b7fffff).noprw(); // GPU Texture RAM and framebuffer (a 2048x2048x16-bit sheet?)
+}
+
+void hikaru_state::hikaru_map_slave(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x001FFFFF).rom().share("share1");
+ map(0x0C000000, 0x0DFFFFFF).ram();
+ map(0x10000000, 0x100000FF).ram();
+ map(0x1A800000, 0x1A8000FF).ram();
+ map(0x1B000000, 0x1B0001FF).ram();
+}
MACHINE_CONFIG_START(hikaru_state::hikaru)
diff --git a/src/mame/drivers/himesiki.cpp b/src/mame/drivers/himesiki.cpp
index f8a9521ab13..53cceda8675 100644
--- a/src/mame/drivers/himesiki.cpp
+++ b/src/mame/drivers/himesiki.cpp
@@ -123,38 +123,42 @@ WRITE8_MEMBER(himesiki_state::himesiki_sound_w)
/****************************************************************************/
-ADDRESS_MAP_START(himesiki_state::himesiki_prm0)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa100, 0xa7ff) AM_RAM AM_SHARE("sprram_p103a") // not on Android
- AM_RANGE(0xa800, 0xafff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xb000, 0xbfff) AM_RAM_WRITE(himesiki_bg_ram_w) AM_SHARE("bg_ram")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(himesiki_state::himesiki_iom0)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) // inputs
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) // dips + rombank
- AM_RANGE(0x08, 0x08) AM_WRITE(himesiki_scrolly_w)
- AM_RANGE(0x09, 0x0a) AM_WRITE(himesiki_scrollx_w)
- AM_RANGE(0x0b, 0x0b) AM_WRITE(himesiki_sound_w)
-ADDRESS_MAP_END
-
-
-
-
-ADDRESS_MAP_START(himesiki_state::himesiki_prm1)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(himesiki_state::himesiki_iom1)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void himesiki_state::himesiki_prm0(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa0ff).ram().share("spriteram");
+ map(0xa100, 0xa7ff).ram().share("sprram_p103a"); // not on Android
+ map(0xa800, 0xafff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xb000, 0xbfff).ram().w(this, FUNC(himesiki_state::himesiki_bg_ram_w)).share("bg_ram");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+void himesiki_state::himesiki_iom0(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // inputs
+ map(0x04, 0x07).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // dips + rombank
+ map(0x08, 0x08).w(this, FUNC(himesiki_state::himesiki_scrolly_w));
+ map(0x09, 0x0a).w(this, FUNC(himesiki_state::himesiki_scrollx_w));
+ map(0x0b, 0x0b).w(this, FUNC(himesiki_state::himesiki_sound_w));
+}
+
+
+
+
+void himesiki_state::himesiki_prm1(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void himesiki_state::himesiki_iom1(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/****************************************************************************/
diff --git a/src/mame/drivers/hitme.cpp b/src/mame/drivers/hitme.cpp
index fc127657b3e..590095d4213 100644
--- a/src/mame/drivers/hitme.cpp
+++ b/src/mame/drivers/hitme.cpp
@@ -220,32 +220,34 @@ WRITE8_MEMBER(hitme_state::output_port_1_w)
upper 8 bits.
*/
-ADDRESS_MAP_START(hitme_state::hitme_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x09ff) AM_ROM
- AM_RANGE(0x0c00, 0x0eff) AM_RAM_WRITE(hitme_vidram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x300) AM_RAM
- AM_RANGE(0x1400, 0x14ff) AM_READ(hitme_port_0_r)
- AM_RANGE(0x1500, 0x15ff) AM_READ(hitme_port_1_r)
- AM_RANGE(0x1600, 0x16ff) AM_READ(hitme_port_2_r)
- AM_RANGE(0x1700, 0x17ff) AM_READ(hitme_port_3_r)
- AM_RANGE(0x1800, 0x18ff) AM_READ_PORT("IN4")
- AM_RANGE(0x1900, 0x19ff) AM_READ_PORT("IN5")
- AM_RANGE(0x1d00, 0x1dff) AM_WRITE(output_port_0_w)
- AM_RANGE(0x1e00, 0x1fff) AM_WRITE(output_port_1_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(hitme_state::hitme_portmap)
- AM_RANGE(0x14, 0x14) AM_READ(hitme_port_0_r)
- AM_RANGE(0x15, 0x15) AM_READ(hitme_port_1_r)
- AM_RANGE(0x16, 0x16) AM_READ(hitme_port_2_r)
- AM_RANGE(0x17, 0x17) AM_READ(hitme_port_3_r)
- AM_RANGE(0x18, 0x18) AM_READ_PORT("IN4")
- AM_RANGE(0x19, 0x19) AM_READ_PORT("IN5")
- AM_RANGE(0x1d, 0x1d) AM_WRITE(output_port_0_w)
- AM_RANGE(0x1e, 0x1f) AM_WRITE(output_port_1_w)
-ADDRESS_MAP_END
+void hitme_state::hitme_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x09ff).rom();
+ map(0x0c00, 0x0eff).ram().w(this, FUNC(hitme_state::hitme_vidram_w)).share("videoram");
+ map(0x1000, 0x10ff).mirror(0x300).ram();
+ map(0x1400, 0x14ff).r(this, FUNC(hitme_state::hitme_port_0_r));
+ map(0x1500, 0x15ff).r(this, FUNC(hitme_state::hitme_port_1_r));
+ map(0x1600, 0x16ff).r(this, FUNC(hitme_state::hitme_port_2_r));
+ map(0x1700, 0x17ff).r(this, FUNC(hitme_state::hitme_port_3_r));
+ map(0x1800, 0x18ff).portr("IN4");
+ map(0x1900, 0x19ff).portr("IN5");
+ map(0x1d00, 0x1dff).w(this, FUNC(hitme_state::output_port_0_w));
+ map(0x1e00, 0x1fff).w(this, FUNC(hitme_state::output_port_1_w));
+}
+
+
+void hitme_state::hitme_portmap(address_map &map)
+{
+ map(0x14, 0x14).r(this, FUNC(hitme_state::hitme_port_0_r));
+ map(0x15, 0x15).r(this, FUNC(hitme_state::hitme_port_1_r));
+ map(0x16, 0x16).r(this, FUNC(hitme_state::hitme_port_2_r));
+ map(0x17, 0x17).r(this, FUNC(hitme_state::hitme_port_3_r));
+ map(0x18, 0x18).portr("IN4");
+ map(0x19, 0x19).portr("IN5");
+ map(0x1d, 0x1d).w(this, FUNC(hitme_state::output_port_0_w));
+ map(0x1e, 0x1f).w(this, FUNC(hitme_state::output_port_1_w));
+}
diff --git a/src/mame/drivers/hitpoker.cpp b/src/mame/drivers/hitpoker.cpp
index 2e10fe90e2d..cff0777a6bd 100644
--- a/src/mame/drivers/hitpoker.cpp
+++ b/src/mame/drivers/hitpoker.cpp
@@ -257,32 +257,34 @@ READ8_MEMBER(hitpoker_state::test_r)
#endif
/* overlap empty rom addresses */
-ADDRESS_MAP_START(hitpoker_state::hitpoker_map)
- AM_RANGE(0x0000, 0xbdff) AM_ROM
- AM_RANGE(0xbf00, 0xffff) AM_ROM
-
- AM_RANGE(0x0000, 0x00ff) AM_RAM // stack ram
- AM_RANGE(0x1000, 0x103f) AM_RAM // internal I/O
- AM_RANGE(0x8000, 0xb5ff) AM_READWRITE(hitpoker_vram_r,hitpoker_vram_w)
- AM_RANGE(0xb600, 0xbdff) AM_RAM
- AM_RANGE(0xbe0a, 0xbe0a) AM_READ_PORT("IN0")
- AM_RANGE(0xbe0c, 0xbe0c) AM_READ_PORT("IN2") //irq ack?
- AM_RANGE(0xbe0d, 0xbe0d) AM_READ(rtc_r)
- AM_RANGE(0xbe0e, 0xbe0e) AM_READ_PORT("IN1")
- AM_RANGE(0xbe50, 0xbe51) AM_WRITE(eeprom_offset_w)
- AM_RANGE(0xbe53, 0xbe53) AM_READWRITE(eeprom_r, eeprom_w)
- AM_RANGE(0xbe80, 0xbe80) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xbe81, 0xbe81) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_data_w)
- AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well
+void hitpoker_state::hitpoker_map(address_map &map)
+{
+ map(0x0000, 0xbdff).rom();
+ map(0xbf00, 0xffff).rom();
+
+ map(0x0000, 0x00ff).ram(); // stack ram
+ map(0x1000, 0x103f).ram(); // internal I/O
+ map(0x8000, 0xb5ff).rw(this, FUNC(hitpoker_state::hitpoker_vram_r), FUNC(hitpoker_state::hitpoker_vram_w));
+ map(0xb600, 0xbdff).ram();
+ map(0xbe0a, 0xbe0a).portr("IN0");
+ map(0xbe0c, 0xbe0c).portr("IN2"); //irq ack?
+ map(0xbe0d, 0xbe0d).r(this, FUNC(hitpoker_state::rtc_r));
+ map(0xbe0e, 0xbe0e).portr("IN1");
+ map(0xbe50, 0xbe51).w(this, FUNC(hitpoker_state::eeprom_offset_w));
+ map(0xbe53, 0xbe53).rw(this, FUNC(hitpoker_state::eeprom_r), FUNC(hitpoker_state::eeprom_w));
+ map(0xbe80, 0xbe80).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xbe81, 0xbe81).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xbe90, 0xbe91).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0xbea0, 0xbea0).portr("VBLANK"); //probably other bits as well
// AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r)
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(hitpoker_cram_r,hitpoker_cram_w)
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(hitpoker_paletteram_r,hitpoker_paletteram_w)
-ADDRESS_MAP_END
+ map(0xc000, 0xdfff).rw(this, FUNC(hitpoker_state::hitpoker_cram_r), FUNC(hitpoker_state::hitpoker_cram_w));
+ map(0xe000, 0xefff).rw(this, FUNC(hitpoker_state::hitpoker_paletteram_r), FUNC(hitpoker_state::hitpoker_paletteram_w));
+}
-ADDRESS_MAP_START(hitpoker_state::hitpoker_io)
- AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE(hitpoker_pic_r,hitpoker_pic_w) AM_SHARE("sys_regs")
-ADDRESS_MAP_END
+void hitpoker_state::hitpoker_io(address_map &map)
+{
+ map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).rw(this, FUNC(hitpoker_state::hitpoker_pic_r), FUNC(hitpoker_state::hitpoker_pic_w)).share("sys_regs");
+}
static INPUT_PORTS_START( hitpoker )
PORT_START("VBLANK")
diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp
index 019a8a866a7..20412157a61 100644
--- a/src/mame/drivers/hk68v10.cpp
+++ b/src/mame/drivers/hk68v10.cpp
@@ -222,21 +222,22 @@ required_device<scc8530_device> m_sccterm;
uint16_t m_sysram[4];
};
-ADDRESS_MAP_START(hk68v10_state::hk68v10_mem)
-ADDRESS_MAP_UNMAP_HIGH
-AM_RANGE (0x000000, 0x000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */
-AM_RANGE (0x000000, 0x000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just durin reset */
-AM_RANGE (0x000008, 0x1fffff) AM_RAM /* 2 Mb RAM */
-AM_RANGE (0xFC0000, 0xFC3fff) AM_ROM /* System EPROM Area 16Kb HBUG */
-AM_RANGE (0xFC4000, 0xFDffff) AM_ROM /* System EPROM Area an additional 112Kb for System ROM */
-AM_RANGE (0xFE9000, 0xFE9007) AM_DEVREADWRITE8("cio", z8536_device, read, write, 0xff00)
-AM_RANGE (0xFEA000, 0xFEA001) AM_DEVREADWRITE8("scc", scc8530_device, ca_r, ca_w, 0xff00) /* Dual serial port Z80-SCC */
-AM_RANGE (0xFEA002, 0xFEA003) AM_DEVREADWRITE8("scc", scc8530_device, cb_r, cb_w, 0xff00) /* Dual serial port Z80-SCC */
-AM_RANGE (0xFEA004, 0xFEA005) AM_DEVREADWRITE8("scc", scc8530_device, da_r, da_w, 0xff00) /* Dual serial port Z80-SCC */
-AM_RANGE (0xFEA006, 0xFEA007) AM_DEVREADWRITE8("scc", scc8530_device, db_r, db_w, 0xff00) /* Dual serial port Z80-SCC */
+void hk68v10_state::hk68v10_mem(address_map &map)
+{
+map.unmap_value_high();
+map(0x000000, 0x000007).ram().w(this, FUNC(hk68v10_state::bootvect_w)); /* After first write we act as RAM */
+map(0x000000, 0x000007).rom().r(this, FUNC(hk68v10_state::bootvect_r)); /* ROM mirror just durin reset */
+map(0x000008, 0x1fffff).ram(); /* 2 Mb RAM */
+map(0xFC0000, 0xFC3fff).rom(); /* System EPROM Area 16Kb HBUG */
+map(0xFC4000, 0xFDffff).rom(); /* System EPROM Area an additional 112Kb for System ROM */
+map(0xFE9000, 0xFE9007).rw("cio", FUNC(z8536_device::read), FUNC(z8536_device::write)).umask16(0xff00);
+map(0xfea000, 0xfea000).rw(m_sccterm, FUNC(scc8530_device::ca_r), FUNC(scc8530_device::ca_w)); /* Dual serial port Z80-SCC */
+map(0xfea002, 0xfea002).rw(m_sccterm, FUNC(scc8530_device::cb_r), FUNC(scc8530_device::cb_w)); /* Dual serial port Z80-SCC */
+map(0xfea004, 0xfea004).rw(m_sccterm, FUNC(scc8530_device::da_r), FUNC(scc8530_device::da_w)); /* Dual serial port Z80-SCC */
+map(0xfea006, 0xfea006).rw(m_sccterm, FUNC(scc8530_device::db_r), FUNC(scc8530_device::db_w)); /* Dual serial port Z80-SCC */
//AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */
//AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START (hk68v10)
diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp
index 80ed2483ecf..193cdcf2405 100644
--- a/src/mame/drivers/hnayayoi.cpp
+++ b/src/mame/drivers/hnayayoi.cpp
@@ -106,77 +106,82 @@ WRITE_LINE_MEMBER(hnayayoi_state::nmi_clock_w)
}
-ADDRESS_MAP_START(hnayayoi_state::hnayayoi_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hnayayoi_state::hnayayoi_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0x02, 0x03) AM_DEVREAD("ymsnd", ym2203_device, read)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW3")
- AM_RANGE(0x06, 0x06) AM_WRITE(adpcm_data_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("crtc", hd6845_device, address_w)
- AM_RANGE(0x09, 0x09) AM_DEVWRITE("crtc", hd6845_device, register_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(dynax_blitter_rev1_start_w)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(dynax_blitter_rev1_clear_w)
- AM_RANGE(0x20, 0x27) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x40, 0x40) AM_WRITE(keyboard_w)
- AM_RANGE(0x41, 0x41) AM_READ(keyboard_0_r)
- AM_RANGE(0x42, 0x42) AM_READ(keyboard_1_r)
- AM_RANGE(0x43, 0x43) AM_READ_PORT("COIN")
- AM_RANGE(0x60, 0x61) AM_WRITE(hnayayoi_palbank_w)
- AM_RANGE(0x62, 0x67) AM_WRITE(dynax_blitter_rev1_param_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hnayayoi_state::hnfubuki_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0xfeff) AM_ROM
- AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xff02, 0xff03) AM_DEVREAD("ymsnd", ym2203_device, read)
- AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW3")
- AM_RANGE(0xff06, 0xff06) AM_WRITE(adpcm_data_w)
- AM_RANGE(0xff08, 0xff08) AM_DEVWRITE("crtc", hd6845_device, address_w)
- AM_RANGE(0xff09, 0xff09) AM_DEVWRITE("crtc", hd6845_device, register_w)
- AM_RANGE(0xff0a, 0xff0a) AM_WRITE(dynax_blitter_rev1_start_w)
- AM_RANGE(0xff0c, 0xff0c) AM_WRITE(dynax_blitter_rev1_clear_w)
- AM_RANGE(0xff20, 0xff27) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xff40, 0xff40) AM_WRITE(keyboard_w)
- AM_RANGE(0xff41, 0xff41) AM_READ(keyboard_0_r)
- AM_RANGE(0xff42, 0xff42) AM_READ(keyboard_1_r)
- AM_RANGE(0xff43, 0xff43) AM_READ_PORT("COIN")
- AM_RANGE(0xff60, 0xff61) AM_WRITE(hnayayoi_palbank_w)
- AM_RANGE(0xff62, 0xff67) AM_WRITE(dynax_blitter_rev1_param_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hnayayoi_state::untoucha_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hnayayoi_state::untoucha_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("ymsnd", ym2203_device, control_port_w)
- AM_RANGE(0x11, 0x11) AM_DEVREAD("ymsnd", ym2203_device, status_port_r)
- AM_RANGE(0x12, 0x12) AM_DEVWRITE("crtc", hd6845_device, address_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(adpcm_data_w)
- AM_RANGE(0x14, 0x14) AM_READ_PORT("COIN")
- AM_RANGE(0x15, 0x15) AM_READ(keyboard_1_r)
- AM_RANGE(0x16, 0x16) AM_READ(keyboard_0_r) // bit 7 = blitter busy flag
- AM_RANGE(0x17, 0x17) AM_WRITE(keyboard_w)
- AM_RANGE(0x18, 0x19) AM_WRITE(hnayayoi_palbank_w)
- AM_RANGE(0x1a, 0x1f) AM_WRITE(dynax_blitter_rev1_param_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(dynax_blitter_rev1_clear_w)
- AM_RANGE(0x28, 0x28) AM_WRITE(dynax_blitter_rev1_start_w)
- AM_RANGE(0x30, 0x37) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("ymsnd", ym2203_device, write_port_w)
- AM_RANGE(0x51, 0x51) AM_DEVREAD("ymsnd", ym2203_device, read_port_r)
- AM_RANGE(0x52, 0x52) AM_DEVWRITE("crtc", hd6845_device, register_w)
-ADDRESS_MAP_END
+void hnayayoi_state::hnayayoi_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).rom();
+}
+
+void hnayayoi_state::hnayayoi_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ymsnd", FUNC(ym2203_device::write));
+ map(0x02, 0x03).r("ymsnd", FUNC(ym2203_device::read));
+ map(0x04, 0x04).portr("DSW3");
+ map(0x06, 0x06).w(this, FUNC(hnayayoi_state::adpcm_data_w));
+ map(0x08, 0x08).w("crtc", FUNC(hd6845_device::address_w));
+ map(0x09, 0x09).w("crtc", FUNC(hd6845_device::register_w));
+ map(0x0a, 0x0a).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_start_w));
+ map(0x0c, 0x0c).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_clear_w));
+ map(0x20, 0x27).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x40, 0x40).w(this, FUNC(hnayayoi_state::keyboard_w));
+ map(0x41, 0x41).r(this, FUNC(hnayayoi_state::keyboard_0_r));
+ map(0x42, 0x42).r(this, FUNC(hnayayoi_state::keyboard_1_r));
+ map(0x43, 0x43).portr("COIN");
+ map(0x60, 0x61).w(this, FUNC(hnayayoi_state::hnayayoi_palbank_w));
+ map(0x62, 0x67).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_param_w));
+}
+
+void hnayayoi_state::hnfubuki_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xfeff).rom();
+ map(0xff00, 0xff01).w("ymsnd", FUNC(ym2203_device::write));
+ map(0xff02, 0xff03).r("ymsnd", FUNC(ym2203_device::read));
+ map(0xff04, 0xff04).portr("DSW3");
+ map(0xff06, 0xff06).w(this, FUNC(hnayayoi_state::adpcm_data_w));
+ map(0xff08, 0xff08).w("crtc", FUNC(hd6845_device::address_w));
+ map(0xff09, 0xff09).w("crtc", FUNC(hd6845_device::register_w));
+ map(0xff0a, 0xff0a).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_start_w));
+ map(0xff0c, 0xff0c).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_clear_w));
+ map(0xff20, 0xff27).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xff40, 0xff40).w(this, FUNC(hnayayoi_state::keyboard_w));
+ map(0xff41, 0xff41).r(this, FUNC(hnayayoi_state::keyboard_0_r));
+ map(0xff42, 0xff42).r(this, FUNC(hnayayoi_state::keyboard_1_r));
+ map(0xff43, 0xff43).portr("COIN");
+ map(0xff60, 0xff61).w(this, FUNC(hnayayoi_state::hnayayoi_palbank_w));
+ map(0xff62, 0xff67).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_param_w));
+}
+
+void hnayayoi_state::untoucha_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).rom();
+}
+
+void hnayayoi_state::untoucha_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w("ymsnd", FUNC(ym2203_device::control_port_w));
+ map(0x11, 0x11).r("ymsnd", FUNC(ym2203_device::status_port_r));
+ map(0x12, 0x12).w("crtc", FUNC(hd6845_device::address_w));
+ map(0x13, 0x13).w(this, FUNC(hnayayoi_state::adpcm_data_w));
+ map(0x14, 0x14).portr("COIN");
+ map(0x15, 0x15).r(this, FUNC(hnayayoi_state::keyboard_1_r));
+ map(0x16, 0x16).r(this, FUNC(hnayayoi_state::keyboard_0_r)); // bit 7 = blitter busy flag
+ map(0x17, 0x17).w(this, FUNC(hnayayoi_state::keyboard_w));
+ map(0x18, 0x19).w(this, FUNC(hnayayoi_state::hnayayoi_palbank_w));
+ map(0x1a, 0x1f).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_param_w));
+ map(0x20, 0x20).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_clear_w));
+ map(0x28, 0x28).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_start_w));
+ map(0x30, 0x37).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x50, 0x50).w("ymsnd", FUNC(ym2203_device::write_port_w));
+ map(0x51, 0x51).r("ymsnd", FUNC(ym2203_device::read_port_r));
+ map(0x52, 0x52).w("crtc", FUNC(hd6845_device::register_w));
+}
static INPUT_PORTS_START( hf_keyboard )
PORT_START("KEY0")
diff --git a/src/mame/drivers/hng64.cpp b/src/mame/drivers/hng64.cpp
index a8c90b7edb0..5f6c7b4ad7c 100644
--- a/src/mame/drivers/hng64.cpp
+++ b/src/mame/drivers/hng64.cpp
@@ -947,53 +947,54 @@ WRITE16_MEMBER(hng64_state::main_sound_comms_w)
}
-ADDRESS_MAP_START(hng64_state::hng_map)
+void hng64_state::hng_map(address_map &map)
+{
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x04000000, 0x05ffffff) AM_WRITENOP AM_ROM AM_REGION("gameprg", 0) AM_SHARE("cart")
+ map(0x00000000, 0x00ffffff).ram().share("mainram");
+ map(0x04000000, 0x05ffffff).nopw().rom().region("gameprg", 0).share("cart");
// Ports
- AM_RANGE(0x1f700000, 0x1f702fff) AM_READWRITE(hng64_sysregs_r, hng64_sysregs_w) AM_SHARE("sysregs")
+ map(0x1f700000, 0x1f702fff).rw(this, FUNC(hng64_state::hng64_sysregs_r), FUNC(hng64_state::hng64_sysregs_w)).share("sysregs");
// SRAM. Coin data, Player Statistics, etc.
- AM_RANGE(0x1F800000, 0x1F803fff) AM_RAM AM_SHARE("nvram")
+ map(0x1F800000, 0x1F803fff).ram().share("nvram");
// Dualport RAM
- AM_RANGE(0x1F808000, 0x1F8087ff) AM_READWRITE(hng64_dualport_r, hng64_dualport_w) AM_SHARE("dualport")
+ map(0x1F808000, 0x1F8087ff).rw(this, FUNC(hng64_state::hng64_dualport_r), FUNC(hng64_state::hng64_dualport_w)).share("dualport");
// BIOS
- AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase")
+ map(0x1fc00000, 0x1fc7ffff).nopw().rom().region("user1", 0).share("rombase");
// Video
- AM_RANGE(0x20000000, 0x2000bfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000d800, 0x2000e3ff) AM_WRITE(hng64_sprite_clear_even_w)
- AM_RANGE(0x2000e400, 0x2000efff) AM_WRITE(hng64_sprite_clear_odd_w)
- AM_RANGE(0x20010000, 0x20010013) AM_RAM AM_SHARE("spriteregs")
- AM_RANGE(0x20100000, 0x2017ffff) AM_RAM_WRITE(hng64_videoram_w) AM_SHARE("videoram") // Tilemap
- AM_RANGE(0x20190000, 0x20190037) AM_RAM_WRITE(hng64_vregs_w) AM_SHARE("videoregs")
- AM_RANGE(0x20200000, 0x20203fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control
- AM_RANGE(0x20300000, 0x203001ff) AM_WRITE16(dl_w,0xffffffff) // 3d Display List
- AM_RANGE(0x20300200, 0x20300203) AM_WRITE(dl_upload_w) // 3d Display List Upload
- AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w)
- AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r)
+ map(0x20000000, 0x2000bfff).ram().share("spriteram");
+ map(0x2000d800, 0x2000e3ff).w(this, FUNC(hng64_state::hng64_sprite_clear_even_w));
+ map(0x2000e400, 0x2000efff).w(this, FUNC(hng64_state::hng64_sprite_clear_odd_w));
+ map(0x20010000, 0x20010013).ram().share("spriteregs");
+ map(0x20100000, 0x2017ffff).ram().w(this, FUNC(hng64_state::hng64_videoram_w)).share("videoram"); // Tilemap
+ map(0x20190000, 0x20190037).ram().w(this, FUNC(hng64_state::hng64_vregs_w)).share("videoregs");
+ map(0x20200000, 0x20203fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x20208000, 0x2020805f).rw(this, FUNC(hng64_state::tcram_r), FUNC(hng64_state::tcram_w)).share("tcram"); // Transition Control
+ map(0x20300000, 0x203001ff).w(this, FUNC(hng64_state::dl_w)); // 3d Display List
+ map(0x20300200, 0x20300203).w(this, FUNC(hng64_state::dl_upload_w)); // 3d Display List Upload
+ map(0x20300214, 0x20300217).w(this, FUNC(hng64_state::dl_control_w));
+ map(0x20300218, 0x2030021b).r(this, FUNC(hng64_state::unk_vreg_r));
// 3d?
- AM_RANGE(0x30000000, 0x3000002f) AM_RAM AM_SHARE("3dregs")
- AM_RANGE(0x30100000, 0x3015ffff) AM_READWRITE(hng64_3d_1_r, hng64_3d_1_w) AM_SHARE("3d_1") // 3D Display Buffer A
- AM_RANGE(0x30200000, 0x3025ffff) AM_READWRITE(hng64_3d_2_r, hng64_3d_2_w) AM_SHARE("3d_2") // 3D Display Buffer B
+ map(0x30000000, 0x3000002f).ram().share("3dregs");
+ map(0x30100000, 0x3015ffff).rw(this, FUNC(hng64_state::hng64_3d_1_r), FUNC(hng64_state::hng64_3d_1_w)).share("3d_1"); // 3D Display Buffer A
+ map(0x30200000, 0x3025ffff).rw(this, FUNC(hng64_state::hng64_3d_2_r), FUNC(hng64_state::hng64_3d_2_w)).share("3d_2"); // 3D Display Buffer B
// Sound
- AM_RANGE(0x60000000, 0x601fffff) AM_READWRITE(hng64_soundram2_r, hng64_soundram2_w) // actually seems unmapped, see note in audio/hng64.c
- AM_RANGE(0x60200000, 0x603fffff) AM_READWRITE(hng64_soundram_r, hng64_soundram_w) // program + data for V53A gets uploaded here
+ map(0x60000000, 0x601fffff).rw(this, FUNC(hng64_state::hng64_soundram2_r), FUNC(hng64_state::hng64_soundram2_w)); // actually seems unmapped, see note in audio/hng64.c
+ map(0x60200000, 0x603fffff).rw(this, FUNC(hng64_state::hng64_soundram_r), FUNC(hng64_state::hng64_soundram_w)); // program + data for V53A gets uploaded here
// These are sound ports of some sort
- AM_RANGE(0x68000000, 0x6800000f) AM_READWRITE16(main_sound_comms_r,main_sound_comms_w,0xffffffff)
- AM_RANGE(0x6f000000, 0x6f000003) AM_WRITE(hng64_soundcpu_enable_w)
+ map(0x68000000, 0x6800000f).rw(this, FUNC(hng64_state::main_sound_comms_r), FUNC(hng64_state::main_sound_comms_w));
+ map(0x6f000000, 0x6f000003).w(this, FUNC(hng64_state::hng64_soundcpu_enable_w));
// Communications
- AM_RANGE(0xc0000000, 0xc0000fff) AM_READWRITE(hng64_com_r, hng64_com_w) AM_SHARE("com_ram")
- AM_RANGE(0xc0001000, 0xc0001007) AM_READWRITE8(hng64_com_share_mips_r, hng64_com_share_mips_w,0xffffffff)
+ map(0xc0000000, 0xc0000fff).rw(this, FUNC(hng64_state::hng64_com_r), FUNC(hng64_state::hng64_com_w)).share("com_ram");
+ map(0xc0001000, 0xc0001007).rw(this, FUNC(hng64_state::hng64_com_share_mips_r), FUNC(hng64_state::hng64_com_share_mips_w));
/* 6e000000-6fffffff */
/* 80000000-81ffffff */
@@ -1001,7 +1002,7 @@ ADDRESS_MAP_START(hng64_state::hng_map)
/* 90000000-97ffffff */
/* 98000000-9bffffff */
/* a0000000-a3ffffff */
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( hng64 )
diff --git a/src/mame/drivers/holeland.cpp b/src/mame/drivers/holeland.cpp
index 7c983962010..dcf41bd8d27 100644
--- a/src/mame/drivers/holeland.cpp
+++ b/src/mame/drivers/holeland.cpp
@@ -29,35 +29,38 @@ WRITE_LINE_MEMBER(holeland_state::coin_counter_w)
machine().bookkeeping().coin_counter_w(0, state);
}
-ADDRESS_MAP_START(holeland_state::holeland_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", sp0256_device, ald_w)
- AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("latch", ls259_device, write_d0) AM_READNOP
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(holeland_state::crzrally_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf000) AM_WRITE(scroll_w)
- AM_RANGE(0xf800, 0xf807) AM_DEVWRITE("latch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(holeland_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) /* ? */
- AM_RANGE(0x04, 0x04) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void holeland_state::holeland_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xbfff).rom();
+ map(0xa000, 0xa000).w("speech", FUNC(sp0256_device::ald_w));
+ map(0xc000, 0xc007).w(m_latch, FUNC(ls259_device::write_d0)).nopr();
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(holeland_state::colorram_w)).share("colorram");
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(holeland_state::videoram_w)).share("videoram");
+ map(0xf000, 0xf3ff).ram().share("spriteram");
+}
+
+void holeland_state::crzrally_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().share("nvram");
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(holeland_state::colorram_w)).share("colorram");
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(holeland_state::videoram_w)).share("videoram");
+ map(0xe800, 0xebff).ram().share("spriteram");
+ map(0xf000, 0xf000).w(this, FUNC(holeland_state::scroll_w));
+ map(0xf800, 0xf807).w(m_latch, FUNC(ls259_device::write_d0));
+}
+
+void holeland_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("watchdog", FUNC(watchdog_timer_device::reset_r)); /* ? */
+ map(0x04, 0x04).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x04, 0x05).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x06, 0x07).w("ay2", FUNC(ay8910_device::address_data_w));
+}
/* Note - manual states cocktail mode should be default */
static INPUT_PORTS_START( holeland )
diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp
index cde8c0b02e1..0fc027ae4f0 100644
--- a/src/mame/drivers/homedata.cpp
+++ b/src/mame/drivers/homedata.cpp
@@ -528,93 +528,100 @@ WRITE8_MEMBER(homedata_state::bankswitch_w)
/********************************************************************************/
-ADDRESS_MAP_START(homedata_state::mrokumei_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
- AM_RANGE(0x7000, 0x77ff) AM_RAM /* hourouki expects this to act as RAM */
- AM_RANGE(0x7800, 0x7800) AM_RAM /* only used to store the result of the ROM check */
- AM_RANGE(0x7801, 0x7802) AM_READ(mrokumei_keyboard_r) // also vblank and active page
- AM_RANGE(0x7803, 0x7803) AM_READ_PORT("IN0") // coin, service
- AM_RANGE(0x7804, 0x7804) AM_READ_PORT("DSW1") // DSW1
- AM_RANGE(0x7805, 0x7805) AM_READ_PORT("DSW2") // DSW2
- AM_RANGE(0x7ff0, 0x7ffd) AM_WRITEONLY AM_SHARE("vreg")
- AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP // ??? read every vblank, value discarded
- AM_RANGE(0x8000, 0x8000) AM_WRITE(mrokumei_blitter_start_w) // in some games also ROM bank switch to access service ROM
- AM_RANGE(0x8001, 0x8001) AM_WRITE(mrokumei_keyboard_select_w)
- AM_RANGE(0x8002, 0x8002) AM_WRITE(mrokumei_sound_cmd_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("snsnd", sn76489a_device, write)
- AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w)
- AM_RANGE(0x8007, 0x8007) AM_WRITE(mrokumei_blitter_bank_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homedata_state::mrokumei_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void homedata_state::mrokumei_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x6fff).ram(); /* work ram */
+ map(0x7000, 0x77ff).ram(); /* hourouki expects this to act as RAM */
+ map(0x7800, 0x7800).ram(); /* only used to store the result of the ROM check */
+ map(0x7801, 0x7802).r(this, FUNC(homedata_state::mrokumei_keyboard_r)); // also vblank and active page
+ map(0x7803, 0x7803).portr("IN0"); // coin, service
+ map(0x7804, 0x7804).portr("DSW1"); // DSW1
+ map(0x7805, 0x7805).portr("DSW2"); // DSW2
+ map(0x7ff0, 0x7ffd).writeonly().share("vreg");
+ map(0x7ffe, 0x7ffe).nopr(); // ??? read every vblank, value discarded
+ map(0x8000, 0x8000).w(this, FUNC(homedata_state::mrokumei_blitter_start_w)); // in some games also ROM bank switch to access service ROM
+ map(0x8001, 0x8001).w(this, FUNC(homedata_state::mrokumei_keyboard_select_w));
+ map(0x8002, 0x8002).w(this, FUNC(homedata_state::mrokumei_sound_cmd_w));
+ map(0x8003, 0x8003).w(m_sn, FUNC(sn76489a_device::write));
+ map(0x8006, 0x8006).w(this, FUNC(homedata_state::homedata_blitter_param_w));
+ map(0x8007, 0x8007).w(this, FUNC(homedata_state::mrokumei_blitter_bank_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void homedata_state::mrokumei_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
// TODO: might be that the entire area is sound_bank_w
- AM_RANGE(0xfffc, 0xfffd) AM_WRITENOP /* stack writes happen here, but there's no RAM */
- AM_RANGE(0x8080, 0x8080) AM_WRITE(mrokumei_sound_bank_w)
- AM_RANGE(0xffbf, 0xffbf) AM_WRITE(mrokumei_sound_bank_w) // hourouki mirror
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homedata_state::mrokumei_sound_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(mrokumei_sound_io_r) /* read address is 16-bit */
- AM_RANGE(0x0040, 0x0040) AM_MIRROR(0xff00) AM_DEVWRITE("dac", dac_byte_interface, write) /* write address is only 8-bit */
+ map(0xfffc, 0xfffd).nopw(); /* stack writes happen here, but there's no RAM */
+ map(0x8080, 0x8080).w(this, FUNC(homedata_state::mrokumei_sound_bank_w));
+ map(0xffbf, 0xffbf).w(this, FUNC(homedata_state::mrokumei_sound_bank_w)); // hourouki mirror
+}
+
+void homedata_state::mrokumei_sound_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(homedata_state::mrokumei_sound_io_r)); /* read address is 16-bit */
+ map(0x0040, 0x0040).mirror(0xff00).w("dac", FUNC(dac_byte_interface::write)); /* write address is only 8-bit */
// hourouki mirror...
- AM_RANGE(0x007f, 0x007f) AM_MIRROR(0xff00) AM_DEVWRITE("dac", dac_byte_interface, write) /* write address is only 8-bit */
-ADDRESS_MAP_END
+ map(0x007f, 0x007f).mirror(0xff00).w("dac", FUNC(dac_byte_interface::write)); /* write address is only 8-bit */
+}
/********************************************************************************/
-ADDRESS_MAP_START(homedata_state::reikaids_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(reikaids_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAM /* work RAM */
- AM_RANGE(0x7800, 0x7800) AM_RAM /* behaves as normal RAM */
- AM_RANGE(0x7801, 0x7801) AM_READ_PORT("IN0")
- AM_RANGE(0x7802, 0x7802) AM_READ_PORT("IN1")
- AM_RANGE(0x7803, 0x7803) AM_READ(reikaids_io_r) // coin, blitter, upd7807
- AM_RANGE(0x7ff0, 0x7ffd) AM_WRITEONLY AM_SHARE("vreg")
- AM_RANGE(0x7ffe, 0x7ffe) AM_WRITE(reikaids_blitter_bank_w)
- AM_RANGE(0x7fff, 0x7fff) AM_WRITE(reikaids_blitter_start_w)
- AM_RANGE(0x8000, 0x8000) AM_WRITE(bankswitch_w)
- AM_RANGE(0x8002, 0x8002) AM_WRITE(reikaids_snd_command_w)
- AM_RANGE(0x8005, 0x8005) AM_WRITE(reikaids_gfx_bank_w)
- AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homedata_state::reikaids_upd7807_map)
- AM_RANGE(0x0000, 0xfeff) AM_ROMBANK("bank2") /* External ROM (Banked) */
-ADDRESS_MAP_END
+void homedata_state::reikaids_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::reikaids_videoram_w)).share("videoram");
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x6fff).ram(); /* work RAM */
+ map(0x7800, 0x7800).ram(); /* behaves as normal RAM */
+ map(0x7801, 0x7801).portr("IN0");
+ map(0x7802, 0x7802).portr("IN1");
+ map(0x7803, 0x7803).r(this, FUNC(homedata_state::reikaids_io_r)); // coin, blitter, upd7807
+ map(0x7ff0, 0x7ffd).writeonly().share("vreg");
+ map(0x7ffe, 0x7ffe).w(this, FUNC(homedata_state::reikaids_blitter_bank_w));
+ map(0x7fff, 0x7fff).w(this, FUNC(homedata_state::reikaids_blitter_start_w));
+ map(0x8000, 0x8000).w(this, FUNC(homedata_state::bankswitch_w));
+ map(0x8002, 0x8002).w(this, FUNC(homedata_state::reikaids_snd_command_w));
+ map(0x8005, 0x8005).w(this, FUNC(homedata_state::reikaids_gfx_bank_w));
+ map(0x8006, 0x8006).w(this, FUNC(homedata_state::homedata_blitter_param_w));
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).rom();
+}
+
+void homedata_state::reikaids_upd7807_map(address_map &map)
+{
+ map(0x0000, 0xfeff).bankr("bank2"); /* External ROM (Banked) */
+}
/**************************************************************************/
-ADDRESS_MAP_START(homedata_state::pteacher_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x5eff) AM_RAM
- AM_RANGE(0x5f00, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
- AM_RANGE(0x7800, 0x7800) AM_RAM /* behaves as normal RAM */
- AM_RANGE(0x7801, 0x7801) AM_READ(pteacher_io_r) // vblank, visible page
- AM_RANGE(0x7ff2, 0x7ff2) AM_READ(pteacher_snd_r)
- AM_RANGE(0x7ff0, 0x7ffd) AM_WRITEONLY AM_SHARE("vreg")
- AM_RANGE(0x7fff, 0x7fff) AM_WRITE(pteacher_blitter_start_w)
- AM_RANGE(0x8000, 0x8000) AM_WRITE(bankswitch_w)
- AM_RANGE(0x8002, 0x8002) AM_WRITE(pteacher_snd_command_w)
- AM_RANGE(0x8005, 0x8005) AM_WRITE(pteacher_blitter_bank_w)
- AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w)
- AM_RANGE(0x8007, 0x8007) AM_WRITE(pteacher_gfx_bank_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homedata_state::pteacher_upd7807_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(pteacher_snd_answer_w)
- AM_RANGE(0x0000, 0xfeff) AM_ROMBANK("bank2") /* External ROM (Banked) */
-ADDRESS_MAP_END
+void homedata_state::pteacher_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
+ map(0x4000, 0x5eff).ram();
+ map(0x5f00, 0x5fff).ram();
+ map(0x6000, 0x6fff).ram(); /* work ram */
+ map(0x7800, 0x7800).ram(); /* behaves as normal RAM */
+ map(0x7801, 0x7801).r(this, FUNC(homedata_state::pteacher_io_r)); // vblank, visible page
+ map(0x7ff2, 0x7ff2).r(this, FUNC(homedata_state::pteacher_snd_r));
+ map(0x7ff0, 0x7ffd).writeonly().share("vreg");
+ map(0x7fff, 0x7fff).w(this, FUNC(homedata_state::pteacher_blitter_start_w));
+ map(0x8000, 0x8000).w(this, FUNC(homedata_state::bankswitch_w));
+ map(0x8002, 0x8002).w(this, FUNC(homedata_state::pteacher_snd_command_w));
+ map(0x8005, 0x8005).w(this, FUNC(homedata_state::pteacher_blitter_bank_w));
+ map(0x8006, 0x8006).w(this, FUNC(homedata_state::homedata_blitter_param_w));
+ map(0x8007, 0x8007).w(this, FUNC(homedata_state::pteacher_gfx_bank_w));
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).rom();
+}
+
+void homedata_state::pteacher_upd7807_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(homedata_state::pteacher_snd_answer_w));
+ map(0x0000, 0xfeff).bankr("bank2"); /* External ROM (Banked) */
+}
/**************************************************************************/
@@ -1384,19 +1391,21 @@ static INPUT_PORTS_START( mirderby )
INPUT_PORTS_END
-ADDRESS_MAP_START(homedata_state::cpu0_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void homedata_state::cpu0_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
-ADDRESS_MAP_START(homedata_state::cpu1_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM // videoram
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
- AM_RANGE(0x7000, 0x77ff) AM_RAM
+void homedata_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram(); // videoram
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x6fff).ram(); /* work ram */
+ map(0x7000, 0x77ff).ram();
//0x7ff0 onward is the blitter
- AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x7ffe, 0x7ffe).nopr(); //watchdog
+ map(0x8000, 0xffff).rom();
+}
READ8_MEMBER(homedata_state::mirderby_prot_r)
@@ -1411,15 +1420,16 @@ WRITE8_MEMBER(homedata_state::mirderby_prot_w)
}
-ADDRESS_MAP_START(homedata_state::cpu2_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
- AM_RANGE(0x7000, 0x77ff) AM_RAM
- AM_RANGE(0x7800, 0x7800) AM_READWRITE(mirderby_prot_r, mirderby_prot_w) // protection check? (or sound comms?)
- AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void homedata_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::mrokumei_videoram_w)).share("videoram");
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x6fff).ram(); /* work ram */
+ map(0x7000, 0x77ff).ram();
+ map(0x7800, 0x7800).rw(this, FUNC(homedata_state::mirderby_prot_r), FUNC(homedata_state::mirderby_prot_w)); // protection check? (or sound comms?)
+ map(0x7ffe, 0x7ffe).nopr(); //watchdog
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp
index 1799824d215..8e3f6502265 100644
--- a/src/mame/drivers/homelab.cpp
+++ b/src/mame/drivers/homelab.cpp
@@ -206,49 +206,54 @@ READ8_MEMBER( homelab_state::exxx_r )
/* Address maps */
-ADDRESS_MAP_START(homelab_state::homelab2_mem)
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM // ROM 1
- AM_RANGE( 0x0800, 0x0fff ) AM_ROM // ROM 2
- AM_RANGE( 0x1000, 0x17ff ) AM_ROM // ROM 3
- AM_RANGE( 0x1800, 0x1fff ) AM_ROM // ROM 4
- AM_RANGE( 0x2000, 0x27ff ) AM_ROM // ROM 5
- AM_RANGE( 0x2800, 0x2fff ) AM_ROM // ROM 6
- AM_RANGE( 0x3000, 0x37ff ) AM_ROM // Empty
- AM_RANGE( 0x3800, 0x3fff ) AM_READWRITE(key_r,cass_w)
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM
- AM_RANGE( 0xc000, 0xc3ff ) AM_RAM AM_REGION("maincpu",0xc000)
- AM_RANGE( 0xe000, 0xe0ff ) AM_READ(cass2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homelab_state::homelab3_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM
- AM_RANGE( 0xe800, 0xefff ) AM_READ(exxx_r)
- AM_RANGE( 0xf800, 0xffff ) AM_RAM AM_REGION("maincpu",0xf800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homelab_state::homelab3_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x7f, 0x7f ) AM_WRITE(port7f_w)
- AM_RANGE( 0xff, 0xff ) AM_WRITE(portff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homelab_state::brailab4_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0xcfff ) AM_RAM
- AM_RANGE( 0xd000, 0xdfff ) AM_ROM
- AM_RANGE( 0xe800, 0xefff ) AM_READ(exxx_r)
- AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homelab_state::brailab4_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0xf8, 0xf9 ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write)
- AM_RANGE( 0x7f, 0x7f ) AM_WRITE(brailab4_port7f_w)
- AM_RANGE( 0xff, 0xff ) AM_WRITE(brailab4_portff_w)
-ADDRESS_MAP_END
+void homelab_state::homelab2_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom(); // ROM 1
+ map(0x0800, 0x0fff).rom(); // ROM 2
+ map(0x1000, 0x17ff).rom(); // ROM 3
+ map(0x1800, 0x1fff).rom(); // ROM 4
+ map(0x2000, 0x27ff).rom(); // ROM 5
+ map(0x2800, 0x2fff).rom(); // ROM 6
+ map(0x3000, 0x37ff).rom(); // Empty
+ map(0x3800, 0x3fff).rw(this, FUNC(homelab_state::key_r), FUNC(homelab_state::cass_w));
+ map(0x4000, 0x7fff).ram();
+ map(0xc000, 0xc3ff).ram().region("maincpu", 0xc000);
+ map(0xe000, 0xe0ff).r(this, FUNC(homelab_state::cass2_r));
+}
+
+void homelab_state::homelab3_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).ram();
+ map(0xe800, 0xefff).r(this, FUNC(homelab_state::exxx_r));
+ map(0xf800, 0xffff).ram().region("maincpu", 0xf800);
+}
+
+void homelab_state::homelab3_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x7f, 0x7f).w(this, FUNC(homelab_state::port7f_w));
+ map(0xff, 0xff).w(this, FUNC(homelab_state::portff_w));
+}
+
+void homelab_state::brailab4_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0xcfff).ram();
+ map(0xd000, 0xdfff).rom();
+ map(0xe800, 0xefff).r(this, FUNC(homelab_state::exxx_r));
+ map(0xf800, 0xffff).bankrw("bank1");
+}
+
+void homelab_state::brailab4_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xf8, 0xf9).rw("mea8000", FUNC(mea8000_device::read), FUNC(mea8000_device::write));
+ map(0x7f, 0x7f).w(this, FUNC(homelab_state::brailab4_port7f_w));
+ map(0xff, 0xff).w(this, FUNC(homelab_state::brailab4_portff_w));
+}
diff --git a/src/mame/drivers/homerun.cpp b/src/mame/drivers/homerun.cpp
index de637e51421..a82e5db535b 100644
--- a/src/mame/drivers/homerun.cpp
+++ b/src/mame/drivers/homerun.cpp
@@ -103,25 +103,27 @@ WRITE8_MEMBER(homerun_state::homerun_d7756_sample_w)
m_d7756->port_w(space, 0, data);
}
-ADDRESS_MAP_START(homerun_state::homerun_memmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(homerun_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE(homerun_color_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homerun_state::homerun_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_WRITE(homerun_d7756_sample_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(homerun_control_w)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x40, 0x40) AM_READ_PORT("IN0")
- AM_RANGE(0x50, 0x50) AM_READ_PORT("IN2")
- AM_RANGE(0x60, 0x60) AM_READ_PORT("IN1")
- AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void homerun_state::homerun_memmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x9fff).ram().w(this, FUNC(homerun_state::homerun_videoram_w)).share("videoram");
+ map(0xa000, 0xa0ff).ram().share("spriteram");
+ map(0xb000, 0xb03f).ram().w(this, FUNC(homerun_state::homerun_color_w)).share("colorram");
+ map(0xc000, 0xdfff).ram();
+}
+
+void homerun_state::homerun_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w(this, FUNC(homerun_state::homerun_d7756_sample_w));
+ map(0x20, 0x20).w(this, 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");
+ map(0x60, 0x60).portr("IN1");
+ map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
CUSTOM_INPUT_MEMBER(homerun_state::homerun_d7756_busy_r)
diff --git a/src/mame/drivers/homez80.cpp b/src/mame/drivers/homez80.cpp
index 5b10782efd9..78198a6486c 100644
--- a/src/mame/drivers/homez80.cpp
+++ b/src/mame/drivers/homez80.cpp
@@ -58,17 +58,19 @@ READ8_MEMBER( homez80_state::homez80_keyboard_r )
return ioport(kbdrow)->read();
}
-ADDRESS_MAP_START(homez80_state::homez80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_ROM // Monitor
- AM_RANGE( 0x2000, 0x23ff ) AM_RAM AM_SHARE("videoram") // Video RAM
- AM_RANGE( 0x7020, 0x702f ) AM_READ(homez80_keyboard_r)
- AM_RANGE( 0x8000, 0xffff ) AM_RAM // 32 K RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(homez80_state::homez80_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void homez80_state::homez80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom(); // Monitor
+ map(0x2000, 0x23ff).ram().share("videoram"); // Video RAM
+ map(0x7020, 0x702f).r(this, FUNC(homez80_state::homez80_keyboard_r));
+ map(0x8000, 0xffff).ram(); // 32 K RAM
+}
+
+void homez80_state::homez80_io(address_map &map)
+{
+ map.unmap_value_high();
+}
/* Input ports */
INPUT_PORTS_START( homez80 )
diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp
index 156fe0e8663..37d70b08223 100644
--- a/src/mame/drivers/horizon.cpp
+++ b/src/mame/drivers/horizon.cpp
@@ -82,26 +82,28 @@ private:
// ADDRESS_MAP( horizon_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(horizon_state::horizon_mem)
- AM_RANGE(0x0000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xe9ff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xea01, 0xea01)
- AM_RANGE(0xea11, 0xea11)
- AM_RANGE(0xea21, 0xea21)
- AM_RANGE(0xea31, 0xea31)
- AM_RANGE(0xeb10, 0xeb17) AM_READ(ff_r)
- AM_RANGE(0xeb20, 0xeb20)
- AM_RANGE(0xeb35, 0xeb35)
- AM_RANGE(0xeb40, 0xeb40)
-ADDRESS_MAP_END
+void horizon_state::horizon_mem(address_map &map)
+{
+ map(0x0000, 0xe7ff).ram();
+ map(0xe800, 0xe9ff).rom().region("roms", 0);
+ map(0xea01, 0xea01);
+ map(0xea11, 0xea11);
+ map(0xea21, 0xea21);
+ map(0xea31, 0xea31);
+ map(0xeb10, 0xeb17).r(this, FUNC(horizon_state::ff_r));
+ map(0xeb20, 0xeb20);
+ map(0xeb35, 0xeb35);
+ map(0xeb40, 0xeb40);
+}
//-------------------------------------------------
// ADDRESS_MAP( horizon_io )
//-------------------------------------------------
-ADDRESS_MAP_START(horizon_state::horizon_io)
-ADDRESS_MAP_END
+void horizon_state::horizon_io(address_map &map)
+{
+}
diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp
index 07574e0436f..ee20c3712f4 100644
--- a/src/mame/drivers/hornet.cpp
+++ b/src/mame/drivers/hornet.cpp
@@ -745,41 +745,43 @@ WRITE16_MEMBER(hornet_state::soundtimer_count_w)
/*****************************************************************************/
-ADDRESS_MAP_START(hornet_state::hornet_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("workram") /* Work RAM */
- AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(hornet_k037122_reg_r, hornet_k037122_reg_w)
- AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(hornet_k037122_sram_r, hornet_k037122_sram_w)
- AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(hornet_k037122_char_r, hornet_k037122_char_w)
- AM_RANGE(0x74080000, 0x7408000f) AM_READWRITE(gun_r, gun_w)
- AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
- AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
- AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ8(sysreg_r, 0xffffffff)
- AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE8(sysreg_w, 0xffffffff)
- AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */
- AM_RANGE(0x7d030000, 0x7d03000f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x7d040004, 0x7d040007) AM_READWRITE8(comm_eeprom_r, comm_eeprom_w, 0xffffffff)
- AM_RANGE(0x7d042000, 0x7d043fff) AM_RAM /* COMM BOARD 0 */
- AM_RANGE(0x7d044000, 0x7d044007) AM_READ(comm0_unk_r)
- AM_RANGE(0x7d048000, 0x7d048003) AM_WRITE(comm1_w)
- AM_RANGE(0x7d04a000, 0x7d04a003) AM_WRITE(comm_rombank_w)
- AM_RANGE(0x7d050000, 0x7d05ffff) AM_ROMBANK("bank1") /* COMM BOARD 1 */
- AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */
- AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x7fc00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
+void hornet_state::hornet_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("workram"); /* Work RAM */
+ map(0x74000000, 0x740000ff).rw(this, FUNC(hornet_state::hornet_k037122_reg_r), FUNC(hornet_state::hornet_k037122_reg_w));
+ map(0x74020000, 0x7403ffff).rw(this, FUNC(hornet_state::hornet_k037122_sram_r), FUNC(hornet_state::hornet_k037122_sram_w));
+ map(0x74040000, 0x7407ffff).rw(this, FUNC(hornet_state::hornet_k037122_char_r), FUNC(hornet_state::hornet_k037122_char_w));
+ map(0x74080000, 0x7408000f).rw(this, FUNC(hornet_state::gun_r), FUNC(hornet_state::gun_w));
+ map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
+ map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
+ map(0x7d000000, 0x7d00ffff).r(this, FUNC(hornet_state::sysreg_r));
+ map(0x7d010000, 0x7d01ffff).w(this, FUNC(hornet_state::sysreg_w));
+ map(0x7d020000, 0x7d021fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */
+ map(0x7d030000, 0x7d03000f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x7d040004, 0x7d040007).rw(this, FUNC(hornet_state::comm_eeprom_r), FUNC(hornet_state::comm_eeprom_w));
+ map(0x7d042000, 0x7d043fff).ram(); /* COMM BOARD 0 */
+ map(0x7d044000, 0x7d044007).r(this, FUNC(hornet_state::comm0_unk_r));
+ map(0x7d048000, 0x7d048003).w(this, FUNC(hornet_state::comm1_w));
+ map(0x7d04a000, 0x7d04a003).w(this, FUNC(hornet_state::comm_rombank_w));
+ map(0x7d050000, 0x7d05ffff).bankr("bank1"); /* COMM BOARD 1 */
+ map(0x7e000000, 0x7e7fffff).rom().region("user2", 0); /* Data ROM */
+ map(0x7f000000, 0x7f3fffff).rom().share("share2");
+ map(0x7fc00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
+}
/*****************************************************************************/
-ADDRESS_MAP_START(hornet_state::sound_memmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Work RAM */
- AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x480000, 0x480001) AM_WRITENOP
- AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP
- AM_RANGE(0x500000, 0x500001) AM_WRITE(soundtimer_en_w) AM_READNOP
- AM_RANGE(0x600000, 0x600001) AM_WRITE(soundtimer_count_w) AM_READNOP
-ADDRESS_MAP_END
+void hornet_state::sound_memmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* Work RAM */
+ map(0x200000, 0x200fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */
+ map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x480000, 0x480001).nopw();
+ map(0x4c0000, 0x4c0001).nopw();
+ map(0x500000, 0x500001).w(this, FUNC(hornet_state::soundtimer_en_w)).nopr();
+ map(0x600000, 0x600001).w(this, FUNC(hornet_state::soundtimer_count_w)).nopr();
+}
/*****************************************************************************/
@@ -811,14 +813,15 @@ WRITE16_MEMBER(hornet_state::gn680_latch_w)
// WORD at 30000e: IRQ 4 tests bits 6 and 7, IRQ5 tests bits 4 and 5
// (vsync and hsync status for each of the two screens?)
-ADDRESS_MAP_START(hornet_state::gn680_memmap)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM
- AM_RANGE(0x300000, 0x300001) AM_WRITE(gn680_sysctrl)
- AM_RANGE(0x314000, 0x317fff) AM_RAM
- AM_RANGE(0x400000, 0x400003) AM_READWRITE(gn680_latch_r, gn680_latch_w)
- AM_RANGE(0x400008, 0x400009) AM_WRITENOP // writes 0001 00fe each time IRQ 6 triggers
-ADDRESS_MAP_END
+void hornet_state::gn680_memmap(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x200000, 0x203fff).ram();
+ map(0x300000, 0x300001).w(this, FUNC(hornet_state::gn680_sysctrl));
+ map(0x314000, 0x317fff).ram();
+ map(0x400000, 0x400003).rw(this, FUNC(hornet_state::gn680_latch_r), FUNC(hornet_state::gn680_latch_w));
+ map(0x400008, 0x400009).nopw(); // writes 0001 00fe each time IRQ 6 triggers
+}
/*****************************************************************************/
@@ -842,25 +845,27 @@ WRITE32_MEMBER(hornet_state::dsp_dataram1_w)
m_sharc_dataram1[offset] = data;
}
-ADDRESS_MAP_START(hornet_state::sharc0_map)
- AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
- AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) AM_SHARE("sharc_dataram0")
- AM_RANGE(0x1400000, 0x14fffff) AM_RAM
- AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo0", voodoo_device, voodoo_r, voodoo_w)
- AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
- AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_0_r, K033906_0_w)
- AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hornet_state::sharc1_map)
- AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w)
- AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w) AM_SHARE("sharc_dataram1")
- AM_RANGE(0x1400000, 0x14fffff) AM_RAM
- AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo1", voodoo_device, voodoo_r, voodoo_w)
- AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w)
- AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_1_r, K033906_1_w)
- AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6")
-ADDRESS_MAP_END
+void hornet_state::sharc0_map(address_map &map)
+{
+ map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
+ map(0x0500000, 0x05fffff).rw(this, FUNC(hornet_state::dsp_dataram0_r), FUNC(hornet_state::dsp_dataram0_w)).share("sharc_dataram0");
+ map(0x1400000, 0x14fffff).ram();
+ map(0x2400000, 0x27fffff).rw("voodoo0", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
+ map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
+ map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w));
+ map(0x3600000, 0x37fffff).bankr("bank5");
+}
+
+void hornet_state::sharc1_map(address_map &map)
+{
+ map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w));
+ map(0x0500000, 0x05fffff).rw(this, FUNC(hornet_state::dsp_dataram1_r), FUNC(hornet_state::dsp_dataram1_w)).share("sharc_dataram1");
+ map(0x1400000, 0x14fffff).ram();
+ map(0x2400000, 0x27fffff).rw("voodoo1", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
+ map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w));
+ map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w));
+ map(0x3600000, 0x37fffff).bankr("bank6");
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/hotblock.cpp b/src/mame/drivers/hotblock.cpp
index 0358e90b5b4..60b7ca6bb1d 100644
--- a/src/mame/drivers/hotblock.cpp
+++ b/src/mame/drivers/hotblock.cpp
@@ -130,18 +130,20 @@ WRITE8_MEMBER(hotblock_state::video_write)
}
}
-ADDRESS_MAP_START(hotblock_state::hotblock_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(video_read, video_write) AM_SHARE("vram")
- AM_RANGE(0x20000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hotblock_state::hotblock_io)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(port0_w)
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(port4_r, port4_w)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ym2149_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("aysnd", ym2149_device, data_r)
-ADDRESS_MAP_END
+void hotblock_state::hotblock_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram();
+ map(0x10000, 0x1ffff).rw(this, FUNC(hotblock_state::video_read), FUNC(hotblock_state::video_write)).share("vram");
+ map(0x20000, 0xfffff).rom();
+}
+
+void hotblock_state::hotblock_io(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(hotblock_state::port0_w));
+ map(0x0004, 0x0004).rw(this, FUNC(hotblock_state::port4_r), FUNC(hotblock_state::port4_w));
+ map(0x8000, 0x8001).w("aysnd", FUNC(ym2149_device::address_data_w));
+ map(0x8001, 0x8001).r("aysnd", FUNC(ym2149_device::data_r));
+}
diff --git a/src/mame/drivers/hotstuff.cpp b/src/mame/drivers/hotstuff.cpp
index 5e79a0781c6..985fa0f4612 100644
--- a/src/mame/drivers/hotstuff.cpp
+++ b/src/mame/drivers/hotstuff.cpp
@@ -75,18 +75,25 @@ uint32_t hotstuff_state::screen_update_hotstuff(screen_device &screen, bitmap_rg
return 0;
}
-ADDRESS_MAP_START(hotstuff_state::hotstuff_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_NOP //ROM AM_REGION("data", 0)
-
- AM_RANGE(0x400000, 0x40ffff) AM_RAM
-
- AM_RANGE(0x600000, 0x600003) AM_DEVREADWRITE8("scc1", z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xffff)
- AM_RANGE(0x620000, 0x620003) AM_DEVREADWRITE8("scc2", z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xffff)
- ;map(0x680000, 0x680001).lrw8("rtc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_rtc->read(space, offset^1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_rtc->write(space, offset^1, data, mem_mask); });
-
- AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_SHARE("bitmapram")
-ADDRESS_MAP_END
+void hotstuff_state::hotstuff_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x0fffff).noprw(); //ROM AM_REGION("data", 0)
+
+ map(0x400000, 0x40ffff).ram();
+
+ 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](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_rtc->read(space, offset^1, mem_mask);
+ },
+ [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");
+}
static INPUT_PORTS_START( hotstuff )
INPUT_PORTS_END
diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp
index d154259eca2..229ff4c09d6 100644
--- a/src/mame/drivers/hp16500.cpp
+++ b/src/mame/drivers/hp16500.cpp
@@ -221,102 +221,108 @@ WRITE_LINE_MEMBER(hp16500_state::irq_2)
m_maincpu->set_input_line_and_vector(M68K_IRQ_2, state, M68K_INT_ACK_AUTOVECTOR);
}
-ADDRESS_MAP_START(hp16500_state::hp1650_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
+void hp16500_state::hp1650_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom().region("bios", 0);
- AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w)
+ map(0x201000, 0x201001).w(this, FUNC(hp16500_state::maskval_w));
- AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff)
- AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff)
- AM_RANGE(0x2050fe, 0x2050ff) AM_NOP
- AM_RANGE(0x206000, 0x206001) AM_READNOP AM_WRITE8(pal_g_w, 0x00ff)
- AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
+ map(0x204001, 0x204001).w(this, FUNC(hp16500_state::pal_ctrl_w));
+ map(0x205001, 0x205001).w(this, FUNC(hp16500_state::pal_r_w));
+ map(0x2050fe, 0x2050ff).noprw();
+ map(0x206000, 0x206001).nopr();
+ map(0x206001, 0x206001).w(this, FUNC(hp16500_state::pal_g_w));
+ map(0x207001, 0x207001).w(this, FUNC(hp16500_state::pal_b_w));
- AM_RANGE(0x20a000, 0x20a007) AM_DEVREADWRITE8("epci", mc2661_device, read, write, 0x00ff)
+ map(0x20a000, 0x20a007).rw("epci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0x00ff);
- AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff)
- AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff)
+ map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w)
+ map(0x20e000, 0x20e001).rw(this, FUNC(hp16500_state::vbl_ack16_r), FUNC(hp16500_state::vbl_ack16_w));
- AM_RANGE(0x20f000, 0x20f001) AM_NOP
+ map(0x20f000, 0x20f001).noprw();
- AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
- AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
+ map(0x600000, 0x61ffff).w(this, FUNC(hp16500_state::vram_w));
+ map(0x600000, 0x67ffff).r(this, FUNC(hp16500_state::vram_r)).umask16(0x00ff);
- AM_RANGE(0x900000, 0x9fffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x900000, 0x9fffff).ram();
+}
// like 1650 but moves main RAM to match 16500a
-ADDRESS_MAP_START(hp16500_state::hp1651_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
+void hp16500_state::hp1651_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom().region("bios", 0);
- AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w)
+ map(0x201000, 0x201001).w(this, FUNC(hp16500_state::maskval_w));
- AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff)
- AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff)
- AM_RANGE(0x2050fe, 0x2050ff) AM_NOP
- AM_RANGE(0x206000, 0x206001) AM_READNOP AM_WRITE8(pal_g_w, 0x00ff)
- AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
+ map(0x204001, 0x204001).w(this, FUNC(hp16500_state::pal_ctrl_w));
+ map(0x205001, 0x205001).w(this, FUNC(hp16500_state::pal_r_w));
+ map(0x2050fe, 0x2050ff).noprw();
+ map(0x206000, 0x206001).nopr();
+ map(0x206001, 0x206001).w(this, FUNC(hp16500_state::pal_g_w));
+ map(0x207001, 0x207001).w(this, FUNC(hp16500_state::pal_b_w));
- AM_RANGE(0x20a000, 0x20a007) AM_DEVREADWRITE8("epci", mc2661_device, read, write, 0x00ff)
+ map(0x20a000, 0x20a007).rw("epci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0x00ff);
- AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff)
- AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff)
+ map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w)
+ map(0x20e000, 0x20e001).rw(this, FUNC(hp16500_state::vbl_ack16_r), FUNC(hp16500_state::vbl_ack16_w));
- AM_RANGE(0x20f000, 0x20f001) AM_NOP
+ map(0x20f000, 0x20f001).noprw();
- AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
- AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
+ map(0x600000, 0x61ffff).w(this, FUNC(hp16500_state::vram_w));
+ map(0x600000, 0x67ffff).r(this, FUNC(hp16500_state::vram_r)).umask16(0x00ff);
- AM_RANGE(0x980000, 0xa7ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x980000, 0xa7ffff).ram();
+}
-ADDRESS_MAP_START(hp16500_state::hp16500a_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0)
+void hp16500_state::hp16500a_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom().region("bios", 0);
- AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w)
+ map(0x201000, 0x201001).w(this, FUNC(hp16500_state::maskval_w));
- AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff)
- AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff)
- AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff)
- AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff)
+ map(0x204001, 0x204001).w(this, FUNC(hp16500_state::pal_ctrl_w));
+ map(0x205001, 0x205001).w(this, FUNC(hp16500_state::pal_r_w));
+ map(0x206001, 0x206001).w(this, FUNC(hp16500_state::pal_g_w));
+ map(0x207001, 0x207001).w(this, FUNC(hp16500_state::pal_b_w));
- AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff)
- AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff)
+ map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w)
+ map(0x20e000, 0x20e001).rw(this, FUNC(hp16500_state::vbl_ack16_r), FUNC(hp16500_state::vbl_ack16_w));
- AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w)
- AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff)
+ map(0x600000, 0x61ffff).w(this, FUNC(hp16500_state::vram_w));
+ map(0x600000, 0x67ffff).r(this, FUNC(hp16500_state::vram_r)).umask16(0x00ff);
- AM_RANGE(0x980000, 0xa7ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x980000, 0xa7ffff).ram();
+}
uint32_t hp16500_state::screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
-ADDRESS_MAP_START(hp16500_state::hp16500_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0x0020f000, 0x0020f003) AM_WRITE(palette_w)
+void hp16500_state::hp16500_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom().region("bios", 0);
+ map(0x0020f000, 0x0020f003).w(this, FUNC(hp16500_state::palette_w));
- AM_RANGE(0x00202800, 0x00202803) AM_WRITE(vbl_ack_w)
- AM_RANGE(0x00203000, 0x00203003) AM_WRITE(vbl_ack_w)
- AM_RANGE(0x00209800, 0x00209803) AM_READ(vbl_state_r)
+ map(0x00202800, 0x00202803).w(this, FUNC(hp16500_state::vbl_ack_w));
+ map(0x00203000, 0x00203003).w(this, FUNC(hp16500_state::vbl_ack_w));
+ map(0x00209800, 0x00209803).r(this, FUNC(hp16500_state::vbl_state_r));
- AM_RANGE(0x0020b800, 0x0020b8ff) AM_RAM // system ram test is really strange.
+ map(0x0020b800, 0x0020b8ff).ram(); // system ram test is really strange.
- AM_RANGE(0x0020f800, 0x0020f80f) AM_DEVREADWRITE8("mlc", hp_hil_mlc_device, read, write, 0xffffffff);
- AM_RANGE(0x00600000, 0x0061ffff) AM_WRITE16(vram_w, 0xffffffff)
- AM_RANGE(0x00600000, 0x0067ffff) AM_READ8 (vram_r, 0x00ff00ff)
- AM_RANGE(0x00700000, 0x00700003) AM_WRITE8 (mask_w, 0xff000000)
- AM_RANGE(0x00740000, 0x00740003) AM_WRITE8 (val_w, 0xff000000)
- AM_RANGE(0x00800000, 0x009fffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x0020f800, 0x0020f80f).rw(m_mlc, FUNC(hp_hil_mlc_device::read), FUNC(hp_hil_mlc_device::write));
+ map(0x00600000, 0x0061ffff).w(this, FUNC(hp16500_state::vram_w));
+ map(0x00600000, 0x0067ffff).r(this, FUNC(hp16500_state::vram_r)).umask32(0x00ff00ff);
+ map(0x00700000, 0x00700000).w(this, FUNC(hp16500_state::mask_w));
+ map(0x00740000, 0x00740000).w(this, FUNC(hp16500_state::val_w));
+ map(0x00800000, 0x009fffff).ram();
+}
INTERRUPT_GEN_MEMBER(hp16500_state::vblank)
{
diff --git a/src/mame/drivers/hp2620.cpp b/src/mame/drivers/hp2620.cpp
index e5763e38a0a..02fbda31b8a 100644
--- a/src/mame/drivers/hp2620.cpp
+++ b/src/mame/drivers/hp2620.cpp
@@ -75,21 +75,23 @@ WRITE8_MEMBER(hp2620_state::modem_w)
{
}
-ADDRESS_MAP_START(hp2620_state::mem_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hp2620_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_READWRITE(nvram_r, nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x80, 0x80) AM_READ(keystat_r)
- AM_RANGE(0x90, 0x90) AM_READ(sysstat_r)
- AM_RANGE(0xa0, 0xa3) AM_DEVWRITE("acia", mos6551_device, write)
- AM_RANGE(0xa4, 0xa7) AM_DEVREAD("acia", mos6551_device, read)
- AM_RANGE(0xa8, 0xa8) AM_WRITE(modem_w)
- AM_RANGE(0xb8, 0xb8) AM_WRITE(keydisp_w)
-ADDRESS_MAP_END
+void hp2620_state::mem_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom().region("maincpu", 0);
+ map(0xc000, 0xffff).ram();
+}
+
+void hp2620_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).rw(this, FUNC(hp2620_state::nvram_r), FUNC(hp2620_state::nvram_w)).share("nvram");
+ map(0x80, 0x80).r(this, FUNC(hp2620_state::keystat_r));
+ map(0x90, 0x90).r(this, FUNC(hp2620_state::sysstat_r));
+ map(0xa0, 0xa3).w("acia", FUNC(mos6551_device::write));
+ map(0xa4, 0xa7).r("acia", FUNC(mos6551_device::read));
+ map(0xa8, 0xa8).w(this, FUNC(hp2620_state::modem_w));
+ map(0xb8, 0xb8).w(this, FUNC(hp2620_state::keydisp_w));
+}
static INPUT_PORTS_START( hp2622 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/hp2640.cpp b/src/mame/drivers/hp2640.cpp
index cf8145fc38a..2a90ab1d338 100644
--- a/src/mame/drivers/hp2640.cpp
+++ b/src/mame/drivers/hp2640.cpp
@@ -935,30 +935,32 @@ static INPUT_PORTS_START(hp2645)
PORT_CONFSETTING(0x80, DEF_STR(Off))
INPUT_PORTS_END
-ADDRESS_MAP_START(hp2645_state::cpu_mem_map)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000 , 0x57ff) AM_ROM
- AM_RANGE(0x8100 , 0x8100) AM_DEVREAD("uart", ay51013_device, receive)
- AM_RANGE(0x8120 , 0x8120) AM_READ(async_status_r)
- AM_RANGE(0x8140 , 0x8140) AM_WRITE(async_control_w)
- AM_RANGE(0x8160 , 0x8160) AM_DEVWRITE("uart", ay51013_device, transmit)
- AM_RANGE(0x8300 , 0x8300) AM_WRITE(kb_led_w)
- AM_RANGE(0x8300 , 0x830d) AM_READ(kb_r)
- AM_RANGE(0x830e , 0x830e) AM_READ(switches_ah_r)
- AM_RANGE(0x830f , 0x830f) AM_READ(datacomm_sw_r)
- AM_RANGE(0x8320 , 0x8320) AM_WRITE(kb_prev_w)
- AM_RANGE(0x8380 , 0x8380) AM_READWRITE(switches_jr_r , kb_reset_w)
- AM_RANGE(0x83a0 , 0x83a0) AM_READ(switches_sz_r)
- AM_RANGE(0x8700 , 0x8700) AM_WRITE(cx_w)
- AM_RANGE(0x8720 , 0x8720) AM_WRITE(cy_w)
- AM_RANGE(0x9100 , 0x91ff) AM_RAM
- AM_RANGE(0xc000 , 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hp2645_state::cpu_io_map)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x00 , 0xff) AM_WRITE(mode_byte_w)
-ADDRESS_MAP_END
+void hp2645_state::cpu_mem_map(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x57ff).rom();
+ map(0x8100, 0x8100).r(m_uart, FUNC(ay51013_device::receive));
+ map(0x8120, 0x8120).r(this, FUNC(hp2645_state::async_status_r));
+ map(0x8140, 0x8140).w(this, FUNC(hp2645_state::async_control_w));
+ map(0x8160, 0x8160).w(m_uart, FUNC(ay51013_device::transmit));
+ map(0x8300, 0x8300).w(this, FUNC(hp2645_state::kb_led_w));
+ map(0x8300, 0x830d).r(this, FUNC(hp2645_state::kb_r));
+ map(0x830e, 0x830e).r(this, FUNC(hp2645_state::switches_ah_r));
+ map(0x830f, 0x830f).r(this, FUNC(hp2645_state::datacomm_sw_r));
+ map(0x8320, 0x8320).w(this, FUNC(hp2645_state::kb_prev_w));
+ map(0x8380, 0x8380).rw(this, FUNC(hp2645_state::switches_jr_r), FUNC(hp2645_state::kb_reset_w));
+ map(0x83a0, 0x83a0).r(this, FUNC(hp2645_state::switches_sz_r));
+ map(0x8700, 0x8700).w(this, FUNC(hp2645_state::cx_w));
+ map(0x8720, 0x8720).w(this, FUNC(hp2645_state::cy_w));
+ map(0x9100, 0x91ff).ram();
+ map(0xc000, 0xffff).ram();
+}
+
+void hp2645_state::cpu_io_map(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x00, 0xff).w(this, FUNC(hp2645_state::mode_byte_w));
+}
MACHINE_CONFIG_START(hp2645_state::hp2645)
MCFG_CPU_ADD("cpu" , I8080A , SYS_CLOCK / 2)
diff --git a/src/mame/drivers/hp48.cpp b/src/mame/drivers/hp48.cpp
index 6b13264c312..acca9b631c9 100644
--- a/src/mame/drivers/hp48.cpp
+++ b/src/mame/drivers/hp48.cpp
@@ -1246,11 +1246,12 @@ ROM_END
run-time.
*/
-ADDRESS_MAP_START(hp48_state::hp48)
+void hp48_state::hp48(address_map &map)
+{
- AM_RANGE( 0x00000, 0xfffff ) AM_NOP /* configured at run-time */
+ map(0x00000, 0xfffff).noprw(); /* configured at run-time */
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/hp49gp.cpp b/src/mame/drivers/hp49gp.cpp
index b63d0863d2e..78cde349949 100644
--- a/src/mame/drivers/hp49gp.cpp
+++ b/src/mame/drivers/hp49gp.cpp
@@ -259,13 +259,14 @@ void hp49gp_state::machine_reset()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(hp49gp_state::hp49gp_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM
- AM_RANGE(0x08000000, 0x0801ffff) AM_RAM
- AM_RANGE(0x08020000, 0x0803ffff) AM_RAM
- AM_RANGE(0x08040000, 0x0807ffff) AM_RAM
- AM_RANGE(0x40000000, 0x40000fff) AM_RAM AM_SHARE("steppingstone")
-ADDRESS_MAP_END
+void hp49gp_state::hp49gp_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom();
+ map(0x08000000, 0x0801ffff).ram();
+ map(0x08020000, 0x0803ffff).ram();
+ map(0x08040000, 0x0807ffff).ram();
+ map(0x40000000, 0x40000fff).ram().share("steppingstone");
+}
/***************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp
index 023f4d14f47..d15e513da71 100644
--- a/src/mame/drivers/hp64k.cpp
+++ b/src/mame/drivers/hp64k.cpp
@@ -324,45 +324,47 @@ private:
uint8_t m_phi_reg;
};
-ADDRESS_MAP_START(hp64k_state::cpu_mem_map)
- AM_RANGE(0x0000 , 0x3fff) AM_ROM
- AM_RANGE(0x4000 , 0x7fff) AM_READWRITE(hp64k_slot_r , hp64k_slot_w)
- AM_RANGE(0x8000 , 0x8001) AM_WRITE(hp64k_crtc_w)
- AM_RANGE(0x8002 , 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hp64k_state::cpu_io_map)
+void hp64k_state::cpu_mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).rw(this, FUNC(hp64k_state::hp64k_slot_r), FUNC(hp64k_state::hp64k_slot_w));
+ map(0x8000, 0x8001).w(this, FUNC(hp64k_state::hp64k_crtc_w));
+ map(0x8002, 0xffff).ram();
+}
+
+void hp64k_state::cpu_io_map(address_map &map)
+{
// PA = 0, IC = [0..3]
// Keyboard input
- AM_RANGE(HP_MAKE_IOADDR(0 , 0) , HP_MAKE_IOADDR(0 , 3)) AM_READ(hp64k_kb_r)
+ map(HP_MAKE_IOADDR( 0, 0), HP_MAKE_IOADDR( 0, 3)).r(this, FUNC(hp64k_state::hp64k_kb_r));
// PA = 2, IC = [0..3]
// Line sync interrupt clear/watchdog reset
- AM_RANGE(HP_MAKE_IOADDR(2 , 0) , HP_MAKE_IOADDR(2 , 3)) AM_READWRITE(hp64k_deltat_r , hp64k_deltat_w)
+ map(HP_MAKE_IOADDR( 2, 0), HP_MAKE_IOADDR( 2, 3)).rw(this, FUNC(hp64k_state::hp64k_deltat_r), FUNC(hp64k_state::hp64k_deltat_w));
// PA = 4, IC = [0..3]
// Floppy I/F
- AM_RANGE(HP_MAKE_IOADDR(4 , 0) , HP_MAKE_IOADDR(4 , 3)) AM_READWRITE(hp64k_flp_r , hp64k_flp_w)
+ map(HP_MAKE_IOADDR( 4, 0), HP_MAKE_IOADDR( 4, 3)).rw(this, FUNC(hp64k_state::hp64k_flp_r), FUNC(hp64k_state::hp64k_flp_w));
// PA = 5, IC = [0..3]
// Write to USART
- AM_RANGE(HP_MAKE_IOADDR(5 , 0) , HP_MAKE_IOADDR(5 , 3)) AM_WRITE(hp64k_usart_w)
+ map(HP_MAKE_IOADDR( 5, 0), HP_MAKE_IOADDR( 5, 3)).w(this, FUNC(hp64k_state::hp64k_usart_w));
// PA = 6, IC = [0..3]
// Read from USART
- AM_RANGE(HP_MAKE_IOADDR(6 , 0) , HP_MAKE_IOADDR(6 , 3)) AM_READ(hp64k_usart_r)
+ map(HP_MAKE_IOADDR( 6, 0), HP_MAKE_IOADDR( 6, 3)).r(this, FUNC(hp64k_state::hp64k_usart_r));
// PA = 7, IC = 1
// PHI
- AM_RANGE(HP_MAKE_IOADDR(7 , 1) , HP_MAKE_IOADDR(7 , 1)) AM_READWRITE(hp64k_phi_r , hp64k_phi_w)
+ map(HP_MAKE_IOADDR( 7, 1), HP_MAKE_IOADDR( 7, 1)).rw(this, FUNC(hp64k_state::hp64k_phi_r), FUNC(hp64k_state::hp64k_phi_w));
// PA = 7, IC = 2
// Rear-panel switches and loopback relay control
- AM_RANGE(HP_MAKE_IOADDR(7 , 2) , HP_MAKE_IOADDR(7 , 2)) AM_READWRITE(hp64k_rear_sw_r , hp64k_loopback_w)
+ map(HP_MAKE_IOADDR( 7, 2), HP_MAKE_IOADDR( 7, 2)).rw(this, FUNC(hp64k_state::hp64k_rear_sw_r), FUNC(hp64k_state::hp64k_loopback_w));
// PA = 9, IC = [0..3]
// Beeper control & interrupt status read
- AM_RANGE(HP_MAKE_IOADDR(9 , 0) , HP_MAKE_IOADDR(9 , 3)) AM_WRITE(hp64k_beep_w)
+ map(HP_MAKE_IOADDR( 9, 0), HP_MAKE_IOADDR( 9, 3)).w(this, FUNC(hp64k_state::hp64k_beep_w));
// PA = 10, IC = [0..3]
// Slot selection
- AM_RANGE(HP_MAKE_IOADDR(10 , 0) , HP_MAKE_IOADDR(10 , 3)) AM_WRITE(hp64k_slot_sel_w)
+ map(HP_MAKE_IOADDR(10, 0), HP_MAKE_IOADDR(10, 3)).w(this, FUNC(hp64k_state::hp64k_slot_sel_w));
// PA = 12, IC = [0..3]
// Interrupt mask
- AM_RANGE(HP_MAKE_IOADDR(12 , 0) , HP_MAKE_IOADDR(12 , 3)) AM_WRITE(hp64k_irl_mask_w)
-ADDRESS_MAP_END
+ map(HP_MAKE_IOADDR(12, 0), HP_MAKE_IOADDR(12, 3)).w(this, FUNC(hp64k_state::hp64k_irl_mask_w));
+}
hp64k_state::hp64k_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig , type , tag),
diff --git a/src/mame/drivers/hp700.cpp b/src/mame/drivers/hp700.cpp
index 53a6bdb3e17..be368053a34 100644
--- a/src/mame/drivers/hp700.cpp
+++ b/src/mame/drivers/hp700.cpp
@@ -28,18 +28,26 @@ private:
required_device<scn2681_device> m_duart;
};
-ADDRESS_MAP_START(hp700_state::mem_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x20000, 0x2ffff) AM_RAM
- AM_RANGE(0x30000, 0x31fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x34000, 0x34000) AM_READNOP
- ;map(0x38000, 0x38fff).lrw8("duart_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_duart->read(space, offset >> 8, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_duart->write(space, offset >> 8, data, mem_mask); });
- AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x1fff0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hp700_state::io_map)
- AM_RANGE(0x00f2, 0x00f2) AM_WRITENOP
-ADDRESS_MAP_END
+void hp700_state::mem_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom().region("maincpu", 0);
+ map(0x20000, 0x2ffff).ram();
+ map(0x30000, 0x31fff).ram().share("nvram");
+ map(0x34000, 0x34000).nopr();
+ map(0x38000, 0x38fff).lrw8("duart_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_duart->read(space, offset >> 8, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_duart->write(space, offset >> 8, data, mem_mask);
+ });
+ map(0xffff0, 0xfffff).rom().region("maincpu", 0x1fff0);
+}
+
+void hp700_state::io_map(address_map &map)
+{
+ map(0x00f2, 0x00f2).nopw();
+}
static INPUT_PORTS_START( hp700_92 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/hp80.cpp b/src/mame/drivers/hp80.cpp
index 671ccb3c1e2..5e8e217bcdd 100644
--- a/src/mame/drivers/hp80.cpp
+++ b/src/mame/drivers/hp80.cpp
@@ -1299,32 +1299,34 @@ static INPUT_PORTS_START(hp85)
INPUT_PORTS_END
-ADDRESS_MAP_START(hp85_state::cpu_mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000 , 0x5fff) AM_ROM
- AM_RANGE(0x6000 , 0x7fff) AM_DEVICE("rombank" , address_map_bank_device , amap8)
- AM_RANGE(0x8000 , 0xbfff) AM_RAM
- AM_RANGE(0xff00 , 0xff00) AM_WRITE(ginten_w)
- AM_RANGE(0xff01 , 0xff01) AM_WRITE(gintdis_w)
- AM_RANGE(0xff02 , 0xff02) AM_READWRITE(keysts_r , keysts_w)
- AM_RANGE(0xff03 , 0xff03) AM_READWRITE(keycod_r , keycod_w)
- AM_RANGE(0xff04 , 0xff07) AM_READWRITE(crtc_r , crtc_w)
- AM_RANGE(0xff08 , 0xff09) AM_DEVREADWRITE("tape" , hp_1ma6_device , reg_r , reg_w)
- AM_RANGE(0xff0a , 0xff0a) AM_READWRITE(clksts_r , clksts_w)
- AM_RANGE(0xff0b , 0xff0b) AM_READWRITE(clkdat_r , clkdat_w)
- AM_RANGE(0xff0c , 0xff0c) AM_WRITE(prtlen_w)
- AM_RANGE(0xff0d , 0xff0d) AM_READWRITE(prchar_r , prchar_w)
- AM_RANGE(0xff0e , 0xff0e) AM_READWRITE(prtsts_r , prtctl_w)
- AM_RANGE(0xff0f , 0xff0f) AM_WRITE(prtdat_w)
- AM_RANGE(0xff18 , 0xff18) AM_WRITE(rselec_w)
- AM_RANGE(0xff40 , 0xff40) AM_READWRITE(intrsc_r , intrsc_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hp85_state::rombank_mem_map)
- ADDRESS_MAP_UNMAP_HIGH
+void hp85_state::cpu_mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).m(m_rombank, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xbfff).ram();
+ map(0xff00, 0xff00).w(this, FUNC(hp85_state::ginten_w));
+ map(0xff01, 0xff01).w(this, FUNC(hp85_state::gintdis_w));
+ map(0xff02, 0xff02).rw(this, FUNC(hp85_state::keysts_r), FUNC(hp85_state::keysts_w));
+ map(0xff03, 0xff03).rw(this, FUNC(hp85_state::keycod_r), FUNC(hp85_state::keycod_w));
+ map(0xff04, 0xff07).rw(this, FUNC(hp85_state::crtc_r), FUNC(hp85_state::crtc_w));
+ map(0xff08, 0xff09).rw("tape", FUNC(hp_1ma6_device::reg_r), FUNC(hp_1ma6_device::reg_w));
+ map(0xff0a, 0xff0a).rw(this, FUNC(hp85_state::clksts_r), FUNC(hp85_state::clksts_w));
+ map(0xff0b, 0xff0b).rw(this, FUNC(hp85_state::clkdat_r), FUNC(hp85_state::clkdat_w));
+ map(0xff0c, 0xff0c).w(this, FUNC(hp85_state::prtlen_w));
+ map(0xff0d, 0xff0d).rw(this, FUNC(hp85_state::prchar_r), FUNC(hp85_state::prchar_w));
+ map(0xff0e, 0xff0e).rw(this, FUNC(hp85_state::prtsts_r), FUNC(hp85_state::prtctl_w));
+ map(0xff0f, 0xff0f).w(this, FUNC(hp85_state::prtdat_w));
+ map(0xff18, 0xff18).w(this, FUNC(hp85_state::rselec_w));
+ map(0xff40, 0xff40).rw(this, FUNC(hp85_state::intrsc_r), FUNC(hp85_state::intrsc_w));
+}
+
+void hp85_state::rombank_mem_map(address_map &map)
+{
+ map.unmap_value_high();
// ROM in bank 0 is always present (it's part of system ROMs)
- AM_RANGE(0x0000 , 0x1fff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0000, 0x1fff).rom();
+}
MACHINE_CONFIG_START(hp85_state::hp85)
MCFG_CPU_ADD("cpu" , HP_CAPRICORN , MASTER_CLOCK / 16)
diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp
index 6dfb0e0d2c6..ab8448fa871 100644
--- a/src/mame/drivers/hp9845.cpp
+++ b/src/mame/drivers/hp9845.cpp
@@ -3699,35 +3699,37 @@ MACHINE_CONFIG_END
- all LPU RAM is dynamically mapped at machine start according to -ramsize option
*/
-ADDRESS_MAP_START(hp9845_base_state::global_mem_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3f7fff)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x014000 , 0x017fff) AM_RAM AM_SHARE("ppu_ram")
- AM_RANGE(0x030000 , 0x037fff) AM_ROM AM_REGION("lpu" , 0)
- AM_RANGE(0x050000 , 0x057fff) AM_ROM AM_REGION("ppu" , 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hp9845_base_state::ppu_io_map)
- ADDRESS_MAP_UNMAP_LOW
+void hp9845_base_state::global_mem_map(address_map &map)
+{
+ map.global_mask(0x3f7fff);
+ map.unmap_value_low();
+ map(0x014000, 0x017fff).ram().share("ppu_ram");
+ map(0x030000, 0x037fff).rom().region("lpu", 0);
+ map(0x050000, 0x057fff).rom().region("ppu", 0);
+}
+
+void hp9845_base_state::ppu_io_map(address_map &map)
+{
+ map.unmap_value_low();
// PA = 0, IC = 0..1
// Internal printer
- AM_RANGE(HP_MAKE_IOADDR(PRINTER_PA , 0) , HP_MAKE_IOADDR(PRINTER_PA , 1)) AM_DEVREADWRITE("printer" , hp9845_printer_device , printer_r , printer_w)
+ map(HP_MAKE_IOADDR(PRINTER_PA, 0), HP_MAKE_IOADDR(PRINTER_PA, 1)).rw("printer", FUNC(hp9845_printer_device::printer_r), FUNC(hp9845_printer_device::printer_w));
// PA = 0, IC = 2
// Keyboard scancode input
- AM_RANGE(HP_MAKE_IOADDR(0 , 2) , HP_MAKE_IOADDR(0 , 2)) AM_READ(kb_scancode_r)
+ map(HP_MAKE_IOADDR(0, 2), HP_MAKE_IOADDR(0, 2)).r(this, FUNC(hp9845_base_state::kb_scancode_r));
// PA = 0, IC = 3
// Keyboard status input & keyboard interrupt clear
- AM_RANGE(HP_MAKE_IOADDR(0 , 3) , HP_MAKE_IOADDR(0 , 3)) AM_READWRITE(kb_status_r , kb_irq_clear_w)
+ map(HP_MAKE_IOADDR(0, 3), HP_MAKE_IOADDR(0, 3)).rw(this, FUNC(hp9845_base_state::kb_status_r), FUNC(hp9845_base_state::kb_irq_clear_w));
// PA = 13, IC = 0..3
// Graphic video
- AM_RANGE(HP_MAKE_IOADDR(GVIDEO_PA , 0) , HP_MAKE_IOADDR(GVIDEO_PA , 3)) AM_READWRITE(graphic_r , graphic_w)
+ map(HP_MAKE_IOADDR(GVIDEO_PA, 0), HP_MAKE_IOADDR(GVIDEO_PA, 3)).rw(this, FUNC(hp9845_base_state::graphic_r), FUNC(hp9845_base_state::graphic_w));
// PA = 14, IC = 0..3
// Left-hand side tape drive (T14)
- AM_RANGE(HP_MAKE_IOADDR(T14_PA , 0) , HP_MAKE_IOADDR(T14_PA , 3)) AM_DEVREADWRITE("t14" , hp_taco_device , reg_r , reg_w)
+ map(HP_MAKE_IOADDR(T14_PA, 0), HP_MAKE_IOADDR(T14_PA, 3)).rw("t14", FUNC(hp_taco_device::reg_r), FUNC(hp_taco_device::reg_w));
// PA = 15, IC = 0..3
// Right-hand side tape drive (T15)
- AM_RANGE(HP_MAKE_IOADDR(T15_PA , 0) , HP_MAKE_IOADDR(T15_PA , 3)) AM_DEVREADWRITE("t15" , hp_taco_device , reg_r , reg_w)
-ADDRESS_MAP_END
+ map(HP_MAKE_IOADDR(T15_PA, 0), HP_MAKE_IOADDR(T15_PA, 3)).rw("t15", FUNC(hp_taco_device::reg_r), FUNC(hp_taco_device::reg_w));
+}
MACHINE_CONFIG_START(hp9845_base_state::hp9845_base)
MCFG_CPU_ADD("lpu", HP_5061_3001, 5700000)
diff --git a/src/mame/drivers/hp9k.cpp b/src/mame/drivers/hp9k.cpp
index 287dde41979..87d9560a691 100644
--- a/src/mame/drivers/hp9k.cpp
+++ b/src/mame/drivers/hp9k.cpp
@@ -306,23 +306,24 @@ WRITE16_MEMBER(hp9k_state::buserror_w)
m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
}
-ADDRESS_MAP_START(hp9k_state::hp9k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x000909) AM_ROM AM_REGION("bootrom",0)
- AM_RANGE(0x00090a, 0x00090d) AM_READWRITE(leds_r,leds_w)
- AM_RANGE(0x00090e, 0x00ffff) AM_ROM AM_REGION("bootrom",0x90e)
- AM_RANGE(0x010000, 0x427fff) AM_READWRITE(buserror_r,buserror_w)
- AM_RANGE(0x428000, 0x428fff) AM_READWRITE(keyboard_r,keyboard_w)
- AM_RANGE(0x429000, 0x50ffff) AM_READWRITE(buserror_r,buserror_w)
- AM_RANGE(0x510000, 0x51ffff) AM_READWRITE(hp9k_videoram_r,hp9k_videoram_w)
- AM_RANGE(0x520000, 0x52ffff) AM_READWRITE(buserror_r,buserror_w)
- AM_RANGE(0x530000, 0x53ffff) AM_RAM // graphic memory
- AM_RANGE(0x540000, 0x5effff) AM_READWRITE(buserror_r,buserror_w)
- AM_RANGE(0x5f0000, 0x5f3fff) AM_READWRITE(hp9k_prom_r,hp9k_prom_w)
+void hp9k_state::hp9k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x000909).rom().region("bootrom", 0);
+ map(0x00090a, 0x00090d).rw(this, FUNC(hp9k_state::leds_r), FUNC(hp9k_state::leds_w));
+ map(0x00090e, 0x00ffff).rom().region("bootrom", 0x90e);
+ map(0x010000, 0x427fff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w));
+ map(0x428000, 0x428fff).rw(this, FUNC(hp9k_state::keyboard_r), FUNC(hp9k_state::keyboard_w));
+ map(0x429000, 0x50ffff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w));
+ map(0x510000, 0x51ffff).rw(this, FUNC(hp9k_state::hp9k_videoram_r), FUNC(hp9k_state::hp9k_videoram_w));
+ map(0x520000, 0x52ffff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w));
+ map(0x530000, 0x53ffff).ram(); // graphic memory
+ map(0x540000, 0x5effff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w));
+ map(0x5f0000, 0x5f3fff).rw(this, FUNC(hp9k_state::hp9k_prom_r), FUNC(hp9k_state::hp9k_prom_w));
//AM_RANGE(0x5f0000, 0x5f3fff) AM_READWRITE(buserror_r,buserror_w)
- AM_RANGE(0x5f4000, 0xfbffff) AM_READWRITE(buserror_r,buserror_w)
- AM_RANGE(0xFC0000, 0xffffff) AM_RAM // system ram
-ADDRESS_MAP_END
+ map(0x5f4000, 0xfbffff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w));
+ map(0xFC0000, 0xffffff).ram(); // system ram
+}
/* Input ports */
diff --git a/src/mame/drivers/hp9k_3xx.cpp b/src/mame/drivers/hp9k_3xx.cpp
index 5a8a4c8c84d..bef7b14f171 100644
--- a/src/mame/drivers/hp9k_3xx.cpp
+++ b/src/mame/drivers/hp9k_3xx.cpp
@@ -183,93 +183,102 @@ uint32_t hp9k3xx_state::hp_medres_update(screen_device &screen, bitmap_rgb32 &bi
}
// shared mappings for all 9000/3xx systems
-ADDRESS_MAP_START(hp9k3xx_state::hp9k3xx_common)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("maincpu",0) AM_WRITE(led_w) // writes to 1fffc are the LED
+void hp9k3xx_state::hp9k3xx_common(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom().region("maincpu", 0).w(this, FUNC(hp9k3xx_state::led_w)); // writes to 1fffc are the LED
- AM_RANGE(0x00428000, 0x00428003) AM_DEVREADWRITE8(IOCPU_TAG, upi41_cpu_device, upi41_master_r, upi41_master_w, 0x00ff00ff)
+ map(0x00428000, 0x00428003).rw(m_iocpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask32(0x00ff00ff);
- AM_RANGE(0x00510000, 0x00510003) AM_READWRITE(buserror_r, buserror_w) // no "Alpha display"
- AM_RANGE(0x00538000, 0x00538003) AM_READWRITE(buserror_r, buserror_w) // no "Graphics"
- AM_RANGE(0x005c0000, 0x005c0003) AM_READWRITE(buserror_r, buserror_w) // no add-on FP coprocessor
+ map(0x00510000, 0x00510003).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display"
+ map(0x00538000, 0x00538003).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Graphics"
+ map(0x005c0000, 0x005c0003).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no add-on FP coprocessor
- AM_RANGE(0x00600000, 0x007fffff) AM_READWRITE(buserror_r, buserror_w) // prevent reading invalid DIO slots
- AM_RANGE(0x01000000, 0x1fffffff) AM_READWRITE(buserror_r, buserror_w) // prevent reading invalid DIO-II slots
+ map(0x00600000, 0x007fffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // prevent reading invalid DIO slots
+ map(0x01000000, 0x1fffffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // prevent reading invalid DIO-II slots
- AM_RANGE(0x005f8000, 0x005f800f) AM_DEVREADWRITE8(PTM6840_TAG, ptm6840_device, read, write, 0x00ff00ff)
-ADDRESS_MAP_END
+ map(0x005f8000, 0x005f800f).rw(PTM6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff);
+}
// 9000/310 - has onboard video that the graphics card used in other 3xxes conflicts with
-ADDRESS_MAP_START(hp9k3xx_state::hp9k310_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_REGION("maincpu",0) AM_WRITENOP // writes to 1fffc are the LED
+void hp9k3xx_state::hp9k310_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom().region("maincpu", 0).nopw(); // writes to 1fffc are the LED
- AM_RANGE(0x00428000, 0x00428003) AM_DEVREADWRITE8(IOCPU_TAG, upi41_cpu_device, upi41_master_r, upi41_master_w, 0x00ff)
+ map(0x00428000, 0x00428003).rw(m_iocpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask16(0x00ff);
- AM_RANGE(0x510000, 0x510003) AM_READWRITE(buserror16_r, buserror16_w) // no "Alpha display"
- AM_RANGE(0x538000, 0x538003) AM_READWRITE(buserror16_r, buserror16_w) // no "Graphics"
- AM_RANGE(0x5c0000, 0x5c0003) AM_READWRITE(buserror16_r, buserror16_w) // no add-on FP coprocessor
+ map(0x510000, 0x510003).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // no "Alpha display"
+ map(0x538000, 0x538003).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // no "Graphics"
+ map(0x5c0000, 0x5c0003).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // no add-on FP coprocessor
- AM_RANGE(0x5f8000, 0x5f800f) AM_DEVREADWRITE8(PTM6840_TAG, ptm6840_device, read, write, 0x00ff)
- AM_RANGE(0x600000, 0x7fffff) AM_READWRITE(buserror16_r, buserror16_w) // prevent reading invalid DIO slots
- AM_RANGE(0x800000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x5f8000, 0x5f800f).rw(PTM6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0x600000, 0x7fffff).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // prevent reading invalid DIO slots
+ map(0x800000, 0xffffff).ram();
+}
// 9000/320
-ADDRESS_MAP_START(hp9k3xx_state::hp9k320_map)
- AM_IMPORT_FROM(hp9k3xx_common)
+void hp9k3xx_state::hp9k320_map(address_map &map)
+{
+ hp9k3xx_common(map);
- AM_RANGE(0xffe00000, 0xffefffff) AM_READWRITE(buserror_r, buserror_w)
- AM_RANGE(0xfff00000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xffe00000, 0xffefffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
+ map(0xfff00000, 0xffffffff).ram();
+}
// 9000/330 and 9000/340
-ADDRESS_MAP_START(hp9k3xx_state::hp9k330_map)
- AM_IMPORT_FROM(hp9k3xx_common)
+void hp9k3xx_state::hp9k330_map(address_map &map)
+{
+ hp9k3xx_common(map);
- AM_RANGE(0xffb00000, 0xffbfffff) AM_READWRITE(buserror_r, buserror_w)
- AM_RANGE(0xffc00000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xffb00000, 0xffbfffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
+ map(0xffc00000, 0xffffffff).ram();
+}
// 9000/332, with built-in medium-res video
-ADDRESS_MAP_START(hp9k3xx_state::hp9k332_map)
- AM_IMPORT_FROM(hp9k3xx_common)
+void hp9k3xx_state::hp9k332_map(address_map &map)
+{
+ hp9k3xx_common(map);
- AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_SHARE("vram") // 98544 mono framebuffer
- AM_RANGE(0x00560000, 0x00563fff) AM_ROM AM_REGION("graphics", 0x0000) // 98544 mono ROM
+ map(0x00200000, 0x002fffff).ram().share("vram"); // 98544 mono framebuffer
+ map(0x00560000, 0x00563fff).rom().region("graphics", 0x0000); // 98544 mono ROM
- AM_RANGE(0xffb00000, 0xffbfffff) AM_READWRITE(buserror_r, buserror_w)
- AM_RANGE(0xffc00000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xffb00000, 0xffbfffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
+ map(0xffc00000, 0xffffffff).ram();
+}
// 9000/370 - 8 MB RAM standard
-ADDRESS_MAP_START(hp9k3xx_state::hp9k370_map)
- AM_IMPORT_FROM(hp9k3xx_common)
+void hp9k3xx_state::hp9k370_map(address_map &map)
+{
+ hp9k3xx_common(map);
- AM_RANGE(0xff700000, 0xff7fffff) AM_READWRITE(buserror_r, buserror_w)
- AM_RANGE(0xff800000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xff700000, 0xff7fffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
+ map(0xff800000, 0xffffffff).ram();
+}
// 9000/380 - '040
-ADDRESS_MAP_START(hp9k3xx_state::hp9k380_map)
- AM_IMPORT_FROM(hp9k3xx_common)
+void hp9k3xx_state::hp9k380_map(address_map &map)
+{
+ hp9k3xx_common(map);
- AM_RANGE(0x0051a000, 0x0051afff) AM_READWRITE(buserror_r, buserror_w) // no "Alpha display"
+ map(0x0051a000, 0x0051afff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display"
- AM_RANGE(0xc0000000, 0xff7fffff) AM_READWRITE(buserror_r, buserror_w)
- AM_RANGE(0xff800000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xc0000000, 0xff7fffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
+ map(0xff800000, 0xffffffff).ram();
+}
// 9000/382 - onboard VGA compatible video (where?)
-ADDRESS_MAP_START(hp9k3xx_state::hp9k382_map)
- AM_IMPORT_FROM(hp9k3xx_common)
+void hp9k3xx_state::hp9k382_map(address_map &map)
+{
+ hp9k3xx_common(map);
- AM_RANGE(0xffb00000, 0xffbfffff) AM_READWRITE(buserror_r, buserror_w)
- AM_RANGE(0xffc00000, 0xffffffff) AM_RAM
+ map(0xffb00000, 0xffbfffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
+ map(0xffc00000, 0xffffffff).ram();
- AM_RANGE(0x0051a000, 0x0051afff) AM_READWRITE(buserror_r, buserror_w) // no "Alpha display"
-ADDRESS_MAP_END
+ map(0x0051a000, 0x0051afff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display"
+}
-ADDRESS_MAP_START(hp9k3xx_state::iocpu_map)
-ADDRESS_MAP_END
+void hp9k3xx_state::iocpu_map(address_map &map)
+{
+}
uint32_t hp9k3xx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
diff --git a/src/mame/drivers/hp_ipc.cpp b/src/mame/drivers/hp_ipc.cpp
index c43134c2399..69ccb693948 100644
--- a/src/mame/drivers/hp_ipc.cpp
+++ b/src/mame/drivers/hp_ipc.cpp
@@ -464,38 +464,40 @@ void hp_ipc_state::set_bus_error(uint32_t address, bool write, uint16_t mem_mask
m_bus_error_timer->adjust(m_maincpu->cycles_to_attotime(16)); // let rmw cycles complete
}
-ADDRESS_MAP_START(hp_ipc_state::hp_ipc_mem_outer)
- AM_RANGE(0x000000, 0xFFFFFF) AM_READWRITE(mem_r, mem_w)
-ADDRESS_MAP_END
+void hp_ipc_state::hp_ipc_mem_outer(address_map &map)
+{
+ map(0x000000, 0xFFFFFF).rw(this, FUNC(hp_ipc_state::mem_r), FUNC(hp_ipc_state::mem_w));
+}
-ADDRESS_MAP_START(hp_ipc_state::hp_ipc_mem_inner)
+void hp_ipc_state::hp_ipc_mem_inner(address_map &map)
+{
// bus error handler
- AM_RANGE(0x0000000, 0x1FFFFFF) AM_READWRITE(trap_r, trap_w)
+ map(0x0000000, 0x1FFFFFF).rw(this, FUNC(hp_ipc_state::trap_r), FUNC(hp_ipc_state::trap_w));
// user mode
- AM_RANGE(0x1000000, 0x17FFFFF) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x1800000, 0x187FFFF) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x1E20000, 0x1E2000F) AM_DEVREADWRITE8("gpu", hp1ll3_device, read, write, 0x00ff)
- AM_RANGE(0x1E40000, 0x1E4002F) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff)
+ map(0x1000000, 0x17FFFFF).rw(this, FUNC(hp_ipc_state::ram_r), FUNC(hp_ipc_state::ram_w));
+ map(0x1800000, 0x187FFFF).rom().region("maincpu", 0);
+ map(0x1E20000, 0x1E2000F).rw("gpu", FUNC(hp1ll3_device::read), FUNC(hp1ll3_device::write)).umask16(0x00ff);
+ map(0x1E40000, 0x1E4002F).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff);
// supervisor mode
- AM_RANGE(0x0000000, 0x007FFFF) AM_ROM AM_REGION("maincpu", 0) // Internal ROM (operating system PCA)
- AM_RANGE(0x0080000, 0x00FFFFF) AM_UNMAP // Internal ROM (option ROM PCA)
- AM_RANGE(0x0100000, 0x04FFFFF) AM_UNMAP // External ROM modules
- AM_RANGE(0x0600000, 0x060FFFF) AM_READWRITE(mmu_r, mmu_w)
- AM_RANGE(0x0610000, 0x0610007) AM_READWRITE8(floppy_id_r, floppy_id_w, 0x00ff)
- AM_RANGE(0x0610008, 0x061000F) AM_DEVREADWRITE8("fdc", wd2797_device, read, write, 0x00ff)
- AM_RANGE(0x0620000, 0x062000F) AM_DEVREADWRITE8("gpu", hp1ll3_device, read, write, 0x00ff)
- AM_RANGE(0x0630000, 0x063FFFF) AM_NOP // AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff)
- AM_RANGE(0x0640000, 0x064002F) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff)
- AM_RANGE(0x0650000, 0x065FFFF) AM_NOP // HP-IL Printer (optional; ROM sets _desktop to 0 if not mapped) -- sys/lpint.h
- AM_RANGE(0x0660000, 0x06600FF) AM_DEVREADWRITE8("mlc", hp_hil_mlc_device, read, write, 0x00ff) // 'caravan', scrn/caravan.h
- AM_RANGE(0x0670000, 0x067FFFF) AM_NOP // Speaker (NatSemi COP 452)
- AM_RANGE(0x0680000, 0x068FFFF) AM_NOP // 'SIMON (98628) fast HP-IB card' -- sys/simon.h
- AM_RANGE(0x0700000, 0x07FFFFF) AM_UNMAP // External I/O
- AM_RANGE(0x0800000, 0x0FFFFFF) AM_READWRITE(ram_r, ram_w)
-
-ADDRESS_MAP_END
+ map(0x0000000, 0x007FFFF).rom().region("maincpu", 0); // Internal ROM (operating system PCA)
+ map(0x0080000, 0x00FFFFF).unmaprw(); // Internal ROM (option ROM PCA)
+ map(0x0100000, 0x04FFFFF).unmaprw(); // External ROM modules
+ map(0x0600000, 0x060FFFF).rw(this, FUNC(hp_ipc_state::mmu_r), FUNC(hp_ipc_state::mmu_w));
+ map(0x0610000, 0x0610007).rw(this, 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, 0x062000F).rw("gpu", FUNC(hp1ll3_device::read), FUNC(hp1ll3_device::write)).umask16(0x00ff);
+ map(0x0630000, 0x063FFFF).noprw(); // AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff)
+ map(0x0640000, 0x064002F).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff);
+ map(0x0650000, 0x065FFFF).noprw(); // HP-IL Printer (optional; ROM sets _desktop to 0 if not mapped) -- sys/lpint.h
+ 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)
+ map(0x0680000, 0x068FFFF).noprw(); // 'SIMON (98628) fast HP-IB card' -- sys/simon.h
+ map(0x0700000, 0x07FFFFF).unmaprw(); // External I/O
+ map(0x0800000, 0x0FFFFFF).rw(this, FUNC(hp_ipc_state::ram_r), FUNC(hp_ipc_state::ram_w));
+
+}
static INPUT_PORTS_START(hp_ipc)
INPUT_PORTS_END
diff --git a/src/mame/drivers/hprot1.cpp b/src/mame/drivers/hprot1.cpp
index 4ee3a9a262e..26db5ffc2df 100644
--- a/src/mame/drivers/hprot1.cpp
+++ b/src/mame/drivers/hprot1.cpp
@@ -91,9 +91,10 @@ private:
#define LOG_IO_PORTS 0
-ADDRESS_MAP_START(hprot1_state::i80c31_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void hprot1_state::i80c31_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
DRIVER_INIT_MEMBER( hprot1_state, hprot1 )
{
@@ -126,16 +127,17 @@ DRIVER_INIT_MEMBER( hprot1_state, hprot1 )
//P1.4 => WhatchDog Input (after timeout resets CPU)
-ADDRESS_MAP_START(hprot1_state::i80c31_io)
- AM_RANGE(0x0000,0x7fff) AM_RAM
+void hprot1_state::i80c31_io(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
/*TODO: verify the mirror mask value for the HD44780 device */
- AM_RANGE(0xc000,0xc000) AM_MIRROR(0x13cf) AM_DEVWRITE("hd44780", hd44780_device, control_write)
- AM_RANGE(0xc010,0xc010) AM_MIRROR(0x13cf) AM_DEVWRITE("hd44780", hd44780_device, data_write)
- AM_RANGE(0xc020,0xc020) AM_MIRROR(0x13cf) AM_DEVREAD("hd44780", hd44780_device, control_read)
- AM_RANGE(0xc030,0xc030) AM_MIRROR(0x13cf) AM_DEVREAD("hd44780", hd44780_device, data_read)
+ map(0xc000, 0xc000).mirror(0x13cf).w(m_lcdc, FUNC(hd44780_device::control_write));
+ map(0xc010, 0xc010).mirror(0x13cf).w(m_lcdc, FUNC(hd44780_device::data_write));
+ map(0xc020, 0xc020).mirror(0x13cf).r(m_lcdc, FUNC(hd44780_device::control_read));
+ map(0xc030, 0xc030).mirror(0x13cf).r(m_lcdc, FUNC(hd44780_device::data_read));
/*TODO: attach the watchdog/brownout reset device:
AM_RANGE(0xe000,0xe0??) AM_MIRROR(?) AM_DEVREAD("adm965an", adm965an_device, data_read) */
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( hprot1 )
/* FIXME: I am still unsure whether all these inputs are Active High or Active Low: */
diff --git a/src/mame/drivers/hpz80unk.cpp b/src/mame/drivers/hpz80unk.cpp
index 35c80434551..d2125ebb6e6 100644
--- a/src/mame/drivers/hpz80unk.cpp
+++ b/src/mame/drivers/hpz80unk.cpp
@@ -100,26 +100,28 @@ READ8_MEMBER( hpz80unk_state::portfc_r )
return 0xfe; // or it halts
}
-ADDRESS_MAP_START(hpz80unk_state::hpz80unk_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_SHARE("rom")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hpz80unk_state::hpz80unk_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(port00_r) // uart1 status
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("uart1", ay31015_device, receive, transmit) // uart1 data
- AM_RANGE(0x02, 0x02) AM_READ(port02_r)
- AM_RANGE(0x03, 0x03) AM_READ(port03_r) // uart2 status
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart2", ay31015_device, receive, transmit) // uart2 data
- AM_RANGE(0x0d, 0x0d) AM_READ(port0d_r) // uart3 status
- AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("uart3", ay31015_device, transmit) // uart3 data
- AM_RANGE(0x1d, 0x1e) // top of memory is written here, big-endian
- AM_RANGE(0x1f, 0x1f) AM_READ_PORT("DSW") // select which uarts to use
- AM_RANGE(0xfc, 0xfc) AM_READ(portfc_r)
-ADDRESS_MAP_END
+void hpz80unk_state::hpz80unk_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xbfff).ram();
+ map(0xc000, 0xffff).rom().share("rom");
+}
+
+void hpz80unk_state::hpz80unk_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(hpz80unk_state::port00_r)); // uart1 status
+ map(0x01, 0x01).rw("uart1", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); // uart1 data
+ map(0x02, 0x02).r(this, FUNC(hpz80unk_state::port02_r));
+ map(0x03, 0x03).r(this, FUNC(hpz80unk_state::port03_r)); // uart2 status
+ map(0x04, 0x04).rw("uart2", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); // uart2 data
+ map(0x0d, 0x0d).r(this, FUNC(hpz80unk_state::port0d_r)); // uart3 status
+ map(0x0e, 0x0e).w("uart3", FUNC(ay31015_device::transmit)); // uart3 data
+ map(0x1d, 0x1e); // top of memory is written here, big-endian
+ map(0x1f, 0x1f).portr("DSW"); // select which uarts to use
+ map(0xfc, 0xfc).r(this, FUNC(hpz80unk_state::portfc_r));
+}
/* Input ports */
static INPUT_PORTS_START( hpz80unk )
diff --git a/src/mame/drivers/ht68k.cpp b/src/mame/drivers/ht68k.cpp
index 46dc104d839..17502b912b6 100644
--- a/src/mame/drivers/ht68k.cpp
+++ b/src/mame/drivers/ht68k.cpp
@@ -70,15 +70,16 @@ public:
};
-ADDRESS_MAP_START(ht68k_state::ht68k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot
+void ht68k_state::ht68k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0007ffff).ram().share("p_ram"); // 512 KB RAM / ROM at boot
//AM_RANGE(0x00080000, 0x000fffff) // Expansion
//AM_RANGE(0x00d80000, 0x00d8ffff) // Printer
- AM_RANGE(0x00e00000, 0x00e00007) AM_MIRROR(0xfff8) AM_DEVREADWRITE8("wd1770", wd1770_device, read, write, 0x00ff) // FDC WD1770
- AM_RANGE(0x00e80000, 0x00e800ff) AM_MIRROR(0xff00) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
- AM_RANGE(0x00f00000, 0x00f07fff) AM_ROM AM_MIRROR(0xf8000) AM_REGION("user1",0)
-ADDRESS_MAP_END
+ map(0x00e00000, 0x00e00007).mirror(0xfff8).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write)).umask16(0x00ff); // FDC WD1770
+ map(0x00e80000, 0x00e800ff).mirror(0xff00).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x00f00000, 0x00f07fff).rom().mirror(0xf8000).region("user1", 0);
+}
/* Input ports */
static INPUT_PORTS_START( ht68k )
diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp
index 5fa485282a2..c899f1b47e3 100644
--- a/src/mame/drivers/huebler.cpp
+++ b/src/mame/drivers/huebler.cpp
@@ -83,26 +83,28 @@ READ8_MEMBER( amu880_state::keyboard_r )
/* Memory Maps */
-ADDRESS_MAP_START(amu880_state::amu880_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xf000, 0xfbff) AM_ROM
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(amu880_state::amu880_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void amu880_state::amu880_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().share("video_ram");
+ map(0xf000, 0xfbff).rom();
+ map(0xfc00, 0xffff).ram();
+}
+
+void amu880_state::amu880_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_WRITE(power_off_w)
// AM_RANGE(0x04, 0x04) AM_MIRROR(0x02) AM_WRITE(tone_off_w)
// AM_RANGE(0x05, 0x05) AM_MIRROR(0x02) AM_WRITE(tone_on_w)
- AM_RANGE(0x08, 0x09) AM_MIRROR(0x02) AM_READ(keyboard_r)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, ba_cd_r, ba_cd_w)
-ADDRESS_MAP_END
+ map(0x08, 0x09).mirror(0x02).r(this, FUNC(amu880_state::keyboard_r));
+ map(0x0c, 0x0f).rw(Z80PIO2_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x10, 0x13).rw(Z80PIO1_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x14, 0x17).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x18, 0x1b).rw(m_z80sio, FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/hunter2.cpp b/src/mame/drivers/hunter2.cpp
index dee69f599c7..c82443a40be 100644
--- a/src/mame/drivers/hunter2.cpp
+++ b/src/mame/drivers/hunter2.cpp
@@ -88,37 +88,40 @@ private:
required_device<address_map_bank_device> m_bank3;
};
-ADDRESS_MAP_START(hunter2_state::hunter2_banked_mem)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("roms", 0x0000)
- AM_RANGE(0x30000, 0x3ffff) AM_NOP
- AM_RANGE(0x40000, 0xfffff) AM_RAM AM_REGION("rams", 0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hunter2_state::hunter2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank2", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank3", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hunter2_state::hunter2_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_DEVREADWRITE("iotimer", nsc810_device, read, write)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("lcdc", hd61830_device, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("lcdc", hd61830_device, status_r, control_w)
- AM_RANGE(0x3e, 0x3e) AM_DEVREAD("lcdc", hd61830_device, data_r)
- AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", mm58274c_device, read, write)
- AM_RANGE(0x60, 0x60) AM_WRITE(display_ctrl_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(port80_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(serial_tx_w)
- AM_RANGE(0x82, 0x82) AM_WRITE(serial_dtr_w)
- AM_RANGE(0x84, 0x84) AM_WRITE(serial_rts_w)
- AM_RANGE(0x86, 0x86) AM_WRITE(speaker_w)
- AM_RANGE(0xbb, 0xbb) AM_WRITE(irqctrl_w)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(memmap_w)
-ADDRESS_MAP_END
+void hunter2_state::hunter2_banked_mem(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom().region("roms", 0x0000);
+ map(0x30000, 0x3ffff).noprw();
+ map(0x40000, 0xfffff).ram().region("rams", 0x0000);
+}
+
+void hunter2_state::hunter2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rw(m_bank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x4000, 0x7fff).rw(m_bank2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0xbfff).rw(m_bank3, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xffff).ram();
+}
+
+void hunter2_state::hunter2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x1f).rw("iotimer", FUNC(nsc810_device::read), FUNC(nsc810_device::write));
+ map(0x20, 0x20).w("lcdc", FUNC(hd61830_device::data_w));
+ map(0x21, 0x21).rw("lcdc", FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w));
+ map(0x3e, 0x3e).r("lcdc", FUNC(hd61830_device::data_r));
+ map(0x40, 0x4f).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write));
+ map(0x60, 0x60).w(this, FUNC(hunter2_state::display_ctrl_w));
+ map(0x80, 0x80).w(this, FUNC(hunter2_state::port80_w));
+ map(0x81, 0x81).w(this, FUNC(hunter2_state::serial_tx_w));
+ map(0x82, 0x82).w(this, FUNC(hunter2_state::serial_dtr_w));
+ map(0x84, 0x84).w(this, FUNC(hunter2_state::serial_rts_w));
+ map(0x86, 0x86).w(this, FUNC(hunter2_state::speaker_w));
+ map(0xbb, 0xbb).w(this, FUNC(hunter2_state::irqctrl_w));
+ map(0xe0, 0xe0).w(this, FUNC(hunter2_state::memmap_w));
+}
/* Input ports */
diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp
index ad594e4d806..8dd8c8286f6 100644
--- a/src/mame/drivers/hvyunit.cpp
+++ b/src/mame/drivers/hvyunit.cpp
@@ -387,61 +387,67 @@ WRITE8_MEMBER(hvyunit_state::mermaid_p3_w)
*
*************************************/
-ADDRESS_MAP_START(hvyunit_state::master_memory)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("master_bank")
- AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_r, spriteram_w)
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hvyunit_state::master_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(master_bankswitch_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(master_bankswitch_w) // correct?
- AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_slave_cpu)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(hvyunit_state::slave_memory)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slave_bank")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(hu_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(hu_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hvyunit_state::slave_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(slave_bankswitch_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_sound_cpu2)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("slavelatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mermaidlatch", generic_latch_8_device, write)
- AM_RANGE(0x06, 0x06) AM_WRITE(hu_scrolly_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(hu_scrollx_w)
- AM_RANGE(0x0c, 0x0c) AM_READ(mermaid_status_r)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(coin_count_w)
+void hvyunit_state::master_memory(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("master_bank");
+ map(0xc000, 0xcfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w));
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xffff).ram().share("share1");
+}
+
+void hvyunit_state::master_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(hvyunit_state::master_bankswitch_w));
+ map(0x01, 0x01).w(this, FUNC(hvyunit_state::master_bankswitch_w)); // correct?
+ map(0x02, 0x02).w(this, FUNC(hvyunit_state::trigger_nmi_on_slave_cpu));
+}
+
+
+void hvyunit_state::slave_memory(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("slave_bank");
+ map(0xc000, 0xc3ff).ram().w(this, FUNC(hvyunit_state::hu_videoram_w)).share("videoram");
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(hvyunit_state::hu_colorram_w)).share("colorram");
+ map(0xd000, 0xdfff).ram();
+ map(0xd000, 0xd1ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xd800, 0xd9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe000, 0xffff).ram().share("share1");
+}
+
+void hvyunit_state::slave_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(hvyunit_state::slave_bankswitch_w));
+ map(0x02, 0x02).w(this, FUNC(hvyunit_state::trigger_nmi_on_sound_cpu2));
+ map(0x04, 0x04).r(m_slavelatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x04).w(m_mermaidlatch, FUNC(generic_latch_8_device::write));
+ map(0x06, 0x06).w(this, FUNC(hvyunit_state::hu_scrolly_w));
+ map(0x08, 0x08).w(this, FUNC(hvyunit_state::hu_scrollx_w));
+ map(0x0c, 0x0c).r(this, FUNC(hvyunit_state::mermaid_status_r));
+ map(0x0e, 0x0e).w(this, FUNC(hvyunit_state::coin_count_w));
// AM_RANGE(0x22, 0x22) AM_READ(hu_scrolly_hi_reset) //22/a2 taken from ram $f065
// AM_RANGE(0xa2, 0xa2) AM_READ(hu_scrolly_hi_set)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(hvyunit_state::sound_memory)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("sound_bank")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
+void hvyunit_state::sound_memory(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("sound_bank");
+ map(0xc000, 0xc7ff).ram();
+}
-ADDRESS_MAP_START(hvyunit_state::sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void hvyunit_state::sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(hvyunit_state::sound_bankswitch_w));
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*************************************
diff --git a/src/mame/drivers/hx20.cpp b/src/mame/drivers/hx20.cpp
index e1f807263e5..1ce187e5f8a 100644
--- a/src/mame/drivers/hx20.cpp
+++ b/src/mame/drivers/hx20.cpp
@@ -548,65 +548,70 @@ WRITE8_MEMBER( hx20_state::slave_p4_w )
// ADDRESS_MAP( hx20_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(hx20_state::hx20_mem)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_MAIN_TAG, hd63701_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0020, 0x0020) AM_WRITE(ksc_w)
- AM_RANGE(0x0022, 0x0022) AM_READ(krtn07_r)
- AM_RANGE(0x0026, 0x0026) AM_WRITE(lcd_cs_w)
- AM_RANGE(0x0028, 0x0028) AM_READ(krtn89_r)
- AM_RANGE(0x002a, 0x002a) AM_WRITE(lcd_data_w)
- AM_RANGE(0x002c, 0x002c) // mask interruption by using IC 8E in sleep mode
- AM_RANGE(0x0040, 0x007f) AM_DEVREADWRITE(MC146818_TAG, mc146818_device, read, write)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x3fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_READ(optrom_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(HD6301V1_MAIN_TAG, 0)
-ADDRESS_MAP_END
+void hx20_state::hx20_mem(address_map &map)
+{
+ map(0x0000, 0x001f).rw(m_maincpu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0020, 0x0020).w(this, FUNC(hx20_state::ksc_w));
+ map(0x0022, 0x0022).r(this, FUNC(hx20_state::krtn07_r));
+ map(0x0026, 0x0026).w(this, FUNC(hx20_state::lcd_cs_w));
+ map(0x0028, 0x0028).r(this, FUNC(hx20_state::krtn89_r));
+ map(0x002a, 0x002a).w(this, FUNC(hx20_state::lcd_data_w));
+ map(0x002c, 0x002c); // mask interruption by using IC 8E in sleep mode
+ map(0x0040, 0x007f).rw(m_rtc, FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+ map(0x0080, 0x00ff).ram();
+ map(0x0100, 0x3fff).ram();
+ map(0x6000, 0x7fff).rom().r(this, FUNC(hx20_state::optrom_r));
+ map(0x8000, 0xffff).rom().region(HD6301V1_MAIN_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( hx20_io )
//-------------------------------------------------
-ADDRESS_MAP_START(hx20_state::hx20_io)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(main_p1_r, main_p1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(main_p2_r, main_p2_w)
- AM_RANGE(M6801_PORT3, M6801_PORT3) AM_NOP // A0-A7, D0-D7
- AM_RANGE(M6801_PORT4, M6801_PORT4) AM_NOP // A8-A15
-ADDRESS_MAP_END
+void hx20_state::hx20_io(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(hx20_state::main_p1_r), FUNC(hx20_state::main_p1_w));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(hx20_state::main_p2_r), FUNC(hx20_state::main_p2_w));
+ map(M6801_PORT3, M6801_PORT3).noprw(); // A0-A7, D0-D7
+ map(M6801_PORT4, M6801_PORT4).noprw(); // A8-A15
+}
//-------------------------------------------------
// ADDRESS_MAP( hx20_sub_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(hx20_state::hx20_sub_mem)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_SLAVE_TAG, hd63701_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6301V1_SLAVE_TAG, 0)
-ADDRESS_MAP_END
+void hx20_state::hx20_sub_mem(address_map &map)
+{
+ map(0x0000, 0x001f).rw(m_subcpu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0xf000, 0xffff).rom().region(HD6301V1_SLAVE_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( hx20_sub_io )
//-------------------------------------------------
-ADDRESS_MAP_START(hx20_state::hx20_sub_io)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(slave_p1_r, slave_p1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(slave_p2_r, slave_p2_w)
- AM_RANGE(M6801_PORT3, M6801_PORT3) AM_READWRITE(slave_p3_r, slave_p3_w)
- AM_RANGE(M6801_PORT4, M6801_PORT4) AM_READWRITE(slave_p4_r, slave_p4_w)
-ADDRESS_MAP_END
+void hx20_state::hx20_sub_io(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(hx20_state::slave_p1_r), FUNC(hx20_state::slave_p1_w));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(hx20_state::slave_p2_r), FUNC(hx20_state::slave_p2_w));
+ map(M6801_PORT3, M6801_PORT3).rw(this, FUNC(hx20_state::slave_p3_r), FUNC(hx20_state::slave_p3_w));
+ map(M6801_PORT4, M6801_PORT4).rw(this, FUNC(hx20_state::slave_p4_r), FUNC(hx20_state::slave_p4_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( cm6000_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(hx20_state::cm6000_mem)
- AM_IMPORT_FROM(hx20_mem)
- AM_RANGE(0x4000, 0xffff) AM_ROM AM_REGION(HD6301V1_MAIN_TAG, 0)
-ADDRESS_MAP_END
+void hx20_state::cm6000_mem(address_map &map)
+{
+ hx20_mem(map);
+ map(0x4000, 0xffff).rom().region(HD6301V1_MAIN_TAG, 0);
+}
//**************************************************************************
diff --git a/src/mame/drivers/hyhoo.cpp b/src/mame/drivers/hyhoo.cpp
index e2350e9a91c..d7092675ebf 100644
--- a/src/mame/drivers/hyhoo.cpp
+++ b/src/mame/drivers/hyhoo.cpp
@@ -34,29 +34,31 @@ Memo:
#include "speaker.h"
-ADDRESS_MAP_START(hyhoo_state::hyhoo_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void hyhoo_state::hyhoo_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram().share("nvram");
+}
-ADDRESS_MAP_START(hyhoo_state::hyhoo_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void hyhoo_state::hyhoo_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x90, 0x97) AM_WRITE(hyhoo_blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITEONLY AM_SHARE("clut")
- AM_RANGE(0xd0, 0xd0) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) // unknown read
- AM_RANGE(0xe0, 0xe0) AM_WRITE(hyhoo_romsel_w)
- AM_RANGE(0xe0, 0xe1) AM_DEVREAD("nb1413m3", nb1413m3_device, gfxrom_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).portr("SYSTEM");
+ map(0x90, 0x97).w(this, FUNC(hyhoo_state::hyhoo_blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xcf).writeonly().share("clut");
+ map(0xd0, 0xd0).nopr().w("dac", FUNC(dac_byte_interface::write)); // unknown read
+ map(0xe0, 0xe0).w(this, FUNC(hyhoo_state::hyhoo_romsel_w));
+ map(0xe0, 0xe1).r(m_nb1413m3, FUNC(nb1413m3_device::gfxrom_r));
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r));
// AM_RANGE(0xf0, 0xf0) AM_WRITENOP
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
CUSTOM_INPUT_MEMBER( hyhoo_state::nb1413m3_busyflag_r )
{
diff --git a/src/mame/drivers/hyperscan.cpp b/src/mame/drivers/hyperscan.cpp
index 430aa77cf70..7a57dbd2ccd 100644
--- a/src/mame/drivers/hyperscan.cpp
+++ b/src/mame/drivers/hyperscan.cpp
@@ -585,15 +585,16 @@ void hyperscan_state::device_timer(emu_timer &timer, device_timer_id id, int par
}
}
-ADDRESS_MAP_START(hyperscan_state::spg290_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x1fffffff)
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_MIRROR(0x07000000)
- AM_RANGE(0x08000000, 0x09ffffff) AM_READWRITE(spg290_regs_r, spg290_regs_w)
- AM_RANGE(0x0a000000, 0x0a003fff) AM_RAM // internal SRAM
- AM_RANGE(0x0b000000, 0x0b007fff) AM_ROM AM_REGION("spg290", 0) // internal ROM
- AM_RANGE(0x10000000, 0x100fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x0e000000)
- AM_RANGE(0x11000000, 0x110fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x0e000000)
-ADDRESS_MAP_END
+void hyperscan_state::spg290_mem(address_map &map)
+{
+ map.global_mask(0x1fffffff);
+ map(0x00000000, 0x00ffffff).ram().mirror(0x07000000);
+ map(0x08000000, 0x09ffffff).rw(this, FUNC(hyperscan_state::spg290_regs_r), FUNC(hyperscan_state::spg290_regs_w));
+ map(0x0a000000, 0x0a003fff).ram(); // internal SRAM
+ map(0x0b000000, 0x0b007fff).rom().region("spg290", 0); // internal ROM
+ map(0x10000000, 0x100fffff).rom().region("bios", 0).mirror(0x0e000000);
+ map(0x11000000, 0x110fffff).rom().region("bios", 0).mirror(0x0e000000);
+}
/* Input ports */
static INPUT_PORTS_START( hyperscan )
diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp
index d44ecd5840d..2bb82f78911 100644
--- a/src/mame/drivers/hyperspt.cpp
+++ b/src/mame/drivers/hyperspt.cpp
@@ -52,61 +52,68 @@ WRITE_LINE_MEMBER(hyperspt_state::irq_mask_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(hyperspt_state::common_map)
- AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x10c0, 0x10ff) AM_RAM AM_SHARE("scroll") /* Scroll amount */
- AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1480, 0x1487) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x1500, 0x1500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2")
- AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1683, 0x1683) AM_READ_PORT("DSW1")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyperspt_state::hyperspt_map)
- AM_IMPORT_FROM(common_map)
- AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1_P2")
- AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P3_P4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyperspt_state::roadf_map)
- AM_IMPORT_FROM(common_map)
- AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1")
- AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyperspt_state::common_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w) /* Loads the snd command into the snd latch */
- AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w) /* This address triggers the SN chip to read the data port. */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyperspt_state::hyperspt_sound_map)
- AM_IMPORT_FROM(common_sound_map)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */
- AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, hyperspt_sound_w) /* speech and output control */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyperspt_state::roadf_sound_map)
- AM_IMPORT_FROM(common_sound_map)
- AM_RANGE(0xa000, 0xa000) AM_NOP // No VLM
- AM_RANGE(0xc000, 0xdfff) AM_NOP // No VLM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyperspt_state::soundb_map)
- AM_IMPORT_FROM(common_sound_map)
- AM_RANGE(0xa000, 0xa000) AM_NOP // No VLM
- AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write) /* speech and output control */
-ADDRESS_MAP_END
+void hyperspt_state::common_map(address_map &map)
+{
+ map(0x1000, 0x10bf).ram().share("spriteram");
+ map(0x10c0, 0x10ff).ram().share("scroll"); /* Scroll amount */
+ map(0x1400, 0x1400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1480, 0x1487).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x1500, 0x1500).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1600, 0x1600).portr("DSW2");
+ map(0x1680, 0x1680).portr("SYSTEM");
+ map(0x1683, 0x1683).portr("DSW1");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(hyperspt_state::videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(hyperspt_state::colorram_w)).share("colorram");
+ map(0x3000, 0x37ff).ram();
+ map(0x3800, 0x3fff).ram().share("nvram");
+ map(0x4000, 0xffff).rom();
+}
+
+void hyperspt_state::hyperspt_map(address_map &map)
+{
+ common_map(map);
+ map(0x1681, 0x1681).portr("P1_P2");
+ map(0x1682, 0x1682).portr("P3_P4");
+}
+
+void hyperspt_state::roadf_map(address_map &map)
+{
+ common_map(map);
+ map(0x1681, 0x1681).portr("P1");
+ map(0x1682, 0x1682).portr("P2");
+}
+
+void hyperspt_state::common_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8000).r("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sh_timer_r));
+ map(0xe000, 0xe000).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe001, 0xe001).w(this, FUNC(hyperspt_state::konami_SN76496_latch_w)); /* Loads the snd command into the snd latch */
+ map(0xe002, 0xe002).w(this, FUNC(hyperspt_state::konami_SN76496_w)); /* This address triggers the SN chip to read the data port. */
+}
+
+void hyperspt_state::hyperspt_sound_map(address_map &map)
+{
+ common_sound_map(map);
+ map(0xa000, 0xa000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* speech data */
+ map(0xc000, 0xdfff).w("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sound_w)); /* speech and output control */
+}
+
+void hyperspt_state::roadf_sound_map(address_map &map)
+{
+ common_sound_map(map);
+ map(0xa000, 0xa000).noprw(); // No VLM
+ map(0xc000, 0xdfff).noprw(); // No VLM
+}
+
+void hyperspt_state::soundb_map(address_map &map)
+{
+ common_sound_map(map);
+ map(0xa000, 0xa000).noprw(); // No VLM
+ map(0xc000, 0xdfff).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::write)); /* speech and output control */
+}
static INPUT_PORTS_START( hyperspt )
PORT_START("SYSTEM")
@@ -343,12 +350,13 @@ MACHINE_CONFIG_START(hyperspt_state::hyperspt)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(hyperspt_state::hyprolyb_adpcm_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, data_r)
- AM_RANGE(0x1001, 0x1001) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, ready_r)
- AM_RANGE(0x1002, 0x1002) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_data_w)
- AM_RANGE(0x1003, 0x1003) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_vck_r)
+void hyperspt_state::hyprolyb_adpcm_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x1000, 0x1000).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::data_r));
+ map(0x1001, 0x1001).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::ready_r));
+ map(0x1002, 0x1002).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_data_w));
+ map(0x1003, 0x1003).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_vck_r));
// on init:
// $1003 = $00
// $1002 = $FF
@@ -362,8 +370,8 @@ ADDRESS_MAP_START(hyperspt_state::hyprolyb_adpcm_map)
// $1002 & $0f (out) = 5205 data
// $1001 & $80 (in) = sound latch request
// $1000 (in) = sound latch data
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom();
+}
MACHINE_CONFIG_START(hyperspt_state::hypersptb)
diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp
index bdb5c5c49a2..2222dfc1d05 100644
--- a/src/mame/drivers/hyprduel.cpp
+++ b/src/mame/drivers/hyprduel.cpp
@@ -257,60 +257,64 @@ WRITE_LINE_MEMBER(hyprduel_state::vdp_blit_end_w)
Memory Maps
***************************************************************************/
-ADDRESS_MAP_START(hyprduel_state::hyprduel_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp", imagetek_i4220_device, v2_map)
- AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(irq_cause_r, irq_cause_w) /* IRQ Cause,Acknowledge */
- AM_RANGE(0x4788a4, 0x4788a5) AM_RAM AM_SHARE("irq_enable") /* IRQ Enable */
- AM_RANGE(0x800000, 0x800001) AM_WRITE(subcpu_control_w)
- AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1")
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP
- AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW")
- AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2")
- AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2")
- AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyprduel_state::hyprduel_map2)
- AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("sharedram1") /* shadow ($c00000 - $c03fff : vector) */
- AM_RANGE(0x004000, 0x007fff) AM_READONLY AM_WRITENOP AM_SHARE("sharedram3") /* shadow ($fe4000 - $fe7fff : read only) */
- AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_NOP
- AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1")
- AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2")
- AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3")
-ADDRESS_MAP_END
+void hyprduel_state::hyprduel_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x47ffff).m(m_vdp, FUNC(imagetek_i4220_device::v2_map));
+ map(0x4788a2, 0x4788a3).rw(this, FUNC(hyprduel_state::irq_cause_r), FUNC(hyprduel_state::irq_cause_w)); /* IRQ Cause,Acknowledge */
+ map(0x4788a4, 0x4788a5).ram().share("irq_enable"); /* IRQ Enable */
+ map(0x800000, 0x800001).w(this, FUNC(hyprduel_state::subcpu_control_w));
+ map(0xc00000, 0xc07fff).ram().share("sharedram1");
+ map(0xe00000, 0xe00001).portr("SERVICE").nopw();
+ map(0xe00002, 0xe00003).portr("DSW");
+ map(0xe00004, 0xe00005).portr("P1_P2");
+ map(0xe00006, 0xe00007).portr("SYSTEM");
+ map(0xfe0000, 0xfe3fff).ram().share("sharedram2");
+ map(0xfe4000, 0xffffff).ram().share("sharedram3");
+}
+
+void hyprduel_state::hyprduel_map2(address_map &map)
+{
+ map(0x000000, 0x003fff).ram().share("sharedram1"); /* shadow ($c00000 - $c03fff : vector) */
+ map(0x004000, 0x007fff).readonly().nopw().share("sharedram3"); /* shadow ($fe4000 - $fe7fff : read only) */
+ map(0x400000, 0x400003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x400005, 0x400005).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x800000, 0x800001).noprw();
+ map(0xc00000, 0xc07fff).ram().share("sharedram1");
+ map(0xfe0000, 0xfe3fff).ram().share("sharedram2");
+ map(0xfe4000, 0xffffff).ram().share("sharedram3");
+}
/* Magical Error - video is at 8x now */
-ADDRESS_MAP_START(hyprduel_state::magerror_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x400001) AM_WRITE(subcpu_control_w)
- AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4220_device, v2_map)
- AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(irq_cause_r, irq_cause_w) /* IRQ Cause, Acknowledge */
- AM_RANGE(0x8788a4, 0x8788a5) AM_RAM AM_SHARE("irq_enable") /* IRQ Enable */
- AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("sharedram1")
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP
- AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW")
- AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2")
- AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2")
- AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(hyprduel_state::magerror_map2)
- AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("sharedram1") /* shadow ($c00000 - $c03fff : vector) */
- AM_RANGE(0x004000, 0x007fff) AM_READONLY AM_WRITENOP AM_SHARE("sharedram3") /* shadow ($fe4000 - $fe7fff : read only) */
- AM_RANGE(0x400000, 0x400003) AM_NOP
- AM_RANGE(0x800000, 0x800003) AM_READNOP AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x800004, 0x800005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("sharedram1")
- AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2")
- AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3")
-ADDRESS_MAP_END
+void hyprduel_state::magerror_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x400001).w(this, FUNC(hyprduel_state::subcpu_control_w));
+ map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4220_device::v2_map));
+ map(0x8788a2, 0x8788a3).rw(this, FUNC(hyprduel_state::irq_cause_r), FUNC(hyprduel_state::irq_cause_w)); /* IRQ Cause, Acknowledge */
+ map(0x8788a4, 0x8788a5).ram().share("irq_enable"); /* IRQ Enable */
+ map(0xc00000, 0xc1ffff).ram().share("sharedram1");
+ map(0xe00000, 0xe00001).portr("SERVICE").nopw();
+ map(0xe00002, 0xe00003).portr("DSW");
+ map(0xe00004, 0xe00005).portr("P1_P2");
+ map(0xe00006, 0xe00007).portr("SYSTEM");
+ map(0xfe0000, 0xfe3fff).ram().share("sharedram2");
+ map(0xfe4000, 0xffffff).ram().share("sharedram3");
+}
+
+void hyprduel_state::magerror_map2(address_map &map)
+{
+ map(0x000000, 0x003fff).ram().share("sharedram1"); /* shadow ($c00000 - $c03fff : vector) */
+ map(0x004000, 0x007fff).readonly().nopw().share("sharedram3"); /* shadow ($fe4000 - $fe7fff : read only) */
+ map(0x400000, 0x400003).noprw();
+ map(0x800000, 0x800003).nopr().w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x800005, 0x800005).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc00000, 0xc1ffff).ram().share("sharedram1");
+ map(0xfe0000, 0xfe3fff).ram().share("sharedram2");
+ map(0xfe4000, 0xffffff).ram().share("sharedram3");
+}
/***************************************************************************
Input Ports
diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp
index aec1ec0e216..428905e6505 100644
--- a/src/mame/drivers/i7000.cpp
+++ b/src/mame/drivers/i7000.cpp
@@ -245,31 +245,33 @@ PALETTE_INIT_MEMBER(i7000_state, i7000)
/*FIXME: we still need to figure out the proper memory map
for the maincpu and where the cartridge slot maps to. */
-ADDRESS_MAP_START(i7000_state::i7000_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("boot", 0)
- AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4000, 0xffff) AM_RAM
+void i7000_state::i7000_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("boot", 0);
+ map(0x2000, 0x2fff).ram().share("videoram");
+ map(0x4000, 0xffff).ram();
// AM_RANGE(0x4000, 0xbfff) AM_ROM AM_REGION("cardslot", 0)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(i7000_state::i7000_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK (0xff)
+void i7000_state::i7000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// AM_RANGE(0x06, 0x06) AM_WRITE(i7000_io_?_w)
// AM_RANGE(0x08, 0x09) AM_WRITE(i7000_io_?_w) //printer perhaps?
// AM_RANGE(0x0c, 0x0c) AM_WRITE(i7000_io_?_w) //0x0C and 0x10 may be related to mem page swapping. (self-test "4. PAG")
// AM_RANGE(0x10, 0x10) AM_WRITE(i7000_io_?_w)
// AM_RANGE(0x14, 0x15) AM_WRITE(i7000_io_?_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+ map(0x18, 0x1b).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
// AM_RANGE(0x1c, 0x1c) AM_WRITE(i7000_io_printer_data_w) //ASCII data
- AM_RANGE(0x1d, 0x1d) AM_READ_PORT("DSW")
+ map(0x1d, 0x1d).portr("DSW");
// AM_RANGE(0x1e, 0x1e) AM_READWRITE(i7000_io_printer_status_r, i7000_io_?_w)
// AM_RANGE(0x1f, 0x1f) AM_WRITE(i7000_io_printer_strobe_w) //self-test routine writes 0x08 and 0x09 (it seems that bit 0 is the strobe and bit 3 is an enable signal)
// AM_RANGE(0x20, 0x21) AM_READWRITE(i7000_io_keyboard_r, i7000_io_keyboard_w)
- AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("i8279", i8279_device, read, write)
+ map(0x20, 0x21).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
// AM_RANGE(0x24, 0x24) AM_READ(i7000_io_?_r)
// AM_RANGE(0x25, 0x25) AM_WRITE(i7000_io_?_w)
@@ -279,7 +281,7 @@ ADDRESS_MAP_START(i7000_state::i7000_io)
// AM_RANGE(0x3b, 0x3b) AM_WRITE(i7000_io_?_w)
// AM_RANGE(0x66, 0x67) AM_WRITE(i7000_io_?_w)
// AM_RANGE(0xbb, 0xbb) AM_WRITE(i7000_io_?_w) //may be related to page-swapping...
-ADDRESS_MAP_END
+}
DEVICE_IMAGE_LOAD_MEMBER( i7000_state, i7000_card )
{
diff --git a/src/mame/drivers/ibm3153.cpp b/src/mame/drivers/ibm3153.cpp
index 3fd3d37f2d7..19e55749d31 100644
--- a/src/mame/drivers/ibm3153.cpp
+++ b/src/mame/drivers/ibm3153.cpp
@@ -64,16 +64,18 @@ private:
};
-ADDRESS_MAP_START(ibm3153_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x0ffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void ibm3153_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x0ffff).rom().region("user1", 0);
+}
-ADDRESS_MAP_START(ibm3153_state::io_map)
- AM_RANGE(0x0000,0xffff) AM_RAM
+void ibm3153_state::io_map(address_map &map)
+{
+ map(0x0000, 0xffff).ram();
//ADDRESS_MAP_UNMAP_HIGH
//ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+}
/* Input ports */
diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp
index d01df077d85..989e2371c2b 100644
--- a/src/mame/drivers/ibm6580.cpp
+++ b/src/mame/drivers/ibm6580.cpp
@@ -680,35 +680,37 @@ READ8_MEMBER(ibm6580_state::floppy_r)
}
-ADDRESS_MAP_START(ibm6580_state::ibm6580_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x90000, 0x90001) AM_WRITE(unk_latch_w)
- AM_RANGE(0xef000, 0xeffff) AM_RAM AM_SHARE("videoram") // 66-line vram starts at 0xec000
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ibm6580_state::ibm6580_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0007) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0008, 0x000f) AM_WRITE (pic_latch_w)
- AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("dma8257", i8257_device, read, write, 0x00ff)
- AM_RANGE(0x0040, 0x005f) AM_READWRITE8(p40_r, p40_w, 0x00ff)
- AM_RANGE(0x0070, 0x007f) AM_UNMAP
- AM_RANGE(0x0120, 0x0127) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0140, 0x0141) AM_DEVREADWRITE8("upd8251a", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x0142, 0x0143) AM_DEVREADWRITE8("upd8251a", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x0160, 0x0161) AM_DEVREADWRITE8("upd8251b", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x0162, 0x0163) AM_DEVREADWRITE8("upd8251b", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x4000, 0x400f) AM_UNMAP
- AM_RANGE(0x5000, 0x500f) AM_UNMAP
- AM_RANGE(0x6000, 0x601f) AM_UNMAP
- AM_RANGE(0x8060, 0x807f) AM_UNMAP
- AM_RANGE(0x8150, 0x815f) AM_READWRITE8(floppy_r, floppy_w, 0x00ff) // HLE of floppy board
- AM_RANGE(0x81a0, 0x81af) AM_UNMAP
- AM_RANGE(0xc000, 0xc00f) AM_UNMAP
- AM_RANGE(0xe000, 0xe02f) AM_READWRITE8(video_r, video_w, 0x00ff)
-ADDRESS_MAP_END
+void ibm6580_state::ibm6580_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x90000, 0x90001).w(this, FUNC(ibm6580_state::unk_latch_w));
+ map(0xef000, 0xeffff).ram().share("videoram"); // 66-line vram starts at 0xec000
+ map(0xfc000, 0xfffff).rom().region("user1", 0);
+}
+
+void ibm6580_state::ibm6580_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0007).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0008, 0x000f).w(this, FUNC(ibm6580_state::pic_latch_w));
+ map(0x0010, 0x0017).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0020, 0x003f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)).umask16(0x00ff);
+ map(0x0040, 0x005f).rw(this, FUNC(ibm6580_state::p40_r), FUNC(ibm6580_state::p40_w)).umask16(0x00ff);
+ map(0x0070, 0x007f).unmaprw();
+ map(0x0120, 0x0127).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0140, 0x0140).rw("upd8251a", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0142, 0x0142).rw("upd8251a", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x0160, 0x0160).rw("upd8251b", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0162, 0x0162).rw("upd8251b", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x4000, 0x400f).unmaprw();
+ map(0x5000, 0x500f).unmaprw();
+ map(0x6000, 0x601f).unmaprw();
+ map(0x8060, 0x807f).unmaprw();
+ map(0x8150, 0x815f).rw(this, FUNC(ibm6580_state::floppy_r), FUNC(ibm6580_state::floppy_w)).umask16(0x00ff); // HLE of floppy board
+ map(0x81a0, 0x81af).unmaprw();
+ map(0xc000, 0xc00f).unmaprw();
+ map(0xe000, 0xe02f).rw(this, FUNC(ibm6580_state::video_r), FUNC(ibm6580_state::video_w)).umask16(0x00ff);
+}
/* Input ports */
diff --git a/src/mame/drivers/ibmpc.cpp b/src/mame/drivers/ibmpc.cpp
index 18e1f2b83a7..fc913439127 100644
--- a/src/mame/drivers/ibmpc.cpp
+++ b/src/mame/drivers/ibmpc.cpp
@@ -277,15 +277,17 @@ public:
void pc8_map(address_map &map);
};
-ADDRESS_MAP_START(ibmpc_state::pc8_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ibmpc_state::pc8_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
-ADDRESS_MAP_END
+void ibmpc_state::pc8_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void ibmpc_state::pc8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+}
static DEVICE_INPUT_DEFAULTS_START(cga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20)
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index 2492da2af95..1db58a6c4b8 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -542,44 +542,48 @@ static GFXDECODE_START( pcjr )
GFXDECODE_END
-ADDRESS_MAP_START(pcjr_state::ibmpcjr_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8)
- AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot2", generic_slot_device, read_rom)
- AM_RANGE(0xe0000, 0xeffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pcjr_state::ibmpcjr_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x00a0, 0x00a0) AM_READWRITE(pcjr_nmi_enable_r, pc_nmi_enable_w )
- AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", sn76496_device, write)
- AM_RANGE(0x00f2, 0x00f2) AM_WRITE(pcjr_fdc_dor_w)
- AM_RANGE(0x00f4, 0x00f5) AM_DEVICE("fdc", upd765a_device, map)
- AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w)
- AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w)
- AM_RANGE(0x0378, 0x037b) AM_DEVREADWRITE("lpt_0", pc_lpt_device, read, write)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREAD("pcvideo_pcjr", pcvideo_pcjr_device, read) AM_DEVWRITE("pcvideo_pcjr", pcvideo_pcjr_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcjr_state::ibmpcjx_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80000, 0xb7fff) AM_ROM AM_REGION("kanji",0)
- AM_RANGE(0x80000, 0x9ffff) AM_RAM AM_SHARE("vram") // TODO: remove this part of vram hack
- AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8)
- AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom)
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcjr_state::ibmpcjx_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM( ibmpcjr_io )
- AM_RANGE(0x01ff, 0x01ff) AM_READWRITE(pcjx_port_1ff_r, pcjx_port_1ff_w)
-ADDRESS_MAP_END
+void pcjr_state::ibmpcjr_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xb8000, 0xbffff).m("pcvideo_pcjr:vram", FUNC(address_map_bank_device::amap8));
+ map(0xd0000, 0xdffff).r(m_cart2, FUNC(generic_slot_device::read_rom));
+ map(0xe0000, 0xeffff).r(m_cart1, FUNC(generic_slot_device::read_rom));
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+
+void pcjr_state::ibmpcjr_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ 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(this, FUNC(pcjr_state::pcjr_nmi_enable_r), FUNC(pcjr_state::pc_nmi_enable_w));
+ map(0x00c0, 0x00c0).w("sn76496", FUNC(sn76496_device::write));
+ map(0x00f2, 0x00f2).w(this, 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));
+ map(0x02f8, 0x02ff).rw("ins8250", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
+ map(0x0378, 0x037b).rw("lpt_0", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write));
+ map(0x03d0, 0x03df).r("pcvideo_pcjr", FUNC(pcvideo_pcjr_device::read)).w("pcvideo_pcjr", FUNC(pcvideo_pcjr_device::write));
+}
+
+void pcjr_state::ibmpcjx_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x80000, 0xb7fff).rom().region("kanji", 0);
+ map(0x80000, 0x9ffff).ram().share("vram"); // TODO: remove this part of vram hack
+ map(0xb8000, 0xbffff).m("pcvideo_pcjr:vram", FUNC(address_map_bank_device::amap8));
+ map(0xd0000, 0xdffff).r(m_cart1, FUNC(generic_slot_device::read_rom));
+ map(0xe0000, 0xfffff).rom().region("bios", 0);
+}
+
+void pcjr_state::ibmpcjx_io(address_map &map)
+{
+ map.unmap_value_high();
+ ibmpcjr_io(map);
+ map(0x01ff, 0x01ff).rw(this, FUNC(pcjr_state::pcjx_port_1ff_r), FUNC(pcjr_state::pcjx_port_1ff_w));
+}
MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
/* basic machine hardware */
diff --git a/src/mame/drivers/icatel.cpp b/src/mame/drivers/icatel.cpp
index a3693a9ee5b..9986fcd1ceb 100644
--- a/src/mame/drivers/icatel.cpp
+++ b/src/mame/drivers/icatel.cpp
@@ -75,25 +75,28 @@ private:
required_device<hd44780_device> m_lcdc;
};
-ADDRESS_MAP_START(icatel_state::i80c31_prg)
- AM_RANGE(0x0000, 0x7FFF) AM_MIRROR(0x8000) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(icatel_state::i80c31_io)
- AM_RANGE(0x0000,0x3FFF) AM_RAM
- AM_RANGE(0x8000,0x8002) AM_RAM /* HACK! */
- AM_RANGE(0x8040,0x8040) AM_MIRROR(0x3F1E) AM_DEVWRITE("hd44780", hd44780_device, control_write) // not sure yet. CI12 (73LS273)
- AM_RANGE(0x8041,0x8041) AM_MIRROR(0x3F1E) AM_DEVWRITE("hd44780", hd44780_device, data_write) // not sure yet. CI12
- AM_RANGE(0x8060,0x8060) AM_MIRROR(0x3F1F) AM_READWRITE(ci8_r, ci8_w)
- AM_RANGE(0x8080,0x8080) AM_MIRROR(0x3F1F) AM_READWRITE(ci16_r, ci16_w) // card reader (?)
- AM_RANGE(0x80C0,0x80C0) AM_MIRROR(0x3F1F) AM_READWRITE(ci15_r, ci15_w) // 74LS244 (tristate buffer)
- AM_RANGE(0xC000,0xCFFF) AM_READWRITE(cn8_extension_r, cn8_extension_w)
- AM_RANGE(0xE000,0xEFFF) AM_READWRITE(modem_r, modem_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(icatel_state::i80c31_data)
+void icatel_state::i80c31_prg(address_map &map)
+{
+ map(0x0000, 0x7FFF).mirror(0x8000).rom();
+}
+
+void icatel_state::i80c31_io(address_map &map)
+{
+ map(0x0000, 0x3FFF).ram();
+ map(0x8000, 0x8002).ram(); /* HACK! */
+ map(0x8040, 0x8040).mirror(0x3F1E).w(m_lcdc, FUNC(hd44780_device::control_write)); // not sure yet. CI12 (73LS273)
+ map(0x8041, 0x8041).mirror(0x3F1E).w(m_lcdc, FUNC(hd44780_device::data_write)); // not sure yet. CI12
+ map(0x8060, 0x8060).mirror(0x3F1F).rw(this, FUNC(icatel_state::ci8_r), FUNC(icatel_state::ci8_w));
+ map(0x8080, 0x8080).mirror(0x3F1F).rw(this, FUNC(icatel_state::ci16_r), FUNC(icatel_state::ci16_w)); // card reader (?)
+ map(0x80C0, 0x80C0).mirror(0x3F1F).rw(this, FUNC(icatel_state::ci15_r), FUNC(icatel_state::ci15_w)); // 74LS244 (tristate buffer)
+ map(0xC000, 0xCFFF).rw(this, FUNC(icatel_state::cn8_extension_r), FUNC(icatel_state::cn8_extension_w));
+ map(0xE000, 0xEFFF).rw(this, FUNC(icatel_state::modem_r), FUNC(icatel_state::modem_w));
+}
+
+void icatel_state::i80c31_data(address_map &map)
+{
// AM_RANGE(0x0056,0x005A) AM_READ(magic_string) /* This is a hack! */
-ADDRESS_MAP_END
+}
DRIVER_INIT_MEMBER( icatel_state, icatel )
{
diff --git a/src/mame/drivers/ice_bozopail.cpp b/src/mame/drivers/ice_bozopail.cpp
index eace78d87cf..d2cdced75fa 100644
--- a/src/mame/drivers/ice_bozopail.cpp
+++ b/src/mame/drivers/ice_bozopail.cpp
@@ -37,9 +37,10 @@ public:
void ice_bozo_map(address_map &map);
};
-ADDRESS_MAP_START(ice_bozopail_state::ice_bozo_map)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x1fe000)
-ADDRESS_MAP_END
+void ice_bozopail_state::ice_bozo_map(address_map &map)
+{
+ map(0xe000, 0xffff).rom().region("maincpu", 0x1fe000);
+}
static INPUT_PORTS_START( ice_bozo )
INPUT_PORTS_END
diff --git a/src/mame/drivers/ice_tbd.cpp b/src/mame/drivers/ice_tbd.cpp
index 57d85284d88..dcc452384d4 100644
--- a/src/mame/drivers/ice_tbd.cpp
+++ b/src/mame/drivers/ice_tbd.cpp
@@ -40,15 +40,17 @@ private:
-ADDRESS_MAP_START(ice_tbd_state::ice_tbd_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ice_tbd_state::ice_tbd_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
+void ice_tbd_state::ice_tbd_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+}
+
+void ice_tbd_state::ice_tbd_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
static INPUT_PORTS_START( ice_tbd )
diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp
index 45473aef6e2..511ee25e91f 100644
--- a/src/mame/drivers/icecold.cpp
+++ b/src/mame/drivers/icecold.cpp
@@ -67,15 +67,16 @@ public:
void icecold_map(address_map &map);
};
-ADDRESS_MAP_START(icecold_state::icecold_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x4010, 0x4013) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x4020, 0x4023) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x4040, 0x4043) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // not used
- AM_RANGE(0x4080, 0x4081) AM_DEVREADWRITE("i8279", i8279_device, read, write)
- AM_RANGE(0x4100, 0x4100) AM_WRITE(motors_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void icecold_state::icecold_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x4010, 0x4013).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4020, 0x4023).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4040, 0x4043).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // not used
+ map(0x4080, 0x4081).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0x4100, 0x4100).w(this, FUNC(icecold_state::motors_w));
+ map(0xa000, 0xffff).rom();
+}
static INPUT_PORTS_START( icecold )
PORT_START("DSW3")
diff --git a/src/mame/drivers/ichiban.cpp b/src/mame/drivers/ichiban.cpp
index 0eb440b1af4..0db563f90c9 100644
--- a/src/mame/drivers/ichiban.cpp
+++ b/src/mame/drivers/ichiban.cpp
@@ -78,13 +78,15 @@ uint32_t ichibanjyan_state::screen_update( screen_device &screen, bitmap_ind16 &
}
-ADDRESS_MAP_START(ichibanjyan_state::ichibanjyan_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void ichibanjyan_state::ichibanjyan_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank1");
+}
-ADDRESS_MAP_START(ichibanjyan_state::ichibanjyan_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void ichibanjyan_state::ichibanjyan_io(address_map &map)
+{
+ map.global_mask(0xff);
+}
static INPUT_PORTS_START( ichibanjyan )
INPUT_PORTS_END
diff --git a/src/mame/drivers/idsa.cpp b/src/mame/drivers/idsa.cpp
index 24965d3a565..20e5df76c14 100644
--- a/src/mame/drivers/idsa.cpp
+++ b/src/mame/drivers/idsa.cpp
@@ -77,31 +77,33 @@ private:
optional_device_array<i8255_device, 2> m_ppi;
};
-ADDRESS_MAP_START(idsa_state::maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(idsa_state::maincpu_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_READ_PORT("X0")
- AM_RANGE(0x10, 0x1f) AM_READ_PORT("X1")
- AM_RANGE(0x20, 0x2f) AM_READ_PORT("X2")
- AM_RANGE(0x30, 0x3f) AM_READ_PORT("X3")
- AM_RANGE(0x40, 0x4f) AM_READ_PORT("X4")
- AM_RANGE(0x50, 0x5f) AM_READ_PORT("X5")
- AM_RANGE(0x60, 0x6f) AM_READ_PORT("X6")
- AM_RANGE(0x70, 0x7f) AM_READ_PORT("X7")
- AM_RANGE(0x80, 0x8f) AM_WRITE(port80_w)
- AM_RANGE(0x90, 0x9f) AM_WRITE(port90_w)
- AM_RANGE(0xb0, 0xb3) AM_READ(portb0_r)
- AM_RANGE(0xbd, 0xbd) AM_READ_PORT("X8")
- AM_RANGE(0xd0, 0xdf) AM_DEVWRITE("speech", sp0256_device, ald_w)
- AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("aysnd1", ay8910_device, data_r, address_data_w)
- AM_RANGE(0xf0, 0xff) AM_DEVREADWRITE("aysnd2", ay8910_device, data_r, address_data_w)
-ADDRESS_MAP_END
+void idsa_state::maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+}
+
+void idsa_state::maincpu_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x0f).portr("X0");
+ map(0x10, 0x1f).portr("X1");
+ map(0x20, 0x2f).portr("X2");
+ map(0x30, 0x3f).portr("X3");
+ map(0x40, 0x4f).portr("X4");
+ map(0x50, 0x5f).portr("X5");
+ map(0x60, 0x6f).portr("X6");
+ map(0x70, 0x7f).portr("X7");
+ map(0x80, 0x8f).w(this, FUNC(idsa_state::port80_w));
+ map(0x90, 0x9f).w(this, FUNC(idsa_state::port90_w));
+ map(0xb0, 0xb3).r(this, FUNC(idsa_state::portb0_r));
+ map(0xbd, 0xbd).portr("X8");
+ map(0xd0, 0xdf).w(m_speech, FUNC(sp0256_device::ald_w));
+ map(0xe0, 0xef).rw("aysnd1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0xf0, 0xff).rw("aysnd2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( idsa )
diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp
index f7df89de093..181b39e7a70 100644
--- a/src/mame/drivers/if800.cpp
+++ b/src/mame/drivers/if800.cpp
@@ -55,17 +55,19 @@ UPD7220_DISPLAY_PIXELS_MEMBER( if800_state::hgdc_display_pixels )
}
}
-ADDRESS_MAP_START(if800_state::if800_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x0ffff) AM_RAM
- AM_RANGE(0xfe000,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(if800_state::if800_io)
- ADDRESS_MAP_UNMAP_HIGH
+void if800_state::if800_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x0ffff).ram();
+ map(0xfe000, 0xfffff).rom().region("ipl", 0);
+}
+
+void if800_state::if800_io(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x0640, 0x065f) dma?
- AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("upd7220", upd7220_device, read, write,0x00ff)
-ADDRESS_MAP_END
+ map(0x0660, 0x0663).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask16(0x00ff);
+}
/* Input ports */
static INPUT_PORTS_START( if800 )
@@ -80,9 +82,10 @@ void if800_state::machine_reset()
{
}
-ADDRESS_MAP_START(if800_state::upd7220_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void if800_state::upd7220_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram().share("video_ram");
+}
MACHINE_CONFIG_START(if800_state::if800)
/* basic machine hardware */
diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp
index b99a7495e7c..7cc2e9efb36 100644
--- a/src/mame/drivers/igs009.cpp
+++ b/src/mame/drivers/igs009.cpp
@@ -475,81 +475,84 @@ READ8_MEMBER(igs009_state::magic_r)
}
-ADDRESS_MAP_START(igs009_state::jingbell_map)
- AM_RANGE( 0x00000, 0x0f3ff ) AM_ROM
- AM_RANGE( 0x0f400, 0x0ffff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void igs009_state::jingbell_map(address_map &map)
+{
+ map(0x00000, 0x0f3ff).rom();
+ map(0x0f400, 0x0ffff).ram().share("nvram");
+}
-ADDRESS_MAP_START(igs009_state::jingbell_portmap)
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs
+void igs009_state::jingbell_portmap(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // Z180 internal regs
- AM_RANGE( 0x1000, 0x11ff ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
+ map(0x1000, 0x11ff).ram().w(this, FUNC(igs009_state::bg_scroll_w)).share("bg_scroll");
- AM_RANGE( 0x2000, 0x23ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE( 0x2400, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
+ map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
- AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE( 0x3400, 0x37ff ) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE( 0x3800, 0x3bff ) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE( 0x3c00, 0x3fff ) AM_RAM_WRITE(reel4_ram_w ) AM_SHARE("reel4_ram")
+ map(0x3000, 0x33ff).ram().w(this, FUNC(igs009_state::reel1_ram_w)).share("reel1_ram");
+ map(0x3400, 0x37ff).ram().w(this, FUNC(igs009_state::reel2_ram_w)).share("reel2_ram");
+ map(0x3800, 0x3bff).ram().w(this, FUNC(igs009_state::reel3_ram_w)).share("reel3_ram");
+ map(0x3c00, 0x3fff).ram().w(this, FUNC(igs009_state::reel4_ram_w)).share("reel4_ram");
- AM_RANGE( 0x4000, 0x407f ) AM_RAM AM_SHARE("bg_scroll2")
+ map(0x4000, 0x407f).ram().share("bg_scroll2");
- AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
+ map(0x5000, 0x5fff).ram().w(this, FUNC(igs009_state::fg_tile_w)).share("fg_tile_ram");
- AM_RANGE(0x6480, 0x6483) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* NMI and coins (w), service (r), coins (r) */
- AM_RANGE(0x6490, 0x6493) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* buttons 1 (r), video and leds (w), leds (w) */
+ map(0x6480, 0x6483).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* NMI and coins (w), service (r), coins (r) */
+ map(0x6490, 0x6493).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* buttons 1 (r), video and leds (w), leds (w) */
- AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" )
+ map(0x64a0, 0x64a0).portr("BUTTONS2");
- AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ map(0x64b0, 0x64b1).w("ymsnd", FUNC(ym2413_device::write));
- AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x64c0, 0x64c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(magic_r, magic_w ) // DSW1-5
+ map(0x64d0, 0x64d1).rw(this, FUNC(igs009_state::magic_r), FUNC(igs009_state::magic_w)); // DSW1-5
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
+ map(0x7000, 0x7fff).ram().w(this, FUNC(igs009_state::fg_color_w)).share("fg_color_ram");
- AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("data", 0)
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom().region("data", 0);
+}
-ADDRESS_MAP_START(igs009_state::gp98_portmap)
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs
+void igs009_state::gp98_portmap(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // Z180 internal regs
- AM_RANGE( 0x1000, 0x11ff ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
+ map(0x1000, 0x11ff).ram().w(this, FUNC(igs009_state::bg_scroll_w)).share("bg_scroll");
- AM_RANGE( 0x2000, 0x23ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE( 0x2400, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
+ map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
- AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE( 0x3400, 0x37ff ) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE( 0x3800, 0x3bff ) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE( 0x3c00, 0x3fff ) AM_RAM_WRITE(reel4_ram_w ) AM_SHARE("reel4_ram")
+ map(0x3000, 0x33ff).ram().w(this, FUNC(igs009_state::reel1_ram_w)).share("reel1_ram");
+ map(0x3400, 0x37ff).ram().w(this, FUNC(igs009_state::reel2_ram_w)).share("reel2_ram");
+ map(0x3800, 0x3bff).ram().w(this, FUNC(igs009_state::reel3_ram_w)).share("reel3_ram");
+ map(0x3c00, 0x3fff).ram().w(this, FUNC(igs009_state::reel4_ram_w)).share("reel4_ram");
- AM_RANGE( 0x4000, 0x407f ) AM_RAM AM_SHARE("bg_scroll2")
+ map(0x4000, 0x407f).ram().share("bg_scroll2");
- AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
+ map(0x5000, 0x5fff).ram().w(this, FUNC(igs009_state::fg_tile_w)).share("fg_tile_ram");
// seems to lack PPI devices...
- AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(nmi_and_coins_w )
- AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" )
- AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" )
- AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" )
- AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(video_and_leds_w )
- AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(leds_w )
- AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" )
+ map(0x6480, 0x6480).w(this, FUNC(igs009_state::nmi_and_coins_w));
+ map(0x6481, 0x6481).portr("SERVICE");
+ map(0x6482, 0x6482).portr("COINS");
+ map(0x6490, 0x6490).portr("BUTTONS1");
+ map(0x6491, 0x6491).w(this, FUNC(igs009_state::video_and_leds_w));
+ map(0x6492, 0x6492).w(this, FUNC(igs009_state::leds_w));
+ map(0x64a0, 0x64a0).portr("BUTTONS2");
- AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ map(0x64b0, 0x64b1).w("ymsnd", FUNC(ym2413_device::write));
- AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x64c0, 0x64c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(magic_r, magic_w ) // DSW1-5
+ map(0x64d0, 0x64d1).rw(this, FUNC(igs009_state::magic_r), FUNC(igs009_state::magic_w)); // DSW1-5
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
+ map(0x7000, 0x7fff).ram().w(this, FUNC(igs009_state::fg_color_w)).share("fg_color_ram");
- AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("data", 0)
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom().region("data", 0);
+}
/***************************************************************************
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index de1938637a5..9f279d3db57 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -2563,61 +2563,63 @@ DRIVER_INIT_MEMBER(igs011_state,nkishusp)
***************************************************************************/
-ADDRESS_MAP_START(igs011_state::drgnwrld)
+void igs011_state::drgnwrld(address_map &map)
+{
// drgnwrld: IGS011 protection dynamically mapped at 1dd7x
// AM_RANGE( 0x01dd70, 0x01dd77 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x01dd78, 0x01dd79 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x700000, 0x700003 ) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0x00ff)
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x500000, 0x500001).portr("COIN");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff);
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(drgnwrld_igs003_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_READ(drgnwrld_igs003_r )
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::drgnwrld_igs003_w));
+ map(0x800002, 0x800003).r(this, FUNC(igs011_state::drgnwrld_igs003_r));
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igs011_state::drgnwrld_igs012)
- AM_IMPORT_FROM(drgnwrld)
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
+
+void igs011_state::drgnwrld_igs012(address_map &map)
+{
+ drgnwrld(map);
// IGS012
- AM_RANGE( 0x001600, 0x00160f ) AM_WRITE(igs012_prot_swap_w ) AM_MIRROR(0x01c000) // swap (a5 / 55)
- AM_RANGE( 0x001610, 0x00161f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 0)
- AM_RANGE( 0x001620, 0x00162f ) AM_WRITE(igs012_prot_dec_inc_w ) AM_MIRROR(0x01c000) // dec (aa), inc (fa)
- AM_RANGE( 0x001630, 0x00163f ) AM_WRITE(igs012_prot_inc_w ) AM_MIRROR(0x01c000) // inc (ff)
- AM_RANGE( 0x001640, 0x00164f ) AM_WRITE(igs012_prot_copy_w ) AM_MIRROR(0x01c000) // copy (22)
- AM_RANGE( 0x001650, 0x00165f ) AM_WRITE(igs012_prot_dec_copy_w ) AM_MIRROR(0x01c000) // dec (5a), copy (33)
- AM_RANGE( 0x001660, 0x00166f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 1)
- AM_RANGE( 0x001670, 0x00167f ) AM_WRITE(igs012_prot_mode_w ) AM_MIRROR(0x01c000) // mode (cc / dd)
-
- AM_RANGE( 0x00d400, 0x00d43f ) AM_WRITE(igs011_prot2_dec_w ) // dec (33)
- AM_RANGE( 0x00d440, 0x00d47f ) AM_WRITE(drgnwrld_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x00d480, 0x00d4bf ) AM_WRITE(igs011_prot2_reset_w ) // reset (33)
- AM_RANGE( 0x00d4c0, 0x00d4ff ) AM_READ(drgnwrldv20j_igs011_prot2_r ) // read
-
- AM_RANGE( 0x902000, 0x902fff ) AM_WRITE(igs012_prot_reset_w ) // reset?
+ map(0x001600, 0x00160f).w(this, FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55)
+ map(0x001610, 0x00161f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 0)
+ map(0x001620, 0x00162f).w(this, FUNC(igs011_state::igs012_prot_dec_inc_w)).mirror(0x01c000); // dec (aa), inc (fa)
+ map(0x001630, 0x00163f).w(this, FUNC(igs011_state::igs012_prot_inc_w)).mirror(0x01c000); // inc (ff)
+ map(0x001640, 0x00164f).w(this, FUNC(igs011_state::igs012_prot_copy_w)).mirror(0x01c000); // copy (22)
+ map(0x001650, 0x00165f).w(this, FUNC(igs011_state::igs012_prot_dec_copy_w)).mirror(0x01c000); // dec (5a), copy (33)
+ map(0x001660, 0x00166f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 1)
+ map(0x001670, 0x00167f).w(this, FUNC(igs011_state::igs012_prot_mode_w)).mirror(0x01c000); // mode (cc / dd)
+
+ map(0x00d400, 0x00d43f).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33)
+ map(0x00d440, 0x00d47f).w(this, FUNC(igs011_state::drgnwrld_igs011_prot2_swap_w)); // swap (33)
+ map(0x00d480, 0x00d4bf).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33)
+ map(0x00d4c0, 0x00d4ff).r(this, FUNC(igs011_state::drgnwrldv20j_igs011_prot2_r)); // read
+
+ map(0x902000, 0x902fff).w(this, FUNC(igs011_state::igs012_prot_reset_w)); // reset?
// AM_RANGE( 0x902000, 0x902005 ) AM_WRITE(igs012_prot_fake_r )
-ADDRESS_MAP_END
+}
@@ -2640,207 +2642,212 @@ WRITE16_MEMBER(igs011_state::lhb_okibank_w)
// popmessage("oki %04x",data);
}
-ADDRESS_MAP_START(igs011_state::lhb)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::lhb(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// lhb: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x010000, 0x010001 ) AM_WRITE(lhb_okibank_w )
+ map(0x010000, 0x010001).w(this, FUNC(igs011_state::lhb_okibank_w));
- AM_RANGE( 0x010200, 0x0103ff ) AM_WRITE(igs011_prot2_inc_w )
- AM_RANGE( 0x010400, 0x0105ff ) AM_WRITE(lhb_igs011_prot2_swap_w )
- AM_RANGE( 0x010600, 0x0107ff ) AM_READ(lhb_igs011_prot2_r )
+ map(0x010200, 0x0103ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w));
+ map(0x010400, 0x0105ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w));
+ map(0x010600, 0x0107ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r));
// no reset
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x700002, 0x700005 ) AM_READ(lhb_inputs_r )
- AM_RANGE( 0x700002, 0x700003 ) AM_WRITE(lhb_inputs_w )
- AM_RANGE( 0x820000, 0x820001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0x838000, 0x838001 ) AM_WRITE(lhb_irq_enable_w )
- AM_RANGE( 0x840000, 0x840001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0x850000, 0x850001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700001).portr("COIN");
+ map(0x700002, 0x700005).r(this, FUNC(igs011_state::lhb_inputs_r));
+ map(0x700002, 0x700003).w(this, FUNC(igs011_state::lhb_inputs_w));
+ map(0x820000, 0x820001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0x838000, 0x838001).w(this, FUNC(igs011_state::lhb_irq_enable_w));
+ map(0x840000, 0x840001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0x850000, 0x850001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0x850000, 0x850005 ) AM_WRITE(igs011_prot_fake_r )
- AM_RANGE( 0x858000, 0x858001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0x858800, 0x858801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0x859000, 0x859001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0x859800, 0x859801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0x888000, 0x888001 ) AM_READ(igs_5_dips_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igs011_state::xymg)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+ map(0x858000, 0x858001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0x858800, 0x858801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0x859000, 0x859001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0x859800, 0x859801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0x85a000, 0x85a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0x85a800, 0x85a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0x85b000, 0x85b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0x85b800, 0x85b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0x85c000, 0x85c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0x888000, 0x888001).r(this, FUNC(igs011_state::igs_5_dips_r));
+}
+
+void igs011_state::xymg(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// xymg: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x010000, 0x010001 ) AM_WRITE(lhb_okibank_w )
+ map(0x010000, 0x010001).w(this, FUNC(igs011_state::lhb_okibank_w));
- AM_RANGE( 0x010200, 0x0103ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (33)
- AM_RANGE( 0x010400, 0x0105ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x010600, 0x0107ff ) AM_READ(lhb_igs011_prot2_r ) // read
+ map(0x010200, 0x0103ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (33)
+ map(0x010400, 0x0105ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33)
+ map(0x010600, 0x0107ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // read
// no reset
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM
- AM_RANGE( 0x1f0000, 0x1f3fff ) AM_RAM AM_SHARE("nvram") // extra ram
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x700000, 0x700003 ) AM_WRITE(xymg_igs003_w )
- AM_RANGE( 0x700002, 0x700003 ) AM_READ(xymg_igs003_r )
- AM_RANGE( 0x820000, 0x820001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0x840000, 0x840001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0x850000, 0x850001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x100000, 0x103fff).ram();
+ map(0x1f0000, 0x1f3fff).ram().share("nvram"); // extra ram
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700003).w(this, FUNC(igs011_state::xymg_igs003_w));
+ map(0x700002, 0x700003).r(this, FUNC(igs011_state::xymg_igs003_r));
+ map(0x820000, 0x820001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0x840000, 0x840001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0x850000, 0x850001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0x850000, 0x850005 ) AM_WRITE(igs011_prot_fake_r )
- AM_RANGE( 0x858000, 0x858001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0x858800, 0x858801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0x859000, 0x859001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0x859800, 0x859801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0x888000, 0x888001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igs011_state::wlcc)
+ map(0x858000, 0x858001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0x858800, 0x858801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0x859000, 0x859001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0x859800, 0x859801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0x85a000, 0x85a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0x85a800, 0x85a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0x85b000, 0x85b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0x85b800, 0x85b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0x85c000, 0x85c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0x888000, 0x888001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
+
+void igs011_state::wlcc(address_map &map)
+{
// wlcc: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ(igs011_prot1_r )
- AM_RANGE( 0x518000, 0x5181ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (33)
- AM_RANGE( 0x518200, 0x5183ff ) AM_WRITE(wlcc_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x518800, 0x5189ff ) AM_READ(igs011_prot2_reset_r ) // reset
- AM_RANGE( 0x519000, 0x5195ff ) AM_READ(lhb_igs011_prot2_r ) // read
-
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(wlcc_igs003_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_READ(wlcc_igs003_r )
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x518000, 0x5181ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (33)
+ map(0x518200, 0x5183ff).w(this, FUNC(igs011_state::wlcc_igs011_prot2_swap_w)); // swap (33)
+ map(0x518800, 0x5189ff).r(this, FUNC(igs011_state::igs011_prot2_reset_r)); // reset
+ map(0x519000, 0x5195ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // read
+
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x520000, 0x520001).portr("COIN");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::wlcc_igs003_w));
+ map(0x800002, 0x800003).r(this, FUNC(igs011_state::wlcc_igs003_r));
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_4_dips_r )
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_4_dips_r));
+}
-ADDRESS_MAP_START(igs011_state::lhb2)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::lhb2(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// lhb2: IGS011 protection dynamically mapped at 1ff8x
// AM_RANGE( 0x01ff80, 0x01ff87 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x01ff88, 0x01ff89 ) AM_READ ( igs011_prot1_r )
- AM_RANGE( 0x020000, 0x0201ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (55)
- AM_RANGE( 0x020200, 0x0203ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x020400, 0x0205ff ) AM_READ(lhb2_igs011_prot2_r ) // read
- AM_RANGE( 0x020600, 0x0207ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (55)
-
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE( 0x208000, 0x208003 ) AM_WRITE(lhb2_igs003_w )
- AM_RANGE( 0x208002, 0x208003 ) AM_READ(lhb2_igs003_r )
- AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x020000, 0x0201ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55)
+ map(0x020200, 0x0203ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33)
+ map(0x020400, 0x0205ff).r(this, FUNC(igs011_state::lhb2_igs011_prot2_r)); // read
+ map(0x020600, 0x0207ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (55)
+
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x208000, 0x208003).w(this, FUNC(igs011_state::lhb2_igs003_w));
+ map(0x208002, 0x208003).r(this, FUNC(igs011_state::lhb2_igs003_r));
+ map(0x20c000, 0x20cfff).ram().share("priority_ram");
+ map(0x210000, 0x211fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x214000, 0x214001).portr("COIN");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
-ADDRESS_MAP_START(igs011_state::nkishusp)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::nkishusp(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// nkishusp: IGS011 protection dynamically mapped at 1ff8x
// AM_RANGE( 0x01ff80, 0x01ff87 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x01ff88, 0x01ff89 ) AM_READ ( igs011_prot1_r )
// to be done:
- AM_RANGE( 0x023000, 0x0231ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (55)
- AM_RANGE( 0x023200, 0x0233ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x023400, 0x0235ff ) AM_READ(lhb2_igs011_prot2_r ) // read
- AM_RANGE( 0x023600, 0x0237ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (55)
-
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE( 0x208000, 0x208003 ) AM_WRITE(lhb2_igs003_w )
- AM_RANGE( 0x208002, 0x208003 ) AM_READ(lhb2_igs003_r )
- AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
- AM_RANGE( 0xa38000, 0xa38001 ) AM_WRITE(lhb_irq_enable_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
-
- AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0x023000, 0x0231ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55)
+ map(0x023200, 0x0233ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33)
+ map(0x023400, 0x0235ff).r(this, FUNC(igs011_state::lhb2_igs011_prot2_r)); // read
+ map(0x023600, 0x0237ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (55)
+
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x208000, 0x208003).w(this, FUNC(igs011_state::lhb2_igs003_w));
+ map(0x208002, 0x208003).r(this, FUNC(igs011_state::lhb2_igs003_r));
+ map(0x20c000, 0x20cfff).ram().share("priority_ram");
+ map(0x210000, 0x211fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x214000, 0x214001).portr("COIN");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
+ map(0xa38000, 0xa38001).w(this, FUNC(igs011_state::lhb_irq_enable_w));
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
+
+ map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r )
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r));
+}
@@ -2905,81 +2912,83 @@ WRITE16_MEMBER(igs011_state::vbowl_link_1_w){ }
WRITE16_MEMBER(igs011_state::vbowl_link_2_w){ }
WRITE16_MEMBER(igs011_state::vbowl_link_3_w){ }
-ADDRESS_MAP_START(igs011_state::vbowl)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
+void igs011_state::vbowl(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// vbowl: IGS011 protection dynamically mapped at 834x
// AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w )
// AM_RANGE( 0x008348, 0x008349 ) AM_READ(igs011_prot1_r )
// IGS012
- AM_RANGE( 0x001600, 0x00160f ) AM_WRITE(igs012_prot_swap_w ) AM_MIRROR(0x01c000) // swap (a5 / 55)
- AM_RANGE( 0x001610, 0x00161f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 0)
- AM_RANGE( 0x001620, 0x00162f ) AM_WRITE(igs012_prot_dec_inc_w ) AM_MIRROR(0x01c000) // dec (aa), inc (fa)
- AM_RANGE( 0x001630, 0x00163f ) AM_WRITE(igs012_prot_inc_w ) AM_MIRROR(0x01c000) // inc (ff)
- AM_RANGE( 0x001640, 0x00164f ) AM_WRITE(igs012_prot_copy_w ) AM_MIRROR(0x01c000) // copy (22)
- AM_RANGE( 0x001650, 0x00165f ) AM_WRITE(igs012_prot_dec_copy_w ) AM_MIRROR(0x01c000) // dec (5a), copy (33)
- AM_RANGE( 0x001660, 0x00166f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 1)
- AM_RANGE( 0x001670, 0x00167f ) AM_WRITE(igs012_prot_mode_w ) AM_MIRROR(0x01c000) // mode (cc / dd)
-
- AM_RANGE( 0x00d400, 0x00d43f ) AM_WRITE(igs011_prot2_dec_w ) // dec (33)
- AM_RANGE( 0x00d440, 0x00d47f ) AM_WRITE(drgnwrld_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x00d480, 0x00d4bf ) AM_WRITE(igs011_prot2_reset_w ) // reset (33)
- AM_RANGE( 0x00d4c0, 0x00d4ff ) AM_READ(drgnwrldv20j_igs011_prot2_r ) // read
-
- AM_RANGE( 0x50f000, 0x50f1ff ) AM_WRITE(igs011_prot2_dec_w ) // dec (33)
- AM_RANGE( 0x50f200, 0x50f3ff ) AM_WRITE(vbowl_igs011_prot2_swap_w ) // swap (33)
- AM_RANGE( 0x50f400, 0x50f5ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (33)
- AM_RANGE( 0x50f600, 0x50f7ff ) AM_READ(vbowl_igs011_prot2_r ) // read
-
- AM_RANGE( 0x902000, 0x902fff ) AM_WRITE(igs012_prot_reset_w ) // reset?
+ map(0x001600, 0x00160f).w(this, FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55)
+ map(0x001610, 0x00161f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 0)
+ map(0x001620, 0x00162f).w(this, FUNC(igs011_state::igs012_prot_dec_inc_w)).mirror(0x01c000); // dec (aa), inc (fa)
+ map(0x001630, 0x00163f).w(this, FUNC(igs011_state::igs012_prot_inc_w)).mirror(0x01c000); // inc (ff)
+ map(0x001640, 0x00164f).w(this, FUNC(igs011_state::igs012_prot_copy_w)).mirror(0x01c000); // copy (22)
+ map(0x001650, 0x00165f).w(this, FUNC(igs011_state::igs012_prot_dec_copy_w)).mirror(0x01c000); // dec (5a), copy (33)
+ map(0x001660, 0x00166f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 1)
+ map(0x001670, 0x00167f).w(this, FUNC(igs011_state::igs012_prot_mode_w)).mirror(0x01c000); // mode (cc / dd)
+
+ map(0x00d400, 0x00d43f).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33)
+ map(0x00d440, 0x00d47f).w(this, FUNC(igs011_state::drgnwrld_igs011_prot2_swap_w)); // swap (33)
+ map(0x00d480, 0x00d4bf).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33)
+ map(0x00d4c0, 0x00d4ff).r(this, FUNC(igs011_state::drgnwrldv20j_igs011_prot2_r)); // read
+
+ map(0x50f000, 0x50f1ff).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33)
+ map(0x50f200, 0x50f3ff).w(this, FUNC(igs011_state::vbowl_igs011_prot2_swap_w)); // swap (33)
+ map(0x50f400, 0x50f5ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33)
+ map(0x50f600, 0x50f7ff).r(this, FUNC(igs011_state::vbowl_igs011_prot2_r)); // read
+
+ map(0x902000, 0x902fff).w(this, FUNC(igs011_state::igs012_prot_reset_w)); // reset?
// AM_RANGE( 0x902000, 0x902005 ) AM_WRITE(igs012_prot_fake_r )
- AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram")
- AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w )
- AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram")
- AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x600000, 0x600007 ) AM_READWRITE(ics2115_word_r, ics2115_word_w )
- AM_RANGE( 0x700000, 0x700003 ) AM_RAM AM_SHARE("vbowl_trackball")
- AM_RANGE( 0x700004, 0x700005 ) AM_WRITE(vbowl_pen_hi_w )
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(vbowl_igs003_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_READ(vbowl_igs003_r )
-
- AM_RANGE( 0xa00000, 0xa00001 ) AM_WRITE(vbowl_link_0_w )
- AM_RANGE( 0xa08000, 0xa08001 ) AM_WRITE(vbowl_link_1_w )
- AM_RANGE( 0xa10000, 0xa10001 ) AM_WRITE(vbowl_link_2_w )
- AM_RANGE( 0xa18000, 0xa18001 ) AM_WRITE(vbowl_link_3_w )
-
- AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w )
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x200000, 0x200fff).ram().share("priority_ram");
+ map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
+ map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram");
+ map(0x520000, 0x520001).portr("COIN");
+ map(0x600000, 0x600007).rw(this, FUNC(igs011_state::ics2115_word_r), FUNC(igs011_state::ics2115_word_w));
+ map(0x700000, 0x700003).ram().share("vbowl_trackball");
+ map(0x700004, 0x700005).w(this, FUNC(igs011_state::vbowl_pen_hi_w));
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::vbowl_igs003_w));
+ map(0x800002, 0x800003).r(this, FUNC(igs011_state::vbowl_igs003_r));
+
+ map(0xa00000, 0xa00001).w(this, FUNC(igs011_state::vbowl_link_0_w));
+ map(0xa08000, 0xa08001).w(this, FUNC(igs011_state::vbowl_link_1_w));
+ map(0xa10000, 0xa10001).w(this, FUNC(igs011_state::vbowl_link_2_w));
+ map(0xa18000, 0xa18001).w(this, FUNC(igs011_state::vbowl_link_3_w));
+
+ map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w));
// AM_RANGE( 0xa38000, 0xa38001 ) AM_WRITE(lhb_irq_enable_w )
- AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w )
+ map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w));
- AM_RANGE( 0xa48000, 0xa48001 ) AM_WRITE(igs011_prot_addr_w )
+ map(0xa48000, 0xa48001).w(this, FUNC(igs011_state::igs011_prot_addr_w));
// AM_RANGE( 0xa48000, 0xa48005 ) AM_WRITE(igs011_prot_fake_r )
- AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w )
- AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w )
- AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w )
- AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w )
- AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w )
- AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w )
- AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w )
- AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w )
- AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w )
-
- AM_RANGE( 0xa80000, 0xa80001 ) AM_READ(vbowl_unk_r ) // comm
- AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_4_dips_r )
- AM_RANGE( 0xa90000, 0xa90001 ) AM_READ(vbowl_unk_r ) // comm
- AM_RANGE( 0xa98000, 0xa98001 ) AM_READ(vbowl_unk_r ) // comm
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(igs011_state::vbowlhk)
- AM_IMPORT_FROM(vbowl)
- AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(vbowlhk_igs003_w )
- AM_RANGE( 0x50f600, 0x50f7ff ) AM_READ(vbowlhk_igs011_prot2_r ) // read
-ADDRESS_MAP_END
+ map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w));
+ map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w));
+ map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w));
+ map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w));
+ map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w));
+ map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w));
+ map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w));
+ map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w));
+ map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w));
+
+ map(0xa80000, 0xa80001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm
+ map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_4_dips_r));
+ map(0xa90000, 0xa90001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm
+ map(0xa98000, 0xa98001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm
+}
+
+
+void igs011_state::vbowlhk(address_map &map)
+{
+ vbowl(map);
+ map(0x800000, 0x800003).w(this, FUNC(igs011_state::vbowlhk_igs003_w));
+ map(0x50f600, 0x50f7ff).r(this, FUNC(igs011_state::vbowlhk_igs011_prot2_r)); // read
+}
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index 95d920b8677..adcaa22d373 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -1142,16 +1142,18 @@ DRIVER_INIT_MEMBER(igs017_state,spkrform)
// iqblocka
-ADDRESS_MAP_START(igs017_state::iqblocka_map)
- AM_RANGE( 0x00000, 0x0dfff ) AM_ROM
- AM_RANGE( 0x0e000, 0x0efff ) AM_RAM
- AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM
- AM_RANGE( 0x10000, 0x3ffff ) AM_ROM
-ADDRESS_MAP_END
+void igs017_state::iqblocka_map(address_map &map)
+{
+ map(0x00000, 0x0dfff).rom();
+ map(0x0e000, 0x0efff).ram();
+ map(0x0f000, 0x0ffff).ram();
+ map(0x10000, 0x3ffff).rom();
+}
-ADDRESS_MAP_START(igs017_state::decrypted_opcodes_map)
- AM_RANGE( 0x00000, 0x3ffff ) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
+void igs017_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom().share("decrypted_opcodes");
+}
@@ -1198,20 +1200,21 @@ READ8_MEMBER(igs017_state::input_r)
}
}
-ADDRESS_MAP_START(igs017_state::iqblocka_io)
- AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write)
+void igs017_state::iqblocka_io(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
+ map(0x0000, 0x003f).ram(); // internal regs
- AM_RANGE( 0x8000, 0x8000 ) AM_WRITE(input_select_w )
- AM_RANGE( 0x8001, 0x8001 ) AM_READ(input_r )
+ map(0x8000, 0x8000).w(this, FUNC(igs017_state::input_select_w));
+ map(0x8001, 0x8001).r(this, FUNC(igs017_state::input_r));
- AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE( 0xa000, 0xa000 ) AM_READ_PORT( "BUTTONS" )
+ map(0xa000, 0xa000).portr("BUTTONS");
- AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE("ymsnd", ym2413_device, write)
-ADDRESS_MAP_END
+ map(0xb000, 0xb001).w("ymsnd", FUNC(ym2413_device::write));
+}
// mgcs
@@ -1471,16 +1474,17 @@ READ8_MEMBER(igs017_state::mgcs_keys_r)
-ADDRESS_MAP_START(igs017_state::mgcs)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
- AM_RANGE( 0x300000, 0x303fff ) AM_RAM
- AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE(mgcs_magic_w ) AM_READ(mgcs_magic_r )
+void igs017_state::mgcs(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x300000, 0x303fff).ram();
+ map(0x49c000, 0x49c003).w(this, FUNC(igs017_state::mgcs_magic_w)).r(this, FUNC(igs017_state::mgcs_magic_r));
- AM_RANGE( 0xa00000, 0xa0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+ map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- AM_RANGE( 0xa12000, 0xa12001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
+ map(0xa12001, 0xa12001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// oki banking through protection (code at $1a350)?
-ADDRESS_MAP_END
+}
// sdmg2
@@ -1553,16 +1557,17 @@ READ16_MEMBER(igs017_state::sdmg2_magic_r)
return 0xffff;
}
-ADDRESS_MAP_START(igs017_state::sdmg2)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
+void igs017_state::sdmg2(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x1f0000, 0x1fffff).ram();
- AM_RANGE(0x200000, 0x20ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+ map(0x200000, 0x20ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- AM_RANGE(0x210000, 0x210001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE(0x300000, 0x300003) AM_WRITE(sdmg2_magic_w )
- AM_RANGE(0x300002, 0x300003) AM_READ(sdmg2_magic_r )
-ADDRESS_MAP_END
+ map(0x210001, 0x210001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x300000, 0x300003).w(this, FUNC(igs017_state::sdmg2_magic_w));
+ map(0x300002, 0x300003).r(this, FUNC(igs017_state::sdmg2_magic_r));
+}
// mgdh, mgdha
@@ -1666,16 +1671,17 @@ READ16_MEMBER(igs017_state::mgdha_magic_r)
return 0xffff;
}
-ADDRESS_MAP_START(igs017_state::mgdha_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x600000, 0x603fff) AM_RAM
- AM_RANGE(0x876000, 0x876003) AM_WRITE(mgdha_magic_w )
- AM_RANGE(0x876002, 0x876003) AM_READ(mgdha_magic_r )
+void igs017_state::mgdha_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x600000, 0x603fff).ram();
+ map(0x876000, 0x876003).w(this, FUNC(igs017_state::mgdha_magic_w));
+ map(0x876002, 0x876003).r(this, FUNC(igs017_state::mgdha_magic_r));
- AM_RANGE(0xa00000, 0xa0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+ map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- AM_RANGE(0xa10000, 0xa10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
-ADDRESS_MAP_END
+ map(0xa10001, 0xa10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
// tjsb
@@ -1731,36 +1737,39 @@ READ8_MEMBER(igs017_state::tjsb_input_r)
}
}
-ADDRESS_MAP_START(igs017_state::tjsb_map)
- AM_RANGE( 0x00000, 0x0dfff ) AM_ROM
- AM_RANGE( 0x0e000, 0x0e000 ) AM_WRITE(input_select_w )
- AM_RANGE( 0x0e001, 0x0e001 ) AM_READWRITE(tjsb_input_r, tjsb_output_w )
- AM_RANGE( 0x0e002, 0x0efff ) AM_RAM
- AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM
- AM_RANGE( 0x10000, 0x3ffff ) AM_ROM
-ADDRESS_MAP_END
+void igs017_state::tjsb_map(address_map &map)
+{
+ map(0x00000, 0x0dfff).rom();
+ map(0x0e000, 0x0e000).w(this, FUNC(igs017_state::input_select_w));
+ map(0x0e001, 0x0e001).rw(this, FUNC(igs017_state::tjsb_input_r), FUNC(igs017_state::tjsb_output_w));
+ map(0x0e002, 0x0efff).ram();
+ map(0x0f000, 0x0ffff).ram();
+ map(0x10000, 0x3ffff).rom();
+}
-ADDRESS_MAP_START(igs017_state::tjsb_io)
- AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write)
+void igs017_state::tjsb_io(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
+ map(0x0000, 0x003f).ram(); // internal regs
- AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE("ymsnd", ym2413_device, write)
-ADDRESS_MAP_END
+ map(0xb000, 0xb001).w("ymsnd", FUNC(ym2413_device::write));
+}
// spkrform
-ADDRESS_MAP_START(igs017_state::spkrform_map)
- AM_RANGE( 0x00000, 0x0dfff ) AM_ROM
- AM_RANGE( 0x0e000, 0x0efff ) AM_RAM
- AM_RANGE( 0x0e9bf, 0x0e9bf ) AM_NOP // hack: uncomment to switch to Formosa
- AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM
- AM_RANGE( 0x10000, 0x3ffff ) AM_ROM
-ADDRESS_MAP_END
+void igs017_state::spkrform_map(address_map &map)
+{
+ map(0x00000, 0x0dfff).rom();
+ map(0x0e000, 0x0efff).ram();
+ map(0x0e9bf, 0x0e9bf).noprw(); // hack: uncomment to switch to Formosa
+ map(0x0f000, 0x0ffff).ram();
+ map(0x10000, 0x3ffff).rom();
+}
READ8_MEMBER(igs017_state::spkrform_input_r)
{
@@ -1780,21 +1789,22 @@ READ8_MEMBER(igs017_state::spkrform_input_r)
}
}
-ADDRESS_MAP_START(igs017_state::spkrform_io)
- AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write)
+void igs017_state::spkrform_io(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
+ map(0x0000, 0x003f).ram(); // internal regs
- AM_RANGE( 0x8000, 0x8000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x8000, 0x8000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE( 0x9000, 0x9001 ) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ map(0x9000, 0x9001).w("ymsnd", FUNC(ym2413_device::write));
- AM_RANGE( 0xa000, 0xa000 ) AM_READ_PORT( "A000" ) // Game selection
- AM_RANGE( 0xa001, 0xa001 ) AM_READ_PORT( "A001" )
+ map(0xa000, 0xa000).portr("A000"); // Game selection
+ map(0xa001, 0xa001).portr("A001");
- AM_RANGE( 0xb000, 0xb000 ) AM_WRITE(input_select_w )
- AM_RANGE( 0xb001, 0xb001 ) AM_READ(spkrform_input_r )
-ADDRESS_MAP_END
+ map(0xb000, 0xb000).w(this, FUNC(igs017_state::input_select_w));
+ map(0xb001, 0xb001).r(this, FUNC(igs017_state::spkrform_input_r));
+}
// lhzb2
@@ -1858,16 +1868,17 @@ READ16_MEMBER(igs017_state::lhzb2_magic_r)
return 0xffff;
}
-ADDRESS_MAP_START(igs017_state::lhzb2)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x500000, 0x503fff) AM_RAM
- AM_RANGE(0x910000, 0x910003) AM_WRITE( lhzb2_magic_w )
- AM_RANGE(0x910002, 0x910003) AM_READ( lhzb2_magic_r )
+void igs017_state::lhzb2(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x500000, 0x503fff).ram();
+ map(0x910000, 0x910003).w(this, FUNC(igs017_state::lhzb2_magic_w));
+ map(0x910002, 0x910003).r(this, FUNC(igs017_state::lhzb2_magic_r));
- AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+ map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- AM_RANGE(0xb10000, 0xb10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
-ADDRESS_MAP_END
+ map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
// lhzb2a
@@ -2170,24 +2181,25 @@ WRITE16_MEMBER(igs017_state::lhzb2a_input_select_w)
}
}
-ADDRESS_MAP_START(igs017_state::lhzb2a)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void igs017_state::lhzb2a(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// prot2
- AM_RANGE(0x003200, 0x003201) AM_WRITE( lhzb2a_prot2_reset_w )
- AM_RANGE(0x003202, 0x003203) AM_WRITE( lhzb2a_prot2_dec_w )
- AM_RANGE(0x003206, 0x003207) AM_WRITE( lhzb2a_prot2_inc_w )
- AM_RANGE(0x00320a, 0x00320b) AM_READ( lhzb2a_prot2_r )
+ map(0x003200, 0x003201).w(this, FUNC(igs017_state::lhzb2a_prot2_reset_w));
+ map(0x003202, 0x003203).w(this, FUNC(igs017_state::lhzb2a_prot2_dec_w));
+ map(0x003206, 0x003207).w(this, FUNC(igs017_state::lhzb2a_prot2_inc_w));
+ map(0x00320a, 0x00320b).r(this, FUNC(igs017_state::lhzb2a_prot2_r));
- AM_RANGE(0x500000, 0x503fff) AM_RAM
+ map(0x500000, 0x503fff).ram();
// AM_RANGE(0x910000, 0x910003) accesses appear to be from leftover code where the final checks were disabled
- AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+ map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- AM_RANGE(0xb10000, 0xb10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE(0xb12000, 0xb12001) AM_WRITE( lhzb2a_input_select_w )
+ map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xb12000, 0xb12001).w(this, FUNC(igs017_state::lhzb2a_input_select_w));
// Inputs dynamically mapped at xx8000, protection at xx4000 (xx = f0 initially). xx written to xxc000
-ADDRESS_MAP_END
+}
// slqz2
@@ -2240,17 +2252,18 @@ READ16_MEMBER(igs017_state::slqz2_magic_r)
return 0xffff;
}
-ADDRESS_MAP_START(igs017_state::slqz2)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x602000, 0x602003) AM_WRITE( slqz2_magic_w )
- AM_RANGE(0x602002, 0x602003) AM_READ( slqz2_magic_r )
+void igs017_state::slqz2(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x602000, 0x602003).w(this, FUNC(igs017_state::slqz2_magic_w));
+ map(0x602002, 0x602003).r(this, FUNC(igs017_state::slqz2_magic_r));
- AM_RANGE(0x900000, 0x90ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+ map(0x900000, 0x90ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- AM_RANGE(0x910000, 0x910001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
-ADDRESS_MAP_END
+ map(0x910001, 0x910001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/igs_fear.cpp b/src/mame/drivers/igs_fear.cpp
index 0a3e7eb478a..da71fd9a79a 100644
--- a/src/mame/drivers/igs_fear.cpp
+++ b/src/mame/drivers/igs_fear.cpp
@@ -45,10 +45,11 @@ uint32_t igs_fear_state::screen_update_igs_fear(screen_device &screen, bitmap_in
return 0;
}
-ADDRESS_MAP_START(igs_fear_state::igs_igs_fear_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */
- AM_RANGE(0x08000000, 0x0807ffff) AM_ROM AM_REGION("user1", 0)/* Game ROM */
-ADDRESS_MAP_END
+void igs_fear_state::igs_igs_fear_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom(); /* Internal ROM */
+ map(0x08000000, 0x0807ffff).rom().region("user1", 0);/* Game ROM */
+}
// debugging only, not tile based
static const gfx_layout fearlayout =
diff --git a/src/mame/drivers/igs_m027.cpp b/src/mame/drivers/igs_m027.cpp
index c0bb07bb617..c87c8b9b245 100644
--- a/src/mame/drivers/igs_m027.cpp
+++ b/src/mame/drivers/igs_m027.cpp
@@ -143,20 +143,21 @@ uint32_t igs_m027_state::screen_update_igs_majhong(screen_device &screen, bitmap
***************************************************************************/
-ADDRESS_MAP_START(igs_m027_state::igs_majhong_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */
- AM_RANGE(0x08000000, 0x0807ffff) AM_ROM AM_REGION("user1", 0)/* Game ROM */
- AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_SHARE("igs_mainram")// main ram for asic?
- AM_RANGE(0x18000000, 0x18007fff) AM_RAM
+void igs_m027_state::igs_majhong_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom(); /* Internal ROM */
+ map(0x08000000, 0x0807ffff).rom().region("user1", 0);/* Game ROM */
+ map(0x10000000, 0x100003ff).ram().share("igs_mainram");// main ram for asic?
+ map(0x18000000, 0x18007fff).ram();
- AM_RANGE(0x38000000, 0x38007fff) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0xffffffff) // guess based on below
+ map(0x38000000, 0x38007fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); // guess based on below
- AM_RANGE(0x38009000, 0x38009003) AM_RAM //?????????????? oki 6295
+ map(0x38009000, 0x38009003).ram(); //?????????????? oki 6295
- AM_RANGE(0x70000200, 0x70000203) AM_RAM //??????????????
- AM_RANGE(0x50000000, 0x500003ff) AM_WRITENOP // uploads xor table to external rom here
- AM_RANGE(0xf0000000, 0xF000000f) AM_WRITENOP // magic registers
-ADDRESS_MAP_END
+ map(0x70000200, 0x70000203).ram(); //??????????????
+ map(0x50000000, 0x500003ff).nopw(); // uploads xor table to external rom here
+ map(0xf0000000, 0xF000000f).nopw(); // magic registers
+}
diff --git a/src/mame/drivers/igs_m036.cpp b/src/mame/drivers/igs_m036.cpp
index 39d664ff59b..01e386773ef 100644
--- a/src/mame/drivers/igs_m036.cpp
+++ b/src/mame/drivers/igs_m036.cpp
@@ -95,11 +95,12 @@ uint32_t igs_m036_state::screen_update_igs_m036(screen_device &screen, bitmap_in
return 0;
}
-ADDRESS_MAP_START(igs_m036_state::igs_m036_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */
- AM_RANGE(0x08000000, 0x081fffff) AM_ROM AM_REGION("user1", 0) // not 100% sure it maps here.
+void igs_m036_state::igs_m036_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom(); /* Internal ROM */
+ map(0x08000000, 0x081fffff).rom().region("user1", 0); // not 100% sure it maps here.
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( igs_m036 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/igspc.cpp b/src/mame/drivers/igspc.cpp
index 1ffe00bff59..02ba80bc615 100644
--- a/src/mame/drivers/igspc.cpp
+++ b/src/mame/drivers/igspc.cpp
@@ -65,12 +65,14 @@ public:
DECLARE_DRIVER_INIT(speeddrv);
};
-ADDRESS_MAP_START(speeddrv_state::speeddrv_map)
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
+void speeddrv_state::speeddrv_map(address_map &map)
+{
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(speeddrv_state::speeddrv_io)
-ADDRESS_MAP_END
+void speeddrv_state::speeddrv_io(address_map &map)
+{
+}
static INPUT_PORTS_START( speeddrv )
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index c419fdde62e..331117a6db8 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -383,30 +383,32 @@ READ8_MEMBER(igspoker_state::exp_rom_r)
return rom[offset+0x10000];
}
-ADDRESS_MAP_START(igspoker_state::igspoker_prg_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_REGION("maincpu", 0xf000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igspoker_state::igspoker_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(exp_rom_r )
- AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */
- AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w)
- AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */
- AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") /* Not connected */
- AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
- AM_RANGE(0x6800, 0x6fff) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram")
- AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
- AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
-ADDRESS_MAP_END
+void igspoker_state::igspoker_prg_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram().region("maincpu", 0xf000);
+}
+
+void igspoker_state::igspoker_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(igspoker_state::exp_rom_r));
+ map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */
+ map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */
+ map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */
+ map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */
+ map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
+ map(0x5080, 0x5083).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5090, 0x5090).w(this, FUNC(igspoker_state::custom_io_w));
+ map(0x5091, 0x5091).r(this, FUNC(igspoker_state::custom_io_r)).w(this, FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */
+ map(0x50a0, 0x50a0).portr("BUTTONS2"); /* Not connected */
+ map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x50c0, 0x50c0).r(this, FUNC(igspoker_state::igs_irqack_r)).w(this, FUNC(igspoker_state::igs_irqack_w));
+ map(0x6800, 0x6fff).ram().w(this, FUNC(igspoker_state::bg_tile_w)).share("bg_tile_ram");
+ map(0x7000, 0x77ff).ram().w(this, FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram");
+ map(0x7800, 0x7fff).ram().w(this, FUNC(igspoker_state::fg_color_w)).share("fg_color_ram");
+}
/* MB: 05 Jun 99 Input ports and Dip switches are all verified! */
@@ -1140,50 +1142,52 @@ static INPUT_PORTS_START( igs_ncs )
INPUT_PORTS_END
-ADDRESS_MAP_START(igspoker_state::number10_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(exp_rom_r )
- AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */
- AM_RANGE(0x4006, 0x4006) AM_READ_PORT("DSW6")
- AM_RANGE(0x4007, 0x4007) AM_READ_PORT("DSW7")
- AM_RANGE(0x50f0, 0x50f0) AM_WRITE(igs_nmi_and_coins_w)
- AM_RANGE(0x5080, 0x5080) AM_READ_PORT("SERVICE") /* Services */
- AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w)
- AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */
- AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")
+void igspoker_state::number10_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(igspoker_state::exp_rom_r));
+ map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */
+ map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */
+ map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */
+ map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */
+ map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
+ map(0x4006, 0x4006).portr("DSW6");
+ map(0x4007, 0x4007).portr("DSW7");
+ map(0x50f0, 0x50f0).w(this, FUNC(igspoker_state::igs_nmi_and_coins_w));
+ map(0x5080, 0x5080).portr("SERVICE"); /* Services */
+ map(0x5090, 0x5090).w(this, FUNC(igspoker_state::custom_io_w));
+ map(0x5091, 0x5091).r(this, FUNC(igspoker_state::custom_io_r)).w(this, FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */
+ map(0x50a0, 0x50a0).portr("BUTTONS2");
/* Sound synthesys has been patched out, replaced by ADPCM samples */
- AM_RANGE(0x50b0, 0x50b0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
- AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
- AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(igspoker_state::cpokerpk_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(exp_rom_r )
- AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */
- AM_RANGE(0x50f0, 0x50f0) AM_WRITE(igs_nmi_and_coins_w)
- AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE") /* Services */
- AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS") /* Coing & Kbd */
- AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w)
- AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */
- AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")
+ map(0x50b0, 0x50b0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x50c0, 0x50c0).r(this, FUNC(igspoker_state::igs_irqack_r)).w(this, FUNC(igspoker_state::igs_irqack_w));
+ map(0x7000, 0x77ff).ram().w(this, FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram");
+ map(0x7800, 0x7fff).ram().w(this, FUNC(igspoker_state::fg_color_w)).share("fg_color_ram");
+}
+
+void igspoker_state::cpokerpk_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(igspoker_state::exp_rom_r));
+ map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */
+ map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */
+ map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */
+ map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */
+ map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
+ map(0x50f0, 0x50f0).w(this, FUNC(igspoker_state::igs_nmi_and_coins_w));
+ map(0x5081, 0x5081).portr("SERVICE"); /* Services */
+ map(0x5082, 0x5082).portr("COINS"); /* Coing & Kbd */
+ map(0x5090, 0x5090).w(this, FUNC(igspoker_state::custom_io_w));
+ map(0x5091, 0x5091).r(this, FUNC(igspoker_state::custom_io_r)).w(this, FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */
+ map(0x50a0, 0x50a0).portr("BUTTONS2");
/* Sound synthesys has been patched out, replaced by ADPCM samples */
- AM_RANGE(0x50b0, 0x50b0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
- AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
- AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
-ADDRESS_MAP_END
+ map(0x50b0, 0x50b0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x50c0, 0x50c0).r(this, FUNC(igspoker_state::igs_irqack_r)).w(this, FUNC(igspoker_state::igs_irqack_w));
+ map(0x7000, 0x77ff).ram().w(this, FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram");
+ map(0x7800, 0x7fff).ram().w(this, FUNC(igspoker_state::fg_color_w)).share("fg_color_ram");
+}
static INPUT_PORTS_START( number10 )
PORT_START("DSW1")
diff --git a/src/mame/drivers/ikki.cpp b/src/mame/drivers/ikki.cpp
index 533ff5f891b..d82236395b0 100644
--- a/src/mame/drivers/ikki.cpp
+++ b/src/mame/drivers/ikki.cpp
@@ -47,29 +47,31 @@ WRITE8_MEMBER(ikki_state::ikki_coin_counters)
*
*************************************/
-ADDRESS_MAP_START(ikki_state::ikki_cpu1)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe000) AM_READ(ikki_e000_r)
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW2")
- AM_RANGE(0xe003, 0xe003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("P1")
- AM_RANGE(0xe005, 0xe005) AM_READ_PORT("P2")
- AM_RANGE(0xe008, 0xe008) AM_WRITE(ikki_scrn_ctrl_w)
- AM_RANGE(0xe009, 0xe009) AM_WRITE(ikki_coin_counters)
- AM_RANGE(0xe00a, 0xe00b) AM_WRITEONLY AM_SHARE("scroll")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ikki_state::ikki_cpu2)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd801, 0xd801) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0xd802, 0xd802) AM_DEVWRITE("sn2", sn76496_device, write)
-ADDRESS_MAP_END
+void ikki_state::ikki_cpu1(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd7ff).ram().share("videoram");
+ map(0xe000, 0xe000).r(this, FUNC(ikki_state::ikki_e000_r));
+ map(0xe001, 0xe001).portr("DSW1");
+ map(0xe002, 0xe002).portr("DSW2");
+ map(0xe003, 0xe003).portr("SYSTEM");
+ map(0xe004, 0xe004).portr("P1");
+ map(0xe005, 0xe005).portr("P2");
+ map(0xe008, 0xe008).w(this, FUNC(ikki_state::ikki_scrn_ctrl_w));
+ map(0xe009, 0xe009).w(this, FUNC(ikki_state::ikki_coin_counters));
+ map(0xe00a, 0xe00b).writeonly().share("scroll");
+}
+
+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));
+}
/*************************************
diff --git a/src/mame/drivers/imds.cpp b/src/mame/drivers/imds.cpp
index 5ea17f04a02..a94357c67d7 100644
--- a/src/mame/drivers/imds.cpp
+++ b/src/mame/drivers/imds.cpp
@@ -61,16 +61,18 @@ READ8_MEMBER( imds_state::term_r )
return (m_term_data) ? 0x21 : 0x20;
}
-ADDRESS_MAP_START(imds_state::imds_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imds_state::imds_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void imds_state::imds_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0xffff).ram();
+}
+
+void imds_state::imds_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
/* Input ports */
static INPUT_PORTS_START( imds )
diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp
index 28a04b9ba0f..703700885ed 100644
--- a/src/mame/drivers/imds2.cpp
+++ b/src/mame/drivers/imds2.cpp
@@ -110,50 +110,54 @@
// Frequency of beeper
#define IOC_BEEP_FREQ 3300
-ADDRESS_MAP_START(imds2_state::ipc_mem_map)
- AM_RANGE(0x0000 , 0xffff) AM_READWRITE(ipc_mem_read, ipc_mem_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imds2_state::ipc_io_map)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0xc0 , 0xc0) AM_READWRITE(imds2_ipc_dbbout_r , imds2_ipc_dbbin_data_w)
- AM_RANGE(0xc1 , 0xc1) AM_READWRITE(imds2_ipc_status_r , imds2_ipc_dbbin_cmd_w)
- AM_RANGE(0xf0 , 0xf3) AM_DEVREADWRITE("ipctimer" , pit8253_device , read , write)
- AM_RANGE(0xf4 , 0xf4) AM_DEVREADWRITE("ipcusart0" , i8251_device , data_r , data_w)
- AM_RANGE(0xf5 , 0xf5) AM_DEVREADWRITE("ipcusart0" , i8251_device , status_r , control_w)
- AM_RANGE(0xf6 , 0xf6) AM_DEVREADWRITE("ipcusart1" , i8251_device , data_r , data_w)
- AM_RANGE(0xf7 , 0xf7) AM_DEVREADWRITE("ipcusart1" , i8251_device , status_r , control_w)
- AM_RANGE(0xf8 , 0xf9) AM_DEVREADWRITE("iocpio" , i8041_device , upi41_master_r , upi41_master_w)
- AM_RANGE(0xfa , 0xfb) AM_READWRITE(imds2_ipclocpic_r , imds2_ipclocpic_w)
- AM_RANGE(0xfc , 0xfd) AM_READWRITE(imds2_ipcsyspic_r , imds2_ipcsyspic_w)
- AM_RANGE(0xff , 0xff) AM_WRITE(imds2_ipc_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imds2_state::ioc_mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000 , 0x1fff) AM_ROM
- AM_RANGE(0x4000 , 0x5fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imds2_state::ioc_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00 , 0x0f) AM_WRITE(imds2_ioc_dbbout_w)
- AM_RANGE(0x20 , 0x2f) AM_WRITE(imds2_ioc_f0_w)
- AM_RANGE(0x30 , 0x3f) AM_WRITE(imds2_ioc_set_f1_w)
- AM_RANGE(0x40 , 0x4f) AM_WRITE(imds2_ioc_reset_f1_w)
- AM_RANGE(0x50 , 0x5f) AM_WRITE(imds2_start_timer_w)
- AM_RANGE(0x60 , 0x6f) AM_WRITE(imds2_miscout_w)
- AM_RANGE(0x80 , 0x8f) AM_READ(imds2_miscin_r)
- AM_RANGE(0x90 , 0x9f) AM_READ(imds2_kb_read)
- AM_RANGE(0xa0 , 0xaf) AM_READ(imds2_ioc_status_r)
- AM_RANGE(0xb0 , 0xbf) AM_READ(imds2_ioc_dbbin_r)
- AM_RANGE(0xc0 , 0xcf) AM_DEVICE("iocfdc" , i8271_device, map)
- AM_RANGE(0xd0 , 0xdf) AM_DEVREADWRITE("ioccrtc" , i8275_device , read , write)
- AM_RANGE(0xe0 , 0xef) AM_DEVREADWRITE("ioctimer" , pit8253_device , read , write);
+void imds2_state::ipc_mem_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(imds2_state::ipc_mem_read), FUNC(imds2_state::ipc_mem_write));
+}
+
+void imds2_state::ipc_io_map(address_map &map)
+{
+ map.unmap_value_low();
+ map(0xc0, 0xc0).rw(this, FUNC(imds2_state::imds2_ipc_dbbout_r), FUNC(imds2_state::imds2_ipc_dbbin_data_w));
+ map(0xc1, 0xc1).rw(this, FUNC(imds2_state::imds2_ipc_status_r), FUNC(imds2_state::imds2_ipc_dbbin_cmd_w));
+ map(0xf0, 0xf3).rw(m_ipctimer, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xf4, 0xf4).rw(m_ipcusart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf5, 0xf5).rw(m_ipcusart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf6, 0xf6).rw(m_ipcusart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf7, 0xf7).rw(m_ipcusart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf8, 0xf9).rw(m_iocpio, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
+ map(0xfa, 0xfb).rw(this, FUNC(imds2_state::imds2_ipclocpic_r), FUNC(imds2_state::imds2_ipclocpic_w));
+ map(0xfc, 0xfd).rw(this, FUNC(imds2_state::imds2_ipcsyspic_r), FUNC(imds2_state::imds2_ipcsyspic_w));
+ map(0xff, 0xff).w(this, FUNC(imds2_state::imds2_ipc_control_w));
+}
+
+void imds2_state::ioc_mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x5fff).ram();
+}
+
+void imds2_state::ioc_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x0f).w(this, FUNC(imds2_state::imds2_ioc_dbbout_w));
+ map(0x20, 0x2f).w(this, FUNC(imds2_state::imds2_ioc_f0_w));
+ map(0x30, 0x3f).w(this, FUNC(imds2_state::imds2_ioc_set_f1_w));
+ map(0x40, 0x4f).w(this, FUNC(imds2_state::imds2_ioc_reset_f1_w));
+ map(0x50, 0x5f).w(this, FUNC(imds2_state::imds2_start_timer_w));
+ map(0x60, 0x6f).w(this, FUNC(imds2_state::imds2_miscout_w));
+ map(0x80, 0x8f).r(this, FUNC(imds2_state::imds2_miscin_r));
+ map(0x90, 0x9f).r(this, FUNC(imds2_state::imds2_kb_read));
+ map(0xa0, 0xaf).r(this, FUNC(imds2_state::imds2_ioc_status_r));
+ map(0xb0, 0xbf).r(this, FUNC(imds2_state::imds2_ioc_dbbin_r));
+ map(0xc0, 0xcf).m(m_iocfdc, FUNC(i8271_device::map));
+ map(0xd0, 0xdf).rw(m_ioccrtc, FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0xe0, 0xef).rw(m_ioctimer, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
// DMA controller range doesn't extend to 0xff because register 0xfd needs to be read as 0xff
// This register is used by IOC firmware to detect DMA controller model (either 8237 or 8257)
- AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write)
-ADDRESS_MAP_END
+ map(0xf0, 0xf8).rw(m_iocdma, FUNC(i8257_device::read), FUNC(i8257_device::write));
+}
imds2_state::imds2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig , type , tag),
diff --git a/src/mame/drivers/imolagp.cpp b/src/mame/drivers/imolagp.cpp
index 8150aab4c38..c9c7479fea2 100644
--- a/src/mame/drivers/imolagp.cpp
+++ b/src/mame/drivers/imolagp.cpp
@@ -329,39 +329,43 @@ READ8_MEMBER(imolagp_state::imola_draw_mode_r)
return 0;
}
-ADDRESS_MAP_START(imolagp_state::imolagp_master_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(vreg_control_w)
- AM_RANGE(0x37f0, 0x37f0) AM_DEVWRITE("aysnd", ay8910_device, address_w)
+void imolagp_state::imolagp_master_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x2800, 0x2803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x3000, 0x3000).w(this, FUNC(imolagp_state::vreg_control_w));
+ map(0x37f0, 0x37f0).w("aysnd", FUNC(ay8910_device::address_w));
// AM_RANGE(0x37f7, 0x37f7) AM_NOP
- AM_RANGE(0x3800, 0x3800) AM_READWRITE(vreg_data_r, vreg_data_w)
- AM_RANGE(0x3810, 0x3810) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSWA")
- AM_RANGE(0x47ff, 0x4800) AM_WRITE(transmit_data_w)
- AM_RANGE(0x5000, 0x50ff) AM_WRITE(imola_led_board_w)
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("DSWA") // assume mirror
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSWB")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imolagp_state::imolagp_master_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(trigger_slave_nmi_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(imolagp_state::imolagp_slave_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x9fff, 0xa000) AM_READ(receive_data_r)
- AM_RANGE(0xc000, 0xffff) AM_WRITE(screenram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imolagp_state::imolagp_slave_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0xff) AM_READ(imola_draw_mode_r)
-ADDRESS_MAP_END
+ map(0x3800, 0x3800).rw(this, FUNC(imolagp_state::vreg_data_r), FUNC(imolagp_state::vreg_data_w));
+ map(0x3810, 0x3810).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x4000, 0x4000).portr("DSWA");
+ map(0x47ff, 0x4800).w(this, FUNC(imolagp_state::transmit_data_w));
+ map(0x5000, 0x50ff).w(this, FUNC(imolagp_state::imola_led_board_w));
+ map(0x5800, 0x5800).portr("DSWA"); // assume mirror
+ map(0x6000, 0x6000).portr("DSWB");
+}
+
+void imolagp_state::imolagp_master_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(imolagp_state::trigger_slave_nmi_r));
+}
+
+
+void imolagp_state::imolagp_slave_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x9fff, 0xa000).r(this, FUNC(imolagp_state::receive_data_r));
+ map(0xc000, 0xffff).w(this, FUNC(imolagp_state::screenram_w));
+}
+
+void imolagp_state::imolagp_slave_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).r(this, FUNC(imolagp_state::imola_draw_mode_r));
+}
diff --git a/src/mame/drivers/imsai.cpp b/src/mame/drivers/imsai.cpp
index 2450f5930dd..c45c0f41fb4 100644
--- a/src/mame/drivers/imsai.cpp
+++ b/src/mame/drivers/imsai.cpp
@@ -51,27 +51,29 @@ private:
};
-ADDRESS_MAP_START(imsai_state::imsai_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("prom", 0)
- AM_RANGE(0xd000, 0xd0ff) AM_RAM
- AM_RANGE(0xd100, 0xd103) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xd800, 0xdfff) AM_ROM AM_REGION("prom", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(imsai_state::imsai_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_READ(keyin_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
- AM_RANGE(0x03, 0x03) AM_READ(status_r)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x13, 0x13) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x14, 0x14) AM_READ(keyin_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
- AM_RANGE(0x15, 0x15) AM_READ(status_r)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(control_w)
-ADDRESS_MAP_END
+void imsai_state::imsai_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom().region("prom", 0);
+ map(0xd000, 0xd0ff).ram();
+ map(0xd100, 0xd103).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xd800, 0xdfff).rom().region("prom", 0);
+}
+
+void imsai_state::imsai_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x02, 0x02).r(this, FUNC(imsai_state::keyin_r)).w(m_terminal, FUNC(generic_terminal_device::write));
+ map(0x03, 0x03).r(this, FUNC(imsai_state::status_r));
+ map(0x04, 0x04).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x05, 0x05).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x12, 0x12).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x13, 0x13).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x14, 0x14).r(this, FUNC(imsai_state::keyin_r)).w(m_terminal, FUNC(generic_terminal_device::write));
+ map(0x15, 0x15).r(this, FUNC(imsai_state::status_r));
+ map(0xf3, 0xf3).w(this, FUNC(imsai_state::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( imsai )
diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp
index d5ceae4dc46..a439859a1af 100644
--- a/src/mame/drivers/inder.cpp
+++ b/src/mame/drivers/inder.cpp
@@ -115,71 +115,77 @@ private:
required_ioport_array<11> m_switches;
};
-ADDRESS_MAP_START(inder_state::brvteam_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w)
- AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114
- AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
- AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w)
- AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_brvteam_w)
- AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w)
- AM_RANGE(0x4b00, 0x4b00) AM_WRITE(sn_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(inder_state::canasta_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w)
- AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114
- AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
- AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w)
- AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_canasta_w)
- AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w)
- AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE("ay", ay8910_device, address_w)
- AM_RANGE(0x4b01, 0x4b01) AM_DEVREAD("ay", ay8910_device, data_r)
- AM_RANGE(0x4b02, 0x4b02) AM_DEVWRITE("ay", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(inder_state::lapbylap_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w)
- AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114
- AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
- AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w)
- AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_canasta_w)
- AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w)
- AM_RANGE(0x4b00, 0x4b00) AM_WRITE(sndcmd_lapbylap_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(inder_state::lapbylap_sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM // 6116
- AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x9001, 0x9001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x9002, 0x9002) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa002) AM_DEVWRITE("ay2", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(inder_state::inder_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram") // 6116, battery-backed
- AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write)
- AM_RANGE(0x6400, 0x6403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write)
- AM_RANGE(0x6800, 0x6803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write)
- AM_RANGE(0x6c00, 0x6c03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write)
- AM_RANGE(0x6c20, 0x6c3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w)
- AM_RANGE(0x6c60, 0x6c7f) AM_MIRROR(0x1300) AM_WRITE(disp_w)
- AM_RANGE(0x6ce0, 0x6ce0) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(inder_state::inder_sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_MIRROR(0x1800) AM_RAM // 6116
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_w)
- AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r)
-ADDRESS_MAP_END
+void inder_state::brvteam_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).w(this, FUNC(inder_state::disp_w));
+ map(0x4000, 0x43ff).ram(); // pair of 2114
+ map(0x4400, 0x44ff).ram().share("nvram"); // pair of 5101, battery-backed
+ map(0x4800, 0x480a).rw(this, FUNC(inder_state::sw_r), FUNC(inder_state::sw_w));
+ map(0x4900, 0x4900).w(this, FUNC(inder_state::sol_brvteam_w));
+ map(0x4901, 0x4907).w(this, FUNC(inder_state::lamp_w));
+ map(0x4b00, 0x4b00).w(this, FUNC(inder_state::sn_w));
+}
+
+void inder_state::canasta_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).w(this, FUNC(inder_state::disp_w));
+ map(0x4000, 0x43ff).ram(); // pair of 2114
+ map(0x4400, 0x44ff).ram().share("nvram"); // pair of 5101, battery-backed
+ map(0x4800, 0x480a).rw(this, FUNC(inder_state::sw_r), FUNC(inder_state::sw_w));
+ map(0x4900, 0x4900).w(this, FUNC(inder_state::sol_canasta_w));
+ map(0x4901, 0x4907).w(this, FUNC(inder_state::lamp_w));
+ map(0x4b00, 0x4b00).w("ay", FUNC(ay8910_device::address_w));
+ map(0x4b01, 0x4b01).r("ay", FUNC(ay8910_device::data_r));
+ map(0x4b02, 0x4b02).w("ay", FUNC(ay8910_device::data_w));
+}
+
+void inder_state::lapbylap_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).w(this, FUNC(inder_state::disp_w));
+ map(0x4000, 0x43ff).ram(); // pair of 2114
+ map(0x4400, 0x44ff).ram().share("nvram"); // pair of 5101, battery-backed
+ map(0x4800, 0x480a).rw(this, FUNC(inder_state::sw_r), FUNC(inder_state::sw_w));
+ map(0x4900, 0x4900).w(this, FUNC(inder_state::sol_canasta_w));
+ map(0x4901, 0x4907).w(this, FUNC(inder_state::lamp_w));
+ map(0x4b00, 0x4b00).w(this, FUNC(inder_state::sndcmd_lapbylap_w));
+}
+
+void inder_state::lapbylap_sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x87ff).ram(); // 6116
+ map(0x9000, 0x9000).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x9001, 0x9001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x9002, 0x9002).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xa000, 0xa000).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa001, 0xa001).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa002).w("ay2", FUNC(ay8910_device::data_w));
+}
+
+void inder_state::inder_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).mirror(0x1800).ram().share("nvram"); // 6116, battery-backed
+ map(0x6000, 0x6003).mirror(0x13fc).rw("ppi60", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6400, 0x6403).mirror(0x13fc).rw("ppi64", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6800, 0x6803).mirror(0x13fc).rw("ppi68", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6c00, 0x6c03).mirror(0x131c).rw("ppi6c", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6c20, 0x6c3f).mirror(0x1300).w(this, FUNC(inder_state::sndcmd_w));
+ map(0x6c60, 0x6c7f).mirror(0x1300).w(this, FUNC(inder_state::disp_w));
+ map(0x6ce0, 0x6ce0).nopw();
+}
+
+void inder_state::inder_sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).mirror(0x1800).ram(); // 6116
+ map(0x4000, 0x4003).mirror(0x1ffc).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6000, 0x6000).w(this, FUNC(inder_state::sndbank_w));
+ map(0x8000, 0x8000).r(this, FUNC(inder_state::sndcmd_r));
+}
static INPUT_PORTS_START( brvteam )
PORT_START("SW.0")
diff --git a/src/mame/drivers/inderp.cpp b/src/mame/drivers/inderp.cpp
index 9c7dc5b9d8b..31401d617c0 100644
--- a/src/mame/drivers/inderp.cpp
+++ b/src/mame/drivers/inderp.cpp
@@ -45,16 +45,17 @@ private:
u8 m_irqcnt;
};
-ADDRESS_MAP_START(inderp_state::maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x500) AM_RAM // 2x 5101/2101, battery-backed
- AM_RANGE(0x0200, 0x02ff) AM_MIRROR(0x400) // outputs CI-110 (displays)
- AM_RANGE(0x0300, 0x030f) AM_MIRROR(0x4c0) AM_READWRITE(inputs_r,inputs_w) // outputs, one per address CI-118; inputs: whole range CI-159
- AM_RANGE(0x0310, 0x0310) AM_MIRROR(0x4cf) // outputs, D0-D2, BOB0-7 (solenoids) CI-121
- AM_RANGE(0x0320, 0x0320) AM_MIRROR(0x4cf) // outputs, D0-D3, (sound) CI-122
- AM_RANGE(0x0330, 0x0337) AM_MIRROR(0x4c8) // outputs, D0-D7, one per address to 16 sets of 4-bit outputs (lamps)
- AM_RANGE(0x0800, 0x1fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void inderp_state::maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).mirror(0x500).ram(); // 2x 5101/2101, battery-backed
+ map(0x0200, 0x02ff).mirror(0x400); // outputs CI-110 (displays)
+ map(0x0300, 0x030f).mirror(0x4c0).rw(this, FUNC(inderp_state::inputs_r), FUNC(inderp_state::inputs_w)); // outputs, one per address CI-118; inputs: whole range CI-159
+ map(0x0310, 0x0310).mirror(0x4cf); // outputs, D0-D2, BOB0-7 (solenoids) CI-121
+ map(0x0320, 0x0320).mirror(0x4cf); // outputs, D0-D3, (sound) CI-122
+ map(0x0330, 0x0337).mirror(0x4c8); // outputs, D0-D7, one per address to 16 sets of 4-bit outputs (lamps)
+ map(0x0800, 0x1fff).rom().region("roms", 0);
+}
// dsw: don't know bit order yet
static INPUT_PORTS_START( inderp )
diff --git a/src/mame/drivers/indiana.cpp b/src/mame/drivers/indiana.cpp
index 1122c3f1f93..8a5a3f63917 100644
--- a/src/mame/drivers/indiana.cpp
+++ b/src/mame/drivers/indiana.cpp
@@ -43,18 +43,19 @@ public:
};
-ADDRESS_MAP_START(indiana_state::indiana_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x7f800000) AM_ROM AM_REGION("user1", 0) // 64Kb of EPROM
- AM_RANGE(0x00100000, 0x00107fff) AM_MIRROR(0x7f8f8000) AM_RAM // SRAM 32Kb of SRAM
- AM_RANGE(0x00200000, 0x002fffff) AM_DEVREADWRITE8(MFP_TAG, mc68901_device, read, write, 0xffffffff) AM_MIRROR(0x7f800000) // MFP
- AM_RANGE(0x00400000, 0x004fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, io16_swap_r, io16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC IO
- AM_RANGE(0x00500000, 0x005fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, mem16_swap_r, mem16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC MEM
- AM_RANGE(0x00600000, 0x006fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, io_r, io_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC IO
- AM_RANGE(0x00700000, 0x007fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, mem_r, mem_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC MEM
- AM_RANGE(0x80000000, 0x803fffff) AM_RAM // 4 MB RAM
- AM_RANGE(0xfffe0000, 0xfffe7fff) AM_RAM // SRAM mirror?
-ADDRESS_MAP_END
+void indiana_state::indiana_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0000ffff).mirror(0x7f800000).rom().region("user1", 0); // 64Kb of EPROM
+ map(0x00100000, 0x00107fff).mirror(0x7f8f8000).ram(); // SRAM 32Kb of SRAM
+ map(0x00200000, 0x002fffff).rw(MFP_TAG, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).mirror(0x7f800000); // MFP
+ map(0x00400000, 0x004fffff).rw(ISABUS_TAG, FUNC(isa16_device::io16_swap_r), FUNC(isa16_device::io16_swap_w)).mirror(0x7f800000); // 16 bit PC IO
+ map(0x00500000, 0x005fffff).rw(ISABUS_TAG, FUNC(isa16_device::mem16_swap_r), FUNC(isa16_device::mem16_swap_w)).mirror(0x7f800000); // 16 bit PC MEM
+ map(0x00600000, 0x006fffff).rw(ISABUS_TAG, FUNC(isa16_device::io_r), FUNC(isa16_device::io_w)).mirror(0x7f800000); // 8 bit PC IO
+ map(0x00700000, 0x007fffff).rw(ISABUS_TAG, FUNC(isa16_device::mem_r), FUNC(isa16_device::mem_w)).mirror(0x7f800000); // 8 bit PC MEM
+ map(0x80000000, 0x803fffff).ram(); // 4 MB RAM
+ map(0xfffe0000, 0xfffe7fff).ram(); // SRAM mirror?
+}
/* Input ports */
diff --git a/src/mame/drivers/indigo.cpp b/src/mame/drivers/indigo.cpp
index bb8773854af..3d756db2499 100644
--- a/src/mame/drivers/indigo.cpp
+++ b/src/mame/drivers/indigo.cpp
@@ -466,28 +466,31 @@ WRITE32_MEMBER(indigo_state::int_w)
osd_printf_info("INT: write %x to ofs %x (mask %x) (PC=%x)\n", data, offset, mem_mask, m_maincpu->pc());
}
-ADDRESS_MAP_START(indigo_state::indigo_map)
- AM_RANGE( 0x00000000, 0x001fffff ) AM_RAM AM_SHARE("share10")
- AM_RANGE( 0x08000000, 0x08ffffff ) AM_RAM AM_SHARE("share5")
- AM_RANGE( 0x09000000, 0x097fffff ) AM_RAM AM_SHARE("share6")
- AM_RANGE( 0x0a000000, 0x0a7fffff ) AM_RAM AM_SHARE("share7")
- AM_RANGE( 0x0c000000, 0x0c7fffff ) AM_RAM AM_SHARE("share8")
- AM_RANGE( 0x10000000, 0x107fffff ) AM_RAM AM_SHARE("share9")
- AM_RANGE( 0x18000000, 0x187fffff ) AM_RAM AM_SHARE("share1")
- AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc_r, hpc_w )
- AM_RANGE( 0x1fbd9000, 0x1fbd903f ) AM_READWRITE(int_r, int_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(indigo_state::indigo3k_map)
- AM_IMPORT_FROM( indigo_map )
- AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(indigo_state::indigo4k_map)
- AM_IMPORT_FROM( indigo_map )
- AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
- AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
-ADDRESS_MAP_END
+void indigo_state::indigo_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("share10");
+ map(0x08000000, 0x08ffffff).ram().share("share5");
+ map(0x09000000, 0x097fffff).ram().share("share6");
+ map(0x0a000000, 0x0a7fffff).ram().share("share7");
+ map(0x0c000000, 0x0c7fffff).ram().share("share8");
+ map(0x10000000, 0x107fffff).ram().share("share9");
+ map(0x18000000, 0x187fffff).ram().share("share1");
+ map(0x1fb80000, 0x1fb8ffff).rw(this, FUNC(indigo_state::hpc_r), FUNC(indigo_state::hpc_w));
+ map(0x1fbd9000, 0x1fbd903f).rw(this, FUNC(indigo_state::int_r), FUNC(indigo_state::int_w));
+}
+
+void indigo_state::indigo3k_map(address_map &map)
+{
+ indigo_map(map);
+ map(0x1fc00000, 0x1fc3ffff).rom().share("share2").region("user1", 0);
+}
+
+void indigo_state::indigo4k_map(address_map &map)
+{
+ indigo_map(map);
+ map(0x1fa00000, 0x1fa1ffff).rw("sgi_mc", FUNC(sgi_mc_device::read), FUNC(sgi_mc_device::write));
+ map(0x1fc00000, 0x1fc7ffff).rom().share("share2").region("user1", 0);
+}
WRITE_LINE_MEMBER(indigo_state::scsi_irq)
{
diff --git a/src/mame/drivers/indy_indigo2.cpp b/src/mame/drivers/indy_indigo2.cpp
index 27ef3a4111b..3c8219fd08e 100644
--- a/src/mame/drivers/indy_indigo2.cpp
+++ b/src/mame/drivers/indy_indigo2.cpp
@@ -1166,26 +1166,27 @@ WRITE32_MEMBER(ip22_state::hpc3_unkpbus0_w)
//COMBINE_DATA(&m_unkpbus0[offset]);
}
-ADDRESS_MAP_START(ip22_state::ip225015_map)
- AM_RANGE( 0x00000000, 0x0007ffff ) AM_RAMBANK( "bank1" ) /* mirror of first 512k of main RAM */
- AM_RANGE( 0x08000000, 0x0fffffff ) AM_SHARE("mainram") AM_RAM_WRITE(ip22_write_ram) /* 128 MB of main RAM */
- AM_RANGE( 0x1f0f0000, 0x1f0f1fff ) AM_DEVREADWRITE("newport", newport_video_device, rex3_r, rex3_w )
- AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
- AM_RANGE( 0x1fb90000, 0x1fb9ffff ) AM_READWRITE(hpc3_hd_enet_r, hpc3_hd_enet_w )
- AM_RANGE( 0x1fbb0000, 0x1fbb0003 ) AM_RAM /* unknown, but read a lot and discarded */
- AM_RANGE( 0x1fbc0000, 0x1fbc7fff ) AM_READWRITE(hpc3_hd0_r, hpc3_hd0_w )
- AM_RANGE( 0x1fbc8000, 0x1fbcffff ) AM_READWRITE(hpc3_unkpbus0_r, hpc3_unkpbus0_w ) AM_SHARE("unkpbus0")
- AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc3_pbusdma_r, hpc3_pbusdma_w )
- AM_RANGE( 0x1fbd8000, 0x1fbd83ff ) AM_READWRITE(hal2_r, hal2_w )
- AM_RANGE( 0x1fbd8400, 0x1fbd87ff ) AM_RAM /* hack */
- AM_RANGE( 0x1fbd9000, 0x1fbd93ff ) AM_READWRITE(hpc3_pbus4_r, hpc3_pbus4_w )
- AM_RANGE( 0x1fbd9800, 0x1fbd9bff ) AM_DEVREADWRITE(IOC2_TAG, ioc2_device, read, write)
- AM_RANGE( 0x1fbdc000, 0x1fbdc7ff ) AM_RAM
- AM_RANGE( 0x1fbdd000, 0x1fbdd3ff ) AM_RAM
- AM_RANGE( 0x1fbe0000, 0x1fbe04ff ) AM_DEVREADWRITE8(RTC_TAG, ds1386_device, data_r, data_w, 0x000000ff)
- AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_REGION( "user1", 0 )
- AM_RANGE( 0x20000000, 0x27ffffff ) AM_SHARE("mainram") AM_RAM_WRITE(ip22_write_ram)
-ADDRESS_MAP_END
+void ip22_state::ip225015_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).bankrw("bank1"); /* mirror of first 512k of main RAM */
+ map(0x08000000, 0x0fffffff).share("mainram").ram().w(this, FUNC(ip22_state::ip22_write_ram)); /* 128 MB of main RAM */
+ map(0x1f0f0000, 0x1f0f1fff).rw(m_newport, FUNC(newport_video_device::rex3_r), FUNC(newport_video_device::rex3_w));
+ map(0x1fa00000, 0x1fa1ffff).rw(m_sgi_mc, FUNC(sgi_mc_device::read), FUNC(sgi_mc_device::write));
+ map(0x1fb90000, 0x1fb9ffff).rw(this, FUNC(ip22_state::hpc3_hd_enet_r), FUNC(ip22_state::hpc3_hd_enet_w));
+ map(0x1fbb0000, 0x1fbb0003).ram(); /* unknown, but read a lot and discarded */
+ map(0x1fbc0000, 0x1fbc7fff).rw(this, FUNC(ip22_state::hpc3_hd0_r), FUNC(ip22_state::hpc3_hd0_w));
+ map(0x1fbc8000, 0x1fbcffff).rw(this, FUNC(ip22_state::hpc3_unkpbus0_r), FUNC(ip22_state::hpc3_unkpbus0_w)).share("unkpbus0");
+ map(0x1fb80000, 0x1fb8ffff).rw(this, FUNC(ip22_state::hpc3_pbusdma_r), FUNC(ip22_state::hpc3_pbusdma_w));
+ map(0x1fbd8000, 0x1fbd83ff).rw(this, FUNC(ip22_state::hal2_r), FUNC(ip22_state::hal2_w));
+ map(0x1fbd8400, 0x1fbd87ff).ram(); /* hack */
+ map(0x1fbd9000, 0x1fbd93ff).rw(this, FUNC(ip22_state::hpc3_pbus4_r), FUNC(ip22_state::hpc3_pbus4_w));
+ map(0x1fbd9800, 0x1fbd9bff).rw(m_ioc2, FUNC(ioc2_device::read), FUNC(ioc2_device::write));
+ map(0x1fbdc000, 0x1fbdc7ff).ram();
+ map(0x1fbdd000, 0x1fbdd3ff).ram();
+ map(0x1fbe0000, 0x1fbe04ff).rw(m_rtc, FUNC(ds1386_device::data_r), FUNC(ds1386_device::data_w)).umask32(0x000000ff);
+ map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0);
+ map(0x20000000, 0x27ffffff).share("mainram").ram().w(this, FUNC(ip22_state::ip22_write_ram));
+}
void ip22_state::machine_reset()
diff --git a/src/mame/drivers/instantm.cpp b/src/mame/drivers/instantm.cpp
index c5717f69aa2..97d106ec7c1 100644
--- a/src/mame/drivers/instantm.cpp
+++ b/src/mame/drivers/instantm.cpp
@@ -80,30 +80,33 @@ WRITE_LINE_MEMBER( instantm_state::clock_w )
-ADDRESS_MAP_START(instantm_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) //AM_WRITE
- AM_RANGE(0xc000, 0xc000) //AM_WRITE
- AM_RANGE(0xc400, 0xc400) //AM_WRITE
- AM_RANGE(0xc800, 0xc800) //AM_WRITE
- AM_RANGE(0xcc00, 0xcc00) //AM_WRITE
- AM_RANGE(0xec00, 0xec00) //AM_READ
- AM_RANGE(0xf000, 0xf000) //AM_READ
- AM_RANGE(0xf400, 0xf400) //AM_READ
- AM_RANGE(0xfc00, 0xfc00) //AM_READ
-ADDRESS_MAP_END
+void instantm_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8000); //AM_WRITE
+ map(0xc000, 0xc000); //AM_WRITE
+ map(0xc400, 0xc400); //AM_WRITE
+ map(0xc800, 0xc800); //AM_WRITE
+ map(0xcc00, 0xcc00); //AM_WRITE
+ map(0xec00, 0xec00); //AM_READ
+ map(0xf000, 0xf000); //AM_READ
+ map(0xf400, 0xf400); //AM_READ
+ map(0xfc00, 0xfc00); //AM_READ
+}
// doesn't use ram
-ADDRESS_MAP_START(instantm_state::sub_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM
- AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(instantm_state::sub_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_READWRITE(port01_r,port01_w)
-ADDRESS_MAP_END
+void instantm_state::sub_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+ map(0x0000, 0x0000).w("dac", FUNC(dac_byte_interface::write));
+}
+
+void instantm_state::sub_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).rw(this, FUNC(instantm_state::port01_r), FUNC(instantm_state::port01_w));
+}
static INPUT_PORTS_START( instantm )
INPUT_PORTS_END
diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp
index 4141ec76974..c3e95068312 100644
--- a/src/mame/drivers/instruct.cpp
+++ b/src/mame/drivers/instruct.cpp
@@ -218,30 +218,33 @@ INTERRUPT_GEN_MEMBER( instruct_state::t2l_int )
}
}
-ADDRESS_MAP_START(instruct_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0ffe) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0fff, 0x0fff) AM_READWRITE(port_r,port_w)
- AM_RANGE(0x1780, 0x17ff) AM_RAM AM_SHARE("smiram")
- AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("roms",0)
- AM_RANGE(0x2000, 0x7fff) AM_RAM AM_SHARE("extram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(instruct_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x07, 0x07) AM_READWRITE(port_r,port_w)
- AM_RANGE(0xf8, 0xf8) AM_WRITE(portf8_w)
- AM_RANGE(0xf9, 0xf9) AM_WRITE(portf9_w)
- AM_RANGE(0xfa, 0xfa) AM_WRITE(portfa_w)
- AM_RANGE(0xfc, 0xfc) AM_READ(portfc_r)
- AM_RANGE(0xfd, 0xfd) AM_READ(portfd_r)
- AM_RANGE(0xfe, 0xfe) AM_READ(portfe_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(instruct_state::data_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(port_r,port_w)
-ADDRESS_MAP_END
+void instruct_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0ffe).ram().share("mainram");
+ map(0x0fff, 0x0fff).rw(this, FUNC(instruct_state::port_r), FUNC(instruct_state::port_w));
+ map(0x1780, 0x17ff).ram().share("smiram");
+ map(0x1800, 0x1fff).rom().region("roms", 0);
+ map(0x2000, 0x7fff).ram().share("extram");
+}
+
+void instruct_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x07, 0x07).rw(this, FUNC(instruct_state::port_r), FUNC(instruct_state::port_w));
+ map(0xf8, 0xf8).w(this, FUNC(instruct_state::portf8_w));
+ map(0xf9, 0xf9).w(this, FUNC(instruct_state::portf9_w));
+ map(0xfa, 0xfa).w(this, FUNC(instruct_state::portfa_w));
+ map(0xfc, 0xfc).r(this, FUNC(instruct_state::portfc_r));
+ map(0xfd, 0xfd).r(this, FUNC(instruct_state::portfd_r));
+ map(0xfe, 0xfe).r(this, FUNC(instruct_state::portfe_r));
+}
+
+void instruct_state::data_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(instruct_state::port_r), FUNC(instruct_state::port_w));
+}
/* Input ports */
static INPUT_PORTS_START( instruct )
diff --git a/src/mame/drivers/inteladv.cpp b/src/mame/drivers/inteladv.cpp
index 05b57d758ff..98988c8bfe0 100644
--- a/src/mame/drivers/inteladv.cpp
+++ b/src/mame/drivers/inteladv.cpp
@@ -60,12 +60,13 @@ uint32_t inteladv_state::screen_update_inteladv(screen_device &screen, bitmap_in
return 0;
}
-ADDRESS_MAP_START(inteladv_state::inteladv_main)
- AM_RANGE(0x0000, 0x01ff) AM_RAM // zero page and stack
- AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("maincpu", 0x0000) // boot code at 4000
- AM_RANGE(0x8000, 0x8fff) AM_ROM AM_REGION("maincpu", 0x8000) // fixed ROM region?
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x3000) // boot and other vectors at 3FFx
-ADDRESS_MAP_END
+void inteladv_state::inteladv_main(address_map &map)
+{
+ map(0x0000, 0x01ff).ram(); // zero page and stack
+ map(0x4000, 0x5fff).rom().region("maincpu", 0x0000); // boot code at 4000
+ map(0x8000, 0x8fff).rom().region("maincpu", 0x8000); // fixed ROM region?
+ map(0xf000, 0xffff).rom().region("maincpu", 0x3000); // boot and other vectors at 3FFx
+}
static INPUT_PORTS_START( inteladv )
INPUT_PORTS_END
diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp
index e98d5e12b20..47d6b441f50 100644
--- a/src/mame/drivers/intellec4.cpp
+++ b/src/mame/drivers/intellec4.cpp
@@ -726,37 +726,39 @@ void intellec4_state::driver_reset()
System address spaces
----------------------------------*/
-ADDRESS_MAP_START(intellec4_state::intellec4_program_banks)
- ADDRESS_MAP_UNMAP_LOW
+void intellec4_state::intellec4_program_banks(address_map &map)
+{
+ map.unmap_value_low();
// 0x0000...0x0fff MON
- AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("monitor", 0x0000)
+ map(0x0000, 0x03ff).rom().region("monitor", 0x0000);
// 0x1000...0x1fff PROM
// 0x1000...0x1fff RAM
- AM_RANGE(0x2000, 0x2fff) AM_READONLY AM_SHARE("ram")
+ map(0x2000, 0x2fff).readonly().share("ram");
// 0x3000...0x3fff unmapped in case someone presses two mode switches at once
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(intellec4_state::intellec4_rom_port_banks)
- ADDRESS_MAP_UNMAP_HIGH
+void intellec4_state::intellec4_rom_port_banks(address_map &map)
+{
+ map.unmap_value_high();
// 0x0000...0x07ff MON
- AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x1f00) AM_READWRITE(rom0_in, rom0_out)
- AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x1f00) AM_WRITE(rom1_out)
- AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x1f00) AM_READWRITE(rom2_in, rom2_out)
- AM_RANGE(0x0030, 0x003f) AM_MIRROR(0x1f00) AM_READWRITE(rom3_in, rom3_out)
- AM_RANGE(0x00e0, 0x00ef) AM_MIRROR(0x1f00) AM_READWRITE(rome_in, rome_out)
- AM_RANGE(0x00f0, 0x00ff) AM_MIRROR(0x1f00) AM_READWRITE(romf_in, romf_out)
+ map(0x0000, 0x000f).mirror(0x1f00).rw(this, FUNC(intellec4_state::rom0_in), FUNC(intellec4_state::rom0_out));
+ map(0x0010, 0x001f).mirror(0x1f00).w(this, FUNC(intellec4_state::rom1_out));
+ map(0x0020, 0x002f).mirror(0x1f00).rw(this, FUNC(intellec4_state::rom2_in), FUNC(intellec4_state::rom2_out));
+ map(0x0030, 0x003f).mirror(0x1f00).rw(this, FUNC(intellec4_state::rom3_in), FUNC(intellec4_state::rom3_out));
+ map(0x00e0, 0x00ef).mirror(0x1f00).rw(this, FUNC(intellec4_state::rome_in), FUNC(intellec4_state::rome_out));
+ map(0x00f0, 0x00ff).mirror(0x1f00).rw(this, FUNC(intellec4_state::romf_in), FUNC(intellec4_state::romf_out));
// 0x0800...0x0fff PROM
// 0x1000...0x17ff neither
// 0x1800...0x1fff unused
-ADDRESS_MAP_END
+}
/*---------------------------------
diff --git a/src/mame/drivers/interact.cpp b/src/mame/drivers/interact.cpp
index 02847bd56a3..6d77e61fcca 100644
--- a/src/mame/drivers/interact.cpp
+++ b/src/mame/drivers/interact.cpp
@@ -82,27 +82,28 @@ public:
};
-ADDRESS_MAP_START(interact_state::interact_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void interact_state::interact_mem(address_map &map)
+{
+ map.unmap_value_high();
/* Main ROM page*/
- AM_RANGE(0x0000,0x3fff) AM_ROM /*BANK(2)*/
+ map(0x0000, 0x3fff).rom(); /*BANK(2)*/
/* AM_RANGE(0x1000,0x3fff) AM_RAM*/
/* Hardware address mapping*/
/* AM_RANGE(0x0800,0x0808) AM_WRITE(hector_switch_bank_w)// Bank management not udsed in BR machine*/
- AM_RANGE(0x1000,0x1000) AM_WRITE(hector_color_a_w) /* Color c0/c1*/
- AM_RANGE(0x1800,0x1800) AM_WRITE(hector_color_b_w) /* Color c2/c3*/
- AM_RANGE(0x2000,0x2003) AM_WRITE(hector_sn_2000_w) /* Sound*/
- AM_RANGE(0x2800,0x2803) AM_WRITE(hector_sn_2800_w) /* Sound*/
- AM_RANGE(0x3000,0x3000) AM_READWRITE(hector_cassette_r, hector_sn_3000_w)/* Write necessary*/
- AM_RANGE(0x3800,0x3807) AM_READWRITE(hector_keyboard_r, hector_keyboard_w) /* Keyboard*/
+ map(0x1000, 0x1000).w(this, FUNC(interact_state::hector_color_a_w)); /* Color c0/c1*/
+ map(0x1800, 0x1800).w(this, FUNC(interact_state::hector_color_b_w)); /* Color c2/c3*/
+ map(0x2000, 0x2003).w(this, FUNC(interact_state::hector_sn_2000_w)); /* Sound*/
+ map(0x2800, 0x2803).w(this, FUNC(interact_state::hector_sn_2800_w)); /* Sound*/
+ map(0x3000, 0x3000).rw(this, FUNC(interact_state::hector_cassette_r), FUNC(interact_state::hector_sn_3000_w));/* Write necessary*/
+ map(0x3800, 0x3807).rw(this, FUNC(interact_state::hector_keyboard_r), FUNC(interact_state::hector_keyboard_w)); /* Keyboard*/
/* Video br mapping*/
- AM_RANGE(0x4000,0x49ff) AM_RAM AM_SHARE("videoram")
+ map(0x4000, 0x49ff).ram().share("videoram");
/* continous RAM*/
- AM_RANGE(0x4A00,0xffff) AM_RAM
+ map(0x4A00, 0xffff).ram();
-ADDRESS_MAP_END
+}
MACHINE_RESET_MEMBER(interact_state,interact)
diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp
index 97f6fe3e596..d517cfbf9f9 100644
--- a/src/mame/drivers/interpro.cpp
+++ b/src/mame/drivers/interpro.cpp
@@ -325,110 +325,122 @@ READ8_MEMBER(interpro_state::nodeid_r)
return space.unmap();
}
-ADDRESS_MAP_START(interpro_state::interpro_common_map)
+void interpro_state::interpro_common_map(address_map &map)
+{
// FIXME: don't know what this range is for
- AM_RANGE(0x08000000, 0x08000fff) AM_NOP
-
- AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map)
+ map(0x08000000, 0x08000fff).noprw();
- AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, upd765_family_device, map, 0x000000ff)
- AM_RANGE(0x7f000300, 0x7f000303) AM_READ16(sreg_error_r, 0x0000ffff)
- AM_RANGE(0x7f000304, 0x7f000307) AM_READWRITE16(sreg_status_r, sreg_led_w, 0x0000ffff)
- AM_RANGE(0x7f000308, 0x7f00030b) AM_READWRITE16(sreg_ctrl1_r, sreg_ctrl1_w, 0x0000ffff)
- AM_RANGE(0x7f00030c, 0x7f00030f) AM_READWRITE16(sreg_ctrl2_r, sreg_ctrl2_w, 0x0000ffff)
+ map(0x4f007e00, 0x4f007eff).m(m_sga, FUNC(interpro_sga_device::map));
- AM_RANGE(0x7f00031c, 0x7f00031f) AM_READWRITE16(sreg_ctrl3_r, sreg_ctrl3_w, 0x0000ffff)
+ map(0x7f000100, 0x7f00011f).m(m_fdc, FUNC(upd765_family_device::map)).umask32(0x000000ff);
+ map(0x7f000300, 0x7f000301).r(this, FUNC(interpro_state::sreg_error_r));
+ map(0x7f000304, 0x7f000305).rw(this, FUNC(interpro_state::sreg_status_r), FUNC(interpro_state::sreg_led_w));
+ map(0x7f000308, 0x7f000309).rw(this, FUNC(interpro_state::sreg_ctrl1_r), FUNC(interpro_state::sreg_ctrl1_w));
+ map(0x7f00030c, 0x7f00030d).rw(this, FUNC(interpro_state::sreg_ctrl2_r), FUNC(interpro_state::sreg_ctrl2_w));
- AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0x000000ff)
- AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0x000000ff)
+ map(0x7f00031c, 0x7f00031d).rw(this, FUNC(interpro_state::sreg_ctrl3_r), FUNC(interpro_state::sreg_ctrl3_w));
- ;map(0x7f000500, 0x7f000503).lrw8("rtc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_rtc->read(space, offset^1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_rtc->write(space, offset^1, data, mem_mask); }).umask32(0x000000ff);
- AM_RANGE(0x7f000600, 0x7f000603) AM_DEVWRITE8(INTERPRO_RTC_TAG, mc146818_device, write, 0x000000ff)
+ 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](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_rtc->read(space, offset^1, mem_mask);
+ },
+ [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));
// the system board id prom
- AM_RANGE(0x7f000700, 0x7f00077f) AM_ROM AM_REGION(INTERPRO_IDPROM_TAG, 0)
+ map(0x7f000700, 0x7f00077f).rom().region(INTERPRO_IDPROM_TAG, 0);
- AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map)
-ADDRESS_MAP_END
+ map(0x7f0fff00, 0x7f0fffff).m(m_ioga, FUNC(interpro_ioga_device::map));
+}
-ADDRESS_MAP_START(turquoise_state::turquoise_base_map)
- AM_IMPORT_FROM(interpro_common_map)
+void turquoise_state::turquoise_base_map(address_map &map)
+{
+ interpro_common_map(map);
- AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_mcga_device, map)
+ map(0x40000000, 0x4000003f).m(m_mcga, FUNC(interpro_mcga_device::map));
// scsi registers have unusual address mapping
- AM_RANGE(0x7f000200, 0x7f000203) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, tcounter_lo_r, tcount_lo_w, 0x0000ff00)
- AM_RANGE(0x7f000204, 0x7f000207) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, tcounter_hi_r, tcount_hi_w, 0x0000ff00)
- AM_RANGE(0x7f000208, 0x7f00020b) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, fifo_r, fifo_w, 0x0000ff00)
- AM_RANGE(0x7f00020c, 0x7f00020f) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, command_r, command_w, 0x0000ff00)
- AM_RANGE(0x7f000210, 0x7f000213) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, status_r, bus_id_w, 0x0000ff00)
- AM_RANGE(0x7f000214, 0x7f000217) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, istatus_r, timeout_w, 0x0000ff00)
- AM_RANGE(0x7f000218, 0x7f00021b) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, seq_step_r, sync_period_w, 0x0000ff00)
- AM_RANGE(0x7f00021c, 0x7f00021f) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, fifo_flags_r, sync_offset_w, 0x0000ff00)
- AM_RANGE(0x7f000220, 0x7f000223) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, conf_r, conf_w, 0x0000ff00)
- AM_RANGE(0x7f000224, 0x7f000227) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, clock_w, 0x0000ff00)
- AM_RANGE(0x7f000228, 0x7f00022b) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, test_w, 0x0000ff00)
- AM_RANGE(0x7f00022c, 0x7f00022f) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, conf2_r, conf2_w, 0x0000ff00)
-
- AM_RANGE(0x7f000300, 0x7f000303) AM_WRITE8(sreg_error_w, 0x000000ff)
-
- AM_RANGE(0x7f000600, 0x7f00067f) AM_ROM AM_REGION(INTERPRO_NODEID_TAG, 0)
-ADDRESS_MAP_END
+ map(0x7f000201, 0x7f000201).rw(m_scsi, FUNC(ncr53c90a_device::tcounter_lo_r), FUNC(ncr53c90a_device::tcount_lo_w));
+ map(0x7f000205, 0x7f000205).rw(m_scsi, FUNC(ncr53c90a_device::tcounter_hi_r), FUNC(ncr53c90a_device::tcount_hi_w));
+ map(0x7f000209, 0x7f000209).rw(m_scsi, FUNC(ncr53c90a_device::fifo_r), FUNC(ncr53c90a_device::fifo_w));
+ map(0x7f00020d, 0x7f00020d).rw(m_scsi, FUNC(ncr53c90a_device::command_r), FUNC(ncr53c90a_device::command_w));
+ map(0x7f000211, 0x7f000211).rw(m_scsi, FUNC(ncr53c90a_device::status_r), FUNC(ncr53c90a_device::bus_id_w));
+ map(0x7f000215, 0x7f000215).rw(m_scsi, FUNC(ncr53c90a_device::istatus_r), FUNC(ncr53c90a_device::timeout_w));
+ map(0x7f000219, 0x7f000219).rw(m_scsi, FUNC(ncr53c90a_device::seq_step_r), FUNC(ncr53c90a_device::sync_period_w));
+ map(0x7f00021d, 0x7f00021d).rw(m_scsi, FUNC(ncr53c90a_device::fifo_flags_r), FUNC(ncr53c90a_device::sync_offset_w));
+ map(0x7f000221, 0x7f000221).rw(m_scsi, FUNC(ncr53c90a_device::conf_r), FUNC(ncr53c90a_device::conf_w));
+ map(0x7f000225, 0x7f000225).w(m_scsi, FUNC(ncr53c90a_device::clock_w));
+ map(0x7f000229, 0x7f000229).w(m_scsi, FUNC(ncr53c90a_device::test_w));
+ map(0x7f00022d, 0x7f00022d).rw(m_scsi, FUNC(ncr53c90a_device::conf2_r), FUNC(ncr53c90a_device::conf2_w));
+
+ map(0x7f000300, 0x7f000300).w(this, FUNC(turquoise_state::sreg_error_w));
+
+ map(0x7f000600, 0x7f00067f).rom().region(INTERPRO_NODEID_TAG, 0);
+}
-ADDRESS_MAP_START(turquoise_state::turquoise_main_map)
- AM_IMPORT_FROM(turquoise_base_map)
+void turquoise_state::turquoise_main_map(address_map &map)
+{
+ turquoise_base_map(map);
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE(RAM_TAG)
- AM_RANGE(0x7f100000, 0x7f13ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0)
-ADDRESS_MAP_END
+ map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
+ map(0x7f100000, 0x7f13ffff).rom().region(INTERPRO_EPROM_TAG, 0);
+}
-ADDRESS_MAP_START(sapphire_state::sapphire_base_map)
- AM_IMPORT_FROM(interpro_common_map)
+void sapphire_state::sapphire_base_map(address_map &map)
+{
+ interpro_common_map(map);
- AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map)
- AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_ARBGA_TAG, interpro_arbga_device, map)
+ map(0x40000000, 0x4000004f).m(INTERPRO_MCGA_TAG, FUNC(interpro_fmcc_device::map));
+ map(0x7f000200, 0x7f0002ff).m(m_arbga, FUNC(interpro_arbga_device::map));
- AM_RANGE(0x7f000600, 0x7f00060f) AM_READ8(nodeid_r, 0xff)
+ map(0x7f000600, 0x7f00060f).r(this, FUNC(sapphire_state::nodeid_r)).umask32(0x000000ff);
// scsi registers have unusual address mapping
- AM_RANGE(0x7f001000, 0x7f001003) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, tcounter_lo_r, tcount_lo_w, 0x0000ff00)
- AM_RANGE(0x7f001100, 0x7f001103) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, tcounter_hi_r, tcount_hi_w, 0x0000ff00)
- AM_RANGE(0x7f001200, 0x7f001203) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, fifo_r, fifo_w, 0x0000ff00)
- AM_RANGE(0x7f001300, 0x7f001303) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, command_r, command_w, 0x0000ff00)
- AM_RANGE(0x7f001400, 0x7f001403) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, status_r, bus_id_w, 0x0000ff00)
- AM_RANGE(0x7f001500, 0x7f001503) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, istatus_r, timeout_w, 0x0000ff00)
- AM_RANGE(0x7f001600, 0x7f001603) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, seq_step_r, sync_period_w, 0x0000ff00)
- AM_RANGE(0x7f001700, 0x7f001703) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, fifo_flags_r, sync_offset_w, 0x0000ff00)
- AM_RANGE(0x7f001800, 0x7f001803) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, conf_r, conf_w, 0x0000ff00)
- AM_RANGE(0x7f001900, 0x7f001903) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, clock_w, 0x0000ff00)
- AM_RANGE(0x7f001a00, 0x7f001a03) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, test_w, 0x0000ff00)
- AM_RANGE(0x7f001b00, 0x7f001b03) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, conf2_r, conf2_w, 0x0000ff00)
- AM_RANGE(0x7f001c00, 0x7f001c03) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, conf3_w, 0x0000ff00)
- AM_RANGE(0x7f001f00, 0x7f001f03) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, fifo_align_w, 0x0000ff00)
-ADDRESS_MAP_END
+ map(0x7f001001, 0x7f001001).rw(m_scsi, FUNC(ncr53c94_device::tcounter_lo_r), FUNC(ncr53c94_device::tcount_lo_w));
+ map(0x7f001101, 0x7f001101).rw(m_scsi, FUNC(ncr53c94_device::tcounter_hi_r), FUNC(ncr53c94_device::tcount_hi_w));
+ map(0x7f001201, 0x7f001201).rw(m_scsi, FUNC(ncr53c94_device::fifo_r), FUNC(ncr53c94_device::fifo_w));
+ map(0x7f001301, 0x7f001301).rw(m_scsi, FUNC(ncr53c94_device::command_r), FUNC(ncr53c94_device::command_w));
+ map(0x7f001401, 0x7f001401).rw(m_scsi, FUNC(ncr53c94_device::status_r), FUNC(ncr53c94_device::bus_id_w));
+ map(0x7f001501, 0x7f001501).rw(m_scsi, FUNC(ncr53c94_device::istatus_r), FUNC(ncr53c94_device::timeout_w));
+ map(0x7f001601, 0x7f001601).rw(m_scsi, FUNC(ncr53c94_device::seq_step_r), FUNC(ncr53c94_device::sync_period_w));
+ map(0x7f001701, 0x7f001701).rw(m_scsi, FUNC(ncr53c94_device::fifo_flags_r), FUNC(ncr53c94_device::sync_offset_w));
+ map(0x7f001801, 0x7f001801).rw(m_scsi, FUNC(ncr53c94_device::conf_r), FUNC(ncr53c94_device::conf_w));
+ map(0x7f001901, 0x7f001901).w(m_scsi, FUNC(ncr53c94_device::clock_w));
+ map(0x7f001a01, 0x7f001a01).w(m_scsi, FUNC(ncr53c94_device::test_w));
+ map(0x7f001b01, 0x7f001b01).rw(m_scsi, FUNC(ncr53c94_device::conf2_r), FUNC(ncr53c94_device::conf2_w));
+ map(0x7f001c01, 0x7f001c01).w(m_scsi, FUNC(ncr53c94_device::conf3_w));
+ map(0x7f001f01, 0x7f001f01).w(m_scsi, FUNC(ncr53c94_device::fifo_align_w));
+}
-ADDRESS_MAP_START(sapphire_state::sapphire_main_map)
- AM_IMPORT_FROM(sapphire_base_map)
+void sapphire_state::sapphire_main_map(address_map &map)
+{
+ sapphire_base_map(map);
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE(RAM_TAG)
- AM_RANGE(0x7f100000, 0x7f11ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0)
- AM_RANGE(0x7f180000, 0x7f1fffff) AM_DEVREADWRITE8(INTERPRO_FLASH_TAG "_lo", intel_28f010_device, read, write, 0x00ff00ff) AM_MASK(0x3ffff)
- AM_RANGE(0x7f180000, 0x7f1fffff) AM_DEVREADWRITE8(INTERPRO_FLASH_TAG "_hi", intel_28f010_device, read, write, 0xff00ff00) AM_MASK(0x3ffff)
-ADDRESS_MAP_END
+ map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
+ map(0x7f100000, 0x7f11ffff).rom().region(INTERPRO_EPROM_TAG, 0);
+ map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_lo", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0x00ff00ff).mask(0x3ffff);
+ map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_hi", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0xff00ff00).mask(0x3ffff);
+}
-ADDRESS_MAP_START(turquoise_state::turquoise_io_map)
- AM_IMPORT_FROM(turquoise_base_map)
+void turquoise_state::turquoise_io_map(address_map &map)
+{
+ turquoise_base_map(map);
- AM_RANGE(0x00000800, 0x000009ff) AM_DEVICE(INTERPRO_MMU_TAG "_d", cammu_c3_device, map)
- AM_RANGE(0x00000a00, 0x00000bff) AM_DEVICE(INTERPRO_MMU_TAG "_i", cammu_c3_device, map)
- AM_RANGE(0x00000c00, 0x00000dff) AM_DEVICE(INTERPRO_MMU_TAG "_d", cammu_c3_device, map_global)
-ADDRESS_MAP_END
+ map(0x00000800, 0x000009ff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map));
+ map(0x00000a00, 0x00000bff).m(INTERPRO_MMU_TAG "_i", FUNC(cammu_c3_device::map));
+ map(0x00000c00, 0x00000dff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map_global));
+}
-ADDRESS_MAP_START(sapphire_state::sapphire_io_map)
- AM_IMPORT_FROM(sapphire_base_map)
+void sapphire_state::sapphire_io_map(address_map &map)
+{
+ sapphire_base_map(map);
- AM_RANGE(0x00000000, 0x00001fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_c4_device, map)
-ADDRESS_MAP_END
+ map(0x00000000, 0x00001fff).m(m_mmu, FUNC(cammu_c4_device::map));
+}
ADDRESS_MAP_START(interpro_state::interpro_boot_map)
// FIXME: the real system may have some initial boot instructions in this boot
@@ -438,13 +450,15 @@ ADDRESS_MAP_START(interpro_state::interpro_boot_map)
AM_RANGE(0x00000000, 0x00001fff) AM_RAM
ADDRESS_MAP_END
-ADDRESS_MAP_START(turquoise_state::interpro_82586_map)
- AM_RANGE(0x00000000, 0x00ffffff) AM_DEVREADWRITE(INTERPRO_IOGA_TAG, turquoise_ioga_device, eth_r, eth_w)
-ADDRESS_MAP_END
+void turquoise_state::interpro_82586_map(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).rw(INTERPRO_IOGA_TAG, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w));
+}
-ADDRESS_MAP_START(sapphire_state::interpro_82596_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE(INTERPRO_IOGA_TAG, sapphire_ioga_device, eth_r, eth_w)
-ADDRESS_MAP_END
+void sapphire_state::interpro_82596_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(INTERPRO_IOGA_TAG, FUNC(sapphire_ioga_device::eth_r), FUNC(sapphire_ioga_device::eth_w));
+}
FLOPPY_FORMATS_MEMBER(interpro_state::floppy_formats)
FLOPPY_PC_FORMAT
diff --git a/src/mame/drivers/intrscti.cpp b/src/mame/drivers/intrscti.cpp
index 299c58895e2..114ca28d652 100644
--- a/src/mame/drivers/intrscti.cpp
+++ b/src/mame/drivers/intrscti.cpp
@@ -85,30 +85,34 @@ uint32_t intrscti_state::screen_update_intrscti(screen_device &screen, bitmap_in
}
-ADDRESS_MAP_START(intrscti_state::intrscti_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x8000, 0x8fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intrscti_state::intrscti_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(intrscti_state::intrscti_sub_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
+void intrscti_state::intrscti_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x7000, 0x77ff).ram().share("vram");
+ map(0x8000, 0x8fff).rom();
+}
+
+void intrscti_state::intrscti_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+}
+
+
+void intrscti_state::intrscti_sub_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x2000, 0x23ff).ram();
// AM_RANGE(0x0000, 0xffff) AM_WRITENOP
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(intrscti_state::intrscti_sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void intrscti_state::intrscti_sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0xff) AM_NOP
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( intrscti )
diff --git a/src/mame/drivers/intv.cpp b/src/mame/drivers/intv.cpp
index 5493178b6ce..7e5ae1ea12a 100644
--- a/src/mame/drivers/intv.cpp
+++ b/src/mame/drivers/intv.cpp
@@ -279,148 +279,154 @@ static INPUT_PORTS_START( intvkbd )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD)
INPUT_PORTS_END
-ADDRESS_MAP_START(intv_state::intv_mem)
- AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w)
- AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w)
- AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff)
- AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w)
- AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom04)
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000 << 1) // Exec ROM, 10-bits wide
- AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom20)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) // GROM, 8-bits wide
- AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM, 8-bits wide
- AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM Alias, 8-bits wide
- AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom40)
- AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom48)
- AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom50)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom60)
- AM_RANGE(0x7000, 0x7fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom70)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom80)
- AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom90)
- AM_RANGE(0xa000, 0xafff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_roma0)
- AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romb0)
- AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romc0)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romd0)
- AM_RANGE(0xe000, 0xefff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rome0)
- AM_RANGE(0xf000, 0xffff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romf0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intv_state::intvoice_mem)
- AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w)
- AM_RANGE(0x0080, 0x0081) AM_DEVREADWRITE("voice", intv_voice_device, read_speech, write_speech) // Intellivoice
- AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w)
- AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff)
- AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w)
- AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("voice", intv_voice_device, read_rom04)
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000 << 1) // Exec ROM, 10-bits wide
- AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("voice", intv_voice_device, read_rom20)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) // GROM, 8-bits wide
- AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM, 8-bits wide
- AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM Alias, 8-bits wide
- AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("voice", intv_voice_device, read_rom40)
- AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("voice", intv_voice_device, read_rom48)
- AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("voice", intv_voice_device, read_rom50)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("voice", intv_voice_device, read_rom60)
- AM_RANGE(0x7000, 0x7fff) AM_DEVREAD("voice", intv_voice_device, read_rom70)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("voice", intv_voice_device, read_rom80)
- AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("voice", intv_voice_device, read_rom90)
- AM_RANGE(0xa000, 0xafff) AM_DEVREAD("voice", intv_voice_device, read_roma0)
- AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("voice", intv_voice_device, read_romb0)
- AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("voice", intv_voice_device, read_romc0)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("voice", intv_voice_device, read_romd0)
- AM_RANGE(0xe000, 0xefff) AM_DEVREAD("voice", intv_voice_device, read_rome0)
- AM_RANGE(0xf000, 0xffff) AM_DEVREAD("voice", intv_voice_device, read_romf0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intv_state::intv2_mem)
- AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w)
- AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w)
- AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff)
- AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w)
- AM_RANGE(0x0400, 0x04ff) AM_ROM AM_REGION("maincpu", 0x400 << 1) // Exec ROM, 10-bits wide
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000 << 1) // Exec ROM, 10-bits wide
- AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom20)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) // GROM, 8-bits wide
- AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM, 8-bits wide
- AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM Alias, 8-bits wide
- AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom40)
- AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom48)
- AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom50)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom60)
- AM_RANGE(0x7000, 0x7fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom70)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom80)
- AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom90)
- AM_RANGE(0xa000, 0xafff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_roma0)
- AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romb0)
- AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romc0)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romd0)
- AM_RANGE(0xe000, 0xefff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rome0)
- AM_RANGE(0xf000, 0xffff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romf0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intv_state::intvecs_mem)
- AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w)
- AM_RANGE(0x0080, 0x0081) AM_DEVREADWRITE("speech", sp0256_device, spb640_r, spb640_w) /* Intellivoice */
+void intv_state::intv_mem(address_map &map)
+{
+ map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w));
+ map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w));
+ map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff);
+ map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w));
+ map(0x0400, 0x04ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom04));
+ map(0x1000, 0x1fff).rom().region("maincpu", 0x1000 << 1); // Exec ROM, 10-bits wide
+ map(0x2000, 0x2fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom20));
+ map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); // GROM, 8-bits wide
+ map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM, 8-bits wide
+ map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM Alias, 8-bits wide
+ map(0x4000, 0x47ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom40));
+ map(0x4800, 0x4fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom48));
+ map(0x5000, 0x5fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom50));
+ map(0x6000, 0x6fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom60));
+ map(0x7000, 0x7fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom70));
+ map(0x8000, 0x8fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom80));
+ map(0x9000, 0x9fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom90));
+ map(0xa000, 0xafff).r(m_cart, FUNC(intv_cart_slot_device::read_roma0));
+ map(0xb000, 0xbfff).r(m_cart, FUNC(intv_cart_slot_device::read_romb0));
+ map(0xc000, 0xcfff).r(m_cart, FUNC(intv_cart_slot_device::read_romc0));
+ map(0xd000, 0xdfff).r(m_cart, FUNC(intv_cart_slot_device::read_romd0));
+ map(0xe000, 0xefff).r(m_cart, FUNC(intv_cart_slot_device::read_rome0));
+ map(0xf000, 0xffff).r(m_cart, FUNC(intv_cart_slot_device::read_romf0));
+}
+
+void intv_state::intvoice_mem(address_map &map)
+{
+ map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w));
+ map(0x0080, 0x0081).rw("voice", FUNC(intv_voice_device::read_speech), FUNC(intv_voice_device::write_speech)); // Intellivoice
+ map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w));
+ map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff);
+ map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w));
+ map(0x0400, 0x04ff).r("voice", FUNC(intv_voice_device::read_rom04));
+ map(0x1000, 0x1fff).rom().region("maincpu", 0x1000 << 1); // Exec ROM, 10-bits wide
+ map(0x2000, 0x2fff).r("voice", FUNC(intv_voice_device::read_rom20));
+ map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); // GROM, 8-bits wide
+ map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM, 8-bits wide
+ map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM Alias, 8-bits wide
+ map(0x4000, 0x47ff).r("voice", FUNC(intv_voice_device::read_rom40));
+ map(0x4800, 0x4fff).r("voice", FUNC(intv_voice_device::read_rom48));
+ map(0x5000, 0x5fff).r("voice", FUNC(intv_voice_device::read_rom50));
+ map(0x6000, 0x6fff).r("voice", FUNC(intv_voice_device::read_rom60));
+ map(0x7000, 0x7fff).r("voice", FUNC(intv_voice_device::read_rom70));
+ map(0x8000, 0x8fff).r("voice", FUNC(intv_voice_device::read_rom80));
+ map(0x9000, 0x9fff).r("voice", FUNC(intv_voice_device::read_rom90));
+ map(0xa000, 0xafff).r("voice", FUNC(intv_voice_device::read_roma0));
+ map(0xb000, 0xbfff).r("voice", FUNC(intv_voice_device::read_romb0));
+ map(0xc000, 0xcfff).r("voice", FUNC(intv_voice_device::read_romc0));
+ map(0xd000, 0xdfff).r("voice", FUNC(intv_voice_device::read_romd0));
+ map(0xe000, 0xefff).r("voice", FUNC(intv_voice_device::read_rome0));
+ map(0xf000, 0xffff).r("voice", FUNC(intv_voice_device::read_romf0));
+}
+
+void intv_state::intv2_mem(address_map &map)
+{
+ map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w));
+ map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w));
+ map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff);
+ map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w));
+ map(0x0400, 0x04ff).rom().region("maincpu", 0x400 << 1); // Exec ROM, 10-bits wide
+ map(0x1000, 0x1fff).rom().region("maincpu", 0x1000 << 1); // Exec ROM, 10-bits wide
+ map(0x2000, 0x2fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom20));
+ map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); // GROM, 8-bits wide
+ map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM, 8-bits wide
+ map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM Alias, 8-bits wide
+ map(0x4000, 0x47ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom40));
+ map(0x4800, 0x4fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom48));
+ map(0x5000, 0x5fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom50));
+ map(0x6000, 0x6fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom60));
+ map(0x7000, 0x7fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom70));
+ map(0x8000, 0x8fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom80));
+ map(0x9000, 0x9fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom90));
+ map(0xa000, 0xafff).r(m_cart, FUNC(intv_cart_slot_device::read_roma0));
+ map(0xb000, 0xbfff).r(m_cart, FUNC(intv_cart_slot_device::read_romb0));
+ map(0xc000, 0xcfff).r(m_cart, FUNC(intv_cart_slot_device::read_romc0));
+ map(0xd000, 0xdfff).r(m_cart, FUNC(intv_cart_slot_device::read_romd0));
+ map(0xe000, 0xefff).r(m_cart, FUNC(intv_cart_slot_device::read_rome0));
+ map(0xf000, 0xffff).r(m_cart, FUNC(intv_cart_slot_device::read_romf0));
+}
+
+void intv_state::intvecs_mem(address_map &map)
+{
+ map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w));
+ map(0x0080, 0x0081).rw("speech", FUNC(sp0256_device::spb640_r), FUNC(sp0256_device::spb640_w)); /* Intellivoice */
// AM_RANGE(0x00E0, 0x00E3) AM_READWRITE( intv_ecs_uart_r, intv_ecs_uart_w )
- AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_ay, write_ay) /* ecs psg */
- AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w)
- AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff)
- AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w)
- AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("ecs", intv_ecs_device, read_rom04)
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000<<1) /* Exec ROM, 10-bits wide */
- AM_RANGE(0x2000, 0x2fff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_rom20, write_rom20)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) /* GROM, 8-bits wide */
- AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM, 8-bits wide */
- AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM Alias, 8-bits wide */
- AM_RANGE(0x4000, 0x47ff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_ram, write_ram)
- AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom48)
- AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom50)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom60)
- AM_RANGE(0x7000, 0x7fff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_rom70, write_rom70)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom80)
- AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom90)
- AM_RANGE(0xa000, 0xafff) AM_DEVREAD("ecs", intv_ecs_device, read_roma0)
- AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("ecs", intv_ecs_device, read_romb0)
- AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("ecs", intv_ecs_device, read_romc0)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("ecs", intv_ecs_device, read_romd0)
- AM_RANGE(0xe000, 0xefff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_rome0, write_rome0)
- AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_romf0, write_romf0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intv_state::intvkbd_mem)
- AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w)
- AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w)
- AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff)
- AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w)
- AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom04)
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000<<1) /* Exec ROM, 10-bits wide */
- AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom20)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) /* GROM, 8-bits wide */
- AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM, 8-bits wide */
- AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM Alias, 8-bits wide */
- AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom40)
- AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom48)
- AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom50)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom60)
- AM_RANGE(0x7000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x7000<<1) /* Keyboard ROM */
- AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(intvkbd_dualport16_w) AM_SHARE("dualport_ram") /* Dual-port RAM */
- AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romc0)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romd0)
- AM_RANGE(0xe000, 0xefff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rome0)
- AM_RANGE(0xf000, 0xffff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romf0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intv_state::intvkbd2_mem)
- ADDRESS_MAP_UNMAP_HIGH /* Required because of probing */
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(intvkbd_dualport8_lsb_r, intvkbd_dualport8_lsb_w) /* Dual-port RAM */
- AM_RANGE(0x4000, 0x40bf) AM_READWRITE(intvkbd_io_r, intvkbd_io_w)
- AM_RANGE(0x40c0, 0x40cf) AM_DEVREADWRITE("crtc", tms9927_device, read, write)
- AM_RANGE(0x4200, 0x7fff) AM_READWRITE(intvkbd_dualport8_msb_r, intvkbd_dualport8_msb_w) /* Dual-port RAM */
- AM_RANGE(0xb7f8, 0xb7ff) AM_READWRITE(intvkbd_periph_r, intvkbd_periph_w)
- AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("videoram") /* Text Display */
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_READ(intvkb_iocart_r)
-ADDRESS_MAP_END
+ map(0x00f0, 0x00ff).rw("ecs", FUNC(intv_ecs_device::read_ay), FUNC(intv_ecs_device::write_ay)); /* ecs psg */
+ map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w));
+ map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff);
+ map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w));
+ map(0x0400, 0x04ff).r("ecs", FUNC(intv_ecs_device::read_rom04));
+ map(0x1000, 0x1fff).rom().region("maincpu", 0x1000<<1); /* Exec ROM, 10-bits wide */
+ map(0x2000, 0x2fff).rw("ecs", FUNC(intv_ecs_device::read_rom20), FUNC(intv_ecs_device::write_rom20));
+ map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); /* GROM, 8-bits wide */
+ map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM, 8-bits wide */
+ map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM Alias, 8-bits wide */
+ map(0x4000, 0x47ff).rw("ecs", FUNC(intv_ecs_device::read_ram), FUNC(intv_ecs_device::write_ram));
+ map(0x4800, 0x4fff).r("ecs", FUNC(intv_ecs_device::read_rom48));
+ map(0x5000, 0x5fff).r("ecs", FUNC(intv_ecs_device::read_rom50));
+ map(0x6000, 0x6fff).r("ecs", FUNC(intv_ecs_device::read_rom60));
+ map(0x7000, 0x7fff).rw("ecs", FUNC(intv_ecs_device::read_rom70), FUNC(intv_ecs_device::write_rom70));
+ map(0x8000, 0x8fff).r("ecs", FUNC(intv_ecs_device::read_rom80));
+ map(0x9000, 0x9fff).r("ecs", FUNC(intv_ecs_device::read_rom90));
+ map(0xa000, 0xafff).r("ecs", FUNC(intv_ecs_device::read_roma0));
+ map(0xb000, 0xbfff).r("ecs", FUNC(intv_ecs_device::read_romb0));
+ map(0xc000, 0xcfff).r("ecs", FUNC(intv_ecs_device::read_romc0));
+ map(0xd000, 0xdfff).r("ecs", FUNC(intv_ecs_device::read_romd0));
+ map(0xe000, 0xefff).rw("ecs", FUNC(intv_ecs_device::read_rome0), FUNC(intv_ecs_device::write_rome0));
+ map(0xf000, 0xffff).rw("ecs", FUNC(intv_ecs_device::read_romf0), FUNC(intv_ecs_device::write_romf0));
+}
+
+void intv_state::intvkbd_mem(address_map &map)
+{
+ map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w));
+ map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w));
+ map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff);
+ map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w));
+ map(0x0400, 0x04ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom04));
+ map(0x1000, 0x1fff).rom().region("maincpu", 0x1000<<1); /* Exec ROM, 10-bits wide */
+ map(0x2000, 0x2fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom20));
+ map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); /* GROM, 8-bits wide */
+ map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM, 8-bits wide */
+ map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM Alias, 8-bits wide */
+ map(0x4000, 0x47ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom40));
+ map(0x4800, 0x4fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom48));
+ map(0x5000, 0x5fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom50));
+ map(0x6000, 0x6fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom60));
+ map(0x7000, 0x7fff).rom().region("maincpu", 0x7000<<1); /* Keyboard ROM */
+ map(0x8000, 0xbfff).ram().w(this, FUNC(intv_state::intvkbd_dualport16_w)).share("dualport_ram"); /* Dual-port RAM */
+ map(0xc000, 0xcfff).r(m_cart, FUNC(intv_cart_slot_device::read_romc0));
+ map(0xd000, 0xdfff).r(m_cart, FUNC(intv_cart_slot_device::read_romd0));
+ map(0xe000, 0xefff).r(m_cart, FUNC(intv_cart_slot_device::read_rome0));
+ map(0xf000, 0xffff).r(m_cart, FUNC(intv_cart_slot_device::read_romf0));
+}
+
+void intv_state::intvkbd2_mem(address_map &map)
+{
+ map.unmap_value_high(); /* Required because of probing */
+ map(0x0000, 0x3fff).rw(this, FUNC(intv_state::intvkbd_dualport8_lsb_r), FUNC(intv_state::intvkbd_dualport8_lsb_w)); /* Dual-port RAM */
+ map(0x4000, 0x40bf).rw(this, FUNC(intv_state::intvkbd_io_r), FUNC(intv_state::intvkbd_io_w));
+ map(0x40c0, 0x40cf).rw(m_crtc, FUNC(tms9927_device::read), FUNC(tms9927_device::write));
+ map(0x4200, 0x7fff).rw(this, FUNC(intv_state::intvkbd_dualport8_msb_r), FUNC(intv_state::intvkbd_dualport8_msb_w)); /* Dual-port RAM */
+ map(0xb7f8, 0xb7ff).rw(this, FUNC(intv_state::intvkbd_periph_r), FUNC(intv_state::intvkbd_periph_w));
+ map(0xb800, 0xbfff).ram().share("videoram"); /* Text Display */
+ map(0xc000, 0xdfff).rom();
+ map(0xe000, 0xffff).r(this, FUNC(intv_state::intvkb_iocart_r));
+}
void intv_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
diff --git a/src/mame/drivers/inufuku.cpp b/src/mame/drivers/inufuku.cpp
index 411ff7abca5..4bf4b679ce3 100644
--- a/src/mame/drivers/inufuku.cpp
+++ b/src/mame/drivers/inufuku.cpp
@@ -111,36 +111,37 @@ CUSTOM_INPUT_MEMBER(inufuku_state::soundflag_r)
******************************************************************************/
-ADDRESS_MAP_START(inufuku_state::inufuku_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // main rom
+void inufuku_state::inufuku_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // main rom
// AM_RANGE(0x100000, 0x100007) AM_WRITENOP // ?
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("P2")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x180006, 0x180007) AM_READ_PORT("P4")
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("EXTRA")
- AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("P3")
-
- AM_RANGE(0x200000, 0x200001) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // sound command
-
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette ram
- AM_RANGE(0x380000, 0x3801ff) AM_WRITEONLY AM_SHARE("bg_rasterram") // bg raster ram
- AM_RANGE(0x400000, 0x401fff) AM_READWRITE(inufuku_bg_videoram_r, inufuku_bg_videoram_w) AM_SHARE("bg_videoram") // bg ram
- AM_RANGE(0x402000, 0x403fff) AM_READWRITE(inufuku_tx_videoram_r, inufuku_tx_videoram_w) AM_SHARE("tx_videoram") // text ram
- AM_RANGE(0x404000, 0x40ffff) AM_RAM // ?? mirror (3on3dunk)
- AM_RANGE(0x580000, 0x581fff) AM_RAM AM_SHARE("spriteram1") // sprite table + sprite attribute
- AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("spriteram2") // cell table
-
- AM_RANGE(0x780000, 0x780013) AM_WRITE(inufuku_palettereg_w) // bg & text palettebank register
- AM_RANGE(0x7a0000, 0x7a0023) AM_WRITE(inufuku_scrollreg_w) // bg & text scroll register
+ map(0x180000, 0x180001).portr("P1");
+ map(0x180002, 0x180003).portr("P2");
+ map(0x180004, 0x180005).portr("SYSTEM");
+ map(0x180006, 0x180007).portr("P4");
+ map(0x180008, 0x180009).portr("EXTRA");
+ map(0x18000a, 0x18000b).portr("P3");
+
+ map(0x200000, 0x200001).portw("EEPROMOUT");
+ map(0x280001, 0x280001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // sound command
+
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette ram
+ map(0x380000, 0x3801ff).writeonly().share("bg_rasterram"); // bg raster ram
+ map(0x400000, 0x401fff).rw(this, FUNC(inufuku_state::inufuku_bg_videoram_r), FUNC(inufuku_state::inufuku_bg_videoram_w)).share("bg_videoram"); // bg ram
+ map(0x402000, 0x403fff).rw(this, FUNC(inufuku_state::inufuku_tx_videoram_r), FUNC(inufuku_state::inufuku_tx_videoram_w)).share("tx_videoram"); // text ram
+ map(0x404000, 0x40ffff).ram(); // ?? mirror (3on3dunk)
+ map(0x580000, 0x581fff).ram().share("spriteram1"); // sprite table + sprite attribute
+ map(0x600000, 0x61ffff).ram().share("spriteram2"); // cell table
+
+ map(0x780000, 0x780013).w(this, FUNC(inufuku_state::inufuku_palettereg_w)); // bg & text palettebank register
+ map(0x7a0000, 0x7a0023).w(this, FUNC(inufuku_state::inufuku_scrollreg_w)); // bg & text scroll register
// AM_RANGE(0x7e0000, 0x7e0001) AM_WRITENOP // ?
- AM_RANGE(0x800000, 0xbfffff) AM_ROM // data rom
- AM_RANGE(0xfd0000, 0xfdffff) AM_RAM // work ram
-ADDRESS_MAP_END
+ map(0x800000, 0xbfffff).rom(); // data rom
+ map(0xfd0000, 0xfdffff).ram(); // work ram
+}
/******************************************************************************
@@ -149,18 +150,20 @@ ADDRESS_MAP_END
******************************************************************************/
-ADDRESS_MAP_START(inufuku_state::inufuku_sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(inufuku_state::inufuku_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+void inufuku_state::inufuku_sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void inufuku_state::inufuku_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(inufuku_state::inufuku_soundrombank_w));
+ map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
/******************************************************************************
diff --git a/src/mame/drivers/invqix.cpp b/src/mame/drivers/invqix.cpp
index e6a01ea37ba..8963056e2d2 100644
--- a/src/mame/drivers/invqix.cpp
+++ b/src/mame/drivers/invqix.cpp
@@ -277,26 +277,28 @@ WRITE16_MEMBER(invqix_state::vctl_w)
m_vctl = data;
}
-ADDRESS_MAP_START(invqix_state::invqix_prg_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("program", 0)
- AM_RANGE(0x200000, 0x21ffff) AM_RAM
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write_tmp_register, 0x00ff)
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write, 0xff00)
- AM_RANGE(0x400002, 0x400003) AM_DEVREAD8("oki", okim9810_device, read, 0xff00)
- AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x620004, 0x620005) AM_WRITE(vctl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(invqix_state::invqix_io_map)
- AM_RANGE(h8_device::PORT_1, h8_device::PORT_1) AM_READ_PORT("P1")
- AM_RANGE(h8_device::PORT_2, h8_device::PORT_2) AM_READ_PORT("SYSTEM") AM_WRITENOP
- AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_READWRITE(port3_r, port3_w)
- AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READ_PORT("P4")
- AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) AM_READWRITE(port5_r, port5_w)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(port6_r, port6_w)
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READ(porta_r)
- AM_RANGE(h8_device::PORT_G, h8_device::PORT_G) AM_READ(portg_r) AM_WRITENOP
-ADDRESS_MAP_END
+void invqix_state::invqix_prg_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom().region("program", 0);
+ map(0x200000, 0x21ffff).ram();
+ map(0x400001, 0x400001).w("oki", FUNC(okim9810_device::write_tmp_register));
+ map(0x400000, 0x400000).w("oki", FUNC(okim9810_device::write));
+ map(0x400002, 0x400002).r("oki", FUNC(okim9810_device::read));
+ map(0x600000, 0x61ffff).ram().share("vram");
+ map(0x620004, 0x620005).w(this, FUNC(invqix_state::vctl_w));
+}
+
+void invqix_state::invqix_io_map(address_map &map)
+{
+ map(h8_device::PORT_1, h8_device::PORT_1).portr("P1");
+ map(h8_device::PORT_2, h8_device::PORT_2).portr("SYSTEM").nopw();
+ map(h8_device::PORT_3, h8_device::PORT_3).rw(this, FUNC(invqix_state::port3_r), FUNC(invqix_state::port3_w));
+ map(h8_device::PORT_4, h8_device::PORT_4).portr("P4");
+ map(h8_device::PORT_5, h8_device::PORT_5).rw(this, FUNC(invqix_state::port5_r), FUNC(invqix_state::port5_w));
+ map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(invqix_state::port6_r), FUNC(invqix_state::port6_w));
+ map(h8_device::PORT_A, h8_device::PORT_A).r(this, FUNC(invqix_state::porta_r));
+ map(h8_device::PORT_G, h8_device::PORT_G).r(this, FUNC(invqix_state::portg_r)).nopw();
+}
static INPUT_PORTS_START( invqix )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/ipc.cpp b/src/mame/drivers/ipc.cpp
index 3d6345a9e39..5cdbba11c52 100644
--- a/src/mame/drivers/ipc.cpp
+++ b/src/mame/drivers/ipc.cpp
@@ -63,21 +63,23 @@ private:
};
-ADDRESS_MAP_START(ipc_state::ipc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_RAM
- AM_RANGE(0xe800, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ipc_state::ipc_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xf4, 0xf4) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0xf5, 0xf5) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0xf6, 0xf6) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0xf7, 0xf7) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void ipc_state::ipc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).ram();
+ map(0xe800, 0xffff).rom().region("roms", 0);
+}
+
+void ipc_state::ipc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf0, 0xf3).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xf4, 0xf4).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf5, 0xf5).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf6, 0xf6).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf7, 0xf7).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( ipc )
diff --git a/src/mame/drivers/ipds.cpp b/src/mame/drivers/ipds.cpp
index e04d1504040..8bf683f9f93 100644
--- a/src/mame/drivers/ipds.cpp
+++ b/src/mame/drivers/ipds.cpp
@@ -63,19 +63,21 @@ WRITE8_MEMBER( ipds_state::ipds_b1_w )
{
}
-ADDRESS_MAP_START(ipds_state::ipds_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ipds_state::ipds_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xb0, 0xb0) AM_READ(ipds_b0_r)
- AM_RANGE(0xb1, 0xb1) AM_READWRITE(ipds_b1_r,ipds_b1_w)
- AM_RANGE(0xc0, 0xc0) AM_READ(ipds_c0_r)
-ADDRESS_MAP_END
+void ipds_state::ipds_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0xffff).ram();
+}
+
+void ipds_state::ipds_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xb0, 0xb0).r(this, FUNC(ipds_state::ipds_b0_r));
+ map(0xb1, 0xb1).rw(this, FUNC(ipds_state::ipds_b1_r), FUNC(ipds_state::ipds_b1_w));
+ map(0xc0, 0xc0).r(this, FUNC(ipds_state::ipds_c0_r));
+}
/* Input ports */
static INPUT_PORTS_START( ipds )
diff --git a/src/mame/drivers/iq151.cpp b/src/mame/drivers/iq151.cpp
index 710d3e9c761..beb89da7705 100644
--- a/src/mame/drivers/iq151.cpp
+++ b/src/mame/drivers/iq151.cpp
@@ -206,24 +206,26 @@ WRITE8_MEMBER(iq151_state::cartslot_io_w)
elem->io_write(offset, data);
}
-ADDRESS_MAP_START(iq151_state::iq151_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(cartslot_r, cartslot_w)
-
- AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("boot")
- AM_RANGE( 0x0800, 0x7fff ) AM_RAM
- AM_RANGE( 0xf000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(iq151_state::iq151_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0xff ) AM_READWRITE(cartslot_io_r, cartslot_io_w)
-
- AM_RANGE( 0x80, 0x80 ) AM_WRITE(boot_bank_w)
- AM_RANGE( 0x84, 0x87 ) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0x88, 0x89 ) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
-ADDRESS_MAP_END
+void iq151_state::iq151_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(iq151_state::cartslot_r), FUNC(iq151_state::cartslot_w));
+
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0x7fff).ram();
+ map(0xf000, 0xffff).rom();
+}
+
+void iq151_state::iq151_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(iq151_state::cartslot_io_r), FUNC(iq151_state::cartslot_io_w));
+
+ map(0x80, 0x80).w(this, FUNC(iq151_state::boot_bank_w));
+ map(0x84, 0x87).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x88, 0x89).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+}
INPUT_CHANGED_MEMBER(iq151_state::iq151_break)
diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp
index b08ed9a646c..8cd41c1a8d9 100644
--- a/src/mame/drivers/iqblock.cpp
+++ b/src/mame/drivers/iqblock.cpp
@@ -111,25 +111,27 @@ WRITE8_MEMBER(iqblock_state::port_C_w)
/* bit 7 could be a second coin counter, but coin 2 doesn't seem to work... */
}
-ADDRESS_MAP_START(iqblock_state::main_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("rambase")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(iqblock_state::main_portmap)
- AM_RANGE(0x2000, 0x23ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2800, 0x2bff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0")
- AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1")
- AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) // UM3567_data_port_0_w
- AM_RANGE(0x50c0, 0x50c0) AM_WRITE(irqack_w)
- AM_RANGE(0x6000, 0x603f) AM_WRITE(fgscroll_w)
- AM_RANGE(0x6800, 0x69ff) AM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void iqblock_state::main_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram().share("rambase");
+}
+
+
+void iqblock_state::main_portmap(address_map &map)
+{
+ map(0x2000, 0x23ff).w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x2800, 0x2bff).w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x5080, 0x5083).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5090, 0x5090).portr("SW0");
+ map(0x50a0, 0x50a0).portr("SW1");
+ map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write)); // UM3567_data_port_0_w
+ map(0x50c0, 0x50c0).w(this, FUNC(iqblock_state::irqack_w));
+ map(0x6000, 0x603f).w(this, FUNC(iqblock_state::fgscroll_w));
+ map(0x6800, 0x69ff).w(this, FUNC(iqblock_state::fgvideoram_w)).share("fgvideoram"); /* initialized up to 6fff... bug or larger tilemap? */
+ map(0x7000, 0x7fff).ram().w(this, FUNC(iqblock_state::bgvideoram_w)).share("bgvideoram");
+ map(0x8000, 0xffff).rom().region("user1", 0);
+}
static INPUT_PORTS_START( iqblock )
PORT_START("P1")
diff --git a/src/mame/drivers/iqunlim.cpp b/src/mame/drivers/iqunlim.cpp
index 46a1e8ccd05..f4769320e5e 100644
--- a/src/mame/drivers/iqunlim.cpp
+++ b/src/mame/drivers/iqunlim.cpp
@@ -76,10 +76,11 @@ uint32_t iqunlim_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
return 0;
}
-ADDRESS_MAP_START(iqunlim_state::iqunlim_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1FFFFF) AM_ROM
-ADDRESS_MAP_END
+void iqunlim_state::iqunlim_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1FFFFF).rom();
+}
static INPUT_PORTS_START( iqunlim )
INPUT_PORTS_END
diff --git a/src/mame/drivers/iris3130.cpp b/src/mame/drivers/iris3130.cpp
index e9b8cacc3e4..b9cafd0f827 100644
--- a/src/mame/drivers/iris3130.cpp
+++ b/src/mame/drivers/iris3130.cpp
@@ -374,28 +374,29 @@ void sgi_ip2_state::machine_reset()
***************************************************************************/
-ADDRESS_MAP_START(sgi_ip2_state::sgi_ip2_map)
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x02100000, 0x0210ffff) AM_RAM AM_SHARE("bss") // ??? I don't understand the need for this...
- AM_RANGE(0x30000000, 0x30017fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x30800000, 0x30800003) AM_READWRITE8(sgi_ip2_m_but_r, sgi_ip2_m_but_w, 0xffffffff)
- AM_RANGE(0x31000000, 0x31000003) AM_READWRITE16(sgi_ip2_m_quad_r, sgi_ip2_m_quad_w, 0xffffffff)
- AM_RANGE(0x31800000, 0x31800003) AM_READ16(sgi_ip2_swtch_r, 0xffffffff)
- AM_RANGE(0x32000000, 0x3200000f) AM_DEVREADWRITE8("duart68681a", mc68681_device, read, write, 0xffffffff)
- AM_RANGE(0x32800000, 0x3280000f) AM_DEVREADWRITE8("duart68681b", mc68681_device, read, write, 0xffffffff)
- AM_RANGE(0x33000000, 0x330007ff) AM_RAM
- AM_RANGE(0x34000000, 0x34000003) AM_READWRITE8(sgi_ip2_clock_ctl_r, sgi_ip2_clock_ctl_w, 0xffffffff)
- AM_RANGE(0x35000000, 0x35000003) AM_READWRITE8(sgi_ip2_clock_data_r, sgi_ip2_clock_data_w, 0xffffffff)
- AM_RANGE(0x36000000, 0x36000003) AM_READWRITE8(sgi_ip2_os_base_r, sgi_ip2_os_base_w, 0xffffffff)
- AM_RANGE(0x38000000, 0x38000003) AM_READWRITE16(sgi_ip2_status_r, sgi_ip2_status_w, 0xffffffff)
- AM_RANGE(0x39000000, 0x39000003) AM_READWRITE8(sgi_ip2_parctl_r, sgi_ip2_parctl_w, 0xffffffff)
- AM_RANGE(0x3a000000, 0x3a000003) AM_READWRITE8(sgi_ip2_mbp_r, sgi_ip2_mbp_w, 0xffffffff)
- AM_RANGE(0x3b000000, 0x3b003fff) AM_READWRITE(sgi_ip2_ptmap_r, sgi_ip2_ptmap_w) AM_SHARE("ptmap")
- AM_RANGE(0x3c000000, 0x3c000003) AM_READWRITE16(sgi_ip2_tdbase_r, sgi_ip2_tdbase_w, 0xffffffff)
- AM_RANGE(0x3d000000, 0x3d000003) AM_READWRITE16(sgi_ip2_tdlmt_r, sgi_ip2_tdlmt_w, 0xffffffff)
- AM_RANGE(0x3e000000, 0x3e000003) AM_READWRITE16(sgi_ip2_stkbase_r, sgi_ip2_stkbase_w, 0xffffffff)
- AM_RANGE(0x3f000000, 0x3f000003) AM_READWRITE16(sgi_ip2_stklmt_r, sgi_ip2_stklmt_w, 0xffffffff)
-ADDRESS_MAP_END
+void sgi_ip2_state::sgi_ip2_map(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).ram().share("mainram");
+ map(0x02100000, 0x0210ffff).ram().share("bss"); // ??? I don't understand the need for this...
+ map(0x30000000, 0x30017fff).rom().region("maincpu", 0);
+ map(0x30800000, 0x30800003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_m_but_r), FUNC(sgi_ip2_state::sgi_ip2_m_but_w));
+ map(0x31000000, 0x31000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_m_quad_r), FUNC(sgi_ip2_state::sgi_ip2_m_quad_w));
+ map(0x31800000, 0x31800003).r(this, FUNC(sgi_ip2_state::sgi_ip2_swtch_r));
+ map(0x32000000, 0x3200000f).rw(m_duarta, FUNC(mc68681_device::read), FUNC(mc68681_device::write));
+ map(0x32800000, 0x3280000f).rw(m_duartb, FUNC(mc68681_device::read), FUNC(mc68681_device::write));
+ map(0x33000000, 0x330007ff).ram();
+ map(0x34000000, 0x34000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_clock_ctl_r), FUNC(sgi_ip2_state::sgi_ip2_clock_ctl_w));
+ map(0x35000000, 0x35000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_clock_data_r), FUNC(sgi_ip2_state::sgi_ip2_clock_data_w));
+ map(0x36000000, 0x36000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_os_base_r), FUNC(sgi_ip2_state::sgi_ip2_os_base_w));
+ map(0x38000000, 0x38000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_status_r), FUNC(sgi_ip2_state::sgi_ip2_status_w));
+ map(0x39000000, 0x39000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_parctl_r), FUNC(sgi_ip2_state::sgi_ip2_parctl_w));
+ map(0x3a000000, 0x3a000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_mbp_r), FUNC(sgi_ip2_state::sgi_ip2_mbp_w));
+ map(0x3b000000, 0x3b003fff).rw(this, FUNC(sgi_ip2_state::sgi_ip2_ptmap_r), FUNC(sgi_ip2_state::sgi_ip2_ptmap_w)).share("ptmap");
+ map(0x3c000000, 0x3c000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_tdbase_r), FUNC(sgi_ip2_state::sgi_ip2_tdbase_w));
+ map(0x3d000000, 0x3d000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_tdlmt_r), FUNC(sgi_ip2_state::sgi_ip2_tdlmt_w));
+ map(0x3e000000, 0x3e000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_stkbase_r), FUNC(sgi_ip2_state::sgi_ip2_stkbase_w));
+ map(0x3f000000, 0x3f000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_stklmt_r), FUNC(sgi_ip2_state::sgi_ip2_stklmt_w));
+}
/***************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/irisha.cpp b/src/mame/drivers/irisha.cpp
index cc5697d51c3..eea8c80f2ca 100644
--- a/src/mame/drivers/irisha.cpp
+++ b/src/mame/drivers/irisha.cpp
@@ -70,20 +70,22 @@ private:
/* Address maps */
-ADDRESS_MAP_START(irisha_state::irisha_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0xdfff) AM_RAM // RAM
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(irisha_state::irisha_io)
- AM_RANGE(0x04, 0x05) AM_READ(irisha_keyboard_r)
- AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w)
- AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x08, 0x0B) AM_DEVREADWRITE("pit8253", pit8253_device, read, write )
- AM_RANGE(0x0C, 0x0F) AM_DEVREADWRITE("pic8259", pic8259_device, read, write ) AM_MASK( 0x01 )
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+void irisha_state::irisha_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0xdfff).ram(); // RAM
+ map(0xe000, 0xffff).ram().share("videoram");
+}
+
+void irisha_state::irisha_io(address_map &map)
+{
+ map(0x04, 0x05).r(this, FUNC(irisha_state::irisha_keyboard_r));
+ map(0x06, 0x06).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x07, 0x07).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x08, 0x0B).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x0C, 0x0F).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).mask(0x01);
+ map(0x10, 0x13).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( irisha )
diff --git a/src/mame/drivers/irobot.cpp b/src/mame/drivers/irobot.cpp
index b4410383fa4..78c98bf00ea 100644
--- a/src/mame/drivers/irobot.cpp
+++ b/src/mame/drivers/irobot.cpp
@@ -149,29 +149,30 @@ WRITE8_MEMBER(irobot_state::quad_pokeyn_w)
*
*************************************/
-ADDRESS_MAP_START(irobot_state::irobot_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_RAMBANK("bank2")
- AM_RANGE(0x1000, 0x103f) AM_READ_PORT("IN0")
- AM_RANGE(0x1040, 0x1040) AM_READ_PORT("IN1")
- AM_RANGE(0x1080, 0x1080) AM_READ(irobot_status_r)
- AM_RANGE(0x10c0, 0x10c0) AM_READ_PORT("DSW1")
- AM_RANGE(0x1100, 0x1100) AM_WRITE(irobot_clearirq_w)
- AM_RANGE(0x1140, 0x1140) AM_WRITE(irobot_statwr_w)
- AM_RANGE(0x1180, 0x1180) AM_WRITE(irobot_out0_w)
- AM_RANGE(0x11c0, 0x11c0) AM_WRITE(irobot_rom_banksel_w)
- AM_RANGE(0x1200, 0x12ff) AM_RAM_WRITE(irobot_nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x1300, 0x13ff) AM_READ(irobot_control_r)
- AM_RANGE(0x1400, 0x143f) AM_READWRITE(quad_pokeyn_r, quad_pokeyn_w)
- AM_RANGE(0x1800, 0x18ff) AM_WRITE(irobot_paletteram_w)
- AM_RANGE(0x1900, 0x19ff) AM_WRITEONLY /* Watchdog reset */
- AM_RANGE(0x1a00, 0x1a00) AM_WRITE(irobot_clearfirq_w)
- AM_RANGE(0x1b00, 0x1bff) AM_WRITE(irobot_control_w)
- AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(irobot_sharedmem_r, irobot_sharedmem_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void irobot_state::irobot_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0fff).bankrw("bank2");
+ map(0x1000, 0x103f).portr("IN0");
+ map(0x1040, 0x1040).portr("IN1");
+ map(0x1080, 0x1080).r(this, FUNC(irobot_state::irobot_status_r));
+ map(0x10c0, 0x10c0).portr("DSW1");
+ map(0x1100, 0x1100).w(this, FUNC(irobot_state::irobot_clearirq_w));
+ map(0x1140, 0x1140).w(this, FUNC(irobot_state::irobot_statwr_w));
+ map(0x1180, 0x1180).w(this, FUNC(irobot_state::irobot_out0_w));
+ map(0x11c0, 0x11c0).w(this, FUNC(irobot_state::irobot_rom_banksel_w));
+ map(0x1200, 0x12ff).ram().w(this, FUNC(irobot_state::irobot_nvram_w)).share("nvram");
+ map(0x1300, 0x13ff).r(this, FUNC(irobot_state::irobot_control_r));
+ map(0x1400, 0x143f).rw(this, FUNC(irobot_state::quad_pokeyn_r), FUNC(irobot_state::quad_pokeyn_w));
+ map(0x1800, 0x18ff).w(this, FUNC(irobot_state::irobot_paletteram_w));
+ map(0x1900, 0x19ff).writeonly(); /* Watchdog reset */
+ map(0x1a00, 0x1a00).w(this, FUNC(irobot_state::irobot_clearfirq_w));
+ map(0x1b00, 0x1bff).w(this, FUNC(irobot_state::irobot_control_w));
+ map(0x1c00, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x3fff).rw(this, FUNC(irobot_state::irobot_sharedmem_r), FUNC(irobot_state::irobot_sharedmem_w));
+ map(0x4000, 0x5fff).bankr("bank1");
+ map(0x6000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp
index a9f159f7e51..03f21a769fd 100644
--- a/src/mame/drivers/ironhors.cpp
+++ b/src/mame/drivers/ironhors.cpp
@@ -59,85 +59,90 @@ WRITE8_MEMBER(ironhors_state::filter_w)
*
*************************************/
-ADDRESS_MAP_START(ironhors_state::master_map)
- AM_RANGE(0x0000, 0x0002) AM_RAM
- AM_RANGE(0x0003, 0x0003) AM_RAM_WRITE(charbank_w)
- AM_RANGE(0x0004, 0x0004) AM_RAM AM_SHARE("int_enable")
- AM_RANGE(0x0005, 0x001f) AM_RAM
- AM_RANGE(0x0020, 0x003f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x0040, 0x005f) AM_RAM
- AM_RANGE(0x0060, 0x00df) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x0900, 0x0900) AM_READ_PORT("DSW3") AM_WRITE(sh_irqtrigger_w)
- AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW2") AM_WRITE(palettebank_w)
- AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w)
- AM_RANGE(0x0b01, 0x0b01) AM_READ_PORT("P2")
- AM_RANGE(0x0b02, 0x0b02) AM_READ_PORT("P1")
- AM_RANGE(0x0b03, 0x0b03) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1800, 0x1800) AM_WRITENOP // ???
- AM_RANGE(0x1a00, 0x1a01) AM_WRITENOP // ???
- AM_RANGE(0x1c00, 0x1dff) AM_WRITENOP // ???
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x3100, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3900, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ironhors_state::slave_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ironhors_state::slave_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ironhors_state::farwest_master_map)
- AM_RANGE(0x0000, 0x1bff) AM_ROM
-
- AM_RANGE(0x0000, 0x0002) AM_RAM
+void ironhors_state::master_map(address_map &map)
+{
+ map(0x0000, 0x0002).ram();
+ map(0x0003, 0x0003).ram().w(this, FUNC(ironhors_state::charbank_w));
+ map(0x0004, 0x0004).ram().share("int_enable");
+ map(0x0005, 0x001f).ram();
+ map(0x0020, 0x003f).ram().share("scroll");
+ map(0x0040, 0x005f).ram();
+ map(0x0060, 0x00df).ram();
+ map(0x0800, 0x0800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0900, 0x0900).portr("DSW3").w(this, FUNC(ironhors_state::sh_irqtrigger_w));
+ map(0x0a00, 0x0a00).portr("DSW2").w(this, FUNC(ironhors_state::palettebank_w));
+ map(0x0b00, 0x0b00).portr("DSW1").w(this, FUNC(ironhors_state::flipscreen_w));
+ map(0x0b01, 0x0b01).portr("P2");
+ map(0x0b02, 0x0b02).portr("P1");
+ map(0x0b03, 0x0b03).portr("SYSTEM");
+ map(0x1800, 0x1800).nopw(); // ???
+ map(0x1a00, 0x1a01).nopw(); // ???
+ map(0x1c00, 0x1dff).nopw(); // ???
+ map(0x2000, 0x23ff).ram().w(this, FUNC(ironhors_state::colorram_w)).share("colorram");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(ironhors_state::videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram();
+ map(0x3000, 0x30ff).ram().share("spriteram2");
+ map(0x3100, 0x37ff).ram();
+ map(0x3800, 0x38ff).ram().share("spriteram");
+ map(0x3900, 0x3fff).ram();
+ map(0x4000, 0xffff).rom();
+}
+
+void ironhors_state::slave_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void ironhors_state::slave_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
+
+void ironhors_state::farwest_master_map(address_map &map)
+{
+ map(0x0000, 0x1bff).rom();
+
+ map(0x0000, 0x0002).ram();
//20=31db
- AM_RANGE(0x0005, 0x001f) AM_RAM
- AM_RANGE(0x0040, 0x005f) AM_RAM
- AM_RANGE(0x0060, 0x00ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x0900, 0x0900) /*AM_READ_PORT("DSW3") */AM_WRITE(sh_irqtrigger_w)
- AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW2") //AM_WRITE(palettebank_w)
- AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w)
- AM_RANGE(0x0b01, 0x0b01) AM_READ_PORT("DSW2") //AM_WRITE(palettebank_w)
- AM_RANGE(0x0b02, 0x0b02) AM_READ_PORT("P1")
- AM_RANGE(0x0b03, 0x0b03) AM_READ_PORT("SYSTEM")
-
-
-
- AM_RANGE(0x1800, 0x1800) AM_WRITE(sh_irqtrigger_w)
- AM_RANGE(0x1a00, 0x1a00) AM_RAM AM_SHARE("int_enable")
- AM_RANGE(0x1a01, 0x1a01) AM_RAM_WRITE(charbank_w)
- AM_RANGE(0x1a02, 0x1a02) AM_WRITE(palettebank_w)
-// AM_RANGE(0x1c00, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM
- AM_RANGE(0x1c00, 0x1dff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x3000, 0x38ff) AM_RAM
- AM_RANGE(0x31db, 0x31fa) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x1e00, 0x1eff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3900, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ironhors_state::farwest_slave_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym2203", ym2203_device, read, write)
-ADDRESS_MAP_END
+ map(0x0005, 0x001f).ram();
+ map(0x0040, 0x005f).ram();
+ map(0x0060, 0x00ff).ram();
+ map(0x0800, 0x0800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0900, 0x0900) /*.protr("DSW3") */ .w(this, FUNC(ironhors_state::sh_irqtrigger_w));
+ map(0x0a00, 0x0a00).portr("DSW2"); //.w(this, FUNC(ironhors_state::palettebank_w));
+ map(0x0b00, 0x0b00).portr("DSW1").w(this, FUNC(ironhors_state::flipscreen_w));
+ map(0x0b01, 0x0b01).portr("DSW2"); //.w(this, FUNC(ironhors_state::palettebank_w));
+ map(0x0b02, 0x0b02).portr("P1");
+ map(0x0b03, 0x0b03).portr("SYSTEM");
+
+
+
+ map(0x1800, 0x1800).w(this, FUNC(ironhors_state::sh_irqtrigger_w));
+ map(0x1a00, 0x1a00).ram().share("int_enable");
+ map(0x1a01, 0x1a01).ram().w(this, FUNC(ironhors_state::charbank_w));
+ map(0x1a02, 0x1a02).w(this, FUNC(ironhors_state::palettebank_w));
+// map(0x1c00, 0x1fff).ram();
+ map(0x2000, 0x23ff).ram().w(this, FUNC(ironhors_state::colorram_w)).share("colorram");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(ironhors_state::videoram_w)).share("videoram");
+ map(0x2800, 0x2fff).ram();
+ map(0x1c00, 0x1dff).ram().share("spriteram2");
+ map(0x3000, 0x38ff).ram();
+ map(0x31db, 0x31fa).ram().share("scroll");
+ map(0x1e00, 0x1eff).ram().share("spriteram");
+ map(0x3900, 0x3fff).ram();
+ map(0x4000, 0xffff).rom();
+}
+
+void ironhors_state::farwest_slave_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x8000, 0x8001).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/*************************************
diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp
index 5701d05e84e..d1a4faa0f47 100644
--- a/src/mame/drivers/isbc.cpp
+++ b/src/mame/drivers/isbc.cpp
@@ -121,91 +121,100 @@ void isbc_state::machine_reset()
m_megabyte_page = 0;
}
-ADDRESS_MAP_START(isbc_state::rpc86_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xcffff) AM_RAM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::rpc86_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
- AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
- AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
- AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
- AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x00d8, 0x00d9) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x00da, 0x00db) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x00dc, 0x00dd) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x00de, 0x00df) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc8605_io)
- AM_IMPORT_FROM(rpc86_io)
- AM_RANGE(0x0000, 0x002f) AM_DEVICE8("isbc_208", isbc_208_device, map, 0xffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc8630_io)
- AM_IMPORT_FROM(rpc86_io)
- AM_RANGE(0x00c0, 0x00c7) AM_WRITE8(edge_intr_clear_w, 0xff00)
- AM_RANGE(0x00c8, 0x00df) AM_WRITE8(status_register_w, 0xff00)
- AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc86_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xfbfff) AM_RAM
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x00d8, 0x00d9) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x00da, 0x00db) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x00dc, 0x00dd) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x00de, 0x00df) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc286_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
- AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0xff00)
- AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
- AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0xff00)
- AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
- AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0xff00)
- AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
- AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0xff00)
- AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_1", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x00c8, 0x00cf) AM_WRITE8(upperen_w, 0xff00)
- AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
- AM_RANGE(0x00d8, 0x00df) AM_DEVREADWRITE8("uart8274", i8274_new_device, cd_ba_r, cd_ba_w, 0x00ff)
- AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc286_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xdffff) AM_RAM
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("user1",0)
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc_state::isbc2861_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0xdffff) AM_RAM
- AM_RANGE(0xe0000, 0xfffff) AM_READWRITE(bioslo_r, bioslo_w) AM_SHARE("biosram")
+void isbc_state::rpc86_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xcffff).ram();
+ map(0xf8000, 0xfffff).rom().region("user1", 0);
+}
+
+void isbc_state::rpc86_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0080, 0x008f).rw("sbx1", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff);
+ map(0x0090, 0x009f).rw("sbx1", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff);
+ map(0x00a0, 0x00af).rw("sbx2", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff);
+ map(0x00b0, 0x00bf).rw("sbx2", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff);
+ map(0x00c0, 0x00c3).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c4, 0x00c7).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c8, 0x00cf).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x00d0, 0x00d7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x00d8, 0x00d8).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x00da, 0x00da).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x00dc, 0x00dc).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x00de, 0x00de).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
+
+void isbc_state::isbc8605_io(address_map &map)
+{
+ rpc86_io(map);
+ map(0x0000, 0x002f).m("isbc_208", FUNC(isbc_208_device::map));
+}
+
+void isbc_state::isbc8630_io(address_map &map)
+{
+ rpc86_io(map);
+ map(0x00c0, 0x00c7).w(this, FUNC(isbc_state::edge_intr_clear_w)).umask16(0xff00);
+ map(0x00c8, 0x00df).w(this, FUNC(isbc_state::status_register_w)).umask16(0xff00);
+ map(0x0100, 0x0100).w("isbc_215g", FUNC(isbc_215g_device::write));
+}
+
+void isbc_state::isbc86_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xfbfff).ram();
+ map(0xfc000, 0xfffff).rom().region("user1", 0);
+}
+
+void isbc_state::isbc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00c0, 0x00c3).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c4, 0x00c7).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c8, 0x00cf).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x00d0, 0x00d7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x00d8, 0x00d8).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x00da, 0x00da).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x00dc, 0x00dc).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x00de, 0x00de).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
+
+void isbc_state::isbc286_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0080, 0x008f).rw("sbx1", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff);
+ map(0x0080, 0x008f).rw("sbx1", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0xff00);
+ map(0x0090, 0x009f).rw("sbx1", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff);
+ map(0x0090, 0x009f).rw("sbx1", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0xff00);
+ map(0x00a0, 0x00af).rw("sbx2", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff);
+ map(0x00a0, 0x00af).rw("sbx2", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0xff00);
+ map(0x00b0, 0x00bf).rw("sbx2", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff);
+ map(0x00b0, 0x00bf).rw("sbx2", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0xff00);
+ map(0x00c0, 0x00c3).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c4, 0x00c7).rw(m_pic_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x00c8, 0x00cf).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x00c8, 0x00cf).w(this, FUNC(isbc_state::upperen_w)).umask16(0xff00);
+ map(0x00d0, 0x00d7).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
+ map(0x00d8, 0x00df).rw(m_uart8274, FUNC(i8274_new_device::cd_ba_r), FUNC(i8274_new_device::cd_ba_w)).umask16(0x00ff);
+ map(0x0100, 0x0100).w("isbc_215g", FUNC(isbc_215g_device::write));
+}
+
+void isbc_state::isbc286_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xdffff).ram();
+ map(0xe0000, 0xfffff).rom().region("user1", 0);
+ map(0xfe0000, 0xffffff).rom().region("user1", 0);
+}
+
+void isbc_state::isbc2861_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xdffff).ram();
+ map(0xe0000, 0xfffff).rw(this, FUNC(isbc_state::bioslo_r), FUNC(isbc_state::bioslo_w)).share("biosram");
// AM_RANGE(0x100000, 0x1fffff) AM_RAM // FIXME: XENIX doesn't like this, IRMX is okay with it
- AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
+ map(0xff0000, 0xffffff).rom().region("user1", 0);
+}
/* Input ports */
static INPUT_PORTS_START( isbc )
diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp
index 42359545d11..6391f15f898 100644
--- a/src/mame/drivers/isbc8010.cpp
+++ b/src/mame/drivers/isbc8010.cpp
@@ -77,34 +77,38 @@ private:
uint8_t m_usart_clock_state;
};
-ADDRESS_MAP_START(isbc8010_state::isbc8010_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x3c00, 0x3fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc8010_state::isbc8010a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3c00, 0x3fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc8010_state::isbc8010b_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3bff) AM_ROM
- AM_RANGE(0x3c00, 0x3fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc8010_state::isbc8010_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE(I8255A_1_TAG, i8255_device, read, write)
- AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE(I8255A_2_TAG, i8255_device, read, write)
- AM_RANGE(0xec, 0xec) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0xed, 0xed) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, status_r, control_w)
+void isbc8010_state::isbc8010_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x3c00, 0x3fff).ram();
+}
+
+void isbc8010_state::isbc8010a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x3c00, 0x3fff).ram();
+}
+
+void isbc8010_state::isbc8010b_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3bff).rom();
+ map(0x3c00, 0x3fff).ram();
+}
+
+void isbc8010_state::isbc8010_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xe4, 0xe7).rw(m_ppi_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe8, 0xeb).rw(m_ppi_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xec, 0xec).mirror(0x02).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xed, 0xed).mirror(0x02).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
//AM_RANGE(0xf0, 0xf7) MCS0 - iSBX Multimodule
//AM_RANGE(0xf8, 0xff) MCS1 - iSBX Multimodule
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( isbc8010 )
PORT_START(I8251A_BAUD_TAG)
diff --git a/src/mame/drivers/isbc8030.cpp b/src/mame/drivers/isbc8030.cpp
index 8b67e43ad7d..7e8707aab2e 100644
--- a/src/mame/drivers/isbc8030.cpp
+++ b/src/mame/drivers/isbc8030.cpp
@@ -69,21 +69,23 @@ private:
required_device<rs232_port_device> m_rs232;
};
-ADDRESS_MAP_START(isbc8030_state::isbc8030_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(isbc8030_state::isbc8030_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xd8, 0xd9) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write)
- AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
- AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0xec, 0xec) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0xed, 0xed) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void isbc8030_state::isbc8030_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0xffff).ram();
+}
+
+void isbc8030_state::isbc8030_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xd8, 0xd9).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xdc, 0xdf).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xe8, 0xeb).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xec, 0xec).mirror(0x02).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xed, 0xed).mirror(0x02).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
static INPUT_PORTS_START( isbc8030 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/iskr103x.cpp b/src/mame/drivers/iskr103x.cpp
index 7f42fed0b94..c3e97c944c0 100644
--- a/src/mame/drivers/iskr103x.cpp
+++ b/src/mame/drivers/iskr103x.cpp
@@ -42,16 +42,18 @@ public:
void iskr1031_map(address_map &map);
};
-ADDRESS_MAP_START(iskr103x_state::iskr1031_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void iskr103x_state::iskr1031_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(iskr103x_state::iskr1031_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
-ADDRESS_MAP_END
+void iskr103x_state::iskr1031_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+}
static DEVICE_INPUT_DEFAULTS_START(iskr1030m)
diff --git a/src/mame/drivers/istellar.cpp b/src/mame/drivers/istellar.cpp
index 2afb8cc846a..f985f1e77d3 100644
--- a/src/mame/drivers/istellar.cpp
+++ b/src/mame/drivers/istellar.cpp
@@ -180,50 +180,56 @@ WRITE8_MEMBER(istellar_state::z80_2_ldp_write)
/* PROGRAM MAPS */
-ADDRESS_MAP_START(istellar_state::z80_0_mem)
- AM_RANGE(0x0000,0x9fff) AM_ROM
- AM_RANGE(0xa000,0xa7ff) AM_RAM
- AM_RANGE(0xa800,0xabff) AM_RAM AM_SHARE("tile_ram")
- AM_RANGE(0xac00,0xafff) AM_RAM AM_SHARE("tile_ctrl_ram")
- AM_RANGE(0xb000,0xb3ff) AM_RAM AM_SHARE("sprite_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(istellar_state::z80_1_mem)
- AM_RANGE(0x0000,0x1fff) AM_ROM
- AM_RANGE(0x4000,0x47ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(istellar_state::z80_2_mem)
- AM_RANGE(0x0000,0x17ff) AM_ROM
- AM_RANGE(0x1800,0x1fff) AM_RAM
- AM_RANGE(0xc000,0xc000) AM_READ(z80_2_unknown_read) /* Seems to be thrown away every time it's read - maybe interrupt related? */
-ADDRESS_MAP_END
+void istellar_state::z80_0_mem(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).ram();
+ map(0xa800, 0xabff).ram().share("tile_ram");
+ map(0xac00, 0xafff).ram().share("tile_ctrl_ram");
+ map(0xb000, 0xb3ff).ram().share("sprite_ram");
+}
+
+void istellar_state::z80_1_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram();
+}
+
+void istellar_state::z80_2_mem(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x1800, 0x1fff).ram();
+ map(0xc000, 0xc000).r(this, FUNC(istellar_state::z80_2_unknown_read)); /* Seems to be thrown away every time it's read - maybe interrupt related? */
+}
/* IO MAPS */
-ADDRESS_MAP_START(istellar_state::z80_0_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x02,0x02) AM_READ_PORT("DSW1")
- AM_RANGE(0x03,0x03) AM_READ_PORT("DSW2")
+void istellar_state::z80_0_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x02, 0x02).portr("DSW1");
+ map(0x03, 0x03).portr("DSW2");
/*AM_RANGE(0x04,0x04) AM_WRITE(volatile_palette_write)*/
- AM_RANGE(0x05,0x05) AM_READWRITE(z80_0_latch1_read,z80_0_latch2_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(istellar_state::z80_1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_NOP /*AM_READWRITE(z80_1_slatch_read,z80_1_slatch_write)*/
- AM_RANGE(0x01,0x01) AM_NOP /*AM_READWRITE(z80_1_nmienable,z80_1_soundwrite_front)*/
- AM_RANGE(0x02,0x02) AM_NOP /*AM_WRITE(z80_1_soundwrite_rear)*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(istellar_state::z80_2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_READWRITE(z80_2_ldp_read,z80_2_ldp_write)
- AM_RANGE(0x01,0x01) AM_READWRITE(z80_2_latch2_read,z80_2_latch1_write)
- AM_RANGE(0x02,0x02) AM_READ(z80_2_nmienable)
+ map(0x05, 0x05).rw(this, FUNC(istellar_state::z80_0_latch1_read), FUNC(istellar_state::z80_0_latch2_write));
+}
+
+void istellar_state::z80_1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).noprw(); /*AM_READWRITE(z80_1_slatch_read,z80_1_slatch_write)*/
+ map(0x01, 0x01).noprw(); /*AM_READWRITE(z80_1_nmienable,z80_1_soundwrite_front)*/
+ map(0x02, 0x02).noprw(); /*AM_WRITE(z80_1_soundwrite_rear)*/
+}
+
+void istellar_state::z80_2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(istellar_state::z80_2_ldp_read), FUNC(istellar_state::z80_2_ldp_write));
+ map(0x01, 0x01).rw(this, FUNC(istellar_state::z80_2_latch2_read), FUNC(istellar_state::z80_2_latch1_write));
+ map(0x02, 0x02).r(this, FUNC(istellar_state::z80_2_nmienable));
/* AM_RANGE(0x03,0x03) AM_WRITE(z80_2_ldtrans_write)*/
-ADDRESS_MAP_END
+}
/* PORTS */
diff --git a/src/mame/drivers/istrebiteli.cpp b/src/mame/drivers/istrebiteli.cpp
index 607a0fe1ab9..d4b21763468 100644
--- a/src/mame/drivers/istrebiteli.cpp
+++ b/src/mame/drivers/istrebiteli.cpp
@@ -300,19 +300,21 @@ WRITE8_MEMBER(istrebiteli_state::spr_xy_w)
m_spr_xy[offset ^ 7] = data;
}
-ADDRESS_MAP_START(istrebiteli_state::mem_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(istrebiteli_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xb0, 0xbf) AM_WRITE(tileram_w)
- AM_RANGE(0xc0, 0xc3) AM_READWRITE(ppi0_r, ppi0_w)
- AM_RANGE(0xc4, 0xc7) AM_READWRITE(ppi1_r, ppi1_w)
- AM_RANGE(0xc8, 0xcf) AM_WRITE(spr_xy_w)
-ADDRESS_MAP_END
+void istrebiteli_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram();
+}
+
+void istrebiteli_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xb0, 0xbf).w(this, FUNC(istrebiteli_state::tileram_w));
+ map(0xc0, 0xc3).rw(this, FUNC(istrebiteli_state::ppi0_r), FUNC(istrebiteli_state::ppi0_w));
+ map(0xc4, 0xc7).rw(this, FUNC(istrebiteli_state::ppi1_r), FUNC(istrebiteli_state::ppi1_w));
+ map(0xc8, 0xcf).w(this, FUNC(istrebiteli_state::spr_xy_w));
+}
CUSTOM_INPUT_MEMBER(istrebiteli_state::collision_r)
{
diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp
index 1b41a8b5eec..27e0c9319f2 100644
--- a/src/mame/drivers/itech32.cpp
+++ b/src/mame/drivers/itech32.cpp
@@ -894,41 +894,43 @@ void itech32_state::nvram_init(nvram_device &nvram, void *base, size_t length)
*************************************/
/*------ Time Killers memory layout ------*/
-ADDRESS_MAP_START(itech32_state::timekill_map)
- AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x040000, 0x040001) AM_READ_PORT("P1")
- AM_RANGE(0x048000, 0x048001) AM_READ_PORT("P2")
- AM_RANGE(0x050000, 0x050001) AM_READ_PORT("SYSTEM") AM_WRITE(timekill_intensity_w)
- AM_RANGE(0x058000, 0x058001) AM_READ_PORT("DIPS") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x060000, 0x060001) AM_WRITE(timekill_colora_w)
- AM_RANGE(0x068000, 0x068001) AM_WRITE(timekill_colorbc_w)
- AM_RANGE(0x070000, 0x070001) AM_WRITENOP /* noisy */
- AM_RANGE(0x078000, 0x078001) AM_WRITE(sound_data_w)
- AM_RANGE(0x080000, 0x08007f) AM_READWRITE(itech32_video_r, itech32_video_w) AM_SHARE("video")
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(int1_ack_w)
- AM_RANGE(0x0c0000, 0x0c7fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom")
-ADDRESS_MAP_END
+void itech32_state::timekill_map(address_map &map)
+{
+ map(0x000000, 0x003fff).ram().share("nvram");
+ map(0x040000, 0x040001).portr("P1");
+ map(0x048000, 0x048001).portr("P2");
+ map(0x050000, 0x050001).portr("SYSTEM").w(this, FUNC(itech32_state::timekill_intensity_w));
+ map(0x058000, 0x058001).portr("DIPS").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x060000, 0x060001).w(this, FUNC(itech32_state::timekill_colora_w));
+ map(0x068000, 0x068001).w(this, FUNC(itech32_state::timekill_colorbc_w));
+ map(0x070000, 0x070001).nopw(); /* noisy */
+ map(0x078000, 0x078001).w(this, FUNC(itech32_state::sound_data_w));
+ map(0x080000, 0x08007f).rw(this, FUNC(itech32_state::itech32_video_r), FUNC(itech32_state::itech32_video_w)).share("video");
+ map(0x0a0000, 0x0a0001).w(this, FUNC(itech32_state::int1_ack_w));
+ map(0x0c0000, 0x0c7fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x100000, 0x17ffff).rom().region("user1", 0).share("main_rom");
+}
/*------ BloodStorm and later games memory layout ------*/
-ADDRESS_MAP_START(itech32_state::bloodstm_map)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1") AM_WRITE(int1_ack_w)
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P2")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P3")
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("DIPS")
- AM_RANGE(0x300000, 0x300001) AM_WRITE(bloodstm_color1_w)
- AM_RANGE(0x380000, 0x380001) AM_WRITE(bloodstm_color2_w)
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x480000, 0x480001) AM_WRITE(sound_data_w)
- AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(bloodstm_video_r, bloodstm_video_w) AM_SHARE("video")
- AM_RANGE(0x580000, 0x59ffff) AM_RAM_WRITE(bloodstm_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x700001) AM_WRITE(bloodstm_plane_w)
- AM_RANGE(0x780000, 0x780001) AM_READ_PORT("EXTRA")
- AM_RANGE(0x800000, 0x87ffff) AM_MIRROR(0x780000) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom")
-ADDRESS_MAP_END
+void itech32_state::bloodstm_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).ram().share("nvram");
+ map(0x080000, 0x080001).portr("P1").w(this, FUNC(itech32_state::int1_ack_w));
+ map(0x100000, 0x100001).portr("P2");
+ map(0x180000, 0x180001).portr("P3");
+ map(0x200000, 0x200001).portr("P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x280000, 0x280001).portr("DIPS");
+ map(0x300000, 0x300001).w(this, FUNC(itech32_state::bloodstm_color1_w));
+ map(0x380000, 0x380001).w(this, FUNC(itech32_state::bloodstm_color2_w));
+ map(0x400000, 0x400001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x480000, 0x480001).w(this, FUNC(itech32_state::sound_data_w));
+ map(0x500000, 0x5000ff).rw(this, FUNC(itech32_state::bloodstm_video_r), FUNC(itech32_state::bloodstm_video_w)).share("video");
+ map(0x580000, 0x59ffff).ram().w(this, FUNC(itech32_state::bloodstm_paletteram_w)).share("palette");
+ map(0x700000, 0x700001).w(this, FUNC(itech32_state::bloodstm_plane_w));
+ map(0x780000, 0x780001).portr("EXTRA");
+ map(0x800000, 0x87ffff).mirror(0x780000).rom().region("user1", 0).share("main_rom");
+}
/*------ Driver's Edge memory layouts ------*/
@@ -972,68 +974,72 @@ WRITE32_MEMBER(itech32_state::test2_w)
}
#endif
-ADDRESS_MAP_START(itech32_state::drivedge_map)
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x40000) AM_RAM AM_SHARE("nvram")
+void itech32_state::drivedge_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).mirror(0x40000).ram().share("nvram");
#if LOG_DRIVEDGE_UNINIT_RAM
-AM_RANGE(0x000100, 0x0003ff) AM_MIRROR(0x40000) AM_READWRITE(test1_r, test1_w)
-AM_RANGE(0x000c00, 0x007fff) AM_MIRROR(0x40000) AM_READWRITE(test2_r, test2_w)
+map(0x000100, 0x0003ff).mirror(0x40000).rw(this, FUNC(itech32_state::test1_r), FUNC(itech32_state::test1_w));
+map(0x000c00, 0x007fff).mirror(0x40000).rw(this, FUNC(itech32_state::test2_r), FUNC(itech32_state::test2_w));
#endif
- AM_RANGE(0x080000, 0x080003) AM_READ_PORT("80000")
- AM_RANGE(0x082000, 0x082003) AM_READ_PORT("82000")
- AM_RANGE(0x084000, 0x084003) AM_READWRITE(sound_data32_r, sound_data32_w)
+ map(0x080000, 0x080003).portr("80000");
+ map(0x082000, 0x082003).portr("82000");
+ map(0x084000, 0x084003).rw(this, FUNC(itech32_state::sound_data32_r), FUNC(itech32_state::sound_data32_w));
// AM_RANGE(0x086000, 0x08623f) AM_RAM -- networking -- first 0x40 bytes = our data, next 0x40*8 bytes = their data, r/w on IRQ2
- AM_RANGE(0x088000, 0x088003) AM_READ(drivedge_steering_r)
- AM_RANGE(0x08a000, 0x08a003) AM_READ(drivedge_gas_r) AM_WRITENOP
- AM_RANGE(0x08c000, 0x08c003) AM_READ_PORT("8c000")
- AM_RANGE(0x08e000, 0x08e003) AM_READ_PORT("8e000") AM_WRITENOP
- AM_RANGE(0x100000, 0x10000f) AM_WRITE(drivedge_zbuf_control_w) AM_SHARE("drivedge_zctl")
- AM_RANGE(0x180000, 0x180003) AM_WRITE(drivedge_color0_w)
- AM_RANGE(0x1a0000, 0x1bffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x1c0000, 0x1c0003) AM_WRITENOP
- AM_RANGE(0x1e0000, 0x1e0113) AM_READWRITE(itech020_video_r, itech020_video_w) AM_SHARE("video")
- AM_RANGE(0x1e4000, 0x1e4003) AM_WRITE(tms_reset_assert_w)
- AM_RANGE(0x1ec000, 0x1ec003) AM_WRITE(tms_reset_clear_w)
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("200000")
- AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(tms1_68k_ram_w) AM_SHARE("tms1_ram")
- AM_RANGE(0x300000, 0x300fff) AM_RAM_WRITE(tms2_68k_ram_w) AM_SHARE("tms2_ram")
- AM_RANGE(0x380000, 0x380003) AM_WRITENOP // AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x600000, 0x607fff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(itech32_state::drivedge_tms1_map)
- AM_RANGE(0x000000, 0x001fff) AM_RAM AM_SHARE("tms1_boot")
- AM_RANGE(0x008000, 0x0083ff) AM_MIRROR(0x400) AM_RAM_WRITE(tms1_trigger_w) AM_SHARE("tms1_ram")
- AM_RANGE(0x080000, 0x0bffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(itech32_state::drivedge_tms2_map)
- AM_RANGE(0x000000, 0x0003ff) AM_MIRROR(0x8400) AM_RAM_WRITE(tms2_trigger_w) AM_SHARE("tms2_ram")
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x088000, 0x088003).r(this, FUNC(itech32_state::drivedge_steering_r));
+ map(0x08a000, 0x08a003).r(this, FUNC(itech32_state::drivedge_gas_r)).nopw();
+ map(0x08c000, 0x08c003).portr("8c000");
+ map(0x08e000, 0x08e003).portr("8e000").nopw();
+ map(0x100000, 0x10000f).w(this, FUNC(itech32_state::drivedge_zbuf_control_w)).share("drivedge_zctl");
+ map(0x180000, 0x180003).w(this, FUNC(itech32_state::drivedge_color0_w));
+ map(0x1a0000, 0x1bffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x1c0000, 0x1c0003).nopw();
+ map(0x1e0000, 0x1e0113).rw(this, FUNC(itech32_state::itech020_video_r), FUNC(itech32_state::itech020_video_w)).share("video");
+ map(0x1e4000, 0x1e4003).w(this, FUNC(itech32_state::tms_reset_assert_w));
+ map(0x1ec000, 0x1ec003).w(this, FUNC(itech32_state::tms_reset_clear_w));
+ map(0x200000, 0x200003).portr("200000");
+ map(0x280000, 0x280fff).ram().w(this, FUNC(itech32_state::tms1_68k_ram_w)).share("tms1_ram");
+ map(0x300000, 0x300fff).ram().w(this, FUNC(itech32_state::tms2_68k_ram_w)).share("tms2_ram");
+ map(0x380000, 0x380003).nopw(); // AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+ map(0x600000, 0x607fff).rom().region("user1", 0).share("main_rom");
+}
+
+void itech32_state::drivedge_tms1_map(address_map &map)
+{
+ map(0x000000, 0x001fff).ram().share("tms1_boot");
+ map(0x008000, 0x0083ff).mirror(0x400).ram().w(this, FUNC(itech32_state::tms1_trigger_w)).share("tms1_ram");
+ map(0x080000, 0x0bffff).ram();
+}
+
+void itech32_state::drivedge_tms2_map(address_map &map)
+{
+ map(0x000000, 0x0003ff).mirror(0x8400).ram().w(this, FUNC(itech32_state::tms2_trigger_w)).share("tms2_ram");
+ map(0x080000, 0x08ffff).ram();
+}
/*------ 68EC020-based memory layout ------*/
-ADDRESS_MAP_START(itech32_state::itech020_map)
- AM_RANGE(0x000000, 0x007fff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x080000, 0x080003) AM_READ_PORT("P1") AM_WRITE(int1_ack32_w)
- AM_RANGE(0x100000, 0x100003) AM_READ_PORT("P2")
- AM_RANGE(0x180000, 0x180003) AM_READ_PORT("P3")
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("P4")
- AM_RANGE(0x280000, 0x280003) AM_READ_PORT("DIPS")
- AM_RANGE(0x300000, 0x300003) AM_WRITE(itech020_color1_w)
- AM_RANGE(0x380000, 0x380003) AM_WRITE(itech020_color2_w)
- AM_RANGE(0x400000, 0x400003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w)
- AM_RANGE(0x480000, 0x480003) AM_WRITE(sound_data32_w)
- AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(itech020_video_r, itech020_video_w) AM_SHARE("video")
- AM_RANGE(0x578000, 0x57ffff) AM_READNOP /* touched by protection */
- AM_RANGE(0x580000, 0x59ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x603fff) AM_RAM AM_SHARE("nvram")
-/* ? */ AM_RANGE(0x61ff00, 0x61ffff) AM_WRITENOP /* Unknown Writes */
- AM_RANGE(0x680000, 0x680003) AM_READ(itech020_prot_result_r) AM_WRITENOP
-/* ! */ AM_RANGE(0x680800, 0x68083f) AM_READONLY AM_WRITENOP /* Serial DUART Channel A/B & Top LED sign - To Do! */
- AM_RANGE(0x700000, 0x700003) AM_WRITE(itech020_plane_w)
- AM_RANGE(0x800000, 0xbfffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom")
-ADDRESS_MAP_END
+void itech32_state::itech020_map(address_map &map)
+{
+ map(0x000000, 0x007fff).ram().share("main_ram");
+ map(0x080000, 0x080003).portr("P1").w(this, FUNC(itech32_state::int1_ack32_w));
+ map(0x100000, 0x100003).portr("P2");
+ map(0x180000, 0x180003).portr("P3");
+ map(0x200000, 0x200003).portr("P4");
+ map(0x280000, 0x280003).portr("DIPS");
+ map(0x300000, 0x300003).w(this, FUNC(itech32_state::itech020_color1_w));
+ map(0x380000, 0x380003).w(this, FUNC(itech32_state::itech020_color2_w));
+ map(0x400000, 0x400003).w("watchdog", FUNC(watchdog_timer_device::reset32_w));
+ map(0x480000, 0x480003).w(this, FUNC(itech32_state::sound_data32_w));
+ map(0x500000, 0x5000ff).rw(this, FUNC(itech32_state::itech020_video_r), FUNC(itech32_state::itech020_video_w)).share("video");
+ map(0x578000, 0x57ffff).nopr(); /* touched by protection */
+ map(0x580000, 0x59ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x600000, 0x603fff).ram().share("nvram");
+/* ? */ map(0x61ff00, 0x61ffff).nopw(); /* Unknown Writes */
+ map(0x680000, 0x680003).r(this, FUNC(itech32_state::itech020_prot_result_r)).nopw();
+/* ! */ map(0x680800, 0x68083f).readonly().nopw(); /* Serial DUART Channel A/B & Top LED sign - To Do! */
+ map(0x700000, 0x700003).w(this, FUNC(itech32_state::itech020_plane_w));
+ map(0x800000, 0xbfffff).rom().region("user1", 0).share("main_rom");
+}
@@ -1044,30 +1050,32 @@ ADDRESS_MAP_END
*************************************/
/*------ Rev 1 sound board memory layout ------*/
-ADDRESS_MAP_START(itech32_state::sound_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_return_w)
- AM_RANGE(0x0400, 0x0400) AM_READ(sound_data_r)
- AM_RANGE(0x0800, 0x083f) AM_MIRROR(0x80) AM_DEVREADWRITE("ensoniq", es5506_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_WRITE(sound_bank_w)
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* noisy */
- AM_RANGE(0x1400, 0x140f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void itech32_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(itech32_state::sound_return_w));
+ map(0x0400, 0x0400).r(this, FUNC(itech32_state::sound_data_r));
+ map(0x0800, 0x083f).mirror(0x80).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write));
+ map(0x0c00, 0x0c00).w(this, FUNC(itech32_state::sound_bank_w));
+ map(0x1000, 0x1000).nopw(); /* noisy */
+ map(0x1400, 0x140f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x2000, 0x3fff).ram();
+ map(0x4000, 0x7fff).bankr("soundbank");
+ map(0x8000, 0xffff).rom();
+}
/*------ Rev 2 sound board memory layout ------*/
-ADDRESS_MAP_START(itech32_state::sound_020_map)
- AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x400) AM_READ(sound_data_r)
- AM_RANGE(0x0800, 0x083f) AM_MIRROR(0x80) AM_DEVREADWRITE("ensoniq", es5506_device, read, write)
- AM_RANGE(0x0c00, 0x0c00) AM_WRITE(sound_bank_w)
- AM_RANGE(0x1400, 0x1400) AM_WRITE(firq_clear_w)
- AM_RANGE(0x1800, 0x1800) AM_READ(sound_data_buffer_r) AM_WRITENOP
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void itech32_state::sound_020_map(address_map &map)
+{
+ map(0x0000, 0x0000).mirror(0x400).r(this, FUNC(itech32_state::sound_data_r));
+ map(0x0800, 0x083f).mirror(0x80).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write));
+ map(0x0c00, 0x0c00).w(this, FUNC(itech32_state::sound_bank_w));
+ map(0x1400, 0x1400).w(this, FUNC(itech32_state::firq_clear_w));
+ map(0x1800, 0x1800).r(this, FUNC(itech32_state::sound_data_buffer_r)).nopw();
+ map(0x2000, 0x3fff).ram();
+ map(0x4000, 0x7fff).bankr("soundbank");
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp
index b5cb20b991b..65fc7571968 100644
--- a/src/mame/drivers/itech8.cpp
+++ b/src/mame/drivers/itech8.cpp
@@ -857,67 +857,71 @@ WRITE8_MEMBER(itech8_state::ninclown_palette_w)
*************************************/
/*------ common layout with TMS34061 at 0000 ------*/
-ADDRESS_MAP_START(itech8_state::tmslo_map)
- AM_RANGE(0x0000, 0x0fff) AM_READWRITE(tms34061_r, tms34061_w)
- AM_RANGE(0x1100, 0x1100) AM_WRITENOP
- AM_RANGE(0x1120, 0x1120) AM_WRITE(sound_data_w)
- AM_RANGE(0x1140, 0x1140) AM_READ_PORT("40") AM_WRITE(grom_bank_w)
- AM_RANGE(0x1160, 0x1160) AM_READ_PORT("60") AM_WRITE(page_w)
- AM_RANGE(0x1180, 0x1180) AM_READ_PORT("80") AM_DEVWRITE("tms34061", tms34061_device, latch_w)
- AM_RANGE(0x11a0, 0x11a0) AM_WRITE(nmi_ack_w)
- AM_RANGE(0x11c0, 0x11df) AM_READ(blitter_r) AM_WRITE(blitter_bank_w)
- AM_RANGE(0x11e0, 0x11ff) AM_WRITE(palette_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void itech8_state::tmslo_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
+ map(0x1100, 0x1100).nopw();
+ map(0x1120, 0x1120).w(this, FUNC(itech8_state::sound_data_w));
+ map(0x1140, 0x1140).portr("40").w(this, FUNC(itech8_state::grom_bank_w));
+ map(0x1160, 0x1160).portr("60").w(this, FUNC(itech8_state::page_w));
+ map(0x1180, 0x1180).portr("80").w(m_tms34061, FUNC(tms34061_device::latch_w));
+ map(0x11a0, 0x11a0).w(this, FUNC(itech8_state::nmi_ack_w));
+ map(0x11c0, 0x11df).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w));
+ map(0x11e0, 0x11ff).w(this, FUNC(itech8_state::palette_w));
+ map(0x2000, 0x3fff).ram().share("nvram");
+ map(0x4000, 0xffff).bankr("bank1");
+}
/*------ common layout with TMS34061 at 1000 ------*/
-ADDRESS_MAP_START(itech8_state::tmshi_map)
- AM_RANGE(0x1000, 0x1fff) AM_READWRITE(tms34061_r, tms34061_w)
- AM_RANGE(0x0100, 0x0100) AM_WRITENOP
- AM_RANGE(0x0120, 0x0120) AM_WRITE(sound_data_w)
- AM_RANGE(0x0140, 0x0140) AM_READ_PORT("40") AM_WRITE(grom_bank_w)
- AM_RANGE(0x0160, 0x0160) AM_READ_PORT("60") AM_WRITE(page_w)
- AM_RANGE(0x0180, 0x0180) AM_READ_PORT("80") AM_DEVWRITE("tms34061", tms34061_device, latch_w)
- AM_RANGE(0x01a0, 0x01a0) AM_WRITE(nmi_ack_w)
- AM_RANGE(0x01c0, 0x01df) AM_READ(blitter_r) AM_WRITE(blitter_bank_w)
- AM_RANGE(0x01e0, 0x01ff) AM_WRITE(palette_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void itech8_state::tmshi_map(address_map &map)
+{
+ map(0x1000, 0x1fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
+ map(0x0100, 0x0100).nopw();
+ map(0x0120, 0x0120).w(this, FUNC(itech8_state::sound_data_w));
+ map(0x0140, 0x0140).portr("40").w(this, FUNC(itech8_state::grom_bank_w));
+ map(0x0160, 0x0160).portr("60").w(this, FUNC(itech8_state::page_w));
+ map(0x0180, 0x0180).portr("80").w(m_tms34061, FUNC(tms34061_device::latch_w));
+ map(0x01a0, 0x01a0).w(this, FUNC(itech8_state::nmi_ack_w));
+ map(0x01c0, 0x01df).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w));
+ map(0x01e0, 0x01ff).w(this, FUNC(itech8_state::palette_w));
+ map(0x2000, 0x3fff).ram().share("nvram");
+ map(0x4000, 0xffff).bankr("bank1");
+}
/*------ Golden Tee Golf II 1992 layout ------*/
-ADDRESS_MAP_START(itech8_state::gtg2_map)
- AM_RANGE(0x0100, 0x0100) AM_READ_PORT("40") AM_WRITE(nmi_ack_w)
- AM_RANGE(0x0120, 0x0120) AM_READ_PORT("60") AM_WRITE(page_w)
- AM_RANGE(0x0140, 0x015f) AM_WRITE(palette_w)
- AM_RANGE(0x0140, 0x0140) AM_READ_PORT("80")
- AM_RANGE(0x0160, 0x0160) AM_WRITE(grom_bank_w)
- AM_RANGE(0x0180, 0x019f) AM_READ(blitter_r) AM_WRITE(blitter_bank_w)
- AM_RANGE(0x01c0, 0x01c0) AM_WRITE(gtg2_sound_data_w)
- AM_RANGE(0x01e0, 0x01e0) AM_DEVWRITE("tms34061", tms34061_device, latch_w)
- AM_RANGE(0x1000, 0x1fff) AM_READWRITE(tms34061_r, tms34061_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void itech8_state::gtg2_map(address_map &map)
+{
+ map(0x0100, 0x0100).portr("40").w(this, FUNC(itech8_state::nmi_ack_w));
+ map(0x0120, 0x0120).portr("60").w(this, FUNC(itech8_state::page_w));
+ map(0x0140, 0x015f).w(this, FUNC(itech8_state::palette_w));
+ map(0x0140, 0x0140).portr("80");
+ map(0x0160, 0x0160).w(this, FUNC(itech8_state::grom_bank_w));
+ map(0x0180, 0x019f).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w));
+ map(0x01c0, 0x01c0).w(this, FUNC(itech8_state::gtg2_sound_data_w));
+ map(0x01e0, 0x01e0).w(m_tms34061, FUNC(tms34061_device::latch_w));
+ map(0x1000, 0x1fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
+ map(0x2000, 0x3fff).ram().share("nvram");
+ map(0x4000, 0xffff).bankr("bank1");
+}
/*------ Ninja Clowns layout ------*/
-ADDRESS_MAP_START(itech8_state::ninclown_map)
- AM_RANGE(0x000000, 0x00007f) AM_RAM AM_REGION("maincpu", 0)
- AM_RANGE(0x000080, 0x003fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x004000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x07ffff) AM_READ(rom_constant_r)
- AM_RANGE(0x100080, 0x100081) AM_WRITE8(sound_data_w, 0xff00)
- AM_RANGE(0x100100, 0x100101) AM_READ_PORT("40") AM_WRITE(grom_bank16_w)
- AM_RANGE(0x100180, 0x100181) AM_READ_PORT("60") AM_WRITE(display_page16_w)
- AM_RANGE(0x100240, 0x100241) AM_DEVWRITE8("tms34061", tms34061_device, latch_w, 0xff00)
- AM_RANGE(0x100280, 0x100281) AM_READ_PORT("80") AM_WRITENOP
- AM_RANGE(0x100300, 0x10031f) AM_READWRITE8(blitter_r, blitter_w, 0xffff)
- AM_RANGE(0x100380, 0x1003ff) AM_READWRITE8(ninclown_palette_r, ninclown_palette_w, 0xff00)
- AM_RANGE(0x110000, 0x110fff) AM_READWRITE8(tms34061_r, tms34061_w, 0xffff)
-ADDRESS_MAP_END
+void itech8_state::ninclown_map(address_map &map)
+{
+ map(0x000000, 0x00007f).ram().region("maincpu", 0);
+ map(0x000080, 0x003fff).ram().share("nvram");
+ map(0x004000, 0x03ffff).rom();
+ map(0x040000, 0x07ffff).r(this, FUNC(itech8_state::rom_constant_r));
+ map(0x100080, 0x100080).w(this, FUNC(itech8_state::sound_data_w));
+ map(0x100100, 0x100101).portr("40").w(this, FUNC(itech8_state::grom_bank16_w));
+ map(0x100180, 0x100181).portr("60").w(this, FUNC(itech8_state::display_page16_w));
+ map(0x100240, 0x100240).w(m_tms34061, FUNC(tms34061_device::latch_w));
+ map(0x100280, 0x100281).portr("80").nopw();
+ map(0x100300, 0x10031f).rw(this, FUNC(itech8_state::blitter_r), FUNC(itech8_state::blitter_w));
+ map(0x100380, 0x1003ff).rw(this, FUNC(itech8_state::ninclown_palette_r), FUNC(itech8_state::ninclown_palette_w)).umask16(0xff00);
+ map(0x110000, 0x110fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
+}
@@ -928,48 +932,52 @@ ADDRESS_MAP_END
*************************************/
/*------ YM2203-based sound ------*/
-ADDRESS_MAP_START(itech8_state::sound2203_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITENOP
- AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r)
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0002) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void itech8_state::sound2203_map(address_map &map)
+{
+ map(0x0000, 0x0000).nopw();
+ map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r));
+ map(0x2000, 0x2001).mirror(0x0002).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x3000, 0x37ff).ram();
+ map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x8000, 0xffff).rom();
+}
/*------ YM2608B-based sound ------*/
-ADDRESS_MAP_START(itech8_state::sound2608b_map)
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP
- AM_RANGE(0x2000, 0x2000) AM_READ(sound_data_r)
- AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write)
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void itech8_state::sound2608b_map(address_map &map)
+{
+ map(0x1000, 0x1000).nopw();
+ map(0x2000, 0x2000).r(this, FUNC(itech8_state::sound_data_r));
+ map(0x4000, 0x4003).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write));
+ map(0x6000, 0x67ff).ram();
+ map(0x8000, 0xffff).rom();
+}
/*------ YM3812-based sound ------*/
-ADDRESS_MAP_START(itech8_state::sound3812_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITENOP
- AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void itech8_state::sound3812_map(address_map &map)
+{
+ map(0x0000, 0x0000).nopw();
+ map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r));
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x3000, 0x37ff).ram();
+ map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x5000, 0x5003).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xffff).rom();
+}
/*------ external YM3812-based sound board ------*/
-ADDRESS_MAP_START(itech8_state::sound3812_external_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITENOP
- AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x5000, 0x500f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void itech8_state::sound3812_external_map(address_map &map)
+{
+ map(0x0000, 0x0000).nopw();
+ map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r));
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x3000, 0x37ff).ram();
+ map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x5000, 0x500f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x8000, 0xffff).rom();
+}
@@ -979,15 +987,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(itech8_state::slikz80_mem_map)
- AM_RANGE(0x0000, 0x7ff) AM_ROM
-ADDRESS_MAP_END
+void itech8_state::slikz80_mem_map(address_map &map)
+{
+ map(0x0000, 0x7ff).rom();
+}
-ADDRESS_MAP_START(itech8_state::slikz80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(slikz80_port_r, slikz80_port_w)
-ADDRESS_MAP_END
+void itech8_state::slikz80_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(itech8_state::slikz80_port_r), FUNC(itech8_state::slikz80_port_w));
+}
diff --git a/src/mame/drivers/itgambl2.cpp b/src/mame/drivers/itgambl2.cpp
index 5d099431225..c2895d20603 100644
--- a/src/mame/drivers/itgambl2.cpp
+++ b/src/mame/drivers/itgambl2.cpp
@@ -155,9 +155,10 @@ uint32_t itgambl2_state::screen_update_itgambl2(screen_device &screen, bitmap_rg
* Memory map information *
*************************/
-ADDRESS_MAP_START(itgambl2_state::itgambl2_map)
- AM_RANGE(0x000000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void itgambl2_state::itgambl2_map(address_map &map)
+{
+ map(0x000000, 0x3fff).rom();
+}
/*************************
diff --git a/src/mame/drivers/itgambl3.cpp b/src/mame/drivers/itgambl3.cpp
index 19239096550..c219b478a72 100644
--- a/src/mame/drivers/itgambl3.cpp
+++ b/src/mame/drivers/itgambl3.cpp
@@ -141,10 +141,11 @@ uint32_t itgambl3_state::screen_update_itgambl3(screen_device &screen, bitmap_rg
* Memory map information *
*************************/
-ADDRESS_MAP_START(itgambl3_state::itgambl3_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
+void itgambl3_state::itgambl3_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0xffffff).rom();
+}
/*************************
diff --git a/src/mame/drivers/itgamble.cpp b/src/mame/drivers/itgamble.cpp
index 37c4de2bb89..70c84ace1b2 100644
--- a/src/mame/drivers/itgamble.cpp
+++ b/src/mame/drivers/itgamble.cpp
@@ -108,10 +108,11 @@ uint32_t itgamble_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
* Memory map information *
*************************/
-ADDRESS_MAP_START(itgamble_state::itgamble_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
+void itgamble_state::itgamble_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0xffffff).rom();
+}
/*************************
diff --git a/src/mame/drivers/itt3030.cpp b/src/mame/drivers/itt3030.cpp
index 23f732184d6..c5ab800c0ae 100644
--- a/src/mame/drivers/itt3030.cpp
+++ b/src/mame/drivers/itt3030.cpp
@@ -292,27 +292,30 @@ private:
// The upper 16K is always the top 16K of the first bank, F5 can set this to 32K
// Port F6 bits 7-5 select banks 0-7, bit 4 enables bank 8
-ADDRESS_MAP_START(itt3030_state::itt3030_map)
- AM_RANGE(0x0000, 0xbfff) AM_DEVICE("lowerbank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(itt3030_state::lower48_map)
- AM_RANGE(0x60000, 0x607ff) AM_ROM AM_REGION("maincpu", 0) // begin "page 8"
- AM_RANGE(0x60800, 0x60fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x61000, 0x610ff) AM_RAM AM_MIRROR(0x100) // only 256 bytes, but ROM also clears 11xx?
- AM_RANGE(0x63000, 0x63fff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(itt3030_state::itt3030_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("crt5027", crt5027_device, read, write)
- AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("kbdmcu", i8741_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x32, 0x32) AM_WRITE(beep_w)
- AM_RANGE(0x35, 0x35) AM_READ(vsync_r)
- AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w)
- AM_RANGE(0xf6, 0xf6) AM_WRITE(bank_w)
-ADDRESS_MAP_END
+void itt3030_state::itt3030_map(address_map &map)
+{
+ map(0x0000, 0xbfff).m(m_48kbank, FUNC(address_map_bank_device::amap8));
+}
+
+void itt3030_state::lower48_map(address_map &map)
+{
+ map(0x60000, 0x607ff).rom().region("maincpu", 0); // begin "page 8"
+ map(0x60800, 0x60fff).rom().region("maincpu", 0);
+ map(0x61000, 0x610ff).ram().mirror(0x100); // only 256 bytes, but ROM also clears 11xx?
+ map(0x63000, 0x63fff).ram().share("vram");
+}
+
+void itt3030_state::itt3030_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x20, 0x2f).rw(m_crtc, FUNC(crt5027_device::read), FUNC(crt5027_device::write));
+ map(0x30, 0x31).rw(m_kbdmcu, FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w));
+ map(0x32, 0x32).w(this, FUNC(itt3030_state::beep_w));
+ map(0x35, 0x35).r(this, FUNC(itt3030_state::vsync_r));
+ map(0x50, 0x53).rw(this, FUNC(itt3030_state::fdc_r), FUNC(itt3030_state::fdc_w));
+ map(0x54, 0x54).rw(this, FUNC(itt3030_state::fdc_stat_r), FUNC(itt3030_state::fdc_cmd_w));
+ map(0xf6, 0xf6).w(this, FUNC(itt3030_state::bank_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp
index cea51a0a83b..55cf03acf21 100644
--- a/src/mame/drivers/jack.cpp
+++ b/src/mame/drivers/jack.cpp
@@ -177,69 +177,76 @@ WRITE8_MEMBER(jack_state::joinem_control_w)
*
*************************************/
-ADDRESS_MAP_START(jack_state::jack_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0xb000, 0xb07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb400, 0xb400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb500, 0xb500) AM_READ_PORT("DSW1")
- AM_RANGE(0xb501, 0xb501) AM_READ_PORT("DSW2")
- AM_RANGE(0xb502, 0xb502) AM_READ_PORT("IN0")
- AM_RANGE(0xb503, 0xb503) AM_READ_PORT("IN1")
- AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2")
- AM_RANGE(0xb505, 0xb505) AM_READ_PORT("IN3")
- AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w)
- AM_RANGE(0xb600, 0xb61f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::striv_map)
- AM_IMPORT_FROM( jack_map )
- AM_RANGE(0xb000, 0xb0ff) AM_WRITENOP
- AM_RANGE(0xc000, 0xcfff) AM_READ(striv_question_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jack_state::joinem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xb000, 0xb07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb080, 0xb0ff) AM_RAM_WRITE(joinem_scroll_w) AM_SHARE("scrollram")
- AM_RANGE(0xb400, 0xb400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb500, 0xb500) AM_READ_PORT("DSW1")
- AM_RANGE(0xb501, 0xb501) AM_READ_PORT("DSW2")
- AM_RANGE(0xb502, 0xb502) AM_READ_PORT("IN0")
- AM_RANGE(0xb503, 0xb503) AM_READ_PORT("IN1")
- AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2")
- AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w)
- AM_RANGE(0xb700, 0xb700) AM_WRITE(joinem_control_w)
- AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::unclepoo_map)
- AM_IMPORT_FROM( joinem_map )
- AM_RANGE(0x9000, 0x97ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jack_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* R/C filter ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void jack_state::jack_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram();
+ map(0xb000, 0xb07f).ram().share("spriteram");
+ map(0xb400, 0xb400).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb500, 0xb500).portr("DSW1");
+ map(0xb501, 0xb501).portr("DSW2");
+ map(0xb502, 0xb502).portr("IN0");
+ map(0xb503, 0xb503).portr("IN1");
+ map(0xb504, 0xb504).portr("IN2");
+ map(0xb505, 0xb505).portr("IN3");
+ map(0xb506, 0xb507).rw(this, FUNC(jack_state::jack_flipscreen_r), FUNC(jack_state::jack_flipscreen_w));
+ map(0xb600, 0xb61f).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xb800, 0xbbff).ram().w(this, FUNC(jack_state::jack_videoram_w)).share("videoram");
+ map(0xbc00, 0xbfff).ram().w(this, FUNC(jack_state::jack_colorram_w)).share("colorram");
+ map(0xc000, 0xffff).rom();
+}
+
+void jack_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().share("decrypted_opcodes");
+}
+
+void jack_state::striv_map(address_map &map)
+{
+ jack_map(map);
+ map(0xb000, 0xb0ff).nopw();
+ map(0xc000, 0xcfff).r(this, FUNC(jack_state::striv_question_r));
+}
+
+
+void jack_state::joinem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0xb000, 0xb07f).ram().share("spriteram");
+ map(0xb080, 0xb0ff).ram().w(this, FUNC(jack_state::joinem_scroll_w)).share("scrollram");
+ map(0xb400, 0xb400).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb500, 0xb500).portr("DSW1");
+ map(0xb501, 0xb501).portr("DSW2");
+ map(0xb502, 0xb502).portr("IN0");
+ map(0xb503, 0xb503).portr("IN1");
+ map(0xb504, 0xb504).portr("IN2");
+ map(0xb506, 0xb507).rw(this, FUNC(jack_state::jack_flipscreen_r), FUNC(jack_state::jack_flipscreen_w));
+ map(0xb700, 0xb700).w(this, FUNC(jack_state::joinem_control_w));
+ map(0xb800, 0xbbff).ram().w(this, FUNC(jack_state::jack_videoram_w)).share("videoram");
+ map(0xbc00, 0xbfff).ram().w(this, FUNC(jack_state::jack_colorram_w)).share("colorram");
+}
+
+void jack_state::unclepoo_map(address_map &map)
+{
+ joinem_map(map);
+ map(0x9000, 0x97ff).ram();
+}
+
+
+void jack_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6fff).nopw(); /* R/C filter ??? */
+}
+
+void jack_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w));
+}
diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp
index 33f9c4110cf..08582e87129 100644
--- a/src/mame/drivers/jackal.cpp
+++ b/src/mame/drivers/jackal.cpp
@@ -162,32 +162,34 @@ WRITE8_MEMBER(jackal_state::jackal_spriteram_w)
*
*************************************/
-ADDRESS_MAP_START(jackal_state::master_map)
- AM_RANGE(0x0000, 0x0003) AM_RAM AM_SHARE("videoctrl") // scroll + other things
- AM_RANGE(0x0004, 0x0004) AM_WRITE(jackal_flipscreen_w)
- AM_RANGE(0x0010, 0x0010) AM_READ_PORT("DSW1")
- AM_RANGE(0x0011, 0x0011) AM_READ_PORT("IN1")
- AM_RANGE(0x0012, 0x0012) AM_READ_PORT("IN2")
- AM_RANGE(0x0013, 0x0013) AM_READ_PORT("IN0")
- AM_RANGE(0x0014, 0x0015) AM_READ(jackalr_rotary_r)
- AM_RANGE(0x0018, 0x0018) AM_READ_PORT("DSW2")
- AM_RANGE(0x0019, 0x0019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x001c, 0x001c) AM_WRITE(jackal_rambank_w)
- AM_RANGE(0x0020, 0x005f) AM_READWRITE(jackal_zram_r, jackal_zram_w) // MAIN Z RAM,SUB Z RAM
- AM_RANGE(0x0060, 0x1fff) AM_RAM AM_SHARE("share1") // M COMMON RAM,S COMMON RAM
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE(jackal_voram_r, jackal_voram_w) // MAIN V O RAM,SUB V O RAM
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE(jackal_spriteram_r, jackal_spriteram_w) // MAIN V O RAM,SUB V O RAM
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jackal_state::slave_map)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x4000, 0x43ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff
- AM_RANGE(0x6000, 0x605f) AM_RAM // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff)
- AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void jackal_state::master_map(address_map &map)
+{
+ map(0x0000, 0x0003).ram().share("videoctrl"); // scroll + other things
+ map(0x0004, 0x0004).w(this, FUNC(jackal_state::jackal_flipscreen_w));
+ map(0x0010, 0x0010).portr("DSW1");
+ map(0x0011, 0x0011).portr("IN1");
+ map(0x0012, 0x0012).portr("IN2");
+ map(0x0013, 0x0013).portr("IN0");
+ map(0x0014, 0x0015).r(this, FUNC(jackal_state::jackalr_rotary_r));
+ map(0x0018, 0x0018).portr("DSW2");
+ map(0x0019, 0x0019).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x001c, 0x001c).w(this, FUNC(jackal_state::jackal_rambank_w));
+ map(0x0020, 0x005f).rw(this, FUNC(jackal_state::jackal_zram_r), FUNC(jackal_state::jackal_zram_w)); // MAIN Z RAM,SUB Z RAM
+ map(0x0060, 0x1fff).ram().share("share1"); // M COMMON RAM,S COMMON RAM
+ map(0x2000, 0x2fff).rw(this, FUNC(jackal_state::jackal_voram_r), FUNC(jackal_state::jackal_voram_w)); // MAIN V O RAM,SUB V O RAM
+ map(0x3000, 0x3fff).rw(this, FUNC(jackal_state::jackal_spriteram_r), FUNC(jackal_state::jackal_spriteram_w)); // MAIN V O RAM,SUB V O RAM
+ map(0x4000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).rom();
+}
+
+void jackal_state::slave_map(address_map &map)
+{
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x43ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff
+ map(0x6000, 0x605f).ram(); // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff)
+ map(0x6060, 0x7fff).ram().share("share1");
+ map(0x8000, 0xffff).rom();
+}
/*************************************
*
diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp
index 160e1bb3d22..be49a1f1d5f 100644
--- a/src/mame/drivers/jackie.cpp
+++ b/src/mame/drivers/jackie.cpp
@@ -388,39 +388,41 @@ READ8_MEMBER(jackie_state::expram_r)
}
-ADDRESS_MAP_START(jackie_state::jackie_prg_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_REGION("maincpu", 0xf000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jackie_state::jackie_io_map)
- AM_RANGE(0x0520, 0x0524) AM_WRITE(unk_reg1_lo_w)
- AM_RANGE(0x0d20, 0x0d24) AM_WRITE(unk_reg1_hi_w)
- AM_RANGE(0x0560, 0x0564) AM_WRITE(unk_reg2_lo_w)
- AM_RANGE(0x0d60, 0x0d64) AM_WRITE(unk_reg2_hi_w)
- AM_RANGE(0x05a0, 0x05a4) AM_WRITE(unk_reg3_lo_w)
- AM_RANGE(0x0da0, 0x0da4) AM_WRITE(unk_reg3_hi_w)
- AM_RANGE(0x1000, 0x1107) AM_RAM AM_SHARE("bg_scroll2")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */
- AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0x5090, 0x5093) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")
- AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
- AM_RANGE(0x6000, 0x60ff) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
- AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0x6a00, 0x6bff) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0x6c00, 0x6dff) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
- AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
- AM_RANGE(0x8000, 0xffff) AM_READ(expram_r)
-ADDRESS_MAP_END
+void jackie_state::jackie_prg_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram().region("maincpu", 0xf000);
+}
+
+void jackie_state::jackie_io_map(address_map &map)
+{
+ map(0x0520, 0x0524).w(this, FUNC(jackie_state::unk_reg1_lo_w));
+ map(0x0d20, 0x0d24).w(this, FUNC(jackie_state::unk_reg1_hi_w));
+ map(0x0560, 0x0564).w(this, FUNC(jackie_state::unk_reg2_lo_w));
+ map(0x0d60, 0x0d64).w(this, FUNC(jackie_state::unk_reg2_hi_w));
+ map(0x05a0, 0x05a4).w(this, FUNC(jackie_state::unk_reg3_lo_w));
+ map(0x0da0, 0x0da4).w(this, FUNC(jackie_state::unk_reg3_hi_w));
+ map(0x1000, 0x1107).ram().share("bg_scroll2");
+ map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */
+ map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */
+ map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */
+ map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */
+ map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
+ map(0x5080, 0x5083).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5090, 0x5093).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x50a0, 0x50a0).portr("BUTTONS2");
+ map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x50c0, 0x50c0).r(this, FUNC(jackie_state::igs_irqack_r)).w(this, FUNC(jackie_state::igs_irqack_w));
+ map(0x6000, 0x60ff).ram().w(this, FUNC(jackie_state::bg_scroll_w)).share("bg_scroll");
+ map(0x6800, 0x69ff).ram().w(this, FUNC(jackie_state::reel1_ram_w)).share("reel1_ram");
+ map(0x6a00, 0x6bff).ram().w(this, FUNC(jackie_state::reel2_ram_w)).share("reel2_ram");
+ map(0x6c00, 0x6dff).ram().w(this, FUNC(jackie_state::reel3_ram_w)).share("reel3_ram");
+ map(0x7000, 0x77ff).ram().w(this, FUNC(jackie_state::fg_tile_w)).share("fg_tile_ram");
+ map(0x7800, 0x7fff).ram().w(this, FUNC(jackie_state::fg_color_w)).share("fg_color_ram");
+ map(0x8000, 0xffff).r(this, FUNC(jackie_state::expram_r));
+}
CUSTOM_INPUT_MEMBER(jackie_state::hopper_r)
{
diff --git a/src/mame/drivers/jackpool.cpp b/src/mame/drivers/jackpool.cpp
index 4bd8a0f024d..0f98e1e3564 100644
--- a/src/mame/drivers/jackpool.cpp
+++ b/src/mame/drivers/jackpool.cpp
@@ -138,23 +138,24 @@ WRITE_LINE_MEMBER(jackpool_state::map_vreg_w)
m_map_vreg = state;
}
-ADDRESS_MAP_START(jackpool_state::jackpool_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x120000, 0x1200ff) AM_RAM
- AM_RANGE(0x340000, 0x347fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x348000, 0x34ffff) AM_RAM //<- vram banks 2 & 3?
-
- AM_RANGE(0x360000, 0x3603ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x380000, 0x38002f) AM_READ8(jackpool_io_r, 0x00ff)
- AM_RANGE(0x380030, 0x38003f) AM_DEVWRITE8("latch1", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x380040, 0x38004f) AM_DEVWRITE8("latch2", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x380050, 0x38005f) AM_DEVWRITE8("latch3", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x380060, 0x380061) AM_WRITENOP // another single-bit output?
-
- AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("uart", ns16550_device, ins8250_r, ins8250_w, 0x00ff)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void jackpool_state::jackpool_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x120000, 0x1200ff).ram();
+ map(0x340000, 0x347fff).ram().share("vram");
+ map(0x348000, 0x34ffff).ram(); //<- vram banks 2 & 3?
+
+ map(0x360000, 0x3603ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x380000, 0x38002f).r(this, FUNC(jackpool_state::jackpool_io_r)).umask16(0x00ff);
+ map(0x380030, 0x38003f).w("latch1", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x380040, 0x38004f).w("latch2", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x380050, 0x38005f).w("latch3", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x380060, 0x380061).nopw(); // another single-bit output?
+
+ map(0x800000, 0x80000f).rw("uart", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask16(0x00ff);
+ map(0xa00001, 0xa00001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
static INPUT_PORTS_START( jackpool )
diff --git a/src/mame/drivers/jade.cpp b/src/mame/drivers/jade.cpp
index db6fe90f663..fa0fe429e61 100644
--- a/src/mame/drivers/jade.cpp
+++ b/src/mame/drivers/jade.cpp
@@ -41,19 +41,21 @@ private:
};
-ADDRESS_MAP_START(jade_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jade_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void jade_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom().region("roms", 0);
+ map(0x0800, 0xffff).ram();
+}
+
+void jade_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x28, 0x2b).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x30, 0x33).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x40, 0x43).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( jade )
diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp
index 1bdbe2256cd..f5c80977254 100644
--- a/src/mame/drivers/jaguar.cpp
+++ b/src/mame/drivers/jaguar.cpp
@@ -1105,25 +1105,26 @@ WRITE16_MEMBER(jaguar_state::gpu_clut_w16){ if (!(offset&1)) { gpu_clut_w(space,
READ16_MEMBER(jaguar_state::gpu_ram_r16){ if (!(offset&1)) { return gpu_ram_r(space, offset>>1, mem_mask<<16) >> 16; } else { return gpu_ram_r(space, offset>>1, mem_mask); } }
WRITE16_MEMBER(jaguar_state::gpu_ram_w16){ if (!(offset&1)) { gpu_ram_w(space, offset>>1, data << 16, mem_mask << 16); } else { gpu_ram_w(space, offset>>1, data, mem_mask); } }
-ADDRESS_MAP_START(jaguar_state::jaguar_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_READWRITE(shared_ram_r16, shared_ram_w16 );
- AM_RANGE(0x800000, 0xdfffff) AM_READWRITE(cart_base_r16, cart_base_w16 )
- AM_RANGE(0xe00000, 0xe1ffff) AM_READWRITE(rom_base_r16, rom_base_w16 )
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE(tom_regs_r, tom_regs_w) // might be reversed endian of the others..
- AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_READWRITE(gpu_clut_r16, gpu_clut_w16 )
- AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r16, gpuctrl_w16)
- AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r16, blitter_w16)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_READWRITE(gpu_ram_r16, gpu_ram_w16 )
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE(jerry_regs_r, jerry_regs_w) // might be reversed endian of the others..
- AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r16, joystick_w16)
- AM_RANGE(0xf14800, 0xf14803) AM_READWRITE(eeprom_clk16,eeprom_w16) // GPI00
- AM_RANGE(0xf15000, 0xf15003) AM_READ(eeprom_cs16) // GPI01
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r16, dspctrl_w16)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r16, serial_w16)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_READWRITE(dsp_ram_r16, dsp_ram_w16)
- AM_RANGE(0xf1d000, 0xf1dfff) AM_READWRITE(wave_rom_r16, wave_rom_w16 )
-ADDRESS_MAP_END
+void jaguar_state::jaguar_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).mirror(0x200000).rw(this, FUNC(jaguar_state::shared_ram_r16), FUNC(jaguar_state::shared_ram_w16));
+ map(0x800000, 0xdfffff).rw(this, FUNC(jaguar_state::cart_base_r16), FUNC(jaguar_state::cart_base_w16));
+ map(0xe00000, 0xe1ffff).rw(this, FUNC(jaguar_state::rom_base_r16), FUNC(jaguar_state::rom_base_w16));
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); // might be reversed endian of the others..
+ map(0xf00400, 0xf005ff).mirror(0x000200).rw(this, FUNC(jaguar_state::gpu_clut_r16), FUNC(jaguar_state::gpu_clut_w16));
+ map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r16), FUNC(jaguar_state::gpuctrl_w16));
+ map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r16), FUNC(jaguar_state::blitter_w16));
+ map(0xf03000, 0xf03fff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpu_ram_r16), FUNC(jaguar_state::gpu_ram_w16));
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); // might be reversed endian of the others..
+ map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r16), FUNC(jaguar_state::joystick_w16));
+ map(0xf14800, 0xf14803).rw(this, FUNC(jaguar_state::eeprom_clk16), FUNC(jaguar_state::eeprom_w16)); // GPI00
+ map(0xf15000, 0xf15003).r(this, FUNC(jaguar_state::eeprom_cs16)); // GPI01
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r16), FUNC(jaguar_state::dspctrl_w16));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r16), FUNC(jaguar_state::serial_w16));
+ map(0xf1b000, 0xf1cfff).rw(this, FUNC(jaguar_state::dsp_ram_r16), FUNC(jaguar_state::dsp_ram_w16));
+ map(0xf1d000, 0xf1dfff).rw(this, FUNC(jaguar_state::wave_rom_r16), FUNC(jaguar_state::wave_rom_w16));
+}
/*
CD-Rom emulation, chip codename Butch (the HW engineer was definitely obsessed with T&J somehow ...)
@@ -1293,26 +1294,27 @@ WRITE32_MEMBER(jaguar_state::butch_regs_w)
}
}
-ADDRESS_MAP_START(jaguar_state::jaguarcd_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_READWRITE(shared_ram_r16, shared_ram_w16 );
- AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("cdbios", 0)
- AM_RANGE(0xdfff00, 0xdfff3f) AM_READWRITE(butch_regs_r16,butch_regs_w16 )
- AM_RANGE(0xe00000, 0xe1ffff) AM_READWRITE(rom_base_r16, rom_base_w16 )
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE(tom_regs_r, tom_regs_w) // might be reversed endian of the others..
- AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_READWRITE(gpu_clut_r16, gpu_clut_w16 )
- AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r16, gpuctrl_w16)
- AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r16, blitter_w16)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_READWRITE(gpu_ram_r16, gpu_ram_w16 )
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE(jerry_regs_r, jerry_regs_w) // might be reversed endian of the others..
- AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r16, joystick_w16)
- AM_RANGE(0xf14800, 0xf14803) AM_READWRITE(eeprom_clk16,eeprom_w16) // GPI00
- AM_RANGE(0xf15000, 0xf15003) AM_READ(eeprom_cs16) // GPI01
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r16, dspctrl_w16)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r16, serial_w16)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_READWRITE(dsp_ram_r16, dsp_ram_w16)
- AM_RANGE(0xf1d000, 0xf1dfff) AM_READWRITE(wave_rom_r16, wave_rom_w16 )
-ADDRESS_MAP_END
+void jaguar_state::jaguarcd_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).mirror(0x200000).rw(this, FUNC(jaguar_state::shared_ram_r16), FUNC(jaguar_state::shared_ram_w16));
+ map(0x800000, 0x83ffff).rom().region("cdbios", 0);
+ map(0xdfff00, 0xdfff3f).rw(this, FUNC(jaguar_state::butch_regs_r16), FUNC(jaguar_state::butch_regs_w16));
+ map(0xe00000, 0xe1ffff).rw(this, FUNC(jaguar_state::rom_base_r16), FUNC(jaguar_state::rom_base_w16));
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); // might be reversed endian of the others..
+ map(0xf00400, 0xf005ff).mirror(0x000200).rw(this, FUNC(jaguar_state::gpu_clut_r16), FUNC(jaguar_state::gpu_clut_w16));
+ map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r16), FUNC(jaguar_state::gpuctrl_w16));
+ map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r16), FUNC(jaguar_state::blitter_w16));
+ map(0xf03000, 0xf03fff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpu_ram_r16), FUNC(jaguar_state::gpu_ram_w16));
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); // might be reversed endian of the others..
+ map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r16), FUNC(jaguar_state::joystick_w16));
+ map(0xf14800, 0xf14803).rw(this, FUNC(jaguar_state::eeprom_clk16), FUNC(jaguar_state::eeprom_w16)); // GPI00
+ map(0xf15000, 0xf15003).r(this, FUNC(jaguar_state::eeprom_cs16)); // GPI01
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r16), FUNC(jaguar_state::dspctrl_w16));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r16), FUNC(jaguar_state::serial_w16));
+ map(0xf1b000, 0xf1cfff).rw(this, FUNC(jaguar_state::dsp_ram_r16), FUNC(jaguar_state::dsp_ram_w16));
+ map(0xf1d000, 0xf1dfff).rw(this, FUNC(jaguar_state::wave_rom_r16), FUNC(jaguar_state::wave_rom_w16));
+}
/*************************************
*
@@ -1320,63 +1322,65 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jaguar_state::r3000_map)
- AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x04800000, 0x04bfffff) AM_ROMBANK("maingfxbank")
- AM_RANGE(0x04c00000, 0x04dfffff) AM_ROMBANK("mainsndbank")
- AM_RANGE(0x04e00030, 0x04e0003f) AM_DEVREADWRITE("ide", vt83c461_device, read_config, write_config)
- AM_RANGE(0x04e001f0, 0x04e001f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs0, write_cs0)
- AM_RANGE(0x04e003f0, 0x04e003f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs1, write_cs1)
- AM_RANGE(0x04f00000, 0x04f003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0x04f00400, 0x04f007ff) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0x04f02100, 0x04f021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0x04f02200, 0x04f022ff) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0x04f03000, 0x04f03fff) AM_MIRROR(0x00008000) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0x04f10000, 0x04f103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0x04f16000, 0x04f1600b) AM_READ(cojag_gun_input_r) // GPI02
- AM_RANGE(0x04f17000, 0x04f17003) AM_READ_PORT("SYSTEM") // GPI03
- AM_RANGE(0x04f17800, 0x04f17803) AM_WRITE(latch_w) // GPI04
- AM_RANGE(0x04f17c00, 0x04f17c03) AM_READ_PORT("P1_P2") // GPI05
- AM_RANGE(0x04f1a100, 0x04f1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0x04f1a140, 0x04f1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0x04f1b000, 0x04f1cfff) AM_RAM AM_SHARE("dspram")
-
- AM_RANGE(0x06000000, 0x06000003) AM_READWRITE(misc_control_r, misc_control_w)
- AM_RANGE(0x10000000, 0x1007ffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x12000000, 0x120fffff) AM_RAM AM_SHARE("mainram2") // tested in self-test only?
- AM_RANGE(0x14000004, 0x14000007) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w)
- AM_RANGE(0x16000000, 0x16000003) AM_WRITE(eeprom_enable_w)
- AM_RANGE(0x18000000, 0x18001fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_SHARE("nvram")
- AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rom")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jaguar_state::m68020_map)
- AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rom")
- AM_RANGE(0xa00000, 0xa1ffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xa20000, 0xa21fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_SHARE("nvram")
- AM_RANGE(0xa30000, 0xa30003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w)
- AM_RANGE(0xa40000, 0xa40003) AM_WRITE(eeprom_enable_w)
- AM_RANGE(0xb70000, 0xb70003) AM_READWRITE(misc_control_r, misc_control_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("mainsndbank")
- AM_RANGE(0xe00030, 0xe0003f) AM_DEVREADWRITE("ide", vt83c461_device, read_config, write_config)
- AM_RANGE(0xe001f0, 0xe001f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs0, write_cs0)
- AM_RANGE(0xe003f0, 0xe003f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs1, write_cs1)
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0xf00400, 0xf007ff) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0xf02100, 0xf021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0xf02200, 0xf022ff) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0xf16000, 0xf1600b) AM_READ(cojag_gun_input_r) // GPI02
- AM_RANGE(0xf17000, 0xf17003) AM_READ_PORT("SYSTEM") // GPI03
+void jaguar_state::r3000_map(address_map &map)
+{
+ map(0x04000000, 0x047fffff).ram().share("sharedram");
+ map(0x04800000, 0x04bfffff).bankr("maingfxbank");
+ map(0x04c00000, 0x04dfffff).bankr("mainsndbank");
+ map(0x04e00030, 0x04e0003f).rw(m_ide, FUNC(vt83c461_device::read_config), FUNC(vt83c461_device::write_config));
+ map(0x04e001f0, 0x04e001f7).rw(m_ide, FUNC(vt83c461_device::read_cs0), FUNC(vt83c461_device::write_cs0));
+ map(0x04e003f0, 0x04e003f7).rw(m_ide, FUNC(vt83c461_device::read_cs1), FUNC(vt83c461_device::write_cs1));
+ map(0x04f00000, 0x04f003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0x04f00400, 0x04f007ff).ram().share("gpuclut");
+ map(0x04f02100, 0x04f021ff).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0x04f02200, 0x04f022ff).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0x04f03000, 0x04f03fff).mirror(0x00008000).ram().share("gpuram");
+ map(0x04f10000, 0x04f103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0x04f16000, 0x04f1600b).r(this, FUNC(jaguar_state::cojag_gun_input_r)); // GPI02
+ map(0x04f17000, 0x04f17003).portr("SYSTEM"); // GPI03
+ map(0x04f17800, 0x04f17803).w(this, FUNC(jaguar_state::latch_w)); // GPI04
+ map(0x04f17c00, 0x04f17c03).portr("P1_P2"); // GPI05
+ map(0x04f1a100, 0x04f1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0x04f1a140, 0x04f1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0x04f1b000, 0x04f1cfff).ram().share("dspram");
+
+ map(0x06000000, 0x06000003).rw(this, FUNC(jaguar_state::misc_control_r), FUNC(jaguar_state::misc_control_w));
+ map(0x10000000, 0x1007ffff).ram().share("mainram");
+ map(0x12000000, 0x120fffff).ram().share("mainram2"); // tested in self-test only?
+ map(0x14000004, 0x14000007).w("watchdog", FUNC(watchdog_timer_device::reset32_w));
+ map(0x16000000, 0x16000003).w(this, FUNC(jaguar_state::eeprom_enable_w));
+ map(0x18000000, 0x18001fff).rw(this, FUNC(jaguar_state::eeprom_data_r), FUNC(jaguar_state::eeprom_data_w)).share("nvram");
+ map(0x1fc00000, 0x1fdfffff).rom().region("maincpu", 0).share("rom");
+}
+
+
+void jaguar_state::m68020_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).ram().share("sharedram");
+ map(0x800000, 0x9fffff).rom().region("maincpu", 0).share("rom");
+ map(0xa00000, 0xa1ffff).ram().share("mainram");
+ map(0xa20000, 0xa21fff).rw(this, FUNC(jaguar_state::eeprom_data_r), FUNC(jaguar_state::eeprom_data_w)).share("nvram");
+ map(0xa30000, 0xa30003).w("watchdog", FUNC(watchdog_timer_device::reset32_w));
+ map(0xa40000, 0xa40003).w(this, FUNC(jaguar_state::eeprom_enable_w));
+ map(0xb70000, 0xb70003).rw(this, FUNC(jaguar_state::misc_control_r), FUNC(jaguar_state::misc_control_w));
+ map(0xc00000, 0xdfffff).bankr("mainsndbank");
+ map(0xe00030, 0xe0003f).rw(m_ide, FUNC(vt83c461_device::read_config), FUNC(vt83c461_device::write_config));
+ map(0xe001f0, 0xe001f7).rw(m_ide, FUNC(vt83c461_device::read_cs0), FUNC(vt83c461_device::write_cs0));
+ map(0xe003f0, 0xe003f7).rw(m_ide, FUNC(vt83c461_device::read_cs1), FUNC(vt83c461_device::write_cs1));
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0xf00400, 0xf007ff).ram().share("gpuclut");
+ map(0xf02100, 0xf021ff).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0xf02200, 0xf022ff).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0xf16000, 0xf1600b).r(this, FUNC(jaguar_state::cojag_gun_input_r)); // GPI02
+ map(0xf17000, 0xf17003).portr("SYSTEM"); // GPI03
// AM_RANGE(0xf17800, 0xf17803) AM_WRITE(latch_w) // GPI04
- AM_RANGE(0xf17c00, 0xf17c03) AM_READ_PORT("P1_P2") // GPI05
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram")
-ADDRESS_MAP_END
+ map(0xf17c00, 0xf17c03).portr("P1_P2"); // GPI05
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0xf1b000, 0xf1cfff).ram().share("dspram");
+}
@@ -1386,20 +1390,21 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jaguar_state::gpu_map)
- AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x800000, 0xbfffff) AM_ROMBANK("gpugfxbank")
- AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("dspsndbank")
- AM_RANGE(0xe00030, 0xe0003f) AM_DEVREADWRITE("ide", vt83c461_device, read_config, write_config)
- AM_RANGE(0xe001f0, 0xe001f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs0, write_cs0)
- AM_RANGE(0xe003f0, 0xe003f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs1, write_cs1)
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0xf00400, 0xf007ff) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0xf02100, 0xf021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0xf02200, 0xf022ff) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0xf03000, 0xf03fff) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
-ADDRESS_MAP_END
+void jaguar_state::gpu_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).ram().share("sharedram");
+ map(0x800000, 0xbfffff).bankr("gpugfxbank");
+ map(0xc00000, 0xdfffff).bankr("dspsndbank");
+ map(0xe00030, 0xe0003f).rw(m_ide, FUNC(vt83c461_device::read_config), FUNC(vt83c461_device::write_config));
+ map(0xe001f0, 0xe001f7).rw(m_ide, FUNC(vt83c461_device::read_cs0), FUNC(vt83c461_device::write_cs0));
+ map(0xe003f0, 0xe003f7).rw(m_ide, FUNC(vt83c461_device::read_cs1), FUNC(vt83c461_device::write_cs1));
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0xf00400, 0xf007ff).ram().share("gpuclut");
+ map(0xf02100, 0xf021ff).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0xf02200, 0xf022ff).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0xf03000, 0xf03fff).ram().share("gpuram");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+}
@@ -1409,92 +1414,97 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jaguar_state::dsp_map)
- AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x800000, 0xbfffff) AM_ROMBANK("gpugfxbank")
- AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("dspsndbank")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram")
- AM_RANGE(0xf1d000, 0xf1dfff) AM_READ(wave_rom_r) AM_SHARE("waverom") AM_REGION("waverom", 0)
-ADDRESS_MAP_END
+void jaguar_state::dsp_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).ram().share("sharedram");
+ map(0x800000, 0xbfffff).bankr("gpugfxbank");
+ map(0xc00000, 0xdfffff).bankr("dspsndbank");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0xf1b000, 0xf1cfff).ram().share("dspram");
+ map(0xf1d000, 0xf1dfff).r(this, FUNC(jaguar_state::wave_rom_r)).share("waverom").region("waverom", 0);
+}
/* ToDo, these maps SHOULD be merged with the ones above */
-ADDRESS_MAP_START(jaguar_state::jag_gpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_MIRROR(0x200000) AM_SHARE("sharedram") AM_REGION("maincpu", 0)
- AM_RANGE(0x800000, 0xdfffff) AM_ROM AM_SHARE("cart") AM_REGION("maincpu", 0x800000)
- AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000)
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w)
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram")
- AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_SHARE("waverom") AM_REGION("waverom", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jaguar_state::jag_dsp_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_RAM AM_SHARE("sharedram") AM_REGION("maincpu", 0)
- AM_RANGE(0x800000, 0xdfffff) AM_ROM AM_SHARE("cart") AM_REGION("maincpu", 0x800000)
- AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000)
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w)
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram")
- AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_REGION("waverom", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jaguar_state::jagcd_gpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_MIRROR(0x200000) AM_SHARE("sharedram") AM_REGION("maincpu", 0)
- AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("cdbios", 0)
- AM_RANGE(0xdfff00, 0xdfff3f) AM_READWRITE(butch_regs_r,butch_regs_w )
- AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000)
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w)
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram")
- AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_SHARE("waverom") AM_REGION("waverom", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jaguar_state::jagcd_dsp_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_RAM AM_SHARE("sharedram") AM_REGION("maincpu", 0)
- AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("cdbios", 0)
- AM_RANGE(0xdfff00, 0xdfff3f) AM_READWRITE(butch_regs_r,butch_regs_w )
- AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000)
- AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
- AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut")
- AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w)
- AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w)
- AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram")
- AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff)
- AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w)
- AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w)
- AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w)
- AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram")
- AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_REGION("waverom", 0)
-ADDRESS_MAP_END
+void jaguar_state::jag_gpu_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).ram().mirror(0x200000).share("sharedram").region("maincpu", 0);
+ map(0x800000, 0xdfffff).rom().share("cart").region("maincpu", 0x800000);
+ map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000);
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut");
+ map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w));
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0xf1b000, 0xf1cfff).ram().share("dspram");
+ map(0xf1d000, 0xf1dfff).rom().share("waverom").region("waverom", 0);
+}
+
+void jaguar_state::jag_dsp_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).mirror(0x200000).ram().share("sharedram").region("maincpu", 0);
+ map(0x800000, 0xdfffff).rom().share("cart").region("maincpu", 0x800000);
+ map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000);
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut");
+ map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w));
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0xf1b000, 0xf1cfff).ram().share("dspram");
+ map(0xf1d000, 0xf1dfff).rom().region("waverom", 0);
+}
+
+void jaguar_state::jagcd_gpu_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).ram().mirror(0x200000).share("sharedram").region("maincpu", 0);
+ map(0x800000, 0x83ffff).rom().region("cdbios", 0);
+ map(0xdfff00, 0xdfff3f).rw(this, FUNC(jaguar_state::butch_regs_r), FUNC(jaguar_state::butch_regs_w));
+ map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000);
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut");
+ map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w));
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0xf1b000, 0xf1cfff).ram().share("dspram");
+ map(0xf1d000, 0xf1dfff).rom().share("waverom").region("waverom", 0);
+}
+
+void jaguar_state::jagcd_dsp_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).mirror(0x200000).ram().share("sharedram").region("maincpu", 0);
+ map(0x800000, 0x83ffff).rom().region("cdbios", 0);
+ map(0xdfff00, 0xdfff3f).rw(this, FUNC(jaguar_state::butch_regs_r), FUNC(jaguar_state::butch_regs_w));
+ map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000);
+ map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w));
+ map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut");
+ map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w));
+ map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w));
+ map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram");
+ map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w));
+ map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w));
+ map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w));
+ map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w));
+ map(0xf1b000, 0xf1cfff).ram().share("dspram");
+ map(0xf1d000, 0xf1dfff).rom().region("waverom", 0);
+}
/*************************************
*
diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp
index b486b5185f2..52154e471ca 100644
--- a/src/mame/drivers/jailbrek.cpp
+++ b/src/mame/drivers/jailbrek.cpp
@@ -136,35 +136,37 @@ WRITE8_MEMBER(jailbrek_state::speech_w)
m_vlm->rst((data >> 2) & 1);
}
-ADDRESS_MAP_START(jailbrek_state::jailbrek_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x10c0, 0x14ff) AM_RAM /* ??? */
- AM_RANGE(0x1500, 0x1fff) AM_RAM /* work ram */
- AM_RANGE(0x2000, 0x203f) AM_RAM AM_SHARE("scroll_x")
- AM_RANGE(0x2040, 0x2040) AM_WRITENOP /* ??? */
- AM_RANGE(0x2041, 0x2041) AM_WRITENOP /* ??? */
- AM_RANGE(0x2042, 0x2042) AM_RAM AM_SHARE("scroll_dir") /* bit 2 = scroll direction */
- AM_RANGE(0x2043, 0x2043) AM_WRITENOP /* ??? */
- AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w) /* irq, nmi enable, screen flip */
- AM_RANGE(0x3000, 0x3000) AM_WRITE(coin_w)
- AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2") AM_DEVWRITE("snsnd", sn76489a_device, write)
- AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3") AM_WRITENOP /* mirror of the previous? */
- AM_RANGE(0x3300, 0x3300) AM_READ_PORT("SYSTEM") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3301, 0x3301) AM_READ_PORT("P1")
- AM_RANGE(0x3302, 0x3302) AM_READ_PORT("P2")
- AM_RANGE(0x3303, 0x3303) AM_READ_PORT("DSW1")
- AM_RANGE(0x4000, 0x4000) AM_WRITE(speech_w) /* speech pins */
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */
- AM_RANGE(0x6000, 0x6000) AM_READ(speech_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jailbrek_state::vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void jailbrek_state::jailbrek_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(jailbrek_state::colorram_w)).share("colorram");
+ map(0x0800, 0x0fff).ram().w(this, FUNC(jailbrek_state::videoram_w)).share("videoram");
+ map(0x1000, 0x10bf).ram().share("spriteram");
+ map(0x10c0, 0x14ff).ram(); /* ??? */
+ map(0x1500, 0x1fff).ram(); /* work ram */
+ map(0x2000, 0x203f).ram().share("scroll_x");
+ map(0x2040, 0x2040).nopw(); /* ??? */
+ map(0x2041, 0x2041).nopw(); /* ??? */
+ map(0x2042, 0x2042).ram().share("scroll_dir"); /* bit 2 = scroll direction */
+ map(0x2043, 0x2043).nopw(); /* ??? */
+ map(0x2044, 0x2044).w(this, FUNC(jailbrek_state::ctrl_w)); /* irq, nmi enable, screen flip */
+ map(0x3000, 0x3000).w(this, FUNC(jailbrek_state::coin_w));
+ map(0x3100, 0x3100).portr("DSW2").w("snsnd", FUNC(sn76489a_device::write));
+ 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");
+ map(0x3302, 0x3302).portr("P2");
+ map(0x3303, 0x3303).portr("DSW1");
+ map(0x4000, 0x4000).w(this, FUNC(jailbrek_state::speech_w)); /* speech pins */
+ map(0x5000, 0x5000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* speech data */
+ map(0x6000, 0x6000).r(this, FUNC(jailbrek_state::speech_r));
+ map(0x8000, 0xffff).rom();
+}
+
+void jailbrek_state::vlm_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x1fff).rom();
+}
diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp
index 95be516b5c9..c4273e0bc02 100644
--- a/src/mame/drivers/jalmah.cpp
+++ b/src/mame/drivers/jalmah.cpp
@@ -1017,58 +1017,60 @@ WRITE16_MEMBER(jalmah_state::jalmah_flip_screen_w)
// popmessage("%04x",data);
}
-ADDRESS_MAP_START(jalmah_state::jalmah)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW")
+void jalmah_state::jalmah(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("SYSTEM");
+ map(0x080002, 0x080003).portr("DSW");
// 0x080004, 0x080005 MCU read,different for each game
- AM_RANGE(0x080010, 0x080011) AM_WRITE(jalmah_flip_screen_w)
+ map(0x080010, 0x080011).w(this, FUNC(jalmah_state::jalmah_flip_screen_w));
// 0x080012, 0x080013 MCU write related,same for each game
// 0x080014, 0x080015 MCU write related,same for each game
-/**/AM_RANGE(0x080016, 0x080017) AM_RAM_WRITE(jalmah_tilebank_w)
- AM_RANGE(0x080018, 0x080019) AM_WRITE(jalmah_okibank_w)
- AM_RANGE(0x08001a, 0x08001b) AM_WRITE(jalmah_okirom_w)
-/**/AM_RANGE(0x080020, 0x08003f) AM_RAM_WRITE(jalmah_scroll_w)
- AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+/**/map(0x080016, 0x080017).ram().w(this, FUNC(jalmah_state::jalmah_tilebank_w));
+ map(0x080018, 0x080019).w(this, FUNC(jalmah_state::jalmah_okibank_w));
+ map(0x08001a, 0x08001b).w(this, FUNC(jalmah_state::jalmah_okirom_w));
+/**/map(0x080020, 0x08003f).ram().w(this, FUNC(jalmah_state::jalmah_scroll_w));
+ map(0x080041, 0x080041).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// 0x084000, 0x084001 ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram")
- AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram")
- AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram")
- AM_RANGE(0x09c000, 0x09ffff) AM_RAM_WRITE(sc3_vram_w) AM_SHARE("sc3_vram")
- AM_RANGE(0x0f0000, 0x0f0fff) AM_RAM AM_SHARE("jshared_ram")/*shared with MCU*/
- AM_RANGE(0x0f1000, 0x0fffff) AM_RAM /*Work Ram*/
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("jmcu_code")/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jalmah_state::urashima)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW")
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */
+ map(0x090000, 0x093fff).ram().w(this, FUNC(jalmah_state::sc0_vram_w)).share("sc0_vram");
+ map(0x094000, 0x097fff).ram().w(this, FUNC(jalmah_state::sc1_vram_w)).share("sc1_vram");
+ map(0x098000, 0x09bfff).ram().w(this, FUNC(jalmah_state::sc2_vram_w)).share("sc2_vram");
+ map(0x09c000, 0x09ffff).ram().w(this, FUNC(jalmah_state::sc3_vram_w)).share("sc3_vram");
+ map(0x0f0000, 0x0f0fff).ram().share("jshared_ram");/*shared with MCU*/
+ map(0x0f1000, 0x0fffff).ram(); /*Work Ram*/
+ map(0x100000, 0x10ffff).ram().share("jmcu_code");/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/
+}
+
+void jalmah_state::urashima(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("SYSTEM");
+ map(0x080002, 0x080003).portr("DSW");
// 0x080004, 0x080005 MCU read,different for each game
- AM_RANGE(0x080010, 0x080011) AM_WRITE(jalmah_flip_screen_w)
+ map(0x080010, 0x080011).w(this, FUNC(jalmah_state::jalmah_flip_screen_w));
// 0x080012, 0x080013 MCU write related,same for each game
// 0x080014, 0x080015 MCU write related,same for each game
-/**/AM_RANGE(0x080016, 0x080017) AM_RAM_WRITE(urashima_dma_w)
- AM_RANGE(0x080018, 0x080019) AM_WRITE(jalmah_okibank_w)
- AM_RANGE(0x08001a, 0x08001b) AM_WRITE(jalmah_okirom_w)
-/**/AM_RANGE(0x08001c, 0x08001d) AM_RAM_WRITE(urashima_bank_w)
- AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+/**/map(0x080016, 0x080017).ram().w(this, FUNC(jalmah_state::urashima_dma_w));
+ map(0x080018, 0x080019).w(this, FUNC(jalmah_state::jalmah_okibank_w));
+ map(0x08001a, 0x08001b).w(this, FUNC(jalmah_state::jalmah_okirom_w));
+/**/map(0x08001c, 0x08001d).ram().w(this, FUNC(jalmah_state::urashima_bank_w));
+ map(0x080041, 0x080041).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// 0x084000, 0x084001 ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(urashima_sc0_vram_w) AM_SHARE("sc0_vram")
- AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(urashima_sc0_vram_w)
- AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(urashima_sc0_vram_w)
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */
+ map(0x090000, 0x093fff).ram().w(this, FUNC(jalmah_state::urashima_sc0_vram_w)).share("sc0_vram");
+ map(0x094000, 0x097fff).ram().w(this, FUNC(jalmah_state::urashima_sc0_vram_w));
+ map(0x098000, 0x09bfff).ram().w(this, FUNC(jalmah_state::urashima_sc0_vram_w));
// AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(urashima_sc1_vram_w) AM_SHARE("sc1_vram")/*unused*/
// AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(urashima_sc2_vram_w) AM_SHARE("sc2_vram")/*unused*/
/*$9c000-$9cfff Video Registers*/
-/**/AM_RANGE(0x09c000, 0x09dfff) AM_WRITE(urashima_vregs_w)
+/**/map(0x09c000, 0x09dfff).w(this, FUNC(jalmah_state::urashima_vregs_w));
/**///AM_RANGE(0x09c480, 0x09c49f) AM_RAM_WRITE(urashima_sc2vregs_w)
- AM_RANGE(0x09e000, 0x0a1fff) AM_RAM_WRITE(urashima_sc3_vram_w) AM_SHARE("sc3_vram")
- AM_RANGE(0x0f0000, 0x0f0fff) AM_RAM AM_SHARE("jshared_ram")/*shared with MCU*/
- AM_RANGE(0x0f1000, 0x0fffff) AM_RAM /*Work Ram*/
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("jmcu_code")/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/
-ADDRESS_MAP_END
+ map(0x09e000, 0x0a1fff).ram().w(this, FUNC(jalmah_state::urashima_sc3_vram_w)).share("sc3_vram");
+ map(0x0f0000, 0x0f0fff).ram().share("jshared_ram");/*shared with MCU*/
+ map(0x0f1000, 0x0fffff).ram(); /*Work Ram*/
+ map(0x100000, 0x10ffff).ram().share("jmcu_code");/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/
+}
static INPUT_PORTS_START( common )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp
index 6b674b8a08e..3e859eb9a73 100644
--- a/src/mame/drivers/jangou.cpp
+++ b/src/mame/drivers/jangou.cpp
@@ -338,34 +338,38 @@ WRITE8_MEMBER(jangou_state::slave_com_w)
*
*************************************/
-ADDRESS_MAP_START(jangou_state::cpu0_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jangou_state::cpu0_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") AM_WRITE(output_w) //dsw + blitter busy flag
- AM_RANGE(0x11,0x11) AM_WRITE(mux_w)
- AM_RANGE(0x12,0x17) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs)
- AM_RANGE(0x20,0x2f) AM_DEVWRITE("blitter",jangou_blitter_device, vregs_w)
- AM_RANGE(0x30,0x30) AM_WRITENOP //? polls 0x03 continuously
- AM_RANGE(0x31,0x31) AM_WRITE(sound_latch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jangou_state::cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jangou_state::cpu1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_READ(sound_latch_r)
- AM_RANGE(0x01,0x01) AM_WRITE(cvsd_w)
- AM_RANGE(0x02,0x02) AM_WRITENOP // Echoes sound command - acknowledge?
-ADDRESS_MAP_END
+void jangou_state::cpu0_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc7ff).ram();
+}
+
+void jangou_state::cpu0_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW").w(this, FUNC(jangou_state::output_w)); //dsw + blitter busy flag
+ map(0x11, 0x11).w(this, FUNC(jangou_state::mux_w));
+ map(0x12, 0x17).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs));
+ map(0x20, 0x2f).w(m_blitter, FUNC(jangou_blitter_device::vregs_w));
+ map(0x30, 0x30).nopw(); //? polls 0x03 continuously
+ map(0x31, 0x31).w(this, FUNC(jangou_state::sound_latch_w));
+}
+
+
+void jangou_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().nopw();
+}
+
+void jangou_state::cpu1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(jangou_state::sound_latch_r));
+ map(0x01, 0x01).w(this, FUNC(jangou_state::cvsd_w));
+ map(0x02, 0x02).nopw(); // Echoes sound command - acknowledge?
+}
/*************************************
@@ -374,32 +378,36 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jangou_state::jngolady_cpu0_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe000, 0xe000) AM_READWRITE(master_com_r,master_com_w)
-ADDRESS_MAP_END
+void jangou_state::jngolady_cpu0_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc7ff).ram().share("share1");
+ map(0xe000, 0xe000).rw(this, FUNC(jangou_state::master_com_r), FUNC(jangou_state::master_com_w));
+}
-ADDRESS_MAP_START(jangou_state::jngolady_cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
+void jangou_state::jngolady_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().nopw();
+}
-ADDRESS_MAP_START(jangou_state::jngolady_cpu1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_READ(sound_latch_r)
- AM_RANGE(0x01,0x01) AM_WRITE(adpcm_w)
- AM_RANGE(0x02,0x02) AM_WRITENOP
-ADDRESS_MAP_END
+void jangou_state::jngolady_cpu1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(jangou_state::sound_latch_r));
+ map(0x01, 0x01).w(this, FUNC(jangou_state::adpcm_w));
+ map(0x02, 0x02).nopw();
+}
-ADDRESS_MAP_START(jangou_state::nsc_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM //internal ram for irq etc.
- AM_RANGE(0x8000, 0x8000) AM_WRITENOP //write-only,irq related?
- AM_RANGE(0x9000, 0x9000) AM_READWRITE(slave_com_r,slave_com_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void jangou_state::nsc_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); //internal ram for irq etc.
+ map(0x8000, 0x8000).nopw(); //write-only,irq related?
+ map(0x9000, 0x9000).rw(this, FUNC(jangou_state::slave_com_r), FUNC(jangou_state::slave_com_w));
+ map(0xc000, 0xc7ff).ram().share("share1");
+ map(0xf000, 0xffff).rom();
+}
/*************************************
*
@@ -407,24 +415,26 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jangou_state::cntrygrl_cpu0_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
+void jangou_state::cntrygrl_cpu0_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
// AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jangou_state::cntrygrl_cpu0_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag
- AM_RANGE(0x10,0x10) AM_WRITE(output_w)
- AM_RANGE(0x11,0x11) AM_WRITE(mux_w)
- AM_RANGE(0x12,0x17) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs)
- AM_RANGE(0x20,0x2f) AM_DEVWRITE("blitter",jangou_blitter_device, vregs_w)
- AM_RANGE(0x30,0x30) AM_WRITENOP //? polls 0x03 continuously
+ map(0xe000, 0xefff).ram();
+}
+
+void jangou_state::cntrygrl_cpu0_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW"); //dsw + blitter busy flag
+ map(0x10, 0x10).w(this, FUNC(jangou_state::output_w));
+ map(0x11, 0x11).w(this, FUNC(jangou_state::mux_w));
+ map(0x12, 0x17).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs));
+ map(0x20, 0x2f).w(m_blitter, FUNC(jangou_blitter_device::vregs_w));
+ map(0x30, 0x30).nopw(); //? polls 0x03 continuously
// AM_RANGE(0x31,0x31) AM_WRITE(sound_latch_w)
-ADDRESS_MAP_END
+}
/*************************************
*
@@ -432,23 +442,25 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jangou_state::roylcrdn_cpu0_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B-15 ZEROPOWER RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jangou_state::roylcrdn_cpu0_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") /* DSW + blitter busy flag */
- AM_RANGE(0x10,0x10) AM_WRITENOP /* Writes continuosly 0's in attract mode, and 1's in game */
- AM_RANGE(0x11,0x11) AM_WRITE(mux_w)
- AM_RANGE(0x12,0x17) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs)
- AM_RANGE(0x13,0x13) AM_READNOP /* Often reads bit7 with unknown purposes */
- AM_RANGE(0x20,0x2f) AM_DEVWRITE("blitter",jangou_blitter_device, vregs_w)
- AM_RANGE(0x30,0x30) AM_WRITENOP /* Seems to write 0x10 on each sound event */
-ADDRESS_MAP_END
+void jangou_state::roylcrdn_cpu0_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x7000, 0x77ff).ram().share("nvram"); /* MK48Z02B-15 ZEROPOWER RAM */
+}
+
+void jangou_state::roylcrdn_cpu0_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW"); /* DSW + blitter busy flag */
+ map(0x10, 0x10).nopw(); /* Writes continuosly 0's in attract mode, and 1's in game */
+ map(0x11, 0x11).w(this, FUNC(jangou_state::mux_w));
+ map(0x12, 0x17).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs));
+ map(0x13, 0x13).nopr(); /* Often reads bit7 with unknown purposes */
+ map(0x20, 0x2f).w(m_blitter, FUNC(jangou_blitter_device::vregs_w));
+ map(0x30, 0x30).nopw(); /* Seems to write 0x10 on each sound event */
+}
/*************************************
diff --git a/src/mame/drivers/jankenmn.cpp b/src/mame/drivers/jankenmn.cpp
index 7adf616dfac..fe632c51349 100644
--- a/src/mame/drivers/jankenmn.cpp
+++ b/src/mame/drivers/jankenmn.cpp
@@ -252,19 +252,21 @@ CUSTOM_INPUT_MEMBER(jankenmn_state::hopper_status_r)
* Memory Map Definition *
*********************************************/
-ADDRESS_MAP_START(jankenmn_state::jankenmn_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jankenmn_state::jankenmn_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x30, 0x30) AM_WRITENOP // ???
-ADDRESS_MAP_END
+void jankenmn_state::jankenmn_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xffff).rom();
+}
+
+void jankenmn_state::jankenmn_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x10, 0x13).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x30, 0x30).nopw(); // ???
+}
/*
Writes to port 30h....
diff --git a/src/mame/drivers/jantotsu.cpp b/src/mame/drivers/jantotsu.cpp
index 8253745bc2d..fe9b61e8938 100644
--- a/src/mame/drivers/jantotsu.cpp
+++ b/src/mame/drivers/jantotsu.cpp
@@ -334,20 +334,22 @@ WRITE_LINE_MEMBER(jantotsu_state::jan_adpcm_int)
*
*************************************/
-ADDRESS_MAP_START(jantotsu_state::jantotsu_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(jantotsu_bitmap_r, jantotsu_bitmap_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jantotsu_state::jantotsu_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0x01, 0x01) AM_READ(jantotsu_dsw2_r) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0x02, 0x03) AM_WRITE(jan_adpcm_w)
- AM_RANGE(0x04, 0x04) AM_READWRITE(jantotsu_mux_r, jantotsu_mux_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(bankaddr_w)
-ADDRESS_MAP_END
+void jantotsu_state::jantotsu_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xffff).rw(this, FUNC(jantotsu_state::jantotsu_bitmap_r), FUNC(jantotsu_state::jantotsu_bitmap_w));
+}
+
+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(this, FUNC(jantotsu_state::jantotsu_dsw2_r)).w("sn2", FUNC(sn76489a_device::write));
+ map(0x02, 0x03).w(this, FUNC(jantotsu_state::jan_adpcm_w));
+ map(0x04, 0x04).rw(this, FUNC(jantotsu_state::jantotsu_mux_r), FUNC(jantotsu_state::jantotsu_mux_w));
+ map(0x07, 0x07).w(this, FUNC(jantotsu_state::bankaddr_w));
+}
/*************************************
diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp
index 33b615abab0..f4be4d16606 100644
--- a/src/mame/drivers/jchan.cpp
+++ b/src/mame/drivers/jchan.cpp
@@ -449,49 +449,51 @@ WRITE16_MEMBER(jchan_state::sknsspr_sprite32regs_w)
}
-ADDRESS_MAP_START(jchan_state::jchan_main)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - [A] grid tested, cleared ($9d6-$a54)
+void jchan_state::jchan_main(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x20ffff).ram(); // Work RAM - [A] grid tested, cleared ($9d6-$a54)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("mcuram") // [G] MCU share
- AM_RANGE(0x330000, 0x330001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w)
- AM_RANGE(0x340000, 0x340001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w)
- AM_RANGE(0x350000, 0x350001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w)
- AM_RANGE(0x360000, 0x360001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w)
- AM_RANGE(0x370000, 0x370001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r)
+ map(0x300000, 0x30ffff).ram().share("mcuram"); // [G] MCU share
+ map(0x330000, 0x330001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w));
+ map(0x340000, 0x340001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w));
+ map(0x350000, 0x350001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w));
+ map(0x360000, 0x360001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w));
+ map(0x370000, 0x370001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r));
- AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("mainsub_shared")
+ map(0x400000, 0x403fff).ram().share("mainsub_shared");
/* 1st sprite layer */
- AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sknsspr_sprite32_w<0>) AM_SHARE("spriteram_1")
- AM_RANGE(0x600000, 0x60003f) AM_RAM_WRITE(sknsspr_sprite32regs_w<0>) AM_SHARE("sprregs_1")
+ map(0x500000, 0x503fff).ram().w(this, FUNC(jchan_state::sknsspr_sprite32_w<0>)).share("spriteram_1");
+ map(0x600000, 0x60003f).ram().w(this, FUNC(jchan_state::sknsspr_sprite32regs_w<0>)).share("sprregs_1");
- AM_RANGE(0x700000, 0x70ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette
+ map(0x700000, 0x70ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette
- AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(ctrl_r, ctrl_w) AM_SHARE("ctrl")
+ map(0xf00000, 0xf00007).rw(this, FUNC(jchan_state::ctrl_r), FUNC(jchan_state::ctrl_w)).share("ctrl");
- AM_RANGE(0xf80000, 0xf80001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
-ADDRESS_MAP_END
+ map(0xf80000, 0xf80001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+}
-ADDRESS_MAP_START(jchan_state::jchan_sub)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - grid tested, cleared ($612-$6dc)
+void jchan_state::jchan_sub(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram(); // Work RAM - grid tested, cleared ($612-$6dc)
- AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("mainsub_shared")
+ map(0x400000, 0x403fff).ram().share("mainsub_shared");
/* VIEW2 Tilemap - [D] grid tested, cleared ($1d84), also cleared at startup ($810-$826) */
- AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
+ map(0x500000, 0x503fff).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x600000, 0x60001f).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
/* background sprites */
- AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(sknsspr_sprite32_w<1>) AM_SHARE("spriteram_2")
- AM_RANGE(0x780000, 0x78003f) AM_RAM_WRITE(sknsspr_sprite32regs_w<1>) AM_SHARE("sprregs_2")
+ map(0x700000, 0x703fff).ram().w(this, FUNC(jchan_state::sknsspr_sprite32_w<1>)).share("spriteram_2");
+ map(0x780000, 0x78003f).ram().w(this, FUNC(jchan_state::sknsspr_sprite32regs_w<1>)).share("sprregs_2");
- AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // sound
+ map(0x800000, 0x800003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // sound
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
-ADDRESS_MAP_END
+ map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+}
static const gfx_layout tilelayout =
diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp
index 296cc20a1cd..a0f51c327cd 100644
--- a/src/mame/drivers/jclub2.cpp
+++ b/src/mame/drivers/jclub2.cpp
@@ -171,7 +171,7 @@ public:
void jclub2(machine_config &config);
void jclub2_map(address_map &map);
-private:
+protected:
required_device<st0020_device> m_st0020;
};
@@ -579,50 +579,51 @@ WRITE32_MEMBER(jclub2o_state::cmd2_word_w)
}
}
-ADDRESS_MAP_START(jclub2o_state::jclub2o_map)
- AM_RANGE(0x000000, 0x27ffff) AM_ROM
- AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery
+void jclub2o_state::jclub2o_map(address_map &map)
+{
+ map(0x000000, 0x27ffff).rom();
+ map(0x400000, 0x41ffff).ram().share("nvram"); // battery
- AM_RANGE(0x490000, 0x490003) AM_WRITE(eeprom_s29290_w)
+ map(0x490000, 0x490003).w(this, FUNC(jclub2o_state::eeprom_s29290_w));
- AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(out2_w)
+ map(0x4a0000, 0x4a0003).w(this, FUNC(jclub2o_state::out2_w));
// AM_RANGE(0x4a0010, 0x4a0013) AM_WRITE
// AM_RANGE(0x4a0020, 0x4a0023) AM_WRITE
// AM_RANGE(0x4a0030, 0x4a0033) AM_WRITE
// ST-0016
- AM_RANGE(0x4b0000, 0x4b0003) AM_READWRITE(cmd1_word_r, cmd1_word_w)
- AM_RANGE(0x4b0004, 0x4b0007) AM_READWRITE(cmd2_word_r, cmd2_word_w)
- AM_RANGE(0x4b0008, 0x4b000b) AM_READ(cmd_stat_word_r)
-
- AM_RANGE(0x4d0000, 0x4d0003) AM_READNOP AM_WRITENOP // reads seem unused? this write would go to two 7-segs (but the code is never called)
- AM_RANGE(0x4d0004, 0x4d0007) AM_READNOP
- AM_RANGE(0x4d0008, 0x4d000b) AM_READNOP
- AM_RANGE(0x4d000c, 0x4d000f) AM_READNOP
-
- AM_RANGE(0x4e0000, 0x4e0003) AM_READ(p2_r) AM_WRITE(input_sel2_w)
-
- AM_RANGE(0x580000, 0x580003) AM_READ_PORT("EEPROM")
- AM_RANGE(0x580004, 0x580007) AM_READ(p1_r)
- AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("COIN")
- AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel1_out3_w)
- AM_RANGE(0x580010, 0x580013) AM_WRITE(out1_w)
+ map(0x4b0000, 0x4b0003).rw(this, FUNC(jclub2o_state::cmd1_word_r), FUNC(jclub2o_state::cmd1_word_w));
+ map(0x4b0004, 0x4b0007).rw(this, FUNC(jclub2o_state::cmd2_word_r), FUNC(jclub2o_state::cmd2_word_w));
+ map(0x4b0008, 0x4b000b).r(this, FUNC(jclub2o_state::cmd_stat_word_r));
+
+ map(0x4d0000, 0x4d0003).nopr().nopw(); // reads seem unused? this write would go to two 7-segs (but the code is never called)
+ map(0x4d0004, 0x4d0007).nopr();
+ map(0x4d0008, 0x4d000b).nopr();
+ map(0x4d000c, 0x4d000f).nopr();
+
+ map(0x4e0000, 0x4e0003).r(this, FUNC(jclub2o_state::p2_r)).w(this, FUNC(jclub2o_state::input_sel2_w));
+
+ map(0x580000, 0x580003).portr("EEPROM");
+ map(0x580004, 0x580007).r(this, FUNC(jclub2o_state::p1_r));
+ map(0x580008, 0x58000b).portr("COIN");
+ map(0x58000c, 0x58000f).w(this, FUNC(jclub2o_state::input_sel1_out3_w));
+ map(0x580010, 0x580013).w(this, FUNC(jclub2o_state::out1_w));
// AM_RANGE(0x580018, 0x58001b) AM_WRITE
// AM_RANGE(0x58001c, 0x58001f) AM_WRITE
- AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000)
+ map(0x580200, 0x580201).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
- AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000)
- AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) //AM_WRITE
+ map(0x580401, 0x580401).rw(this, FUNC(jclub2o_state::console_r), FUNC(jclub2o_state::console_w));
+ map(0x580421, 0x580421).r(this, FUNC(jclub2o_state::console_status_r)); //AM_WRITE
// AM_RANGE(0x580440, 0x580443) AM_WRITE
// ST-0020
- AM_RANGE(0x600000, 0x67ffff) AM_DEVREADWRITE16( "st0020", st0020_device, sprram_r, sprram_w, 0xffffffff );
- AM_RANGE(0x680000, 0x69ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x6a0000, 0x6bffff) AM_RAM
- AM_RANGE(0x6c0000, 0x6c00ff) AM_DEVREADWRITE16( "st0020", st0020_device, regs_r, regs_w, 0xffffffff );
- AM_RANGE(0x700000, 0x7fffff) AM_DEVREADWRITE16( "st0020", st0020_device, gfxram_r, gfxram_w, 0xffffffff );
-ADDRESS_MAP_END
+ map(0x600000, 0x67ffff).rw(m_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w));
+ map(0x680000, 0x69ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x6a0000, 0x6bffff).ram();
+ map(0x6c0000, 0x6c00ff).rw(m_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w));
+ map(0x700000, 0x7fffff).rw(m_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w));
+}
// ST-0016 map
@@ -661,25 +662,27 @@ WRITE8_MEMBER(jclub2o_state::cmd2_w)
logerror("%s: cmd2_w %02x\n", machine().describe_context(), m_cmd2);
}
-ADDRESS_MAP_START(jclub2o_state::st0016_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe800, 0xe8ff) AM_RAM
+void jclub2o_state::st0016_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xe800, 0xe8ff).ram();
//AM_RANGE(0xe900, 0xe9ff) // sound - internal
//AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).ram();
+}
-ADDRESS_MAP_START(jclub2o_state::st0016_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void jclub2o_state::st0016_io(address_map &map)
+{
+ map.global_mask(0xff);
//AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w)
- AM_RANGE(0xc0, 0xc0) AM_READWRITE(cmd1_r, cmd1_w)
- AM_RANGE(0xc1, 0xc1) AM_READWRITE(cmd2_r, cmd2_w)
- AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat_r)
- AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w)
- AM_RANGE(0xe7, 0xe7) AM_WRITENOP // watchdog?
+ map(0xc0, 0xc0).rw(this, FUNC(jclub2o_state::cmd1_r), FUNC(jclub2o_state::cmd1_w));
+ map(0xc1, 0xc1).rw(this, FUNC(jclub2o_state::cmd2_r), FUNC(jclub2o_state::cmd2_w));
+ map(0xc2, 0xc2).r(this, FUNC(jclub2o_state::cmd_stat_r));
+ map(0xe1, 0xe1).w(this, FUNC(jclub2o_state::st0016_rom_bank_w));
+ map(0xe7, 0xe7).nopw(); // watchdog?
//AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r)
-ADDRESS_MAP_END
+}
// Newer hardware (ST-0032) only
@@ -702,45 +705,46 @@ WRITE32_MEMBER(common_state::eeprom_93c46_w)
}
}
-ADDRESS_MAP_START(jclub2_state::jclub2_map)
- AM_RANGE(0x000000, 0x27ffff) AM_ROM
- AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery
+void jclub2_state::jclub2_map(address_map &map)
+{
+ map(0x000000, 0x27ffff).rom();
+ map(0x400000, 0x41ffff).ram().share("nvram"); // battery
- AM_RANGE(0x490000, 0x490003) AM_WRITE(eeprom_93c46_w)
+ map(0x490000, 0x490003).w(this, FUNC(jclub2_state::eeprom_93c46_w));
- AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(out2_w)
+ map(0x4a0000, 0x4a0003).w(this, FUNC(jclub2_state::out2_w));
- AM_RANGE(0x4d0000, 0x4d0003) AM_READNOP AM_WRITENOP // reads seem unused? this write would go to two 7-segs (but the code is never called)
- AM_RANGE(0x4d0004, 0x4d0007) AM_READNOP
- AM_RANGE(0x4d0008, 0x4d000b) AM_READNOP
- AM_RANGE(0x4d000c, 0x4d000f) AM_READNOP
+ map(0x4d0000, 0x4d0003).nopr().nopw(); // reads seem unused? this write would go to two 7-segs (but the code is never called)
+ map(0x4d0004, 0x4d0007).nopr();
+ map(0x4d0008, 0x4d000b).nopr();
+ map(0x4d000c, 0x4d000f).nopr();
- AM_RANGE(0x4e0000, 0x4e0003) AM_READ(p2_r) AM_WRITE(input_sel2_w)
+ map(0x4e0000, 0x4e0003).r(this, FUNC(jclub2_state::p2_r)).w(this, FUNC(jclub2_state::input_sel2_w));
- AM_RANGE(0x580000, 0x580003) AM_READ_PORT("EEPROM")
- AM_RANGE(0x580004, 0x580007) AM_READ(p1_r)
- AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("COIN")
- AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel1_out3_w)
- AM_RANGE(0x580010, 0x580013) AM_WRITE(out1_w)
+ map(0x580000, 0x580003).portr("EEPROM");
+ map(0x580004, 0x580007).r(this, FUNC(jclub2_state::p1_r));
+ map(0x580008, 0x58000b).portr("COIN");
+ map(0x58000c, 0x58000f).w(this, FUNC(jclub2_state::input_sel1_out3_w));
+ map(0x580010, 0x580013).w(this, FUNC(jclub2_state::out1_w));
// AM_RANGE(0x580018, 0x58001b) AM_WRITE
// AM_RANGE(0x58001c, 0x58001f) AM_WRITE
- AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000)
+ map(0x580200, 0x580201).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
- AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000)
- AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) //AM_WRITE
+ map(0x580401, 0x580401).rw(this, FUNC(jclub2_state::console_r), FUNC(jclub2_state::console_w));
+ map(0x580421, 0x580421).r(this, FUNC(jclub2_state::console_status_r)); //AM_WRITE
// AM_RANGE(0x580440, 0x580443) AM_WRITE
// ST-0032
- AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE16( "st0020", st0020_device, sprram_r, sprram_w, 0xffffffff );
- AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram!
- AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE16( "st0020", st0020_device, regs_r, regs_w, 0xffffffff );
- AM_RANGE(0x8e0000, 0x8e01ff) AM_RAM // sound?
- AM_RANGE(0x8e0200, 0x8e0203) AM_RAM
- AM_RANGE(0x8e0210, 0x8e0213) AM_RAM
- AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE16( "st0020", st0020_device, gfxram_r, gfxram_w, 0xffffffff );
-ADDRESS_MAP_END
+ map(0x800000, 0x87ffff).rw(m_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w));
+ map(0x880000, 0x89ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x8a0000, 0x8bffff).ram(); // this should still be palette ram!
+ map(0x8c0000, 0x8c00ff).rw(m_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w));
+ map(0x8e0000, 0x8e01ff).ram(); // sound?
+ map(0x8e0200, 0x8e0203).ram();
+ map(0x8e0210, 0x8e0213).ram();
+ map(0x900000, 0x9fffff).rw(m_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w));
+}
// bootleg darkhors hardware
@@ -791,37 +795,38 @@ WRITE32_MEMBER(darkhors_state::out1_w)
}
}
-ADDRESS_MAP_START(darkhors_state::darkhors_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery
+void darkhors_state::darkhors_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x41ffff).ram().share("nvram"); // battery
- AM_RANGE(0x490040, 0x490043) AM_WRITE(eeprom_93c46_w)
- AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("SERVICE") AM_WRITE(out1_w)
+ map(0x490040, 0x490043).w(this, FUNC(darkhors_state::eeprom_93c46_w));
+ map(0x4e0080, 0x4e0083).portr("SERVICE").w(this, FUNC(darkhors_state::out1_w));
- AM_RANGE(0x580000, 0x580003) AM_READ_PORT("UNKNOWN")
- AM_RANGE(0x580004, 0x580007) AM_READ_PORT("COIN")
- AM_RANGE(0x580008, 0x58000b) AM_READ(input_r)
- AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel_w)
+ map(0x580000, 0x580003).portr("UNKNOWN");
+ map(0x580004, 0x580007).portr("COIN");
+ map(0x580008, 0x58000b).r(this, FUNC(darkhors_state::input_r));
+ map(0x58000c, 0x58000f).w(this, FUNC(darkhors_state::input_sel_w));
// AM_RANGE(0x580010, 0x580013) AM_WRITE
// AM_RANGE(0x580018, 0x58001b) AM_WRITE
// AM_RANGE(0x58001c, 0x58001f) AM_WRITE
- AM_RANGE(0x580084, 0x580087) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff000000)
+ map(0x580084, 0x580084).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// AM_RANGE(0x58008c, 0x58008f) AM_WRITE
- AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000)
-
- AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000)
- AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000)
-
- AM_RANGE(0x800000, 0x86bfff) AM_RAM
- AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE(tmapram_w) AM_SHARE("tmapram")
- AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(tmapram2_w) AM_SHARE("tmapram2")
- AM_RANGE(0x874000, 0x87dfff) AM_RAM
- AM_RANGE(0x87e000, 0x87ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram!
- AM_RANGE(0x8c0120, 0x8c012f) AM_WRITEONLY AM_SHARE("tmapscroll")
- AM_RANGE(0x8c0130, 0x8c013f) AM_WRITEONLY AM_SHARE("tmapscroll2")
-ADDRESS_MAP_END
+ map(0x580200, 0x580201).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+
+ map(0x580401, 0x580401).rw(this, FUNC(darkhors_state::console_r), FUNC(darkhors_state::console_w));
+ map(0x580421, 0x580421).r(this, FUNC(darkhors_state::console_status_r));
+
+ map(0x800000, 0x86bfff).ram();
+ map(0x86c000, 0x86ffff).ram().w(this, FUNC(darkhors_state::tmapram_w)).share("tmapram");
+ map(0x870000, 0x873fff).ram().w(this, FUNC(darkhors_state::tmapram2_w)).share("tmapram2");
+ map(0x874000, 0x87dfff).ram();
+ map(0x87e000, 0x87ffff).ram().share("spriteram");
+ map(0x880000, 0x89ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x8a0000, 0x8bffff).ram(); // this should still be palette ram!
+ map(0x8c0120, 0x8c012f).writeonly().share("tmapscroll");
+ map(0x8c0130, 0x8c013f).writeonly().share("tmapscroll2");
+}
/***************************************************************************
diff --git a/src/mame/drivers/jedi.cpp b/src/mame/drivers/jedi.cpp
index 5b594abfd7b..b5652d946a3 100644
--- a/src/mame/drivers/jedi.cpp
+++ b/src/mame/drivers/jedi.cpp
@@ -266,33 +266,34 @@ WRITE8_MEMBER(jedi_state::nvram_enable_w)
*
*************************************/
-ADDRESS_MAP_START(jedi_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0300) AM_RAM_WRITE(nvram_data_w) AM_SHARE("nvram")
- AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03fe) AM_READ_PORT("0c00") AM_WRITENOP
- AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x03fe) AM_READ_PORT("0c01") AM_WRITENOP
- AM_RANGE(0x1000, 0x13ff) AM_NOP
- AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ(jedi_audio_ack_latch_r) AM_WRITENOP
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x03ff) AM_READ(a2d_data_r) AM_WRITENOP
- AM_RANGE(0x1c00, 0x1c01) AM_MIRROR(0x007e) AM_READNOP AM_WRITE(nvram_enable_w)
- AM_RANGE(0x1c80, 0x1c82) AM_MIRROR(0x0078) AM_READNOP AM_WRITE(a2d_select_w)
- AM_RANGE(0x1c83, 0x1c87) AM_MIRROR(0x0078) AM_NOP
- AM_RANGE(0x1d00, 0x1d00) AM_MIRROR(0x007f) AM_NOP /* write: NVRAM store */
- AM_RANGE(0x1d80, 0x1d80) AM_MIRROR(0x007f) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1e00, 0x1e00) AM_MIRROR(0x007f) AM_READNOP AM_WRITE(main_irq_ack_w)
- AM_RANGE(0x1e80, 0x1e87) AM_MIRROR(0x0078) AM_READNOP AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x1f00, 0x1f00) AM_MIRROR(0x007f) AM_READNOP AM_WRITE(jedi_audio_latch_w)
- AM_RANGE(0x1f80, 0x1f80) AM_MIRROR(0x007f) AM_READNOP AM_WRITE(rom_banksel_w)
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("backgroundram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x3000, 0x37bf) AM_RAM AM_SHARE("foregroundram")
- AM_RANGE(0x37c0, 0x3bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3c00, 0x3c01) AM_MIRROR(0x00fe) AM_READNOP AM_WRITE(jedi_vscroll_w)
- AM_RANGE(0x3d00, 0x3d01) AM_MIRROR(0x00fe) AM_READNOP AM_WRITE(jedi_hscroll_w)
- AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x01ff) AM_WRITEONLY AM_SHARE("smoothing_table")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void jedi_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x08ff).mirror(0x0300).ram().w(this, FUNC(jedi_state::nvram_data_w)).share("nvram");
+ map(0x0c00, 0x0c00).mirror(0x03fe).portr("0c00").nopw();
+ map(0x0c01, 0x0c01).mirror(0x03fe).portr("0c01").nopw();
+ map(0x1000, 0x13ff).noprw();
+ map(0x1400, 0x1400).mirror(0x03ff).r(this, FUNC(jedi_state::jedi_audio_ack_latch_r)).nopw();
+ map(0x1800, 0x1800).mirror(0x03ff).r(this, FUNC(jedi_state::a2d_data_r)).nopw();
+ map(0x1c00, 0x1c01).mirror(0x007e).nopr().w(this, FUNC(jedi_state::nvram_enable_w));
+ map(0x1c80, 0x1c82).mirror(0x0078).nopr().w(this, FUNC(jedi_state::a2d_select_w));
+ map(0x1c83, 0x1c87).mirror(0x0078).noprw();
+ map(0x1d00, 0x1d00).mirror(0x007f).noprw(); /* write: NVRAM store */
+ map(0x1d80, 0x1d80).mirror(0x007f).nopr().w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1e00, 0x1e00).mirror(0x007f).nopr().w(this, FUNC(jedi_state::main_irq_ack_w));
+ map(0x1e80, 0x1e87).mirror(0x0078).nopr().w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x1f00, 0x1f00).mirror(0x007f).nopr().w(this, FUNC(jedi_state::jedi_audio_latch_w));
+ map(0x1f80, 0x1f80).mirror(0x007f).nopr().w(this, FUNC(jedi_state::rom_banksel_w));
+ map(0x2000, 0x27ff).ram().share("backgroundram");
+ map(0x2800, 0x2fff).ram().share("paletteram");
+ map(0x3000, 0x37bf).ram().share("foregroundram");
+ map(0x37c0, 0x3bff).ram().share("spriteram");
+ map(0x3c00, 0x3c01).mirror(0x00fe).nopr().w(this, FUNC(jedi_state::jedi_vscroll_w));
+ map(0x3d00, 0x3d01).mirror(0x00fe).nopr().w(this, FUNC(jedi_state::jedi_hscroll_w));
+ map(0x3e00, 0x3e00).mirror(0x01ff).writeonly().share("smoothing_table");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp
index 5fe75747604..8f8a72e21ae 100644
--- a/src/mame/drivers/jeutel.cpp
+++ b/src/mame/drivers/jeutel.cpp
@@ -61,37 +61,41 @@ private:
};
-ADDRESS_MAP_START(jeutel_state::jeutel_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("shared")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jeutel_state::jeutel_cpu2)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x2000)
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x4000, 0x4000) AM_WRITENOP // writes 12 here many times
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("shared")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jeutel_state::jeutel_cpu3)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x3000)
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_WRITE(sndcmd_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jeutel_state::jeutel_cpu3_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+void jeutel_state::jeutel_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom().region("roms", 0);
+ map(0xc000, 0xc3ff).ram().share("shared");
+ map(0xc400, 0xc7ff).ram();
+ map(0xe000, 0xe003).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void jeutel_state::jeutel_cpu2(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("roms", 0x2000);
+ map(0x2000, 0x2003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x3000, 0x3003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x4000, 0x4000).nopw(); // writes 12 here many times
+ map(0x8000, 0x83ff).ram();
+ map(0xc000, 0xc3ff).ram().share("shared");
+}
+
+void jeutel_state::jeutel_cpu3(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("roms", 0x3000);
+ map(0x4000, 0x43ff).ram();
+ map(0x8000, 0x8000).w(this, FUNC(jeutel_state::sndcmd_w));
+}
+
+void jeutel_state::jeutel_cpu3_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x04, 0x04).r("aysnd", FUNC(ay8910_device::data_r));
+}
static INPUT_PORTS_START( jeutel )
INPUT_PORTS_END
diff --git a/src/mame/drivers/joctronic.cpp b/src/mame/drivers/joctronic.cpp
index ff4d699d4be..cfc29be5c6a 100644
--- a/src/mame/drivers/joctronic.cpp
+++ b/src/mame/drivers/joctronic.cpp
@@ -127,22 +127,23 @@ WRITE8_MEMBER(joctronic_state::drivers_b_w)
logerror("drivers_b[%d] = $%02X\n", offset, data);
}
-ADDRESS_MAP_START(joctronic_state::maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9000, 0x9007) AM_MIRROR(0x0ff8) AM_READ(csin_r) // CSIN
- AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x0ff8) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // PORTDS
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0fc7) AM_WRITE(display_1_w) // CSD1
- AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x0fc7) AM_WRITE(display_2_w) // CSD2
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0fc7) AM_WRITE(display_3_w) // CSD3
- AM_RANGE(0xc018, 0xc018) AM_MIRROR(0x0fc7) AM_WRITE(display_4_w) // CSD4
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0fc7) AM_WRITE(display_a_w) // CSDA
- AM_RANGE(0xc028, 0xc028) AM_MIRROR(0x0fc7) AM_WRITE(drivers_l_w) // OL
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0fc7) AM_WRITE(drivers_b_w) // OB
- AM_RANGE(0xc038, 0xc03f) AM_MIRROR(0x0fc0) AM_WRITE(drivers_w) // OA
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x0fff) AM_WRITE(soundlatch_nmi_w) // PSON
-ADDRESS_MAP_END
+void joctronic_state::maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0x87ff).mirror(0x0800).ram().share("nvram");
+ map(0x9000, 0x9007).mirror(0x0ff8).r(this, FUNC(joctronic_state::csin_r)); // CSIN
+ map(0xa000, 0xa007).mirror(0x0ff8).w("mainlatch", FUNC(ls259_device::write_d0)); // PORTDS
+ map(0xc000, 0xc000).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_1_w)); // CSD1
+ map(0xc008, 0xc008).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_2_w)); // CSD2
+ map(0xc010, 0xc010).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_3_w)); // CSD3
+ map(0xc018, 0xc018).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_4_w)); // CSD4
+ map(0xc020, 0xc020).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_a_w)); // CSDA
+ map(0xc028, 0xc028).mirror(0x0fc7).w(this, FUNC(joctronic_state::drivers_l_w)); // OL
+ map(0xc030, 0xc030).mirror(0x0fc7).w(this, FUNC(joctronic_state::drivers_b_w)); // OB
+ map(0xc038, 0xc03f).mirror(0x0fc0).w(this, FUNC(joctronic_state::drivers_w)); // OA
+ map(0xe000, 0xe000).mirror(0x0fff).w(this, FUNC(joctronic_state::soundlatch_nmi_w)); // PSON
+}
READ8_MEMBER(joctronic_state::inputs_r)
{
@@ -177,21 +178,22 @@ WRITE8_MEMBER(joctronic_state::display_ck_w)
logerror("display_ck[%d] = $%02X\n", offset, data);
}
-ADDRESS_MAP_START(joctronic_state::slalom03_maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9000, 0x9007) AM_MIRROR(0x0ff8) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // CSPORT
- AM_RANGE(0xa008, 0xa008) AM_MIRROR(0x0fc7) AM_WRITE(display_strobe_w) // STROBE
- AM_RANGE(0xa010, 0xa017) AM_MIRROR(0x0fc0) AM_WRITE(drivers_w)
- AM_RANGE(0xa018, 0xa018) AM_MIRROR(0x0fc7) AM_WRITE(display_ck_w) // CKD
- AM_RANGE(0xa020, 0xa020) AM_MIRROR(0x0fc7) AM_READ(inputs_r) // CSS
- AM_RANGE(0xa028, 0xa028) AM_MIRROR(0x0fc7) AM_READNOP // N.C.
- AM_RANGE(0xa030, 0xa030) AM_MIRROR(0x0fc7) AM_READNOP // N.C.
- AM_RANGE(0xa038, 0xa038) AM_MIRROR(0x0fc7) AM_READ(ports_r) // CSP
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x0fff) AM_READ(csint_r) // CSINT
- AM_RANGE(0xf000, 0xf000) AM_MIRROR(0x0fff) AM_WRITE(soundlatch_nmi_pulse_w) // CSSON
-ADDRESS_MAP_END
+void joctronic_state::slalom03_maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).mirror(0x0800).ram().share("nvram");
+ map(0x9000, 0x9007).mirror(0x0ff8).w("mainlatch", FUNC(ls259_device::write_d0)); // CSPORT
+ map(0xa008, 0xa008).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_strobe_w)); // STROBE
+ map(0xa010, 0xa017).mirror(0x0fc0).w(this, FUNC(joctronic_state::drivers_w));
+ map(0xa018, 0xa018).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_ck_w)); // CKD
+ map(0xa020, 0xa020).mirror(0x0fc7).r(this, FUNC(joctronic_state::inputs_r)); // CSS
+ map(0xa028, 0xa028).mirror(0x0fc7).nopr(); // N.C.
+ map(0xa030, 0xa030).mirror(0x0fc7).nopr(); // N.C.
+ map(0xa038, 0xa038).mirror(0x0fc7).r(this, FUNC(joctronic_state::ports_r)); // CSP
+ map(0xe000, 0xe000).mirror(0x0fff).r(this, FUNC(joctronic_state::csint_r)); // CSINT
+ map(0xf000, 0xf000).mirror(0x0fff).w(this, FUNC(joctronic_state::soundlatch_nmi_pulse_w)); // CSSON
+}
READ8_MEMBER(joctronic_state::bldyrolr_unknown_r)
{
@@ -204,15 +206,17 @@ WRITE8_MEMBER(joctronic_state::bldyrolr_unknown_w)
logerror("bldyrolr_unknown = $%02X\n", data);
}
-ADDRESS_MAP_START(joctronic_state::bldyrolr_maincpu_map)
- AM_IMPORT_FROM(slalom03_maincpu_map)
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(bldyrolr_unknown_r, bldyrolr_unknown_w)
-ADDRESS_MAP_END
+void joctronic_state::bldyrolr_maincpu_map(address_map &map)
+{
+ slalom03_maincpu_map(map);
+ map(0xc000, 0xc000).rw(this, FUNC(joctronic_state::bldyrolr_unknown_r), FUNC(joctronic_state::bldyrolr_unknown_w));
+}
-ADDRESS_MAP_START(joctronic_state::maincpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x03)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void joctronic_state::maincpu_io_map(address_map &map)
+{
+ map.global_mask(0x03);
+ map(0x00, 0x03).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
WRITE8_MEMBER(joctronic_state::soundlatch_nmi_w)
{
@@ -261,36 +265,40 @@ WRITE_LINE_MEMBER(joctronic_state::vck_w)
}
}
-ADDRESS_MAP_START(joctronic_state::joctronic_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM // only lower half of 2016 used?
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(soundlatch_nmi_r) // SCSP
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(resint_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(joctronic_state::joctronic_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x03)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd1", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("aysnd1", ay8910_device, data_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd2", ay8910_device, address_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd2", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(joctronic_state::slalom03_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM // only lower half of 2016 used?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(joctronic_state::slalom03_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd1", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("aysnd1", ay8910_device, data_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd2", ay8910_device, address_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd2", ay8910_device, data_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x01) AM_READ(soundlatch_r) // CSPORT
- AM_RANGE(0x06, 0x06) AM_MIRROR(0x01) AM_WRITE(resint_w) // RESINT
-ADDRESS_MAP_END
+void joctronic_state::joctronic_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0x87ff).mirror(0x1800).ram(); // only lower half of 2016 used?
+ map(0xc000, 0xc000).mirror(0x1fff).r(this, FUNC(joctronic_state::soundlatch_nmi_r)); // SCSP
+ map(0xe000, 0xe000).mirror(0x1fff).w(this, FUNC(joctronic_state::resint_w));
+}
+
+void joctronic_state::joctronic_sound_io_map(address_map &map)
+{
+ map.global_mask(0x03);
+ map(0x00, 0x00).w("aysnd1", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).w("aysnd1", FUNC(ay8910_device::data_w));
+ map(0x02, 0x02).w("aysnd2", FUNC(ay8910_device::address_w));
+ map(0x03, 0x03).w("aysnd2", FUNC(ay8910_device::data_w));
+}
+
+void joctronic_state::slalom03_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xc000, 0xc7ff).mirror(0x3800).ram(); // only lower half of 2016 used?
+}
+
+void joctronic_state::slalom03_sound_io_map(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x00).w("aysnd1", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).w("aysnd1", FUNC(ay8910_device::data_w));
+ map(0x02, 0x02).w("aysnd2", FUNC(ay8910_device::address_w));
+ map(0x03, 0x03).w("aysnd2", FUNC(ay8910_device::data_w));
+ map(0x04, 0x04).mirror(0x01).r(this, FUNC(joctronic_state::soundlatch_r)); // CSPORT
+ map(0x06, 0x06).mirror(0x01).w(this, FUNC(joctronic_state::resint_w)); // RESINT
+}
static const z80_daisy_config daisy_chain[] =
{
diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp
index 5abe0c584da..7616b724ad6 100644
--- a/src/mame/drivers/jokrwild.cpp
+++ b/src/mame/drivers/jokrwild.cpp
@@ -178,21 +178,22 @@ READ8_MEMBER(jokrwild_state::rng_r)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(jokrwild_state::jokrwild_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(jokrwild_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0400, 0x07ff) AM_RAM //FIXME: backup RAM
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(jokrwild_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM //stack RAM
- AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //optical sensor is here
+void jokrwild_state::jokrwild_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().w(this, FUNC(jokrwild_state::jokrwild_videoram_w)).share("videoram");
+ map(0x0400, 0x07ff).ram(); //FIXME: backup RAM
+ map(0x2000, 0x23ff).ram().w(this, FUNC(jokrwild_state::jokrwild_colorram_w)).share("colorram");
+ map(0x2400, 0x27ff).ram(); //stack RAM
+ map(0x4004, 0x4007).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x4008, 0x400b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //optical sensor is here
// AM_RANGE(0x4010, 0x4010) AM_READNOP /* R ???? */
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x6100, 0x6100) AM_READ_PORT("SW1")
- AM_RANGE(0x6200, 0x6203) AM_READ(rng_r)//another PIA?
- AM_RANGE(0x6300, 0x6300) AM_READ_PORT("SW2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x6000, 0x6000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x6001, 0x6001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x6100, 0x6100).portr("SW1");
+ map(0x6200, 0x6203).r(this, FUNC(jokrwild_state::rng_r));//another PIA?
+ map(0x6300, 0x6300).portr("SW2");
+ map(0x8000, 0xffff).rom();
+}
/* I/O byte R/W
diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp
index a73af899233..c7e81507eb4 100644
--- a/src/mame/drivers/jollyjgr.cpp
+++ b/src/mame/drivers/jollyjgr.cpp
@@ -241,41 +241,43 @@ WRITE8_MEMBER(jollyjgr_state::jollyjgr_coin_lookout_w)
*
*************************************/
-ADDRESS_MAP_START(jollyjgr_state::jollyjgr_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8ff8, 0x8ff8) AM_READ_PORT("DSW1")
- AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS")
- AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w)
- AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w)
- AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2")
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(jollyjgr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(jollyjgr_attrram_w) AM_SHARE("colorram")
- AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9880, 0x9bff) AM_RAM
- AM_RANGE(0xa000, 0xffff) AM_RAM AM_SHARE("bitmap")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jollyjgr_state::fspider_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8ff8, 0x8ff8) AM_READ_PORT("DSW1")
- AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS")
- AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w)
- AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w)
- AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2")
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(jollyjgr_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(jollyjgr_attrram_w) AM_SHARE("colorram")
- AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9880, 0x989f) AM_RAM // ?
- AM_RANGE(0x98a0, 0x98af) AM_RAM AM_SHARE("bulletram")
- AM_RANGE(0x98b0, 0x9bff) AM_RAM // ?
- AM_RANGE(0xa000, 0xffff) AM_RAM AM_SHARE("bitmap")
-ADDRESS_MAP_END
+void jollyjgr_state::jollyjgr_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8ff8, 0x8ff8).portr("DSW1");
+ map(0x8ff9, 0x8ff9).portr("INPUTS");
+ map(0x8ff8, 0x8ff8).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x8ffa, 0x8ffa).portr("SYSTEM").w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x8ffc, 0x8ffc).w(this, FUNC(jollyjgr_state::jollyjgr_misc_w));
+ map(0x8ffd, 0x8ffd).w(this, FUNC(jollyjgr_state::jollyjgr_coin_lookout_w));
+ map(0x8fff, 0x8fff).portr("DSW2");
+ map(0x9000, 0x93ff).ram().w(this, FUNC(jollyjgr_state::jollyjgr_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).ram().w(this, FUNC(jollyjgr_state::jollyjgr_attrram_w)).share("colorram");
+ map(0x9840, 0x987f).ram().share("spriteram");
+ map(0x9880, 0x9bff).ram();
+ map(0xa000, 0xffff).ram().share("bitmap");
+}
+
+void jollyjgr_state::fspider_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8ff8, 0x8ff8).portr("DSW1");
+ map(0x8ff9, 0x8ff9).portr("INPUTS");
+ map(0x8ff8, 0x8ff8).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x8ffa, 0x8ffa).portr("SYSTEM").w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x8ffc, 0x8ffc).w(this, FUNC(jollyjgr_state::jollyjgr_misc_w));
+ map(0x8ffd, 0x8ffd).w(this, FUNC(jollyjgr_state::jollyjgr_coin_lookout_w));
+ map(0x8fff, 0x8fff).portr("DSW2");
+ map(0x9000, 0x93ff).ram().w(this, FUNC(jollyjgr_state::jollyjgr_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).ram().w(this, FUNC(jollyjgr_state::jollyjgr_attrram_w)).share("colorram");
+ map(0x9840, 0x987f).ram().share("spriteram");
+ map(0x9880, 0x989f).ram(); // ?
+ map(0x98a0, 0x98af).ram().share("bulletram");
+ map(0x98b0, 0x9bff).ram(); // ?
+ map(0xa000, 0xffff).ram().share("bitmap");
+}
diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp
index 80da6b5ef99..394d49e76c9 100644
--- a/src/mame/drivers/jongkyo.cpp
+++ b/src/mame/drivers/jongkyo.cpp
@@ -242,33 +242,36 @@ WRITE8_MEMBER(jongkyo_state::unknown_w)
*
*************************************/
-ADDRESS_MAP_START(jongkyo_state::jongkyo_memmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITE(videoram2_w) // wrong, this doesn't seem to be video ram on write..
- AM_RANGE(0x4000, 0x6bff) AM_ROM // fixed rom
- AM_RANGE(0x6c00, 0x6fff) AM_ROMBANK("bank1") // banked (8 banks)
- AM_RANGE(0x7000, 0x77ff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jongkyo_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x6bff) AM_ROMBANK("bank0d")
- AM_RANGE(0x6c00, 0x6fff) AM_ROMBANK("bank1d")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jongkyo_state::jongkyo_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void jongkyo_state::jongkyo_memmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().w(this, FUNC(jongkyo_state::videoram2_w)); // wrong, this doesn't seem to be video ram on write..
+ map(0x4000, 0x6bff).rom(); // fixed rom
+ map(0x6c00, 0x6fff).bankr("bank1"); // banked (8 banks)
+ map(0x7000, 0x77ff).ram();
+ map(0x8000, 0xffff).ram().share("videoram");
+}
+
+void jongkyo_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x6bff).bankr("bank0d");
+ map(0x6c00, 0x6fff).bankr("bank1d");
+}
+
+
+void jongkyo_state::jongkyo_portmap(address_map &map)
+{
+ map.global_mask(0xff);
// R 01 keyboard
- AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW") AM_WRITE(jongkyo_coin_counter_w)
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") AM_WRITE(mux_w)
+ map(0x10, 0x10).portr("DSW").w(this, FUNC(jongkyo_state::jongkyo_coin_counter_w));
+ map(0x11, 0x11).portr("IN0").w(this, FUNC(jongkyo_state::mux_w));
// W 11 select keyboard row (fe fd fb f7)
- AM_RANGE(0x40, 0x40) AM_READNOP // unknown, if (A & 0xf) == 0x0a then a bit 0 write to 0x7520 doesn't occur
- AM_RANGE(0x40, 0x45) AM_WRITE(bank_select_w)
- AM_RANGE(0x46, 0x4f) AM_WRITE(unknown_w)
-ADDRESS_MAP_END
+ map(0x40, 0x40).nopr(); // unknown, if (A & 0xf) == 0x0a then a bit 0 write to 0x7520 doesn't occur
+ map(0x40, 0x45).w(this, FUNC(jongkyo_state::bank_select_w));
+ map(0x46, 0x4f).w(this, FUNC(jongkyo_state::unknown_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/jonos.cpp b/src/mame/drivers/jonos.cpp
index 00c013aab61..04ad56f56c2 100644
--- a/src/mame/drivers/jonos.cpp
+++ b/src/mame/drivers/jonos.cpp
@@ -52,15 +52,16 @@ private:
-ADDRESS_MAP_START(jonos_state::jonos_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x1800, 0x27ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3001) AM_WRITE(cursor_w) // unknown device
- AM_RANGE(0x4000, 0x4001) // unknown device
- AM_RANGE(0x5000, 0x5003) AM_READ(keyboard_r) // unknown device
- AM_RANGE(0x6000, 0x6001) // unknown device
-ADDRESS_MAP_END
+void jonos_state::jonos_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("roms", 0);
+ map(0x1800, 0x27ff).ram().share("videoram");
+ map(0x3000, 0x3001).w(this, FUNC(jonos_state::cursor_w)); // unknown device
+ map(0x4000, 0x4001); // unknown device
+ map(0x5000, 0x5003).r(this, FUNC(jonos_state::keyboard_r)); // unknown device
+ map(0x6000, 0x6001); // unknown device
+}
/* Input ports */
static INPUT_PORTS_START( jonos )
diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp
index 3c32fa3e752..213935179f1 100644
--- a/src/mame/drivers/joystand.cpp
+++ b/src/mame/drivers/joystand.cpp
@@ -445,37 +445,38 @@ WRITE16_MEMBER(joystand_state::cart_w)
bg15_tiles_dirty = true;
}
-ADDRESS_MAP_START(joystand_state::joystand_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAM
- AM_RANGE(0x200000, 0x200003) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0x200008, 0x200009) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN0") // r/w
- AM_RANGE(0x200012, 0x200013) AM_RAM_WRITE(outputs_w) AM_SHARE("outputs") // r/w
- AM_RANGE(0x200014, 0x200015) AM_READWRITE(fpga_r, oki_bank_w) // r/w
+void joystand_state::joystand_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x13ffff).ram();
+ map(0x200000, 0x200003).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x200009, 0x200009).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x200010, 0x200011).portr("IN0"); // r/w
+ map(0x200012, 0x200013).ram().w(this, FUNC(joystand_state::outputs_w)).share("outputs"); // r/w
+ map(0x200014, 0x200015).rw(this, FUNC(joystand_state::fpga_r), FUNC(joystand_state::oki_bank_w)); // r/w
// AM_RANGE(0x200016, 0x200017) // write $9190 at boot
- AM_RANGE(0x400000, 0x47ffff) AM_RAM_WRITE(bg15_0_w) AM_SHARE("bg15_0_ram") // r5g5b5 200x200 pixel-based
- AM_RANGE(0x480000, 0x4fffff) AM_RAM // more rgb layers? (writes at offset 0)
- AM_RANGE(0x500000, 0x57ffff) AM_RAM // ""
- AM_RANGE(0x580000, 0x5fffff) AM_RAM // ""
+ map(0x400000, 0x47ffff).ram().w(this, FUNC(joystand_state::bg15_0_w)).share("bg15_0_ram"); // r5g5b5 200x200 pixel-based
+ map(0x480000, 0x4fffff).ram(); // more rgb layers? (writes at offset 0)
+ map(0x500000, 0x57ffff).ram(); // ""
+ map(0x580000, 0x5fffff).ram(); // ""
- AM_RANGE(0x600000, 0x603fff) AM_RAM_WRITE(bg2_w) AM_SHARE("bg2_ram")
- AM_RANGE(0x604000, 0x605fff) AM_RAM_WRITE(bg1_w) AM_SHARE("bg1_ram")
- AM_RANGE(0x606000, 0x607fff) AM_RAM_WRITE(bg15_1_w) AM_SHARE("bg15_1_ram") // r5g5b5 200x200 tile-based
- AM_RANGE(0x608000, 0x609fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x60c000, 0x60c003) AM_RAM AM_SHARE("scroll") // write
- AM_RANGE(0x60c00c, 0x60c00d) AM_RAM AM_SHARE("enable") // write
+ map(0x600000, 0x603fff).ram().w(this, FUNC(joystand_state::bg2_w)).share("bg2_ram");
+ map(0x604000, 0x605fff).ram().w(this, FUNC(joystand_state::bg1_w)).share("bg1_ram");
+ map(0x606000, 0x607fff).ram().w(this, FUNC(joystand_state::bg15_1_w)).share("bg15_1_ram"); // r5g5b5 200x200 tile-based
+ map(0x608000, 0x609fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x60c000, 0x60c003).ram().share("scroll"); // write
+ map(0x60c00c, 0x60c00d).ram().share("enable"); // write
- AM_RANGE(0x800000, 0xdfffff) AM_READWRITE(cart_r, cart_w) // r/w (cart flash)
+ map(0x800000, 0xdfffff).rw(this, FUNC(joystand_state::cart_r), FUNC(joystand_state::cart_w)); // r/w (cart flash)
// AM_RANGE(0xe00080, 0xe00081) // write (bit 0 = cart? bit 1 = ? bit 3 = ?)
- AM_RANGE(0xe00000, 0xe00001) AM_READ(e00000_r) // copy slot
- AM_RANGE(0xe00020, 0xe00021) AM_READ(e00020_r) // master slot
+ map(0xe00000, 0xe00001).r(this, FUNC(joystand_state::e00000_r)); // copy slot
+ map(0xe00020, 0xe00021).r(this, FUNC(joystand_state::e00020_r)); // master slot
- AM_RANGE(0xe80040, 0xe8005f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff)
+ map(0xe80040, 0xe8005f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
static INPUT_PORTS_START( joystand )
diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp
index 10c9262064e..4226ed522c4 100644
--- a/src/mame/drivers/jp.cpp
+++ b/src/mame/drivers/jp.cpp
@@ -84,24 +84,26 @@ private:
};
-ADDRESS_MAP_START(jp_state::jp_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram") // ram-"5128" battery backed
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_device, address_w)
- AM_RANGE(0x6001, 0x6001) AM_MIRROR(0x1ffc) AM_DEVREAD("ay", ay8910_device, data_r)
- AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_device, data_w)
- AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_WRITE(out1_w)
- AM_RANGE(0xc000, 0xc007) AM_MIRROR(0x1ff8) AM_WRITE(out2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jp_state::jp_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // includes ADPCM data from 0x0400 to 0x3fff
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x5000, 0x5000) AM_WRITE(sample_bank_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0x7000, 0x7000) AM_WRITE(adpcm_reset_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("adpcm_bank")
-ADDRESS_MAP_END
+void jp_state::jp_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).mirror(0x1800).ram().share("nvram"); // ram-"5128" battery backed
+ map(0x6000, 0x6000).mirror(0x1ffc).w("ay", FUNC(ay8910_device::address_w));
+ map(0x6001, 0x6001).mirror(0x1ffc).r("ay", FUNC(ay8910_device::data_r));
+ map(0x6002, 0x6002).mirror(0x1ffc).w("ay", FUNC(ay8910_device::data_w));
+ map(0xa000, 0xa007).mirror(0x1ff8).w(this, FUNC(jp_state::out1_w));
+ map(0xc000, 0xc007).mirror(0x1ff8).w(this, FUNC(jp_state::out2_w));
+}
+
+void jp_state::jp_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // includes ADPCM data from 0x0400 to 0x3fff
+ map(0x4000, 0x47ff).ram();
+ map(0x5000, 0x5000).w(this, FUNC(jp_state::sample_bank_w));
+ map(0x6000, 0x6000).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0x7000, 0x7000).w(this, FUNC(jp_state::adpcm_reset_w));
+ map(0x8000, 0xffff).bankr("adpcm_bank");
+}
static INPUT_PORTS_START( jp )
PORT_START("SW.0")
diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp
index 3a134968d51..3e973236ccf 100644
--- a/src/mame/drivers/jpmimpct.cpp
+++ b/src/mame/drivers/jpmimpct.cpp
@@ -585,54 +585,56 @@ WRITE16_MEMBER(jpmimpct_state::jpmio_w)
* Main CPU memory handlers
*
*************************************/
-ADDRESS_MAP_START(jpmimpct_state::m68k_program_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
- AM_RANGE(0x00100000, 0x001fffff) AM_ROM
- AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x00480000, 0x0048001f) AM_READWRITE(duart_1_r, duart_1_w)
- AM_RANGE(0x00480020, 0x00480033) AM_READ(inputs1_r)
- AM_RANGE(0x00480034, 0x00480035) AM_READ(unk_r)
- AM_RANGE(0x00480060, 0x00480067) AM_READWRITE(unk_r, unk_w)//PPI
- AM_RANGE(0x00480080, 0x00480081) AM_WRITE(upd7759_w)
- AM_RANGE(0x00480082, 0x00480083) AM_WRITE(volume_w)
- AM_RANGE(0x00480084, 0x00480085) AM_READ(upd7759_r)
- AM_RANGE(0x004800a0, 0x004800af) AM_READWRITE(jpmio_r, jpmio_w)
- AM_RANGE(0x004800e0, 0x004800e1) AM_WRITE(unk_w)
- AM_RANGE(0x004801dc, 0x004801dd) AM_READ(unk_r)
- AM_RANGE(0x004801de, 0x004801df) AM_READ(unk_r)
- AM_RANGE(0x004801e0, 0x004801ff) AM_READWRITE(duart_2_r, duart_2_w)
- AM_RANGE(0x00800000, 0x00800007) AM_DEVREADWRITE("dsp", tms34010_device, host_r, host_w)
- AM_RANGE(0x00c00000, 0x00cfffff) AM_ROM
- AM_RANGE(0x00d00000, 0x00dfffff) AM_ROM
- AM_RANGE(0x00e00000, 0x00efffff) AM_ROM
- AM_RANGE(0x00f00000, 0x00ffffff) AM_ROM
-ADDRESS_MAP_END
+void jpmimpct_state::m68k_program_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom();
+ map(0x00100000, 0x001fffff).rom();
+ map(0x00400000, 0x00403fff).ram().share("nvram");
+ map(0x00480000, 0x0048001f).rw(this, FUNC(jpmimpct_state::duart_1_r), FUNC(jpmimpct_state::duart_1_w));
+ map(0x00480020, 0x00480033).r(this, FUNC(jpmimpct_state::inputs1_r));
+ map(0x00480034, 0x00480035).r(this, FUNC(jpmimpct_state::unk_r));
+ map(0x00480060, 0x00480067).rw(this, FUNC(jpmimpct_state::unk_r), FUNC(jpmimpct_state::unk_w));//PPI
+ map(0x00480080, 0x00480081).w(this, FUNC(jpmimpct_state::upd7759_w));
+ map(0x00480082, 0x00480083).w(this, FUNC(jpmimpct_state::volume_w));
+ map(0x00480084, 0x00480085).r(this, FUNC(jpmimpct_state::upd7759_r));
+ map(0x004800a0, 0x004800af).rw(this, FUNC(jpmimpct_state::jpmio_r), FUNC(jpmimpct_state::jpmio_w));
+ map(0x004800e0, 0x004800e1).w(this, FUNC(jpmimpct_state::unk_w));
+ map(0x004801dc, 0x004801dd).r(this, FUNC(jpmimpct_state::unk_r));
+ map(0x004801de, 0x004801df).r(this, FUNC(jpmimpct_state::unk_r));
+ map(0x004801e0, 0x004801ff).rw(this, FUNC(jpmimpct_state::duart_2_r), FUNC(jpmimpct_state::duart_2_w));
+ map(0x00800000, 0x00800007).rw(m_dsp, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+ map(0x00c00000, 0x00cfffff).rom();
+ map(0x00d00000, 0x00dfffff).rom();
+ map(0x00e00000, 0x00efffff).rom();
+ map(0x00f00000, 0x00ffffff).rom();
+}
/*************************************
*
* Main CPU memory handlers
*
*************************************/
-ADDRESS_MAP_START(jpmimpct_state::awp68k_program_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM // most games are 0x00000000 - 0x0003ffff, but some QPS ones go up to fffff, check for any mirroring etc.
- AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x00480000, 0x0048001f) AM_READWRITE(duart_1_r, duart_1_w)
- AM_RANGE(0x00480020, 0x00480033) AM_READ(inputs1awp_r)
- AM_RANGE(0x00480034, 0x00480035) AM_READ(ump_r)
- AM_RANGE(0x00480040, 0x00480041) AM_READ(optos_r)
- AM_RANGE(0x00480060, 0x00480067) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write,0x00ff)
- AM_RANGE(0x00480080, 0x00480081) AM_WRITE(upd7759_w)
- AM_RANGE(0x00480082, 0x00480083) AM_WRITE(volume_w)
- AM_RANGE(0x00480084, 0x00480085) AM_READ(upd7759_r)
- AM_RANGE(0x00480086, 0x0048009f) AM_READ(prot_1_r)
- AM_RANGE(0x004800a0, 0x004800af) AM_READWRITE(jpmio_r, jpmioawp_w)
+void jpmimpct_state::awp68k_program_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom(); // most games are 0x00000000 - 0x0003ffff, but some QPS ones go up to fffff, check for any mirroring etc.
+ map(0x00400000, 0x00403fff).ram().share("nvram");
+ map(0x00480000, 0x0048001f).rw(this, FUNC(jpmimpct_state::duart_1_r), FUNC(jpmimpct_state::duart_1_w));
+ map(0x00480020, 0x00480033).r(this, FUNC(jpmimpct_state::inputs1awp_r));
+ map(0x00480034, 0x00480035).r(this, FUNC(jpmimpct_state::ump_r));
+ map(0x00480040, 0x00480041).r(this, FUNC(jpmimpct_state::optos_r));
+ map(0x00480060, 0x00480067).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x00480080, 0x00480081).w(this, FUNC(jpmimpct_state::upd7759_w));
+ map(0x00480082, 0x00480083).w(this, FUNC(jpmimpct_state::volume_w));
+ map(0x00480084, 0x00480085).r(this, FUNC(jpmimpct_state::upd7759_r));
+ map(0x00480086, 0x0048009f).r(this, FUNC(jpmimpct_state::prot_1_r));
+ map(0x004800a0, 0x004800af).rw(this, FUNC(jpmimpct_state::jpmio_r), FUNC(jpmimpct_state::jpmioawp_w));
// AM_RANGE(0x004800b0, 0x004800df) AM_READ(prot_1_r)
// AM_RANGE(0x004800e0, 0x004800e1) AM_WRITE(unk_w)
// AM_RANGE(0x00480086, 0x006576ff) AM_READ(prot_1_r)
- AM_RANGE(0x004801dc, 0x004801dd) AM_READ(prot_1_r)
- AM_RANGE(0x004801de, 0x006575ff) AM_READ(prot_1_r)
- AM_RANGE(0x00657600, 0x00657601) AM_READ(prot_0_r)
- AM_RANGE(0x00657602, 0x00ffffff) AM_READ(prot_1_r)
+ map(0x004801dc, 0x004801dd).r(this, FUNC(jpmimpct_state::prot_1_r));
+ map(0x004801de, 0x006575ff).r(this, FUNC(jpmimpct_state::prot_1_r));
+ map(0x00657600, 0x00657601).r(this, FUNC(jpmimpct_state::prot_0_r));
+ map(0x00657602, 0x00ffffff).r(this, FUNC(jpmimpct_state::prot_1_r));
// AM_RANGE(0x004801dc, 0x004801dd) AM_READ(unk_r)
// AM_RANGE(0x004801de, 0x004801df) AM_READ(unk_r)
@@ -642,7 +644,7 @@ ADDRESS_MAP_START(jpmimpct_state::awp68k_program_map)
// AM_RANGE(0x00d00000, 0x00dfffff) AM_ROM
// AM_RANGE(0x00e00000, 0x00efffff) AM_ROM
// AM_RANGE(0x00f00000, 0x00ffffff) AM_ROM
-ADDRESS_MAP_END
+}
/*************************************
@@ -651,15 +653,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(jpmimpct_state::tms_program_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0xf8000000) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0xf8000000) AM_ROM AM_REGION("user1", 0x100000)
- AM_RANGE(0x02000000, 0x027fffff) AM_MIRROR(0xf8000000) AM_ROM AM_REGION("user1", 0)
+void jpmimpct_state::tms_program_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).mirror(0xf8000000).ram().share("vram");
+ map(0x00800000, 0x00ffffff).mirror(0xf8000000).rom().region("user1", 0x100000);
+ map(0x02000000, 0x027fffff).mirror(0xf8000000).rom().region("user1", 0);
// AM_RANGE(0x01000000, 0x0100003f) AM_MIRROR(0xf87fffc0) AM_READWRITE(jpmimpct_bt477_r, jpmimpct_bt477_w)
- AM_RANGE(0x01000000, 0x017fffff) AM_MIRROR(0xf8000000) AM_MASK(0x1f) AM_READWRITE(jpmimpct_bt477_r, jpmimpct_bt477_w)
- AM_RANGE(0x07800000, 0x07bfffff) AM_MIRROR(0xf8400000) AM_RAM
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("dsp", tms34010_device, io_register_r, io_register_w)
-ADDRESS_MAP_END
+ map(0x01000000, 0x017fffff).mirror(0xf8000000).mask(0x1f).rw(this, 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));
+}
/*************************************
diff --git a/src/mame/drivers/jpmmps.cpp b/src/mame/drivers/jpmmps.cpp
index 3417aa3d713..de1acd8d302 100644
--- a/src/mame/drivers/jpmmps.cpp
+++ b/src/mame/drivers/jpmmps.cpp
@@ -165,20 +165,22 @@ public:
DECLARE_WRITE8_MEMBER(jpmmps_ic22_portc_w);
};
-ADDRESS_MAP_START(jpmmps_state::jpmmps_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
+void jpmmps_state::jpmmps_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_ic26", i8255_device, read, write)
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_ic21", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_ic22", i8255_device, read, write)
- AM_RANGE(0xc00c, 0xc00f) AM_DEVREADWRITE("ppi8255_ic25", i8255_device, read, write)
+ map(0xc000, 0xc003).rw("ppi8255_ic26", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc004, 0xc007).rw("ppi8255_ic21", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).rw("ppi8255_ic22", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc00c, 0xc00f).rw("ppi8255_ic25", FUNC(i8255_device::read), FUNC(i8255_device::write));
- AM_RANGE(0xe800, 0xefff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe800, 0xefff).ram();
+}
-ADDRESS_MAP_START(jpmmps_state::jpmmps_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("tms9902_ic5", tms9902_device, cruread, cruwrite)
+void jpmmps_state::jpmmps_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x001f).rw("tms9902_ic5", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
// AM_RANGE(0x0020, 0x0020) // power fail
// AM_RANGE(0x0021, 0x0021) // wd timeout
@@ -188,9 +190,9 @@ ADDRESS_MAP_START(jpmmps_state::jpmmps_io_map)
// AM_RANGE(0x0026, 0x0026) // uart4 int
// AM_RANGE(0x0027, 0x0027) // uart2 int
- AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE("tms9902_ic10", tms9902_device, cruread, cruwrite)
- AM_RANGE(0x0060, 0x0067) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+ map(0x0040, 0x005f).rw("tms9902_ic10", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
+ map(0x0060, 0x0067).w("mainlatch", FUNC(ls259_device::write_d0));
+}
static INPUT_PORTS_START( jpmmps )
diff --git a/src/mame/drivers/jpms80.cpp b/src/mame/drivers/jpms80.cpp
index 6cd5547645b..860eebad8b9 100644
--- a/src/mame/drivers/jpms80.cpp
+++ b/src/mame/drivers/jpms80.cpp
@@ -88,29 +88,31 @@ WRITE_LINE_MEMBER(jpms80_state::io_enable_w)
{
}
-ADDRESS_MAP_START(jpms80_state::jpms80_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_RAM
-ADDRESS_MAP_END
+void jpms80_state::jpms80_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x3fff).ram();
+}
-ADDRESS_MAP_START(jpms80_state::jpms80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1ff)
+void jpms80_state::jpms80_io_map(address_map &map)
+{
+ map.global_mask(0x1ff);
// AM_RANGE(0x0000, 0x001f) // I/O & Optic (in)
- AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("outlatch0", ls259_device, write_d0)
- AM_RANGE(0x0008, 0x000f) AM_DEVWRITE("outlatch1", ls259_device, write_d0)
- AM_RANGE(0x0010, 0x0017) AM_DEVWRITE("outlatch2", ls259_device, write_d0)
- AM_RANGE(0x0018, 0x001f) AM_DEVWRITE("outlatch3", ls259_device, write_d0)
- AM_RANGE(0x0020, 0x0027) AM_DEVWRITE("outlatch4", ls259_device, write_d0)
- AM_RANGE(0x0028, 0x002f) AM_DEVWRITE("outlatch5", ls259_device, write_d0)
- AM_RANGE(0x0030, 0x0037) AM_DEVWRITE("outlatch6", ls259_device, write_d0)
- AM_RANGE(0x0038, 0x003f) AM_DEVWRITE("outlatch7", ls259_device, write_d0)
- AM_RANGE(0x0040, 0x0047) AM_DEVWRITE("outlatch8", ls259_device, write_d0)
- AM_RANGE(0x0048, 0x004f) AM_DEVWRITE("outlatch9", ls259_device, write_d0)
- AM_RANGE(0x0050, 0x0057) AM_DEVWRITE("outlatch10", ls259_device, write_d0)
+ 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
- AM_RANGE(0x01e0, 0x01ff) AM_DEVREADWRITE("tms9902duart", tms9902_device, cruread, cruwrite)
+ map(0x01e0, 0x01ff).rw("tms9902duart", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite));
// Lamps, Meters etc. can move around
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( jpms80 )
diff --git a/src/mame/drivers/jpmsru.cpp b/src/mame/drivers/jpmsru.cpp
index 5fe0a58a6c4..f99719b8d35 100644
--- a/src/mame/drivers/jpmsru.cpp
+++ b/src/mame/drivers/jpmsru.cpp
@@ -48,21 +48,24 @@ public:
/* System with RAM at 0x0c00 */
-ADDRESS_MAP_START(jpmsru_state::jpmsru_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0eff) AM_RAM
-ADDRESS_MAP_END
+void jpmsru_state::jpmsru_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0eff).ram();
+}
/* System with RAM at 0x0e00 */
-ADDRESS_MAP_START(jpmsru_state::jpmsru_4_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0eff) AM_RAM
- AM_RANGE(0x0f00, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void jpmsru_state::jpmsru_4_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0eff).ram();
+ map(0x0f00, 0x0fff).rom();
+}
-ADDRESS_MAP_START(jpmsru_state::jpmsru_io)
-ADDRESS_MAP_END
+void jpmsru_state::jpmsru_io(address_map &map)
+{
+}
static INPUT_PORTS_START( jpmsru )
diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp
index 26ab8b59d9f..3bf67b2275e 100644
--- a/src/mame/drivers/jpmsys5.cpp
+++ b/src/mame/drivers/jpmsys5.cpp
@@ -274,42 +274,46 @@ READ16_MEMBER(jpmsys5_state::jpm_upd7759_r)
*
*************************************/
-ADDRESS_MAP_START(jpmsys5_state::jpm_sys5_common_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x046000, 0x046001) AM_WRITENOP
- AM_RANGE(0x046020, 0x046023) AM_DEVREADWRITE8("acia6850_0", acia6850_device, read, write, 0xff)
- AM_RANGE(0x046040, 0x04604f) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0xff)
- AM_RANGE(0x046060, 0x046067) AM_DEVREADWRITE8("6821pia", pia6821_device, read, write,0xff)
- AM_RANGE(0x046080, 0x046083) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0xff)
- AM_RANGE(0x04608c, 0x04608f) AM_DEVREADWRITE8("acia6850_2", acia6850_device, read, write, 0xff)
- AM_RANGE(0x0460c0, 0x0460c1) AM_WRITENOP
- AM_RANGE(0x048000, 0x04801f) AM_READWRITE(coins_r, coins_w)
- AM_RANGE(0x04c000, 0x04c0ff) AM_READ(mux_r) AM_WRITE(mux_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jpmsys5_state::m68000_awp_map)
- AM_IMPORT_FROM(jpm_sys5_common_map)
- AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jpmsys5_state::m68000_awp_map_saa)
- AM_IMPORT_FROM(jpm_sys5_common_map)
- AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w) // do the SAA boards have the UPD?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jpmsys5v_state::m68000_map)
- AM_IMPORT_FROM(jpm_sys5_common_map)
- AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE(rombank_w) // extra on video system (rom board?) (although regular games do write here?)
- AM_RANGE(0x020000, 0x03ffff) AM_ROMBANK("bank1") // extra on video system (rom board?)
- AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff)
- AM_RANGE(0x0460e0, 0x0460e5) AM_WRITE(ramdac_w) // extra on video system (rom board?)
- AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w)
- AM_RANGE(0x800000, 0xcfffff) AM_READWRITE(sys5_tms34061_r, sys5_tms34061_w) // extra on video system (rom board?)
-ADDRESS_MAP_END
+void jpmsys5_state::jpm_sys5_common_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x043fff).ram().share("nvram");
+ map(0x046000, 0x046001).nopw();
+ map(0x046020, 0x046023).rw("acia6850_0", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x046040, 0x04604f).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0x046060, 0x046067).rw("6821pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff);
+ map(0x046080, 0x046083).rw("acia6850_1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x04608c, 0x04608f).rw("acia6850_2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0x0460c0, 0x0460c1).nopw();
+ map(0x048000, 0x04801f).rw(this, FUNC(jpmsys5_state::coins_r), FUNC(jpmsys5_state::coins_w));
+ map(0x04c000, 0x04c0ff).r(this, FUNC(jpmsys5_state::mux_r)).w(this, FUNC(jpmsys5_state::mux_w));
+}
+
+void jpmsys5_state::m68000_awp_map(address_map &map)
+{
+ jpm_sys5_common_map(map);
+ map(0x0460a0, 0x0460a3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x04c100, 0x04c105).rw(this, FUNC(jpmsys5_state::jpm_upd7759_r), FUNC(jpmsys5_state::jpm_upd7759_w));
+}
+
+void jpmsys5_state::m68000_awp_map_saa(address_map &map)
+{
+ jpm_sys5_common_map(map);
+ map(0x0460a0, 0x0460a3).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0x04c100, 0x04c105).rw(this, FUNC(jpmsys5_state::jpm_upd7759_r), FUNC(jpmsys5_state::jpm_upd7759_w)); // do the SAA boards have the UPD?
+}
+
+void jpmsys5v_state::m68000_map(address_map &map)
+{
+ jpm_sys5_common_map(map);
+ map(0x01fffe, 0x01ffff).w(this, FUNC(jpmsys5v_state::rombank_w)); // extra on video system (rom board?) (although regular games do write here?)
+ map(0x020000, 0x03ffff).bankr("bank1"); // extra on video system (rom board?)
+ map(0x0460a0, 0x0460a3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x0460e0, 0x0460e5).w(this, FUNC(jpmsys5v_state::ramdac_w)); // extra on video system (rom board?)
+ map(0x04c100, 0x04c105).rw(this, FUNC(jpmsys5v_state::jpm_upd7759_r), FUNC(jpmsys5v_state::jpm_upd7759_w));
+ map(0x800000, 0xcfffff).rw(this, FUNC(jpmsys5v_state::sys5_tms34061_r), FUNC(jpmsys5v_state::sys5_tms34061_w)); // extra on video system (rom board?)
+}
diff --git a/src/mame/drivers/jpmsys7.cpp b/src/mame/drivers/jpmsys7.cpp
index 9da4732afbd..0613d14fa74 100644
--- a/src/mame/drivers/jpmsys7.cpp
+++ b/src/mame/drivers/jpmsys7.cpp
@@ -42,14 +42,15 @@ protected:
};
-ADDRESS_MAP_START(jpmsys7_state::jpmsys7_map)
- AM_RANGE(0x00000000, 0x002fffff) AM_ROM
- AM_RANGE(0x10000000, 0x1000ffff) AM_RAM
- AM_RANGE(0x20000018, 0x2000001b) AM_WRITENOP // large data upload like astra/pluto?
- AM_RANGE(0x50000000, 0x50001fff) AM_RAM
-
- AM_RANGE(0xf0000000, 0xf00003ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR
-ADDRESS_MAP_END
+void jpmsys7_state::jpmsys7_map(address_map &map)
+{
+ map(0x00000000, 0x002fffff).rom();
+ map(0x10000000, 0x1000ffff).ram();
+ map(0x20000018, 0x2000001b).nopw(); // large data upload like astra/pluto?
+ map(0x50000000, 0x50001fff).ram();
+
+ map(0xf0000000, 0xf00003ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR
+}
static INPUT_PORTS_START( jpmsys7 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp
index 5419e92b447..189a4c689a0 100644
--- a/src/mame/drivers/jr100.cpp
+++ b/src/mame/drivers/jr100.cpp
@@ -130,14 +130,15 @@ WRITE8_MEMBER(jr100_state::jr100_via_w)
m_via->write(space,offset,data);
}
-ADDRESS_MAP_START(jr100_state::jr100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("pcg")
- AM_RANGE(0xc100, 0xc3ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xc800, 0xc80f) AM_DEVREAD("via", via6522_device, read) AM_WRITE(jr100_via_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void jr100_state::jr100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("ram");
+ map(0xc000, 0xc0ff).ram().share("pcg");
+ map(0xc100, 0xc3ff).ram().share("vram");
+ map(0xc800, 0xc80f).r(m_via, FUNC(via6522_device::read)).w(this, FUNC(jr100_state::jr100_via_w));
+ map(0xe000, 0xffff).rom();
+}
/* Input ports */
INPUT_PORTS_START( jr100 )
diff --git a/src/mame/drivers/jr200.cpp b/src/mame/drivers/jr200.cpp
index 2ede1966cc5..41fcce12e8e 100644
--- a/src/mame/drivers/jr200.cpp
+++ b/src/mame/drivers/jr200.cpp
@@ -372,29 +372,30 @@ WRITE8_MEMBER(jr200_state::mn1271_io_w)
}
}
-ADDRESS_MAP_START(jr200_state::jr200_mem)
+void jr200_state::jr200_mem(address_map &map)
+{
/*
0000-3fff RAM
4000-4fff RAM ( 4k expansion)
4000-7fff RAM (16k expansion)
4000-bfff RAM (32k expansion)
*/
- AM_RANGE(0x0000, 0x7fff) AM_RAM
+ map(0x0000, 0x7fff).ram();
- AM_RANGE(0xa000, 0xbfff) AM_ROM
+ map(0xa000, 0xbfff).rom();
- AM_RANGE(0xc000, 0xc0ff) AM_READWRITE(jr200_pcg_1_r,jr200_pcg_1_w) //PCG area (1)
- AM_RANGE(0xc100, 0xc3ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xc400, 0xc4ff) AM_READWRITE(jr200_pcg_2_r,jr200_pcg_2_w) //PCG area (2)
- AM_RANGE(0xc500, 0xc7ff) AM_RAM AM_SHARE("cram")
+ map(0xc000, 0xc0ff).rw(this, FUNC(jr200_state::jr200_pcg_1_r), FUNC(jr200_state::jr200_pcg_1_w)); //PCG area (1)
+ map(0xc100, 0xc3ff).ram().share("vram");
+ map(0xc400, 0xc4ff).rw(this, FUNC(jr200_state::jr200_pcg_2_r), FUNC(jr200_state::jr200_pcg_2_w)); //PCG area (2)
+ map(0xc500, 0xc7ff).ram().share("cram");
// 0xc800 - 0xcfff I / O area
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(mn1271_io_r,mn1271_io_w) AM_SHARE("mn1271_ram")
+ map(0xc800, 0xcfff).rw(this, FUNC(jr200_state::mn1271_io_r), FUNC(jr200_state::mn1271_io_w)).share("mn1271_ram");
- AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(jr200_bios_char_r,jr200_bios_char_w) //BIOS PCG RAM area
- AM_RANGE(0xd800, 0xdfff) AM_ROM // cart space (header 0x7e)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xd000, 0xd7ff).rw(this, FUNC(jr200_state::jr200_bios_char_r), FUNC(jr200_state::jr200_bios_char_w)); //BIOS PCG RAM area
+ map(0xd800, 0xdfff).rom(); // cart space (header 0x7e)
+ map(0xe000, 0xffff).rom();
+}
/* Input ports */
static INPUT_PORTS_START( jr200 )
diff --git a/src/mame/drivers/jrpacman.cpp b/src/mame/drivers/jrpacman.cpp
index 93b85e7355c..75eb62c2f7d 100644
--- a/src/mame/drivers/jrpacman.cpp
+++ b/src/mame/drivers/jrpacman.cpp
@@ -142,28 +142,30 @@ WRITE_LINE_MEMBER(jrpacman_state::irq_mask_w)
*
*************************************/
-ADDRESS_MAP_START(jrpacman_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(jrpacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fef) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x503f) AM_READ_PORT("P1")
- AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("latch1", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x507f) AM_READ_PORT("P2")
- AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x5077) AM_DEVWRITE("latch2", ls259_device, write_d0)
- AM_RANGE(0x5080, 0x50bf) AM_READ_PORT("DSW")
- AM_RANGE(0x5080, 0x5080) AM_WRITE(jrpacman_scroll_w)
- AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0xdfff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jrpacman_state::port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0, 0) AM_WRITE(jrpacman_interrupt_vector_w)
-ADDRESS_MAP_END
+void jrpacman_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().w(this, FUNC(jrpacman_state::jrpacman_videoram_w)).share("videoram");
+ map(0x4800, 0x4fef).ram();
+ map(0x4ff0, 0x4fff).ram().share("spriteram");
+ map(0x5000, 0x503f).portr("P1");
+ map(0x5000, 0x5007).w("latch1", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x507f).portr("P2");
+ map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).writeonly().share("spriteram2");
+ map(0x5070, 0x5077).w("latch2", FUNC(ls259_device::write_d0));
+ map(0x5080, 0x50bf).portr("DSW");
+ map(0x5080, 0x5080).w(this, FUNC(jrpacman_state::jrpacman_scroll_w));
+ map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0xdfff).rom();
+}
+
+
+void jrpacman_state::port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0, 0).w(this, FUNC(jrpacman_state::jrpacman_interrupt_vector_w));
+}
diff --git a/src/mame/drivers/jtc.cpp b/src/mame/drivers/jtc.cpp
index ec4ae25d00e..d70e07ac9e4 100644
--- a/src/mame/drivers/jtc.cpp
+++ b/src/mame/drivers/jtc.cpp
@@ -210,86 +210,90 @@ WRITE8_MEMBER( jtces40_state::banksel_w )
/* Memory Maps */
-ADDRESS_MAP_START(jtc_state::jtc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1")
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2")
- AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3")
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4")
- AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5")
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6")
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7")
- AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8")
- AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9")
- AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10")
- AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11")
- AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12")
- AM_RANGE(0xe000, 0xfdff) AM_RAM
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jtces88_state::jtc_es1988_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0800, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_ROM
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1")
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2")
- AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3")
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4")
- AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5")
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6")
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7")
- AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8")
- AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9")
- AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10")
- AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11")
- AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12")
- AM_RANGE(0xe000, 0xfdff) AM_RAM
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jtces23_state::jtc_es23_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0800, 0x17ff) AM_ROM
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff0) AM_READ_PORT("Y0")
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1")
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2")
- AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3")
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4")
- AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5")
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6")
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7")
- AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8")
- AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9")
- AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10")
- AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11")
- AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12")
- AM_RANGE(0x700d, 0x700d) AM_MIRROR(0x0ff0) AM_READ_PORT("Y13")
- AM_RANGE(0x700e, 0x700e) AM_MIRROR(0x0ff0) AM_READ_PORT("Y14")
- AM_RANGE(0x700f, 0x700f) AM_MIRROR(0x0ff0) AM_READ_PORT("Y15")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jtces40_state::jtc_es40_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0800, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_READWRITE(videoram_r, videoram_w)
- AM_RANGE(0x6000, 0x63ff) AM_WRITE(banksel_w)
- AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1")
- AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2")
- AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3")
- AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4")
- AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5")
- AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6")
- AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7")
- AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8")
- AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9")
- AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10")
- AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11")
- AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12")
- AM_RANGE(0x8000, 0xffff) AM_RAM//BANK(1)
-ADDRESS_MAP_END
+void jtc_state::jtc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1");
+ map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2");
+ map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3");
+ map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4");
+ map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5");
+ map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6");
+ map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7");
+ map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8");
+ map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9");
+ map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10");
+ map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11");
+ map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12");
+ map(0xe000, 0xfdff).ram();
+ map(0xfe00, 0xffff).ram().share("video_ram");
+}
+
+void jtces88_state::jtc_es1988_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0800, 0x0fff).rom();
+ map(0x2000, 0x27ff).rom();
+ map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1");
+ map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2");
+ map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3");
+ map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4");
+ map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5");
+ map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6");
+ map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7");
+ map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8");
+ map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9");
+ map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10");
+ map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11");
+ map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12");
+ map(0xe000, 0xfdff).ram();
+ map(0xfe00, 0xffff).ram().share("video_ram");
+}
+
+void jtces23_state::jtc_es23_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0800, 0x17ff).rom();
+ map(0x7000, 0x7000).mirror(0x0ff0).portr("Y0");
+ map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1");
+ map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2");
+ map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3");
+ map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4");
+ map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5");
+ map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6");
+ map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7");
+ map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8");
+ map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9");
+ map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10");
+ map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11");
+ map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12");
+ map(0x700d, 0x700d).mirror(0x0ff0).portr("Y13");
+ map(0x700e, 0x700e).mirror(0x0ff0).portr("Y14");
+ map(0x700f, 0x700f).mirror(0x0ff0).portr("Y15");
+ map(0xe000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("video_ram");
+}
+
+void jtces40_state::jtc_es40_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0800, 0x1fff).rom();
+ map(0x4000, 0x5fff).rw(this, FUNC(jtces40_state::videoram_r), FUNC(jtces40_state::videoram_w));
+ map(0x6000, 0x63ff).w(this, FUNC(jtces40_state::banksel_w));
+ map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1");
+ map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2");
+ map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3");
+ map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4");
+ map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5");
+ map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6");
+ map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7");
+ map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8");
+ map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9");
+ map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10");
+ map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11");
+ map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12");
+ map(0x8000, 0xffff).ram();//BANK(1)
+}
/* Input Ports */
diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp
index 7b7bfb9a71c..678810b9050 100644
--- a/src/mame/drivers/jubilee.cpp
+++ b/src/mame/drivers/jubilee.cpp
@@ -296,30 +296,31 @@ INTERRUPT_GEN_MEMBER(jubilee_state::jubileep_interrupt)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(jubilee_state::jubileep_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
+void jubilee_state::jubileep_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x2fff).rom();
/* Video RAM = 3000-33FF
Working RAM = 3400-37FF
Color RAM = 3800-3BFF (lower 4-bits)
*/
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_WRITE(jubileep_videoram_w) AM_SHARE("videoworkram") /* TC5517AP battery backed RAM */
- AM_RANGE(0x3800, 0x3bff) AM_RAM AM_WRITE(jubileep_colorram_w) AM_SHARE("colorram") /* Whole 2114 RAM */
+ map(0x3000, 0x37ff).ram().w(this, FUNC(jubilee_state::jubileep_videoram_w)).share("videoworkram"); /* TC5517AP battery backed RAM */
+ map(0x3800, 0x3bff).ram().w(this, FUNC(jubilee_state::jubileep_colorram_w)).share("colorram"); /* Whole 2114 RAM */
/* CRTC *is* mapped here. Read 00-01 and then write on them.
Then does the same for 02-03. Initialization seems incomplete since
set till register 0x0D. Maybe the last registers are unused.
*/
- AM_RANGE(0x3e00, 0x3e01) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x3e02, 0x3e03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ map(0x3e00, 0x3e01).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x3e02, 0x3e03).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
/* CRTC address: $3E01; register: $3E03
CRTC registers: 2f 20 25 64 26 00 20 23 00 07 00 00 00
screen total: (0x2f+1)*8 (0x26+1)*(0x07+1) ---> 384 x 312
visible area: 0x20 0x20 ---------------------> 256 x 256
*/
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(jubilee_state::unk_w)
@@ -568,10 +569,11 @@ READ8_MEMBER(jubilee_state::mux_port_r)
}
-ADDRESS_MAP_START(jubilee_state::jubileep_cru_map)
- AM_RANGE(0x00c8, 0x00c8) AM_READ(mux_port_r) /* multiplexed input port */
- AM_RANGE(0x0000, 0x07ff) AM_WRITE(unk_w)
-ADDRESS_MAP_END
+void jubilee_state::jubileep_cru_map(address_map &map)
+{
+ map(0x00c8, 0x00c8).r(this, FUNC(jubilee_state::mux_port_r)); /* multiplexed input port */
+ map(0x0000, 0x07ff).w(this, FUNC(jubilee_state::unk_w));
+}
/* I/O byte R/W
diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp
index e4f27c52c56..e09efe19829 100644
--- a/src/mame/drivers/juicebox.cpp
+++ b/src/mame/drivers/juicebox.cpp
@@ -288,11 +288,12 @@ void juicebox_state::machine_reset()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(juicebox_state::juicebox_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_ROM
- AM_RANGE(0x04000000, 0x04ffffff) AM_READWRITE(juicebox_nand_r, juicebox_nand_w )
- AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_MIRROR(0x00600000)
-ADDRESS_MAP_END
+void juicebox_state::juicebox_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).rom();
+ map(0x04000000, 0x04ffffff).rw(this, FUNC(juicebox_state::juicebox_nand_r), FUNC(juicebox_state::juicebox_nand_w));
+ map(0x0c000000, 0x0c1fffff).ram().mirror(0x00600000);
+}
/***************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/jungleyo.cpp b/src/mame/drivers/jungleyo.cpp
index a63491930a3..44d2daba9da 100644
--- a/src/mame/drivers/jungleyo.cpp
+++ b/src/mame/drivers/jungleyo.cpp
@@ -73,9 +73,10 @@ uint32_t jungleyo_state::screen_update_jungleyo(screen_device &screen, bitmap_in
}
-ADDRESS_MAP_START(jungleyo_state::jungleyo_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
-ADDRESS_MAP_END
+void jungleyo_state::jungleyo_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+}
static INPUT_PORTS_START( jungleyo )
INPUT_PORTS_END
diff --git a/src/mame/drivers/junior.cpp b/src/mame/drivers/junior.cpp
index dd4c158e88b..708b2af7790 100644
--- a/src/mame/drivers/junior.cpp
+++ b/src/mame/drivers/junior.cpp
@@ -72,14 +72,15 @@ private:
-ADDRESS_MAP_START(junior_state::junior_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x1FFF)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM // 1K RAM
- AM_RANGE(0x1a00, 0x1a7f) AM_DEVICE("riot", mos6532_new_device, ram_map)
- AM_RANGE(0x1a80, 0x1a9f) AM_DEVICE("riot", mos6532_new_device, io_map)
- AM_RANGE(0x1c00, 0x1fff) AM_ROM // Monitor
-ADDRESS_MAP_END
+void junior_state::junior_mem(address_map &map)
+{
+ map.global_mask(0x1FFF);
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram(); // 1K RAM
+ map(0x1a00, 0x1a7f).m(m_riot, FUNC(mos6532_new_device::ram_map));
+ map(0x1a80, 0x1a9f).m(m_riot, FUNC(mos6532_new_device::io_map));
+ map(0x1c00, 0x1fff).rom(); // Monitor
+}
INPUT_CHANGED_MEMBER(junior_state::junior_reset)
diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp
index b6ec69308ae..c0133099e49 100644
--- a/src/mame/drivers/junofrst.cpp
+++ b/src/mame/drivers/junofrst.cpp
@@ -279,46 +279,50 @@ WRITE8_MEMBER(junofrst_state::i8039_irqen_and_status_w)
}
-ADDRESS_MAP_START(junofrst_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x800f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x8010, 0x8010) AM_READ_PORT("DSW2")
- AM_RANGE(0x801c, 0x801c) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8020, 0x8020) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x8024, 0x8024) AM_READ_PORT("P1")
- AM_RANGE(0x8028, 0x8028) AM_READ_PORT("P2")
- AM_RANGE(0x802c, 0x802c) AM_READ_PORT("DSW1")
- AM_RANGE(0x8030, 0x8037) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x8040, 0x8040) AM_WRITE(sh_irqtrigger_w)
- AM_RANGE(0x8050, 0x8050) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x8060, 0x8060) AM_WRITE(bankselect_w)
- AM_RANGE(0x8070, 0x8073) AM_WRITE(blitter_w)
- AM_RANGE(0x8100, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(junofrst_state::audio_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(i8039_irq_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(junofrst_state::mcu_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(junofrst_state::mcu_io_map)
- AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void junofrst_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).ram().share("videoram");
+ map(0x8000, 0x800f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x8010, 0x8010).portr("DSW2");
+ map(0x801c, 0x801c).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8020, 0x8020).portr("SYSTEM");
+ map(0x8024, 0x8024).portr("P1");
+ map(0x8028, 0x8028).portr("P2");
+ map(0x802c, 0x802c).portr("DSW1");
+ map(0x8030, 0x8037).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x8040, 0x8040).w(this, FUNC(junofrst_state::sh_irqtrigger_w));
+ map(0x8050, 0x8050).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x8060, 0x8060).w(this, FUNC(junofrst_state::bankselect_w));
+ map(0x8070, 0x8073).w(this, FUNC(junofrst_state::blitter_w));
+ map(0x8100, 0x8fff).ram();
+ map(0x9000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xffff).rom();
+}
+
+
+void junofrst_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x4000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x4001, 0x4001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x4002, 0x4002).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x5000, 0x5000).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x6000, 0x6000).w(this, FUNC(junofrst_state::i8039_irq_w));
+}
+
+
+void junofrst_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+
+void junofrst_state::mcu_io_map(address_map &map)
+{
+ map(0x00, 0xff).r("soundlatch2", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( junofrst )
diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp
index cb6b465788d..34f0bcce793 100644
--- a/src/mame/drivers/jupace.cpp
+++ b/src/mame/drivers/jupace.cpp
@@ -413,33 +413,35 @@ WRITE8_MEMBER(ace_state::pio_bc_w)
// ADDRESS_MAP( ace_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(ace_state::ace_mem)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x2800, 0x2bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("char_ram") AM_REGION(Z80_TAG, 0xfc00)
- AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void ace_state::ace_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).mirror(0x0400).ram().share("video_ram");
+ map(0x2800, 0x2bff).mirror(0x0400).ram().share("char_ram").region(Z80_TAG, 0xfc00);
+ map(0x3000, 0x33ff).mirror(0x0c00).ram();
+ map(0x4000, 0xffff).ram();
+}
//-------------------------------------------------
// ADDRESS_MAP( ace_io )
//-------------------------------------------------
-ADDRESS_MAP_START(ace_state::ace_io)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x00fe) AM_SELECT(0xff00) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xff00) AM_READ_PORT("JOY")
- AM_RANGE(0x41, 0x41) AM_MIRROR(0xff80) AM_READWRITE(ppi_pa_r, ppi_pa_w)
- AM_RANGE(0x43, 0x43) AM_MIRROR(0xff80) AM_READWRITE(ppi_pb_r, ppi_pb_w)
- AM_RANGE(0x45, 0x45) AM_MIRROR(0xff80) AM_READWRITE(ppi_pc_r, ppi_pc_w)
- AM_RANGE(0x47, 0x47) AM_MIRROR(0xff80) AM_READWRITE(ppi_control_r, ppi_control_w)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0xff38) AM_READWRITE(pio_ad_r, pio_ad_w)
- AM_RANGE(0x83, 0x83) AM_MIRROR(0xff38) AM_READWRITE(pio_bd_r, pio_bd_w)
- AM_RANGE(0x85, 0x85) AM_MIRROR(0xff38) AM_READWRITE(pio_ac_r, pio_ac_w)
- AM_RANGE(0x87, 0x87) AM_MIRROR(0xff38) AM_READWRITE(pio_bc_r, pio_bc_w)
- AM_RANGE(0xfd, 0xfd) AM_MIRROR(0xff00) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w)
- AM_RANGE(0xff, 0xff) AM_MIRROR(0xff00) AM_DEVREADWRITE(AY8910_TAG, ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
+void ace_state::ace_io(address_map &map)
+{
+ map(0x00, 0x00).mirror(0x00fe).select(0xff00).rw(this, FUNC(ace_state::io_r), FUNC(ace_state::io_w));
+ map(0x01, 0x01).mirror(0xff00).portr("JOY");
+ map(0x41, 0x41).mirror(0xff80).rw(this, FUNC(ace_state::ppi_pa_r), FUNC(ace_state::ppi_pa_w));
+ map(0x43, 0x43).mirror(0xff80).rw(this, FUNC(ace_state::ppi_pb_r), FUNC(ace_state::ppi_pb_w));
+ map(0x45, 0x45).mirror(0xff80).rw(this, FUNC(ace_state::ppi_pc_r), FUNC(ace_state::ppi_pc_w));
+ map(0x47, 0x47).mirror(0xff80).rw(this, FUNC(ace_state::ppi_control_r), FUNC(ace_state::ppi_control_w));
+ map(0x81, 0x81).mirror(0xff38).rw(this, FUNC(ace_state::pio_ad_r), FUNC(ace_state::pio_ad_w));
+ map(0x83, 0x83).mirror(0xff38).rw(this, FUNC(ace_state::pio_bd_r), FUNC(ace_state::pio_bd_w));
+ map(0x85, 0x85).mirror(0xff38).rw(this, FUNC(ace_state::pio_ac_r), FUNC(ace_state::pio_ac_w));
+ map(0x87, 0x87).mirror(0xff38).rw(this, FUNC(ace_state::pio_bc_r), FUNC(ace_state::pio_bc_w));
+ map(0xfd, 0xfd).mirror(0xff00).w(AY8910_TAG, FUNC(ay8910_device::address_w));
+ map(0xff, 0xff).mirror(0xff00).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
diff --git a/src/mame/drivers/jupiter.cpp b/src/mame/drivers/jupiter.cpp
index 6c4401204ba..da9ce376529 100644
--- a/src/mame/drivers/jupiter.cpp
+++ b/src/mame/drivers/jupiter.cpp
@@ -104,27 +104,28 @@ private:
// ADDRESS_MAP( jupiter_m6800_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(jupiter2_state::jupiter2_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0xc000, 0xcfff) AM_RAM // Video RAM
- AM_RANGE(0xf000, 0xff00) AM_ROM AM_REGION(MCM6571AP_TAG, 0)
+void jupiter2_state::jupiter2_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0xc000, 0xcfff).ram(); // Video RAM
+ map(0xf000, 0xff00).rom().region(MCM6571AP_TAG, 0);
// AM_RANGE(0xff58, 0xff5c) Cartridge Disk Controller PIA
// AM_RANGE(0xff60, 0xff76) DMA Controller
// AM_RANGE(0xff80, 0xff83) Floppy PIA
- AM_RANGE(0xff84, 0xff87) AM_DEVREADWRITE(INS1771N1_TAG, wd_fdc_device_base, read, write)
+ map(0xff84, 0xff87).rw(INS1771N1_TAG, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write));
// AM_RANGE(0xff90, 0xff93) Hytype Parallel Printer PIA
// AM_RANGE(0xffa0, 0xffa7) Persci Floppy Disk Controller
// AM_RANGE(0xffb0, 0xffb3) Video PIA
- AM_RANGE(0xffc0, 0xffc1) AM_DEVREADWRITE("acia0", acia6850_device, read, write) // Serial Port 0 ACIA
- AM_RANGE(0xffc4, 0xffc5) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // Serial Port 1 ACIA
+ map(0xffc0, 0xffc1).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Serial Port 0 ACIA
+ map(0xffc4, 0xffc5).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Serial Port 1 ACIA
// AM_RANGE(0xffc8, 0xffc9) Serial Port 2 ACIA
// AM_RANGE(0xffcc, 0xffcd) Serial Port 3 ACIA
// AM_RANGE(0xffd0, 0xffd1) Serial Port 4 ACIA / Cassette
// AM_RANGE(0xffd4, 0xffd5) Serial Port 5 ACIA / EPROM Programmer (2704/2708)
// AM_RANGE(0xffd8, 0xffd9) Serial Port 6 ACIA / Hardware Breakpoint Registers
// AM_RANGE(0xffdc, 0xffdd) Serial Port 7 ACIA
- AM_RANGE(0xfff8, 0xffff) AM_ROM AM_REGION(MCM6571AP_TAG, 0x0ff8) // vectors
-ADDRESS_MAP_END
+ map(0xfff8, 0xffff).rom().region(MCM6571AP_TAG, 0x0ff8); // vectors
+}
@@ -132,24 +133,26 @@ ADDRESS_MAP_END
// ADDRESS_MAP( jupiter3_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(jupiter3_state::jupiter3_mem)
- AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION(Z80_TAG, 0)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void jupiter3_state::jupiter3_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).ram().share("ram");
+ map(0xc000, 0xdfff).ram().share("videoram");
+ map(0xe000, 0xefff).rom().region(Z80_TAG, 0);
+ map(0xf000, 0xffff).ram();
+}
//-------------------------------------------------
// ADDRESS_MAP( jupiter3_io )
//-------------------------------------------------
-ADDRESS_MAP_START(jupiter3_state::jupiter3_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xa1, 0xa4) AM_READ(ff_r)
- AM_RANGE(0xb0, 0xb0) AM_READ(status_r)
- AM_RANGE(0xb2, 0xb2) AM_READ(key_r)
-ADDRESS_MAP_END
+void jupiter3_state::jupiter3_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xa1, 0xa4).r(this, FUNC(jupiter3_state::ff_r));
+ map(0xb0, 0xb0).r(this, FUNC(jupiter3_state::status_r));
+ map(0xb2, 0xb2).r(this, FUNC(jupiter3_state::key_r));
+}
READ8_MEMBER( jupiter3_state::ff_r )
{
diff --git a/src/mame/drivers/jvh.cpp b/src/mame/drivers/jvh.cpp
index 452e907ce7b..39252100d41 100644
--- a/src/mame/drivers/jvh.cpp
+++ b/src/mame/drivers/jvh.cpp
@@ -40,12 +40,14 @@ public:
-ADDRESS_MAP_START(jvh_state::jvh_map)
- AM_RANGE(0x0000, 0x3bff) AM_ROM
- AM_RANGE(0x3c00, 0x3cff) AM_RAM
-ADDRESS_MAP_END
+void jvh_state::jvh_map(address_map &map)
+{
+ map(0x0000, 0x3bff).rom();
+ map(0x3c00, 0x3cff).ram();
+}
-ADDRESS_MAP_START(jvh_state::escape_io)
+void jvh_state::escape_io(address_map &map)
+{
//AM_RANGE(0x01, 0x02) AM_READ(sw1_r)
//AM_RANGE(0x03, 0x05) AM_READ(dip_r)
//AM_RANGE(0x06, 0x07) AM_READ(sw6_r)
@@ -68,9 +70,10 @@ ADDRESS_MAP_START(jvh_state::escape_io)
//AM_RANGE(0x68, 0x6f) AM_WRITE(out6b_w)
//AM_RANGE(0x70, 0x74) AM_WRITE(out7a_w)
//AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(jvh_state::movmastr_io)
+void jvh_state::movmastr_io(address_map &map)
+{
//AM_RANGE(0x01, 0x02) AM_READ(sw1_r)
//AM_RANGE(0x03, 0x05) AM_READ(dip_r)
//AM_RANGE(0x08, 0x09) AM_READ(sw6_r)
@@ -96,13 +99,14 @@ ADDRESS_MAP_START(jvh_state::movmastr_io)
//AM_RANGE(0x68, 0x6f) AM_WRITE(out6b2_w)
//AM_RANGE(0x70, 0x74) AM_WRITE(out7a2_w)
//AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(jvh_state::jvh_sub_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE("via", via6522_device, read, write)
- AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM
-ADDRESS_MAP_END
+void jvh_state::jvh_sub_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x0080, 0x008f).rw("via", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xc000, 0xdfff).mirror(0x2000).rom();
+}
static INPUT_PORTS_START( jvh )
INPUT_PORTS_END
diff --git a/src/mame/drivers/k1003.cpp b/src/mame/drivers/k1003.cpp
index 0587c35d22e..fd17a1fe52b 100644
--- a/src/mame/drivers/k1003.cpp
+++ b/src/mame/drivers/k1003.cpp
@@ -71,14 +71,15 @@ private:
};
-ADDRESS_MAP_START(k1003_state::k1003_mem)
- AM_RANGE(0x0000,0x07ff) AM_ROM
- AM_RANGE(0x0800,0x17ff) AM_RAM
- AM_RANGE(0x1800,0x1fff) AM_ROM
- AM_RANGE(0x2000,0x27ff) AM_ROM
- AM_RANGE(0x2800,0x2fff) AM_RAM
- AM_RANGE(0x3000,0x3aff) AM_ROM
-ADDRESS_MAP_END
+void k1003_state::k1003_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x17ff).ram();
+ map(0x1800, 0x1fff).rom();
+ map(0x2000, 0x27ff).rom();
+ map(0x2800, 0x2fff).ram();
+ map(0x3000, 0x3aff).rom();
+}
READ8_MEMBER( k1003_state::port2_r )
{
@@ -120,15 +121,16 @@ WRITE8_MEMBER( k1003_state::disp_w )
output().set_digit_value(bit_to_dec(data)*2+1, m_disp_2);
}
-ADDRESS_MAP_START(k1003_state::k1003_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00,0x00) AM_READ(key_r)
- AM_RANGE(0x02,0x02) AM_READ(port2_r)
+void k1003_state::k1003_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).r(this, FUNC(k1003_state::key_r));
+ map(0x02, 0x02).r(this, FUNC(k1003_state::port2_r));
- AM_RANGE(0x08,0x08) AM_WRITE(disp_w)
- AM_RANGE(0x09,0x09) AM_WRITE(disp_2_w)
- AM_RANGE(0x10,0x10) AM_WRITE(disp_1_w)
-ADDRESS_MAP_END
+ map(0x08, 0x08).w(this, FUNC(k1003_state::disp_w));
+ map(0x09, 0x09).w(this, FUNC(k1003_state::disp_2_w));
+ map(0x10, 0x10).w(this, FUNC(k1003_state::disp_1_w));
+}
/* Input ports */
static INPUT_PORTS_START( k1003 )
diff --git a/src/mame/drivers/k8915.cpp b/src/mame/drivers/k8915.cpp
index f4003f8c400..74c622803bb 100644
--- a/src/mame/drivers/k8915.cpp
+++ b/src/mame/drivers/k8915.cpp
@@ -53,19 +53,21 @@ WRITE8_MEMBER( k8915_state::k8915_a8_w )
membank("boot")->set_entry(1); // rom at 0000
}
-ADDRESS_MAP_START(k8915_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(k8915_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0xa8, 0xa8) AM_WRITE(k8915_a8_w)
-ADDRESS_MAP_END
+void k8915_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("boot");
+ map(0x1000, 0x17ff).ram().share("videoram");
+ map(0x1800, 0xffff).ram();
+}
+
+void k8915_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x50, 0x53).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x58, 0x5b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0xa8, 0xa8).w(this, FUNC(k8915_state::k8915_a8_w));
+}
/* Input ports */
static INPUT_PORTS_START( k8915 )
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index 1868a2f575e..089498871f4 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -296,28 +296,29 @@ WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_spriteregs_w)
m_kaneko_spr->kaneko16_sprites_regs_w(space, offset, data, mem_mask);
}
-ADDRESS_MAP_START(kaneko16_berlwall_state::berlwall)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM
- AM_RANGE(0x30e000, 0x30ffff) AM_READWRITE(berlwall_spriteram_r, berlwall_spriteram_w) AM_SHARE("spriteram") // Sprites (scrambled RAM)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x480000, 0x480001) AM_RAM AM_SHARE("bg15_scroll") // High Color Background
- AM_RANGE(0x500000, 0x500001) AM_READWRITE(kaneko16_bg15_bright_r, kaneko16_bg15_bright_w) AM_SHARE("bg15_bright") // ""
- AM_RANGE(0x580000, 0x580001) AM_READWRITE(kaneko16_bg15_select_r, kaneko16_bg15_select_w) AM_SHARE("bg15_select") // ""
- AM_RANGE(0x600000, 0x60003f) AM_READWRITE(berlwall_spriteregs_r, berlwall_spriteregs_w) // Sprite Regs (scrambled RAM)
- AM_RANGE(0x680000, 0x680001) AM_READ_PORT("P1")
- AM_RANGE(0x680002, 0x680003) AM_READ_PORT("P2")
- AM_RANGE(0x680004, 0x680005) AM_READ_PORT("SYSTEM")
+void kaneko16_berlwall_state::berlwall(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // Work RAM
+ map(0x30e000, 0x30ffff).rw(this, FUNC(kaneko16_berlwall_state::berlwall_spriteram_r), FUNC(kaneko16_berlwall_state::berlwall_spriteram_w)).share("spriteram"); // Sprites (scrambled RAM)
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x480000, 0x480001).ram().share("bg15_scroll"); // High Color Background
+ map(0x500000, 0x500001).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_bg15_bright_r), FUNC(kaneko16_berlwall_state::kaneko16_bg15_bright_w)).share("bg15_bright"); // ""
+ map(0x580000, 0x580001).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_bg15_select_r), FUNC(kaneko16_berlwall_state::kaneko16_bg15_select_w)).share("bg15_select"); // ""
+ map(0x600000, 0x60003f).rw(this, FUNC(kaneko16_berlwall_state::berlwall_spriteregs_r), FUNC(kaneko16_berlwall_state::berlwall_spriteregs_w)); // Sprite Regs (scrambled RAM)
+ map(0x680000, 0x680001).portr("P1");
+ map(0x680002, 0x680003).portr("P2");
+ map(0x680004, 0x680005).portr("SYSTEM");
// AM_RANGE(0x680006, 0x680007) AM_READ_PORT("UNK")
- AM_RANGE(0x700000, 0x700001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
- AM_RANGE(0x780000, 0x780001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x800000, 0x80001f) AM_READWRITE(kaneko16_ay_YM2149_r<0>, kaneko16_ay_YM2149_w<0>) // Sound
- AM_RANGE(0x800200, 0x80021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>, kaneko16_ay_YM2149_w<1>)
- AM_RANGE(0x8003fe, 0x8003ff) AM_NOP // for OKI when accessed as .l
- AM_RANGE(0x800400, 0x800401) AM_READWRITE( berlwall_oki_r, berlwall_oki_w )
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
-ADDRESS_MAP_END
+ map(0x700000, 0x700001).w(this, FUNC(kaneko16_berlwall_state::kaneko16_coin_lockout_w)); // Coin Lockout
+ map(0x780000, 0x780001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x800000, 0x80001f).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_r<0>), FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_w<0>)); // Sound
+ map(0x800200, 0x80021f).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_w<1>));
+ map(0x8003fe, 0x8003ff).noprw(); // for OKI when accessed as .l
+ map(0x800400, 0x800401).rw(this, FUNC(kaneko16_berlwall_state::berlwall_oki_r), FUNC(kaneko16_berlwall_state::berlwall_oki_w));
+ map(0xc00000, 0xc03fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0xd00000, 0xd0001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+}
/***************************************************************************
@@ -328,54 +329,56 @@ ADDRESS_MAP_END
/* The two YM2149 chips are only used when entering high score initials, and */
/* when the game is fully completed. Overkill??? */
-ADDRESS_MAP_START(kaneko16_state::bakubrkr)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x400000, 0x40001f) AM_READ(kaneko16_ay_YM2149_r<0>) // Sound
- AM_RANGE(0x400000, 0x40001d) AM_WRITE(kaneko16_ay_YM2149_w<0>)
- AM_RANGE(0x40001e, 0x40001f) AM_WRITE8(oki_bank0_w<7>, 0x00ff) // OKI bank Switch
- AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>,kaneko16_ay_YM2149_w<1>) // Sound
- AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) //
- AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x600000, 0x601fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x700000, 0x700fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0xa80000, 0xa80001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("P1")
- AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("P2")
- AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("UNK")
-ADDRESS_MAP_END
+void kaneko16_state::bakubrkr(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // Work RAM
+ map(0x400000, 0x40001f).r(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<0>)); // Sound
+ map(0x400000, 0x40001d).w(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_w<0>));
+ map(0x40001f, 0x40001f).w(this, FUNC(kaneko16_state::oki_bank0_w<7>)); // OKI bank Switch
+ map(0x400200, 0x40021f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<1>)); // Sound
+ map(0x400401, 0x400401).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+ map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x600000, 0x601fff).ram().share("spriteram"); // Sprites
+ map(0x700000, 0x700fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0xa80000, 0xa80001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0xb00000, 0xb0001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_eeprom_w)); // EEPROM
+ map(0xe00000, 0xe00001).portr("P1");
+ map(0xe00002, 0xe00003).portr("P2");
+ map(0xe00004, 0xe00005).portr("SYSTEM");
+ map(0xe00006, 0xe00007).portr("UNK");
+}
/***************************************************************************
Blaze On
***************************************************************************/
-ADDRESS_MAP_START(kaneko16_state::blazeon)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM
- AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0x980000, 0x98001f) AM_RAM // Sprites Regs #2
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW2_P1")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("DSW1_P2")
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("UNK")
- AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
- AM_RANGE(0xe00000, 0xe00001) AM_READNOP // Read = IRQ Ack ?
- AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0xe40000, 0xe40001) AM_READNOP // IRQ Ack ?
+void kaneko16_state::blazeon(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x300000, 0x30ffff).ram(); // Work RAM
+ map(0x500000, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x700000, 0x700fff).ram().share("spriteram"); // Sprites
+ map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0x980000, 0x98001f).ram(); // Sprites Regs #2
+ map(0xc00000, 0xc00001).portr("DSW2_P1");
+ map(0xc00002, 0xc00003).portr("DSW1_P2");
+ map(0xc00004, 0xc00005).portr("UNK");
+ map(0xc00006, 0xc00007).portr("SYSTEM");
+ map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_coin_lockout_w)); // Coin Lockout
+ map(0xe00000, 0xe00001).nopr(); // Read = IRQ Ack ?
+ map(0xe00000, 0xe00000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xe40000, 0xe40001).nopr(); // IRQ Ack ?
// AM_RANGE(0xe80000, 0xe80001) AM_READNOP // IRQ Ack ?
- AM_RANGE(0xec0000, 0xec0001) AM_READNOP // Lev 4 IRQ Ack ?
-ADDRESS_MAP_END
+ map(0xec0000, 0xec0001).nopr(); // Lev 4 IRQ Ack ?
+}
/***************************************************************************
@@ -393,70 +396,72 @@ WRITE16_MEMBER(kaneko16_gtmr_state::bloodwar_coin_lockout_w)
}
}
-ADDRESS_MAP_START(kaneko16_gtmr_state::bloodwar)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram")
- AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ?
- AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w)
- AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w)
- AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA")
- AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable)
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r)
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff)
- AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x3>, 0x00ff)
-ADDRESS_MAP_END
+void kaneko16_gtmr_state::bloodwar(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x20ffff).ram().share("mcuram");
+ map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ?
+ map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w));
+ map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w));
+ map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w));
+ map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites
+ map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x600000, 0x60001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w));
+ map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0xb00000, 0xb00001).portr("P1");
+ map(0xb00002, 0xb00003).portr("P2");
+ map(0xb00004, 0xb00005).portr("SYSTEM");
+ map(0xb00006, 0xb00007).portr("EXTRA");
+ map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::bloodwar_coin_lockout_w)); // Coin Lockout
+ map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable));
+ map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r));
+ map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>));
+ map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x3>));
+}
/***************************************************************************
Bonk's Adventure
***************************************************************************/
-ADDRESS_MAP_START(kaneko16_gtmr_state::bonkadv)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU
- AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ?
- AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w)
- AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w)
- AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x900000, 0x900015) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK")
- AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable)
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r)
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff)
- AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0xf>, 0x00ff)
-ADDRESS_MAP_END
+void kaneko16_gtmr_state::bonkadv(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU
+ map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ?
+ map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w));
+ map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w));
+ map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w));
+ map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites
+ map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x600000, 0x60001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x900000, 0x900015).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w));
+ map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog
+ map(0xb00000, 0xb00001).portr("P1");
+ map(0xb00002, 0xb00003).portr("P2");
+ map(0xb00004, 0xb00005).portr("SYSTEM");
+ map(0xb00006, 0xb00007).portr("UNK");
+ map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::bloodwar_coin_lockout_w)); // Coin Lockout
+ map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable));
+ map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r));
+ map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>));
+ map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0xf>));
+}
/***************************************************************************
@@ -478,48 +483,49 @@ READ16_MEMBER(kaneko16_gtmr_state::gtmr_wheel_r)
}
}
-ADDRESS_MAP_START(kaneko16_gtmr_state::gtmr_map)
- AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM
- AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr_wheel_r) // Wheel Value
+void kaneko16_gtmr_state::gtmr_map(address_map &map)
+{
+ map(0x000000, 0x0ffffd).rom(); // ROM
+ map(0x0ffffe, 0x0fffff).r(this, FUNC(kaneko16_gtmr_state::gtmr_wheel_r)); // Wheel Value
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU
+ map(0x100000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU
- AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ?
- AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w)
- AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w)
- AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w)
+ map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ?
+ map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w));
+ map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w));
+ map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w));
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x310000, 0x327fff) AM_RAM //
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
+ map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x310000, 0x327fff).ram(); //
+ map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites
- AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
+ map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
- AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
+ map(0x600000, 0x60000f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
+ map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples
- AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples
+ map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) // only used for random number
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
+ map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); // only used for random number
+ map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK")
- AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that
+ map(0xb00000, 0xb00001).portr("P1");
+ map(0xb00002, 0xb00003).portr("P2");
+ map(0xb00004, 0xb00005).portr("SYSTEM");
+ map(0xb00006, 0xb00007).portr("UNK");
+ map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_coin_lockout_w)); // Coin Lockout
+ map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); // might do more than that
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r)
+ map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r));
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) // Samples Bankswitching
- AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x1>, 0x00ff)
-ADDRESS_MAP_END
+ map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); // Samples Bankswitching
+ map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x1>));
+}
/***************************************************************************
Great 1000 Miles Rally 2
@@ -547,71 +553,73 @@ READ16_MEMBER(kaneko16_gtmr_state::gtmr2_IN1_r)
return (ioport("P2")->read() & (ioport("FAKE")->read() | ~0x7100));
}
-ADDRESS_MAP_START(kaneko16_gtmr_state::gtmr2_map)
- AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM
- AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr2_wheel_r) // Wheel Value
+void kaneko16_gtmr_state::gtmr2_map(address_map &map)
+{
+ map(0x000000, 0x0ffffd).rom(); // ROM
+ map(0x0ffffe, 0x0fffff).r(this, FUNC(kaneko16_gtmr_state::gtmr2_wheel_r)); // Wheel Value
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU
+ map(0x100000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU
- AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ?
- AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w)
- AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w)
- AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w)
+ map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ?
+ map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w));
+ map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w));
+ map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w));
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x310000, 0x327fff) AM_RAM //
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
+ map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x310000, 0x327fff).ram(); //
+ map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites
- AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
+ map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x600000, 0x60000f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
- AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples
- AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
+ map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples
+ map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) // only used for random number
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog
+ map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); // only used for random number
+ map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
+ map(0xb00000, 0xb00001).portr("P1");
// AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
- AM_RANGE(0xb00002, 0xb00003) AM_READ(gtmr2_IN1_r)
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA")
- AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that
+ map(0xb00002, 0xb00003).r(this, FUNC(kaneko16_gtmr_state::gtmr2_IN1_r));
+ map(0xb00004, 0xb00005).portr("SYSTEM");
+ map(0xb00006, 0xb00007).portr("EXTRA");
+ map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_coin_lockout_w)); // Coin Lockout
+ map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); // might do more than that
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r)
+ map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r));
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) // Samples Bankswitching
- AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x1>, 0x00ff)
-ADDRESS_MAP_END
+ map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); // Samples Bankswitching
+ map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x1>));
+}
/***************************************************************************
Magical Crystal
***************************************************************************/
-ADDRESS_MAP_START(kaneko16_state::mgcrystl)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM
- AM_RANGE(0x400000, 0x40001f) AM_READWRITE(kaneko16_ay_YM2149_r<0>, kaneko16_ay_YM2149_w<0>) // Sound
- AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>, kaneko16_ay_YM2149_w<1>)
- AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x680000, 0x683fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW_P1")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P2")
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM
-ADDRESS_MAP_END
+void kaneko16_state::mgcrystl(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x300000, 0x30ffff).ram(); // Work RAM
+ map(0x400000, 0x40001f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<0>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<0>)); // Sound
+ map(0x400200, 0x40021f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<1>));
+ map(0x400401, 0x400401).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x500000, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x680000, 0x683fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x700000, 0x701fff).ram().share("spriteram"); // Sprites
+ map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0xb00000, 0xb0001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0xa00000, 0xa00001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+ map(0xc00000, 0xc00001).portr("DSW_P1");
+ map(0xc00002, 0xc00003).portr("P2");
+ map(0xc00004, 0xc00005).portr("SYSTEM");
+ map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_eeprom_w)); // EEPROM
+}
@@ -628,31 +636,32 @@ WRITE16_MEMBER(kaneko16_shogwarr_state::shogwarr_oki_bank_w)
}
}
-ADDRESS_MAP_START(kaneko16_shogwarr_state::shogwarr)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("mainram") // Work RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram")
- AM_RANGE(0x280000, 0x280001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com0_w)
- AM_RANGE(0x290000, 0x290001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com1_w)
- AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com2_w)
+void kaneko16_shogwarr_state::shogwarr(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram().share("mainram"); // Work RAM
+ map(0x200000, 0x20ffff).ram().share("mcuram");
+ map(0x280000, 0x280001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com0_w));
+ map(0x290000, 0x290001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com1_w));
+ map(0x2b0000, 0x2b0001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com2_w));
//AM_RANGE(0x2c0000, 0x2c0001) // run calc 3? or irq ack?
- AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com3_w)
- AM_RANGE(0x380000, 0x380fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples
- AM_RANGE(0x480000, 0x480001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x580000, 0x581fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
- AM_RANGE(0xa00000, 0xa0007f) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w)
- AM_RANGE(0xa80000, 0xa80001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0xb80000, 0xb80001) AM_READ_PORT("P1")
- AM_RANGE(0xb80002, 0xb80003) AM_READ_PORT("P2")
- AM_RANGE(0xb80004, 0xb80005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb80006, 0xb80007) AM_READ_PORT("UNK")
- AM_RANGE(0xd00000, 0xd00001) AM_NOP // ? (bit 0)
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(shogwarr_oki_bank_w) // Samples Bankswitching
-ADDRESS_MAP_END
+ map(0x2d0000, 0x2d0001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com3_w));
+ map(0x380000, 0x380fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x400001, 0x400001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples
+ map(0x480001, 0x480001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x580000, 0x581fff).ram().share("spriteram"); // Sprites
+ map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w));
+ map(0xa00000, 0xa0007f).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w));
+ map(0xa80000, 0xa80001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0xb80000, 0xb80001).portr("P1");
+ map(0xb80002, 0xb80003).portr("P2");
+ map(0xb80004, 0xb80005).portr("SYSTEM");
+ map(0xb80006, 0xb80007).portr("UNK");
+ map(0xd00000, 0xd00001).noprw(); // ? (bit 0)
+ map(0xe00000, 0xe00001).w(this, FUNC(kaneko16_shogwarr_state::shogwarr_oki_bank_w)); // Samples Bankswitching
+}
/***************************************************************************
@@ -666,30 +675,33 @@ ADDRESS_MAP_END
Blaze On
***************************************************************************/
-ADDRESS_MAP_START(kaneko16_state::blazeon_soundmem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROM // ROM (supposed to be banked?)
- AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM
-ADDRESS_MAP_END
+void kaneko16_state::blazeon_soundmem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).rom(); // ROM (supposed to be banked?)
+ map(0xc000, 0xdfff).ram(); // RAM
+}
-ADDRESS_MAP_START(kaneko16_state::blazeon_soundport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void kaneko16_state::blazeon_soundport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/***************************************************************************
Wing Force
***************************************************************************/
-ADDRESS_MAP_START(kaneko16_state::wingforc_soundport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void kaneko16_state::wingforc_soundport(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) // 02 written at boot
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x0a, 0x0a) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(oki_bank0_w<0x3>)
-ADDRESS_MAP_END
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x0a, 0x0a).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0c, 0x0c).w(this, FUNC(kaneko16_state::oki_bank0_w<0x3>));
+}
/***************************************************************************
@@ -1821,10 +1833,11 @@ MACHINE_CONFIG_END
Bakuretsu Breaker
***************************************************************************/
-ADDRESS_MAP_START(kaneko16_state::bakubrkr_oki1_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank1")
-ADDRESS_MAP_END
+void kaneko16_state::bakubrkr_oki1_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank1");
+}
MACHINE_CONFIG_START(kaneko16_state::bakubrkr)
@@ -2355,10 +2368,11 @@ static const uint16_t brapboys_default_eeprom[64] = {
};
// sample banking is different on brap boys for the music, why? GALs / PALs ?
-ADDRESS_MAP_START(kaneko16_shogwarr_state::brapboys_oki2_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2")
-ADDRESS_MAP_END
+void kaneko16_shogwarr_state::brapboys_oki2_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank2");
+}
MACHINE_CONFIG_START(kaneko16_shogwarr_state::brapboys)
shogwarr(config);
diff --git a/src/mame/drivers/kangaroo.cpp b/src/mame/drivers/kangaroo.cpp
index 08515c3c18a..09e737c92d0 100644
--- a/src/mame/drivers/kangaroo.cpp
+++ b/src/mame/drivers/kangaroo.cpp
@@ -251,17 +251,18 @@ WRITE8_MEMBER(kangaroo_state::kangaroo_coin_counter_w)
*
*************************************/
-ADDRESS_MAP_START(kangaroo_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_WRITE(kangaroo_videoram_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW0")
- AM_RANGE(0xe800, 0xe80a) AM_MIRROR(0x03f0) AM_WRITE(kangaroo_video_control_w) AM_SHARE("video_control")
- AM_RANGE(0xec00, 0xec00) AM_MIRROR(0x00ff) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xed00, 0xed00) AM_MIRROR(0x00ff) AM_READ_PORT("IN1") AM_WRITE(kangaroo_coin_counter_w)
- AM_RANGE(0xee00, 0xee00) AM_MIRROR(0x00ff) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
+void kangaroo_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0xbfff).w(this, FUNC(kangaroo_state::kangaroo_videoram_w));
+ map(0xc000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xe3ff).ram();
+ map(0xe400, 0xe400).mirror(0x03ff).portr("DSW0");
+ map(0xe800, 0xe80a).mirror(0x03f0).w(this, FUNC(kangaroo_state::kangaroo_video_control_w)).share("video_control");
+ map(0xec00, 0xec00).mirror(0x00ff).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xed00, 0xed00).mirror(0x00ff).portr("IN1").w(this, FUNC(kangaroo_state::kangaroo_coin_counter_w));
+ map(0xee00, 0xee00).mirror(0x00ff).portr("IN2");
+}
@@ -271,23 +272,25 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(kangaroo_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void kangaroo_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x43ff).mirror(0x0c00).ram();
+ map(0x6000, 0x6000).mirror(0x0fff).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x7000, 0x7000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x8000, 0x8000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::address_w));
+}
/* yes, this is identical */
-ADDRESS_MAP_START(kangaroo_state::sound_portmap)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void kangaroo_state::sound_portmap(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x43ff).mirror(0x0c00).ram();
+ map(0x6000, 0x6000).mirror(0x0fff).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x7000, 0x7000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x8000, 0x8000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::address_w));
+}
diff --git a/src/mame/drivers/karnov.cpp b/src/mame/drivers/karnov.cpp
index f7417bbb037..825ad79d0b7 100644
--- a/src/mame/drivers/karnov.cpp
+++ b/src/mame/drivers/karnov.cpp
@@ -428,35 +428,39 @@ READ16_MEMBER(karnov_state::karnov_control_r)
*
*************************************/
-ADDRESS_MAP_START(karnov_state::karnov_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_WRITE(karnov_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0a0800, 0x0a0fff) AM_WRITE(karnov_videoram_w) /* Wndrplnt Mirror */
- AM_RANGE(0x0a1000, 0x0a17ff) AM_WRITEONLY AM_SHARE("pf_data")
- AM_RANGE(0x0a1800, 0x0a1fff) AM_WRITE(karnov_playfield_swap_w)
- AM_RANGE(0x0c0000, 0x0c0007) AM_READ(karnov_control_r)
- AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(karnov_control_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(karnov_state::base_sound_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(karnov_state::karnov_sound_map)
- AM_IMPORT_FROM(base_sound_map)
- AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ym2", ym3526_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(karnov_state::karnovjbl_sound_map)
- AM_IMPORT_FROM(base_sound_map)
- AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ym2", ym3812_device, write)
-ADDRESS_MAP_END
+void karnov_state::karnov_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x063fff).ram().share("ram");
+ map(0x080000, 0x080fff).ram().share("spriteram");
+ map(0x0a0000, 0x0a07ff).ram().w(this, FUNC(karnov_state::karnov_videoram_w)).share("videoram");
+ map(0x0a0800, 0x0a0fff).w(this, FUNC(karnov_state::karnov_videoram_w)); /* Wndrplnt Mirror */
+ map(0x0a1000, 0x0a17ff).writeonly().share("pf_data");
+ map(0x0a1800, 0x0a1fff).w(this, FUNC(karnov_state::karnov_playfield_swap_w));
+ map(0x0c0000, 0x0c0007).r(this, FUNC(karnov_state::karnov_control_r));
+ map(0x0c0000, 0x0c000f).w(this, FUNC(karnov_state::karnov_control_w));
+}
+
+
+void karnov_state::base_sound_map(address_map &map)
+{
+ map(0x0000, 0x05ff).ram();
+ map(0x0800, 0x0800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1000, 0x1001).w("ym1", FUNC(ym2203_device::write));
+ map(0x8000, 0xffff).rom();
+}
+
+void karnov_state::karnov_sound_map(address_map &map)
+{
+ base_sound_map(map);
+ map(0x1800, 0x1801).w("ym2", FUNC(ym3526_device::write));
+}
+
+void karnov_state::karnovjbl_sound_map(address_map &map)
+{
+ base_sound_map(map);
+ map(0x1800, 0x1801).w("ym2", FUNC(ym3812_device::write));
+}
/*************************************
@@ -862,9 +866,10 @@ MACHINE_CONFIG_START(karnov_state::karnovjbl)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(karnov_state::chelnovjbl_mcu_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void karnov_state::chelnovjbl_mcu_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
MACHINE_CONFIG_START(karnov_state::chelnovjbl)
diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp
index d15e1160554..d24a9941cb8 100644
--- a/src/mame/drivers/kas89.cpp
+++ b/src/mame/drivers/kas89.cpp
@@ -511,31 +511,33 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
* Memory Map *
**************************************/
-ADDRESS_MAP_START(kas89_state::kas89_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x0037, 0x0037) AM_WRITENOP /* WTF? */
- AM_RANGE(0x8000, 0x81ff) AM_RAM /* empty */
- AM_RANGE(0x8200, 0x83ff) AM_RAM /* 8200-83ff (PL1) */
- AM_RANGE(0x8400, 0x85ff) AM_RAM /* 8400-85ff (PL2) */
- AM_RANGE(0x8600, 0x87ff) AM_RAM /* 8600-87ff (PL3) */
- AM_RANGE(0x8800, 0x89ff) AM_RAM /* 8800-89ff (PL4) */
- AM_RANGE(0x8a00, 0x8bff) AM_RAM /* 8a00-8bff (PL5) */
- AM_RANGE(0x8c00, 0x8dff) AM_RAM /* 8c00-8dff (PL6) */
- AM_RANGE(0x8e00, 0x8fff) AM_RAM /* empty */
- AM_RANGE(0x9000, 0x97ff) AM_RAM
- AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kas89_state::kas89_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("v9938", v9938_device, read, write)
- AM_RANGE(0x80, 0x80) AM_WRITE(mux_w)
- AM_RANGE(0x81, 0x81) AM_READ(mux_r)
- AM_RANGE(0x82, 0x82) AM_WRITE(control_w) /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/
- AM_RANGE(0x83, 0x83) AM_WRITE(led_mux_data_w)
- AM_RANGE(0x84, 0x84) AM_WRITE(led_mux_select_w)
- AM_RANGE(0x85, 0x85) AM_WRITE(sound_comm_w)
-ADDRESS_MAP_END
+void kas89_state::kas89_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x0037, 0x0037).nopw(); /* WTF? */
+ map(0x8000, 0x81ff).ram(); /* empty */
+ map(0x8200, 0x83ff).ram(); /* 8200-83ff (PL1) */
+ map(0x8400, 0x85ff).ram(); /* 8400-85ff (PL2) */
+ map(0x8600, 0x87ff).ram(); /* 8600-87ff (PL3) */
+ map(0x8800, 0x89ff).ram(); /* 8800-89ff (PL4) */
+ map(0x8a00, 0x8bff).ram(); /* 8a00-8bff (PL5) */
+ map(0x8c00, 0x8dff).ram(); /* 8c00-8dff (PL6) */
+ map(0x8e00, 0x8fff).ram(); /* empty */
+ map(0x9000, 0x97ff).ram();
+ map(0x9800, 0x9fff).ram().share("nvram");
+}
+
+void kas89_state::kas89_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x43).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x80, 0x80).w(this, FUNC(kas89_state::mux_w));
+ map(0x81, 0x81).r(this, FUNC(kas89_state::mux_r));
+ map(0x82, 0x82).w(this, FUNC(kas89_state::control_w)); /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/
+ map(0x83, 0x83).w(this, FUNC(kas89_state::led_mux_data_w));
+ map(0x84, 0x84).w(this, FUNC(kas89_state::led_mux_select_w));
+ map(0x85, 0x85).w(this, FUNC(kas89_state::sound_comm_w));
+}
/*
900d --- (RAM) NMI stores the read from / write to port $82
@@ -575,18 +577,20 @@ ADDRESS_MAP_END
4aa1 : ret
*/
-ADDRESS_MAP_START(kas89_state::audio_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kas89_state::audio_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(int_ack_w) // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02).
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void kas89_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0xc000, 0xc7ff).ram();
+}
+
+void kas89_state::audio_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(kas89_state::int_ack_w)); // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02).
+ map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x04).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x04, 0x05).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
/**************************************
diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp
index 0dc31204ee1..14de77daeb8 100644
--- a/src/mame/drivers/kaypro.cpp
+++ b/src/mame/drivers/kaypro.cpp
@@ -64,36 +64,39 @@ READ8_MEMBER( kaypro_state::kaypro484_87_r ) { return 0x7f; } /* to bypass un
************************************************************/
-ADDRESS_MAP_START(kaypro_state::kaypro_map)
- AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank3")
- AM_RANGE(0x4000, 0xffff) AM_RAM AM_REGION("rambank", 0x4000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kaypro_state::kayproii_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVWRITE("brg", com8116_device, stt_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80pio_g", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0c, 0x0f) AM_DEVWRITE("brg", com8116_device, str_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("z80pio_s", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kaypro_state::kaypro484_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVWRITE("brg", com8116_device, str_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio_1", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x08, 0x0b) AM_DEVWRITE("brg", com8116_device, stt_w)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("sio_2", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0x14, 0x17) AM_READWRITE(kaypro484_system_port_r,kaypro484_system_port_w)
- AM_RANGE(0x18, 0x1b) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x1c, 0x1c) AM_READWRITE(kaypro484_status_r,kaypro484_index_w)
- AM_RANGE(0x1d, 0x1d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(kaypro484_register_w)
- AM_RANGE(0x1f, 0x1f) AM_READWRITE(kaypro484_videoram_r,kaypro484_videoram_w)
+void kaypro_state::kaypro_map(address_map &map)
+{
+ map(0x0000, 0x2fff).bankr("bankr0").bankw("bankw0");
+ map(0x3000, 0x3fff).bankrw("bank3");
+ map(0x4000, 0xffff).ram().region("rambank", 0x4000);
+}
+
+void kaypro_state::kayproii_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).w("brg", FUNC(com8116_device::stt_w));
+ map(0x04, 0x07).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x08, 0x0b).rw(m_pio_g, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0c, 0x0f).w("brg", FUNC(com8116_device::str_w));
+ map(0x10, 0x13).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x1c, 0x1f).rw(m_pio_s, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
+
+void kaypro_state::kaypro484_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).w("brg", FUNC(com8116_device::str_w));
+ map(0x04, 0x07).rw("sio_1", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x08, 0x0b).w("brg", FUNC(com8116_device::stt_w));
+ map(0x0c, 0x0f).rw("sio_2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x10, 0x13).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x14, 0x17).rw(this, FUNC(kaypro_state::kaypro484_system_port_r), FUNC(kaypro_state::kaypro484_system_port_w));
+ map(0x18, 0x1b).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x1c, 0x1c).rw(this, FUNC(kaypro_state::kaypro484_status_r), FUNC(kaypro_state::kaypro484_index_w));
+ map(0x1d, 0x1d).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(kaypro_state::kaypro484_register_w));
+ map(0x1f, 0x1f).rw(this, FUNC(kaypro_state::kaypro484_videoram_r), FUNC(kaypro_state::kaypro484_videoram_w));
/* The below are not emulated */
/* AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("z80pio", kaypro484_pio_r, kaypro484_pio_w) - for RTC and Modem
@@ -106,9 +109,9 @@ ADDRESS_MAP_START(kaypro_state::kaypro484_io)
AM_RANGE(0x85, 0x85) Hard Drive Cylinder high register I/O
AM_RANGE(0x86, 0x86) Hard Drive Size / Drive / Head register I/O
AM_RANGE(0x87, 0x87) Hard Drive READ status register, WRITE command register */
- AM_RANGE(0x20, 0x86) AM_NOP
- AM_RANGE(0x87, 0x87) AM_READ(kaypro484_87_r)
-ADDRESS_MAP_END
+ map(0x20, 0x86).noprw();
+ map(0x87, 0x87).r(this, FUNC(kaypro_state::kaypro484_87_r));
+}
static INPUT_PORTS_START(kaypro)
diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp
index c1fb367af6f..4928d691ca1 100644
--- a/src/mame/drivers/kc.cpp
+++ b/src/mame/drivers/kc.cpp
@@ -22,42 +22,46 @@
#include "speaker.h"
-ADDRESS_MAP_START(kc85_4_state::kc85_4_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(expansion_io_read, expansion_io_write)
-
- AM_RANGE(0x0084, 0x0085) AM_MIRROR(0xff00) AM_READWRITE(kc85_4_84_r, kc85_4_84_w)
- AM_RANGE(0x0086, 0x0087) AM_MIRROR(0xff00) AM_READWRITE(kc85_4_86_r, kc85_4_86_w)
- AM_RANGE(0x0088, 0x008b) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
- AM_RANGE(0x008c, 0x008f) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kc85_4_state::kc85_4_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE_BANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE_BANK("bank2")
- AM_RANGE(0x8000, 0xa7ff) AM_READWRITE_BANK("bank3")
- AM_RANGE(0xa800, 0xbfff) AM_READWRITE_BANK("bank6")
- AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank4")
- AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kc_state::kc85_3_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE_BANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE_BANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE_BANK("bank3")
- AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank4")
- AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kc_state::kc85_3_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(expansion_io_read, expansion_io_write)
-
- AM_RANGE(0x0088, 0x008b) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
- AM_RANGE(0x008c, 0x008f) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void kc85_4_state::kc85_4_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(kc85_4_state::expansion_io_read), FUNC(kc85_4_state::expansion_io_write));
+
+ map(0x0084, 0x0085).mirror(0xff00).rw(this, FUNC(kc85_4_state::kc85_4_84_r), FUNC(kc85_4_state::kc85_4_84_w));
+ map(0x0086, 0x0087).mirror(0xff00).rw(this, FUNC(kc85_4_state::kc85_4_86_r), FUNC(kc85_4_state::kc85_4_86_w));
+ map(0x0088, 0x008b).mirror(0xff00).rw(m_z80pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x008c, 0x008f).mirror(0xff00).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
+
+void kc85_4_state::kc85_4_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xa7ff).bankrw("bank3");
+ map(0xa800, 0xbfff).bankrw("bank6");
+ map(0xc000, 0xdfff).bankr("bank4");
+ map(0xe000, 0xffff).bankr("bank5");
+}
+
+void kc_state::kc85_3_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xdfff).bankr("bank4");
+ map(0xe000, 0xffff).bankr("bank5");
+}
+
+void kc_state::kc85_3_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(kc_state::expansion_io_read), FUNC(kc_state::expansion_io_write));
+
+ map(0x0088, 0x008b).mirror(0xff00).rw(m_z80pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x008c, 0x008f).mirror(0xff00).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
static INPUT_PORTS_START( kc85 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/kchamp.cpp b/src/mame/drivers/kchamp.cpp
index 3e37055672b..bd2d3391395 100644
--- a/src/mame/drivers/kchamp.cpp
+++ b/src/mame/drivers/kchamp.cpp
@@ -104,42 +104,47 @@ WRITE8_MEMBER(kchamp_state::sound_control_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
-ADDRESS_MAP_START(kchamp_state::kchampvs_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(kchamp_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(kchamp_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd900, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::kchampvs_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x40, 0x40) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::kchampvs_sound_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::kchampvs_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("adpcm_select", ls157_device, ab_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(sound_control_w)
-ADDRESS_MAP_END
+void kchamp_state::kchampvs_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(kchamp_state::kchamp_videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(kchamp_state::kchamp_colorram_w)).share("colorram");
+ map(0xd800, 0xd8ff).ram().share("spriteram");
+ map(0xd900, 0xdfff).ram();
+ map(0xe000, 0xffff).rom();
+}
+
+void kchamp_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().share("decrypted_opcodes");
+}
+
+void kchamp_state::kchampvs_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x40, 0x40).portr("P2").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x80, 0x80).portr("SYSTEM");
+ map(0xc0, 0xc0).portr("DSW");
+}
+
+void kchamp_state::kchampvs_sound_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0xffff).ram();
+}
+
+void kchamp_state::kchampvs_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x01, 0x01).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x04, 0x04).w(m_adpcm_select, FUNC(ls157_device::ab_w));
+ map(0x05, 0x05).w(this, FUNC(kchamp_state::sound_control_w));
+}
/********************
@@ -163,38 +168,42 @@ WRITE8_MEMBER(kchamp_state::kc_sound_control_w)
m_dac->set_output_gain(0, BIT(data,0) ? 1.0 : 0);
}
-ADDRESS_MAP_START(kchamp_state::kchamp_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(kchamp_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(kchamp_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xea00, 0xeaff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xeb00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::kchamp_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW")
- AM_RANGE(0x80, 0x87) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("P1")
- AM_RANGE(0x98, 0x98) AM_READ_PORT("P2")
- AM_RANGE(0xa0, 0xa0) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa8, 0xa8) AM_READ(sound_reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::kchamp_sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe2ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kchamp_state::kchamp_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x05, 0x05) AM_WRITE(kc_sound_control_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void kchamp_state::kchamp_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(kchamp_state::kchamp_videoram_w)).share("videoram");
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(kchamp_state::kchamp_colorram_w)).share("colorram");
+ map(0xea00, 0xeaff).ram().share("spriteram");
+ map(0xeb00, 0xffff).ram();
+}
+
+void kchamp_state::kchamp_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x80).portr("DSW");
+ map(0x80, 0x87).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x90, 0x90).portr("P1");
+ map(0x98, 0x98).portr("P2");
+ map(0xa0, 0xa0).portr("SYSTEM");
+ map(0xa8, 0xa8).r(this, FUNC(kchamp_state::sound_reset_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+void kchamp_state::kchamp_sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe2ff).ram();
+}
+
+void kchamp_state::kchamp_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x04, 0x04).w(m_dac, FUNC(dac_byte_interface::write));
+ map(0x05, 0x05).w(this, FUNC(kchamp_state::kc_sound_control_w));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( kchampvs )
PORT_START("P1")
diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp
index b9d07a50faa..ed8a6bc0138 100644
--- a/src/mame/drivers/kdt6.cpp
+++ b/src/mame/drivers/kdt6.cpp
@@ -150,58 +150,60 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(kdt6_state::psi98_mem)
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("page0_r") AM_WRITE_BANK("page0_w")
- AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("page1_r") AM_WRITE_BANK("page1_w")
- AM_RANGE(0x2000, 0x2fff) AM_READ_BANK("page2_r") AM_WRITE_BANK("page2_w")
- AM_RANGE(0x3000, 0x3fff) AM_READ_BANK("page3_r") AM_WRITE_BANK("page3_w")
- AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("page4_r") AM_WRITE_BANK("page4_w")
- AM_RANGE(0x5000, 0x5fff) AM_READ_BANK("page5_r") AM_WRITE_BANK("page5_w")
- AM_RANGE(0x6000, 0x6fff) AM_READ_BANK("page6_r") AM_WRITE_BANK("page6_w")
- AM_RANGE(0x7000, 0x7fff) AM_READ_BANK("page7_r") AM_WRITE_BANK("page7_w")
- AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("page8_r") AM_WRITE_BANK("page8_w")
- AM_RANGE(0x9000, 0x9fff) AM_READ_BANK("page9_r") AM_WRITE_BANK("page9_w")
- AM_RANGE(0xa000, 0xafff) AM_READ_BANK("pagea_r") AM_WRITE_BANK("pagea_w")
- AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("pageb_r") AM_WRITE_BANK("pageb_w")
- AM_RANGE(0xc000, 0xcfff) AM_READ_BANK("pagec_r") AM_WRITE_BANK("pagec_w")
- AM_RANGE(0xd000, 0xdfff) AM_READ_BANK("paged_r") AM_WRITE_BANK("paged_w")
- AM_RANGE(0xe000, 0xefff) AM_READ_BANK("pagee_r") AM_WRITE_BANK("pagee_w")
- AM_RANGE(0xf000, 0xffff) AM_READ_BANK("pagef_r") AM_WRITE_BANK("pagef_w")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kdt6_state::psi98_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio", z80pio_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write)
- AM_RANGE(0x14, 0x14) AM_DEVREAD("fdc", upd765a_device, msr_r)
- AM_RANGE(0x15, 0x15) AM_DEVREADWRITE("fdc", upd765a_device, fifo_r, fifo_w)
- AM_RANGE(0x18, 0x18) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x1c, 0x1c) AM_WRITE(status0_w)
- AM_RANGE(0x1d, 0x1d) AM_DEVREAD("kbd", psi_keyboard_bus_device, key_data_r)
- AM_RANGE(0x1e, 0x1e) AM_DEVREADWRITE("fdc", upd765a_device, mdma_r, mdma_w)
- AM_RANGE(0x1f, 0x1f) AM_WRITE(fdc_tc_w)
- AM_RANGE(0x20, 0x2f) AM_READWRITE(mapper_r, mapper_w)
- AM_RANGE(0x30, 0x30) AM_READWRITE(video_data_r, video_data_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(video_data_inc_w)
- AM_RANGE(0x36, 0x36) AM_WRITE(video_data_dec_w)
- AM_RANGE(0x37, 0x37) AM_WRITE(video_data_inc_w)
- AM_RANGE(0x38, 0x38) AM_WRITE(status1_w)
- AM_RANGE(0x39, 0x39) AM_READ(status1_r)
- AM_RANGE(0x3a, 0x3a) AM_WRITE(status2_w)
- AM_RANGE(0x3b, 0x3b) AM_READWRITE(sasi_ctrl_r, sasi_ctrl_w)
- AM_RANGE(0x3c, 0x3c) AM_WRITE(dma_map_w)
+void kdt6_state::psi98_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("page0_r").bankw("page0_w");
+ map(0x1000, 0x1fff).bankr("page1_r").bankw("page1_w");
+ map(0x2000, 0x2fff).bankr("page2_r").bankw("page2_w");
+ map(0x3000, 0x3fff).bankr("page3_r").bankw("page3_w");
+ map(0x4000, 0x4fff).bankr("page4_r").bankw("page4_w");
+ map(0x5000, 0x5fff).bankr("page5_r").bankw("page5_w");
+ map(0x6000, 0x6fff).bankr("page6_r").bankw("page6_w");
+ map(0x7000, 0x7fff).bankr("page7_r").bankw("page7_w");
+ map(0x8000, 0x8fff).bankr("page8_r").bankw("page8_w");
+ map(0x9000, 0x9fff).bankr("page9_r").bankw("page9_w");
+ map(0xa000, 0xafff).bankr("pagea_r").bankw("pagea_w");
+ map(0xb000, 0xbfff).bankr("pageb_r").bankw("pageb_w");
+ map(0xc000, 0xcfff).bankr("pagec_r").bankw("pagec_w");
+ map(0xd000, 0xdfff).bankr("paged_r").bankw("paged_w");
+ map(0xe000, 0xefff).bankr("pagee_r").bankw("pagee_w");
+ map(0xf000, 0xffff).bankr("pagef_r").bankw("pagef_w");
+}
+
+void kdt6_state::psi98_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x04, 0x07).rw(m_sio, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x08, 0x0b).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x10, 0x13).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x14, 0x14).r(m_fdc, FUNC(upd765a_device::msr_r));
+ map(0x15, 0x15).rw(m_fdc, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w));
+ map(0x18, 0x18).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x19, 0x19).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x1c, 0x1c).w(this, 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::mdma_r), FUNC(upd765a_device::mdma_w));
+ map(0x1f, 0x1f).w(this, FUNC(kdt6_state::fdc_tc_w));
+ map(0x20, 0x2f).rw(this, FUNC(kdt6_state::mapper_r), FUNC(kdt6_state::mapper_w));
+ map(0x30, 0x30).rw(this, FUNC(kdt6_state::video_data_r), FUNC(kdt6_state::video_data_w));
+ map(0x31, 0x31).w(this, FUNC(kdt6_state::video_data_inc_w));
+ map(0x36, 0x36).w(this, FUNC(kdt6_state::video_data_dec_w));
+ map(0x37, 0x37).w(this, FUNC(kdt6_state::video_data_inc_w));
+ map(0x38, 0x38).w(this, FUNC(kdt6_state::status1_w));
+ map(0x39, 0x39).r(this, FUNC(kdt6_state::status1_r));
+ map(0x3a, 0x3a).w(this, FUNC(kdt6_state::status2_w));
+ map(0x3b, 0x3b).rw(this, FUNC(kdt6_state::sasi_ctrl_r), FUNC(kdt6_state::sasi_ctrl_w));
+ map(0x3c, 0x3c).w(this, FUNC(kdt6_state::dma_map_w));
#if 0
AM_RANGE(0x3d, 0x3d) WATCHDOG
AM_RANGE(0x3e, 0x3e) WATCHDOG TRIGGER
AM_RANGE(0x3f, 0x3f) SASI DATA
#endif
- AM_RANGE(0x40, 0x40) AM_WRITE(video_address_latch_high_w)
- AM_RANGE(0x41, 0x41) AM_WRITE(video_address_latch_low_w)
-ADDRESS_MAP_END
+ map(0x40, 0x40).w(this, FUNC(kdt6_state::video_address_latch_high_w));
+ map(0x41, 0x41).w(this, FUNC(kdt6_state::video_address_latch_low_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/kenseim.cpp b/src/mame/drivers/kenseim.cpp
index 0762db86c46..5d5bcd02cfa 100644
--- a/src/mame/drivers/kenseim.cpp
+++ b/src/mame/drivers/kenseim.cpp
@@ -456,14 +456,16 @@ WRITE8_MEMBER(kenseim_state::cpu_porte_w)
-ADDRESS_MAP_START(kenseim_state::kenseim_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kenseim_state::kenseim_io_map)
- AM_RANGE(0x20, 0x27) AM_MIRROR(0xff00) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write)
-ADDRESS_MAP_END
+void kenseim_state::kenseim_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).ram();
+}
+
+void kenseim_state::kenseim_io_map(address_map &map)
+{
+ map(0x20, 0x27).mirror(0xff00).rw("mb89363b", FUNC(mb89363b_device::read), FUNC(mb89363b_device::write));
+}
diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp
index 434e5c201fa..a577345975a 100644
--- a/src/mame/drivers/kickgoal.cpp
+++ b/src/mame/drivers/kickgoal.cpp
@@ -473,24 +473,25 @@ WRITE16_MEMBER(kickgoal_state::kickgoal_eeprom_w)
/* Memory Maps *****************************************************************/
-ADDRESS_MAP_START(kickgoal_state::kickgoal_program_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
+void kickgoal_state::kickgoal_program_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
/// AM_RANGE(0x30001e, 0x30001f) AM_WRITE(kickgoal_snd_w)
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("SYSTEM")
+ map(0x800000, 0x800001).portr("P1_P2");
+ map(0x800002, 0x800003).portr("SYSTEM");
/// AM_RANGE(0x800004, 0x800005) AM_DEVWRITE("soundlatch", generic_latch_16_device, write)
- AM_RANGE(0x800004, 0x800005) AM_WRITE(actionhw_snd_w)
- AM_RANGE(0x900000, 0x900005) AM_WRITE(kickgoal_eeprom_w)
- AM_RANGE(0x900006, 0x900007) AM_READ(kickgoal_eeprom_r)
- AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(kickgoal_fgram_w) AM_SHARE("fgram") /* FG Layer */
- AM_RANGE(0xa04000, 0xa07fff) AM_RAM_WRITE(kickgoal_bgram_w) AM_SHARE("bgram") /* Higher BG Layer */
- AM_RANGE(0xa08000, 0xa0bfff) AM_RAM_WRITE(kickgoal_bg2ram_w) AM_SHARE("bg2ram") /* Lower BG Layer */
- AM_RANGE(0xa0c000, 0xa0ffff) AM_RAM // more tilemap?
- AM_RANGE(0xa10000, 0xa1000f) AM_WRITEONLY AM_SHARE("scrram") /* Scroll Registers */
- AM_RANGE(0xb00000, 0xb007ff) AM_WRITEONLY AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0xc00000, 0xc007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ // actionhw reads this
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x800004, 0x800005).w(this, FUNC(kickgoal_state::actionhw_snd_w));
+ map(0x900000, 0x900005).w(this, FUNC(kickgoal_state::kickgoal_eeprom_w));
+ map(0x900006, 0x900007).r(this, FUNC(kickgoal_state::kickgoal_eeprom_r));
+ map(0xa00000, 0xa03fff).ram().w(this, FUNC(kickgoal_state::kickgoal_fgram_w)).share("fgram"); /* FG Layer */
+ map(0xa04000, 0xa07fff).ram().w(this, FUNC(kickgoal_state::kickgoal_bgram_w)).share("bgram"); /* Higher BG Layer */
+ map(0xa08000, 0xa0bfff).ram().w(this, FUNC(kickgoal_state::kickgoal_bg2ram_w)).share("bg2ram"); /* Lower BG Layer */
+ map(0xa0c000, 0xa0ffff).ram(); // more tilemap?
+ map(0xa10000, 0xa1000f).writeonly().share("scrram"); /* Scroll Registers */
+ map(0xb00000, 0xb007ff).writeonly().share("spriteram"); /* Sprites */
+ map(0xc00000, 0xc007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ // actionhw reads this
+ map(0xff0000, 0xffffff).ram();
+}
/* INPUT ports ***************************************************************/
@@ -626,10 +627,11 @@ void kickgoal_state::machine_reset()
}
-ADDRESS_MAP_START(kickgoal_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void kickgoal_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
MACHINE_CONFIG_START(kickgoal_state::kickgoal)
diff --git a/src/mame/drivers/kim1.cpp b/src/mame/drivers/kim1.cpp
index 0f1656ea9de..0a28240e011 100644
--- a/src/mame/drivers/kim1.cpp
+++ b/src/mame/drivers/kim1.cpp
@@ -66,15 +66,16 @@ TODO:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(kim1_state::kim1_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0xe000) AM_RAM
- AM_RANGE(0x1700, 0x173f) AM_MIRROR(0xe000) AM_DEVREADWRITE("miot_u3", mos6530_device, read, write )
- AM_RANGE(0x1740, 0x177f) AM_MIRROR(0xe000) AM_DEVREADWRITE("miot_u2", mos6530_device, read, write )
- AM_RANGE(0x1780, 0x17bf) AM_MIRROR(0xe000) AM_RAM
- AM_RANGE(0x17c0, 0x17ff) AM_MIRROR(0xe000) AM_RAM
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0xe000) AM_ROM
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0xe000) AM_ROM
-ADDRESS_MAP_END
+void kim1_state::kim1_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0xe000).ram();
+ map(0x1700, 0x173f).mirror(0xe000).rw("miot_u3", FUNC(mos6530_device::read), FUNC(mos6530_device::write));
+ map(0x1740, 0x177f).mirror(0xe000).rw(m_riot2, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
+ map(0x1780, 0x17bf).mirror(0xe000).ram();
+ map(0x17c0, 0x17ff).mirror(0xe000).ram();
+ map(0x1800, 0x1bff).mirror(0xe000).rom();
+ map(0x1c00, 0x1fff).mirror(0xe000).rom();
+}
// RS and ST key input
INPUT_CHANGED_MEMBER(kim1_state::trigger_reset)
diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp
index 0afc83e0307..a8354a6394d 100644
--- a/src/mame/drivers/kingdrby.cpp
+++ b/src/mame/drivers/kingdrby.cpp
@@ -418,82 +418,91 @@ WRITE8_MEMBER(kingdrby_state::led_array_w)
*
*************************************/
-ADDRESS_MAP_START(kingdrby_state::master_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0xc00) AM_SHARE("share1")
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("vram")
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(sc0_attr_w) AM_SHARE("attr")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::master_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_NOP //interrupt ack
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::slave_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom, tested for the post check
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") //backup ram
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* I/O Ports */
- AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* I/O Ports */
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x7400, 0x74ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x7801, 0x780f) AM_WRITE(led_array_w)
- AM_RANGE(0x7a00, 0x7a00) AM_RAM //buffer for the key matrix
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
+void kingdrby_state::master_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x33ff).ram().mirror(0xc00).share("share1");
+ map(0x4000, 0x43ff).ram().w(this, FUNC(kingdrby_state::sc0_vram_w)).share("vram");
+ map(0x5000, 0x53ff).ram().w(this, FUNC(kingdrby_state::sc0_attr_w)).share("attr");
+}
+
+void kingdrby_state::master_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).noprw(); //interrupt ack
+}
+
+void kingdrby_state::slave_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rom(); //sound rom, tested for the post check
+ map(0x4000, 0x43ff).ram().share("nvram"); //backup ram
+ map(0x5000, 0x5003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* I/O Ports */
+ map(0x6000, 0x6003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* I/O Ports */
+ map(0x7000, 0x73ff).ram().share("share1");
+ map(0x7400, 0x74ff).ram().share("spriteram");
+ map(0x7600, 0x7600).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x7601, 0x7601).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x7801, 0x780f).w(this, FUNC(kingdrby_state::led_array_w));
+ map(0x7a00, 0x7a00).ram(); //buffer for the key matrix
+ map(0x7c00, 0x7c00).portr("DSW");
+}
WRITE8_MEMBER(kingdrby_state::kingdrbb_lamps_w)
{
// (same as the inputs but active high)
}
-ADDRESS_MAP_START(kingdrby_state::slave_1986_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom tested for the post check
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") //backup ram
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* I/O Ports */
+void kingdrby_state::slave_1986_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rom(); //sound rom tested for the post check
+ map(0x4000, 0x47ff).ram().share("nvram"); //backup ram
+ map(0x5000, 0x5003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* I/O Ports */
// AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* I/O Ports */
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x7400, 0x74ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x7800, 0x7800) AM_READ_PORT("KEY0")
- AM_RANGE(0x7801, 0x7801) AM_READ_PORT("KEY1")
- AM_RANGE(0x7802, 0x7802) AM_READ_PORT("KEY2")
- AM_RANGE(0x7803, 0x7803) AM_READ_PORT("KEY3")
- AM_RANGE(0x7800, 0x7803) AM_WRITE(kingdrbb_lamps_w)
- AM_RANGE(0x7a00, 0x7a00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::slave_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_NOP //interrupt ack
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::cowrace_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingdrby_state::cowrace_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ym2203_device, write)
-ADDRESS_MAP_END
+ map(0x7000, 0x73ff).ram().share("share1");
+ map(0x7400, 0x74ff).ram().share("spriteram");
+ map(0x7600, 0x7600).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x7601, 0x7601).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x7800, 0x7800).portr("KEY0");
+ map(0x7801, 0x7801).portr("KEY1");
+ map(0x7802, 0x7802).portr("KEY2");
+ map(0x7803, 0x7803).portr("KEY3");
+ map(0x7800, 0x7803).w(this, FUNC(kingdrby_state::kingdrbb_lamps_w));
+ map(0x7a00, 0x7a00).portr("SYSTEM");
+ map(0x7c00, 0x7c00).portr("DSW");
+}
+
+void kingdrby_state::slave_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).noprw(); //interrupt ack
+}
+
+void kingdrby_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+}
+
+void kingdrby_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
+
+void kingdrby_state::cowrace_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+}
+
+void kingdrby_state::cowrace_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x41).w("aysnd", FUNC(ym2203_device::write));
+}
WRITE8_MEMBER(kingdrby_state::outportb_w)
diff --git a/src/mame/drivers/kingobox.cpp b/src/mame/drivers/kingobox.cpp
index 4da81267f99..43a3c99c6b7 100644
--- a/src/mame/drivers/kingobox.cpp
+++ b/src/mame/drivers/kingobox.cpp
@@ -52,101 +52,110 @@ WRITE8_MEMBER(kingofb_state::sound_command_w)
}
-ADDRESS_MAP_START(kingofb_state::kingobox_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share2") /* shared with sprite cpu */
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share1") /* shared with video cpu */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM /* ???? */
- AM_RANGE(0xf800, 0xf800) AM_WRITE(kingofb_f800_w) /* NMI enable, palette bank */
- AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* ???? */
- AM_RANGE(0xf802, 0xf802) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0xf803, 0xf803) AM_WRITE(scroll_interrupt_w)
- AM_RANGE(0xf804, 0xf804) AM_WRITE(video_interrupt_w)
- AM_RANGE(0xf807, 0xf807) AM_WRITE(sound_command_w) /* sound latch */
- AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P1")
- AM_RANGE(0xfc03, 0xfc03) AM_READ_PORT("P2")
- AM_RANGE(0xfc04, 0xfc04) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfc05, 0xfc05) AM_READ_PORT("EXTRA")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::kingobox_video_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1") /* shared with main */
- AM_RANGE(0xc000, 0xc0ff) AM_RAM_WRITE(kingofb_videoram_w) AM_SHARE("videoram") /* background vram */
- AM_RANGE(0xc400, 0xc4ff) AM_RAM_WRITE(kingofb_colorram_w) AM_SHARE("colorram") /* background colorram */
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(kingofb_videoram2_w) AM_SHARE("videoram2") /* foreground vram */
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(kingofb_colorram2_w) AM_SHARE("colorram2") /* foreground colorram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::kingobox_sprite_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share2") /* shared with main */
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0xc400, 0xc43f) AM_RAM /* something related to scroll? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::kingobox_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_WRITENOP /* ??? */
- AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::kingobox_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void kingofb_state::kingobox_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram(); /* work ram */
+ map(0xe000, 0xe7ff).ram().share("share2"); /* shared with sprite cpu */
+ map(0xe800, 0xefff).ram().share("share1"); /* shared with video cpu */
+ map(0xf000, 0xf7ff).ram(); /* ???? */
+ map(0xf800, 0xf800).w(this, FUNC(kingofb_state::kingofb_f800_w)); /* NMI enable, palette bank */
+ map(0xf801, 0xf801).nopw(); /* ???? */
+ map(0xf802, 0xf802).writeonly().share("scroll_y");
+ map(0xf803, 0xf803).w(this, FUNC(kingofb_state::scroll_interrupt_w));
+ map(0xf804, 0xf804).w(this, FUNC(kingofb_state::video_interrupt_w));
+ map(0xf807, 0xf807).w(this, FUNC(kingofb_state::sound_command_w)); /* sound latch */
+ map(0xfc00, 0xfc00).portr("DSW1");
+ map(0xfc01, 0xfc01).portr("DSW2");
+ map(0xfc02, 0xfc02).portr("P1");
+ map(0xfc03, 0xfc03).portr("P2");
+ map(0xfc04, 0xfc04).portr("SYSTEM");
+ map(0xfc05, 0xfc05).portr("EXTRA");
+}
+
+void kingofb_state::kingobox_video_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram(); /* work ram */
+ map(0xa000, 0xa7ff).ram().share("share1"); /* shared with main */
+ map(0xc000, 0xc0ff).ram().w(this, FUNC(kingofb_state::kingofb_videoram_w)).share("videoram"); /* background vram */
+ map(0xc400, 0xc4ff).ram().w(this, FUNC(kingofb_state::kingofb_colorram_w)).share("colorram"); /* background colorram */
+ map(0xc800, 0xcbff).ram().w(this, FUNC(kingofb_state::kingofb_videoram2_w)).share("videoram2"); /* foreground vram */
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(kingofb_state::kingofb_colorram2_w)).share("colorram2"); /* foreground colorram */
+}
+
+void kingofb_state::kingobox_sprite_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x87ff).ram(); /* work ram */
+ map(0xa000, 0xa7ff).ram().share("share2"); /* shared with main */
+ map(0xc000, 0xc3ff).ram().share("spriteram"); /* sprite ram */
+ map(0xc400, 0xc43f).ram(); /* something related to scroll? */
+}
+
+void kingofb_state::kingobox_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0x8000, 0x8000).nopw(); /* ??? */
+ map(0xc000, 0xc3ff).ram(); /* work ram */
+}
+
+void kingofb_state::kingobox_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("dac", FUNC(dac_byte_interface::write));
+ map(0x08, 0x08).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::address_w));
+}
/* Ring King */
-ADDRESS_MAP_START(kingofb_state::ringking_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share2") /* shared with sprite cpu */
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("share1") /* shared with video cpu */
- AM_RANGE(0xd800, 0xd800) AM_WRITE(kingofb_f800_w)
- AM_RANGE(0xd801, 0xd801) AM_WRITE(sprite_interrupt_w)
- AM_RANGE(0xd802, 0xd802) AM_WRITE(video_interrupt_w)
- AM_RANGE(0xd803, 0xd803) AM_WRITE(sound_command_w)
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1")
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1")
- AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2")
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe005, 0xe005) AM_READ_PORT("EXTRA")
- AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM /* ???? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::ringking_video_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") /* shared with main */
- AM_RANGE(0xa800, 0xa8ff) AM_RAM_WRITE(kingofb_videoram_w) AM_SHARE("videoram") /* background vram */
- AM_RANGE(0xac00, 0xacff) AM_RAM_WRITE(kingofb_colorram_w) AM_SHARE("colorram") /* background colorram */
- AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(kingofb_videoram2_w) AM_SHARE("videoram2") /* foreground vram */
- AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(kingofb_colorram2_w) AM_SHARE("colorram2") /* foreground colorram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::ringking_sprite_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share2") /* shared with main */
- AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0xa400, 0xa43f) AM_RAM /* something related to scroll? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingofb_state::ringking_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void kingofb_state::ringking_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram(); /* work ram */
+ map(0xc800, 0xcfff).ram().share("share2"); /* shared with sprite cpu */
+ map(0xd000, 0xd7ff).ram().share("share1"); /* shared with video cpu */
+ map(0xd800, 0xd800).w(this, FUNC(kingofb_state::kingofb_f800_w));
+ map(0xd801, 0xd801).w(this, FUNC(kingofb_state::sprite_interrupt_w));
+ map(0xd802, 0xd802).w(this, FUNC(kingofb_state::video_interrupt_w));
+ map(0xd803, 0xd803).w(this, FUNC(kingofb_state::sound_command_w));
+ map(0xe000, 0xe000).portr("DSW1");
+ map(0xe001, 0xe001).portr("DSW2");
+ map(0xe002, 0xe002).portr("P1");
+ map(0xe003, 0xe003).portr("P2");
+ map(0xe004, 0xe004).portr("SYSTEM");
+ map(0xe005, 0xe005).portr("EXTRA");
+ map(0xe800, 0xe800).writeonly().share("scroll_y");
+ map(0xf000, 0xf7ff).ram(); /* ???? */
+}
+
+void kingofb_state::ringking_video_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram(); /* work ram */
+ map(0xc000, 0xc7ff).ram().share("share1"); /* shared with main */
+ map(0xa800, 0xa8ff).ram().w(this, FUNC(kingofb_state::kingofb_videoram_w)).share("videoram"); /* background vram */
+ map(0xac00, 0xacff).ram().w(this, FUNC(kingofb_state::kingofb_colorram_w)).share("colorram"); /* background colorram */
+ map(0xa000, 0xa3ff).ram().w(this, FUNC(kingofb_state::kingofb_videoram2_w)).share("videoram2"); /* foreground vram */
+ map(0xa400, 0xa7ff).ram().w(this, FUNC(kingofb_state::kingofb_colorram2_w)).share("colorram2"); /* foreground colorram */
+}
+
+void kingofb_state::ringking_sprite_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x87ff).ram(); /* work ram */
+ map(0xc800, 0xcfff).ram().share("share2"); /* shared with main */
+ map(0xa000, 0xa3ff).ram().share("spriteram"); /* sprite ram */
+ map(0xa400, 0xa43f).ram(); /* something related to scroll? */
+}
+
+void kingofb_state::ringking_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("dac", FUNC(dac_byte_interface::write));
+ map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
static INPUT_PORTS_START( kingofb )
diff --git a/src/mame/drivers/kingpin.cpp b/src/mame/drivers/kingpin.cpp
index 851efc743ed..a51ebfd3dee 100644
--- a/src/mame/drivers/kingpin.cpp
+++ b/src/mame/drivers/kingpin.cpp
@@ -72,38 +72,42 @@ WRITE8_MEMBER(kingpin_state::sound_nmi_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(kingpin_state::kingpin_program_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingpin_state::dealracl_program_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kingpin_state::kingpin_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0x60, 0x60) AM_WRITE(sound_nmi_w)
+void kingpin_state::kingpin_program_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xf000, 0xf7ff).ram().share("nvram");
+}
+
+void kingpin_state::dealracl_program_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0xc000, 0xc7ff).ram().share("nvram");
+}
+
+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, 0x20).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x21, 0x21).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0x60, 0x60).w(this, FUNC(kingpin_state::sound_nmi_w));
//AM_RANGE(0x30, 0x30) AM_WRITENOP // lamps?
//AM_RANGE(0x40, 0x40) AM_WRITENOP // lamps?
//AM_RANGE(0x50, 0x50) AM_WRITENOP // ?
//AM_RANGE(0x70, 0x70) AM_WRITENOP // ?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(kingpin_state::kingpin_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
+void kingpin_state::kingpin_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x8001).w("aysnd", FUNC(ay8910_device::address_data_w));
//AM_RANGE(0x8400, 0x8400) AM_READNOP // ?
//AM_RANGE(0x8401, 0x8401) AM_WRITENOP // ?
- AM_RANGE(0x8800, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x8800, 0x8fff).ram();
+ map(0x9000, 0x9000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp
index 83e885a3205..dfa1834c2c7 100644
--- a/src/mame/drivers/kinst.cpp
+++ b/src/mame/drivers/kinst.cpp
@@ -448,15 +448,16 @@ WRITE32_MEMBER(kinst_state::control_w)
*
*************************************/
-ADDRESS_MAP_START(kinst_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x08000000, 0x087fffff) AM_RAM AM_SHARE("rambase2")
- AM_RANGE(0x10000080, 0x100000ff) AM_READWRITE(control_r, control_w) AM_SHARE("control")
- AM_RANGE(0x10000100, 0x1000013f) AM_READWRITE(ide_r, ide_w)
- AM_RANGE(0x10000170, 0x10000173) AM_READWRITE(ide_extra_r, ide_extra_w)
- AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase")
-ADDRESS_MAP_END
+void kinst_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0007ffff).ram().share("rambase");
+ map(0x08000000, 0x087fffff).ram().share("rambase2");
+ map(0x10000080, 0x100000ff).rw(this, FUNC(kinst_state::control_r), FUNC(kinst_state::control_w)).share("control");
+ map(0x10000100, 0x1000013f).rw(this, FUNC(kinst_state::ide_r), FUNC(kinst_state::ide_w));
+ map(0x10000170, 0x10000173).rw(this, FUNC(kinst_state::ide_extra_r), FUNC(kinst_state::ide_extra_w));
+ map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0).share("rombase");
+}
diff --git a/src/mame/drivers/kissproto.cpp b/src/mame/drivers/kissproto.cpp
index e6e0029b86e..6a9bf6f39da 100644
--- a/src/mame/drivers/kissproto.cpp
+++ b/src/mame/drivers/kissproto.cpp
@@ -33,9 +33,10 @@ public:
};
-ADDRESS_MAP_START(kissp_state::kissp_map)
- AM_RANGE(0x0000, 0x0fff) AM_NOP
-ADDRESS_MAP_END
+void kissp_state::kissp_map(address_map &map)
+{
+ map(0x0000, 0x0fff).noprw();
+}
static INPUT_PORTS_START( kissp )
INPUT_PORTS_END
diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp
index 85cbfd53d50..ff805f32276 100644
--- a/src/mame/drivers/klax.cpp
+++ b/src/mame/drivers/klax.cpp
@@ -79,39 +79,41 @@ void klax_state::machine_reset()
*
*************************************/
-ADDRESS_MAP_START(klax_state::klax_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE(klax_latch_w)
- AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2")
- AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w)
- AM_RANGE(0x3e0000, 0x3e07ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette")
- AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x3f0f80, 0x3f0fff) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext")
- AM_RANGE(0x3f2000, 0x3f27ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(klax_state::klax2bl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE(klax_latch_w)
- AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2")
+void klax_state::klax_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x260001).portr("P1").w(this, FUNC(klax_state::klax_latch_w));
+ map(0x260002, 0x260003).portr("P2");
+ map(0x270001, 0x270001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x360000, 0x360001).w(this, FUNC(klax_state::interrupt_ack_w));
+ map(0x3e0000, 0x3e07ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
+ map(0x3f0000, 0x3f0f7f).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x3f0f80, 0x3f0fff).ram().share("mob:slip");
+ map(0x3f1000, 0x3f1fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext");
+ map(0x3f2000, 0x3f27ff).ram().share("mob");
+ map(0x3f2800, 0x3f3fff).ram();
+}
+
+void klax_state::klax2bl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x260001).portr("P1").w(this, FUNC(klax_state::klax_latch_w));
+ map(0x260002, 0x260003).portr("P2");
// AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // no OKI here
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w)
- AM_RANGE(0x3e0000, 0x3e07ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette")
- AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x3f0f80, 0x3f0fff) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext")
- AM_RANGE(0x3f2000, 0x3f27ff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x360000, 0x360001).w(this, FUNC(klax_state::interrupt_ack_w));
+ map(0x3e0000, 0x3e07ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
+ map(0x3f0000, 0x3f0f7f).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x3f0f80, 0x3f0fff).ram().share("mob:slip");
+ map(0x3f1000, 0x3f1fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext");
+ map(0x3f2000, 0x3f27ff).ram().share("mob");
+ map(0x3f2800, 0x3f3fff).ram();
+}
/*************************************
*
@@ -228,9 +230,10 @@ MACHINE_CONFIG_START(klax_state::klax)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(klax_state::bootleg_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void klax_state::bootleg_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
MACHINE_CONFIG_START(klax_state::klax2bl)
klax(config);
diff --git a/src/mame/drivers/kncljoe.cpp b/src/mame/drivers/kncljoe.cpp
index cbeac9957b3..dccc835ddc2 100644
--- a/src/mame/drivers/kncljoe.cpp
+++ b/src/mame/drivers/kncljoe.cpp
@@ -45,24 +45,25 @@ WRITE8_MEMBER(kncljoe_state::sound_cmd_w)
}
-ADDRESS_MAP_START(kncljoe_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(kncljoe_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd001) AM_WRITE(kncljoe_scroll_w) AM_SHARE("scrollregs")
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("P1")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("P2")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB")
- AM_RANGE(0xd800, 0xd800) AM_WRITE(sound_cmd_w)
- AM_RANGE(0xd801, 0xd801) AM_WRITE(kncljoe_control_w)
- AM_RANGE(0xd802, 0xd802) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0xd803, 0xd803) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0xd807, 0xd807) AM_READNOP /* unknown read */
- AM_RANGE(0xd817, 0xd817) AM_READNOP /* unknown read */
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void kncljoe_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().w(this, FUNC(kncljoe_state::kncljoe_videoram_w)).share("videoram");
+ map(0xd000, 0xd001).w(this, FUNC(kncljoe_state::kncljoe_scroll_w)).share("scrollregs");
+ map(0xd800, 0xd800).portr("SYSTEM");
+ map(0xd801, 0xd801).portr("P1");
+ map(0xd802, 0xd802).portr("P2");
+ map(0xd803, 0xd803).portr("DSWA");
+ map(0xd804, 0xd804).portr("DSWB");
+ map(0xd800, 0xd800).w(this, FUNC(kncljoe_state::sound_cmd_w));
+ map(0xd801, 0xd801).w(this, 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(0xd807, 0xd807).nopr(); /* unknown read */
+ map(0xd817, 0xd817).nopr(); /* unknown read */
+ map(0xe800, 0xefff).ram().share("spriteram");
+ map(0xf000, 0xffff).ram();
+}
WRITE8_MEMBER(kncljoe_state::m6803_port1_w)
{
@@ -103,17 +104,19 @@ WRITE8_MEMBER(kncljoe_state::unused_w)
//unused - no MSM on the pcb
}
-ADDRESS_MAP_START(kncljoe_state::sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0fff) AM_WRITENOP
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(sound_irq_ack_w)
- AM_RANGE(0x2000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kncljoe_state::sound_portmap)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(m6803_port1_r, m6803_port1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w)
-ADDRESS_MAP_END
+void kncljoe_state::sound_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x0fff).nopw();
+ map(0x1000, 0x1fff).w(this, FUNC(kncljoe_state::sound_irq_ack_w));
+ map(0x2000, 0x7fff).rom();
+}
+
+void kncljoe_state::sound_portmap(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(kncljoe_state::m6803_port1_r), FUNC(kncljoe_state::m6803_port1_w));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(kncljoe_state::m6803_port2_r), FUNC(kncljoe_state::m6803_port2_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp
index 02d138c8250..b991d853ef3 100644
--- a/src/mame/drivers/koftball.cpp
+++ b/src/mame/drivers/koftball.cpp
@@ -149,36 +149,38 @@ WRITE16_MEMBER(koftball_state::bmc_2_videoram_w)
m_tilemap_2->mark_tile_dirty(offset);
}
-ADDRESS_MAP_START(koftball_state::koftball_mem)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x220000, 0x22ffff) AM_RAM AM_SHARE("main_ram")
-
- AM_RANGE(0x260000, 0x260fff) AM_WRITE(bmc_1_videoram_w) AM_SHARE("bmc_1_videoram")
- AM_RANGE(0x261000, 0x261fff) AM_WRITE(bmc_2_videoram_w) AM_SHARE("bmc_2_videoram")
- AM_RANGE(0x262000, 0x26ffff) AM_RAM
-
- AM_RANGE(0x280000, 0x28ffff) AM_RAM /* unused ? */
- AM_RANGE(0x2a0000, 0x2a001f) AM_WRITENOP
- AM_RANGE(0x2a0000, 0x2a001f) AM_READ(random_number_r)
- AM_RANGE(0x2b0000, 0x2b0003) AM_READ(random_number_r)
- AM_RANGE(0x2d8000, 0x2d8001) AM_READ(random_number_r)
- AM_RANGE(0x2da000, 0x2da003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00)
-
- AM_RANGE(0x2db000, 0x2db001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x2db002, 0x2db003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x2db004, 0x2db005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
-
- AM_RANGE(0x2dc000, 0x2dc001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
- AM_RANGE(0x2f0000, 0x2f0003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP
- AM_RANGE(0x320000, 0x320001) AM_WRITENOP
- AM_RANGE(0x340000, 0x340001) AM_READ(prot_r)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(prot_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(koftball_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void koftball_state::koftball_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x220000, 0x22ffff).ram().share("main_ram");
+
+ map(0x260000, 0x260fff).w(this, FUNC(koftball_state::bmc_1_videoram_w)).share("bmc_1_videoram");
+ map(0x261000, 0x261fff).w(this, FUNC(koftball_state::bmc_2_videoram_w)).share("bmc_2_videoram");
+ map(0x262000, 0x26ffff).ram();
+
+ map(0x280000, 0x28ffff).ram(); /* unused ? */
+ map(0x2a0000, 0x2a001f).nopw();
+ map(0x2a0000, 0x2a001f).r(this, FUNC(koftball_state::random_number_r));
+ map(0x2b0000, 0x2b0003).r(this, FUNC(koftball_state::random_number_r));
+ map(0x2d8000, 0x2d8001).r(this, FUNC(koftball_state::random_number_r));
+ map(0x2da000, 0x2da003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00);
+
+ map(0x2db001, 0x2db001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x2db003, 0x2db003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x2db005, 0x2db005).w("ramdac", FUNC(ramdac_device::mask_w));
+
+ map(0x2dc000, 0x2dc000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x2f0000, 0x2f0003).portr("INPUTS");
+ map(0x300000, 0x300001).nopw();
+ map(0x320000, 0x320001).nopw();
+ map(0x340000, 0x340001).r(this, FUNC(koftball_state::prot_r));
+ map(0x360000, 0x360001).w(this, FUNC(koftball_state::prot_w));
+}
+
+void koftball_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
static INPUT_PORTS_START( koftball )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/koikoi.cpp b/src/mame/drivers/koikoi.cpp
index a2aff475d94..24795c48017 100644
--- a/src/mame/drivers/koikoi.cpp
+++ b/src/mame/drivers/koikoi.cpp
@@ -232,20 +232,22 @@ WRITE8_MEMBER(koikoi_state::io_w)
*
*************************************/
-ADDRESS_MAP_START(koikoi_state::koikoi_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW")
- AM_RANGE(0x9000, 0x9007) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(koikoi_state::koikoi_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_WRITENOP //watchdog
- AM_RANGE(0x03, 0x03) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void koikoi_state::koikoi_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x7000, 0x77ff).ram().w(this, FUNC(koikoi_state::vram_w)).share("videoram");
+ map(0x8000, 0x8000).portr("DSW");
+ map(0x9000, 0x9007).rw(this, FUNC(koikoi_state::io_r), FUNC(koikoi_state::io_w));
+}
+
+void koikoi_state::koikoi_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x02).nopw(); //watchdog
+ map(0x03, 0x03).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x06, 0x07).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/konamigq.cpp b/src/mame/drivers/konamigq.cpp
index 038c8c29da7..c786fbd2fb4 100644
--- a/src/mame/drivers/konamigq.cpp
+++ b/src/mame/drivers/konamigq.cpp
@@ -167,25 +167,26 @@ READ8_MEMBER(konamigq_state::pcmram_r)
/* Video */
-ADDRESS_MAP_START(konamigq_state::konamigq_map)
- AM_RANGE(0x1f000000, 0x1f00001f) AM_DEVREADWRITE8("am53cf96", am53cf96_device, read, write, 0x00ff00ff)
- AM_RANGE(0x1f100000, 0x1f10001f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0x00ff00ff)
- AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE16(eeprom_w, 0x0000ffff)
- AM_RANGE(0x1f198000, 0x1f198003) AM_WRITENOP /* cabinet lamps? */
- AM_RANGE(0x1f1a0000, 0x1f1a0003) AM_WRITENOP /* indicates gun trigger */
- AM_RANGE(0x1f200000, 0x1f200003) AM_READ_PORT("GUNX1")
- AM_RANGE(0x1f208000, 0x1f208003) AM_READ_PORT("GUNY1")
- AM_RANGE(0x1f210000, 0x1f210003) AM_READ_PORT("GUNX2")
- AM_RANGE(0x1f218000, 0x1f218003) AM_READ_PORT("GUNY2")
- AM_RANGE(0x1f220000, 0x1f220003) AM_READ_PORT("GUNX3")
- AM_RANGE(0x1f228000, 0x1f228003) AM_READ_PORT("GUNY3")
- AM_RANGE(0x1f230000, 0x1f230003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x1f230004, 0x1f230007) AM_READ_PORT("P3_SERVICE")
- AM_RANGE(0x1f238000, 0x1f238003) AM_READ_PORT("DSW")
- AM_RANGE(0x1f300000, 0x1f5fffff) AM_READWRITE8(pcmram_r, pcmram_w, 0x00ff00ff)
- AM_RANGE(0x1f680000, 0x1f68001f) AM_DEVREADWRITE8("mb89371", mb89371_device, read, write, 0x00ff00ff)
- AM_RANGE(0x1f780000, 0x1f780003) AM_WRITENOP /* watchdog? */
-ADDRESS_MAP_END
+void konamigq_state::konamigq_map(address_map &map)
+{
+ map(0x1f000000, 0x1f00001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff);
+ map(0x1f100000, 0x1f10001f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)).umask32(0x00ff00ff);
+ map(0x1f180000, 0x1f180001).w(this, FUNC(konamigq_state::eeprom_w));
+ map(0x1f198000, 0x1f198003).nopw(); /* cabinet lamps? */
+ map(0x1f1a0000, 0x1f1a0003).nopw(); /* indicates gun trigger */
+ map(0x1f200000, 0x1f200003).portr("GUNX1");
+ map(0x1f208000, 0x1f208003).portr("GUNY1");
+ map(0x1f210000, 0x1f210003).portr("GUNX2");
+ map(0x1f218000, 0x1f218003).portr("GUNY2");
+ map(0x1f220000, 0x1f220003).portr("GUNX3");
+ map(0x1f228000, 0x1f228003).portr("GUNY3");
+ map(0x1f230000, 0x1f230003).portr("P1_P2");
+ map(0x1f230004, 0x1f230007).portr("P3_SERVICE");
+ map(0x1f238000, 0x1f238003).portr("DSW");
+ map(0x1f300000, 0x1f5fffff).rw(this, FUNC(konamigq_state::pcmram_r), FUNC(konamigq_state::pcmram_w)).umask32(0x00ff00ff);
+ map(0x1f680000, 0x1f68001f).rw("mb89371", FUNC(mb89371_device::read), FUNC(mb89371_device::write)).umask32(0x00ff00ff);
+ map(0x1f780000, 0x1f780003).nopw(); /* watchdog? */
+}
/* SOUND CPU */
@@ -230,29 +231,32 @@ WRITE16_MEMBER(konamigq_state::tms57002_control_word_w)
}
/* 68000 memory handling - near identical to Konami GX */
-ADDRESS_MAP_START(konamigq_state::konamigq_sound_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00)
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r,tms57002_data_word_w)
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_READWRITE(tms57002_status_word_r,tms57002_control_word_w)
- AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET
-ADDRESS_MAP_END
+void konamigq_state::konamigq_sound_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x2004ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00);
+ map(0x200000, 0x2004ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300001).rw(this, FUNC(konamigq_state::tms57002_data_word_r), FUNC(konamigq_state::tms57002_data_word_w));
+ map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x500000, 0x500001).rw(this, FUNC(konamigq_state::tms57002_status_word_r), FUNC(konamigq_state::tms57002_control_word_w));
+ map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET
+}
/* TMS57002 memory handling */
-ADDRESS_MAP_START(konamigq_state::konamigq_dasp_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void konamigq_state::konamigq_dasp_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
/* K058141 memory handling */
-ADDRESS_MAP_START(konamigq_state::konamigq_k054539_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("k054539", 0)
- AM_RANGE(0x080000, 0x3fffff) AM_RAM AM_SHARE("pcmram")
-ADDRESS_MAP_END
+void konamigq_state::konamigq_k054539_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("k054539", 0);
+ map(0x080000, 0x3fffff).ram().share("pcmram");
+}
/* 058141 */
diff --git a/src/mame/drivers/konamigv.cpp b/src/mame/drivers/konamigv.cpp
index 42e744a3044..bac700706c3 100644
--- a/src/mame/drivers/konamigv.cpp
+++ b/src/mame/drivers/konamigv.cpp
@@ -185,52 +185,57 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(konamigv_state::konamigv_map)
- AM_RANGE(0x1f000000, 0x1f00001f) AM_DEVREADWRITE8("am53cf96", am53cf96_device, read, write, 0x00ff00ff)
- AM_RANGE(0x1f100000, 0x1f100003) AM_READ_PORT("P1")
- AM_RANGE(0x1f100004, 0x1f100007) AM_READ_PORT("P2")
- AM_RANGE(0x1f100008, 0x1f10000b) AM_READ_PORT("P3_P4")
- AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x1f680000, 0x1f68001f) AM_DEVREADWRITE8("mb89371", mb89371_device, read, write, 0x00ff00ff)
- AM_RANGE(0x1f780000, 0x1f780003) AM_WRITENOP /* watchdog? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigv_state::simpbowl_map)
- AM_IMPORT_FROM( konamigv_map )
-
- AM_RANGE(0x1f680080, 0x1f68008f) AM_READWRITE16(flash_r, flash_w, 0xffffffff)
- AM_RANGE(0x1f6800c0, 0x1f6800c7) AM_DEVREAD8("upd", upd4701_device, read_xy, 0xff00ff00)
- AM_RANGE(0x1f6800c8, 0x1f6800cb) AM_DEVREAD8("upd", upd4701_device, reset_xy, 0x0000ff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigv_state::btchamp_map)
- AM_IMPORT_FROM( konamigv_map )
-
- AM_RANGE(0x1f380000, 0x1f3fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff)
- AM_RANGE(0x1f680080, 0x1f680087) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0xff00ff00)
- AM_RANGE(0x1f680080, 0x1f680087) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff00ff)
- AM_RANGE(0x1f680088, 0x1f68008b) AM_WRITE16(btc_trackball_w, 0x0000ffff)
- AM_RANGE(0x1f6800e0, 0x1f6800e3) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigv_state::kdeadeye_map)
- AM_IMPORT_FROM( konamigv_map )
-
- AM_RANGE(0x1f380000, 0x1f3fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff)
- AM_RANGE(0x1f680080, 0x1f680083) AM_READ_PORT("GUNX1")
- AM_RANGE(0x1f680090, 0x1f680093) AM_READ_PORT("GUNY1")
- AM_RANGE(0x1f6800a0, 0x1f6800a3) AM_READ_PORT("GUNX2")
- AM_RANGE(0x1f6800b0, 0x1f6800b3) AM_READ_PORT("GUNY2")
- AM_RANGE(0x1f6800c0, 0x1f6800c3) AM_READ_PORT("BUTTONS")
- AM_RANGE(0x1f6800e0, 0x1f6800e3) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigv_state::tmosh_map)
- AM_IMPORT_FROM( konamigv_map )
-
- AM_RANGE(0x1f680080, 0x1f680083) AM_READ16(tokimeki_serial_r, 0x0000ffff)
- AM_RANGE(0x1f680090, 0x1f680093) AM_WRITE16(tokimeki_serial_w, 0x0000ffff)
-ADDRESS_MAP_END
+void konamigv_state::konamigv_map(address_map &map)
+{
+ map(0x1f000000, 0x1f00001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff);
+ map(0x1f100000, 0x1f100003).portr("P1");
+ map(0x1f100004, 0x1f100007).portr("P2");
+ map(0x1f100008, 0x1f10000b).portr("P3_P4");
+ map(0x1f180000, 0x1f180003).portw("EEPROMOUT");
+ map(0x1f680000, 0x1f68001f).rw("mb89371", FUNC(mb89371_device::read), FUNC(mb89371_device::write)).umask32(0x00ff00ff);
+ map(0x1f780000, 0x1f780003).nopw(); /* watchdog? */
+}
+
+void konamigv_state::simpbowl_map(address_map &map)
+{
+ konamigv_map(map);
+
+ map(0x1f680080, 0x1f68008f).rw(this, FUNC(konamigv_state::flash_r), FUNC(konamigv_state::flash_w));
+ map(0x1f6800c0, 0x1f6800c7).r("upd", FUNC(upd4701_device::read_xy)).umask32(0xff00ff00);
+ map(0x1f6800c9, 0x1f6800c9).r("upd", FUNC(upd4701_device::reset_xy));
+}
+
+void konamigv_state::btchamp_map(address_map &map)
+{
+ konamigv_map(map);
+
+ map(0x1f380000, 0x1f3fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0x1f680080, 0x1f680087).r("upd1", FUNC(upd4701_device::read_xy)).umask32(0xff00ff00);
+ map(0x1f680080, 0x1f680087).r("upd2", FUNC(upd4701_device::read_xy)).umask32(0x00ff00ff);
+ map(0x1f680088, 0x1f680089).w(this, FUNC(konamigv_state::btc_trackball_w));
+ map(0x1f6800e0, 0x1f6800e3).nopw();
+}
+
+void konamigv_state::kdeadeye_map(address_map &map)
+{
+ konamigv_map(map);
+
+ map(0x1f380000, 0x1f3fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0x1f680080, 0x1f680083).portr("GUNX1");
+ map(0x1f680090, 0x1f680093).portr("GUNY1");
+ map(0x1f6800a0, 0x1f6800a3).portr("GUNX2");
+ map(0x1f6800b0, 0x1f6800b3).portr("GUNY2");
+ map(0x1f6800c0, 0x1f6800c3).portr("BUTTONS");
+ map(0x1f6800e0, 0x1f6800e3).nopw();
+}
+
+void konamigv_state::tmosh_map(address_map &map)
+{
+ konamigv_map(map);
+
+ map(0x1f680080, 0x1f680081).r(this, FUNC(konamigv_state::tokimeki_serial_r));
+ map(0x1f680090, 0x1f680091).w(this, FUNC(konamigv_state::tokimeki_serial_w));
+}
/* SCSI */
diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp
index a1f1a1614e1..f9c121f1897 100644
--- a/src/mame/drivers/konamigx.cpp
+++ b/src/mame/drivers/konamigx.cpp
@@ -985,87 +985,92 @@ WRITE32_MEMBER(konamigx_state::type1_cablamps_w)
/* 68EC020 memory handlers */
/**********************************************************************************/
-ADDRESS_MAP_START(konamigx_state::gx_base_memmap)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM // BIOS ROM
- AM_RANGE(0x200000, 0x3fffff) AM_ROM // main program ROM
- AM_RANGE(0x400000, 0x7fffff) AM_ROM // data ROM
- AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0xd00000, 0xd01fff) AM_DEVREAD("k056832", k056832_device, k_5bpp_rom_long_r)
- AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE16("k055673", k055673_device, k053247_word_r, k053247_word_w, 0xffffffff)
- AM_RANGE(0xd21000, 0xd21fff) AM_RAM // second bank of sprite RAM, accessed thru ESC
- AM_RANGE(0xd22000, 0xd23fff) AM_RAM // extra bank checked at least by sexyparo, pending further investigation.
- AM_RANGE(0xd40000, 0xd4003f) AM_DEVWRITE("k056832", k056832_device, long_w)
- AM_RANGE(0xd44000, 0xd4400f) AM_WRITE(konamigx_tilebank_w)
- AM_RANGE(0xd48000, 0xd48007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff)
- AM_RANGE(0xd4a000, 0xd4a00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff)
- AM_RANGE(0xd4a010, 0xd4a01f) AM_DEVWRITE16("k055673", k055673_device, k055673_reg_word_w, 0xffffffff)
- AM_RANGE(0xd4c000, 0xd4c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00ff00)
- AM_RANGE(0xd4e000, 0xd4e01f) AM_WRITENOP // left-over for "secondary" CCU, apparently (used by type 3/4 for slave screen?)
- AM_RANGE(0xd50000, 0xd500ff) AM_DEVWRITE("k055555", k055555_device, K055555_long_w)
- AM_RANGE(0xd52000, 0xd5201f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xff00ff00)
- AM_RANGE(0xd56000, 0xd56003) AM_WRITE(eeprom_w)
- AM_RANGE(0xd58000, 0xd58003) AM_WRITE(control_w)
- AM_RANGE(0xd5a000, 0xd5a003) AM_READ_PORT("SYSTEM_DSW")
- AM_RANGE(0xd5c000, 0xd5c003) AM_READ_PORT("INPUTS")
- AM_RANGE(0xd5e000, 0xd5e003) AM_READ_PORT("SERVICE")
- AM_RANGE(0xd80000, 0xd8001f) AM_DEVWRITE("k054338", k054338_device, long_w)
- AM_RANGE(0xda0000, 0xda1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w)
- AM_RANGE(0xda2000, 0xda3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type1_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xdc0000, 0xdc1fff) AM_RAM // LAN RAM? (Racin' Force has, Open Golf doesn't)
- AM_RANGE(0xdd0000, 0xdd00ff) AM_READNOP AM_WRITENOP // LAN board
- AM_RANGE(0xdda000, 0xddafff) AM_WRITE_PORT("ADC-WRPORT")
- AM_RANGE(0xddc000, 0xddcfff) AM_READ_PORT("ADC-RDPORT")
- AM_RANGE(0xdde000, 0xdde003) AM_WRITE(type1_cablamps_w)
- AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl")
- AM_RANGE(0xe20000, 0xe2000f) AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP
- AM_RANGE(0xe80000, 0xe81fff) AM_RAM AM_SHARE("k053936_0_line") // chips 21L+19L / S
- AM_RANGE(0xec0000, 0xedffff) AM_RAM_WRITE(konamigx_t1_psacmap_w) AM_SHARE("psacram") // chips 20J+23J+18J / S
- AM_RANGE(0xf00000, 0xf3ffff) AM_READ(type1_roz_r1) // ROM readback
- AM_RANGE(0xf40000, 0xf7ffff) AM_READ(type1_roz_r2) // ROM readback
- AM_RANGE(0xf80000, 0xf80fff) AM_RAM // chip 21Q / S
- AM_RANGE(0xfc0000, 0xfc00ff) AM_RAM // chip 22N / S
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type2_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xcc0000, 0xcc0003) AM_WRITE(esc_w)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type3_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM
+void konamigx_state::gx_base_memmap(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom(); // BIOS ROM
+ map(0x200000, 0x3fffff).rom(); // main program ROM
+ map(0x400000, 0x7fffff).rom(); // data ROM
+ map(0xc00000, 0xc1ffff).ram().share("workram");
+ map(0xd00000, 0xd01fff).r(m_k056832, FUNC(k056832_device::k_5bpp_rom_long_r));
+ map(0xd20000, 0xd20fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w));
+ map(0xd21000, 0xd21fff).ram(); // second bank of sprite RAM, accessed thru ESC
+ map(0xd22000, 0xd23fff).ram(); // extra bank checked at least by sexyparo, pending further investigation.
+ map(0xd40000, 0xd4003f).w(m_k056832, FUNC(k056832_device::long_w));
+ map(0xd44000, 0xd4400f).w(this, FUNC(konamigx_state::konamigx_tilebank_w));
+ map(0xd48000, 0xd48007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0xd4a000, 0xd4a00f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0xd4a010, 0xd4a01f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0xd4c000, 0xd4c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask32(0xff00ff00);
+ map(0xd4e000, 0xd4e01f).nopw(); // left-over for "secondary" CCU, apparently (used by type 3/4 for slave screen?)
+ map(0xd50000, 0xd500ff).w(m_k055555, FUNC(k055555_device::K055555_long_w));
+ map(0xd52000, 0xd5201f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)).umask32(0xff00ff00);
+ map(0xd56000, 0xd56003).w(this, FUNC(konamigx_state::eeprom_w));
+ map(0xd58000, 0xd58003).w(this, FUNC(konamigx_state::control_w));
+ map(0xd5a000, 0xd5a003).portr("SYSTEM_DSW");
+ map(0xd5c000, 0xd5c003).portr("INPUTS");
+ map(0xd5e000, 0xd5e003).portr("SERVICE");
+ map(0xd80000, 0xd8001f).w(m_k054338, FUNC(k054338_device::long_w));
+ map(0xda0000, 0xda1fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w));
+ map(0xda2000, 0xda3fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w));
+}
+
+void konamigx_state::gx_type1_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xd90000, 0xd97fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xdc0000, 0xdc1fff).ram(); // LAN RAM? (Racin' Force has, Open Golf doesn't)
+ map(0xdd0000, 0xdd00ff).nopr().nopw(); // LAN board
+ map(0xdda000, 0xddafff).portw("ADC-WRPORT");
+ map(0xddc000, 0xddcfff).portr("ADC-RDPORT");
+ map(0xdde000, 0xdde003).w(this, FUNC(konamigx_state::type1_cablamps_w));
+ map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl");
+ map(0xe20000, 0xe2000f).nopw();
+ map(0xe40000, 0xe40003).nopw();
+ map(0xe80000, 0xe81fff).ram().share("k053936_0_line"); // chips 21L+19L / S
+ map(0xec0000, 0xedffff).ram().w(this, FUNC(konamigx_state::konamigx_t1_psacmap_w)).share("psacram"); // chips 20J+23J+18J / S
+ map(0xf00000, 0xf3ffff).r(this, FUNC(konamigx_state::type1_roz_r1)); // ROM readback
+ map(0xf40000, 0xf7ffff).r(this, FUNC(konamigx_state::type1_roz_r2)); // ROM readback
+ map(0xf80000, 0xf80fff).ram(); // chip 21Q / S
+ map(0xfc0000, 0xfc00ff).ram(); // chip 22N / S
+}
+
+void konamigx_state::gx_type2_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xcc0000, 0xcc0003).w(this, FUNC(konamigx_state::esc_w));
+ map(0xd90000, 0xd97fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+}
+
+void konamigx_state::gx_type3_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xd90000, 0xd97fff).ram();
//AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
- AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl")
+ map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl");
//AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40003) AM_WRITE(konamigx_type3_psac2_bank_w) AM_SHARE("psac2_bank")
- AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_SHARE("k053936_0_line")
- AM_RANGE(0xe80000, 0xe83fff) AM_RAM AM_SHARE("paletteram") // main monitor palette
- AM_RANGE(0xea0000, 0xea3fff) AM_RAM AM_SHARE("subpaletteram")
- AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r)
+ map(0xe40000, 0xe40003).w(this, FUNC(konamigx_state::konamigx_type3_psac2_bank_w)).share("psac2_bank");
+ map(0xe60000, 0xe60fff).ram().share("k053936_0_line");
+ map(0xe80000, 0xe83fff).ram().share("paletteram"); // main monitor palette
+ map(0xea0000, 0xea3fff).ram().share("subpaletteram");
+ map(0xec0000, 0xec0003).r(this, FUNC(konamigx_state::type3_sync_r));
//AM_RANGE(0xf00000, 0xf07fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gx_type4_map)
- AM_IMPORT_FROM(gx_base_memmap)
- AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
- AM_RANGE(0xd90000, 0xd97fff) AM_RAM
- AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl")
- AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
- AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP
- AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_SHARE("k053936_0_line") // 29C & 29G (PSAC2 line control)
- AM_RANGE(0xe80000, 0xe87fff) AM_RAM AM_SHARE("paletteram") // 11G/13G/15G (main screen palette RAM)
- AM_RANGE(0xea0000, 0xea7fff) AM_RAM AM_SHARE("subpaletteram") // 5G/7G/9G (sub screen palette RAM)
- AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r) // type 4 polls this too
- AM_RANGE(0xf00000, 0xf07fff) AM_RAM_WRITE(konamigx_t4_psacmap_w) AM_SHARE("psacram") // PSAC2 tilemap
+}
+
+void konamigx_state::gx_type4_map(address_map &map)
+{
+ gx_base_memmap(map);
+ map(0xcc0000, 0xcc0007).w(this, FUNC(konamigx_state::type4_prot_w));
+ map(0xd90000, 0xd97fff).ram();
+ map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl");
+ map(0xe20000, 0xe20003).nopw();
+ map(0xe40000, 0xe40003).nopw();
+ map(0xe60000, 0xe60fff).ram().share("k053936_0_line"); // 29C & 29G (PSAC2 line control)
+ map(0xe80000, 0xe87fff).ram().share("paletteram"); // 11G/13G/15G (main screen palette RAM)
+ map(0xea0000, 0xea7fff).ram().share("subpaletteram"); // 5G/7G/9G (sub screen palette RAM)
+ map(0xec0000, 0xec0003).r(this, FUNC(konamigx_state::type3_sync_r)); // type 4 polls this too
+ map(0xf00000, 0xf07fff).ram().w(this, FUNC(konamigx_state::konamigx_t4_psacmap_w)).share("psacram"); // PSAC2 tilemap
// AM_RANGE(0xf00000, 0xf07fff) AM_RAM
-ADDRESS_MAP_END
+}
/**********************************************************************************/
/* Sound handling */
@@ -1104,20 +1109,22 @@ WRITE16_MEMBER(konamigx_state::tms57002_control_word_w)
}
/* 68000 memory handling */
-ADDRESS_MAP_START(konamigx_state::gxsndmap)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00)
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r, tms57002_data_word_w)
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_READWRITE(tms57002_status_word_r, tms57002_control_word_w)
- AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konamigx_state::gxtmsmap)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void konamigx_state::gxsndmap(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x2004ff).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00);
+ map(0x200000, 0x2004ff).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300001).rw(this, FUNC(konamigx_state::tms57002_data_word_r), FUNC(konamigx_state::tms57002_data_word_w));
+ map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x500000, 0x500001).rw(this, FUNC(konamigx_state::tms57002_status_word_r), FUNC(konamigx_state::tms57002_control_word_w));
+ map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET
+}
+
+void konamigx_state::gxtmsmap(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
WRITE_LINE_MEMBER(konamigx_state::k054539_irq_gen)
diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp
index eececad4fcb..30973076bad 100644
--- a/src/mame/drivers/konamim2.cpp
+++ b/src/mame/drivers/konamim2.cpp
@@ -1170,71 +1170,77 @@ READ8_MEMBER(konamim2_state::id7_r)
return 0x07;
}
-ADDRESS_MAP_START(konamim2_state::m2_main)
- AM_RANGE(0x00000000, 0x0000007f) AM_RAM // ???
- AM_RANGE(0x00010040, 0x00010047) AM_READWRITE(irq_enable_r, irq_enable_w)
- AM_RANGE(0x00010050, 0x00010057) AM_READ(irq_active_r)
- AM_RANGE(0x00020000, 0x00020007) AM_READWRITE(unk4_r, unk4_w)
- AM_RANGE(0x00020400, 0x000207ff) AM_RAM // ???
- AM_RANGE(0x00020800, 0x00020807) AM_RAM // ???
- AM_RANGE(0x00030000, 0x00030007) AM_READ(unk30000_r)
- AM_RANGE(0x00030010, 0x00030017) AM_WRITE(video_w)
- AM_RANGE(0x00030030, 0x00030037) AM_READ(unk30030_r)
- AM_RANGE(0x00030400, 0x00030407) AM_WRITE32(video_irq_ack_w,0x00000000ffffffffU)
+void konamim2_state::m2_main(address_map &map)
+{
+ map(0x00000000, 0x0000007f).ram(); // ???
+ map(0x00010040, 0x00010047).rw(this, FUNC(konamim2_state::irq_enable_r), FUNC(konamim2_state::irq_enable_w));
+ map(0x00010050, 0x00010057).r(this, FUNC(konamim2_state::irq_active_r));
+ map(0x00020000, 0x00020007).rw(this, FUNC(konamim2_state::unk4_r), FUNC(konamim2_state::unk4_w));
+ map(0x00020400, 0x000207ff).ram(); // ???
+ map(0x00020800, 0x00020807).ram(); // ???
+ map(0x00030000, 0x00030007).r(this, FUNC(konamim2_state::unk30000_r));
+ map(0x00030010, 0x00030017).w(this, FUNC(konamim2_state::video_w));
+ map(0x00030030, 0x00030037).r(this, FUNC(konamim2_state::unk30030_r));
+ map(0x00030404, 0x00030407).w(this, FUNC(konamim2_state::video_irq_ack_w));
- AM_RANGE(0x01000000, 0x01000fff) AM_READWRITE(cde_r, cde_w)
+ map(0x01000000, 0x01000fff).rw(this, FUNC(konamim2_state::cde_r), FUNC(konamim2_state::cde_w));
- AM_RANGE(0x02000000, 0x02000fff) AM_READ(device2_r)
+ map(0x02000000, 0x02000fff).r(this, FUNC(konamim2_state::device2_r));
- AM_RANGE(0x03000000, 0x03000007) AM_READ8(id3_r, 0x00ff000000000000U)
+ map(0x03000001, 0x03000001).r(this, FUNC(konamim2_state::id3_r));
- AM_RANGE(0x04000000, 0x04000007) AM_READ8(id4_r, 0x00ff000000000000U)
- AM_RANGE(0x04000010, 0x04000017) AM_WRITE8(serial_w,0x00000000000000ffU)
- AM_RANGE(0x04000018, 0x0400001f) AM_READ(unk1_r) // serial status
- AM_RANGE(0x04000020, 0x04000027) AM_WRITE(reset_w)
- AM_RANGE(0x04000418, 0x0400041f) AM_WRITE(unk4000418_w) // serial status ack
- AM_RANGE(0x04000208, 0x0400020f) AM_READ(unk3_r)
- AM_RANGE(0x04000280, 0x04000287) AM_READ(unk4000280_r)
+ map(0x04000001, 0x04000001).r(this, FUNC(konamim2_state::id4_r));
+ map(0x04000017, 0x04000017).w(this, FUNC(konamim2_state::serial_w));
+ map(0x04000018, 0x0400001f).r(this, FUNC(konamim2_state::unk1_r)); // serial status
+ map(0x04000020, 0x04000027).w(this, FUNC(konamim2_state::reset_w));
+ map(0x04000418, 0x0400041f).w(this, FUNC(konamim2_state::unk4000418_w)); // serial status ack
+ map(0x04000208, 0x0400020f).r(this, FUNC(konamim2_state::unk3_r));
+ map(0x04000280, 0x04000287).r(this, FUNC(konamim2_state::unk4000280_r));
- AM_RANGE(0x05000000, 0x05000007) AM_READ8(id5_r, 0x00ff000000000000U)
+ map(0x05000001, 0x05000001).r(this, FUNC(konamim2_state::id5_r));
- AM_RANGE(0x06000000, 0x06000007) AM_READ8(id6_r, 0x00ff000000000000U)
+ map(0x06000001, 0x06000001).r(this, FUNC(konamim2_state::id6_r));
- AM_RANGE(0x07000000, 0x07000007) AM_READ8(id7_r, 0x00ff000000000000U)
+ map(0x07000001, 0x07000001).r(this, FUNC(konamim2_state::id7_r));
- AM_RANGE(0x10000008, 0x10001007) AM_NOP // ???
+ map(0x10000008, 0x10001007).noprw(); // ???
- AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x40000000, 0x407fffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("boot", 0) AM_SHARE("share2")
-ADDRESS_MAP_END
+ map(0x20000000, 0x201fffff).rom().share("share2");
+ map(0x40000000, 0x407fffff).ram().share("main_ram");
+ map(0xfff00000, 0xffffffff).rom().region("boot", 0).share("share2");
+}
-ADDRESS_MAP_START(konamim2_state::m2_main_m)
- AM_IMPORT_FROM( m2_main )
- AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<true>)
-ADDRESS_MAP_END
+void konamim2_state::m2_main_m(address_map &map)
+{
+ m2_main(map);
+ map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<true>));
+}
-ADDRESS_MAP_START(konamim2_state::m2_main_s)
- AM_IMPORT_FROM( m2_main )
- AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<false>)
-ADDRESS_MAP_END
+void konamim2_state::m2_main_s(address_map &map)
+{
+ m2_main(map);
+ map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<false>));
+}
-ADDRESS_MAP_START(konamim2_state::_3do_m2_main)
+void konamim2_state::_3do_m2_main(address_map &map)
+{
// ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM( m2_main )
+ m2_main(map);
// AM_RANGE(0x00000000, 0x000cffff) devices?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(konamim2_state::_3do_m2_main_m)
- AM_IMPORT_FROM( _3do_m2_main )
- AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<true>)
-ADDRESS_MAP_END
+void konamim2_state::_3do_m2_main_m(address_map &map)
+{
+ _3do_m2_main(map);
+ map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<true>));
+}
-ADDRESS_MAP_START(konamim2_state::_3do_m2_main_s)
- AM_IMPORT_FROM( _3do_m2_main )
- AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<false>)
-ADDRESS_MAP_END
+void konamim2_state::_3do_m2_main_s(address_map &map)
+{
+ _3do_m2_main(map);
+ map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<false>));
+}
static INPUT_PORTS_START( m2 )
diff --git a/src/mame/drivers/konendev.cpp b/src/mame/drivers/konendev.cpp
index 4b3d0846875..1e82a7cc92a 100644
--- a/src/mame/drivers/konendev.cpp
+++ b/src/mame/drivers/konendev.cpp
@@ -212,23 +212,24 @@ WRITE32_MEMBER(konendev_state::sound_data_w)
{
}
-ADDRESS_MAP_START(konendev_state::konendev_map)
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM
- AM_RANGE(0x78000000, 0x78000003) AM_READ(mcu2_r)
- AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE(rtc_r, rtc_w)
- AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE(sound_data_r, sound_data_w)
- AM_RANGE(0x78100000, 0x78100003) AM_WRITE(eeprom_w)
- AM_RANGE(0x78800000, 0x78800003) AM_READ(ifu2_r)
- AM_RANGE(0x78800004, 0x78800007) AM_READ(ctrl0_r)
- AM_RANGE(0x78a00000, 0x78a0001f) AM_READ(ctrl1_r)
- AM_RANGE(0x78e00000, 0x78e00003) AM_READ(ctrl2_r)
- AM_RANGE(0x79000000, 0x79000003) AM_DEVWRITE("gcu", k057714_device, fifo_w)
- AM_RANGE(0x79800000, 0x798000ff) AM_DEVREADWRITE("gcu", k057714_device, read, write)
- AM_RANGE(0x7a000000, 0x7a01ffff) AM_RAM AM_SHARE("nvram0")
- AM_RANGE(0x7a100000, 0x7a11ffff) AM_RAM AM_SHARE("nvram1")
- AM_RANGE(0x7e000000, 0x7f7fffff) AM_ROM AM_REGION("flash", 0)
- AM_RANGE(0x7ff00000, 0x7fffffff) AM_ROM AM_REGION("program", 0)
-ADDRESS_MAP_END
+void konendev_state::konendev_map(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).ram();
+ map(0x78000000, 0x78000003).r(this, FUNC(konendev_state::mcu2_r));
+ map(0x78080000, 0x7808000f).rw(this, FUNC(konendev_state::rtc_r), FUNC(konendev_state::rtc_w));
+ map(0x780c0000, 0x780c0003).rw(this, FUNC(konendev_state::sound_data_r), FUNC(konendev_state::sound_data_w));
+ map(0x78100000, 0x78100003).w(this, FUNC(konendev_state::eeprom_w));
+ map(0x78800000, 0x78800003).r(this, FUNC(konendev_state::ifu2_r));
+ map(0x78800004, 0x78800007).r(this, FUNC(konendev_state::ctrl0_r));
+ map(0x78a00000, 0x78a0001f).r(this, FUNC(konendev_state::ctrl1_r));
+ map(0x78e00000, 0x78e00003).r(this, FUNC(konendev_state::ctrl2_r));
+ map(0x79000000, 0x79000003).w(m_gcu, FUNC(k057714_device::fifo_w));
+ map(0x79800000, 0x798000ff).rw(m_gcu, FUNC(k057714_device::read), FUNC(k057714_device::write));
+ map(0x7a000000, 0x7a01ffff).ram().share("nvram0");
+ map(0x7a100000, 0x7a11ffff).ram().share("nvram1");
+ map(0x7e000000, 0x7f7fffff).rom().region("flash", 0);
+ map(0x7ff00000, 0x7fffffff).rom().region("program", 0);
+}
static INPUT_PORTS_START( konendev )
diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp
index 07fe5965c13..7acf6b82dc8 100644
--- a/src/mame/drivers/konin.cpp
+++ b/src/mame/drivers/konin.cpp
@@ -86,27 +86,40 @@ WRITE_LINE_MEMBER(konin_state::picu_r3_w)
m_picu->r_w(3, !state);
}
-ADDRESS_MAP_START(konin_state::konin_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x5000, 0x7fff) AM_RAM
- AM_RANGE(0xf200, 0xf200) AM_WRITENOP // watchdog?
- AM_RANGE(0xf400, 0xfbff) AM_RAM
- AM_RANGE(0xfc80, 0xfc83) AM_DEVREADWRITE("mainppi", i8255_device, read, write)
- AM_RANGE(0xfc84, 0xfc87) AM_DEVREADWRITE("mainpit", pit8253_device, read, write)
- AM_RANGE(0xff00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konin_state::konin_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x24, 0x24) AM_WRITE(picu_b_w)
-
- ;map(0x80, 0x83).lrw8("ioppi_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_ioppi->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ioppi->write(space, offset^3, data, mem_mask); });
- AM_RANGE(0xf6, 0xf6) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xf7, 0xf7) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- ;map(0xf8, 0xfb).lrw8("iopit_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_iopit->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_iopit->write(space, offset^3, data, mem_mask); });
-ADDRESS_MAP_END
+void konin_state::konin_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x4fff).rom();
+ map(0x5000, 0x7fff).ram();
+ map(0xf200, 0xf200).nopw(); // watchdog?
+ map(0xf400, 0xfbff).ram();
+ map(0xfc80, 0xfc83).rw("mainppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfc84, 0xfc87).rw("mainpit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xff00, 0xffff).ram();
+}
+
+void konin_state::konin_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x24, 0x24).w(this, FUNC(konin_state::picu_b_w));
+ map(0x80, 0x83).lrw8("ioppi_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_ioppi->read(space, offset^3, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_ioppi->write(space, offset^3, data, mem_mask);
+ });
+ map(0xf6, 0xf6).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf7, 0xf7).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf8, 0xfb).lrw8("iopit_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_iopit->read(space, offset^3, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_iopit->write(space, offset^3, data, mem_mask);
+ });
+}
/* Input ports */
static INPUT_PORTS_START( konin )
diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp
index 6d7b81b5acb..5ae2d470b44 100644
--- a/src/mame/drivers/konmedal.cpp
+++ b/src/mame/drivers/konmedal.cpp
@@ -225,69 +225,72 @@ WRITE8_MEMBER(konmedal_state::bankswitch_w)
m_control = data & 0xf;
}
-ADDRESS_MAP_START(konmedal_state::medal_main)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xafff) AM_RAM // work RAM?
- AM_RANGE(0xb800, 0xbfff) AM_RAM // stack goes here
- AM_RANGE(0xc000, 0xc03f) AM_DEVWRITE("k056832", k056832_device, write)
- AM_RANGE(0xc100, 0xc100) AM_WRITE(control2_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(bankswitch_w)
- AM_RANGE(0xc500, 0xc500) AM_NOP // read to reset watchdog
- AM_RANGE(0xc700, 0xc700) AM_READ_PORT("DSW2")
- AM_RANGE(0xc701, 0xc701) AM_READ_PORT("DSW1")
- AM_RANGE(0xc702, 0xc702) AM_READ_PORT("IN1")
- AM_RANGE(0xc703, 0xc703) AM_READ_PORT("IN2")
- AM_RANGE(0xc800, 0xc80f) AM_DEVWRITE("k056832", k056832_device, b_w)
- AM_RANGE(0xc80f, 0xc80f) AM_READ(magic_r)
- AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(vram_r, vram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konmedal_state::ddboy_main)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM // work RAM
- AM_RANGE(0xc000, 0xc03f) AM_DEVWRITE("k056832", k056832_device, write)
- AM_RANGE(0xc100, 0xc100) AM_WRITE(control2_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(bankswitch_w)
- AM_RANGE(0xc500, 0xc500) AM_NOP // read to reset watchdog
- AM_RANGE(0xc702, 0xc702) AM_READ_PORT("IN1")
- AM_RANGE(0xc703, 0xc703) AM_READ_PORT("IN2")
- AM_RANGE(0xc800, 0xc80f) AM_DEVWRITE("k056832", k056832_device, b_w)
- AM_RANGE(0xc80f, 0xc80f) AM_READ(magic_r)
- AM_RANGE(0xcc00, 0xcc00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_WRITENOP // ??? writes 00 and 3f every frame
- AM_RANGE(0xd800, 0xd87f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w)
- AM_RANGE(0xd880, 0xd889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w)
- AM_RANGE(0xd88a, 0xd88e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w)
- AM_RANGE(0xd88f, 0xd88f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
- AM_RANGE(0xd8e0, 0xd8ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(vram_r, vram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(konmedal_state::shuriboy_main)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("IN2")
- AM_RANGE(0x8801, 0x8801) AM_READ_PORT("IN1")
- AM_RANGE(0x8802, 0x8802) AM_READ_PORT("DSW1")
- AM_RANGE(0x8803, 0x8803) AM_READ_PORT("DSW2")
- AM_RANGE(0x8b00, 0x8b00) AM_WRITENOP // watchdog?
- AM_RANGE(0x8c00, 0x8c00) AM_WRITE(shuri_bank_w)
- AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w)
- AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w)
- AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w)
- AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
- AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdbff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0xdd00, 0xdd00) AM_READWRITE(shuri_irq_r, shuri_irq_w)
- AM_RANGE(0xdd80, 0xdd80) AM_WRITE(shuri_control_w)
- AM_RANGE(0xde00, 0xde00) AM_WRITE(shuri_vrom_addr_w)
- AM_RANGE(0xdf00, 0xdf00) AM_WRITE(shuri_vrom_bank_w)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(shuri_video_r, shuri_video_w)
-ADDRESS_MAP_END
+void konmedal_state::medal_main(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xafff).ram(); // work RAM?
+ map(0xb800, 0xbfff).ram(); // stack goes here
+ map(0xc000, 0xc03f).w(m_k056832, FUNC(k056832_device::write));
+ map(0xc100, 0xc100).w(this, FUNC(konmedal_state::control2_w));
+ map(0xc400, 0xc400).w(this, FUNC(konmedal_state::bankswitch_w));
+ map(0xc500, 0xc500).noprw(); // read to reset watchdog
+ map(0xc700, 0xc700).portr("DSW2");
+ map(0xc701, 0xc701).portr("DSW1");
+ map(0xc702, 0xc702).portr("IN1");
+ map(0xc703, 0xc703).portr("IN2");
+ map(0xc800, 0xc80f).w(m_k056832, FUNC(k056832_device::b_w));
+ map(0xc80f, 0xc80f).r(this, FUNC(konmedal_state::magic_r));
+ map(0xd000, 0xd001).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+ map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::vram_r), FUNC(konmedal_state::vram_w));
+}
+
+void konmedal_state::ddboy_main(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram(); // work RAM
+ map(0xc000, 0xc03f).w(m_k056832, FUNC(k056832_device::write));
+ map(0xc100, 0xc100).w(this, FUNC(konmedal_state::control2_w));
+ map(0xc400, 0xc400).w(this, FUNC(konmedal_state::bankswitch_w));
+ map(0xc500, 0xc500).noprw(); // read to reset watchdog
+ map(0xc702, 0xc702).portr("IN1");
+ map(0xc703, 0xc703).portr("IN2");
+ map(0xc800, 0xc80f).w(m_k056832, FUNC(k056832_device::b_w));
+ map(0xc80f, 0xc80f).r(this, FUNC(konmedal_state::magic_r));
+ map(0xcc00, 0xcc00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xd000, 0xd000).nopw(); // ??? writes 00 and 3f every frame
+ map(0xd800, 0xd87f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w));
+ map(0xd880, 0xd889).w("k051649", FUNC(k051649_device::k051649_frequency_w));
+ map(0xd88a, 0xd88e).w("k051649", FUNC(k051649_device::k051649_volume_w));
+ map(0xd88f, 0xd88f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w));
+ map(0xd8e0, 0xd8ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w));
+ map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::vram_r), FUNC(konmedal_state::vram_w));
+}
+
+void konmedal_state::shuriboy_main(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).portr("IN2");
+ map(0x8801, 0x8801).portr("IN1");
+ map(0x8802, 0x8802).portr("DSW1");
+ map(0x8803, 0x8803).portr("DSW2");
+ map(0x8b00, 0x8b00).nopw(); // watchdog?
+ map(0x8c00, 0x8c00).w(this, FUNC(konmedal_state::shuri_bank_w));
+ map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w));
+ map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w));
+ map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w));
+ map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w));
+ map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w));
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdbff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0xdd00, 0xdd00).rw(this, FUNC(konmedal_state::shuri_irq_r), FUNC(konmedal_state::shuri_irq_w));
+ map(0xdd80, 0xdd80).w(this, FUNC(konmedal_state::shuri_control_w));
+ map(0xde00, 0xde00).w(this, FUNC(konmedal_state::shuri_vrom_addr_w));
+ map(0xdf00, 0xdf00).w(this, FUNC(konmedal_state::shuri_vrom_bank_w));
+ map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::shuri_video_r), FUNC(konmedal_state::shuri_video_w));
+}
static INPUT_PORTS_START( konmedal )
PORT_START("DSW1")
diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp
index f2c84b42710..a146d4f84a8 100644
--- a/src/mame/drivers/konmedal68k.cpp
+++ b/src/mame/drivers/konmedal68k.cpp
@@ -188,24 +188,25 @@ uint32_t konmedal68k_state::screen_update_konmedal68k(screen_device &screen, bit
return 0;
}
-ADDRESS_MAP_START(konmedal68k_state::kzaurus_main)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x400000, 0x403fff) AM_RAM
- AM_RANGE(0x800000, 0x800001) AM_WRITE(control_w)
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW")
- AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1")
- AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN0")
- AM_RANGE(0x810000, 0x810001) AM_WRITE(control2_w)
- AM_RANGE(0x830000, 0x83003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
- AM_RANGE(0x840000, 0x84000f) AM_DEVWRITE("k056832", k056832_device, b_word_w)
- AM_RANGE(0x85001c, 0x85001f) AM_WRITENOP
- AM_RANGE(0x870000, 0x87005f) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0xa02000, 0xa03fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0xb00000, 0xb01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc01fff) AM_READ(vrom_r)
-ADDRESS_MAP_END
+void konmedal68k_state::kzaurus_main(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x400000, 0x403fff).ram();
+ map(0x800000, 0x800001).w(this, FUNC(konmedal68k_state::control_w));
+ map(0x800004, 0x800005).portr("DSW");
+ map(0x800006, 0x800007).portr("IN1");
+ map(0x800008, 0x800009).portr("IN0");
+ map(0x810000, 0x810001).w(this, FUNC(konmedal68k_state::control2_w));
+ map(0x830000, 0x83003f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w));
+ map(0x840000, 0x84000f).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x85001c, 0x85001f).nopw();
+ map(0x870000, 0x87005f).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x880000, 0x880003).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00);
+ map(0xa00000, 0xa01fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0xa02000, 0xa03fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0xb00000, 0xb01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc01fff).r(this, FUNC(konmedal68k_state::vrom_r));
+}
static INPUT_PORTS_START( kzaurus )
PORT_START("IN0")
diff --git a/src/mame/drivers/kontest.cpp b/src/mame/drivers/kontest.cpp
index 39a77f1b3ef..e9077c44549 100644
--- a/src/mame/drivers/kontest.cpp
+++ b/src/mame/drivers/kontest.cpp
@@ -168,21 +168,23 @@ WRITE8_MEMBER(kontest_state::control_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(kontest_state::kontest_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kontest_state::kontest_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0x08, 0x08) AM_WRITE(control_w)
- AM_RANGE(0x0c, 0x0c) AM_READ_PORT("IN0")
- AM_RANGE(0x0d, 0x0d) AM_READ_PORT("IN1")
- AM_RANGE(0x0e, 0x0e) AM_READ_PORT("IN2")
- AM_RANGE(0x0f, 0x0f) AM_READ_PORT("IN3")
-ADDRESS_MAP_END
+void kontest_state::kontest_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xffff).ram().share("ram");
+}
+
+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(0x08, 0x08).w(this, FUNC(kontest_state::control_w));
+ map(0x0c, 0x0c).portr("IN0");
+ map(0x0d, 0x0d).portr("IN1");
+ map(0x0e, 0x0e).portr("IN2");
+ map(0x0f, 0x0f).portr("IN3");
+}
/***************************************************************************
diff --git a/src/mame/drivers/kopunch.cpp b/src/mame/drivers/kopunch.cpp
index 3383b026f00..06af3492198 100644
--- a/src/mame/drivers/kopunch.cpp
+++ b/src/mame/drivers/kopunch.cpp
@@ -72,21 +72,23 @@ INPUT_CHANGED_MEMBER(kopunch_state::right_coin_inserted)
********************************************************/
-ADDRESS_MAP_START(kopunch_state::kopunch_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(vram_fg_w) AM_SHARE("vram_fg")
- AM_RANGE(0x7000, 0x70ff) AM_RAM_WRITE(vram_bg_w) AM_SHARE("vram_bg")
- AM_RANGE(0x7100, 0x73ff) AM_RAM // unused vram
- AM_RANGE(0x7400, 0x7bff) AM_RAM // more unused vram? or accidental writes?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kopunch_state::kopunch_io_map)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x34, 0x37) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x3c, 0x3f) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write)
-ADDRESS_MAP_END
+void kopunch_state::kopunch_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x6000, 0x63ff).ram().w(this, FUNC(kopunch_state::vram_fg_w)).share("vram_fg");
+ map(0x7000, 0x70ff).ram().w(this, FUNC(kopunch_state::vram_bg_w)).share("vram_bg");
+ map(0x7100, 0x73ff).ram(); // unused vram
+ map(0x7400, 0x7bff).ram(); // more unused vram? or accidental writes?
+}
+
+void kopunch_state::kopunch_io_map(address_map &map)
+{
+ map(0x30, 0x33).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x34, 0x37).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x38, 0x3b).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x3c, 0x3f).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
diff --git a/src/mame/drivers/kramermc.cpp b/src/mame/drivers/kramermc.cpp
index f84822c3b68..254a435d3eb 100644
--- a/src/mame/drivers/kramermc.cpp
+++ b/src/mame/drivers/kramermc.cpp
@@ -22,22 +22,24 @@ static GFXDECODE_START( kramermc )
GFXDECODE_END
/* Address maps */
-ADDRESS_MAP_START(kramermc_state::kramermc_mem)
- AM_RANGE( 0x0000, 0x03ff ) AM_ROM // Monitor
- AM_RANGE( 0x0400, 0x07ff ) AM_ROM // Debugger
- AM_RANGE( 0x0800, 0x0bff ) AM_ROM // Reassembler
- AM_RANGE( 0x0c00, 0x0fff ) AM_RAM // System RAM
- AM_RANGE( 0x1000, 0x7fff ) AM_RAM // User RAM
- AM_RANGE( 0x8000, 0xafff ) AM_ROM // BASIC
- AM_RANGE( 0xc000, 0xc3ff ) AM_ROM // Editor
- AM_RANGE( 0xc400, 0xdfff ) AM_ROM // Assembler
- AM_RANGE( 0xfc00, 0xffff ) AM_RAM // Video RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kramermc_state::kramermc_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xfc, 0x0ff) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
-ADDRESS_MAP_END
+void kramermc_state::kramermc_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).rom(); // Monitor
+ map(0x0400, 0x07ff).rom(); // Debugger
+ map(0x0800, 0x0bff).rom(); // Reassembler
+ map(0x0c00, 0x0fff).ram(); // System RAM
+ map(0x1000, 0x7fff).ram(); // User RAM
+ map(0x8000, 0xafff).rom(); // BASIC
+ map(0xc000, 0xc3ff).rom(); // Editor
+ map(0xc400, 0xdfff).rom(); // Assembler
+ map(0xfc00, 0xffff).ram(); // Video RAM
+}
+
+void kramermc_state::kramermc_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xfc, 0x0ff).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( kramermc )
diff --git a/src/mame/drivers/kron.cpp b/src/mame/drivers/kron.cpp
index 34a43bf7d9d..343c7ccf2f1 100644
--- a/src/mame/drivers/kron.cpp
+++ b/src/mame/drivers/kron.cpp
@@ -158,13 +158,14 @@ private:
virtual void machine_start () override;
};
-ADDRESS_MAP_START(kron180_state::kron180_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x0000, 0x7fff) AM_ROM AM_REGION("roms", 0x8000)
- AM_RANGE (0x8000, 0x85ff) AM_RAM AM_MIRROR(0x6000)
- AM_RANGE (0x8600, 0x95ff) AM_RAM AM_SHARE("videoram") AM_MIRROR(0x6000)
- AM_RANGE (0x9600, 0x9fff) AM_RAM AM_MIRROR(0x6000)
-ADDRESS_MAP_END
+void kron180_state::kron180_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom().region("roms", 0x8000);
+ map(0x8000, 0x85ff).ram().mirror(0x6000);
+ map(0x8600, 0x95ff).ram().share("videoram").mirror(0x6000);
+ map(0x9600, 0x9fff).ram().mirror(0x6000);
+}
/* IO decoding
*
@@ -196,17 +197,18 @@ ADDRESS_MAP_END
*
* At the moment we emulate the screen at a high level so I just disregard the special functions on A16 - A18 by mirroring the mapping below
*/
-ADDRESS_MAP_START(kron180_state::kron180_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x0000, 0x000f ) AM_WRITE(sn74259_w)
- AM_RANGE( 0x0010, 0x001f ) AM_READWRITE(ap5_r, ap5_w)
- AM_RANGE( 0x0020, 0x002f ) AM_WRITE(wkb_w)
- AM_RANGE( 0x0030, 0x003f ) AM_READ(sn74299_r)
- AM_RANGE( 0x0040, 0x004f ) AM_WRITE(sn74299_w)
- AM_RANGE( 0x0050, 0x005f ) AM_WRITE(txen_w)
- AM_RANGE( 0x0060, 0x006f ) AM_WRITE(kbd_reset_w)
- AM_RANGE( 0x0070, 0x007f ) AM_WRITE(dreq_w)
-ADDRESS_MAP_END
+void kron180_state::kron180_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x000f).w(this, FUNC(kron180_state::sn74259_w));
+ map(0x0010, 0x001f).rw(this, FUNC(kron180_state::ap5_r), FUNC(kron180_state::ap5_w));
+ map(0x0020, 0x002f).w(this, FUNC(kron180_state::wkb_w));
+ map(0x0030, 0x003f).r(this, FUNC(kron180_state::sn74299_r));
+ map(0x0040, 0x004f).w(this, FUNC(kron180_state::sn74299_w));
+ map(0x0050, 0x005f).w(this, FUNC(kron180_state::txen_w));
+ map(0x0060, 0x006f).w(this, FUNC(kron180_state::kbd_reset_w));
+ map(0x0070, 0x007f).w(this, FUNC(kron180_state::dreq_w));
+}
/* Input ports */
static INPUT_PORTS_START (kron180)
diff --git a/src/mame/drivers/krz2000.cpp b/src/mame/drivers/krz2000.cpp
index f5c5b511c2b..32420dcd43d 100644
--- a/src/mame/drivers/krz2000.cpp
+++ b/src/mame/drivers/krz2000.cpp
@@ -50,11 +50,12 @@ void k2000_state::machine_reset()
{
}
-ADDRESS_MAP_START(k2000_state::k2000_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x100000, 0x11ffff) AM_RAM
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void k2000_state::k2000_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().region("maincpu", 0);
+ map(0x100000, 0x11ffff).ram();
+ map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
MACHINE_CONFIG_START(k2000_state::k2000)
MCFG_CPU_ADD("maincpu", M68301, XTAL(12'000'000))
diff --git a/src/mame/drivers/ksayakyu.cpp b/src/mame/drivers/ksayakyu.cpp
index 97805aa157d..226c7850a08 100644
--- a/src/mame/drivers/ksayakyu.cpp
+++ b/src/mame/drivers/ksayakyu.cpp
@@ -113,34 +113,36 @@ READ8_MEMBER(ksayakyu_state::int_ack_r)
return 0xff; // value not used
}
-ADDRESS_MAP_START(ksayakyu_state::maincpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1")
- AM_RANGE(0xa801, 0xa801) AM_READ_PORT("P2")
- AM_RANGE(0xa802, 0xa802) AM_READ_PORT("DSW")
- AM_RANGE(0xa803, 0xa803) AM_READNOP /* watchdog ? */
- AM_RANGE(0xa804, 0xa804) AM_WRITE(ksayakyu_videoctrl_w)
- AM_RANGE(0xa805, 0xa805) AM_WRITE(latch_w)
- AM_RANGE(0xa806, 0xa806) AM_READ(sound_status_r)
- AM_RANGE(0xa807, 0xa807) AM_READ(int_ack_r)
- AM_RANGE(0xa808, 0xa808) AM_WRITE(bank_select_w)
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(ksayakyu_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksayakyu_state::soundcpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0xa006, 0xa007) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0xa008, 0xa008) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xa00c, 0xa00c) AM_WRITE(tomaincpu_w)
- AM_RANGE(0xa010, 0xa010) AM_WRITENOP //a timer of some sort?
-ADDRESS_MAP_END
+void ksayakyu_state::maincpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).ram();
+ map(0xa800, 0xa800).portr("P1");
+ map(0xa801, 0xa801).portr("P2");
+ map(0xa802, 0xa802).portr("DSW");
+ map(0xa803, 0xa803).nopr(); /* watchdog ? */
+ map(0xa804, 0xa804).w(this, FUNC(ksayakyu_state::ksayakyu_videoctrl_w));
+ map(0xa805, 0xa805).w(this, FUNC(ksayakyu_state::latch_w));
+ map(0xa806, 0xa806).r(this, FUNC(ksayakyu_state::sound_status_r));
+ map(0xa807, 0xa807).r(this, FUNC(ksayakyu_state::int_ack_r));
+ map(0xa808, 0xa808).w(this, FUNC(ksayakyu_state::bank_select_w));
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(ksayakyu_state::ksayakyu_videoram_w)).share("videoram");
+ map(0xb800, 0xbfff).ram().share("spriteram");
+}
+
+void ksayakyu_state::soundcpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0xa001, 0xa001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa003).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0xa006, 0xa007).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0xa008, 0xa008).w("dac", FUNC(dac_byte_interface::write));
+ map(0xa00c, 0xa00c).w(this, FUNC(ksayakyu_state::tomaincpu_w));
+ map(0xa010, 0xa010).nopw(); //a timer of some sort?
+}
static INPUT_PORTS_START( ksayakyu )
PORT_START("P1")
diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp
index 82943174abf..8eb2dd04b42 100644
--- a/src/mame/drivers/ksys573.cpp
+++ b/src/mame/drivers/ksys573.cpp
@@ -613,54 +613,60 @@ void ATTR_PRINTF( 3,4 ) ksys573_state::verboselog( int n_level, const char *s_f
}
}
-ADDRESS_MAP_START(ksys573_state::konami573_map)
- AM_RANGE( 0x1f000000, 0x1f3fffff ) AM_DEVICE16( "flashbank", address_map_bank_device, amap16, 0xffffffff )
- AM_RANGE( 0x1f400000, 0x1f400003 ) AM_READ_PORT( "IN0" ) AM_WRITE_PORT( "OUT0" )
- AM_RANGE( 0x1f400004, 0x1f400007 ) AM_READ_PORT( "IN1" )
- AM_RANGE( 0x1f400008, 0x1f40000b ) AM_READ_PORT( "IN2" )
- AM_RANGE( 0x1f40000c, 0x1f40000f ) AM_READ_PORT( "IN3" )
- AM_RANGE( 0x1f480000, 0x1f48000f ) AM_DEVREADWRITE16( "ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff )
- AM_RANGE( 0x1f500000, 0x1f500003 ) AM_READWRITE16( control_r, control_w, 0x0000ffff ) // Konami can't make a game without a "control" register.
- AM_RANGE( 0x1f560000, 0x1f560003 ) AM_WRITE16( atapi_reset_w, 0x0000ffff )
- AM_RANGE( 0x1f5c0000, 0x1f5c0003 ) AM_WRITENOP // watchdog?
- AM_RANGE( 0x1f600000, 0x1f600003 ) AM_WRITE_PORT( "LAMPS" )
- AM_RANGE( 0x1f620000, 0x1f623fff ) AM_DEVREADWRITE8( "m48t58", timekeeper_device, read, write, 0x00ff00ff )
- AM_RANGE( 0x1f680000, 0x1f68001f ) AM_DEVREADWRITE8( "mb89371", mb89371_device, read, write, 0x00ff00ff )
- AM_RANGE( 0x1f6a0000, 0x1f6a0003 ) AM_READWRITE16( security_r, security_w, 0x0000ffff )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksys573_state::flashbank_map)
- AM_RANGE( 0x0000000, 0x03fffff ) AM_DEVREADWRITE8( "29f016a.31m", intelfsh8_device, read, write, 0x00ff )
- AM_RANGE( 0x0000000, 0x03fffff ) AM_DEVREADWRITE8( "29f016a.27m", intelfsh8_device, read, write, 0xff00 )
- AM_RANGE( 0x0400000, 0x07fffff ) AM_DEVREADWRITE8( "29f016a.31l", intelfsh8_device, read, write, 0x00ff )
- AM_RANGE( 0x0400000, 0x07fffff ) AM_DEVREADWRITE8( "29f016a.27l", intelfsh8_device, read, write, 0xff00 )
- AM_RANGE( 0x0800000, 0x0bfffff ) AM_DEVREADWRITE8( "29f016a.31j", intelfsh8_device, read, write, 0x00ff )
- AM_RANGE( 0x0800000, 0x0bfffff ) AM_DEVREADWRITE8( "29f016a.27j", intelfsh8_device, read, write, 0xff00 )
- AM_RANGE( 0x0c00000, 0x0ffffff ) AM_DEVREADWRITE8( "29f016a.31h", intelfsh8_device, read, write, 0x00ff )
- AM_RANGE( 0x0c00000, 0x0ffffff ) AM_DEVREADWRITE8( "29f016a.27h", intelfsh8_device, read, write, 0xff00 )
- AM_RANGE( 0x4000000, 0x7ffffff ) AM_DEVREADWRITE( "pccard1", pccard_slot_device, read_memory, write_memory )
- AM_RANGE( 0x8000000, 0xbffffff ) AM_DEVREADWRITE( "pccard2", pccard_slot_device, read_memory, write_memory )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksys573_state::konami573d_map)
- AM_IMPORT_FROM( konami573_map )
- AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_DEVICE16( "k573dio", k573dio_device, amap, 0xffffffff )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksys573_state::konami573a_map)
- AM_IMPORT_FROM( konami573_map )
- AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_READWRITE16( gx700pwbf_io_r, gx700pwbf_io_w, 0xffffffff )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksys573_state::fbaitbc_map)
- AM_IMPORT_FROM( konami573_map )
- AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_READWRITE16( ge765pwbba_r, ge765pwbba_w, 0xffffffff )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ksys573_state::gunmania_map)
- AM_IMPORT_FROM( konami573_map )
- AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_READWRITE16( gunmania_r, gunmania_w, 0xffffffff )
-ADDRESS_MAP_END
+void ksys573_state::konami573_map(address_map &map)
+{
+ map(0x1f000000, 0x1f3fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16));
+ map(0x1f400000, 0x1f400003).portr("IN0").portw("OUT0");
+ map(0x1f400004, 0x1f400007).portr("IN1");
+ map(0x1f400008, 0x1f40000b).portr("IN2");
+ map(0x1f40000c, 0x1f40000f).portr("IN3");
+ map(0x1f480000, 0x1f48000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0));
+ map(0x1f500000, 0x1f500001).rw(this, FUNC(ksys573_state::control_r), FUNC(ksys573_state::control_w)); // Konami can't make a game without a "control" register.
+ map(0x1f560000, 0x1f560001).w(this, FUNC(ksys573_state::atapi_reset_w));
+ map(0x1f5c0000, 0x1f5c0003).nopw(); // watchdog?
+ map(0x1f600000, 0x1f600003).portw("LAMPS");
+ map(0x1f620000, 0x1f623fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask32(0x00ff00ff);
+ map(0x1f680000, 0x1f68001f).rw("mb89371", FUNC(mb89371_device::read), FUNC(mb89371_device::write)).umask32(0x00ff00ff);
+ map(0x1f6a0000, 0x1f6a0001).rw(this, FUNC(ksys573_state::security_r), FUNC(ksys573_state::security_w));
+}
+
+void ksys573_state::flashbank_map(address_map &map)
+{
+ map(0x0000000, 0x03fffff).rw("29f016a.31m", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff);
+ map(0x0000000, 0x03fffff).rw("29f016a.27m", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00);
+ map(0x0400000, 0x07fffff).rw("29f016a.31l", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff);
+ map(0x0400000, 0x07fffff).rw("29f016a.27l", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00);
+ map(0x0800000, 0x0bfffff).rw("29f016a.31j", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff);
+ map(0x0800000, 0x0bfffff).rw("29f016a.27j", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00);
+ map(0x0c00000, 0x0ffffff).rw("29f016a.31h", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff);
+ map(0x0c00000, 0x0ffffff).rw("29f016a.27h", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00);
+ map(0x4000000, 0x7ffffff).rw("pccard1", FUNC(pccard_slot_device::read_memory), FUNC(pccard_slot_device::write_memory));
+ map(0x8000000, 0xbffffff).rw("pccard2", FUNC(pccard_slot_device::read_memory), FUNC(pccard_slot_device::write_memory));
+}
+
+void ksys573_state::konami573d_map(address_map &map)
+{
+ konami573_map(map);
+ map(0x1f640000, 0x1f6400ff).m("k573dio", FUNC(k573dio_device::amap));
+}
+
+void ksys573_state::konami573a_map(address_map &map)
+{
+ konami573_map(map);
+ map(0x1f640000, 0x1f6400ff).rw(this, FUNC(ksys573_state::gx700pwbf_io_r), FUNC(ksys573_state::gx700pwbf_io_w));
+}
+
+void ksys573_state::fbaitbc_map(address_map &map)
+{
+ konami573_map(map);
+ map(0x1f640000, 0x1f6400ff).rw(this, FUNC(ksys573_state::ge765pwbba_r), FUNC(ksys573_state::ge765pwbba_w));
+}
+
+void ksys573_state::gunmania_map(address_map &map)
+{
+ konami573_map(map);
+ map(0x1f640000, 0x1f6400ff).rw(this, FUNC(ksys573_state::gunmania_r), FUNC(ksys573_state::gunmania_w));
+}
READ16_MEMBER( ksys573_state::control_r )
{
diff --git a/src/mame/drivers/kungfur.cpp b/src/mame/drivers/kungfur.cpp
index f07e24673ce..a3e515dd69a 100644
--- a/src/mame/drivers/kungfur.cpp
+++ b/src/mame/drivers/kungfur.cpp
@@ -223,14 +223,15 @@ WRITE_LINE_MEMBER(kungfur_state::kfr_adpcm2_int)
}
-ADDRESS_MAP_START(kungfur_state::kungfur_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_WRITE(kungfur_adpcm1_w)
- AM_RANGE(0x4004, 0x4004) AM_WRITE(kungfur_adpcm2_w)
- AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x400c, 0x400f) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void kungfur_state::kungfur_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x4000, 0x4000).w(this, FUNC(kungfur_state::kungfur_adpcm1_w));
+ map(0x4004, 0x4004).w(this, FUNC(kungfur_state::kungfur_adpcm2_w));
+ map(0x4008, 0x400b).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x400c, 0x400f).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc000, 0xffff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp
index e5f4aeccdb2..2a54dac4f5f 100644
--- a/src/mame/drivers/kurukuru.cpp
+++ b/src/mame/drivers/kurukuru.cpp
@@ -516,44 +516,48 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w)
}
-ADDRESS_MAP_START(kurukuru_state::kurukuru_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kurukuru_state::kurukuru_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_READ_PORT("DSW1")
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write)
- AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READ_PORT("IN0")
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_READ_PORT("IN1")
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE("ym2149", ay8910_device, data_r, address_w)
- AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kurukuru_state::ppj_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kurukuru_state::ppj_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w)
- AM_RANGE(0x10, 0x13) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w)
- AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ_PORT("IN1")
- AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ_PORT("IN0")
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, address_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREAD("ym2149", ay8910_device, data_r)
- AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w)
-ADDRESS_MAP_END
+void kurukuru_state::kurukuru_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xffff).ram().share("nvram");
+}
+
+void kurukuru_state::kurukuru_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_out_latch_w));
+ map(0x10, 0x10).mirror(0x0f).portr("DSW1");
+ map(0x20, 0x20).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x80, 0x83).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x90, 0x90).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_bankswitch_w));
+ map(0xa0, 0xa0).mirror(0x0f).portr("IN0");
+ map(0xb0, 0xb0).mirror(0x0f).portr("IN1");
+ map(0xc0, 0xc0).mirror(0x0f).rw("ym2149", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0xd0, 0xd0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::data_w));
+}
+
+void kurukuru_state::ppj_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xffff).ram().share("nvram");
+}
+
+void kurukuru_state::ppj_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_bankswitch_w));
+ map(0x10, 0x13).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x30, 0x30).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x40, 0x40).mirror(0x0f).portr("DSW1");
+ map(0x50, 0x50).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_out_latch_w));
+ map(0x60, 0x60).mirror(0x0f).portr("IN1");
+ map(0x70, 0x70).mirror(0x0f).portr("IN0");
+ map(0xc0, 0xc0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::address_w));
+ map(0xc0, 0xc0).mirror(0x0f).r("ym2149", FUNC(ay8910_device::data_r));
+ map(0xd0, 0xd0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::data_w));
+}
/*
00h W --> bankswitching reg...
@@ -606,31 +610,35 @@ READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r)
}
-ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_io)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w)
- AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w)
- AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kurukuru_state::ppj_audio_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kurukuru_state::ppj_audio_io)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r)
-ADDRESS_MAP_END
+void kurukuru_state::kurukuru_audio_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void kurukuru_state::kurukuru_audio_io(address_map &map)
+{
+ map.global_mask(0x7f);
+ map(0x40, 0x40).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_data_w));
+ map(0x50, 0x50).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_reset_w));
+ map(0x60, 0x60).mirror(0x0f).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x70, 0x70).mirror(0x0f).r(this, FUNC(kurukuru_state::kurukuru_adpcm_timer_irqack_r));
+}
+
+void kurukuru_state::ppj_audio_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void kurukuru_state::ppj_audio_io(address_map &map)
+{
+ map.global_mask(0x7f);
+ map(0x20, 0x20).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_data_w));
+ map(0x30, 0x30).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_reset_w));
+ map(0x40, 0x40).mirror(0x0f).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x50, 0x50).mirror(0x0f).r(this, FUNC(kurukuru_state::kurukuru_adpcm_timer_irqack_r));
+}
/*
30h -W --> 0x0b
40h R- --> soundlatch...
diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp
index 84a36b6e0ac..b678df6a9de 100644
--- a/src/mame/drivers/kyocera.cpp
+++ b/src/mame/drivers/kyocera.cpp
@@ -563,71 +563,77 @@ WRITE8_MEMBER( kc85_state::lcd_w )
/* Memory Maps */
-ADDRESS_MAP_START(kc85_state::kc85_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
+void kc85_state::kc85_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).bankrw("bank2");
+}
-ADDRESS_MAP_START(pc8201_state::pc8201_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
+void pc8201_state::pc8201_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xffff).bankrw("bank2");
+}
-ADDRESS_MAP_START(tandy200_state::tandy200_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xffff) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
+void tandy200_state::tandy200_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xffff).bankrw("bank2");
+}
-ADDRESS_MAP_START(kc85_state::kc85_io)
- ADDRESS_MAP_UNMAP_HIGH
+void kc85_state::kc85_io(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) optional RAM unit
// AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) optional I/O controller unit
// AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) optional answering telephone unit
// AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) optional modem
- AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE(IM6402_TAG, im6402_device, read, write)
- AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(uart_status_r, uart_ctrl_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(keyboard_r, ctrl_w)
- AM_RANGE(0xf0, 0xf1) AM_MIRROR(0x0e) AM_READWRITE(lcd_r, lcd_w)
-ADDRESS_MAP_END
+ map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xc0, 0xc0).mirror(0x0f).rw(m_uart, FUNC(im6402_device::read), FUNC(im6402_device::write));
+ map(0xd0, 0xd0).mirror(0x0f).rw(this, FUNC(kc85_state::uart_status_r), FUNC(kc85_state::uart_ctrl_w));
+ map(0xe0, 0xe0).mirror(0x0f).rw(this, FUNC(kc85_state::keyboard_r), FUNC(kc85_state::ctrl_w));
+ map(0xf0, 0xf1).mirror(0x0e).rw(this, FUNC(kc85_state::lcd_r), FUNC(kc85_state::lcd_w));
+}
ADDRESS_MAP_START(kc85_state::trsm100_io)
AM_IMPORT_FROM(kc85_io)
AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_WRITE(modem_w)
ADDRESS_MAP_END
-ADDRESS_MAP_START(pc8201_state::pc8201_io)
- ADDRESS_MAP_UNMAP_HIGH
+void pc8201_state::pc8201_io(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) optional video interface 8255
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x03) AM_WRITE(romah_w)
- AM_RANGE(0x84, 0x84) AM_MIRROR(0x03) AM_WRITE(romal_w)
- AM_RANGE(0x88, 0x88) AM_MIRROR(0x03) AM_WRITE(romam_w)
- AM_RANGE(0x8c, 0x8c) AM_MIRROR(0x03) AM_READ(romrd_r)
- AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(scp_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READWRITE(bank_r, bank_w)
- AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE(IM6402_TAG, im6402_device, read, write)
- AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READ(uart_status_r) AM_WRITE(uart_ctrl_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READ(keyboard_r)
- AM_RANGE(0xf0, 0xf1) AM_MIRROR(0x0e) AM_READWRITE(lcd_r, lcd_w)
-ADDRESS_MAP_END
+ map(0x80, 0x80).mirror(0x03).w(this, FUNC(pc8201_state::romah_w));
+ map(0x84, 0x84).mirror(0x03).w(this, FUNC(pc8201_state::romal_w));
+ map(0x88, 0x88).mirror(0x03).w(this, FUNC(pc8201_state::romam_w));
+ map(0x8c, 0x8c).mirror(0x03).r(this, FUNC(pc8201_state::romrd_r));
+ map(0x90, 0x90).mirror(0x0f).w(this, FUNC(pc8201_state::scp_w));
+ map(0xa0, 0xa0).mirror(0x0f).rw(this, FUNC(pc8201_state::bank_r), FUNC(pc8201_state::bank_w));
+ map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xc0, 0xc0).mirror(0x0f).rw(m_uart, FUNC(im6402_device::read), FUNC(im6402_device::write));
+ map(0xd0, 0xd0).mirror(0x0f).r(this, FUNC(pc8201_state::uart_status_r)).w(this, FUNC(pc8201_state::uart_ctrl_w));
+ map(0xe0, 0xe0).mirror(0x0f).r(this, FUNC(pc8201_state::keyboard_r));
+ map(0xf0, 0xf1).mirror(0x0e).rw(this, FUNC(pc8201_state::lcd_r), FUNC(pc8201_state::lcd_w));
+}
-ADDRESS_MAP_START(tandy200_state::tandy200_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x90, 0x9f) AM_DEVREADWRITE(RP5C01A_TAG, rp5c01_device, read, write)
+void tandy200_state::tandy200_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x90, 0x9f).rw(m_rtc, FUNC(rp5c01_device::read), FUNC(rp5c01_device::write));
// AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_DEVWRITE(TCM5089_TAG, write)
- AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(bank_r, bank_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(stbk_r, stbk_w)
- AM_RANGE(0xf0, 0xf0) AM_MIRROR(0x0e) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, data_r, data_w)
- AM_RANGE(0xf1, 0xf1) AM_MIRROR(0x0e) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, status_r, control_w)
-ADDRESS_MAP_END
+ map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xc0, 0xc0).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc1, 0xc1).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xd0, 0xd0).mirror(0x0f).rw(this, FUNC(tandy200_state::bank_r), FUNC(tandy200_state::bank_w));
+ map(0xe0, 0xe0).mirror(0x0f).rw(this, FUNC(tandy200_state::stbk_r), FUNC(tandy200_state::stbk_w));
+ map(0xf0, 0xf0).mirror(0x0e).rw(m_lcdc, FUNC(hd61830_device::data_r), FUNC(hd61830_device::data_w));
+ map(0xf1, 0xf1).mirror(0x0e).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/kyugo.cpp b/src/mame/drivers/kyugo.cpp
index 5fba40bc999..4aa4a250545 100644
--- a/src/mame/drivers/kyugo.cpp
+++ b/src/mame/drivers/kyugo.cpp
@@ -40,23 +40,25 @@
*
*************************************/
-ADDRESS_MAP_START(kyugo_state::kyugo_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(bgattribram_w) AM_SHARE("bgattribram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM_READ(spriteram_2_r) AM_SHARE("spriteram_2")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("spriteram_1")
- AM_RANGE(0xa800, 0xa800) AM_WRITE(scroll_x_lo_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(gfxctrl_w)
- AM_RANGE(0xb800, 0xb800) AM_WRITE(scroll_y_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kyugo_state::gyrodine_main_map)
- AM_IMPORT_FROM(kyugo_main_map)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void kyugo_state::kyugo_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(kyugo_state::bgvideoram_w)).share("bgvideoram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(kyugo_state::bgattribram_w)).share("bgattribram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(kyugo_state::fgvideoram_w)).share("fgvideoram");
+ map(0x9800, 0x9fff).ram().r(this, FUNC(kyugo_state::spriteram_2_r)).share("spriteram_2");
+ map(0xa000, 0xa7ff).ram().share("spriteram_1");
+ map(0xa800, 0xa800).w(this, FUNC(kyugo_state::scroll_x_lo_w));
+ map(0xb000, 0xb000).w(this, FUNC(kyugo_state::gfxctrl_w));
+ map(0xb800, 0xb800).w(this, FUNC(kyugo_state::scroll_y_w));
+ map(0xf000, 0xf7ff).ram().share("shared_ram");
+}
+
+void kyugo_state::gyrodine_main_map(address_map &map)
+{
+ kyugo_main_map(map);
+ map(0xe000, 0xe000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
@@ -71,10 +73,11 @@ WRITE_LINE_MEMBER(kyugo_state::nmi_mask_w)
m_nmi_mask = state;
}
-ADDRESS_MAP_START(kyugo_state::kyugo_main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void kyugo_state::kyugo_main_portmap(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
@@ -85,49 +88,54 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(kyugo_state::gyrodine_sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P2")
- AM_RANGE(0x8040, 0x8040) AM_READ_PORT("P1")
- AM_RANGE(0x8080, 0x8080) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void kyugo_state::gyrodine_sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram().share("shared_ram");
+ map(0x8000, 0x8000).portr("P2");
+ map(0x8040, 0x8040).portr("P1");
+ map(0x8080, 0x8080).portr("SYSTEM");
+}
-ADDRESS_MAP_START(kyugo_state::repulse_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P2")
- AM_RANGE(0xc040, 0xc040) AM_READ_PORT("P1")
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void kyugo_state::repulse_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa7ff).ram().share("shared_ram");
+ map(0xc000, 0xc000).portr("P2");
+ map(0xc040, 0xc040).portr("P1");
+ map(0xc080, 0xc080).portr("SYSTEM");
+}
-ADDRESS_MAP_START(kyugo_state::srdmissn_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P1")
- AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P2")
-ADDRESS_MAP_END
+void kyugo_state::srdmissn_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("shared_ram");
+ map(0xf400, 0xf400).portr("SYSTEM");
+ map(0xf401, 0xf401).portr("P1");
+ map(0xf402, 0xf402).portr("P2");
+}
-ADDRESS_MAP_START(kyugo_state::legend_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P1")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("P2")
-ADDRESS_MAP_END
+void kyugo_state::legend_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().share("shared_ram");
+ map(0xf800, 0xf800).portr("SYSTEM");
+ map(0xf801, 0xf801).portr("P1");
+ map(0xf802, 0xf802).portr("P2");
+}
-ADDRESS_MAP_START(kyugo_state::flashgala_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc040, 0xc040) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("P1")
- AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
+void kyugo_state::flashgala_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc040, 0xc040).portr("SYSTEM");
+ map(0xc080, 0xc080).portr("P1");
+ map(0xc0c0, 0xc0c0).portr("P2");
+ map(0xe000, 0xe7ff).ram().share("shared_ram");
+}
@@ -142,39 +150,43 @@ WRITE8_MEMBER(kyugo_state::coin_counter_w)
machine().bookkeeping().coin_counter_w(offset, data & 1);
}
-ADDRESS_MAP_START(kyugo_state::gyrodine_sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xc0, 0xc1) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(kyugo_state::repulse_sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xc0, 0xc1) AM_WRITE(coin_counter_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(kyugo_state::flashgala_sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x42, 0x42) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xc0, 0xc1) AM_WRITE(coin_counter_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(kyugo_state::srdmissn_sub_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x82, 0x82) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x84, 0x85) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x90, 0x91) AM_WRITE(coin_counter_w)
-ADDRESS_MAP_END
+void kyugo_state::gyrodine_sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xc0, 0xc1).w("ay2", FUNC(ay8910_device::address_data_w));
+}
+
+
+void kyugo_state::repulse_sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x40, 0x41).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xc0, 0xc1).w(this, FUNC(kyugo_state::coin_counter_w));
+}
+
+
+void kyugo_state::flashgala_sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x41).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x42, 0x42).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x80, 0x81).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xc0, 0xc1).w(this, FUNC(kyugo_state::coin_counter_w));
+}
+
+
+void kyugo_state::srdmissn_sub_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x81).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x82, 0x82).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x84, 0x85).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x90, 0x91).w(this, FUNC(kyugo_state::coin_counter_w));
+}
diff --git a/src/mame/drivers/labyrunr.cpp b/src/mame/drivers/labyrunr.cpp
index 09aacf3569b..5d2bf18ea63 100644
--- a/src/mame/drivers/labyrunr.cpp
+++ b/src/mame/drivers/labyrunr.cpp
@@ -46,27 +46,28 @@ WRITE8_MEMBER(labyrunr_state::labyrunr_bankswitch_w)
machine().bookkeeping().coin_counter_w(1, data & 0x10);
}
-ADDRESS_MAP_START(labyrunr_state::labyrunr_map)
- AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("k007121", k007121_device, ctrl_w)
- AM_RANGE(0x0020, 0x005f) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0x0800, 0x0800) AM_DEVREADWRITE("ym1", ym2203_device, read_port_r, write_port_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("ym1", ym2203_device, status_port_r, control_port_w)
- AM_RANGE(0x0900, 0x0900) AM_DEVREADWRITE("ym2", ym2203_device, read_port_r, write_port_w)
- AM_RANGE(0x0901, 0x0901) AM_DEVREADWRITE("ym2", ym2203_device, status_port_r, control_port_w)
- AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("P2")
- AM_RANGE(0x0a01, 0x0a01) AM_READ_PORT("P1")
- AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c00, 0x0c00) AM_WRITE(labyrunr_bankswitch_w)
- AM_RANGE(0x0d00, 0x0d1f) AM_DEVREADWRITE("k051733", k051733_device, read, write)
- AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1000, 0x10ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(labyrunr_vram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(labyrunr_vram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void labyrunr_state::labyrunr_map(address_map &map)
+{
+ map(0x0000, 0x0007).w(m_k007121, FUNC(k007121_device::ctrl_w));
+ map(0x0020, 0x005f).ram().share("scrollram");
+ map(0x0800, 0x0800).rw("ym1", FUNC(ym2203_device::read_port_r), FUNC(ym2203_device::write_port_w));
+ map(0x0801, 0x0801).rw("ym1", FUNC(ym2203_device::status_port_r), FUNC(ym2203_device::control_port_w));
+ map(0x0900, 0x0900).rw("ym2", FUNC(ym2203_device::read_port_r), FUNC(ym2203_device::write_port_w));
+ map(0x0901, 0x0901).rw("ym2", FUNC(ym2203_device::status_port_r), FUNC(ym2203_device::control_port_w));
+ map(0x0a00, 0x0a00).portr("P2");
+ map(0x0a01, 0x0a01).portr("P1");
+ map(0x0b00, 0x0b00).portr("SYSTEM");
+ map(0x0c00, 0x0c00).w(this, FUNC(labyrunr_state::labyrunr_bankswitch_w));
+ map(0x0d00, 0x0d1f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write));
+ map(0x0e00, 0x0e00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1000, 0x10ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0x1800, 0x1fff).ram();
+ map(0x2000, 0x2fff).ram().share("spriteram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(labyrunr_state::labyrunr_vram1_w)).share("videoram1");
+ map(0x3800, 0x3fff).ram().w(this, FUNC(labyrunr_state::labyrunr_vram2_w)).share("videoram2");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/ladybug.cpp b/src/mame/drivers/ladybug.cpp
index 0315f16c36c..4d849a993b8 100644
--- a/src/mame/drivers/ladybug.cpp
+++ b/src/mame/drivers/ladybug.cpp
@@ -111,62 +111,67 @@ WRITE8_MEMBER(sraider_state::sraider_misc_w)
}
-ADDRESS_MAP_START(ladybug_state::ladybug_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("video", ladybug_video_device, spr_w)
- AM_RANGE(0x8000, 0x8fff) AM_READNOP
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN0")
- AM_RANGE(0x9001, 0x9001) AM_READ_PORT("IN1")
- AM_RANGE(0x9002, 0x9002) AM_READ_PORT("DSW0")
- AM_RANGE(0x9003, 0x9003) AM_READ_PORT("DSW1")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("videolatch", ls259_device, write_d0)
- AM_RANGE(0xb000, 0xbfff) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0xd000, 0xd7ff) AM_DEVREADWRITE("video", ladybug_video_device, bg_r, bg_w)
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(dorodon_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sraider_state::sraider_cpu1_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("video", ladybug_video_device, spr_w)
- AM_RANGE(0x8005, 0x8005) AM_READ(sraider_8005_r) // protection check?
- AM_RANGE(0x8006, 0x8006) AM_WRITEONLY AM_SHARE("sound_low")
- AM_RANGE(0x8007, 0x8007) AM_WRITEONLY AM_SHARE("sound_high")
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN0")
- AM_RANGE(0x9001, 0x9001) AM_READ_PORT("IN1")
- AM_RANGE(0x9002, 0x9002) AM_READ_PORT("DSW0")
- AM_RANGE(0x9003, 0x9003) AM_READ_PORT("DSW1")
- AM_RANGE(0xd000, 0xd7ff) AM_DEVWRITE("video", ladybug_video_device, bg_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITENOP //unknown 0x10 when in attract, 0x20 when coined/playing
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sraider_state::sraider_cpu2_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_READONLY AM_SHARE("sound_low")
- AM_RANGE(0xa000, 0xa000) AM_READONLY AM_SHARE("sound_high")
- AM_RANGE(0xc000, 0xc000) AM_READNOP //some kind of sync
- AM_RANGE(0xe000, 0xe0ff) AM_WRITEONLY AM_SHARE("grid_data")
- AM_RANGE(0xe800, 0xe800) AM_WRITE(sraider_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sraider_state::sraider_cpu2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("sn3", sn76489_device, write)
- AM_RANGE(0x18, 0x18) AM_DEVWRITE("sn4", sn76489_device, write)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("sn5", sn76489_device, write)
- AM_RANGE(0x28, 0x3f) AM_WRITE(sraider_misc_w) // lots unknown
-ADDRESS_MAP_END
+void ladybug_state::ladybug_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x73ff).w(m_video, FUNC(ladybug_video_device::spr_w));
+ map(0x8000, 0x8fff).nopr();
+ map(0x9000, 0x9000).portr("IN0");
+ map(0x9001, 0x9001).portr("IN1");
+ 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(0xd000, 0xd7ff).rw(m_video, FUNC(ladybug_video_device::bg_r), FUNC(ladybug_video_device::bg_w));
+ map(0xe000, 0xe000).portr("IN2");
+}
+
+
+void dorodon_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().share("decrypted_opcodes");
+}
+
+
+void sraider_state::sraider_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x73ff).w("video", FUNC(ladybug_video_device::spr_w));
+ map(0x8005, 0x8005).r(this, FUNC(sraider_state::sraider_8005_r)); // protection check?
+ map(0x8006, 0x8006).writeonly().share("sound_low");
+ map(0x8007, 0x8007).writeonly().share("sound_high");
+ map(0x9000, 0x9000).portr("IN0");
+ map(0x9001, 0x9001).portr("IN1");
+ map(0x9002, 0x9002).portr("DSW0");
+ map(0x9003, 0x9003).portr("DSW1");
+ map(0xd000, 0xd7ff).w("video", FUNC(ladybug_video_device::bg_w));
+ map(0xe000, 0xe000).nopw(); //unknown 0x10 when in attract, 0x20 when coined/playing
+}
+
+void sraider_state::sraider_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x63ff).ram();
+ map(0x8000, 0x8000).readonly().share("sound_low");
+ map(0xa000, 0xa000).readonly().share("sound_high");
+ map(0xc000, 0xc000).nopr(); //some kind of sync
+ map(0xe000, 0xe0ff).writeonly().share("grid_data");
+ map(0xe800, 0xe800).w(this, FUNC(sraider_state::sraider_io_w));
+}
+
+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(0x28, 0x3f).w(this, FUNC(sraider_state::sraider_misc_w)); // lots unknown
+}
INPUT_CHANGED_MEMBER(ladybug_state::coin1_inserted)
diff --git a/src/mame/drivers/ladyfrog.cpp b/src/mame/drivers/ladyfrog.cpp
index f3bc789b479..e0c7a3b9d82 100644
--- a/src/mame/drivers/ladyfrog.cpp
+++ b/src/mame/drivers/ladyfrog.cpp
@@ -117,42 +117,44 @@ READ8_MEMBER(ladyfrog_state::snd_flag_r)
return m_snd_flag | 0xfd;
}
-ADDRESS_MAP_START(ladyfrog_state::ladyfrog_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc07f) AM_RAM
- AM_RANGE(0xc080, 0xc87f) AM_READWRITE(ladyfrog_videoram_r, ladyfrog_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd000) AM_WRITE(ladyfrog_gfxctrl2_w)
- AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w)
- AM_RANGE(0xd401, 0xd401) AM_READ(snd_flag_r)
- AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW1")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW2")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("INPUTS")
- AM_RANGE(0xd806, 0xd806) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(ladyfrog_spriteram_r,ladyfrog_spriteram_w)
- AM_RANGE(0xdca0, 0xdcbf) AM_READWRITE(ladyfrog_scrlram_r, ladyfrog_scrlram_w) AM_SHARE("scrlram")
- AM_RANGE(0xdcc0, 0xdcff) AM_RAM
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(ladyfrog_palette_r, ladyfrog_palette_w)
- AM_RANGE(0xd0d0, 0xd0d0) AM_READNOP /* code jumps to ASCII text "Alfa tecnology" @ $b7 */
- AM_RANGE(0xdf03, 0xdf03) AM_WRITE(ladyfrog_gfxctrl_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ladyfrog_state::ladyfrog_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_WRITENOP
- AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0xca00, 0xca00) AM_WRITENOP
- AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
- AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(to_main_w)
- AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
- AM_RANGE(0xd600, 0xd600) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC - unknown read */
- AM_RANGE(0xe000, 0xefff) AM_NOP
-ADDRESS_MAP_END
+void ladyfrog_state::ladyfrog_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc07f).ram();
+ map(0xc080, 0xc87f).rw(this, FUNC(ladyfrog_state::ladyfrog_videoram_r), FUNC(ladyfrog_state::ladyfrog_videoram_w)).share("videoram");
+ map(0xd000, 0xd000).w(this, FUNC(ladyfrog_state::ladyfrog_gfxctrl2_w));
+ map(0xd400, 0xd400).rw(this, FUNC(ladyfrog_state::from_snd_r), FUNC(ladyfrog_state::sound_command_w));
+ map(0xd401, 0xd401).r(this, FUNC(ladyfrog_state::snd_flag_r));
+ map(0xd403, 0xd403).w(this, FUNC(ladyfrog_state::sound_cpu_reset_w));
+ map(0xd800, 0xd800).portr("DSW1");
+ map(0xd801, 0xd801).portr("DSW2");
+ map(0xd804, 0xd804).portr("INPUTS");
+ map(0xd806, 0xd806).portr("SYSTEM");
+ map(0xdc00, 0xdc9f).rw(this, FUNC(ladyfrog_state::ladyfrog_spriteram_r), FUNC(ladyfrog_state::ladyfrog_spriteram_w));
+ map(0xdca0, 0xdcbf).rw(this, FUNC(ladyfrog_state::ladyfrog_scrlram_r), FUNC(ladyfrog_state::ladyfrog_scrlram_w)).share("scrlram");
+ map(0xdcc0, 0xdcff).ram();
+ map(0xdd00, 0xdeff).rw(this, FUNC(ladyfrog_state::ladyfrog_palette_r), FUNC(ladyfrog_state::ladyfrog_palette_w));
+ map(0xd0d0, 0xd0d0).nopr(); /* code jumps to ASCII text "Alfa tecnology" @ $b7 */
+ map(0xdf03, 0xdf03).w(this, FUNC(ladyfrog_state::ladyfrog_gfxctrl_w));
+ map(0xe000, 0xffff).ram();
+}
+
+void ladyfrog_state::ladyfrog_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).nopw();
+ map(0xc802, 0xc803).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xc900, 0xc90d).w(m_msm, FUNC(msm5232_device::write));
+ map(0xca00, 0xca00).nopw();
+ map(0xcb00, 0xcb00).nopw();
+ map(0xcc00, 0xcc00).nopw();
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(ladyfrog_state::to_main_w));
+ map(0xd200, 0xd200).nopr().w(this, FUNC(ladyfrog_state::nmi_enable_w));
+ map(0xd400, 0xd400).w(this, FUNC(ladyfrog_state::nmi_disable_w));
+ map(0xd600, 0xd600).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC - unknown read */
+ map(0xe000, 0xefff).noprw();
+}
static INPUT_PORTS_START( ladyfrog )
diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp
index 566a13453da..e53d4e819b1 100644
--- a/src/mame/drivers/laser3k.cpp
+++ b/src/mame/drivers/laser3k.cpp
@@ -138,20 +138,22 @@ private:
ADDRESS MAP
***************************************************************************/
-ADDRESS_MAP_START(laser3k_state::laser3k_map)
- AM_RANGE(0x0000, 0x3fff) AM_DEVICE("bank0", address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0x7fff) AM_DEVICE("bank1", address_map_bank_device, amap8)
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("bank2", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xffff) AM_DEVICE("bank3", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(laser3k_state::banks_map)
- AM_RANGE(0x00000, 0x2ffff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x38000, 0x3bfff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x3c000, 0x3c0ff) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x3c100, 0x3c1ff) AM_READ(io2_r)
- AM_RANGE(0x3c200, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x4200)
-ADDRESS_MAP_END
+void laser3k_state::laser3k_map(address_map &map)
+{
+ map(0x0000, 0x3fff).m(m_bank0, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0x7fff).m(m_bank1, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xbfff).m(m_bank2, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xffff).m(m_bank3, FUNC(address_map_bank_device::amap8));
+}
+
+void laser3k_state::banks_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rw(this, FUNC(laser3k_state::ram_r), FUNC(laser3k_state::ram_w));
+ map(0x38000, 0x3bfff).rom().region("maincpu", 0);
+ map(0x3c000, 0x3c0ff).rw(this, FUNC(laser3k_state::io_r), FUNC(laser3k_state::io_w));
+ map(0x3c100, 0x3c1ff).r(this, FUNC(laser3k_state::io2_r));
+ map(0x3c200, 0x3ffff).rom().region("maincpu", 0x4200);
+}
void laser3k_state::machine_start()
{
diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp
index f245a9a2df1..3e8c5ef0666 100644
--- a/src/mame/drivers/laserbas.cpp
+++ b/src/mame/drivers/laserbas.cpp
@@ -330,28 +330,30 @@ WRITE_LINE_MEMBER(laserbas_state::pit_out_5_w)
write_pit_out(5,state);
}
-ADDRESS_MAP_START(laserbas_state::laserbas_memory)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0xbfff) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0xc000, 0xf7ff) AM_ROM AM_WRITENOP
- AM_RANGE(0xf800, 0xfbff) AM_READ(z1_r) AM_WRITENOP /* protection device */
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(laserbas_state::laserbas_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x10, 0x11) AM_WRITE(videoctrl_w)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW")
- AM_RANGE(0x21, 0x21) AM_READ_PORT("INPUTS")
- AM_RANGE(0x22, 0x22) AM_READ(track_hi_r)
- AM_RANGE(0x23, 0x23) AM_READ(track_lo_r)
- AM_RANGE(0x20, 0x23) AM_WRITE(out_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pit0", pit8253_device, read, write)
- AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("pit1", pit8253_device, read, write)
- AM_RANGE(0x80, 0x9f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
+void laserbas_state::laserbas_memory(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0xbfff).rw(this, FUNC(laserbas_state::vram_r), FUNC(laserbas_state::vram_w));
+ map(0xc000, 0xf7ff).rom().nopw();
+ map(0xf800, 0xfbff).r(this, FUNC(laserbas_state::z1_r)).nopw(); /* protection device */
+ map(0xfc00, 0xffff).ram();
+}
+
+void laserbas_state::laserbas_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x01, 0x01).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x10, 0x11).w(this, FUNC(laserbas_state::videoctrl_w));
+ map(0x20, 0x20).portr("DSW");
+ map(0x21, 0x21).portr("INPUTS");
+ map(0x22, 0x22).r(this, FUNC(laserbas_state::track_hi_r));
+ map(0x23, 0x23).r(this, FUNC(laserbas_state::track_lo_r));
+ map(0x20, 0x23).w(this, FUNC(laserbas_state::out_w));
+ map(0x40, 0x43).rw("pit0", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x44, 0x47).rw("pit1", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x80, 0x9f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
static INPUT_PORTS_START( laserbas )
PORT_START("DSW") // $20
diff --git a/src/mame/drivers/laserbat.cpp b/src/mame/drivers/laserbat.cpp
index 66d9fba9c0c..46be140d10e 100644
--- a/src/mame/drivers/laserbat.cpp
+++ b/src/mame/drivers/laserbat.cpp
@@ -165,34 +165,36 @@ READ8_MEMBER(laserbat_state_base::rrowx_r)
*/
-ADDRESS_MAP_START(laserbat_state_base::laserbat_map)
- ADDRESS_MAP_UNMAP_HIGH
-
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x2000, 0x33ff) AM_ROM
- AM_RANGE(0x3800, 0x3bff) AM_ROM
- AM_RANGE(0x4000, 0x53ff) AM_ROM
- AM_RANGE(0x6000, 0x73ff) AM_ROM
- AM_RANGE(0x7800, 0x7bff) AM_ROM
-
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_WRITENOP
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi1", s2636_device, read_data, write_data)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi2", s2636_device, read_data, write_data)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi3", s2636_device, read_data, write_data)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(videoram_w)
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(laserbat_state_base::laserbat_io_map)
- AM_RANGE(0x00, 0x00) AM_READ(rhsc_r) AM_WRITE(cnt_eff_w)
- AM_RANGE(0x01, 0x01) /* RBALL */ AM_WRITE(cnt_nav_w)
- AM_RANGE(0x02, 0x02) AM_READ(rrowx_r) AM_WRITE(csound1_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(whsc_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(wcoh_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(wcov_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(ct_io_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(csound2_w)
-ADDRESS_MAP_END
+void laserbat_state_base::laserbat_map(address_map &map)
+{
+ map.unmap_value_high();
+
+ map(0x0000, 0x13ff).rom();
+ map(0x2000, 0x33ff).rom();
+ map(0x3800, 0x3bff).rom();
+ map(0x4000, 0x53ff).rom();
+ map(0x6000, 0x73ff).rom();
+ map(0x7800, 0x7bff).rom();
+
+ map(0x1400, 0x14ff).mirror(0x6000).nopw();
+ map(0x1500, 0x15ff).mirror(0x6000).rw(m_pvi1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1600, 0x16ff).mirror(0x6000).rw(m_pvi2, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1700, 0x17ff).mirror(0x6000).rw(m_pvi3, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(laserbat_state_base::videoram_w));
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+}
+
+void laserbat_state_base::laserbat_io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(laserbat_state_base::rhsc_r)).w(this, FUNC(laserbat_state_base::cnt_eff_w));
+ map(0x01, 0x01) /* RBALL */ .w(this, FUNC(laserbat_state_base::cnt_nav_w));
+ map(0x02, 0x02).r(this, FUNC(laserbat_state_base::rrowx_r)).w(this, FUNC(laserbat_state_base::csound1_w));
+ map(0x03, 0x03).w(this, FUNC(laserbat_state_base::whsc_w));
+ map(0x04, 0x04).w(this, FUNC(laserbat_state_base::wcoh_w));
+ map(0x05, 0x05).w(this, FUNC(laserbat_state_base::wcov_w));
+ map(0x06, 0x06).w(this, FUNC(laserbat_state_base::ct_io_w));
+ map(0x07, 0x07).w(this, FUNC(laserbat_state_base::csound2_w));
+}
static INPUT_PORTS_START( laserbat_base )
diff --git a/src/mame/drivers/lasso.cpp b/src/mame/drivers/lasso.cpp
index 9bed15a60dc..297d96d493f 100644
--- a/src/mame/drivers/lasso.cpp
+++ b/src/mame/drivers/lasso.cpp
@@ -74,135 +74,145 @@ WRITE8_MEMBER(lasso_state::sound_select_w)
}
-ADDRESS_MAP_START(lasso_state::lasso_main_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x0c00, 0x0c7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w)
- AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color")
- AM_RANGE(0x1802, 0x1802) AM_WRITE(lasso_video_control_w)
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804")
- AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805")
- AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806") AM_WRITENOP /* game uses 'lsr' to read port */
- AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807")
- AM_RANGE(0x8000, 0xbfff) AM_MIRROR(0x4000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::lasso_audio_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x5000, 0x7fff) AM_ROM
- AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w)
- AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r)
- AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x7000)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::lasso_coprocessor_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("bitmap_ram")
- AM_RANGE(0x8000, 0x8fff) AM_MIRROR(0x7000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::chameleo_main_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x107f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1080, 0x10ff) AM_RAM
- AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w)
- AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color")
- AM_RANGE(0x1802, 0x1802) AM_WRITE(lasso_video_control_w)
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804")
- AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805")
- AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806")
- AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807")
- AM_RANGE(0x4000, 0xbfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::chameleo_audio_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w)
- AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r)
- AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x7000)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::wwjgtin_main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w)
- AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color")
- AM_RANGE(0x1802, 0x1802) AM_WRITE(wwjgtin_video_control_w)
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804")
- AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805")
- AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806")
- AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807")
- AM_RANGE(0x1c00, 0x1c02) AM_WRITEONLY AM_SHARE("last_colors")
- AM_RANGE(0x1c04, 0x1c07) AM_WRITEONLY AM_SHARE("track_scroll")
- AM_RANGE(0x4000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::wwjgtin_audio_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
- AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data")
- AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w)
- AM_RANGE(0xb003, 0xb003) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r)
- AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::pinbo_main_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w)
- AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color")
- AM_RANGE(0x1802, 0x1802) AM_WRITE(pinbo_video_control_w)
- AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804")
- AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805")
- AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806")
- AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807")
- AM_RANGE(0x2000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0xbfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::pinbo_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lasso_state::pinbo_audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* ??? */
- AM_RANGE(0x14, 0x14) AM_WRITENOP /* ??? */
-ADDRESS_MAP_END
+void lasso_state::lasso_main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram");
+ map(0x0c00, 0x0c7f).ram().share("spriteram");
+ map(0x1000, 0x17ff).ram().share("share1");
+ map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w));
+ map(0x1801, 0x1801).writeonly().share("back_color");
+ map(0x1802, 0x1802).w(this, FUNC(lasso_state::lasso_video_control_w));
+ map(0x1804, 0x1804).portr("1804");
+ map(0x1805, 0x1805).portr("1805");
+ map(0x1806, 0x1806).portr("1806").nopw(); /* game uses 'lsr' to read port */
+ map(0x1807, 0x1807).portr("1807");
+ map(0x8000, 0xbfff).mirror(0x4000).rom();
+}
+
+
+void lasso_state::lasso_audio_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x5000, 0x7fff).rom();
+ map(0xb000, 0xb000).writeonly().share("chip_data");
+ map(0xb001, 0xb001).w(this, FUNC(lasso_state::sound_select_w));
+ map(0xb004, 0xb004).r(this, FUNC(lasso_state::sound_status_r));
+ map(0xb005, 0xb005).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xffff).rom().region("audiocpu", 0x7000);
+}
+
+
+void lasso_state::lasso_coprocessor_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("share1");
+ map(0x2000, 0x3fff).ram().share("bitmap_ram");
+ map(0x8000, 0x8fff).mirror(0x7000).rom();
+}
+
+
+void lasso_state::chameleo_main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram");
+ map(0x0c00, 0x0fff).ram();
+ map(0x1000, 0x107f).ram().share("spriteram");
+ map(0x1080, 0x10ff).ram();
+ map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w));
+ map(0x1801, 0x1801).writeonly().share("back_color");
+ map(0x1802, 0x1802).w(this, FUNC(lasso_state::lasso_video_control_w));
+ map(0x1804, 0x1804).portr("1804");
+ map(0x1805, 0x1805).portr("1805");
+ map(0x1806, 0x1806).portr("1806");
+ map(0x1807, 0x1807).portr("1807");
+ map(0x4000, 0xbfff).rom();
+ map(0xe000, 0xffff).rom().region("maincpu", 0xa000);
+}
+
+
+void lasso_state::chameleo_audio_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x1000, 0x1fff).rom();
+ map(0x6000, 0x7fff).rom();
+ map(0xb000, 0xb000).writeonly().share("chip_data");
+ map(0xb001, 0xb001).w(this, FUNC(lasso_state::sound_select_w));
+ map(0xb004, 0xb004).r(this, FUNC(lasso_state::sound_status_r));
+ map(0xb005, 0xb005).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xffff).rom().region("audiocpu", 0x7000);
+}
+
+
+void lasso_state::wwjgtin_main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram");
+ map(0x1000, 0x10ff).ram().share("spriteram");
+ map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w));
+ map(0x1801, 0x1801).writeonly().share("back_color");
+ map(0x1802, 0x1802).w(this, FUNC(lasso_state::wwjgtin_video_control_w));
+ map(0x1804, 0x1804).portr("1804");
+ map(0x1805, 0x1805).portr("1805");
+ map(0x1806, 0x1806).portr("1806");
+ map(0x1807, 0x1807).portr("1807");
+ map(0x1c00, 0x1c02).writeonly().share("last_colors");
+ map(0x1c04, 0x1c07).writeonly().share("track_scroll");
+ map(0x4000, 0xbfff).rom();
+ map(0xc000, 0xffff).rom().region("maincpu", 0x8000);
+}
+
+
+void lasso_state::wwjgtin_audio_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x4000, 0x7fff).mirror(0x8000).rom();
+ map(0xb000, 0xb000).writeonly().share("chip_data");
+ map(0xb001, 0xb001).w(this, FUNC(lasso_state::sound_select_w));
+ map(0xb003, 0xb003).w("dac", FUNC(dac_byte_interface::write));
+ map(0xb004, 0xb004).r(this, FUNC(lasso_state::sound_status_r));
+ map(0xb005, 0xb005).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+
+void lasso_state::pinbo_main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram");
+ map(0x1000, 0x10ff).ram().share("spriteram");
+ map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w));
+ map(0x1801, 0x1801).writeonly().share("back_color");
+ map(0x1802, 0x1802).w(this, FUNC(lasso_state::pinbo_video_control_w));
+ map(0x1804, 0x1804).portr("1804");
+ map(0x1805, 0x1805).portr("1805");
+ map(0x1806, 0x1806).portr("1806");
+ map(0x1807, 0x1807).portr("1807");
+ map(0x2000, 0x3fff).rom();
+ map(0x6000, 0xbfff).rom();
+ map(0xe000, 0xffff).rom().region("maincpu", 0xa000);
+}
+
+
+void lasso_state::pinbo_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0xf000, 0xffff).ram();
+}
+
+
+void lasso_state::pinbo_audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x04, 0x05).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x08, 0x08).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); /* ??? */
+ map(0x14, 0x14).nopw(); /* ??? */
+}
diff --git a/src/mame/drivers/lastbank.cpp b/src/mame/drivers/lastbank.cpp
index 678687c7192..2aaf4c9ceb5 100644
--- a/src/mame/drivers/lastbank.cpp
+++ b/src/mame/drivers/lastbank.cpp
@@ -224,56 +224,60 @@ CUSTOM_INPUT_MEMBER(lastbank_state::sound_status_r)
return BIT(m_sound_flags, 0) << 1 | BIT(m_sound_flags, 1);
}
-ADDRESS_MAP_START(lastbank_state::tc0091lvc_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank")
-
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram")
-
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE(ram_r<0>,ram_w<0>)
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(ram_r<1>,ram_w<1>)
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(ram_r<2>,ram_w<2>)
- AM_RANGE(0xf000, 0xfdff) AM_READWRITE(ram_r<3>,ram_w<3>)
-
- AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("tc0091lvc", tc0091lvc_device, vregs_r, vregs_w)
- AM_RANGE(0xff00, 0xff02) AM_READWRITE(irq_vector_r, irq_vector_w)
- AM_RANGE(0xff03, 0xff03) AM_READWRITE(irq_enable_r, irq_enable_w)
- AM_RANGE(0xff04, 0xff07) AM_READWRITE(ram_bank_r, ram_bank_w)
- AM_RANGE(0xff08, 0xff08) AM_READWRITE(rom_bank_r, rom_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lastbank_state::lastbank_map)
- AM_IMPORT_FROM( tc0091lvc_map )
- AM_RANGE(0xa000, 0xa00d) AM_NOP // MSM62X42B or equivalent probably read from here
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("COINS")
- AM_RANGE(0xa800, 0xa802) AM_WRITE(output_w)
- AM_RANGE(0xa803, 0xa803) AM_WRITE(mux_w) // mux for $a808 / $a80c
- AM_RANGE(0xa804, 0xa804) AM_READ_PORT("SPECIAL")
- AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write)
- AM_RANGE(0xa806, 0xa806) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xa807, 0xa807) AM_WRITENOP // hopper?
- AM_RANGE(0xa808, 0xa808) AM_READ(mux_0_r)
- AM_RANGE(0xa80c, 0xa80c) AM_READ(mux_0_r)
- AM_RANGE(0xa81c, 0xa81c) AM_READ_PORT("DSW0")
- AM_RANGE(0xa81d, 0xa81d) AM_READ_PORT("DSW1")
- AM_RANGE(0xa81e, 0xa81e) AM_READ_PORT("DSW2")
- AM_RANGE(0xa81f, 0xa81f) AM_READ_PORT("DSW3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lastbank_state::lastbank_audio_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lastbank_state::lastbank_audio_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x06) AM_DEVREADWRITE("essnd", es8712_device, read, write)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x80, 0x80) AM_WRITE(sound_flags_w)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void lastbank_state::tc0091lvc_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).bankr("mainbank");
+
+ map(0x8000, 0x9fff).ram().share("nvram");
+
+ map(0xc000, 0xcfff).rw(this, FUNC(lastbank_state::ram_r<0>), FUNC(lastbank_state::ram_w<0>));
+ map(0xd000, 0xdfff).rw(this, FUNC(lastbank_state::ram_r<1>), FUNC(lastbank_state::ram_w<1>));
+ map(0xe000, 0xefff).rw(this, FUNC(lastbank_state::ram_r<2>), FUNC(lastbank_state::ram_w<2>));
+ map(0xf000, 0xfdff).rw(this, FUNC(lastbank_state::ram_r<3>), FUNC(lastbank_state::ram_w<3>));
+
+ map(0xfe00, 0xfeff).rw(m_vdp, FUNC(tc0091lvc_device::vregs_r), FUNC(tc0091lvc_device::vregs_w));
+ map(0xff00, 0xff02).rw(this, FUNC(lastbank_state::irq_vector_r), FUNC(lastbank_state::irq_vector_w));
+ map(0xff03, 0xff03).rw(this, FUNC(lastbank_state::irq_enable_r), FUNC(lastbank_state::irq_enable_w));
+ map(0xff04, 0xff07).rw(this, FUNC(lastbank_state::ram_bank_r), FUNC(lastbank_state::ram_bank_w));
+ map(0xff08, 0xff08).rw(this, FUNC(lastbank_state::rom_bank_r), FUNC(lastbank_state::rom_bank_w));
+}
+
+void lastbank_state::lastbank_map(address_map &map)
+{
+ tc0091lvc_map(map);
+ map(0xa000, 0xa00d).noprw(); // MSM62X42B or equivalent probably read from here
+ map(0xa800, 0xa800).portr("COINS");
+ map(0xa800, 0xa802).w(this, FUNC(lastbank_state::output_w));
+ map(0xa803, 0xa803).w(this, FUNC(lastbank_state::mux_w)); // mux for $a808 / $a80c
+ map(0xa804, 0xa804).portr("SPECIAL");
+ map(0xa805, 0xa805).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0xa806, 0xa806).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0xa807, 0xa807).nopw(); // hopper?
+ map(0xa808, 0xa808).r(this, FUNC(lastbank_state::mux_0_r));
+ map(0xa80c, 0xa80c).r(this, FUNC(lastbank_state::mux_0_r));
+ map(0xa81c, 0xa81c).portr("DSW0");
+ map(0xa81d, 0xa81d).portr("DSW1");
+ map(0xa81e, 0xa81e).portr("DSW2");
+ map(0xa81f, 0xa81f).portr("DSW3");
+}
+
+void lastbank_state::lastbank_audio_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram();
+}
+
+void lastbank_state::lastbank_audio_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x06).rw(m_essnd, FUNC(es8712_device::read), FUNC(es8712_device::write));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x80, 0x80).w(this, FUNC(lastbank_state::sound_flags_w));
+ map(0x80, 0x80).r("soundlatch1", FUNC(generic_latch_8_device::read));
+ map(0xc0, 0xc0).r("soundlatch2", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( lastbank )
PORT_START("COINS")
diff --git a/src/mame/drivers/lastduel.cpp b/src/mame/drivers/lastduel.cpp
index a983b50404a..5ef11c7db36 100644
--- a/src/mame/drivers/lastduel.cpp
+++ b/src/mame/drivers/lastduel.cpp
@@ -141,62 +141,66 @@ WRITE16_MEMBER(lastduel_state::lastduel_sound_w)
/******************************************************************************/
-ADDRESS_MAP_START(lastduel_state::lastduel_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfc0003) AM_WRITENOP /* Written rarely */
- AM_RANGE(0xfc0800, 0xfc0fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("P1_P2") AM_WRITE(lastduel_flip_w)
- AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("SYSTEM") AM_WRITE(lastduel_sound_w)
- AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc4006, 0xfc4007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc8000, 0xfc800f) AM_WRITE(lastduel_scroll_w)
- AM_RANGE(0xfcc000, 0xfcdfff) AM_RAM_WRITE(lastduel_vram_w) AM_SHARE("vram")
- AM_RANGE(0xfd0000, 0xfd3fff) AM_RAM_WRITE(lastduel_scroll1_w) AM_SHARE("scroll1")
- AM_RANGE(0xfd4000, 0xfd7fff) AM_RAM_WRITE(lastduel_scroll2_w) AM_SHARE("scroll2")
- AM_RANGE(0xfd8000, 0xfd87ff) AM_RAM_WRITE(lastduel_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lastduel_state::madgear_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0xfc1800, 0xfc1fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("DSW1") AM_WRITE(lastduel_flip_w)
- AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("DSW2") AM_WRITE(lastduel_sound_w)
- AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("P1_P2")
- AM_RANGE(0xfc4006, 0xfc4007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfc8000, 0xfc9fff) AM_RAM_WRITE(lastduel_vram_w) AM_SHARE("vram")
- AM_RANGE(0xfcc000, 0xfcc7ff) AM_RAM_WRITE(lastduel_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0xfd0000, 0xfd000f) AM_WRITE(lastduel_scroll_w)
- AM_RANGE(0xfd4000, 0xfd7fff) AM_RAM_WRITE(madgear_scroll1_w) AM_SHARE("scroll1")
- AM_RANGE(0xfd8000, 0xfdffff) AM_RAM_WRITE(madgear_scroll2_w) AM_SHARE("scroll2")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void lastduel_state::lastduel_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0xfc0000, 0xfc0003).nopw(); /* Written rarely */
+ map(0xfc0800, 0xfc0fff).ram().share("spriteram");
+ map(0xfc4000, 0xfc4001).portr("P1_P2").w(this, FUNC(lastduel_state::lastduel_flip_w));
+ map(0xfc4002, 0xfc4003).portr("SYSTEM").w(this, FUNC(lastduel_state::lastduel_sound_w));
+ map(0xfc4004, 0xfc4005).portr("DSW1");
+ map(0xfc4006, 0xfc4007).portr("DSW2");
+ map(0xfc8000, 0xfc800f).w(this, FUNC(lastduel_state::lastduel_scroll_w));
+ map(0xfcc000, 0xfcdfff).ram().w(this, FUNC(lastduel_state::lastduel_vram_w)).share("vram");
+ map(0xfd0000, 0xfd3fff).ram().w(this, FUNC(lastduel_state::lastduel_scroll1_w)).share("scroll1");
+ map(0xfd4000, 0xfd7fff).ram().w(this, FUNC(lastduel_state::lastduel_scroll2_w)).share("scroll2");
+ map(0xfd8000, 0xfd87ff).ram().w(this, FUNC(lastduel_state::lastduel_palette_word_w)).share("paletteram");
+ map(0xfe0000, 0xffffff).ram();
+}
+
+void lastduel_state::madgear_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0xfc1800, 0xfc1fff).ram().share("spriteram");
+ map(0xfc4000, 0xfc4001).portr("DSW1").w(this, FUNC(lastduel_state::lastduel_flip_w));
+ map(0xfc4002, 0xfc4003).portr("DSW2").w(this, FUNC(lastduel_state::lastduel_sound_w));
+ map(0xfc4004, 0xfc4005).portr("P1_P2");
+ map(0xfc4006, 0xfc4007).portr("SYSTEM");
+ map(0xfc8000, 0xfc9fff).ram().w(this, FUNC(lastduel_state::lastduel_vram_w)).share("vram");
+ map(0xfcc000, 0xfcc7ff).ram().w(this, FUNC(lastduel_state::lastduel_palette_word_w)).share("paletteram");
+ map(0xfd0000, 0xfd000f).w(this, FUNC(lastduel_state::lastduel_scroll_w));
+ map(0xfd4000, 0xfd7fff).ram().w(this, FUNC(lastduel_state::madgear_scroll1_w)).share("scroll1");
+ map(0xfd8000, 0xfdffff).ram().w(this, FUNC(lastduel_state::madgear_scroll2_w)).share("scroll2");
+ map(0xff0000, 0xffffff).ram();
+}
/******************************************************************************/
-ADDRESS_MAP_START(lastduel_state::sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void lastduel_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xe801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf000, 0xf001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
WRITE8_MEMBER(lastduel_state::mg_bankswitch_w)
{
membank("bank1")->set_entry(data & 0x01);
}
-ADDRESS_MAP_START(lastduel_state::madgear_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xcfff) AM_ROMBANK("bank1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xf004, 0xf004) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xf006, 0xf006) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf00a, 0xf00a) AM_WRITE(mg_bankswitch_w)
-ADDRESS_MAP_END
+void lastduel_state::madgear_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xcfff).bankr("bank1");
+ map(0xd000, 0xd7ff).ram();
+ map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf004, 0xf004).w("oki", FUNC(okim6295_device::write));
+ map(0xf006, 0xf006).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf00a, 0xf00a).w(this, FUNC(lastduel_state::mg_bankswitch_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/lastfght.cpp b/src/mame/drivers/lastfght.cpp
index 1694ec5e56a..b32fdf2050d 100644
--- a/src/mame/drivers/lastfght.cpp
+++ b/src/mame/drivers/lastfght.cpp
@@ -407,40 +407,42 @@ WRITE16_MEMBER(lastfght_state::sound_w)
Memory Maps
***************************************************************************/
-ADDRESS_MAP_START(lastfght_state::lastfght_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
-
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0)
-
- AM_RANGE( 0x200000, 0x20ffff ) AM_RAM AM_SHARE("nvram") // battery
-
- AM_RANGE( 0x600000, 0x600001 ) AM_WRITE(hi_w )
- AM_RANGE( 0x600002, 0x600003 ) AM_READWRITE(sound_r, sound_w )
- AM_RANGE( 0x600006, 0x600007 ) AM_WRITE(blit_w )
- AM_RANGE( 0x600008, 0x600009 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff )
- AM_RANGE( 0x600008, 0x600009 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00 )
- AM_RANGE( 0x60000a, 0x60000b ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00 )
-
- AM_RANGE( 0x800000, 0x800001 ) AM_WRITE(sx_w )
- AM_RANGE( 0x800002, 0x800003 ) AM_WRITE(sd_w )
- AM_RANGE( 0x800004, 0x800005 ) AM_WRITE(sy_w )
- AM_RANGE( 0x800006, 0x800007 ) AM_WRITE(sr_w )
- AM_RANGE( 0x800008, 0x800009 ) AM_WRITE(x_w )
- AM_RANGE( 0x80000a, 0x80000b ) AM_WRITE(yw_w )
- AM_RANGE( 0x80000c, 0x80000d ) AM_WRITE(h_w )
-
- AM_RANGE( 0x800014, 0x800015 ) AM_WRITE(dest_w )
-
- AM_RANGE( 0xc00000, 0xc00001 ) AM_READ(c00000_r )
- AM_RANGE( 0xc00002, 0xc00003 ) AM_READ(c00002_r )
- AM_RANGE( 0xc00004, 0xc00005 ) AM_READ(c00004_r )
- AM_RANGE( 0xc00006, 0xc00007 ) AM_READWRITE(c00006_r, c00006_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lastfght_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void lastfght_state::lastfght_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x080000, 0x0fffff).rom().region("maincpu", 0);
+
+ map(0x200000, 0x20ffff).ram().share("nvram"); // battery
+
+ map(0x600000, 0x600001).w(this, FUNC(lastfght_state::hi_w));
+ map(0x600002, 0x600003).rw(this, FUNC(lastfght_state::sound_r), FUNC(lastfght_state::sound_w));
+ map(0x600006, 0x600007).w(this, FUNC(lastfght_state::blit_w));
+ map(0x600009, 0x600009).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x600008, 0x600008).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x60000a, 0x60000a).w("ramdac", FUNC(ramdac_device::mask_w));
+
+ map(0x800000, 0x800001).w(this, FUNC(lastfght_state::sx_w));
+ map(0x800002, 0x800003).w(this, FUNC(lastfght_state::sd_w));
+ map(0x800004, 0x800005).w(this, FUNC(lastfght_state::sy_w));
+ map(0x800006, 0x800007).w(this, FUNC(lastfght_state::sr_w));
+ map(0x800008, 0x800009).w(this, FUNC(lastfght_state::x_w));
+ map(0x80000a, 0x80000b).w(this, FUNC(lastfght_state::yw_w));
+ map(0x80000c, 0x80000d).w(this, FUNC(lastfght_state::h_w));
+
+ map(0x800014, 0x800015).w(this, FUNC(lastfght_state::dest_w));
+
+ map(0xc00000, 0xc00001).r(this, FUNC(lastfght_state::c00000_r));
+ map(0xc00002, 0xc00003).r(this, FUNC(lastfght_state::c00002_r));
+ map(0xc00004, 0xc00005).r(this, FUNC(lastfght_state::c00004_r));
+ map(0xc00006, 0xc00007).rw(this, FUNC(lastfght_state::c00006_r), FUNC(lastfght_state::c00006_w));
+}
+
+void lastfght_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
/***************************************************************************
Input Ports
diff --git a/src/mame/drivers/lazercmd.cpp b/src/mame/drivers/lazercmd.cpp
index e2957962b1f..84c884159f5 100644
--- a/src/mame/drivers/lazercmd.cpp
+++ b/src/mame/drivers/lazercmd.cpp
@@ -410,38 +410,42 @@ READ8_MEMBER(lazercmd_state::lazercmd_hardware_r)
*
*************************************************************/
-ADDRESS_MAP_START(lazercmd_state::lazercmd_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x1c00, 0x1c1f) AM_RAM
- AM_RANGE(0x1c20, 0x1eff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1f00, 0x1f03) AM_WRITE(lazercmd_hardware_w)
- AM_RANGE(0x1f00, 0x1f07) AM_READ(lazercmd_hardware_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lazercmd_state::medlanes_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x1000, 0x17ff) AM_ROM
- AM_RANGE(0x1c00, 0x1c1f) AM_RAM
- AM_RANGE(0x1c20, 0x1eff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1f00, 0x1f03) AM_WRITE(medlanes_hardware_w)
- AM_RANGE(0x1f00, 0x1f07) AM_READ(lazercmd_hardware_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lazercmd_state::bbonk_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x1c00, 0x1c1f) AM_RAM
- AM_RANGE(0x1c20, 0x1eff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1f00, 0x1f03) AM_WRITE(bbonk_hardware_w)
- AM_RANGE(0x1f00, 0x1f07) AM_READ(lazercmd_hardware_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lazercmd_state::lazercmd_portmap)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(lazercmd_ctrl_port_r, lazercmd_ctrl_port_w)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(lazercmd_data_port_r, lazercmd_data_port_w)
-ADDRESS_MAP_END
+void lazercmd_state::lazercmd_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x1c00, 0x1c1f).ram();
+ map(0x1c20, 0x1eff).ram().share("videoram");
+ map(0x1f00, 0x1f03).w(this, FUNC(lazercmd_state::lazercmd_hardware_w));
+ map(0x1f00, 0x1f07).r(this, FUNC(lazercmd_state::lazercmd_hardware_r));
+}
+
+
+void lazercmd_state::medlanes_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x1000, 0x17ff).rom();
+ map(0x1c00, 0x1c1f).ram();
+ map(0x1c20, 0x1eff).ram().share("videoram");
+ map(0x1f00, 0x1f03).w(this, FUNC(lazercmd_state::medlanes_hardware_w));
+ map(0x1f00, 0x1f07).r(this, FUNC(lazercmd_state::lazercmd_hardware_r));
+}
+
+
+void lazercmd_state::bbonk_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x1c00, 0x1c1f).ram();
+ map(0x1c20, 0x1eff).ram().share("videoram");
+ map(0x1f00, 0x1f03).w(this, FUNC(lazercmd_state::bbonk_hardware_w));
+ map(0x1f00, 0x1f07).r(this, FUNC(lazercmd_state::lazercmd_hardware_r));
+}
+
+
+void lazercmd_state::lazercmd_portmap(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(lazercmd_state::lazercmd_ctrl_port_r), FUNC(lazercmd_state::lazercmd_ctrl_port_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(lazercmd_state::lazercmd_data_port_r), FUNC(lazercmd_state::lazercmd_data_port_w));
+}
diff --git a/src/mame/drivers/lb186.cpp b/src/mame/drivers/lb186.cpp
index 419ac7cccbe..220c8ee3f04 100644
--- a/src/mame/drivers/lb186.cpp
+++ b/src/mame/drivers/lb186.cpp
@@ -92,19 +92,21 @@ WRITE8_MEMBER(lb186_state::drive_sel_w)
floppy->ss_w(BIT(data, 4));
}
-ADDRESS_MAP_START(lb186_state::lb186_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lb186_state::lb186_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x1000, 0x101f) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0x00ff)
- AM_RANGE(0x1080, 0x108f) AM_DEVREADWRITE8("scsibus:7:ncr5380", ncr5380n_device, read, write, 0x00ff)
- AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE8("fdc", wd1772_device, read, write, 0x00ff)
- AM_RANGE(0x1180, 0x1181) AM_READWRITE8(scsi_dack_r, scsi_dack_w, 0x00ff)
- AM_RANGE(0x1200, 0x1201) AM_WRITE8(drive_sel_w, 0x00ff)
-ADDRESS_MAP_END
+void lb186_state::lb186_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram(); // fixed 256k for now
+ map(0xfc000, 0xfffff).rom().region("bios", 0);
+}
+
+void lb186_state::lb186_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x1000, 0x101f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff);
+ map(0x1080, 0x108f).rw(m_scsi, FUNC(ncr5380n_device::read), FUNC(ncr5380n_device::write)).umask16(0x00ff);
+ map(0x1100, 0x1107).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff);
+ map(0x1180, 0x1180).rw(this, FUNC(lb186_state::scsi_dack_r), FUNC(lb186_state::scsi_dack_w));
+ map(0x1200, 0x1200).w(this, FUNC(lb186_state::drive_sel_w));
+}
static SLOT_INTERFACE_START( lb186_floppies )
SLOT_INTERFACE("525dd", FLOPPY_525_DD)
diff --git a/src/mame/drivers/lbeach.cpp b/src/mame/drivers/lbeach.cpp
index 57a749a21a3..2e047fd2a0c 100644
--- a/src/mame/drivers/lbeach.cpp
+++ b/src/mame/drivers/lbeach.cpp
@@ -216,25 +216,26 @@ READ8_MEMBER(lbeach_state::lbeach_in2_r)
return (ioport("IN2")->read() & 0x3f) | d6 | d7;
}
-ADDRESS_MAP_START(lbeach_state::lbeach_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0x41ff) AM_RAM_WRITE(lbeach_bg_vram_w) AM_SHARE("bg_vram")
- AM_RANGE(0x4000, 0x4000) AM_READ(lbeach_in1_r)
- AM_RANGE(0x4200, 0x43ff) AM_RAM
- AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(lbeach_fg_vram_w) AM_SHARE("fg_vram")
- AM_RANGE(0x8000, 0x8000) AM_READ(lbeach_in2_r)
- AM_RANGE(0x8000, 0x8000) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x8001, 0x8001) AM_WRITEONLY AM_SHARE("sprite_x")
- AM_RANGE(0x8002, 0x8002) AM_WRITEONLY AM_SHARE("sprite_code")
+void lbeach_state::lbeach_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().share("nvram");
+ map(0x4000, 0x41ff).ram().w(this, FUNC(lbeach_state::lbeach_bg_vram_w)).share("bg_vram");
+ map(0x4000, 0x4000).r(this, FUNC(lbeach_state::lbeach_in1_r));
+ map(0x4200, 0x43ff).ram();
+ map(0x4400, 0x47ff).ram().w(this, FUNC(lbeach_state::lbeach_fg_vram_w)).share("fg_vram");
+ map(0x8000, 0x8000).r(this, FUNC(lbeach_state::lbeach_in2_r));
+ map(0x8000, 0x8000).writeonly().share("scroll_y");
+ map(0x8001, 0x8001).writeonly().share("sprite_x");
+ map(0x8002, 0x8002).writeonly().share("sprite_code");
// AM_RANGE(0x8003, 0x8003) AM_WRITENOP // ?
// AM_RANGE(0x8004, 0x8004) AM_WRITENOP // ?
// AM_RANGE(0x8005, 0x8005) AM_WRITENOP // ?
- AM_RANGE(0x8007, 0x8007) AM_WRITENOP // probably watchdog
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
+ map(0x8007, 0x8007).nopw(); // probably watchdog
+ map(0xa000, 0xa000).portr("IN0");
// AM_RANGE(0xa003, 0xa003) AM_READNOP // ? tests d7 at game over
- AM_RANGE(0xc000, 0xcfff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xc000, 0xcfff).rom();
+ map(0xf000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp
index 83c612162b9..43d213c44b0 100644
--- a/src/mame/drivers/lc80.cpp
+++ b/src/mame/drivers/lc80.cpp
@@ -48,14 +48,15 @@
/* Memory Maps */
-ADDRESS_MAP_START(lc80_state::lc80_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROMBANK("bank1")
- AM_RANGE(0x0800, 0x0fff) AM_ROMBANK("bank2")
- AM_RANGE(0x1000, 0x17ff) AM_ROMBANK("bank3")
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x2400, 0x2fff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
+void lc80_state::lc80_mem(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).bankr("bank1");
+ map(0x0800, 0x0fff).bankr("bank2");
+ map(0x1000, 0x17ff).bankr("bank3");
+ map(0x2000, 0x23ff).ram();
+ map(0x2400, 0x2fff).bankrw("bank4");
+}
#if 0
ADDRESS_MAP_START(lc80_state::sc80_mem)
@@ -64,12 +65,13 @@ ADDRESS_MAP_START(lc80_state::sc80_mem)
ADDRESS_MAP_END
#endif
-ADDRESS_MAP_START(lc80_state::lc80_io)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
-ADDRESS_MAP_END
+void lc80_state::lc80_io(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x14, 0x17).rw(Z80PIO1_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x18, 0x1b).rw(m_pio2, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x0c, 0x0f).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/lcmate2.cpp b/src/mame/drivers/lcmate2.cpp
index 53df0486b8c..53ea557d5b9 100644
--- a/src/mame/drivers/lcmate2.cpp
+++ b/src/mame/drivers/lcmate2.cpp
@@ -95,26 +95,28 @@ WRITE8_MEMBER( lcmate2_state::bankswitch_w )
membank("rombank")->set_entry(data&0x0f);
}
-ADDRESS_MAP_START(lcmate2_state::lcmate2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0x7fff ) AM_ROMBANK("rombank")
- AM_RANGE( 0x8000, 0x9fff ) AM_RAM AM_MIRROR(0x6000) AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lcmate2_state::lcmate2_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("rtc", rp5c15_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_WRITE(speaker_w)
- AM_RANGE(0x1fff, 0x1fff) AM_WRITE(bankswitch_w)
-
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("hd44780", hd44780_device, control_write)
- AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("hd44780", hd44780_device, data_write)
- AM_RANGE(0x3002, 0x3002) AM_DEVREAD("hd44780", hd44780_device, control_read)
- AM_RANGE(0x3003, 0x3003) AM_DEVREAD("hd44780", hd44780_device, data_read)
-
- AM_RANGE(0x5000, 0x50ff) AM_READ(key_r)
-ADDRESS_MAP_END
+void lcmate2_state::lcmate2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0x9fff).ram().mirror(0x6000).share("nvram");
+}
+
+void lcmate2_state::lcmate2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x000f).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write));
+ map(0x1000, 0x1000).w(this, FUNC(lcmate2_state::speaker_w));
+ map(0x1fff, 0x1fff).w(this, FUNC(lcmate2_state::bankswitch_w));
+
+ map(0x3000, 0x3000).w(m_lcdc, FUNC(hd44780_device::control_write));
+ map(0x3001, 0x3001).w(m_lcdc, FUNC(hd44780_device::data_write));
+ map(0x3002, 0x3002).r(m_lcdc, FUNC(hd44780_device::control_read));
+ map(0x3003, 0x3003).r(m_lcdc, FUNC(hd44780_device::data_read));
+
+ map(0x5000, 0x50ff).r(this, FUNC(lcmate2_state::key_r));
+}
/* Input ports */
static INPUT_PORTS_START( lcmate2 )
diff --git a/src/mame/drivers/leapster.cpp b/src/mame/drivers/leapster.cpp
index 3024ab0a205..1f143791dd8 100644
--- a/src/mame/drivers/leapster.cpp
+++ b/src/mame/drivers/leapster.cpp
@@ -292,17 +292,19 @@ void leapster_state::machine_reset()
{
}
-ADDRESS_MAP_START(leapster_state::leapster_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_ROM AM_MIRROR(0x40000000) // pointers in the bios region seem to be to the 40xxxxxx region, either we mirror there or something (real bios?) is acutally missing
- AM_RANGE(0x0180D800, 0x0180D803) AM_READ(leapster_random_r)
- AM_RANGE(0x03000000, 0x030007ff) AM_RAM // puts stack here, writes a pointer @ 0x03000000 on startup
- AM_RANGE(0x3c000000, 0x3c1fffff) AM_RAM // really ram, or has our code execution gone wrong?
+void leapster_state::leapster_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).rom().mirror(0x40000000); // pointers in the bios region seem to be to the 40xxxxxx region, either we mirror there or something (real bios?) is acutally missing
+ map(0x0180D800, 0x0180D803).r(this, FUNC(leapster_state::leapster_random_r));
+ map(0x03000000, 0x030007ff).ram(); // puts stack here, writes a pointer @ 0x03000000 on startup
+ map(0x3c000000, 0x3c1fffff).ram(); // really ram, or has our code execution gone wrong?
// AM_RANGE(0x80000000, 0x807fffff) AM_ROMBANK("cartrom") // game ROM pointers are all to the 80xxxxxx region, so I assume it maps here - installed if a cart is present
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(leapster_state::leapster_aux)
- AM_RANGE(0x00000004b, 0x00000004b) AM_WRITE(leapster_aux004b_w) // this address isn't used by ARC internal stuff afaik, so probably leapster specific
-ADDRESS_MAP_END
+void leapster_state::leapster_aux(address_map &map)
+{
+ map(0x00000004b, 0x00000004b).w(this, FUNC(leapster_state::leapster_aux004b_w)); // this address isn't used by ARC internal stuff afaik, so probably leapster specific
+}
MACHINE_CONFIG_START(leapster_state::leapster)
/* basic machine hardware */
diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp
index 7e371e86539..d4cbda84a9a 100644
--- a/src/mame/drivers/legionna.cpp
+++ b/src/mame/drivers/legionna.cpp
@@ -104,257 +104,311 @@ READ8_MEMBER(legionna_state::denjinmk_sound_comms_r)
return m_seibu_sound->main_r(space, (offset >> 1) & 7);
}
-ADDRESS_MAP_START(legionna_state::legionna_cop_mem)
- AM_RANGE(0x100400, 0x100401) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_param_lo_w) // grainbow
- AM_RANGE(0x100402, 0x100403) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_param_hi_w) // grainbow
- AM_RANGE(0x10040c, 0x10040d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_size_w) // grainbow
- AM_RANGE(0x100410, 0x100411) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_inc_w) // grainbow
- AM_RANGE(0x100412, 0x100413) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_src_hi_w) // grainbow
- AM_RANGE(0x100414, 0x100415) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_src_lo_w) // grainbow
-
- AM_RANGE(0x10041c, 0x10041d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_target_w) // angle target (for 0x6200 COP macro)
- AM_RANGE(0x10041e, 0x10041f) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_step_w) // angle step (for 0x6200 COP macro)
-
- AM_RANGE(0x100420, 0x100421) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_low_w)
- AM_RANGE(0x100422, 0x100423) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_high_w)
- AM_RANGE(0x100424, 0x100425) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_mode_w)
- AM_RANGE(0x100428, 0x100429) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v1_w)
- AM_RANGE(0x10042a, 0x10042b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v2_w)
- AM_RANGE(0x10042c, 0x10042d) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_prng_maxvalue_r, cop_prng_maxvalue_w)
-
- AM_RANGE(0x100432, 0x100433) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_data_w)
- AM_RANGE(0x100434, 0x100435) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_addr_w)
- AM_RANGE(0x100436, 0x100437) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_hitbox_baseadr_w)
- AM_RANGE(0x100438, 0x100439) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_value_w)
- AM_RANGE(0x10043a, 0x10043b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_mask_w)
- AM_RANGE(0x10043c, 0x10043d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_trigger_w)
- //AM_RANGE(0x10043e, 0x10043f) AM_DEVWRITE("raiden2cop", raiden2cop_device,) /* 0 in all 68k based games, 0xffff in raiden2 / raidendx, 0x2000 in zeroteam / xsedae , it's always set up just before the 0x474 register */
-
- AM_RANGE(0x100440, 0x100441) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_unk_param_a_w)
- AM_RANGE(0x100442, 0x100443) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_unk_param_b_w)
- AM_RANGE(0x100444, 0x100445) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_scale_w)
- AM_RANGE(0x100446, 0x100447) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_rom_addr_hi_w) // cupsoc
- AM_RANGE(0x100448, 0x100449) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_rom_addr_lo_w) // cupsoc
- AM_RANGE(0x10044a, 0x10044b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_precmd_w) // cupsoc
-
- AM_RANGE(0x100450, 0x100451) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_hi_w)
- AM_RANGE(0x100452, 0x100453) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_lo_w)
- AM_RANGE(0x100454, 0x100455) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_hi_w)
- AM_RANGE(0x100456, 0x100457) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_lo_w)
- AM_RANGE(0x100458, 0x100459) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_param_w)
- AM_RANGE(0x10045a, 0x10045b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_val_w) //palette DMA brightness val, used by X Se Dae / Zero Team
- AM_RANGE(0x10045c, 0x10045d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_mode_w) //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5)
-
-// AM_RANGE(0x100470, 0x100471) AM_READWRITE(cop_tile_bank_2_r,cop_tile_bank_2_w)
-// AM_RANGE(0x100474, 0x100475) AM_DEVWRITE("raiden2cop", raiden2cop_device,) // this gets set to a pointer to spriteram (relative to start of ram) on all games excecpt raiden 2, where it isn't set
- AM_RANGE(0x100476, 0x100477) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_adr_rel_w)
- AM_RANGE(0x100478, 0x100479) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_src_w)
- AM_RANGE(0x10047a, 0x10047b) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_size_w)
- AM_RANGE(0x10047c, 0x10047d) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_dst_w)
- AM_RANGE(0x10047e, 0x10047f) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_dma_mode_r, cop_dma_mode_w)
-
- AM_RANGE(0x10048c, 0x10048d) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_sprite_dma_abs_y_w) // 68k
- AM_RANGE(0x10048e, 0x10048f) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_sprite_dma_abs_x_w) // 68k
-
- AM_RANGE(0x1004a0, 0x1004ad) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_high_r, cop_reg_high_w)
- AM_RANGE(0x1004c0, 0x1004cd) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_low_r, cop_reg_low_w)
-
-// AM_RANGE(0x100500, 0x100505) AM_WRITE(cop_cmd_w) // ADD ME
- AM_RANGE(0x100500, 0x100505) AM_DEVWRITE("raiden2cop", raiden2cop_device,LEGACY_cop_cmd_w) // REMOVE ME
-
- AM_RANGE(0x100580, 0x100581) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_r)
- AM_RANGE(0x100582, 0x100587) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_val_r)
-
-
- AM_RANGE(0x100588, 0x100589) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_stat_r)
- AM_RANGE(0x100590, 0x100599) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_itoa_digits_r)
-
- AM_RANGE(0x1005a0, 0x1005a7) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_prng_r)
-
- AM_RANGE(0x1005b0, 0x1005b1) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_status_r)
- AM_RANGE(0x1005b2, 0x1005b3) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_dist_r)
- AM_RANGE(0x1005b4, 0x1005b5) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_angle_r)
-
- AM_RANGE(0x1006fc, 0x1006fd) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_trigger_w)
- AM_RANGE(0x1006fe, 0x1006ff) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_sort_dma_trig_w) // sort-DMA trigger
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(legionna_state::legionna_map)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- AM_RANGE(0x100470, 0x100471) AM_WRITENOP // toggles 0x2000 / 0x0000, tile bank on some games
- AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack?
- ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1")
- AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* palette xRRRRxGGGGxBBBBx ? */
- AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x106000, 0x107fff) AM_RAM
- AM_RANGE(0x108000, 0x11ffff) AM_RAM /* main ram */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(legionna_state::heatbrl_map)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- AM_RANGE(0x100470, 0x100471) AM_WRITE(heatbrl_setgfxbank)
- AM_RANGE(0x100600, 0x100601) AM_WRITENOP // irq ack?
- AM_RANGE(0x100640, 0x10068f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1")
- AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM")
- ;map(0x1007c0, 0x1007df).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x108000, 0x11ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(legionna_state::godzilla_map)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- AM_RANGE(0x100470, 0x100471) AM_WRITE(denjinmk_setgfxbank)
- AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack?
- ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1")
- AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x100800, 0x100fff) AM_RAM
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103800, 0x103fff) AM_RAM // check?
- AM_RANGE(0x104000, 0x104fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x106000, 0x1067ff) AM_RAM
- AM_RANGE(0x106800, 0x106fff) AM_RAM
- AM_RANGE(0x107000, 0x107fff) AM_RAM /*Ani-DSP ram*/
- AM_RANGE(0x108000, 0x11ffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(legionna_state::denjinmk_map)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- AM_RANGE(0x100470, 0x100471) AM_WRITE(denjinmk_setgfxbank)
- AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack?
- ;map(0x100700, 0x10071f).r(this, FUNC(legionna_state::denjinmk_sound_comms_r)).lw8("seibu_sound_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1")
- AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x10075c, 0x10075d) AM_READ_PORT("DSW2")
- AM_RANGE(0x100800, 0x100fff) AM_RAM
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102800, 0x103fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM
- AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x106000, 0x107fff) AM_RAM
- AM_RANGE(0x108000, 0x11dfff) AM_RAM
- AM_RANGE(0x11e000, 0x11efff) AM_RAM
- AM_RANGE(0x11f000, 0x11ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(legionna_state::grainbow_map)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- AM_RANGE(0x100480, 0x100487) AM_WRITE(grainbow_layer_config_w) // probably a COP feature
- AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack?
- ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1")
- AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x10075c, 0x10075d) AM_READ_PORT("DSW2")
- AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x104000, 0x104fff) AM_RAM//_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x105000, 0x105fff) AM_RAM
- AM_RANGE(0x106000, 0x106fff) AM_RAM
- AM_RANGE(0x107000, 0x107fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x108000, 0x11ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(legionna_state::cupsoc_mem)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack?
- ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1")
- AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x10075c, 0x10075d) AM_READ_PORT("DSW2")
- AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x104000, 0x104fff) AM_RAM
- AM_RANGE(0x105000, 0x106fff) AM_RAM
- AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/
- AM_RANGE(0x108000, 0x10ffff) AM_RAM
- AM_RANGE(0x110000, 0x119fff) AM_RAM
- AM_RANGE(0x11a000, 0x11dfff) AM_RAM
- AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(legionna_state::cupsocs_mem)
- AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1003ff) AM_RAM
- ;map(0x100600, 0x10067f).lrw16("crtc_rw", [this](address_space &space, offs_t offset, u16 mem_mask){ return m_crtc->read(space, offset ^ 0x20, mem_mask); }, [this](address_space &space, offs_t offset, u16 data, u16 mem_mask){ m_crtc->write(space, offset ^ 0x20, data, mem_mask); });
- AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack?
- AM_RANGE(0x100700, 0x100701) AM_READ_PORT("DSW1")
- AM_RANGE(0x100704, 0x100705) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100708, 0x100709) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10070c, 0x10070d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x10071c, 0x10071d) AM_READ_PORT("DSW2")
- ;map(0x100740, 0x10075f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x104000, 0x104fff) AM_RAM
- AM_RANGE(0x105000, 0x106fff) AM_RAM
- AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/
- AM_RANGE(0x108000, 0x10ffff) AM_RAM
- AM_RANGE(0x110000, 0x119fff) AM_RAM
- AM_RANGE(0x11a000, 0x11dfff) AM_RAM
- AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/
-ADDRESS_MAP_END
+void legionna_state::legionna_cop_mem(address_map &map)
+{
+ map(0x100400, 0x100401).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_param_lo_w)); // grainbow
+ map(0x100402, 0x100403).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_param_hi_w)); // grainbow
+ map(0x10040c, 0x10040d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_size_w)); // grainbow
+ map(0x100410, 0x100411).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_inc_w)); // grainbow
+ map(0x100412, 0x100413).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_src_hi_w)); // grainbow
+ map(0x100414, 0x100415).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_src_lo_w)); // grainbow
+
+ map(0x10041c, 0x10041d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_target_w)); // angle target (for 0x6200 COP macro)
+ map(0x10041e, 0x10041f).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_step_w)); // angle step (for 0x6200 COP macro)
+
+ map(0x100420, 0x100421).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_low_w));
+ map(0x100422, 0x100423).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_high_w));
+ map(0x100424, 0x100425).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_mode_w));
+ map(0x100428, 0x100429).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v1_w));
+ map(0x10042a, 0x10042b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v2_w));
+ map(0x10042c, 0x10042d).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_maxvalue_r), FUNC(raiden2cop_device::cop_prng_maxvalue_w));
+
+ map(0x100432, 0x100433).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_data_w));
+ map(0x100434, 0x100435).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_addr_w));
+ map(0x100436, 0x100437).w(m_raiden2cop, FUNC(raiden2cop_device::cop_hitbox_baseadr_w));
+ map(0x100438, 0x100439).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_value_w));
+ map(0x10043a, 0x10043b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_mask_w));
+ map(0x10043c, 0x10043d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_trigger_w));
+ //map(0x10043e, 0x10043f).rw(m_raiden2cop, ...); /* 0 in all 68k based games, 0xffff in raiden2 / raidendx, 0x2000 in zeroteam / xsedae , it's always set up just before the 0x474 register */
+
+ map(0x100440, 0x100441).w(m_raiden2cop, FUNC(raiden2cop_device::cop_unk_param_a_w));
+ map(0x100442, 0x100443).w(m_raiden2cop, FUNC(raiden2cop_device::cop_unk_param_b_w));
+ map(0x100444, 0x100445).w(m_raiden2cop, FUNC(raiden2cop_device::cop_scale_w));
+ map(0x100446, 0x100447).w(m_raiden2cop, FUNC(raiden2cop_device::cop_rom_addr_hi_w)); // cupsoc
+ map(0x100448, 0x100449).w(m_raiden2cop, FUNC(raiden2cop_device::cop_rom_addr_lo_w)); // cupsoc
+ map(0x10044a, 0x10044b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_precmd_w)); // cupsoc
+
+ map(0x100450, 0x100451).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_hi_w));
+ map(0x100452, 0x100453).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_lo_w));
+ map(0x100454, 0x100455).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_hi_w));
+ map(0x100456, 0x100457).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_lo_w));
+ map(0x100458, 0x100459).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_param_w));
+ map(0x10045a, 0x10045b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_val_w)); //palette DMA brightness val, used by X Se Dae / Zero Team
+ map(0x10045c, 0x10045d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_mode_w)); //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5)
+
+// map(0x100470, 0x100471).rw(this, FUNC(legionna_state::cop_tile_bank_2_r), FUNC(legionna_state::cop_tile_bank_2_w));
+// map(0x100474, 0x100475).w(m_raiden2cop, FUNC(raiden2cop_device::...)); // this gets set to a pointer to spriteram (relative to start of ram) on all games excecpt raiden 2, where it isn't set
+ map(0x100476, 0x100477).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_adr_rel_w));
+ map(0x100478, 0x100479).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_src_w));
+ map(0x10047a, 0x10047b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_size_w));
+ map(0x10047c, 0x10047d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_dst_w));
+ map(0x10047e, 0x10047f).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_mode_r), FUNC(raiden2cop_device::cop_dma_mode_w));
+
+ map(0x10048c, 0x10048d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_abs_y_w)); // 68k
+ map(0x10048e, 0x10048f).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_abs_x_w)); // 68k
+
+ map(0x1004a0, 0x1004ad).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_high_r), FUNC(raiden2cop_device::cop_reg_high_w));
+ map(0x1004c0, 0x1004cd).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_low_r), FUNC(raiden2cop_device::cop_reg_low_w));
+
+// map(0x100500, 0x100505).w(this, FUNC(legionna_state::cop_cmd_w)); // ADD ME
+ map(0x100500, 0x100505).w(m_raiden2cop, FUNC(raiden2cop_device::LEGACY_cop_cmd_w)); // REMOVE ME
+
+ map(0x100580, 0x100581).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_r));
+ map(0x100582, 0x100587).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_val_r));
+
+
+ map(0x100588, 0x100589).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_stat_r));
+ map(0x100590, 0x100599).r(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_digits_r));
+
+ map(0x1005a0, 0x1005a7).r(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_r));
+
+ map(0x1005b0, 0x1005b1).r(m_raiden2cop, FUNC(raiden2cop_device::cop_status_r));
+ map(0x1005b2, 0x1005b3).r(m_raiden2cop, FUNC(raiden2cop_device::cop_dist_r));
+ map(0x1005b4, 0x1005b5).r(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_r));
+
+ map(0x1006fc, 0x1006fd).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_trigger_w));
+ map(0x1006fe, 0x1006ff).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_dma_trig_w)); // sort-DMA trigger
+}
+
+
+void legionna_state::legionna_map(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100470, 0x100471).nopw(); // toggles 0x2000 / 0x0000, tile bank on some games
+ map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x100680, 0x100681).nopw(); // irq ack?
+ map(0x100700, 0x10071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100740, 0x100741).portr("DSW1");
+ map(0x100744, 0x100745).portr("PLAYERS12");
+ map(0x100748, 0x100749).portr("PLAYERS34");
+ map(0x10074c, 0x10074d).portr("SYSTEM");
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x102000, 0x1027ff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102800, 0x103fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x104000, 0x104fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); /* palette xRRRRxGGGGxBBBBx ? */
+ map(0x105000, 0x105fff).ram().share("spriteram");
+ map(0x106000, 0x107fff).ram();
+ map(0x108000, 0x11ffff).ram(); /* main ram */
+}
+
+
+void legionna_state::heatbrl_map(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100470, 0x100471).w(this, FUNC(legionna_state::heatbrl_setgfxbank));
+ map(0x100600, 0x100601).nopw(); // irq ack?
+ map(0x100640, 0x10068f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x100740, 0x100741).portr("DSW1");
+ map(0x100744, 0x100745).portr("PLAYERS12");
+ map(0x100748, 0x100749).portr("PLAYERS34");
+ map(0x10074c, 0x10074d).portr("SYSTEM");
+ map(0x1007c0, 0x1007df).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x103000, 0x103fff).ram().share("spriteram");
+ map(0x104000, 0x104fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette");
+ map(0x108000, 0x11ffff).ram();
+}
+
+void legionna_state::godzilla_map(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100470, 0x100471).w(this, FUNC(legionna_state::denjinmk_setgfxbank));
+ map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x100680, 0x100681).nopw(); // irq ack?
+ map(0x100700, 0x10071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100740, 0x100741).portr("DSW1");
+ map(0x100744, 0x100745).portr("PLAYERS12");
+ map(0x100748, 0x100749).portr("PLAYERS34");
+ map(0x10074c, 0x10074d).portr("SYSTEM");
+ map(0x100800, 0x100fff).ram();
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x102000, 0x1027ff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102800, 0x103fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x103800, 0x103fff).ram(); // check?
+ map(0x104000, 0x104fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette");
+ map(0x105000, 0x105fff).ram().share("spriteram");
+ map(0x106000, 0x1067ff).ram();
+ map(0x106800, 0x106fff).ram();
+ map(0x107000, 0x107fff).ram(); /*Ani-DSP ram*/
+ map(0x108000, 0x11ffff).ram();
+}
+
+
+void legionna_state::denjinmk_map(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100470, 0x100471).w(this, FUNC(legionna_state::denjinmk_setgfxbank));
+ map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x100680, 0x100681).nopw(); // irq ack?
+ map(0x100700, 0x10071f).r(this, FUNC(legionna_state::denjinmk_sound_comms_r))
+ .lw8("seibu_sound_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100740, 0x100741).portr("DSW1");
+ map(0x100744, 0x100745).portr("PLAYERS12");
+ map(0x100748, 0x100749).portr("PLAYERS34");
+ map(0x10074c, 0x10074d).portr("SYSTEM");
+ map(0x10075c, 0x10075d).portr("DSW2");
+ map(0x100800, 0x100fff).ram();
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x102000, 0x1027ff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102800, 0x103fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x104000, 0x104fff).ram();
+ map(0x105000, 0x105fff).ram().share("spriteram");
+ map(0x106000, 0x107fff).ram();
+ map(0x108000, 0x11dfff).ram();
+ map(0x11e000, 0x11efff).ram();
+ map(0x11f000, 0x11ffff).ram();
+}
+
+void legionna_state::grainbow_map(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100480, 0x100487).w(this, FUNC(legionna_state::grainbow_layer_config_w)); // probably a COP feature
+ map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x100680, 0x100681).nopw(); // irq ack?
+ map(0x100700, 0x10071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100740, 0x100741).portr("DSW1");
+ map(0x100744, 0x100745).portr("PLAYERS12");
+ map(0x100748, 0x100749).portr("PLAYERS34");
+ map(0x10074c, 0x10074d).portr("SYSTEM");
+ map(0x10075c, 0x10075d).portr("DSW2");
+ map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x103000, 0x103fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette");
+ map(0x104000, 0x104fff).ram(); // .w(this, FUNC(legionna_state::paletteram_xBBBBBGGGGGRRRRR_word_w)).share("paletteram");
+ map(0x105000, 0x105fff).ram();
+ map(0x106000, 0x106fff).ram();
+ map(0x107000, 0x107fff).ram().share("spriteram");
+ map(0x108000, 0x11ffff).ram();
+}
+
+void legionna_state::cupsoc_mem(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x100680, 0x100681).nopw(); // irq ack?
+ map(0x100700, 0x10071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100740, 0x100741).portr("DSW1");
+ map(0x100744, 0x100745).portr("PLAYERS12");
+ map(0x100748, 0x100749).portr("PLAYERS34");
+ map(0x10074c, 0x10074d).portr("SYSTEM");
+ map(0x10075c, 0x10075d).portr("DSW2");
+ map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x103000, 0x103fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette");
+ map(0x104000, 0x104fff).ram();
+ map(0x105000, 0x106fff).ram();
+ map(0x107000, 0x1077ff).ram().share("spriteram");
+ map(0x107800, 0x107fff).ram(); /*Ani Dsp(?) Ram*/
+ map(0x108000, 0x10ffff).ram();
+ map(0x110000, 0x119fff).ram();
+ map(0x11a000, 0x11dfff).ram();
+ map(0x11e000, 0x11ffff).ram(); /*Stack Ram*/
+}
+
+void legionna_state::cupsocs_mem(address_map &map)
+{
+ legionna_cop_mem(map);
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1003ff).ram();
+ map(0x100600, 0x10067f).lrw16("crtc_rw",
+ [this](address_space &space, offs_t offset, u16 mem_mask) {
+ return m_crtc->read(space, offset ^ 0x20, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) {
+ m_crtc->write(space, offset ^ 0x20, data, mem_mask);
+ });
+ map(0x100680, 0x100681).nopw(); // irq ack?
+ map(0x100700, 0x100701).portr("DSW1");
+ map(0x100704, 0x100705).portr("PLAYERS12");
+ map(0x100708, 0x100709).portr("PLAYERS34");
+ map(0x10070c, 0x10070d).portr("SYSTEM");
+ map(0x10071c, 0x10071d).portr("DSW2");
+ map(0x100740, 0x10075f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+ map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data");
+ map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data");
+ map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data");
+ map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram");
+ map(0x103000, 0x103fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette");
+ map(0x104000, 0x104fff).ram();
+ map(0x105000, 0x106fff).ram();
+ map(0x107000, 0x1077ff).ram().share("spriteram");
+ map(0x107800, 0x107fff).ram(); /*Ani Dsp(?) Ram*/
+ map(0x108000, 0x10ffff).ram();
+ map(0x110000, 0x119fff).ram();
+ map(0x11a000, 0x11dfff).ram();
+ map(0x11e000, 0x11ffff).ram(); /*Stack Ram*/
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/leland.cpp b/src/mame/drivers/leland.cpp
index 66b1bcfd95b..5c961ae880e 100644
--- a/src/mame/drivers/leland.cpp
+++ b/src/mame/drivers/leland.cpp
@@ -82,49 +82,54 @@
*
*************************************/
-ADDRESS_MAP_START(leland_state::master_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(leland_battery_ram_w) AM_SHARE("battery")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(leland_gated_paletteram_r, leland_gated_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_master_video_addr_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(leland_state::master_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(leland_master_alt_bankswitch_w)
- AM_RANGE(0xfd, 0xff) AM_READWRITE(leland_master_analog_key_r, leland_master_analog_key_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(leland_state::master_redline_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(leland_master_alt_bankswitch_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("custom", leland_80186_sound_device, leland_80186_response_r, leland_80186_command_lo_w)
- AM_RANGE(0xf4, 0xf4) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_hi_w)
- AM_RANGE(0xfd, 0xff) AM_READWRITE(leland_master_analog_key_r, leland_master_analog_key_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::master_map_program_2)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(ataxx_battery_ram_w) AM_SHARE("battery")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(ataxx_paletteram_and_misc_r, ataxx_paletteram_and_misc_w) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::master_map_io_2)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("custom", leland_80186_sound_device, leland_80186_response_r)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_hi_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_lo_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("custom", leland_80186_sound_device, ataxx_80186_control_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(ataxx_eeprom_r, ataxx_eeprom_w)
- AM_RANGE(0xd0, 0xef) AM_READWRITE(ataxx_mvram_port_r, ataxx_mvram_port_w)
- AM_RANGE(0xf0, 0xff) AM_READWRITE(ataxx_master_input_r, ataxx_master_output_w)
-ADDRESS_MAP_END
+void leland_state::master_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::leland_battery_ram_w)).share("battery");
+ map(0xe000, 0xefff).ram().share("mainram");
+ map(0xf000, 0xf3ff).rw(this, FUNC(leland_state::leland_gated_paletteram_r), FUNC(leland_state::leland_gated_paletteram_w)).share("palette");
+ map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_master_video_addr_w));
+}
+
+void leland_state::master_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(leland_state::leland_master_alt_bankswitch_w));
+ map(0xfd, 0xff).rw(this, FUNC(leland_state::leland_master_analog_key_r), FUNC(leland_state::leland_master_analog_key_w));
+}
+
+void leland_state::master_redline_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(leland_state::leland_master_alt_bankswitch_w));
+ map(0xf2, 0xf2).rw(m_sound, FUNC(leland_80186_sound_device::leland_80186_response_r), FUNC(leland_80186_sound_device::leland_80186_command_lo_w));
+ map(0xf4, 0xf4).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_hi_w));
+ map(0xfd, 0xff).rw(this, FUNC(leland_state::leland_master_analog_key_r), FUNC(leland_state::leland_master_analog_key_w));
+}
+
+
+void leland_state::master_map_program_2(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::ataxx_battery_ram_w)).share("battery");
+ map(0xe000, 0xf7ff).ram().share("mainram");
+ map(0xf800, 0xffff).rw(this, FUNC(leland_state::ataxx_paletteram_and_misc_r), FUNC(leland_state::ataxx_paletteram_and_misc_w)).share("palette");
+}
+
+
+void leland_state::master_map_io_2(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x04, 0x04).r(m_sound, FUNC(leland_80186_sound_device::leland_80186_response_r));
+ map(0x05, 0x05).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_hi_w));
+ map(0x06, 0x06).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_lo_w));
+ map(0x0c, 0x0c).w(m_sound, FUNC(leland_80186_sound_device::ataxx_80186_control_w));
+ map(0x20, 0x20).rw(this, FUNC(leland_state::ataxx_eeprom_r), FUNC(leland_state::ataxx_eeprom_w));
+ map(0xd0, 0xef).rw(this, FUNC(leland_state::ataxx_mvram_port_r), FUNC(leland_state::ataxx_mvram_port_w));
+ map(0xf0, 0xff).rw(this, FUNC(leland_state::ataxx_master_input_r), FUNC(leland_state::ataxx_master_output_w));
+}
@@ -134,48 +139,53 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(leland_state::slave_small_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0xdfff) AM_ROMBANK("bank3")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_slave_video_addr_w)
- AM_RANGE(0xf802, 0xf802) AM_READ(leland_raster_r)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(leland_slave_small_banksw_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_large_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank3")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(leland_slave_large_banksw_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_slave_video_addr_w)
- AM_RANGE(0xf802, 0xf802) AM_READ(leland_raster_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_READWRITE(leland_svram_port_r, leland_svram_port_w)
- AM_RANGE(0x40, 0x5f) AM_READWRITE(leland_svram_port_r, leland_svram_port_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank3")
- AM_RANGE(0xa000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xfffc, 0xfffd) AM_WRITE(leland_slave_video_addr_w)
- AM_RANGE(0xfffe, 0xfffe) AM_READ(leland_raster_r)
- AM_RANGE(0xffff, 0xffff) AM_WRITE(ataxx_slave_banksw_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_map_io_2)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x60, 0x7f) AM_READWRITE(ataxx_svram_port_r, ataxx_svram_port_w)
-ADDRESS_MAP_END
+void leland_state::slave_small_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0xdfff).bankr("bank3");
+ map(0xe000, 0xefff).ram();
+ map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w));
+ map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r));
+ map(0xf803, 0xf803).w(this, FUNC(leland_state::leland_slave_small_banksw_w));
+}
+
+
+void leland_state::slave_large_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xc000).w(this, FUNC(leland_state::leland_slave_large_banksw_w));
+ map(0xe000, 0xefff).ram();
+ map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w));
+ map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r));
+}
+
+
+void leland_state::slave_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x1f).rw(this, FUNC(leland_state::leland_svram_port_r), FUNC(leland_state::leland_svram_port_w));
+ map(0x40, 0x5f).rw(this, FUNC(leland_state::leland_svram_port_r), FUNC(leland_state::leland_svram_port_w));
+}
+
+
+void leland_state::slave_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x9fff).bankr("bank3");
+ map(0xa000, 0xdfff).rom();
+ map(0xe000, 0xefff).ram();
+ map(0xfffc, 0xfffd).w(this, FUNC(leland_state::leland_slave_video_addr_w));
+ map(0xfffe, 0xfffe).r(this, FUNC(leland_state::leland_raster_r));
+ map(0xffff, 0xffff).w(this, FUNC(leland_state::ataxx_slave_banksw_w));
+}
+
+
+void leland_state::slave_map_io_2(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x60, 0x7f).rw(this, FUNC(leland_state::ataxx_svram_port_r), FUNC(leland_state::ataxx_svram_port_w));
+}
/*************************************
*
@@ -183,22 +193,26 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(leland_state::leland_80186_map_program)
- AM_RANGE(0x00000, 0x03fff) AM_MIRROR(0x1c000) AM_RAM
- AM_RANGE(0x20000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void leland_state::leland_80186_map_program(address_map &map)
+{
+ map(0x00000, 0x03fff).mirror(0x1c000).ram();
+ map(0x20000, 0xfffff).rom();
+}
-ADDRESS_MAP_START(leland_state::ataxx_80186_map_io)
-ADDRESS_MAP_END
+void leland_state::ataxx_80186_map_io(address_map &map)
+{
+}
-ADDRESS_MAP_START(leland_state::redline_80186_map_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVWRITE("custom", redline_80186_sound_device, redline_dac_w)
-ADDRESS_MAP_END
+void leland_state::redline_80186_map_io(address_map &map)
+{
+ map(0x0000, 0xffff).w("custom", FUNC(redline_80186_sound_device::redline_dac_w));
+}
-ADDRESS_MAP_START(leland_state::leland_80186_map_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVWRITE("custom", leland_80186_sound_device, dac_w)
-ADDRESS_MAP_END
+void leland_state::leland_80186_map_io(address_map &map)
+{
+ map(0x0000, 0xffff).w(m_sound, FUNC(leland_80186_sound_device::dac_w));
+}
/************************************************************************
diff --git a/src/mame/drivers/lemmings.cpp b/src/mame/drivers/lemmings.cpp
index bb9ca81113c..eea3661a221 100644
--- a/src/mame/drivers/lemmings.cpp
+++ b/src/mame/drivers/lemmings.cpp
@@ -68,32 +68,34 @@ WRITE16_MEMBER( lemmings_state::lem_protection_region_0_146_w )
/******************************************************************************/
-ADDRESS_MAP_START(lemmings_state::lemmings_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x160000, 0x160fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x170000, 0x17000f) AM_RAM_WRITE(lemmings_control_w) AM_SHARE("control_data")
- AM_RANGE(0x190000, 0x19000f) AM_READ(lemmings_trackball_r)
- AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(lem_protection_region_0_146_r,lem_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */
- AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* 1 written once a frame */
- AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) /* 1 written once a frame */
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(lemmings_vram_w) AM_SHARE("vram_data")
- AM_RANGE(0x202000, 0x202fff) AM_RAM
- AM_RANGE(0x300000, 0x37ffff) AM_RAM_WRITE(lemmings_pixel_0_w) AM_SHARE("pixel_0_data")
- AM_RANGE(0x380000, 0x39ffff) AM_RAM_WRITE(lemmings_pixel_1_w) AM_SHARE("pixel_1_data")
-ADDRESS_MAP_END
+void lemmings_state::lemmings_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x140000, 0x1407ff).ram().share("spriteram2");
+ map(0x160000, 0x160fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x170000, 0x17000f).ram().w(this, FUNC(lemmings_state::lemmings_control_w)).share("control_data");
+ map(0x190000, 0x19000f).r(this, FUNC(lemmings_state::lemmings_trackball_r));
+ map(0x1a0000, 0x1a3fff).rw(this, FUNC(lemmings_state::lem_protection_region_0_146_r), FUNC(lemmings_state::lem_protection_region_0_146_w)).share("prot16ram"); /* Protection device */
+ map(0x1c0000, 0x1c0001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* 1 written once a frame */
+ map(0x1e0000, 0x1e0001).w(m_spriteram2, FUNC(buffered_spriteram16_device::write)); /* 1 written once a frame */
+ map(0x200000, 0x201fff).ram().w(this, FUNC(lemmings_state::lemmings_vram_w)).share("vram_data");
+ map(0x202000, 0x202fff).ram();
+ map(0x300000, 0x37ffff).ram().w(this, FUNC(lemmings_state::lemmings_pixel_0_w)).share("pixel_0_data");
+ map(0x380000, 0x39ffff).ram().w(this, FUNC(lemmings_state::lemmings_pixel_1_w)).share("pixel_1_data");
+}
/******************************************************************************/
-ADDRESS_MAP_START(lemmings_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x1800, 0x1800) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) AM_WRITENOP // writes an extra irq ack?
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void lemmings_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1800, 0x1800).r(m_deco146, FUNC(deco_146_base_device::soundlatch_r)).nopw(); // writes an extra irq ack?
+ map(0x8000, 0xffff).rom();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp
index d691ffbb061..b1ffd2da2bd 100644
--- a/src/mame/drivers/lethal.cpp
+++ b/src/mame/drivers/lethal.cpp
@@ -340,52 +340,55 @@ READ8_MEMBER(lethal_state::gunsaux_r)
return res;
}
-ADDRESS_MAP_START(lethal_state::le_main)
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1")
- AM_RANGE(0x2000, 0x3fff) AM_RAM // work RAM
- AM_RANGE(0x4000, 0x7fff) AM_DEVICE("bank4000", address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0x43ff) AM_UNMAP // first 0x400 bytes of palette RAM are inaccessible
- AM_RANGE(0x4000, 0x403f) AM_DEVWRITE("k056832", k056832_device, write)
- AM_RANGE(0x4040, 0x404f) AM_DEVWRITE("k056832", k056832_device, b_w)
- AM_RANGE(0x4080, 0x4080) AM_READNOP // watchdog
- AM_RANGE(0x4090, 0x4090) AM_READWRITE(sound_irq_r, sound_irq_w)
- AM_RANGE(0x40a0, 0x40a0) AM_READNOP
- AM_RANGE(0x40c4, 0x40c4) AM_WRITE(control2_w)
- AM_RANGE(0x40c8, 0x40d0) AM_WRITE(lethalen_palette_control) // PCU1-PCU3 on the schematics
- AM_RANGE(0x40d4, 0x40d7) AM_READ(guns_r)
- AM_RANGE(0x40d8, 0x40d8) AM_READ_PORT("DSW")
- AM_RANGE(0x40d9, 0x40d9) AM_READ_PORT("INPUTS")
- AM_RANGE(0x40db, 0x40db) AM_READ(gunsaux_r) // top X bit of guns
- AM_RANGE(0x40dc, 0x40dc) AM_WRITE(le_bankswitch_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lethal_state::bank4000_map)
+void lethal_state::le_main(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bank1");
+ map(0x2000, 0x3fff).ram(); // work RAM
+ map(0x4000, 0x7fff).m(m_bank4000, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0x43ff).unmaprw(); // first 0x400 bytes of palette RAM are inaccessible
+ map(0x4000, 0x403f).w(m_k056832, FUNC(k056832_device::write));
+ map(0x4040, 0x404f).w(m_k056832, FUNC(k056832_device::b_w));
+ map(0x4080, 0x4080).nopr(); // watchdog
+ map(0x4090, 0x4090).rw(this, FUNC(lethal_state::sound_irq_r), FUNC(lethal_state::sound_irq_w));
+ map(0x40a0, 0x40a0).nopr();
+ map(0x40c4, 0x40c4).w(this, FUNC(lethal_state::control2_w));
+ map(0x40c8, 0x40d0).w(this, FUNC(lethal_state::lethalen_palette_control)); // PCU1-PCU3 on the schematics
+ map(0x40d4, 0x40d7).r(this, FUNC(lethal_state::guns_r));
+ map(0x40d8, 0x40d8).portr("DSW");
+ map(0x40d9, 0x40d9).portr("INPUTS");
+ map(0x40db, 0x40db).r(this, FUNC(lethal_state::gunsaux_r)); // top X bit of guns
+ map(0x40dc, 0x40dc).w(this, FUNC(lethal_state::le_bankswitch_w));
+ map(0x8000, 0xffff).rom().region("maincpu", 0x38000);
+}
+
+void lethal_state::bank4000_map(address_map &map)
+{
// VRD = 0 or 1, CBNK = 0
- AM_RANGE(0x0840, 0x084f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w)
- AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k054000", k054000_device, read, write)
- AM_RANGE(0x08c0, 0x08cf) AM_DEVICE("k054321", k054321_device, main_map)
- AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w)
+ map(0x0840, 0x084f).mirror(0x8000).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w));
+ map(0x0880, 0x089f).mirror(0x8000).rw("k054000", FUNC(k054000_device::read), FUNC(k054000_device::write));
+ map(0x08c0, 0x08cf).m(m_k054321, FUNC(k054321_device::main_map));
+ map(0x1000, 0x17ff).mirror(0x8000).rw(m_k053244, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w));
// VRD = 0, CBNK = 0
- AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_lo_r, ram_code_lo_w)
- AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_hi_r, ram_code_hi_w)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_lo_r, ram_attr_lo_w)
- AM_RANGE(0x3800, 0x3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_hi_r, ram_attr_hi_w)
+ map(0x2000, 0x27ff).rw(m_k056832, FUNC(k056832_device::ram_code_lo_r), FUNC(k056832_device::ram_code_lo_w));
+ map(0x2800, 0x2fff).rw(m_k056832, FUNC(k056832_device::ram_code_hi_r), FUNC(k056832_device::ram_code_hi_w));
+ map(0x3000, 0x37ff).rw(m_k056832, FUNC(k056832_device::ram_attr_lo_r), FUNC(k056832_device::ram_attr_lo_w));
+ map(0x3800, 0x3fff).rw(m_k056832, FUNC(k056832_device::ram_attr_hi_r), FUNC(k056832_device::ram_attr_hi_w));
// VRD = 1, CBNK = 0 or 1
- AM_RANGE(0xa000, 0xbfff) AM_MIRROR(0x4000) AM_UNMAP // AM_DEVREAD("k056832", k056832_device, rom_byte_r)
+ map(0xa000, 0xbfff).mirror(0x4000).unmaprw(); // AM_DEVREAD("k056832", k056832_device, rom_byte_r)
// CBNK = 1; partially overlaid when VRD = 1
- AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lethal_state::le_sound)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xfc00, 0xfc03) AM_DEVICE("k054321", k054321_device, sound_map)
-ADDRESS_MAP_END
+ map(0x4000, 0x7fff).mirror(0x8000).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void lethal_state::le_sound(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xfa2f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xfc00, 0xfc03).m(m_k054321, FUNC(k054321_device::sound_map));
+}
static INPUT_PORTS_START( lethalen )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp
index acbb0897c1c..ca0ee5d7ff1 100644
--- a/src/mame/drivers/lethalj.cpp
+++ b/src/mame/drivers/lethalj.cpp
@@ -209,22 +209,23 @@ WRITE16_MEMBER(lethalj_state::cclownz_control_w)
*
*************************************/
-ADDRESS_MAP_START(lethalj_state::lethalj_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM
- AM_RANGE(0x04000000, 0x0400000f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x04000010, 0x0400001f) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x04100000, 0x0410000f) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x00ff)
+void lethalj_state::lethalj_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram();
+ map(0x04000000, 0x0400000f).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x04000010, 0x0400001f).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x04100000, 0x0410000f).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
// AM_RANGE(0x04100010, 0x0410001f) AM_READNOP /* read but never examined */
- AM_RANGE(0x04200000, 0x0420001f) AM_WRITENOP /* clocks bits through here */
- AM_RANGE(0x04300000, 0x0430007f) AM_READ(lethalj_gun_r)
- AM_RANGE(0x04400000, 0x0440000f) AM_WRITENOP /* clocks bits through here */
- AM_RANGE(0x04500010, 0x0450001f) AM_READ_PORT("IN0")
- AM_RANGE(0x04600000, 0x0460000f) AM_READ_PORT("IN1")
- AM_RANGE(0x04700000, 0x0470007f) AM_WRITE(lethalj_blitter_w)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code, one of many. */
- AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+ map(0x04200000, 0x0420001f).nopw(); /* clocks bits through here */
+ map(0x04300000, 0x0430007f).r(this, FUNC(lethalj_state::lethalj_gun_r));
+ map(0x04400000, 0x0440000f).nopw(); /* clocks bits through here */
+ map(0x04500010, 0x0450001f).portr("IN0");
+ map(0x04600000, 0x0460000f).portr("IN1");
+ map(0x04700000, 0x0470007f).w(this, FUNC(lethalj_state::lethalj_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("user1", 0);
+}
diff --git a/src/mame/drivers/lft.cpp b/src/mame/drivers/lft.cpp
index a8592878a18..d76a6f4967e 100644
--- a/src/mame/drivers/lft.cpp
+++ b/src/mame/drivers/lft.cpp
@@ -37,22 +37,24 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-ADDRESS_MAP_START(lft_state::lft_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x5ffff) AM_RAM
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lft_state::lft_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void lft_state::lft_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x5ffff).ram();
+ map(0xfc000, 0xfffff).rom().region("roms", 0);
+}
+
+void lft_state::lft_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// screen 1
- AM_RANGE(0x00, 0x01) AM_READNOP
- AM_RANGE(0x04, 0x05) AM_READWRITE(keyin_r,term_w)
+ map(0x00, 0x01).nopr();
+ map(0x04, 0x05).rw(this, FUNC(lft_state::keyin_r), FUNC(lft_state::term_w));
// screen 2
- AM_RANGE(0x02, 0x03) AM_READNOP
- AM_RANGE(0x06, 0x07) AM_WRITENOP
-ADDRESS_MAP_END
+ map(0x02, 0x03).nopr();
+ map(0x06, 0x07).nopw();
+}
/* Input ports */
diff --git a/src/mame/drivers/lg-dvd.cpp b/src/mame/drivers/lg-dvd.cpp
index 12ad3ad8799..2ca76ab2bfc 100644
--- a/src/mame/drivers/lg-dvd.cpp
+++ b/src/mame/drivers/lg-dvd.cpp
@@ -26,9 +26,10 @@ protected:
static INPUT_PORTS_START( lg )
INPUT_PORTS_END
-ADDRESS_MAP_START(lg_dvd_state::lg_dvd_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void lg_dvd_state::lg_dvd_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+}
MACHINE_CONFIG_START(lg_dvd_state::lg)
MCFG_CPU_ADD( "maincpu", I80C52, XTAL(16'000'000) )
diff --git a/src/mame/drivers/lgp.cpp b/src/mame/drivers/lgp.cpp
index 632164a3161..5f5781afb0e 100644
--- a/src/mame/drivers/lgp.cpp
+++ b/src/mame/drivers/lgp.cpp
@@ -159,40 +159,44 @@ WRITE8_MEMBER(lgp_state::ldp_write)
/* PROGRAM MAPS */
-ADDRESS_MAP_START(lgp_state::main_program_map)
- AM_RANGE(0x0000,0x7fff) AM_ROM
- AM_RANGE(0xe000,0xe3ff) AM_RAM AM_SHARE("tile_ram")
- AM_RANGE(0xe400,0xe7ff) AM_RAM AM_SHARE("tile_ctrl_ram")
+void lgp_state::main_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xe3ff).ram().share("tile_ram");
+ map(0xe400, 0xe7ff).ram().share("tile_ctrl_ram");
// AM_RANGE(0xef00,0xef00) AM_READ_PORT("IN_TEST")
- AM_RANGE(0xef80,0xef80) AM_READWRITE(ldp_read,ldp_write)
- AM_RANGE(0xefb8,0xefb8) AM_READNOP // watchdog
- AM_RANGE(0xefc0,0xefc0) AM_READ_PORT("DSWA") /* Not tested */
- AM_RANGE(0xefc8,0xefc8) AM_READ_PORT("DSWB")
- AM_RANGE(0xefd0,0xefd0) AM_READ_PORT("DSWC")
- AM_RANGE(0xefd8,0xefd8) AM_READ_PORT("IN0")
- AM_RANGE(0xefe0,0xefe0) AM_READ_PORT("IN1")
- AM_RANGE(0xf000,0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lgp_state::sound_program_map)
- AM_RANGE(0x0000,0x3fff) AM_ROM
- AM_RANGE(0x8000,0x83ff) AM_RAM
- AM_RANGE(0x8400,0x8407) AM_RAM /* Needs handler! Communications? */
- AM_RANGE(0x8800,0x8803) AM_RAM /* Needs handler! Communications? */
-ADDRESS_MAP_END
+ map(0xef80, 0xef80).rw(this, FUNC(lgp_state::ldp_read), FUNC(lgp_state::ldp_write));
+ map(0xefb8, 0xefb8).nopr(); // watchdog
+ map(0xefc0, 0xefc0).portr("DSWA"); /* Not tested */
+ map(0xefc8, 0xefc8).portr("DSWB");
+ map(0xefd0, 0xefd0).portr("DSWC");
+ map(0xefd8, 0xefd8).portr("IN0");
+ map(0xefe0, 0xefe0).portr("IN1");
+ map(0xf000, 0xffff).ram();
+}
+
+void lgp_state::sound_program_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x8400, 0x8407).ram(); /* Needs handler! Communications? */
+ map(0x8800, 0x8803).ram(); /* Needs handler! Communications? */
+}
/* IO MAPS */
-ADDRESS_MAP_START(lgp_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void lgp_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0xfd,0xfd) AM_READ_PORT("IN_TEST")
// AM_RANGE(0xfe,0xfe) AM_READ_PORT("IN_TEST")
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(lgp_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void lgp_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+}
/* PORTS */
diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp
index 2c144667a94..28221cd9bde 100644
--- a/src/mame/drivers/liberate.cpp
+++ b/src/mame/drivers/liberate.cpp
@@ -240,77 +240,84 @@ WRITE8_MEMBER(liberate_state::prosport_charram_w)
*
*************************************/
-ADDRESS_MAP_START(liberate_state::prosport_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x0200, 0x021f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(prosport_bg_vram_w) AM_SHARE("bg_vram")
- AM_RANGE(0x0800, 0x1fff) AM_READWRITE(prosport_charram_r,prosport_charram_w) //0x1e00-0x1fff isn't charram!
- AM_RANGE(0x2400, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x800f) AM_WRITE(prosport_io_w)
- AM_RANGE(0x8000, 0x800f) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::liberate_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
- AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r)
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x800f) AM_WRITE(deco16_io_w)
- AM_RANGE(0x8000, 0x800f) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::decrypted_opcodes_map)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::prosoccr_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
- AM_RANGE(0x4000, 0x7fff) AM_READ(prosoccr_bank_r)
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x800) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram")
- AM_RANGE(0x8000, 0x97ff) AM_READWRITE(prosoccr_charram_r, prosoccr_charram_w)
- AM_RANGE(0x9800, 0x9800) AM_WRITE(prosoccr_char_bank_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::deco16_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(deco16_bank_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("TILT")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::prosoccr_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(prosoccr_io_bank_w)
+void liberate_state::prosport_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x2000).ram();
+ map(0x0200, 0x021f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x0400, 0x07ff).ram().w(this, FUNC(liberate_state::prosport_bg_vram_w)).share("bg_vram");
+ map(0x0800, 0x1fff).rw(this, FUNC(liberate_state::prosport_charram_r), FUNC(liberate_state::prosport_charram_w)); //0x1e00-0x1fff isn't charram!
+ map(0x2400, 0x2fff).ram();
+ map(0x3000, 0x33ff).ram().w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x3400, 0x37ff).ram().w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram().share("spriteram");
+ map(0x4000, 0xffff).rom();
+ map(0x8000, 0x800f).w(this, FUNC(liberate_state::prosport_io_w));
+ map(0x8000, 0x800f).bankr("bank1");
+}
+
+void liberate_state::liberate_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x3fff).rom(); /* Mirror of main rom */
+ map(0x4000, 0x7fff).r(this, FUNC(liberate_state::deco16_bank_r));
+ map(0x4000, 0x43ff).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x4800, 0x4fff).writeonly().share("spriteram");
+ map(0x6200, 0x67ff).writeonly().share("scratchram");
+ map(0x8000, 0xffff).rom();
+ map(0x8000, 0x800f).w(this, FUNC(liberate_state::deco16_io_w));
+ map(0x8000, 0x800f).bankr("bank1");
+}
+
+void liberate_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x8000, 0xffff).rom().share("decrypted_opcodes");
+}
+
+void liberate_state::prosoccr_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x3fff).rom(); /* Mirror of main rom */
+ map(0x4000, 0x7fff).r(this, FUNC(liberate_state::prosoccr_bank_r));
+ map(0x4000, 0x43ff).mirror(0x800).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).writeonly().share("spriteram");
+ map(0x6200, 0x67ff).writeonly().share("scratchram");
+ map(0x8000, 0x97ff).rw(this, FUNC(liberate_state::prosoccr_charram_r), FUNC(liberate_state::prosoccr_charram_w));
+ map(0x9800, 0x9800).w(this, FUNC(liberate_state::prosoccr_char_bank_w));
+ map(0xa000, 0xffff).rom();
+}
+
+void liberate_state::deco16_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(liberate_state::deco16_bank_w));
+ map(0x01, 0x01).portr("TILT");
+}
+
+void liberate_state::prosoccr_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(liberate_state::prosoccr_io_bank_w));
//AM_RANGE(0x01, 0x01) AM_READ_PORT("TILT")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::liberatb_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x00fe, 0x00fe) AM_READ_PORT("IN0")
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
- AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r)
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_WRITE(deco16_io_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN1")
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("IN2")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN3")
- AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW1")
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+}
+
+void liberate_state::liberatb_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x00fe, 0x00fe).portr("IN0");
+ map(0x1000, 0x3fff).rom(); /* Mirror of main rom */
+ map(0x4000, 0x7fff).r(this, FUNC(liberate_state::deco16_bank_r));
+ map(0x4000, 0x43ff).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x4800, 0x4fff).writeonly().share("spriteram");
+ map(0x6200, 0x67ff).writeonly().share("scratchram");
+ map(0x8000, 0xffff).rom();
+ map(0xf000, 0xf00f).w(this, FUNC(liberate_state::deco16_io_w));
+ map(0xf000, 0xf000).portr("IN1");
+ map(0xf001, 0xf001).portr("IN2");
+ map(0xf002, 0xf002).portr("IN3");
+ map(0xf003, 0xf003).portr("DSW1");
+ map(0xf004, 0xf004).portr("DSW2");
+}
/*************************************
*
@@ -318,27 +325,29 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(liberate_state::prosoccr_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8912_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8912_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc000) AM_WRITENOP //irq ack
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::liberate_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("ay1", ay8912_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("ay2", ay8912_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void liberate_state::prosoccr_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x2000, 0x2000).w("ay1", FUNC(ay8912_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8912_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc000).nopw(); //irq ack
+ map(0xe000, 0xffff).rom();
+}
+
+void liberate_state::liberate_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x1000, 0x1000).nopw();
+ map(0x3000, 0x3000).w("ay1", FUNC(ay8912_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w));
+ map(0x7000, 0x7000).w("ay2", FUNC(ay8912_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w));
+ map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xffff).rom();
+}
/*************************************
*
diff --git a/src/mame/drivers/liberatr.cpp b/src/mame/drivers/liberatr.cpp
index 690ad7267b6..7d0752658f2 100644
--- a/src/mame/drivers/liberatr.cpp
+++ b/src/mame/drivers/liberatr.cpp
@@ -283,27 +283,28 @@ WRITE8_MEMBER( liberatr_state::earom_control_w )
*
*************************************/
-ADDRESS_MAP_START(liberatr_state::liberatr_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(bitmap_w) AM_SHARE("bitmapram") /* overlapping for my convenience */
- AM_RANGE(0x0000, 0x0000) AM_RAM AM_SHARE("xcoord")
- AM_RANGE(0x0001, 0x0001) AM_RAM AM_SHARE("ycoord")
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(bitmap_xy_r, bitmap_xy_w)
- AM_RANGE(0x4000, 0x403f) AM_READ(earom_r)
- AM_RANGE(0x5000, 0x5000) AM_READ(port0_r)
- AM_RANGE(0x5001, 0x5001) AM_READ_PORT("IN1")
- AM_RANGE(0x6000, 0x600f) AM_WRITEONLY AM_SHARE("base_ram")
- AM_RANGE(0x6200, 0x621f) AM_WRITEONLY AM_SHARE("colorram")
- AM_RANGE(0x6400, 0x6400) AM_WRITENOP
- AM_RANGE(0x6600, 0x6600) AM_WRITE(earom_control_w)
- AM_RANGE(0x6800, 0x6800) AM_WRITEONLY AM_SHARE("planet_frame")
- AM_RANGE(0x6a00, 0x6a00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6c00, 0x6c07) AM_WRITE(output_latch_w)
- AM_RANGE(0x6e00, 0x6e3f) AM_WRITE(earom_w)
- AM_RANGE(0x7000, 0x701f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x7800, 0x781f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x8000, 0xefff) AM_ROM
- AM_RANGE(0xfffa, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void liberatr_state::liberatr_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(liberatr_state::bitmap_w)).share("bitmapram"); /* overlapping for my convenience */
+ map(0x0000, 0x0000).ram().share("xcoord");
+ map(0x0001, 0x0001).ram().share("ycoord");
+ map(0x0002, 0x0002).rw(this, FUNC(liberatr_state::bitmap_xy_r), FUNC(liberatr_state::bitmap_xy_w));
+ map(0x4000, 0x403f).r(this, FUNC(liberatr_state::earom_r));
+ map(0x5000, 0x5000).r(this, FUNC(liberatr_state::port0_r));
+ map(0x5001, 0x5001).portr("IN1");
+ map(0x6000, 0x600f).writeonly().share("base_ram");
+ map(0x6200, 0x621f).writeonly().share("colorram");
+ map(0x6400, 0x6400).nopw();
+ map(0x6600, 0x6600).w(this, FUNC(liberatr_state::earom_control_w));
+ map(0x6800, 0x6800).writeonly().share("planet_frame");
+ map(0x6a00, 0x6a00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6c00, 0x6c07).w(this, FUNC(liberatr_state::output_latch_w));
+ map(0x6e00, 0x6e3f).w(this, FUNC(liberatr_state::earom_w));
+ map(0x7000, 0x701f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x7800, 0x781f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x8000, 0xefff).rom();
+ map(0xfffa, 0xffff).rom();
+}
@@ -313,28 +314,29 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(liberatr_state::liberat2_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(bitmap_w) AM_SHARE("bitmapram") /* overlapping for my convenience */
- AM_RANGE(0x0000, 0x0000) AM_RAM AM_SHARE("xcoord")
- AM_RANGE(0x0001, 0x0001) AM_RAM AM_SHARE("ycoord")
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(bitmap_xy_r, bitmap_xy_w)
- AM_RANGE(0x4000, 0x4000) AM_READ(port0_r)
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1")
- AM_RANGE(0x4000, 0x400f) AM_WRITEONLY AM_SHARE("base_ram")
- AM_RANGE(0x4200, 0x421f) AM_WRITEONLY AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x4400) AM_WRITENOP
- AM_RANGE(0x4600, 0x4600) AM_WRITE(earom_control_w)
- AM_RANGE(0x4800, 0x483f) AM_READ(earom_r)
- AM_RANGE(0x4800, 0x4800) AM_WRITEONLY AM_SHARE("planet_frame")
- AM_RANGE(0x4a00, 0x4a00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x4c00, 0x4c07) AM_WRITE(output_latch_w)
- AM_RANGE(0x4e00, 0x4e3f) AM_WRITE(earom_w)
- AM_RANGE(0x5000, 0x501f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x5800, 0x581f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
+void liberatr_state::liberat2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().w(this, FUNC(liberatr_state::bitmap_w)).share("bitmapram"); /* overlapping for my convenience */
+ map(0x0000, 0x0000).ram().share("xcoord");
+ map(0x0001, 0x0001).ram().share("ycoord");
+ map(0x0002, 0x0002).rw(this, FUNC(liberatr_state::bitmap_xy_r), FUNC(liberatr_state::bitmap_xy_w));
+ map(0x4000, 0x4000).r(this, FUNC(liberatr_state::port0_r));
+ map(0x4001, 0x4001).portr("IN1");
+ map(0x4000, 0x400f).writeonly().share("base_ram");
+ map(0x4200, 0x421f).writeonly().share("colorram");
+ map(0x4400, 0x4400).nopw();
+ map(0x4600, 0x4600).w(this, FUNC(liberatr_state::earom_control_w));
+ map(0x4800, 0x483f).r(this, FUNC(liberatr_state::earom_r));
+ map(0x4800, 0x4800).writeonly().share("planet_frame");
+ map(0x4a00, 0x4a00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x4c00, 0x4c07).w(this, FUNC(liberatr_state::output_latch_w));
+ map(0x4e00, 0x4e3f).w(this, FUNC(liberatr_state::earom_w));
+ map(0x5000, 0x501f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x5800, 0x581f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
//AM_RANGE(0x6000, 0x601f) AM_WRITE(pokey1_w) /* bug ??? */
- AM_RANGE(0x6000, 0xbfff) AM_ROM
- AM_RANGE(0xfffa, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x6000, 0xbfff).rom();
+ map(0xfffa, 0xffff).rom();
+}
diff --git a/src/mame/drivers/limenko.cpp b/src/mame/drivers/limenko.cpp
index 81780586c7c..f0433fd6f39 100644
--- a/src/mame/drivers/limenko.cpp
+++ b/src/mame/drivers/limenko.cpp
@@ -198,54 +198,58 @@ WRITE8_MEMBER(limenko_state::qs1000_p3_w)
MEMORY MAPS
*****************************************************************************************************/
-ADDRESS_MAP_START(limenko_state::limenko_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("maindata",0)
- AM_RANGE(0x80000000, 0x80007fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x80008000, 0x8000ffff) AM_RAM_WRITE(md_videoram_w) AM_SHARE("md_videoram")
- AM_RANGE(0x80010000, 0x80017fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x80018000, 0x80019fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8001c000, 0x8001dfff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x8001e000, 0x8001ebff) AM_RAM // ? not used
- AM_RANGE(0x8001ffec, 0x8001ffff) AM_RAM AM_SHARE("videoreg")
- AM_RANGE(0x8003e000, 0x8003e003) AM_WRITE(spriteram_buffer_w)
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(limenko_state::limenko_io_map)
- AM_RANGE(0x0000, 0x0003) AM_READ_PORT("IN0")
- AM_RANGE(0x0800, 0x0803) AM_READ_PORT("IN1")
- AM_RANGE(0x1000, 0x1003) AM_READ_PORT("IN2")
- AM_RANGE(0x4000, 0x4003) AM_WRITE(limenko_coincounter_w)
- AM_RANGE(0x4800, 0x4803) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x5000, 0x5003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000).cswidth(32)
-ADDRESS_MAP_END
+void limenko_state::limenko_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("mainram");
+ map(0x40000000, 0x403fffff).rom().region("maindata", 0);
+ map(0x80000000, 0x80007fff).ram().w(this, FUNC(limenko_state::fg_videoram_w)).share("fg_videoram");
+ map(0x80008000, 0x8000ffff).ram().w(this, FUNC(limenko_state::md_videoram_w)).share("md_videoram");
+ map(0x80010000, 0x80017fff).ram().w(this, FUNC(limenko_state::bg_videoram_w)).share("bg_videoram");
+ map(0x80018000, 0x80019fff).ram().share("spriteram");
+ map(0x8001c000, 0x8001dfff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x8001e000, 0x8001ebff).ram(); // ? not used
+ map(0x8001ffec, 0x8001ffff).ram().share("videoreg");
+ map(0x8003e000, 0x8003e003).w(this, FUNC(limenko_state::spriteram_buffer_w));
+ map(0xffe00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void limenko_state::limenko_io_map(address_map &map)
+{
+ map(0x0000, 0x0003).portr("IN0");
+ map(0x0800, 0x0803).portr("IN1");
+ map(0x1000, 0x1003).portr("IN2");
+ map(0x4000, 0x4003).w(this, FUNC(limenko_state::limenko_coincounter_w));
+ map(0x4800, 0x4803).portw("EEPROMOUT");
+ map(0x5000, 0x5003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x00ff0000).cswidth(32);
+}
/* Spotty memory map */
-ADDRESS_MAP_START(limenko_state::spotty_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x40002000, 0x400024d3) AM_RAM //?
- AM_RANGE(0x80000000, 0x80007fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x80008000, 0x8000ffff) AM_RAM_WRITE(md_videoram_w) AM_SHARE("md_videoram")
- AM_RANGE(0x80010000, 0x80017fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x80018000, 0x80019fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8001c000, 0x8001dfff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x8001e000, 0x8001ebff) AM_RAM // ? not used
- AM_RANGE(0x8001ffec, 0x8001ffff) AM_RAM AM_SHARE("videoreg")
- AM_RANGE(0x8003e000, 0x8003e003) AM_WRITE(spriteram_buffer_w)
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(limenko_state::spotty_io_map)
- AM_RANGE(0x0000, 0x0003) AM_READ_PORT("IN0")
- AM_RANGE(0x0800, 0x0803) AM_READ_PORT("IN1")
- AM_RANGE(0x0800, 0x0803) AM_WRITENOP // hopper related
- AM_RANGE(0x1000, 0x1003) AM_READ_PORT("IN2")
- AM_RANGE(0x4800, 0x4803) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x5000, 0x5003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000).cswidth(32)
-ADDRESS_MAP_END
+void limenko_state::spotty_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("mainram");
+ map(0x40002000, 0x400024d3).ram(); //?
+ map(0x80000000, 0x80007fff).ram().w(this, FUNC(limenko_state::fg_videoram_w)).share("fg_videoram");
+ map(0x80008000, 0x8000ffff).ram().w(this, FUNC(limenko_state::md_videoram_w)).share("md_videoram");
+ map(0x80010000, 0x80017fff).ram().w(this, FUNC(limenko_state::bg_videoram_w)).share("bg_videoram");
+ map(0x80018000, 0x80019fff).ram().share("spriteram");
+ map(0x8001c000, 0x8001dfff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x8001e000, 0x8001ebff).ram(); // ? not used
+ map(0x8001ffec, 0x8001ffff).ram().share("videoreg");
+ map(0x8003e000, 0x8003e003).w(this, FUNC(limenko_state::spriteram_buffer_w));
+ map(0xfff00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void limenko_state::spotty_io_map(address_map &map)
+{
+ map(0x0000, 0x0003).portr("IN0");
+ map(0x0800, 0x0803).portr("IN1");
+ map(0x0800, 0x0803).nopw(); // hopper related
+ map(0x1000, 0x1003).portr("IN2");
+ map(0x4800, 0x4803).portw("EEPROMOUT");
+ map(0x5000, 0x5003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x00ff0000).cswidth(32);
+}
WRITE8_MEMBER(limenko_state::spotty_sound_cmd_w)
{
diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp
index bc3d0be1609..f981a1599e5 100644
--- a/src/mame/drivers/lisa.cpp
+++ b/src/mame/drivers/lisa.cpp
@@ -23,26 +23,29 @@
ADDRESS MAP
***************************************************************************/
-ADDRESS_MAP_START(lisa_state::lisa_map)
- AM_RANGE(0x000000, 0xffffff) AM_READWRITE(lisa_r, lisa_w) /* no fixed map, we use an MMU */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lisa_state::lisa_fdc_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff) // only 8k of address space
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("fdc_ram") /* RAM (shared with 68000) */
- AM_RANGE(0x0400, 0x07ff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */
- AM_RANGE(0x0800, 0x0fff) AM_NOP
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lisa_state::lisa210_fdc_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff) // only 8k of address space
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("fdc_ram") /* RAM (shared with 68000) */
- AM_RANGE(0x0400, 0x07ff) AM_NOP /* nothing, or RAM wrap-around ??? */
- AM_RANGE(0x0800, 0x0bff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */
- AM_RANGE(0x0c00, 0x0fff) AM_NOP /* nothing, or IO port wrap-around ??? */
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */
-ADDRESS_MAP_END
+void lisa_state::lisa_map(address_map &map)
+{
+ map(0x000000, 0xffffff).rw(this, FUNC(lisa_state::lisa_r), FUNC(lisa_state::lisa_w)); /* no fixed map, we use an MMU */
+}
+
+void lisa_state::lisa_fdc_map(address_map &map)
+{
+ map.global_mask(0x1fff); // only 8k of address space
+ map(0x0000, 0x03ff).ram().share("fdc_ram"); /* RAM (shared with 68000) */
+ map(0x0400, 0x07ff).rw(this, FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); /* disk controller (IWM and TTL logic) */
+ map(0x0800, 0x0fff).noprw();
+ map(0x1000, 0x1fff).rom().region("fdccpu", 0x1000).share("fdc_rom"); /* ROM */
+}
+
+void lisa_state::lisa210_fdc_map(address_map &map)
+{
+ map.global_mask(0x1fff); // only 8k of address space
+ map(0x0000, 0x03ff).ram().share("fdc_ram"); /* RAM (shared with 68000) */
+ map(0x0400, 0x07ff).noprw(); /* nothing, or RAM wrap-around ??? */
+ map(0x0800, 0x0bff).rw(this, FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); /* disk controller (IWM and TTL logic) */
+ map(0x0c00, 0x0fff).noprw(); /* nothing, or IO port wrap-around ??? */
+ map(0x1000, 0x1fff).rom().region("fdccpu", 0x1000).share("fdc_rom"); /* ROM */
+}
diff --git a/src/mame/drivers/littlerb.cpp b/src/mame/drivers/littlerb.cpp
index 6ac2642334a..6d95c5b52db 100644
--- a/src/mame/drivers/littlerb.cpp
+++ b/src/mame/drivers/littlerb.cpp
@@ -161,23 +161,24 @@ WRITE16_MEMBER(littlerb_state::littlerb_r_sound_w)
//popmessage("%04x %04x",m_sound_index_l,m_sound_index_r);
}
-ADDRESS_MAP_START(littlerb_state::littlerb_main)
- AM_RANGE(0x000008, 0x000017) AM_WRITENOP
- AM_RANGE(0x000020, 0x00002f) AM_WRITENOP
- AM_RANGE(0x000070, 0x000073) AM_WRITENOP
- AM_RANGE(0x060004, 0x060007) AM_WRITENOP
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM // main ram?
-
- AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w)
-
- AM_RANGE(0x740000, 0x740001) AM_WRITE(littlerb_l_sound_w)
- AM_RANGE(0x760000, 0x760001) AM_WRITE(littlerb_r_sound_w)
- AM_RANGE(0x780000, 0x780001) AM_WRITENOP // generic outputs
- AM_RANGE(0x7c0000, 0x7c0001) AM_READ_PORT("DSW")
- AM_RANGE(0x7e0000, 0x7e0001) AM_READ_PORT("P1")
- AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2")
-ADDRESS_MAP_END
+void littlerb_state::littlerb_main(address_map &map)
+{
+ map(0x000008, 0x000017).nopw();
+ map(0x000020, 0x00002f).nopw();
+ map(0x000070, 0x000073).nopw();
+ map(0x060004, 0x060007).nopw();
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x203fff).ram(); // main ram?
+
+ map(0x700000, 0x700007).rw("inder_vid:tms", FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+
+ map(0x740000, 0x740001).w(this, FUNC(littlerb_state::littlerb_l_sound_w));
+ map(0x760000, 0x760001).w(this, FUNC(littlerb_state::littlerb_r_sound_w));
+ map(0x780000, 0x780001).nopw(); // generic outputs
+ map(0x7c0000, 0x7c0001).portr("DSW");
+ map(0x7e0000, 0x7e0001).portr("P1");
+ map(0x7e0002, 0x7e0003).portr("P2");
+}
/* guess according to DASM code and checking the gameplay speed, could be different */
CUSTOM_INPUT_MEMBER(littlerb_state::littlerb_frame_step_r)
diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp
index ed93dfd02f8..98e574e3a54 100644
--- a/src/mame/drivers/lkage.cpp
+++ b/src/mame/drivers/lkage.cpp
@@ -116,39 +116,42 @@ READ8_MEMBER(lkage_state::sound_status_r)
return 0xff;
}
-ADDRESS_MAP_START(lkage_state::lkage_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram */
- AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf000, 0xf003) AM_RAM AM_SHARE("vreg") /* video registers */
- AM_RANGE(0xf060, 0xf060) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf061, 0xf061) AM_WRITENOP AM_READ(sound_status_r)
- AM_RANGE(0xf063, 0xf063) AM_WRITENOP /* pulsed; nmi on sound cpu? */
- AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
- AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
- AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3")
- AM_RANGE(0xf083, 0xf083) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf084, 0xf084) AM_READ_PORT("P1")
- AM_RANGE(0xf086, 0xf086) AM_READ_PORT("P2")
- AM_RANGE(0xf0a0, 0xf0a3) AM_RAM /* unknown */
- AM_RANGE(0xf0c0, 0xf0c5) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0xf0e1, 0xf0e1) AM_WRITENOP /* pulsed */
- AM_RANGE(0xf100, 0xf15f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf160, 0xf1ff) AM_RAM /* unknown - no valid sprite data */
- AM_RANGE(0xf400, 0xffff) AM_RAM_WRITE(lkage_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lkage_state::lkage_map_mcu)
- AM_IMPORT_FROM(lkage_map)
- AM_RANGE(0xf062, 0xf062) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0xf087, 0xf087) AM_READ(mcu_status_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lkage_state::lkage_map_boot)
- AM_IMPORT_FROM(lkage_map)
- AM_RANGE(0xf062, 0xf062) AM_READWRITE(fake_mcu_r, fake_mcu_w)
- AM_RANGE(0xf087, 0xf087) AM_READ(fake_status_r)
-ADDRESS_MAP_END
+void lkage_state::lkage_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram(); /* work ram */
+ map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf000, 0xf003).ram().share("vreg"); /* video registers */
+ map(0xf060, 0xf060).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf061, 0xf061).nopw().r(this, FUNC(lkage_state::sound_status_r));
+ map(0xf063, 0xf063).nopw(); /* pulsed; nmi on sound cpu? */
+ map(0xf080, 0xf080).portr("DSW1");
+ map(0xf081, 0xf081).portr("DSW2");
+ map(0xf082, 0xf082).portr("DSW3");
+ map(0xf083, 0xf083).portr("SYSTEM");
+ map(0xf084, 0xf084).portr("P1");
+ map(0xf086, 0xf086).portr("P2");
+ map(0xf0a0, 0xf0a3).ram(); /* unknown */
+ map(0xf0c0, 0xf0c5).ram().share("scroll");
+ map(0xf0e1, 0xf0e1).nopw(); /* pulsed */
+ map(0xf100, 0xf15f).ram().share("spriteram");
+ map(0xf160, 0xf1ff).ram(); /* unknown - no valid sprite data */
+ map(0xf400, 0xffff).ram().w(this, FUNC(lkage_state::lkage_videoram_w)).share("videoram");
+}
+
+void lkage_state::lkage_map_mcu(address_map &map)
+{
+ lkage_map(map);
+ map(0xf062, 0xf062).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0xf087, 0xf087).r(this, FUNC(lkage_state::mcu_status_r));
+}
+
+void lkage_state::lkage_map_boot(address_map &map)
+{
+ lkage_map(map);
+ map(0xf062, 0xf062).rw(this, FUNC(lkage_state::fake_mcu_r), FUNC(lkage_state::fake_mcu_w));
+ map(0xf087, 0xf087).r(this, FUNC(lkage_state::fake_status_r));
+}
READ8_MEMBER(lkage_state::port_fetch_r)
@@ -156,26 +159,28 @@ READ8_MEMBER(lkage_state::port_fetch_r)
return memregion("user1")->base()[offset];
}
-ADDRESS_MAP_START(lkage_state::lkage_io_map)
- AM_RANGE(0x4000, 0x7fff) AM_READ(port_fetch_r)
-ADDRESS_MAP_END
+void lkage_state::lkage_io_map(address_map &map)
+{
+ map(0x4000, 0x7fff).r(this, FUNC(lkage_state::port_fetch_r));
+}
/***************************************************************************/
/* sound section is almost identical to Bubble Bobble, YM2203 instead of YM3526 */
-ADDRESS_MAP_START(lkage_state::lkage_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* ??? */
- AM_RANGE(0xb001, 0xb001) AM_READNOP /* ??? */ AM_WRITE(lkage_sh_nmi_enable_w)
- AM_RANGE(0xb002, 0xb002) AM_WRITE(lkage_sh_nmi_disable_w)
- AM_RANGE(0xb003, 0xb003) AM_WRITENOP
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */
-ADDRESS_MAP_END
+void lkage_state::lkage_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); /* ??? */
+ map(0xb001, 0xb001).nopr() /* ??? */ .w(this, FUNC(lkage_state::lkage_sh_nmi_enable_w));
+ map(0xb002, 0xb002).w(this, FUNC(lkage_state::lkage_sh_nmi_disable_w));
+ map(0xb003, 0xb003).nopw();
+ map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */
+}
/***************************************************************************/
diff --git a/src/mame/drivers/llc.cpp b/src/mame/drivers/llc.cpp
index e414555ba38..b1df7121948 100644
--- a/src/mame/drivers/llc.cpp
+++ b/src/mame/drivers/llc.cpp
@@ -58,37 +58,41 @@
/* Address maps */
-ADDRESS_MAP_START(llc_state::llc1_mem)
- AM_RANGE(0x0000, 0x07ff) AM_ROM // Monitor ROM
- AM_RANGE(0x0800, 0x13ff) AM_ROM // BASIC ROM
- AM_RANGE(0x1400, 0x1bff) AM_RAM // RAM
- AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_SHARE("videoram") // Video RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(llc_state::llc1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xEC, 0xEF) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write)
- AM_RANGE(0xF4, 0xF7) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write)
- AM_RANGE(0xF8, 0xFB) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(llc_state::llc2_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x5fff) AM_RAMBANK("bank2")
- AM_RANGE(0x6000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(llc_state::llc2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xE0, 0xE3) AM_WRITE(llc2_rom_disable_w)
- AM_RANGE(0xE4, 0xE7) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write)
- AM_RANGE(0xE8, 0xEB) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write)
- AM_RANGE(0xEC, 0xEC) AM_WRITE(llc2_basic_enable_w)
- AM_RANGE(0xF8, 0xFB) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void llc_state::llc1_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom(); // Monitor ROM
+ map(0x0800, 0x13ff).rom(); // BASIC ROM
+ map(0x1400, 0x1bff).ram(); // RAM
+ map(0x1c00, 0x1fff).ram().share("videoram"); // Video RAM
+}
+
+void llc_state::llc1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xEC, 0xEF).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xF4, 0xF7).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xF8, 0xFB).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
+
+void llc_state::llc2_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x5fff).bankrw("bank2");
+ map(0x6000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void llc_state::llc2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xE0, 0xE3).w(this, FUNC(llc_state::llc2_rom_disable_w));
+ map(0xE4, 0xE7).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xE8, 0xEB).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xEC, 0xEC).w(this, FUNC(llc_state::llc2_basic_enable_w));
+ map(0xF8, 0xFB).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( llc1 )
diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp
index a701964d7c0..17af04ba09a 100644
--- a/src/mame/drivers/lockon.cpp
+++ b/src/mame/drivers/lockon.cpp
@@ -147,64 +147,69 @@ WRITE16_MEMBER(lockon_state::emres_w)
*
*************************************/
-ADDRESS_MAP_START(lockon_state::main_v30)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x04003) AM_READWRITE(lockon_crtc_r, lockon_crtc_w)
- AM_RANGE(0x06000, 0x06001) AM_READ_PORT("DSW")
- AM_RANGE(0x08000, 0x081ff) AM_RAM AM_SHARE("hud_ram")
- AM_RANGE(0x09000, 0x09fff) AM_RAM_WRITE(lockon_char_w) AM_SHARE("char_ram")
- AM_RANGE(0x0a000, 0x0a001) AM_WRITE(adrst_w)
- AM_RANGE(0x0b000, 0x0bfff) AM_WRITE(lockon_rotate_w)
- AM_RANGE(0x0c000, 0x0cfff) AM_WRITE(lockon_fb_clut_w)
- AM_RANGE(0x0e000, 0x0e001) AM_WRITE(inten_w)
- AM_RANGE(0x0f000, 0x0f001) AM_WRITE(emres_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READNOP AM_WRITE(tst_w)
- AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(main_z80_r, main_z80_w)
- AM_RANGE(0x30000, 0x3ffff) AM_READWRITE(main_gnd_r, main_gnd_w)
- AM_RANGE(0x40000, 0x4ffff) AM_READWRITE(main_obj_r, main_obj_w)
- AM_RANGE(0x50000, 0x5ffff) AM_MIRROR(0x80000) AM_ROM
- AM_RANGE(0x60000, 0x6ffff) AM_MIRROR(0x80000) AM_ROM
- AM_RANGE(0x70000, 0x7ffff) AM_MIRROR(0x80000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lockon_state::ground_v30)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("scene_ram")
- AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("ground_ram")
- AM_RANGE(0x0C000, 0x0C001) AM_WRITE(lockon_scene_h_scr_w)
- AM_RANGE(0x0C002, 0x0C003) AM_WRITE(lockon_scene_v_scr_w)
- AM_RANGE(0x0C004, 0x0C005) AM_WRITE(lockon_ground_ctrl_w)
- AM_RANGE(0x20000, 0x2ffff) AM_MIRROR(0xc0000) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_MIRROR(0xc0000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lockon_state::object_v30)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x04001) AM_READWRITE(lockon_obj_4000_r, lockon_obj_4000_w)
- AM_RANGE(0x08000, 0x08fff) AM_WRITE(lockon_tza112_w)
- AM_RANGE(0x0c000, 0x0c1ff) AM_RAM AM_SHARE("object_ram")
- AM_RANGE(0x30000, 0x3ffff) AM_MIRROR(0xc0000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lockon_state::sound_prg)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7000) AM_WRITE(sound_vol)
- AM_RANGE(0x7400, 0x7403) AM_READ(adc_r) AM_WRITENOP
- AM_RANGE(0x7800, 0x7fff) AM_MIRROR(0x8000) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lockon_state::sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x02, 0x02) AM_NOP
-ADDRESS_MAP_END
+void lockon_state::main_v30(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x04003).rw(this, FUNC(lockon_state::lockon_crtc_r), FUNC(lockon_state::lockon_crtc_w));
+ map(0x06000, 0x06001).portr("DSW");
+ map(0x08000, 0x081ff).ram().share("hud_ram");
+ map(0x09000, 0x09fff).ram().w(this, FUNC(lockon_state::lockon_char_w)).share("char_ram");
+ map(0x0a000, 0x0a001).w(this, FUNC(lockon_state::adrst_w));
+ map(0x0b000, 0x0bfff).w(this, FUNC(lockon_state::lockon_rotate_w));
+ map(0x0c000, 0x0cfff).w(this, FUNC(lockon_state::lockon_fb_clut_w));
+ map(0x0e000, 0x0e001).w(this, FUNC(lockon_state::inten_w));
+ map(0x0f000, 0x0f001).w(this, FUNC(lockon_state::emres_w));
+ map(0x10000, 0x1ffff).nopr().w(this, FUNC(lockon_state::tst_w));
+ map(0x20000, 0x2ffff).rw(this, FUNC(lockon_state::main_z80_r), FUNC(lockon_state::main_z80_w));
+ map(0x30000, 0x3ffff).rw(this, FUNC(lockon_state::main_gnd_r), FUNC(lockon_state::main_gnd_w));
+ map(0x40000, 0x4ffff).rw(this, FUNC(lockon_state::main_obj_r), FUNC(lockon_state::main_obj_w));
+ map(0x50000, 0x5ffff).mirror(0x80000).rom();
+ map(0x60000, 0x6ffff).mirror(0x80000).rom();
+ map(0x70000, 0x7ffff).mirror(0x80000).rom();
+}
+
+
+void lockon_state::ground_v30(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x04fff).ram().share("scene_ram");
+ map(0x08000, 0x08fff).ram().share("ground_ram");
+ map(0x0C000, 0x0C001).w(this, FUNC(lockon_state::lockon_scene_h_scr_w));
+ map(0x0C002, 0x0C003).w(this, FUNC(lockon_state::lockon_scene_v_scr_w));
+ map(0x0C004, 0x0C005).w(this, FUNC(lockon_state::lockon_ground_ctrl_w));
+ map(0x20000, 0x2ffff).mirror(0xc0000).rom();
+ map(0x30000, 0x3ffff).mirror(0xc0000).rom();
+}
+
+
+void lockon_state::object_v30(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x04001).rw(this, FUNC(lockon_state::lockon_obj_4000_r), FUNC(lockon_state::lockon_obj_4000_w));
+ map(0x08000, 0x08fff).w(this, FUNC(lockon_state::lockon_tza112_w));
+ map(0x0c000, 0x0c1ff).ram().share("object_ram");
+ map(0x30000, 0x3ffff).mirror(0xc0000).rom();
+}
+
+
+void lockon_state::sound_prg(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7000).w(this, FUNC(lockon_state::sound_vol));
+ map(0x7400, 0x7403).r(this, FUNC(lockon_state::adc_r)).nopw();
+ map(0x7800, 0x7fff).mirror(0x8000).ram();
+}
+
+void lockon_state::sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x02, 0x02).noprw();
+}
/*************************************
diff --git a/src/mame/drivers/lola8a.cpp b/src/mame/drivers/lola8a.cpp
index eeb0f31efb3..19ac316f34b 100644
--- a/src/mame/drivers/lola8a.cpp
+++ b/src/mame/drivers/lola8a.cpp
@@ -68,28 +68,30 @@ private:
required_shared_ptr<uint8_t> m_p_videoram;
};
-ADDRESS_MAP_START(lola8a_state::lola8a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM // 6264 at G45
- AM_RANGE( 0x2000, 0x3fff ) AM_RAM // 6264 at F45
+void lola8a_state::lola8a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram(); // 6264 at G45
+ map(0x2000, 0x3fff).ram(); // 6264 at F45
// empty place for 6264 at E45
// empty place for 6264 at D45
- AM_RANGE( 0x8000, 0x9fff ) AM_ROM // 2764A at B45
- AM_RANGE( 0xa000, 0xbfff ) AM_ROM // 2764A at C45
- AM_RANGE( 0xc000, 0xdfff ) AM_ROM // 2764A at H67
- AM_RANGE( 0xe000, 0xffff ) AM_RAM AM_SHARE("videoram") // 6264 at G67
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lola8a_state::lola8a_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80, 0x80) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w)
- AM_RANGE(0x84, 0x84) AM_DEVREADWRITE(AY8910_TAG, ay8910_device, data_r, data_w)
- AM_RANGE(0x88, 0x88) AM_READ(keyboard_r)
-
- AM_RANGE(0x90, 0x90) AM_DEVREADWRITE(HD46505SP_TAG, mc6845_device, status_r, address_w)
- AM_RANGE(0x92, 0x92) AM_DEVREADWRITE(HD46505SP_TAG, mc6845_device, register_r, register_w)
-
-ADDRESS_MAP_END
+ map(0x8000, 0x9fff).rom(); // 2764A at B45
+ map(0xa000, 0xbfff).rom(); // 2764A at C45
+ map(0xc000, 0xdfff).rom(); // 2764A at H67
+ map(0xe000, 0xffff).ram().share("videoram"); // 6264 at G67
+}
+
+void lola8a_state::lola8a_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x80, 0x80).w(AY8910_TAG, FUNC(ay8910_device::address_w));
+ map(0x84, 0x84).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x88, 0x88).r(this, FUNC(lola8a_state::keyboard_r));
+
+ map(0x90, 0x90).rw(HD46505SP_TAG, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x92, 0x92).rw(HD46505SP_TAG, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+
+}
/* Input ports */
static INPUT_PORTS_START( lola8a )
diff --git a/src/mame/drivers/looping.cpp b/src/mame/drivers/looping.cpp
index ed0db8e51dc..7e329792df6 100644
--- a/src/mame/drivers/looping.cpp
+++ b/src/mame/drivers/looping.cpp
@@ -549,46 +549,50 @@ READ8_MEMBER(looping_state::protection_r)
*
*************************************/
-ADDRESS_MAP_START(looping_state::looping_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void looping_state::looping_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(looping_videoram_w) AM_SHARE("videoram")
+ map(0x9000, 0x93ff).ram().w(this, FUNC(looping_state::looping_videoram_w)).share("videoram");
- AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM_WRITE(looping_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9840, 0x987f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9880, 0x98ff) AM_MIRROR(0x0700) AM_RAM
+ map(0x9800, 0x983f).mirror(0x0700).ram().w(this, FUNC(looping_state::looping_colorram_w)).share("colorram");
+ map(0x9840, 0x987f).mirror(0x0700).ram().share("spriteram");
+ map(0x9880, 0x98ff).mirror(0x0700).ram();
- AM_RANGE(0xb000, 0xb007) AM_MIRROR(0x07f8) AM_DEVWRITE("videolatch", ls259_device, write_d0)
+ map(0xb000, 0xb007).mirror(0x07f8).w("videolatch", FUNC(ls259_device::write_d0));
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x03fc) AM_READ_PORT("P1") AM_WRITE(out_0_w) /* /OUT0 */
- AM_RANGE(0xf801, 0xf801) AM_MIRROR(0x03fc) AM_READ_PORT("P2") AM_WRITE(looping_soundlatch_w) /* /OUT1 */
- AM_RANGE(0xf802, 0xf802) AM_MIRROR(0x03fc) AM_READ_PORT("DSW") AM_WRITE(out_2_w) /* /OUT2 */
- AM_RANGE(0xf803, 0xf803) AM_MIRROR(0x03fc) AM_READWRITE(adc_r, adc_w)
-ADDRESS_MAP_END
+ map(0xe000, 0xefff).ram();
+ map(0xf800, 0xf800).mirror(0x03fc).portr("P1").w(this, FUNC(looping_state::out_0_w)); /* /OUT0 */
+ map(0xf801, 0xf801).mirror(0x03fc).portr("P2").w(this, FUNC(looping_state::looping_soundlatch_w)); /* /OUT1 */
+ map(0xf802, 0xf802).mirror(0x03fc).portr("DSW").w(this, FUNC(looping_state::out_2_w)); /* /OUT2 */
+ map(0xf803, 0xf803).mirror(0x03fc).rw(this, FUNC(looping_state::adc_r), FUNC(looping_state::adc_w));
+}
-ADDRESS_MAP_START(looping_state::looping_io_map)
- AM_RANGE(0x400, 0x407) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void looping_state::looping_io_map(address_map &map)
+{
+ map(0x400, 0x407).w("mainlatch", FUNC(ls259_device::write_d0));
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(looping_state::looping_sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0x3800, 0x3bff) AM_RAM
- AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x00f4) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_w)
- AM_RANGE(0x3c01, 0x3c01) AM_MIRROR(0x00f6) AM_NOP
- AM_RANGE(0x3c02, 0x3c02) AM_MIRROR(0x00f4) AM_READNOP AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x00f4) AM_READNOP AM_DEVWRITE("tms", tms5220_device, data_w)
- AM_RANGE(0x3e01, 0x3e01) AM_MIRROR(0x00f6) AM_NOP
- AM_RANGE(0x3e02, 0x3e02) AM_MIRROR(0x00f4) AM_DEVREAD("tms", tms5220_device, status_r) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(looping_state::looping_sound_io_map)
- AM_RANGE(0x000, 0x007) AM_DEVWRITE("sen0", ls259_device, write_d0)
- AM_RANGE(0x008, 0x00f) AM_DEVWRITE("sen1", ls259_device, write_d0)
-ADDRESS_MAP_END
+void looping_state::looping_sound_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x37ff).rom();
+ map(0x3800, 0x3bff).ram();
+ map(0x3c00, 0x3c00).mirror(0x00f4).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0x3c01, 0x3c01).mirror(0x00f6).noprw();
+ map(0x3c02, 0x3c02).mirror(0x00f4).nopr().w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x3e00, 0x3e00).mirror(0x00f4).nopr().w("tms", FUNC(tms5220_device::data_w));
+ map(0x3e01, 0x3e01).mirror(0x00f6).noprw();
+ map(0x3e02, 0x3e02).mirror(0x00f4).r("tms", FUNC(tms5220_device::status_r)).nopw();
+}
+
+void looping_state::looping_sound_io_map(address_map &map)
+{
+ map(0x000, 0x007).w("sen0", FUNC(ls259_device::write_d0));
+ map(0x008, 0x00f).w("sen1", FUNC(ls259_device::write_d0));
+}
/*************************************
diff --git a/src/mame/drivers/lordgun.cpp b/src/mame/drivers/lordgun.cpp
index 4f180aa628c..c01098389b4 100644
--- a/src/mame/drivers/lordgun.cpp
+++ b/src/mame/drivers/lordgun.cpp
@@ -278,68 +278,71 @@ WRITE16_MEMBER(lordgun_state::lordgun_soundlatch_w)
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(lordgun_state::lordgun_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("priority_ram") // PRIORITY
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(lordgun_vram_0_w) AM_SHARE("vram.0") // DISPLAY
- AM_RANGE(0x310000, 0x313fff) AM_RAM_WRITE(lordgun_vram_1_w) AM_SHARE("vram.1") // DISPLAY
- AM_RANGE(0x314000, 0x314fff) AM_RAM_WRITE(lordgun_vram_2_w) AM_SHARE("vram.2") // DISPLAY
- AM_RANGE(0x315000, 0x317fff) AM_RAM //
- AM_RANGE(0x318000, 0x319fff) AM_RAM_WRITE(lordgun_vram_3_w) AM_SHARE("vram.3") // DISPLAY
- AM_RANGE(0x31c000, 0x31c7ff) AM_RAM AM_SHARE("scrollram") // LINE
- AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("spriteram") // ANIMATOR
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(lordgun_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x502000, 0x502001) AM_WRITEONLY AM_SHARE("scroll_x.0")
- AM_RANGE(0x502200, 0x502201) AM_WRITEONLY AM_SHARE("scroll_x.1")
- AM_RANGE(0x502400, 0x502401) AM_WRITEONLY AM_SHARE("scroll_x.2")
- AM_RANGE(0x502600, 0x502601) AM_WRITEONLY AM_SHARE("scroll_x.3")
- AM_RANGE(0x502800, 0x502801) AM_WRITEONLY AM_SHARE("scroll_y.0")
- AM_RANGE(0x502a00, 0x502a01) AM_WRITEONLY AM_SHARE("scroll_y.1")
- AM_RANGE(0x502c00, 0x502c01) AM_WRITEONLY AM_SHARE("scroll_y.2")
- AM_RANGE(0x502e00, 0x502e01) AM_WRITEONLY AM_SHARE("scroll_y.3")
- AM_RANGE(0x503000, 0x503001) AM_WRITE(lordgun_priority_w)
- AM_RANGE(0x503800, 0x503801) AM_READ(lordgun_gun_0_x_r)
- AM_RANGE(0x503a00, 0x503a01) AM_READ(lordgun_gun_1_x_r)
- AM_RANGE(0x503c00, 0x503c01) AM_READ(lordgun_gun_0_y_r)
- AM_RANGE(0x503e00, 0x503e01) AM_READ(lordgun_gun_1_y_r)
- AM_RANGE(0x504000, 0x504001) AM_WRITE(lordgun_soundlatch_w)
- AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x50a900, 0x50a9ff) AM_READWRITE(lordgun_protection_r, lordgun_protection_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lordgun_state::aliencha_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("priority_ram") // PRIORITY
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(lordgun_vram_0_w) AM_SHARE("vram.0") // BACKGROUND 1
- AM_RANGE(0x310000, 0x313fff) AM_RAM_WRITE(lordgun_vram_1_w) AM_SHARE("vram.1") // BACKGROUND 2
- AM_RANGE(0x314000, 0x314fff) AM_RAM_WRITE(lordgun_vram_2_w) AM_SHARE("vram.2") // BACKGROUND 3
- AM_RANGE(0x315000, 0x317fff) AM_RAM //
- AM_RANGE(0x318000, 0x319fff) AM_RAM_WRITE(lordgun_vram_3_w) AM_SHARE("vram.3") // TEXT
- AM_RANGE(0x31c000, 0x31c7ff) AM_RAM AM_SHARE("scrollram") // LINE OFFSET
- AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("spriteram") // ANIMATE
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(lordgun_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x502000, 0x502001) AM_WRITEONLY AM_SHARE("scroll_x.0")
- AM_RANGE(0x502200, 0x502201) AM_WRITEONLY AM_SHARE("scroll_x.1")
- AM_RANGE(0x502400, 0x502401) AM_WRITEONLY AM_SHARE("scroll_x.2")
- AM_RANGE(0x502600, 0x502601) AM_WRITEONLY AM_SHARE("scroll_x.3")
- AM_RANGE(0x502800, 0x502801) AM_WRITEONLY AM_SHARE("scroll_y.0")
- AM_RANGE(0x502a00, 0x502a01) AM_WRITEONLY AM_SHARE("scroll_y.1")
- AM_RANGE(0x502c00, 0x502c01) AM_WRITEONLY AM_SHARE("scroll_y.2")
- AM_RANGE(0x502e00, 0x502e01) AM_WRITEONLY AM_SHARE("scroll_y.3")
- AM_RANGE(0x503000, 0x503001) AM_WRITE(lordgun_priority_w)
- AM_RANGE(0x504000, 0x504001) AM_WRITE(lordgun_soundlatch_w)
- AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x50b900, 0x50b9ff) AM_READWRITE(aliencha_protection_r, aliencha_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lordgun_state::ymf278_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
-ADDRESS_MAP_END
+void lordgun_state::lordgun_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x210000, 0x21ffff).ram().share("priority_ram"); // PRIORITY
+ map(0x300000, 0x30ffff).ram().w(this, FUNC(lordgun_state::lordgun_vram_0_w)).share("vram.0"); // DISPLAY
+ map(0x310000, 0x313fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_1_w)).share("vram.1"); // DISPLAY
+ map(0x314000, 0x314fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_2_w)).share("vram.2"); // DISPLAY
+ map(0x315000, 0x317fff).ram(); //
+ map(0x318000, 0x319fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_3_w)).share("vram.3"); // DISPLAY
+ map(0x31c000, 0x31c7ff).ram().share("scrollram"); // LINE
+ map(0x400000, 0x4007ff).ram().share("spriteram"); // ANIMATOR
+ map(0x500000, 0x500fff).ram().w(this, FUNC(lordgun_state::lordgun_paletteram_w)).share("paletteram");
+ map(0x502000, 0x502001).writeonly().share("scroll_x.0");
+ map(0x502200, 0x502201).writeonly().share("scroll_x.1");
+ map(0x502400, 0x502401).writeonly().share("scroll_x.2");
+ map(0x502600, 0x502601).writeonly().share("scroll_x.3");
+ map(0x502800, 0x502801).writeonly().share("scroll_y.0");
+ map(0x502a00, 0x502a01).writeonly().share("scroll_y.1");
+ map(0x502c00, 0x502c01).writeonly().share("scroll_y.2");
+ map(0x502e00, 0x502e01).writeonly().share("scroll_y.3");
+ map(0x503000, 0x503001).w(this, FUNC(lordgun_state::lordgun_priority_w));
+ map(0x503800, 0x503801).r(this, FUNC(lordgun_state::lordgun_gun_0_x_r));
+ map(0x503a00, 0x503a01).r(this, FUNC(lordgun_state::lordgun_gun_1_x_r));
+ map(0x503c00, 0x503c01).r(this, FUNC(lordgun_state::lordgun_gun_0_y_r));
+ map(0x503e00, 0x503e01).r(this, FUNC(lordgun_state::lordgun_gun_1_y_r));
+ map(0x504000, 0x504001).w(this, FUNC(lordgun_state::lordgun_soundlatch_w));
+ map(0x506000, 0x506007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x508000, 0x508007).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x50a900, 0x50a9ff).rw(this, FUNC(lordgun_state::lordgun_protection_r), FUNC(lordgun_state::lordgun_protection_w));
+}
+
+
+void lordgun_state::aliencha_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x210000, 0x21ffff).ram().share("priority_ram"); // PRIORITY
+ map(0x300000, 0x30ffff).ram().w(this, FUNC(lordgun_state::lordgun_vram_0_w)).share("vram.0"); // BACKGROUND 1
+ map(0x310000, 0x313fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_1_w)).share("vram.1"); // BACKGROUND 2
+ map(0x314000, 0x314fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_2_w)).share("vram.2"); // BACKGROUND 3
+ map(0x315000, 0x317fff).ram(); //
+ map(0x318000, 0x319fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_3_w)).share("vram.3"); // TEXT
+ map(0x31c000, 0x31c7ff).ram().share("scrollram"); // LINE OFFSET
+ map(0x400000, 0x4007ff).ram().share("spriteram"); // ANIMATE
+ map(0x500000, 0x500fff).ram().w(this, FUNC(lordgun_state::lordgun_paletteram_w)).share("paletteram");
+ map(0x502000, 0x502001).writeonly().share("scroll_x.0");
+ map(0x502200, 0x502201).writeonly().share("scroll_x.1");
+ map(0x502400, 0x502401).writeonly().share("scroll_x.2");
+ map(0x502600, 0x502601).writeonly().share("scroll_x.3");
+ map(0x502800, 0x502801).writeonly().share("scroll_y.0");
+ map(0x502a00, 0x502a01).writeonly().share("scroll_y.1");
+ map(0x502c00, 0x502c01).writeonly().share("scroll_y.2");
+ map(0x502e00, 0x502e01).writeonly().share("scroll_y.3");
+ map(0x503000, 0x503001).w(this, FUNC(lordgun_state::lordgun_priority_w));
+ map(0x504000, 0x504001).w(this, FUNC(lordgun_state::lordgun_soundlatch_w));
+ map(0x506000, 0x506007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x508000, 0x508007).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x50b900, 0x50b9ff).rw(this, FUNC(lordgun_state::aliencha_protection_r), FUNC(lordgun_state::aliencha_protection_w));
+}
+
+void lordgun_state::ymf278_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+}
/***************************************************************************
@@ -347,10 +350,11 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(lordgun_state::lordgun_soundmem_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void lordgun_state::lordgun_soundmem_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
WRITE8_MEMBER(lordgun_state::lordgun_okibank_w)
{
@@ -359,25 +363,27 @@ WRITE8_MEMBER(lordgun_state::lordgun_okibank_w)
// popmessage("OKI %x", data);
}
-ADDRESS_MAP_START(lordgun_state::lordgun_soundio_map)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x5000, 0x5000) AM_READNOP
- AM_RANGE(0x6000, 0x6000) AM_WRITE(lordgun_okibank_w )
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lordgun_state::aliencha_soundio_map)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x5000, 0x5000) AM_WRITENOP // writes 03 then 07 at end of NMI
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("ymf", ymf278b_device, read)
- AM_RANGE(0x7000, 0x7005) AM_DEVWRITE("ymf", ymf278b_device, write)
- AM_RANGE(0x7400, 0x7400) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x7800, 0x7800) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
-ADDRESS_MAP_END
+void lordgun_state::lordgun_soundio_map(address_map &map)
+{
+ map(0x1000, 0x1001).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x2000, 0x2000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x3000, 0x3000).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x5000, 0x5000).nopr();
+ map(0x6000, 0x6000).w(this, FUNC(lordgun_state::lordgun_okibank_w));
+}
+
+
+void lordgun_state::aliencha_soundio_map(address_map &map)
+{
+ map(0x3000, 0x3000).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x5000, 0x5000).nopw(); // writes 03 then 07 at end of NMI
+ map(0x7000, 0x7000).r("ymf", FUNC(ymf278b_device::read));
+ map(0x7000, 0x7005).w("ymf", FUNC(ymf278b_device::write));
+ map(0x7400, 0x7400).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x7800, 0x7800).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/lsasquad.cpp b/src/mame/drivers/lsasquad.cpp
index 2749ac6dadb..1c4cfec6a25 100644
--- a/src/mame/drivers/lsasquad.cpp
+++ b/src/mame/drivers/lsasquad.cpp
@@ -170,63 +170,66 @@ WRITE8_MEMBER(lsasquad_state::lsasquad_bankswitch_w)
/* other bits unknown */
}
-ADDRESS_MAP_START(lsasquad_state::lsasquad_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM /* SRAM */
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") /* SCREEN RAM */
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("scrollram") /* SCROLL RAM */
- AM_RANGE(0xe400, 0xe5ff) AM_RAM AM_SHARE("spriteram") /* OBJECT RAM */
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA")
- AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB")
- AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSWC")
- AM_RANGE(0xe803, 0xe803) AM_READ(lsasquad_mcu_status_r) /* COIN + 68705 status */
- AM_RANGE(0xe804, 0xe804) AM_READ_PORT("P1")
- AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2")
- AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START")
- AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE")
- AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r)
- AM_RANGE(0xee00, 0xee00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lsasquad_state::lsasquad_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w)
- AM_RANGE(0xd800, 0xd800) AM_WRITE(lsasquad_sh_nmi_enable_w)
- AM_RANGE(0xd800, 0xd800) AM_READ(lsasquad_sound_status_r)
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(lsasquad_state::storming_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM /* SRAM */
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") /* SCREEN RAM */
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("scrollram") /* SCROLL RAM */
- AM_RANGE(0xe400, 0xe5ff) AM_RAM AM_SHARE("spriteram") /* OBJECT RAM */
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA")
- AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB")
- AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSWC")
- AM_RANGE(0xe803, 0xe803) AM_READ_PORT("COINS")
- AM_RANGE(0xe804, 0xe804) AM_READ_PORT("P1")
- AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2")
- AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START")
- AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE")
- AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r)
-ADDRESS_MAP_END
+void lsasquad_state::lsasquad_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram(); /* SRAM */
+ map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */
+ map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */
+ map(0xe400, 0xe5ff).ram().share("spriteram"); /* OBJECT RAM */
+ map(0xe800, 0xe800).portr("DSWA");
+ map(0xe801, 0xe801).portr("DSWB");
+ map(0xe802, 0xe802).portr("DSWC");
+ map(0xe803, 0xe803).r(this, FUNC(lsasquad_state::lsasquad_mcu_status_r)); /* COIN + 68705 status */
+ map(0xe804, 0xe804).portr("P1");
+ map(0xe805, 0xe805).portr("P2");
+ map(0xe806, 0xe806).portr("START");
+ map(0xe807, 0xe807).portr("SERVICE");
+ map(0xea00, 0xea00).w(this, FUNC(lsasquad_state::lsasquad_bankswitch_w));
+ map(0xec00, 0xec00).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xec01, 0xec01).r(this, FUNC(lsasquad_state::lsasquad_sound_status_r));
+ map(0xee00, 0xee00).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+}
+
+void lsasquad_state::lsasquad_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0xd400, 0xd400).w(this, FUNC(lsasquad_state::lsasquad_sh_nmi_disable_w));
+ map(0xd800, 0xd800).w(this, FUNC(lsasquad_state::lsasquad_sh_nmi_enable_w));
+ map(0xd800, 0xd800).r(this, FUNC(lsasquad_state::lsasquad_sound_status_r));
+ map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */
+}
+
+
+
+void lsasquad_state::storming_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram(); /* SRAM */
+ map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */
+ map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */
+ map(0xe400, 0xe5ff).ram().share("spriteram"); /* OBJECT RAM */
+ map(0xe800, 0xe800).portr("DSWA");
+ map(0xe801, 0xe801).portr("DSWB");
+ map(0xe802, 0xe802).portr("DSWC");
+ map(0xe803, 0xe803).portr("COINS");
+ map(0xe804, 0xe804).portr("P1");
+ map(0xe805, 0xe805).portr("P2");
+ map(0xe806, 0xe806).portr("START");
+ map(0xe807, 0xe807).portr("SERVICE");
+ map(0xea00, 0xea00).w(this, FUNC(lsasquad_state::lsasquad_bankswitch_w));
+ map(0xec00, 0xec00).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xec01, 0xec01).r(this, FUNC(lsasquad_state::lsasquad_sound_status_r));
+}
static INPUT_PORTS_START( lsasquad )
@@ -371,36 +374,38 @@ INPUT_PORTS_END
/* DAIKAIJU */
-ADDRESS_MAP_START(lsasquad_state::daikaiju_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM /* SRAM */
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") /* SCREEN RAM */
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("scrollram") /* SCROLL RAM */
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") /* OBJECT RAM */
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA")
- AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB")
- AM_RANGE(0xe803, 0xe803) AM_READ(daikaiju_mcu_status_r) /* COIN + 68705 status */
- AM_RANGE(0xe804, 0xe804) AM_READ_PORT("P1")
- AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2")
- AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START")
- AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE")
- AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xee00, 0xee00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lsasquad_state::daikaiju_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w)
- AM_RANGE(0xd800, 0xd800) AM_READWRITE(daikaiju_sound_status_r, lsasquad_sh_nmi_enable_w)
- AM_RANGE(0xdc00, 0xdc00) AM_WRITENOP
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */
-ADDRESS_MAP_END
+void lsasquad_state::daikaiju_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram(); /* SRAM */
+ map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */
+ map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */
+ map(0xe400, 0xe7ff).ram().share("spriteram"); /* OBJECT RAM */
+ map(0xe800, 0xe800).portr("DSWA");
+ map(0xe801, 0xe801).portr("DSWB");
+ map(0xe803, 0xe803).r(this, FUNC(lsasquad_state::daikaiju_mcu_status_r)); /* COIN + 68705 status */
+ map(0xe804, 0xe804).portr("P1");
+ map(0xe805, 0xe805).portr("P2");
+ map(0xe806, 0xe806).portr("START");
+ map(0xe807, 0xe807).portr("SERVICE");
+ map(0xea00, 0xea00).w(this, FUNC(lsasquad_state::lsasquad_bankswitch_w));
+ map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xee00, 0xee00).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+}
+
+void lsasquad_state::daikaiju_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd400, 0xd400).w(this, FUNC(lsasquad_state::lsasquad_sh_nmi_disable_w));
+ map(0xd800, 0xd800).rw(this, FUNC(lsasquad_state::daikaiju_sound_status_r), FUNC(lsasquad_state::lsasquad_sh_nmi_enable_w));
+ map(0xdc00, 0xdc00).nopw();
+ map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */
+}
static INPUT_PORTS_START( daikaiju )
PORT_START("DSWA")
diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp
index b63d841a0fa..4c0bd5506bd 100644
--- a/src/mame/drivers/ltcasino.cpp
+++ b/src/mame/drivers/ltcasino.cpp
@@ -81,28 +81,29 @@ WRITE8_MEMBER(ltcasino_state::ltcasino_tile_atr_w)
}
-ADDRESS_MAP_START(ltcasino_state::ltcasino_map)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ltcasino_tile_num_w) AM_SHARE("tile_nuram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ltcasino_tile_atr_w) AM_SHARE("tile_atr_ram")
- AM_RANGE(0xe800, 0xebff) AM_RAM
-
- AM_RANGE(0xec00, 0xec00) AM_READ_PORT("IN0")
- AM_RANGE(0xec01, 0xec01) AM_READ_PORT("IN1")
- AM_RANGE(0xec02, 0xec02) AM_READ_PORT("IN2")
- AM_RANGE(0xec03, 0xec03) AM_READ_PORT("IN3")
- AM_RANGE(0xec10, 0xec10) AM_READ_PORT("IN4")
- AM_RANGE(0xec12, 0xec12) AM_READ_PORT("IN5")
-
- AM_RANGE(0xec20, 0xec20) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xec21, 0xec21) AM_READ_PORT("BUTTONS") //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service)
- AM_RANGE(0xec20, 0xec21) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0xec30, 0xec3f) AM_RAM
- AM_RANGE(0xec3e, 0xec3e) AM_READNOP //not used
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ltcasino_state::ltcasino_map(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xcfff).rom();
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(ltcasino_state::ltcasino_tile_num_w)).share("tile_nuram");
+ map(0xd800, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(ltcasino_state::ltcasino_tile_atr_w)).share("tile_atr_ram");
+ map(0xe800, 0xebff).ram();
+
+ map(0xec00, 0xec00).portr("IN0");
+ map(0xec01, 0xec01).portr("IN1");
+ map(0xec02, 0xec02).portr("IN2");
+ map(0xec03, 0xec03).portr("IN3");
+ map(0xec10, 0xec10).portr("IN4");
+ map(0xec12, 0xec12).portr("IN5");
+
+ map(0xec20, 0xec20).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xec21, 0xec21).portr("BUTTONS"); //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service)
+ map(0xec20, 0xec21).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0xec30, 0xec3f).ram();
+ map(0xec3e, 0xec3e).nopr(); //not used
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( ltcasino )
diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp
index c4a52e757e5..c586ef2e4dd 100644
--- a/src/mame/drivers/ltd.cpp
+++ b/src/mame/drivers/ltd.cpp
@@ -92,32 +92,35 @@ private:
};
-ADDRESS_MAP_START(ltd_state::ltd3_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM AM_SHARE("nvram") // internal to the cpu
- AM_RANGE(0x0080, 0x0087) AM_MIRROR(0x78) AM_READ(io_r)
- AM_RANGE(0x0800, 0x2fff) AM_WRITE(io_w)
- AM_RANGE(0xc000, 0xcfff) AM_ROM AM_MIRROR(0x3000) AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ltd_state::ltd4_map)
- AM_RANGE(0x0000, 0x001f) AM_RAM // internal to the cpu
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0800) AM_WRITE(count_reset_w)
- AM_RANGE(0x0c00, 0x0c00) AM_DEVWRITE("aysnd_1", ay8910_device, reset_w)
- AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("aysnd_0", ay8910_device, address_w)
- AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("aysnd_0", ay8910_device, reset_w)
- AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("aysnd_1", ay8910_device, address_w)
+void ltd_state::ltd3_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram().share("nvram"); // internal to the cpu
+ map(0x0080, 0x0087).mirror(0x78).r(this, FUNC(ltd_state::io_r));
+ map(0x0800, 0x2fff).w(this, FUNC(ltd_state::io_w));
+ map(0xc000, 0xcfff).rom().mirror(0x3000).region("roms", 0);
+}
+
+void ltd_state::ltd4_map(address_map &map)
+{
+ map(0x0000, 0x001f).ram(); // internal to the cpu
+ map(0x0080, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("nvram");
+ map(0x0800, 0x0800).w(this, FUNC(ltd_state::count_reset_w));
+ map(0x0c00, 0x0c00).w("aysnd_1", FUNC(ay8910_device::reset_w));
+ map(0x1000, 0x1000).w("aysnd_0", FUNC(ay8910_device::address_w));
+ map(0x1400, 0x1400).w("aysnd_0", FUNC(ay8910_device::reset_w));
+ map(0x1800, 0x1800).w("aysnd_1", FUNC(ay8910_device::address_w));
//AM_RANGE(0x2800, 0x2800) AM_WRITE(auxlamps_w)
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("aysnd_0", ay8910_device, data_w)
- AM_RANGE(0x3800, 0x3800) AM_DEVWRITE("aysnd_1", ay8910_device, data_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROM AM_MIRROR(0x2000) AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ltd_state::ltd4_io)
- AM_RANGE(0x0100, 0x0100) AM_READWRITE(port1_r,port1_w)
- AM_RANGE(0x0101, 0x0101) AM_READWRITE(port2_r,port2_w)
-ADDRESS_MAP_END
+ map(0x3000, 0x3000).w("aysnd_0", FUNC(ay8910_device::data_w));
+ map(0x3800, 0x3800).w("aysnd_1", FUNC(ay8910_device::data_w));
+ map(0xc000, 0xdfff).rom().mirror(0x2000).region("roms", 0);
+}
+
+void ltd_state::ltd4_io(address_map &map)
+{
+ map(0x0100, 0x0100).rw(this, FUNC(ltd_state::port1_r), FUNC(ltd_state::port1_w));
+ map(0x0101, 0x0101).rw(this, FUNC(ltd_state::port2_r), FUNC(ltd_state::port2_w));
+}
// bits 6,7 not connected to data bus
// 1=does something in Atlantis; 2=does something in Black Hole; note that sometimes pressing G or H will reboot the machine.
diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp
index ef9607377a2..8c45122f184 100644
--- a/src/mame/drivers/luckgrln.cpp
+++ b/src/mame/drivers/luckgrln.cpp
@@ -399,47 +399,49 @@ uint32_t luckgrln_state::screen_update_luckgrln(screen_device &screen, bitmap_in
return 0;
}
-ADDRESS_MAP_START(luckgrln_state::mainmap)
- AM_RANGE(0x00000, 0x03fff) AM_ROM
- AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("rom_data",0x10000)
- AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("rom_data",0x00000)
+void luckgrln_state::mainmap(address_map &map)
+{
+ map(0x00000, 0x03fff).rom();
+ map(0x10000, 0x1ffff).rom().region("rom_data", 0x10000);
+ map(0x20000, 0x2ffff).rom().region("rom_data", 0x00000);
- AM_RANGE(0x0c000, 0x0c1ff) AM_RAM_WRITE(luckgrln_reel1_ram_w) AM_SHARE("reel1_ram") // only written to half way
- AM_RANGE(0x0c800, 0x0c9ff) AM_RAM_WRITE(luckgrln_reel1_attr_w) AM_SHARE("reel1_attr")
- AM_RANGE(0x0d000, 0x0d03f) AM_RAM AM_SHARE("reel1_scroll") AM_MIRROR(0x000c0)
+ map(0x0c000, 0x0c1ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel1_ram_w)).share("reel1_ram"); // only written to half way
+ map(0x0c800, 0x0c9ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel1_attr_w)).share("reel1_attr");
+ map(0x0d000, 0x0d03f).ram().share("reel1_scroll").mirror(0x000c0);
- AM_RANGE(0x0c200, 0x0c3ff) AM_RAM_WRITE(luckgrln_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0x0ca00, 0x0cbff) AM_RAM_WRITE(luckgrln_reel2_attr_w) AM_SHARE("reel2_attr")
- AM_RANGE(0x0d200, 0x0d23f) AM_RAM AM_SHARE("reel2_scroll") AM_MIRROR(0x000c0)
+ map(0x0c200, 0x0c3ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel2_ram_w)).share("reel2_ram");
+ map(0x0ca00, 0x0cbff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel2_attr_w)).share("reel2_attr");
+ map(0x0d200, 0x0d23f).ram().share("reel2_scroll").mirror(0x000c0);
- AM_RANGE(0x0c400, 0x0c5ff) AM_RAM_WRITE(luckgrln_reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0x0cc00, 0x0cdff) AM_RAM_WRITE(luckgrln_reel3_attr_w) AM_SHARE("reel3_attr")
- AM_RANGE(0x0d400, 0x0d43f) AM_RAM AM_SHARE("reel3_scroll") AM_MIRROR(0x000c0)
+ map(0x0c400, 0x0c5ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel3_ram_w)).share("reel3_ram");
+ map(0x0cc00, 0x0cdff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel3_attr_w)).share("reel3_attr");
+ map(0x0d400, 0x0d43f).ram().share("reel3_scroll").mirror(0x000c0);
- AM_RANGE(0x0c600, 0x0c7ff) AM_RAM_WRITE(luckgrln_reel4_ram_w ) AM_SHARE("reel4_ram")
- AM_RANGE(0x0ce00, 0x0cfff) AM_RAM_WRITE(luckgrln_reel4_attr_w) AM_SHARE("reel4_attr")
- AM_RANGE(0x0d600, 0x0d63f) AM_RAM AM_SHARE("reel4_scroll")
+ map(0x0c600, 0x0c7ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel4_ram_w)).share("reel4_ram");
+ map(0x0ce00, 0x0cfff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel4_attr_w)).share("reel4_attr");
+ map(0x0d600, 0x0d63f).ram().share("reel4_scroll");
// AM_RANGE(0x0d200, 0x0d2ff) AM_RAM
- AM_RANGE(0x0d800, 0x0dfff) AM_RAM // nvram
+ map(0x0d800, 0x0dfff).ram(); // nvram
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM AM_SHARE("luck_vram1")
- AM_RANGE(0x0e800, 0x0efff) AM_RAM AM_SHARE("luck_vram2")
- AM_RANGE(0x0f000, 0x0f7ff) AM_RAM AM_SHARE("luck_vram3")
+ map(0x0e000, 0x0e7ff).ram().share("luck_vram1");
+ map(0x0e800, 0x0efff).ram().share("luck_vram2");
+ map(0x0f000, 0x0f7ff).ram().share("luck_vram3");
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM
- AM_RANGE(0xf0000, 0xfffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x0f800, 0x0ffff).ram();
+ map(0xf0000, 0xfffff).ram();
+}
-ADDRESS_MAP_START(luckgrln_state::_7smash_map)
- AM_IMPORT_FROM( mainmap )
- AM_RANGE(0x00000, 0x0bfff) AM_ROM
- AM_RANGE(0x10000, 0x2ffff) AM_UNMAP
- AM_RANGE(0xf0000, 0xfffff) AM_UNMAP
-ADDRESS_MAP_END
+void luckgrln_state::_7smash_map(address_map &map)
+{
+ mainmap(map);
+ map(0x00000, 0x0bfff).rom();
+ map(0x10000, 0x2ffff).unmaprw();
+ map(0xf0000, 0xfffff).unmaprw();
+}
WRITE8_MEMBER(luckgrln_state::output_w)
{
@@ -553,47 +555,48 @@ WRITE8_MEMBER(luckgrln_state::counters_w)
/* are some of these reads / writes mirrored? there seem to be far too many */
-ADDRESS_MAP_START(luckgrln_state::common_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x003f) AM_RAM // Z180 internal regs
- AM_RANGE(0x0060, 0x0060) AM_WRITE(output_w)
-
- AM_RANGE(0x00a0, 0x00a0) AM_WRITE(palette_offset_low_w)
- AM_RANGE(0x00a1, 0x00a1) AM_WRITE(palette_offset_high_w)
- AM_RANGE(0x00a2, 0x00a2) AM_WRITE(palette_w)
-
- AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x00b1, 0x00b1) AM_DEVWRITE("crtc", mc6845_device, register_w)
-
- AM_RANGE(0x00b8, 0x00b8) AM_READ_PORT("IN0")
- AM_RANGE(0x00b9, 0x00b9) AM_READ_PORT("IN1") AM_WRITE(counters_w)
- AM_RANGE(0x00ba, 0x00ba) AM_READ_PORT("IN2") AM_WRITE(lamps_a_w)
- AM_RANGE(0x00bb, 0x00bb) AM_READ_PORT("IN3") AM_WRITE(lamps_b_w)
- AM_RANGE(0x00bc, 0x00bc) AM_READ_PORT("DSW1")
-
- AM_RANGE(0x00c0, 0x00c3) AM_WRITENOP
- AM_RANGE(0x00c4, 0x00c7) AM_WRITENOP
- AM_RANGE(0x00c8, 0x00cb) AM_WRITENOP
- AM_RANGE(0x00cc, 0x00cf) AM_WRITENOP
-
- AM_RANGE(0x00d0, 0x00d3) AM_WRITENOP
- AM_RANGE(0x00d4, 0x00d7) AM_WRITENOP
- AM_RANGE(0x00d8, 0x00db) AM_WRITENOP
- AM_RANGE(0x00dc, 0x00df) AM_WRITENOP
-
- AM_RANGE(0x00e4, 0x00e7) AM_WRITENOP
-
- AM_RANGE(0x00f3, 0x00f3) AM_WRITENOP
- AM_RANGE(0x00f7, 0x00f7) AM_WRITENOP
-
- AM_RANGE(0x00f8, 0x00f8) AM_READ_PORT("DSW2")
- AM_RANGE(0x00f9, 0x00f9) AM_READ_PORT("DSW3")
- AM_RANGE(0x00fa, 0x00fa) AM_READ_PORT("DSW4")
- AM_RANGE(0x00fb, 0x00fb) AM_READ_PORT("DSW5") //AM_WRITENOP
- AM_RANGE(0x00fc, 0x00fc) AM_WRITENOP
- AM_RANGE(0x00fd, 0x00fd) AM_WRITENOP
- AM_RANGE(0x00fe, 0x00fe) AM_WRITENOP
- AM_RANGE(0x00ff, 0x00ff) AM_WRITENOP
+void luckgrln_state::common_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x003f).ram(); // Z180 internal regs
+ map(0x0060, 0x0060).w(this, FUNC(luckgrln_state::output_w));
+
+ map(0x00a0, 0x00a0).w(this, FUNC(luckgrln_state::palette_offset_low_w));
+ map(0x00a1, 0x00a1).w(this, FUNC(luckgrln_state::palette_offset_high_w));
+ map(0x00a2, 0x00a2).w(this, FUNC(luckgrln_state::palette_w));
+
+ map(0x00b0, 0x00b0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x00b1, 0x00b1).w("crtc", FUNC(mc6845_device::register_w));
+
+ map(0x00b8, 0x00b8).portr("IN0");
+ map(0x00b9, 0x00b9).portr("IN1").w(this, FUNC(luckgrln_state::counters_w));
+ map(0x00ba, 0x00ba).portr("IN2").w(this, FUNC(luckgrln_state::lamps_a_w));
+ map(0x00bb, 0x00bb).portr("IN3").w(this, FUNC(luckgrln_state::lamps_b_w));
+ map(0x00bc, 0x00bc).portr("DSW1");
+
+ map(0x00c0, 0x00c3).nopw();
+ map(0x00c4, 0x00c7).nopw();
+ map(0x00c8, 0x00cb).nopw();
+ map(0x00cc, 0x00cf).nopw();
+
+ map(0x00d0, 0x00d3).nopw();
+ map(0x00d4, 0x00d7).nopw();
+ map(0x00d8, 0x00db).nopw();
+ map(0x00dc, 0x00df).nopw();
+
+ map(0x00e4, 0x00e7).nopw();
+
+ map(0x00f3, 0x00f3).nopw();
+ map(0x00f7, 0x00f7).nopw();
+
+ map(0x00f8, 0x00f8).portr("DSW2");
+ map(0x00f9, 0x00f9).portr("DSW3");
+ map(0x00fa, 0x00fa).portr("DSW4");
+ map(0x00fb, 0x00fb).portr("DSW5"); //AM_WRITENOP
+ map(0x00fc, 0x00fc).nopw();
+ map(0x00fd, 0x00fd).nopw();
+ map(0x00fe, 0x00fe).nopw();
+ map(0x00ff, 0x00ff).nopw();
/*
@@ -603,12 +606,13 @@ ADDRESS_MAP_START(luckgrln_state::common_portmap)
*/
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(luckgrln_state::luckgrln_io)
- AM_IMPORT_FROM( common_portmap )
- AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
-ADDRESS_MAP_END
+void luckgrln_state::luckgrln_io(address_map &map)
+{
+ common_portmap(map);
+ map(0x0090, 0x009f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+}
/* reads a bit 1 status there after every round played */
READ8_MEMBER(luckgrln_state::test_r)
@@ -616,10 +620,11 @@ READ8_MEMBER(luckgrln_state::test_r)
return 0xff;
}
-ADDRESS_MAP_START(luckgrln_state::_7smash_io)
- AM_IMPORT_FROM( common_portmap )
- AM_RANGE(0x66, 0x66) AM_READ(test_r)
-ADDRESS_MAP_END
+void luckgrln_state::_7smash_io(address_map &map)
+{
+ common_portmap(map);
+ map(0x66, 0x66).r(this, FUNC(luckgrln_state::test_r));
+}
static INPUT_PORTS_START( luckgrln )
PORT_START("IN0")
diff --git a/src/mame/drivers/lucky74.cpp b/src/mame/drivers/lucky74.cpp
index 020aace5b80..c48e7062f4c 100644
--- a/src/mame/drivers/lucky74.cpp
+++ b/src/mame/drivers/lucky74.cpp
@@ -926,31 +926,33 @@ INTERRUPT_GEN_MEMBER(lucky74_state::nmi_interrupt)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(lucky74_state::lucky74_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram") /* NVRAM */
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(lucky74_fg_videoram_w) AM_SHARE("fg_videoram") /* VRAM1-1 */
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(lucky74_fg_colorram_w) AM_SHARE("fg_colorram") /* VRAM1-2 */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lucky74_bg_videoram_w) AM_SHARE("bg_videoram") /* VRAM2-1 */
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lucky74_bg_colorram_w) AM_SHARE("bg_colorram") /* VRAM2-2 */
- AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports 0 & 1 */
- AM_RANGE(0xf080, 0xf083) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* DSW 1, 2 & 3 */
- AM_RANGE(0xf0c0, 0xf0c3) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* DSW 4 */
- AM_RANGE(0xf100, 0xf100) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */
- AM_RANGE(0xf200, 0xf203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports 2 & 4 */
- AM_RANGE(0xf300, 0xf300) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* YM2149 control */
- AM_RANGE(0xf500, 0xf500) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */
- AM_RANGE(0xf600, 0xf600) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) /* YM2149 (Input Port 1) */
- AM_RANGE(0xf700, 0xf701) AM_READWRITE(usart_8251_r, usart_8251_w) /* USART 8251 port */
- AM_RANGE(0xf800, 0xf803) AM_READWRITE(copro_sm7831_r, copro_sm7831_w) /* SM7831 Co-Processor */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lucky74_state::lucky74_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x05) AM_READWRITE(custom_09R81P_port_r, custom_09R81P_port_w) /* custom 09R81P (samples system) */
- AM_RANGE(0xff, 0xff) AM_RAM // presumably HS satellite control port (check patched in Lucky 74)
-ADDRESS_MAP_END
+void lucky74_state::lucky74_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().share("nvram"); /* NVRAM */
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(lucky74_state::lucky74_fg_videoram_w)).share("fg_videoram"); /* VRAM1-1 */
+ map(0xd800, 0xdfff).ram().w(this, FUNC(lucky74_state::lucky74_fg_colorram_w)).share("fg_colorram"); /* VRAM1-2 */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lucky74_state::lucky74_bg_videoram_w)).share("bg_videoram"); /* VRAM2-1 */
+ map(0xe800, 0xefff).ram().w(this, FUNC(lucky74_state::lucky74_bg_colorram_w)).share("bg_colorram"); /* VRAM2-2 */
+ 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(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(0xf400, 0xf400).w("aysnd", FUNC(ay8910_device::address_w)); /* YM2149 control */
+ map(0xf500, 0xf500).w("sn3", FUNC(sn76489_device::write)); /* 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(this, FUNC(lucky74_state::usart_8251_r), FUNC(lucky74_state::usart_8251_w)); /* USART 8251 port */
+ map(0xf800, 0xf803).rw(this, FUNC(lucky74_state::copro_sm7831_r), FUNC(lucky74_state::copro_sm7831_w)); /* SM7831 Co-Processor */
+}
+
+void lucky74_state::lucky74_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x05).rw(this, FUNC(lucky74_state::custom_09R81P_port_r), FUNC(lucky74_state::custom_09R81P_port_w)); /* custom 09R81P (samples system) */
+ map(0xff, 0xff).ram(); // presumably HS satellite control port (check patched in Lucky 74)
+}
/* unknown I/O byte R/W
diff --git a/src/mame/drivers/luckybal.cpp b/src/mame/drivers/luckybal.cpp
index 1f26a2d0ba0..b06cce32f84 100644
--- a/src/mame/drivers/luckybal.cpp
+++ b/src/mame/drivers/luckybal.cpp
@@ -322,17 +322,19 @@ public:
* Memory Map *
**************************************/
-ADDRESS_MAP_START(luckybal_state::main_map)
- AM_RANGE(0x0000, 0x57ff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM // 6264 SRAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(luckybal_state::main_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x90, 0x90) AM_WRITE(port90_bitswap_w)
- AM_RANGE(0xc0, 0xc3) AM_READWRITE(ppi_bitswap_r, ppi_bitswap_w)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("v9938", v9938_device, read, write)
-ADDRESS_MAP_END
+void luckybal_state::main_map(address_map &map)
+{
+ map(0x0000, 0x57ff).rom();
+ map(0xe000, 0xffff).ram(); // 6264 SRAM
+}
+
+void luckybal_state::main_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x90, 0x90).w(this, FUNC(luckybal_state::port90_bitswap_w));
+ map(0xc0, 0xc3).rw(this, FUNC(luckybal_state::ppi_bitswap_r), FUNC(luckybal_state::ppi_bitswap_w));
+ map(0xe0, 0xe3).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+}
/*
[:maincpu] ':maincpu' (00006): unmapped io memory write to 0010 = 00 & FF
[:maincpu] ':maincpu' (00009): unmapped io memory read from 0018 & FF
diff --git a/src/mame/drivers/lvcards.cpp b/src/mame/drivers/lvcards.cpp
index e29e0b73162..bea92d0daeb 100644
--- a/src/mame/drivers/lvcards.cpp
+++ b/src/mame/drivers/lvcards.cpp
@@ -148,43 +148,47 @@ READ8_MEMBER(lvcards_state::payout_r)
return m_result;
}
-ADDRESS_MAP_START(lvcards_state::ponttehk_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(lvcards_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(lvcards_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") AM_WRITENOP // lamps
- AM_RANGE(0xa002, 0xa002) AM_READ(payout_r) AM_WRITE(control_port_2a_w)//AM_WRITENOP // ???
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lvcards_state::lvcards_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(lvcards_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(lvcards_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lvcards_state::lvcards_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lvcards_state::lvpoker_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(lvcards_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(lvcards_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") AM_WRITENOP // lamps
- AM_RANGE(0xa002, 0xa002) AM_READ(payout_r) AM_WRITE(control_port_2_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROM
-ADDRESS_MAP_END
+void lvcards_state::ponttehk_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram");
+ map(0x8000, 0x83ff).ram().w(this, FUNC(lvcards_state::lvcards_videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(lvcards_state::lvcards_colorram_w)).share("colorram");
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1").nopw(); // lamps
+ map(0xa002, 0xa002).r(this, FUNC(lvcards_state::payout_r)).w(this, FUNC(lvcards_state::control_port_2a_w));//AM_WRITENOP // ???
+}
+
+void lvcards_state::lvcards_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram");
+ map(0x9000, 0x93ff).ram().w(this, FUNC(lvcards_state::lvcards_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(lvcards_state::lvcards_colorram_w)).share("colorram");
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1").nopw();
+ map(0xa002, 0xa002).portr("IN2").nopw();
+ map(0xc000, 0xdfff).rom();
+}
+
+void lvcards_state::lvcards_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
+
+void lvcards_state::lvpoker_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram");
+ map(0x9000, 0x93ff).ram().w(this, FUNC(lvcards_state::lvcards_videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(lvcards_state::lvcards_colorram_w)).share("colorram");
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1").nopw(); // lamps
+ map(0xa002, 0xa002).r(this, FUNC(lvcards_state::payout_r)).w(this, FUNC(lvcards_state::control_port_2_w));
+ map(0xc000, 0xdfff).rom();
+}
static INPUT_PORTS_START( lvcards )
PORT_START("IN0")
diff --git a/src/mame/drivers/lviv.cpp b/src/mame/drivers/lviv.cpp
index 84db4393cf1..55d09289878 100644
--- a/src/mame/drivers/lviv.cpp
+++ b/src/mame/drivers/lviv.cpp
@@ -297,18 +297,20 @@ Timings:
/* I/O ports */
-ADDRESS_MAP_START(lviv_state::io_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(lviv_io_r,lviv_io_w)
-ADDRESS_MAP_END
+void lviv_state::io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(lviv_state::lviv_io_r), FUNC(lviv_state::lviv_io_w));
+}
/* memory w/r functions */
-ADDRESS_MAP_START(lviv_state::lviv_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
+void lviv_state::lviv_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
/* keyboard input */
diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp
index 1460c349a19..582be57bd72 100644
--- a/src/mame/drivers/lwings.cpp
+++ b/src/mame/drivers/lwings.cpp
@@ -285,109 +285,114 @@ WRITE8_MEMBER(lwings_state::msm5205_w)
m_msm->vclk_w(0);
}
-ADDRESS_MAP_START(lwings_state::avengers_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdf80, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
- AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w)
-
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP /* ? */
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") AM_WRITE(avengers_protection_w)
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWB")
- AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWA") AM_WRITE(avengers_prot_bank_w)
- AM_RANGE(0xf80d, 0xf80d) AM_READWRITE(avengers_protection_r,avengers_adpcm_w)
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::lwings_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
- AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
- AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf80d, 0xf80d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::trojan_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdf80, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
- AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w)
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP //watchdog
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
- AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf80d, 0xf80d) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::lwings_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("2203a", ym2203_device, write)
- AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("2203b", ym2203_device, write)
- AM_RANGE(0xe006, 0xe006) AM_READ(avengers_soundlatch2_r) //AT: (avengers061gre)
- AM_RANGE(0xe006, 0xe006) AM_WRITEONLY AM_SHARE("soundlatch_2")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(lwings_state::fball_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
- AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
- AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf80c, 0xf80c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf80d, 0xf80d) AM_READ_PORT("P3") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf80e, 0xf80e) AM_READ_PORT("P4")
-
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
+void lwings_state::avengers_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdf7f).ram().share("spriteram");
+ map(0xdf80, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xf801).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf802, 0xf803).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf804, 0xf804).w(this, FUNC(lwings_state::trojan_bg2_scrollx_w));
+ map(0xf805, 0xf805).w(this, FUNC(lwings_state::trojan_bg2_image_w));
+
+ map(0xf808, 0xf808).portr("SERVICE").nopw(); /* ? */
+ map(0xf809, 0xf809).portr("P1").w(this, FUNC(lwings_state::avengers_protection_w));
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWB");
+ map(0xf80c, 0xf80c).portr("DSWA").w(this, FUNC(lwings_state::avengers_prot_bank_w));
+ map(0xf80d, 0xf80d).rw(this, FUNC(lwings_state::avengers_protection_r), FUNC(lwings_state::avengers_adpcm_w));
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
+
+void lwings_state::lwings_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+
+ map(0xf808, 0xf808).portr("SERVICE");
+ map(0xf809, 0xf809).portr("P1");
+ map(0xf808, 0xf809).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWA");
+ map(0xf80a, 0xf80b).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf80c, 0xf80c).portr("DSWB").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf80d, 0xf80d).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
+
+void lwings_state::trojan_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdf7f).ram().share("spriteram");
+ map(0xdf80, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+
+ map(0xf800, 0xf801).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf802, 0xf803).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf804, 0xf804).w(this, FUNC(lwings_state::trojan_bg2_scrollx_w));
+ map(0xf805, 0xf805).w(this, FUNC(lwings_state::trojan_bg2_image_w));
+ map(0xf808, 0xf808).portr("SERVICE").nopw(); //watchdog
+ map(0xf809, 0xf809).portr("P1");
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWA");
+ map(0xf80c, 0xf80c).portr("DSWB").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf80d, 0xf80d).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
+
+void lwings_state::lwings_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).w("2203a", FUNC(ym2203_device::write));
+ map(0xe002, 0xe003).w("2203b", FUNC(ym2203_device::write));
+ map(0xe006, 0xe006).r(this, FUNC(lwings_state::avengers_soundlatch2_r)); //AT: (avengers061gre)
+ map(0xe006, 0xe006).writeonly().share("soundlatch_2");
+}
+
+
+
+void lwings_state::fball_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+
+ map(0xf808, 0xf808).portr("SERVICE");
+ map(0xf809, 0xf809).portr("P1");
+ map(0xf808, 0xf809).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWA");
+ map(0xf80a, 0xf80b).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf80c, 0xf80c).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf80d, 0xf80d).portr("P3").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf80e, 0xf80e).portr("P4");
+
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
@@ -398,40 +403,45 @@ WRITE8_MEMBER(lwings_state::fball_oki_bank_w)
membank("samplebank")->set_entry((data >> 1) & 0x7);
}
-ADDRESS_MAP_START(lwings_state::fball_oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("samplebank")
-ADDRESS_MAP_END
+void lwings_state::fball_oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("samplebank");
+}
-ADDRESS_MAP_START(lwings_state::fball_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
+void lwings_state::fball_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- AM_RANGE(0xA000, 0xA000) AM_WRITE(fball_oki_bank_w)
+ map(0xA000, 0xA000).w(this, FUNC(lwings_state::fball_oki_bank_w));
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
+ map(0xc000, 0xc7ff).ram();
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+ map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* Yes, _no_ ram */
-ADDRESS_MAP_START(lwings_state::trojan_adpcm_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::avengers_adpcm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(avengers_adpcm_r)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::trojan_adpcm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w)
-ADDRESS_MAP_END
+void lwings_state::trojan_adpcm_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().nopw();
+}
+
+void lwings_state::avengers_adpcm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(lwings_state::avengers_adpcm_r));
+ map(0x01, 0x01).w(this, FUNC(lwings_state::msm5205_w));
+}
+
+void lwings_state::trojan_adpcm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w(this, FUNC(lwings_state::msm5205_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/lwriter.cpp b/src/mame/drivers/lwriter.cpp
index 4d449a01aa7..9f4bbd06cc8 100644
--- a/src/mame/drivers/lwriter.cpp
+++ b/src/mame/drivers/lwriter.cpp
@@ -201,30 +201,31 @@ The ADB bit-bang transceiver MCU connects to the VIA CB1 (adbclk) and CB2 (adbda
as well as PA0 (ST1), PA2 (ST2) and PA3 (ADB /INT)
*/
-ADDRESS_MAP_START(lwriter_state::maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_READWRITE(bankedarea_r, bankedarea_w)
- AM_RANGE(0x200000, 0x2fffff) AM_ROM AM_REGION("rom", 0) // 1MB ROM
+void lwriter_state::maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).rw(this, FUNC(lwriter_state::bankedarea_r), FUNC(lwriter_state::bankedarea_w));
+ map(0x200000, 0x2fffff).rom().region("rom", 0); // 1MB ROM
//AM_RANGE(0x300000, 0x3fffff) // open bus?
- AM_RANGE(0x400000, 0x5fffff) AM_RAM AM_REGION("dram", 0) AM_MIRROR(0x200000) // 2MB DRAM
- AM_RANGE(0x800000, 0x800001) AM_WRITE8(led_out_w, 0xff00) AM_MIRROR(0x1ffffe) // mirror is a guess given that the pals can only decode A18-A23
- AM_RANGE(0x800000, 0x800001) AM_WRITE8(fifo_out_w, 0x00ff) AM_MIRROR(0x1ffffe) // mirror is a guess given that the pals can only decode A18-A23
- AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("scc", scc8530_device, ca_w, 0x00ff) AM_MIRROR(0x1ffff8)
- AM_RANGE(0xc00004, 0xc00005) AM_DEVWRITE8("scc", scc8530_device, da_w, 0x00ff) AM_MIRROR(0x1ffff8)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREAD8 ("scc", scc8530_device, ca_r, 0xff00) AM_MIRROR(0x1ffff8)
- AM_RANGE(0xa00004, 0xa00005) AM_DEVREAD8 ("scc", scc8530_device, da_r, 0xff00) AM_MIRROR(0x1ffff8)
-
- AM_RANGE(0xc00002, 0xc00003) AM_DEVWRITE8("scc", scc8530_device, cb_w, 0x00ff) AM_MIRROR(0x1ffff8)
- AM_RANGE(0xc00006, 0xc00007) AM_DEVWRITE8("scc", scc8530_device, db_w, 0x00ff) AM_MIRROR(0x1ffff8)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREAD8 ("scc", scc8530_device, cb_r, 0xff00) AM_MIRROR(0x1ffff8)
- AM_RANGE(0xa00006, 0xa00007) AM_DEVREAD8 ("scc", scc8530_device, db_r, 0xff00) AM_MIRROR(0x1ffff8)
+ map(0x400000, 0x5fffff).ram().region("dram", 0).mirror(0x200000); // 2MB DRAM
+ map(0x800000, 0x800000).w(this, FUNC(lwriter_state::led_out_w)).mirror(0x1ffffe); // mirror is a guess given that the pals can only decode A18-A23
+ map(0x800001, 0x800001).w(this, FUNC(lwriter_state::fifo_out_w)).mirror(0x1ffffe); // mirror is a guess given that the pals can only decode A18-A23
+ map(0xc00001, 0xc00001).w(m_scc, FUNC(scc8530_device::ca_w)).mirror(0x1ffff8);
+ map(0xc00005, 0xc00005).w(m_scc, FUNC(scc8530_device::da_w)).mirror(0x1ffff8);
+ map(0xa00000, 0xa00000).r(m_scc, FUNC(scc8530_device::ca_r)).mirror(0x1ffff8);
+ map(0xa00004, 0xa00004).r(m_scc, FUNC(scc8530_device::da_r)).mirror(0x1ffff8);
+
+ map(0xc00003, 0xc00003).w(m_scc, FUNC(scc8530_device::cb_w)).mirror(0x1ffff8);
+ map(0xc00007, 0xc00007).w(m_scc, FUNC(scc8530_device::db_w)).mirror(0x1ffff8);
+ map(0xa00002, 0xa00002).r(m_scc, FUNC(scc8530_device::cb_r)).mirror(0x1ffff8);
+ map(0xa00006, 0xa00006).r(m_scc, FUNC(scc8530_device::db_r)).mirror(0x1ffff8);
#if TPI
- AM_RANGE(0xe00010, 0xe0001f) AM_DEVREADWRITE8 ("tpi", tpi6523_device, read, write, 0x00ff) AM_MIRROR(0x17ffe0) // Used on older boards, needs proper mapping
+ map(0xe00010, 0xe0001f).rw("tpi", FUNC(tpi6523_device::read), FUNC(tpi6523_device::write)).umask16(0x00ff).mirror(0x17ffe0); // Used on older boards, needs proper mapping
#else
- AM_RANGE(0xe00000, 0xe0001f) AM_DEVREADWRITE8 ("via", via6522_device, read, write, 0x00ff) AM_MIRROR(0x17ffe0)
+ map(0xe00000, 0xe0001f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0x00ff).mirror(0x17ffe0);
#endif
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( lwriter )
INPUT_PORTS_END
diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp
index 3e7d54aa1a6..9261ff1c2f2 100644
--- a/src/mame/drivers/lynx.cpp
+++ b/src/mame/drivers/lynx.cpp
@@ -18,15 +18,16 @@
#include "lynx.lh"
-ADDRESS_MAP_START(lynx_state::lynx_mem)
- AM_RANGE(0x0000, 0xfbff) AM_RAM AM_SHARE("mem_0000")
- AM_RANGE(0xfc00, 0xfcff) AM_RAM AM_SHARE("mem_fc00")
- AM_RANGE(0xfd00, 0xfdff) AM_RAM AM_SHARE("mem_fd00")
- AM_RANGE(0xfe00, 0xfff7) AM_READ_BANK("bank3") AM_WRITEONLY AM_SHARE("mem_fe00")
- AM_RANGE(0xfff8, 0xfff8) AM_RAM
- AM_RANGE(0xfff9, 0xfff9) AM_READWRITE(lynx_memory_config_r, lynx_memory_config_w)
- AM_RANGE(0xfffa, 0xffff) AM_READ_BANK("bank4") AM_WRITEONLY AM_SHARE("mem_fffa")
-ADDRESS_MAP_END
+void lynx_state::lynx_mem(address_map &map)
+{
+ map(0x0000, 0xfbff).ram().share("mem_0000");
+ map(0xfc00, 0xfcff).ram().share("mem_fc00");
+ map(0xfd00, 0xfdff).ram().share("mem_fd00");
+ map(0xfe00, 0xfff7).bankr("bank3").writeonly().share("mem_fe00");
+ map(0xfff8, 0xfff8).ram();
+ map(0xfff9, 0xfff9).rw(this, FUNC(lynx_state::lynx_memory_config_r), FUNC(lynx_state::lynx_memory_config_w));
+ map(0xfffa, 0xffff).bankr("bank4").writeonly().share("mem_fffa");
+}
static INPUT_PORTS_START( lynx )
PORT_START("JOY")
diff --git a/src/mame/drivers/m10.cpp b/src/mame/drivers/m10.cpp
index 8f6273edc03..d300f94a48d 100644
--- a/src/mame/drivers/m10.cpp
+++ b/src/mame/drivers/m10.cpp
@@ -525,47 +525,50 @@ INTERRUPT_GEN_MEMBER(m10_state::m15_interrupt)
*
*************************************/
-ADDRESS_MAP_START(m10_state::m10_main)
- AM_RANGE(0x0000, 0x02ff) AM_RAM AM_SHARE("memory") /* scratch ram */
- AM_RANGE(0x1000, 0x2fff) AM_ROM AM_SHARE("rom")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_SHARE("colorram") /* foreground colour */
- AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(m10_chargen_w) AM_SHARE("chargen") /* background ????? */
- AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW")
- AM_RANGE(0xa300, 0xa300) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa400, 0xa400) AM_WRITE(m10_ctrl_w) /* line at bottom of screen?, sound, flip screen */
- AM_RANGE(0xa500, 0xa500) AM_WRITE(m10_a500_w) /* ??? */
- AM_RANGE(0xa700, 0xa700) AM_READ(m10_a700_r)
- AM_RANGE(0xfc00, 0xffff) AM_ROM /* for the reset / interrupt vectors */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m10_state::m11_main)
- AM_RANGE(0x0000, 0x02ff) AM_RAM AM_SHARE("memory") /* scratch ram */
- AM_RANGE(0x1000, 0x2fff) AM_ROM AM_SHARE("rom")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_SHARE("colorram") /* foreground colour */
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("chargen") /* background ????? */
- AM_RANGE(0xa100, 0xa100) AM_WRITE(m11_a100_w) /* sound writes ???? */
- AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW")
- AM_RANGE(0xa300, 0xa300) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa400, 0xa400) AM_WRITE(m11_ctrl_w) /* line at bottom of screen?, sound, flip screen */
- AM_RANGE(0xa700, 0xa700) AM_READ(m11_a700_r)
- AM_RANGE(0xfc00, 0xffff) AM_ROM /* for the reset / interrupt vectors */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m10_state::m15_main)
- AM_RANGE(0x0000, 0x02ff) AM_RAM AM_SHARE("memory") /* scratch ram */
- AM_RANGE(0x1000, 0x33ff) AM_ROM AM_SHARE("rom")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_SHARE("colorram") /* foreground colour */
- AM_RANGE(0x5000, 0x57ff) AM_RAM_WRITE(m15_chargen_w) AM_SHARE("chargen") /* background ????? */
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2")
- AM_RANGE(0xa100, 0xa100) AM_WRITE(m15_a100_w) /* sound writes ???? */
- AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW")
- AM_RANGE(0xa300, 0xa300) AM_READ_PORT("P1")
- AM_RANGE(0xa400, 0xa400) AM_WRITE(m15_ctrl_w) /* sound, flip screen */
- AM_RANGE(0xfc00, 0xffff) AM_ROM /* for the reset / interrupt vectors */
-ADDRESS_MAP_END
+void m10_state::m10_main(address_map &map)
+{
+ map(0x0000, 0x02ff).ram().share("memory"); /* scratch ram */
+ map(0x1000, 0x2fff).rom().share("rom");
+ map(0x4000, 0x43ff).ram().share("videoram");
+ map(0x4800, 0x4bff).ram().w(this, FUNC(m10_state::m10_colorram_w)).share("colorram"); /* foreground colour */
+ map(0x5000, 0x53ff).ram().w(this, FUNC(m10_state::m10_chargen_w)).share("chargen"); /* background ????? */
+ map(0xa200, 0xa200).portr("DSW");
+ map(0xa300, 0xa300).portr("INPUTS");
+ map(0xa400, 0xa400).w(this, FUNC(m10_state::m10_ctrl_w)); /* line at bottom of screen?, sound, flip screen */
+ map(0xa500, 0xa500).w(this, FUNC(m10_state::m10_a500_w)); /* ??? */
+ map(0xa700, 0xa700).r(this, FUNC(m10_state::m10_a700_r));
+ map(0xfc00, 0xffff).rom(); /* for the reset / interrupt vectors */
+}
+
+void m10_state::m11_main(address_map &map)
+{
+ map(0x0000, 0x02ff).ram().share("memory"); /* scratch ram */
+ map(0x1000, 0x2fff).rom().share("rom");
+ map(0x4000, 0x43ff).ram().share("videoram");
+ map(0x4800, 0x4bff).ram().w(this, FUNC(m10_state::m10_colorram_w)).share("colorram"); /* foreground colour */
+ map(0x5000, 0x53ff).ram().share("chargen"); /* background ????? */
+ map(0xa100, 0xa100).w(this, FUNC(m10_state::m11_a100_w)); /* sound writes ???? */
+ map(0xa200, 0xa200).portr("DSW");
+ map(0xa300, 0xa300).portr("INPUTS");
+ map(0xa400, 0xa400).w(this, FUNC(m10_state::m11_ctrl_w)); /* line at bottom of screen?, sound, flip screen */
+ map(0xa700, 0xa700).r(this, FUNC(m10_state::m11_a700_r));
+ map(0xfc00, 0xffff).rom(); /* for the reset / interrupt vectors */
+}
+
+void m10_state::m15_main(address_map &map)
+{
+ map(0x0000, 0x02ff).ram().share("memory"); /* scratch ram */
+ map(0x1000, 0x33ff).rom().share("rom");
+ map(0x4000, 0x43ff).ram().share("videoram");
+ map(0x4800, 0x4bff).ram().w(this, FUNC(m10_state::m10_colorram_w)).share("colorram"); /* foreground colour */
+ map(0x5000, 0x57ff).ram().w(this, FUNC(m10_state::m15_chargen_w)).share("chargen"); /* background ????? */
+ map(0xa000, 0xa000).portr("P2");
+ map(0xa100, 0xa100).w(this, FUNC(m10_state::m15_a100_w)); /* sound writes ???? */
+ map(0xa200, 0xa200).portr("DSW");
+ map(0xa300, 0xa300).portr("P1");
+ map(0xa400, 0xa400).w(this, FUNC(m10_state::m15_ctrl_w)); /* sound, flip screen */
+ map(0xfc00, 0xffff).rom(); /* for the reset / interrupt vectors */
+}
/*************************************
*
diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp
index 16d3bd51900..b32c46ae64f 100644
--- a/src/mame/drivers/m107.cpp
+++ b/src/mame/drivers/m107.cpp
@@ -96,37 +96,40 @@ WRITE16_MEMBER(m107_state::sound_reset_w)
/*****************************************************************************/
-ADDRESS_MAP_START(m107_state::main_map)
- AM_RANGE(0x00000, 0x9ffff) AM_ROM
- AM_RANGE(0xa0000, 0xbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(vram_w) AM_SHARE("vram_data")
- AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */
- AM_RANGE(0xf8000, 0xf8fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf9000, 0xf9fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m107_state::main_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4")
- AM_RANGE(0x08, 0x09) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // answer from sound CPU
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(coincounter_w, 0x00ff)
- AM_RANGE(0x04, 0x05) AM_WRITENOP /* ??? 0008 */
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x9f) AM_WRITE(control_w)
- AM_RANGE(0xa0, 0xaf) AM_WRITENOP /* Written with 0's in interrupt */
- AM_RANGE(0xb0, 0xb1) AM_WRITE(spritebuffer_w)
- AM_RANGE(0xc0, 0xc3) AM_READNOP /* Only wpksoc: ticket related? */
- AM_RANGE(0xc0, 0xc1) AM_WRITE(sound_reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m107_state::dsoccr94_io_map)
- AM_IMPORT_FROM(main_portmap)
- AM_RANGE(0x06, 0x07) AM_WRITE8(bankswitch_w, 0x00ff)
-ADDRESS_MAP_END
+void m107_state::main_map(address_map &map)
+{
+ map(0x00000, 0x9ffff).rom();
+ map(0xa0000, 0xbffff).bankr("bank1");
+ map(0xd0000, 0xdffff).ram().w(this, FUNC(m107_state::vram_w)).share("vram_data");
+ map(0xe0000, 0xeffff).ram(); /* System ram */
+ map(0xf8000, 0xf8fff).ram().share("spriteram");
+ map(0xf9000, 0xf9fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffff0, 0xfffff).rom().region("maincpu", 0x7fff0);
+}
+
+void m107_state::main_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("P1_P2");
+ map(0x02, 0x03).portr("COINS_DSW3");
+ map(0x04, 0x05).portr("DSW");
+ map(0x06, 0x07).portr("P3_P4");
+ map(0x08, 0x08).r("soundlatch2", FUNC(generic_latch_8_device::read)); // answer from sound CPU
+ map(0x00, 0x00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m107_state::coincounter_w));
+ map(0x04, 0x05).nopw(); /* ??? 0008 */
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x9f).w(this, FUNC(m107_state::control_w));
+ map(0xa0, 0xaf).nopw(); /* Written with 0's in interrupt */
+ map(0xb0, 0xb1).w(this, FUNC(m107_state::spritebuffer_w));
+ map(0xc0, 0xc3).nopr(); /* Only wpksoc: ticket related? */
+ map(0xc0, 0xc1).w(this, FUNC(m107_state::sound_reset_w));
+}
+
+void m107_state::dsoccr94_io_map(address_map &map)
+{
+ main_portmap(map);
+ map(0x06, 0x06).w(this, FUNC(m107_state::bankswitch_w));
+}
/* same as M107 but with an extra i/o board */
WRITE16_MEMBER(m107_state::wpksoc_output_w)
@@ -139,31 +142,34 @@ WRITE16_MEMBER(m107_state::wpksoc_output_w)
popmessage("%04x",data);
}
-ADDRESS_MAP_START(m107_state::wpksoc_map)
- AM_IMPORT_FROM(main_map)
- AM_RANGE(0xf0000, 0xf0001) AM_READ_PORT("WPK_DSW0")
- AM_RANGE(0xf0002, 0xf0003) AM_READ_PORT("WPK_DSW1")
- AM_RANGE(0xf0004, 0xf0005) AM_READ_PORT("WPK_DSW2")
-ADDRESS_MAP_END
+void m107_state::wpksoc_map(address_map &map)
+{
+ main_map(map);
+ map(0xf0000, 0xf0001).portr("WPK_DSW0");
+ map(0xf0002, 0xf0003).portr("WPK_DSW1");
+ map(0xf0004, 0xf0005).portr("WPK_DSW2");
+}
-ADDRESS_MAP_START(m107_state::wpksoc_io_map)
- AM_IMPORT_FROM(main_portmap)
- AM_RANGE(0x22, 0x23) AM_WRITE(wpksoc_output_w)
- AM_RANGE(0xc0, 0xc1) AM_READ_PORT("WPK_IN0")
- AM_RANGE(0xc2, 0xc3) AM_READ_PORT("WPK_IN1")
-ADDRESS_MAP_END
+void m107_state::wpksoc_io_map(address_map &map)
+{
+ main_portmap(map);
+ map(0x22, 0x23).w(this, FUNC(m107_state::wpksoc_output_w));
+ map(0xc0, 0xc1).portr("WPK_IN0");
+ map(0xc2, 0xc3).portr("WPK_IN1");
+}
/******************************************************************************/
-ADDRESS_MAP_START(m107_state::sound_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM
- AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", iremga20_device, irem_ga20_r, irem_ga20_w, 0x00ff)
- AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0xa8044, 0xa8045) AM_DEVREADWRITE8("soundlatch", generic_latch_8_device, read, acknowledge_w, 0x00ff)
- AM_RANGE(0xa8046, 0xa8047) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0)
-ADDRESS_MAP_END
+void m107_state::sound_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0xa0000, 0xa3fff).ram();
+ map(0xa8000, 0xa803f).rw("irem", FUNC(iremga20_device::irem_ga20_r), FUNC(iremga20_device::irem_ga20_w)).umask16(0x00ff);
+ map(0xa8040, 0xa8043).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0xa8044, 0xa8044).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xa8046, 0xa8046).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0xffff0, 0xfffff).rom().region("soundcpu", 0x1fff0);
+}
/******************************************************************************/
diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp
index e034cfe83e5..56cc8c7ab84 100644
--- a/src/mame/drivers/m14.cpp
+++ b/src/mame/drivers/m14.cpp
@@ -300,21 +300,23 @@ WRITE8_MEMBER(m14_state::sound_w)
*
*************************************/
-ADDRESS_MAP_START(m14_state::m14_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(m14_vram_w) AM_SHARE("video_ram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m14_cram_w) AM_SHARE("color_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m14_state::m14_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("AN_PADDLE") AM_WRITE(ball_x_w)
- AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN0") AM_WRITE(ball_y_w)
- AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r) AM_WRITE(paddle_x_w)
- AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE(output_w)
- AM_RANGE(0xfc, 0xfc) AM_WRITE(sound_w)
-ADDRESS_MAP_END
+void m14_state::m14_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(m14_state::m14_vram_w)).share("video_ram");
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(m14_state::m14_cram_w)).share("color_ram");
+}
+
+void m14_state::m14_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf8, 0xf8).portr("AN_PADDLE").w(this, FUNC(m14_state::ball_x_w));
+ map(0xf9, 0xf9).portr("IN0").w(this, FUNC(m14_state::ball_y_w));
+ map(0xfa, 0xfa).r(this, FUNC(m14_state::m14_rng_r)).w(this, FUNC(m14_state::paddle_x_w));
+ map(0xfb, 0xfb).portr("DSW").w(this, FUNC(m14_state::output_w));
+ map(0xfc, 0xfc).w(this, FUNC(m14_state::sound_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp
index 695d29e1493..70b812d7891 100644
--- a/src/mame/drivers/m20.cpp
+++ b/src/mame/drivers/m20.cpp
@@ -319,17 +319,19 @@ B/W, 128K cards, 3 cards => 512K of memory:
*/
-ADDRESS_MAP_START(m20_state::m20_program_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000)
-ADDRESS_MAP_END
+void m20_state::m20_program_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x30000, 0x33fff).ram().share("videoram");
+ map(0x40000, 0x41fff).rom().region("maincpu", 0x00000);
+}
-ADDRESS_MAP_START(m20_state::m20_data_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000)
-ADDRESS_MAP_END
+void m20_state::m20_data_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x30000, 0x33fff).ram().share("videoram");
+ map(0x40000, 0x41fff).rom().region("maincpu", 0x00000);
+}
void m20_state::install_memory()
@@ -699,32 +701,33 @@ void m20_state::install_memory()
}
}
-ADDRESS_MAP_START(m20_state::m20_io)
- ADDRESS_MAP_UNMAP_HIGH
+void m20_state::m20_io(address_map &map)
+{
+ map.unmap_value_high();
- AM_RANGE(0x00, 0x07) AM_DEVREADWRITE8("fd1797", fd1797_device, read, write, 0x00ff)
+ map(0x00, 0x07).rw(m_fd1797, FUNC(fd1797_device::read), FUNC(fd1797_device::write)).umask16(0x00ff);
- AM_RANGE(0x20, 0x21) AM_READWRITE(port21_r, port21_w);
+ map(0x20, 0x21).rw(this, FUNC(m20_state::port21_r), FUNC(m20_state::port21_w));
- AM_RANGE(0x60, 0x61) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0x00ff)
- AM_RANGE(0x62, 0x63) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0xff00) // FIXME
- AM_RANGE(0x62, 0x63) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff)
- AM_RANGE(0x64, 0x65) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
+ map(0x61, 0x61).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x62, 0x62).w("crtc", FUNC(mc6845_device::address_w)); // FIXME
+ map(0x63, 0x63).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x64, 0x64).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- AM_RANGE(0x80, 0x87) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff)
+ map(0x80, 0x87).rw(m_i8255, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
- AM_RANGE(0xa0, 0xa1) AM_DEVREADWRITE8("i8251_1", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xa2, 0xa3) AM_DEVREADWRITE8("i8251_1", i8251_device, status_r, control_w, 0x00ff)
+ map(0xa1, 0xa1).rw(m_kbdi8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xa3, 0xa3).rw(m_kbdi8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
- AM_RANGE(0xc0, 0xc1) AM_DEVREADWRITE8("i8251_2", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xc2, 0xc3) AM_DEVREADWRITE8("i8251_2", i8251_device, status_r, control_w, 0x00ff)
+ map(0xc1, 0xc1).rw(m_ttyi8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc3, 0xc3).rw(m_ttyi8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
- AM_RANGE(0x120, 0x127) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
+ map(0x120, 0x127).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
- AM_RANGE(0x140, 0x143) AM_READWRITE(m20_i8259_r, m20_i8259_w)
+ map(0x140, 0x143).rw(this, FUNC(m20_state::m20_i8259_r), FUNC(m20_state::m20_i8259_w));
- AM_RANGE(0x3ffa, 0x3ffd) AM_DEVWRITE("apb", m20_8086_device, handshake_w)
-ADDRESS_MAP_END
+ map(0x3ffa, 0x3ffd).w(m_apb, FUNC(m20_8086_device::handshake_w));
+}
IRQ_CALLBACK_MEMBER(m20_state::m20_irq_callback)
{
diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp
index 4f7ce27b05d..da748f16081 100644
--- a/src/mame/drivers/m24.cpp
+++ b/src/mame/drivers/m24.cpp
@@ -175,25 +175,28 @@ WRITE_LINE_MEMBER(m24_state::halt_i86_w)
m_i86_halt = state ? true : false;
}
-ADDRESS_MAP_START(m24_state::m24_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m24_state::m24_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", pc_noppi_mb_device, map, 0xffff)
- AM_RANGE(0x0060, 0x0065) AM_READWRITE8(keyboard_r, keyboard_w, 0xffff)
- AM_RANGE(0x0066, 0x0067) AM_READ_PORT("DSW0")
- AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("mm58174an", mm58274c_device, read, write, 0xffff)
- AM_RANGE(0x80c0, 0x80c1) AM_DEVREADWRITE8("z8000_apb", m24_z8000_device, handshake_r, handshake_w, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m24_state::kbc_map)
- AM_RANGE(0x8000, 0x8fff) AM_READ(kbcdata_r)
- AM_RANGE(0xa000, 0xafff) AM_WRITE(kbcdata_w)
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION("kbc", 0)
-ADDRESS_MAP_END
+void m24_state::m24_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf8000, 0xfffff).rom().region("bios", 0);
+}
+
+void m24_state::m24_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0065).rw(this, 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(0x80c1, 0x80c1).rw(m_z8000_apb, FUNC(m24_z8000_device::handshake_r), FUNC(m24_z8000_device::handshake_w));
+}
+
+void m24_state::kbc_map(address_map &map)
+{
+ map(0x8000, 0x8fff).r(this, FUNC(m24_state::kbcdata_r));
+ map(0xa000, 0xafff).w(this, FUNC(m24_state::kbcdata_w));
+ map(0xf800, 0xffff).rom().region("kbc", 0);
+}
static INPUT_PORTS_START( m24 )
PORT_START("DSW0")
diff --git a/src/mame/drivers/m3.cpp b/src/mame/drivers/m3.cpp
index d95f02b0350..f28e27891fa 100644
--- a/src/mame/drivers/m3.cpp
+++ b/src/mame/drivers/m3.cpp
@@ -40,17 +40,19 @@ private:
required_device<palette_device> m_palette;
};
-ADDRESS_MAP_START(m3_state::mem_map)
- AM_RANGE(0x0000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m3_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK (0xff)
- AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x85, 0x85) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+void m3_state::mem_map(address_map &map)
+{
+ map(0x0000, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().share("videoram");
+ map(0xf000, 0xffff).rom().region("roms", 0);
+}
+
+void m3_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x84, 0x84).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x85, 0x85).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
static INPUT_PORTS_START( m3 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp
index b21d99b68e6..b42bec05d3c 100644
--- a/src/mame/drivers/m5.cpp
+++ b/src/mame/drivers/m5.cpp
@@ -697,69 +697,73 @@ WRITE8_MEMBER( m5_state::mem64KRX_w ) //out 0x7f
// ADDRESS_MAP( m5_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(m5_state::m5_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bank1r") AM_WRITE_BANK("bank1w") //monitor rom(bios)
- AM_RANGE(0x2000, 0x3fff) AM_READ_BANK("bank2r") AM_WRITE_BANK("bank2w")
- AM_RANGE(0x4000, 0x5fff) AM_READ_BANK("bank3r") AM_WRITE_BANK("bank3w")
- AM_RANGE(0x6000, 0x6fff) AM_READ_BANK("bank4r") AM_WRITE_BANK("bank4w")
- AM_RANGE(0x7000, 0x7fff) AM_RAM //4kb internal RAM
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank5r") AM_WRITE_BANK("bank5w")
- AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank6r") AM_WRITE_BANK("bank6w")
-ADDRESS_MAP_END
+void m5_state::m5_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankr("bank1r").bankw("bank1w"); //monitor rom(bios)
+ map(0x2000, 0x3fff).bankr("bank2r").bankw("bank2w");
+ map(0x4000, 0x5fff).bankr("bank3r").bankw("bank3w");
+ map(0x6000, 0x6fff).bankr("bank4r").bankw("bank4w");
+ map(0x7000, 0x7fff).ram(); //4kb internal RAM
+ map(0x8000, 0xbfff).bankr("bank5r").bankw("bank5w");
+ map(0xc000, 0xffff).bankr("bank6r").bankw("bank6w");
+}
//-------------------------------------------------
// ADDRESS_MAP( m5_io )
//-------------------------------------------------
-ADDRESS_MAP_START(m5_state::m5_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0x08) AM_READ_PORT("Y0") AM_WRITE( mem64KBF_w) // 64KBF paging
- AM_RANGE(0x31, 0x31) AM_MIRROR(0x08) AM_READ_PORT("Y1")
- AM_RANGE(0x32, 0x32) AM_MIRROR(0x08) AM_READ_PORT("Y2")
- AM_RANGE(0x33, 0x33) AM_MIRROR(0x08) AM_READ_PORT("Y3")
- AM_RANGE(0x34, 0x34) AM_MIRROR(0x08) AM_READ_PORT("Y4")
- AM_RANGE(0x35, 0x35) AM_MIRROR(0x08) AM_READ_PORT("Y5")
- AM_RANGE(0x36, 0x36) AM_MIRROR(0x08) AM_READ_PORT("Y6")
- AM_RANGE(0x37, 0x37) AM_MIRROR(0x08) AM_READ_PORT("JOY")
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READWRITE(sts_r, com_w)
+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, 0x10).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x11, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x30, 0x30).mirror(0x08).portr("Y0").w(this, FUNC(m5_state::mem64KBF_w)); // 64KBF paging
+ map(0x31, 0x31).mirror(0x08).portr("Y1");
+ map(0x32, 0x32).mirror(0x08).portr("Y2");
+ map(0x33, 0x33).mirror(0x08).portr("Y3");
+ map(0x34, 0x34).mirror(0x08).portr("Y4");
+ map(0x35, 0x35).mirror(0x08).portr("Y5");
+ map(0x36, 0x36).mirror(0x08).portr("Y6");
+ map(0x37, 0x37).mirror(0x08).portr("JOY");
+ map(0x40, 0x40).mirror(0x0f).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x50, 0x50).mirror(0x0f).rw(this, FUNC(m5_state::sts_r), FUNC(m5_state::com_w));
// AM_RANGE(0x60, 0x63) SIO
- AM_RANGE(0x6c, 0x6c) AM_READWRITE(mem64KBI_r, mem64KBI_w) //EM-64/64KBI paging
- AM_RANGE(0x70, 0x73) /*AM_MIRROR(0x0c) don't know if necessary mirror this*/ AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0x7f, 0x7f) AM_WRITE( mem64KRX_w) //64KRD/64KRX paging
-ADDRESS_MAP_END
+ map(0x6c, 0x6c).rw(this, FUNC(m5_state::mem64KBI_r), FUNC(m5_state::mem64KBI_w)); //EM-64/64KBI paging
+ map(0x70, 0x73) /*.mirror(0x0c) don't know if necessary mirror this*/ .rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7f, 0x7f).w(this, FUNC(m5_state::mem64KRX_w)); //64KRD/64KRX paging
+}
//-------------------------------------------------
// ADDRESS_MAP( fd5_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(m5_state::fd5_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void m5_state::fd5_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0xffff).ram();
+}
//-------------------------------------------------
// ADDRESS_MAP( fd5_io )
//-------------------------------------------------
-ADDRESS_MAP_START(m5_state::fd5_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVICE(UPD765_TAG, upd765a_device, map)
- AM_RANGE(0x10, 0x10) AM_READWRITE(fd5_data_r, fd5_data_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(fd5_com_w)
- AM_RANGE(0x30, 0x30) AM_READ(fd5_com_r)
- AM_RANGE(0x40, 0x40) AM_WRITE(fd5_ctrl_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(fd5_tc_w)
-ADDRESS_MAP_END
+void m5_state::fd5_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x10, 0x10).rw(this, FUNC(m5_state::fd5_data_r), FUNC(m5_state::fd5_data_w));
+ map(0x20, 0x20).w(this, FUNC(m5_state::fd5_com_w));
+ map(0x30, 0x30).r(this, FUNC(m5_state::fd5_com_r));
+ map(0x40, 0x40).w(this, FUNC(m5_state::fd5_ctrl_w));
+ map(0x50, 0x50).w(this, FUNC(m5_state::fd5_tc_w));
+}
@@ -1006,54 +1010,56 @@ static const z80_daisy_config m5_daisy_chain[] =
//-------------------------------------------------
-ADDRESS_MAP_START(brno_state::m5_mem_brno)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_READWRITE_BANK("bank1")
- AM_RANGE(0x1000, 0x1fff) AM_READWRITE_BANK("bank2")
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE_BANK("bank3")
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE_BANK("bank4")
- AM_RANGE(0x4000, 0x4fff) AM_READWRITE_BANK("bank5")
- AM_RANGE(0x5000, 0x5fff) AM_READWRITE_BANK("bank6")
- AM_RANGE(0x6000, 0x6fff) AM_READWRITE_BANK("bank7")
- AM_RANGE(0x7000, 0x7fff) AM_READWRITE_BANK("bank8")
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE_BANK("bank9")
- AM_RANGE(0x9000, 0x9fff) AM_READWRITE_BANK("bank10")
- AM_RANGE(0xa000, 0xafff) AM_READWRITE_BANK("bank11")
- AM_RANGE(0xb000, 0xbfff) AM_READWRITE_BANK("bank12")
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE_BANK("bank13")
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE_BANK("bank14")
- AM_RANGE(0xe000, 0xefff) AM_READWRITE_BANK("bank15")
- AM_RANGE(0xf000, 0xffff) AM_READWRITE_BANK("bank16")
-ADDRESS_MAP_END
+void brno_state::m5_mem_brno(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("bank1");
+ map(0x1000, 0x1fff).bankrw("bank2");
+ map(0x2000, 0x2fff).bankrw("bank3");
+ map(0x3000, 0x3fff).bankrw("bank4");
+ map(0x4000, 0x4fff).bankrw("bank5");
+ map(0x5000, 0x5fff).bankrw("bank6");
+ map(0x6000, 0x6fff).bankrw("bank7");
+ map(0x7000, 0x7fff).bankrw("bank8");
+ map(0x8000, 0x8fff).bankrw("bank9");
+ map(0x9000, 0x9fff).bankrw("bank10");
+ map(0xa000, 0xafff).bankrw("bank11");
+ map(0xb000, 0xbfff).bankrw("bank12");
+ map(0xc000, 0xcfff).bankrw("bank13");
+ map(0xd000, 0xdfff).bankrw("bank14");
+ map(0xe000, 0xefff).bankrw("bank15");
+ map(0xf000, 0xffff).bankrw("bank16");
+}
//-------------------------------------------------
// ADDRESS_MAP( brno_io )
//-------------------------------------------------
-ADDRESS_MAP_START(brno_state::brno_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- AM_RANGE(0x30, 0x30) AM_READ_PORT("Y0")
- AM_RANGE(0x31, 0x31) AM_READ_PORT("Y1")
- AM_RANGE(0x32, 0x32) AM_READ_PORT("Y2")
- AM_RANGE(0x33, 0x33) AM_READ_PORT("Y3")
- AM_RANGE(0x34, 0x34) AM_READ_PORT("Y4")
- AM_RANGE(0x35, 0x35) AM_READ_PORT("Y5")
- AM_RANGE(0x36, 0x36) AM_READ_PORT("Y6")
- AM_RANGE(0x37, 0x37) AM_READ_PORT("JOY")
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READWRITE(sts_r, com_w)
+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, 0x10).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x11, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x30, 0x30).portr("Y0");
+ map(0x31, 0x31).portr("Y1");
+ map(0x32, 0x32).portr("Y2");
+ map(0x33, 0x33).portr("Y3");
+ map(0x34, 0x34).portr("Y4");
+ map(0x35, 0x35).portr("Y5");
+ map(0x36, 0x36).portr("Y6");
+ map(0x37, 0x37).portr("JOY");
+ map(0x40, 0x40).mirror(0x0f).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x50, 0x50).mirror(0x0f).rw(this, FUNC(brno_state::sts_r), FUNC(brno_state::com_w));
// AM_RANGE(0x60, 0x63) // SIO
- AM_RANGE(0x64, 0x67) AM_READWRITE(mmu_r, mmu_w) // MMU - page select (ramdisk memory paging)
- AM_RANGE(0x68, 0x6b) AM_READWRITE(ramsel_r, ramsel_w) // CASEN 0=access to ramdisk enabled, 0xff=ramdisk access disabled(data protection), &80=ROM2+48k RAM, &81=ROM2+4k RAM
- AM_RANGE(0x6c, 0x6f) AM_READWRITE(romsel_r, romsel_w) // RAMEN 0=rom enable; 0xff=rom+sord ram disabled (ramdisk visible)
+ map(0x64, 0x67).rw(this, FUNC(brno_state::mmu_r), FUNC(brno_state::mmu_w)); // MMU - page select (ramdisk memory paging)
+ map(0x68, 0x6b).rw(this, FUNC(brno_state::ramsel_r), FUNC(brno_state::ramsel_w)); // CASEN 0=access to ramdisk enabled, 0xff=ramdisk access disabled(data protection), &80=ROM2+48k RAM, &81=ROM2+4k RAM
+ map(0x6c, 0x6f).rw(this, FUNC(brno_state::romsel_r), FUNC(brno_state::romsel_w)); // RAMEN 0=rom enable; 0xff=rom+sord ram disabled (ramdisk visible)
// AM_RANGE(0x70, 0x73) AM_MIRROR(0x04) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) // PIO
- AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE(WD2797_TAG, wd_fdc_device_base, read, write) // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data
- AM_RANGE(0x7c, 0x7c) AM_READWRITE(fd_r, fd_w) // drive select
-ADDRESS_MAP_END
+ map(0x78, 0x7b).rw(m_fdc, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)); // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data
+ map(0x7c, 0x7c).rw(this, FUNC(brno_state::fd_r), FUNC(brno_state::fd_w)); // drive select
+}
READ8_MEMBER( brno_state::mmu_r )
diff --git a/src/mame/drivers/m52.cpp b/src/mame/drivers/m52.cpp
index 77d7e994e68..9b3d685af48 100644
--- a/src/mame/drivers/m52.cpp
+++ b/src/mame/drivers/m52.cpp
@@ -60,47 +60,50 @@
*
*************************************/
-ADDRESS_MAP_START(m52_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r)
- AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w) /* + coin counters */
- AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0")
- AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07f8) AM_READ_PORT("IN1")
- AM_RANGE(0xd002, 0xd002) AM_MIRROR(0x07f8) AM_READ_PORT("IN2")
- AM_RANGE(0xd003, 0xd003) AM_MIRROR(0x07f8) AM_READ_PORT("DSW1")
- AM_RANGE(0xd004, 0xd004) AM_MIRROR(0x07f8) AM_READ_PORT("DSW2")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(m52_state::alpha1v_map)
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r) // result is ignored
- AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram") // bigger or mirrored?
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w)
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2")
- AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1")
- AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2")
- AM_RANGE(0xe000, 0xefff) AM_RAM // bigger or mirrored?
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(m52_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x1f) AM_WRITE(m52_scroll_w)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x1f) AM_WRITE(m52_bg1xpos_w)
- AM_RANGE(0x60, 0x60) AM_MIRROR(0x1f) AM_WRITE(m52_bg1ypos_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_WRITE(m52_bg2xpos_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1f) AM_WRITE(m52_bg2ypos_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_WRITE(m52_bgcontrol_w)
-ADDRESS_MAP_END
+void m52_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(m52_state::m52_videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(m52_state::m52_colorram_w)).share("colorram");
+ map(0x8800, 0x8800).mirror(0x07ff).r(this, FUNC(m52_state::m52_protection_r));
+ map(0xc800, 0xcbff).mirror(0x0400).writeonly().share("spriteram");
+ map(0xd000, 0xd000).mirror(0x07fc).w("irem_audio", FUNC(irem_audio_device::cmd_w));
+ map(0xd001, 0xd001).mirror(0x07fc).w(this, FUNC(m52_state::m52_flipscreen_w)); /* + coin counters */
+ map(0xd000, 0xd000).mirror(0x07f8).portr("IN0");
+ map(0xd001, 0xd001).mirror(0x07f8).portr("IN1");
+ map(0xd002, 0xd002).mirror(0x07f8).portr("IN2");
+ map(0xd003, 0xd003).mirror(0x07f8).portr("DSW1");
+ map(0xd004, 0xd004).mirror(0x07f8).portr("DSW2");
+ map(0xe000, 0xe7ff).ram();
+}
+
+
+void m52_state::alpha1v_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(m52_state::m52_videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(m52_state::m52_colorram_w)).share("colorram");
+ map(0x8800, 0x8800).mirror(0x07ff).r(this, FUNC(m52_state::m52_protection_r)); // result is ignored
+ map(0xc800, 0xc9ff).writeonly().share("spriteram"); // bigger or mirrored?
+ map(0xd000, 0xd000).portr("IN0").w("irem_audio", FUNC(irem_audio_device::cmd_w));
+ map(0xd001, 0xd001).portr("IN1").w(this, FUNC(m52_state::alpha1v_flipscreen_w));
+ map(0xd002, 0xd002).portr("IN2");
+ map(0xd003, 0xd003).portr("DSW1");
+ map(0xd004, 0xd004).portr("DSW2");
+ map(0xe000, 0xefff).ram(); // bigger or mirrored?
+}
+
+
+void m52_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x1f).w(this, FUNC(m52_state::m52_scroll_w));
+ map(0x40, 0x40).mirror(0x1f).w(this, FUNC(m52_state::m52_bg1xpos_w));
+ map(0x60, 0x60).mirror(0x1f).w(this, FUNC(m52_state::m52_bg1ypos_w));
+ map(0x80, 0x80).mirror(0x1f).w(this, FUNC(m52_state::m52_bg2xpos_w));
+ map(0xa0, 0xa0).mirror(0x1f).w(this, FUNC(m52_state::m52_bg2ypos_w));
+ map(0xc0, 0xc0).mirror(0x1f).w(this, FUNC(m52_state::m52_bgcontrol_w));
+}
diff --git a/src/mame/drivers/m57.cpp b/src/mame/drivers/m57.cpp
index 82ca3b04ca0..6f7ba22674b 100644
--- a/src/mame/drivers/m57.cpp
+++ b/src/mame/drivers/m57.cpp
@@ -69,20 +69,21 @@
*
*************************************/
-ADDRESS_MAP_START(m57_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(m57_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0xc820, 0xc8ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(m57_flipscreen_w) /* + coin counters */
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1")
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2")
- AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1")
- AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
+void m57_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(m57_state::m57_videoram_w)).share("videoram");
+ map(0x9000, 0x91ff).ram().share("scrollram");
+ map(0xc820, 0xc8ff).writeonly().share("spriteram");
+ map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w));
+ map(0xd001, 0xd001).w(this, FUNC(m57_state::m57_flipscreen_w)); /* + coin counters */
+ map(0xd000, 0xd000).portr("IN0");
+ map(0xd001, 0xd001).portr("IN1");
+ map(0xd002, 0xd002).portr("IN2");
+ map(0xd003, 0xd003).portr("DSW1");
+ map(0xd004, 0xd004).portr("DSW2");
+ map(0xe000, 0xe7ff).ram();
+}
diff --git a/src/mame/drivers/m58.cpp b/src/mame/drivers/m58.cpp
index 9ea823bee8c..bfece67a6aa 100644
--- a/src/mame/drivers/m58.cpp
+++ b/src/mame/drivers/m58.cpp
@@ -27,24 +27,25 @@
*
*************************************/
-ADDRESS_MAP_START(m58_state::yard_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(scroll_panel_w)
- AM_RANGE(0xc820, 0xc87f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa000, 0xa000) AM_RAM AM_SHARE("scroll_x_low")
- AM_RANGE(0xa200, 0xa200) AM_RAM AM_SHARE("scroll_x_high")
- AM_RANGE(0xa400, 0xa400) AM_RAM AM_SHARE("scroll_y_low")
- AM_RANGE(0xa800, 0xa800) AM_RAM AM_SHARE("score_disable")
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(flipscreen_w) /* + coin counters */
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1")
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2")
- AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1")
- AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
+void m58_state::yard_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(m58_state::videoram_w)).share("videoram");
+ map(0x9000, 0x9fff).w(this, FUNC(m58_state::scroll_panel_w));
+ map(0xc820, 0xc87f).ram().share("spriteram");
+ map(0xa000, 0xa000).ram().share("scroll_x_low");
+ map(0xa200, 0xa200).ram().share("scroll_x_high");
+ map(0xa400, 0xa400).ram().share("scroll_y_low");
+ map(0xa800, 0xa800).ram().share("score_disable");
+ map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w));
+ map(0xd001, 0xd001).w(this, FUNC(m58_state::flipscreen_w)); /* + coin counters */
+ map(0xd000, 0xd000).portr("IN0");
+ map(0xd001, 0xd001).portr("IN1");
+ map(0xd002, 0xd002).portr("IN2");
+ map(0xd003, 0xd003).portr("DSW1");
+ map(0xd004, 0xd004).portr("DSW2");
+ map(0xe000, 0xefff).ram();
+}
diff --git a/src/mame/drivers/m62.cpp b/src/mame/drivers/m62.cpp
index 00f5c273b62..439e1a26b99 100644
--- a/src/mame/drivers/m62.cpp
+++ b/src/mame/drivers/m62.cpp
@@ -173,204 +173,223 @@ WRITE8_MEMBER(m62_state::youjyudn_bankswitch_w)
}
-ADDRESS_MAP_START(m62_state::kungfum_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(m62_hscroll_low_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(m62_hscroll_high_w)
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
+void m62_state::kungfum_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(m62_state::m62_hscroll_low_w));
+ map(0xb000, 0xb000).w(this, FUNC(m62_state::m62_hscroll_high_w));
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
/* Kung Fu Master is the only game in this driver to have separated (but */
/* contiguous) videoram and colorram. They are interleaved in all the others. */
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::kungfum_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::battroad_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::battroad_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x80, 0x80) AM_WRITE(m62_vscroll_low_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_high_w)
- AM_RANGE(0x82, 0x82) AM_WRITE(m62_hscroll_low_w)
- AM_RANGE(0x83, 0x83) AM_WRITE(battroad_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x80, 0x80) AM_READ(ldrun2_bankswitch_r)
- AM_RANGE(0x80, 0x81) AM_WRITE(ldrun2_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun3_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc800, 0xc800) AM_READ(ldrun3_prot_5_r)
- AM_RANGE(0xcc00, 0xcc00) AM_READ(ldrun3_prot_7_r)
- AM_RANGE(0xcfff, 0xcfff) AM_READ(ldrun3_prot_7_r)
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xefff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun3_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x80, 0x80) AM_WRITE(m62_vscroll_low_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(ldrun3_topbottom_mask_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun4_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xc800) AM_WRITE(ldrun4_bankswitch_w)
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::ldrun4_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x82, 0x82) AM_WRITE(m62_hscroll_high_w)
- AM_RANGE(0x83, 0x83) AM_WRITE(m62_hscroll_low_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::lotlot_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::kidniki_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::kidniki_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x80, 0x80) AM_WRITE(m62_hscroll_low_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_high_w)
- AM_RANGE(0x82, 0x82) AM_WRITE(kidniki_text_vscroll_low_w)
- AM_RANGE(0x83, 0x83) AM_WRITE(kidniki_text_vscroll_high_w)
- AM_RANGE(0x84, 0x84) AM_WRITE(kidniki_background_bank_w)
- AM_RANGE(0x85, 0x85) AM_WRITE(kidniki_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::spelunkr_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram")
- AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_vscroll_high_w)
- AM_RANGE(0xd002, 0xd002) AM_WRITE(m62_hscroll_low_w)
- AM_RANGE(0xd003, 0xd003) AM_WRITE(m62_hscroll_high_w)
- AM_RANGE(0xd004, 0xd004) AM_WRITE(spelunkr_bankswitch_w)
- AM_RANGE(0xd005, 0xd005) AM_WRITE(spelunkr_palbank_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::spelunk2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("bank1")
- AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank2")
- AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram")
- AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_hscroll_low_w)
- AM_RANGE(0xd002, 0xd002) AM_WRITE(spelunk2_gfxport_w)
- AM_RANGE(0xd003, 0xd003) AM_WRITE(spelunk2_bankswitch_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::youjyudn_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::youjyudn_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x80, 0x80) AM_WRITE(m62_hscroll_high_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_low_w)
- AM_RANGE(0x83, 0x83) AM_WRITE(youjyudn_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m62_state::horizon_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xc83f) AM_RAM_WRITE(horizon_scrollram_w) AM_SHARE("scrollram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::kungfum_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::kungfum_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+}
+
+void m62_state::battroad_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::battroad_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x80, 0x80).w(this, FUNC(m62_state::m62_vscroll_low_w));
+ map(0x81, 0x81).w(this, FUNC(m62_state::m62_hscroll_high_w));
+ map(0x82, 0x82).w(this, FUNC(m62_state::m62_hscroll_low_w));
+ map(0x83, 0x83).w(this, FUNC(m62_state::battroad_bankswitch_w));
+}
+
+void m62_state::ldrun_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::ldrun2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::ldrun2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x80, 0x80).r(this, FUNC(m62_state::ldrun2_bankswitch_r));
+ map(0x80, 0x81).w(this, FUNC(m62_state::ldrun2_bankswitch_w));
+}
+
+void m62_state::ldrun3_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc800, 0xc800).r(this, FUNC(m62_state::ldrun3_prot_5_r));
+ map(0xcc00, 0xcc00).r(this, FUNC(m62_state::ldrun3_prot_7_r));
+ map(0xcfff, 0xcfff).r(this, FUNC(m62_state::ldrun3_prot_7_r));
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xd000, 0xefff).ram();
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+}
+
+void m62_state::ldrun3_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x80, 0x80).w(this, FUNC(m62_state::m62_vscroll_low_w));
+ map(0x81, 0x81).w(this, FUNC(m62_state::ldrun3_topbottom_mask_w));
+}
+
+void m62_state::ldrun4_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xc800, 0xc800).w(this, FUNC(m62_state::ldrun4_bankswitch_w));
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::ldrun4_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x82, 0x82).w(this, FUNC(m62_state::m62_hscroll_high_w));
+ map(0x83, 0x83).w(this, FUNC(m62_state::m62_hscroll_low_w));
+}
+
+void m62_state::lotlot_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xafff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::kidniki_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xafff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::kidniki_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x80, 0x80).w(this, FUNC(m62_state::m62_hscroll_low_w));
+ map(0x81, 0x81).w(this, FUNC(m62_state::m62_hscroll_high_w));
+ map(0x82, 0x82).w(this, FUNC(m62_state::kidniki_text_vscroll_low_w));
+ map(0x83, 0x83).w(this, FUNC(m62_state::kidniki_text_vscroll_high_w));
+ map(0x84, 0x84).w(this, FUNC(m62_state::kidniki_background_bank_w));
+ map(0x85, 0x85).w(this, FUNC(m62_state::kidniki_bankswitch_w));
+}
+
+void m62_state::spelunkr_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram");
+ map(0xd000, 0xd000).w(this, FUNC(m62_state::m62_vscroll_low_w));
+ map(0xd001, 0xd001).w(this, FUNC(m62_state::m62_vscroll_high_w));
+ map(0xd002, 0xd002).w(this, FUNC(m62_state::m62_hscroll_low_w));
+ map(0xd003, 0xd003).w(this, FUNC(m62_state::m62_hscroll_high_w));
+ map(0xd004, 0xd004).w(this, FUNC(m62_state::spelunkr_bankswitch_w));
+ map(0xd005, 0xd005).w(this, FUNC(m62_state::spelunkr_palbank_w));
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::spelunk2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).bankr("bank1");
+ map(0x9000, 0x9fff).bankr("bank2");
+ map(0xa000, 0xbfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram");
+ map(0xd000, 0xd000).w(this, FUNC(m62_state::m62_vscroll_low_w));
+ map(0xd001, 0xd001).w(this, FUNC(m62_state::m62_hscroll_low_w));
+ map(0xd002, 0xd002).w(this, FUNC(m62_state::spelunk2_gfxport_w));
+ map(0xd003, 0xd003).w(this, FUNC(m62_state::spelunk2_bankswitch_w));
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::youjyudn_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc0ff).writeonly().share("spriteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
+
+void m62_state::youjyudn_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w));
+ map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */
+ map(0x02, 0x02).portr("P2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x80, 0x80).w(this, FUNC(m62_state::m62_hscroll_high_w));
+ map(0x81, 0x81).w(this, FUNC(m62_state::m62_hscroll_low_w));
+ map(0x83, 0x83).w(this, FUNC(m62_state::youjyudn_bankswitch_w));
+}
+
+void m62_state::horizon_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc1ff).ram().share("spriteram");
+ map(0xc800, 0xc83f).ram().w(this, FUNC(m62_state::horizon_scrollram_w)).share("scrollram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram");
+ map(0xe000, 0xefff).ram();
+}
static INPUT_PORTS_START( common )
diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp
index 2d62e2f0e6d..96bf59c153d 100644
--- a/src/mame/drivers/m63.cpp
+++ b/src/mame/drivers/m63.cpp
@@ -472,52 +472,56 @@ WRITE_LINE_MEMBER(m63_state::nmi_mask_w)
}
-ADDRESS_MAP_START(m63_state::m63_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe1ff) AM_RAM
- AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xf000, 0xf007) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITENOP /* continues game when in stop mode (cleared by NMI handler) */
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("DSW1")
- AM_RANGE(0xf803, 0xf803) AM_WRITE(snd_irq_w)
- AM_RANGE(0xf806, 0xf806) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m63_state::fghtbskt_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd1ff) AM_RAM
- AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xf000, 0xf000) AM_READ(snd_status_r)
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P1")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2")
- AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW")
- AM_RANGE(0xf000, 0xf000) AM_WRITE(snd_irq_w)
- AM_RANGE(0xf001, 0xf001) AM_WRITENOP
- AM_RANGE(0xf002, 0xf002) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf800, 0xf807) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xf807, 0xf807) AM_WRITE(fghtbskt_samples_w) // FIXME
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m63_state::i8039_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(m63_state::i8039_port_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(snddata_r, snddata_w)
-ADDRESS_MAP_END
+void m63_state::m63_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xe1ff).ram();
+ map(0xe200, 0xe2ff).ram().share("spriteram");
+ map(0xe300, 0xe3ff).ram().share("scrollram");
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(m63_state::m63_videoram2_w)).share("videoram2");
+ map(0xe800, 0xebff).ram().w(this, FUNC(m63_state::m63_videoram_w)).share("videoram");
+ map(0xec00, 0xefff).ram().w(this, FUNC(m63_state::m63_colorram_w)).share("colorram");
+ map(0xf000, 0xf007).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xf800, 0xf800).portr("P1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf801, 0xf801).portr("P2").nopw(); /* continues game when in stop mode (cleared by NMI handler) */
+ map(0xf802, 0xf802).portr("DSW1");
+ map(0xf803, 0xf803).w(this, FUNC(m63_state::snd_irq_w));
+ map(0xf806, 0xf806).portr("DSW2");
+}
+
+void m63_state::fghtbskt_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd1ff).ram();
+ map(0xd200, 0xd2ff).ram().share("spriteram");
+ map(0xd300, 0xd3ff).ram().share("scrollram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(m63_state::m63_videoram2_w)).share("videoram2");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(m63_state::m63_videoram_w)).share("videoram");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(m63_state::m63_colorram_w)).share("colorram");
+ map(0xf000, 0xf000).r(this, FUNC(m63_state::snd_status_r));
+ map(0xf001, 0xf001).portr("P1");
+ map(0xf002, 0xf002).portr("P2");
+ map(0xf003, 0xf003).portr("DSW");
+ map(0xf000, 0xf000).w(this, FUNC(m63_state::snd_irq_w));
+ map(0xf001, 0xf001).nopw();
+ map(0xf002, 0xf002).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf800, 0xf807).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xf807, 0xf807).w(this, FUNC(m63_state::fghtbskt_samples_w)); // FIXME
+}
+
+void m63_state::i8039_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+
+void m63_state::i8039_port_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(m63_state::snddata_r), FUNC(m63_state::snddata_w));
+}
diff --git a/src/mame/drivers/m6805evs.cpp b/src/mame/drivers/m6805evs.cpp
index 4af4969fbbc..d298837588b 100644
--- a/src/mame/drivers/m6805evs.cpp
+++ b/src/mame/drivers/m6805evs.cpp
@@ -81,17 +81,18 @@ private:
};
-ADDRESS_MAP_START(m6805evs_state::mem_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- ADDRESS_MAP_UNMAP_HIGH
+void m6805evs_state::mem_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map.unmap_value_high();
// AM_RANGE(0x0000, 0x001f) I/O registers live here
- AM_RANGE(0x0020, 0x004f) AM_ROM AM_REGION("eprom", 0x0020)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x0900) AM_ROM AM_REGION("eprom", 0x0100)
+ map(0x0020, 0x004f).rom().region("eprom", 0x0020);
+ map(0x0080, 0x00ff).ram();
+ map(0x0100, 0x0900).rom().region("eprom", 0x0100);
// AM_RANGE(0x1f00, 0x1fef) bootloader ROM lives here
- AM_RANGE(0x1ff8, 0x1fff) AM_ROM AM_REGION("eprom", 0x1ff0)
-ADDRESS_MAP_END
+ map(0x1ff8, 0x1fff).rom().region("eprom", 0x1ff0);
+}
static INPUT_PORTS_START( m6805evs )
INPUT_PORTS_END
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp
index 479aecbc428..b5902a8f3d6 100644
--- a/src/mame/drivers/m72.cpp
+++ b/src/mame/drivers/m72.cpp
@@ -858,263 +858,290 @@ WRITE16_MEMBER(m72_state::soundram_w)
m_soundram[offset * 2 + 1] = data >> 8;
}
-ADDRESS_MAP_START(m72_state::m72_cpu1_common_map)
- AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
- AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xe0000, 0xeffff) AM_READWRITE(soundram_r, soundram_w)
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m72_map)
- AM_IMPORT_FROM( m72_cpu1_common_map )
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::rtype_map)
- AM_IMPORT_FROM( m72_cpu1_common_map )
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x40000, 0x43fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::xmultiplm72_map)
- AM_IMPORT_FROM( m72_cpu1_common_map )
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x80000, 0x83fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::dbreedm72_map)
- AM_IMPORT_FROM( m72_cpu1_common_map )
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x90000, 0x93fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m81_cpu1_common_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */
- AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
- AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::xmultipl_map)
- AM_IMPORT_FROM( m81_cpu1_common_map )
- AM_RANGE(0x9c000, 0x9ffff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::dbreed_map)
- AM_IMPORT_FROM( m81_cpu1_common_map )
- AM_RANGE(0x88000, 0x8bfff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::hharry_map)
- AM_IMPORT_FROM( m81_cpu1_common_map )
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM /* work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m84_cpu1_common_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xb0000, 0xb0001) AM_WRITE(irq_line_w)
- AM_RANGE(0xb4000, 0xb4001) AM_WRITENOP /* ??? */
- AM_RANGE(0xbc000, 0xbc001) AM_WRITE(dmaon_w)
- AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */
- AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe0000, 0xe3fff) AM_RAM /* work RAM */
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::rtype2_map)
- AM_IMPORT_FROM( m84_cpu1_common_map )
- AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xd8000, 0xd8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::hharryu_map)
- AM_IMPORT_FROM( m84_cpu1_common_map )
- AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::kengo_map)
- AM_IMPORT_FROM( m84_cpu1_common_map )
- AM_RANGE(0x80000, 0x83fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x84000, 0x87fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(m72_state::m82_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xa0000, 0xa03ff) AM_RAM AM_SHARE("majtitle_rowscr")
- AM_RANGE(0xa4000, 0xa4bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
- AM_RANGE(0xac000, 0xaffff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0xb0000, 0xbffff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") /* larger than the other games */
- AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc8000, 0xc83ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xd0000, 0xd3fff) AM_RAM /* work RAM */
- AM_RANGE(0xe0000, 0xe0001) AM_WRITE(irq_line_w)
- AM_RANGE(0xe4000, 0xe4001) AM_WRITEONLY /* playfield enable? 1 during screen transitions, 0 otherwise */
- AM_RANGE(0xec000, 0xec001) AM_WRITE(dmaon_w)
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-
-
-
-ADDRESS_MAP_START(m72_state::m72_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(port02_w, 0x00ff) /* coin counters, reset sound cpu, other stuff? */
- AM_RANGE(0x04, 0x05) AM_WRITE(dmaon_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(irq_line_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w)
- AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w)
- AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w)
- AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w)
+void m72_state::m72_cpu1_common_map(address_map &map)
+{
+ map(0xc0000, 0xc03ff).ram().share("spriteram");
+ map(0xc8000, 0xc8bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram");
+ map(0xcc000, 0xccbff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2");
+ map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1");
+ map(0xd8000, 0xdbfff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2");
+ map(0xe0000, 0xeffff).rw(this, FUNC(m72_state::soundram_r), FUNC(m72_state::soundram_w));
+ map(0xffff0, 0xfffff).rom();
+}
+
+void m72_state::m72_map(address_map &map)
+{
+ m72_cpu1_common_map(map);
+ map(0x00000, 0x7ffff).rom();
+ map(0xa0000, 0xa3fff).ram(); /* work RAM */
+}
+
+void m72_state::rtype_map(address_map &map)
+{
+ m72_cpu1_common_map(map);
+ map(0x00000, 0x3ffff).rom();
+ map(0x40000, 0x43fff).ram(); /* work RAM */
+}
+
+void m72_state::xmultiplm72_map(address_map &map)
+{
+ m72_cpu1_common_map(map);
+ map(0x00000, 0x7ffff).rom();
+ map(0x80000, 0x83fff).ram(); /* work RAM */
+}
+
+void m72_state::dbreedm72_map(address_map &map)
+{
+ m72_cpu1_common_map(map);
+ map(0x00000, 0x7ffff).rom();
+ map(0x90000, 0x93fff).ram(); /* work RAM */
+}
+
+void m72_state::m81_cpu1_common_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0xb0ffe, 0xb0fff).writeonly(); /* leftover from protection?? */
+ map(0xc0000, 0xc03ff).ram().share("spriteram");
+ map(0xc8000, 0xc8bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram");
+ map(0xcc000, 0xccbff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2");
+ map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1");
+ map(0xd8000, 0xdbfff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2");
+ map(0xffff0, 0xfffff).rom();
+}
+
+void m72_state::xmultipl_map(address_map &map)
+{
+ m81_cpu1_common_map(map);
+ map(0x9c000, 0x9ffff).ram(); /* work RAM */
+}
+
+void m72_state::dbreed_map(address_map &map)
+{
+ m81_cpu1_common_map(map);
+ map(0x88000, 0x8bfff).ram(); /* work RAM */
+}
+
+void m72_state::hharry_map(address_map &map)
+{
+ m81_cpu1_common_map(map);
+ map(0xa0000, 0xa3fff).ram(); /* work RAM */
+}
+
+void m72_state::m84_cpu1_common_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0xb0000, 0xb0001).w(this, FUNC(m72_state::irq_line_w));
+ map(0xb4000, 0xb4001).nopw(); /* ??? */
+ map(0xbc000, 0xbc001).w(this, FUNC(m72_state::dmaon_w));
+ map(0xb0ffe, 0xb0fff).writeonly(); /* leftover from protection?? */
+ map(0xc0000, 0xc03ff).ram().share("spriteram");
+ map(0xe0000, 0xe3fff).ram(); /* work RAM */
+ map(0xffff0, 0xfffff).rom();
+}
+
+void m72_state::rtype2_map(address_map &map)
+{
+ m84_cpu1_common_map(map);
+ map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1");
+ map(0xd4000, 0xd7fff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2");
+ map(0xc8000, 0xc8bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram");
+ map(0xd8000, 0xd8bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2");
+}
+
+void m72_state::hharryu_map(address_map &map)
+{
+ m84_cpu1_common_map(map);
+ map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1");
+ map(0xd4000, 0xd7fff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2");
+ map(0xa0000, 0xa0bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram");
+ map(0xa8000, 0xa8bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2");
+}
+
+void m72_state::kengo_map(address_map &map)
+{
+ m84_cpu1_common_map(map);
+ map(0x80000, 0x83fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1");
+ map(0x84000, 0x87fff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2");
+ map(0xa0000, 0xa0bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram");
+ map(0xa8000, 0xa8bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2");
+}
+
+
+void m72_state::m82_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0xa0000, 0xa03ff).ram().share("majtitle_rowscr");
+ map(0xa4000, 0xa4bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2");
+ map(0xac000, 0xaffff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1");
+ map(0xb0000, 0xbffff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); /* larger than the other games */
+ map(0xc0000, 0xc03ff).ram().share("spriteram");
+ map(0xc8000, 0xc83ff).ram().share("spriteram2");
+ map(0xcc000, 0xccbff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram");
+ map(0xd0000, 0xd3fff).ram(); /* work RAM */
+ map(0xe0000, 0xe0001).w(this, FUNC(m72_state::irq_line_w));
+ map(0xe4000, 0xe4001).writeonly(); /* playfield enable? 1 during screen transitions, 0 otherwise */
+ map(0xec000, 0xec001).w(this, FUNC(m72_state::dmaon_w));
+ map(0xffff0, 0xfffff).rom();
+}
+
+
+
+
+void m72_state::m72_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("IN0");
+ map(0x02, 0x03).portr("IN1");
+ map(0x04, 0x05).portr("DSW");
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m72_state::port02_w)); /* coin counters, reset sound cpu, other stuff? */
+ map(0x04, 0x05).w(this, FUNC(m72_state::dmaon_w));
+ map(0x06, 0x07).w(this, FUNC(m72_state::irq_line_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w));
+ map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w));
+ map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w));
+ map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w));
/* { 0xc0, 0xc0 trigger sample, filled by init_ function */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m84_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w)
- AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w)
- AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w)
- AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m84_v33_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff)
- AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w)
- AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w)
- AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w)
- AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w)
+}
+
+void m72_state::m84_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("IN0");
+ map(0x02, 0x03).portr("IN1");
+ map(0x04, 0x05).portr("DSW");
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w));
+ map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w));
+ map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w));
+ map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w));
+}
+
+void m72_state::m84_v33_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("IN0");
+ map(0x02, 0x03).portr("IN1");
+ map(0x04, 0x05).portr("DSW");
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w));
+ map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w));
+ map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w));
+ map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w));
+ map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w));
// AM_RANGE(0x8c, 0x8f) AM_WRITENOP /* ??? */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(m72_state::poundfor_portmap)
- AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x08, 0x0f) AM_DEVREAD8("upd4701l", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0x08, 0x0f) AM_DEVREAD8("upd4701h", upd4701_device, read_xy, 0xff00)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(poundfor_port02_w, 0x00ff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w)
- AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w)
- AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w)
- AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m82_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w)
- AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w)
- AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w)
- AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w)
+}
+
+
+void m72_state::poundfor_portmap(address_map &map)
+{
+ map(0x02, 0x03).portr("IN1");
+ map(0x04, 0x05).portr("DSW");
+ map(0x08, 0x0f).r("upd4701l", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0x08, 0x0f).r("upd4701h", FUNC(upd4701_device::read_xy)).umask16(0xff00);
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m72_state::poundfor_port02_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w));
+ map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w));
+ map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w));
+ map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w));
+}
+
+void m72_state::m82_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("IN0");
+ map(0x02, 0x03).portr("IN1");
+ map(0x04, 0x05).portr("DSW");
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w));
+ map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w));
+ map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w));
+ map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w));
// these ports control the tilemap sizes, rowscroll etc. that m82 has, exact bit usage not known (maybe one for each layer?)
- AM_RANGE(0x8c, 0x8d) AM_WRITE(m82_tm_ctrl_w)
- AM_RANGE(0x8e, 0x8f) AM_WRITE(m82_gfx_ctrl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::m81_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff) /* coin counters, reset sound cpu, other stuff? */
- AM_RANGE(0x04, 0x05) AM_WRITE(dmaon_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(irq_line_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w)
- AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w)
- AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w)
- AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(m72_state::sound_ram_map)
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("soundram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::sound_rom_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::rtype_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
- AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m72_state::rtype2_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, rtype2_sample_addr_w)
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
+ map(0x8c, 0x8d).w(this, FUNC(m72_state::m82_tm_ctrl_w));
+ map(0x8e, 0x8f).w(this, FUNC(m72_state::m82_gfx_ctrl_w));
+}
+
+void m72_state::m81_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("IN0");
+ map(0x02, 0x03).portr("IN1");
+ map(0x04, 0x05).portr("DSW");
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w)); /* coin counters, reset sound cpu, other stuff? */
+ map(0x04, 0x05).w(this, FUNC(m72_state::dmaon_w));
+ map(0x06, 0x07).w(this, FUNC(m72_state::irq_line_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w));
+ map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w));
+ map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w));
+ map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w));
+}
+
+
+
+void m72_state::sound_ram_map(address_map &map)
+{
+ map(0x0000, 0xffff).ram().share("soundram");
+}
+
+void m72_state::sound_rom_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
+
+void m72_state::rtype_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x02, 0x02).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+}
+
+void m72_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x02, 0x02).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w));
+ map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r));
+}
+
+void m72_state::rtype2_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::rtype2_sample_addr_w));
+ map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w));
+ map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r));
// AM_RANGE(0x87, 0x87) AM_WRITENOP /* ??? */
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(m72_state::poundfor_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x13) AM_DEVWRITE("m72", m72_audio_device, poundfor_sample_addr_w)
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x42, 0x42) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
-ADDRESS_MAP_END
+void m72_state::poundfor_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x13).w(m_audio, FUNC(m72_audio_device::poundfor_sample_addr_w));
+ map(0x40, 0x41).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x42, 0x42).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+}
-ADDRESS_MAP_START(m72_state::mcu_io_map)
+void m72_state::mcu_io_map(address_map &map)
+{
/* External access */
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(mcu_sample_r, mcu_low_w)
- AM_RANGE(0x0001, 0x0001) AM_WRITE(mcu_high_w)
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(mcu_snd_r, mcu_ack_w)
+ map(0x0000, 0x0000).rw(this, FUNC(m72_state::mcu_sample_r), FUNC(m72_state::mcu_low_w));
+ map(0x0001, 0x0001).w(this, FUNC(m72_state::mcu_high_w));
+ map(0x0002, 0x0002).rw(this, FUNC(m72_state::mcu_snd_r), FUNC(m72_state::mcu_ack_w));
/* shared at b0000 - b0fff on the main cpu */
- AM_RANGE(0xc000, 0xcfff) AM_READWRITE(mcu_data_r,mcu_data_w )
-ADDRESS_MAP_END
+ map(0xc000, 0xcfff).rw(this, FUNC(m72_state::mcu_data_r), FUNC(m72_state::mcu_data_w));
+}
#define COIN_MODE_1 \
PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW", 0x0400, NOTEQUALS, 0x0000) PORT_DIPLOCATION("SW1:5,6,7,8") \
diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp
index 6c67b063458..49d9fefc9af 100644
--- a/src/mame/drivers/m79152pc.cpp
+++ b/src/mame/drivers/m79152pc.cpp
@@ -45,20 +45,22 @@ private:
required_device<z80sio_device> m_uart;
};
-ADDRESS_MAP_START(m79152pc_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9fff) AM_RAM AM_SHARE("attributes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m79152pc_state::io_map)
+void m79152pc_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8fff).ram().share("videoram");
+ map(0x9000, 0x9fff).ram().share("attributes");
+}
+
+void m79152pc_state::io_map(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("uart", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+ map.global_mask(0xff);
+ map(0x40, 0x43).rw(m_uart, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x44, 0x47).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( m79152pc )
diff --git a/src/mame/drivers/m79amb.cpp b/src/mame/drivers/m79amb.cpp
index 768fbbf6ed0..50ac211b282 100644
--- a/src/mame/drivers/m79amb.cpp
+++ b/src/mame/drivers/m79amb.cpp
@@ -118,19 +118,20 @@ WRITE8_MEMBER(m79amb_state::m79amb_8002_w)
output().set_value("EXP_LAMP", data ? 1 : 0);
}
-ADDRESS_MAP_START(m79amb_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(ramtek_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x63ff) AM_RAM /* ?? */
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("8000") AM_WRITE(m79amb_8000_w)
- AM_RANGE(0x8001, 0x8001) AM_WRITEONLY AM_SHARE("mask")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("8002") AM_WRITE(m79amb_8002_w)
- AM_RANGE(0x8003, 0x8003) AM_WRITE(m79amb_8003_w)
- AM_RANGE(0x8004, 0x8004) AM_READ(gray5bit_controller0_r)
- AM_RANGE(0x8005, 0x8005) AM_READ(gray5bit_controller1_r)
- AM_RANGE(0xc000, 0xc07f) AM_RAM /* ?? */
- AM_RANGE(0xc200, 0xc27f) AM_RAM /* ?? */
-ADDRESS_MAP_END
+void m79amb_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x5fff).ram().w(this, FUNC(m79amb_state::ramtek_videoram_w)).share("videoram");
+ map(0x6000, 0x63ff).ram(); /* ?? */
+ map(0x8000, 0x8000).portr("8000").w(this, FUNC(m79amb_state::m79amb_8000_w));
+ map(0x8001, 0x8001).writeonly().share("mask");
+ map(0x8002, 0x8002).portr("8002").w(this, FUNC(m79amb_state::m79amb_8002_w));
+ map(0x8003, 0x8003).w(this, FUNC(m79amb_state::m79amb_8003_w));
+ map(0x8004, 0x8004).r(this, FUNC(m79amb_state::gray5bit_controller0_r));
+ map(0x8005, 0x8005).r(this, FUNC(m79amb_state::gray5bit_controller1_r));
+ map(0xc000, 0xc07f).ram(); /* ?? */
+ map(0xc200, 0xc27f).ram(); /* ?? */
+}
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index 07aa43d07a0..286bf58795a 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -69,85 +69,94 @@ WRITE16_MEMBER(m90_state::unknown_w)
/***************************************************************************/
-ADDRESS_MAP_START(m90_state::m90_main_cpu_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x80000, 0x8ffff) AM_ROMBANK("bank1") /* Quiz F1 only */
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM
- AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data")
- AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::dynablsb_main_cpu_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x6000e, 0x60fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM
- AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data")
- AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::bomblord_main_cpu_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM
- AM_RANGE(0xc000e, 0xc0fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data")
- AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::m90_main_cpu_io_map)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
- AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w)
- AM_RANGE(0x02, 0x03) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4")
- AM_RANGE(0x80, 0x8f) AM_WRITE(m90_video_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::dynablsb_main_cpu_io_map)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
- AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w)
- AM_RANGE(0x02, 0x03) AM_READ_PORT("SYSTEM")
+void m90_state::m90_main_cpu_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0x80000, 0x8ffff).bankr("bank1"); /* Quiz F1 only */
+ map(0xa0000, 0xa3fff).ram();
+ map(0xd0000, 0xdffff).ram().w(this, FUNC(m90_state::m90_video_w)).share("video_data");
+ map(0xe0000, 0xe03ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffff0, 0xfffff).rom();
+}
+
+void m90_state::dynablsb_main_cpu_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x6000e, 0x60fff).ram().share("spriteram");
+ map(0xa0000, 0xa3fff).ram();
+ map(0xd0000, 0xdffff).ram().w(this, FUNC(m90_state::m90_video_w)).share("video_data");
+ map(0xe0000, 0xe03ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffff0, 0xfffff).rom();
+}
+
+void m90_state::bomblord_main_cpu_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0xa0000, 0xa3fff).ram();
+ map(0xc000e, 0xc0fff).ram().share("spriteram");
+ map(0xd0000, 0xdffff).ram().w(this, FUNC(m90_state::m90_video_w)).share("video_data");
+ map(0xe0000, 0xe03ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffff0, 0xfffff).rom();
+}
+
+void m90_state::m90_main_cpu_io_map(address_map &map)
+{
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x00, 0x01).portr("P1_P2");
+ map(0x02, 0x03).w(this, FUNC(m90_state::m90_coincounter_w));
+ map(0x02, 0x03).portr("SYSTEM");
+ map(0x04, 0x05).portr("DSW");
+ map(0x06, 0x07).portr("P3_P4");
+ map(0x80, 0x8f).w(this, FUNC(m90_state::m90_video_control_w));
+}
+
+void m90_state::dynablsb_main_cpu_io_map(address_map &map)
+{
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x00, 0x01).portr("P1_P2");
+ map(0x02, 0x03).w(this, FUNC(m90_state::m90_coincounter_w));
+ map(0x02, 0x03).portr("SYSTEM");
// AM_RANGE(0x04, 0x05) AM_WRITE(unknown_w) /* dynablsb: write continuously 0x6000 */
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4")
- AM_RANGE(0x80, 0x8f) AM_WRITE(m90_video_control_w)
+ map(0x04, 0x05).portr("DSW");
+ map(0x06, 0x07).portr("P3_P4");
+ map(0x80, 0x8f).w(this, FUNC(m90_state::m90_video_control_w));
// AM_RANGE(0x90, 0x91) AM_WRITE(unknown_w)
-ADDRESS_MAP_END
+}
/*****************************************************************************/
-ADDRESS_MAP_START(m90_state::m90_sound_cpu_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::m90_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, rtype2_sample_addr_w)
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::dynablsb_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m90_state::m99_sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, poundfor_sample_addr_w)
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x42, 0x42) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
-ADDRESS_MAP_END
+void m90_state::m90_sound_cpu_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
+
+void m90_state::m90_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::rtype2_sample_addr_w));
+ map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w));
+ map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r));
+}
+
+void m90_state::dynablsb_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x82, 0x82).w("dac", FUNC(dac_byte_interface::write));
+}
+
+void m90_state::m99_sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(m_audio, FUNC(m72_audio_device::poundfor_sample_addr_w));
+ map(0x40, 0x41).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x42, 0x42).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp
index 09a5b8811a3..62417c7d00c 100644
--- a/src/mame/drivers/m92.cpp
+++ b/src/mame/drivers/m92.cpp
@@ -306,78 +306,83 @@ WRITE16_MEMBER(m92_state::m92_sound_reset_w)
/*****************************************************************************/
/* appears to be an earlier board */
-ADDRESS_MAP_START(m92_state::lethalth_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x80000, 0x8ffff) AM_RAM_WRITE(m92_vram_w) AM_SHARE("vram_data")
- AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */
- AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w)
- AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_SHARE("spritecontrol")
- AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w)
- AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m92_state::m92_map)
- AM_RANGE(0x00000, 0x9ffff) AM_ROM
- AM_RANGE(0xa0000, 0xbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xc0000, 0xcffff) AM_ROM AM_REGION("maincpu", 0x00000) /* Mirror used by In The Hunt as protection */
- AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m92_vram_w) AM_SHARE("vram_data")
- AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */
- AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w)
- AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_SHARE("spritecontrol")
- AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w)
- AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m92_state::m92_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4")
- AM_RANGE(0x08, 0x09) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // answer from sound CPU
- AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE(m92_coincounter_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x87) AM_WRITE(m92_pf1_control_w)
- AM_RANGE(0x88, 0x8f) AM_WRITE(m92_pf2_control_w)
- AM_RANGE(0x90, 0x97) AM_WRITE(m92_pf3_control_w)
- AM_RANGE(0x98, 0x9f) AM_WRITE(m92_master_control_w)
- AM_RANGE(0xc0, 0xc1) AM_WRITE(m92_sound_reset_w)
-ADDRESS_MAP_END
+void m92_state::lethalth_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0x80000, 0x8ffff).ram().w(this, FUNC(m92_state::m92_vram_w)).share("vram_data");
+ map(0xe0000, 0xeffff).ram(); /* System ram */
+ map(0xf8000, 0xf87ff).ram().share("spriteram");
+ map(0xf8800, 0xf8fff).rw(this, FUNC(m92_state::m92_paletteram_r), FUNC(m92_state::m92_paletteram_w));
+ map(0xf9000, 0xf900f).w(this, FUNC(m92_state::m92_spritecontrol_w)).share("spritecontrol");
+ map(0xf9800, 0xf9801).w(this, FUNC(m92_state::m92_videocontrol_w));
+ map(0xffff0, 0xfffff).rom().region("maincpu", 0x7fff0);
+}
+
+void m92_state::m92_map(address_map &map)
+{
+ map(0x00000, 0x9ffff).rom();
+ map(0xa0000, 0xbffff).bankr("bank1");
+ map(0xc0000, 0xcffff).rom().region("maincpu", 0x00000); /* Mirror used by In The Hunt as protection */
+ map(0xd0000, 0xdffff).ram().w(this, FUNC(m92_state::m92_vram_w)).share("vram_data");
+ map(0xe0000, 0xeffff).ram(); /* System ram */
+ map(0xf8000, 0xf87ff).ram().share("spriteram");
+ map(0xf8800, 0xf8fff).rw(this, FUNC(m92_state::m92_paletteram_r), FUNC(m92_state::m92_paletteram_w));
+ map(0xf9000, 0xf900f).w(this, FUNC(m92_state::m92_spritecontrol_w)).share("spritecontrol");
+ map(0xf9800, 0xf9801).w(this, FUNC(m92_state::m92_videocontrol_w));
+ map(0xffff0, 0xfffff).rom().region("maincpu", 0x7fff0);
+}
+
+void m92_state::m92_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("P1_P2");
+ map(0x02, 0x03).portr("COINS_DSW3");
+ map(0x04, 0x05).portr("DSW");
+ map(0x06, 0x07).portr("P3_P4");
+ map(0x08, 0x08).r("soundlatch2", FUNC(generic_latch_8_device::read)); // answer from sound CPU
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x03).w(this, FUNC(m92_state::m92_coincounter_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x87).w(this, FUNC(m92_state::m92_pf1_control_w));
+ map(0x88, 0x8f).w(this, FUNC(m92_state::m92_pf2_control_w));
+ map(0x90, 0x97).w(this, FUNC(m92_state::m92_pf3_control_w));
+ map(0x98, 0x9f).w(this, FUNC(m92_state::m92_master_control_w));
+ map(0xc0, 0xc1).w(this, FUNC(m92_state::m92_sound_reset_w));
+}
WRITE16_MEMBER(m92_state::oki_bank_w)
{
m_oki->set_rom_bank((data+1) & 0x3); // +1?
}
-ADDRESS_MAP_START(m92_state::ppan_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
- AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3")
- AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
- AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4")
- AM_RANGE(0x10, 0x11) AM_WRITE(oki_bank_w)
- AM_RANGE(0x18, 0x19) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x02, 0x03) AM_WRITE(m92_coincounter_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x80, 0x87) AM_WRITE(m92_pf1_control_w)
- AM_RANGE(0x88, 0x8f) AM_WRITE(m92_pf2_control_w)
- AM_RANGE(0x90, 0x97) AM_WRITE(m92_pf3_control_w)
- AM_RANGE(0x98, 0x9f) AM_WRITE(m92_master_control_w)
-ADDRESS_MAP_END
+void m92_state::ppan_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("P1_P2");
+ map(0x02, 0x03).portr("COINS_DSW3");
+ map(0x04, 0x05).portr("DSW");
+ map(0x06, 0x07).portr("P3_P4");
+ map(0x10, 0x11).w(this, FUNC(m92_state::oki_bank_w));
+ map(0x18, 0x18).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x02, 0x03).w(this, FUNC(m92_state::m92_coincounter_w));
+ map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x80, 0x87).w(this, FUNC(m92_state::m92_pf1_control_w));
+ map(0x88, 0x8f).w(this, FUNC(m92_state::m92_pf2_control_w));
+ map(0x90, 0x97).w(this, FUNC(m92_state::m92_pf3_control_w));
+ map(0x98, 0x9f).w(this, FUNC(m92_state::m92_master_control_w));
+}
/******************************************************************************/
-ADDRESS_MAP_START(m92_state::sound_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0xa0000, 0xa3fff) AM_RAM
- AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", iremga20_device, irem_ga20_r, irem_ga20_w, 0x00ff)
- AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0xa8044, 0xa8045) AM_DEVREADWRITE8("soundlatch", generic_latch_8_device, read, acknowledge_w, 0x00ff)
- AM_RANGE(0xa8046, 0xa8047) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0)
-ADDRESS_MAP_END
+void m92_state::sound_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0xa0000, 0xa3fff).ram();
+ map(0xa8000, 0xa803f).rw("irem", FUNC(iremga20_device::irem_ga20_r), FUNC(iremga20_device::irem_ga20_w)).umask16(0x00ff);
+ map(0xa8040, 0xa8043).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0xa8044, 0xa8044).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xa8046, 0xa8046).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0xffff0, 0xfffff).rom().region("soundcpu", 0x1fff0);
+}
/******************************************************************************/
diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp
index 843ea4578d8..37d0cc1dde3 100644
--- a/src/mame/drivers/mac.cpp
+++ b/src/mame/drivers/mac.cpp
@@ -591,265 +591,281 @@ TIMER_DEVICE_CALLBACK_MEMBER(mac_state::mac_scanline)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(mac_state::mac512ke_map)
- AM_RANGE(0x800000, 0x9fffff) AM_READ(mac_scc_r)
- AM_RANGE(0xa00000, 0xbfffff) AM_WRITE(mac_scc_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w)
- AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w)
- AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macplus_map)
- AM_RANGE(0x580000, 0x5fffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w)
- AM_RANGE(0x800000, 0x9fffff) AM_READ(mac_scc_r)
- AM_RANGE(0xa00000, 0xbfffff) AM_WRITE(mac_scc_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w)
- AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w)
- AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macse_map)
- AM_RANGE(0x580000, 0x5fffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w)
- AM_RANGE(0x900000, 0x9fffff) AM_READ(mac_scc_r)
- AM_RANGE(0xb00000, 0xbfffff) AM_WRITE(mac_scc_w)
- AM_RANGE(0xd00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w)
- AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w)
- AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macprtb_map)
- AM_RANGE(0x900000, 0x93ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0c0000)
- AM_RANGE(0xf60000, 0xf6ffff) AM_READWRITE(mac_iwm_r, mac_iwm_w)
- AM_RANGE(0xf70000, 0xf7ffff) AM_READWRITE(mac_via_r, mac_via_w)
- AM_RANGE(0xf90000, 0xf9ffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w)
- AM_RANGE(0xfa8000, 0xfaffff) AM_RAM AM_SHARE("vram16") // VRAM
- AM_RANGE(0xfb0000, 0xfbffff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffff)
- AM_RANGE(0xfc0000, 0xfcffff) AM_READ(mac_config_r)
- AM_RANGE(0xfd0000, 0xfdffff) AM_READWRITE(mac_scc_r, mac_scc_2_w)
- AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::maclc_map)
- ADDRESS_MAP_GLOBAL_MASK(0x80ffffff) // V8 uses bit 31 and 23-0 for address decoding only
-
- AM_RANGE(0xa00000, 0xafffff) AM_ROM AM_REGION("bootrom", 0) // ROM (in 32-bit mode)
-
- AM_RANGE(0xf00000, 0xf01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff)
- AM_RANGE(0xf04000, 0xf05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff)
- AM_RANGE(0xf06000, 0xf07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w)
- AM_RANGE(0xf10000, 0xf11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff)
- AM_RANGE(0xf12000, 0xf13fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w)
- AM_RANGE(0xf14000, 0xf15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff)
- AM_RANGE(0xf16000, 0xf17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff)
- AM_RANGE(0xf24000, 0xf24003) AM_READWRITE(rbv_ramdac_r, ariel_ramdac_w)
- AM_RANGE(0xf26000, 0xf27fff) AM_READWRITE8(mac_rbv_r, mac_rbv_w, 0xffffffff) // VIA2 (V8)
- AM_RANGE(0xf40000, 0xfbffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::maclc3_map)
- AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000)
-
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50012000, 0x50013fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50024000, 0x50025fff) AM_WRITE( ariel_ramdac_w ) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE8(mac_rbv_r, mac_rbv_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50028000, 0x50028003) AM_READWRITE8(mac_sonora_vctl_r, mac_sonora_vctl_w, 0xffffffff) AM_MIRROR(0x00f00000)
-
- AM_RANGE(0x5ffffffc, 0x5fffffff) AM_READ(mac_read_id)
-
- AM_RANGE(0x60000000, 0x600fffff) AM_RAM AM_MIRROR(0x0ff00000) AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macii_map)
- AM_RANGE(0x40000000, 0x4003ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ffc0000)
+void mac_state::mac512ke_map(address_map &map)
+{
+ map(0x800000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r));
+ map(0xa00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
+}
+
+void mac_state::macplus_map(address_map &map)
+{
+ map(0x580000, 0x5fffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w));
+ map(0x800000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r));
+ map(0xa00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
+}
+
+void mac_state::macse_map(address_map &map)
+{
+ map(0x580000, 0x5fffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w));
+ map(0x900000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r));
+ map(0xb00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w));
+ map(0xd00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
+}
+
+void mac_state::macprtb_map(address_map &map)
+{
+ map(0x900000, 0x93ffff).rom().region("bootrom", 0).mirror(0x0c0000);
+ map(0xf60000, 0xf6ffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0xf70000, 0xf7ffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0xf90000, 0xf9ffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w));
+ map(0xfa8000, 0xfaffff).ram().share("vram16"); // VRAM
+ map(0xfb0000, 0xfbffff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
+ map(0xfc0000, 0xfcffff).r(this, FUNC(mac_state::mac_config_r));
+ map(0xfd0000, 0xfdffff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
+ map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
+}
+
+void mac_state::maclc_map(address_map &map)
+{
+ map.global_mask(0x80ffffff); // V8 uses bit 31 and 23-0 for address decoding only
+
+ map(0xa00000, 0xafffff).rom().region("bootrom", 0); // ROM (in 32-bit mode)
+
+ map(0xf00000, 0xf01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0xf04000, 0xf05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
+ map(0xf06000, 0xf07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
+ map(0xf10000, 0xf11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
+ map(0xf12000, 0xf13fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
+ map(0xf14000, 0xf15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
+ map(0xf16000, 0xf17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0xf24000, 0xf24003).rw(this, FUNC(mac_state::rbv_ramdac_r), FUNC(mac_state::ariel_ramdac_w));
+ map(0xf26000, 0xf27fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)); // VIA2 (V8)
+ map(0xf40000, 0xfbffff).ram().share("vram");
+}
+
+void mac_state::maclc3_map(address_map &map)
+{
+ map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
+
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
+ map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
+ map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
+ map(0x50012000, 0x50013fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
+ map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
+ map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
+ map(0x50024000, 0x50025fff).w(this, FUNC(mac_state::ariel_ramdac_w)).mirror(0x00f00000);
+ map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)).mirror(0x00f00000);
+ map(0x50028000, 0x50028003).rw(this, FUNC(mac_state::mac_sonora_vctl_r), FUNC(mac_state::mac_sonora_vctl_w)).mirror(0x00f00000);
+
+ map(0x5ffffffc, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id));
+
+ map(0x60000000, 0x600fffff).ram().mirror(0x0ff00000).share("vram");
+}
+
+void mac_state::macii_map(address_map &map)
+{
+ map(0x40000000, 0x4003ffff).rom().region("bootrom", 0).mirror(0x0ffc0000);
// MMU remaps I/O without the F
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50006000, 0x50006003) AM_WRITE(macii_scsi_drq_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50006060, 0x50006063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::maciici_map)
- AM_RANGE(0x40000000, 0x4007ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff80000)
-
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50024000, 0x50024007) AM_WRITE( rbv_ramdac_w ) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE8(mac_rbv_r, mac_rbv_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macse30_map)
- AM_RANGE(0x40000000, 0x4003ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ffc0000)
-
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) // mirror
-
- AM_RANGE(0xfe000000, 0xfe00ffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xfee00000, 0xfee0ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x000f0000)
- AM_RANGE(0xfeffe000, 0xfeffffff) AM_ROM AM_REGION("se30vrom", 0x0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::maciifx_map)
- AM_RANGE(0x40000000, 0x4007ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff80000)
-
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE8(scciop_r, scciop_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x5000a000, 0x5000bfff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x5000c060, 0x5000c063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000)
- AM_RANGE(0x5000d000, 0x5000d003) AM_WRITE(macii_scsi_drq_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x5000d060, 0x5000d063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50010000, 0x50011fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50012000, 0x50013fff) AM_READWRITE8(swimiop_r, swimiop_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50018000, 0x50019fff) AM_READWRITE(biu_r, biu_w) AM_MIRROR(0x00f00000)
- AM_RANGE(0x5001a000, 0x5001bfff) AM_READWRITE8(oss_r, oss_w, 0xffffffff) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50024000, 0x50027fff) AM_READ(buserror_r) AM_MIRROR(0x00f00000) // must bus error on access here so ROM can determine we're an FMC
- AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000)
-ADDRESS_MAP_END
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+ map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
+ map(0x50006000, 0x50006003).w(this, FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
+ map(0x50006060, 0x50006063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
+ map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
+ map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
+ map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
+ map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
+ map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+}
+
+void mac_state::maciici_map(address_map &map)
+{
+ map(0x40000000, 0x4007ffff).rom().region("bootrom", 0).mirror(0x0ff80000);
+
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
+ map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
+ map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
+ map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
+ map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
+ map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
+ map(0x50024000, 0x50024007).w(this, FUNC(mac_state::rbv_ramdac_w)).mirror(0x00f00000);
+ map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)).mirror(0x00f00000);
+ map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+}
+
+void mac_state::macse30_map(address_map &map)
+{
+ map(0x40000000, 0x4003ffff).rom().region("bootrom", 0).mirror(0x0ffc0000);
+
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+ map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
+ map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
+ map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
+ map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
+ map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
+ map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
+ map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); // mirror
+
+ map(0xfe000000, 0xfe00ffff).ram().share("vram");
+ map(0xfee00000, 0xfee0ffff).ram().share("vram").mirror(0x000f0000);
+ map(0xfeffe000, 0xfeffffff).rom().region("se30vrom", 0x0);
+}
+
+void mac_state::maciifx_map(address_map &map)
+{
+ map(0x40000000, 0x4007ffff).rom().region("bootrom", 0).mirror(0x0ff80000);
+
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::scciop_r), FUNC(mac_state::scciop_w)).mirror(0x00f00000);
+ map(0x5000a000, 0x5000bfff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
+ map(0x5000c060, 0x5000c063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
+ map(0x5000d000, 0x5000d003).w(this, FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
+ map(0x5000d060, 0x5000d063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
+ map(0x50010000, 0x50011fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
+ map(0x50012000, 0x50013fff).rw(this, FUNC(mac_state::swimiop_r), FUNC(mac_state::swimiop_w)).mirror(0x00f00000);
+ map(0x50018000, 0x50019fff).rw(this, FUNC(mac_state::biu_r), FUNC(mac_state::biu_w)).mirror(0x00f00000);
+ map(0x5001a000, 0x5001bfff).rw(this, FUNC(mac_state::oss_r), FUNC(mac_state::oss_w)).mirror(0x00f00000);
+ map(0x50024000, 0x50027fff).r(this, FUNC(mac_state::buserror_r)).mirror(0x00f00000); // must bus error on access here so ROM can determine we're an FMC
+ map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+}
// ROM detects the "Jaws" ASIC by checking for I/O space mirrored at 0x01000000 boundries
-ADDRESS_MAP_START(mac_state::macpb140_map)
- AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000)
-
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50024000, 0x50027fff) AM_READ(buserror_r) AM_MIRROR(0x01f00000) // bus error here to make sure we aren't mistaken for another decoder
-
- AM_RANGE(0xfee08000, 0xfeffffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macpb160_map)
- AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000)
-
- AM_RANGE(0x50f00000, 0x50f01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff)
- AM_RANGE(0x50f02000, 0x50f03fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff)
- AM_RANGE(0x50f04000, 0x50f05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff)
- AM_RANGE(0x50f06000, 0x50f07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w)
- AM_RANGE(0x50f10000, 0x50f11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff)
- AM_RANGE(0x50f12060, 0x50f12063) AM_READ(macii_scsi_drq_r)
- AM_RANGE(0x50f14000, 0x50f15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff)
- AM_RANGE(0x50f16000, 0x50f17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff)
- AM_RANGE(0x50f20000, 0x50f21fff) AM_READWRITE8(mac_gsc_r, mac_gsc_w, 0xffffffff)
- AM_RANGE(0x50f24000, 0x50f27fff) AM_READ(buserror_r) // bus error here to make sure we aren't mistaken for another decoder
-
- AM_RANGE(0x60000000, 0x6001ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x0ffe0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macpb165c_map)
- AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000)
-
- AM_RANGE(0x50f00000, 0x50f01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff)
- AM_RANGE(0x50f02000, 0x50f03fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff)
- AM_RANGE(0x50f04000, 0x50f05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff)
- AM_RANGE(0x50f06000, 0x50f07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w)
- AM_RANGE(0x50f10000, 0x50f11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff)
- AM_RANGE(0x50f12060, 0x50f12063) AM_READ(macii_scsi_drq_r)
- AM_RANGE(0x50f14000, 0x50f15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff)
- AM_RANGE(0x50f16000, 0x50f17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff)
- AM_RANGE(0x50f20000, 0x50f21fff) AM_READ(buserror_r) // bus error here to detect we're not the grayscale 160/165/180
- AM_RANGE(0x50f24000, 0x50f27fff) AM_READ(buserror_r) // bus error here to make sure we aren't mistaken for another decoder
+void mac_state::macpb140_map(address_map &map)
+{
+ map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
+
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x01f00000);
+ map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x01f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x01f00000);
+ map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x01f00000);
+ map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x01f00000);
+ map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x01f00000);
+ map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x01f00000);
+ map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x01f00000);
+ map(0x50024000, 0x50027fff).r(this, FUNC(mac_state::buserror_r)).mirror(0x01f00000); // bus error here to make sure we aren't mistaken for another decoder
+
+ map(0xfee08000, 0xfeffffff).ram().share("vram");
+}
+
+void mac_state::macpb160_map(address_map &map)
+{
+ map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
+
+ map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w));
+ map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
+ map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
+ map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
+ map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r));
+ map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
+ map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0x50f20000, 0x50f21fff).rw(this, FUNC(mac_state::mac_gsc_r), FUNC(mac_state::mac_gsc_w));
+ map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder
+
+ map(0x60000000, 0x6001ffff).ram().share("vram").mirror(0x0ffe0000);
+}
+
+void mac_state::macpb165c_map(address_map &map)
+{
+ map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
+
+ map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w));
+ map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
+ map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
+ map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
+ map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r));
+ map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
+ map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0x50f20000, 0x50f21fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to detect we're not the grayscale 160/165/180
+ map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder
// on-board color video on 165c/180c
- AM_RANGE(0xfc000000, 0xfc07ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x00380000) // 512k of VRAM
- AM_RANGE(0xfc400000, 0xfcefffff) AM_READWRITE(macwd_r, macwd_w)
+ map(0xfc000000, 0xfc07ffff).ram().share("vram").mirror(0x00380000); // 512k of VRAM
+ map(0xfc400000, 0xfcefffff).rw(this, FUNC(mac_state::macwd_r), FUNC(mac_state::macwd_w));
// fc4003c8 = DAC control, fc4003c9 = DAC data
// fc4003da bit 3 is VBL
- AM_RANGE(0xfcff8000, 0xfcffffff) AM_ROM AM_REGION("vrom", 0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac_state::macpd210_map)
- AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000)
-
- AM_RANGE(0x50f00000, 0x50f01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff)
- AM_RANGE(0x50f02000, 0x50f03fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff)
- AM_RANGE(0x50f04000, 0x50f05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff)
- AM_RANGE(0x50f06000, 0x50f07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w)
- AM_RANGE(0x50f10000, 0x50f11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff)
- AM_RANGE(0x50f12060, 0x50f12063) AM_READ(macii_scsi_drq_r)
- AM_RANGE(0x50f14000, 0x50f15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff)
- AM_RANGE(0x50f16000, 0x50f17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff)
- AM_RANGE(0x50f20000, 0x50f21fff) AM_READWRITE8(mac_gsc_r, mac_gsc_w, 0xffffffff)
- AM_RANGE(0x50f24000, 0x50f27fff) AM_READ(buserror_r) // bus error here to make sure we aren't mistaken for another decoder
-
- AM_RANGE(0x5ffffffc, 0x5fffffff) AM_READ(mac_read_id)
+ map(0xfcff8000, 0xfcffffff).rom().region("vrom", 0x0000);
+}
- AM_RANGE(0x60000000, 0x6001ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x0ffe0000)
-ADDRESS_MAP_END
+void mac_state::macpd210_map(address_map &map)
+{
+ map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
+
+ map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
+ map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w));
+ map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
+ map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
+ map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
+ map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r));
+ map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
+ map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
+ map(0x50f20000, 0x50f21fff).rw(this, FUNC(mac_state::mac_gsc_r), FUNC(mac_state::mac_gsc_w));
+ map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder
+
+ map(0x5ffffffc, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id));
+
+ map(0x60000000, 0x6001ffff).ram().share("vram").mirror(0x0ffe0000);
+}
-ADDRESS_MAP_START(mac_state::quadra700_map)
- AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000)
+void mac_state::quadra700_map(address_map &map)
+{
+ map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00fc0000)
- AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x00fc0000)
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00fc0000);
+ map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00fc0000);
// 50008000 = Ethernet MAC ID PROM
// 5000a000 = Sonic (DP83932) ethernet
// 5000f000 = SCSI cf96, 5000f402 = SCSI #2 cf96
- AM_RANGE(0x5000f000, 0x5000f3ff) AM_READWRITE8(mac_5396_r, mac_5396_w, 0xffffffff) AM_MIRROR(0x00fc0000)
- AM_RANGE(0x5000c000, 0x5000dfff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00fc0000)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00fc0000)
- AM_RANGE(0x5001e000, 0x5001ffff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00fc0000)
+ map(0x5000f000, 0x5000f3ff).rw(this, FUNC(mac_state::mac_5396_r), FUNC(mac_state::mac_5396_w)).mirror(0x00fc0000);
+ map(0x5000c000, 0x5000dfff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00fc0000);
+ map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00fc0000);
+ map(0x5001e000, 0x5001ffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00fc0000);
// f9800000 = VDAC / DAFB
- AM_RANGE(0xf9000000, 0xf91fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xf9800000, 0xf98001ff) AM_READWRITE(dafb_r, dafb_w)
- AM_RANGE(0xf9800200, 0xf980023f) AM_READWRITE(dafb_dac_r, dafb_dac_w)
-ADDRESS_MAP_END
+ map(0xf9000000, 0xf91fffff).ram().share("vram");
+ map(0xf9800000, 0xf98001ff).rw(this, FUNC(mac_state::dafb_r), FUNC(mac_state::dafb_w));
+ map(0xf9800200, 0xf980023f).rw(this, FUNC(mac_state::dafb_dac_r), FUNC(mac_state::dafb_dac_w));
+}
-ADDRESS_MAP_START(mac_state::pwrmac_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM // 8 MB standard
+void mac_state::pwrmac_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram(); // 8 MB standard
- AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0fc00000)
+ map(0x40000000, 0x403fffff).rom().region("bootrom", 0).mirror(0x0fc00000);
- AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
+ map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
+ map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
// 50008000 = ethernet ID PROM
// 5000a000 = MACE ethernet controller
- AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
+ map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
// 50014000 = sound registers (AWACS)
- AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("awacs", awacs_device, read, write, 0xffffffffffffffffU) AM_MIRROR(0x01f00000)
- AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50024000, 0x50025fff) AM_WRITE32( ariel_ramdac_w, 0xffffffffffffffffU ) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50028000, 0x50028007) AM_READWRITE8(mac_sonora_vctl_r, mac_sonora_vctl_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
+ map(0x50014000, 0x50015fff).rw(m_awacs, FUNC(awacs_device::read), FUNC(awacs_device::write)).mirror(0x01f00000);
+ map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
+ map(0x50024000, 0x50025fff).w(this, FUNC(mac_state::ariel_ramdac_w)).mirror(0x00f00000);
+ map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000);
+ map(0x50028000, 0x50028007).rw(this, FUNC(mac_state::mac_sonora_vctl_r), FUNC(mac_state::mac_sonora_vctl_w)).mirror(0x00f00000);
// 5002a000 = interrupt controller
// 5002c000 = diagnostic registers
- AM_RANGE(0x5002c000, 0x5002dfff) AM_READ8(pmac_diag_r, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50031000, 0x50032fff) AM_READWRITE8(amic_dma_r, amic_dma_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
- AM_RANGE(0x50040000, 0x5004000f) AM_READWRITE8(hmc_r, hmc_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000)
- AM_RANGE(0x5ffffff8, 0x5fffffff) AM_READ32(mac_read_id, 0xffffffffffffffffU)
+ map(0x5002c000, 0x5002dfff).r(this, FUNC(mac_state::pmac_diag_r)).mirror(0x00f00000);
+ map(0x50031000, 0x50032fff).rw(this, FUNC(mac_state::amic_dma_r), FUNC(mac_state::amic_dma_w)).mirror(0x00f00000);
+ map(0x50040000, 0x5004000f).rw(this, FUNC(mac_state::hmc_r), FUNC(mac_state::hmc_w)).mirror(0x00f00000);
+ map(0x5ffffff8, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id));
- AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("bootrom", 0)
-ADDRESS_MAP_END
+ map(0xffc00000, 0xffffffff).rom().region("bootrom", 0);
+}
/***************************************************************************
DEVICE CONFIG
diff --git a/src/mame/drivers/mac128.cpp b/src/mame/drivers/mac128.cpp
index 209984b43c9..ac157b18170 100644
--- a/src/mame/drivers/mac128.cpp
+++ b/src/mame/drivers/mac128.cpp
@@ -1275,27 +1275,29 @@ MAC_DRIVER_INIT(macplus, MODEL_MAC_PLUS)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(mac128_state::mac512ke_map)
- AM_RANGE(0x000000, 0x3fffff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x100000)
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ram_600000_r, ram_600000_w)
- AM_RANGE(0x800000, 0x9fffff) AM_DEVREAD8(SCC_TAG, z80scc_device, cd_ab_r, 0xff00)
- AM_RANGE(0xa00000, 0xbfffff) AM_DEVWRITE8(SCC_TAG, z80scc_device, cd_ab_w, 0x00ff)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w)
- AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w)
- AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mac128_state::macplus_map)
- AM_RANGE(0x000000, 0x3fffff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0x580000, 0x5fffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w)
- AM_RANGE(0x800000, 0x9fffff) AM_DEVREAD8(SCC_TAG, z80scc_device, cd_ab_r, 0xff00)
- AM_RANGE(0xa00000, 0xbfffff) AM_DEVWRITE8(SCC_TAG, z80scc_device, cd_ab_w, 0x00ff)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w)
- AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w)
- AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w)
-ADDRESS_MAP_END
+void mac128_state::mac512ke_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rw(this, FUNC(mac128_state::ram_r), FUNC(mac128_state::ram_w));
+ map(0x400000, 0x4fffff).rom().region("bootrom", 0).mirror(0x100000);
+ map(0x600000, 0x6fffff).rw(this, FUNC(mac128_state::ram_600000_r), FUNC(mac128_state::ram_600000_w));
+ map(0x800000, 0x9fffff).r(m_scc, FUNC(z80scc_device::cd_ab_r)).umask16(0xff00);
+ map(0xa00000, 0xbfffff).w(m_scc, FUNC(z80scc_device::cd_ab_w)).umask16(0x00ff);
+ map(0xc00000, 0xdfffff).rw(this, FUNC(mac128_state::mac_iwm_r), FUNC(mac128_state::mac_iwm_w));
+ map(0xe80000, 0xefffff).rw(this, FUNC(mac128_state::mac_via_r), FUNC(mac128_state::mac_via_w));
+ map(0xfffff0, 0xffffff).rw(this, FUNC(mac128_state::mac_autovector_r), FUNC(mac128_state::mac_autovector_w));
+}
+
+void mac128_state::macplus_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rw(this, FUNC(mac128_state::ram_r), FUNC(mac128_state::ram_w));
+ map(0x400000, 0x4fffff).rom().region("bootrom", 0);
+ map(0x580000, 0x5fffff).rw(this, FUNC(mac128_state::macplus_scsi_r), FUNC(mac128_state::macplus_scsi_w));
+ map(0x800000, 0x9fffff).r(m_scc, FUNC(z80scc_device::cd_ab_r)).umask16(0xff00);
+ map(0xa00000, 0xbfffff).w(m_scc, FUNC(z80scc_device::cd_ab_w)).umask16(0x00ff);
+ map(0xc00000, 0xdfffff).rw(this, FUNC(mac128_state::mac_iwm_r), FUNC(mac128_state::mac_iwm_w));
+ map(0xe80000, 0xefffff).rw(this, FUNC(mac128_state::mac_via_r), FUNC(mac128_state::mac_via_w));
+ map(0xfffff0, 0xffffff).rw(this, FUNC(mac128_state::mac_autovector_r), FUNC(mac128_state::mac_autovector_w));
+}
/***************************************************************************
DEVICE CONFIG
diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp
index fd91eb7a048..3f4bd7be256 100644
--- a/src/mame/drivers/macp.cpp
+++ b/src/mame/drivers/macp.cpp
@@ -27,22 +27,25 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(macp_state::macp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(macp_state::macp0_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(macp_state::macp_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void macp_state::macp_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+}
+
+void macp_state::macp0_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+}
+
+void macp_state::macp_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
static INPUT_PORTS_START( macp )
INPUT_PORTS_END
diff --git a/src/mame/drivers/macpci.cpp b/src/mame/drivers/macpci.cpp
index 8053c5ae22b..1e2f7dd3856 100644
--- a/src/mame/drivers/macpci.cpp
+++ b/src/mame/drivers/macpci.cpp
@@ -60,24 +60,25 @@ READ64_MEMBER( macpci_state::unk2_r )
return 0;
}
-ADDRESS_MAP_START(macpci_state::pippin_mem)
- AM_RANGE(0x00000000, 0x005fffff) AM_RAM
+void macpci_state::pippin_mem(address_map &map)
+{
+ map(0x00000000, 0x005fffff).ram();
/* writes at 0x0*c01000 the string "Mr. Kesh" and wants it to be read back, true color VRAMs perhaps? */
- AM_RANGE(0x00c00000, 0x00c01007) AM_RAM
- AM_RANGE(0x01c00000, 0x01c01007) AM_RAM
- AM_RANGE(0x02c00000, 0x02c01007) AM_RAM
- AM_RANGE(0x03c00000, 0x03c01007) AM_RAM
+ map(0x00c00000, 0x00c01007).ram();
+ map(0x01c00000, 0x01c01007).ram();
+ map(0x02c00000, 0x02c01007).ram();
+ map(0x03c00000, 0x03c01007).ram();
- AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0fc00000) // mirror of ROM for 680x0 emulation
+ map(0x40000000, 0x403fffff).rom().region("bootrom", 0).mirror(0x0fc00000); // mirror of ROM for 680x0 emulation
- AM_RANGE(0xf00dfff8, 0xf00dffff) AM_READ(unk2_r)
- AM_RANGE(0xf3008800, 0xf3008807) AM_READ(unk1_r)
+ map(0xf00dfff8, 0xf00dffff).r(this, FUNC(macpci_state::unk2_r));
+ map(0xf3008800, 0xf3008807).r(this, FUNC(macpci_state::unk1_r));
- AM_RANGE(0xf3016000, 0xf3017fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffffffffffffU)
+ map(0xf3016000, 0xf3017fff).rw(this, FUNC(macpci_state::mac_via_r), FUNC(macpci_state::mac_via_w));
- AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("bootrom",0)
-ADDRESS_MAP_END
+ map(0xffc00000, 0xffffffff).rom().region("bootrom", 0);
+}
/* Input ports */
static INPUT_PORTS_START( pippin )
diff --git a/src/mame/drivers/macrossp.cpp b/src/mame/drivers/macrossp.cpp
index 3a635822a07..a4cb0b55ecf 100644
--- a/src/mame/drivers/macrossp.cpp
+++ b/src/mame/drivers/macrossp.cpp
@@ -338,47 +338,49 @@ WRITE16_MEMBER(macrossp_state::palette_fade_w)
/*** MEMORY MAPS *************************************************************/
-ADDRESS_MAP_START(macrossp_state::macrossp_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x800000, 0x802fff) AM_RAM AM_SHARE("spriteram")
+void macrossp_state::macrossp_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x800000, 0x802fff).ram().share("spriteram");
/* SCR A Layer */
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(macrossp_scra_videoram_w) AM_SHARE("scra_videoram")
- AM_RANGE(0x904200, 0x9043ff) AM_RAM AM_SHARE("scra_linezoom") /* W/O? */
- AM_RANGE(0x905000, 0x90500b) AM_RAM AM_SHARE("scra_videoregs") /* W/O? */
+ map(0x900000, 0x903fff).ram().w(this, FUNC(macrossp_state::macrossp_scra_videoram_w)).share("scra_videoram");
+ map(0x904200, 0x9043ff).ram().share("scra_linezoom"); /* W/O? */
+ map(0x905000, 0x90500b).ram().share("scra_videoregs"); /* W/O? */
/* SCR B Layer */
- AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(macrossp_scrb_videoram_w) AM_SHARE("scrb_videoram")
- AM_RANGE(0x90c200, 0x90c3ff) AM_RAM AM_SHARE("scrb_linezoom") /* W/O? */
- AM_RANGE(0x90d000, 0x90d00b) AM_RAM AM_SHARE("scrb_videoregs") /* W/O? */
+ map(0x908000, 0x90bfff).ram().w(this, FUNC(macrossp_state::macrossp_scrb_videoram_w)).share("scrb_videoram");
+ map(0x90c200, 0x90c3ff).ram().share("scrb_linezoom"); /* W/O? */
+ map(0x90d000, 0x90d00b).ram().share("scrb_videoregs"); /* W/O? */
/* SCR C Layer */
- AM_RANGE(0x910000, 0x913fff) AM_RAM_WRITE(macrossp_scrc_videoram_w) AM_SHARE("scrc_videoram")
- AM_RANGE(0x914200, 0x9143ff) AM_RAM AM_SHARE("scrc_linezoom")/* W/O? */
- AM_RANGE(0x915000, 0x91500b) AM_RAM AM_SHARE("scrc_videoregs") /* W/O? */
+ map(0x910000, 0x913fff).ram().w(this, FUNC(macrossp_state::macrossp_scrc_videoram_w)).share("scrc_videoram");
+ map(0x914200, 0x9143ff).ram().share("scrc_linezoom");/* W/O? */
+ map(0x915000, 0x91500b).ram().share("scrc_videoregs"); /* W/O? */
/* Text Layer */
- AM_RANGE(0x918000, 0x91bfff) AM_RAM_WRITE(macrossp_text_videoram_w) AM_SHARE("text_videoram")
- AM_RANGE(0x91c200, 0x91c3ff) AM_RAM AM_SHARE("text_linezoom") /* W/O? */
- AM_RANGE(0x91d000, 0x91d00b) AM_RAM AM_SHARE("text_videoregs") /* W/O? */
-
- AM_RANGE(0xa00000, 0xa03fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
-
- AM_RANGE(0xb00000, 0xb00003) AM_READ_PORT("INPUTS")
- AM_RANGE(0xb00004, 0xb00007) AM_READ(macrossp_soundstatus_r) AM_WRITENOP // irq related?
- AM_RANGE(0xb00008, 0xb0000b) AM_WRITENOP // irq related?
- AM_RANGE(0xb0000c, 0xb0000f) AM_READ_PORT("DSW") AM_WRITENOP
- AM_RANGE(0xb00010, 0xb00013) AM_WRITE16(palette_fade_w, 0x0000ffff)
- AM_RANGE(0xb00020, 0xb00023) AM_WRITENOP
-
- AM_RANGE(0xc00000, 0xc00003) AM_WRITE(macrossp_soundcmd_w)
-
- AM_RANGE(0xf00000, 0xf1ffff) AM_RAM AM_SHARE("mainram") /* Main Ram */
-// AM_RANGE(0xfe0000, 0xfe0003) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(macrossp_state::macrossp_sound_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x207fff) AM_RAM
- AM_RANGE(0x400000, 0x40007f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0x00ff)
- AM_RANGE(0x600000, 0x600001) AM_READ(macrossp_soundcmd_r)
-ADDRESS_MAP_END
+ map(0x918000, 0x91bfff).ram().w(this, FUNC(macrossp_state::macrossp_text_videoram_w)).share("text_videoram");
+ map(0x91c200, 0x91c3ff).ram().share("text_linezoom"); /* W/O? */
+ map(0x91d000, 0x91d00b).ram().share("text_videoregs"); /* W/O? */
+
+ map(0xa00000, 0xa03fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+
+ map(0xb00000, 0xb00003).portr("INPUTS");
+ map(0xb00004, 0xb00007).r(this, FUNC(macrossp_state::macrossp_soundstatus_r)).nopw(); // irq related?
+ map(0xb00008, 0xb0000b).nopw(); // irq related?
+ map(0xb0000c, 0xb0000f).portr("DSW").nopw();
+ map(0xb00012, 0xb00013).w(this, FUNC(macrossp_state::palette_fade_w));
+ map(0xb00020, 0xb00023).nopw();
+
+ map(0xc00000, 0xc00003).w(this, FUNC(macrossp_state::macrossp_soundcmd_w));
+
+ map(0xf00000, 0xf1ffff).ram().share("mainram"); /* Main Ram */
+// map(0xfe0000, 0xfe0003).noprw();
+}
+
+void macrossp_state::macrossp_sound_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x207fff).ram();
+ map(0x400000, 0x40007f).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)).umask16(0x00ff);
+ map(0x600000, 0x600001).r(this, FUNC(macrossp_state::macrossp_soundcmd_r));
+}
/*** INPUT PORTS *************************************************************/
diff --git a/src/mame/drivers/macs.cpp b/src/mame/drivers/macs.cpp
index b9b32cf00c0..7ff6fad678f 100644
--- a/src/mame/drivers/macs.cpp
+++ b/src/mame/drivers/macs.cpp
@@ -110,19 +110,20 @@ public:
-ADDRESS_MAP_START(macs_state::macs_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("rombank1")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank2")
+void macs_state::macs_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("rombank1");
+ map(0x8000, 0xbfff).bankr("rombank2");
//AM_RANGE(0xc000, 0xcfff) AM_READ(st0016_sprite_ram_r) AM_WRITE(st0016_sprite_ram_w)
//AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram ? */
- AM_RANGE(0xe800, 0xe87f) AM_RAM AM_SHARE("ram2")
+ map(0xe000, 0xe7ff).ram(); /* work ram ? */
+ map(0xe800, 0xe87f).ram().share("ram2");
//AM_RANGE(0xe900, 0xe9ff) // sound - internal
//AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w)
//AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAMBANK("rambank1") /* common /backup ram ?*/
- AM_RANGE(0xf800, 0xffff) AM_RAMBANK("rambank2") /* common /backup ram ?*/
-ADDRESS_MAP_END
+ map(0xf000, 0xf7ff).bankrw("rambank1"); /* common /backup ram ?*/
+ map(0xf800, 0xffff).bankrw("rambank2"); /* common /backup ram ?*/
+}
WRITE8_MEMBER(macs_state::rambank_w)
{
@@ -196,19 +197,20 @@ WRITE8_MEMBER(macs_state::macs_output_w)
}
}
-ADDRESS_MAP_START(macs_state::macs_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void macs_state::macs_io(address_map &map)
+{
+ map.global_mask(0xff);
//AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) /* video/crt regs ? */
- AM_RANGE(0xc0, 0xc7) AM_READWRITE(macs_input_r,macs_output_w)
- AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* renju = $40, neratte = 0 */
- AM_RANGE(0xe1, 0xe1) AM_WRITE(macs_rom_bank_w)
+ map(0xc0, 0xc7).rw(this, FUNC(macs_state::macs_input_r), FUNC(macs_state::macs_output_w));
+ map(0xe0, 0xe0).nopw(); /* renju = $40, neratte = 0 */
+ map(0xe1, 0xe1).w(this, FUNC(macs_state::macs_rom_bank_w));
//AM_RANGE(0xe2, 0xe2) AM_WRITE(st0016_sprite_bank_w)
//AM_RANGE(0xe3, 0xe4) AM_WRITE(st0016_character_bank_w)
//AM_RANGE(0xe5, 0xe5) AM_WRITE(st0016_palette_bank_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(rambank_w) /* banking ? ram bank ? shared rambank ? */
- AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */
+ map(0xe6, 0xe6).w(this, FUNC(macs_state::rambank_w)); /* banking ? ram bank ? shared rambank ? */
+ map(0xe7, 0xe7).nopw(); /* watchdog */
//AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r)
-ADDRESS_MAP_END
+}
//static GFXDECODE_START( macs )
// GFXDECODE_ENTRY( nullptr, 0, charlayout, 0, 16*4 )
diff --git a/src/mame/drivers/madalien.cpp b/src/mame/drivers/madalien.cpp
index 9d10066ff00..5973d949a07 100644
--- a/src/mame/drivers/madalien.cpp
+++ b/src/mame/drivers/madalien.cpp
@@ -67,42 +67,44 @@ WRITE8_MEMBER(madalien_state::madalien_portB_w)
}
-ADDRESS_MAP_START(madalien_state::main_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
-
- AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(madalien_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x6400, 0x67ff) AM_RAM
- AM_RANGE(0x6800, 0x7fff) AM_RAM_WRITE(madalien_charram_w) AM_SHARE("charram")
-
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0ff0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x0ff0) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x0ff0) AM_WRITEONLY AM_SHARE("video_control")
- AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x0ff0) AM_WRITE(madalien_output_w)
- AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x0ff0) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x8008, 0x8008) AM_MIRROR(0x07f0) AM_RAM_READ(shift_r) AM_SHARE("shift_hi")
- AM_RANGE(0x8009, 0x8009) AM_MIRROR(0x07f0) AM_RAM_READ(shift_rev_r) AM_SHARE("shift_lo")
- AM_RANGE(0x800b, 0x800b) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("video_flags")
- AM_RANGE(0x800c, 0x800c) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("headlight_pos")
- AM_RANGE(0x800d, 0x800d) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("edge1_pos")
- AM_RANGE(0x800e, 0x800e) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("edge2_pos")
- AM_RANGE(0x800f, 0x800f) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("scroll")
-
- AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0ff0) AM_READ_PORT("PLAYER1")
- AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ff0) AM_READ_PORT("DSW")
- AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ff0) AM_READ_PORT("PLAYER2")
-
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(madalien_state::audio_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x1ffc) AM_RAM /* unknown device in an epoxy block, might be tilt detection */
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1ffc) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8001) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x1ffc) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void madalien_state::main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+
+ map(0x6000, 0x63ff).ram().w(this, FUNC(madalien_state::madalien_videoram_w)).share("videoram");
+ map(0x6400, 0x67ff).ram();
+ map(0x6800, 0x7fff).ram().w(this, FUNC(madalien_state::madalien_charram_w)).share("charram");
+
+ map(0x8000, 0x8000).mirror(0x0ff0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x8001, 0x8001).mirror(0x0ff0).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x8004, 0x8004).mirror(0x0ff0).writeonly().share("video_control");
+ map(0x8005, 0x8005).mirror(0x0ff0).w(this, FUNC(madalien_state::madalien_output_w));
+ map(0x8006, 0x8006).mirror(0x0ff0).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x8008, 0x8008).mirror(0x07f0).ram().r(this, FUNC(madalien_state::shift_r)).share("shift_hi");
+ map(0x8009, 0x8009).mirror(0x07f0).ram().r(this, FUNC(madalien_state::shift_rev_r)).share("shift_lo");
+ map(0x800b, 0x800b).mirror(0x07f0).writeonly().share("video_flags");
+ map(0x800c, 0x800c).mirror(0x07f0).writeonly().share("headlight_pos");
+ map(0x800d, 0x800d).mirror(0x07f0).writeonly().share("edge1_pos");
+ map(0x800e, 0x800e).mirror(0x07f0).writeonly().share("edge2_pos");
+ map(0x800f, 0x800f).mirror(0x07f0).writeonly().share("scroll");
+
+ map(0x9000, 0x9000).mirror(0x0ff0).portr("PLAYER1");
+ map(0x9001, 0x9001).mirror(0x0ff0).portr("DSW");
+ map(0x9002, 0x9002).mirror(0x0ff0).portr("PLAYER2");
+
+ map(0xa000, 0xffff).rom();
+}
+
+
+void madalien_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x1c00).ram();
+ map(0x6000, 0x6003).mirror(0x1ffc).ram(); /* unknown device in an epoxy block, might be tilt detection */
+ map(0x8000, 0x8000).mirror(0x1ffc).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8001).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x8002, 0x8002).mirror(0x1ffc).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0xf800, 0xffff).rom();
+}
static INPUT_PORTS_START( madalien )
diff --git a/src/mame/drivers/madmotor.cpp b/src/mame/drivers/madmotor.cpp
index 512b7f26380..736974fc9c6 100644
--- a/src/mame/drivers/madmotor.cpp
+++ b/src/mame/drivers/madmotor.cpp
@@ -46,7 +46,7 @@ public:
/* devices */
required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_audiocpu;
+ required_device<h6280_device> m_audiocpu;
required_device_array<deco_bac06_device, 3> m_tilegen;
required_device<deco_mxc06_device> m_spritegen;
@@ -61,45 +61,47 @@ public:
/******************************************************************************/
-ADDRESS_MAP_START(madmotor_state::madmotor_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x180000, 0x180007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */
- AM_RANGE(0x180010, 0x180017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x184000, 0x18407f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
- AM_RANGE(0x184080, 0x1843ff) AM_RAM
- AM_RANGE(0x184400, 0x1847ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
- AM_RANGE(0x188000, 0x189fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x18c000, 0x18c001) AM_NOP
- AM_RANGE(0x190000, 0x190007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) /* text layer */
- AM_RANGE(0x190010, 0x190017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x198000, 0x1987ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x19c000, 0x19c001) AM_READNOP
- AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) /* text layer */
- AM_RANGE(0x1a0010, 0x1a0017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x1a4000, 0x1a4fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x3e0000, 0x3e3fff) AM_RAM
- AM_RANGE(0x3e8000, 0x3e87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3f0000, 0x3f07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x3f8002, 0x3f8003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x3f8004, 0x3f8005) AM_READ_PORT("DSW")
- AM_RANGE(0x3f8006, 0x3f8007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3fc004, 0x3fc005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-ADDRESS_MAP_END
+void madmotor_state::madmotor_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x180000, 0x180007).w("tilegen1", FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */
+ map(0x180010, 0x180017).w("tilegen1", FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x184000, 0x18407f).rw("tilegen1", FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w));
+ map(0x184080, 0x1843ff).ram();
+ map(0x184400, 0x1847ff).rw("tilegen1", FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w));
+ map(0x188000, 0x189fff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x18c000, 0x18c001).noprw();
+ map(0x190000, 0x190007).w("tilegen2", FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */
+ map(0x190010, 0x190017).w("tilegen2", FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x198000, 0x1987ff).rw("tilegen2", FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x19c000, 0x19c001).nopr();
+ map(0x1a0000, 0x1a0007).w("tilegen3", FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */
+ map(0x1a0010, 0x1a0017).w("tilegen3", FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x1a4000, 0x1a4fff).rw("tilegen3", FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x3e0000, 0x3e3fff).ram();
+ map(0x3e8000, 0x3e87ff).ram().share("spriteram");
+ map(0x3f0000, 0x3f07ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x3f8002, 0x3f8003).portr("P1_P2");
+ map(0x3f8004, 0x3f8005).portr("DSW");
+ map(0x3f8006, 0x3f8007).portr("SYSTEM");
+ map(0x3fc005, 0x3fc005).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
/******************************************************************************/
/* Physical memory map (21 bits) */
-ADDRESS_MAP_START(madmotor_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void madmotor_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp
index 3bbae9bc29c..96570748b49 100644
--- a/src/mame/drivers/magic10.cpp
+++ b/src/mame/drivers/magic10.cpp
@@ -316,90 +316,95 @@ WRITE16_MEMBER(magic10_state::magic10_out_w)
* Memory Maps *
***************************/
-ADDRESS_MAP_START(magic10_state::magic10_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram")
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram")
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram")
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x300000, 0x3001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSW")
- AM_RANGE(0x400008, 0x400009) AM_WRITE(magic10_out_w)
- AM_RANGE(0x40000a, 0x40000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x40000e, 0x40000f) AM_WRITENOP
- AM_RANGE(0x400080, 0x400087) AM_RAM AM_SHARE("vregs")
- AM_RANGE(0x600000, 0x603fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magic10_state::magic10a_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram")
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram")
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram")
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x300000, 0x3001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW")
- AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w)
- AM_RANGE(0x50000a, 0x50000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x50000e, 0x50000f) AM_WRITENOP
- AM_RANGE(0x500080, 0x500087) AM_RAM AM_SHARE("vregs") // video registers?
- AM_RANGE(0x600000, 0x603fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magic10_state::magic102_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram")
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram")
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram")
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x400000, 0x4001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x500001) AM_READ(magic102_r)
- AM_RANGE(0x500004, 0x500005) AM_READNOP // gives credits
- AM_RANGE(0x500006, 0x500007) AM_READNOP // gives credits
- AM_RANGE(0x50001a, 0x50001b) AM_READ_PORT("IN0")
- AM_RANGE(0x50001c, 0x50001d) AM_READ_PORT("IN1")
+void magic10_state::magic10_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram");
+ map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram");
+ map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram");
+ map(0x200000, 0x2007ff).ram().share("nvram");
+ map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400001).portr("INPUTS");
+ map(0x400002, 0x400003).portr("DSW");
+ map(0x400008, 0x400009).w(this, FUNC(magic10_state::magic10_out_w));
+ map(0x40000b, 0x40000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x40000e, 0x40000f).nopw();
+ map(0x400080, 0x400087).ram().share("vregs");
+ map(0x600000, 0x603fff).ram();
+}
+
+void magic10_state::magic10a_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram");
+ map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram");
+ map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram");
+ map(0x200000, 0x2007ff).ram().share("nvram");
+ map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x500001).portr("INPUTS");
+ map(0x500002, 0x500003).portr("DSW");
+ map(0x500008, 0x500009).w(this, FUNC(magic10_state::magic10_out_w));
+ map(0x50000b, 0x50000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x50000e, 0x50000f).nopw();
+ map(0x500080, 0x500087).ram().share("vregs"); // video registers?
+ map(0x600000, 0x603fff).ram();
+}
+
+void magic10_state::magic102_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram");
+ map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram");
+ map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram");
+ map(0x200000, 0x2007ff).ram().share("nvram");
+ map(0x400000, 0x4001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x500001).r(this, FUNC(magic10_state::magic102_r));
+ map(0x500004, 0x500005).nopr(); // gives credits
+ map(0x500006, 0x500007).nopr(); // gives credits
+ map(0x50001a, 0x50001b).portr("IN0");
+ map(0x50001c, 0x50001d).portr("IN1");
// AM_RANGE(0x500002, 0x50001f) AM_READNOP
// AM_RANGE(0x500002, 0x50001f) AM_WRITENOP
- AM_RANGE(0x600000, 0x603fff) AM_RAM
- AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x700080, 0x700087) AM_RAM AM_SHARE("vregs") // video registers?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magic10_state::hotslot_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram")
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram")
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram")
- AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x400000, 0x4001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500004, 0x500005) AM_READWRITE(hotslot_copro_r, hotslot_copro_w) // copro comm
- AM_RANGE(0x500006, 0x500011) AM_RAM
- AM_RANGE(0x500012, 0x500013) AM_READ_PORT("IN0")
- AM_RANGE(0x500014, 0x500015) AM_READ_PORT("IN1")
- AM_RANGE(0x500016, 0x500017) AM_READ_PORT("IN2")
- AM_RANGE(0x500018, 0x500019) AM_READ_PORT("DSW1")
- AM_RANGE(0x50001a, 0x50001d) AM_WRITENOP
- AM_RANGE(0x600000, 0x603fff) AM_RAM
- AM_RANGE(0x70000a, 0x70000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x700080, 0x700087) AM_RAM AM_SHARE("vregs")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magic10_state::sgsafari_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram")
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram")
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram")
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x300000, 0x3001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW1")
- AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w)
- AM_RANGE(0x50000a, 0x50000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x50000e, 0x50000f) AM_READ_PORT("IN0")
- AM_RANGE(0x500080, 0x500087) AM_RAM AM_SHARE("vregs") // video registers?
- AM_RANGE(0x600000, 0x603fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x600000, 0x603fff).ram();
+ map(0x700001, 0x700001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700080, 0x700087).ram().share("vregs"); // video registers?
+}
+
+void magic10_state::hotslot_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram");
+ map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram");
+ map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram");
+ map(0x200000, 0x2007ff).ram().share("nvram");
+ map(0x400000, 0x4001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500004, 0x500005).rw(this, FUNC(magic10_state::hotslot_copro_r), FUNC(magic10_state::hotslot_copro_w)); // copro comm
+ map(0x500006, 0x500011).ram();
+ map(0x500012, 0x500013).portr("IN0");
+ map(0x500014, 0x500015).portr("IN1");
+ map(0x500016, 0x500017).portr("IN2");
+ map(0x500018, 0x500019).portr("DSW1");
+ map(0x50001a, 0x50001d).nopw();
+ map(0x600000, 0x603fff).ram();
+ map(0x70000b, 0x70000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700080, 0x700087).ram().share("vregs");
+}
+
+void magic10_state::sgsafari_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram");
+ map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram");
+ map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram");
+ map(0x200000, 0x203fff).ram().share("nvram");
+ map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500002, 0x500003).portr("DSW1");
+ map(0x500008, 0x500009).w(this, FUNC(magic10_state::magic10_out_w));
+ map(0x50000b, 0x50000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x50000e, 0x50000f).portr("IN0");
+ map(0x500080, 0x500087).ram().share("vregs"); // video registers?
+ map(0x600000, 0x603fff).ram();
+}
/*
SGSafari unimplemented writes:
diff --git a/src/mame/drivers/magicard.cpp b/src/mame/drivers/magicard.cpp
index 3388370c9c7..3829f22ea64 100644
--- a/src/mame/drivers/magicard.cpp
+++ b/src/mame/drivers/magicard.cpp
@@ -901,50 +901,53 @@ WRITE16_MEMBER(magicard_state::scc68070_mmu_w)
* Memory Maps *
*************************/
-ADDRESS_MAP_START(magicard_state::scc68070_mem)
- AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_SHARE("scc_xirqc_regs") //lir
- AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_SHARE("scc_iic_regs") //i2c
- AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_SHARE("scc_uart_regs")
- AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_SHARE("scc_timer_regs")
- AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_SHARE("scc_iirqc_regs")
- AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_SHARE("scc_dma1_regs")
- AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_SHARE("scc_dma2_regs")
- AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_SHARE("scc_mmu_regs")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magicard_state::magicard_mem)
+void magicard_state::scc68070_mem(address_map &map)
+{
+ map(0x80001000, 0x8000100f).rw(this, FUNC(magicard_state::scc68070_ext_irqc_r), FUNC(magicard_state::scc68070_ext_irqc_w)).share("scc_xirqc_regs"); //lir
+ map(0x80002000, 0x8000200f).rw(this, FUNC(magicard_state::scc68070_iic_r), FUNC(magicard_state::scc68070_iic_w)).share("scc_iic_regs"); //i2c
+ map(0x80002010, 0x8000201f).rw(this, FUNC(magicard_state::scc68070_uart_r), FUNC(magicard_state::scc68070_uart_w)).share("scc_uart_regs");
+ map(0x80002020, 0x8000202f).rw(this, FUNC(magicard_state::scc68070_timer_r), FUNC(magicard_state::scc68070_timer_w)).share("scc_timer_regs");
+ map(0x80002040, 0x8000204f).rw(this, FUNC(magicard_state::scc68070_int_irqc_r), FUNC(magicard_state::scc68070_int_irqc_w)).share("scc_iirqc_regs");
+ map(0x80004000, 0x8000403f).rw(this, FUNC(magicard_state::scc68070_dma_ch1_r), FUNC(magicard_state::scc68070_dma_ch1_w)).share("scc_dma1_regs");
+ map(0x80004040, 0x8000407f).rw(this, FUNC(magicard_state::scc68070_dma_ch2_r), FUNC(magicard_state::scc68070_dma_ch2_w)).share("scc_dma2_regs");
+ map(0x80008000, 0x8000807f).rw(this, FUNC(magicard_state::scc68070_mmu_r), FUNC(magicard_state::scc68070_mmu_w)).share("scc_mmu_regs");
+}
+
+void magicard_state::magicard_mem(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_IMPORT_FROM(scc68070_mem)
- AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram")
- AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb")
+ scc68070_mem(map);
+ map(0x00000000, 0x001ffbff).mirror(0x00200000).ram().share("magicram");
+ map(0x00600000, 0x007ffbff).ram().share("magicramb");
/* 001ffc00-001ffdff System I/O */
- AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r)
- AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r)
- AM_RANGE(0x001ffd00, 0x001ffd01) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x001ffd02, 0x001ffd03) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x001ffd04, 0x001ffd05) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r)
- AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //?
- AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer?
- AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magicard_state::hotslots_mem)
+ map(0x001ffc00, 0x001ffc01).mirror(0x7fe00000).r(this, FUNC(magicard_state::test_r));
+ map(0x001ffc40, 0x001ffc41).mirror(0x7fe00000).r(this, FUNC(magicard_state::test_r));
+ map(0x001ffd01, 0x001ffd01).mirror(0x7fe00000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x001ffd03, 0x001ffd03).mirror(0x7fe00000).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x001ffd05, 0x001ffd05).mirror(0x7fe00000).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x001ffd40, 0x001ffd43).mirror(0x7fe00000).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0x001ffd80, 0x001ffd81).mirror(0x7fe00000).r(this, FUNC(magicard_state::test_r));
+ map(0x001ffd80, 0x001ffd81).mirror(0x7fe00000).nopw(); //?
+ map(0x001fff80, 0x001fffbf).mirror(0x7fe00000).ram(); //DRAM I/O, not accessed by this game, CD buffer?
+ map(0x001fffe0, 0x001fffff).mirror(0x7fe00000).rw(this, FUNC(magicard_state::philips_66470_r), FUNC(magicard_state::philips_66470_w)).share("pcab_vregs"); //video registers
+}
+
+void magicard_state::hotslots_mem(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_IMPORT_FROM(scc68070_mem)
- AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram")
- AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb")
- AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer?
- AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers
- AM_RANGE(0x00414000, 0x00414001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x00414002, 0x00414003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x00414004, 0x00414005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
- AM_RANGE(0x00414006, 0x00414007) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x00415002, 0x00415003) AM_DEVREAD8("ramdac", ramdac_device, pal_r, 0x00ff)
- AM_RANGE(0x00416000, 0x00416001) AM_DEVWRITE8("ssg", ymz284_device, data_w, 0x00ff)
- AM_RANGE(0x00417000, 0x00417001) AM_DEVWRITE8("ssg", ymz284_device, address_w, 0x00ff)
-ADDRESS_MAP_END
+ scc68070_mem(map);
+ map(0x00000000, 0x001ffbff).mirror(0x00200000).ram().share("magicram");
+ map(0x00600000, 0x007ffbff).ram().share("magicramb");
+ map(0x001fff80, 0x001fffbf).mirror(0x7fe00000).ram(); //DRAM I/O, not accessed by this game, CD buffer?
+ map(0x001fffe0, 0x001fffff).mirror(0x7fe00000).rw(this, FUNC(magicard_state::philips_66470_r), FUNC(magicard_state::philips_66470_w)).share("pcab_vregs"); //video registers
+ map(0x00414001, 0x00414001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x00414003, 0x00414003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x00414005, 0x00414005).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x00414007, 0x00414007).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x00415003, 0x00415003).r("ramdac", FUNC(ramdac_device::pal_r));
+ map(0x00416001, 0x00416001).w("ssg", FUNC(ymz284_device::data_w));
+ map(0x00417001, 0x00417001).w("ssg", FUNC(ymz284_device::address_w));
+}
/*************************
* Input ports *
@@ -984,9 +987,10 @@ INTERRUPT_GEN_MEMBER(magicard_state::magicard_irq)
device.execute().set_input_line_and_vector(1, HOLD_LINE, 0xf0 / 4);
}
-ADDRESS_MAP_START(magicard_state::ramdac_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void magicard_state::ramdac_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(magicard_state::magicard)
diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp
index 7966e4d6b6e..44fa36cf997 100644
--- a/src/mame/drivers/magicfly.cpp
+++ b/src/mame/drivers/magicfly.cpp
@@ -677,16 +677,17 @@ WRITE8_MEMBER(magicfly_state::mux_port_w)
* Memory map information *
*********************************************/
-ADDRESS_MAP_START(magicfly_state::magicfly_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B NVRAM */
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(magicfly_videoram_w) AM_SHARE("videoram") /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(magicfly_colorram_w) AM_SHARE("colorram") /* HM6116LP #2 (2K x 8) RAM (only 1st half used) */
- AM_RANGE(0x2800, 0x2800) AM_READ(mux_port_r) /* multiplexed input port */
- AM_RANGE(0x3000, 0x3000) AM_WRITE(mux_port_w) /* output port */
- AM_RANGE(0xc000, 0xffff) AM_ROM /* ROM space */
-ADDRESS_MAP_END
+void magicfly_state::magicfly_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram"); /* MK48Z02B NVRAM */
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x1000, 0x13ff).ram().w(this, FUNC(magicfly_state::magicfly_videoram_w)).share("videoram"); /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */
+ map(0x1800, 0x1bff).ram().w(this, FUNC(magicfly_state::magicfly_colorram_w)).share("colorram"); /* HM6116LP #2 (2K x 8) RAM (only 1st half used) */
+ map(0x2800, 0x2800).r(this, FUNC(magicfly_state::mux_port_r)); /* multiplexed input port */
+ map(0x3000, 0x3000).w(this, FUNC(magicfly_state::mux_port_w)); /* output port */
+ map(0xc000, 0xffff).rom(); /* ROM space */
+}
/*********************************************
diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp
index 23cc204eda8..7598d93c137 100644
--- a/src/mame/drivers/magictg.cpp
+++ b/src/mame/drivers/magictg.cpp
@@ -843,25 +843,26 @@ WRITE16_MEMBER( magictg_state::adsp_control_w )
*
*************************************/
-ADDRESS_MAP_START(magictg_state::magictg_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM // 8MB RAM
- AM_RANGE(0x00800000, 0x0081003f) AM_RAM // ?
- AM_RANGE(0x0a000000, 0x0affffff) AM_DEVREADWRITE("voodoo_0", voodoo_device, voodoo_r, voodoo_w)
+void magictg_state::magictg_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram(); // 8MB RAM
+ map(0x00800000, 0x0081003f).ram(); // ?
+ map(0x0a000000, 0x0affffff).rw("voodoo_0", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
#if defined(USE_TWO_3DFX)
- AM_RANGE(0x0b000000, 0x0bffffff) AM_DEVREADWRITE("voodoo_1", voodoo_device, voodoo_r, voodoo_w)
- AM_RANGE(0x0c000000, 0x0c000fff) AM_READWRITE(zr36120_r, zr36120_w)
+ map(0x0b000000, 0x0bffffff).rw("voodoo_1", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
+ map(0x0c000000, 0x0c000fff).rw(this, FUNC(magictg_state::zr36120_r), FUNC(magictg_state::zr36120_w));
#else
- AM_RANGE(0x0b000000, 0x0b000fff) AM_READWRITE(zr36120_r, zr36120_w)
+ map(0x0b000000, 0x0b000fff).rw(this, FUNC(magictg_state::zr36120_r), FUNC(magictg_state::zr36120_w));
#endif
- AM_RANGE(0x0f000000, 0x0f000fff) AM_READWRITE(f0_r, f0_w) // Split this up?
- AM_RANGE(0x14000100, 0x14000103) AM_READWRITE(adsp_idma_data_r, adsp_idma_data_w)
- AM_RANGE(0x14000104, 0x14000107) AM_WRITE(adsp_idma_addr_w)
- AM_RANGE(0x1b001024, 0x1b001027) AM_READ(adsp_status_r)
- AM_RANGE(0x1b001108, 0x1b00110b) AM_READ(unk_r)
- AM_RANGE(0x1e000000, 0x1e002fff) AM_RAM // NVRAM?
- AM_RANGE(0x1e800000, 0x1e800007) AM_READWRITE(unk2_r, serial_w)
- AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("mips", 0)
-ADDRESS_MAP_END
+ map(0x0f000000, 0x0f000fff).rw(this, FUNC(magictg_state::f0_r), FUNC(magictg_state::f0_w)); // Split this up?
+ map(0x14000100, 0x14000103).rw(this, FUNC(magictg_state::adsp_idma_data_r), FUNC(magictg_state::adsp_idma_data_w));
+ map(0x14000104, 0x14000107).w(this, FUNC(magictg_state::adsp_idma_addr_w));
+ map(0x1b001024, 0x1b001027).r(this, FUNC(magictg_state::adsp_status_r));
+ map(0x1b001108, 0x1b00110b).r(this, FUNC(magictg_state::unk_r));
+ map(0x1e000000, 0x1e002fff).ram(); // NVRAM?
+ map(0x1e800000, 0x1e800007).rw(this, FUNC(magictg_state::unk2_r), FUNC(magictg_state::serial_w));
+ map(0x1fc00000, 0x1fffffff).rom().region("mips", 0);
+}
/*************************************
@@ -870,21 +871,24 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(magictg_state::adsp_program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("adsp_pram")
-ADDRESS_MAP_END
+void magictg_state::adsp_program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram().share("adsp_pram");
+}
-ADDRESS_MAP_START(magictg_state::adsp_data_map)
- ADDRESS_MAP_UNMAP_HIGH
+void magictg_state::adsp_data_map(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x0000, 0x03ff) AM_RAMBANK("databank")
- AM_RANGE(0x0400, 0x3fdf) AM_RAM
- AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
-ADDRESS_MAP_END
+ map(0x0400, 0x3fdf).ram();
+ map(0x3fe0, 0x3fff).rw(this, FUNC(magictg_state::adsp_control_r), FUNC(magictg_state::adsp_control_w));
+}
-ADDRESS_MAP_START(magictg_state::adsp_io_map)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void magictg_state::adsp_io_map(address_map &map)
+{
+ map.unmap_value_high();
+}
/*************************************
diff --git a/src/mame/drivers/magmax.cpp b/src/mame/drivers/magmax.cpp
index 4ee8495c548..105d167dbb4 100644
--- a/src/mame/drivers/magmax.cpp
+++ b/src/mame/drivers/magmax.cpp
@@ -190,36 +190,39 @@ WRITE16_MEMBER(magmax_state::magmax_vreg_w)
-ADDRESS_MAP_START(magmax_state::magmax_map)
- AM_RANGE(0x000000, 0x013fff) AM_ROM
- AM_RANGE(0x018000, 0x018fff) AM_RAM
- AM_RANGE(0x020000, 0x0207ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x028000, 0x0281ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x030000, 0x030001) AM_READ_PORT("P1")
- AM_RANGE(0x030002, 0x030003) AM_READ_PORT("P2")
- AM_RANGE(0x030004, 0x030005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x030006, 0x030007) AM_READ_PORT("DSW")
- AM_RANGE(0x030010, 0x030011) AM_WRITE(magmax_vreg_w) AM_SHARE("vreg")
- AM_RANGE(0x030012, 0x030013) AM_WRITEONLY AM_SHARE("scroll_x")
- AM_RANGE(0x030014, 0x030015) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x03001c, 0x03001d) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x03001e, 0x03001f) AM_WRITE(cpu_irq_ack_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magmax_state::magmax_sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 not connected
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x1fff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, acknowledge_r, acknowledge_w)
- AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x1800) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magmax_state::magmax_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_READ(magmax_sound_r)
-ADDRESS_MAP_END
+void magmax_state::magmax_map(address_map &map)
+{
+ map(0x000000, 0x013fff).rom();
+ map(0x018000, 0x018fff).ram();
+ map(0x020000, 0x0207ff).ram().share("videoram");
+ map(0x028000, 0x0281ff).ram().share("spriteram");
+ map(0x030000, 0x030001).portr("P1");
+ map(0x030002, 0x030003).portr("P2");
+ map(0x030004, 0x030005).portr("SYSTEM");
+ map(0x030006, 0x030007).portr("DSW");
+ map(0x030010, 0x030011).w(this, FUNC(magmax_state::magmax_vreg_w)).share("vreg");
+ map(0x030012, 0x030013).writeonly().share("scroll_x");
+ map(0x030014, 0x030015).writeonly().share("scroll_y");
+ map(0x03001d, 0x03001d).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x03001e, 0x03001f).w(this, FUNC(magmax_state::cpu_irq_ack_w));
+}
+
+void magmax_state::magmax_sound_map(address_map &map)
+{
+ map.global_mask(0x7fff); // A15 not connected
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4000).mirror(0x1fff).rw(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_r), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x6000, 0x67ff).mirror(0x1800).ram();
+}
+
+void magmax_state::magmax_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x04, 0x05).w("ay3", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r(this, FUNC(magmax_state::magmax_sound_r));
+}
static INPUT_PORTS_START( magmax )
diff --git a/src/mame/drivers/magnum.cpp b/src/mame/drivers/magnum.cpp
index 2267aa27cd5..399ed4e5d6f 100644
--- a/src/mame/drivers/magnum.cpp
+++ b/src/mame/drivers/magnum.cpp
@@ -132,19 +132,21 @@ WRITE8_MEMBER(magnum_state::beep_w)
m_beep->set_state(BIT(data, 0));
}
-ADDRESS_MAP_START(magnum_state::magnum_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void magnum_state::magnum_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram(); // fixed 256k for now
+ map(0xe0000, 0xfffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(magnum_state::magnum_io)
- ADDRESS_MAP_UNMAP_HIGH
+void magnum_state::magnum_io(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x000a, 0x000b) cdp1854 1
//AM_RANGE(0x000e, 0x000f) cpd1854 2
- AM_RANGE(0x0018, 0x001f) AM_READWRITE8(lcd_r, lcd_w, 0x00ff)
- AM_RANGE(0x0056, 0x0057) AM_WRITE8(beep_w, 0x00ff)
- AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("rtc", cdp1879_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0x0018, 0x001f).rw(this, FUNC(magnum_state::lcd_r), FUNC(magnum_state::lcd_w)).umask16(0x00ff);
+ map(0x0056, 0x0056).w(this, FUNC(magnum_state::beep_w));
+ map(0x0080, 0x008f).rw("rtc", FUNC(cdp1879_device::read), FUNC(cdp1879_device::write)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(magnum_state::magnum)
MCFG_CPU_ADD("maincpu", I80186, XTAL(12'000'000) / 2)
diff --git a/src/mame/drivers/magtouch.cpp b/src/mame/drivers/magtouch.cpp
index ec539aa4f15..56ae4fb6c97 100644
--- a/src/mame/drivers/magtouch.cpp
+++ b/src/mame/drivers/magtouch.cpp
@@ -135,24 +135,26 @@ WRITE8_MEMBER(magtouch_state::magtouch_io_w)
}
}
-ADDRESS_MAP_START(magtouch_state::magtouch_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0)
- AM_RANGE(0x000d0000, 0x000d1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x000d8000, 0x000dffff) AM_ROMBANK("rombank")
- AM_RANGE(0x000f0000, 0x000fffff) AM_RAM AM_REGION("bios", 0 )
- AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(magtouch_state::magtouch_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x02e0, 0x02e7) AM_READWRITE8(magtouch_io_r, magtouch_io_w, 0xffffffff)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16450_0", ns16450_device, ins8250_r, ins8250_w, 0xffffffff)
-ADDRESS_MAP_END
+void magtouch_state::magtouch_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w));
+ map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0);
+ map(0x000d0000, 0x000d1fff).ram().share("nvram");
+ map(0x000d8000, 0x000dffff).bankr("rombank");
+ map(0x000f0000, 0x000fffff).ram().region("bios", 0);
+ map(0xffff0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void magtouch_state::magtouch_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x02e0, 0x02e7).rw(this, FUNC(magtouch_state::magtouch_io_r), FUNC(magtouch_state::magtouch_io_w));
+ map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w));
+ map(0x03f8, 0x03ff).rw("ns16450_0", FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w));
+}
static INPUT_PORTS_START( magtouch )
PORT_START("IN0")
diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp
index 9b79a243a64..471b658b4b7 100644
--- a/src/mame/drivers/mainevt.cpp
+++ b/src/mame/drivers/mainevt.cpp
@@ -154,75 +154,79 @@ WRITE8_MEMBER(mainevt_state::k052109_051960_w)
}
-ADDRESS_MAP_START(mainevt_state::mainevt_map)
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
-
- AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w)
- AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* probably */
- AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w) /* probably */
- AM_RANGE(0x1f8c, 0x1f8d) AM_WRITENOP /* ??? */
- AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w) /* coin counters + lamps */
-
- AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
- AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
- AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1")
- AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW3")
- AM_RANGE(0x1f99, 0x1f99) AM_READ_PORT("P3")
- AM_RANGE(0x1f9a, 0x1f9a) AM_READ_PORT("P4")
- AM_RANGE(0x1f9b, 0x1f9b) AM_READ_PORT("DSW2")
-
- AM_RANGE(0x4000, 0x5dff) AM_RAM
- AM_RANGE(0x5e00, 0x5fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mainevt_state::devstors_map)
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
-
- AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w)
- AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* probably */
- AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w) /* probably */
- AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w) /* coin counters + lamps */
-
- AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
- AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
- AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1")
- AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW3")
- AM_RANGE(0x1f9b, 0x1f9b) AM_READ_PORT("DSW2")
- AM_RANGE(0x1fa0, 0x1fbf) AM_DEVREADWRITE("k051733", k051733_device, read, write)
- AM_RANGE(0x1fb2, 0x1fb2) AM_WRITE(dv_nmienable_w)
-
- AM_RANGE(0x4000, 0x5dff) AM_RAM
- AM_RANGE(0x5e00, 0x5fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mainevt_state::mainevt_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", upd7759_device, port_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_READ(mainevt_sh_busy_r)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(mainevt_sh_irqcontrol_w)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(mainevt_sh_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mainevt_state::devstors_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(dv_sh_bankswitch_w)
-ADDRESS_MAP_END
+void mainevt_state::mainevt_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(mainevt_state::k052109_051960_r), FUNC(mainevt_state::k052109_051960_w));
+
+ map(0x1f80, 0x1f80).w(this, FUNC(mainevt_state::mainevt_bankswitch_w));
+ map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); /* probably */
+ map(0x1f88, 0x1f88).w(this, FUNC(mainevt_state::mainevt_sh_irqtrigger_w)); /* probably */
+ map(0x1f8c, 0x1f8d).nopw(); /* ??? */
+ map(0x1f90, 0x1f90).w(this, FUNC(mainevt_state::mainevt_coin_w)); /* coin counters + lamps */
+
+ map(0x1f94, 0x1f94).portr("SYSTEM");
+ map(0x1f95, 0x1f95).portr("P1");
+ map(0x1f96, 0x1f96).portr("P2");
+ map(0x1f97, 0x1f97).portr("DSW1");
+ map(0x1f98, 0x1f98).portr("DSW3");
+ map(0x1f99, 0x1f99).portr("P3");
+ map(0x1f9a, 0x1f9a).portr("P4");
+ map(0x1f9b, 0x1f9b).portr("DSW2");
+
+ map(0x4000, 0x5dff).ram();
+ map(0x5e00, 0x5fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x6000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void mainevt_state::devstors_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(mainevt_state::k052109_051960_r), FUNC(mainevt_state::k052109_051960_w));
+
+ map(0x1f80, 0x1f80).w(this, FUNC(mainevt_state::mainevt_bankswitch_w));
+ map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); /* probably */
+ map(0x1f88, 0x1f88).w(this, FUNC(mainevt_state::mainevt_sh_irqtrigger_w)); /* probably */
+ map(0x1f90, 0x1f90).w(this, FUNC(mainevt_state::mainevt_coin_w)); /* coin counters + lamps */
+
+ map(0x1f94, 0x1f94).portr("SYSTEM");
+ map(0x1f95, 0x1f95).portr("P1");
+ map(0x1f96, 0x1f96).portr("P2");
+ map(0x1f97, 0x1f97).portr("DSW1");
+ map(0x1f98, 0x1f98).portr("DSW3");
+ map(0x1f9b, 0x1f9b).portr("DSW2");
+ map(0x1fa0, 0x1fbf).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write));
+ map(0x1fb2, 0x1fb2).w(this, FUNC(mainevt_state::dv_nmienable_w));
+
+ map(0x4000, 0x5dff).ram();
+ map(0x5e00, 0x5fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x6000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void mainevt_state::mainevt_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x9000, 0x9000).w(m_upd7759, FUNC(upd7759_device::port_w));
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xd000, 0xd000).r(this, FUNC(mainevt_state::mainevt_sh_busy_r));
+ map(0xe000, 0xe000).w(this, FUNC(mainevt_state::mainevt_sh_irqcontrol_w));
+ map(0xf000, 0xf000).w(this, FUNC(mainevt_state::mainevt_sh_bankswitch_w));
+}
+
+void mainevt_state::devstors_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe000, 0xe000).w(this, FUNC(mainevt_state::devstor_sh_irqcontrol_w));
+ map(0xf000, 0xf000).w(this, FUNC(mainevt_state::dv_sh_bankswitch_w));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/mainsnk.cpp b/src/mame/drivers/mainsnk.cpp
index 3151e61003f..bc79760ea0f 100644
--- a/src/mame/drivers/mainsnk.cpp
+++ b/src/mame/drivers/mainsnk.cpp
@@ -126,36 +126,39 @@ READ8_MEMBER(mainsnk_state::sound_ack_r)
-ADDRESS_MAP_START(mainsnk_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3")
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW1")
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW2")
- AM_RANGE(0xc600, 0xc600) AM_WRITE(c600_w)
- AM_RANGE(0xc700, 0xc700) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
- AM_RANGE(0xdc00, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mainsnk_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, acknowledge_r)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xe002, 0xe003) AM_WRITENOP // ? always FFFF, snkwave leftover?
- AM_RANGE(0xe008, 0xe009) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mainsnk_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sound_ack_r)
-ADDRESS_MAP_END
+void mainsnk_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc300, 0xc300).portr("IN3");
+ map(0xc400, 0xc400).portr("DSW1");
+ map(0xc500, 0xc500).portr("DSW2");
+ map(0xc600, 0xc600).w(this, FUNC(mainsnk_state::c600_w));
+ map(0xc700, 0xc700).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd800, 0xdbff).ram().w(this, FUNC(mainsnk_state::bgram_w)).share("bgram");
+ map(0xdc00, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().share("spriteram");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(mainsnk_state::fgram_w)).share("fgram"); // + work RAM
+}
+
+void mainsnk_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_r));
+ map(0xe000, 0xe001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xe002, 0xe003).nopw(); // ? always FFFF, snkwave leftover?
+ map(0xe008, 0xe009).w("ay2", FUNC(ay8910_device::address_data_w));
+}
+
+void mainsnk_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(mainsnk_state::sound_ack_r));
+}
diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp
index f0271ea12ca..24ec91ec071 100644
--- a/src/mame/drivers/majorpkr.cpp
+++ b/src/mame/drivers/majorpkr.cpp
@@ -742,23 +742,26 @@ WRITE8_MEMBER(majorpkr_state::pulses_w)
* Memory map information *
*************************/
-ADDRESS_MAP_START(majorpkr_state::map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_ROMBANK("rom_bank")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xf7ff) AM_DEVICE("palette_bank", address_map_bank_device, amap8)
- AM_RANGE(0xf800, 0xffff) AM_DEVICE("vram_bank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(majorpkr_state::palettebanks)
- AM_RANGE(0x0000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(majorpkr_state::vrambanks)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(fg_vram_w) AM_SHARE("fg_vram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(bg_vram_w) AM_SHARE("bg_vram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM // spare vram? cleared during boot along with fg and bg
-ADDRESS_MAP_END
+void majorpkr_state::map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).bankr("rom_bank");
+ map(0xe800, 0xefff).ram().share("nvram");
+ map(0xf000, 0xf7ff).m(m_palette_bank, FUNC(address_map_bank_device::amap8));
+ map(0xf800, 0xffff).m(m_vram_bank, FUNC(address_map_bank_device::amap8));
+}
+
+void majorpkr_state::palettebanks(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void majorpkr_state::vrambanks(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(majorpkr_state::fg_vram_w)).share("fg_vram");
+ map(0x0800, 0x0fff).ram().w(this, FUNC(majorpkr_state::bg_vram_w)).share("bg_vram");
+ map(0x1000, 0x1fff).ram(); // spare vram? cleared during boot along with fg and bg
+}
/*
00 W ---> ROM bank.
@@ -781,29 +784,30 @@ ADDRESS_MAP_END
60 W ---> PSG SN76489/96 initialization routines.
(Maybe a leftover for different hardware).
*/
-ADDRESS_MAP_START(majorpkr_state::portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(rom_bank_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(palette_bank_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(vram_bank_w)
-
- AM_RANGE(0x10, 0x10) AM_READ(mux_port2_r) // muxed set of controls.
- AM_RANGE(0x10, 0x10) AM_WRITE(pulses_w) // kind of watchdog on bit4... mech counters on bits 0-1-2-3.
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1")
- AM_RANGE(0x11, 0x11) AM_WRITE(mux_sel_w) // multiplexer selector.
- AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2")
- AM_RANGE(0x12, 0x12) AM_WRITE(vidreg_w) // video registers: normal or up down screen.
- AM_RANGE(0x13, 0x13) AM_READ(mux_port_r) // all 4 DIP switches banks multiplexed.
- AM_RANGE(0x13, 0x13) AM_WRITE(lamps_a_w) // lamps a out.
- AM_RANGE(0x14, 0x14) AM_READ_PORT("TEST") // "freeze" switch.
- AM_RANGE(0x14, 0x14) AM_WRITE(lamps_b_w) // lamps b out.
-
- AM_RANGE(0x30, 0x30) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-
- AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x60, 0x60) AM_WRITENOP // leftover from a PSG SN76489/96?...
-ADDRESS_MAP_END
+void majorpkr_state::portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(majorpkr_state::rom_bank_w));
+ map(0x01, 0x01).w(this, FUNC(majorpkr_state::palette_bank_w));
+ map(0x02, 0x02).w(this, FUNC(majorpkr_state::vram_bank_w));
+
+ map(0x10, 0x10).r(this, FUNC(majorpkr_state::mux_port2_r)); // muxed set of controls.
+ map(0x10, 0x10).w(this, FUNC(majorpkr_state::pulses_w)); // kind of watchdog on bit4... mech counters on bits 0-1-2-3.
+ map(0x11, 0x11).portr("IN1");
+ map(0x11, 0x11).w(this, FUNC(majorpkr_state::mux_sel_w)); // multiplexer selector.
+ map(0x12, 0x12).portr("IN2");
+ map(0x12, 0x12).w(this, FUNC(majorpkr_state::vidreg_w)); // video registers: normal or up down screen.
+ map(0x13, 0x13).r(this, FUNC(majorpkr_state::mux_port_r)); // all 4 DIP switches banks multiplexed.
+ map(0x13, 0x13).w(this, FUNC(majorpkr_state::lamps_a_w)); // lamps a out.
+ map(0x14, 0x14).portr("TEST"); // "freeze" switch.
+ map(0x14, 0x14).w(this, FUNC(majorpkr_state::lamps_b_w)); // lamps b out.
+
+ map(0x30, 0x30).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x31, 0x31).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+
+ map(0x50, 0x50).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x60, 0x60).nopw(); // leftover from a PSG SN76489/96?...
+}
/*************************
diff --git a/src/mame/drivers/malzak.cpp b/src/mame/drivers/malzak.cpp
index 3fa70edfb36..505cf3bc2c1 100644
--- a/src/mame/drivers/malzak.cpp
+++ b/src/mame/drivers/malzak.cpp
@@ -99,45 +99,47 @@ READ8_MEMBER(malzak_state::s2636_portA_r)
}
}
-ADDRESS_MAP_START(malzak_state::malzak_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0fff) AM_ROMBANK("bank1")
- AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1100, 0x11ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
- AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r)
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(malzak_state::malzak2_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0fff) AM_ROMBANK("bank1")
- AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1100, 0x11ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
- AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r)
- AM_RANGE(0x14cc, 0x14cc) AM_MIRROR(0x6000) AM_READ(s2636_portA_r)
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
+void malzak_state::malzak_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0fff).bankr("bank1");
+ map(0x1000, 0x10ff).mirror(0x6000).ram();
+ map(0x1100, 0x11ff).mirror(0x6000).ram();
+ map(0x1200, 0x12ff).mirror(0x6000).ram();
+ map(0x1300, 0x13ff).mirror(0x6000).ram();
+ map(0x1400, 0x14ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x14cb, 0x14cb).mirror(0x6000).r(this, FUNC(malzak_state::fake_VRLE_r));
+ map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1600, 0x16ff).mirror(0x6000).ram().w(this, FUNC(malzak_state::malzak_playfield_w));
+ map(0x1700, 0x17ff).mirror(0x6000).ram();
+ map(0x1800, 0x1fff).mirror(0x6000).ram().share("videoram");
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
+
+
+void malzak_state::malzak2_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0fff).bankr("bank1");
+ map(0x1000, 0x10ff).mirror(0x6000).ram();
+ map(0x1100, 0x11ff).mirror(0x6000).ram();
+ map(0x1200, 0x12ff).mirror(0x6000).ram();
+ map(0x1300, 0x13ff).mirror(0x6000).ram();
+ map(0x1400, 0x14ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x14cb, 0x14cb).mirror(0x6000).r(this, FUNC(malzak_state::fake_VRLE_r));
+ map(0x14cc, 0x14cc).mirror(0x6000).r(this, FUNC(malzak_state::s2636_portA_r));
+ map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1600, 0x16ff).mirror(0x6000).ram().w(this, FUNC(malzak_state::malzak_playfield_w));
+ map(0x1700, 0x17ff).mirror(0x6000).ram().share("nvram");
+ map(0x1800, 0x1fff).mirror(0x6000).ram().share("videoram");
+ map(0x2000, 0x2fff).rom();
+ map(0x4000, 0x4fff).rom();
+ map(0x6000, 0x6fff).rom();
+}
READ8_MEMBER(malzak_state::s2650_data_r)
@@ -180,18 +182,20 @@ READ8_MEMBER(malzak_state::collision_r)
return 0xd0 + m_collision_counter;
}
-ADDRESS_MAP_START(malzak_state::malzak_io_map)
- AM_RANGE(0x00, 0x00) AM_READ(collision_r) // returns where a collision can occur.
- AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) // possibly sound codes for dual SN76477s
- AM_RANGE(0x60, 0x60) AM_WRITE(port60_w) // possibly playfield scroll X offset
- AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0") //controls
- AM_RANGE(0xa0, 0xa0) AM_WRITENOP // echoes I/O port read from port 0x80
- AM_RANGE(0xc0, 0xc0) AM_WRITE(portc0_w) // possibly playfield row selection for writing and/or collisions
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(malzak_state::malzak_data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(s2650_data_r) // read upon death
-ADDRESS_MAP_END
+void malzak_state::malzak_io_map(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(malzak_state::collision_r)); // returns where a collision can occur.
+ map(0x40, 0x40).w(this, FUNC(malzak_state::port40_w)); // possibly sound codes for dual SN76477s
+ map(0x60, 0x60).w(this, FUNC(malzak_state::port60_w)); // possibly playfield scroll X offset
+ map(0x80, 0x80).portr("IN0"); //controls
+ map(0xa0, 0xa0).nopw(); // echoes I/O port read from port 0x80
+ map(0xc0, 0xc0).w(this, FUNC(malzak_state::portc0_w)); // possibly playfield row selection for writing and/or collisions
+}
+
+void malzak_state::malzak_data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(malzak_state::s2650_data_r)); // read upon death
+}
static INPUT_PORTS_START( malzak )
diff --git a/src/mame/drivers/manohman.cpp b/src/mame/drivers/manohman.cpp
index bd23d434f16..58fc68cd36a 100644
--- a/src/mame/drivers/manohman.cpp
+++ b/src/mame/drivers/manohman.cpp
@@ -186,17 +186,18 @@ IRQ_CALLBACK_MEMBER(manohman_state::iack_handler)
* Memory Map Definition *
*********************************************/
-ADDRESS_MAP_START(manohman_state::mem_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x100000, 0x10003f) AM_DEVREADWRITE8("pit", pit68230_device, read, write, 0x00ff)
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) AM_READNOP
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
- AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("nvram") //work RAM
- AM_RANGE(0x600002, 0x600003) AM_WRITENOP // output through shift register?
- AM_RANGE(0x600004, 0x600005) AM_READNOP
- AM_RANGE(0x600006, 0x600007) AM_NOP //(r) is discarded (watchdog?)
-ADDRESS_MAP_END
+void manohman_state::mem_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x100000, 0x10003f).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write)).umask16(0x00ff);
+ map(0x200000, 0x20001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff).nopr();
+ map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x500000, 0x503fff).ram().share("nvram"); //work RAM
+ map(0x600002, 0x600003).nopw(); // output through shift register?
+ map(0x600004, 0x600005).nopr();
+ map(0x600006, 0x600007).noprw(); //(r) is discarded (watchdog?)
+}
/*
diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp
index ca752acf0ac..690b6d3c679 100644
--- a/src/mame/drivers/mappy.cpp
+++ b/src/mame/drivers/mappy.cpp
@@ -645,67 +645,74 @@ INTERRUPT_GEN_MEMBER(mappy_state::sub2_vblank_irq)
m_subcpu2->set_input_line(0, ASSERT_LINE);
}
-ADDRESS_MAP_START(mappy_state::superpac_cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(superpac_videoram_w) AM_SHARE("videoram") /* video RAM */
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* work RAM with embedded sprite RAM */
- AM_RANGE(0x2000, 0x2000) AM_READWRITE(superpac_flipscreen_r, superpac_flipscreen_w)
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the sound CPU */
- AM_RANGE(0x4800, 0x480f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x4810, 0x481f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x5000, 0x500f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mappy_state::phozon_cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(superpac_videoram_w) AM_SHARE("videoram") /* video RAM */
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #2/sprite RAM*/
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the sound CPU */
- AM_RANGE(0x4800, 0x480f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x4810, 0x481f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x5000, 0x500f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */
- AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mappy_state::mappy_cpu1_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(mappy_videoram_w) AM_SHARE("videoram") /* video RAM */
- AM_RANGE(0x1000, 0x27ff) AM_RAM AM_SHARE("spriteram") /* work RAM with embedded sprite RAM */
- AM_RANGE(0x3800, 0x3fff) AM_WRITE(mappy_scroll_w) /* scroll */
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the sound CPU */
- AM_RANGE(0x4800, 0x480f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x4810, 0x481f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */
- AM_RANGE(0x5000, 0x500f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM code (only a000-ffff in Mappy) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mappy_state::superpac_cpu2_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU (also sound registers) */
- AM_RANGE(0x2000, 0x200f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mappy_state::phozon_cpu2_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU + sound registers */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mappy_state::mappy_cpu2_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU (also sound registers) */
- AM_RANGE(0x2000, 0x200f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM code */
-ADDRESS_MAP_END
+void mappy_state::superpac_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */
+ map(0x0800, 0x1fff).ram().share("spriteram"); /* work RAM with embedded sprite RAM */
+ map(0x2000, 0x2000).rw(this, FUNC(mappy_state::superpac_flipscreen_r), FUNC(mappy_state::superpac_flipscreen_w));
+ map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */
+ map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
+ map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xa000, 0xffff).rom();
+}
+
+void mappy_state::phozon_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */
+ map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2/sprite RAM*/
+ map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */
+ map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
+ map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void mappy_state::mappy_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().w(this, FUNC(mappy_state::mappy_videoram_w)).share("videoram"); /* video RAM */
+ map(0x1000, 0x27ff).ram().share("spriteram"); /* work RAM with embedded sprite RAM */
+ map(0x3800, 0x3fff).w(this, FUNC(mappy_state::mappy_scroll_w)); /* scroll */
+ map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */
+ map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
+ map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
+ map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0xffff).rom(); /* ROM code (only a000-ffff in Mappy) */
+}
+
+void mappy_state::superpac_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU (also sound registers) */
+ map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
+ map(0xe000, 0xffff).rom();
+}
+
+void mappy_state::phozon_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU + sound registers */
+ map(0xe000, 0xffff).rom(); /* ROM */
+}
+
+void mappy_state::mappy_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU (also sound registers) */
+ map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
+ map(0xe000, 0xffff).rom(); /* ROM code */
+}
/* extra CPU only present in Phozon */
-ADDRESS_MAP_START(mappy_state::phozon_cpu3_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(superpac_videoram_w) AM_SHARE("videoram") /* video RAM */
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #2/sprite RAM*/
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with CPU #2 */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM /* RAM */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
+void mappy_state::phozon_cpu3_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */
+ map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2/sprite RAM*/
+ map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with CPU #2 */
+ map(0xa000, 0xa7ff).ram(); /* RAM */
+ map(0xe000, 0xffff).rom(); /* ROM */
+}
diff --git a/src/mame/drivers/marineb.cpp b/src/mame/drivers/marineb.cpp
index 4d24b032f99..ded73a301e0 100644
--- a/src/mame/drivers/marineb.cpp
+++ b/src/mame/drivers/marineb.cpp
@@ -65,33 +65,36 @@ WRITE_LINE_MEMBER(marineb_state::irq_mask_w)
m_irq_mask = state;
}
-ADDRESS_MAP_START(marineb_state::marineb_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(marineb_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8c00, 0x8c3f) AM_RAM AM_SHARE("spriteram") /* Hoccer only */
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(marineb_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9800, 0x9800) AM_WRITE(marineb_column_scroll_w)
- AM_RANGE(0x9a00, 0x9a00) AM_WRITE(marineb_palette_bank_0_w)
- AM_RANGE(0x9c00, 0x9c00) AM_WRITE(marineb_palette_bank_1_w)
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM") AM_WRITENOP /* also watchdog */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(marineb_state::marineb_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(marineb_state::wanted_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8912_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8912_device, address_data_w)
-ADDRESS_MAP_END
+void marineb_state::marineb_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(marineb_state::marineb_videoram_w)).share("videoram");
+ map(0x8c00, 0x8c3f).ram().share("spriteram"); /* Hoccer only */
+ map(0x9000, 0x93ff).ram().w(this, FUNC(marineb_state::marineb_colorram_w)).share("colorram");
+ map(0x9800, 0x9800).w(this, FUNC(marineb_state::marineb_column_scroll_w));
+ map(0x9a00, 0x9a00).w(this, FUNC(marineb_state::marineb_palette_bank_0_w));
+ map(0x9c00, 0x9c00).w(this, FUNC(marineb_state::marineb_palette_bank_1_w));
+ map(0xa000, 0xa007).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P2");
+ map(0xa800, 0xa800).portr("P1");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb800, 0xb800).portr("SYSTEM").nopw(); /* also watchdog */
+}
+
+
+void marineb_state::marineb_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x09).w("ay1", FUNC(ay8910_device::address_data_w));
+}
+
+void marineb_state::wanted_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8912_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8912_device::address_data_w));
+}
static INPUT_PORTS_START( marineb )
diff --git a/src/mame/drivers/marinedt.cpp b/src/mame/drivers/marinedt.cpp
index 87ba954a44f..ae0374ad25b 100644
--- a/src/mame/drivers/marinedt.cpp
+++ b/src/mame/drivers/marinedt.cpp
@@ -437,28 +437,30 @@ READ8_MEMBER(marinedt_state::pc3259_r)
return 0;
}
-ADDRESS_MAP_START(marinedt_state::marinedt_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 is not decoded */
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("ipl",0)
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(marinedt_state::marinedt_io)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
- AM_RANGE(0x01, 0x01) AM_READ(trackball_r)
- AM_RANGE(0x02, 0x02) AM_SELECT(0xc) AM_READ(pc3259_r)
- AM_RANGE(0x02, 0x04) AM_WRITE(obj_0_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x05, 0x05) AM_WRITE(bgm_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(sfx_w)
- AM_RANGE(0x08, 0x0b) AM_WRITE(obj_1_w)
- AM_RANGE(0x0d, 0x0d) AM_WRITE(layer_enable_w)
- AM_RANGE(0x0e, 0x0e) AM_WRITENOP // watchdog
- AM_RANGE(0x0f, 0x0f) AM_WRITE(output_w)
-ADDRESS_MAP_END
+void marinedt_state::marinedt_map(address_map &map)
+{
+ map.global_mask(0x7fff); /* A15 is not decoded */
+ map(0x0000, 0x3fff).rom().region("ipl", 0);
+ map(0x4000, 0x43ff).mirror(0x0400).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(marinedt_state::vram_w)).share("vram");
+}
+
+void marinedt_state::marinedt_io(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x00, 0x00).portr("DSW1");
+ map(0x01, 0x01).r(this, FUNC(marinedt_state::trackball_r));
+ map(0x02, 0x02).select(0xc).r(this, FUNC(marinedt_state::pc3259_r));
+ map(0x02, 0x04).w(this, FUNC(marinedt_state::obj_0_w));
+ map(0x03, 0x03).portr("SYSTEM");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x05, 0x05).w(this, FUNC(marinedt_state::bgm_w));
+ map(0x06, 0x06).w(this, FUNC(marinedt_state::sfx_w));
+ map(0x08, 0x0b).w(this, FUNC(marinedt_state::obj_1_w));
+ map(0x0d, 0x0d).w(this, FUNC(marinedt_state::layer_enable_w));
+ map(0x0e, 0x0e).nopw(); // watchdog
+ map(0x0f, 0x0f).w(this, FUNC(marinedt_state::output_w));
+}
static INPUT_PORTS_START( marinedt )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/mario.cpp b/src/mame/drivers/mario.cpp
index 3712ce1d68d..829ea517a34 100644
--- a/src/mame/drivers/mario.cpp
+++ b/src/mame/drivers/mario.cpp
@@ -141,40 +141,43 @@ WRITE_LINE_MEMBER(mario_state::coin_counter_2_w)
*
*************************************/
-ADDRESS_MAP_START(mario_state::mario_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("spriteram") /* physical sprite ram */
- AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(mario_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(mario_sh1_w) /* Mario run sample */
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(mario_sh2_w) /* Luigi run sample */
- AM_RANGE(0x7d00, 0x7d00) AM_WRITE(mario_scroll_w)
- AM_RANGE(0x7e00, 0x7e00) AM_WRITE(mario_sh_tuneselect_w)
- AM_RANGE(0x7e80, 0x7e87) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x7f00, 0x7f07) AM_WRITE(mario_sh3_w) /* Sound port */
- AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW") /* DSW */
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mario_state::masao_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("spriteram") /* physical sprite ram */
- AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(mario_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0")
- AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1")
- AM_RANGE(0x7d00, 0x7d00) AM_WRITE(mario_scroll_w)
- AM_RANGE(0x7e00, 0x7e00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x7e80, 0x7e87) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x7f00, 0x7f00) AM_WRITE(masao_sh_irqtrigger_w)
- AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW") /* DSW */
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mario_state::mario_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("z80dma", z80dma_device, read, write) /* dma controller */
-ADDRESS_MAP_END
+void mario_state::mario_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x73ff).ram().share("spriteram"); /* physical sprite ram */
+ map(0x7400, 0x77ff).ram().w(this, FUNC(mario_state::mario_videoram_w)).share("videoram");
+ map(0x7c00, 0x7c00).portr("IN0").w(this, FUNC(mario_state::mario_sh1_w)); /* Mario run sample */
+ map(0x7c80, 0x7c80).portr("IN1").w(this, FUNC(mario_state::mario_sh2_w)); /* Luigi run sample */
+ map(0x7d00, 0x7d00).w(this, FUNC(mario_state::mario_scroll_w));
+ map(0x7e00, 0x7e00).w(this, FUNC(mario_state::mario_sh_tuneselect_w));
+ map(0x7e80, 0x7e87).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x7f00, 0x7f07).w(this, FUNC(mario_state::mario_sh3_w)); /* Sound port */
+ map(0x7f80, 0x7f80).portr("DSW"); /* DSW */
+ map(0xf000, 0xffff).rom();
+}
+
+void mario_state::masao_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x73ff).ram().share("spriteram"); /* physical sprite ram */
+ map(0x7400, 0x77ff).ram().w(this, FUNC(mario_state::mario_videoram_w)).share("videoram");
+ map(0x7c00, 0x7c00).portr("IN0");
+ map(0x7c80, 0x7c80).portr("IN1");
+ map(0x7d00, 0x7d00).w(this, FUNC(mario_state::mario_scroll_w));
+ map(0x7e00, 0x7e00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x7e80, 0x7e87).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x7f00, 0x7f00).w(this, FUNC(mario_state::masao_sh_irqtrigger_w));
+ map(0x7f80, 0x7f80).portr("DSW"); /* DSW */
+ map(0xf000, 0xffff).rom();
+}
+
+void mario_state::mario_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_z80dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); /* dma controller */
+}
/*************************************
diff --git a/src/mame/drivers/markham.cpp b/src/mame/drivers/markham.cpp
index bbf9b5376c1..761a856c6e2 100644
--- a/src/mame/drivers/markham.cpp
+++ b/src/mame/drivers/markham.cpp
@@ -26,40 +26,42 @@ READ8_MEMBER(markham_state::markham_e004_r)
/****************************************************************************/
-ADDRESS_MAP_START(markham_state::markham_master_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
+void markham_state::markham_master_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(markham_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share1")
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("spriteram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(markham_state::markham_videoram_w)).share("videoram");
+ map(0xd800, 0xdfff).ram().share("share1");
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW2")
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1")
- AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2")
+ map(0xe000, 0xe000).portr("DSW2");
+ map(0xe001, 0xe001).portr("DSW1");
+ map(0xe002, 0xe002).portr("P1");
+ map(0xe003, 0xe003).portr("P2");
- AM_RANGE(0xe004, 0xe004) AM_READ(markham_e004_r) /* from CPU2 busack */
+ map(0xe004, 0xe004).r(this, FUNC(markham_state::markham_e004_r)); /* from CPU2 busack */
- AM_RANGE(0xe005, 0xe005) AM_READ_PORT("SYSTEM")
+ map(0xe005, 0xe005).portr("SYSTEM");
- AM_RANGE(0xe008, 0xe008) AM_WRITENOP /* coin counter? */
- AM_RANGE(0xe009, 0xe009) AM_WRITENOP /* to CPU2 busreq */
+ map(0xe008, 0xe008).nopw(); /* coin counter? */
+ map(0xe009, 0xe009).nopw(); /* to CPU2 busreq */
- AM_RANGE(0xe00c, 0xe00d) AM_WRITEONLY AM_SHARE("xscroll")
- AM_RANGE(0xe00e, 0xe00e) AM_WRITE(markham_flipscreen_w)
-ADDRESS_MAP_END
+ map(0xe00c, 0xe00d).writeonly().share("xscroll");
+ map(0xe00e, 0xe00e).w(this, FUNC(markham_state::markham_flipscreen_w));
+}
-ADDRESS_MAP_START(markham_state::markham_slave_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
+void markham_state::markham_slave_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x87ff).ram().share("share1");
- AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("sn2", sn76496_device, write)
+ map(0xc000, 0xc000).w("sn1", FUNC(sn76496_device::write));
+ map(0xc001, 0xc001).w("sn2", FUNC(sn76496_device::write));
- AM_RANGE(0xc002, 0xc002) AM_WRITENOP /* unknown */
- AM_RANGE(0xc003, 0xc003) AM_WRITENOP /* unknown */
-ADDRESS_MAP_END
+ map(0xc002, 0xc002).nopw(); /* unknown */
+ map(0xc003, 0xc003).nopw(); /* unknown */
+}
/****************************************************************************/
diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp
index 27fb149173e..4275714fb5d 100644
--- a/src/mame/drivers/marywu.cpp
+++ b/src/mame/drivers/marywu.cpp
@@ -157,19 +157,21 @@ WRITE8_MEMBER( marywu_state::display_7seg_data_w )
output().set_digit_value(2 * m_selected_7seg_module + 1, patterns[(data >> 4) & 0x0F]);
}
-ADDRESS_MAP_START(marywu_state::program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(marywu_state::io_map)
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM /* HM6116: 2kbytes of Static RAM */
- AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x9003, 0x9003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0xb000, 0xb001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("i8279", i8279_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_NOP /* TODO: Investigate this. There's something going on at this address range. */
-ADDRESS_MAP_END
+void marywu_state::program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
+
+void marywu_state::io_map(address_map &map)
+{
+ map(0x8000, 0x87ff).mirror(0x0800).ram(); /* HM6116: 2kbytes of Static RAM */
+ map(0x9000, 0x9000).mirror(0x0ffc).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x9001, 0x9001).mirror(0x0ffc).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x9002, 0x9002).mirror(0x0ffc).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x9003, 0x9003).mirror(0x0ffc).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb000, 0xb001).mirror(0x0ffe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0xf000, 0xf000).noprw(); /* TODO: Investigate this. There's something going on at this address range. */
+}
MACHINE_CONFIG_START(marywu_state::marywu)
/* basic machine hardware */
diff --git a/src/mame/drivers/mastboy.cpp b/src/mame/drivers/mastboy.cpp
index aa4abef1f30..c86b47903f3 100644
--- a/src/mame/drivers/mastboy.cpp
+++ b/src/mame/drivers/mastboy.cpp
@@ -616,30 +616,31 @@ INTERRUPT_GEN_MEMBER(mastboy_state::interrupt)
/* Memory Maps */
-ADDRESS_MAP_START(mastboy_state::mastboy_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // Internal ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROM // External ROM
+void mastboy_state::mastboy_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // Internal ROM
+ map(0x4000, 0x7fff).rom(); // External ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("workram")// work ram
- AM_RANGE(0x9000, 0x9fff) AM_RAM AM_SHARE("tileram")// tilemap ram
- AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_SHARE("colram") AM_MIRROR(0x0e00) // colour ram
+ map(0x8000, 0x8fff).ram().share("workram");// work ram
+ map(0x9000, 0x9fff).ram().share("tileram");// tilemap ram
+ map(0xa000, 0xa1ff).ram().share("colram").mirror(0x0e00); // colour ram
- AM_RANGE(0xc000, 0xffff) AM_DEVICE("bank_c000", address_map_bank_device, amap8)
+ map(0xc000, 0xffff).m("bank_c000", FUNC(address_map_bank_device::amap8));
- AM_RANGE(0xff000, 0xff7ff) AM_DEVREADWRITE("earom", eeprom_parallel_28xx_device, read, write)
+ map(0xff000, 0xff7ff).rw(m_earom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
- AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1")
- AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2")
- AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1")
- AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2")
+ map(0xff800, 0xff807).portr("P1");
+ map(0xff808, 0xff80f).portr("P2");
+ map(0xff810, 0xff817).portr("DSW1");
+ map(0xff818, 0xff81f).portr("DSW2");
- AM_RANGE(0xff820, 0xff827) AM_WRITE(bank_w)
- AM_RANGE(0xff828, 0xff829) AM_DEVWRITE("saa", saa1099_device, write)
- AM_RANGE(0xff830, 0xff830) AM_WRITE(msm5205_data_w)
- AM_RANGE(0xff838, 0xff83f) AM_DEVWRITE("outlatch", ls259_device, write_d0)
+ map(0xff820, 0xff827).w(this, FUNC(mastboy_state::bank_w));
+ map(0xff828, 0xff829).w("saa", FUNC(saa1099_device::write));
+ map(0xff830, 0xff830).w(this, FUNC(mastboy_state::msm5205_data_w));
+ map(0xff838, 0xff83f).w(m_outlatch, FUNC(ls259_device::write_d0));
- AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM
-ADDRESS_MAP_END
+ map(0xffc00, 0xfffff).ram(); // Internal RAM
+}
// TODO : banked map is mirrored?
ADDRESS_MAP_START(mastboy_state::bank_c000_map)
@@ -661,10 +662,11 @@ READ8_MEMBER(mastboy_state::nmi_read)
return 0x00;
}
-ADDRESS_MAP_START(mastboy_state::mastboy_io_map)
- AM_RANGE(0x38, 0x38) AM_READ(port_38_read)
- AM_RANGE(0x39, 0x39) AM_READ(nmi_read)
-ADDRESS_MAP_END
+void mastboy_state::mastboy_io_map(address_map &map)
+{
+ map(0x38, 0x38).r(this, FUNC(mastboy_state::port_38_read));
+ map(0x39, 0x39).r(this, FUNC(mastboy_state::nmi_read));
+}
/* Input Ports */
diff --git a/src/mame/drivers/matmania.cpp b/src/mame/drivers/matmania.cpp
index 6b6a7258997..321877c034d 100644
--- a/src/mame/drivers/matmania.cpp
+++ b/src/mame/drivers/matmania.cpp
@@ -75,59 +75,63 @@ WRITE8_MEMBER(matmania_state::maniach_sh_command_w)
*
*************************************/
-ADDRESS_MAP_START(matmania_state::matmania_map)
- AM_RANGE(0x0000, 0x077f) AM_RAM
- AM_RANGE(0x0780, 0x07df) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram2")
- AM_RANGE(0x2000, 0x21ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2200, 0x23ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x2400, 0x25ff) AM_RAM AM_SHARE("videoram3")
- AM_RANGE(0x2600, 0x27ff) AM_RAM AM_SHARE("colorram3")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") AM_WRITEONLY AM_SHARE("pageselect")
- AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1") AM_WRITE(matmania_sh_command_w)
- AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1") AM_WRITENOP /* ?? */
- AM_RANGE(0x3050, 0x307f) AM_WRITE(matmania_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(matmania_state::maniach_map)
- AM_RANGE(0x0000, 0x077f) AM_RAM
- AM_RANGE(0x0780, 0x07df) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram2")
- AM_RANGE(0x2000, 0x21ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2200, 0x23ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x2400, 0x25ff) AM_RAM AM_SHARE("videoram3")
- AM_RANGE(0x2600, 0x27ff) AM_RAM AM_SHARE("colorram3")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") AM_WRITEONLY AM_SHARE("pageselect")
- AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1") AM_WRITE(maniach_sh_command_w)
- AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1") AM_WRITENOP /* ?? */
- AM_RANGE(0x3040, 0x3040) AM_DEVREADWRITE("mcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0x3041, 0x3041) AM_READ(maniach_mcu_status_r)
- AM_RANGE(0x3050, 0x307f) AM_WRITE(matmania_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(matmania_state::matmania_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(matmania_state::maniach_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x2004, 0x2004) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void matmania_state::matmania_map(address_map &map)
+{
+ map(0x0000, 0x077f).ram();
+ map(0x0780, 0x07df).writeonly().share("spriteram");
+ map(0x1000, 0x13ff).ram().share("videoram2");
+ map(0x1400, 0x17ff).ram().share("colorram2");
+ map(0x2000, 0x21ff).ram().share("videoram");
+ map(0x2200, 0x23ff).ram().share("colorram");
+ map(0x2400, 0x25ff).ram().share("videoram3");
+ map(0x2600, 0x27ff).ram().share("colorram3");
+ map(0x3000, 0x3000).portr("IN0").writeonly().share("pageselect");
+ map(0x3010, 0x3010).portr("IN1").w(this, FUNC(matmania_state::matmania_sh_command_w));
+ map(0x3020, 0x3020).portr("DSW2").writeonly().share("scroll");
+ map(0x3030, 0x3030).portr("DSW1").nopw(); /* ?? */
+ map(0x3050, 0x307f).w(this, FUNC(matmania_state::matmania_paletteram_w)).share("paletteram");
+ map(0x4000, 0xffff).rom();
+}
+
+void matmania_state::maniach_map(address_map &map)
+{
+ map(0x0000, 0x077f).ram();
+ map(0x0780, 0x07df).ram().share("spriteram");
+ map(0x1000, 0x13ff).ram().share("videoram2");
+ map(0x1400, 0x17ff).ram().share("colorram2");
+ map(0x2000, 0x21ff).ram().share("videoram");
+ map(0x2200, 0x23ff).ram().share("colorram");
+ map(0x2400, 0x25ff).ram().share("videoram3");
+ map(0x2600, 0x27ff).ram().share("colorram3");
+ map(0x3000, 0x3000).portr("IN0").writeonly().share("pageselect");
+ map(0x3010, 0x3010).portr("IN1").w(this, FUNC(matmania_state::maniach_sh_command_w));
+ map(0x3020, 0x3020).portr("DSW2").writeonly().share("scroll");
+ map(0x3030, 0x3030).portr("DSW1").nopw(); /* ?? */
+ map(0x3040, 0x3040).rw(m_mcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0x3041, 0x3041).r(this, FUNC(matmania_state::maniach_mcu_status_r));
+ map(0x3050, 0x307f).w(this, FUNC(matmania_state::matmania_paletteram_w)).share("paletteram");
+ map(0x4000, 0xffff).rom();
+}
+
+
+void matmania_state::matmania_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x2002, 0x2003).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x2004, 0x2004).w("dac", FUNC(dac_byte_interface::write));
+ map(0x2007, 0x2007).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
+
+void matmania_state::maniach_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x2000, 0x2001).w("ymsnd", FUNC(ym3526_device::write));
+ map(0x2002, 0x2002).w("dac", FUNC(dac_byte_interface::write));
+ map(0x2004, 0x2004).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/maxaflex.cpp b/src/mame/drivers/maxaflex.cpp
index b2cc24cffed..e1ef07a3969 100644
--- a/src/mame/drivers/maxaflex.cpp
+++ b/src/mame/drivers/maxaflex.cpp
@@ -199,19 +199,20 @@ INPUT_CHANGED_MEMBER(maxaflex_state::coin_inserted)
-ADDRESS_MAP_START(maxaflex_state::a600xl_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x5000, 0x57ff) AM_ROM AM_REGION("maincpu", 0xd000) /* self test */
- AM_RANGE(0x8000, 0xbfff) AM_ROM /* game cartridge */
- AM_RANGE(0xc000, 0xcfff) AM_ROM /* OS */
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_ROM /* OS */
-ADDRESS_MAP_END
+void maxaflex_state::a600xl_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x5000, 0x57ff).rom().region("maincpu", 0xd000); /* self test */
+ map(0x8000, 0xbfff).rom(); /* game cartridge */
+ map(0xc000, 0xcfff).rom(); /* OS */
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw("pia", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rom(); /* OS */
+}
static INPUT_PORTS_START( a600xl )
diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp
index 9ac530a0969..fa9ebe0ef1a 100644
--- a/src/mame/drivers/maygay1b.cpp
+++ b/src/mame/drivers/maygay1b.cpp
@@ -476,50 +476,51 @@ WRITE8_MEMBER(maygay1b_state::m1_lockout_w)
}
}
-ADDRESS_MAP_START(maygay1b_state::m1_memmap)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
+void maygay1b_state::m1_memmap(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
- AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w)
- AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w)
- AM_RANGE(0x2020, 0x2020) AM_WRITE(reel56_w)
+ map(0x2000, 0x2000).w(this, FUNC(maygay1b_state::reel12_w));
+ map(0x2010, 0x2010).w(this, FUNC(maygay1b_state::reel34_w));
+ map(0x2020, 0x2020).w(this, FUNC(maygay1b_state::reel56_w));
// there is actually an 8279 and an 8051 (which I guess is the MCU?).
- AM_RANGE(0x2030, 0x2031) AM_DEVREADWRITE("i8279", i8279_device, read, write)
+ map(0x2030, 0x2031).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
#ifdef USE_MCU
//8051
- AM_RANGE(0x2040, 0x2040) AM_WRITE( main_to_mcu_0_w )
- AM_RANGE(0x2041, 0x2041) AM_WRITE( main_to_mcu_1_w )
+ map(0x2040, 0x2040).w(this, FUNC(maygay1b_state::main_to_mcu_0_w));
+ map(0x2041, 0x2041).w(this, FUNC(maygay1b_state::main_to_mcu_1_w));
#else
//8051
- AM_RANGE(0x2040, 0x2041) AM_DEVREADWRITE("i8279_2", i8279_device, read, write)
+ map(0x2040, 0x2041).rw("i8279_2", FUNC(i8279_device::read), FUNC(i8279_device::write));
// AM_RANGE(0x2050, 0x2050)// SCAN on M1B
#endif
- AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE("duart68681", mc68681_device, read, write )
+ map(0x2070, 0x207f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write));
- AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x20B0, 0x20B0) AM_READ(m1_meter_r)
+ map(0x2090, 0x2091).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x20B0, 0x20B0).r(this, FUNC(maygay1b_state::m1_meter_r));
- AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_device, write)
- AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_device, read)
+ map(0x20A0, 0x20A3).w("pia", FUNC(pia6821_device::write));
+ map(0x20A0, 0x20A3).r("pia", FUNC(pia6821_device::read));
- AM_RANGE(0x20C0, 0x20C7) AM_DEVWRITE("mainlatch", hc259_device, write_d0)
+ map(0x20C0, 0x20C7).w("mainlatch", FUNC(hc259_device::write_d0));
- AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x2404, 0x2405) AM_READ(latch_st_lo)
- AM_RANGE(0x2406, 0x2407) AM_READ(latch_st_hi)
+ map(0x2400, 0x2401).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x2404, 0x2405).r(this, FUNC(maygay1b_state::latch_st_lo));
+ map(0x2406, 0x2407).r(this, FUNC(maygay1b_state::latch_st_hi));
- AM_RANGE(0x2410, 0x2410) AM_READ(m1_firq_clr_r)
+ map(0x2410, 0x2410).r(this, FUNC(maygay1b_state::m1_firq_clr_r));
- AM_RANGE(0x2412, 0x2412) AM_READ(m1_firq_trg_r) // firq, sample playback?
+ map(0x2412, 0x2412).r(this, FUNC(maygay1b_state::m1_firq_trg_r)); // firq, sample playback?
- AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
+ map(0x2420, 0x2421).w(this, FUNC(maygay1b_state::latch_ch2_w)); // oki
- AM_RANGE(0x2800, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1") /* 64k paged ROM (4 pages) */
+ map(0x2800, 0xdfff).rom();
+ map(0xe000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */
-ADDRESS_MAP_END
+}
@@ -561,50 +562,51 @@ WRITE8_MEMBER(maygay1b_state::nec_bank1_w)
m_upd7759->start_w(1);
}
-ADDRESS_MAP_START(maygay1b_state::m1_nec_memmap)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
+void maygay1b_state::m1_nec_memmap(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
- AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w)
- AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w)
- AM_RANGE(0x2020, 0x2020) AM_WRITE(reel56_w)
+ map(0x2000, 0x2000).w(this, FUNC(maygay1b_state::reel12_w));
+ map(0x2010, 0x2010).w(this, FUNC(maygay1b_state::reel34_w));
+ map(0x2020, 0x2020).w(this, FUNC(maygay1b_state::reel56_w));
// there is actually an 8279 and an 8051 (which I guess is the MCU?).
- AM_RANGE(0x2030, 0x2031) AM_DEVREADWRITE("i8279", i8279_device, read, write)
+ map(0x2030, 0x2031).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
#ifdef USE_MCU
//8051
- AM_RANGE(0x2040, 0x2040) AM_WRITE( main_to_mcu_0_w )
- AM_RANGE(0x2041, 0x2041) AM_WRITE( main_to_mcu_1_w )
+ map(0x2040, 0x2040).w(this, FUNC(maygay1b_state::main_to_mcu_0_w));
+ map(0x2041, 0x2041).w(this, FUNC(maygay1b_state::main_to_mcu_1_w));
#else
//8051
- AM_RANGE(0x2040, 0x2041) AM_DEVREADWRITE("i8279_2", i8279_device, read, write)
+ map(0x2040, 0x2041).rw("i8279_2", FUNC(i8279_device::read), FUNC(i8279_device::write));
// AM_RANGE(0x2050, 0x2050)// SCAN on M1B
#endif
- AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE("duart68681", mc68681_device, read, write )
+ map(0x2070, 0x207f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write));
- AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x20B0, 0x20B0) AM_READ(m1_meter_r)
+ map(0x2090, 0x2091).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x20B0, 0x20B0).r(this, FUNC(maygay1b_state::m1_meter_r));
- AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_device, write)
- AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_device, read)
+ map(0x20A0, 0x20A3).w("pia", FUNC(pia6821_device::write));
+ map(0x20A0, 0x20A3).r("pia", FUNC(pia6821_device::read));
- AM_RANGE(0x20C0, 0x20C7) AM_DEVWRITE("mainlatch", hc259_device, write_d0)
+ map(0x20C0, 0x20C7).w("mainlatch", FUNC(hc259_device::write_d0));
- AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x2404, 0x2405) AM_WRITE(nec_bank0_w)
- AM_RANGE(0x2406, 0x2407) AM_WRITE(nec_bank1_w)
+ map(0x2400, 0x2401).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x2404, 0x2405).w(this, FUNC(maygay1b_state::nec_bank0_w));
+ map(0x2406, 0x2407).w(this, FUNC(maygay1b_state::nec_bank1_w));
- AM_RANGE(0x2408, 0x2409) AM_READ(nec_reset_r)
+ map(0x2408, 0x2409).r(this, FUNC(maygay1b_state::nec_reset_r));
- AM_RANGE(0x240c, 0x240d) AM_READ(m1_firq_clr_r)
+ map(0x240c, 0x240d).r(this, FUNC(maygay1b_state::m1_firq_clr_r));
- AM_RANGE(0x240e, 0x240f) AM_READ(m1_firq_nec_r)
+ map(0x240e, 0x240f).r(this, FUNC(maygay1b_state::m1_firq_nec_r));
- AM_RANGE(0x2800, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1") /* 64k paged ROM (4 pages) */
+ map(0x2800, 0xdfff).rom();
+ map(0xe000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */
-ADDRESS_MAP_END
+}
/*************************************
diff --git a/src/mame/drivers/maygayep.cpp b/src/mame/drivers/maygayep.cpp
index b66254022be..992a026ce77 100644
--- a/src/mame/drivers/maygayep.cpp
+++ b/src/mame/drivers/maygayep.cpp
@@ -58,11 +58,12 @@ public:
};
// bp 29e58 in ep_simp reads the 'INITIALISE . . .' string
-ADDRESS_MAP_START(maygayep_state::maygayep_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0xfe0000, 0xffffff ) AM_RAM // merln at least?
-ADDRESS_MAP_END
+void maygayep_state::maygayep_map(address_map &map)
+{
+ map.global_mask(0xffffff);
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0xfe0000, 0xffffff).ram(); // merln at least?
+}
static INPUT_PORTS_START( maygayep )
INPUT_PORTS_END
diff --git a/src/mame/drivers/maygaysw.cpp b/src/mame/drivers/maygaysw.cpp
index 3ca68e2b38f..bb311f47325 100644
--- a/src/mame/drivers/maygaysw.cpp
+++ b/src/mame/drivers/maygaysw.cpp
@@ -115,12 +115,13 @@ public:
-ADDRESS_MAP_START(maygayew_state::maygayew_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("mainrom",0)
- AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("mainrom",0)
- AM_RANGE(0x200000, 0x23ffff) AM_ROM AM_REGION("mainrom",0)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void maygayew_state::maygayew_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("mainrom", 0);
+ map(0x100000, 0x13ffff).rom().region("mainrom", 0);
+ map(0x200000, 0x23ffff).rom().region("mainrom", 0);
+ map(0xff0000, 0xffffff).ram();
+}
static INPUT_PORTS_START( maygayew )
diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp
index 19e607477de..3971a5bf3a7 100644
--- a/src/mame/drivers/maygayv1.cpp
+++ b/src/mame/drivers/maygayv1.cpp
@@ -555,20 +555,21 @@ WRITE16_MEMBER(maygayv1_state::vsync_int_ctrl)
m_maincpu->set_input_line(3, CLEAR_LINE);
}
-ADDRESS_MAP_START(maygayv1_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("maincpu", 0x80000)
- AM_RANGE(0x820000, 0x820001) AM_DEVREADWRITE8("i8279", i8279_device, data_r, data_w ,0xff)
- AM_RANGE(0x820002, 0x820003) AM_DEVREADWRITE8("i8279", i8279_device, status_r, cmd_w,0xff)
- AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00)
- AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd)
- AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl)
- AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w)
- AM_RANGE(0x8a0000, 0x8a001f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff)
- AM_RANGE(0x8c0000, 0x8c000f) AM_DEVREAD8("pia", pia6821_device, read, 0x00ff)
- AM_RANGE(0x8c0000, 0x8c000f) AM_DEVWRITE8("pia", pia6821_device, write, 0xff00)
-ADDRESS_MAP_END
+void maygayv1_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).ram().share("nvram");
+ map(0x100000, 0x17ffff).rom().region("maincpu", 0x80000);
+ map(0x820001, 0x820001).rw("i8279", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0x820003, 0x820003).rw("i8279", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
+ map(0x800000, 0x800003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00);
+ map(0x860000, 0x86000d).rw(this, FUNC(maygayv1_state::read_odd), FUNC(maygayv1_state::write_odd));
+ map(0x86000e, 0x86000f).w(this, FUNC(maygayv1_state::vsync_int_ctrl));
+ map(0x880000, 0x89ffff).rw(this, FUNC(maygayv1_state::i82716_r), FUNC(maygayv1_state::i82716_w));
+ map(0x8a0000, 0x8a001f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x8c0000, 0x8c000f).r("pia", FUNC(pia6821_device::read)).umask16(0x00ff);
+ map(0x8c0000, 0x8c000f).w("pia", FUNC(pia6821_device::write)).umask16(0xff00);
+}
/*************************************
@@ -647,17 +648,20 @@ WRITE8_MEMBER(maygayv1_state::mcu_w)
}
-ADDRESS_MAP_START(maygayv1_state::sound_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void maygayv1_state::sound_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
-ADDRESS_MAP_START(maygayv1_state::sound_data)
- AM_RANGE(0x0000, 0x1ff) AM_RAM // nothing?
-ADDRESS_MAP_END
+void maygayv1_state::sound_data(address_map &map)
+{
+ map(0x0000, 0x1ff).ram(); // nothing?
+}
-ADDRESS_MAP_START(maygayv1_state::sound_io)
- AM_RANGE(0x00, 0xff) AM_READWRITE(mcu_r, mcu_w)
-ADDRESS_MAP_END
+void maygayv1_state::sound_io(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(maygayv1_state::mcu_r), FUNC(maygayv1_state::mcu_w));
+}
/*************************************
diff --git a/src/mame/drivers/mazerbla.cpp b/src/mame/drivers/mazerbla.cpp
index 139e083c44d..d440e38a07c 100644
--- a/src/mame/drivers/mazerbla.cpp
+++ b/src/mame/drivers/mazerbla.cpp
@@ -453,59 +453,65 @@ WRITE8_MEMBER(mazerbla_state::sound_int_clear_w)
*
*************************************/
-ADDRESS_MAP_START(mazerbla_state::mazerbla_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::mazerbla_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) // AM_READ from protection pal, if populated
- AM_RANGE(0x62, 0x62) AM_READ(zpu_inputs_r)
+void mazerbla_state::mazerbla_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().share("share1");
+ map(0xd800, 0xd800).r(this, FUNC(mazerbla_state::cfb_zpu_int_req_clr));
+ map(0xe000, 0xefff).ram().share("nvram");
+}
+
+void mazerbla_state::mazerbla_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x4c, 0x4f).rw(this, FUNC(mazerbla_state::ls670_1_r), FUNC(mazerbla_state::ls670_0_w));
+ map(0x60, 0x60).w(this, FUNC(mazerbla_state::zpu_bcd_decoder_w)); // AM_READ from protection pal, if populated
+ map(0x62, 0x62).r(this, FUNC(mazerbla_state::zpu_inputs_r));
// 64 is some sort of output latch, unpopulated?
// 66 is some sort of output latch, unpopulated?
- AM_RANGE(0x68, 0x68) AM_WRITE(zpu_coin_counter_w)
- AM_RANGE(0x6a, 0x6a) AM_WRITE(zpu_lamps_w)
+ map(0x68, 0x68).w(this, FUNC(mazerbla_state::zpu_coin_counter_w));
+ map(0x6a, 0x6a).w(this, FUNC(mazerbla_state::zpu_lamps_w));
// 6c RW is a 6850 acia for communication with another cabinet or debug console? unpopulated?
- AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM /* main RAM (stack) */
- AM_RANGE(0x8000, 0x83ff) AM_RAM /* waveform ???*/
- AM_RANGE(0xc000, 0xc003) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w)
- AM_RANGE(0x40, 0x41) AM_WRITENOP
- AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu3_map)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* GFX roms */
- AM_RANGE(0x4000, 0x4003) AM_DEVWRITE("vcu", mb_vcu_device, write_vregs)
- AM_RANGE(0x6000, 0x67ff) AM_DEVREADWRITE("vcu", mb_vcu_device, read_ram, write_ram)
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREAD("vcu", mb_vcu_device, load_params)
- AM_RANGE(0xc000, 0xdfff) AM_DEVREAD("vcu", mb_vcu_device, load_gfx)
- AM_RANGE(0xe000, 0xffff) AM_DEVREAD("vcu", mb_vcu_device, load_set_clr)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu3_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("vcu", mb_vcu_device, background_color_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("vcu", mb_vcu_device, status_r) AM_WRITE(cfb_led_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("vcu", mb_vcu_device, vbank_w)
-ADDRESS_MAP_END
+ map(0x6e, 0x6f).w(this, FUNC(mazerbla_state::zpu_led_w));
+}
+
+void mazerbla_state::mazerbla_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram(); /* main RAM (stack) */
+ map(0x8000, 0x83ff).ram(); /* waveform ???*/
+ map(0xc000, 0xc003).nopw();
+}
+
+void mazerbla_state::mazerbla_cpu2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(mazerbla_state::vsb_ls273_audio_control_w));
+ map(0x40, 0x41).nopw();
+ map(0x80, 0x83).rw(this, FUNC(mazerbla_state::ls670_0_r), FUNC(mazerbla_state::ls670_1_w));
+}
+
+void mazerbla_state::mazerbla_cpu3_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0x3800, 0x3fff).ram().share("share1");
+ map(0x4000, 0x5fff).bankr("bank1"); /* GFX roms */
+ map(0x4000, 0x4003).w(m_vcu, FUNC(mb_vcu_device::write_vregs));
+ map(0x6000, 0x67ff).rw(m_vcu, FUNC(mb_vcu_device::read_ram), FUNC(mb_vcu_device::write_ram));
+ map(0xa000, 0xa7ff).r(m_vcu, FUNC(mb_vcu_device::load_params));
+ map(0xc000, 0xdfff).r(m_vcu, FUNC(mb_vcu_device::load_gfx));
+ map(0xe000, 0xffff).r(m_vcu, FUNC(mb_vcu_device::load_set_clr));
+}
+
+void mazerbla_state::mazerbla_cpu3_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).w(m_vcu, FUNC(mb_vcu_device::background_color_w));
+ map(0x02, 0x02).r(m_vcu, FUNC(mb_vcu_device::status_r)).w(this, FUNC(mazerbla_state::cfb_led_w));
+ map(0x03, 0x03).w(this, FUNC(mazerbla_state::cfb_zpu_int_req_set_w));
+ map(0x04, 0x04).w(this, FUNC(mazerbla_state::cfb_rom_bank_sel_w));
+ map(0x05, 0x05).w(m_vcu, FUNC(mb_vcu_device::vbank_w));
+}
/*************************************
@@ -514,31 +520,34 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mazerbla_state::greatgun_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x4c, 0x4c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w)
- AM_RANGE(0x62, 0x62) AM_READ(zpu_inputs_r)
- AM_RANGE(0x66, 0x66) AM_WRITENOP
- AM_RANGE(0x68, 0x68) AM_WRITENOP
- AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::greatgun_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8000, 0x8000) AM_WRITE(sound_int_clear_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mazerbla_state::greatgun_cpu3_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_IMPORT_FROM( mazerbla_cpu3_io_map )
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("vcu", mb_vcu_device, vbank_clear_w)
-ADDRESS_MAP_END
+void mazerbla_state::greatgun_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x4c, 0x4c).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x60, 0x60).w(this, FUNC(mazerbla_state::zpu_bcd_decoder_w));
+ map(0x62, 0x62).r(this, FUNC(mazerbla_state::zpu_inputs_r));
+ map(0x66, 0x66).nopw();
+ map(0x68, 0x68).nopw();
+ map(0x6e, 0x6f).w(this, FUNC(mazerbla_state::zpu_led_w));
+}
+
+void mazerbla_state::greatgun_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x4000, 0x4001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8000, 0x8000).w(this, FUNC(mazerbla_state::sound_int_clear_w));
+ map(0xa000, 0xa000).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
+
+void mazerbla_state::greatgun_cpu3_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ mazerbla_cpu3_io_map(map);
+ map(0x05, 0x05).w(m_vcu, FUNC(mb_vcu_device::vbank_clear_w));
+}
/*************************************
diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp
index c063f46b2e7..1bf923a8834 100644
--- a/src/mame/drivers/mbc200.cpp
+++ b/src/mame/drivers/mbc200.cpp
@@ -104,11 +104,12 @@ private:
};
-ADDRESS_MAP_START(mbc200_state::mbc200_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_RAM AM_REGION("maincpu", 0)
- AM_RANGE( 0x1000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+void mbc200_state::mbc200_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).ram().region("maincpu", 0);
+ map(0x1000, 0xffff).ram();
+}
WRITE8_MEMBER( mbc200_state::p1_portc_w )
{
@@ -143,26 +144,28 @@ WRITE8_MEMBER( mbc200_state::pm_portb_w )
m_beep->set_state(BIT(data, 1)); // key-click
}
-ADDRESS_MAP_START(mbc200_state::mbc200_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void mbc200_state::mbc200_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
//AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
//AM_RANGE(0xe1, 0xe1) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0xe0, 0xe1) AM_READ(keyboard_r) AM_WRITENOP
- AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_device, read, write)
- AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("ppi_m", i8255_device, read, write)
- AM_RANGE(0xec, 0xec) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0xed, 0xed) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+ map(0xe0, 0xe1).r(this, FUNC(mbc200_state::keyboard_r)).nopw();
+ map(0xe4, 0xe7).rw(m_fdc, FUNC(mb8876_device::read), FUNC(mb8876_device::write));
+ map(0xe8, 0xeb).rw(m_ppi_m, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xec, 0xec).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xed, 0xed).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
-ADDRESS_MAP_START(mbc200_state::mbc200_sub_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x2fff ) AM_ROM
- AM_RANGE( 0x3000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
+void mbc200_state::mbc200_sub_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x7fff).ram();
+ map(0x8000, 0xffff).ram().share("vram");
+}
READ8_MEMBER(mbc200_state::p2_porta_r)
{
@@ -173,14 +176,15 @@ READ8_MEMBER(mbc200_state::p2_porta_r)
return tmp;
}
-ADDRESS_MAP_START(mbc200_state::mbc200_sub_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi_1", i8255_device, read, write)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0xb1, 0xb1) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("ppi_2", i8255_device, read, write)
-ADDRESS_MAP_END
+void mbc200_state::mbc200_sub_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x70, 0x73).rw("ppi_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb0, 0xb0).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xb1, 0xb1).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xd0, 0xd3).rw("ppi_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( mbc200 )
diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp
index da8898f9339..590021b1d7d 100644
--- a/src/mame/drivers/mbc55x.cpp
+++ b/src/mame/drivers/mbc55x.cpp
@@ -36,40 +36,42 @@ const unsigned char mbc55x_palette[SCREEN_NO_COLOURS][3] =
};
-ADDRESS_MAP_START(mbc55x_state::mbc55x_mem)
- AM_RANGE( 0x00000, 0x0FFFF ) AM_RAMBANK(RAM_BANK00_TAG)
- AM_RANGE( 0x10000, 0x1FFFF ) AM_RAMBANK(RAM_BANK01_TAG)
- AM_RANGE( 0x20000, 0x2FFFF ) AM_RAMBANK(RAM_BANK02_TAG)
- AM_RANGE( 0x30000, 0x3FFFF ) AM_RAMBANK(RAM_BANK03_TAG)
- AM_RANGE( 0x40000, 0x4FFFF ) AM_RAMBANK(RAM_BANK04_TAG)
- AM_RANGE( 0x50000, 0x5FFFF ) AM_RAMBANK(RAM_BANK05_TAG)
- AM_RANGE( 0x60000, 0x6FFFF ) AM_RAMBANK(RAM_BANK06_TAG)
- AM_RANGE( 0x70000, 0x7FFFF ) AM_RAMBANK(RAM_BANK07_TAG)
- AM_RANGE( 0x80000, 0x8FFFF ) AM_RAMBANK(RAM_BANK08_TAG)
- AM_RANGE( 0x90000, 0x9FFFF ) AM_RAMBANK(RAM_BANK09_TAG)
- AM_RANGE( 0xA0000, 0xAFFFF ) AM_RAMBANK(RAM_BANK0A_TAG)
- AM_RANGE( 0xB0000, 0xBFFFF ) AM_RAMBANK(RAM_BANK0B_TAG)
- AM_RANGE( 0xC0000, 0xCFFFF ) AM_RAMBANK(RAM_BANK0C_TAG)
- AM_RANGE( 0xD0000, 0xDFFFF ) AM_RAMBANK(RAM_BANK0D_TAG)
- AM_RANGE( 0xE0000, 0xEFFFF ) AM_RAMBANK(RAM_BANK0E_TAG)
- AM_RANGE( 0xF0000, 0xF3FFF ) AM_RAMBANK(RED_PLANE_TAG)
- AM_RANGE( 0xF4000, 0xF7FFF ) AM_RAMBANK(BLUE_PLANE_TAG)
- AM_RANGE( 0xF8000, 0xFBFFF ) AM_NOP
- AM_RANGE( 0xFC000, 0xFDFFF ) AM_ROM AM_WRITENOP AM_REGION(MAINCPU_TAG, 0x0000) AM_MIRROR(0x002000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbc55x_state::mbc55x_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x0000, 0x0003) AM_READWRITE(mbcpic8259_r, mbcpic8259_w)
- AM_RANGE( 0x0008, 0x000F) AM_READWRITE(mbc55x_disk_r, mbc55x_disk_w)
- AM_RANGE( 0x0010, 0x0010) AM_READWRITE( vram_page_r, vram_page_w)
- AM_RANGE( 0x0018, 0x001F) AM_READWRITE( ppi8255_r, ppi8255_w)
- AM_RANGE( 0x0020, 0x0027) AM_READWRITE(mbcpit8253_r, mbcpit8253_w)
- AM_RANGE( 0x0028, 0x002B) AM_READWRITE( mbc55x_usart_r, mbc55x_usart_w)
- AM_RANGE( 0x0030, 0x0031) AM_DEVREADWRITE(VID_MC6845_NAME, mc6845_device, status_r, address_w )
- AM_RANGE( 0x0032, 0x0033) AM_DEVREADWRITE(VID_MC6845_NAME, mc6845_device, register_r, register_w )
- AM_RANGE( 0x0038, 0x003B) AM_READWRITE(mbc55x_kb_usart_r, mbc55x_kb_usart_w)
-ADDRESS_MAP_END
+void mbc55x_state::mbc55x_mem(address_map &map)
+{
+ map(0x00000, 0x0FFFF).bankrw(RAM_BANK00_TAG);
+ map(0x10000, 0x1FFFF).bankrw(RAM_BANK01_TAG);
+ map(0x20000, 0x2FFFF).bankrw(RAM_BANK02_TAG);
+ map(0x30000, 0x3FFFF).bankrw(RAM_BANK03_TAG);
+ map(0x40000, 0x4FFFF).bankrw(RAM_BANK04_TAG);
+ map(0x50000, 0x5FFFF).bankrw(RAM_BANK05_TAG);
+ map(0x60000, 0x6FFFF).bankrw(RAM_BANK06_TAG);
+ map(0x70000, 0x7FFFF).bankrw(RAM_BANK07_TAG);
+ map(0x80000, 0x8FFFF).bankrw(RAM_BANK08_TAG);
+ map(0x90000, 0x9FFFF).bankrw(RAM_BANK09_TAG);
+ map(0xA0000, 0xAFFFF).bankrw(RAM_BANK0A_TAG);
+ map(0xB0000, 0xBFFFF).bankrw(RAM_BANK0B_TAG);
+ map(0xC0000, 0xCFFFF).bankrw(RAM_BANK0C_TAG);
+ map(0xD0000, 0xDFFFF).bankrw(RAM_BANK0D_TAG);
+ map(0xE0000, 0xEFFFF).bankrw(RAM_BANK0E_TAG);
+ map(0xF0000, 0xF3FFF).bankrw(RED_PLANE_TAG);
+ map(0xF4000, 0xF7FFF).bankrw(BLUE_PLANE_TAG);
+ map(0xF8000, 0xFBFFF).noprw();
+ map(0xFC000, 0xFDFFF).rom().nopw().region(MAINCPU_TAG, 0x0000).mirror(0x002000);
+}
+
+void mbc55x_state::mbc55x_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0003).rw(this, FUNC(mbc55x_state::mbcpic8259_r), FUNC(mbc55x_state::mbcpic8259_w));
+ map(0x0008, 0x000F).rw(this, FUNC(mbc55x_state::mbc55x_disk_r), FUNC(mbc55x_state::mbc55x_disk_w));
+ map(0x0010, 0x0010).rw(this, FUNC(mbc55x_state::vram_page_r), FUNC(mbc55x_state::vram_page_w));
+ map(0x0018, 0x001F).rw(this, FUNC(mbc55x_state::ppi8255_r), FUNC(mbc55x_state::ppi8255_w));
+ map(0x0020, 0x0027).rw(this, FUNC(mbc55x_state::mbcpit8253_r), FUNC(mbc55x_state::mbcpit8253_w));
+ map(0x0028, 0x002B).rw(this, FUNC(mbc55x_state::mbc55x_usart_r), FUNC(mbc55x_state::mbc55x_usart_w));
+ map(0x0030, 0x0031).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x0032, 0x0033).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0038, 0x003B).rw(this, FUNC(mbc55x_state::mbc55x_kb_usart_r), FUNC(mbc55x_state::mbc55x_kb_usart_w));
+}
static INPUT_PORTS_START( mbc55x )
PORT_START("KEY0") /* Key row 0 scancodes 00..07 */
diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp
index da1b332031b..c8bd762ed01 100644
--- a/src/mame/drivers/mbee.cpp
+++ b/src/mame/drivers/mbee.cpp
@@ -136,197 +136,212 @@ from Brett Selwood and Andrew Davies.
********************************************************************************/
-ADDRESS_MAP_START(mbee_state::mbee_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeeic_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak")
- AM_RANGE(0xe000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeepc_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak")
- AM_RANGE(0xe000, 0xefff) AM_ROMBANK("telcom")
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeeppc_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("basic")
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak")
- AM_RANGE(0xe000, 0xefff) AM_ROMBANK("telcom")
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbee56_mem)
- AM_RANGE(0x0000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbee256_mem)
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
- AM_RANGE(0x2000, 0x2fff) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2")
- AM_RANGE(0x3000, 0x3fff) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3")
- AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4")
- AM_RANGE(0x5000, 0x5fff) AM_READ_BANK("bankr5") AM_WRITE_BANK("bankw5")
- AM_RANGE(0x6000, 0x6fff) AM_READ_BANK("bankr6") AM_WRITE_BANK("bankw6")
- AM_RANGE(0x7000, 0x7fff) AM_READ_BANK("bankr7") AM_WRITE_BANK("bankw7")
- AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bankr8") AM_WRITE_BANK("bankw8")
- AM_RANGE(0x9000, 0x9fff) AM_READ_BANK("bankr9") AM_WRITE_BANK("bankw9")
- AM_RANGE(0xa000, 0xafff) AM_READ_BANK("bankr10") AM_WRITE_BANK("bankw10")
- AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bankr11") AM_WRITE_BANK("bankw11")
- AM_RANGE(0xc000, 0xcfff) AM_READ_BANK("bankr12") AM_WRITE_BANK("bankw12")
- AM_RANGE(0xd000, 0xdfff) AM_READ_BANK("bankr13") AM_WRITE_BANK("bankw13")
- AM_RANGE(0xe000, 0xefff) AM_READ_BANK("bankr14") AM_WRITE_BANK("bankw14")
- AM_RANGE(0xf000, 0xffff) AM_READ_BANK("bankr15") AM_WRITE_BANK("bankw15")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeett_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak")
- AM_RANGE(0xe000, 0xefff) AM_ROMBANK("telcom")
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbee_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_WRITE(port0b_w)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeeic_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0x10) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x09, 0x09) AM_WRITENOP /* Listed as "Colour Wait Off" or "USART 2651" but doesn't appear in the schematics */
- AM_RANGE(0x0a, 0x0a) AM_MIRROR(0x10) AM_WRITE(port0a_w)
- AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_WRITE(port0b_w)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeepc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff10) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff10) AM_WRITE(port0b_w)
- AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff10) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
- AM_RANGE(0x000a, 0x000a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_low_r, port0a_w)
- AM_RANGE(0x010a, 0x010a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_high_r, port0a_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeeppc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff10) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff10) AM_WRITE(port0b_w)
- AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
- AM_RANGE(0x001c, 0x001c) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w)
- AM_RANGE(0x000a, 0x000a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_low_r, port0a_w)
- AM_RANGE(0x010a, 0x010a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_high_r, port0a_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbeett_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0004, 0x0004) AM_MIRROR(0xff00) AM_WRITE(port04_w)
- AM_RANGE(0x0006, 0x0006) AM_MIRROR(0xff00) AM_WRITE(port06_w)
- AM_RANGE(0x0007, 0x0007) AM_MIRROR(0xff00) AM_READ(port07_r)
- AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff00) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff00) AM_WRITE(port0b_w)
- AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
- AM_RANGE(0x0018, 0x001b) AM_MIRROR(0xff00) AM_READ(port18_r)
- AM_RANGE(0x001c, 0x001f) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w)
- AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xfe00) AM_READ(speed_low_r)
- AM_RANGE(0x0109, 0x0109) AM_MIRROR(0xfe00) AM_READ(speed_high_r)
- AM_RANGE(0x000a, 0x000a) AM_MIRROR(0xfe00) AM_READWRITE(telcom_low_r, port0a_w)
- AM_RANGE(0x010a, 0x010a) AM_MIRROR(0xfe00) AM_READWRITE(telcom_high_r, port0a_w)
- AM_RANGE(0x0068, 0x006f) AM_MIRROR(0xff00) AM_DEVREADWRITE("scc", scc8530_t, reg_r, reg_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbee56_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x08, 0x08) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x09, 0x09) AM_WRITENOP
- AM_RANGE(0x0b, 0x0b) AM_WRITE(port0b_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x0d, 0x0d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
- AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_device, read, write)
- AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbee128_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x04, 0x04) AM_WRITE(port04_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(port06_w)
- AM_RANGE(0x07, 0x07) AM_READ(port07_r)
- AM_RANGE(0x08, 0x08) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x09, 0x09) AM_WRITENOP
- AM_RANGE(0x0b, 0x0b) AM_WRITE(port0b_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x0d, 0x0d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
- AM_RANGE(0x1c, 0x1f) AM_READWRITE(port1c_r, port1c_w)
- AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_device, read, write)
- AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w)
- AM_RANGE(0x50, 0x57) AM_WRITE(mbee128_50_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mbee_state::mbee256_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0004, 0x0004) AM_MIRROR(0xff00) AM_WRITE(port04_w)
- AM_RANGE(0x0006, 0x0006) AM_MIRROR(0xff00) AM_WRITE(port06_w)
- AM_RANGE(0x0007, 0x0007) AM_MIRROR(0xff00) AM_READ(port07_r)
- AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff00) AM_READWRITE(port08_r, port08_w)
- AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xfd00) AM_READ(speed_low_r)
- AM_RANGE(0x0209, 0x0209) AM_MIRROR(0xfd00) AM_READ(speed_high_r)
- AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff00) AM_WRITE(port0b_w)
- AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w)
- AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w)
+void mbee_state::mbee_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xefff).rom();
+ map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w));
+}
+
+void mbee_state::mbeeic_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xdfff).bankr("pak");
+ map(0xe000, 0xefff).rom();
+ map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w));
+}
+
+void mbee_state::mbeepc_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xdfff).bankr("pak");
+ map(0xe000, 0xefff).bankr("telcom");
+ map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w));
+}
+
+void mbee_state::mbeeppc_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0x9fff).bankr("basic");
+ map(0xa000, 0xbfff).rom();
+ map(0xc000, 0xdfff).bankr("pak");
+ map(0xe000, 0xefff).bankr("telcom");
+ map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w));
+}
+
+void mbee_state::mbee56_mem(address_map &map)
+{
+ map(0x0000, 0xdfff).ram();
+ map(0xe000, 0xefff).rom();
+ map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w));
+}
+
+void mbee_state::mbee256_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0x1fff).bankr("bankr1").bankw("bankw1");
+ map(0x2000, 0x2fff).bankr("bankr2").bankw("bankw2");
+ map(0x3000, 0x3fff).bankr("bankr3").bankw("bankw3");
+ map(0x4000, 0x4fff).bankr("bankr4").bankw("bankw4");
+ map(0x5000, 0x5fff).bankr("bankr5").bankw("bankw5");
+ map(0x6000, 0x6fff).bankr("bankr6").bankw("bankw6");
+ map(0x7000, 0x7fff).bankr("bankr7").bankw("bankw7");
+ map(0x8000, 0x8fff).bankr("bankr8").bankw("bankw8");
+ map(0x9000, 0x9fff).bankr("bankr9").bankw("bankw9");
+ map(0xa000, 0xafff).bankr("bankr10").bankw("bankw10");
+ map(0xb000, 0xbfff).bankr("bankr11").bankw("bankw11");
+ map(0xc000, 0xcfff).bankr("bankr12").bankw("bankw12");
+ map(0xd000, 0xdfff).bankr("bankr13").bankw("bankw13");
+ map(0xe000, 0xefff).bankr("bankr14").bankw("bankw14");
+ map(0xf000, 0xffff).bankr("bankr15").bankw("bankw15");
+}
+
+void mbee_state::mbeett_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).ram();
+ map(0x8000, 0x9fff).rom();
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xdfff).bankr("pak");
+ map(0xe000, 0xefff).bankr("telcom");
+ map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w));
+}
+
+void mbee_state::mbee_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).mirror(0x10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0b, 0x0b).mirror(0x10).w(this, FUNC(mbee_state::port0b_w));
+ map(0x0c, 0x0c).mirror(0x10).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x0d, 0x0d).mirror(0x10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+}
+
+void mbee_state::mbeeic_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).mirror(0x10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x08, 0x08).mirror(0x10).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x09, 0x09).nopw(); /* Listed as "Colour Wait Off" or "USART 2651" but doesn't appear in the schematics */
+ map(0x0a, 0x0a).mirror(0x10).w(this, FUNC(mbee_state::port0a_w));
+ map(0x0b, 0x0b).mirror(0x10).w(this, FUNC(mbee_state::port0b_w));
+ map(0x0c, 0x0c).mirror(0x10).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x0d, 0x0d).mirror(0x10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+}
+
+void mbee_state::mbeepc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0003).mirror(0xff10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0008, 0x0008).mirror(0xff10).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x0009, 0x0009).mirror(0xff00).nopw();
+ map(0x000b, 0x000b).mirror(0xff10).w(this, FUNC(mbee_state::port0b_w));
+ map(0x000c, 0x000c).mirror(0xff10).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x000d, 0x000d).mirror(0xff10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+ map(0x000a, 0x000a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_low_r), FUNC(mbee_state::port0a_w));
+ map(0x010a, 0x010a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_high_r), FUNC(mbee_state::port0a_w));
+}
+
+void mbee_state::mbeeppc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0003).mirror(0xff10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0008, 0x0008).mirror(0xff10).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x0009, 0x0009).mirror(0xff00).nopw();
+ map(0x000b, 0x000b).mirror(0xff10).w(this, FUNC(mbee_state::port0b_w));
+ map(0x000c, 0x000c).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x000d, 0x000d).mirror(0xff10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+ map(0x001c, 0x001c).mirror(0xff00).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w));
+ map(0x000a, 0x000a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_low_r), FUNC(mbee_state::port0a_w));
+ map(0x010a, 0x010a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_high_r), FUNC(mbee_state::port0a_w));
+}
+
+void mbee_state::mbeett_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0003).mirror(0xff00).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0004, 0x0004).mirror(0xff00).w(this, FUNC(mbee_state::port04_w));
+ map(0x0006, 0x0006).mirror(0xff00).w(this, FUNC(mbee_state::port06_w));
+ map(0x0007, 0x0007).mirror(0xff00).r(this, FUNC(mbee_state::port07_r));
+ map(0x0008, 0x0008).mirror(0xff00).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x000b, 0x000b).mirror(0xff00).w(this, FUNC(mbee_state::port0b_w));
+ map(0x000c, 0x000c).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x000d, 0x000d).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+ map(0x0018, 0x001b).mirror(0xff00).r(this, FUNC(mbee_state::port18_r));
+ map(0x001c, 0x001f).mirror(0xff00).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w));
+ map(0x0009, 0x0009).mirror(0xfe00).r(this, FUNC(mbee_state::speed_low_r));
+ map(0x0109, 0x0109).mirror(0xfe00).r(this, FUNC(mbee_state::speed_high_r));
+ map(0x000a, 0x000a).mirror(0xfe00).rw(this, FUNC(mbee_state::telcom_low_r), FUNC(mbee_state::port0a_w));
+ map(0x010a, 0x010a).mirror(0xfe00).rw(this, FUNC(mbee_state::telcom_high_r), FUNC(mbee_state::port0a_w));
+ map(0x0068, 0x006f).mirror(0xff00).rw("scc", FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w));
+}
+
+void mbee_state::mbee56_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x08, 0x08).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x09, 0x09).nopw();
+ map(0x0b, 0x0b).w(this, FUNC(mbee_state::port0b_w));
+ map(0x0c, 0x0c).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x0d, 0x0d).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+ map(0x44, 0x47).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+ map(0x48, 0x4f).rw(this, FUNC(mbee_state::fdc_status_r), FUNC(mbee_state::fdc_motor_w));
+}
+
+void mbee_state::mbee128_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x04, 0x04).w(this, FUNC(mbee_state::port04_w));
+ map(0x06, 0x06).w(this, FUNC(mbee_state::port06_w));
+ map(0x07, 0x07).r(this, FUNC(mbee_state::port07_r));
+ map(0x08, 0x08).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x09, 0x09).nopw();
+ map(0x0b, 0x0b).w(this, FUNC(mbee_state::port0b_w));
+ map(0x0c, 0x0c).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x0d, 0x0d).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
+ map(0x1c, 0x1f).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w));
+ map(0x44, 0x47).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+ map(0x48, 0x4f).rw(this, FUNC(mbee_state::fdc_status_r), FUNC(mbee_state::fdc_motor_w));
+ map(0x50, 0x57).w(this, FUNC(mbee_state::mbee128_50_w));
+}
+
+void mbee_state::mbee256_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0003).mirror(0xff00).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0004, 0x0004).mirror(0xff00).w(this, FUNC(mbee_state::port04_w));
+ map(0x0006, 0x0006).mirror(0xff00).w(this, FUNC(mbee_state::port06_w));
+ map(0x0007, 0x0007).mirror(0xff00).r(this, FUNC(mbee_state::port07_r));
+ map(0x0008, 0x0008).mirror(0xff00).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w));
+ map(0x0009, 0x0009).mirror(0xfd00).r(this, FUNC(mbee_state::speed_low_r));
+ map(0x0209, 0x0209).mirror(0xfd00).r(this, FUNC(mbee_state::speed_high_r));
+ map(0x0009, 0x0009).mirror(0xff00).nopw();
+ map(0x000b, 0x000b).mirror(0xff00).w(this, FUNC(mbee_state::port0b_w));
+ map(0x000c, 0x000c).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w));
+ map(0x000d, 0x000d).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w));
// AM_RANGE(0x0010, 0x0013) AM_MIRROR(0xff00) Optional SN76489AN audio chip
- AM_RANGE(0x0018, 0x001b) AM_MIRROR(0xff00) AM_READ(port18_r)
- AM_RANGE(0x001c, 0x001f) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w)
- AM_RANGE(0x0044, 0x0047) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", wd2793_device, read, write)
- AM_RANGE(0x0048, 0x004f) AM_MIRROR(0xff00) AM_READWRITE(fdc_status_r, fdc_motor_w)
- AM_RANGE(0x0050, 0x0057) AM_MIRROR(0xff00) AM_WRITE(mbee256_50_w)
+ map(0x0018, 0x001b).mirror(0xff00).r(this, FUNC(mbee_state::port18_r));
+ map(0x001c, 0x001f).mirror(0xff00).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w));
+ map(0x0044, 0x0047).mirror(0xff00).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+ map(0x0048, 0x004f).mirror(0xff00).rw(this, FUNC(mbee_state::fdc_status_r), FUNC(mbee_state::fdc_motor_w));
+ map(0x0050, 0x0057).mirror(0xff00).w(this, FUNC(mbee_state::mbee256_50_w));
// AM_RANGE(0x0058, 0x005f) AM_MIRROR(0xff00) External options: floppy drive, hard drive and keyboard
// AM_RANGE(0x0060, 0x0067) AM_MIRROR(0xff00) Reserved for file server selection (unused)
// AM_RANGE(0x0068, 0x006f) AM_MIRROR(0xff00) Reserved for 8530 SCC (unused)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( oldkb )
PORT_START("X.0") /* IN0 KEY ROW 0 [000] */
diff --git a/src/mame/drivers/mc10.cpp b/src/mame/drivers/mc10.cpp
index d0edc145c26..d8dbf426ccd 100644
--- a/src/mame/drivers/mc10.cpp
+++ b/src/mame/drivers/mc10.cpp
@@ -295,37 +295,41 @@ void mc10_state::driver_start()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(mc10_state::mc10_mem)
- AM_RANGE(0x0100, 0x3fff) AM_NOP /* unused */
- AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") /* 4k internal ram */
- AM_RANGE(0x5000, 0x8fff) AM_RAMBANK("bank2") /* 16k memory expansion */
- AM_RANGE(0x9000, 0xbffe) AM_NOP /* unused */
- AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(mc10_bfff_r, mc10_bfff_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc10_state::mc10_io)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(mc10_port1_r, mc10_port1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(mc10_port2_r, mc10_port2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc10_state::alice32_mem)
- AM_RANGE(0x0100, 0x2fff) AM_NOP /* unused */
- AM_RANGE(0x3000, 0x4fff) AM_RAMBANK("bank1") /* 8k internal ram */
- AM_RANGE(0x5000, 0x8fff) AM_RAMBANK("bank2") /* 16k memory expansion */
- AM_RANGE(0x9000, 0xafff) AM_NOP /* unused */
- AM_RANGE(0xbf20, 0xbf29) AM_DEVREADWRITE("ef9345", ef9345_device, data_r, data_w)
- AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(mc10_bfff_r, alice32_bfff_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc10_state::alice90_mem)
- AM_RANGE(0x0100, 0x2fff) AM_NOP /* unused */
- AM_RANGE(0x3000, 0xafff) AM_RAMBANK("bank1") /* 32k internal ram */
- AM_RANGE(0xbf20, 0xbf29) AM_DEVREADWRITE("ef9345", ef9345_device, data_r, data_w)
- AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(alice90_bfff_r, alice32_bfff_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) /* ROM */
-ADDRESS_MAP_END
+void mc10_state::mc10_mem(address_map &map)
+{
+ map(0x0100, 0x3fff).noprw(); /* unused */
+ map(0x4000, 0x4fff).bankrw("bank1"); /* 4k internal ram */
+ map(0x5000, 0x8fff).bankrw("bank2"); /* 16k memory expansion */
+ map(0x9000, 0xbffe).noprw(); /* unused */
+ map(0xbfff, 0xbfff).rw(this, FUNC(mc10_state::mc10_bfff_r), FUNC(mc10_state::mc10_bfff_w));
+ map(0xe000, 0xffff).rom().region("maincpu", 0x0000); /* ROM */
+}
+
+void mc10_state::mc10_io(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(mc10_state::mc10_port1_r), FUNC(mc10_state::mc10_port1_w));
+ map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(mc10_state::mc10_port2_r), FUNC(mc10_state::mc10_port2_w));
+}
+
+void mc10_state::alice32_mem(address_map &map)
+{
+ map(0x0100, 0x2fff).noprw(); /* unused */
+ map(0x3000, 0x4fff).bankrw("bank1"); /* 8k internal ram */
+ map(0x5000, 0x8fff).bankrw("bank2"); /* 16k memory expansion */
+ map(0x9000, 0xafff).noprw(); /* unused */
+ map(0xbf20, 0xbf29).rw(m_ef9345, FUNC(ef9345_device::data_r), FUNC(ef9345_device::data_w));
+ map(0xbfff, 0xbfff).rw(this, FUNC(mc10_state::mc10_bfff_r), FUNC(mc10_state::alice32_bfff_w));
+ map(0xc000, 0xffff).rom().region("maincpu", 0x0000); /* ROM */
+}
+
+void mc10_state::alice90_mem(address_map &map)
+{
+ map(0x0100, 0x2fff).noprw(); /* unused */
+ map(0x3000, 0xafff).bankrw("bank1"); /* 32k internal ram */
+ map(0xbf20, 0xbf29).rw(m_ef9345, FUNC(ef9345_device::data_r), FUNC(ef9345_device::data_w));
+ map(0xbfff, 0xbfff).rw(this, FUNC(mc10_state::alice90_bfff_r), FUNC(mc10_state::alice32_bfff_w));
+ map(0xc000, 0xffff).rom().region("maincpu", 0x0000); /* ROM */
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp
index 4dc228508de..a87a8d379f6 100644
--- a/src/mame/drivers/mc1000.cpp
+++ b/src/mame/drivers/mc1000.cpp
@@ -232,38 +232,41 @@ WRITE8_MEMBER( mc1000_state::mc6847_attr_w )
/* Memory Maps */
-ADDRESS_MAP_START(mc1000_state::mc1000_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0x2000, 0x27ff) AM_RAMBANK("bank2") AM_SHARE("mc6845_vram")
- AM_RANGE(0x2800, 0x3fff) AM_RAM AM_SHARE("ram2800")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank3")
- AM_RANGE(0x8000, 0x97ff) AM_RAMBANK("bank4") AM_SHARE("mc6847_vram")
- AM_RANGE(0x9800, 0xbfff) AM_RAMBANK("bank5")
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(Z80_TAG, 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc1000_state::mc1000_banking_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0x2000, 0x27ff) AM_RAMBANK("bank2") AM_SHARE("mc6845_vram")
- AM_RANGE(0x2800, 0x3fff) AM_RAM AM_SHARE("ram2800")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank3")
- AM_RANGE(0x8000, 0x97ff) AM_RAMBANK("bank4") AM_SHARE("mc6847_vram")
- AM_RANGE(0x9800, 0xbfff) AM_RAMBANK("bank5")
- AM_RANGE(0xc000, 0xffff) AM_READ(rom_banking_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc1000_state::mc1000_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x04) AM_READWRITE(printer_r, printer_w)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("cent_data_out", output_latch_device, write)
+void mc1000_state::mc1000_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x27ff).bankrw("bank2").share("mc6845_vram");
+ map(0x2800, 0x3fff).ram().share("ram2800");
+ map(0x4000, 0x7fff).bankrw("bank3");
+ map(0x8000, 0x97ff).bankrw("bank4").share("mc6847_vram");
+ map(0x9800, 0xbfff).bankrw("bank5");
+ map(0xc000, 0xffff).rom().region(Z80_TAG, 0);
+}
+
+void mc1000_state::mc1000_banking_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x27ff).bankrw("bank2").share("mc6845_vram");
+ map(0x2800, 0x3fff).ram().share("ram2800");
+ map(0x4000, 0x7fff).bankrw("bank3");
+ map(0x8000, 0x97ff).bankrw("bank4").share("mc6847_vram");
+ map(0x9800, 0xbfff).bankrw("bank5");
+ map(0xc000, 0xffff).r(this, FUNC(mc1000_state::rom_banking_r));
+}
+
+void mc1000_state::mc1000_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x04, 0x04).rw(this, FUNC(mc1000_state::printer_r), FUNC(mc1000_state::printer_w));
+ map(0x05, 0x05).w("cent_data_out", FUNC(output_latch_device::write));
// AM_RANGE(0x10, 0x10) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
// AM_RANGE(0x11, 0x11) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(mc6845_ctrl_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w)
- AM_RANGE(0x40, 0x40) AM_DEVREAD(AY8910_TAG, ay8910_device, data_r)
- AM_RANGE(0x60, 0x60) AM_DEVWRITE(AY8910_TAG, ay8910_device, data_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(mc6847_attr_w)
-ADDRESS_MAP_END
+ map(0x12, 0x12).w(this, FUNC(mc1000_state::mc6845_ctrl_w));
+ map(0x20, 0x20).w(AY8910_TAG, FUNC(ay8910_device::address_w));
+ map(0x40, 0x40).r(AY8910_TAG, FUNC(ay8910_device::data_r));
+ map(0x60, 0x60).w(AY8910_TAG, FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w(this, FUNC(mc1000_state::mc6847_attr_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp
index 6940be9ed91..44835cfcd57 100644
--- a/src/mame/drivers/mc1502.cpp
+++ b/src/mame/drivers/mc1502.cpp
@@ -217,19 +217,21 @@ MACHINE_RESET_MEMBER(mc1502_state, mc1502)
* macros
*/
-ADDRESS_MAP_START(mc1502_state::mc1502_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc1502_state::mc1502_io)
- AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x0028, 0x0028) AM_DEVREADWRITE("upd8251", i8251_device, data_r, data_w)
- AM_RANGE(0x0029, 0x0029) AM_DEVREADWRITE("upd8251", i8251_device, status_r, control_w)
- AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255n1", i8255_device, read, write)
- AM_RANGE(0x0068, 0x006B) AM_DEVREADWRITE("ppi8255n2", i8255_device, read, write) // keyboard poll
-ADDRESS_MAP_END
+void mc1502_state::mc1502_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void mc1502_state::mc1502_io(address_map &map)
+{
+ map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0028, 0x0028).rw(m_upd8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0029, 0x0029).rw(m_upd8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x0060, 0x0063).rw(m_ppi8255n1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0068, 0x006B).rw(m_ppi8255n2, FUNC(i8255_device::read), FUNC(i8255_device::write)); // keyboard poll
+}
static INPUT_PORTS_START( mc1502 )
PORT_INCLUDE( mc7007_3_keyboard )
diff --git a/src/mame/drivers/mc8020.cpp b/src/mame/drivers/mc8020.cpp
index 089305b2335..bac308f21e6 100644
--- a/src/mame/drivers/mc8020.cpp
+++ b/src/mame/drivers/mc8020.cpp
@@ -48,20 +48,22 @@ private:
required_ioport_array<7> m_keyboard;
};
-ADDRESS_MAP_START(mc8020_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("videoram")// 1KB RAM ZRE
- AM_RANGE(0x2000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc8020_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
+void mc8020_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0fff).ram().share("videoram");// 1KB RAM ZRE
+ map(0x2000, 0x5fff).rom();
+ map(0x6000, 0xffff).ram();
+}
+
+void mc8020_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf0, 0xf3).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0xf4, 0xf7).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
/* Input ports */
diff --git a/src/mame/drivers/mc8030.cpp b/src/mame/drivers/mc8030.cpp
index c3fdfbe6a42..c1485b82d95 100644
--- a/src/mame/drivers/mc8030.cpp
+++ b/src/mame/drivers/mc8030.cpp
@@ -59,28 +59,30 @@ private:
};
-ADDRESS_MAP_START(mc8030_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
+void mc8030_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
// ZRE 4 * 2KB
- AM_RANGE(0x0000, 0x1fff) AM_ROM // ZRE ROM's 4 * 2716
- AM_RANGE(0x2000, 0x27ff) AM_ROM // SPE ROM's 2 * 2708
- AM_RANGE(0x2800, 0x3fff) AM_ROM // For extension
- AM_RANGE(0x4000, 0xbfff) AM_RAM // SPE RAM
- AM_RANGE(0xc000, 0xffff) AM_RAM // ZRE RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mc8030_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x30, 0x3f) AM_MIRROR(0xff00) AM_NOP //"mass storage"
- AM_RANGE(0x80, 0x83) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_ctc", z80ctc_device, read, write) // user CTC
- AM_RANGE(0x84, 0x87) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_pio", z80pio_device, read, write) // PIO unknown usage
- AM_RANGE(0x88, 0x8f) AM_MIRROR(0xff00) AM_WRITE(zve_write_protect_w)
- AM_RANGE(0xc0, 0xcf) AM_SELECT(0xff00) AM_WRITE(vis_w)
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_sio", z80sio_device, ba_cd_r, ba_cd_w) // keyboard & IFSS?
- AM_RANGE(0xd4, 0xd7) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_ctc", z80ctc_device, read, write) // sio bauds, KMBG? and kbd
- AM_RANGE(0xd8, 0xdb) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_pio", z80pio_device, read, write) // external bus
- AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(eprom_prog_w)
-ADDRESS_MAP_END
+ map(0x0000, 0x1fff).rom(); // ZRE ROM's 4 * 2716
+ map(0x2000, 0x27ff).rom(); // SPE ROM's 2 * 2708
+ map(0x2800, 0x3fff).rom(); // For extension
+ map(0x4000, 0xbfff).ram(); // SPE RAM
+ map(0xc000, 0xffff).ram(); // ZRE RAM
+}
+
+void mc8030_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x30, 0x3f).mirror(0xff00).noprw(); //"mass storage"
+ map(0x80, 0x83).mirror(0xff00).rw("zve_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // user CTC
+ map(0x84, 0x87).mirror(0xff00).rw("zve_pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // PIO unknown usage
+ map(0x88, 0x8f).mirror(0xff00).w(this, FUNC(mc8030_state::zve_write_protect_w));
+ map(0xc0, 0xcf).select(0xff00).w(this, FUNC(mc8030_state::vis_w));
+ map(0xd0, 0xd3).mirror(0xff00).rw("asp_sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); // keyboard & IFSS?
+ map(0xd4, 0xd7).mirror(0xff00).rw("asp_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // sio bauds, KMBG? and kbd
+ map(0xd8, 0xdb).mirror(0xff00).rw("asp_pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // external bus
+ map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(mc8030_state::eprom_prog_w));
+}
/* Input ports */
static INPUT_PORTS_START( mc8030 )
diff --git a/src/mame/drivers/mcatadv.cpp b/src/mame/drivers/mcatadv.cpp
index 6fe64f73259..9283ac03ed5 100644
--- a/src/mame/drivers/mcatadv.cpp
+++ b/src/mame/drivers/mcatadv.cpp
@@ -177,37 +177,38 @@ WRITE16_MEMBER(mcatadv_state::vram_w)
}
-ADDRESS_MAP_START(mcatadv_state::mcatadv_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
+void mcatadv_state::mcatadv_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
// AM_RANGE(0x180018, 0x18001f) AM_READNOP // ?
- AM_RANGE(0x200000, 0x200005) AM_RAM AM_SHARE("scroll1")
- AM_RANGE(0x300000, 0x300005) AM_RAM AM_SHARE("scroll2")
+ map(0x200000, 0x200005).ram().share("scroll1");
+ map(0x300000, 0x300005).ram().share("scroll2");
- AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_1") // Tilemap 0
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_2") // Tilemap 1
+ map(0x400000, 0x401fff).ram().w(this, FUNC(mcatadv_state::vram_w<0>)).share("vram_1"); // Tilemap 0
+ map(0x500000, 0x501fff).ram().w(this, FUNC(mcatadv_state::vram_w<1>)).share("vram_2"); // Tilemap 1
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x602000, 0x602fff) AM_RAM // Bigger than needs to be?
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x602000, 0x602fff).ram(); // Bigger than needs to be?
- AM_RANGE(0x700000, 0x707fff) AM_RAM AM_SHARE("spriteram") // Sprites, two halves for double buffering
- AM_RANGE(0x708000, 0x70ffff) AM_RAM // Tests more than is needed?
+ map(0x700000, 0x707fff).ram().share("spriteram"); // Sprites, two halves for double buffering
+ map(0x708000, 0x70ffff).ram(); // Tests more than is needed?
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("P2")
+ map(0x800000, 0x800001).portr("P1");
+ map(0x800002, 0x800003).portr("P2");
// AM_RANGE(0x900000, 0x900001) AM_WRITE(mcat_coin_w) // Lockout / Counter MCAT Only
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("DSW1")
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW2")
+ map(0xa00000, 0xa00001).portr("DSW1");
+ map(0xa00002, 0xa00003).portr("DSW2");
- AM_RANGE(0xb00000, 0xb0000f) AM_RAM AM_SHARE("vidregs")
+ map(0xb00000, 0xb0000f).ram().share("vidregs");
- AM_RANGE(0xb00018, 0xb00019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // NOST Only
- AM_RANGE(0xb0001e, 0xb0001f) AM_READ(mcat_wd_r) // MCAT Only
- AM_RANGE(0xc00000, 0xc00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16)
-ADDRESS_MAP_END
+ map(0xb00018, 0xb00019).w(m_watchdog, FUNC(watchdog_timer_device::reset16_w)); // NOST Only
+ map(0xb0001e, 0xb0001f).r(this, FUNC(mcatadv_state::mcat_wd_r)); // MCAT Only
+ map(0xc00001, 0xc00001).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0xc00000, 0xc00001).w("soundlatch", FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16);
+}
/*** Sound ***/
@@ -217,33 +218,37 @@ WRITE8_MEMBER(mcatadv_state::mcatadv_sound_bw_w)
}
-ADDRESS_MAP_START(mcatadv_state::mcatadv_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("soundbank") // ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(mcatadv_sound_bw_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mcatadv_state::mcatadv_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mcatadv_state::nost_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") // ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mcatadv_state::nost_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVWRITE("ymsnd", ym2610_device, write)
- AM_RANGE(0x04, 0x07) AM_DEVREAD("ymsnd", ym2610_device, read)
- AM_RANGE(0x40, 0x40) AM_WRITE(mcatadv_sound_bw_w)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void mcatadv_state::mcatadv_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // ROM
+ map(0x4000, 0xbfff).bankr("soundbank"); // ROM
+ map(0xc000, 0xdfff).ram(); // RAM
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xf000, 0xf000).w(this, FUNC(mcatadv_state::mcatadv_sound_bw_w));
+}
+
+void mcatadv_state::mcatadv_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
+
+
+void mcatadv_state::nost_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("soundbank"); // ROM
+ map(0xc000, 0xdfff).ram(); // RAM
+}
+
+void mcatadv_state::nost_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).w("ymsnd", FUNC(ym2610_device::write));
+ map(0x04, 0x07).r("ymsnd", FUNC(ym2610_device::read));
+ map(0x40, 0x40).w(this, FUNC(mcatadv_state::mcatadv_sound_bw_w));
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
/*** Inputs ***/
diff --git a/src/mame/drivers/mcb216.cpp b/src/mame/drivers/mcb216.cpp
index b79bdb37227..2d05c052965 100644
--- a/src/mame/drivers/mcb216.cpp
+++ b/src/mame/drivers/mcb216.cpp
@@ -70,29 +70,32 @@ READ8_MEMBER(mcb216_state::tms5501_status_r)
return bitswap<8>(m_tms5501->sta_r(space, 0), 4, 3, 5, 4, 3, 2, 1, 0);
}
-ADDRESS_MAP_START(mcb216_state::mcb216_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x2400, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mcb216_state::mcb216_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void mcb216_state::mcb216_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("roms", 0);
+ map(0x2000, 0x23ff).ram();
+ map(0x2400, 0xffff).ram();
+}
+
+void mcb216_state::mcb216_io(address_map &map)
+{
+ map.global_mask(0xff);
// 74904 PROM provides custom remapping for TMS5501 registers
- AM_RANGE(0x00, 0x00) AM_READ(tms5501_status_r) AM_DEVWRITE("tms5501", tms5501_device, rr_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("tms5501", tms5501_device, rb_r, tb_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("tms5501", tms5501_device, cmd_w)
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("tms5501", tms5501_device, rst_r, mr_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("tms5501", tms5501_device, xi_r, xo_w)
- AM_RANGE(0x05, 0x09) AM_DEVWRITE("tms5501", tms5501_device, tmr_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mcb216_state::cb308_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+ map(0x00, 0x00).r(this, FUNC(mcb216_state::tms5501_status_r)).w(m_tms5501, FUNC(tms5501_device::rr_w));
+ map(0x01, 0x01).rw(m_tms5501, FUNC(tms5501_device::rb_r), FUNC(tms5501_device::tb_w));
+ map(0x02, 0x02).w(m_tms5501, FUNC(tms5501_device::cmd_w));
+ map(0x03, 0x03).rw(m_tms5501, FUNC(tms5501_device::rst_r), FUNC(tms5501_device::mr_w));
+ map(0x04, 0x04).rw(m_tms5501, FUNC(tms5501_device::xi_r), FUNC(tms5501_device::xo_w));
+ map(0x05, 0x09).w(m_tms5501, FUNC(tms5501_device::tmr_w));
+}
+
+void mcb216_state::cb308_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram();
+ map(0xe000, 0xefff).rom().region("roms", 0);
+}
/* Input ports */
diff --git a/src/mame/drivers/mccpm.cpp b/src/mame/drivers/mccpm.cpp
index 830b0d147b9..bc63043ae06 100644
--- a/src/mame/drivers/mccpm.cpp
+++ b/src/mame/drivers/mccpm.cpp
@@ -53,17 +53,19 @@ private:
};
-ADDRESS_MAP_START(mccpm_state::mccpm_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mccpm_state::mccpm_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt) // init bytes look like those for a Z80PIO
-ADDRESS_MAP_END
+void mccpm_state::mccpm_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).ram().share("ram");
+}
+
+void mccpm_state::mccpm_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf0, 0xf3).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0xf4, 0xf7).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // init bytes look like those for a Z80PIO
+}
/* Input ports */
static INPUT_PORTS_START( mccpm )
diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp
index e933ac97d50..a5ce52fddfe 100644
--- a/src/mame/drivers/mcr.cpp
+++ b/src/mame/drivers/mcr.cpp
@@ -691,25 +691,27 @@ WRITE8_MEMBER(mcr_state::demoderb_op4_w)
*************************************/
/* address map verified from schematics */
-ADDRESS_MAP_START(mcr_state::cpu_90009_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xf1ff) AM_MIRROR(0x0200) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf400, 0xf41f) AM_MIRROR(0x03e0) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf81f) AM_MIRROR(0x03e0) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(mcr_90009_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void mcr_state::cpu_90009_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x77ff).mirror(0x0800).ram().share("nvram");
+ map(0xf000, 0xf1ff).mirror(0x0200).ram().share("spriteram");
+ map(0xf400, 0xf41f).mirror(0x03e0).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xf81f).mirror(0x03e0).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xfc00, 0xffff).ram().w(this, FUNC(mcr_state::mcr_90009_videoram_w)).share("videoram");
+}
/* upper I/O map determined by PAL; only SSIO ports are verified from schematics */
-ADDRESS_MAP_START(mcr_state::cpu_90009_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- SSIO_INPUT_PORTS("ssio")
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe8, 0xe8) AM_WRITENOP
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void mcr_state::cpu_90009_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ m_ssio->ssio_input_ports(map, "ssio");
+ map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe8, 0xe8).nopw();
+ map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
@@ -720,23 +722,25 @@ ADDRESS_MAP_END
*************************************/
/* address map verified from schematics */
-ADDRESS_MAP_START(mcr_state::cpu_90010_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xe1ff) AM_MIRROR(0x1600) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xefff) AM_MIRROR(0x1000) AM_RAM_WRITE(mcr_90010_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void mcr_state::cpu_90010_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).mirror(0x1800).ram().share("nvram");
+ map(0xe000, 0xe1ff).mirror(0x1600).ram().share("spriteram");
+ map(0xe800, 0xefff).mirror(0x1000).ram().w(this, FUNC(mcr_state::mcr_90010_videoram_w)).share("videoram");
+}
/* upper I/O map determined by PAL; only SSIO ports are verified from schematics */
-ADDRESS_MAP_START(mcr_state::cpu_90010_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- SSIO_INPUT_PORTS("ssio")
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe8, 0xe8) AM_WRITENOP
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void mcr_state::cpu_90010_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ m_ssio->ssio_input_ports(map, "ssio");
+ map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe8, 0xe8).nopw();
+ map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
@@ -747,24 +751,26 @@ ADDRESS_MAP_END
*************************************/
/* address map verified from schematics */
-ADDRESS_MAP_START(mcr_state::cpu_91490_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe800, 0xe9ff) AM_MIRROR(0x0200) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr_91490_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xf87f) AM_MIRROR(0x0780) AM_WRITE(mcr_paletteram9_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
+void mcr_state::cpu_91490_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xe800, 0xe9ff).mirror(0x0200).ram().share("spriteram");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(mcr_state::mcr_91490_videoram_w)).share("videoram");
+ map(0xf800, 0xf87f).mirror(0x0780).w(this, FUNC(mcr_state::mcr_paletteram9_w)).share("paletteram");
+}
/* upper I/O map determined by PAL; only SSIO ports are verified from schematics */
-ADDRESS_MAP_START(mcr_state::cpu_91490_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- SSIO_INPUT_PORTS("ssio")
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe8, 0xe8) AM_WRITENOP
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void mcr_state::cpu_91490_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ m_ssio->ssio_input_ports(map, "ssio");
+ map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe8, 0xe8).nopw();
+ map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
@@ -775,23 +781,25 @@ ADDRESS_MAP_END
*************************************/
/* address map verified from schematics */
-ADDRESS_MAP_START(mcr_nflfoot_state::ipu_91695_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void mcr_nflfoot_state::ipu_91695_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0xe000, 0xffff).ram();
+}
/* I/O verified from schematics */
-ADDRESS_MAP_START(mcr_nflfoot_state::ipu_91695_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio0", z80pio_device, read, write)
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_sio", z80dart_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x08, 0x0b) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_ctc", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio1", z80pio_device, read, write)
- AM_RANGE(0x10, 0x13) AM_MIRROR(0xe0) AM_WRITE(ipu_laserdisk_w)
- AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xe0) AM_READWRITE(ipu_watchdog_r, ipu_watchdog_w)
-ADDRESS_MAP_END
+void mcr_nflfoot_state::ipu_91695_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0xe0).rw(m_ipu_pio0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x04, 0x07).mirror(0xe0).rw(m_ipu_sio, FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w));
+ map(0x08, 0x0b).mirror(0xe0).rw(m_ipu_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).mirror(0xe0).rw(m_ipu_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x10, 0x13).mirror(0xe0).w(this, FUNC(mcr_nflfoot_state::ipu_laserdisk_w));
+ map(0x1c, 0x1f).mirror(0xe0).rw(this, FUNC(mcr_nflfoot_state::ipu_watchdog_r), FUNC(mcr_nflfoot_state::ipu_watchdog_w));
+}
diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp
index 7595a0454fd..07e8ea0b1b3 100644
--- a/src/mame/drivers/mcr3.cpp
+++ b/src/mame/drivers/mcr3.cpp
@@ -481,30 +481,32 @@ READ8_MEMBER(mcr3_state::turbotag_kludge_r)
*************************************/
/* address map verified from schematics */
-ADDRESS_MAP_START(mcr3_state::mcrmono_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xea00, 0xebff) AM_RAM
- AM_RANGE(0xec00, 0xec7f) AM_MIRROR(0x0380) AM_WRITE(mcr_paletteram9_w) AM_SHARE("paletteram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr3_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xffff) AM_ROM /* schematics show a 2716 @ 2B here, but nobody used it */
-ADDRESS_MAP_END
+void mcr3_state::mcrmono_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xe800, 0xe9ff).ram().share("spriteram");
+ map(0xea00, 0xebff).ram();
+ map(0xec00, 0xec7f).mirror(0x0380).w(this, FUNC(mcr3_state::mcr_paletteram9_w)).share("paletteram");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(mcr3_state::mcr3_videoram_w)).share("videoram");
+ map(0xf800, 0xffff).rom(); /* schematics show a 2716 @ 2B here, but nobody used it */
+}
/* I/O map verified from schematics */
-ADDRESS_MAP_START(mcr3_state::mcrmono_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP3")
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP4")
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x78) AM_WRITE(mcrmono_control_port_w)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0x78) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf0, 0xf3) AM_MIRROR(0x0c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void mcr3_state::mcrmono_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x78).portr("MONO.IP0");
+ map(0x01, 0x01).mirror(0x78).portr("MONO.IP1");
+ map(0x02, 0x02).mirror(0x78).portr("MONO.IP2");
+ map(0x03, 0x03).mirror(0x78).portr("MONO.IP3");
+ map(0x04, 0x04).mirror(0x78).portr("MONO.IP4");
+ map(0x05, 0x05).mirror(0x78).w(this, FUNC(mcr3_state::mcrmono_control_port_w));
+ map(0x07, 0x07).mirror(0x78).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf0, 0xf3).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
@@ -515,26 +517,28 @@ ADDRESS_MAP_END
*************************************/
/* address map verified from schematics */
-ADDRESS_MAP_START(mcr3_state::spyhunt_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xebff) AM_MIRROR(0x0400) AM_RAM_WRITE(spyhunt_alpharam_w) AM_SHARE("spyhunt_alpha")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfa00, 0xfa7f) AM_MIRROR(0x0180) AM_WRITE(mcr_paletteram9_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
+void mcr3_state::spyhunt_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(mcr3_state::spyhunt_videoram_w)).share("videoram");
+ map(0xe800, 0xebff).mirror(0x0400).ram().w(this, FUNC(mcr3_state::spyhunt_alpharam_w)).share("spyhunt_alpha");
+ map(0xf000, 0xf7ff).ram().share("nvram");
+ map(0xf800, 0xf9ff).ram().share("spriteram");
+ map(0xfa00, 0xfa7f).mirror(0x0180).w(this, FUNC(mcr3_state::mcr_paletteram9_w)).share("paletteram");
+}
/* upper I/O map determined by PAL; only SSIO ports and scroll registers are verified from schematics */
-ADDRESS_MAP_START(mcr3_state::spyhunt_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- SSIO_INPUT_PORTS("ssio")
- AM_RANGE(0x84, 0x86) AM_WRITE(spyhunt_scroll_value_w)
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe8, 0xe8) AM_WRITENOP
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void mcr3_state::spyhunt_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ m_ssio->ssio_input_ports(map, "ssio");
+ map(0x84, 0x86).w(this, FUNC(mcr3_state::spyhunt_scroll_value_w));
+ map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe8, 0xe8).nopw();
+ map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/*************************************
diff --git a/src/mame/drivers/mcr68.cpp b/src/mame/drivers/mcr68.cpp
index c0a07a7f7d6..8f7f7af2384 100644
--- a/src/mame/drivers/mcr68.cpp
+++ b/src/mame/drivers/mcr68.cpp
@@ -273,21 +273,22 @@ READ16_MEMBER(mcr68_state::trisport_port_1_r)
*
*************************************/
-ADDRESS_MAP_START(mcr68_state::mcr68_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(mcr68_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x071000, 0x071fff) AM_RAM
- AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x090000, 0x09007f) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a000f) AM_DEVREADWRITE8("ptm", ptm6840_device, read, write, 0xff00)
- AM_RANGE(0x0b0000, 0x0bffff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0d0000, 0x0dffff) AM_READ_PORT("IN0")
- AM_RANGE(0x0e0000, 0x0effff) AM_READ_PORT("IN1")
- AM_RANGE(0x0f0000, 0x0fffff) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
+void mcr68_state::mcr68_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(mcr68_state::mcr68_videoram_w)).share("videoram");
+ map(0x071000, 0x071fff).ram();
+ map(0x080000, 0x080fff).ram().share("spriteram");
+ map(0x090000, 0x09007f).w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0a0000, 0x0a000f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0xff00);
+ map(0x0b0000, 0x0bffff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0d0000, 0x0dffff).portr("IN0");
+ map(0x0e0000, 0x0effff).portr("IN1");
+ map(0x0f0000, 0x0fffff).portr("DSW");
+}
@@ -297,22 +298,23 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mcr68_state::pigskin_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_READ(pigskin_port_1_r)
- AM_RANGE(0x0a0000, 0x0affff) AM_READ(pigskin_port_2_r)
- AM_RANGE(0x0c0000, 0x0c007f) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0e0000, 0x0effff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(mcr68_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x120000, 0x120001) AM_READWRITE(pigskin_protection_r, pigskin_protection_w)
- AM_RANGE(0x140000, 0x143fff) AM_RAM
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("ptm", ptm6840_device, read, write, 0xff00)
- AM_RANGE(0x1a0000, 0x1affff) AM_WRITE(archrivl_control_w)
- AM_RANGE(0x1e0000, 0x1effff) AM_READ_PORT("IN0")
-ADDRESS_MAP_END
+void mcr68_state::pigskin_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x08ffff).r(this, FUNC(mcr68_state::pigskin_port_1_r));
+ map(0x0a0000, 0x0affff).r(this, FUNC(mcr68_state::pigskin_port_2_r));
+ map(0x0c0000, 0x0c007f).w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0e0000, 0x0effff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x100000, 0x100fff).ram().w(this, FUNC(mcr68_state::mcr68_videoram_w)).share("videoram");
+ map(0x120000, 0x120001).rw(this, FUNC(mcr68_state::pigskin_protection_r), FUNC(mcr68_state::pigskin_protection_w));
+ map(0x140000, 0x143fff).ram();
+ map(0x160000, 0x1607ff).ram().share("spriteram");
+ map(0x180000, 0x18000f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0xff00);
+ map(0x1a0000, 0x1affff).w(this, FUNC(mcr68_state::archrivl_control_w));
+ map(0x1e0000, 0x1effff).portr("IN0");
+}
@@ -322,21 +324,22 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mcr68_state::trisport_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_READ(trisport_port_1_r)
- AM_RANGE(0x0a0000, 0x0affff) AM_READ_PORT("DSW")
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x120000, 0x12007f) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(mcr68_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("ptm", ptm6840_device, read, write, 0xff00)
- AM_RANGE(0x1a0000, 0x1affff) AM_WRITE(archrivl_control_w)
- AM_RANGE(0x1c0000, 0x1cffff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x1e0000, 0x1effff) AM_READ_PORT("IN0")
-ADDRESS_MAP_END
+void mcr68_state::trisport_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x08ffff).r(this, FUNC(mcr68_state::trisport_port_1_r));
+ map(0x0a0000, 0x0affff).portr("DSW");
+ map(0x100000, 0x103fff).ram().share("nvram");
+ map(0x120000, 0x12007f).w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x1407ff).ram().share("spriteram");
+ map(0x160000, 0x160fff).ram().w(this, FUNC(mcr68_state::mcr68_videoram_w)).share("videoram");
+ map(0x180000, 0x18000f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0xff00);
+ map(0x1a0000, 0x1affff).w(this, FUNC(mcr68_state::archrivl_control_w));
+ map(0x1c0000, 0x1cffff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x1e0000, 0x1effff).portr("IN0");
+}
diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp
index acf8f0ad914..2c9591502fa 100644
--- a/src/mame/drivers/meadows.cpp
+++ b/src/mame/drivers/meadows.cpp
@@ -323,48 +323,52 @@ INTERRUPT_GEN_MEMBER(meadows_state::audio_interrupt)
*
*************************************/
-ADDRESS_MAP_START(meadows_state::meadows_main_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("INPUTS")
- AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("STICK")
- AM_RANGE(0x0c02, 0x0c02) AM_READ(hsync_chain_r)
- AM_RANGE(0x0c03, 0x0c03) AM_READ_PORT("DSW")
- AM_RANGE(0x0c00, 0x0c03) AM_WRITE(meadows_audio_w)
- AM_RANGE(0x0d00, 0x0d0f) AM_WRITE(meadows_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x0e00, 0x0eff) AM_RAM
- AM_RANGE(0x1000, 0x1bff) AM_ROM
- AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meadows_state::bowl3d_main_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("INPUTS1")
- AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("INPUTS2")
- AM_RANGE(0x0c02, 0x0c02) AM_READ(hsync_chain_r)
- AM_RANGE(0x0c03, 0x0c03) AM_READ_PORT("DSW")
- AM_RANGE(0x0c00, 0x0c03) AM_WRITE(meadows_audio_w)
- AM_RANGE(0x0d00, 0x0d0f) AM_WRITE(meadows_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x0e00, 0x0eff) AM_RAM
- AM_RANGE(0x1000, 0x1bff) AM_ROM
- AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meadows_state::minferno_main_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x1c00, 0x1eff) AM_RAM_WRITE(meadows_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1f00, 0x1f00) AM_READ_PORT("JOY1")
- AM_RANGE(0x1f01, 0x1f01) AM_READ_PORT("JOY2")
- AM_RANGE(0x1f02, 0x1f02) AM_READ_PORT("BUTTONS")
- AM_RANGE(0x1f03, 0x1f03) AM_READ_PORT("DSW1")
- AM_RANGE(0x1f00, 0x1f03) AM_WRITE(meadows_audio_w)
- AM_RANGE(0x1f04, 0x1f04) AM_READ(vsync_chain_hi_r)
- AM_RANGE(0x1f05, 0x1f05) AM_READ(vsync_chain_lo_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(meadows_state::minferno_data_map)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+void meadows_state::meadows_main_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0c00).portr("INPUTS");
+ map(0x0c01, 0x0c01).portr("STICK");
+ map(0x0c02, 0x0c02).r(this, FUNC(meadows_state::hsync_chain_r));
+ map(0x0c03, 0x0c03).portr("DSW");
+ map(0x0c00, 0x0c03).w(this, FUNC(meadows_state::meadows_audio_w));
+ map(0x0d00, 0x0d0f).w(this, FUNC(meadows_state::meadows_spriteram_w)).share("spriteram");
+ map(0x0e00, 0x0eff).ram();
+ map(0x1000, 0x1bff).rom();
+ map(0x1c00, 0x1fff).ram().w(this, FUNC(meadows_state::meadows_videoram_w)).share("videoram");
+}
+
+void meadows_state::bowl3d_main_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0c00).portr("INPUTS1");
+ map(0x0c01, 0x0c01).portr("INPUTS2");
+ map(0x0c02, 0x0c02).r(this, FUNC(meadows_state::hsync_chain_r));
+ map(0x0c03, 0x0c03).portr("DSW");
+ map(0x0c00, 0x0c03).w(this, FUNC(meadows_state::meadows_audio_w));
+ map(0x0d00, 0x0d0f).w(this, FUNC(meadows_state::meadows_spriteram_w)).share("spriteram");
+ map(0x0e00, 0x0eff).ram();
+ map(0x1000, 0x1bff).rom();
+ map(0x1c00, 0x1fff).ram().w(this, FUNC(meadows_state::meadows_videoram_w)).share("videoram");
+}
+
+void meadows_state::minferno_main_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x1c00, 0x1eff).ram().w(this, FUNC(meadows_state::meadows_videoram_w)).share("videoram");
+ map(0x1f00, 0x1f00).portr("JOY1");
+ map(0x1f01, 0x1f01).portr("JOY2");
+ map(0x1f02, 0x1f02).portr("BUTTONS");
+ map(0x1f03, 0x1f03).portr("DSW1");
+ map(0x1f00, 0x1f03).w(this, FUNC(meadows_state::meadows_audio_w));
+ map(0x1f04, 0x1f04).r(this, FUNC(meadows_state::vsync_chain_hi_r));
+ map(0x1f05, 0x1f05).r(this, FUNC(meadows_state::vsync_chain_lo_r));
+}
+
+
+void meadows_state::minferno_data_map(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).portr("DSW2");
+}
@@ -374,11 +378,12 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(meadows_state::audio_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0c03) AM_READWRITE(audio_hardware_r, audio_hardware_w)
- AM_RANGE(0x0e00, 0x0eff) AM_RAM
-ADDRESS_MAP_END
+void meadows_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0c03).rw(this, FUNC(meadows_state::audio_hardware_r), FUNC(meadows_state::audio_hardware_w));
+ map(0x0e00, 0x0eff).ram();
+}
diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp
index b37e1a26068..b0201255005 100644
--- a/src/mame/drivers/mediagx.cpp
+++ b/src/mame/drivers/mediagx.cpp
@@ -749,29 +749,31 @@ WRITE32_MEMBER(mediagx_state::ad1847_w)
/*****************************************************************************/
-ADDRESS_MAP_START(mediagx_state::mediagx_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x000a0000, 0x000affff) AM_RAM
- AM_RANGE(0x000b0000, 0x000b7fff) AM_RAM AM_SHARE("cga_ram")
- AM_RANGE(0x000c0000, 0x000fffff) AM_RAM AM_SHARE("bios_ram")
- AM_RANGE(0x00100000, 0x00ffffff) AM_RAM
- AM_RANGE(0x40008000, 0x400080ff) AM_READWRITE(biu_ctrl_r, biu_ctrl_w)
- AM_RANGE(0x40008300, 0x400083ff) AM_READWRITE(disp_ctrl_r, disp_ctrl_w)
- AM_RANGE(0x40008400, 0x400084ff) AM_READWRITE(memory_ctrl_r, memory_ctrl_w)
- AM_RANGE(0x40800000, 0x40bfffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mediagx_state::mediagx_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x0020, 0x0023) AM_READWRITE8(io20_r, io20_w, 0xffff0000)
- AM_RANGE(0x00e8, 0x00eb) AM_NOP // I/O delay port
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x0378, 0x037b) AM_READWRITE(parallel_port_r, parallel_port_w)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1)
- AM_RANGE(0x0400, 0x04ff) AM_READWRITE(ad1847_r, ad1847_w)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+void mediagx_state::mediagx_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram().share("main_ram");
+ map(0x000a0000, 0x000affff).ram();
+ map(0x000b0000, 0x000b7fff).ram().share("cga_ram");
+ map(0x000c0000, 0x000fffff).ram().share("bios_ram");
+ map(0x00100000, 0x00ffffff).ram();
+ map(0x40008000, 0x400080ff).rw(this, FUNC(mediagx_state::biu_ctrl_r), FUNC(mediagx_state::biu_ctrl_w));
+ map(0x40008300, 0x400083ff).rw(this, FUNC(mediagx_state::disp_ctrl_r), FUNC(mediagx_state::disp_ctrl_w));
+ map(0x40008400, 0x400084ff).rw(this, FUNC(mediagx_state::memory_ctrl_r), FUNC(mediagx_state::memory_ctrl_w));
+ map(0x40800000, 0x40bfffff).ram().share("vram");
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void mediagx_state::mediagx_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x0022, 0x0023).rw(this, FUNC(mediagx_state::io20_r), FUNC(mediagx_state::io20_w));
+ map(0x00e8, 0x00eb).noprw(); // I/O delay port
+ map(0x01f0, 0x01f7).rw(m_ide, FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x0378, 0x037b).rw(this, FUNC(mediagx_state::parallel_port_r), FUNC(mediagx_state::parallel_port_w));
+ map(0x03f0, 0x03f7).rw(m_ide, FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+ map(0x0400, 0x04ff).rw(this, FUNC(mediagx_state::ad1847_r), FUNC(mediagx_state::ad1847_w));
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
/*****************************************************************************/
@@ -873,9 +875,10 @@ void mediagx_state::machine_reset()
dmadac_enable(&m_dmadac[0], 2, 1);
}
-ADDRESS_MAP_START(mediagx_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void mediagx_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(mediagx_state::mediagx)
diff --git a/src/mame/drivers/megadriv_acbl.cpp b/src/mame/drivers/megadriv_acbl.cpp
index e50d2842408..36ce9778e82 100644
--- a/src/mame/drivers/megadriv_acbl.cpp
+++ b/src/mame/drivers/megadriv_acbl.cpp
@@ -264,24 +264,25 @@ connector, but of course, I can be wrong.
/************************************ Megadrive Bootlegs *************************************/
// smaller ROM region because some bootlegs check for RAM there (used by topshoot and hshavoc)
-ADDRESS_MAP_START(md_boot_state::md_bootleg_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* Cartridge Program Rom */
- AM_RANGE(0x200000, 0x2023ff) AM_RAM // tested
+void md_boot_state::md_bootleg_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* Cartridge Program Rom */
+ map(0x200000, 0x2023ff).ram(); // tested
- AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram)
- AM_RANGE(0xa02000, 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram)
- AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
- AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write)
+ map(0xa00000, 0xa01fff).rw(this, FUNC(md_boot_state::megadriv_68k_read_z80_ram), FUNC(md_boot_state::megadriv_68k_write_z80_ram));
+ map(0xa02000, 0xa03fff).w(this, FUNC(md_boot_state::megadriv_68k_write_z80_ram));
+ map(0xa04000, 0xa04003).rw(this, FUNC(md_boot_state::megadriv_68k_YM2612_read), FUNC(md_boot_state::megadriv_68k_YM2612_write));
+ map(0xa06000, 0xa06001).w(this, FUNC(md_boot_state::megadriv_68k_z80_bank_write));
- AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(megadriv_68k_io_read, megadriv_68k_io_write)
- AM_RANGE(0xa11100, 0xa11101) AM_READWRITE(megadriv_68k_check_z80_bus, megadriv_68k_req_z80_bus)
- AM_RANGE(0xa11200, 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset)
+ map(0xa10000, 0xa1001f).rw(this, FUNC(md_boot_state::megadriv_68k_io_read), FUNC(md_boot_state::megadriv_68k_io_write));
+ map(0xa11100, 0xa11101).rw(this, FUNC(md_boot_state::megadriv_68k_check_z80_bus), FUNC(md_boot_state::megadriv_68k_req_z80_bus));
+ map(0xa11200, 0xa11201).w(this, FUNC(md_boot_state::megadriv_68k_req_z80_reset));
- AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
- AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
+ map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
+ map(0xd00000, 0xd0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram")
-ADDRESS_MAP_END
+ map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000).share("megadrive_ram");
+}
MACHINE_CONFIG_START(md_boot_state::md_bootleg)
md_ntsc(config);
diff --git a/src/mame/drivers/megadriv_rad.cpp b/src/mame/drivers/megadriv_rad.cpp
index f6200dd212e..489015890a0 100644
--- a/src/mame/drivers/megadriv_rad.cpp
+++ b/src/mame/drivers/megadriv_rad.cpp
@@ -24,19 +24,20 @@
#include "includes/megadriv_rad.h"
// todo, use actual MD map, easier once maps are part of base class.
-ADDRESS_MAP_START(megadriv_radica_state::megadriv_radica_map)
- AM_RANGE(0x000000, 0x3fffff) AM_READ(read) /* Cartridge Program Rom */
- AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram)
- AM_RANGE(0xa02000, 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram)
- AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
- AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write)
- AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(megadriv_68k_io_read, megadriv_68k_io_write)
- AM_RANGE(0xa11100, 0xa11101) AM_READWRITE(megadriv_68k_check_z80_bus, megadriv_68k_req_z80_bus)
- AM_RANGE(0xa11200, 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset)
- AM_RANGE(0xa13000, 0xa130ff) AM_READ(read_a13)
- AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram")
-ADDRESS_MAP_END
+void megadriv_radica_state::megadriv_radica_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).r(this, FUNC(megadriv_radica_state::read)); /* Cartridge Program Rom */
+ map(0xa00000, 0xa01fff).rw(this, FUNC(megadriv_radica_state::megadriv_68k_read_z80_ram), FUNC(megadriv_radica_state::megadriv_68k_write_z80_ram));
+ map(0xa02000, 0xa03fff).w(this, FUNC(megadriv_radica_state::megadriv_68k_write_z80_ram));
+ map(0xa04000, 0xa04003).rw(this, FUNC(megadriv_radica_state::megadriv_68k_YM2612_read), FUNC(megadriv_radica_state::megadriv_68k_YM2612_write));
+ map(0xa06000, 0xa06001).w(this, FUNC(megadriv_radica_state::megadriv_68k_z80_bank_write));
+ map(0xa10000, 0xa1001f).rw(this, FUNC(megadriv_radica_state::megadriv_68k_io_read), FUNC(megadriv_radica_state::megadriv_68k_io_write));
+ map(0xa11100, 0xa11101).rw(this, FUNC(megadriv_radica_state::megadriv_68k_check_z80_bus), FUNC(megadriv_radica_state::megadriv_68k_req_z80_bus));
+ map(0xa11200, 0xa11201).w(this, FUNC(megadriv_radica_state::megadriv_68k_req_z80_reset));
+ map(0xa13000, 0xa130ff).r(this, FUNC(megadriv_radica_state::read_a13));
+ map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
+ map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000).share("megadrive_ram");
+}
READ16_MEMBER(megadriv_radica_state::read)
{
diff --git a/src/mame/drivers/megaphx.cpp b/src/mame/drivers/megaphx.cpp
index f1a14bbf21d..b18b442dacc 100644
--- a/src/mame/drivers/megaphx.cpp
+++ b/src/mame/drivers/megaphx.cpp
@@ -151,15 +151,16 @@ void hamboy_state::machine_reset()
m_indervid->set_bpp(4);
}
-ADDRESS_MAP_START(megaphx_state::megaphx_68k_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("boot", 0x00000) // or the rom doesn't map here? it contains the service mode grid amongst other things..
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram") // maps over part of the rom??
- AM_RANGE(0x040000, 0x040007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w)
- AM_RANGE(0x050000, 0x050001) AM_DEVWRITE("inder_sb", inder_sb_device, megaphx_0x050000_w)
- AM_RANGE(0x050002, 0x050003) AM_DEVREAD("inder_sb", inder_sb_device, megaphx_0x050002_r)
- AM_RANGE(0x060000, 0x060007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0x00000)
-ADDRESS_MAP_END
+void megaphx_state::megaphx_68k_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("boot", 0x00000); // or the rom doesn't map here? it contains the service mode grid amongst other things..
+ map(0x000000, 0x00ffff).ram().share("mainram"); // maps over part of the rom??
+ map(0x040000, 0x040007).rw("inder_vid:tms", FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+ map(0x050000, 0x050001).w(m_indersb, FUNC(inder_sb_device::megaphx_0x050000_w));
+ map(0x050002, 0x050003).r(m_indersb, FUNC(inder_sb_device::megaphx_0x050002_r));
+ map(0x060000, 0x060007).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x800000, 0x8fffff).rom().region("data", 0x00000);
+}
diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp
index a631a62f707..f946d08a648 100644
--- a/src/mame/drivers/megaplay.cpp
+++ b/src/mame/drivers/megaplay.cpp
@@ -587,17 +587,18 @@ WRITE8_MEMBER(mplay_state::game_w)
logerror("BIOS bank addr = %X\n", m_bios_bank_addr);
}
-ADDRESS_MAP_START(mplay_state::megaplay_bios_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_WRITE(game_w)
- AM_RANGE(0x6200, 0x6207) AM_DEVREADWRITE("io1", cxd1095_device, read, write)
- AM_RANGE(0x6400, 0x6407) AM_DEVREADWRITE("io2", cxd1095_device, read, write)
- AM_RANGE(0x6600, 0x6600) AM_READWRITE(bios_6600_r, bios_6600_w)
- AM_RANGE(0x6800, 0x77ff) AM_RAM AM_SHARE("ic3_ram")
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(bank_r, bank_w)
-ADDRESS_MAP_END
+void mplay_state::megaplay_bios_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).ram();
+ map(0x5000, 0x5fff).ram();
+ map(0x6000, 0x6000).w(this, FUNC(mplay_state::game_w));
+ map(0x6200, 0x6207).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x6400, 0x6407).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x6600, 0x6600).rw(this, FUNC(mplay_state::bios_6600_r), FUNC(mplay_state::bios_6600_w));
+ map(0x6800, 0x77ff).ram().share("ic3_ram");
+ map(0x8000, 0xffff).rw(this, FUNC(mplay_state::bank_r), FUNC(mplay_state::bank_w));
+}
@@ -610,14 +611,15 @@ READ8_MEMBER(mplay_state::vdp1_count_r)
return m_vdp1->vcount_read(prg, offset);
}
-ADDRESS_MAP_START(mplay_state::megaplay_bios_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("sn2", sn76496_device, write)
+void mplay_state::megaplay_bios_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7f, 0x7f).w("sn2", FUNC(sn76496_device::write));
- AM_RANGE(0x40, 0x41) AM_MIRROR(0x3e) AM_READ(vdp1_count_r)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write)
-ADDRESS_MAP_END
+ map(0x40, 0x41).mirror(0x3e).r(this, FUNC(mplay_state::vdp1_count_r));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+}
uint32_t mplay_state::screen_update_megplay(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index 2ca940dc25f..ec7458bf35c 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -201,34 +201,36 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_iganinju_scanline)
m_maincpu->set_input_line(2, HOLD_LINE);
}
-ADDRESS_MAP_START(megasys1_state::megasys1Z_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("P1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P2")
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("DSW")
- AM_RANGE(0x084200, 0x084205) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x084208, 0x08420d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x084300, 0x084301) AM_WRITE(screen_flag_w)
- AM_RANGE(0x084308, 0x084309) AM_WRITE(soundlatch_z_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08e000, 0x08ffff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x090000, 0x093fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x094000, 0x097fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(ram_w) AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::megasys1A_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_IMPORT_FROM(megasys1Z_map)
- AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) /* from sound cpu */
- AM_RANGE(0x084000, 0x084001) AM_WRITE(active_layers_w)
- AM_RANGE(0x084008, 0x08400d) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x084100, 0x084101) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x084308, 0x084309) AM_WRITE(soundlatch_w)
- AM_RANGE(0x098000, 0x09bfff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2")
-ADDRESS_MAP_END
+void megasys1_state::megasys1Z_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x05ffff).rom();
+ map(0x080000, 0x080001).portr("SYSTEM");
+ map(0x080002, 0x080003).portr("P1");
+ map(0x080004, 0x080005).portr("P2");
+ map(0x080006, 0x080007).portr("DSW");
+ 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(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x084308, 0x084309).w(this, FUNC(megasys1_state::soundlatch_z_w));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08e000, 0x08ffff).ram().share("objectram");
+ map(0x090000, 0x093fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x094000, 0x097fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(megasys1_state::ram_w)).share("ram");
+}
+
+void megasys1_state::megasys1A_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ megasys1Z_map(map);
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); /* from sound cpu */
+ map(0x084000, 0x084001).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x084008, 0x08400d).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084100, 0x084101).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x084308, 0x084309).w(this, FUNC(megasys1_state::soundlatch_w));
+ map(0x098000, 0x09bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
+}
/***************************************************************************
[ Main CPU - System B ]
@@ -299,48 +301,51 @@ WRITE16_MEMBER(megasys1_state::ip_select_w) // TO MCU
}
-ADDRESS_MAP_START(megasys1_state::megasys1B_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x044000, 0x044001) AM_WRITE(active_layers_w)
- AM_RANGE(0x044008, 0x04400d) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x044100, 0x044101) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x044200, 0x044205) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x044208, 0x04420d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x044300, 0x044301) AM_WRITE(screen_flag_w)
- AM_RANGE(0x044308, 0x044309) AM_WRITE(soundlatch_w)
- AM_RANGE(0x048000, 0x0487ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x04e000, 0x04ffff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x050000, 0x053fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x054000, 0x057fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x058000, 0x05bfff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2")
- AM_RANGE(0x060000, 0x07ffff) AM_RAM_WRITE(ram_w) AM_SHARE("ram")
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0001) AM_READWRITE(ip_select_r,ip_select_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::megasys1B_edfbl_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_IMPORT_FROM(megasys1B_map)
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("P1")
- AM_RANGE(0x0e0006, 0x0e0007) AM_READ_PORT("P2")
- AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2")
+void megasys1_state::megasys1B_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x044000, 0x044001).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x044008, 0x04400d).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044100, 0x044101).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_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(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x044308, 0x044309).w(this, FUNC(megasys1_state::soundlatch_w));
+ map(0x048000, 0x0487ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x04e000, 0x04ffff).ram().share("objectram");
+ map(0x050000, 0x053fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x054000, 0x057fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x058000, 0x05bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
+ map(0x060000, 0x07ffff).ram().w(this, FUNC(megasys1_state::ram_w)).share("ram");
+ map(0x080000, 0x0bffff).rom();
+ map(0x0e0000, 0x0e0001).rw(this, FUNC(megasys1_state::ip_select_r), FUNC(megasys1_state::ip_select_w));
+}
+
+void megasys1_state::megasys1B_edfbl_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ megasys1B_map(map);
+ map(0x0e0002, 0x0e0003).portr("SYSTEM");
+ map(0x0e0004, 0x0e0005).portr("P1");
+ map(0x0e0006, 0x0e0007).portr("P2");
+ map(0x0e0008, 0x0e0009).portr("DSW1");
+ map(0x0e000a, 0x0e000b).portr("DSW2");
//AM_RANGE(0x0e000e, 0x0e000f) AM_WRITE(soundlatch_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(megasys1_state::megasys1B_monkelf_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_IMPORT_FROM(megasys1B_map)
- AM_RANGE(0x044200, 0x044205) AM_WRITE(monkelf_scroll0_w)
- AM_RANGE(0x044208, 0x04420d) AM_WRITE(monkelf_scroll1_w)
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("P1")
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("P2")
- AM_RANGE(0x0e0006, 0x0e0007) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void megasys1_state::megasys1B_monkelf_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ megasys1B_map(map);
+ map(0x044200, 0x044205).w(this, FUNC(megasys1_state::monkelf_scroll0_w));
+ map(0x044208, 0x04420d).w(this, FUNC(megasys1_state::monkelf_scroll1_w));
+ map(0x0e0002, 0x0e0003).portr("P1");
+ map(0x0e0004, 0x0e0005).portr("P2");
+ map(0x0e0006, 0x0e0007).portr("DSW1");
+ map(0x0e0008, 0x0e0009).portr("DSW2");
+ map(0x0e000a, 0x0e000b).portr("SYSTEM");
+}
@@ -364,26 +369,27 @@ WRITE16_MEMBER(megasys1_state::ram_w )
}
-ADDRESS_MAP_START(megasys1_state::megasys1C_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c2000, 0x0c2005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2008, 0x0c200d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2100, 0x0c2105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2108, 0x0c2109) AM_WRITE(sprite_bank_w)
- AM_RANGE(0x0c2200, 0x0c2201) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x0c2208, 0x0c2209) AM_WRITE(active_layers_w)
- AM_RANGE(0x0c2308, 0x0c2309) AM_WRITE(screen_flag_w)
- AM_RANGE(0x0c8000, 0x0c8001) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) AM_WRITE(soundlatch_c_w)
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x0d8000, 0x0d8001) AM_READWRITE(ip_select_r,ip_select_w)
+void megasys1_state::megasys1C_map(address_map &map)
+{
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x07ffff).rom();
+ 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(this, FUNC(megasys1_state::sprite_bank_w));
+ map(0x0c2200, 0x0c2201).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x0c2208, 0x0c2209).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x0c2308, 0x0c2309).w(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x0c8000, 0x0c8001).r(m_soundlatch2, FUNC(generic_latch_16_device::read)).w(this, FUNC(megasys1_state::soundlatch_c_w));
+ map(0x0d2000, 0x0d3fff).ram().share("objectram");
+ map(0x0d8000, 0x0d8001).rw(this, FUNC(megasys1_state::ip_select_r), FUNC(megasys1_state::ip_select_w));
// 64th Street actively uses 0xe4*** for breakable objects.
- AM_RANGE(0x0e0000, 0x0e3fff) AM_MIRROR(0x4000) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x0e8000, 0x0ebfff) AM_MIRROR(0x4000) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x0f0000, 0x0f3fff) AM_MIRROR(0x4000) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2")
- AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1c0000, 0x1cffff) AM_MIRROR(0x30000) AM_RAM_WRITE(ram_w) AM_SHARE("ram") //0x1f****, Cybattler reads attract mode inputs at 0x1d****
-ADDRESS_MAP_END
+ map(0x0e0000, 0x0e3fff).mirror(0x4000).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x0e8000, 0x0ebfff).mirror(0x4000).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x0f0000, 0x0f3fff).mirror(0x4000).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
+ map(0x0f8000, 0x0f87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1c0000, 0x1cffff).mirror(0x30000).ram().w(this, FUNC(megasys1_state::ram_w)).share("ram"); //0x1f****, Cybattler reads attract mode inputs at 0x1d****
+}
/***************************************************************************
@@ -395,29 +401,31 @@ INTERRUPT_GEN_MEMBER(megasys1_state::megasys1D_irq)
device.execute().set_input_line(2, HOLD_LINE);
}
-ADDRESS_MAP_START(megasys1_state::megasys1D_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0c2000, 0x0c2005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2008, 0x0c200d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2108, 0x0c2109) AM_WRITENOP //AM_WRITE(sprite_bank_w)
- AM_RANGE(0x0c2200, 0x0c2201) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x0c2208, 0x0c2209) AM_WRITE(active_layers_w)
- AM_RANGE(0x0c2308, 0x0c2309) AM_WRITE(screen_flag_w)
- AM_RANGE(0x0ca000, 0x0cbfff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("DSW")
- AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
-// AM_RANGE(0x100000, 0x100001) // protection
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM /*_WRITE(ram_w)*/ AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::megasys1D_oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void megasys1_state::megasys1D_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ 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(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x0c2208, 0x0c2209).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x0c2308, 0x0c2309).w(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x0ca000, 0x0cbfff).ram().share("objectram");
+ map(0x0d0000, 0x0d3fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x0d8000, 0x0d87ff).mirror(0x3000).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ 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_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+// map(0x100000, 0x100001); // protection
+ map(0x1f0000, 0x1fffff).ram() /*.w(this, FUNC(megasys1_state::ram_w))*/ .share("ram");
+}
+
+void megasys1_state::megasys1D_oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
/*************************************
*
@@ -503,27 +511,29 @@ READ8_MEMBER(megasys1_state::oki_status_2_r)
***************************************************************************/
-ADDRESS_MAP_START(megasys1_state::megasys1A_sound_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read)
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // to main cpu
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::kickoffb_sound_map) // TODO: wrong, needs to be checked range for range
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read)
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // to main cpu
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM
-ADDRESS_MAP_END
+void megasys1_state::megasys1A_sound_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ 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(this, FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0001, 0x0c0001).r(this, FUNC(megasys1_state::oki_status_2_r));
+ map(0x0c0000, 0x0c0003).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0fffff).ram();
+}
+
+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, 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(this, FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0fffff).ram();
+}
/***************************************************************************
@@ -531,17 +541,18 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(megasys1_state::megasys1B_sound_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) /* from/to main cpu */
- AM_RANGE(0x060000, 0x060001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) /* from/to main cpu */
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0effff) AM_RAM
-ADDRESS_MAP_END
+void megasys1_state::megasys1B_sound_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ 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(this, FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0001, 0x0c0001).r(this, FUNC(megasys1_state::oki_status_2_r));
+ map(0x0c0000, 0x0c0003).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0effff).ram();
+}
/***************************************************************************
@@ -550,17 +561,19 @@ ADDRESS_MAP_END
-ADDRESS_MAP_START(megasys1_state::z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch_z", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ?? */
-ADDRESS_MAP_END
+void megasys1_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch_z, FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).nopw(); /* ?? */
+}
-ADDRESS_MAP_START(megasys1_state::z80_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void megasys1_state::z80_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/*************************************
diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp
index 4b6f21278ac..011eb5f7a9a 100644
--- a/src/mame/drivers/megatech.cpp
+++ b/src/mame/drivers/megatech.cpp
@@ -522,17 +522,18 @@ WRITE8_MEMBER(mtech_state::banked_ram_w )
-ADDRESS_MAP_START(mtech_state::megatech_bios_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM // from bios rom (0x0000-0x2fff populated in ROM)
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE(banked_ram_r, banked_ram_w) // copies instruction data here at startup, must be banked
- AM_RANGE(0x4000, 0x5fff) AM_RAM // plain ram?
- AM_RANGE(0x6000, 0x6000) AM_WRITE(mt_z80_bank_w )
- AM_RANGE(0x6400, 0x6407) AM_DEVREADWRITE("io1", cxd1095_device, read, write)
- AM_RANGE(0x6800, 0x6807) AM_DEVREADWRITE("io2", cxd1095_device, read, write)
- AM_RANGE(0x7000, 0x77ff) AM_ROM // from bios rom (0x7000-0x77ff populated in ROM)
+void mtech_state::megatech_bios_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom(); // from bios rom (0x0000-0x2fff populated in ROM)
+ map(0x3000, 0x3fff).rw(this, FUNC(mtech_state::banked_ram_r), FUNC(mtech_state::banked_ram_w)); // copies instruction data here at startup, must be banked
+ map(0x4000, 0x5fff).ram(); // plain ram?
+ map(0x6000, 0x6000).w(this, FUNC(mtech_state::mt_z80_bank_w));
+ map(0x6400, 0x6407).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x6800, 0x6807).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x7000, 0x77ff).rom(); // from bios rom (0x7000-0x77ff populated in ROM)
//AM_RANGE(0x7800, 0x7fff) AM_RAM // ?
- AM_RANGE(0x8000, 0x9fff) AM_READWRITE(read_68k_banked_data, write_68k_banked_data) // window into 68k address space, reads instr rom and writes to reset banks on z80 carts?
-ADDRESS_MAP_END
+ map(0x8000, 0x9fff).rw(this, FUNC(mtech_state::read_68k_banked_data), FUNC(mtech_state::write_68k_banked_data)); // window into 68k address space, reads instr rom and writes to reset banks on z80 carts?
+}
WRITE8_MEMBER(mtech_state::bios_port_ctrl_w )
@@ -576,17 +577,18 @@ READ8_MEMBER(mtech_state::vdp1_count_r)
return m_vdp1->vcount_read(prg, offset);
}
-ADDRESS_MAP_START(mtech_state::megatech_bios_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x3f, 0x3f) AM_WRITE(bios_port_ctrl_w)
- AM_RANGE(0x7f, 0x7f) AM_WRITE(bios_port_7f_w)
+void mtech_state::megatech_bios_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x3f, 0x3f).w(this, FUNC(mtech_state::bios_port_ctrl_w));
+ map(0x7f, 0x7f).w(this, FUNC(mtech_state::bios_port_7f_w));
- AM_RANGE(0x40, 0x41) AM_MIRROR(0x3e) AM_READ(vdp1_count_r)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write)
+ map(0x40, 0x41).mirror(0x3e).r(this, FUNC(mtech_state::vdp1_count_r));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
- AM_RANGE(0xdc, 0xdd) AM_READ(bios_joypad_r) // player inputs
-ADDRESS_MAP_END
+ map(0xdc, 0xdd).r(this, FUNC(mtech_state::bios_joypad_r)); // player inputs
+}
diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp
index 66fca566e9b..de2a064c7a0 100644
--- a/src/mame/drivers/megazone.cpp
+++ b/src/mame/drivers/megazone.cpp
@@ -143,49 +143,54 @@ WRITE_LINE_MEMBER(megazone_state::irq_mask_w)
}
-ADDRESS_MAP_START(megazone_state::megazone_map)
- AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_SHARE("scrolly")
- AM_RANGE(0x1800, 0x1800) AM_WRITEONLY AM_SHARE("scrollx")
- AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("colorram2")
- AM_RANGE(0x3000, 0x33ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x4000, 0xffff) AM_ROM /* 4000->5FFF is a debug rom */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megazone_state::megazone_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2000) AM_WRITE(megazone_i8039_irq_w) /* START line. Interrupts 8039 */
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* CODE line. Command Interrupts 8039 */
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") /* IO Coin */
- AM_RANGE(0x6001, 0x6001) AM_READ_PORT("IN1") /* P1 IO */
- AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN2") /* P2 IO */
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW2")
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW1")
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP /* INTMAIN - Interrupts main CPU (unused) */
- AM_RANGE(0xc000, 0xc000) AM_WRITENOP /* INT (Actually is NMI) enable/disable (unused)*/
- AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megazone_state::megazone_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x00, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megazone_state::megazone_i8039_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megazone_state::megazone_i8039_io_map)
- AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void megazone_state::megazone_map(address_map &map)
+{
+ map(0x0000, 0x0007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x0800, 0x0800).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1000, 0x1000).writeonly().share("scrolly");
+ map(0x1800, 0x1800).writeonly().share("scrollx");
+ map(0x2000, 0x23ff).ram().share("videoram");
+ map(0x2400, 0x27ff).ram().share("videoram2");
+ map(0x2800, 0x2bff).ram().share("colorram");
+ map(0x2c00, 0x2fff).ram().share("colorram2");
+ map(0x3000, 0x33ff).ram().share("spriteram");
+ map(0x3800, 0x3fff).ram().share("share1");
+ map(0x4000, 0xffff).rom(); /* 4000->5FFF is a debug rom */
+}
+
+void megazone_state::megazone_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x2000).w(this, FUNC(megazone_state::megazone_i8039_irq_w)); /* START line. Interrupts 8039 */
+ map(0x4000, 0x4000).w("soundlatch", FUNC(generic_latch_8_device::write)); /* CODE line. Command Interrupts 8039 */
+ map(0x6000, 0x6000).portr("IN0"); /* IO Coin */
+ map(0x6001, 0x6001).portr("IN1"); /* P1 IO */
+ map(0x6002, 0x6002).portr("IN2"); /* P2 IO */
+ map(0x8000, 0x8000).portr("DSW2");
+ map(0x8001, 0x8001).portr("DSW1");
+ map(0xa000, 0xa000).nopw(); /* INTMAIN - Interrupts main CPU (unused) */
+ map(0xc000, 0xc000).nopw(); /* INT (Actually is NMI) enable/disable (unused)*/
+ map(0xc001, 0xc001).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe000, 0xe7ff).ram().share("share1");
+}
+
+void megazone_state::megazone_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x00, 0x02).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x02).w("aysnd", FUNC(ay8910_device::data_w));
+}
+
+void megazone_state::megazone_i8039_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void megazone_state::megazone_i8039_io_map(address_map &map)
+{
+ map(0x00, 0xff).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( megazone )
/* 0x6000 -> 0xe320 (CPU1) = 0x3b20 (CPU0) */
diff --git a/src/mame/drivers/meijinsn.cpp b/src/mame/drivers/meijinsn.cpp
index 7bc51aec904..46de0abd8ab 100644
--- a/src/mame/drivers/meijinsn.cpp
+++ b/src/mame/drivers/meijinsn.cpp
@@ -189,29 +189,32 @@ READ16_MEMBER(meijinsn_state::alpha_mcu_r)
-ADDRESS_MAP_START(meijinsn_state::meijinsn_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080e00, 0x080fff) AM_READ(alpha_mcu_r) AM_WRITENOP
- AM_RANGE(0x100000, 0x107fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x180000, 0x180dff) AM_RAM
- AM_RANGE(0x180e00, 0x180fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x181000, 0x181fff) AM_RAM
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P2")
- AM_RANGE(0x1a0000, 0x1a0001) AM_READ_PORT("P1") AM_WRITE(sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meijinsn_state::meijinsn_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meijinsn_state::meijinsn_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x06, 0x06) AM_WRITENOP
-ADDRESS_MAP_END
+void meijinsn_state::meijinsn_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080e00, 0x080fff).r(this, FUNC(meijinsn_state::alpha_mcu_r)).nopw();
+ map(0x100000, 0x107fff).ram().share("videoram");
+ map(0x180000, 0x180dff).ram();
+ map(0x180e00, 0x180fff).ram().share("shared_ram");
+ map(0x181000, 0x181fff).ram();
+ map(0x1c0000, 0x1c0001).portr("P2");
+ map(0x1a0000, 0x1a0001).portr("P1").w(this, FUNC(meijinsn_state::sound_w));
+}
+
+void meijinsn_state::meijinsn_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+}
+
+void meijinsn_state::meijinsn_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w));
+ map(0x06, 0x06).nopw();
+}
static INPUT_PORTS_START( meijinsn )
PORT_START("P1")
diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp
index e98533f2520..da6dd0d47c0 100644
--- a/src/mame/drivers/mekd2.cpp
+++ b/src/mame/drivers/mekd2.cpp
@@ -139,14 +139,15 @@ private:
************************************************************/
-ADDRESS_MAP_START(mekd2_state::mekd2_mem)
- AM_RANGE(0x0000, 0x00ff) AM_RAM // user ram
- AM_RANGE(0x8004, 0x8007) AM_DEVREADWRITE("pia_u", pia6821_device, read, write)
- AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0x8020, 0x8023) AM_DEVREADWRITE("pia_s", pia6821_device, read, write)
- AM_RANGE(0xa000, 0xa07f) AM_RAM // system ram
- AM_RANGE(0xe000, 0xe3ff) AM_ROM AM_MIRROR(0x1c00) /* JBUG ROM */
-ADDRESS_MAP_END
+void mekd2_state::mekd2_mem(address_map &map)
+{
+ map(0x0000, 0x00ff).ram(); // user ram
+ map(0x8004, 0x8007).rw(m_pia_u, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8008, 0x8009).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x8020, 0x8023).rw(m_pia_s, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xa000, 0xa07f).ram(); // system ram
+ map(0xe000, 0xe3ff).rom().mirror(0x1c00); /* JBUG ROM */
+}
/***********************************************************
diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp
index 1184f1f1206..d853893d7f3 100644
--- a/src/mame/drivers/mephisto.cpp
+++ b/src/mame/drivers/mephisto.cpp
@@ -222,42 +222,45 @@ WRITE8_MEMBER( mephisto_state::write_led_mm2 )
m_led7= BIT(data, 7) ? 0xff :0x00; //MM2
}
-ADDRESS_MAP_START(mephisto_state::rebel5_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_RAM // AM_BASE(m_p_ram)
- AM_RANGE( 0x2000, 0x2007) AM_WRITE(write_led) // Status LEDs+ buzzer
- AM_RANGE( 0x3000, 0x4000) AM_DEVREAD("board", mephisto_board_device, input_r)
- AM_RANGE( 0x3000, 0x3007) AM_READ(read_keys) // Rebel 5.0
- AM_RANGE( 0x5000, 0x5000) AM_WRITE(write_lcd)
- AM_RANGE( 0x6000, 0x6000) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x7000, 0x7000) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mephisto_state::mephisto_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_RAM //AM_BASE(m_p_ram)
- AM_RANGE( 0x2000, 0x2000) AM_WRITE(write_lcd)
- AM_RANGE( 0x2400, 0x2407) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x2800, 0x2800) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x2c00, 0x2c07) AM_READ(read_keys)
- AM_RANGE( 0x3000, 0x3000) AM_DEVREAD("board", mephisto_board_device, input_r)
- AM_RANGE( 0x3400, 0x3407) AM_WRITE(write_led) // Status LEDs+ buzzer
- AM_RANGE( 0x3800, 0x3800) AM_WRITE(mephisto_NMI) // NMI enable
- AM_RANGE( 0x4000, 0x7fff) AM_ROM // Opening Library
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mephisto_state::mm2_mem)
- AM_RANGE( 0x0000, 0x0fff) AM_RAM //AM_BASE(m_p_ram)
- AM_RANGE( 0x1000, 0x1007) AM_WRITE(write_led_mm2) //Status LEDs
- AM_RANGE( 0x1800, 0x1807) AM_READ(read_keys)
- AM_RANGE( 0x2000, 0x2000) AM_DEVREAD("board", mephisto_board_device, input_r)
- AM_RANGE( 0x2800, 0x2800) AM_WRITE(write_lcd)
- AM_RANGE( 0x3000, 0x3000) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x3800, 0x3800) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x4000, 0x7fff) AM_ROM // Opening Library ?
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void mephisto_state::rebel5_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram(); // AM_BASE(m_p_ram)
+ map(0x2000, 0x2007).w(this, FUNC(mephisto_state::write_led)); // Status LEDs+ buzzer
+ map(0x3000, 0x4000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x3000, 0x3007).r(this, FUNC(mephisto_state::read_keys)); // Rebel 5.0
+ map(0x5000, 0x5000).w(this, FUNC(mephisto_state::write_lcd));
+ map(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_w));
+ map(0x7000, 0x7000).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void mephisto_state::mephisto_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram(); //AM_BASE(m_p_ram)
+ map(0x2000, 0x2000).w(this, FUNC(mephisto_state::write_lcd));
+ map(0x2400, 0x2407).w("board", FUNC(mephisto_board_device::led_w));
+ map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0x2c00, 0x2c07).r(this, FUNC(mephisto_state::read_keys));
+ map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x3400, 0x3407).w(this, FUNC(mephisto_state::write_led)); // Status LEDs+ buzzer
+ map(0x3800, 0x3800).w(this, FUNC(mephisto_state::mephisto_NMI)); // NMI enable
+ map(0x4000, 0x7fff).rom(); // Opening Library
+ map(0x8000, 0xffff).rom();
+}
+
+void mephisto_state::mm2_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).ram(); //AM_BASE(m_p_ram)
+ map(0x1000, 0x1007).w(this, FUNC(mephisto_state::write_led_mm2)); //Status LEDs
+ map(0x1800, 0x1807).r(this, FUNC(mephisto_state::read_keys));
+ map(0x2000, 0x2000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x2800, 0x2800).w(this, FUNC(mephisto_state::write_lcd));
+ map(0x3000, 0x3000).w("board", FUNC(mephisto_board_device::led_w));
+ map(0x3800, 0x3800).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0x4000, 0x7fff).rom(); // Opening Library ?
+ map(0x8000, 0xffff).rom();
+}
INPUT_PORTS_EXTERN( chessboard );
diff --git a/src/mame/drivers/mephisto_montec.cpp b/src/mame/drivers/mephisto_montec.cpp
index d131deea478..71aeefdbf0a 100644
--- a/src/mame/drivers/mephisto_montec.cpp
+++ b/src/mame/drivers/mephisto_montec.cpp
@@ -245,40 +245,43 @@ READ8_MEMBER(mephisto_montec_state::megaiv_input_r)
}
-ADDRESS_MAP_START(mephisto_montec_state::montec_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2400, 0x2400 ) AM_READ(montec_input_r)
- AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x2c00, 0x2c00 ) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(montec_led_w)
- AM_RANGE( 0x3000, 0x3001 ) AM_WRITE(montec_mux_w)
- AM_RANGE( 0x3002, 0x3002 ) AM_WRITE(montec_beeper_w)
- AM_RANGE( 0x3004, 0x3004 ) AM_WRITE(montec_lcd_data_w)
- AM_RANGE( 0x3005, 0x3005 ) AM_WRITE(montec_ldc_cs1_w)
- AM_RANGE( 0x3006, 0x3006 ) AM_WRITE(montec_lcd_clk_w)
- AM_RANGE( 0x3007, 0x3007 ) AM_WRITE(montec_ldc_cs0_w)
- AM_RANGE( 0x2000, 0x2000 ) AM_READWRITE(montec_nmi_ack_r, montec_nmi_ack_w)
- AM_RANGE( 0x8000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mephisto_montec_state::megaiv_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2400, 0x2400 ) AM_WRITE(megaiv_led_w)
- AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x2c00, 0x2c03 ) AM_WRITE(montec_mux_w) AM_READNOP
- AM_RANGE( 0x2c04, 0x2c04 ) AM_WRITE(montec_lcd_data_w)
- AM_RANGE( 0x2c05, 0x2c05 ) AM_WRITE(montec_ldc_cs1_w)
- AM_RANGE( 0x2c06, 0x2c06 ) AM_WRITE(montec_lcd_clk_w)
- AM_RANGE( 0x2c07, 0x2c07 ) AM_WRITE(montec_ldc_cs0_w)
- AM_RANGE( 0x3000, 0x3007 ) AM_READ(megaiv_input_r)
- AM_RANGE( 0x8000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mephisto_montec_state::smondial2_mem)
- AM_IMPORT_FROM(megaiv_mem)
- AM_RANGE( 0x4000, 0x7fff ) AM_DEVREAD("cartslot", generic_slot_device, read_rom)
-ADDRESS_MAP_END
+void mephisto_montec_state::montec_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2400, 0x2400).r(this, FUNC(mephisto_montec_state::montec_input_r));
+ map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w));
+ map(0x3400, 0x3400).w(this, FUNC(mephisto_montec_state::montec_led_w));
+ map(0x3000, 0x3001).w(this, FUNC(mephisto_montec_state::montec_mux_w));
+ map(0x3002, 0x3002).w(this, FUNC(mephisto_montec_state::montec_beeper_w));
+ map(0x3004, 0x3004).w(this, FUNC(mephisto_montec_state::montec_lcd_data_w));
+ map(0x3005, 0x3005).w(this, FUNC(mephisto_montec_state::montec_ldc_cs1_w));
+ map(0x3006, 0x3006).w(this, FUNC(mephisto_montec_state::montec_lcd_clk_w));
+ map(0x3007, 0x3007).w(this, FUNC(mephisto_montec_state::montec_ldc_cs0_w));
+ map(0x2000, 0x2000).rw(this, FUNC(mephisto_montec_state::montec_nmi_ack_r), FUNC(mephisto_montec_state::montec_nmi_ack_w));
+ map(0x8000, 0xffff).rom();
+}
+
+void mephisto_montec_state::megaiv_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2400, 0x2400).w(this, FUNC(mephisto_montec_state::megaiv_led_w));
+ map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0x2c00, 0x2c03).w(this, FUNC(mephisto_montec_state::montec_mux_w)).nopr();
+ map(0x2c04, 0x2c04).w(this, FUNC(mephisto_montec_state::montec_lcd_data_w));
+ map(0x2c05, 0x2c05).w(this, FUNC(mephisto_montec_state::montec_ldc_cs1_w));
+ map(0x2c06, 0x2c06).w(this, FUNC(mephisto_montec_state::montec_lcd_clk_w));
+ map(0x2c07, 0x2c07).w(this, FUNC(mephisto_montec_state::montec_ldc_cs0_w));
+ map(0x3000, 0x3007).r(this, FUNC(mephisto_montec_state::megaiv_input_r));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void mephisto_montec_state::smondial2_mem(address_map &map)
+{
+ megaiv_mem(map);
+ map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom));
+}
WRITE8_MEMBER(mephisto_montec_state::smondial_board_mux_w)
@@ -308,18 +311,19 @@ WRITE8_MEMBER(mephisto_montec_state::smondial_led_data_w)
m_beeper->set_state(BIT(m_leds_mux, 7));
}
-ADDRESS_MAP_START(mephisto_montec_state::smondial_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x4000, 0x4007 ) AM_READ(megaiv_input_r)
- AM_RANGE( 0x6400, 0x6407 ) AM_WRITE(smondial_led_data_w)
- AM_RANGE( 0x6800, 0x6807 ) AM_WRITE(smondial_board_mux_w)
- AM_RANGE( 0x6c00, 0x6c03 ) AM_WRITE(montec_mux_w)
- AM_RANGE( 0x6c04, 0x6c04 ) AM_WRITE(montec_lcd_data_w)
- AM_RANGE( 0x6c05, 0x6c05 ) AM_WRITE(montec_ldc_cs1_w)
- AM_RANGE( 0x6c06, 0x6c06 ) AM_WRITE(montec_lcd_clk_w)
- AM_RANGE( 0x6c07, 0x6c07 ) AM_WRITE(montec_ldc_cs0_w)
- AM_RANGE( 0x8000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+void mephisto_montec_state::smondial_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x4000, 0x4007).r(this, FUNC(mephisto_montec_state::megaiv_input_r));
+ map(0x6400, 0x6407).w(this, FUNC(mephisto_montec_state::smondial_led_data_w));
+ map(0x6800, 0x6807).w(this, FUNC(mephisto_montec_state::smondial_board_mux_w));
+ map(0x6c00, 0x6c03).w(this, FUNC(mephisto_montec_state::montec_mux_w));
+ map(0x6c04, 0x6c04).w(this, FUNC(mephisto_montec_state::montec_lcd_data_w));
+ map(0x6c05, 0x6c05).w(this, FUNC(mephisto_montec_state::montec_ldc_cs1_w));
+ map(0x6c06, 0x6c06).w(this, FUNC(mephisto_montec_state::montec_lcd_clk_w));
+ map(0x6c07, 0x6c07).w(this, FUNC(mephisto_montec_state::montec_ldc_cs0_w));
+ map(0x8000, 0xffff).rom();
+}
WRITE8_MEMBER(mephisto_montec_state::mondial2_input_mux_w)
{
@@ -339,13 +343,14 @@ WRITE8_MEMBER(mephisto_montec_state::mondial2_input_mux_w)
}
-ADDRESS_MAP_START(mephisto_montec_state::mondial2_mem)
- AM_RANGE( 0x0000, 0x07ff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2000, 0x2000 ) AM_WRITE(mondial2_input_mux_w)
- AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x3000, 0x3007 ) AM_READ(megaiv_input_r)
- AM_RANGE( 0x8000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+void mephisto_montec_state::mondial2_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x2000, 0x2000).w(this, FUNC(mephisto_montec_state::mondial2_input_mux_w));
+ map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0x3000, 0x3007).r(this, FUNC(mephisto_montec_state::megaiv_input_r));
+ map(0x8000, 0xffff).rom();
+}
TIMER_DEVICE_CALLBACK_MEMBER(mephisto_montec_state::refresh_leds)
{
diff --git a/src/mame/drivers/mephistp.cpp b/src/mame/drivers/mephistp.cpp
index 50f1e94da6a..ff37e069be2 100644
--- a/src/mame/drivers/mephistp.cpp
+++ b/src/mame/drivers/mephistp.cpp
@@ -103,29 +103,32 @@ WRITE8_MEMBER(mephisto_pinball_state::sound_rombank_w)
m_soundbank->set_entry(data & 0xf);
}
-ADDRESS_MAP_START(mephisto_pinball_state::mephisto_map)
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_MIRROR(0x08000) AM_REGION("maincpu", 0)
- AM_RANGE(0x10000, 0x107ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x12000, 0x1201f) AM_NOP //AM_DEVREADWRITE("muart", i8256_device, read, write)
- AM_RANGE(0x13000, 0x130ff) AM_DEVREADWRITE("ic20", i8155_device, memory_r, memory_w)
- AM_RANGE(0x13800, 0x13807) AM_DEVREADWRITE("ic20", i8155_device, io_r, io_w)
- AM_RANGE(0x14000, 0x140ff) AM_DEVREADWRITE("ic9", i8155_device, memory_r, memory_w)
- AM_RANGE(0x14800, 0x14807) AM_DEVREADWRITE("ic9", i8155_device, io_r, io_w)
- AM_RANGE(0x16000, 0x16000) AM_WRITE(shift_load_w)
- AM_RANGE(0x17000, 0x17001) AM_WRITENOP //???
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void mephisto_pinball_state::mephisto_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rom().mirror(0x08000).region("maincpu", 0);
+ map(0x10000, 0x107ff).ram().share("nvram");
+ map(0x12000, 0x1201f).noprw(); //AM_DEVREADWRITE("muart", i8256_device, read, write)
+ map(0x13000, 0x130ff).rw("ic20", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x13800, 0x13807).rw("ic20", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0x14000, 0x140ff).rw("ic9", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x14800, 0x14807).rw("ic9", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0x16000, 0x16000).w(this, FUNC(mephisto_pinball_state::shift_load_w));
+ map(0x17000, 0x17001).nopw(); //???
+ map(0xf8000, 0xfffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(mephisto_pinball_state::mephisto_8051_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
+void mephisto_pinball_state::mephisto_8051_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
-ADDRESS_MAP_START(mephisto_pinball_state::mephisto_8051_io)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_WRITE(sound_rombank_w)
- AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("dac", dac08_device, write)
-ADDRESS_MAP_END
+void mephisto_pinball_state::mephisto_8051_io(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0800).w(this, FUNC(mephisto_pinball_state::sound_rombank_w));
+ map(0x1000, 0x1000).w("dac", FUNC(dac08_device::write));
+}
#ifdef UNUSED_DEFINITION
ADDRESS_MAP_START(mephisto_pinball_state::sport2k_8051_io)
diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp
index 2d8e43fbc77..de4a414b593 100644
--- a/src/mame/drivers/merit.cpp
+++ b/src/mame/drivers/merit.cpp
@@ -403,182 +403,196 @@ CUSTOM_INPUT_MEMBER(merit_state::rndbit_r)
return machine().rand();
}
-ADDRESS_MAP_START(merit_state::pitboss_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::casino5_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank2")
- AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x7000, 0x7000) AM_WRITE(casino5_bank_w)
- AM_RANGE(0x7001, 0x7fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::bigappg_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::misdraw_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("cpunvram") // overlays other NVRAM? or is it banked?
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) // swapped compared to other set?
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::dodge_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
+void merit_state::pitboss_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc000, 0xc003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::casino5_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x5fff).bankr("bank2");
+ map(0x6000, 0x6fff).ram().share("nvram");
+ map(0x7000, 0x7000).w(this, FUNC(merit_state::casino5_bank_w));
+ map(0x7001, 0x7fff).ram();
+ map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc000, 0xc003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::bigappg_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).ram().share("nvram");
+ map(0xc004, 0xc007).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::misdraw_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).ram().share("nvram");
+ map(0xb000, 0xb7ff).ram().share("cpunvram"); // overlays other NVRAM? or is it banked?
+ map(0xc004, 0xc007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // swapped compared to other set?
+ map(0xc008, 0xc00b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::dodge_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).ram().share("nvram");
+ map(0xc004, 0xc007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
/* Address decoding is done by prom u13 on crt200a hardware. It decodes
* the following addr lines: 2,3,9,13,14,15 ==> E20C
* ==> mirror 1DF3 & ~effective_addr_lines
* */
-ADDRESS_MAP_START(merit_state::trvwhiz_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4c00, 0x4cff) AM_READWRITE(questions_r, high_offset_w)
- AM_RANGE(0x5400, 0x54ff) AM_WRITE(low_offset_w)
- AM_RANGE(0x5800, 0x58ff) AM_WRITE(med_offset_w)
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::trvwhiz_io_map)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("aysnd", ay8912_device, address_w)
- AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("aysnd", ay8912_device, data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(merit_state::phrcraze_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xc00c, 0xc00f) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
- AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
- AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::phrcraze_io_map)
- AM_RANGE(0xc004, 0xc004) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, address_w)
- AM_RANGE(0xc104, 0xc104) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(merit_state::tictac_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
- AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
- AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::tictac_io_map)
- AM_RANGE(0xc00c, 0xc00c) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, address_w)
- AM_RANGE(0xc10c, 0xc10c) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(merit_state::trvwhziv_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
- AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
- AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::dtrvwz5_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xb000, 0xb0ff) AM_ROM /* protection? code jumps here */
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
- AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
- AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(merit_state::couple_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("backup_ram")
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
+void merit_state::trvwhiz_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4c00, 0x4cff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w));
+ map(0x5400, 0x54ff).w(this, FUNC(merit_state::low_offset_w));
+ map(0x5800, 0x58ff).w(this, FUNC(merit_state::med_offset_w));
+ map(0x6000, 0x67ff).ram();
+ map(0xa000, 0xa003).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc000, 0xc003).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::trvwhiz_io_map(address_map &map)
+{
+ map(0x8000, 0x8000).w("aysnd", FUNC(ay8912_device::address_w));
+ map(0x8100, 0x8100).w("aysnd", FUNC(ay8912_device::data_w));
+}
+
+
+void merit_state::phrcraze_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).ram();
+ map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc00c, 0xc00f).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w));
+ map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w));
+ map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w));
+ map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::phrcraze_io_map(address_map &map)
+{
+ map(0xc004, 0xc004).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::address_w));
+ map(0xc104, 0xc104).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::data_w));
+}
+
+
+void merit_state::tictac_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xc004, 0xc007).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w));
+ map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w));
+ map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w));
+ map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::tictac_io_map(address_map &map)
+{
+ map(0xc00c, 0xc00c).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::address_w));
+ map(0xc10c, 0xc10c).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::data_w));
+}
+
+
+void merit_state::trvwhziv_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).ram();
+ map(0xc004, 0xc007).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w));
+ map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w));
+ map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w));
+ map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::dtrvwz5_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram().share("nvram");
+ map(0xb000, 0xb0ff).rom(); /* protection? code jumps here */
+ map(0xc004, 0xc007).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w));
+ map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w));
+ map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w));
+ map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
+
+void merit_state::couple_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).ram().share("backup_ram");
+ map(0xc004, 0xc007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc008, 0xc00b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w));
+}
static INPUT_PORTS_START( meritpoker )
diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp
index f8e90fdcf12..bee7abfe68b 100644
--- a/src/mame/drivers/meritm.cpp
+++ b/src/mame/drivers/meritm.cpp
@@ -537,64 +537,70 @@ READ8_MEMBER(meritm_state::meritm_ds1644_r)
*
*************************************/
-ADDRESS_MAP_START(meritm_state::meritm_crt250_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meritm_state::meritm_crt250_questions_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0x0000, 0x0000) AM_WRITE(meritm_crt250_questions_lo_w)
- AM_RANGE(0x0001, 0x0001) AM_WRITE(meritm_crt250_questions_hi_w)
- AM_RANGE(0x0002, 0x0002) AM_WRITE(meritm_crt250_questions_bank_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meritm_state::meritm_crt250_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8930_device, data_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8930_device, address_data_w)
- AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meritm_state::meritm_crt250_crt258_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write)
- AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8930_device, data_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8930_device, address_data_w)
- AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meritm_state::meritm_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("bank2")
- AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank3") AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(meritm_state::meritm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(meritm_psd_a15_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write)
- AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8930_device, data_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8930_device, address_data_w)
- AM_RANGE(0xff, 0xff) AM_WRITE(meritm_bank_w)
-ADDRESS_MAP_END
+void meritm_state::meritm_crt250_map(address_map &map)
+{
+ map(0x0000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xffff).ram().share("nvram");
+}
+
+void meritm_state::meritm_crt250_questions_map(address_map &map)
+{
+ map(0x0000, 0xdfff).bankr("bank1");
+ map(0x0000, 0x0000).w(this, FUNC(meritm_state::meritm_crt250_questions_lo_w));
+ map(0x0001, 0x0001).w(this, FUNC(meritm_state::meritm_crt250_questions_hi_w));
+ map(0x0002, 0x0002).w(this, FUNC(meritm_state::meritm_crt250_questions_bank_w));
+ map(0xe000, 0xffff).ram().share("nvram");
+}
+
+void meritm_state::meritm_crt250_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r));
+ map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w));
+ map(0xff, 0xff).w(this, FUNC(meritm_state::meritm_crt250_bank_w));
+}
+
+void meritm_state::meritm_crt250_crt258_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x60, 0x67).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r));
+ map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w));
+ map(0xff, 0xff).w(this, FUNC(meritm_state::meritm_crt250_bank_w));
+}
+
+void meritm_state::meritm_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xdfff).bankr("bank2");
+ map(0xe000, 0xffff).bankrw("bank3").share("nvram");
+}
+
+void meritm_state::meritm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(meritm_state::meritm_psd_a15_w));
+ map(0x01, 0x01).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x60, 0x67).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r));
+ map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w));
+ map(0xff, 0xff).w(this, FUNC(meritm_state::meritm_bank_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp
index c1afb47bd57..79129d4df72 100644
--- a/src/mame/drivers/mermaid.cpp
+++ b/src/mame/drivers/mermaid.cpp
@@ -157,25 +157,26 @@ WRITE_LINE_MEMBER(mermaid_state::nmi_mask_w)
/* Memory Map */
-ADDRESS_MAP_START(mermaid_state::mermaid_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(mermaid_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(mermaid_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd81f) AM_RAM_WRITE(mermaid_bg_scroll_w) AM_SHARE("bg_scrollram")
- AM_RANGE(0xd840, 0xd85f) AM_RAM_WRITE(mermaid_fg_scroll_w) AM_SHARE("fg_scrollram")
- AM_RANGE(0xd880, 0xd8bf) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(mermaid_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW")
- AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("latch1", ls259_device, write_d0)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("P1")
- AM_RANGE(0xe800, 0xe807) AM_DEVWRITE("latch2", ls259_device, write_d0)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P2")
- AM_RANGE(0xf800, 0xf800) AM_READ(mermaid_collision_r)
- AM_RANGE(0xf802, 0xf802) AM_WRITENOP // ???
- AM_RANGE(0xf806, 0xf806) AM_WRITE(mermaid_ay8910_write_port_w)
- AM_RANGE(0xf807, 0xf807) AM_WRITE(mermaid_ay8910_control_port_w)
-ADDRESS_MAP_END
+void mermaid_state::mermaid_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcbff).ram().w(this, FUNC(mermaid_state::mermaid_videoram2_w)).share("videoram2");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(mermaid_state::mermaid_videoram_w)).share("videoram");
+ map(0xd800, 0xd81f).ram().w(this, FUNC(mermaid_state::mermaid_bg_scroll_w)).share("bg_scrollram");
+ map(0xd840, 0xd85f).ram().w(this, FUNC(mermaid_state::mermaid_fg_scroll_w)).share("fg_scrollram");
+ map(0xd880, 0xd8bf).ram().share("spriteram");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(mermaid_state::mermaid_colorram_w)).share("colorram");
+ map(0xe000, 0xe000).portr("DSW");
+ map(0xe000, 0xe007).w("latch1", FUNC(ls259_device::write_d0));
+ map(0xe800, 0xe800).portr("P1");
+ map(0xe800, 0xe807).w("latch2", FUNC(ls259_device::write_d0));
+ map(0xf000, 0xf000).portr("P2");
+ map(0xf800, 0xf800).r(this, FUNC(mermaid_state::mermaid_collision_r));
+ map(0xf802, 0xf802).nopw(); // ???
+ map(0xf806, 0xf806).w(this, FUNC(mermaid_state::mermaid_ay8910_write_port_w));
+ map(0xf807, 0xf807).w(this, FUNC(mermaid_state::mermaid_ay8910_control_port_w));
+}
WRITE_LINE_MEMBER(mermaid_state::rougien_sample_rom_lo_w)
{
diff --git a/src/mame/drivers/mes.cpp b/src/mame/drivers/mes.cpp
index 5f4838de696..9fdea2ffe32 100644
--- a/src/mame/drivers/mes.cpp
+++ b/src/mame/drivers/mes.cpp
@@ -57,21 +57,23 @@ READ8_MEMBER( mes_state::port08_r )
return m_port08 | (m_term_data ? 0x80 : 0);
}
-ADDRESS_MAP_START(mes_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x1000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mes_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(port00_r)
- AM_RANGE(0x08, 0x08) AM_READ(port08_r)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pio", z80pio_device, read, write)
-ADDRESS_MAP_END
+void mes_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom().region("roms", 0);
+ map(0x1000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("videoram");
+}
+
+void mes_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(mes_state::port00_r));
+ map(0x08, 0x08).r(this, FUNC(mes_state::port08_r));
+ map(0x0c, 0x0f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x10, 0x13).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( mes )
diff --git a/src/mame/drivers/metalmx.cpp b/src/mame/drivers/metalmx.cpp
index 4bc40346486..afedb709ddd 100644
--- a/src/mame/drivers/metalmx.cpp
+++ b/src/mame/drivers/metalmx.cpp
@@ -505,30 +505,31 @@ WRITE32_MEMBER(metalmx_state::timer_w)
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x3fffff) AM_ROM
- AM_RANGE(0x400000, 0x4000ff) AM_READWRITE(host_gsp_r, host_gsp_w)
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(host_dram_r, host_dram_w)
- AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(host_vram_r, host_vram_w)
- AM_RANGE(0x800000, 0x80001f) AM_READWRITE(dsp32c_2_r, dsp32c_2_w)
- AM_RANGE(0x800020, 0x85ffff) AM_NOP /* Unknown */
- AM_RANGE(0x880000, 0x88001f) AM_READWRITE(dsp32c_1_r, dsp32c_1_w)
- AM_RANGE(0x980000, 0x9800ff) AM_WRITE(reset_w)
- AM_RANGE(0xb40000, 0xb40003) AM_READWRITE(sound_data_r, sound_data_w)
- AM_RANGE(0xf00000, 0xf00003) AM_RAM /* Network message port */
- AM_RANGE(0xf02000, 0xf02003) AM_READWRITE(watchdog_r, shifter_w)
- AM_RANGE(0xf03000, 0xf03003) AM_READ_PORT("P1") AM_WRITE(motor_w)
- AM_RANGE(0xf04000, 0xf04003) AM_READ_PORT("P2")
- AM_RANGE(0xf05000, 0xf05fff) AM_WRITENOP /* Lamps */ // f06000 = ADC // f01xxx = ADC
- AM_RANGE(0xf19000, 0xf19003) AM_WRITENOP /* Network */
- AM_RANGE(0xf1a000, 0xf1a003) AM_WRITENOP
- AM_RANGE(0xf1b000, 0xf1b003) AM_WRITENOP
- AM_RANGE(0xf1e000, 0xf1e003) AM_RAM /* Network status flags : 1000 = LIRQ 4000 = SFLAG 8000 = 68FLAG */
- AM_RANGE(0xf20000, 0xf2ffff) AM_WRITE(timer_w)
- AM_RANGE(0xfc0000, 0xfc1fff) AM_RAM /* Zero power RAM */
- AM_RANGE(0xfd0000, 0xffffff) AM_RAM /* Scratch RAM */
-ADDRESS_MAP_END
+void metalmx_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x3fffff).rom();
+ map(0x400000, 0x4000ff).rw(this, FUNC(metalmx_state::host_gsp_r), FUNC(metalmx_state::host_gsp_w));
+ map(0x600000, 0x6fffff).rw(this, FUNC(metalmx_state::host_dram_r), FUNC(metalmx_state::host_dram_w));
+ map(0x700000, 0x7fffff).rw(this, FUNC(metalmx_state::host_vram_r), FUNC(metalmx_state::host_vram_w));
+ map(0x800000, 0x80001f).rw(this, FUNC(metalmx_state::dsp32c_2_r), FUNC(metalmx_state::dsp32c_2_w));
+ map(0x800020, 0x85ffff).noprw(); /* Unknown */
+ map(0x880000, 0x88001f).rw(this, FUNC(metalmx_state::dsp32c_1_r), FUNC(metalmx_state::dsp32c_1_w));
+ map(0x980000, 0x9800ff).w(this, FUNC(metalmx_state::reset_w));
+ map(0xb40000, 0xb40003).rw(this, FUNC(metalmx_state::sound_data_r), FUNC(metalmx_state::sound_data_w));
+ map(0xf00000, 0xf00003).ram(); /* Network message port */
+ map(0xf02000, 0xf02003).rw(this, FUNC(metalmx_state::watchdog_r), FUNC(metalmx_state::shifter_w));
+ map(0xf03000, 0xf03003).portr("P1").w(this, FUNC(metalmx_state::motor_w));
+ map(0xf04000, 0xf04003).portr("P2");
+ map(0xf05000, 0xf05fff).nopw(); /* Lamps */ // f06000 = ADC // f01xxx = ADC
+ map(0xf19000, 0xf19003).nopw(); /* Network */
+ map(0xf1a000, 0xf1a003).nopw();
+ map(0xf1b000, 0xf1b003).nopw();
+ map(0xf1e000, 0xf1e003).ram(); /* Network status flags : 1000 = LIRQ 4000 = SFLAG 8000 = 68FLAG */
+ map(0xf20000, 0xf2ffff).w(this, FUNC(metalmx_state::timer_w));
+ map(0xfc0000, 0xfc1fff).ram(); /* Zero power RAM */
+ map(0xfd0000, 0xffffff).ram(); /* Scratch RAM */
+}
/*************************************
@@ -537,15 +538,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::adsp_program_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("adsp_intprog")
-ADDRESS_MAP_END
+void metalmx_state::adsp_program_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("adsp_intprog");
+}
-ADDRESS_MAP_START(metalmx_state::adsp_data_map)
- AM_RANGE(0x3800, 0x39ff) AM_RAM
- AM_RANGE(0x2000, 0x2007) AM_RAM
- AM_RANGE(0x3fe0, 0x3fff) AM_RAM // TODO: CPU control registers
-ADDRESS_MAP_END
+void metalmx_state::adsp_data_map(address_map &map)
+{
+ map(0x3800, 0x39ff).ram();
+ map(0x2000, 0x2007).ram();
+ map(0x3fe0, 0x3fff).ram(); // TODO: CPU control registers
+}
/*************************************
@@ -554,13 +557,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::gsp_map)
- AM_RANGE(0x88800000, 0x8880000f) AM_RAM /* ? */
- AM_RANGE(0x88c00000, 0x88c0000f) AM_RAM /* ? */
- AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("gsp", tms34020_device, io_register_r, io_register_w)
- AM_RANGE(0xff000000, 0xff7fffff) AM_RAM AM_SHARE("gsp_dram")
- AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram")
-ADDRESS_MAP_END
+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");
+}
/*************************************
@@ -569,16 +573,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::dsp32c_1_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM
- AM_RANGE(0x600000, 0x67ffff) AM_RAM
- AM_RANGE(0x700000, 0x700003) AM_WRITENOP /* LEDs? */
- AM_RANGE(0xa00000, 0xa00003) AM_READ(unk_r)
- AM_RANGE(0xb00000, 0xb00003) AM_READ(unk_r)
- AM_RANGE(0xc00000, 0xc00003) AM_RAM /* FIFO? */
- AM_RANGE(0xf00000, 0xffffff) AM_RAM /* 3D registers */
-ADDRESS_MAP_END
+void metalmx_state::dsp32c_1_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram();
+ map(0x600000, 0x67ffff).ram();
+ map(0x700000, 0x700003).nopw(); /* LEDs? */
+ map(0xa00000, 0xa00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xb00000, 0xb00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xc00000, 0xc00003).ram(); /* FIFO? */
+ map(0xf00000, 0xffffff).ram(); /* 3D registers */
+}
/*************************************
*
@@ -586,16 +591,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(metalmx_state::dsp32c_2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM
- AM_RANGE(0x600000, 0x67ffff) AM_RAM
- AM_RANGE(0x700000, 0x700003) AM_WRITENOP /* LEDs? */
- AM_RANGE(0xa00000, 0xa00003) AM_READ(unk_r)
- AM_RANGE(0xb00000, 0xb00003) AM_READ(unk_r)
- AM_RANGE(0xc00000, 0xc00003) AM_RAM /* FIFO? */
- AM_RANGE(0xf00000, 0xffffff) AM_RAM /* 3D registers */
-ADDRESS_MAP_END
+void metalmx_state::dsp32c_2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram();
+ map(0x600000, 0x67ffff).ram();
+ map(0x700000, 0x700003).nopw(); /* LEDs? */
+ map(0xa00000, 0xa00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xb00000, 0xb00003).r(this, FUNC(metalmx_state::unk_r));
+ map(0xc00000, 0xc00003).ram(); /* FIFO? */
+ map(0xf00000, 0xffffff).ram(); /* 3D registers */
+}
/*************************************
diff --git a/src/mame/drivers/metlclsh.cpp b/src/mame/drivers/metlclsh.cpp
index 864dce8c82e..3280eb882f2 100644
--- a/src/mame/drivers/metlclsh.cpp
+++ b/src/mame/drivers/metlclsh.cpp
@@ -59,25 +59,26 @@ WRITE8_MEMBER(metlclsh_state::metlclsh_ack_nmi)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
-ADDRESS_MAP_START(metlclsh_state::metlclsh_master_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW")
- AM_RANGE(0xc080, 0xc080) AM_WRITENOP // ? 0
- AM_RANGE(0xc0c2, 0xc0c2) AM_WRITE(metlclsh_cause_irq) // cause irq on cpu #2
- AM_RANGE(0xc0c3, 0xc0c3) AM_WRITE(metlclsh_ack_nmi) // nmi ack
-/**/AM_RANGE(0xc800, 0xc82f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-/**/AM_RANGE(0xcc00, 0xcc2f) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
-/**/AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(metlclsh_fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym2", ym3526_device, write)
- AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfff0, 0xffff) AM_ROM // Reset/IRQ vectors
-ADDRESS_MAP_END
+void metlclsh_state::metlclsh_master_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram().share("share1");
+ map(0xa000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc001, 0xc001).portr("IN1");
+ map(0xc002, 0xc002).portr("IN2");
+ map(0xc003, 0xc003).portr("DSW");
+ map(0xc080, 0xc080).nopw(); // ? 0
+ map(0xc0c2, 0xc0c2).w(this, FUNC(metlclsh_state::metlclsh_cause_irq)); // cause irq on cpu #2
+ map(0xc0c3, 0xc0c3).w(this, FUNC(metlclsh_state::metlclsh_ack_nmi)); // nmi ack
+/**/map(0xc800, 0xc82f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+/**/map(0xcc00, 0xcc2f).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xd000, 0xd001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+/**/map(0xd800, 0xdfff).ram().w(this, FUNC(metlclsh_state::metlclsh_fgram_w)).share("fgram");
+ map(0xe000, 0xe001).w("ym2", FUNC(ym3526_device::write));
+ map(0xe800, 0xe9ff).ram().share("spriteram");
+ map(0xfff0, 0xffff).rom(); // Reset/IRQ vectors
+}
/***************************************************************************
@@ -106,24 +107,25 @@ WRITE8_MEMBER(metlclsh_state::metlclsh_flipscreen_w)
flip_screen_set(data & 1);
}
-ADDRESS_MAP_START(metlclsh_state::metlclsh_slave_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") AM_WRITE(metlclsh_gfxbank_w) // bg tiles bank
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW")
- AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(metlclsh_cause_nmi2) // cause nmi on cpu #1
- AM_RANGE(0xc0c1, 0xc0c1) AM_WRITE(metlclsh_ack_irq2) // irq ack
- AM_RANGE(0xd000, 0xd7ff) AM_ROMBANK("bank1") AM_WRITE(metlclsh_bgram_w) AM_SHARE("bgram") // this is banked
- AM_RANGE(0xe301, 0xe301) AM_WRITE(metlclsh_flipscreen_w) // 0/1
- AM_RANGE(0xe401, 0xe401) AM_WRITE(metlclsh_rambank_w)
- AM_RANGE(0xe402, 0xe403) AM_WRITEONLY AM_SHARE("scrollx")
+void metlclsh_state::metlclsh_slave_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram().share("share1");
+ map(0xc000, 0xc000).portr("IN0").w(this, FUNC(metlclsh_state::metlclsh_gfxbank_w)); // bg tiles bank
+ map(0xc001, 0xc001).portr("IN1");
+ map(0xc002, 0xc002).portr("IN2");
+ map(0xc003, 0xc003).portr("DSW");
+ map(0xc0c0, 0xc0c0).w(this, FUNC(metlclsh_state::metlclsh_cause_nmi2)); // cause nmi on cpu #1
+ map(0xc0c1, 0xc0c1).w(this, FUNC(metlclsh_state::metlclsh_ack_irq2)); // irq ack
+ map(0xd000, 0xd7ff).bankr("bank1").w(this, FUNC(metlclsh_state::metlclsh_bgram_w)).share("bgram"); // this is banked
+ map(0xe301, 0xe301).w(this, FUNC(metlclsh_state::metlclsh_flipscreen_w)); // 0/1
+ map(0xe401, 0xe401).w(this, FUNC(metlclsh_state::metlclsh_rambank_w));
+ map(0xe402, 0xe403).writeonly().share("scrollx");
// AM_RANGE(0xe404, 0xe404) AM_WRITENOP // ? 0
// AM_RANGE(0xe410, 0xe410) AM_WRITENOP // ? 0 on startup only
- AM_RANGE(0xe417, 0xe417) AM_WRITE(metlclsh_ack_nmi2) // nmi ack
- AM_RANGE(0xfff0, 0xffff) AM_ROM // Reset/IRQ vectors
-ADDRESS_MAP_END
+ map(0xe417, 0xe417).w(this, FUNC(metlclsh_state::metlclsh_ack_nmi2)); // nmi ack
+ map(0xfff0, 0xffff).rom(); // Reset/IRQ vectors
+}
/***************************************************************************
diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp
index 425c9ec4a4a..106e45e8dc6 100644
--- a/src/mame/drivers/metlfrzr.cpp
+++ b/src/mame/drivers/metlfrzr.cpp
@@ -178,39 +178,41 @@ WRITE8_MEMBER(metlfrzr_state::output_w)
// popmessage("%02x %02x",m_fg_tilebank,data & 3);
}
-ADDRESS_MAP_START(metlfrzr_state::metlfrzr_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0xd200, 0xd3ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect_ext) AM_SHARE("palette_ext")
-
- AM_RANGE(0xd400, 0xd47f) AM_DEVREADWRITE("t5182", t5182_device, sharedram_r, sharedram_w)
-
- AM_RANGE(0xd600, 0xd600) AM_READ_PORT("P1")
- AM_RANGE(0xd601, 0xd601) AM_READ_PORT("P2")
- AM_RANGE(0xd602, 0xd602) AM_READ_PORT("START")
- AM_RANGE(0xd603, 0xd603) AM_READ_PORT("DSW1")
- AM_RANGE(0xd604, 0xd604) AM_READ_PORT("DSW2")
- AM_RANGE(0xd600, 0xd61f) AM_WRITEONLY AM_SHARE("vregs")
-
- AM_RANGE(0xd700, 0xd700) AM_WRITE(output_w)
- AM_RANGE(0xd710, 0xd710) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
- AM_RANGE(0xd711, 0xd711) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r)
+void metlfrzr_state::metlfrzr_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().share("vram");
+ map(0xd000, 0xd1ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0xd200, 0xd3ff).ram().w(m_palette, FUNC(palette_device::write_indirect_ext)).share("palette_ext");
+
+ map(0xd400, 0xd47f).rw("t5182", FUNC(t5182_device::sharedram_r), FUNC(t5182_device::sharedram_w));
+
+ map(0xd600, 0xd600).portr("P1");
+ map(0xd601, 0xd601).portr("P2");
+ map(0xd602, 0xd602).portr("START");
+ map(0xd603, 0xd603).portr("DSW1");
+ map(0xd604, 0xd604).portr("DSW2");
+ map(0xd600, 0xd61f).writeonly().share("vregs");
+
+ map(0xd700, 0xd700).w(this, FUNC(metlfrzr_state::output_w));
+ map(0xd710, 0xd710).w("t5182", FUNC(t5182_device::sound_irq_w));
+ map(0xd711, 0xd711).r("t5182", FUNC(t5182_device::sharedram_semaphore_snd_r));
// following two do swapped access compared to darkmist
- AM_RANGE(0xd712, 0xd712) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w)
- AM_RANGE(0xd713, 0xd713) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
-
- AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("wram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(metlfrzr_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("wram") // executes code at 0xf5d5
-ADDRESS_MAP_END
+ map(0xd712, 0xd712).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_release_w));
+ map(0xd713, 0xd713).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_acquire_w));
+
+ map(0xd800, 0xdfff).ram();
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("wram");
+}
+
+void metlfrzr_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xf000, 0xffff).ram().share("wram"); // executes code at 0xf5d5
+}
static INPUT_PORTS_START( metlfrzr )
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index 725a07c7c3c..98784524ef4 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -483,18 +483,20 @@ WRITE_LINE_MEMBER(metro_state::vdp_blit_end_w)
*/
-ADDRESS_MAP_START(metro_state::metro_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* External ROM */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") /* External ROM (Banked) */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* External RAM */
-ADDRESS_MAP_END
+void metro_state::metro_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); /* External ROM */
+ map(0x4000, 0x7fff).bankr("audiobank"); /* External ROM (Banked) */
+ map(0x8000, 0x87ff).ram(); /* External RAM */
+}
/*****************/
-ADDRESS_MAP_START(metro_state::ymf278_map)
- AM_RANGE(0x000000, 0x27ffff) AM_ROM
-ADDRESS_MAP_END
+void metro_state::ymf278_map(address_map &map)
+{
+ map(0x000000, 0x27ffff).rom();
+}
/***************************************************************************
@@ -533,20 +535,21 @@ READ16_MEMBER(metro_state::balcube_dsw_r)
}
-ADDRESS_MAP_START(metro_state::balcube_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound
- AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // Sound
- AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r) // DSW x 3
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") //
- AM_RANGE(0x500006, 0x500007) AM_READNOP //
- AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0x600000, 0x67ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::balcube_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x300001, 0x300001).r("ymf", FUNC(ymf278b_device::read)); // Sound
+ map(0x300000, 0x30000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // Sound
+ map(0x400000, 0x41ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3
+ map(0x500000, 0x500001).portr("IN0"); // Inputs
+ map(0x500002, 0x500003).portr("IN1"); //
+ map(0x500006, 0x500007).nopr(); //
+ map(0x500002, 0x500009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0x600000, 0x67ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x6788a2, 0x6788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x6788a4, 0x6788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
@@ -554,139 +557,146 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(metro_state::daitoa_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map )
- AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1") //
- AM_RANGE(0x200006, 0x200007) AM_READNOP //
- AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3
- AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound
- AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // Sound
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::daitoa_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x200000, 0x200001).portr("IN0"); // Inputs
+ map(0x200002, 0x200003).portr("IN1"); //
+ map(0x200006, 0x200007).nopr(); //
+ map(0x200002, 0x200009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3
+ map(0x400001, 0x400001).r("ymf", FUNC(ymf278b_device::read)); // Sound
+ map(0x400000, 0x40000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // Sound
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Bang Bang Ball
***************************************************************************/
-ADDRESS_MAP_START(metro_state::bangball_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound
- AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // Sound
- AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r) // DSW x 3
- AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") //
- AM_RANGE(0xd00006, 0xd00007) AM_READNOP //
- AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0xe00000, 0xe7ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::bangball_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0xb00001, 0xb00001).r("ymf", FUNC(ymf278b_device::read)); // Sound
+ map(0xb00000, 0xb0000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // Sound
+ map(0xc00000, 0xc1ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3
+ map(0xd00000, 0xd00001).portr("IN0"); // Inputs
+ map(0xd00002, 0xd00003).portr("IN1"); //
+ map(0xd00006, 0xd00007).nopr(); //
+ map(0xd00002, 0xd00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0xe00000, 0xe7ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0xe788a2, 0xe788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0xe788a4, 0xe788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Battle Bubble
***************************************************************************/
-ADDRESS_MAP_START(metro_state::batlbubl_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0") //
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0") //
- AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2") //
- AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // read but ignored?
- AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound
- AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) //
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::batlbubl_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x200000, 0x200001).portr("IN1"); // Inputs
+ map(0x200002, 0x200003).portr("DSW0"); //
+ map(0x200004, 0x200005).portr("IN0"); //
+ map(0x200006, 0x200007).portr("IN2"); //
+ map(0x200002, 0x200009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // read but ignored?
+ map(0x400001, 0x400001).r("ymf", FUNC(ymf278b_device::read)); // Sound
+ map(0x400000, 0x40000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); //
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Mouse Shooter GoGo
***************************************************************************/
-ADDRESS_MAP_START(metro_state::msgogo_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("COINS") // Inputs
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("JOYS") //
- AM_RANGE(0x200006, 0x200007) AM_READNOP //
- AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // 3 x DSW
- AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound
- AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) //
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::msgogo_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x200000, 0x200001).portr("COINS"); // Inputs
+ map(0x200002, 0x200003).portr("JOYS"); //
+ map(0x200006, 0x200007).nopr(); //
+ map(0x200002, 0x200009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // 3 x DSW
+ map(0x400001, 0x400001).r("ymf", FUNC(ymf278b_device::read)); // Sound
+ map(0x400000, 0x40000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); //
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Daitoride
***************************************************************************/
-ADDRESS_MAP_START(metro_state::daitorid_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") //
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") //
- AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") //
- AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
-ADDRESS_MAP_END
+void metro_state::daitorid_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x47ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x4788a2, 0x4788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x4788a4, 0x4788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x4788a8, 0x4788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0x800000, 0x80ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0xc00000, 0xc00001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU
+ map(0xc00002, 0xc00003).portr("IN1"); //
+ map(0xc00004, 0xc00005).portr("DSW0"); //
+ map(0xc00006, 0xc00007).portr("IN2"); //
+ map(0xc00002, 0xc00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+}
/***************************************************************************
Dharma Doujou
***************************************************************************/
-ADDRESS_MAP_START(metro_state::dharma_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") //
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") //
- AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") //
- AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
-ADDRESS_MAP_END
+void metro_state::dharma_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0x800000, 0x87ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0xc00000, 0xc00001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU
+ map(0xc00002, 0xc00003).portr("IN1"); //
+ map(0xc00004, 0xc00005).portr("DSW0"); //
+ map(0xc00006, 0xc00007).portr("IN2"); //
+ map(0xc00002, 0xc00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+}
/***************************************************************************
Karate Tournament
***************************************************************************/
-ADDRESS_MAP_START(metro_state::karatour_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From Sound CPU
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") //
- AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") //
- AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") //
- AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") //
- AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4100_device, map)
- AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::karatour_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x400000, 0x400001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From Sound CPU
+ map(0x400002, 0x400003).portr("IN0"); // Inputs
+ map(0x400002, 0x400003).w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout
+ map(0x400004, 0x400005).portr("IN1"); //
+ map(0x400006, 0x400007).portr("DSW0"); //
+ map(0x40000a, 0x40000b).portr("DSW1"); //
+ map(0x40000c, 0x40000d).portr("IN2"); //
+ map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4100_device::map));
+ map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
@@ -695,59 +705,62 @@ ADDRESS_MAP_END
/* same limited tilemap access as karatour */
-ADDRESS_MAP_START(metro_state::kokushi_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x700000, 0x70ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") //
- AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
-ADDRESS_MAP_END
+void metro_state::kokushi_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x700000, 0x70ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0x800000, 0x87ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0xc00000, 0xc00001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU
+ map(0xc00002, 0xc00003).portr("IN1"); // Inputs
+ map(0xc00004, 0xc00005).portr("DSW0"); //
+ map(0xc00002, 0xc00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+}
/***************************************************************************
Last Fortress
***************************************************************************/
-ADDRESS_MAP_START(metro_state::lastfort_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4100_device, map)
- AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU
- AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1") //
- AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2") //
- AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW0") //
- AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("DSW1") //
- AM_RANGE(0xc0000e, 0xc0000f) AM_READ_PORT("IN3") //
-ADDRESS_MAP_END
+void metro_state::lastfort_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4100_device::map));
+ map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0xc00000, 0xc00001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU
+ map(0xc00002, 0xc00003).w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout
+ map(0xc00004, 0xc00005).portr("IN0"); // Inputs
+ map(0xc00006, 0xc00007).portr("IN1"); //
+ map(0xc00008, 0xc00009).portr("IN2"); //
+ map(0xc0000a, 0xc0000b).portr("DSW0"); //
+ map(0xc0000c, 0xc0000d).portr("DSW1"); //
+ map(0xc0000e, 0xc0000f).portr("IN3"); //
+}
/* the German version is halfway between lastfort and ladykill (karatour) memory maps */
/* todo: clean up input reads etc. */
-ADDRESS_MAP_START(metro_state::lastforg_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") //
- AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") //
- AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") //
- AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") //
- AM_RANGE(0x880000, 0x8fffff) AM_DEVICE("vdp", imagetek_i4100_device, map)
- AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::lastforg_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x400001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU
+ map(0x400002, 0x400003).portr("IN0"); // Inputs
+ map(0x400002, 0x400003).w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout
+ map(0x400004, 0x400005).portr("IN1"); //
+ map(0x400006, 0x400007).portr("DSW0"); //
+ map(0x40000a, 0x40000b).portr("DSW1"); //
+ map(0x40000c, 0x40000d).portr("IN2"); //
+ map(0x880000, 0x8fffff).m(m_vdp, FUNC(imagetek_i4100_device::map));
+ map(0x8f88a2, 0x8f88a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x8f88a4, 0x8f88a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x8f88a8, 0x8f88a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0xc00000, 0xc0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
@@ -802,50 +815,52 @@ WRITE8_MEMBER(metro_state::gakusai_eeprom_w)
m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE );
}
-ADDRESS_MAP_START(metro_state::gakusai_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x27ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map )
- AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels
- AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors
- AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x278836, 0x278837) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs
- AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") //
- AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5
- AM_RANGE(0x500000, 0x500001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Sound
- AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xc00000, 0xc00001) AM_READWRITE8(gakusai_eeprom_r, gakusai_eeprom_w, 0x00ff) // EEPROM
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE8(gakusai_oki_bank_hi_w, 0x00ff)
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::gakusai_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x200000, 0x27ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map));
+ map(0x278810, 0x27881f).writeonly().share("irq_levels"); // IRQ Levels
+ map(0x278820, 0x27882f).writeonly().share("irq_vectors"); // IRQ Vectors
+ map(0x278830, 0x278831).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x278832, 0x278833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x278836, 0x278837).nopr().w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x278880, 0x278881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs
+ map(0x278882, 0x278883).portr("IN0"); //
+ map(0x278888, 0x278889).writeonly().share("input_sel"); // Inputs
+ map(0x400000, 0x400001).nopw(); // ? 5
+ map(0x500001, 0x500001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Sound
+ map(0x600000, 0x600003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x700001, 0x700001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xc00001, 0xc00001).rw(this, FUNC(metro_state::gakusai_eeprom_r), FUNC(metro_state::gakusai_eeprom_w)); // EEPROM
+ map(0xd00001, 0xd00001).w(this, FUNC(metro_state::gakusai_oki_bank_hi_w));
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Mahjong Gakuensai 2
***************************************************************************/
-ADDRESS_MAP_START(metro_state::gakusai2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x600000, 0x67ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map)
- AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels
- AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors
- AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x678836, 0x678837) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r) // Inputs
- AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0") //
- AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
- AM_RANGE(0x800000, 0x800001) AM_WRITENOP // ? 5
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Sound bank
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE8(gakusai_oki_bank_hi_w, 0x00ff) //
- AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0xe00000, 0xe00001) AM_READWRITE8(gakusai_eeprom_r, gakusai_eeprom_w, 0x00ff) // EEPROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::gakusai2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x600000, 0x67ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map));
+ map(0x678810, 0x67881f).writeonly().share("irq_levels"); // IRQ Levels
+ map(0x678820, 0x67882f).writeonly().share("irq_vectors"); // IRQ Vectors
+ map(0x678830, 0x678831).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x678832, 0x678833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x678836, 0x678837).nopr().w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x678880, 0x678881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs
+ map(0x678882, 0x678883).portr("IN0"); //
+ map(0x678888, 0x678889).writeonly().share("input_sel"); // Inputs
+ map(0x800000, 0x800001).nopw(); // ? 5
+ map(0x900001, 0x900001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Sound bank
+ map(0xa00001, 0xa00001).w(this, FUNC(metro_state::gakusai_oki_bank_hi_w)); //
+ map(0xb00001, 0xb00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xc00000, 0xc00003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0xe00001, 0xe00001).rw(this, FUNC(metro_state::gakusai_eeprom_r), FUNC(metro_state::gakusai_eeprom_w)); // EEPROM
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
@@ -877,153 +892,160 @@ WRITE8_MEMBER(metro_state::dokyusp_eeprom_reset_w)
m_eeprom->cs_write(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE);
}
-ADDRESS_MAP_START(metro_state::dokyusp_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x27ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map)
- AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels
- AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors
- AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x278836, 0x278837) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs
- AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") //
- AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") //
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5
- AM_RANGE(0x500000, 0x500001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Sound
- AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE8(dokyusp_eeprom_reset_w, 0x00ff) // EEPROM
- AM_RANGE(0xd00000, 0xd00001) AM_READWRITE8(dokyusp_eeprom_r, dokyusp_eeprom_bit_w, 0x00ff) // EEPROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::dokyusp_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x200000, 0x27ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map));
+ map(0x278810, 0x27881f).writeonly().share("irq_levels"); // IRQ Levels
+ map(0x278820, 0x27882f).writeonly().share("irq_vectors"); // IRQ Vectors
+ map(0x278830, 0x278831).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x278832, 0x278833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x278836, 0x278837).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x278880, 0x278881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs
+ map(0x278882, 0x278883).portr("IN0"); //
+ map(0x278888, 0x278889).writeonly().share("input_sel"); //
+ map(0x400000, 0x400001).nopw(); // ? 5
+ map(0x500001, 0x500001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Sound
+ map(0x600000, 0x600003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x700001, 0x700001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xc00001, 0xc00001).w(this, FUNC(metro_state::dokyusp_eeprom_reset_w)); // EEPROM
+ map(0xd00001, 0xd00001).rw(this, FUNC(metro_state::dokyusp_eeprom_r), FUNC(metro_state::dokyusp_eeprom_bit_w)); // EEPROM
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Mahjong Doukyuusei
***************************************************************************/
-ADDRESS_MAP_START(metro_state::dokyusei_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map)
- AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels
- AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors
- AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
+void metro_state::dokyusei_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x47ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map));
+ map(0x478810, 0x47881f).writeonly().share("irq_levels"); // IRQ Levels
+ map(0x478820, 0x47882f).writeonly().share("irq_vectors"); // IRQ Vectors
+ map(0x478830, 0x478831).writeonly().share("irq_enable"); // IRQ Enable
// AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r) // IRQ Cause
- AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w) // IRQ Acknowledge
- AM_RANGE(0x478836, 0x478837) AM_WRITENOP // ? watchdog ?
- AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r) // Inputs
- AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0") //
- AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // 2 x DSW
- AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1") //
- AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
- AM_RANGE(0x800000, 0x800001) AM_WRITE8(gakusai_oki_bank_hi_w, 0x00ff) // Samples Bank?
- AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Samples Bank
- AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) //
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+ map(0x478832, 0x478833).w(this, FUNC(metro_state::metro_irq_cause_w)); // IRQ Acknowledge
+ map(0x478836, 0x478837).nopw(); // ? watchdog ?
+ map(0x478880, 0x478881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs
+ map(0x478882, 0x478883).portr("IN0"); //
+ map(0x478884, 0x478885).portr("DSW0"); // 2 x DSW
+ map(0x478886, 0x478887).portr("DSW1"); //
+ map(0x478888, 0x478889).writeonly().share("input_sel"); // Inputs
+ map(0x800001, 0x800001).w(this, FUNC(metro_state::gakusai_oki_bank_hi_w)); // Samples Bank?
+ map(0x900000, 0x900001).nopw(); // ? 4
+ map(0xa00001, 0xa00001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Samples Bank
+ map(0xc00000, 0xc00003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); //
+ map(0xd00001, 0xd00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Pang Pom's
***************************************************************************/
-ADDRESS_MAP_START(metro_state::pangpoms_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp", imagetek_i4100_device, map)
- AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU
- AM_RANGE(0x800002, 0x800003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1") //
- AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2") //
- AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0") //
- AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1") //
- AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3") //
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::pangpoms_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x47ffff).m(m_vdp, FUNC(imagetek_i4100_device::map));
+ map(0x4788a2, 0x4788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x4788a4, 0x4788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x4788a8, 0x4788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0x800000, 0x800001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU
+ map(0x800002, 0x800003).nopr().w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout
+ map(0x800004, 0x800005).portr("IN0"); // Inputs
+ map(0x800006, 0x800007).portr("IN1"); //
+ map(0x800008, 0x800009).portr("IN2"); //
+ map(0x80000a, 0x80000b).portr("DSW0"); //
+ map(0x80000c, 0x80000d).portr("DSW1"); //
+ map(0x80000e, 0x80000f).portr("IN3"); //
+ map(0xc00000, 0xc0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Poitto!
***************************************************************************/
-ADDRESS_MAP_START(metro_state::poitto_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") //
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") //
- AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") //
- AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0xc00000, 0xc7ffff) AM_DEVICE("vdp", imagetek_i4100_device, map)
- AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
-ADDRESS_MAP_END
+void metro_state::poitto_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0x800000, 0x800001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU
+ map(0x800002, 0x800003).portr("IN1"); //
+ map(0x800004, 0x800005).portr("DSW0"); //
+ map(0x800006, 0x800007).portr("IN2"); //
+ map(0x800002, 0x800009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0xc00000, 0xc7ffff).m(m_vdp, FUNC(imagetek_i4100_device::map));
+ map(0xc788a2, 0xc788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0xc788a4, 0xc788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0xc788a8, 0xc788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+}
/***************************************************************************
Sky Alert
***************************************************************************/
-ADDRESS_MAP_START(metro_state::skyalert_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU
- AM_RANGE(0x400002, 0x400003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1") //
- AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2") //
- AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0") //
- AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1") //
- AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3") //
- AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4100_device, map)
- AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::skyalert_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x400000, 0x400001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU
+ map(0x400002, 0x400003).nopr().w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout
+ map(0x400004, 0x400005).portr("IN0"); // Inputs
+ map(0x400006, 0x400007).portr("IN1"); //
+ map(0x400008, 0x400009).portr("IN2"); //
+ map(0x40000a, 0x40000b).portr("DSW0"); //
+ map(0x40000c, 0x40000d).portr("DSW1"); //
+ map(0x40000e, 0x40000f).portr("IN3"); //
+ map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4100_device::map));
+ map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+ map(0xc00000, 0xc0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
Pururun
***************************************************************************/
-ADDRESS_MAP_START(metro_state::pururun_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") //
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0") //
- AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2") //
- AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0xc00000, 0xc7ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
-ADDRESS_MAP_END
+void metro_state::pururun_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x400000, 0x400001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU
+ map(0x400002, 0x400003).portr("IN1"); //
+ map(0x400004, 0x400005).portr("DSW0"); //
+ map(0x400006, 0x400007).portr("IN2"); //
+ map(0x400002, 0x400009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0x800000, 0x80ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0xc00000, 0xc7ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0xc788a2, 0xc788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0xc788a4, 0xc788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0xc788a8, 0xc788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+}
/***************************************************************************
Toride II Adauchi Gaiden
***************************************************************************/
-ADDRESS_MAP_START(metro_state::toride2g_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // Watchdog (R)? / To Sound CPU (W)
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") //
- AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") //
- AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") //
- AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout
- AM_RANGE(0xc00000, 0xc7ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map )
- AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU
-ADDRESS_MAP_END
+void metro_state::toride2g_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+ map(0x800000, 0x800001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // Watchdog (R)? / To Sound CPU (W)
+ map(0x800002, 0x800003).portr("IN1"); //
+ map(0x800004, 0x800005).portr("DSW0"); //
+ map(0x800006, 0x800007).portr("IN2"); //
+ map(0x800002, 0x800009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout
+ map(0xc00000, 0xc7ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0xc788a2, 0xc788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0xc788a4, 0xc788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0xc788a8, 0xc788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU
+}
/***************************************************************************
@@ -1035,37 +1057,40 @@ WRITE8_MEMBER(metro_state::blzntrnd_sh_bankswitch_w)
m_audiobank->set_entry(data & 0x07);
}
-ADDRESS_MAP_START(metro_state::blzntrnd_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(metro_state::blzntrnd_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(blzntrnd_sh_bankswitch_w)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(metro_state::blzntrnd_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x27ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
-
- AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_k053936_w) AM_SHARE("k053936_ram") // 053936
- AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE("k053936", k053936_device, linectrl_w) // 053936 line control
- AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) // 053936 control
-
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP // Inputs
- AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") //
- AM_RANGE(0xe00002, 0xe00003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00).cswidth(16) // To Sound CPU
- AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0") //
- AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1") //
- AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") //
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::blzntrnd_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("audiobank");
+ map(0xe000, 0xffff).ram();
+}
+
+void metro_state::blzntrnd_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(metro_state::blzntrnd_sh_bankswitch_w));
+ map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw();
+ map(0x80, 0x83).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
+
+void metro_state::blzntrnd_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x27ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x2788a2, 0x2788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x2788a4, 0x2788a5).writeonly().share("irq_enable"); // IRQ Enable
+
+ map(0x400000, 0x43ffff).ram().w(this, FUNC(metro_state::metro_k053936_w)).share("k053936_ram"); // 053936
+ map(0x500000, 0x500fff).w(m_k053936, FUNC(k053936_device::linectrl_w)); // 053936 line control
+ map(0x600000, 0x60001f).w(m_k053936, FUNC(k053936_device::ctrl_w)); // 053936 control
+
+ map(0xe00000, 0xe00001).portr("DSW0").nopw(); // Inputs
+ map(0xe00002, 0xe00003).portr("DSW1"); //
+ map(0xe00002, 0xe00003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0xff00).cswidth(16); // To Sound CPU
+ map(0xe00004, 0xe00005).portr("IN0"); //
+ map(0xe00006, 0xe00007).portr("IN1"); //
+ map(0xe00008, 0xe00009).portr("IN2"); //
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
@@ -1077,29 +1102,31 @@ WRITE8_MEMBER(metro_state::mouja_sound_rombank_w)
m_okibank->set_entry((data >> 3) & 0x07);
}
-ADDRESS_MAP_START(metro_state::mouja_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map)
- AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels
- AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors
- AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w) // IRQ set timer count
- AM_RANGE(0x478836, 0x478837) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0") // Inputs
- AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1") //
- AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") //
- AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2") //
- AM_RANGE(0x800000, 0x800001) AM_WRITE8(mouja_sound_rombank_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xffff)
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(metro_state::mouja_okimap)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void metro_state::mouja_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x400000, 0x47ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map));
+ map(0x478810, 0x47881f).writeonly().share("irq_levels"); // IRQ Levels
+ map(0x478820, 0x47882f).writeonly().share("irq_vectors"); // IRQ Vectors
+ map(0x478830, 0x478831).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x478832, 0x478833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x478834, 0x478835).w(this, FUNC(metro_state::mouja_irq_timer_ctrl_w)); // IRQ set timer count
+ map(0x478836, 0x478837).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x478880, 0x478881).portr("IN0"); // Inputs
+ map(0x478882, 0x478883).portr("IN1"); //
+ map(0x478884, 0x478885).portr("DSW0"); //
+ map(0x478886, 0x478887).portr("IN2"); //
+ map(0x800001, 0x800001).w(this, FUNC(metro_state::mouja_sound_rombank_w));
+ map(0xc00000, 0xc00003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0xd00000, 0xd00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
+
+void metro_state::mouja_okimap(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
/***************************************************************************
@@ -1193,27 +1220,28 @@ WRITE16_MEMBER(metro_state::puzzlet_irq_enable_w)
// H8/3007 CPU
-ADDRESS_MAP_START(metro_state::puzzlet_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x430000, 0x433fff) AM_RAM
- AM_RANGE(0x470000, 0x47dfff) AM_RAM
+void metro_state::puzzlet_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x430000, 0x433fff).ram();
+ map(0x470000, 0x47dfff).ram();
- AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
- AM_RANGE(0x580000, 0x580003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00)
+ map(0x500000, 0x500000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x580000, 0x580003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00);
// TODO: !!! i4300 !!!
- AM_RANGE(0x700000, 0x77ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w) // IRQ Cause
- AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_SHARE("irq_enable") // IRQ Enable
+ map(0x700000, 0x77ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x7788a2, 0x7788a3).w(this, FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause
+ map(0x7788a4, 0x7788a5).w(this, FUNC(metro_state::puzzlet_irq_enable_w)).share("irq_enable"); // IRQ Enable
- AM_RANGE(0x7f2000, 0x7f3fff) AM_RAM
+ map(0x7f2000, 0x7f3fff).ram();
- AM_RANGE(0x7f8880, 0x7f8881) AM_READ_PORT("IN1")
- AM_RANGE(0x7f8884, 0x7f8885) AM_READ_PORT("DSW0")
- AM_RANGE(0x7f8886, 0x7f8887) AM_READ_PORT("DSW0")
+ map(0x7f8880, 0x7f8881).portr("IN1");
+ map(0x7f8884, 0x7f8885).portr("DSW0");
+ map(0x7f8886, 0x7f8887).portr("DSW0");
- AM_RANGE(0x7f88a2, 0x7f88a3) AM_READ(metro_irq_cause_r) // IRQ Cause
-ADDRESS_MAP_END
+ map(0x7f88a2, 0x7f88a3).r(this, FUNC(metro_state::metro_irq_cause_r)); // IRQ Cause
+}
WRITE16_MEMBER(metro_state::puzzlet_portb_w)
@@ -1221,10 +1249,11 @@ WRITE16_MEMBER(metro_state::puzzlet_portb_w)
// popmessage("PORTB %02x", data);
}
-ADDRESS_MAP_START(metro_state::puzzlet_io_map)
- AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("IN2")
- AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READ_PORT("DSW0") AM_WRITE(puzzlet_portb_w)
-ADDRESS_MAP_END
+void metro_state::puzzlet_io_map(address_map &map)
+{
+ map(h8_device::PORT_7, h8_device::PORT_7).portr("IN2");
+ map(h8_device::PORT_B, h8_device::PORT_B).portr("DSW0").w(this, FUNC(metro_state::puzzlet_portb_w));
+}
/***************************************************************************
@@ -1266,20 +1295,22 @@ WRITE_LINE_MEMBER(metro_state::vmetal_es8712_irq)
m_maincpu->set_input_line(3, state);
}
-ADDRESS_MAP_START(metro_state::vmetal_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map)
- AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge
- AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1_P2") AM_WRITE8(vmetal_control_w, 0x00ff)
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3
- AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
- AM_RANGE(0x400002, 0x400003) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_WRITE8(es8712_reset_w, 0xff00)
- AM_RANGE(0x500000, 0x50000d) AM_DEVWRITE8("essnd", es8712_device, write, 0x00ff)
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
-ADDRESS_MAP_END
+void metro_state::vmetal_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map));
+ map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge
+ map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable
+ map(0x200000, 0x200001).portr("P1_P2");
+ map(0x200001, 0x200001).w(this, FUNC(metro_state::vmetal_control_w));
+ map(0x200002, 0x200003).portr("SYSTEM");
+ map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3
+ map(0x400001, 0x400001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x400003, 0x400003).w(m_oki, FUNC(okim6295_device::write));
+ map(0x500000, 0x500000).w(this, FUNC(metro_state::es8712_reset_w));
+ map(0x500000, 0x50000d).w(m_essnd, FUNC(es8712_device::write)).umask16(0x00ff);
+ map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored)
+}
/***************************************************************************
diff --git a/src/mame/drivers/mexico86.cpp b/src/mame/drivers/mexico86.cpp
index cf6099ee5bb..74250a8a540 100644
--- a/src/mame/drivers/mexico86.cpp
+++ b/src/mame/drivers/mexico86.cpp
@@ -80,25 +80,27 @@ READ8_MEMBER(mexico86_state::kiki_ym2203_r)
*
*************************************/
-ADDRESS_MAP_START(mexico86_state::mexico86_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* banked roms */
- AM_RANGE(0xc000, 0xe7ff) AM_RAM AM_SHARE("mainram") /* shared with sound cpu */
- AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_SHARE("protection_ram") /* shared with mcu */
- AM_RANGE(0xe900, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_WRITE(mexico86_bankswitch_w) /* program and gfx ROM banks */
- AM_RANGE(0xf008, 0xf008) AM_WRITE(mexico86_f008_w) /* cpu reset lines + other unknown stuff */
- AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN3")
- AM_RANGE(0xf018, 0xf018) AM_WRITENOP /* watchdog? */
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("subram") /* communication ram - to connect 4 players's subboard */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mexico86_state::mexico86_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xa7ff) AM_RAM AM_SHARE("mainram") /* shared with main */
- AM_RANGE(0xa800, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc001) AM_READ(kiki_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
-ADDRESS_MAP_END
+void mexico86_state::mexico86_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1"); /* banked roms */
+ map(0xc000, 0xe7ff).ram().share("mainram"); /* shared with sound cpu */
+ map(0xe800, 0xe8ff).ram().share("protection_ram"); /* shared with mcu */
+ map(0xe900, 0xefff).ram();
+ map(0xf000, 0xf000).w(this, FUNC(mexico86_state::mexico86_bankswitch_w)); /* program and gfx ROM banks */
+ map(0xf008, 0xf008).w(this, FUNC(mexico86_state::mexico86_f008_w)); /* cpu reset lines + other unknown stuff */
+ map(0xf010, 0xf010).portr("IN3");
+ map(0xf018, 0xf018).nopw(); /* watchdog? */
+ map(0xf800, 0xffff).ram().share("subram"); /* communication ram - to connect 4 players's subboard */
+}
+
+void mexico86_state::mexico86_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xa7ff).ram().share("mainram"); /* shared with main */
+ map(0xa800, 0xbfff).ram();
+ map(0xc000, 0xc001).r(this, FUNC(mexico86_state::kiki_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+}
WRITE8_MEMBER(mexico86_state::mexico86_sub_output_w)
{
@@ -108,16 +110,17 @@ WRITE8_MEMBER(mexico86_state::mexico86_sub_output_w)
/*---- --x- <unknown, always high, irq ack?>*/
}
-ADDRESS_MAP_START(mexico86_state::mexico86_sub_cpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM /* sub cpu ram */
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("subram") /* shared with main */
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN4")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN5")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN6")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("IN7")
- AM_RANGE(0xc004, 0xc004) AM_WRITE(mexico86_sub_output_w)
-ADDRESS_MAP_END
+void mexico86_state::mexico86_sub_cpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram(); /* sub cpu ram */
+ map(0x8000, 0x87ff).ram().share("subram"); /* shared with main */
+ map(0xc000, 0xc000).portr("IN4");
+ map(0xc001, 0xc001).portr("IN5");
+ map(0xc002, 0xc002).portr("IN6");
+ map(0xc003, 0xc003).portr("IN7");
+ map(0xc004, 0xc004).w(this, FUNC(mexico86_state::mexico86_sub_output_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/meyc8080.cpp b/src/mame/drivers/meyc8080.cpp
index 69d7e4b962e..f4137636dc9 100644
--- a/src/mame/drivers/meyc8080.cpp
+++ b/src/mame/drivers/meyc8080.cpp
@@ -311,22 +311,23 @@ WRITE8_MEMBER(meyc8080_state::meyc8080_dac_4_w)
*
*************************************/
-ADDRESS_MAP_START(meyc8080_state::meyc8080_map)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("vram0")
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("vram1")
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("vram2")
+void meyc8080_state::meyc8080_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0x3800, 0x3800).portr("IN0");
+ map(0x4000, 0x5fff).ram().share("vram0");
+ map(0x6000, 0x7fff).ram().share("vram1");
+ map(0x8000, 0x9fff).ram().share("vram2");
// AM_RANGE(0xa000, 0xa0ff) AM_RAM // unknown... filled with 00's at boot time or when entering the service mode.
- AM_RANGE(0xcd00, 0xcdff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("BSW") AM_WRITE(meyc8080_dac_1_w)
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("IN1") AM_WRITE(lights_1_w)
- AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2") AM_WRITE(lights_2_w)
- AM_RANGE(0xf008, 0xf008) AM_WRITE(counters_w)
- AM_RANGE(0xf00f, 0xf00f) AM_WRITE(meyc8080_dac_2_w)
- AM_RANGE(0xf0f0, 0xf0f0) AM_WRITE(meyc8080_dac_3_w)
- AM_RANGE(0xf0ff, 0xf0ff) AM_WRITE(meyc8080_dac_4_w)
-ADDRESS_MAP_END
+ map(0xcd00, 0xcdff).ram().share("nvram");
+ map(0xf000, 0xf000).portr("BSW").w(this, FUNC(meyc8080_state::meyc8080_dac_1_w));
+ map(0xf004, 0xf004).portr("IN1").w(this, FUNC(meyc8080_state::lights_1_w));
+ map(0xf006, 0xf006).portr("IN2").w(this, FUNC(meyc8080_state::lights_2_w));
+ map(0xf008, 0xf008).w(this, FUNC(meyc8080_state::counters_w));
+ map(0xf00f, 0xf00f).w(this, FUNC(meyc8080_state::meyc8080_dac_2_w));
+ map(0xf0f0, 0xf0f0).w(this, FUNC(meyc8080_state::meyc8080_dac_3_w));
+ map(0xf0ff, 0xf0ff).w(this, FUNC(meyc8080_state::meyc8080_dac_4_w));
+}
diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp
index f9552ee9e2f..7c5c0900fea 100644
--- a/src/mame/drivers/meyc8088.cpp
+++ b/src/mame/drivers/meyc8088.cpp
@@ -214,20 +214,21 @@ WRITE8_MEMBER(meyc8088_state::video5_flip_w)
}
-ADDRESS_MAP_START(meyc8088_state::meyc8088_map)
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x70000, 0x77fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xb0000, 0xb00ff) AM_DEVREADWRITE("i8155_2", i8155_device, memory_r, memory_w)
- AM_RANGE(0xb0800, 0xb0807) AM_DEVREADWRITE("i8155_2", i8155_device, io_r, io_w)
- AM_RANGE(0xb1000, 0xb10ff) AM_DEVREADWRITE("i8155_1", i8155_device, memory_r, memory_w)
- AM_RANGE(0xb1800, 0xb1807) AM_DEVREADWRITE("i8155_1", i8155_device, io_r, io_w)
- AM_RANGE(0xb2000, 0xb2000) AM_WRITE(drive_w)
- AM_RANGE(0xb3000, 0xb3000) AM_NOP // i8251A data (debug related, unpopulated on sold boards)
- AM_RANGE(0xb3800, 0xb3800) AM_NOP // "
- AM_RANGE(0xb4000, 0xb4000) AM_READWRITE(screen_flip_r, screen_flip_w)
- AM_RANGE(0xb5000, 0xb5000) AM_READWRITE(video5_flip_r, video5_flip_w)
- AM_RANGE(0xf8000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void meyc8088_state::meyc8088_map(address_map &map)
+{
+ map(0x00000, 0x007ff).ram().share("nvram");
+ map(0x70000, 0x77fff).ram().share("vram");
+ map(0xb0000, 0xb00ff).rw("i8155_2", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0xb0800, 0xb0807).rw("i8155_2", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xb1000, 0xb10ff).rw("i8155_1", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0xb1800, 0xb1807).rw("i8155_1", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xb2000, 0xb2000).w(this, FUNC(meyc8088_state::drive_w));
+ map(0xb3000, 0xb3000).noprw(); // i8251A data (debug related, unpopulated on sold boards)
+ map(0xb3800, 0xb3800).noprw(); // "
+ map(0xb4000, 0xb4000).rw(this, FUNC(meyc8088_state::screen_flip_r), FUNC(meyc8088_state::screen_flip_w));
+ map(0xb5000, 0xb5000).rw(this, FUNC(meyc8088_state::video5_flip_r), FUNC(meyc8088_state::video5_flip_w));
+ map(0xf8000, 0xfffff).rom();
+}
READ8_MEMBER(meyc8088_state::meyc8088_input_r)
diff --git a/src/mame/drivers/mfabfz.cpp b/src/mame/drivers/mfabfz.cpp
index 55622cc9664..5b9349674f9 100644
--- a/src/mame/drivers/mfabfz.cpp
+++ b/src/mame/drivers/mfabfz.cpp
@@ -66,27 +66,30 @@ private:
};
-ADDRESS_MAP_START(mfabfz_state::mfabfz_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mfabfz_state::mfabfz_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0xfe, 0xfe) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0xff, 0xff) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mfabfz_state::mfabfz85_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xfe, 0xfe) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0xff, 0xff) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void mfabfz_state::mfabfz_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom().region("roms", 0);
+ map(0x8000, 0xffff).ram();
+}
+
+void mfabfz_state::mfabfz_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xbe, 0xbe).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xbf, 0xbf).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xfe, 0xfe).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xff, 0xff).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
+
+void mfabfz_state::mfabfz85_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xfe, 0xfe).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xff, 0xff).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( mfabfz )
diff --git a/src/mame/drivers/mgames.cpp b/src/mame/drivers/mgames.cpp
index 1909f8fb10f..3410c103214 100644
--- a/src/mame/drivers/mgames.cpp
+++ b/src/mame/drivers/mgames.cpp
@@ -524,24 +524,25 @@ WRITE8_MEMBER(mgames_state::outport7_w)
*/
-ADDRESS_MAP_START(mgames_state::main_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
+void mgames_state::main_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
// AM_RANGE(0x0158, 0x0158) AM_WRITE (muxed_w)
- AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("nvram") /* NVRAM = 2x SCM5101E */
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("video") /* 4x MM2114N-3 */
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("SW1")
- AM_RANGE(0x8001, 0x8001) AM_READ(mixport_r) /* DIP switch bank 2 + a sort of watchdog */
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1")
- AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2")
- AM_RANGE(0x8000, 0x8000) AM_WRITE(outport0_w)
- AM_RANGE(0x8001, 0x8001) AM_WRITE(outport1_w)
- AM_RANGE(0x8002, 0x8002) AM_WRITE(outport2_w)
- AM_RANGE(0x8003, 0x8003) AM_WRITE(outport3_w)
- AM_RANGE(0x8004, 0x8004) AM_WRITE(outport4_w)
- AM_RANGE(0x8005, 0x8005) AM_WRITE(outport5_w)
- AM_RANGE(0x8006, 0x8006) AM_WRITE(outport6_w)
- AM_RANGE(0x8007, 0x8007) AM_WRITE(outport7_w)
-ADDRESS_MAP_END
+ map(0x3800, 0x38ff).ram().share("nvram"); /* NVRAM = 2x SCM5101E */
+ map(0x4000, 0x47ff).ram().share("video"); /* 4x MM2114N-3 */
+ map(0x8000, 0x8000).portr("SW1");
+ map(0x8001, 0x8001).r(this, FUNC(mgames_state::mixport_r)); /* DIP switch bank 2 + a sort of watchdog */
+ map(0x8002, 0x8002).portr("IN1");
+ map(0x8003, 0x8003).portr("IN2");
+ map(0x8000, 0x8000).w(this, FUNC(mgames_state::outport0_w));
+ map(0x8001, 0x8001).w(this, FUNC(mgames_state::outport1_w));
+ map(0x8002, 0x8002).w(this, FUNC(mgames_state::outport2_w));
+ map(0x8003, 0x8003).w(this, FUNC(mgames_state::outport3_w));
+ map(0x8004, 0x8004).w(this, FUNC(mgames_state::outport4_w));
+ map(0x8005, 0x8005).w(this, FUNC(mgames_state::outport5_w));
+ map(0x8006, 0x8006).w(this, FUNC(mgames_state::outport6_w));
+ map(0x8007, 0x8007).w(this, FUNC(mgames_state::outport7_w));
+}
static INPUT_PORTS_START( mgames )
diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp
index 36654e402dc..bb2fa0391ec 100644
--- a/src/mame/drivers/mgavegas.cpp
+++ b/src/mame/drivers/mgavegas.cpp
@@ -422,16 +422,17 @@ READ8_MEMBER(mgavegas_state::ay8910_b_r)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(mgavegas_state::mgavegas_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xa003) AM_READWRITE(r_a0,w_a0) // AY-3-8910
- AM_RANGE(0xc000, 0xc001) AM_WRITE(cso1_w) // /CSout1
- AM_RANGE(0xc400, 0xc401) AM_WRITE(cso2_w) // /CSout2
- AM_RANGE(0xc800, 0xc801) AM_READWRITE(csoki_r,csoki_w) // /CSoki
+void mgavegas_state::mgavegas_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram().share("nvram");
+ map(0xa000, 0xa003).rw(this, FUNC(mgavegas_state::r_a0), FUNC(mgavegas_state::w_a0)); // AY-3-8910
+ map(0xc000, 0xc001).w(this, FUNC(mgavegas_state::cso1_w)); // /CSout1
+ map(0xc400, 0xc401).w(this, FUNC(mgavegas_state::cso2_w)); // /CSout2
+ map(0xc800, 0xc801).rw(this, FUNC(mgavegas_state::csoki_r), FUNC(mgavegas_state::csoki_w)); // /CSoki
//AM_RANGE(0xcc00, 0xcc01) AM_READWRITE(cso3_r,cso3_w) // /CSout3 unused
//AM_RANGE(0xe000, 0xe003) AM_READWRITE(r_e0,w_e0) // /CSaux unused
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/mgolf.cpp b/src/mame/drivers/mgolf.cpp
index f6a475553cd..16a1e2a9277 100644
--- a/src/mame/drivers/mgolf.cpp
+++ b/src/mame/drivers/mgolf.cpp
@@ -230,34 +230,35 @@ WRITE8_MEMBER(mgolf_state::wram_w)
-ADDRESS_MAP_START(mgolf_state::cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
-
- AM_RANGE(0x0040, 0x0040) AM_READ_PORT("40")
- AM_RANGE(0x0041, 0x0041) AM_READ(dial_r)
- AM_RANGE(0x0060, 0x0060) AM_READ_PORT("60")
- AM_RANGE(0x0061, 0x0061) AM_READ(misc_r)
- AM_RANGE(0x0080, 0x00ff) AM_READ(wram_r)
- AM_RANGE(0x0180, 0x01ff) AM_READ(wram_r)
- AM_RANGE(0x0800, 0x0bff) AM_READONLY
-
- AM_RANGE(0x0000, 0x0009) AM_WRITENOP
- AM_RANGE(0x0024, 0x0024) AM_WRITENOP
- AM_RANGE(0x0028, 0x0028) AM_WRITENOP
- AM_RANGE(0x0042, 0x0042) AM_WRITENOP
- AM_RANGE(0x0044, 0x0044) AM_WRITENOP /* watchdog? */
- AM_RANGE(0x0046, 0x0046) AM_WRITENOP
- AM_RANGE(0x0060, 0x0060) AM_WRITENOP
- AM_RANGE(0x0061, 0x0061) AM_WRITENOP
- AM_RANGE(0x006a, 0x006a) AM_WRITENOP
- AM_RANGE(0x006c, 0x006c) AM_WRITENOP
- AM_RANGE(0x006d, 0x006d) AM_WRITENOP
- AM_RANGE(0x0080, 0x00ff) AM_WRITE(wram_w)
- AM_RANGE(0x0180, 0x01ff) AM_WRITE(wram_w)
- AM_RANGE(0x0800, 0x0bff) AM_WRITE(vram_w) AM_SHARE("video_ram")
-
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void mgolf_state::cpu_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+
+ map(0x0040, 0x0040).portr("40");
+ map(0x0041, 0x0041).r(this, FUNC(mgolf_state::dial_r));
+ map(0x0060, 0x0060).portr("60");
+ map(0x0061, 0x0061).r(this, FUNC(mgolf_state::misc_r));
+ map(0x0080, 0x00ff).r(this, FUNC(mgolf_state::wram_r));
+ map(0x0180, 0x01ff).r(this, FUNC(mgolf_state::wram_r));
+ map(0x0800, 0x0bff).readonly();
+
+ map(0x0000, 0x0009).nopw();
+ map(0x0024, 0x0024).nopw();
+ map(0x0028, 0x0028).nopw();
+ map(0x0042, 0x0042).nopw();
+ map(0x0044, 0x0044).nopw(); /* watchdog? */
+ map(0x0046, 0x0046).nopw();
+ map(0x0060, 0x0060).nopw();
+ map(0x0061, 0x0061).nopw();
+ map(0x006a, 0x006a).nopw();
+ map(0x006c, 0x006c).nopw();
+ map(0x006d, 0x006d).nopw();
+ map(0x0080, 0x00ff).w(this, FUNC(mgolf_state::wram_w));
+ map(0x0180, 0x01ff).w(this, FUNC(mgolf_state::wram_w));
+ map(0x0800, 0x0bff).w(this, FUNC(mgolf_state::vram_w)).share("video_ram");
+
+ map(0x2000, 0x3fff).rom();
+}
static INPUT_PORTS_START( mgolf )
diff --git a/src/mame/drivers/mhavoc.cpp b/src/mame/drivers/mhavoc.cpp
index 25cd53766e4..1d7c6160a90 100644
--- a/src/mame/drivers/mhavoc.cpp
+++ b/src/mame/drivers/mhavoc.cpp
@@ -277,28 +277,29 @@ WRITE8_MEMBER(mhavoc_state::dual_pokey_w)
*
*************************************/
-ADDRESS_MAP_START(mhavoc_state::alpha_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x07ff) AM_RAMBANK("bank1") AM_SHARE("zram0")
- AM_RANGE(0x0800, 0x09ff) AM_RAM
- AM_RANGE(0x0a00, 0x0fff) AM_RAMBANK("bank1") AM_SHARE("zram1")
- AM_RANGE(0x1000, 0x1000) AM_READ(mhavoc_gamma_r) /* Gamma Read Port */
- AM_RANGE(0x1200, 0x1200) AM_READ_PORT("IN0") AM_WRITENOP /* Alpha Input Port 0 */
- AM_RANGE(0x1400, 0x141f) AM_RAM AM_SHARE("colorram") /* ColorRAM */
- AM_RANGE(0x1600, 0x1600) AM_WRITE(mhavoc_out_0_w) /* Control Signals */
- AM_RANGE(0x1640, 0x1640) AM_DEVWRITE("avg", avg_mhavoc_device, go_w) /* Vector Generator GO */
- AM_RANGE(0x1680, 0x1680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* Watchdog Clear */
- AM_RANGE(0x16c0, 0x16c0) AM_DEVWRITE("avg", avg_mhavoc_device, reset_w) /* Vector Generator Reset */
- AM_RANGE(0x1700, 0x1700) AM_WRITE(mhavoc_alpha_irq_ack_w) /* IRQ ack */
- AM_RANGE(0x1740, 0x1740) AM_WRITE(mhavoc_rom_banksel_w) /* Program ROM Page Select */
- AM_RANGE(0x1780, 0x1780) AM_WRITE(mhavoc_ram_banksel_w) /* Program RAM Page Select */
- AM_RANGE(0x17c0, 0x17c0) AM_WRITE(mhavoc_gamma_w) /* Gamma Communication Write Port */
- AM_RANGE(0x1800, 0x1fff) AM_RAM /* Shared Beta Ram */
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") /* Paged Program ROM (32K) */
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("vectorram") AM_REGION("alpha", 0x4000) /* Vector Generator RAM */
- AM_RANGE(0x5000, 0x7fff) AM_ROM /* Vector ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* Program ROM (32K) */
-ADDRESS_MAP_END
+void mhavoc_state::alpha_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x07ff).bankrw("bank1").share("zram0");
+ map(0x0800, 0x09ff).ram();
+ map(0x0a00, 0x0fff).bankrw("bank1").share("zram1");
+ map(0x1000, 0x1000).r(this, FUNC(mhavoc_state::mhavoc_gamma_r)); /* Gamma Read Port */
+ map(0x1200, 0x1200).portr("IN0").nopw(); /* Alpha Input Port 0 */
+ map(0x1400, 0x141f).ram().share("colorram"); /* ColorRAM */
+ map(0x1600, 0x1600).w(this, FUNC(mhavoc_state::mhavoc_out_0_w)); /* Control Signals */
+ map(0x1640, 0x1640).w("avg", FUNC(avg_mhavoc_device::go_w)); /* Vector Generator GO */
+ map(0x1680, 0x1680).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog Clear */
+ map(0x16c0, 0x16c0).w("avg", FUNC(avg_mhavoc_device::reset_w)); /* Vector Generator Reset */
+ map(0x1700, 0x1700).w(this, FUNC(mhavoc_state::mhavoc_alpha_irq_ack_w)); /* IRQ ack */
+ map(0x1740, 0x1740).w(this, FUNC(mhavoc_state::mhavoc_rom_banksel_w)); /* Program ROM Page Select */
+ map(0x1780, 0x1780).w(this, FUNC(mhavoc_state::mhavoc_ram_banksel_w)); /* Program RAM Page Select */
+ map(0x17c0, 0x17c0).w(this, FUNC(mhavoc_state::mhavoc_gamma_w)); /* Gamma Communication Write Port */
+ map(0x1800, 0x1fff).ram(); /* Shared Beta Ram */
+ map(0x2000, 0x3fff).bankr("bank2"); /* Paged Program ROM (32K) */
+ map(0x4000, 0x4fff).ram().share("vectorram").region("alpha", 0x4000); /* Vector Generator RAM */
+ map(0x5000, 0x7fff).rom(); /* Vector ROM */
+ map(0x8000, 0xffff).rom(); /* Program ROM (32K) */
+}
@@ -329,20 +330,21 @@ a15 a14 a13 a12 a11 a10 a09 a08 a07 a06 a05 a04 a03 a02 a01 a00
1 x * * * * * * * * * * * * * * R ROM 27128 @9S
*/
-ADDRESS_MAP_START(mhavoc_state::gamma_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) /* Program RAM (2K) */
- AM_RANGE(0x2000, 0x203f) AM_READWRITE(quad_pokeyn_r, quad_pokeyn_w) AM_MIRROR(0x07C0) /* Quad Pokey read/write */
- AM_RANGE(0x2800, 0x2800) AM_READ_PORT("IN1") AM_MIRROR(0x07ff) /* Gamma Input Port */
- AM_RANGE(0x3000, 0x3000) AM_READ(mhavoc_alpha_r) AM_MIRROR(0x07ff) /* Alpha Comm. Read Port */
- AM_RANGE(0x3800, 0x3803) AM_READ_PORT("DIAL") AM_MIRROR(0x07fc) /* Roller Controller Input */
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW2") AM_WRITE(mhavoc_gamma_irq_ack_w) AM_MIRROR(0x07ff) /* DSW at 8S, IRQ Acknowledge */
- AM_RANGE(0x4800, 0x4800) AM_WRITE(mhavoc_out_1_w) AM_MIRROR(0x07ff) /* Coin Counters */
- AM_RANGE(0x5000, 0x5000) AM_WRITE(mhavoc_alpha_w) AM_MIRROR(0x07ff) /* Alpha Comm. Write Port */
+void mhavoc_state::gamma_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().mirror(0x1800); /* Program RAM (2K) */
+ map(0x2000, 0x203f).rw(this, FUNC(mhavoc_state::quad_pokeyn_r), FUNC(mhavoc_state::quad_pokeyn_w)).mirror(0x07C0); /* Quad Pokey read/write */
+ map(0x2800, 0x2800).portr("IN1").mirror(0x07ff); /* Gamma Input Port */
+ map(0x3000, 0x3000).r(this, FUNC(mhavoc_state::mhavoc_alpha_r)).mirror(0x07ff); /* Alpha Comm. Read Port */
+ map(0x3800, 0x3803).portr("DIAL").mirror(0x07fc); /* Roller Controller Input */
+ map(0x4000, 0x4000).portr("DSW2").w(this, FUNC(mhavoc_state::mhavoc_gamma_irq_ack_w)).mirror(0x07ff); /* DSW at 8S, IRQ Acknowledge */
+ map(0x4800, 0x4800).w(this, FUNC(mhavoc_state::mhavoc_out_1_w)).mirror(0x07ff); /* Coin Counters */
+ map(0x5000, 0x5000).w(this, FUNC(mhavoc_state::mhavoc_alpha_w)).mirror(0x07ff); /* Alpha Comm. Write Port */
//AM_RANGE(0x5800, 0x5800) AM_WRITE(mhavocrv_speech_data_w) AM_MIRROR(0x06ff) /* TMS5220 data write */
//AM_RANGE(0x5900, 0x5900) AM_WRITE(mhavocrv_speech_strobe_w) AM_MIRROR(0x06ff) /* TMS5220 /WS strobe write */
- AM_RANGE(0x6000, 0x61ff) AM_RAM AM_SHARE("nvram") AM_MIRROR(0x1e00) /* EEROM */
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_MIRROR(0x4000) /* Program ROM (16K) */
-ADDRESS_MAP_END
+ map(0x6000, 0x61ff).ram().share("nvram").mirror(0x1e00); /* EEROM */
+ map(0x8000, 0xbfff).rom().mirror(0x4000); /* Program ROM (16K) */
+}
@@ -353,29 +355,30 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mhavoc_state::alphaone_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x07ff) AM_RAMBANK("bank1") AM_SHARE("zram0")
- AM_RANGE(0x0800, 0x09ff) AM_RAM
- AM_RANGE(0x0a00, 0x0fff) AM_RAMBANK("bank1") AM_SHARE("zram1")
- AM_RANGE(0x1020, 0x103f) AM_READWRITE(dual_pokey_r, dual_pokey_w)
- AM_RANGE(0x1040, 0x1040) AM_READ_PORT("IN0") AM_WRITENOP /* Alpha Input Port 0 */
- AM_RANGE(0x1060, 0x1060) AM_READ_PORT("IN1") /* Gamma Input Port */
- AM_RANGE(0x1080, 0x1080) AM_READ_PORT("DIAL") /* Roller Controller Input*/
- AM_RANGE(0x10a0, 0x10a0) AM_WRITE(alphaone_out_0_w) /* Control Signals */
- AM_RANGE(0x10a4, 0x10a4) AM_DEVWRITE("avg", avg_mhavoc_device, go_w) /* Vector Generator GO */
- AM_RANGE(0x10a8, 0x10a8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* Watchdog Clear */
- AM_RANGE(0x10ac, 0x10ac) AM_DEVWRITE("avg", avg_mhavoc_device, reset_w) /* Vector Generator Reset */
- AM_RANGE(0x10b0, 0x10b0) AM_WRITE(mhavoc_alpha_irq_ack_w) /* IRQ ack */
- AM_RANGE(0x10b4, 0x10b4) AM_WRITE(mhavoc_rom_banksel_w)
- AM_RANGE(0x10b8, 0x10b8) AM_WRITE(mhavoc_ram_banksel_w)
- AM_RANGE(0x10e0, 0x10ff) AM_WRITEONLY AM_SHARE("colorram") /* ColorRAM */
- AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") /* EEROM */
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") /* Paged Program ROM (32K) */
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("vectorram") AM_REGION("alpha", 0x4000) /* Vector Generator RAM */
- AM_RANGE(0x5000, 0x7fff) AM_ROM /* Vector ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* Program ROM (32K) */
-ADDRESS_MAP_END
+void mhavoc_state::alphaone_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x07ff).bankrw("bank1").share("zram0");
+ map(0x0800, 0x09ff).ram();
+ map(0x0a00, 0x0fff).bankrw("bank1").share("zram1");
+ map(0x1020, 0x103f).rw(this, FUNC(mhavoc_state::dual_pokey_r), FUNC(mhavoc_state::dual_pokey_w));
+ map(0x1040, 0x1040).portr("IN0").nopw(); /* Alpha Input Port 0 */
+ map(0x1060, 0x1060).portr("IN1"); /* Gamma Input Port */
+ map(0x1080, 0x1080).portr("DIAL"); /* Roller Controller Input*/
+ map(0x10a0, 0x10a0).w(this, FUNC(mhavoc_state::alphaone_out_0_w)); /* Control Signals */
+ map(0x10a4, 0x10a4).w("avg", FUNC(avg_mhavoc_device::go_w)); /* Vector Generator GO */
+ map(0x10a8, 0x10a8).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog Clear */
+ map(0x10ac, 0x10ac).w("avg", FUNC(avg_mhavoc_device::reset_w)); /* Vector Generator Reset */
+ map(0x10b0, 0x10b0).w(this, FUNC(mhavoc_state::mhavoc_alpha_irq_ack_w)); /* IRQ ack */
+ map(0x10b4, 0x10b4).w(this, FUNC(mhavoc_state::mhavoc_rom_banksel_w));
+ map(0x10b8, 0x10b8).w(this, FUNC(mhavoc_state::mhavoc_ram_banksel_w));
+ map(0x10e0, 0x10ff).writeonly().share("colorram"); /* ColorRAM */
+ map(0x1800, 0x18ff).ram().share("nvram"); /* EEROM */
+ map(0x2000, 0x3fff).bankr("bank2"); /* Paged Program ROM (32K) */
+ map(0x4000, 0x4fff).ram().share("vectorram").region("alpha", 0x4000); /* Vector Generator RAM */
+ map(0x5000, 0x7fff).rom(); /* Vector ROM */
+ map(0x8000, 0xffff).rom(); /* Program ROM (32K) */
+}
diff --git a/src/mame/drivers/mice.cpp b/src/mame/drivers/mice.cpp
index d4cb1ba9ceb..53ccec98d62 100644
--- a/src/mame/drivers/mice.cpp
+++ b/src/mame/drivers/mice.cpp
@@ -56,44 +56,48 @@ private:
};
-ADDRESS_MAP_START(mice_state::mice_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("mcp", 0)
- AM_RANGE(0x4400, 0x47ff) AM_RAM //(U13)
- AM_RANGE(0x6000, 0x60ff) AM_DEVREADWRITE("rpt", i8155_device, memory_r, memory_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mice_state::mice_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("rpt", i8155_device, io_r, io_w)
- AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mice_state::mice2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("cep", 0)
- AM_RANGE(0x9000, 0x90ff) AM_DEVREADWRITE("rpt", i8155_device, memory_r, memory_w)
- AM_RANGE(0xb000, 0xb7ff) AM_RAM
- AM_RANGE(0xe800, 0xe8ff) AM_DEVREADWRITE("rtt8155", i8155_device, memory_r, memory_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mice_state::mice2_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x90, 0x97) AM_DEVREADWRITE("rpt", i8155_device, io_r, io_w)
- AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("rttppi1", i8255_device, read, write)
- AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("rttppi2", i8255_device, read, write)
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("rttppi3", i8255_device, read, write)
- AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("rttppi4", i8255_device, read, write)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("rttppi5", i8255_device, read, write)
- AM_RANGE(0xe8, 0xed) AM_DEVREADWRITE("rtt8155", i8155_device, io_r, io_w)
-ADDRESS_MAP_END
+void mice_state::mice_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom().region("mcp", 0);
+ map(0x4400, 0x47ff).ram(); //(U13)
+ map(0x6000, 0x60ff).rw("rpt", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+}
+
+void mice_state::mice_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x50, 0x50).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x51, 0x51).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x60, 0x67).rw("rpt", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0x70, 0x73).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void mice_state::mice2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom().region("cep", 0);
+ map(0x9000, 0x90ff).rw("rpt", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0xb000, 0xb7ff).ram();
+ map(0xe800, 0xe8ff).rw("rtt8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+}
+
+void mice_state::mice2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x90, 0x97).rw("rpt", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xa0, 0xa3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc0, 0xc3).rw("rttppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc8, 0xcb).rw("rttppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xd0, 0xd3).rw("rttppi3", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xd8, 0xdb).rw("rttppi4", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe0, 0xe3).rw("rttppi5", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe8, 0xed).rw("rtt8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+}
/* Input ports */
static INPUT_PORTS_START( mice )
diff --git a/src/mame/drivers/micral.cpp b/src/mame/drivers/micral.cpp
index ef68cce2227..d0641c1540b 100644
--- a/src/mame/drivers/micral.cpp
+++ b/src/mame/drivers/micral.cpp
@@ -147,43 +147,46 @@ WRITE8_MEMBER( micral_state::video_w )
}
-ADDRESS_MAP_START(micral_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfeff) AM_ROM
- AM_RANGE(0xff00, 0xffef) AM_RAM
- AM_RANGE(0xfff6, 0xfff7) // AM_WRITENOP // unknown ports
- AM_RANGE(0xfff8, 0xfff9) AM_READWRITE(video_r, video_w)
- AM_RANGE(0xfffa, 0xfffa) AM_READ(keyin_r)
- AM_RANGE(0xfffb, 0xfffb) AM_READ(unk_r)
- AM_RANGE(0xfffc, 0xfffc) AM_READ(status_r)
- AM_RANGE(0xfffd, 0xffff) // more unknown ports
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(micral_state::mem_kbd)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_RAM // byte returned to main cpu after receiving irq
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("X0")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("X1")
- AM_RANGE(0x8004, 0x8004) AM_READ_PORT("X2")
- AM_RANGE(0x8008, 0x8008) AM_READ_PORT("X3")
- AM_RANGE(0x8010, 0x8010) AM_READ_PORT("X4")
- AM_RANGE(0x8020, 0x8020) AM_READ_PORT("X5")
- AM_RANGE(0x8040, 0x8040) AM_READ_PORT("X6")
- AM_RANGE(0x8080, 0x8080) AM_READ_PORT("X7")
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("X8")
- AM_RANGE(0x8200, 0x8200) AM_READ_PORT("X9")
- AM_RANGE(0x8400, 0x8400) AM_READ_PORT("X10")
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("X11")
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("X12")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("X13")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(micral_state::io_kbd)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("X14")
-ADDRESS_MAP_END
+void micral_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xf7ff).ram();
+ map(0xf800, 0xfeff).rom();
+ map(0xff00, 0xffef).ram();
+ map(0xfff6, 0xfff7); // AM_WRITENOP // unknown ports
+ map(0xfff8, 0xfff9).rw(this, FUNC(micral_state::video_r), FUNC(micral_state::video_w));
+ map(0xfffa, 0xfffa).r(this, FUNC(micral_state::keyin_r));
+ map(0xfffb, 0xfffb).r(this, FUNC(micral_state::unk_r));
+ map(0xfffc, 0xfffc).r(this, FUNC(micral_state::status_r));
+ map(0xfffd, 0xffff); // more unknown ports
+}
+
+void micral_state::mem_kbd(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x8000, 0x8000).ram(); // byte returned to main cpu after receiving irq
+ map(0x8001, 0x8001).portr("X0");
+ map(0x8002, 0x8002).portr("X1");
+ map(0x8004, 0x8004).portr("X2");
+ map(0x8008, 0x8008).portr("X3");
+ map(0x8010, 0x8010).portr("X4");
+ map(0x8020, 0x8020).portr("X5");
+ map(0x8040, 0x8040).portr("X6");
+ map(0x8080, 0x8080).portr("X7");
+ map(0x8100, 0x8100).portr("X8");
+ map(0x8200, 0x8200).portr("X9");
+ map(0x8400, 0x8400).portr("X10");
+ map(0x8800, 0x8800).portr("X11");
+ map(0x9000, 0x9000).portr("X12");
+ map(0xa000, 0xa000).portr("X13");
+}
+
+void micral_state::io_kbd(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("X14");
+}
/* Input ports */
static INPUT_PORTS_START( micral )
diff --git a/src/mame/drivers/micro20.cpp b/src/mame/drivers/micro20.cpp
index 823857d315f..cbe6ea18c5e 100644
--- a/src/mame/drivers/micro20.cpp
+++ b/src/mame/drivers/micro20.cpp
@@ -140,18 +140,19 @@ READ32_MEMBER(micro20_state::buserror_r)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(micro20_state::micro20_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x00200000, 0x002fffff) AM_READ(buserror_r)
- AM_RANGE(0x00800000, 0x0083ffff) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, status_r, cmd_w, 0xff000000)
- AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, track_r, track_w, 0x00ff0000)
- AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, sector_r, sector_w, 0x0000ff00)
- AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, data_r, data_w, 0x000000ff)
- AM_RANGE(0xffff8080, 0xffff808f) AM_DEVREADWRITE8(DUART_A_TAG, mc68681_device, read, write, 0xffffffff)
- AM_RANGE(0xffff80a0, 0xffff80af) AM_DEVREADWRITE8(DUART_B_TAG, mc68681_device, read, write, 0xffffffff)
- AM_RANGE(0xffff80c0, 0xffff80df) AM_DEVREADWRITE8(PIT_TAG, pit68230_device, read, write, 0xffffffff)
-ADDRESS_MAP_END
+void micro20_state::micro20_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("mainram");
+ map(0x00200000, 0x002fffff).r(this, FUNC(micro20_state::buserror_r));
+ map(0x00800000, 0x0083ffff).rom().region("bootrom", 0);
+ map(0xffff8000, 0xffff8000).rw(FDC_TAG, FUNC(wd1772_device::status_r), FUNC(wd1772_device::cmd_w));
+ map(0xffff8001, 0xffff8001).rw(FDC_TAG, FUNC(wd1772_device::track_r), FUNC(wd1772_device::track_w));
+ map(0xffff8002, 0xffff8002).rw(FDC_TAG, FUNC(wd1772_device::sector_r), FUNC(wd1772_device::sector_w));
+ map(0xffff8003, 0xffff8003).rw(FDC_TAG, FUNC(wd1772_device::data_r), FUNC(wd1772_device::data_w));
+ map(0xffff8080, 0xffff808f).rw(DUART_A_TAG, FUNC(mc68681_device::read), FUNC(mc68681_device::write));
+ map(0xffff80a0, 0xffff80af).rw(DUART_B_TAG, FUNC(mc68681_device::read), FUNC(mc68681_device::write));
+ map(0xffff80c0, 0xffff80df).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write));
+}
MACHINE_CONFIG_START(micro20_state::micro20)
/* basic machine hardware */
diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp
index 84f3353c286..c76c1e6dd89 100644
--- a/src/mame/drivers/micro3d.cpp
+++ b/src/mame/drivers/micro3d.cpp
@@ -204,22 +204,23 @@ INPUT_PORTS_END
*
*************************************/
-ADDRESS_MAP_START(micro3d_state::hostmem)
- AM_RANGE(0x000000, 0x143fff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x900000, 0x900001) AM_WRITE(host_drmath_int_w)
- AM_RANGE(0x920000, 0x920001) AM_READ_PORT("INPUTS_C_D")
- AM_RANGE(0x940000, 0x940001) AM_READ_PORT("INPUTS_A_B")
- AM_RANGE(0x960000, 0x960001) AM_WRITE(micro3d_reset_w)
- AM_RANGE(0x980000, 0x980001) AM_DEVREADWRITE8("adc", adc0844_device, read, write, 0x00ff)
- AM_RANGE(0x9a0000, 0x9a0007) AM_DEVREADWRITE("vgb", tms34010_device, host_r, host_w)
- AM_RANGE(0x9c0000, 0x9c0001) AM_NOP /* Lamps */
- AM_RANGE(0x9e0000, 0x9e002f) AM_DEVREADWRITE8("mfp", mc68901_device, read, write, 0xff00)
- AM_RANGE(0xa00000, 0xa0003f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0xff00)
- AM_RANGE(0xa20000, 0xa20001) AM_READ(micro3d_encoder_h_r)
- AM_RANGE(0xa40002, 0xa40003) AM_READ(micro3d_encoder_l_r)
-ADDRESS_MAP_END
+void micro3d_state::hostmem(address_map &map)
+{
+ map(0x000000, 0x143fff).rom();
+ map(0x200000, 0x20ffff).ram().share("nvram");
+ map(0x800000, 0x83ffff).ram().share("shared_ram");
+ map(0x900000, 0x900001).w(this, FUNC(micro3d_state::host_drmath_int_w));
+ map(0x920000, 0x920001).portr("INPUTS_C_D");
+ map(0x940000, 0x940001).portr("INPUTS_A_B");
+ map(0x960000, 0x960001).w(this, FUNC(micro3d_state::micro3d_reset_w));
+ map(0x980001, 0x980001).rw("adc", FUNC(adc0844_device::read), FUNC(adc0844_device::write));
+ map(0x9a0000, 0x9a0007).rw(m_vgb, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w));
+ map(0x9c0000, 0x9c0001).noprw(); /* Lamps */
+ map(0x9e0000, 0x9e002f).rw("mfp", FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0xff00);
+ map(0xa00000, 0xa0003f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00);
+ map(0xa20000, 0xa20001).r(this, FUNC(micro3d_state::micro3d_encoder_h_r));
+ map(0xa40002, 0xa40003).r(this, FUNC(micro3d_state::micro3d_encoder_l_r));
+}
/*************************************
@@ -228,20 +229,21 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(micro3d_state::vgbmem)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("sprite_vram")
- AM_RANGE(0x00800000, 0x00bfffff) AM_RAM
- AM_RANGE(0x00c00000, 0x00c0000f) AM_READ_PORT("VGB_SW")
- AM_RANGE(0x00e00000, 0x00e0000f) AM_WRITE(micro3d_xfer3dk_w)
- AM_RANGE(0x02000000, 0x0200ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // clut
- AM_RANGE(0x02600000, 0x0260000f) AM_WRITE(micro3d_creg_w)
- AM_RANGE(0x02c00000, 0x02c0003f) AM_READ8(vgb_uart_r, 0x00ff)
- AM_RANGE(0x02e00000, 0x02e0003f) AM_WRITE8(vgb_uart_w, 0x00ff)
- AM_RANGE(0x03800000, 0x03dfffff) AM_ROM AM_REGION("tms_gfx", 0)
- AM_RANGE(0x03e00000, 0x03ffffff) AM_ROM AM_REGION("tms34010", 0)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("vgb", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("tms34010", 0)
-ADDRESS_MAP_END
+void micro3d_state::vgbmem(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram().share("sprite_vram");
+ map(0x00800000, 0x00bfffff).ram();
+ map(0x00c00000, 0x00c0000f).portr("VGB_SW");
+ map(0x00e00000, 0x00e0000f).w(this, FUNC(micro3d_state::micro3d_xfer3dk_w));
+ map(0x02000000, 0x0200ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // clut
+ map(0x02600000, 0x0260000f).w(this, FUNC(micro3d_state::micro3d_creg_w));
+ map(0x02c00000, 0x02c0003f).r(this, FUNC(micro3d_state::vgb_uart_r)).umask16(0x00ff);
+ map(0x02e00000, 0x02e0003f).w(this, 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);
+}
/*************************************
@@ -250,24 +252,26 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(micro3d_state::drmath_prg)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(micro3d_state::drmath_data)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("drmath", 0)
- AM_RANGE(0x00800000, 0x0083ffff) AM_READWRITE(micro3d_shared_r, micro3d_shared_w)
- AM_RANGE(0x00400000, 0x004fffff) AM_RAM
- AM_RANGE(0x00500000, 0x005fffff) AM_RAM
- AM_RANGE(0x00a00000, 0x00a00003) AM_WRITE(drmath_int_w)
- AM_RANGE(0x01000000, 0x01000003) AM_WRITE(micro3d_mac1_w)
- AM_RANGE(0x01000004, 0x01000007) AM_READWRITE(micro3d_mac2_r, micro3d_mac2_w)
- AM_RANGE(0x01200000, 0x01203fff) AM_RAM AM_SHARE("mac_sram")
- AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(micro3d_pipe_r, micro3d_fifo_w)
- AM_RANGE(0x01600000, 0x01600003) AM_WRITE(drmath_intr2_ack)
- AM_RANGE(0x01800000, 0x01800003) AM_WRITE(micro3d_alt_fifo_w)
- AM_RANGE(0x03fffff0, 0x03fffff7) AM_DEVREADWRITE8("scc", z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0x000000ff)
-ADDRESS_MAP_END
+void micro3d_state::drmath_prg(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom();
+}
+
+void micro3d_state::drmath_data(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom().region("drmath", 0);
+ map(0x00800000, 0x0083ffff).rw(this, FUNC(micro3d_state::micro3d_shared_r), FUNC(micro3d_state::micro3d_shared_w));
+ map(0x00400000, 0x004fffff).ram();
+ map(0x00500000, 0x005fffff).ram();
+ map(0x00a00000, 0x00a00003).w(this, FUNC(micro3d_state::drmath_int_w));
+ map(0x01000000, 0x01000003).w(this, FUNC(micro3d_state::micro3d_mac1_w));
+ map(0x01000004, 0x01000007).rw(this, FUNC(micro3d_state::micro3d_mac2_r), FUNC(micro3d_state::micro3d_mac2_w));
+ map(0x01200000, 0x01203fff).ram().share("mac_sram");
+ map(0x01400000, 0x01400003).rw(this, FUNC(micro3d_state::micro3d_pipe_r), FUNC(micro3d_state::micro3d_fifo_w));
+ map(0x01600000, 0x01600003).w(this, FUNC(micro3d_state::drmath_intr2_ack));
+ map(0x01800000, 0x01800003).w(this, FUNC(micro3d_state::micro3d_alt_fifo_w));
+ map(0x03fffff0, 0x03fffff7).rw("scc", FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff);
+}
/*************************************
*
@@ -275,17 +279,19 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(micro3d_state::soundmem_prg)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(micro3d_state::soundmem_io)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0xfd00, 0xfd01) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(micro3d_upd7759_w)
- AM_RANGE(0xff00, 0xff00) AM_WRITE(micro3d_snd_dac_a)
- AM_RANGE(0xff01, 0xff01) AM_WRITE(micro3d_snd_dac_b)
-ADDRESS_MAP_END
+void micro3d_state::soundmem_prg(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
+
+void micro3d_state::soundmem_io(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0xfd00, 0xfd01).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfe00, 0xfe00).w(this, FUNC(micro3d_state::micro3d_upd7759_w));
+ map(0xff00, 0xff00).w(this, FUNC(micro3d_state::micro3d_snd_dac_a));
+ map(0xff01, 0xff01).w(this, FUNC(micro3d_state::micro3d_snd_dac_b));
+}
/*************************************
diff --git a/src/mame/drivers/microdec.cpp b/src/mame/drivers/microdec.cpp
index ee5ebf4c6e1..46c9e4ec955 100644
--- a/src/mame/drivers/microdec.cpp
+++ b/src/mame/drivers/microdec.cpp
@@ -122,24 +122,26 @@ WRITE8_MEMBER( microdec_state::portf8_w )
m_floppy->mon_w(0);
}
-ADDRESS_MAP_START(microdec_state::microdec_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE( 0x1000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(microdec_state::microdec_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf5, 0xf5) AM_READ(portf5_r)
- AM_RANGE(0xf6, 0xf6) AM_READWRITE(portf6_r,portf6_w)
- AM_RANGE(0xf7, 0xf7) AM_READWRITE(portf7_r,portf7_w)
- AM_RANGE(0xf8, 0xf8) AM_WRITE(portf8_w)
- AM_RANGE(0xfa, 0xfb) AM_DEVICE("fdc", upd765a_device, map)
- AM_RANGE(0xfc, 0xfc) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0xfd, 0xfd) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0xfe, 0xfe) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0xff, 0xff) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
+void microdec_state::microdec_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0xffff).ram();
+}
+
+void microdec_state::microdec_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf5, 0xf5).r(this, FUNC(microdec_state::portf5_r));
+ map(0xf6, 0xf6).rw(this, FUNC(microdec_state::portf6_r), FUNC(microdec_state::portf6_w));
+ map(0xf7, 0xf7).rw(this, FUNC(microdec_state::portf7_r), FUNC(microdec_state::portf7_w));
+ map(0xf8, 0xf8).w(this, FUNC(microdec_state::portf8_w));
+ map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map));
+ map(0xfc, 0xfc).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xfd, 0xfd).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xfe, 0xfe).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xff, 0xff).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// AM_RANGE(0xf0, 0xf3) 8253 PIT (md3 only) used as a baud rate generator for serial ports
// AM_RANGE(0xf4, 0xf4) Centronics data
// AM_RANGE(0xf5, 0xf5) motor check (md1/2)
@@ -150,7 +152,7 @@ ADDRESS_MAP_START(microdec_state::microdec_io)
// AM_RANGE(0xfa, 0xfb) uPD765C fdc FA=status; FB=data
// AM_RANGE(0xfc, 0xfd) Serial Port 1 (terminal) FC=data FD=status
// AM_RANGE(0xfe, 0xff) Serial Port 2 (printer) FE=data FF=status
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( microdec )
diff --git a/src/mame/drivers/microkit.cpp b/src/mame/drivers/microkit.cpp
index fe216a8d688..c5b7b6c27f9 100644
--- a/src/mame/drivers/microkit.cpp
+++ b/src/mame/drivers/microkit.cpp
@@ -65,15 +65,17 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-ADDRESS_MAP_START(microkit_state::microkit_mem)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ram_r,ram_w)
- AM_RANGE(0x8000, 0x81ff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8200, 0x83ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(microkit_state::microkit_io)
- AM_RANGE(0x07, 0x07) AM_WRITENOP // writes a lots of zeros here
-ADDRESS_MAP_END
+void microkit_state::microkit_mem(address_map &map)
+{
+ map(0x0000, 0x0000).rw(this, FUNC(microkit_state::ram_r), FUNC(microkit_state::ram_w));
+ map(0x8000, 0x81ff).rom().region("maincpu", 0);
+ map(0x8200, 0x83ff).ram();
+}
+
+void microkit_state::microkit_io(address_map &map)
+{
+ map(0x07, 0x07).nopw(); // writes a lots of zeros here
+}
static INPUT_PORTS_START( microkit )
INPUT_PORTS_END
diff --git a/src/mame/drivers/micronic.cpp b/src/mame/drivers/micronic.cpp
index fd740d694ae..29c66ab1e3a 100644
--- a/src/mame/drivers/micronic.cpp
+++ b/src/mame/drivers/micronic.cpp
@@ -218,37 +218,39 @@ WRITE8_MEMBER( micronic_state::rtc_data_w )
Machine
***************************************************************************/
-ADDRESS_MAP_START(micronic_state::micronic_mem)
- AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram_base")
-ADDRESS_MAP_END
+void micronic_state::micronic_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xffff).ram().share("ram_base");
+}
-ADDRESS_MAP_START(micronic_state::micronic_io)
- ADDRESS_MAP_GLOBAL_MASK (0xff)
+void micronic_state::micronic_io(address_map &map)
+{
+ map.global_mask(0xff);
/* keypad */
- AM_RANGE(0x00, 0x00) AM_READ(keypad_r)
- AM_RANGE(0x02, 0x02) AM_WRITE(kp_matrix_w)
+ map(0x00, 0x00).r(this, FUNC(micronic_state::keypad_r));
+ map(0x02, 0x02).w(this, FUNC(micronic_state::kp_matrix_w));
/* hd61830 */
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, data_r, data_w)
- AM_RANGE(0x23, 0x23) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, status_r, control_w)
+ map(0x03, 0x03).rw(m_lcdc, FUNC(hd61830_device::data_r), FUNC(hd61830_device::data_w));
+ map(0x23, 0x23).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w));
/* rtc-146818 */
- AM_RANGE(0x08, 0x08) AM_WRITE(rtc_address_w)
- AM_RANGE(0x28, 0x28) AM_READWRITE(rtc_data_r, rtc_data_w)
+ map(0x08, 0x08).w(this, FUNC(micronic_state::rtc_address_w));
+ map(0x28, 0x28).rw(this, FUNC(micronic_state::rtc_data_r), FUNC(micronic_state::rtc_data_w));
/* sound */
- AM_RANGE(0x2b, 0x2b) AM_WRITE(beep_w)
+ map(0x2b, 0x2b).w(this, FUNC(micronic_state::beep_w));
/* basic machine */
- AM_RANGE(0x05, 0x05) AM_READ(irq_flag_r)
- AM_RANGE(0x2c, 0x2c) AM_WRITE(port_2c_w)
- AM_RANGE(0x47, 0x47) AM_WRITE(bank_select_w)
- AM_RANGE(0x46, 0x46) AM_WRITE(lcd_contrast_w)
- AM_RANGE(0x48, 0x48) AM_WRITE(status_flag_w)
- AM_RANGE(0x49, 0x49) AM_READ(status_flag_r)
-ADDRESS_MAP_END
+ map(0x05, 0x05).r(this, FUNC(micronic_state::irq_flag_r));
+ map(0x2c, 0x2c).w(this, FUNC(micronic_state::port_2c_w));
+ map(0x47, 0x47).w(this, FUNC(micronic_state::bank_select_w));
+ map(0x46, 0x46).w(this, FUNC(micronic_state::lcd_contrast_w));
+ map(0x48, 0x48).w(this, FUNC(micronic_state::status_flag_w));
+ map(0x49, 0x49).r(this, FUNC(micronic_state::status_flag_r));
+}
/* Input ports */
static INPUT_PORTS_START( micronic )
diff --git a/src/mame/drivers/micropin.cpp b/src/mame/drivers/micropin.cpp
index c4891b73a1d..673a5981a82 100644
--- a/src/mame/drivers/micropin.cpp
+++ b/src/mame/drivers/micropin.cpp
@@ -75,39 +75,42 @@ private:
};
-ADDRESS_MAP_START(micropin_state::micropin_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("nvram") // 4x 6561 RAM
- AM_RANGE(0x4000, 0x4005) AM_WRITE(sw_w)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("X1")
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("X2")
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("X3")
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("X4")
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("X5")
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia50", pia6821_device, read, write)
- AM_RANGE(0x5100, 0x5103) AM_READWRITE(pia51_r,pia51_w)
- AM_RANGE(0x5200, 0x5200) AM_WRITE(sol_w);
- AM_RANGE(0x5202, 0x5202) AM_WRITE(lamp_w);
- AM_RANGE(0x5203, 0x5203) AM_WRITENOP
- AM_RANGE(0x6400, 0x7fff) AM_ROM AM_REGION("v1cpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(micropin_state::pentacup2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(micropin_state::pentacup2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0e) AM_WRITE(sw_w)
- AM_RANGE(0x0f, 0x0f) AM_WRITE(lamp_w)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("X0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("X1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("X2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("X3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("X4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("X5")
-ADDRESS_MAP_END
+void micropin_state::micropin_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram().share("nvram"); // 4x 6561 RAM
+ map(0x4000, 0x4005).w(this, FUNC(micropin_state::sw_w));
+ map(0x4000, 0x4000).portr("X1");
+ map(0x4001, 0x4001).portr("X2");
+ map(0x4002, 0x4002).portr("X3");
+ map(0x4003, 0x4003).portr("X4");
+ map(0x4004, 0x4004).portr("X5");
+ map(0x5000, 0x5003).rw("pia50", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x5100, 0x5103).rw(this, FUNC(micropin_state::pia51_r), FUNC(micropin_state::pia51_w));
+ map(0x5200, 0x5200).w(this, FUNC(micropin_state::sol_w));
+ map(0x5202, 0x5202).w(this, FUNC(micropin_state::lamp_w));
+ map(0x5203, 0x5203).nopw();
+ map(0x6400, 0x7fff).rom().region("v1cpu", 0);
+}
+
+void micropin_state::pentacup2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+}
+
+void micropin_state::pentacup2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0e).w(this, FUNC(micropin_state::sw_w));
+ map(0x0f, 0x0f).w(this, FUNC(micropin_state::lamp_w));
+ map(0x00, 0x00).portr("X0");
+ map(0x01, 0x01).portr("X1");
+ map(0x02, 0x02).portr("X2");
+ map(0x03, 0x03).portr("X3");
+ map(0x04, 0x04).portr("X4");
+ map(0x05, 0x05).portr("X5");
+}
static INPUT_PORTS_START( micropin )
PORT_START("X0")
diff --git a/src/mame/drivers/microtan.cpp b/src/mame/drivers/microtan.cpp
index 321d9088eea..448a9a9a95a 100644
--- a/src/mame/drivers/microtan.cpp
+++ b/src/mame/drivers/microtan.cpp
@@ -55,20 +55,21 @@
#include "speaker.h"
-ADDRESS_MAP_START(microtan_state::microtan_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x03ff) AM_RAM_WRITE(microtan_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xbc00, 0xbc00) AM_DEVWRITE("ay8910.1", ay8910_device, address_w)
- AM_RANGE(0xbc01, 0xbc01) AM_DEVREADWRITE("ay8910.1", ay8910_device, data_r, data_w)
- AM_RANGE(0xbc02, 0xbc02) AM_DEVWRITE("ay8910.2", ay8910_device, address_w)
- AM_RANGE(0xbc03, 0xbc03) AM_DEVREADWRITE("ay8910.2", ay8910_device, data_r, data_w)
- AM_RANGE(0xbfc0, 0xbfcf) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
- AM_RANGE(0xbfd0, 0xbfd3) AM_DEVREADWRITE("acia", mos6551_device, read, write)
- AM_RANGE(0xbfe0, 0xbfef) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)
- AM_RANGE(0xbff0, 0xbfff) AM_READWRITE(microtan_bffx_r, microtan_bffx_w)
- AM_RANGE(0xc000, 0xe7ff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void microtan_state::microtan_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x03ff).ram().w(this, FUNC(microtan_state::microtan_videoram_w)).share("videoram");
+ map(0xbc00, 0xbc00).w("ay8910.1", FUNC(ay8910_device::address_w));
+ map(0xbc01, 0xbc01).rw("ay8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xbc02, 0xbc02).w("ay8910.2", FUNC(ay8910_device::address_w));
+ map(0xbc03, 0xbc03).rw("ay8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xbfc0, 0xbfcf).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xbfd0, 0xbfd3).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xbfe0, 0xbfef).rw(m_via6522_1, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xbff0, 0xbfff).rw(this, FUNC(microtan_state::microtan_bffx_r), FUNC(microtan_state::microtan_bffx_w));
+ map(0xc000, 0xe7ff).rom();
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( microtan )
PORT_START("DSW")
diff --git a/src/mame/drivers/microterm.cpp b/src/mame/drivers/microterm.cpp
index 497be7384d0..b04c6abc8ae 100644
--- a/src/mame/drivers/microterm.cpp
+++ b/src/mame/drivers/microterm.cpp
@@ -50,39 +50,44 @@ READ8_MEMBER(microterm_state::c000_r)
return machine().rand() & 0x80;
}
-ADDRESS_MAP_START(microterm_state::mt420_mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x9000, 0x9000) AM_WRITENOP
- AM_RANGE(0xc000, 0xc000) AM_READ(c000_r) AM_WRITENOP
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xeff8, 0xefff) AM_DEVREADWRITE("avdc", scn2674_device, read, write)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(microterm_state::mt420_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("aci", mc2661_device, read, write)
-ADDRESS_MAP_END
+void microterm_state::mt420_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x9000, 0x9000).nopw();
+ map(0xc000, 0xc000).r(this, FUNC(microterm_state::c000_r)).nopw();
+ map(0xe000, 0xefff).ram();
+ map(0xeff8, 0xefff).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write));
+ map(0xf000, 0xf7ff).ram();
+}
+
+void microterm_state::mt420_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xe0, 0xef).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0xf0, 0xf3).rw("aci", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
+}
SCN2674_DRAW_CHARACTER_MEMBER(microterm_state::draw_character)
{
}
-ADDRESS_MAP_START(microterm_state::mt420_vram_map)
- AM_RANGE(0x0000, 0x3fff) AM_NOP
-ADDRESS_MAP_END
+void microterm_state::mt420_vram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).noprw();
+}
-ADDRESS_MAP_START(microterm_state::mt5510_mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP
- AM_RANGE(0x8000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void microterm_state::mt5510_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0).nopw();
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xffff).ram();
+}
-ADDRESS_MAP_START(microterm_state::mt5510_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
-ADDRESS_MAP_END
+void microterm_state::mt5510_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x60, 0x6f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+}
static INPUT_PORTS_START( microterm )
INPUT_PORTS_END
diff --git a/src/mame/drivers/midas.cpp b/src/mame/drivers/midas.cpp
index 83ab2da8454..5a78b96ae29 100644
--- a/src/mame/drivers/midas.cpp
+++ b/src/mame/drivers/midas.cpp
@@ -196,38 +196,39 @@ WRITE16_MEMBER(midas_state::livequiz_coin_w)
#endif
}
-ADDRESS_MAP_START(midas_state::livequiz_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+void midas_state::livequiz_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
- AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW_PLAYER1")
- AM_RANGE(0x920000, 0x920001) AM_READ_PORT("SERVICE")
- AM_RANGE(0x940000, 0x940001) AM_READ_PORT("PLAYER2")
- AM_RANGE(0x980000, 0x980001) AM_READ_PORT("START")
+ map(0x900000, 0x900001).portr("DSW_PLAYER1");
+ map(0x920000, 0x920001).portr("SERVICE");
+ map(0x940000, 0x940001).portr("PLAYER2");
+ map(0x980000, 0x980001).portr("START");
- AM_RANGE(0x980000, 0x980001) AM_WRITE(livequiz_coin_w )
+ map(0x980000, 0x980001).w(this, FUNC(midas_state::livequiz_coin_w));
- AM_RANGE(0x9a0000, 0x9a0001) AM_WRITE(midas_eeprom_w )
+ map(0x9a0000, 0x9a0001).w(this, FUNC(midas_state::midas_eeprom_w));
- AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w )
- AM_RANGE(0x9c000c, 0x9c000d) AM_WRITENOP // IRQ Ack, temporary
+ map(0x9c0000, 0x9c0005).w(this, FUNC(midas_state::midas_gfxregs_w));
+ map(0x9c000c, 0x9c000d).nopw(); // IRQ Ack, temporary
- AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa40000, 0xa7ffff) AM_RAM
+ map(0xa00000, 0xa3ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa40000, 0xa7ffff).ram();
- AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff )
- AM_RANGE(0xb20000, 0xb20001) AM_READ(ret_ffff )
- AM_RANGE(0xb40000, 0xb40001) AM_READ(ret_ffff )
- AM_RANGE(0xb60000, 0xb60001) AM_READ(ret_ffff )
+ map(0xb00000, 0xb00001).r(this, FUNC(midas_state::ret_ffff));
+ map(0xb20000, 0xb20001).r(this, FUNC(midas_state::ret_ffff));
+ map(0xb40000, 0xb40001).r(this, FUNC(midas_state::ret_ffff));
+ map(0xb60000, 0xb60001).r(this, FUNC(midas_state::ret_ffff));
- AM_RANGE(0xb80008, 0xb8000b) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff )
+ map(0xb80008, 0xb8000b).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff);
- AM_RANGE(0xba0000, 0xba0001) AM_READ_PORT("START3")
- AM_RANGE(0xbc0000, 0xbc0001) AM_READ_PORT("PLAYER3")
+ map(0xba0000, 0xba0001).portr("START3");
+ map(0xbc0000, 0xbc0001).portr("PLAYER3");
- AM_RANGE(0xd00000, 0xd1ffff) AM_RAM_WRITE(midas_zoomtable_w) AM_SHARE("zoomtable") // zoom table?
+ map(0xd00000, 0xd1ffff).ram().w(this, FUNC(midas_state::midas_zoomtable_w)).share("zoomtable"); // zoom table?
- AM_RANGE(0xe00000, 0xe3ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe00000, 0xe3ffff).ram();
+}
/***************************************************************************************
Hammer
@@ -267,42 +268,43 @@ WRITE16_MEMBER(midas_state::hammer_motor_w)
#endif
}
-ADDRESS_MAP_START(midas_state::hammer_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+void midas_state::hammer_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
- AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW")
- AM_RANGE(0x920000, 0x920001) AM_READ_PORT("SERVICE")
- AM_RANGE(0x940000, 0x940001) AM_READ_PORT("IN0")
- AM_RANGE(0x980000, 0x980001) AM_READ_PORT("TILT")
+ map(0x900000, 0x900001).portr("DSW");
+ map(0x920000, 0x920001).portr("SERVICE");
+ map(0x940000, 0x940001).portr("IN0");
+ map(0x980000, 0x980001).portr("TILT");
- AM_RANGE(0x980000, 0x980001) AM_WRITE(hammer_coin_w )
+ map(0x980000, 0x980001).w(this, FUNC(midas_state::hammer_coin_w));
- AM_RANGE(0x9a0000, 0x9a0001) AM_WRITE(midas_eeprom_w )
+ map(0x9a0000, 0x9a0001).w(this, FUNC(midas_state::midas_eeprom_w));
- AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w )
- AM_RANGE(0x9c000c, 0x9c000d) AM_WRITENOP // IRQ Ack, temporary
+ map(0x9c0000, 0x9c0005).w(this, FUNC(midas_state::midas_gfxregs_w));
+ map(0x9c000c, 0x9c000d).nopw(); // IRQ Ack, temporary
- AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa40000, 0xa7ffff) AM_RAM
+ map(0xa00000, 0xa3ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa40000, 0xa7ffff).ram();
- AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff )
- AM_RANGE(0xb20000, 0xb20001) AM_READ(ret_ffff )
- AM_RANGE(0xb40000, 0xb40001) AM_READ(ret_ffff )
- AM_RANGE(0xb60000, 0xb60001) AM_READ(ret_ffff )
+ map(0xb00000, 0xb00001).r(this, FUNC(midas_state::ret_ffff));
+ map(0xb20000, 0xb20001).r(this, FUNC(midas_state::ret_ffff));
+ map(0xb40000, 0xb40001).r(this, FUNC(midas_state::ret_ffff));
+ map(0xb60000, 0xb60001).r(this, FUNC(midas_state::ret_ffff));
- AM_RANGE(0xb80008, 0xb8000b) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff )
+ map(0xb80008, 0xb8000b).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff);
- AM_RANGE(0xba0000, 0xba0001) AM_READ_PORT("IN1")
- AM_RANGE(0xbc0000, 0xbc0001) AM_READ_PORT("HAMMER")
+ map(0xba0000, 0xba0001).portr("IN1");
+ map(0xbc0000, 0xbc0001).portr("HAMMER");
- AM_RANGE(0xbc0002, 0xbc0003) AM_WRITE(hammer_motor_w )
+ map(0xbc0002, 0xbc0003).w(this, FUNC(midas_state::hammer_motor_w));
- AM_RANGE(0xbc0004, 0xbc0005) AM_READ(hammer_sensor_r )
+ map(0xbc0004, 0xbc0005).r(this, FUNC(midas_state::hammer_sensor_r));
- AM_RANGE(0xd00000, 0xd1ffff) AM_RAM_WRITE(midas_zoomtable_w) AM_SHARE("zoomtable") // zoom table?
+ map(0xd00000, 0xd1ffff).ram().w(this, FUNC(midas_state::midas_zoomtable_w)).share("zoomtable"); // zoom table?
- AM_RANGE(0xe00000, 0xe3ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe00000, 0xe3ffff).ram();
+}
static const gfx_layout layout16x16x8 =
diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp
index fbf5c9a7a75..6b37760bc8b 100644
--- a/src/mame/drivers/midqslvr.cpp
+++ b/src/mame/drivers/midqslvr.cpp
@@ -362,32 +362,34 @@ WRITE32_MEMBER(midqslvr_state::bios_ram_w)
}
}
-ADDRESS_MAP_START(midqslvr_state::midqslvr_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c3fff) AM_ROMBANK("video_bank1") AM_WRITE(isa_ram1_w)
- AM_RANGE(0x000c4000, 0x000c7fff) AM_ROMBANK("video_bank2") AM_WRITE(isa_ram2_w)
- AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_ext1") AM_WRITE(bios_ext1_ram_w)
- AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_ext2") AM_WRITE(bios_ext2_ram_w)
- AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_ext3") AM_WRITE(bios_ext3_ram_w)
- AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ext4") AM_WRITE(bios_ext4_ram_w)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x01ffffff) AM_RAM
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(midqslvr_state::midqslvr_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
-
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
-
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+void midqslvr_state::midqslvr_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000c0000, 0x000c3fff).bankr("video_bank1").w(this, FUNC(midqslvr_state::isa_ram1_w));
+ map(0x000c4000, 0x000c7fff).bankr("video_bank2").w(this, FUNC(midqslvr_state::isa_ram2_w));
+ map(0x000e0000, 0x000e3fff).bankr("bios_ext1").w(this, FUNC(midqslvr_state::bios_ext1_ram_w));
+ map(0x000e4000, 0x000e7fff).bankr("bios_ext2").w(this, FUNC(midqslvr_state::bios_ext2_ram_w));
+ map(0x000e8000, 0x000ebfff).bankr("bios_ext3").w(this, FUNC(midqslvr_state::bios_ext3_ram_w));
+ map(0x000ec000, 0x000effff).bankr("bios_ext4").w(this, FUNC(midqslvr_state::bios_ext4_ram_w));
+ map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(midqslvr_state::bios_ram_w));
+ map(0x00100000, 0x01ffffff).ram();
+ map(0xfff80000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void midqslvr_state::midqslvr_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e8, 0x00ef).noprw();
+
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
void midqslvr_state::machine_start()
{
diff --git a/src/mame/drivers/midtunit.cpp b/src/mame/drivers/midtunit.cpp
index b3b134419ed..349a6d7859c 100644
--- a/src/mame/drivers/midtunit.cpp
+++ b/src/mame/drivers/midtunit.cpp
@@ -44,29 +44,30 @@
*
*************************************/
-ADDRESS_MAP_START(midtunit_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_r, midtunit_vram_w)
- AM_RANGE(0x01000000, 0x013fffff) AM_RAM
- AM_RANGE(0x01400000, 0x0141ffff) AM_READWRITE(midtunit_cmos_r, midtunit_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0x01480000, 0x014fffff) AM_WRITE(midtunit_cmos_enable_w)
- AM_RANGE(0x01600000, 0x0160000f) AM_READ_PORT("IN0")
- AM_RANGE(0x01600010, 0x0160001f) AM_READ_PORT("IN1")
- AM_RANGE(0x01600020, 0x0160002f) AM_READ_PORT("IN2")
- AM_RANGE(0x01600030, 0x0160003f) AM_READ_PORT("DSW")
- AM_RANGE(0x01800000, 0x0187ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x01a80000, 0x01a800ff) AM_READWRITE(midtunit_dma_r, midtunit_dma_w)
- AM_RANGE(0x01b00000, 0x01b0001f) AM_WRITE(midtunit_control_w)
+void midtunit_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x003fffff).rw(this, FUNC(midtunit_state::midtunit_vram_r), FUNC(midtunit_state::midtunit_vram_w));
+ map(0x01000000, 0x013fffff).ram();
+ map(0x01400000, 0x0141ffff).rw(this, FUNC(midtunit_state::midtunit_cmos_r), FUNC(midtunit_state::midtunit_cmos_w)).share("nvram");
+ map(0x01480000, 0x014fffff).w(this, FUNC(midtunit_state::midtunit_cmos_enable_w));
+ map(0x01600000, 0x0160000f).portr("IN0");
+ map(0x01600010, 0x0160001f).portr("IN1");
+ map(0x01600020, 0x0160002f).portr("IN2");
+ map(0x01600030, 0x0160003f).portr("DSW");
+ map(0x01800000, 0x0187ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x01a80000, 0x01a800ff).rw(this, FUNC(midtunit_state::midtunit_dma_r), FUNC(midtunit_state::midtunit_dma_w));
+ map(0x01b00000, 0x01b0001f).w(this, FUNC(midtunit_state::midtunit_control_w));
/* AM_RANGE(0x01c00060, 0x01c0007f) AM_WRITE(midtunit_cmos_enable_w) */
- AM_RANGE(0x01d00000, 0x01d0001f) AM_READ(midtunit_sound_state_r)
- AM_RANGE(0x01d01020, 0x01d0103f) AM_READWRITE(midtunit_sound_r, midtunit_sound_w)
- AM_RANGE(0x01d81060, 0x01d8107f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x01f00000, 0x01f0001f) AM_WRITE(midtunit_control_w)
- AM_RANGE(0x02000000, 0x07ffffff) AM_READ(midtunit_gfxrom_r) AM_SHARE("gfxrom")
- AM_RANGE(0x1f800000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) /* mirror used by MK */
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0x01d00000, 0x01d0001f).r(this, FUNC(midtunit_state::midtunit_sound_state_r));
+ map(0x01d01020, 0x01d0103f).rw(this, FUNC(midtunit_state::midtunit_sound_r), FUNC(midtunit_state::midtunit_sound_w));
+ map(0x01d81060, 0x01d8107f).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x01f00000, 0x01f0001f).w(this, FUNC(midtunit_state::midtunit_control_w));
+ map(0x02000000, 0x07ffffff).r(this, FUNC(midtunit_state::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 70d37d9aedd..b9c256c77c2 100644
--- a/src/mame/drivers/midvunit.cpp
+++ b/src/mame/drivers/midvunit.cpp
@@ -577,59 +577,61 @@ WRITE8_MEMBER(midvunit_state::midvplus_xf1_w)
*
*************************************/
-ADDRESS_MAP_START(midvunit_state::midvunit_map)
- AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("ram_base")
- AM_RANGE(0x400000, 0x41ffff) AM_RAM
- AM_RANGE(0x600000, 0x600000) AM_WRITE(midvunit_dma_queue_w)
- AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("32031_control")
- AM_RANGE(0x809800, 0x809fff) AM_RAM
- AM_RANGE(0x900000, 0x97ffff) AM_READWRITE(midvunit_videoram_r, midvunit_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x980000, 0x980000) AM_READ(midvunit_dma_queue_entries_r)
- AM_RANGE(0x980020, 0x980020) AM_READ(midvunit_scanline_r)
- AM_RANGE(0x980020, 0x98002b) AM_WRITE(midvunit_video_control_w)
- AM_RANGE(0x980040, 0x980040) AM_READWRITE(midvunit_page_control_r, midvunit_page_control_w)
- AM_RANGE(0x980080, 0x980080) AM_NOP
- AM_RANGE(0x980082, 0x980083) AM_READ(midvunit_dma_trigger_r)
- AM_RANGE(0x990000, 0x990000) AM_READNOP // link PAL (low 4 bits must == 4)
- AM_RANGE(0x991030, 0x991030) AM_READ_PORT("991030")
+void midvunit_state::midvunit_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).ram().share("ram_base");
+ map(0x400000, 0x41ffff).ram();
+ map(0x600000, 0x600000).w(this, FUNC(midvunit_state::midvunit_dma_queue_w));
+ map(0x808000, 0x80807f).rw(this, FUNC(midvunit_state::tms32031_control_r), FUNC(midvunit_state::tms32031_control_w)).share("32031_control");
+ map(0x809800, 0x809fff).ram();
+ map(0x900000, 0x97ffff).rw(this, FUNC(midvunit_state::midvunit_videoram_r), FUNC(midvunit_state::midvunit_videoram_w)).share("videoram");
+ map(0x980000, 0x980000).r(this, FUNC(midvunit_state::midvunit_dma_queue_entries_r));
+ map(0x980020, 0x980020).r(this, FUNC(midvunit_state::midvunit_scanline_r));
+ map(0x980020, 0x98002b).w(this, FUNC(midvunit_state::midvunit_video_control_w));
+ map(0x980040, 0x980040).rw(this, FUNC(midvunit_state::midvunit_page_control_r), FUNC(midvunit_state::midvunit_page_control_w));
+ map(0x980080, 0x980080).noprw();
+ map(0x980082, 0x980083).r(this, FUNC(midvunit_state::midvunit_dma_trigger_r));
+ map(0x990000, 0x990000).nopr(); // link PAL (low 4 bits must == 4)
+ map(0x991030, 0x991030).portr("991030");
// AM_RANGE(0x991050, 0x991050) AM_READONLY // seems to be another port
- AM_RANGE(0x991060, 0x991060) AM_READ(port0_r)
- AM_RANGE(0x992000, 0x992000) AM_READ_PORT("992000")
- AM_RANGE(0x993000, 0x993000) AM_READWRITE(adc_r, adc_w)
- AM_RANGE(0x994000, 0x994000) AM_WRITE(midvunit_control_w)
- AM_RANGE(0x995000, 0x995000) AM_READWRITE(midvunit_wheel_board_r, midvunit_wheel_board_w)
- AM_RANGE(0x995020, 0x995020) AM_WRITE(midvunit_cmos_protect_w)
- AM_RANGE(0x997000, 0x997000) AM_NOP // communications
- AM_RANGE(0x9a0000, 0x9a0000) AM_WRITE(midvunit_sound_w)
- AM_RANGE(0x9c0000, 0x9c1fff) AM_READWRITE(midvunit_cmos_r, midvunit_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0x9e0000, 0x9e7fff) AM_RAM_WRITE(midvunit_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(midvunit_textureram_r, midvunit_textureram_w) AM_SHARE("textureram")
- AM_RANGE(0xc00000, 0xffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(midvunit_state::midvplus_map)
- AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("ram_base")
- AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("fastram_base")
- AM_RANGE(0x600000, 0x600000) AM_WRITE(midvunit_dma_queue_w)
- AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("32031_control")
- AM_RANGE(0x809800, 0x809fff) AM_RAM
- AM_RANGE(0x900000, 0x97ffff) AM_READWRITE(midvunit_videoram_r, midvunit_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x980000, 0x980000) AM_READ(midvunit_dma_queue_entries_r)
- AM_RANGE(0x980020, 0x980020) AM_READ(midvunit_scanline_r)
- AM_RANGE(0x980020, 0x98002b) AM_WRITE(midvunit_video_control_w)
- AM_RANGE(0x980040, 0x980040) AM_READWRITE(midvunit_page_control_r, midvunit_page_control_w)
- AM_RANGE(0x980080, 0x980080) AM_NOP
- AM_RANGE(0x980082, 0x980083) AM_READ(midvunit_dma_trigger_r)
- AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x994000, 0x994000) AM_WRITE(midvunit_control_w)
- AM_RANGE(0x995020, 0x995020) AM_WRITE(midvunit_cmos_protect_w)
- AM_RANGE(0x9a0000, 0x9a0007) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff)
- AM_RANGE(0x9c0000, 0x9c7fff) AM_RAM_WRITE(midvunit_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x9d0000, 0x9d000f) AM_READWRITE(midvplus_misc_r, midvplus_misc_w) AM_SHARE("midvplus_misc")
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(midvunit_textureram_r, midvunit_textureram_w) AM_SHARE("textureram")
- AM_RANGE(0xc00000, 0xcfffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x991060, 0x991060).r(this, FUNC(midvunit_state::port0_r));
+ map(0x992000, 0x992000).portr("992000");
+ map(0x993000, 0x993000).rw(this, FUNC(midvunit_state::adc_r), FUNC(midvunit_state::adc_w));
+ map(0x994000, 0x994000).w(this, FUNC(midvunit_state::midvunit_control_w));
+ map(0x995000, 0x995000).rw(this, FUNC(midvunit_state::midvunit_wheel_board_r), FUNC(midvunit_state::midvunit_wheel_board_w));
+ map(0x995020, 0x995020).w(this, FUNC(midvunit_state::midvunit_cmos_protect_w));
+ map(0x997000, 0x997000).noprw(); // communications
+ map(0x9a0000, 0x9a0000).w(this, FUNC(midvunit_state::midvunit_sound_w));
+ map(0x9c0000, 0x9c1fff).rw(this, FUNC(midvunit_state::midvunit_cmos_r), FUNC(midvunit_state::midvunit_cmos_w)).share("nvram");
+ map(0x9e0000, 0x9e7fff).ram().w(this, FUNC(midvunit_state::midvunit_paletteram_w)).share("paletteram");
+ map(0xa00000, 0xbfffff).rw(this, FUNC(midvunit_state::midvunit_textureram_r), FUNC(midvunit_state::midvunit_textureram_w)).share("textureram");
+ map(0xc00000, 0xffffff).rom().region("user1", 0);
+}
+
+
+void midvunit_state::midvplus_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).ram().share("ram_base");
+ map(0x400000, 0x41ffff).ram().share("fastram_base");
+ map(0x600000, 0x600000).w(this, FUNC(midvunit_state::midvunit_dma_queue_w));
+ map(0x808000, 0x80807f).rw(this, FUNC(midvunit_state::tms32031_control_r), FUNC(midvunit_state::tms32031_control_w)).share("32031_control");
+ map(0x809800, 0x809fff).ram();
+ map(0x900000, 0x97ffff).rw(this, FUNC(midvunit_state::midvunit_videoram_r), FUNC(midvunit_state::midvunit_videoram_w)).share("videoram");
+ map(0x980000, 0x980000).r(this, FUNC(midvunit_state::midvunit_dma_queue_entries_r));
+ map(0x980020, 0x980020).r(this, FUNC(midvunit_state::midvunit_scanline_r));
+ map(0x980020, 0x98002b).w(this, FUNC(midvunit_state::midvunit_video_control_w));
+ map(0x980040, 0x980040).rw(this, FUNC(midvunit_state::midvunit_page_control_r), FUNC(midvunit_state::midvunit_page_control_w));
+ map(0x980080, 0x980080).noprw();
+ map(0x980082, 0x980083).r(this, FUNC(midvunit_state::midvunit_dma_trigger_r));
+ map(0x990000, 0x99000f).rw(m_midway_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x994000, 0x994000).w(this, FUNC(midvunit_state::midvunit_control_w));
+ map(0x995020, 0x995020).w(this, FUNC(midvunit_state::midvunit_cmos_protect_w));
+ map(0x9a0000, 0x9a0007).rw("ata", FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)).umask32(0x0000ffff);
+ map(0x9c0000, 0x9c7fff).ram().w(this, FUNC(midvunit_state::midvunit_paletteram_w)).share("paletteram");
+ map(0x9d0000, 0x9d000f).rw(this, FUNC(midvunit_state::midvplus_misc_r), FUNC(midvunit_state::midvplus_misc_w)).share("midvplus_misc");
+ map(0xa00000, 0xbfffff).rw(this, FUNC(midvunit_state::midvunit_textureram_r), FUNC(midvunit_state::midvunit_textureram_w)).share("textureram");
+ map(0xc00000, 0xcfffff).ram();
+}
diff --git a/src/mame/drivers/midwunit.cpp b/src/mame/drivers/midwunit.cpp
index aa8bf529f55..f4f9bcb4c18 100644
--- a/src/mame/drivers/midwunit.cpp
+++ b/src/mame/drivers/midwunit.cpp
@@ -110,21 +110,22 @@ Notes:
*
*************************************/
-ADDRESS_MAP_START(midwunit_state::main_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_r, midtunit_vram_w)
- AM_RANGE(0x01000000, 0x013fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x01400000, 0x0145ffff) AM_READWRITE(midwunit_cmos_r, midwunit_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0x01480000, 0x014fffff) AM_WRITE(midwunit_cmos_enable_w)
- AM_RANGE(0x01600000, 0x0160001f) AM_READWRITE(midwunit_security_r, midwunit_security_w)
- AM_RANGE(0x01680000, 0x0168001f) AM_READWRITE(midwunit_sound_r, midwunit_sound_w)
- AM_RANGE(0x01800000, 0x0187ffff) AM_READWRITE(midwunit_io_r, midwunit_io_w)
- AM_RANGE(0x01880000, 0x018fffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x01a00000, 0x01a000ff) AM_MIRROR(0x00080000) AM_READWRITE(midtunit_dma_r, midtunit_dma_w)
- AM_RANGE(0x01b00000, 0x01b0001f) AM_READWRITE(midwunit_control_r, midwunit_control_w)
- AM_RANGE(0x02000000, 0x06ffffff) AM_READ(midwunit_gfxrom_r)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void midwunit_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rw(this, FUNC(midwunit_state::midtunit_vram_r), FUNC(midwunit_state::midtunit_vram_w));
+ map(0x01000000, 0x013fffff).ram().share("mainram");
+ map(0x01400000, 0x0145ffff).rw(this, FUNC(midwunit_state::midwunit_cmos_r), FUNC(midwunit_state::midwunit_cmos_w)).share("nvram");
+ map(0x01480000, 0x014fffff).w(this, FUNC(midwunit_state::midwunit_cmos_enable_w));
+ map(0x01600000, 0x0160001f).rw(this, FUNC(midwunit_state::midwunit_security_r), FUNC(midwunit_state::midwunit_security_w));
+ map(0x01680000, 0x0168001f).rw(this, FUNC(midwunit_state::midwunit_sound_r), FUNC(midwunit_state::midwunit_sound_w));
+ map(0x01800000, 0x0187ffff).rw(this, FUNC(midwunit_state::midwunit_io_r), FUNC(midwunit_state::midwunit_io_w));
+ map(0x01880000, 0x018fffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x01a00000, 0x01a000ff).mirror(0x00080000).rw(this, FUNC(midwunit_state::midtunit_dma_r), FUNC(midwunit_state::midtunit_dma_w));
+ map(0x01b00000, 0x01b0001f).rw(this, FUNC(midwunit_state::midwunit_control_r), FUNC(midwunit_state::midwunit_control_w));
+ map(0x02000000, 0x06ffffff).r(this, FUNC(midwunit_state::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 3dbb6aaa62d..47c5bd02526 100644
--- a/src/mame/drivers/midxunit.cpp
+++ b/src/mame/drivers/midxunit.cpp
@@ -104,28 +104,29 @@ There's a separate sound board also, but it wasn't available so is not documente
*
*************************************/
-ADDRESS_MAP_START(midxunit_state::main_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_data_r, midtunit_vram_data_w)
- AM_RANGE(0x00800000, 0x00bfffff) AM_READWRITE(midtunit_vram_color_r, midtunit_vram_color_w)
- AM_RANGE(0x20000000, 0x20ffffff) AM_RAM
- AM_RANGE(0x40800000, 0x4fffffff) AM_WRITE(midxunit_unknown_w)
- AM_RANGE(0x60400000, 0x6040001f) AM_READWRITE(midxunit_status_r, midxunit_security_clock_w)
- AM_RANGE(0x60c00000, 0x60c0001f) AM_READ_PORT("IN0")
- AM_RANGE(0x60c00020, 0x60c0003f) AM_READ_PORT("IN1")
- AM_RANGE(0x60c00040, 0x60c0005f) AM_READ_PORT("IN2")
- AM_RANGE(0x60c00060, 0x60c0007f) AM_READ_PORT("DSW")
- AM_RANGE(0x60c00080, 0x60c000df) AM_WRITE(midxunit_io_w)
- AM_RANGE(0x60c000e0, 0x60c000ff) AM_READWRITE(midxunit_security_r, midxunit_security_w)
- AM_RANGE(0x80800000, 0x8080000f) AM_DEVREAD8("adc", adc0848_device, read, 0x00ff) AM_DEVWRITE8("adc", adc0848_device, write, 0x00ff)
- AM_RANGE(0x80800010, 0x8080001f) AM_NOP
- AM_RANGE(0x80c00000, 0x80c000ff) AM_READWRITE(midxunit_uart_r, midxunit_uart_w)
- AM_RANGE(0xa0440000, 0xa047ffff) AM_READWRITE(midxunit_cmos_r, midxunit_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0xa0800000, 0xa08fffff) AM_READWRITE(midxunit_paletteram_r, midxunit_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("maincpu", tms34020_device, io_register_r, io_register_w)
- AM_RANGE(0xc0800000, 0xc08000ff) AM_MIRROR(0x00400000) AM_READWRITE(midtunit_dma_r, midtunit_dma_w)
- AM_RANGE(0xf8000000, 0xfeffffff) AM_READ(midwunit_gfxrom_r)
- AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void midxunit_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rw(this, FUNC(midxunit_state::midtunit_vram_data_r), FUNC(midxunit_state::midtunit_vram_data_w));
+ map(0x00800000, 0x00bfffff).rw(this, FUNC(midxunit_state::midtunit_vram_color_r), FUNC(midxunit_state::midtunit_vram_color_w));
+ map(0x20000000, 0x20ffffff).ram();
+ map(0x40800000, 0x4fffffff).w(this, FUNC(midxunit_state::midxunit_unknown_w));
+ map(0x60400000, 0x6040001f).rw(this, FUNC(midxunit_state::midxunit_status_r), FUNC(midxunit_state::midxunit_security_clock_w));
+ map(0x60c00000, 0x60c0001f).portr("IN0");
+ map(0x60c00020, 0x60c0003f).portr("IN1");
+ map(0x60c00040, 0x60c0005f).portr("IN2");
+ map(0x60c00060, 0x60c0007f).portr("DSW");
+ map(0x60c00080, 0x60c000df).w(this, FUNC(midxunit_state::midxunit_io_w));
+ map(0x60c000e0, 0x60c000ff).rw(this, FUNC(midxunit_state::midxunit_security_r), FUNC(midxunit_state::midxunit_security_w));
+ map(0x80800000, 0x8080000f).r("adc", FUNC(adc0848_device::read)).umask16(0x00ff).w("adc", FUNC(adc0848_device::write)).umask16(0x00ff);
+ map(0x80800010, 0x8080001f).noprw();
+ map(0x80c00000, 0x80c000ff).rw(this, FUNC(midxunit_state::midxunit_uart_r), FUNC(midxunit_state::midxunit_uart_w));
+ map(0xa0440000, 0xa047ffff).rw(this, FUNC(midxunit_state::midxunit_cmos_r), FUNC(midxunit_state::midxunit_cmos_w)).share("nvram");
+ map(0xa0800000, 0xa08fffff).rw(this, FUNC(midxunit_state::midxunit_paletteram_r), FUNC(midxunit_state::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(this, FUNC(midxunit_state::midtunit_dma_r), FUNC(midxunit_state::midtunit_dma_w));
+ map(0xf8000000, 0xfeffffff).r(this, FUNC(midxunit_state::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 d56d706d519..5191bd3baee 100644
--- a/src/mame/drivers/midyunit.cpp
+++ b/src/mame/drivers/midyunit.cpp
@@ -178,29 +178,31 @@ CUSTOM_INPUT_MEMBER(midyunit_state::adpcm_irq_state_r)
*
*************************************/
-ADDRESS_MAP_START(midyunit_state::main_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_READWRITE(midyunit_vram_r, midyunit_vram_w)
- AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x01400000, 0x0140ffff) AM_READWRITE(midyunit_cmos_r, midyunit_cmos_w)
- AM_RANGE(0x01800000, 0x0181ffff) AM_RAM_WRITE(midyunit_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x01a00000, 0x01a0009f) AM_MIRROR(0x00080000) AM_READWRITE(midyunit_dma_r, midyunit_dma_w)
- AM_RANGE(0x01c00000, 0x01c0005f) AM_READ(midyunit_input_r)
- AM_RANGE(0x01c00060, 0x01c0007f) AM_READWRITE(midyunit_protection_r, midyunit_cmos_enable_w)
- AM_RANGE(0x01e00000, 0x01e0001f) AM_WRITE(midyunit_sound_w)
- AM_RANGE(0x01f00000, 0x01f0001f) AM_WRITE(midyunit_control_w)
- AM_RANGE(0x02000000, 0x05ffffff) AM_READ(midyunit_gfxrom_r) AM_SHARE("gfx_rom")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(midyunit_state::yawdim_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x97ff) AM_WRITE(yawdim_oki_bank_w)
- AM_RANGE(0x9800, 0x9fff) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void midyunit_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rw(this, FUNC(midyunit_state::midyunit_vram_r), FUNC(midyunit_state::midyunit_vram_w));
+ map(0x01000000, 0x010fffff).ram().share("mainram");
+ map(0x01400000, 0x0140ffff).rw(this, FUNC(midyunit_state::midyunit_cmos_r), FUNC(midyunit_state::midyunit_cmos_w));
+ map(0x01800000, 0x0181ffff).ram().w(this, FUNC(midyunit_state::midyunit_paletteram_w)).share("paletteram");
+ map(0x01a00000, 0x01a0009f).mirror(0x00080000).rw(this, FUNC(midyunit_state::midyunit_dma_r), FUNC(midyunit_state::midyunit_dma_w));
+ map(0x01c00000, 0x01c0005f).r(this, FUNC(midyunit_state::midyunit_input_r));
+ map(0x01c00060, 0x01c0007f).rw(this, FUNC(midyunit_state::midyunit_protection_r), FUNC(midyunit_state::midyunit_cmos_enable_w));
+ map(0x01e00000, 0x01e0001f).w(this, FUNC(midyunit_state::midyunit_sound_w));
+ map(0x01f00000, 0x01f0001f).w(this, FUNC(midyunit_state::midyunit_control_w));
+ map(0x02000000, 0x05ffffff).r(this, 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);
+}
+
+
+void midyunit_state::yawdim_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x97ff).w(this, FUNC(midyunit_state::yawdim_oki_bank_w));
+ map(0x9800, 0x9fff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa7ff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp
index ec51b480ca0..c94133d89ba 100644
--- a/src/mame/drivers/midzeus.cpp
+++ b/src/mame/drivers/midzeus.cpp
@@ -732,39 +732,41 @@ READ32_MEMBER(midzeus_state::invasn_gun_r)
*
*************************************/
-ADDRESS_MAP_START(midzeus_state::zeus_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM AM_SHARE("ram_base")
- AM_RANGE(0x400000, 0x41ffff) AM_RAM
- AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("tms32031_ctl")
- AM_RANGE(0x880000, 0x8803ff) AM_READWRITE(zeus_r, zeus_w) AM_SHARE("zeusbase")
- AM_RANGE(0x8d0000, 0x8d0009) AM_READWRITE(disk_asic_jr_r, disk_asic_jr_w)
- AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog?
- AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram")
- AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w)
- AM_RANGE(0xa00000, 0xffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(midzeus2_state::zeus2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM AM_SHARE("ram_base")
- AM_RANGE(0x400000, 0x43ffff) AM_RAM
- AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("tms32031_ctl")
- AM_RANGE(0x880000, 0x88007f) AM_DEVREADWRITE("zeus2", zeus2_device, zeus2_r, zeus2_w)
- AM_RANGE(0x8a0000, 0x8a00cf) AM_READWRITE(firewire_r, firewire_w) AM_SHARE("firewire")
- AM_RANGE(0x8d0000, 0x8d0009) AM_READWRITE(disk_asic_jr_r, disk_asic_jr_w)
- AM_RANGE(0x900000, 0x91ffff) AM_READWRITE(zpram_r, zpram_w) AM_SHARE("nvram") AM_MIRROR(0x020000)
- AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x9c0000, 0x9c000f) AM_READWRITE(analog_r, analog_w)
- AM_RANGE(0x9d0000, 0x9d000f) AM_READWRITE(disk_asic_r, disk_asic_w)
- AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog?
- AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(zeus2_timekeeper_r, zeus2_timekeeper_w)
- AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w)
- AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xc00000, 0xffffff) AM_ROMBANK("bank1") AM_REGION("user2", 0)
-ADDRESS_MAP_END
+void midzeus_state::zeus_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram().share("ram_base");
+ map(0x400000, 0x41ffff).ram();
+ map(0x808000, 0x80807f).rw(this, FUNC(midzeus_state::tms32031_control_r), FUNC(midzeus_state::tms32031_control_w)).share("tms32031_ctl");
+ map(0x880000, 0x8803ff).rw(this, FUNC(midzeus_state::zeus_r), FUNC(midzeus_state::zeus_w)).share("zeusbase");
+ map(0x8d0000, 0x8d0009).rw(this, FUNC(midzeus_state::disk_asic_jr_r), FUNC(midzeus_state::disk_asic_jr_w));
+ map(0x990000, 0x99000f).rw("ioasic", FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x9e0000, 0x9e0000).nopw(); // watchdog?
+ map(0x9f0000, 0x9f7fff).rw(this, FUNC(midzeus_state::cmos_r), FUNC(midzeus_state::cmos_w)).share("nvram");
+ map(0x9f8000, 0x9f8000).w(this, FUNC(midzeus_state::cmos_protect_w));
+ map(0xa00000, 0xffffff).rom().region("user1", 0);
+}
+
+
+void midzeus2_state::zeus2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram().share("ram_base");
+ map(0x400000, 0x43ffff).ram();
+ map(0x808000, 0x80807f).rw(this, FUNC(midzeus2_state::tms32031_control_r), FUNC(midzeus2_state::tms32031_control_w)).share("tms32031_ctl");
+ map(0x880000, 0x88007f).rw(m_zeus, FUNC(zeus2_device::zeus2_r), FUNC(zeus2_device::zeus2_w));
+ map(0x8a0000, 0x8a00cf).rw(this, FUNC(midzeus2_state::firewire_r), FUNC(midzeus2_state::firewire_w)).share("firewire");
+ map(0x8d0000, 0x8d0009).rw(this, FUNC(midzeus2_state::disk_asic_jr_r), FUNC(midzeus2_state::disk_asic_jr_w));
+ map(0x900000, 0x91ffff).rw(this, FUNC(midzeus2_state::zpram_r), FUNC(midzeus2_state::zpram_w)).share("nvram").mirror(0x020000);
+ map(0x990000, 0x99000f).rw("ioasic", FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x9c0000, 0x9c000f).rw(this, FUNC(midzeus2_state::analog_r), FUNC(midzeus2_state::analog_w));
+ map(0x9d0000, 0x9d000f).rw(this, FUNC(midzeus2_state::disk_asic_r), FUNC(midzeus2_state::disk_asic_w));
+ map(0x9e0000, 0x9e0000).nopw(); // watchdog?
+ map(0x9f0000, 0x9f7fff).rw(this, FUNC(midzeus2_state::zeus2_timekeeper_r), FUNC(midzeus2_state::zeus2_timekeeper_w));
+ map(0x9f8000, 0x9f8000).w(this, FUNC(midzeus2_state::cmos_protect_w));
+ map(0xa00000, 0xbfffff).rom().region("user1", 0);
+ map(0xc00000, 0xffffff).bankr("bank1").region("user2", 0);
+}
/*
diff --git a/src/mame/drivers/mightyframe.cpp b/src/mame/drivers/mightyframe.cpp
index 2e5c5dc1adf..ba6b41fd050 100644
--- a/src/mame/drivers/mightyframe.cpp
+++ b/src/mame/drivers/mightyframe.cpp
@@ -30,9 +30,10 @@ private:
// required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(mightyframe_state::mem_map)
- AM_RANGE(0x000000, 0x007fff) AM_ROM
-ADDRESS_MAP_END
+void mightyframe_state::mem_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rom();
+}
static INPUT_PORTS_START( mightyframe )
INPUT_PORTS_END
diff --git a/src/mame/drivers/mikie.cpp b/src/mame/drivers/mikie.cpp
index 5f78edb9f27..76688c674d6 100644
--- a/src/mame/drivers/mikie.cpp
+++ b/src/mame/drivers/mikie.cpp
@@ -105,38 +105,40 @@ WRITE_LINE_MEMBER(mikie_state::irq_mask_w)
*
*************************************/
-ADDRESS_MAP_START(mikie_state::mikie_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x2000, 0x2007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2200, 0x2200) AM_WRITE(mikie_palettebank_w)
- AM_RANGE(0x2300, 0x2300) AM_WRITENOP // ???
- AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x2401, 0x2401) AM_READ_PORT("P1")
- AM_RANGE(0x2402, 0x2402) AM_READ_PORT("P2")
- AM_RANGE(0x2403, 0x2403) AM_READ_PORT("DSW3")
- AM_RANGE(0x2500, 0x2500) AM_READ_PORT("DSW1")
- AM_RANGE(0x2501, 0x2501) AM_READ_PORT("DSW2")
- AM_RANGE(0x2800, 0x288f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2890, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(mikie_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(mikie_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x5fff) AM_ROM // Machine checks for extra rom
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mikie_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_WRITENOP // sound command latch
- AM_RANGE(0x8001, 0x8001) AM_WRITENOP // ???
- AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76489a_device, write) // trigger read of latch
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8004, 0x8004) AM_DEVWRITE("sn2", sn76489a_device, write) // trigger read of latch
- AM_RANGE(0x8005, 0x8005) AM_READ(mikie_sh_timer_r)
- AM_RANGE(0x8079, 0x8079) AM_WRITENOP // ???
- AM_RANGE(0xa003, 0xa003) AM_WRITENOP // ???
-ADDRESS_MAP_END
+void mikie_state::mikie_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x2000, 0x2007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x2100, 0x2100).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2200, 0x2200).w(this, FUNC(mikie_state::mikie_palettebank_w));
+ map(0x2300, 0x2300).nopw(); // ???
+ map(0x2400, 0x2400).portr("SYSTEM").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x2401, 0x2401).portr("P1");
+ map(0x2402, 0x2402).portr("P2");
+ map(0x2403, 0x2403).portr("DSW3");
+ map(0x2500, 0x2500).portr("DSW1");
+ map(0x2501, 0x2501).portr("DSW2");
+ map(0x2800, 0x288f).ram().share("spriteram");
+ map(0x2890, 0x37ff).ram();
+ map(0x3800, 0x3bff).ram().w(this, FUNC(mikie_state::mikie_colorram_w)).share("colorram");
+ map(0x3c00, 0x3fff).ram().w(this, FUNC(mikie_state::mikie_videoram_w)).share("videoram");
+ map(0x4000, 0x5fff).rom(); // Machine checks for extra rom
+ map(0x6000, 0xffff).rom();
+}
+
+void mikie_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ 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(0x8003, 0x8003).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8004, 0x8004).w("sn2", FUNC(sn76489a_device::write)); // trigger read of latch
+ map(0x8005, 0x8005).r(this, FUNC(mikie_state::mikie_sh_timer_r));
+ map(0x8079, 0x8079).nopw(); // ???
+ map(0xa003, 0xa003).nopw(); // ???
+}
/*************************************
*
diff --git a/src/mame/drivers/mikro80.cpp b/src/mame/drivers/mikro80.cpp
index 4e31463ed5b..45c24638eb3 100644
--- a/src/mame/drivers/mikro80.cpp
+++ b/src/mame/drivers/mikro80.cpp
@@ -20,34 +20,38 @@
#include "speaker.h"
/* Address maps */
-ADDRESS_MAP_START(mikro80_state::mikro80_mem)
- AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x0800, 0xdfff ) AM_RAM // RAM
- AM_RANGE( 0xe000, 0xe7ff ) AM_RAM AM_SHARE("cursor_ram")// Video RAM
- AM_RANGE( 0xe800, 0xefff ) AM_RAM AM_SHARE("video_ram") // Video RAM
- AM_RANGE( 0xf000, 0xf7ff ) AM_RAM // RAM
- AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mikro80_state::mikro80_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x01, 0x01) AM_READWRITE(mikro80_tape_r, mikro80_tape_w )
- AM_RANGE( 0x04, 0x07) AM_READWRITE(mikro80_keyboard_r, mikro80_keyboard_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mikro80_state::kristall_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mikro80_state::radio99_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x01, 0x01) AM_READWRITE(mikro80_tape_r, mikro80_tape_w )
- AM_RANGE( 0x04, 0x04) AM_WRITE(radio99_sound_w)
- AM_RANGE( 0x05, 0x05) AM_READWRITE(mikro80_8255_portc_r, mikro80_8255_portc_w )
- AM_RANGE( 0x06, 0x06) AM_READ(mikro80_8255_portb_r)
- AM_RANGE( 0x07, 0x07) AM_WRITE(mikro80_8255_porta_w)
-ADDRESS_MAP_END
+void mikro80_state::mikro80_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankrw("bank1"); // First bank
+ map(0x0800, 0xdfff).ram(); // RAM
+ map(0xe000, 0xe7ff).ram().share("cursor_ram");// Video RAM
+ map(0xe800, 0xefff).ram().share("video_ram"); // Video RAM
+ map(0xf000, 0xf7ff).ram(); // RAM
+ map(0xf800, 0xffff).rom(); // System ROM
+}
+
+void mikro80_state::mikro80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x01, 0x01).rw(this, FUNC(mikro80_state::mikro80_tape_r), FUNC(mikro80_state::mikro80_tape_w));
+ map(0x04, 0x07).rw(this, FUNC(mikro80_state::mikro80_keyboard_r), FUNC(mikro80_state::mikro80_keyboard_w));
+}
+
+void mikro80_state::kristall_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void mikro80_state::radio99_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x01, 0x01).rw(this, FUNC(mikro80_state::mikro80_tape_r), FUNC(mikro80_state::mikro80_tape_w));
+ map(0x04, 0x04).w(this, FUNC(mikro80_state::radio99_sound_w));
+ map(0x05, 0x05).rw(this, FUNC(mikro80_state::mikro80_8255_portc_r), FUNC(mikro80_state::mikro80_8255_portc_w));
+ map(0x06, 0x06).r(this, FUNC(mikro80_state::mikro80_8255_portb_r));
+ map(0x07, 0x07).w(this, FUNC(mikro80_state::mikro80_8255_porta_w));
+}
/* Input ports */
static INPUT_PORTS_START( mikro80 )
diff --git a/src/mame/drivers/mikromik.cpp b/src/mame/drivers/mikromik.cpp
index 99a059f2d1b..37a2b0a57c3 100644
--- a/src/mame/drivers/mikromik.cpp
+++ b/src/mame/drivers/mikromik.cpp
@@ -264,9 +264,10 @@ WRITE8_MEMBER( mm1_state::ls259_w )
// ADDRESS_MAP( mm1_map )
//-------------------------------------------------
-ADDRESS_MAP_START(mm1_state::mm1_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void mm1_state::mm1_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(mm1_state::read), FUNC(mm1_state::write));
+}
diff --git a/src/mame/drivers/mikrosha.cpp b/src/mame/drivers/mikrosha.cpp
index c4e029f4552..033c45e69ee 100644
--- a/src/mame/drivers/mikrosha.cpp
+++ b/src/mame/drivers/mikrosha.cpp
@@ -49,22 +49,24 @@ MACHINE_RESET_MEMBER(mikrosha_state,mikrosha)
}
/* Address maps */
-ADDRESS_MAP_START(mikrosha_state::mikrosha_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0xc000, 0xc003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x07fc)
- AM_RANGE( 0xc800, 0xc803 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x07fc)
- AM_RANGE( 0xd000, 0xd001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x07fe) // video
- AM_RANGE( 0xd800, 0xd803 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) AM_MIRROR(0x07fc) // Timer
- AM_RANGE( 0xe000, 0xf7ff ) AM_READ(radio_cpu_state_r) // Not connected
- AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mikrosha_state::mikrosha_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0xff ) AM_READWRITE(radio_io_r,radio_io_w)
-ADDRESS_MAP_END
+void mikrosha_state::mikrosha_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0x7fff).ram(); // RAM
+ map(0xc000, 0xc003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x07fc);
+ map(0xc800, 0xc803).rw(m_ppi8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x07fc);
+ map(0xd000, 0xd001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x07fe); // video
+ map(0xd800, 0xd803).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).mirror(0x07fc); // Timer
+ map(0xe000, 0xf7ff).r(this, FUNC(mikrosha_state::radio_cpu_state_r)); // Not connected
+ map(0xf800, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf800, 0xffff).rom(); // System ROM
+}
+
+void mikrosha_state::mikrosha_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0xff).rw(this, FUNC(mikrosha_state::radio_io_r), FUNC(mikrosha_state::radio_io_w));
+}
/* Input ports */
static INPUT_PORTS_START( mikrosha )
diff --git a/src/mame/drivers/mil4000.cpp b/src/mame/drivers/mil4000.cpp
index c2c8fe97767..1474af7f647 100644
--- a/src/mame/drivers/mil4000.cpp
+++ b/src/mame/drivers/mil4000.cpp
@@ -425,48 +425,50 @@ WRITE16_MEMBER(mil4000_state::unk_w)
}
-ADDRESS_MAP_START(mil4000_state::mil4000_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram") // CY62256L-70, U77
- AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram") // CY62256L-70, U77
- AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram") // CY62256L-70, U78
- AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE(sc3_vram_w) AM_SHARE("sc3_vram") // CY62256L-70, U78
- AM_RANGE(0x708000, 0x708001) AM_READ_PORT("IN0")
- AM_RANGE(0x708002, 0x708003) AM_READ_PORT("IN1")
- AM_RANGE(0x708004, 0x708005) AM_READ(hvretrace_r)
- AM_RANGE(0x708006, 0x708007) AM_READ_PORT("IN2")
- AM_RANGE(0x708008, 0x708009) AM_WRITE(output_w)
- AM_RANGE(0x708010, 0x708011) AM_NOP //touch screen
- AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-
- AM_RANGE(0x780000, 0x780fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // 2x CY62256L-70 (U7 & U8).
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mil4000_state::chewheel_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram") // V62C518256L-35P (U7).
- AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram") // V62C518256L-35P (U7).
- AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram") // V62C518256L-35P (U8).
- AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE(sc3_vram_w) AM_SHARE("sc3_vram") // V62C518256L-35P (U8).
-
- AM_RANGE(0x51000c, 0x51000f) AM_READ(unk_r) // no idea what's mapped here.
- AM_RANGE(0x510000, 0x51000f) AM_WRITE(unk_w) // no idea what's mapped here.
-
- AM_RANGE(0x708000, 0x708001) AM_READ_PORT("IN0")
- AM_RANGE(0x708002, 0x708003) AM_READ_PORT("IN1")
- AM_RANGE(0x708004, 0x708005) AM_READ(hvretrace_r)
- AM_RANGE(0x708006, 0x708007) AM_READ_PORT("IN2")
- AM_RANGE(0x708008, 0x708009) AM_WRITE(output_w)
- AM_RANGE(0x708010, 0x708011) AM_READWRITE(chewheel_mcu_r, chewheel_mcu_w)
- AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-
- AM_RANGE(0x780000, 0x780fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xff3fff) AM_RAM AM_SHARE("nvram") // V62C51864L-70P (U77).
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // V62C51864L-70P (U78).
-
-ADDRESS_MAP_END
+void mil4000_state::mil4000_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x500000, 0x503fff).ram().w(this, FUNC(mil4000_state::sc0_vram_w)).share("sc0_vram"); // CY62256L-70, U77
+ map(0x504000, 0x507fff).ram().w(this, FUNC(mil4000_state::sc1_vram_w)).share("sc1_vram"); // CY62256L-70, U77
+ map(0x508000, 0x50bfff).ram().w(this, FUNC(mil4000_state::sc2_vram_w)).share("sc2_vram"); // CY62256L-70, U78
+ map(0x50c000, 0x50ffff).ram().w(this, FUNC(mil4000_state::sc3_vram_w)).share("sc3_vram"); // CY62256L-70, U78
+ map(0x708000, 0x708001).portr("IN0");
+ map(0x708002, 0x708003).portr("IN1");
+ map(0x708004, 0x708005).r(this, FUNC(mil4000_state::hvretrace_r));
+ map(0x708006, 0x708007).portr("IN2");
+ map(0x708008, 0x708009).w(this, FUNC(mil4000_state::output_w));
+ map(0x708010, 0x708011).noprw(); //touch screen
+ map(0x70801f, 0x70801f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+
+ map(0x780000, 0x780fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xffffff).ram().share("nvram"); // 2x CY62256L-70 (U7 & U8).
+
+}
+
+void mil4000_state::chewheel_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x500000, 0x503fff).ram().w(this, FUNC(mil4000_state::sc0_vram_w)).share("sc0_vram"); // V62C518256L-35P (U7).
+ map(0x504000, 0x507fff).ram().w(this, FUNC(mil4000_state::sc1_vram_w)).share("sc1_vram"); // V62C518256L-35P (U7).
+ map(0x508000, 0x50bfff).ram().w(this, FUNC(mil4000_state::sc2_vram_w)).share("sc2_vram"); // V62C518256L-35P (U8).
+ map(0x50c000, 0x50ffff).ram().w(this, FUNC(mil4000_state::sc3_vram_w)).share("sc3_vram"); // V62C518256L-35P (U8).
+
+ map(0x51000c, 0x51000f).r(this, FUNC(mil4000_state::unk_r)); // no idea what's mapped here.
+ map(0x510000, 0x51000f).w(this, FUNC(mil4000_state::unk_w)); // no idea what's mapped here.
+
+ map(0x708000, 0x708001).portr("IN0");
+ map(0x708002, 0x708003).portr("IN1");
+ map(0x708004, 0x708005).r(this, FUNC(mil4000_state::hvretrace_r));
+ map(0x708006, 0x708007).portr("IN2");
+ map(0x708008, 0x708009).w(this, FUNC(mil4000_state::output_w));
+ map(0x708010, 0x708011).rw(this, FUNC(mil4000_state::chewheel_mcu_r), FUNC(mil4000_state::chewheel_mcu_w));
+ map(0x70801f, 0x70801f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+
+ map(0x780000, 0x780fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xff3fff).ram().share("nvram"); // V62C51864L-70P (U77).
+ map(0xffc000, 0xffffff).ram(); // V62C51864L-70P (U78).
+
+}
static INPUT_PORTS_START( mil4000 )
PORT_START("IN0")
diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp
index 1f9b0a1d4b3..6a61b74ce9d 100644
--- a/src/mame/drivers/milton6805.cpp
+++ b/src/mame/drivers/milton6805.cpp
@@ -107,9 +107,10 @@ private:
void prg_map(address_map &map);
};
-ADDRESS_MAP_START(milton_state::prg_map)
- AM_RANGE(0x800, 0xfff) AM_ROM AM_REGION("maincpu", 0) // Internal ROM
-ADDRESS_MAP_END
+void milton_state::prg_map(address_map &map)
+{
+ map(0x800, 0xfff).rom().region("maincpu", 0); // Internal ROM
+}
static INPUT_PORTS_START( milton )
INPUT_PORTS_END
diff --git a/src/mame/drivers/milwaukee.cpp b/src/mame/drivers/milwaukee.cpp
index e703e31f450..637dd79d4f5 100644
--- a/src/mame/drivers/milwaukee.cpp
+++ b/src/mame/drivers/milwaukee.cpp
@@ -36,17 +36,18 @@ private:
//required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(milwaukee_state::mem_map)
- AM_RANGE(0x0000, 0xf7ff) AM_RAM
+void milwaukee_state::mem_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).ram();
//AM_RANGE(0xf800, 0xf87f) expansion i/o
- AM_RANGE(0xf880, 0xf881) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // terminal
- AM_RANGE(0xf882, 0xf883) AM_DEVREADWRITE("acia2", acia6850_device, read, write) // remote
- AM_RANGE(0xf884, 0xf887) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // centronics
- AM_RANGE(0xf888, 0xf88b) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xf88c, 0xf88f) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // disk controller
- AM_RANGE(0xf890, 0xf891) AM_DEVREADWRITE("ssda", mc6852_device, read, write)
- AM_RANGE(0xf898, 0xffff) AM_ROM AM_REGION("roms", 0x0098)
-ADDRESS_MAP_END
+ map(0xf880, 0xf881).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // terminal
+ map(0xf882, 0xf883).rw("acia2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // remote
+ map(0xf884, 0xf887).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // centronics
+ map(0xf888, 0xf88b).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xf88c, 0xf88f).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // disk controller
+ map(0xf890, 0xf891).rw("ssda", FUNC(mc6852_device::read), FUNC(mc6852_device::write));
+ map(0xf898, 0xffff).rom().region("roms", 0x0098);
+}
static INPUT_PORTS_START( milwaukee )
INPUT_PORTS_END
diff --git a/src/mame/drivers/mini2440.cpp b/src/mame/drivers/mini2440.cpp
index 2cd32dbb6d5..977f2eef4f4 100644
--- a/src/mame/drivers/mini2440.cpp
+++ b/src/mame/drivers/mini2440.cpp
@@ -207,10 +207,11 @@ void mini2440_state::machine_reset()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(mini2440_state::mini2440_map)
+void mini2440_state::mini2440_map(address_map &map)
+{
// AM_RANGE(0x00000000, 0x001fffff) AM_ROM
- AM_RANGE(0x30000000, 0x37ffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x30000000, 0x37ffffff).ram();
+}
/***************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp
index a6486d0d874..1b845e4f3c7 100644
--- a/src/mame/drivers/miniboy7.cpp
+++ b/src/mame/drivers/miniboy7.cpp
@@ -345,19 +345,20 @@ WRITE_LINE_MEMBER(miniboy7_state::pia_ca2_w)
* Memory Map Information *
***********************************/
-ADDRESS_MAP_START(miniboy7_state::miniboy7_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM? */
- AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("videoram_a")
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("colorram_a")
- AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("videoram_b")
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("colorram_b")
- AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2801, 0x2801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x3000, 0x3001) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) // FIXME
- AM_RANGE(0x3080, 0x3083) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x3800, 0x3800) AM_READNOP // R (right after each read, another value is loaded to the ACCU, so it lacks of sense)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void miniboy7_state::miniboy7_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM? */
+ map(0x0800, 0x0fff).ram().share("videoram_a");
+ map(0x1000, 0x17ff).ram().share("colorram_a");
+ map(0x1800, 0x1fff).ram().share("videoram_b");
+ map(0x2000, 0x27ff).ram().share("colorram_b");
+ map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x3000, 0x3001).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // FIXME
+ map(0x3080, 0x3083).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x3800, 0x3800).nopr(); // R (right after each read, another value is loaded to the ACCU, so it lacks of sense)
+ map(0x4000, 0xffff).rom();
+}
/*
diff --git a/src/mame/drivers/miniframe.cpp b/src/mame/drivers/miniframe.cpp
index aa62c8cc28f..a9119e46b15 100644
--- a/src/mame/drivers/miniframe.cpp
+++ b/src/mame/drivers/miniframe.cpp
@@ -188,20 +188,22 @@ uint32_t miniframe_state::screen_update(screen_device &screen, bitmap_ind16 &bit
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(miniframe_state::miniframe_mem)
- AM_RANGE(0x000000, 0x3fffff) AM_DEVICE("ramrombank", address_map_bank_device, amap16)
- AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("mapram")
- AM_RANGE(0x450000, 0x450001) AM_WRITE(general_ctrl_w)
- AM_RANGE(0x800000, 0x81ffff) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xc40000, 0xc40007) AM_DEVREADWRITE8("baudgen", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xc90000, 0xc90003) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(miniframe_state::ramrombank_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0x400000, 0x7fffff) AM_READWRITE(ram_mmu_r, ram_mmu_w)
-ADDRESS_MAP_END
+void miniframe_state::miniframe_mem(address_map &map)
+{
+ map(0x000000, 0x3fffff).m(m_ramrombank, FUNC(address_map_bank_device::amap16));
+ map(0x400000, 0x4007ff).ram().share("mapram");
+ map(0x450000, 0x450001).w(this, FUNC(miniframe_state::general_ctrl_w));
+ map(0x800000, 0x81ffff).rom().region("bootrom", 0);
+ map(0xc00000, 0xc00007).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xc40000, 0xc40007).rw("baudgen", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xc90000, 0xc90003).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+}
+
+void miniframe_state::ramrombank_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("bootrom", 0);
+ map(0x400000, 0x7fffff).rw(this, FUNC(miniframe_state::ram_mmu_r), FUNC(miniframe_state::ram_mmu_w));
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/minitel_2_rpic.cpp b/src/mame/drivers/minitel_2_rpic.cpp
index 953f3476935..b58eb5a4d8b 100644
--- a/src/mame/drivers/minitel_2_rpic.cpp
+++ b/src/mame/drivers/minitel_2_rpic.cpp
@@ -277,9 +277,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(minitel_state::minitel_scanline)
m_ts9347->update_scanline((uint16_t)param);
}
-ADDRESS_MAP_START(minitel_state::mem_prg)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void minitel_state::mem_prg(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
ADDRESS_MAP_START(minitel_state::mem_io)
AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dev_keyb_ser_r, dev_crtl_reg_w)
diff --git a/src/mame/drivers/minivadr.cpp b/src/mame/drivers/minivadr.cpp
index 70bbec71ba8..18ceb27eb6c 100644
--- a/src/mame/drivers/minivadr.cpp
+++ b/src/mame/drivers/minivadr.cpp
@@ -87,11 +87,12 @@ uint32_t minivadr_state::screen_update_minivadr(screen_device &screen, bitmap_rg
}
-ADDRESS_MAP_START(minivadr_state::minivadr_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe008, 0xe008) AM_READ_PORT("INPUTS") AM_WRITENOP // W - ???
-ADDRESS_MAP_END
+void minivadr_state::minivadr_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0xa000, 0xbfff).ram().share("videoram");
+ map(0xe008, 0xe008).portr("INPUTS").nopw(); // W - ???
+}
static INPUT_PORTS_START( minivadr )
diff --git a/src/mame/drivers/mirage.cpp b/src/mame/drivers/mirage.cpp
index 16eb3a27668..6a0c07e48fd 100644
--- a/src/mame/drivers/mirage.cpp
+++ b/src/mame/drivers/mirage.cpp
@@ -158,29 +158,30 @@ WRITE16_MEMBER(miragemj_state::okim0_rombank_w)
m_oki_bgm->set_rom_bank(data & 0x7);
}
-ADDRESS_MAP_START(miragemj_state::mirage_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void miragemj_state::mirage_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
/* tilemaps */
- AM_RANGE(0x100000, 0x101fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) // 0x100000 - 0x101fff tested
- AM_RANGE(0x102000, 0x103fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) // 0x102000 - 0x102fff tested
+ map(0x100000, 0x101fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); // 0x100000 - 0x101fff tested
+ map(0x102000, 0x103fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); // 0x102000 - 0x102fff tested
/* linescroll */
- AM_RANGE(0x110000, 0x110bff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x112000, 0x112bff) AM_RAM AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x130000, 0x1307ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x14000f) AM_DEVREADWRITE8("oki_sfx", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x150000, 0x15000f) AM_DEVREADWRITE8("oki_bgm", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x160000, 0x160001) AM_WRITENOP
- AM_RANGE(0x168000, 0x16800f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x16a000, 0x16a001) AM_WRITENOP
- AM_RANGE(0x16c000, 0x16c001) AM_WRITE(okim1_rombank_w)
- AM_RANGE(0x16c002, 0x16c003) AM_WRITE(okim0_rombank_w)
- AM_RANGE(0x16c004, 0x16c005) AM_WRITE(mjmux_w)
- AM_RANGE(0x16c006, 0x16c007) AM_READ(mjmux_r)
- AM_RANGE(0x16e000, 0x16e001) AM_WRITENOP
- AM_RANGE(0x16e002, 0x16e003) AM_READ_PORT("SYSTEM_IN")
- AM_RANGE(0x170000, 0x173fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x110000, 0x110bff).ram().share("pf1_rowscroll");
+ map(0x112000, 0x112bff).ram().share("pf2_rowscroll");
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x130000, 0x1307ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x14000f).rw(m_oki_sfx, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x150000, 0x15000f).rw(m_oki_bgm, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x160000, 0x160001).nopw();
+ map(0x168000, 0x16800f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x16a000, 0x16a001).nopw();
+ map(0x16c000, 0x16c001).w(this, FUNC(miragemj_state::okim1_rombank_w));
+ map(0x16c002, 0x16c003).w(this, FUNC(miragemj_state::okim0_rombank_w));
+ map(0x16c004, 0x16c005).w(this, FUNC(miragemj_state::mjmux_w));
+ map(0x16c006, 0x16c007).r(this, FUNC(miragemj_state::mjmux_r));
+ map(0x16e000, 0x16e001).nopw();
+ map(0x16e002, 0x16e003).portr("SYSTEM_IN");
+ map(0x170000, 0x173fff).ram();
+}
static INPUT_PORTS_START( mirage )
diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp
index 81d9140c60d..9bf20baf2e3 100644
--- a/src/mame/drivers/mirax.cpp
+++ b/src/mame/drivers/mirax.cpp
@@ -317,37 +317,39 @@ WRITE_LINE_MEMBER(mirax_state::flip_screen_y_w)
m_flipscreen_y = state;
}
-ADDRESS_MAP_START(mirax_state::mirax_main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc800, 0xd7ff) AM_RAM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xea00, 0xea3f) AM_RAM AM_SHARE("colorram") //per-column color + bank bits for the videoram
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1")
- AM_RANGE(0xf100, 0xf100) AM_READ_PORT("P2")
- AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW1")
- AM_RANGE(0xf300, 0xf300) AM_READNOP //watchdog? value is always read then discarded
- AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW2")
- AM_RANGE(0xf500, 0xf507) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_cmd_w)
+void mirax_state::mirax_main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc800, 0xd7ff).ram();
+ map(0xe000, 0xe3ff).ram().share("videoram");
+ map(0xe800, 0xe9ff).ram().share("spriteram");
+ map(0xea00, 0xea3f).ram().share("colorram"); //per-column color + bank bits for the videoram
+ map(0xf000, 0xf000).portr("P1");
+ map(0xf100, 0xf100).portr("P2");
+ map(0xf200, 0xf200).portr("DSW1");
+ map(0xf300, 0xf300).nopr(); //watchdog? value is always read then discarded
+ map(0xf400, 0xf400).portr("DSW2");
+ map(0xf500, 0xf507).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xf800, 0xf800).w(this, FUNC(mirax_state::sound_cmd_w));
// AM_RANGE(0xf900, 0xf900) //sound cmd mirror? ack?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(mirax_state::mirax_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+void mirax_state::mirax_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- AM_RANGE(0xe000, 0xe000) AM_WRITENOP
- AM_RANGE(0xe001, 0xe001) AM_WRITENOP
- AM_RANGE(0xe003, 0xe003) AM_WRITE(ay1_sel) //1st ay ?
+ map(0xe000, 0xe000).nopw();
+ map(0xe001, 0xe001).nopw();
+ map(0xe003, 0xe003).w(this, FUNC(mirax_state::ay1_sel)); //1st ay ?
- AM_RANGE(0xe400, 0xe400) AM_WRITENOP
- AM_RANGE(0xe401, 0xe401) AM_WRITENOP
- AM_RANGE(0xe403, 0xe403) AM_WRITE(ay2_sel) //2nd ay ?
+ map(0xe400, 0xe400).nopw();
+ map(0xe401, 0xe401).nopw();
+ map(0xe403, 0xe403).w(this, FUNC(mirax_state::ay2_sel)); //2nd ay ?
- AM_RANGE(0xf900, 0xf9ff) AM_WRITE(audio_w)
-ADDRESS_MAP_END
+ map(0xf900, 0xf9ff).w(this, FUNC(mirax_state::audio_w));
+}
/* verified from Z80 code */
diff --git a/src/mame/drivers/missb2.cpp b/src/mame/drivers/missb2.cpp
index e48415eb0f1..d40c46c9547 100644
--- a/src/mame/drivers/missb2.cpp
+++ b/src/mame/drivers/missb2.cpp
@@ -179,56 +179,59 @@ READ8_MEMBER(missb2_state::missb2_oki_r)
/* Memory Maps */
-ADDRESS_MAP_START(missb2_state::maincpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x007c) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write)
- AM_RANGE(0xfa01, 0xfa01) AM_MIRROR(0x007c) AM_READ(common_sound_semaphores_r)
- AM_RANGE(0xfa03, 0xfa03) AM_MIRROR(0x007c) AM_WRITE(bublbobl_soundcpu_reset_w)
- AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xfb40, 0xfb40) AM_WRITE(bublbobl_bankswitch_w)
- AM_RANGE(0xfc00, 0xfcff) AM_RAM
- AM_RANGE(0xfd00, 0xfdff) AM_RAM // ???
- AM_RANGE(0xfe00, 0xfe03) AM_RAM // ???
- AM_RANGE(0xfe80, 0xfe83) AM_RAM // ???
- AM_RANGE(0xff00, 0xff00) AM_READ_PORT("DSW1")
- AM_RANGE(0xff01, 0xff01) AM_READ_PORT("DSW2")
- AM_RANGE(0xff02, 0xff02) AM_READ_PORT("P1")
- AM_RANGE(0xff03, 0xff03) AM_READ_PORT("P2")
- AM_RANGE(0xff94, 0xff94) AM_WRITENOP // ???
- AM_RANGE(0xff98, 0xff98) AM_WRITENOP // ???
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(missb2_state::subcpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank2") // ROM data for the background palette ram
- AM_RANGE(0xa000, 0xafff) AM_ROMBANK("bank3") // ROM data for the background palette ram
- AM_RANGE(0xb000, 0xb1ff) AM_ROM // banked ???
- AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("bgpalette", palette_device, write8) AM_SHARE("bgpalette")
- AM_RANGE(0xc800, 0xcfff) AM_RAM // main ???
- AM_RANGE(0xd000, 0xd000) AM_WRITE(missb2_bg_bank_w)
- AM_RANGE(0xd002, 0xd002) AM_WRITENOP
- AM_RANGE(0xd003, 0xd003) AM_RAM AM_SHARE("bgvram")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
+void missb2_state::maincpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdcff).ram().share("videoram");
+ map(0xdd00, 0xdfff).ram().share("objectram");
+ map(0xe000, 0xf7ff).ram().share("share1");
+ map(0xf800, 0xf9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xfa00, 0xfa00).mirror(0x007c).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write));
+ map(0xfa01, 0xfa01).mirror(0x007c).r(this, FUNC(missb2_state::common_sound_semaphores_r));
+ map(0xfa03, 0xfa03).mirror(0x007c).w(this, FUNC(missb2_state::bublbobl_soundcpu_reset_w));
+ map(0xfa80, 0xfa80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xfb40, 0xfb40).w(this, FUNC(missb2_state::bublbobl_bankswitch_w));
+ map(0xfc00, 0xfcff).ram();
+ map(0xfd00, 0xfdff).ram(); // ???
+ map(0xfe00, 0xfe03).ram(); // ???
+ map(0xfe80, 0xfe83).ram(); // ???
+ map(0xff00, 0xff00).portr("DSW1");
+ map(0xff01, 0xff01).portr("DSW2");
+ map(0xff02, 0xff02).portr("P1");
+ map(0xff03, 0xff03).portr("P2");
+ map(0xff94, 0xff94).nopw(); // ???
+ map(0xff98, 0xff98).nopw(); // ???
+}
+
+void missb2_state::subcpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x9000, 0x9fff).bankr("bank2"); // ROM data for the background palette ram
+ map(0xa000, 0xafff).bankr("bank3"); // ROM data for the background palette ram
+ map(0xb000, 0xb1ff).rom(); // banked ???
+ map(0xc000, 0xc1ff).ram().w(m_bgpalette, FUNC(palette_device::write8)).share("bgpalette");
+ map(0xc800, 0xcfff).ram(); // main ???
+ map(0xd000, 0xd000).w(this, FUNC(missb2_state::missb2_bg_bank_w));
+ map(0xd002, 0xd002).nopw();
+ map(0xd003, 0xd003).ram().share("bgvram");
+ map(0xe000, 0xf7ff).ram().share("share1");
+}
// Looks like the original bublbobl code modified to support the OKI M6295.
// due to some really wacky bugs in the way the oki6295 was hacked in place, writes will happen to
// many addresses other than 9000: 9000-9001, 0000-0001, 3827-3828, 44a8-44a9
-ADDRESS_MAP_START(missb2_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_READWRITE(missb2_oki_r, missb2_oki_w) //AM_MIRROR(0x0fff) ???
- AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x0ffc) AM_DEVREAD("main_to_sound", generic_latch_8_device, read) AM_DEVWRITE("sound_to_main", generic_latch_8_device, write)
- AM_RANGE(0xb001, 0xb001) AM_MIRROR(0x0ffc) AM_READ(common_sound_semaphores_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<0>)
- AM_RANGE(0xb002, 0xb002) AM_MIRROR(0x0ffc) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>)
- AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM?
-ADDRESS_MAP_END
+void missb2_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9000).rw(this, FUNC(missb2_state::missb2_oki_r), FUNC(missb2_state::missb2_oki_w)); //AM_MIRROR(0x0fff) ???
+ map(0xa000, 0xa001).mirror(0x0ffe).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
+ map(0xb000, 0xb000).mirror(0x0ffc).r(m_main_to_sound, FUNC(generic_latch_8_device::read)).w(m_sound_to_main, FUNC(generic_latch_8_device::write));
+ map(0xb001, 0xb001).mirror(0x0ffc).r(this, FUNC(missb2_state::common_sound_semaphores_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<0>));
+ map(0xb002, 0xb002).mirror(0x0ffc).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>));
+ map(0xe000, 0xefff).rom(); // space for diagnostic ROM?
+}
/* Input Ports */
diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp
index bf3b3bb23d6..d5eb1ed1aba 100644
--- a/src/mame/drivers/missile.cpp
+++ b/src/mame/drivers/missile.cpp
@@ -946,14 +946,16 @@ READ8_MEMBER(missile_state::bootleg_r)
*************************************/
/* complete memory map derived from schematics (implemented above) */
-ADDRESS_MAP_START(missile_state::main_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(missile_r, missile_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void missile_state::main_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(missile_state::missile_r), FUNC(missile_state::missile_w)).share("videoram");
+}
/* adjusted from the above to get the bootlegs to boot */
-ADDRESS_MAP_START(missile_state::bootleg_main_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(bootleg_r, bootleg_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void missile_state::bootleg_main_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(missile_state::bootleg_r), FUNC(missile_state::bootleg_w)).share("videoram");
+}
/*************************************
*
diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp
index 18c14d502fa..390b0f5413b 100644
--- a/src/mame/drivers/mitchell.cpp
+++ b/src/mame/drivers/mitchell.cpp
@@ -315,70 +315,76 @@ WRITE8_MEMBER(mitchell_state::input_w)
*
*************************************/
-ADDRESS_MAP_START(mitchell_state::mgakuen_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) /* palette RAM */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(mgakuen_videoram_r, mgakuen_videoram_w) AM_SHARE("videoram") /* char RAM */
- AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */
- AM_RANGE(0xf000, 0xffff) AM_READWRITE(mgakuen_objram_r, mgakuen_objram_w) /* OBJ RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::mitchell_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r,pang_paletteram_w) /* Banked palette RAM */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r,pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r,pang_videoram_w) AM_SHARE("videoram")/* Banked char / OBJ RAM */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::mitchell_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
- AM_RANGE(0x00, 0x02) AM_READ(input_r) /* The Mahjong games and Block Block need special input treatment */
- AM_RANGE(0x01, 0x01) AM_WRITE(input_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("ymsnd", ym2413_device, data_port_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("ymsnd", ym2413_device, register_port_w)
- AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0x06, 0x06) AM_NOP /* watchdog? IRQ ack? video buffering? */
- AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */
- AM_RANGE(0x08, 0x08) AM_WRITE(eeprom_cs_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(eeprom_clock_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(eeprom_serial_w)
-ADDRESS_MAP_END
+void mitchell_state::mgakuen_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)); /* palette RAM */
+ map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */
+ map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::mgakuen_videoram_r), FUNC(mitchell_state::mgakuen_videoram_w)).share("videoram"); /* char RAM */
+ map(0xe000, 0xefff).ram(); /* Work RAM */
+ map(0xf000, 0xffff).rw(this, FUNC(mitchell_state::mgakuen_objram_r), FUNC(mitchell_state::mgakuen_objram_w)); /* OBJ RAM */
+}
+
+void mitchell_state::mitchell_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).rw(this, FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */
+ map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */
+ map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram");/* Banked char / OBJ RAM */
+ map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */
+}
+
+void mitchell_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+ map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */
+}
+
+void mitchell_state::mitchell_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(mitchell_state::pang_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */
+ map(0x00, 0x02).r(this, FUNC(mitchell_state::input_r)); /* The Mahjong games and Block Block need special input treatment */
+ map(0x01, 0x01).w(this, FUNC(mitchell_state::input_w));
+ map(0x02, 0x02).w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */
+ map(0x03, 0x03).w("ymsnd", FUNC(ym2413_device::data_port_w));
+ map(0x04, 0x04).w("ymsnd", FUNC(ym2413_device::register_port_w));
+ map(0x05, 0x05).r(this, FUNC(mitchell_state::pang_port5_r)).w(m_oki, FUNC(okim6295_device::write));
+ map(0x06, 0x06).noprw(); /* watchdog? IRQ ack? video buffering? */
+ map(0x07, 0x07).w(this, FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */
+ map(0x08, 0x08).w(this, FUNC(mitchell_state::eeprom_cs_w));
+ map(0x10, 0x10).w(this, FUNC(mitchell_state::eeprom_clock_w));
+ map(0x18, 0x18).w(this, FUNC(mitchell_state::eeprom_serial_w));
+}
/* spangbl */
-ADDRESS_MAP_START(mitchell_state::spangbl_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r, pang_paletteram_w) /* Banked palette RAM */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram")/* Attribute RAM */
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r, pang_videoram_w) AM_SHARE("videoram") /* Banked char / OBJ RAM */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::spangbl_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x02) AM_READ(input_r)
- AM_RANGE(0x00, 0x00) AM_WRITE(pangbl_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
- AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("SYS0")
- AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */
- AM_RANGE(0x08, 0x08) AM_WRITE(eeprom_cs_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(eeprom_clock_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(eeprom_serial_w)
-ADDRESS_MAP_END
+void mitchell_state::spangbl_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1").nopw();
+ map(0xc000, 0xc7ff).rw(this, FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */
+ map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram");/* Attribute RAM */
+ map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram"); /* Banked char / OBJ RAM */
+ map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */
+}
+
+void mitchell_state::spangbl_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x02).r(this, FUNC(mitchell_state::input_r));
+ map(0x00, 0x00).w(this, FUNC(mitchell_state::pangbl_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */
+ map(0x02, 0x02).w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */
+ map(0x03, 0x03).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x05, 0x05).portr("SYS0");
+ map(0x06, 0x06).nopw(); /* watchdog? irq ack? */
+ map(0x07, 0x07).w(this, FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */
+ map(0x08, 0x08).w(this, FUNC(mitchell_state::eeprom_cs_w));
+ map(0x10, 0x10).w(this, FUNC(mitchell_state::eeprom_clock_w));
+ map(0x18, 0x18).w(this, FUNC(mitchell_state::eeprom_serial_w));
+}
WRITE8_MEMBER(mitchell_state::sound_bankswitch_w)
{
@@ -387,25 +393,27 @@ WRITE8_MEMBER(mitchell_state::sound_bankswitch_w)
m_soundbank->set_entry(data & 7);
}
-ADDRESS_MAP_START(mitchell_state::spangbl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0xf000, 0xf4ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::pangba_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xf000, 0xf4ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void mitchell_state::spangbl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xe000, 0xe000).w(this, FUNC(mitchell_state::sound_bankswitch_w));
+ map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xec00, 0xec01).w("ymsnd", FUNC(ym2413_device::write));
+ map(0xf000, 0xf4ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void mitchell_state::pangba_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xe000, 0xe000).w(this, FUNC(mitchell_state::sound_bankswitch_w));
+ map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xf000, 0xf4ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/**** Monsters World ****/
@@ -414,13 +422,14 @@ WRITE8_MEMBER(mitchell_state::oki_banking_w)
m_oki->set_rom_bank(data & 3);
}
-ADDRESS_MAP_START(mitchell_state::mstworld_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_banking_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void mitchell_state::mstworld_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(mitchell_state::oki_banking_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
WRITE8_MEMBER(mitchell_state::mstworld_sound_w)
{
@@ -428,18 +437,19 @@ WRITE8_MEMBER(mitchell_state::mstworld_sound_w)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(mitchell_state::mstworld_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(mstworld_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(mstworld_sound_w) /* write to sound cpu */
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") /* dips? */
- AM_RANGE(0x05, 0x05) AM_READ_PORT("SYS0") /* special? */
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2") /* dips? */
- AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0x07, 0x07) AM_WRITE(mstworld_video_bank_w) /* Video RAM bank register */
-ADDRESS_MAP_END
+void mitchell_state::mstworld_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(mitchell_state::mstworld_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */
+ map(0x03, 0x03).portr("DSW0").w(this, FUNC(mitchell_state::mstworld_sound_w)); /* write to sound cpu */
+ map(0x04, 0x04).portr("DSW1"); /* dips? */
+ map(0x05, 0x05).portr("SYS0"); /* special? */
+ map(0x06, 0x06).portr("DSW2"); /* dips? */
+ map(0x06, 0x06).nopw(); /* watchdog? irq ack? */
+ map(0x07, 0x07).w(this, FUNC(mitchell_state::mstworld_video_bank_w)); /* Video RAM bank register */
+}
/*************************************
diff --git a/src/mame/drivers/mits680b.cpp b/src/mame/drivers/mits680b.cpp
index e70d2bea596..403d8161ed4 100644
--- a/src/mame/drivers/mits680b.cpp
+++ b/src/mame/drivers/mits680b.cpp
@@ -49,13 +49,14 @@ READ8_MEMBER( mits680b_state::status_check_r )
}
-ADDRESS_MAP_START(mits680b_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM // 1024 bytes RAM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xf002, 0xf002) AM_READ(status_check_r)
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void mits680b_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram(); // 1024 bytes RAM
+ map(0xf000, 0xf001).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xf002, 0xf002).r(this, FUNC(mits680b_state::status_check_r));
+ map(0xff00, 0xffff).rom().region("roms", 0);
+}
/* Input ports */
static INPUT_PORTS_START( mits680b )
diff --git a/src/mame/drivers/mjkjidai.cpp b/src/mame/drivers/mjkjidai.cpp
index 075622f2806..489cc7b688a 100644
--- a/src/mame/drivers/mjkjidai.cpp
+++ b/src/mame/drivers/mjkjidai.cpp
@@ -80,22 +80,24 @@ WRITE8_MEMBER(mjkjidai_state::keyboard_select_hi_w)
}
-ADDRESS_MAP_START(mjkjidai_state::mjkjidai_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("nvram") // cleared and initialized on startup if bit 6 of port 00 is 0
- AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mjkjidai_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mjkjidai_state::mjkjidai_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x30, 0x30) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x40, 0x40) AM_WRITE(adpcm_w)
-ADDRESS_MAP_END
+void mjkjidai_state::mjkjidai_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xdfff).ram().share("nvram"); // cleared and initialized on startup if bit 6 of port 00 is 0
+ map(0xe000, 0xf7ff).ram().w(this, FUNC(mjkjidai_state::mjkjidai_videoram_w)).share("videoram");
+}
+
+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(0x40, 0x40).w(this, FUNC(mjkjidai_state::adpcm_w));
+}
static INPUT_PORTS_START( mjkjidai )
diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp
index 4122704a7b0..e1fe3623d60 100644
--- a/src/mame/drivers/mjsenpu.cpp
+++ b/src/mame/drivers/mjsenpu.cpp
@@ -214,35 +214,37 @@ READ32_MEMBER(mjsenpu_state::muxed_inputs_r)
return 0x00000000;// 0xffffffff;
}
-ADDRESS_MAP_START(mjsenpu_state::mjsenpu_32bit_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("user2",0) // main game rom
+void mjsenpu_state::mjsenpu_32bit_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("mainram");
+ map(0x40000000, 0x401fffff).rom().region("user2", 0); // main game rom
- AM_RANGE(0x80000000, 0x8001ffff) AM_READWRITE(vram_r,vram_w)
+ map(0x80000000, 0x8001ffff).rw(this, FUNC(mjsenpu_state::vram_r), FUNC(mjsenpu_state::vram_w));
- AM_RANGE(0xffc00000, 0xffc000ff) AM_READWRITE8(palette_low_r, palette_low_w, 0xffffffff)
- AM_RANGE(0xffd00000, 0xffd000ff) AM_READWRITE8(palette_high_r, palette_high_w, 0xffffffff)
+ map(0xffc00000, 0xffc000ff).rw(this, FUNC(mjsenpu_state::palette_low_r), FUNC(mjsenpu_state::palette_low_w));
+ map(0xffd00000, 0xffd000ff).rw(this, FUNC(mjsenpu_state::palette_high_r), FUNC(mjsenpu_state::palette_high_w));
- AM_RANGE(0xffe00000, 0xffe007ff) AM_RAM AM_SHARE("nvram")
+ map(0xffe00000, 0xffe007ff).ram().share("nvram");
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1",0) // boot rom
-ADDRESS_MAP_END
+ map(0xfff80000, 0xffffffff).rom().region("user1", 0); // boot rom
+}
-ADDRESS_MAP_START(mjsenpu_state::mjsenpu_io)
- AM_RANGE(0x4000, 0x4003) AM_READ(muxed_inputs_r)
- AM_RANGE(0x4010, 0x4013) AM_READ_PORT("IN1")
+void mjsenpu_state::mjsenpu_io(address_map &map)
+{
+ map(0x4000, 0x4003).r(this, FUNC(mjsenpu_state::muxed_inputs_r));
+ map(0x4010, 0x4013).portr("IN1");
- AM_RANGE(0x4020, 0x4023) AM_WRITE8( control_w, 0x000000ff)
+ map(0x4023, 0x4023).w(this, FUNC(mjsenpu_state::control_w));
- AM_RANGE(0x4030, 0x4033) AM_READ_PORT("DSW1")
- AM_RANGE(0x4040, 0x4043) AM_READ_PORT("DSW2")
- AM_RANGE(0x4050, 0x4053) AM_READ_PORT("DSW3")
+ map(0x4030, 0x4033).portr("DSW1");
+ map(0x4040, 0x4043).portr("DSW2");
+ map(0x4050, 0x4053).portr("DSW3");
- AM_RANGE(0x4060, 0x4063) AM_WRITE8( mux_w, 0x000000ff)
+ map(0x4063, 0x4063).w(this, FUNC(mjsenpu_state::mux_w));
- AM_RANGE(0x4070, 0x4073) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
+ map(0x4073, 0x4073).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
static INPUT_PORTS_START( mjsenpu )
diff --git a/src/mame/drivers/mjsister.cpp b/src/mame/drivers/mjsister.cpp
index b43906bd9e2..0faf7dfc82c 100644
--- a/src/mame/drivers/mjsister.cpp
+++ b/src/mame/drivers/mjsister.cpp
@@ -316,27 +316,29 @@ READ8_MEMBER(mjsister_state::keys_r)
*
*************************************/
-ADDRESS_MAP_START(mjsister_state::mjsister_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(videoram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mjsister_state::mjsister_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITENOP /* HD46505? */
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x11, 0x11) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x20, 0x20) AM_READ(keys_r)
- AM_RANGE(0x21, 0x21) AM_READ_PORT("IN0")
- AM_RANGE(0x30, 0x30) AM_DEVWRITE("mainlatch1", ls259_device, write_nibble_d0)
- AM_RANGE(0x31, 0x31) AM_DEVWRITE("mainlatch2", ls259_device, write_nibble_d0)
- AM_RANGE(0x32, 0x32) AM_WRITE(input_sel1_w)
- AM_RANGE(0x33, 0x33) AM_WRITE(input_sel2_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(dac_adr_s_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(dac_adr_e_w)
-ADDRESS_MAP_END
+void mjsister_state::mjsister_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1").w(this, FUNC(mjsister_state::videoram_w));
+}
+
+void mjsister_state::mjsister_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).nopw(); /* HD46505? */
+ map(0x10, 0x10).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x11, 0x11).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x12, 0x12).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x20, 0x20).r(this, FUNC(mjsister_state::keys_r));
+ map(0x21, 0x21).portr("IN0");
+ map(0x30, 0x30).w("mainlatch1", FUNC(ls259_device::write_nibble_d0));
+ map(0x31, 0x31).w("mainlatch2", FUNC(ls259_device::write_nibble_d0));
+ map(0x32, 0x32).w(this, FUNC(mjsister_state::input_sel1_w));
+ map(0x33, 0x33).w(this, FUNC(mjsister_state::input_sel2_w));
+ map(0x34, 0x34).w(this, FUNC(mjsister_state::dac_adr_s_w));
+ map(0x35, 0x35).w(this, FUNC(mjsister_state::dac_adr_e_w));
+}
/*************************************
diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp
index b5847b4dc99..f891946207d 100644
--- a/src/mame/drivers/mk1.cpp
+++ b/src/mame/drivers/mk1.cpp
@@ -108,16 +108,18 @@ WRITE8_MEMBER( mk1_state::mk1_f8_w )
if ( ! ( m_f8[1] & 8 ) ) m_led[3] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
}
-ADDRESS_MAP_START(mk1_state::mk1_mem)
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM
- AM_RANGE( 0x1800, 0x18ff ) AM_RAM
-ADDRESS_MAP_END
+void mk1_state::mk1_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x1800, 0x18ff).ram();
+}
-ADDRESS_MAP_START(mk1_state::mk1_io)
- AM_RANGE( 0x0, 0x1 ) AM_READWRITE( mk1_f8_r, mk1_f8_w )
- AM_RANGE( 0xc, 0xf ) AM_DEVREADWRITE("f3853", f3853_device, read, write )
-ADDRESS_MAP_END
+void mk1_state::mk1_io(address_map &map)
+{
+ map(0x0, 0x1).rw(this, 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));
+}
static INPUT_PORTS_START( mk1 )
diff --git a/src/mame/drivers/mk14.cpp b/src/mame/drivers/mk14.cpp
index 0c37886d600..76c7cecb31d 100644
--- a/src/mame/drivers/mk14.cpp
+++ b/src/mame/drivers/mk14.cpp
@@ -107,16 +107,17 @@ WRITE8_MEMBER( mk14_state::display_w )
}
}
-ADDRESS_MAP_START(mk14_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x0fff)
- AM_RANGE(0x000, 0x1ff) AM_MIRROR(0x600) AM_ROM // ROM
- AM_RANGE(0x800, 0x87f) AM_MIRROR(0x600) AM_DEVREADWRITE("ic8", ins8154_device, ins8154_r, ins8154_w) // I/O
- AM_RANGE(0x880, 0x8ff) AM_MIRROR(0x600) AM_RAM // 128 I/O chip RAM
- AM_RANGE(0x900, 0x9ff) AM_MIRROR(0x400) AM_READWRITE(keyboard_r, display_w)
- AM_RANGE(0xb00, 0xbff) AM_RAM // VDU RAM
- AM_RANGE(0xf00, 0xfff) AM_RAM // Standard RAM
-ADDRESS_MAP_END
+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::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(this, FUNC(mk14_state::keyboard_r), FUNC(mk14_state::display_w));
+ map(0xb00, 0xbff).ram(); // VDU RAM
+ map(0xf00, 0xfff).ram(); // Standard RAM
+}
/* Input ports */
diff --git a/src/mame/drivers/mk2.cpp b/src/mame/drivers/mk2.cpp
index 8127c6b1cb3..615196571dc 100644
--- a/src/mame/drivers/mk2.cpp
+++ b/src/mame/drivers/mk2.cpp
@@ -86,13 +86,14 @@ public:
// only lower 12 address bits on bus!
-ADDRESS_MAP_START(mk2_state::mk2_mem)
- AM_RANGE( 0x0000, 0x01ff) AM_RAM // 2 2111, should be mirrored
- AM_RANGE( 0x0b00, 0x0b0f) AM_DEVREADWRITE("miot", mos6530_device, read, write)
- AM_RANGE( 0x0b80, 0x0bbf) AM_RAM // rriot ram
- AM_RANGE( 0x0c00, 0x0fff) AM_ROM // rriot rom
- AM_RANGE( 0x1000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void mk2_state::mk2_mem(address_map &map)
+{
+ map(0x0000, 0x01ff).ram(); // 2 2111, should be mirrored
+ map(0x0b00, 0x0b0f).rw(m_miot, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
+ map(0x0b80, 0x0bbf).ram(); // rriot ram
+ map(0x0c00, 0x0fff).rom(); // rriot rom
+ map(0x1000, 0x1fff).rom();
+}
static INPUT_PORTS_START( mk2 )
PORT_START("EXTRA")
diff --git a/src/mame/drivers/mk85.cpp b/src/mame/drivers/mk85.cpp
index 88179ad6e90..f7116ac6fa8 100644
--- a/src/mame/drivers/mk85.cpp
+++ b/src/mame/drivers/mk85.cpp
@@ -42,11 +42,12 @@ public:
};
-ADDRESS_MAP_START(mk85_state::mk85_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_MIRROR(0x4000)
- AM_RANGE( 0x8000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+void mk85_state::mk85_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom().mirror(0x4000);
+ map(0x8000, 0xffff).ram();
+}
/* Input ports */
static INPUT_PORTS_START( mk85 )
diff --git a/src/mame/drivers/mk90.cpp b/src/mame/drivers/mk90.cpp
index b1c7da08647..eaf92500a3b 100644
--- a/src/mame/drivers/mk90.cpp
+++ b/src/mame/drivers/mk90.cpp
@@ -37,11 +37,12 @@ public:
};
-ADDRESS_MAP_START(mk90_state::mk90_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAM // RAM
- AM_RANGE(0x4000, 0x7fff) AM_ROM // Extension ROM
- AM_RANGE(0x8000, 0xffff) AM_ROM // Main ROM
+void mk90_state::mk90_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).ram(); // RAM
+ map(0x4000, 0x7fff).rom(); // Extension ROM
+ map(0x8000, 0xffff).rom(); // Main ROM
// AM_RANGE(0xe800, 0xe801) LCD address
// AM_RANGE(0xe802, 0xe803) LCD data
// AM_RANGE(0xe810, 0xe810) serial bus controller data
@@ -49,7 +50,7 @@ ADDRESS_MAP_START(mk90_state::mk90_mem)
// AM_RANGE(0xe814, 0xe814) serial bus controller control/status
// AM_RANGE(0xe816, 0xe816) serial bus controller command
// AM_RANGE(0xea00, 0xea7e) RTC
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( mk90 )
diff --git a/src/mame/drivers/mkit09.cpp b/src/mame/drivers/mkit09.cpp
index ebbb1f9c6d3..aff136cee4b 100644
--- a/src/mame/drivers/mkit09.cpp
+++ b/src/mame/drivers/mkit09.cpp
@@ -70,20 +70,22 @@ private:
};
-ADDRESS_MAP_START(mkit09_state::mkit09_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x07ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0xa004,0xa007) AM_MIRROR(0x1ff8) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xe000,0xe7ff) AM_MIRROR(0x1800) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mkit09_state::mkit09a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x07ff) AM_RAM
- AM_RANGE(0xe600,0xe603) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xee00,0xefff) AM_RAM
- AM_RANGE(0xf000,0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void mkit09_state::mkit09_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0xa004, 0xa007).mirror(0x1ff8).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe000, 0xe7ff).mirror(0x1800).rom().region("roms", 0);
+}
+
+void mkit09_state::mkit09a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).ram();
+ map(0xe600, 0xe603).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xee00, 0xefff).ram();
+ map(0xf000, 0xffff).rom().region("roms", 0);
+}
/* Input ports */
static INPUT_PORTS_START( mkit09 )
diff --git a/src/mame/drivers/mlanding.cpp b/src/mame/drivers/mlanding.cpp
index d729529f6fc..88680b1ab1e 100644
--- a/src/mame/drivers/mlanding.cpp
+++ b/src/mame/drivers/mlanding.cpp
@@ -716,31 +716,33 @@ READ8_MEMBER(mlanding_state::motor_r)
*
*************************************/
-ADDRESS_MAP_START(mlanding_state::main_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x100000, 0x17ffff) AM_RAM AM_SHARE("g_ram")
- AM_RANGE(0x180000, 0x1bffff) AM_RAM AM_SHARE("cha_ram")
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAMBANK("dma_ram")
- AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("sub_com_ram")
- AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(dma_start_w)
- AM_RANGE(0x1d0002, 0x1d0003) AM_WRITE(dma_stop_w)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x240004, 0x240005) AM_READNOP // Watchdog
- AM_RANGE(0x240006, 0x240007) AM_READ(input_r)
- AM_RANGE(0x280000, 0x280fff) AM_READWRITE(power_ram_r, power_ram_w)
- AM_RANGE(0x290000, 0x290001) AM_READ_PORT("IN1")
- AM_RANGE(0x290002, 0x290003) AM_READ_PORT("IN0")
- AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(output_w)
- AM_RANGE(0x2b0000, 0x2b0001) AM_READ(analog1_msb_r)
- AM_RANGE(0x2b0002, 0x2b0003) AM_READ(analog1_lsb_r)
- AM_RANGE(0x2b0004, 0x2b0005) AM_READ(analog2_msb_r)
- AM_RANGE(0x2b0006, 0x2b0007) AM_READ(analog2_lsb_r)
- AM_RANGE(0x2c0000, 0x2c0001) AM_READ(analog3_msb_r)
- AM_RANGE(0x2c0002, 0x2c0003) AM_READ(analog3_lsb_r)
- AM_RANGE(0x2d0000, 0x2d0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x2d0002, 0x2d0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
-ADDRESS_MAP_END
+void mlanding_state::main_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x080000, 0x08ffff).ram();
+ map(0x100000, 0x17ffff).ram().share("g_ram");
+ map(0x180000, 0x1bffff).ram().share("cha_ram");
+ map(0x1c0000, 0x1c3fff).bankrw("dma_ram");
+ map(0x1c4000, 0x1cffff).ram().share("sub_com_ram");
+ map(0x1d0000, 0x1d0001).w(this, FUNC(mlanding_state::dma_start_w));
+ map(0x1d0002, 0x1d0003).w(this, FUNC(mlanding_state::dma_stop_w));
+ map(0x200000, 0x20ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x240004, 0x240005).nopr(); // Watchdog
+ map(0x240006, 0x240007).r(this, FUNC(mlanding_state::input_r));
+ map(0x280000, 0x280fff).rw(this, FUNC(mlanding_state::power_ram_r), FUNC(mlanding_state::power_ram_w));
+ map(0x290000, 0x290001).portr("IN1");
+ map(0x290002, 0x290003).portr("IN0");
+ map(0x2a0000, 0x2a0001).w(this, FUNC(mlanding_state::output_w));
+ map(0x2b0000, 0x2b0001).r(this, FUNC(mlanding_state::analog1_msb_r));
+ map(0x2b0002, 0x2b0003).r(this, FUNC(mlanding_state::analog1_lsb_r));
+ map(0x2b0004, 0x2b0005).r(this, FUNC(mlanding_state::analog2_msb_r));
+ map(0x2b0006, 0x2b0007).r(this, FUNC(mlanding_state::analog2_lsb_r));
+ map(0x2c0000, 0x2c0001).r(this, FUNC(mlanding_state::analog3_msb_r));
+ map(0x2c0002, 0x2c0003).r(this, FUNC(mlanding_state::analog3_lsb_r));
+ map(0x2d0000, 0x2d0001).nopr();
+ map(0x2d0001, 0x2d0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x2d0003, 0x2d0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+}
@@ -750,16 +752,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mlanding_state::sub_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_RAM AM_SHARE("dsp_prog")
- AM_RANGE(0x060000, 0x060001) AM_WRITE(dsp_control_w)
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAMBANK("dma_ram")
- AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("sub_com_ram")
- AM_RANGE(0x200000, 0x2007ff) AM_RAM
- AM_RANGE(0x200800, 0x203fff) AM_RAM AM_SHARE("dot_ram")
-ADDRESS_MAP_END
+void mlanding_state::sub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x043fff).ram();
+ map(0x050000, 0x0503ff).ram().share("dsp_prog");
+ map(0x060000, 0x060001).w(this, FUNC(mlanding_state::dsp_control_w));
+ map(0x1c0000, 0x1c3fff).bankrw("dma_ram");
+ map(0x1c4000, 0x1cffff).ram().share("sub_com_ram");
+ map(0x200000, 0x2007ff).ram();
+ map(0x200800, 0x203fff).ram().share("dot_ram");
+}
@@ -769,13 +772,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mlanding_state::dsp_map_prog)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("dsp_prog")
-ADDRESS_MAP_END
+void mlanding_state::dsp_map_prog(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("dsp_prog");
+}
-ADDRESS_MAP_START(mlanding_state::dsp_map_data)
- AM_RANGE(0x0400, 0x1fff) AM_RAM AM_SHARE("dot_ram")
-ADDRESS_MAP_END
+void mlanding_state::dsp_map_data(address_map &map)
+{
+ map(0x0400, 0x1fff).ram().share("dot_ram");
+}
/*************************************
*
@@ -783,28 +788,30 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mlanding_state::audio_map_prog)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(msm5205_2_start_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(msm5205_2_stop_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(msm5205_1_start_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(msm5205_1_stop_w)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(msm5205_1_addr_lo_w)
- AM_RANGE(0xf200, 0xf200) AM_WRITE(msm5205_1_addr_hi_w)
- AM_RANGE(0xf400, 0xf400) AM_WRITENOP
- AM_RANGE(0xf600, 0xf600) AM_WRITENOP // MSM5205 2 volume?
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP
- AM_RANGE(0xfa00, 0xfa00) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mlanding_state::audio_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void mlanding_state::audio_map_prog(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb000).w(this, FUNC(mlanding_state::msm5205_2_start_w));
+ map(0xc000, 0xc000).w(this, FUNC(mlanding_state::msm5205_2_stop_w));
+ map(0xd000, 0xd000).w(this, FUNC(mlanding_state::msm5205_1_start_w));
+ map(0xe000, 0xe000).w(this, FUNC(mlanding_state::msm5205_1_stop_w));
+ map(0xf000, 0xf000).w(this, FUNC(mlanding_state::msm5205_1_addr_lo_w));
+ map(0xf200, 0xf200).w(this, FUNC(mlanding_state::msm5205_1_addr_hi_w));
+ map(0xf400, 0xf400).nopw();
+ map(0xf600, 0xf600).nopw(); // MSM5205 2 volume?
+ map(0xf800, 0xf800).nopw();
+ map(0xfa00, 0xfa00).nopw();
+}
+
+void mlanding_state::audio_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
@@ -814,13 +821,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(mlanding_state::mecha_map_prog)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("power_ram")
- AM_RANGE(0x9000, 0x9003) AM_WRITENOP
- AM_RANGE(0x9800, 0x9805) AM_READ(motor_r)
-ADDRESS_MAP_END
+void mlanding_state::mecha_map_prog(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8fff).ram().share("power_ram");
+ map(0x9000, 0x9003).nopw();
+ map(0x9800, 0x9805).r(this, FUNC(mlanding_state::motor_r));
+}
diff --git a/src/mame/drivers/mmagic.cpp b/src/mame/drivers/mmagic.cpp
index 293065e7598..1d111de6ba1 100644
--- a/src/mame/drivers/mmagic.cpp
+++ b/src/mame/drivers/mmagic.cpp
@@ -117,24 +117,26 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(mmagic_state::mmagic_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x2000, 0x21ff) AM_RAM
- AM_RANGE(0x3000, 0x31ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x8002, 0x8002) AM_WRITE(ball_x_w)
- AM_RANGE(0x8003, 0x8003) AM_WRITE(ball_y_w)
- AM_RANGE(0x8004, 0x8004) AM_READ(vblank_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mmagic_state::mmagic_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_WRITE(color_w)
- AM_RANGE(0x81, 0x81) AM_WRITE(audio_w)
- AM_RANGE(0x85, 0x85) AM_READ_PORT("paddle")
- AM_RANGE(0x86, 0x86) AM_READ_PORT("buttons")
- AM_RANGE(0x87, 0x87) AM_READ_PORT("dipswitch")
-ADDRESS_MAP_END
+void mmagic_state::mmagic_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x17ff).rom();
+ map(0x2000, 0x21ff).ram();
+ map(0x3000, 0x31ff).ram().share("vram");
+ map(0x8002, 0x8002).w(this, FUNC(mmagic_state::ball_x_w));
+ map(0x8003, 0x8003).w(this, FUNC(mmagic_state::ball_y_w));
+ map(0x8004, 0x8004).r(this, FUNC(mmagic_state::vblank_r));
+}
+
+void mmagic_state::mmagic_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x80).w(this, FUNC(mmagic_state::color_w));
+ map(0x81, 0x81).w(this, FUNC(mmagic_state::audio_w));
+ map(0x85, 0x85).portr("paddle");
+ map(0x86, 0x86).portr("buttons");
+ map(0x87, 0x87).portr("dipswitch");
+}
//**************************************************************************
diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp
index 0a9605b0c68..9a3d2cb31cc 100644
--- a/src/mame/drivers/mmd1.cpp
+++ b/src/mame/drivers/mmd1.cpp
@@ -249,40 +249,44 @@ READ8_MEMBER( mmd1_state::mmd1_keyboard_r )
return m_return_code;
}
-ADDRESS_MAP_START(mmd1_state::mmd1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x00ff ) AM_ROM // Main ROM
- AM_RANGE( 0x0100, 0x01ff ) AM_ROM // Expansion slot
- AM_RANGE( 0x0200, 0x02ff ) AM_RAM
- AM_RANGE( 0x0300, 0x03ff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mmd1_state::mmd1_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE( 0x00, 0x00 ) AM_READWRITE(mmd1_keyboard_r, mmd1_port0_w)
- AM_RANGE( 0x01, 0x01 ) AM_WRITE(mmd1_port1_w)
- AM_RANGE( 0x02, 0x02 ) AM_WRITE(mmd1_port2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mmd1_state::mmd2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
- AM_RANGE(0x0400, 0x0fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank4")
- AM_RANGE(0xd800, 0xe3ff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank6")
- AM_RANGE(0xe400, 0xe7ff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank8")
- AM_RANGE(0xfc00, 0xfcff) AM_RAM // Scratchpad
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mmd1_state::mmd2_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0x00 ) AM_WRITE(mmd1_port0_w)
- AM_RANGE( 0x01, 0x01 ) AM_READWRITE(mmd2_01_r,mmd1_port1_w)
- AM_RANGE( 0x02, 0x02 ) AM_WRITE(mmd1_port2_w)
- AM_RANGE( 0x03, 0x03 ) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
- AM_RANGE( 0x04, 0x04 ) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w)
- AM_RANGE( 0x05, 0x07 ) AM_READ(mmd2_bank_r)
-ADDRESS_MAP_END
+void mmd1_state::mmd1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).rom(); // Main ROM
+ map(0x0100, 0x01ff).rom(); // Expansion slot
+ map(0x0200, 0x02ff).ram();
+ map(0x0300, 0x03ff).ram();
+}
+
+void mmd1_state::mmd1_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x07);
+ map(0x00, 0x00).rw(this, FUNC(mmd1_state::mmd1_keyboard_r), FUNC(mmd1_state::mmd1_port0_w));
+ map(0x01, 0x01).w(this, FUNC(mmd1_state::mmd1_port1_w));
+ map(0x02, 0x02).w(this, FUNC(mmd1_state::mmd1_port2_w));
+}
+
+void mmd1_state::mmd2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).bankr("bank1").bankw("bank2");
+ map(0x0400, 0x0fff).bankr("bank3").bankw("bank4");
+ map(0xd800, 0xe3ff).bankr("bank5").bankw("bank6");
+ map(0xe400, 0xe7ff).bankr("bank7").bankw("bank8");
+ map(0xfc00, 0xfcff).ram(); // Scratchpad
+}
+
+void mmd1_state::mmd2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).w(this, FUNC(mmd1_state::mmd1_port0_w));
+ map(0x01, 0x01).rw(this, FUNC(mmd1_state::mmd2_01_r), FUNC(mmd1_state::mmd1_port1_w));
+ map(0x02, 0x02).w(this, FUNC(mmd1_state::mmd1_port2_w));
+ map(0x03, 0x03).rw("i8279", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
+ map(0x04, 0x04).rw("i8279", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0x05, 0x07).r(this, FUNC(mmd1_state::mmd2_bank_r));
+}
/* Input ports */
diff --git a/src/mame/drivers/mmm.cpp b/src/mame/drivers/mmm.cpp
index 8028066b8df..11fb2325545 100644
--- a/src/mame/drivers/mmm.cpp
+++ b/src/mame/drivers/mmm.cpp
@@ -57,20 +57,28 @@ WRITE8_MEMBER(mmm_state::ay_porta_w)
logerror("Writing %02X to AY-3-8910 port A\n", data);
}
-ADDRESS_MAP_START(mmm_state::mem_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x40ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mmm_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(strobe_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x05, 0x05) AM_DEVREAD("aysnd", ay8910_device, data_r)
- ;map(0x06, 0x06).select(0x30).lrw8("ctc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_ctc->read(space, offset >> 4, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_ctc->write(space, offset >> 4, data, mem_mask); });
- AM_RANGE(0x07, 0x07) AM_READ(inputs_r)
-ADDRESS_MAP_END
+void mmm_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x40ff).ram();
+}
+
+void mmm_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(mmm_state::strobe_w));
+ map(0x03, 0x03).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x04, 0x04).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x05, 0x05).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x06, 0x06).select(0x30).lrw8("ctc_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_ctc->read(space, offset >> 4, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_ctc->write(space, offset >> 4, data, mem_mask);
+ });
+ map(0x07, 0x07).r(this, FUNC(mmm_state::inputs_r));
+}
static INPUT_PORTS_START( mmm )
diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp
index 697a2e8d654..9cc92bacd76 100644
--- a/src/mame/drivers/mmodular.cpp
+++ b/src/mame/drivers/mmodular.cpp
@@ -84,79 +84,84 @@ private:
};
-ADDRESS_MAP_START(mmodular_state::alm16_mem)
- AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
-
- AM_RANGE( 0xc00000, 0xc00001 ) AM_DEVREAD8("board", mephisto_board_device, input_r, 0xff00)
- AM_RANGE( 0xc80000, 0xc80001 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff00)
- AM_RANGE( 0xd00000, 0xd00001 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff00)
- AM_RANGE( 0xf00000, 0xf00003 ) AM_READ_PORT("KEY1")
- AM_RANGE( 0xf00004, 0xf00007 ) AM_READ_PORT("KEY2")
- AM_RANGE( 0xf00008, 0xf0000b ) AM_READ_PORT("KEY3")
- AM_RANGE( 0xd80000, 0xd80001 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff00)
- AM_RANGE( 0xd80008, 0xd80009 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff00)
-
- AM_RANGE( 0x400000, 0x47ffff ) AM_RAM
- AM_RANGE( 0x800000, 0x803fff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void mmodular_state::alm16_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+
+ map(0xc00000, 0xc00000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0xc80000, 0xc80000).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0xd00000, 0xd00000).w("board", FUNC(mephisto_board_device::led_w));
+ map(0xf00000, 0xf00003).portr("KEY1");
+ map(0xf00004, 0xf00007).portr("KEY2");
+ map(0xf00008, 0xf0000b).portr("KEY3");
+ map(0xd80000, 0xd80000).w("display", FUNC(mephisto_display_modul_device::latch_w));
+ map(0xd80008, 0xd80008).w("display", FUNC(mephisto_display_modul_device::io_w));
+
+ map(0x400000, 0x47ffff).ram();
+ map(0x800000, 0x803fff).ram().share("nvram");
+}
-ADDRESS_MAP_START(mmodular_state::van16_mem)
- AM_IMPORT_FROM(alm16_mem)
+void mmodular_state::van16_mem(address_map &map)
+{
+ alm16_mem(map);
- AM_RANGE( 0x000000, 0x03ffff ) AM_ROM
+ map(0x000000, 0x03ffff).rom();
// AM_RANGE( 0xe80004, 0xe80005 ) AM_WRITE(write_unknown2 ) // Bavaria sensors
// AM_RANGE( 0xe80002, 0xe80003 ) AM_READ(read_unknown1 ) // Bavaria sensors
// AM_RANGE( 0xe80006, 0xe80007 ) AM_READ(read_unknown3 ) // Bavaria sensors
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mmodular_state::alm32_mem)
- AM_RANGE( 0x00000000, 0x0001ffff ) AM_ROM
-
- AM_RANGE( 0x800000fc, 0x800000ff ) AM_DEVREAD8("board", mephisto_board_device, input_r, 0xff000000)
- AM_RANGE( 0x88000000, 0x88000007 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff000000)
- AM_RANGE( 0x90000000, 0x90000007 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff000000)
- AM_RANGE( 0x800000ec, 0x800000ef ) AM_READ_PORT("KEY1")
- AM_RANGE( 0x800000f4, 0x800000f7 ) AM_READ_PORT("KEY2")
- AM_RANGE( 0x800000f8, 0x800000fb ) AM_READ_PORT("KEY3")
- AM_RANGE( 0xa0000000, 0xa0000003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff000000)
- AM_RANGE( 0xa0000010, 0xa0000013 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff000000)
+}
- AM_RANGE( 0x40000000, 0x400fffff ) AM_RAM
- AM_RANGE( 0xa8000000, 0xa8007fff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void mmodular_state::alm32_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom();
+
+ map(0x800000fc, 0x800000fc).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x88000000, 0x88000007).w("board", FUNC(mephisto_board_device::mux_w)).umask32(0xff000000);
+ map(0x90000000, 0x90000007).w("board", FUNC(mephisto_board_device::led_w)).umask32(0xff000000);
+ map(0x800000ec, 0x800000ef).portr("KEY1");
+ map(0x800000f4, 0x800000f7).portr("KEY2");
+ map(0x800000f8, 0x800000fb).portr("KEY3");
+ map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display_modul_device::latch_w));
+ map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display_modul_device::io_w));
+
+ map(0x40000000, 0x400fffff).ram();
+ map(0xa8000000, 0xa8007fff).ram().share("nvram");
+}
-ADDRESS_MAP_START(mmodular_state::van32_mem)
- AM_IMPORT_FROM(alm32_mem)
+void mmodular_state::van32_mem(address_map &map)
+{
+ alm32_mem(map);
- AM_RANGE( 0x00000000, 0x0003ffff ) AM_ROM
+ map(0x00000000, 0x0003ffff).rom();
// AM_RANGE( 0x98000008, 0x9800000b ) AM_WRITE(write_unknown2 ) // Bavaria sensors
// AM_RANGE( 0x98000004, 0x98000007 ) AM_READ(read_unknown1 ) // Bavaria sensors
// AM_RANGE( 0x9800000c, 0x9800000f ) AM_READ(read_unknown3 ) // Bavaria sensors
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(mmodular_state::gen32_mem)
- AM_RANGE( 0x00000000, 0x0003ffff ) AM_ROM
+void mmodular_state::gen32_mem(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).rom();
- AM_RANGE( 0xc8000004, 0xc8000007 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff000000)
- AM_RANGE( 0xd0000004, 0xd0000007 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff000000)
- AM_RANGE( 0xc0000000, 0xc0000003 ) AM_DEVREAD8("board", mephisto_board_device, input_r, 0xff000000)
- AM_RANGE( 0xf0000004, 0xf0000007 ) AM_READ_PORT("KEY1")
- AM_RANGE( 0xf0000008, 0xf000000b ) AM_READ_PORT("KEY2")
- AM_RANGE( 0xf0000010, 0xf0000013 ) AM_READ_PORT("KEY3")
- AM_RANGE( 0xe0000000, 0xe0000003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff000000)
- AM_RANGE( 0xe0000010, 0xe0000013 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff000000)
+ map(0xc8000004, 0xc8000004).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0xd0000004, 0xd0000004).w("board", FUNC(mephisto_board_device::led_w));
+ map(0xc0000000, 0xc0000000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0xf0000004, 0xf0000007).portr("KEY1");
+ map(0xf0000008, 0xf000000b).portr("KEY2");
+ map(0xf0000010, 0xf0000013).portr("KEY3");
+ map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display_modul_device::latch_w));
+ map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display_modul_device::io_w));
// AM_RANGE( 0xd8000008, 0xd800000b ) AM_WRITE(write_unknown2 ) // Bavaria sensors
// AM_RANGE( 0xd8000004, 0xd8000007 ) AM_READ(read_unknown1 ) // Bavaria sensors
// AM_RANGE( 0xd800000c, 0xd800000f ) AM_READ(read_unknown3 ) // Bavaria sensors
- AM_RANGE( 0x40000000, 0x4007ffff ) AM_RAM
- AM_RANGE( 0x80000000, 0x8003ffff ) AM_RAM
- AM_RANGE( 0xe8000000, 0xe8007fff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+ map(0x40000000, 0x4007ffff).ram();
+ map(0x80000000, 0x8003ffff).ram();
+ map(0xe8000000, 0xe8007fff).ram().share("nvram");
+}
READ8_MEMBER(berlinp_state::berlinp_input_r)
@@ -167,18 +172,19 @@ READ8_MEMBER(berlinp_state::berlinp_input_r)
return m_board->input_r(space, offset) ^ 0xff;
}
-ADDRESS_MAP_START(berlinp_state::berlinp_mem)
- AM_RANGE( 0x000000, 0x03ffff ) AM_ROM
+void berlinp_state::berlinp_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
- AM_RANGE( 0x800000, 0x800003 ) AM_READ8(berlinp_input_r, 0xff000000)
- AM_RANGE( 0x900000, 0x900003 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff000000)
- AM_RANGE( 0xa00000, 0xa00003 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff000000)
- AM_RANGE( 0xb00000, 0xb00003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff000000)
- AM_RANGE( 0xc00000, 0xc00003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff000000)
+ map(0x800000, 0x800000).r(this, FUNC(berlinp_state::berlinp_input_r));
+ map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w));
+ map(0xb00000, 0xb00000).w("display", FUNC(mephisto_display_modul_device::io_w));
+ map(0xc00000, 0xc00000).w("display", FUNC(mephisto_display_modul_device::latch_w));
- AM_RANGE( 0x400000, 0x4fffff ) AM_RAM
- AM_RANGE( 0xd00000, 0xd07fff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+ map(0x400000, 0x4fffff).ram();
+ map(0xd00000, 0xd07fff).ram().share("nvram");
+}
static INPUT_PORTS_START( alm16 )
diff --git a/src/mame/drivers/mod8.cpp b/src/mame/drivers/mod8.cpp
index e71c55be4a8..f67c6649b71 100644
--- a/src/mame/drivers/mod8.cpp
+++ b/src/mame/drivers/mod8.cpp
@@ -110,19 +110,21 @@ READ8_MEMBER( mod8_state::tty_r )
return d;
}
-ADDRESS_MAP_START(mod8_state::mod8_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000,0x6ff) AM_ROM
- AM_RANGE(0x700,0xfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mod8_state::mod8_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_READ(tty_r)
- AM_RANGE(0x0a,0x0a) AM_WRITE(out_w)
- AM_RANGE(0x0b,0x0b) AM_WRITE(tty_w)
-ADDRESS_MAP_END
+void mod8_state::mod8_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000, 0x6ff).rom();
+ map(0x700, 0xfff).ram();
+}
+
+void mod8_state::mod8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(mod8_state::tty_r));
+ map(0x0a, 0x0a).w(this, FUNC(mod8_state::out_w));
+ map(0x0b, 0x0b).w(this, FUNC(mod8_state::tty_w));
+}
/* Input ports */
static INPUT_PORTS_START( mod8 )
diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp
index 1acebb1f3ea..9475b333c77 100644
--- a/src/mame/drivers/model1.cpp
+++ b/src/mame/drivers/model1.cpp
@@ -863,109 +863,113 @@ WRITE16_MEMBER(model1_state::mr2_w)
logerror("MW 10[r10], %f (%x)\n", *(float *)(m_mr2+0x1f10/2), m_maincpu->pc());
}
-ADDRESS_MAP_START(model1_state::model1_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x200000, 0x2fffff) AM_ROM
+void model1_state::model1_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1fffff).bankr("bank1");
+ map(0x200000, 0x2fffff).rom();
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(mr2_w) AM_SHARE("mr2")
- AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(mr_w) AM_SHARE("mr")
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(model1_state::mr2_w)).share("mr2");
+ map(0x500000, 0x53ffff).ram().w(this, FUNC(model1_state::mr_w)).share("mr");
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(md0_w) AM_SHARE("display_list0")
- AM_RANGE(0x610000, 0x61ffff) AM_RAM_WRITE(md1_w) AM_SHARE("display_list1")
- AM_RANGE(0x680000, 0x680003) AM_READWRITE(model1_listctl_r, model1_listctl_w)
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(model1_state::md0_w)).share("display_list0");
+ map(0x610000, 0x61ffff).ram().w(this, FUNC(model1_state::md1_w)).share("display_list1");
+ map(0x680000, 0x680003).rw(this, FUNC(model1_state::model1_listctl_r), FUNC(model1_state::model1_listctl_w));
- AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w)
- AM_RANGE(0x720000, 0x720001) AM_WRITENOP // Unknown, always 0
- AM_RANGE(0x740000, 0x740001) AM_WRITENOP // Horizontal synchronization register
- AM_RANGE(0x760000, 0x760001) AM_WRITENOP // Vertical synchronization register
- AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch
- AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w)
+ map(0x700000, 0x70ffff).rw(m_tiles, FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w));
+ map(0x720000, 0x720001).nopw(); // Unknown, always 0
+ map(0x740000, 0x740001).nopw(); // Horizontal synchronization register
+ map(0x760000, 0x760001).nopw(); // Vertical synchronization register
+ map(0x770000, 0x770001).nopw(); // Video synchronization switch
+ map(0x780000, 0x7fffff).rw(m_tiles, FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w));
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette")
- AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat")
+ map(0x900000, 0x903fff).ram().w(this, FUNC(model1_state::p_w)).share("palette");
+ map(0x910000, 0x91bfff).ram().share("color_xlat");
- AM_RANGE(0xb00000, 0xb00fff) AM_DEVREADWRITE8("m1comm", m1comm_device, share_r, share_w, 0xffff)
- AM_RANGE(0xb01000, 0xb01001) AM_DEVREADWRITE8("m1comm", m1comm_device, cn_r, cn_w, 0x00ff)
- AM_RANGE(0xb01002, 0xb01003) AM_DEVREADWRITE8("m1comm", m1comm_device, fg_r, fg_w, 0x00ff)
+ map(0xb00000, 0xb00fff).rw(m_m1comm, FUNC(m1comm_device::share_r), FUNC(m1comm_device::share_w));
+ map(0xb01000, 0xb01000).rw(m_m1comm, FUNC(m1comm_device::cn_r), FUNC(m1comm_device::cn_w));
+ map(0xb01002, 0xb01002).rw(m_m1comm, FUNC(m1comm_device::fg_r), FUNC(m1comm_device::fg_w));
- AM_RANGE(0xc00000, 0xc0003f) AM_READWRITE(io_r, io_w)
+ map(0xc00000, 0xc0003f).rw(this, FUNC(model1_state::io_r), FUNC(model1_state::io_w));
- AM_RANGE(0xc00040, 0xc00043) AM_READWRITE(network_ctl_r, network_ctl_w)
+ map(0xc00040, 0xc00043).rw(this, FUNC(model1_state::network_ctl_r), FUNC(model1_state::network_ctl_w));
- AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram")
+ map(0xc00200, 0xc002ff).ram().share("nvram");
- AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("m1uart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xc40002, 0xc40003) AM_DEVREADWRITE8("m1uart", i8251_device, status_r, control_w, 0x00ff)
+ map(0xc40000, 0xc40000).rw(m_m1uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc40002, 0xc40002).rw(m_m1uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
- AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(model1_tgp_copro_adr_r, model1_tgp_copro_adr_w)
- AM_RANGE(0xd20000, 0xd20003) AM_WRITE(model1_tgp_copro_ram_w )
- AM_RANGE(0xd80000, 0xd80003) AM_WRITE(model1_tgp_copro_w) AM_MIRROR(0x10)
- AM_RANGE(0xdc0000, 0xdc0003) AM_READ(fifoin_status_r)
+ map(0xd00000, 0xd00001).rw(this, FUNC(model1_state::model1_tgp_copro_adr_r), FUNC(model1_state::model1_tgp_copro_adr_w));
+ map(0xd20000, 0xd20003).w(this, FUNC(model1_state::model1_tgp_copro_ram_w));
+ map(0xd80000, 0xd80003).w(this, FUNC(model1_state::model1_tgp_copro_w)).mirror(0x10);
+ map(0xdc0000, 0xdc0003).r(this, FUNC(model1_state::fifoin_status_r));
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // Watchdog? IRQ ack? Always 0x20, usually on irq
- AM_RANGE(0xe00004, 0xe00005) AM_WRITE(bank_w)
- AM_RANGE(0xe0000c, 0xe0000f) AM_WRITENOP
+ map(0xe00000, 0xe00001).nopw(); // Watchdog? IRQ ack? Always 0x20, usually on irq
+ map(0xe00004, 0xe00005).w(this, FUNC(model1_state::bank_w));
+ map(0xe0000c, 0xe0000f).nopw();
- AM_RANGE(0xf80000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xf80000, 0xffffff).rom();
+}
-ADDRESS_MAP_START(model1_state::model1_io)
- AM_RANGE(0xd20000, 0xd20003) AM_READ(model1_tgp_copro_ram_r)
- AM_RANGE(0xd80000, 0xd80003) AM_READ(model1_tgp_copro_r)
-ADDRESS_MAP_END
+void model1_state::model1_io(address_map &map)
+{
+ map(0xd20000, 0xd20003).r(this, FUNC(model1_state::model1_tgp_copro_ram_r));
+ map(0xd80000, 0xd80003).r(this, FUNC(model1_state::model1_tgp_copro_r));
+}
-ADDRESS_MAP_START(model1_state::model1_vr_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x200000, 0x2fffff) AM_ROM
+void model1_state::model1_vr_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1fffff).bankr("bank1");
+ map(0x200000, 0x2fffff).rom();
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(mr2_w) AM_SHARE("mr2")
- AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(mr_w) AM_SHARE("mr")
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(model1_state::mr2_w)).share("mr2");
+ map(0x500000, 0x53ffff).ram().w(this, FUNC(model1_state::mr_w)).share("mr");
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(md0_w) AM_SHARE("display_list0")
- AM_RANGE(0x610000, 0x61ffff) AM_RAM_WRITE(md1_w) AM_SHARE("display_list1")
- AM_RANGE(0x680000, 0x680003) AM_READWRITE(model1_listctl_r, model1_listctl_w)
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(model1_state::md0_w)).share("display_list0");
+ map(0x610000, 0x61ffff).ram().w(this, FUNC(model1_state::md1_w)).share("display_list1");
+ map(0x680000, 0x680003).rw(this, FUNC(model1_state::model1_listctl_r), FUNC(model1_state::model1_listctl_w));
- AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w)
- AM_RANGE(0x720000, 0x720001) AM_WRITENOP // Unknown, always 0
- AM_RANGE(0x740000, 0x740001) AM_WRITENOP // Horizontal synchronization register
- AM_RANGE(0x760000, 0x760001) AM_WRITENOP // Vertical synchronization register
- AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch
- AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w)
+ map(0x700000, 0x70ffff).rw(m_tiles, FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w));
+ map(0x720000, 0x720001).nopw(); // Unknown, always 0
+ map(0x740000, 0x740001).nopw(); // Horizontal synchronization register
+ map(0x760000, 0x760001).nopw(); // Vertical synchronization register
+ map(0x770000, 0x770001).nopw(); // Video synchronization switch
+ map(0x780000, 0x7fffff).rw(m_tiles, FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w));
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette")
- AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat")
+ map(0x900000, 0x903fff).ram().w(this, FUNC(model1_state::p_w)).share("palette");
+ map(0x910000, 0x91bfff).ram().share("color_xlat");
- AM_RANGE(0xb00000, 0xb00fff) AM_DEVREADWRITE8("m1comm", m1comm_device, share_r, share_w, 0xffff)
- AM_RANGE(0xb01000, 0xb01001) AM_DEVREADWRITE8("m1comm", m1comm_device, cn_r, cn_w, 0x00ff)
- AM_RANGE(0xb01002, 0xb01003) AM_DEVREADWRITE8("m1comm", m1comm_device, fg_r, fg_w, 0x00ff)
+ map(0xb00000, 0xb00fff).rw(m_m1comm, FUNC(m1comm_device::share_r), FUNC(m1comm_device::share_w));
+ map(0xb01000, 0xb01000).rw(m_m1comm, FUNC(m1comm_device::cn_r), FUNC(m1comm_device::cn_w));
+ map(0xb01002, 0xb01002).rw(m_m1comm, FUNC(m1comm_device::fg_r), FUNC(m1comm_device::fg_w));
- AM_RANGE(0xc00000, 0xc0003f) AM_READWRITE(io_r, io_w)
+ map(0xc00000, 0xc0003f).rw(this, FUNC(model1_state::io_r), FUNC(model1_state::io_w));
- AM_RANGE(0xc00040, 0xc00043) AM_READWRITE(network_ctl_r, network_ctl_w)
+ map(0xc00040, 0xc00043).rw(this, FUNC(model1_state::network_ctl_r), FUNC(model1_state::network_ctl_w));
- AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram")
+ map(0xc00200, 0xc002ff).ram().share("nvram");
- AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("m1uart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xc40002, 0xc40003) AM_DEVREADWRITE8("m1uart", i8251_device, status_r, control_w, 0x00ff)
+ map(0xc40000, 0xc40000).rw(m_m1uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc40002, 0xc40002).rw(m_m1uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
- AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(model1_tgp_vr_adr_r, model1_tgp_vr_adr_w)
- AM_RANGE(0xd20000, 0xd20003) AM_WRITE(model1_vr_tgp_ram_w )
- AM_RANGE(0xd80000, 0xd80003) AM_WRITE(model1_vr_tgp_w) AM_MIRROR(0x10)
- AM_RANGE(0xdc0000, 0xdc0003) AM_READ(fifoin_status_r)
+ map(0xd00000, 0xd00001).rw(this, FUNC(model1_state::model1_tgp_vr_adr_r), FUNC(model1_state::model1_tgp_vr_adr_w));
+ map(0xd20000, 0xd20003).w(this, FUNC(model1_state::model1_vr_tgp_ram_w));
+ map(0xd80000, 0xd80003).w(this, FUNC(model1_state::model1_vr_tgp_w)).mirror(0x10);
+ map(0xdc0000, 0xdc0003).r(this, FUNC(model1_state::fifoin_status_r));
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // Watchdog? IRQ ack? Always 0x20, usually on irq
- AM_RANGE(0xe00004, 0xe00005) AM_WRITE(bank_w)
- AM_RANGE(0xe0000c, 0xe0000f) AM_WRITENOP
+ map(0xe00000, 0xe00001).nopw(); // Watchdog? IRQ ack? Always 0x20, usually on irq
+ map(0xe00004, 0xe00005).w(this, FUNC(model1_state::bank_w));
+ map(0xe0000c, 0xe0000f).nopw();
- AM_RANGE(0xfc0000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xfc0000, 0xffffff).rom();
+}
-ADDRESS_MAP_START(model1_state::model1_vr_io)
- AM_RANGE(0xd20000, 0xd20003) AM_READ(model1_vr_tgp_ram_r)
- AM_RANGE(0xd80000, 0xd80003) AM_READ(model1_vr_tgp_r)
-ADDRESS_MAP_END
+void model1_state::model1_vr_io(address_map &map)
+{
+ map(0xd20000, 0xd20003).r(this, FUNC(model1_state::model1_vr_tgp_ram_r));
+ map(0xd80000, 0xd80003).r(this, FUNC(model1_state::model1_vr_tgp_r));
+}
static INPUT_PORTS_START( vf )
PORT_START("IN.0")
@@ -1666,11 +1670,12 @@ MACHINE_CONFIG_START(model1_state::swa)
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE(DSBZ80_TAG, dsbz80_device, write_txd))
MACHINE_CONFIG_END
-ADDRESS_MAP_START(model1_state::polhemus_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("polhemus", 0)
-ADDRESS_MAP_END
+void model1_state::polhemus_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x00000, 0x03fff).ram();
+ map(0xf8000, 0xfffff).rom().region("polhemus", 0);
+}
MACHINE_CONFIG_START(model1_state::netmerc)
model1(config);
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index 00076754fa1..07e132832aa 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -1378,69 +1378,71 @@ WRITE16_MEMBER(model2_state::fbvram_bankA_w) { COMBINE_DATA(&m_fbvramA[offset]);
WRITE16_MEMBER(model2_state::fbvram_bankB_w) { COMBINE_DATA(&m_fbvramB[offset]); }
/* common map for all Model 2 versions */
-ADDRESS_MAP_START(model2_state::model2_base_mem)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_WRITENOP
+void model2_state::model2_base_mem(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom().nopw();
- AM_RANGE(0x00500000, 0x005fffff) AM_RAM AM_SHARE("workram")
+ map(0x00500000, 0x005fffff).ram().share("workram");
- AM_RANGE(0x00800000, 0x00803fff) AM_READWRITE(geo_r, geo_w)
+ map(0x00800000, 0x00803fff).rw(this, FUNC(model2_state::geo_r), FUNC(model2_state::geo_w));
//AM_RANGE(0x00800010, 0x00800013) AM_WRITENOP
//AM_RANGE(0x008000b0, 0x008000b3) AM_WRITENOP
//AM_RANGE(0x00804004, 0x0080400f) AM_WRITENOP // quiet psikyo games
//AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_w)
- AM_RANGE(0x00900000, 0x0091ffff) AM_MIRROR(0x60000) AM_RAM AM_SHARE("bufferram")
+ map(0x00900000, 0x0091ffff).mirror(0x60000).ram().share("bufferram");
- AM_RANGE(0x00980004, 0x00980007) AM_READ(fifoctl_r)
- AM_RANGE(0x0098000c, 0x0098000f) AM_READWRITE(videoctl_r,videoctl_w)
- AM_RANGE(0x00980030, 0x0098003f) AM_READ8(tgpid_r,0xffffffff)
+ map(0x00980004, 0x00980007).r(this, FUNC(model2_state::fifoctl_r));
+ map(0x0098000c, 0x0098000f).rw(this, FUNC(model2_state::videoctl_r), FUNC(model2_state::videoctl_w));
+ map(0x00980030, 0x0098003f).r(this, FUNC(model2_state::tgpid_r));
- AM_RANGE(0x00e00000, 0x00e00037) AM_RAM // CPU control (wait-states)
- AM_RANGE(0x00e80000, 0x00e80003) AM_READWRITE(irq_request_r, irq_ack_w)
- AM_RANGE(0x00e80004, 0x00e80007) AM_READWRITE(irq_enable_r, irq_enable_w)
+ map(0x00e00000, 0x00e00037).ram(); // CPU control (wait-states)
+ map(0x00e80000, 0x00e80003).rw(this, FUNC(model2_state::irq_request_r), FUNC(model2_state::irq_ack_w));
+ map(0x00e80004, 0x00e80007).rw(this, FUNC(model2_state::irq_enable_r), FUNC(model2_state::irq_enable_w));
- AM_RANGE(0x00f00000, 0x00f0000f) AM_READWRITE(timers_r, timers_w)
+ map(0x00f00000, 0x00f0000f).rw(this, FUNC(model2_state::timers_r), FUNC(model2_state::timers_w));
- AM_RANGE(0x01000000, 0x0100ffff) AM_DEVREADWRITE16("tile", segas24_tile_device, tile_r, tile_w,0xffffffff) AM_MIRROR(0x110000)
- AM_RANGE(0x01020000, 0x01020003) AM_WRITENOP AM_MIRROR(0x100000) // ABSEL, always 0
- AM_RANGE(0x01040000, 0x01040003) AM_DEVWRITE16("tile", segas24_tile_device, xhout_w, 0x0000ffff) AM_MIRROR(0x100000) // Horizontal synchronization register
- AM_RANGE(0x01060000, 0x01060003) AM_DEVWRITE16("tile", segas24_tile_device, xvout_w, 0x0000ffff) AM_MIRROR(0x100000) // Vertical synchronization register
- AM_RANGE(0x01070000, 0x01070003) AM_WRITENOP AM_MIRROR(0x100000) // Video synchronization switch
- AM_RANGE(0x01080000, 0x010fffff) AM_DEVREADWRITE16("tile", segas24_tile_device, char_r, char_w,0xffffffff) AM_MIRROR(0x100000)
+ map(0x01000000, 0x0100ffff).rw("tile", FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)).mirror(0x110000);
+ map(0x01020000, 0x01020003).nopw().mirror(0x100000); // ABSEL, always 0
+ map(0x01040000, 0x01040001).w("tile", FUNC(segas24_tile_device::xhout_w)).mirror(0x100000); // Horizontal synchronization register
+ map(0x01060000, 0x01060001).w("tile", FUNC(segas24_tile_device::xvout_w)).mirror(0x100000); // Vertical synchronization register
+ map(0x01070000, 0x01070003).nopw().mirror(0x100000); // Video synchronization switch
+ map(0x01080000, 0x010fffff).rw("tile", FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)).mirror(0x100000);
- AM_RANGE(0x01800000, 0x01803fff) AM_READWRITE16(palette_r, palette_w,0xffffffff)
- AM_RANGE(0x01810000, 0x0181bfff) AM_READWRITE16(colorxlat_r,colorxlat_w,0xffffffff)
- AM_RANGE(0x0181c000, 0x0181c003) AM_WRITE(model2_3d_zclip_w)
- AM_RANGE(0x01a10000, 0x01a13fff) AM_DEVREADWRITE8("m2comm", m2comm_device, share_r, share_w, 0xffffffff)
- AM_RANGE(0x01a14000, 0x01a14003) AM_DEVREADWRITE8("m2comm", m2comm_device, cn_r, cn_w, 0x000000ff)
- AM_RANGE(0x01a14000, 0x01a14003) AM_DEVREADWRITE8("m2comm", m2comm_device, fg_r, fg_w, 0x00ff0000)
- AM_RANGE(0x01d00000, 0x01d03fff) AM_RAM AM_SHARE("backup1") // Backup sram
- AM_RANGE(0x02000000, 0x03ffffff) AM_ROM AM_REGION("main_data", 0)
+ map(0x01800000, 0x01803fff).rw(this, FUNC(model2_state::palette_r), FUNC(model2_state::palette_w));
+ map(0x01810000, 0x0181bfff).rw(this, FUNC(model2_state::colorxlat_r), FUNC(model2_state::colorxlat_w));
+ map(0x0181c000, 0x0181c003).w(this, FUNC(model2_state::model2_3d_zclip_w));
+ map(0x01a10000, 0x01a13fff).rw(m_m2comm, FUNC(m2comm_device::share_r), FUNC(m2comm_device::share_w));
+ map(0x01a14000, 0x01a14000).rw(m_m2comm, FUNC(m2comm_device::cn_r), FUNC(m2comm_device::cn_w));
+ map(0x01a14002, 0x01a14002).rw(m_m2comm, FUNC(m2comm_device::fg_r), FUNC(m2comm_device::fg_w));
+ map(0x01d00000, 0x01d03fff).ram().share("backup1"); // Backup sram
+ map(0x02000000, 0x03ffffff).rom().region("main_data", 0);
// "extra" data
- AM_RANGE(0x06000000, 0x06ffffff) AM_ROM AM_REGION("main_data", 0x1000000)
+ map(0x06000000, 0x06ffffff).rom().region("main_data", 0x1000000);
- AM_RANGE(0x10000000, 0x101fffff) AM_READWRITE(render_mode_r,render_mode_w)
+ map(0x10000000, 0x101fffff).rw(this, FUNC(model2_state::render_mode_r), FUNC(model2_state::render_mode_w));
// AM_RANGE(0x10200000, 0x103fffff) renderer status register
- AM_RANGE(0x10400000, 0x105fffff) AM_READ(polygon_count_r)
+ map(0x10400000, 0x105fffff).r(this, FUNC(model2_state::polygon_count_r));
// AM_RANGE(0x10600000, 0x107fffff) polygon data ping
// AM_RANGE(0x10800000, 0x109fffff) polygon data pong
// AM_RANGE(0x10a00000, 0x10bfffff) fill memory ping
// AM_RANGE(0x10c00000, 0x10dfffff) fill memory pong
// format is xGGGGGRRRRRBBBBB (512x400)
- AM_RANGE(0x11600000, 0x1167ffff) AM_READWRITE16(fbvram_bankA_r,fbvram_bankA_w,0xffffffff) // framebuffer A (last bronx title screen)
- AM_RANGE(0x11680000, 0x116fffff) AM_READWRITE16(fbvram_bankB_r,fbvram_bankB_w,0xffffffff) AM_SHARE("fbvram2") // framebuffer B
+ map(0x11600000, 0x1167ffff).rw(this, FUNC(model2_state::fbvram_bankA_r), FUNC(model2_state::fbvram_bankA_w)); // framebuffer A (last bronx title screen)
+ map(0x11680000, 0x116fffff).rw(this, FUNC(model2_state::fbvram_bankB_r), FUNC(model2_state::fbvram_bankB_w)).share("fbvram2"); // framebuffer B
- AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM
-ADDRESS_MAP_END
+ map(0x12800000, 0x1281ffff).rw(this, FUNC(model2_state::lumaram_r), FUNC(model2_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM
+}
/* common map for 5881 protection */
-ADDRESS_MAP_START(model2_state::model2_5881_mem)
- AM_RANGE(0x01d80000,0x01d8ffff) AM_RAM
- AM_RANGE(0x01d90000,0x01d9ffff) AM_DEVICE16("315_5881", sega_315_5881_crypt_device, iomap_le, 0xffffffff)
-ADDRESS_MAP_END
+void model2_state::model2_5881_mem(address_map &map)
+{
+ map(0x01d80000, 0x01d8ffff).ram();
+ map(0x01d90000, 0x01d9ffff).m(m_cryptdevice, FUNC(sega_315_5881_crypt_device::iomap_le));
+}
READ8_MEMBER(model2_state::virtuacop_lightgun_r)
{
@@ -1495,31 +1497,32 @@ READ8_MEMBER(model2o_state::model2o_in_r)
}
/* original Model 2 overrides */
-ADDRESS_MAP_START(model2o_state::model2o_mem)
- AM_IMPORT_FROM(model2_base_mem)
-
- AM_RANGE(0x00200000, 0x0021ffff) AM_RAM
- AM_RANGE(0x00220000, 0x0023ffff) AM_ROM AM_REGION("maincpu", 0x20000)
-
- AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w)
- AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w)
- AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w)
-
- AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w)
- AM_RANGE(0x00980004, 0x00980007) AM_READ(fifoctrl_r)
- AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w)
- AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w)
-
- AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0
- AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1
-
- AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2o_in_r, 0x00ff00ff)
- AM_RANGE(0x01c00040, 0x01c00043) AM_READ(daytona_unk_r)
- AM_RANGE(0x01c00100, 0x01c0010f) AM_READ8(virtuacop_lightgun_r, 0x00ff00ff)
- AM_RANGE(0x01c00110, 0x01c00113) AM_READ8(virtuacop_lightgun_offscreen_r, 0x00ff00ff)
- AM_RANGE(0x01c00200, 0x01c002ff) AM_RAM AM_SHARE("backup2")
- AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w)
-ADDRESS_MAP_END
+void model2o_state::model2o_mem(address_map &map)
+{
+ model2_base_mem(map);
+
+ map(0x00200000, 0x0021ffff).ram();
+ map(0x00220000, 0x0023ffff).rom().region("maincpu", 0x20000);
+
+ map(0x00804000, 0x00807fff).rw(this, FUNC(model2o_state::geo_prg_r), FUNC(model2o_state::geo_prg_w));
+ map(0x00880000, 0x00883fff).w(this, FUNC(model2o_state::copro_function_port_w));
+ map(0x00884000, 0x00887fff).rw(this, FUNC(model2o_state::copro_fifo_r), FUNC(model2o_state::copro_fifo_w));
+
+ map(0x00980000, 0x00980003).rw(this, FUNC(model2o_state::copro_ctl1_r), FUNC(model2o_state::copro_ctl1_w));
+ map(0x00980004, 0x00980007).r(this, FUNC(model2o_state::fifoctrl_r));
+ map(0x00980008, 0x0098000b).w(this, FUNC(model2o_state::geo_ctl1_w));
+ map(0x009c0000, 0x009cffff).rw(this, FUNC(model2o_state::model2_serial_r), FUNC(model2o_state::model2_serial_w));
+
+ map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2o_state::model2o_tex_w0)).mirror(0x200000).share("textureram0"); // texture RAM 0
+ map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2o_state::model2o_tex_w1)).mirror(0x200000).share("textureram1"); // texture RAM 1
+
+ map(0x01c00000, 0x01c0001f).r(this, FUNC(model2o_state::model2o_in_r)).umask32(0x00ff00ff);
+ map(0x01c00040, 0x01c00043).r(this, FUNC(model2o_state::daytona_unk_r));
+ map(0x01c00100, 0x01c0010f).r(this, FUNC(model2o_state::virtuacop_lightgun_r)).umask32(0x00ff00ff);
+ map(0x01c00110, 0x01c00113).r(this, FUNC(model2o_state::virtuacop_lightgun_offscreen_r)).umask32(0x00ff00ff);
+ map(0x01c00200, 0x01c002ff).ram().share("backup2");
+ map(0x01c80000, 0x01c80003).rw(this, FUNC(model2o_state::model2_serial_r), FUNC(model2o_state::model2_serial_w));
+}
/* Daytona "To The MAXX" PIC protection simulation */
READ32_MEMBER(model2o_maxx_state::maxx_r)
@@ -1563,10 +1566,11 @@ READ32_MEMBER(model2o_maxx_state::maxx_r)
return ROM[offset + (0x040000/4)];
}
-ADDRESS_MAP_START(model2o_maxx_state::model2o_maxx_mem)
- AM_IMPORT_FROM(model2o_mem)
- AM_RANGE(0x00240000,0x0024ffff) AM_READ(maxx_r)
-ADDRESS_MAP_END
+void model2o_maxx_state::model2o_maxx_mem(address_map &map)
+{
+ model2o_mem(map);
+ map(0x00240000, 0x0024ffff).r(this, FUNC(model2o_maxx_state::maxx_r));
+}
READ8_MEMBER(model2o_gtx_state::gtx_r)
{
@@ -1597,112 +1601,118 @@ READ32_MEMBER(model2_state::copro_status_r)
}
/* 2A-CRX overrides */
-ADDRESS_MAP_START(model2a_state::model2a_crx_mem)
- AM_IMPORT_FROM(model2_base_mem)
-
- AM_RANGE(0x00200000, 0x0023ffff) AM_RAM
-
- AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w)
- AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w)
- AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w)
-
- AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w)
- AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w)
- AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r)
- AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w)
-
- AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0
- AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1
-
- AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff)
- AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w)
- AM_RANGE(0x01c00008, 0x01c0000f) AM_WRITENOP
- AM_RANGE(0x01c00010, 0x01c00013) AM_WRITENOP
- AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w)
- AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w)
- AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP
- AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w)
-ADDRESS_MAP_END
+void model2a_state::model2a_crx_mem(address_map &map)
+{
+ model2_base_mem(map);
+
+ map(0x00200000, 0x0023ffff).ram();
+
+ map(0x00804000, 0x00807fff).rw(this, FUNC(model2a_state::geo_prg_r), FUNC(model2a_state::geo_prg_w));
+ map(0x00880000, 0x00883fff).w(this, FUNC(model2a_state::copro_function_port_w));
+ map(0x00884000, 0x00887fff).rw(this, FUNC(model2a_state::copro_fifo_r), FUNC(model2a_state::copro_fifo_w));
+
+ map(0x00980000, 0x00980003).rw(this, FUNC(model2a_state::copro_ctl1_r), FUNC(model2a_state::copro_ctl1_w));
+ map(0x00980008, 0x0098000b).w(this, FUNC(model2a_state::geo_ctl1_w));
+ map(0x00980014, 0x00980017).r(this, FUNC(model2a_state::copro_status_r));
+ map(0x009c0000, 0x009cffff).rw(this, FUNC(model2a_state::model2_serial_r), FUNC(model2a_state::model2_serial_w));
+
+ map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2a_state::model2o_tex_w0)).mirror(0x200000).share("textureram0"); // texture RAM 0
+ map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2a_state::model2o_tex_w1)).mirror(0x200000).share("textureram1"); // texture RAM 1
+
+ map(0x01c00000, 0x01c0001f).r(this, FUNC(model2a_state::model2_crx_in_r)).umask32(0x00ff00ff);
+ map(0x01c00000, 0x01c00003).w(this, FUNC(model2a_state::ctrl0_w));
+ map(0x01c00008, 0x01c0000f).nopw();
+ map(0x01c00010, 0x01c00013).nopw();
+ map(0x01c00014, 0x01c00017).w(this, FUNC(model2a_state::hotd_lightgun_w));
+ map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2a_state::analog_2b_w));
+ map(0x01c00040, 0x01c00043).nopw();
+ map(0x01c80000, 0x01c80003).rw(this, FUNC(model2a_state::model2_serial_r), FUNC(model2a_state::model2_serial_w));
+}
-ADDRESS_MAP_START(model2a_state::model2a_5881_mem)
- AM_IMPORT_FROM(model2a_crx_mem)
- AM_IMPORT_FROM(model2_5881_mem)
-ADDRESS_MAP_END
+void model2a_state::model2a_5881_mem(address_map &map)
+{
+ model2a_crx_mem(map);
+ model2_5881_mem(map);
+}
/* 2B-CRX overrides */
-ADDRESS_MAP_START(model2b_state::model2b_crx_mem)
- AM_IMPORT_FROM(model2_base_mem)
+void model2b_state::model2b_crx_mem(address_map &map)
+{
+ model2_base_mem(map);
- AM_RANGE(0x00200000, 0x0023ffff) AM_RAM
+ map(0x00200000, 0x0023ffff).ram();
- AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w)
+ map(0x00804000, 0x00807fff).rw(this, FUNC(model2b_state::geo_prg_r), FUNC(model2b_state::geo_prg_w));
//AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_sharc_fifo_r, geo_sharc_fifo_w)
//AM_RANGE(0x00840000, 0x00840fff) AM_WRITE(geo_sharc_iop_w)
- AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w)
- AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w)
- AM_RANGE(0x008c0000, 0x008c0fff) AM_WRITE(copro_sharc_iop_w)
+ map(0x00880000, 0x00883fff).w(this, FUNC(model2b_state::copro_function_port_w));
+ map(0x00884000, 0x00887fff).rw(this, FUNC(model2b_state::copro_fifo_r), FUNC(model2b_state::copro_fifo_w));
+ map(0x008c0000, 0x008c0fff).w(this, FUNC(model2b_state::copro_sharc_iop_w));
- AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w)
- AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w)
- AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r)
+ map(0x00980000, 0x00980003).rw(this, FUNC(model2b_state::copro_ctl1_r), FUNC(model2b_state::copro_ctl1_w));
+ map(0x00980008, 0x0098000b).w(this, FUNC(model2b_state::geo_ctl1_w));
+ map(0x00980014, 0x00980017).r(this, FUNC(model2b_state::copro_status_r));
//AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_sharc_ctl1_w )
- AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w)
-
- AM_RANGE(0x11000000, 0x110fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c)
- AM_RANGE(0x11100000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c)
- AM_RANGE(0x11200000, 0x112fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c)
- AM_RANGE(0x11300000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c)
- AM_RANGE(0x11400000, 0x1140ffff) AM_READWRITE16(lumaram_r,lumaram_w,0xffffffff) // polygon "luma" RAM (2b/2c)
- AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM
-
- AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff)
- AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w)
- AM_RANGE(0x01c00008, 0x01c0000b) AM_WRITENOP
- AM_RANGE(0x01c00010, 0x01c00013) AM_WRITENOP // gunblade
- AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w)
- AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w)
- AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP
- AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w)
-ADDRESS_MAP_END
+ map(0x009c0000, 0x009cffff).rw(this, FUNC(model2b_state::model2_serial_r), FUNC(model2b_state::model2_serial_w));
+
+ map(0x11000000, 0x110fffff).ram().share("textureram0"); // texture RAM 0 (2b/2c)
+ map(0x11100000, 0x111fffff).ram().share("textureram0"); // texture RAM 0 (2b/2c)
+ map(0x11200000, 0x112fffff).ram().share("textureram1"); // texture RAM 1 (2b/2c)
+ map(0x11300000, 0x113fffff).ram().share("textureram1"); // texture RAM 1 (2b/2c)
+ map(0x11400000, 0x1140ffff).rw(this, FUNC(model2b_state::lumaram_r), FUNC(model2b_state::lumaram_w)); // polygon "luma" RAM (2b/2c)
+ map(0x12800000, 0x1281ffff).rw(this, FUNC(model2b_state::lumaram_r), FUNC(model2b_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM
+
+ map(0x01c00000, 0x01c0001f).r(this, FUNC(model2b_state::model2_crx_in_r)).umask32(0x00ff00ff);
+ map(0x01c00000, 0x01c00003).w(this, FUNC(model2b_state::ctrl0_w));
+ map(0x01c00008, 0x01c0000b).nopw();
+ map(0x01c00010, 0x01c00013).nopw(); // gunblade
+ map(0x01c00014, 0x01c00017).w(this, FUNC(model2b_state::hotd_lightgun_w));
+ map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2b_state::analog_2b_w));
+ map(0x01c00040, 0x01c00043).nopw();
+ map(0x01c80000, 0x01c80003).rw(this, FUNC(model2b_state::model2_serial_r), FUNC(model2b_state::model2_serial_w));
+}
-ADDRESS_MAP_START(model2b_state::model2b_5881_mem)
- AM_IMPORT_FROM(model2b_crx_mem)
- AM_IMPORT_FROM(model2_5881_mem)
-ADDRESS_MAP_END
+void model2b_state::model2b_5881_mem(address_map &map)
+{
+ model2b_crx_mem(map);
+ model2_5881_mem(map);
+}
/* 2C-CRX overrides */
-ADDRESS_MAP_START(model2c_state::model2c_crx_mem)
- AM_IMPORT_FROM(model2_base_mem)
-
- AM_RANGE(0x00200000, 0x0023ffff) AM_RAM
-
- AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w)
- AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w)
- AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w)
-
- AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w)
- AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w )
- AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r)
- AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w)
-
- AM_RANGE(0x11000000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c)
- AM_RANGE(0x11200000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c)
- AM_RANGE(0x11400000, 0x1140ffff) AM_READWRITE16(lumaram_r,lumaram_w,0xffffffff) // polygon "luma" RAM (2b/2c)
- AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM
-
- AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff)
- AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w)
- AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w)
- AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w)
- AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w )
-ADDRESS_MAP_END
+void model2c_state::model2c_crx_mem(address_map &map)
+{
+ model2_base_mem(map);
-ADDRESS_MAP_START(model2c_state::model2c_5881_mem)
- AM_IMPORT_FROM(model2c_crx_mem)
- AM_IMPORT_FROM(model2_5881_mem)
-ADDRESS_MAP_END
+ map(0x00200000, 0x0023ffff).ram();
+
+ map(0x00804000, 0x00807fff).rw(this, FUNC(model2c_state::geo_prg_r), FUNC(model2c_state::geo_prg_w));
+ map(0x00880000, 0x00883fff).w(this, FUNC(model2c_state::copro_function_port_w));
+ map(0x00884000, 0x00887fff).rw(this, FUNC(model2c_state::copro_fifo_r), FUNC(model2c_state::copro_fifo_w));
+
+ map(0x00980000, 0x00980003).rw(this, FUNC(model2c_state::copro_ctl1_r), FUNC(model2c_state::copro_ctl1_w));
+ map(0x00980008, 0x0098000b).w(this, FUNC(model2c_state::geo_ctl1_w));
+ map(0x00980014, 0x00980017).r(this, FUNC(model2c_state::copro_status_r));
+ map(0x009c0000, 0x009cffff).rw(this, FUNC(model2c_state::model2_serial_r), FUNC(model2c_state::model2_serial_w));
+
+ map(0x11000000, 0x111fffff).ram().share("textureram0"); // texture RAM 0 (2b/2c)
+ map(0x11200000, 0x113fffff).ram().share("textureram1"); // texture RAM 1 (2b/2c)
+ map(0x11400000, 0x1140ffff).rw(this, FUNC(model2c_state::lumaram_r), FUNC(model2c_state::lumaram_w)); // polygon "luma" RAM (2b/2c)
+ map(0x12800000, 0x1281ffff).rw(this, FUNC(model2c_state::lumaram_r), FUNC(model2c_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM
+
+ map(0x01c00000, 0x01c0001f).r(this, FUNC(model2c_state::model2_crx_in_r)).umask32(0x00ff00ff);
+ map(0x01c00000, 0x01c00003).w(this, FUNC(model2c_state::ctrl0_w));
+ map(0x01c00014, 0x01c00017).w(this, FUNC(model2c_state::hotd_lightgun_w));
+ map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2c_state::analog_2b_w));
+ map(0x01c80000, 0x01c80003).rw(this, FUNC(model2c_state::model2_serial_r), FUNC(model2c_state::model2_serial_w));
+}
+
+void model2c_state::model2c_5881_mem(address_map &map)
+{
+ model2c_crx_mem(map);
+ model2_5881_mem(map);
+}
@@ -2542,18 +2552,20 @@ WRITE8_MEMBER(model2_state::driveio_port_w)
// popmessage("%02x",data);
}
-ADDRESS_MAP_START(model2_state::drive_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void model2_state::drive_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xffff).ram();
+}
-ADDRESS_MAP_START(model2_state::drive_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP //watchdog
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("driveio1", sega_315_5296_device, read, write)
- AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("driveio2", sega_315_5296_device, read, write)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("driveadc", msm6253_device, d0_r, address_w)
-ADDRESS_MAP_END
+void model2_state::drive_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); //watchdog
+ map(0x20, 0x2f).rw("driveio1", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write));
+ map(0x40, 0x4f).rw("driveio2", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write));
+ map(0x80, 0x83).rw("driveadc", FUNC(msm6253_device::d0_r), FUNC(msm6253_device::address_w));
+}
MACHINE_CONFIG_START(model2_state::sj25_0207_01)
MCFG_CPU_ADD("drivecpu", Z80, XTAL(8'000'000)/2) // confirmed
@@ -2711,15 +2723,17 @@ MACHINE_CONFIG_START(model2b_state::indy500)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(model2b_state::rchase2_iocpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
-ADDRESS_MAP_END
+void model2b_state::rchase2_iocpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+}
-ADDRESS_MAP_START(model2b_state::rchase2_ioport_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("ioexp", cxd1095_device, read, write)
-ADDRESS_MAP_END
+void model2b_state::rchase2_ioport_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x07).rw("ioexp", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+}
MACHINE_CONFIG_START(model2b_state::rchase2)
model2b(config);
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index 00c6528b663..f2996c3bf75 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -1760,38 +1760,41 @@ WRITE64_MEMBER(model3_state::daytona2_rombank_w)
}
}
-ADDRESS_MAP_START(model3_state::model3_10_mem)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("work_ram") /* work RAM */
-
- AM_RANGE(0x84000000, 0x8400003f) AM_READ(real3d_status_r )
- AM_RANGE(0x88000000, 0x88000007) AM_WRITE(real3d_cmd_w )
- AM_RANGE(0x8e000000, 0x8e0fffff) AM_WRITE(real3d_display_list_w )
- AM_RANGE(0x98000000, 0x980fffff) AM_WRITE(real3d_polygon_ram_w )
-
- AM_RANGE(0xf0040000, 0xf004003f) AM_MIRROR(0x0e000000) AM_READWRITE(model3_ctrl_r, model3_ctrl_w )
- AM_RANGE(0xf0080000, 0xf008ffff) AM_MIRROR(0x0e000000) AM_READWRITE8(model3_sound_r, model3_sound_w, 0xffffffffffffffffU )
- AM_RANGE(0xf00c0000, 0xf00dffff) AM_MIRROR(0x0e000000) AM_RAM AM_SHARE("backup") /* backup SRAM */
- AM_RANGE(0xf0100000, 0xf010003f) AM_MIRROR(0x0e000000) AM_READWRITE(model3_sys_r, model3_sys_w )
- AM_RANGE(0xf0140000, 0xf014003f) AM_MIRROR(0x0e000000) AM_READWRITE(model3_rtc_r, model3_rtc_w )
-
- AM_RANGE(0xf1000000, 0xf10f7fff) AM_READWRITE(model3_char_r, model3_char_w ) /* character RAM */
- AM_RANGE(0xf10f8000, 0xf10fffff) AM_READWRITE(model3_tile_r, model3_tile_w ) /* tilemaps */
- AM_RANGE(0xf1100000, 0xf111ffff) AM_READWRITE(model3_palette_r, model3_palette_w ) AM_SHARE("paletteram64") /* palette */
- AM_RANGE(0xf1180000, 0xf11800ff) AM_READWRITE(model3_vid_reg_r, model3_vid_reg_w )
-
- AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(model3_state::model3_mem)
- AM_IMPORT_FROM( model3_10_mem )
- AM_RANGE(0xc0000000, 0xc003ffff) AM_DEVICE32("comm_board", m3comm_device, m3_map, 0xffffffffffffffffU )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(model3_state::model3_5881_mem)
- AM_IMPORT_FROM( model3_mem )
- AM_RANGE(0xf0180000, 0xf019ffff) AM_MIRROR(0x0e000000) AM_RAM
- AM_RANGE(0xf01a0000, 0xf01a003f) AM_MIRROR(0x0e000000) AM_DEVICE16("315_5881", sega_315_5881_crypt_device, iomap_64be, 0xffffffffffffffffU )
-ADDRESS_MAP_END
+void model3_state::model3_10_mem(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram().share("work_ram"); /* work RAM */
+
+ map(0x84000000, 0x8400003f).r(this, FUNC(model3_state::real3d_status_r));
+ map(0x88000000, 0x88000007).w(this, FUNC(model3_state::real3d_cmd_w));
+ map(0x8e000000, 0x8e0fffff).w(this, FUNC(model3_state::real3d_display_list_w));
+ map(0x98000000, 0x980fffff).w(this, FUNC(model3_state::real3d_polygon_ram_w));
+
+ map(0xf0040000, 0xf004003f).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_ctrl_r), FUNC(model3_state::model3_ctrl_w));
+ map(0xf0080000, 0xf008ffff).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_sound_r), FUNC(model3_state::model3_sound_w));
+ map(0xf00c0000, 0xf00dffff).mirror(0x0e000000).ram().share("backup"); /* backup SRAM */
+ map(0xf0100000, 0xf010003f).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_sys_r), FUNC(model3_state::model3_sys_w));
+ map(0xf0140000, 0xf014003f).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_rtc_r), FUNC(model3_state::model3_rtc_w));
+
+ map(0xf1000000, 0xf10f7fff).rw(this, FUNC(model3_state::model3_char_r), FUNC(model3_state::model3_char_w)); /* character RAM */
+ map(0xf10f8000, 0xf10fffff).rw(this, FUNC(model3_state::model3_tile_r), FUNC(model3_state::model3_tile_w)); /* tilemaps */
+ map(0xf1100000, 0xf111ffff).rw(this, FUNC(model3_state::model3_palette_r), FUNC(model3_state::model3_palette_w)).share("paletteram64"); /* palette */
+ map(0xf1180000, 0xf11800ff).rw(this, FUNC(model3_state::model3_vid_reg_r), FUNC(model3_state::model3_vid_reg_w));
+
+ map(0xff800000, 0xffffffff).rom().region("user1", 0);
+}
+
+void model3_state::model3_mem(address_map &map)
+{
+ model3_10_mem(map);
+ map(0xc0000000, 0xc003ffff).m("comm_board", FUNC(m3comm_device::m3_map));
+}
+
+void model3_state::model3_5881_mem(address_map &map)
+{
+ model3_mem(map);
+ map(0xf0180000, 0xf019ffff).mirror(0x0e000000).ram();
+ map(0xf01a0000, 0xf01a003f).mirror(0x0e000000).m(m_cryptdevice, FUNC(sega_315_5881_crypt_device::iomap_64be));
+}
static INPUT_PORTS_START( common )
PORT_START("IN0")
@@ -5694,17 +5697,18 @@ WRITE16_MEMBER(model3_state::model3snd_ctrl)
}
}
-ADDRESS_MAP_START(model3_state::model3_snd)
- AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_REGION("scsp1", 0) AM_SHARE("soundram")
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp1", scsp_device, read, write)
- AM_RANGE(0x200000, 0x27ffff) AM_RAM AM_REGION("scsp2", 0)
- AM_RANGE(0x300000, 0x300fff) AM_DEVREADWRITE("scsp2", scsp_device, read, write)
- AM_RANGE(0x400000, 0x400001) AM_WRITE(model3snd_ctrl)
- AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("audiocpu", 0x80000)
- AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("samples", 0)
- AM_RANGE(0xa00000, 0xdfffff) AM_ROMBANK("bank4")
- AM_RANGE(0xe00000, 0xffffff) AM_ROMBANK("bank5")
-ADDRESS_MAP_END
+void model3_state::model3_snd(address_map &map)
+{
+ map(0x000000, 0x07ffff).ram().region("scsp1", 0).share("soundram");
+ map(0x100000, 0x100fff).rw(m_scsp1, FUNC(scsp_device::read), FUNC(scsp_device::write));
+ map(0x200000, 0x27ffff).ram().region("scsp2", 0);
+ map(0x300000, 0x300fff).rw("scsp2", FUNC(scsp_device::read), FUNC(scsp_device::write));
+ map(0x400000, 0x400001).w(this, FUNC(model3_state::model3snd_ctrl));
+ map(0x600000, 0x67ffff).rom().region("audiocpu", 0x80000);
+ map(0x800000, 0x9fffff).rom().region("samples", 0);
+ map(0xa00000, 0xdfffff).bankr("bank4");
+ map(0xe00000, 0xffffff).bankr("bank5");
+}
WRITE8_MEMBER(model3_state::scsp_irq)
diff --git a/src/mame/drivers/modellot.cpp b/src/mame/drivers/modellot.cpp
index 00bbc33a988..6df4f38be8a 100644
--- a/src/mame/drivers/modellot.cpp
+++ b/src/mame/drivers/modellot.cpp
@@ -70,19 +70,21 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(modellot_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xbfff) AM_RAM // 48k ram
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(modellot_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x77, 0x77) AM_READ(port77_r)
- AM_RANGE(0xff, 0xff) AM_READ(portff_r)
-ADDRESS_MAP_END
+void modellot_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xbfff).ram(); // 48k ram
+ map(0xc000, 0xc3ff).ram().share("videoram");
+ map(0xe000, 0xffff).rom();
+}
+
+void modellot_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x77, 0x77).r(this, FUNC(modellot_state::port77_r));
+ map(0xff, 0xff).r(this, FUNC(modellot_state::portff_r));
+}
/* Input ports */
diff --git a/src/mame/drivers/mogura.cpp b/src/mame/drivers/mogura.cpp
index e552919d3ab..6ec4ebad7cc 100644
--- a/src/mame/drivers/mogura.cpp
+++ b/src/mame/drivers/mogura.cpp
@@ -137,24 +137,26 @@ WRITE8_MEMBER(mogura_state::mogura_gfxram_w)
}
-ADDRESS_MAP_START(mogura_state::mogura_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM // main ram
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(mogura_gfxram_w) AM_SHARE("gfxram") // ram based characters
- AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(mogura_tileram_w) AM_SHARE("tileram") // tilemap
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mogura_state::mogura_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP // ??
- AM_RANGE(0x08, 0x08) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c, 0x0c) AM_READ_PORT("P1")
- AM_RANGE(0x0d, 0x0d) AM_READ_PORT("P2")
- AM_RANGE(0x0e, 0x0e) AM_READ_PORT("P3")
- AM_RANGE(0x0f, 0x0f) AM_READ_PORT("P4")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("SERVICE")
- AM_RANGE(0x14, 0x14) AM_WRITE(mogura_dac_w) /* 4 bit DAC x 2. MSB = left, LSB = right */
-ADDRESS_MAP_END
+void mogura_state::mogura_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram(); // main ram
+ map(0xe000, 0xefff).ram().w(this, FUNC(mogura_state::mogura_gfxram_w)).share("gfxram"); // ram based characters
+ map(0xf000, 0xffff).ram().w(this, FUNC(mogura_state::mogura_tileram_w)).share("tileram"); // tilemap
+}
+
+void mogura_state::mogura_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); // ??
+ map(0x08, 0x08).portr("SYSTEM");
+ map(0x0c, 0x0c).portr("P1");
+ map(0x0d, 0x0d).portr("P2");
+ map(0x0e, 0x0e).portr("P3");
+ map(0x0f, 0x0f).portr("P4");
+ map(0x10, 0x10).portr("SERVICE");
+ map(0x14, 0x14).w(this, FUNC(mogura_state::mogura_dac_w)); /* 4 bit DAC x 2. MSB = left, LSB = right */
+}
static INPUT_PORTS_START( mogura )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/mole.cpp b/src/mame/drivers/mole.cpp
index f71e2073da6..46dc4281e2c 100644
--- a/src/mame/drivers/mole.cpp
+++ b/src/mame/drivers/mole.cpp
@@ -201,23 +201,24 @@ READ8_MEMBER(mole_state::mole_protection_r)
*
*************************************/
-ADDRESS_MAP_START(mole_state::mole_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0800, 0x08ff) AM_READ(mole_protection_r)
- AM_RANGE(0x0800, 0x0800) AM_WRITENOP // ???
- AM_RANGE(0x0820, 0x0820) AM_WRITENOP // ???
- AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_WRITE(mole_tileram_w) AM_READNOP
- AM_RANGE(0x8400, 0x8400) AM_WRITE(mole_tilebank_w)
- AM_RANGE(0x8c00, 0x8c01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x8c40, 0x8c40) AM_WRITENOP // ???
- AM_RANGE(0x8c80, 0x8c80) AM_WRITENOP // ???
- AM_RANGE(0x8c81, 0x8c81) AM_WRITENOP // ???
- AM_RANGE(0x8d00, 0x8d00) AM_READ_PORT("DSW") AM_WRITE(mole_irqack_w)
- AM_RANGE(0x8d40, 0x8d40) AM_READ_PORT("IN0")
- AM_RANGE(0x8d80, 0x8d80) AM_READ_PORT("IN1")
- AM_RANGE(0x8dc0, 0x8dc0) AM_READ_PORT("IN2") AM_WRITE(mole_flipscreen_w)
-ADDRESS_MAP_END
+void mole_state::mole_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0800, 0x08ff).r(this, FUNC(mole_state::mole_protection_r));
+ map(0x0800, 0x0800).nopw(); // ???
+ map(0x0820, 0x0820).nopw(); // ???
+ map(0x5000, 0x7fff).mirror(0x8000).rom();
+ map(0x8000, 0x83ff).w(this, FUNC(mole_state::mole_tileram_w)).nopr();
+ map(0x8400, 0x8400).w(this, FUNC(mole_state::mole_tilebank_w));
+ map(0x8c00, 0x8c01).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x8c40, 0x8c40).nopw(); // ???
+ map(0x8c80, 0x8c80).nopw(); // ???
+ map(0x8c81, 0x8c81).nopw(); // ???
+ map(0x8d00, 0x8d00).portr("DSW").w(this, FUNC(mole_state::mole_irqack_w));
+ map(0x8d40, 0x8d40).portr("IN0");
+ map(0x8d80, 0x8d80).portr("IN1");
+ map(0x8dc0, 0x8dc0).portr("IN2").w(this, FUNC(mole_state::mole_flipscreen_w));
+}
/*************************************
diff --git a/src/mame/drivers/molecular.cpp b/src/mame/drivers/molecular.cpp
index 950c5d3178d..929f7082bbb 100644
--- a/src/mame/drivers/molecular.cpp
+++ b/src/mame/drivers/molecular.cpp
@@ -175,25 +175,29 @@ WRITE8_MEMBER( molecula_state::sio_w)
printf("%c\n",data);
}
-ADDRESS_MAP_START(molecula_state::molecula_file_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(file_r,file_w)
-ADDRESS_MAP_END
+void molecula_state::molecula_file_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(molecula_state::file_r), FUNC(molecula_state::file_w));
+}
-ADDRESS_MAP_START(molecula_state::molecula_file_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void molecula_state::molecula_file_io(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x40, 0x43) AM_READWRITE(sio_r,sio_w)
- AM_RANGE(0x72, 0x73) AM_WRITE(file_output_w) // unknown
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(molecula_state::molecula_app_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(app_r,app_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(molecula_state::molecula_app_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_WRITE(app_output_w)
- AM_RANGE(0x60, 0x63) AM_READWRITE(sio_r,sio_w)
-ADDRESS_MAP_END
+ map(0x72, 0x73).w(this, FUNC(molecula_state::file_output_w)); // unknown
+}
+
+void molecula_state::molecula_app_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(molecula_state::app_r), FUNC(molecula_state::app_w));
+}
+
+void molecula_state::molecula_app_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w(this, FUNC(molecula_state::app_output_w));
+ map(0x60, 0x63).rw(this, FUNC(molecula_state::sio_r), FUNC(molecula_state::sio_w));
+}
static INPUT_PORTS_START( molecula )
/* dummy active high structure */
diff --git a/src/mame/drivers/momoko.cpp b/src/mame/drivers/momoko.cpp
index 58189b59db3..dd8b384e52e 100644
--- a/src/mame/drivers/momoko.cpp
+++ b/src/mame/drivers/momoko.cpp
@@ -63,38 +63,40 @@ WRITE8_MEMBER(momoko_state::momoko_bg_read_bank_w)
/****************************************************************************/
-ADDRESS_MAP_START(momoko_state::momoko_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd064, 0xd0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd400, 0xd400) AM_READ_PORT("IN0") AM_WRITENOP /* interrupt ack? */
- AM_RANGE(0xd402, 0xd402) AM_READ_PORT("IN1") AM_WRITE(momoko_flipscreen_w)
- AM_RANGE(0xd404, 0xd404) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xdc00, 0xdc00) AM_WRITE(momoko_fg_scrolly_w)
- AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w)
- AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w)
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe800) AM_WRITE(momoko_text_scrolly_w)
- AM_RANGE(0xe801, 0xe801) AM_WRITE(momoko_text_mode_w)
- AM_RANGE(0xf000, 0xffff) AM_ROMBANK("bank1")
- AM_RANGE(0xf000, 0xf001) AM_WRITE(momoko_bg_scrolly_w) AM_SHARE("bg_scrolly")
- AM_RANGE(0xf002, 0xf003) AM_WRITE(momoko_bg_scrollx_w) AM_SHARE("bg_scrollx")
- AM_RANGE(0xf004, 0xf004) AM_WRITE(momoko_bg_read_bank_w)
- AM_RANGE(0xf006, 0xf006) AM_WRITE(momoko_bg_select_w)
- AM_RANGE(0xf007, 0xf007) AM_WRITE(momoko_bg_priority_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(momoko_state::momoko_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown */
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* unknown */
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void momoko_state::momoko_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd064, 0xd0ff).ram().share("spriteram");
+ map(0xd400, 0xd400).portr("IN0").nopw(); /* interrupt ack? */
+ map(0xd402, 0xd402).portr("IN1").w(this, FUNC(momoko_state::momoko_flipscreen_w));
+ map(0xd404, 0xd404).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xd406, 0xd406).portr("DSW0").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xd407, 0xd407).portr("DSW1");
+ map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xdc00, 0xdc00).w(this, FUNC(momoko_state::momoko_fg_scrolly_w));
+ map(0xdc01, 0xdc01).w(this, FUNC(momoko_state::momoko_fg_scrollx_w));
+ map(0xdc02, 0xdc02).w(this, FUNC(momoko_state::momoko_fg_select_w));
+ map(0xe000, 0xe3ff).ram().share("videoram");
+ map(0xe800, 0xe800).w(this, FUNC(momoko_state::momoko_text_scrolly_w));
+ map(0xe801, 0xe801).w(this, FUNC(momoko_state::momoko_text_mode_w));
+ map(0xf000, 0xffff).bankr("bank1");
+ map(0xf000, 0xf001).w(this, FUNC(momoko_state::momoko_bg_scrolly_w)).share("bg_scrolly");
+ map(0xf002, 0xf003).w(this, FUNC(momoko_state::momoko_bg_scrollx_w)).share("bg_scrollx");
+ map(0xf004, 0xf004).w(this, FUNC(momoko_state::momoko_bg_read_bank_w));
+ map(0xf006, 0xf006).w(this, FUNC(momoko_state::momoko_bg_select_w));
+ map(0xf007, 0xf007).w(this, FUNC(momoko_state::momoko_bg_priority_w));
+}
+
+void momoko_state::momoko_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).nopw(); /* unknown */
+ map(0xa000, 0xa001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb000, 0xb000).nopw(); /* unknown */
+ map(0xc000, 0xc001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/****************************************************************************/
diff --git a/src/mame/drivers/monty.cpp b/src/mame/drivers/monty.cpp
index 3568b82d9e2..85a5d6bb650 100644
--- a/src/mame/drivers/monty.cpp
+++ b/src/mame/drivers/monty.cpp
@@ -84,36 +84,39 @@ private:
};
-ADDRESS_MAP_START(monty_state::monty_mem)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
+void monty_state::monty_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
//AM_RANGE(0x4000, 0x4000) // The main rom checks to see if another program is here on startup
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(monty_state::mmonty_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
+void monty_state::mmonty_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
//AM_RANGE(0xc000, 0xc000) // The main rom checks to see if another program is here on startup
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom();
+ map(0x7800, 0x7fff).ram();
+}
-ADDRESS_MAP_START(monty_state::monty_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(ioCommandWrite0_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(sound_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(ioCommandWrite1_w)
- AM_RANGE(0x80, 0xff) AM_WRITE(ioDisplayWrite_w)
+void monty_state::monty_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(monty_state::ioCommandWrite0_w));
+ map(0x01, 0x01).w(this, FUNC(monty_state::sound_w));
+ map(0x02, 0x02).w(this, FUNC(monty_state::ioCommandWrite1_w));
+ map(0x80, 0xff).w(this, FUNC(monty_state::ioDisplayWrite_w));
// 7 reads from a bit shifted IO port
- AM_RANGE(0x01, 0x01) AM_READ_PORT("X1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("X2")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("X3")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("X4")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("X5")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("X6")
- AM_RANGE(0x40, 0x40) AM_READ_PORT("X7")
-ADDRESS_MAP_END
+ map(0x01, 0x01).portr("X1");
+ map(0x02, 0x02).portr("X2");
+ map(0x04, 0x04).portr("X3");
+ map(0x08, 0x08).portr("X4");
+ map(0x10, 0x10).portr("X5");
+ map(0x20, 0x20).portr("X6");
+ map(0x40, 0x40).portr("X7");
+}
// Input ports
diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp
index 6b3f12fba30..9efed3da1c4 100644
--- a/src/mame/drivers/monzagp.cpp
+++ b/src/mame/drivers/monzagp.cpp
@@ -262,9 +262,10 @@ uint32_t monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind1
return 0;
}
-ADDRESS_MAP_START(monzagp_state::monzagp_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void monzagp_state::monzagp_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
READ8_MEMBER(monzagp_state::port_r)
@@ -405,9 +406,10 @@ WRITE8_MEMBER(monzagp_state::port2_w)
}
-ADDRESS_MAP_START(monzagp_state::monzagp_io)
- AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w)
-ADDRESS_MAP_END
+void monzagp_state::monzagp_io(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(monzagp_state::port_r), FUNC(monzagp_state::port_w));
+}
static INPUT_PORTS_START( monzagp )
PORT_START("WHEEL")
diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp
index 198c89de596..d8b371da588 100644
--- a/src/mame/drivers/moo.cpp
+++ b/src/mame/drivers/moo.cpp
@@ -299,111 +299,115 @@ WRITE16_MEMBER(moo_state::moobl_oki_bank_w)
m_oki->set_rom_bank(data & 0x0f);
}
-ADDRESS_MAP_START(moo_state::moo_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
-
- AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) /* K054338 alpha blending engine */
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w)
- AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* CCU regs (ignored) */
- AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */
- AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0")
- AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("IN1")
- AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w)
- AM_RANGE(0x100000, 0x17ffff) AM_ROM
- AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") /* Work RAM */
- AM_RANGE(0x190000, 0x19ffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */
- AM_RANGE(0x1a2000, 0x1a3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */
- AM_RANGE(0x1b0000, 0x1b1fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */
- AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+void moo_state::moo_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+
+ map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r));
+ map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */
+ map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x0ce000, 0x0ce01f).w(this, FUNC(moo_state::moo_prot_w));
+ map(0x0d0000, 0x0d001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* CCU regs (ignored) */
+ map(0x0d4000, 0x0d4001).w(this, FUNC(moo_state::sound_irq_w));
+ map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */
+ map(0x0da000, 0x0da001).portr("P1_P3");
+ map(0x0da002, 0x0da003).portr("P2_P4");
+ map(0x0dc000, 0x0dc001).portr("IN0");
+ map(0x0dc002, 0x0dc003).portr("IN1");
+ map(0x0de000, 0x0de001).rw(this, FUNC(moo_state::control2_r), FUNC(moo_state::control2_w));
+ map(0x100000, 0x17ffff).rom();
+ map(0x180000, 0x18ffff).ram().share("workram"); /* Work RAM */
+ map(0x190000, 0x19ffff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x1a0000, 0x1a1fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */
+ map(0x1a2000, 0x1a3fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */
+ map(0x1b0000, 0x1b1fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */
+ map(0x1c0000, 0x1c1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
#if MOO_DEBUG
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r)
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r)
+ map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r));
+ map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r));
+ map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r));
+ map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r));
+ map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r));
#endif
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(moo_state::moobl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x0c2f00, 0x0c2f01) AM_READNOP /* heck if I know, but it's polled constantly */
- AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) /* K054338 alpha blending engine */
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x0d0000, 0x0d001f) AM_WRITEONLY /* CCU regs (ignored) */
- AM_RANGE(0x0d6ffc, 0x0d6ffd) AM_WRITE(moobl_oki_bank_w)
- AM_RANGE(0x0d6ffe, 0x0d6fff) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */
- AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0")
- AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("IN1")
- AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w)
- AM_RANGE(0x100000, 0x17ffff) AM_ROM
- AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") /* Work RAM */
- AM_RANGE(0x190000, 0x19ffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */
- AM_RANGE(0x1a2000, 0x1a3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */
- AM_RANGE(0x1b0000, 0x1b1fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */
- AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(moo_state::bucky_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x090000, 0x09ffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x0a0000, 0x0affff) AM_RAM /* extra sprite RAM? */
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) /* K054338 alpha blending engine */
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w)
- AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* CCU regs (ignored) */
- AM_RANGE(0x0d2000, 0x0d20ff) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w)
- AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */
- AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0")
- AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("IN1")
- AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w)
- AM_RANGE(0x180000, 0x181fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */
- AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */
- AM_RANGE(0x184000, 0x187fff) AM_RAM /* extra tile RAM? */
- AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */
- AM_RANGE(0x1b0000, 0x1b3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x23ffff) AM_ROM /* data */
+}
+
+void moo_state::moobl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+ map(0x0c2f00, 0x0c2f01).nopr(); /* heck if I know, but it's polled constantly */
+ map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r));
+ map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */
+ map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x0d0000, 0x0d001f).writeonly(); /* CCU regs (ignored) */
+ map(0x0d6ffc, 0x0d6ffd).w(this, FUNC(moo_state::moobl_oki_bank_w));
+ map(0x0d6fff, 0x0d6fff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */
+ map(0x0da000, 0x0da001).portr("P1_P3");
+ map(0x0da002, 0x0da003).portr("P2_P4");
+ map(0x0dc000, 0x0dc001).portr("IN0");
+ map(0x0dc002, 0x0dc003).portr("IN1");
+ map(0x0de000, 0x0de001).rw(this, FUNC(moo_state::control2_r), FUNC(moo_state::control2_w));
+ map(0x100000, 0x17ffff).rom();
+ map(0x180000, 0x18ffff).ram().share("workram"); /* Work RAM */
+ map(0x190000, 0x19ffff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x1a0000, 0x1a1fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */
+ map(0x1a2000, 0x1a3fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */
+ map(0x1b0000, 0x1b1fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */
+ map(0x1c0000, 0x1c1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void moo_state::bucky_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram();
+ map(0x090000, 0x09ffff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x0a0000, 0x0affff).ram(); /* extra sprite RAM? */
+ map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+ map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r));
+ map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */
+ map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x0ce000, 0x0ce01f).w(this, FUNC(moo_state::moo_prot_w));
+ map(0x0d0000, 0x0d001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* CCU regs (ignored) */
+ map(0x0d2000, 0x0d20ff).rw("k054000", FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w));
+ map(0x0d4000, 0x0d4001).w(this, FUNC(moo_state::sound_irq_w));
+ map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */
+ map(0x0da000, 0x0da001).portr("P1_P3");
+ map(0x0da002, 0x0da003).portr("P2_P4");
+ map(0x0dc000, 0x0dc001).portr("IN0");
+ map(0x0dc002, 0x0dc003).portr("IN1");
+ map(0x0de000, 0x0de001).rw(this, FUNC(moo_state::control2_r), FUNC(moo_state::control2_w));
+ map(0x180000, 0x181fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */
+ map(0x182000, 0x183fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */
+ map(0x184000, 0x187fff).ram(); /* extra tile RAM? */
+ map(0x190000, 0x191fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */
+ map(0x1b0000, 0x1b3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x23ffff).rom(); /* data */
#if MOO_DEBUG
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r)
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r)
+ map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r));
+ map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r));
+ map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r));
+ map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r));
+ map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r));
#endif
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(moo_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+}
+
+void moo_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xec00, 0xec01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(this, FUNC(moo_state::sound_bankswitch_w));
+}
static INPUT_PORTS_START( moo )
PORT_START("IN0")
diff --git a/src/mame/drivers/mosaic.cpp b/src/mame/drivers/mosaic.cpp
index 478b070609f..48e5ab509b5 100644
--- a/src/mame/drivers/mosaic.cpp
+++ b/src/mame/drivers/mosaic.cpp
@@ -117,41 +117,45 @@ READ8_MEMBER(mosaic_state::gfire2_protection_r)
-ADDRESS_MAP_START(mosaic_state::mosaic_map)
- AM_RANGE(0x00000, 0x0ffff) AM_ROM
- AM_RANGE(0x20000, 0x21fff) AM_RAM
- AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mosaic_state::gfire2_map)
- AM_RANGE(0x00000, 0x0ffff) AM_ROM
- AM_RANGE(0x10000, 0x17fff) AM_RAM
- AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mosaic_state::mosaic_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */
- AM_RANGE(0x30, 0x30) AM_READNOP /* Z180 internal registers */
- AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x72, 0x72) AM_READWRITE(protection_r, protection_w)
- AM_RANGE(0x74, 0x74) AM_READ_PORT("P1")
- AM_RANGE(0x76, 0x76) AM_READ_PORT("P2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mosaic_state::gfire2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */
- AM_RANGE(0x30, 0x30) AM_READNOP /* Z180 internal registers */
- AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x72, 0x72) AM_READWRITE(gfire2_protection_r, gfire2_protection_w)
- AM_RANGE(0x74, 0x74) AM_READ_PORT("P1")
- AM_RANGE(0x76, 0x76) AM_READ_PORT("P2")
-ADDRESS_MAP_END
+void mosaic_state::mosaic_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom();
+ map(0x20000, 0x21fff).ram();
+ map(0x22000, 0x22fff).ram().w(this, FUNC(mosaic_state::bgvideoram_w)).share("bgvideoram");
+ map(0x23000, 0x23fff).ram().w(this, FUNC(mosaic_state::fgvideoram_w)).share("fgvideoram");
+ map(0x24000, 0x241ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void mosaic_state::gfire2_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom();
+ map(0x10000, 0x17fff).ram();
+ map(0x22000, 0x22fff).ram().w(this, FUNC(mosaic_state::bgvideoram_w)).share("bgvideoram");
+ map(0x23000, 0x23fff).ram().w(this, FUNC(mosaic_state::fgvideoram_w)).share("fgvideoram");
+ map(0x24000, 0x241ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void mosaic_state::mosaic_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).nopw(); /* Z180 internal registers */
+ map(0x30, 0x30).nopr(); /* Z180 internal registers */
+ map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x72, 0x72).rw(this, FUNC(mosaic_state::protection_r), FUNC(mosaic_state::protection_w));
+ map(0x74, 0x74).portr("P1");
+ map(0x76, 0x76).portr("P2");
+}
+
+void mosaic_state::gfire2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).nopw(); /* Z180 internal registers */
+ map(0x30, 0x30).nopr(); /* Z180 internal registers */
+ map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x72, 0x72).rw(this, FUNC(mosaic_state::gfire2_protection_r), FUNC(mosaic_state::gfire2_protection_w));
+ map(0x74, 0x74).portr("P1");
+ map(0x76, 0x76).portr("P2");
+}
static INPUT_PORTS_START( mosaic )
diff --git a/src/mame/drivers/mouser.cpp b/src/mame/drivers/mouser.cpp
index a153c2136fb..5a5082a549f 100644
--- a/src/mame/drivers/mouser.cpp
+++ b/src/mame/drivers/mouser.cpp
@@ -64,36 +64,40 @@ INTERRUPT_GEN_MEMBER(mouser_state::mouser_sound_nmi_assert)
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
-ADDRESS_MAP_START(mouser_state::mouser_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_WRITENOP /* unknown */
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2") AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mouser_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mouser_state::mouser_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_READ(mouser_sound_byte_r)
- AM_RANGE(0x4000, 0x4000) AM_WRITE(mouser_sound_nmi_clear_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mouser_state::mouser_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void mouser_state::mouser_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram();
+ map(0x8800, 0x88ff).nopw(); /* unknown */
+ map(0x9000, 0x93ff).ram().share("videoram");
+ map(0x9800, 0x9bff).ram().share("spriteram");
+ map(0x9c00, 0x9fff).ram().share("colorram");
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xa800, 0xa800).portr("SYSTEM");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb800, 0xb800).portr("P2").w(this, FUNC(mouser_state::mouser_sound_interrupt_w)); /* byte to sound cpu */
+}
+
+void mouser_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().share("decrypted_opcodes");
+}
+
+void mouser_state::mouser_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r(this, FUNC(mouser_state::mouser_sound_byte_r));
+ map(0x4000, 0x4000).w(this, FUNC(mouser_state::mouser_sound_nmi_clear_w));
+}
+
+void mouser_state::mouser_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x80, 0x81).w("ay2", FUNC(ay8910_device::data_address_w));
+}
static INPUT_PORTS_START( mouser )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp
index 4beba6016d1..ac2d46bd258 100644
--- a/src/mame/drivers/mpf1.cpp
+++ b/src/mame/drivers/mpf1.cpp
@@ -58,54 +58,61 @@
/* Address Maps */
-ADDRESS_MAP_START(mpf1_state::mpf1_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1800, 0x1fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpf1_state::mpf1_step)
- AM_RANGE(0x0000, 0xffff) AM_READ(step_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpf1_state::mpf1b_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x5000, 0x6fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpf1_state::mpf1p_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpf1_state::mpf1_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpf1_state::mpf1b_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
- AM_RANGE(0xfe, 0xfe) AM_MIRROR(0x01) AM_DEVREADWRITE(TMS5220_TAG, tms5220_device, status_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpf1_state::mpf1p_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
-ADDRESS_MAP_END
+void mpf1_state::mpf1_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1800, 0x1fff).ram();
+}
+
+void mpf1_state::mpf1_step(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(mpf1_state::step_r));
+}
+
+void mpf1_state::mpf1b_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1800, 0x1fff).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x5000, 0x6fff).rom();
+}
+
+void mpf1_state::mpf1p_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x6000, 0x6fff).rom();
+ map(0xf000, 0xffff).ram();
+}
+
+void mpf1_state::mpf1_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x3c).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x43).mirror(0x3c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x80, 0x83).mirror(0x3c).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
+
+void mpf1_state::mpf1b_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x3c).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x43).mirror(0x3c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x80, 0x83).mirror(0x3c).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xfe, 0xfe).mirror(0x01).rw(TMS5220_TAG, FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w));
+}
+
+void mpf1_state::mpf1p_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x3c).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x43).mirror(0x3c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x80, 0x83).mirror(0x3c).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/mps1230.cpp b/src/mame/drivers/mps1230.cpp
index fdea1f07d12..5fa038e0150 100644
--- a/src/mame/drivers/mps1230.cpp
+++ b/src/mame/drivers/mps1230.cpp
@@ -123,11 +123,12 @@ void mps1230_state::machine_reset()
ADDRESS MAP
***************************************************************************/
-ADDRESS_MAP_START(mps1230_state::mps1230_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xc000, 0xdfff) AM_RAM // as per the service manual
- AM_RANGE(0xff80, 0xffff) AM_RAM // internal in cpu
-ADDRESS_MAP_END
+void mps1230_state::mps1230_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0xc000, 0xdfff).ram(); // as per the service manual
+ map(0xff80, 0xffff).ram(); // internal in cpu
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp
index 82c775f7e76..061a9e0462f 100644
--- a/src/mame/drivers/mpu12wbk.cpp
+++ b/src/mame/drivers/mpu12wbk.cpp
@@ -311,22 +311,23 @@ PALETTE_INIT_MEMBER(mpu12wbk_state, mpu12wbk)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(mpu12wbk_state::mpu12wbk_map)
- AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("crtc", mc6845_device, address_w) // OK
- AM_RANGE(0x1401, 0x1401) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) // OK
- AM_RANGE(0x1e00, 0x1e01) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) // hmmmmm....
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(mpu12wbk_videoram_w) AM_SHARE("videoram") // FIXME
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(mpu12wbk_colorram_w) AM_SHARE("colorram") // FIXME
- AM_RANGE(0x2800, 0x3fff) AM_RAM // RAM (from 2000-3fff)
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("SW1") // dummy, placeholder
- AM_RANGE(0x6001, 0x6001) AM_READ_PORT("SW2") // dummy, placeholder
- AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN0") // dummy, placeholder
- AM_RANGE(0x6003, 0x6003) AM_READ_PORT("IN1") // dummy, placeholder
- AM_RANGE(0x6004, 0x6004) AM_READ_PORT("IN2") // dummy, placeholder
- AM_RANGE(0x6005, 0x6005) AM_READ_PORT("IN3") // dummy, placeholder
-
- AM_RANGE(0x8000, 0xffff) AM_ROM // OK
-ADDRESS_MAP_END
+void mpu12wbk_state::mpu12wbk_map(address_map &map)
+{
+ map(0x1400, 0x1400).w("crtc", FUNC(mc6845_device::address_w)); // OK
+ map(0x1401, 0x1401).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // OK
+ map(0x1e00, 0x1e01).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // hmmmmm....
+ map(0x2000, 0x23ff).ram().w(this, FUNC(mpu12wbk_state::mpu12wbk_videoram_w)).share("videoram"); // FIXME
+ map(0x2400, 0x27ff).ram().w(this, FUNC(mpu12wbk_state::mpu12wbk_colorram_w)).share("colorram"); // FIXME
+ map(0x2800, 0x3fff).ram(); // RAM (from 2000-3fff)
+ map(0x6000, 0x6000).portr("SW1"); // dummy, placeholder
+ map(0x6001, 0x6001).portr("SW2"); // dummy, placeholder
+ map(0x6002, 0x6002).portr("IN0"); // dummy, placeholder
+ map(0x6003, 0x6003).portr("IN1"); // dummy, placeholder
+ map(0x6004, 0x6004).portr("IN2"); // dummy, placeholder
+ map(0x6005, 0x6005).portr("IN3"); // dummy, placeholder
+
+ map(0x8000, 0xffff).rom(); // OK
+}
/*
diff --git a/src/mame/drivers/mpu2.cpp b/src/mame/drivers/mpu2.cpp
index 4ca37ff12ba..b5042c0ec39 100644
--- a/src/mame/drivers/mpu2.cpp
+++ b/src/mame/drivers/mpu2.cpp
@@ -59,15 +59,16 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(mpu2_state::mpu2_basemap)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff) // A14/A15 Not Connected
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("romp1", 0)
- AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("maskrom", 0)
- AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("romp2", 0) AM_MIRROR(0x2000)
- AM_RANGE(0x2000, 0x2003) AM_RAM // maybe a 6821?
- AM_RANGE(0x2004, 0x2007) AM_RAM // maybe a 6821?
-ADDRESS_MAP_END
+void mpu2_state::mpu2_basemap(address_map &map)
+{
+ map.global_mask(0x3fff); // A14/A15 Not Connected
+ map(0x0000, 0x007f).ram();
+ map(0x0800, 0x0fff).rom().region("romp1", 0);
+ map(0x1000, 0x17ff).rom().region("maskrom", 0);
+ map(0x1800, 0x1fff).rom().region("romp2", 0).mirror(0x2000);
+ map(0x2000, 0x2003).ram(); // maybe a 6821?
+ map(0x2004, 0x2007).ram(); // maybe a 6821?
+}
static INPUT_PORTS_START( mpu2 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp
index a88f99a2e7e..a3c3124060b 100644
--- a/src/mame/drivers/mpu3.cpp
+++ b/src/mame/drivers/mpu3.cpp
@@ -824,15 +824,16 @@ READ8_MEMBER(mpu3_state::mpu3ptm_r)
return ptm2->read(offset >>2);
}
-ADDRESS_MAP_START(mpu3_state::mpu3_basemap)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1000, 0xffff) AM_ROM
- AM_RANGE(0x8800, 0x881f) AM_READWRITE(mpu3ptm_r, mpu3ptm_w)/* PTM6840 IC2 */
- AM_RANGE(0x9000, 0x9003) AM_DEVREADWRITE("pia_ic3", pia6821_device, read, write) /* PIA6821 IC3 */
- AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("pia_ic4", pia6821_device, read, write) /* PIA6821 IC4 */
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("pia_ic5", pia6821_device, read, write) /* PIA6821 IC5 */
- AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("pia_ic6", pia6821_device, read, write) /* PIA6821 IC6 */
-ADDRESS_MAP_END
+void mpu3_state::mpu3_basemap(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x1000, 0xffff).rom();
+ map(0x8800, 0x881f).rw(this, FUNC(mpu3_state::mpu3ptm_r), FUNC(mpu3_state::mpu3ptm_w));/* PTM6840 IC2 */
+ map(0x9000, 0x9003).rw("pia_ic3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */
+ map(0x9800, 0x9803).rw("pia_ic4", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */
+ map(0xa000, 0xa003).rw("pia_ic5", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */
+ map(0xa800, 0xa803).rw("pia_ic6", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
+}
#define MCFG_MPU3_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
diff --git a/src/mame/drivers/mpu4dealem.cpp b/src/mame/drivers/mpu4dealem.cpp
index 6efef6ed4d5..f0f939e7e47 100644
--- a/src/mame/drivers/mpu4dealem.cpp
+++ b/src/mame/drivers/mpu4dealem.cpp
@@ -153,26 +153,27 @@ WRITE_LINE_MEMBER(mpu4dealem_state::dealem_vsync_changed)
*
*************************************/
-ADDRESS_MAP_START(mpu4dealem_state::dealem_memmap)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
+void mpu4dealem_state::dealem_memmap(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
/* AM_RANGE(0x08e0, 0x08e7) AM_READWRITE(68681_duart_r,68681_duart_w) */ //Runs hoppers
- AM_RANGE(0x0900, 0x0907) AM_DEVREADWRITE("ptm_ic2", ptm6840_device, read, write)/* PTM6840 IC2 */
+ map(0x0900, 0x0907).rw(m_6840ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));/* PTM6840 IC2 */
- AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia_ic3", pia6821_device, read, write) /* PIA6821 IC3 */
- AM_RANGE(0x0b00, 0x0b03) AM_DEVREADWRITE("pia_ic4", pia6821_device, read, write) /* PIA6821 IC4 */
- AM_RANGE(0x0c00, 0x0c03) AM_DEVREADWRITE("pia_ic5", pia6821_device, read, write) /* PIA6821 IC5 */
- AM_RANGE(0x0d00, 0x0d03) AM_DEVREADWRITE("pia_ic6", pia6821_device, read, write) /* PIA6821 IC6 */
- AM_RANGE(0x0e00, 0x0e03) AM_DEVREADWRITE("pia_ic7", pia6821_device, read, write) /* PIA6821 IC7 */
- AM_RANGE(0x0f00, 0x0f03) AM_DEVREADWRITE("pia_ic8", pia6821_device, read, write) /* PIA6821 IC8 */
+ map(0x0a00, 0x0a03).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */
+ map(0x0b00, 0x0b03).rw(m_pia4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */
+ map(0x0c00, 0x0c03).rw(m_pia5, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */
+ map(0x0d00, 0x0d03).rw(m_pia6, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
+ map(0x0e00, 0x0e03).rw(m_pia7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC7 */
+ map(0x0f00, 0x0f03).rw(m_pia8, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC8 */
- AM_RANGE(0x1000, 0x2fff) AM_RAM AM_SHARE("dealem_videoram")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITENOP/* 64k paged ROM (4 pages) */
-ADDRESS_MAP_END
+ map(0x1000, 0x2fff).ram().share("dealem_videoram");
+ map(0x8000, 0xffff).rom().nopw();/* 64k paged ROM (4 pages) */
+}
MACHINE_RESET_MEMBER(mpu4dealem_state,dealem_vid)
{
diff --git a/src/mame/drivers/mpu4plasma.cpp b/src/mame/drivers/mpu4plasma.cpp
index 7f447b27e44..746e6744d81 100644
--- a/src/mame/drivers/mpu4plasma.cpp
+++ b/src/mame/drivers/mpu4plasma.cpp
@@ -40,15 +40,16 @@ public:
INPUT_PORTS_EXTERN( mpu4 );
-ADDRESS_MAP_START(mpu4plasma_state::mpu4plasma_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void mpu4plasma_state::mpu4plasma_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
// why does it test this much ram, just sloppy code expecting mirroring?
- AM_RANGE(0x400000, 0x4fffff) AM_RAM AM_SHARE("plasmaram")
+ map(0x400000, 0x4fffff).ram().share("plasmaram");
// comms?
- AM_RANGE(0xffff00, 0xffff01) AM_READ( mpu4plasma_unk_r )
- AM_RANGE(0xffff04, 0xffff05) AM_WRITE( mpu4plasma_unk_w )
-ADDRESS_MAP_END
+ map(0xffff00, 0xffff01).r(this, FUNC(mpu4plasma_state::mpu4plasma_unk_r));
+ map(0xffff04, 0xffff05).w(this, FUNC(mpu4plasma_state::mpu4plasma_unk_w));
+}
uint32_t mpu4plasma_state::screen_update_mpu4plasma(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp
index 5228b63492d..c3863ce4d25 100644
--- a/src/mame/drivers/mpu4vid.cpp
+++ b/src/mame/drivers/mpu4vid.cpp
@@ -403,9 +403,10 @@ READ8_MEMBER(mpu4vid_state::vram_r)
return m_vid_mainram[offset];
}
-ADDRESS_MAP_START(mpu4vid_state::mpu4_vram)
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(vram_r, vram_w)
-ADDRESS_MAP_END
+void mpu4vid_state::mpu4_vram(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(this, FUNC(mpu4vid_state::vram_r), FUNC(mpu4vid_state::vram_w));
+}
SCN2674_DRAW_CHARACTER_MEMBER(mpu4vid_state::display_pixels)
{
@@ -1180,74 +1181,78 @@ MACHINE_RESET_MEMBER(mpu4vid_state,mpu4_vid)
m_chr_value = 0;
}
-ADDRESS_MAP_START(mpu4vid_state::mpu4_68k_map)
- AM_RANGE(0x000000, 0x7fffff) AM_ROM
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
+void mpu4vid_state::mpu4_68k_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).rom();
+ map(0x800000, 0x80ffff).ram().share("vid_mainram");
// AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
- AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
+ map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w));
+ map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w));
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
- AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
- AM_RANGE(0xff8000, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff)
- AM_RANGE(0xff9000, 0xff900f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff)
- AM_RANGE(0xffd000, 0xffd00f) AM_READWRITE8(vidcharacteriser_r, vidcharacteriser_w,0x00ff)
-ADDRESS_MAP_END
+ map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff);
+ map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
+ map(0xff8000, 0xff8003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0xff9000, 0xff900f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0xffd000, 0xffd00f).rw(this, FUNC(mpu4vid_state::vidcharacteriser_r), FUNC(mpu4vid_state::vidcharacteriser_w)).umask16(0x00ff);
+}
-ADDRESS_MAP_START(mpu4vid_state::mpu4oki_68k_map)
- AM_RANGE(0x000000, 0x5fffff) AM_ROM //AM_WRITENOP
- AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */
+void mpu4vid_state::mpu4oki_68k_map(address_map &map)
+{
+ map(0x000000, 0x5fffff).rom(); //AM_WRITENOP
+ map(0x600000, 0x63ffff).ram(); /* The Mating Game has an extra 256kB RAM on the program card */
// AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
- AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
- AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
- AM_RANGE(0xff8000, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff)
- AM_RANGE(0xff9000, 0xff900f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff)
- AM_RANGE(0xffa040, 0xffa04f) AM_DEVREAD8("ptm_ic3ss", ptm6840_device, read,0x00ff) // 6840PTM on sampled sound board
- AM_RANGE(0xffa040, 0xffa04f) AM_WRITE8(ic3ss_w,0x00ff) // 6840PTM on sampled sound board
- AM_RANGE(0xffa060, 0xffa067) AM_DEVREADWRITE8("pia_ic4ss", pia6821_device, read, write,0x00ff) // PIA6821 on sampled sound board
- AM_RANGE(0xffd000, 0xffd00f) AM_READWRITE8(vidcharacteriser_r, vidcharacteriser_w, 0x00ff)
+ map(0x800000, 0x80ffff).ram().share("vid_mainram");
+ map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w));
+ map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w));
+ map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff);
+ map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
+ map(0xff8000, 0xff8003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0xff9000, 0xff900f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0xffa040, 0xffa04f).r("ptm_ic3ss", FUNC(ptm6840_device::read)).umask16(0x00ff); // 6840PTM on sampled sound board
+ map(0xffa040, 0xffa04f).w(this, FUNC(mpu4vid_state::ic3ss_w)).umask16(0x00ff); // 6840PTM on sampled sound board
+ map(0xffa060, 0xffa067).rw("pia_ic4ss", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff); // PIA6821 on sampled sound board
+ map(0xffd000, 0xffd00f).rw(this, FUNC(mpu4vid_state::vidcharacteriser_r), FUNC(mpu4vid_state::vidcharacteriser_w)).umask16(0x00ff);
// AM_RANGE(0xfff000, 0xffffff) AM_NOP /* Possible bug, reads and writes here */
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(mpu4vid_state::bwbvid_68k_map)
- AM_RANGE(0x000000, 0x7fffff) AM_ROM
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
- AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
- AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
+void mpu4vid_state::bwbvid_68k_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).rom();
+ map(0x800000, 0x80ffff).ram().share("vid_mainram");
+ map(0x810000, 0x81ffff).ram(); /* ? */
+ map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w));
+ map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w));
// AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
- AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
- AM_RANGE(0xe00000, 0xe00003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff)
- AM_RANGE(0xe01000, 0xe0100f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff)
+ map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff);
+ map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
+ map(0xe00000, 0xe00003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0xe01000, 0xe0100f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
//AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(bwb_characteriser16_r, bwb_characteriser16_w)//AM_READWRITE(adpcm_r, adpcm_w) CHR ?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(mpu4vid_state::bwbvid5_68k_map)
- AM_RANGE(0x000000, 0x7fffff) AM_ROM
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
- AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
- AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
+void mpu4vid_state::bwbvid5_68k_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).rom();
+ map(0x800000, 0x80ffff).ram().share("vid_mainram");
+ map(0x810000, 0x81ffff).ram(); /* ? */
+ map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w));
+ map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w));
//AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
- AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
- AM_RANGE(0xe00000, 0xe00003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff)
- AM_RANGE(0xe01000, 0xe0100f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff)
- AM_RANGE(0xe02000, 0xe02007) AM_DEVREADWRITE8("pia_ic4ss", pia6821_device, read, write, 0xff00) //Seems odd...
- AM_RANGE(0xe03000, 0xe0300f) AM_DEVREAD8("ptm_ic3ss", ptm6840_device, read,0xff00) // 6840PTM on sampled sound board
- AM_RANGE(0xe03000, 0xe0300f) AM_WRITE8(ic3ss_w,0xff00) // 6840PTM on sampled sound board
- AM_RANGE(0xe04000, 0xe0400f) AM_READWRITE8(bwb_characteriser_r, bwb_characteriser_w, 0x00ff)//AM_READWRITE(adpcm_r, adpcm_w) CHR ?
-ADDRESS_MAP_END
+ map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff);
+ map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
+ map(0xe00000, 0xe00003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0xe01000, 0xe0100f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+ map(0xe02000, 0xe02007).rw("pia_ic4ss", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0xff00); //Seems odd...
+ map(0xe03000, 0xe0300f).r("ptm_ic3ss", FUNC(ptm6840_device::read)).umask16(0xff00); // 6840PTM on sampled sound board
+ map(0xe03000, 0xe0300f).w(this, FUNC(mpu4vid_state::ic3ss_w)).umask16(0xff00); // 6840PTM on sampled sound board
+ map(0xe04000, 0xe0400f).rw(this, FUNC(mpu4vid_state::bwb_characteriser_r), FUNC(mpu4vid_state::bwb_characteriser_w)).umask16(0x00ff);//AM_READWRITE(adpcm_r, adpcm_w) CHR ?
+}
/* TODO: Fix up MPU4 map*/
ADDRESS_MAP_START(mpu4_state::mpu4_6809_map)
diff --git a/src/mame/drivers/mpu5.cpp b/src/mame/drivers/mpu5.cpp
index 6d92559866a..aa218e3125b 100644
--- a/src/mame/drivers/mpu5.cpp
+++ b/src/mame/drivers/mpu5.cpp
@@ -530,9 +530,10 @@ WRITE32_MEMBER(mpu5_state::mpu5_mem_w)
}
-ADDRESS_MAP_START(mpu5_state::mpu5_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(mpu5_mem_r, mpu5_mem_w)
-ADDRESS_MAP_END
+void mpu5_state::mpu5_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(mpu5_state::mpu5_mem_r), FUNC(mpu5_state::mpu5_mem_w));
+}
INPUT_PORTS_START( mpu5 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/mpz80.cpp b/src/mame/drivers/mpz80.cpp
index 338eec746c0..84d192bb28d 100644
--- a/src/mame/drivers/mpz80.cpp
+++ b/src/mame/drivers/mpz80.cpp
@@ -532,8 +532,9 @@ WRITE8_MEMBER( mpz80_state::disp_col_w )
// ADDRESS_MAP( mpz80_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(mpz80_state::mpz80_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mmu_r, mmu_w)
+void mpz80_state::mpz80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(mpz80_state::mmu_r), FUNC(mpz80_state::mmu_w));
/*
Task 0 Segment 0 map:
@@ -546,15 +547,16 @@ ADDRESS_MAP_START(mpz80_state::mpz80_mem)
AM_RANGE(0x0800, 0x0bff) AM_ROM AM_REGION(Z80_TAG, 0)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREADWRITE(AM9512_TAG, am9512_device, read, write)
*/
-ADDRESS_MAP_END
+}
//-------------------------------------------------
// ADDRESS_MAP( mpz80_io )
//-------------------------------------------------
-ADDRESS_MAP_START(mpz80_state::mpz80_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mmu_io_r, mmu_io_w)
-ADDRESS_MAP_END
+void mpz80_state::mpz80_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(mpz80_state::mmu_io_r), FUNC(mpz80_state::mmu_io_w));
+}
diff --git a/src/mame/drivers/mquake.cpp b/src/mame/drivers/mquake.cpp
index 6fa024175fc..c02b5147190 100644
--- a/src/mame/drivers/mquake.cpp
+++ b/src/mame/drivers/mquake.cpp
@@ -84,9 +84,10 @@ READ8_MEMBER( mquake_state::es5503_sample_r )
return m_es5503_rom[offset + (m_es5503->get_channel_strobe() * 0x10000)];
}
-ADDRESS_MAP_START(mquake_state::mquake_es5503_map)
- AM_RANGE(0x000000, 0x1ffff) AM_READ(es5503_sample_r)
-ADDRESS_MAP_END
+void mquake_state::mquake_es5503_map(address_map &map)
+{
+ map(0x000000, 0x1ffff).r(this, FUNC(mquake_state::es5503_sample_r));
+}
WRITE16_MEMBER( mquake_state::output_w )
{
@@ -122,36 +123,39 @@ WRITE16_MEMBER( mquake_state::coin_chip_w )
*
*************************************/
-ADDRESS_MAP_START(mquake_state::overlay_512kb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mquake_state::a500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mquake_state::main_map)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x204000, 0x2041ff) AM_DEVREADWRITE8("es5503", es5503_device, read, write, 0x00ff)
- AM_RANGE(0x282000, 0x282001) AM_READ_PORT("SW.LO")
- AM_RANGE(0x282002, 0x282003) AM_READ_PORT("SW.HI")
- AM_RANGE(0x284000, 0x28400f) AM_WRITE(output_w)
- AM_RANGE(0x286000, 0x28600f) AM_READWRITE(coin_chip_r, coin_chip_w)
- AM_RANGE(0x300000, 0x3bffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0xf00000, 0xfbffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
-ADDRESS_MAP_END
+void mquake_state::overlay_512kb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
+
+void mquake_state::a500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(mquake_state::cia_r), FUNC(mquake_state::cia_w));
+ map(0xc00000, 0xd7ffff).rw(this, FUNC(mquake_state::custom_chip_r), FUNC(mquake_state::custom_chip_w));
+ map(0xd80000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(mquake_state::custom_chip_r), FUNC(mquake_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(mquake_state::custom_chip_r), FUNC(mquake_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(mquake_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
+
+void mquake_state::main_map(address_map &map)
+{
+ a500_mem(map);
+ map(0x200000, 0x203fff).ram().share("nvram");
+ map(0x204000, 0x2041ff).rw(m_es5503, FUNC(es5503_device::read), FUNC(es5503_device::write)).umask16(0x00ff);
+ map(0x282000, 0x282001).portr("SW.LO");
+ map(0x282002, 0x282003).portr("SW.HI");
+ map(0x284000, 0x28400f).w(this, FUNC(mquake_state::output_w));
+ map(0x286000, 0x28600f).rw(this, FUNC(mquake_state::coin_chip_r), FUNC(mquake_state::coin_chip_w));
+ map(0x300000, 0x3bffff).rom().region("user2", 0);
+ map(0xf00000, 0xfbffff).rom().region("user2", 0); /* Custom ROM */
+}
diff --git a/src/mame/drivers/mrdo.cpp b/src/mame/drivers/mrdo.cpp
index b0e6126eb4f..e27d3fcf50d 100644
--- a/src/mame/drivers/mrdo.cpp
+++ b/src/mame/drivers/mrdo.cpp
@@ -46,23 +46,24 @@ READ8_MEMBER(mrdo_state::mrdo_SECRE_r)
-ADDRESS_MAP_START(mrdo_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(mrdo_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(mrdo_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x9000, 0x90ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x9800, 0x9800) AM_WRITE(mrdo_flipscreen_w) /* screen flip + playfield priority */
- AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("u8106_1", u8106_device, write)
- AM_RANGE(0x9802, 0x9802) AM_DEVWRITE("u8106_2", u8106_device, write)
- AM_RANGE(0x9803, 0x9803) AM_READ(mrdo_SECRE_r)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("DSW1")
- AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW2")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf7ff) AM_WRITE(mrdo_scrollx_w)
- AM_RANGE(0xf800, 0xffff) AM_WRITE(mrdo_scrolly_w)
-ADDRESS_MAP_END
+void mrdo_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(mrdo_state::mrdo_bgvideoram_w)).share("bgvideoram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(mrdo_state::mrdo_fgvideoram_w)).share("fgvideoram");
+ map(0x9000, 0x90ff).writeonly().share("spriteram");
+ map(0x9800, 0x9800).w(this, 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(0x9803, 0x9803).r(this, FUNC(mrdo_state::mrdo_SECRE_r));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa001, 0xa001).portr("P2");
+ map(0xa002, 0xa002).portr("DSW1");
+ map(0xa003, 0xa003).portr("DSW2");
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xf7ff).w(this, FUNC(mrdo_state::mrdo_scrollx_w));
+ map(0xf800, 0xffff).w(this, FUNC(mrdo_state::mrdo_scrolly_w));
+}
static INPUT_PORTS_START( mrdo )
diff --git a/src/mame/drivers/mrflea.cpp b/src/mame/drivers/mrflea.cpp
index 3db1ab4b01a..ce0bcb7a30a 100644
--- a/src/mame/drivers/mrflea.cpp
+++ b/src/mame/drivers/mrflea.cpp
@@ -97,43 +97,47 @@ WRITE8_MEMBER(mrflea_state::mrflea_data1_w)
*
*************************************/
-ADDRESS_MAP_START(mrflea_state::mrflea_master_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(mrflea_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xec00, 0xecff) AM_RAM_WRITE(mrflea_spriteram_w) AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrflea_state::mrflea_master_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog? */
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("mainppi", i8255_device, read, write)
- AM_RANGE(0x60, 0x60) AM_WRITE(mrflea_gfx_bank_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mrflea_state::mrflea_slave_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x80ff) AM_RAM
- AM_RANGE(0x9000, 0x905a) AM_RAM /* ? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrflea_state::mrflea_slave_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("pic", pic8259_device, read, write)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("subppi", i8255_device, read, write)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x41, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x42, 0x42) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0x43, 0x43) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x44, 0x44) AM_DEVREADWRITE("ay3", ay8910_device, data_r, data_w)
- AM_RANGE(0x45, 0x45) AM_DEVWRITE("ay3", ay8910_device, address_w)
- AM_RANGE(0x46, 0x46) AM_DEVREADWRITE("ay4", ay8910_device, data_r, data_w)
- AM_RANGE(0x47, 0x47) AM_DEVWRITE("ay4", ay8910_device, address_w)
-ADDRESS_MAP_END
+void mrflea_state::mrflea_master_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(mrflea_state::mrflea_videoram_w)).share("videoram");
+ map(0xe800, 0xe83f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xec00, 0xecff).ram().w(this, FUNC(mrflea_state::mrflea_spriteram_w)).share("spriteram");
+}
+
+void mrflea_state::mrflea_master_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); /* watchdog? */
+ map(0x40, 0x43).rw("mainppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x60, 0x60).w(this, FUNC(mrflea_state::mrflea_gfx_bank_w));
+}
+
+
+void mrflea_state::mrflea_slave_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x3fff).rom();
+ map(0x8000, 0x80ff).ram();
+ map(0x9000, 0x905a).ram(); /* ? */
+}
+
+void mrflea_state::mrflea_slave_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); /* watchdog */
+ map(0x10, 0x11).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x20, 0x23).rw("subppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x40).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x41, 0x41).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x42, 0x42).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x43, 0x43).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x44, 0x44).rw("ay3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x45, 0x45).w("ay3", FUNC(ay8910_device::address_w));
+ map(0x46, 0x46).rw("ay4", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x47, 0x47).w("ay4", FUNC(ay8910_device::address_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp
index f542791498f..36afdd317a9 100644
--- a/src/mame/drivers/mrgame.cpp
+++ b/src/mame/drivers/mrgame.cpp
@@ -116,55 +116,61 @@ private:
};
-ADDRESS_MAP_START(mrgame_state::main_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x020000, 0x02ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x030000, 0x030001) AM_READ8(rsw_r, 0xff) //RSW ACK
- AM_RANGE(0x030002, 0x030003) AM_WRITE8(sound_w, 0xff) //W SOUND
- AM_RANGE(0x030004, 0x030005) AM_WRITE8(video_w, 0xff00) //W VID
- AM_RANGE(0x030006, 0x030007) AM_WRITE8(triple_w, 0xff) //W CS
- AM_RANGE(0x030008, 0x030009) AM_WRITENOP //W DATA - lamp/sol data
- AM_RANGE(0x03000a, 0x03000b) AM_WRITE8(row_w, 0xff) //W ROW
- AM_RANGE(0x03000c, 0x03000d) AM_READ8(col_r, 0xff) //R COL
- AM_RANGE(0x03000e, 0x03000f) AM_WRITENOP //EXT ADD - lamp/sol data
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::video_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("video", 0)
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(video_ctrl_w)
- AM_RANGE(0x7000, 0x77ff) AM_READNOP //AFR - looks like a watchdog
- AM_RANGE(0x8100, 0x8103) AM_MIRROR(0x7efc) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audio1", 0)
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio1_io)
- ADDRESS_MAP_GLOBAL_MASK(3)
- AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("dacvol", dac_byte_interface, write) //DA1
- AM_RANGE(0x0001, 0x0001) AM_READ(sound_r) //IN1
- AM_RANGE(0x0002, 0x0002) AM_WRITE(ack1_w) //AKL1
- AM_RANGE(0x0003, 0x0003) AM_WRITENOP //SGS pass data to M114
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audio2", 0)
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio2_io)
- ADDRESS_MAP_GLOBAL_MASK(7)
- AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("ldac", dac_byte_interface, write) //DA2
- AM_RANGE(0x0001, 0x0001) AM_READ(sound_r) //IN2
- AM_RANGE(0x0002, 0x0002) AM_WRITE(ack2_w) //AKL2
- AM_RANGE(0x0003, 0x0003) AM_DEVREADWRITE("tms", tms5220_device, status_r, data_w) //Speech
- AM_RANGE(0x0004, 0x0004) AM_DEVWRITE("rdac", dac_byte_interface, write) //DA3
-ADDRESS_MAP_END
+void mrgame_state::main_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom().region("roms", 0);
+ map(0x020000, 0x02ffff).ram().share("nvram");
+ map(0x030001, 0x030001).r(this, FUNC(mrgame_state::rsw_r)); //RSW ACK
+ map(0x030003, 0x030003).w(this, FUNC(mrgame_state::sound_w)); //W SOUND
+ map(0x030004, 0x030004).w(this, FUNC(mrgame_state::video_w)); //W VID
+ map(0x030007, 0x030007).w(this, FUNC(mrgame_state::triple_w)); //W CS
+ map(0x030008, 0x030009).nopw(); //W DATA - lamp/sol data
+ map(0x03000b, 0x03000b).w(this, FUNC(mrgame_state::row_w)); //W ROW
+ map(0x03000d, 0x03000d).r(this, FUNC(mrgame_state::col_r)); //R COL
+ map(0x03000e, 0x03000f).nopw(); //EXT ADD - lamp/sol data
+}
+
+void mrgame_state::video_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("video", 0);
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().share("objectram");
+ map(0x6800, 0x6807).mirror(0x07f8).w(this, FUNC(mrgame_state::video_ctrl_w));
+ map(0x7000, 0x77ff).nopr(); //AFR - looks like a watchdog
+ map(0x8100, 0x8103).mirror(0x7efc).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void mrgame_state::audio1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audio1", 0);
+ map(0xfc00, 0xffff).ram();
+}
+
+void mrgame_state::audio1_io(address_map &map)
+{
+ map.global_mask(3);
+ map(0x0000, 0x0000).w("dacvol", FUNC(dac_byte_interface::write)); //DA1
+ map(0x0001, 0x0001).r(this, FUNC(mrgame_state::sound_r)); //IN1
+ map(0x0002, 0x0002).w(this, FUNC(mrgame_state::ack1_w)); //AKL1
+ map(0x0003, 0x0003).nopw(); //SGS pass data to M114
+}
+
+void mrgame_state::audio2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audio2", 0);
+ map(0xfc00, 0xffff).ram();
+}
+
+void mrgame_state::audio2_io(address_map &map)
+{
+ map.global_mask(7);
+ map(0x0000, 0x0000).w("ldac", FUNC(dac_byte_interface::write)); //DA2
+ map(0x0001, 0x0001).r(this, FUNC(mrgame_state::sound_r)); //IN2
+ map(0x0002, 0x0002).w(this, FUNC(mrgame_state::ack2_w)); //AKL2
+ map(0x0003, 0x0003).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w)); //Speech
+ map(0x0004, 0x0004).w("rdac", FUNC(dac_byte_interface::write)); //DA3
+}
static INPUT_PORTS_START( mrgame )
PORT_START("DSW0")
diff --git a/src/mame/drivers/mrjong.cpp b/src/mame/drivers/mrjong.cpp
index 35aa3d84bcc..44a48ab3a96 100644
--- a/src/mame/drivers/mrjong.cpp
+++ b/src/mame/drivers/mrjong.cpp
@@ -72,21 +72,23 @@ READ8_MEMBER(mrjong_state::io_0x03_r)
*
*************************************/
-ADDRESS_MAP_START(mrjong_state::mrjong_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(mrjong_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(mrjong_colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrjong_state::mrjong_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P2") AM_WRITE(mrjong_flipscreen_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW") AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x03, 0x03) AM_READ(io_0x03_r) // Unknown
-ADDRESS_MAP_END
+void mrjong_state::mrjong_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa7ff).ram();
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(mrjong_state::mrjong_videoram_w)).share("videoram");
+ map(0xe400, 0xe7ff).ram().w(this, FUNC(mrjong_state::mrjong_colorram_w)).share("colorram");
+}
+
+void mrjong_state::mrjong_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P2").w(this, 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(0x03, 0x03).r(this, FUNC(mrjong_state::io_0x03_r)); // Unknown
+}
/*************************************
*
diff --git a/src/mame/drivers/ms0515.cpp b/src/mame/drivers/ms0515.cpp
index 1f319dd539b..1af747dd64d 100644
--- a/src/mame/drivers/ms0515.cpp
+++ b/src/mame/drivers/ms0515.cpp
@@ -128,48 +128,49 @@ private:
floppy_image_device *m_floppy;
};
-ADDRESS_MAP_START(ms0515_state::ms0515_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0000000, 0017777) AM_RAMBANK("bank0") // RAM
- AM_RANGE(0020000, 0037777) AM_RAMBANK("bank1") // RAM
- AM_RANGE(0040000, 0057777) AM_RAMBANK("bank2") // RAM
- AM_RANGE(0060000, 0077777) AM_RAMBANK("bank3") // RAM
- AM_RANGE(0100000, 0117777) AM_RAMBANK("bank4") // RAM
- AM_RANGE(0120000, 0137777) AM_RAMBANK("bank5") // RAM
- AM_RANGE(0140000, 0157777) AM_RAMBANK("bank6") // RAM
-
- AM_RANGE(0160000, 0177377) AM_ROM AM_WRITENOP
-
- AM_RANGE(0177400, 0177437) AM_WRITE(ms0515_bank_w) // Register for RAM expansion
-
- AM_RANGE(0177440, 0177441) AM_DEVREAD8("i8251kbd", i8251_device, data_r, 0x00ff)
- AM_RANGE(0177442, 0177443) AM_DEVREADWRITE8("i8251kbd", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0177460, 0177461) AM_DEVWRITE8("i8251kbd", i8251_device, data_w, 0x00ff)
- AM_RANGE(0177462, 0177463) AM_DEVWRITE8("i8251kbd", i8251_device, control_w, 0x00ff)
-
- AM_RANGE(0177500, 0177507) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0177520, 0177527) AM_DEVWRITE8("pit8253", pit8253_device, write, 0x00ff)
-
- AM_RANGE(0177540, 0177547) AM_NOP
-// AM_RANGE(0177540, 0177541)
-// AM_RANGE(0177542, 0177543)
-// AM_RANGE(0177544, 0177545) // i8255 for MS-7007 Keyboard
-// AM_RANGE(0177546, 0177547)
-
- AM_RANGE(0177600, 0177607) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff)
-
- AM_RANGE(0177640, 0177641) AM_DEVREADWRITE8("vg93", kr1818vg93_device, status_r, cmd_w, 0x00ff)
- AM_RANGE(0177642, 0177643) AM_DEVREADWRITE8("vg93", kr1818vg93_device, track_r, track_w, 0x00ff)
- AM_RANGE(0177644, 0177645) AM_DEVREADWRITE8("vg93", kr1818vg93_device, sector_r, sector_w, 0x00ff)
- AM_RANGE(0177646, 0177647) AM_DEVREADWRITE8("vg93", kr1818vg93_device, data_r, data_w, 0x00ff)
-
- AM_RANGE(0177700, 0177701) AM_DEVREAD8("i8251line", i8251_device, data_r, 0x00ff)
- AM_RANGE(0177702, 0177703) AM_DEVREADWRITE8("i8251line", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0177720, 0177721) AM_DEVWRITE8("i8251line", i8251_device, data_w, 0x00ff)
- AM_RANGE(0177722, 0177723) AM_DEVWRITE8("i8251line", i8251_device, control_w, 0x00ff)
-
- AM_RANGE(0177770, 0177771) AM_READWRITE(ms0515_halt_r, ms0515_halt_w) // read/write -- halt and system timer
-ADDRESS_MAP_END
+void ms0515_state::ms0515_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0000000, 0017777).bankrw("bank0"); // RAM
+ map(0020000, 0037777).bankrw("bank1"); // RAM
+ map(0040000, 0057777).bankrw("bank2"); // RAM
+ map(0060000, 0077777).bankrw("bank3"); // RAM
+ map(0100000, 0117777).bankrw("bank4"); // RAM
+ map(0120000, 0137777).bankrw("bank5"); // RAM
+ map(0140000, 0157777).bankrw("bank6"); // RAM
+
+ map(0160000, 0177377).rom().nopw();
+
+ map(0177400, 0177437).w(this, FUNC(ms0515_state::ms0515_bank_w)); // Register for RAM expansion
+
+ map(0176720, 0176720).r(m_i8251kbd, FUNC(i8251_device::data_r));
+ map(0176722, 0176722).rw(m_i8251kbd, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0177460, 0177460).w(m_i8251kbd, FUNC(i8251_device::data_w));
+ map(0177462, 0177462).w(m_i8251kbd, FUNC(i8251_device::control_w));
+
+ map(0177500, 0177507).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0177520, 0177527).w(m_pit8253, FUNC(pit8253_device::write)).umask16(0x00ff);
+
+ map(0177540, 0177547).noprw();
+// map(0177540, 0177541)
+// map(0177542, 0177543)
+// map(0177544, 0177545) // i8255 for MS-7007 Keyboard
+// map(0177546, 0177547)
+
+ map(0177600, 0177607).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+
+ map(0177640, 0177640).rw(m_fdc, FUNC(kr1818vg93_device::status_r), FUNC(kr1818vg93_device::cmd_w));
+ map(0177642, 0177642).rw(m_fdc, FUNC(kr1818vg93_device::track_r), FUNC(kr1818vg93_device::track_w));
+ map(0177644, 0177644).rw(m_fdc, FUNC(kr1818vg93_device::sector_r), FUNC(kr1818vg93_device::sector_w));
+ map(0177646, 0177646).rw(m_fdc, FUNC(kr1818vg93_device::data_r), FUNC(kr1818vg93_device::data_w));
+
+ map(0177700, 0177700).r(m_i8251line, FUNC(i8251_device::data_r));
+ map(0177702, 0177702).rw(m_i8251line, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0177704, 0177704).w(m_i8251line, FUNC(i8251_device::data_w));
+ map(0177706, 0177706).w(m_i8251line, FUNC(i8251_device::control_w));
+
+ map(0177770, 0177771).rw(this, FUNC(ms0515_state::ms0515_halt_r), FUNC(ms0515_state::ms0515_halt_w)); // read/write -- halt and system timer
+}
/*
* (page 15-16)
diff --git a/src/mame/drivers/ms32.cpp b/src/mame/drivers/ms32.cpp
index 511eefae406..9536808b3d9 100644
--- a/src/mame/drivers/ms32.cpp
+++ b/src/mame/drivers/ms32.cpp
@@ -644,45 +644,46 @@ WRITE32_MEMBER(ms32_state::coin_counter_w)
machine().bookkeeping().coin_counter_w(1, data & 0x20);
}
-ADDRESS_MAP_START(ms32_state::ms32_map)
+void ms32_state::ms32_map(address_map &map)
+{
/* RAM areas verified by testing on real hw - usually accessed at the 0xfc000000 + mirror */
- AM_RANGE(0xc0000000, 0xc0007fff) AM_READWRITE8(ms32_nvram_r8, ms32_nvram_w8, 0x000000ff) AM_MIRROR(0x3c1f8000) // nvram is 8-bit wide, 0x2000 in size */
+ map(0xc0000000, 0xc0007fff).rw(this, FUNC(ms32_state::ms32_nvram_r8), FUNC(ms32_state::ms32_nvram_w8)).umask32(0x000000ff).mirror(0x3c1f8000); // nvram is 8-bit wide, 0x2000 in size */
/* AM_RANGE(0xc0008000, 0xc01fffff) // mirrors of nvramram, handled above */
- AM_RANGE(0xc1180000, 0xc1187fff) AM_READWRITE8(ms32_priram_r8, ms32_priram_w8, 0x000000ff) AM_MIRROR(0x3c038000) AM_SHARE("priram") /* priram is 8-bit wide, 0x2000 in size */
+ map(0xc1180000, 0xc1187fff).rw(this, FUNC(ms32_state::ms32_priram_r8), FUNC(ms32_state::ms32_priram_w8)).umask32(0x000000ff).mirror(0x3c038000).share("priram"); /* priram is 8-bit wide, 0x2000 in size */
/* AM_RANGE(0xc1188000, 0xc11bffff) // mirrors of priram, handled above */
- AM_RANGE(0xc1400000, 0xc143ffff) AM_READWRITE16(ms32_palram_r16, ms32_palram_w16, 0x0000ffff) AM_MIRROR(0x3c1c0000) AM_SHARE("palram") /* palram is 16-bit wide, 0x20000 in size */
+ map(0xc1400000, 0xc143ffff).rw(this, FUNC(ms32_state::ms32_palram_r16), FUNC(ms32_state::ms32_palram_w16)).umask32(0x0000ffff).mirror(0x3c1c0000).share("palram"); /* palram is 16-bit wide, 0x20000 in size */
/* AM_RANGE(0xc1440000, 0xc145ffff) // mirrors of palram, handled above */
- AM_RANGE(0xc2000000, 0xc201ffff) AM_READWRITE16(ms32_rozram_r16, ms32_rozram_w16, 0x0000ffff) AM_MIRROR(0x3c1e0000) AM_SHARE("rozram") /* rozram is 16-bit wide, 0x10000 in size */
+ map(0xc2000000, 0xc201ffff).rw(this, FUNC(ms32_state::ms32_rozram_r16), FUNC(ms32_state::ms32_rozram_w16)).umask32(0x0000ffff).mirror(0x3c1e0000).share("rozram"); /* rozram is 16-bit wide, 0x10000 in size */
/* AM_RANGE(0xc2020000, 0xc21fffff) // mirrors of rozram, handled above */
- AM_RANGE(0xc2200000, 0xc2201fff) AM_READWRITE16(ms32_lineram_r16,ms32_lineram_w16,0x0000ffff) AM_MIRROR(0x3c1fe000) AM_SHARE("lineram") /* lineram is 16-bit wide, 0x1000 in size */
+ map(0xc2200000, 0xc2201fff).rw(this, FUNC(ms32_state::ms32_lineram_r16), FUNC(ms32_state::ms32_lineram_w16)).umask32(0x0000ffff).mirror(0x3c1fe000).share("lineram"); /* lineram is 16-bit wide, 0x1000 in size */
/* AM_RANGE(0xc2202000, 0xc23fffff) // mirrors of lineram, handled above */
- AM_RANGE(0xc2800000, 0xc283ffff) AM_READWRITE16(ms32_sprram_r16, ms32_sprram_w16, 0x0000ffff) AM_MIRROR(0x3c1c0000) AM_SHARE("sprram") /* spriteram is 16-bit wide, 0x20000 in size */
+ map(0xc2800000, 0xc283ffff).rw(this, FUNC(ms32_state::ms32_sprram_r16), FUNC(ms32_state::ms32_sprram_w16)).umask32(0x0000ffff).mirror(0x3c1c0000).share("sprram"); /* spriteram is 16-bit wide, 0x20000 in size */
/* AM_RANGE(0xc2840000, 0xc29fffff) // mirrors of sprram, handled above */
- AM_RANGE(0xc2c00000, 0xc2c07fff) AM_READWRITE16(ms32_txram_r16, ms32_txram_w16, 0x0000ffff) AM_MIRROR(0x3c1f0000) AM_SHARE("txram") /* txram is 16-bit wide, 0x4000 in size */
- AM_RANGE(0xc2c08000, 0xc2c0ffff) AM_READWRITE16(ms32_bgram_r16, ms32_bgram_w16, 0x0000ffff) AM_MIRROR(0x3c1f0000) AM_SHARE("bgram") /* bgram is 16-bit wide, 0x4000 in size */
+ map(0xc2c00000, 0xc2c07fff).rw(this, FUNC(ms32_state::ms32_txram_r16), FUNC(ms32_state::ms32_txram_w16)).umask32(0x0000ffff).mirror(0x3c1f0000).share("txram"); /* txram is 16-bit wide, 0x4000 in size */
+ map(0xc2c08000, 0xc2c0ffff).rw(this, FUNC(ms32_state::ms32_bgram_r16), FUNC(ms32_state::ms32_bgram_w16)).umask32(0x0000ffff).mirror(0x3c1f0000).share("bgram"); /* bgram is 16-bit wide, 0x4000 in size */
/* AM_RANGE(0xc2c10000, 0xc2dfffff) // mirrors of txram / bg, handled above */
- AM_RANGE(0xc2e00000, 0xc2e1ffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0x3c0e0000) /* mainram is 32-bit wide, 0x20000 in size */
- AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROM AM_REGION("maincpu", 0) AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */
+ map(0xc2e00000, 0xc2e1ffff).ram().share("mainram").mirror(0x3c0e0000); /* mainram is 32-bit wide, 0x20000 in size */
+ map(0xc3e00000, 0xc3ffffff).rom().region("maincpu", 0).mirror(0x3c000000); // ROM is 32-bit wide, 0x200000 in size */
/* todo: clean up the mapping of these */
- AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP /* sound? */
- AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) /* sound? */
- AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("INPUTS")
- AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW")
- AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP // irq ack?
- AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w)
- AM_RANGE(0xfce00050, 0xfce0005f) AM_WRITENOP // watchdog? I haven't investigated
+ map(0xfc800000, 0xfc800003).nopr(); /* sound? */
+ map(0xfc800000, 0xfc800003).w(this, FUNC(ms32_state::ms32_sound_w)); /* sound? */
+ map(0xfcc00004, 0xfcc00007).portr("INPUTS");
+ map(0xfcc00010, 0xfcc00013).portr("DSW");
+ map(0xfce00034, 0xfce00037).nopw(); // irq ack?
+ map(0xfce00038, 0xfce0003b).w(this, FUNC(ms32_state::reset_sub_w));
+ map(0xfce00050, 0xfce0005f).nopw(); // watchdog? I haven't investigated
// AM_RANGE(0xfce00000, 0xfce0007f) AM_WRITEONLY AM_SHARE("ms32_fce00000") /* registers not ram? */
- AM_RANGE(0xfce00000, 0xfce00003) AM_WRITE(ms32_gfxctrl_w) /* flip screen + other unknown bits */
- AM_RANGE(0xfce00280, 0xfce0028f) AM_WRITE(ms32_brightness_w) // global brightness control
-/**/AM_RANGE(0xfce00600, 0xfce0065f) AM_RAM AM_SHARE("roz_ctrl") /* roz control registers */
-/**/AM_RANGE(0xfce00a00, 0xfce00a17) AM_RAM AM_SHARE("tx_scroll") /* tx layer scroll */
-/**/AM_RANGE(0xfce00a20, 0xfce00a37) AM_RAM AM_SHARE("bg_scroll") /* bg layer scroll */
- AM_RANGE(0xfce00a7c, 0xfce00a7f) AM_WRITE(pip_w) // ??? layer related? seems to be always 0
- AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(coin_counter_w) // coin counters + something else
- AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r)
- AM_RANGE(0xfd1c0000, 0xfd1c0003) AM_WRITEONLY AM_SHARE("mahjong_select")
-ADDRESS_MAP_END
+ map(0xfce00000, 0xfce00003).w(this, FUNC(ms32_state::ms32_gfxctrl_w)); /* flip screen + other unknown bits */
+ map(0xfce00280, 0xfce0028f).w(this, FUNC(ms32_state::ms32_brightness_w)); // global brightness control
+/**/map(0xfce00600, 0xfce0065f).ram().share("roz_ctrl"); /* roz control registers */
+/**/map(0xfce00a00, 0xfce00a17).ram().share("tx_scroll"); /* tx layer scroll */
+/**/map(0xfce00a20, 0xfce00a37).ram().share("bg_scroll"); /* bg layer scroll */
+ map(0xfce00a7c, 0xfce00a7f).w(this, FUNC(ms32_state::pip_w)); // ??? layer related? seems to be always 0
+ map(0xfce00e00, 0xfce00e03).w(this, FUNC(ms32_state::coin_counter_w)); // coin counters + something else
+ map(0xfd000000, 0xfd000003).r(this, FUNC(ms32_state::ms32_sound_r));
+ map(0xfd1c0000, 0xfd1c0003).writeonly().share("mahjong_select");
+}
/* F1 Super Battle has an extra linemap for the road, and am unknown maths chip (mcu?) handling perspective calculations for the road / corners etc. */
@@ -709,30 +710,31 @@ WRITE32_MEMBER(ms32_state::ms32_irq5_guess_w)
irq_raise(5);
}
-ADDRESS_MAP_START(ms32_state::f1superb_map)
- AM_IMPORT_FROM(ms32_map)
+void ms32_state::f1superb_map(address_map &map)
+{
+ ms32_map(map);
- AM_RANGE(0xfd0d0000, 0xfd0d0003) AM_READ_PORT("DSW2") // MB-93159
- AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) AM_WRITENOP // writes 7-led seg at very least
+ map(0xfd0d0000, 0xfd0d0003).portr("DSW2"); // MB-93159
+ map(0xfd0e0000, 0xfd0e0003).r(this, FUNC(ms32_state::ms32_read_inputs3)).nopw(); // writes 7-led seg at very least
- AM_RANGE(0xfce00004, 0xfce00023) AM_RAM // regs?
- AM_RANGE(0xfce00200, 0xfce0021f) AM_RAM // regs?
- AM_RANGE(0xfce00800, 0xfce0085f) AM_RAM // regs?
+ map(0xfce00004, 0xfce00023).ram(); // regs?
+ map(0xfce00200, 0xfce0021f).ram(); // regs?
+ map(0xfce00800, 0xfce0085f).ram(); // regs?
/* these two are almost certainly wrong, they just let you see what
happens if you generate the FPU ints without breaking other games */
- AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(ms32_irq5_guess_w)
- AM_RANGE(0xfd0f0000, 0xfd0f0003) AM_WRITE(ms32_irq2_guess_w)
+ map(0xfce00e00, 0xfce00e03).w(this, FUNC(ms32_state::ms32_irq5_guess_w));
+ map(0xfd0f0000, 0xfd0f0003).w(this, FUNC(ms32_state::ms32_irq2_guess_w));
- AM_RANGE(0xfd100000, 0xfd103fff) AM_RAM // used when you start enabling fpu ints
- AM_RANGE(0xfd104000, 0xfd105fff) AM_RAM // uploads data here
+ map(0xfd100000, 0xfd103fff).ram(); // used when you start enabling fpu ints
+ map(0xfd104000, 0xfd105fff).ram(); // uploads data here
- AM_RANGE(0xfd140000, 0xfd143fff) AM_RAM // used when you start enabling fpu ints
- AM_RANGE(0xfd144000, 0xfd145fff) AM_RAM // same data here
+ map(0xfd140000, 0xfd143fff).ram(); // used when you start enabling fpu ints
+ map(0xfd144000, 0xfd145fff).ram(); // same data here
- AM_RANGE(0xfdc00000, 0xfdc1ffff) AM_READWRITE16(ms32_extra_r16, ms32_extra_w16, 0x0000ffff) AM_SHARE("f1sb_extraram") // definitely line ram
- AM_RANGE(0xfde00000, 0xfde1ffff) AM_RAM // scroll info for lineram?
-ADDRESS_MAP_END
+ map(0xfdc00000, 0xfdc1ffff).rw(this, FUNC(ms32_state::ms32_extra_r16), FUNC(ms32_state::ms32_extra_w16)).umask32(0x0000ffff).share("f1sb_extraram"); // definitely line ram
+ map(0xfde00000, 0xfde1ffff).ram(); // scroll info for lineram?
+}
/* F1 Super Battle speculation from nuapete
@@ -1670,19 +1672,20 @@ WRITE8_MEMBER(ms32_state::to_main_w)
irq_raise(1);
}
-ADDRESS_MAP_START(ms32_state::ms32_sound_map)
- AM_RANGE(0x0000, 0x3eff) AM_ROM
- AM_RANGE(0x3f00, 0x3f0f) AM_DEVREADWRITE("ymf", ymf271_device, read, write)
- AM_RANGE(0x3f10, 0x3f10) AM_READWRITE(latch_r,to_main_w)
- AM_RANGE(0x3f20, 0x3f20) AM_READNOP /* 2nd latch ? */
- AM_RANGE(0x3f20, 0x3f20) AM_WRITENOP /* to_main2_w ? */
- AM_RANGE(0x3f40, 0x3f40) AM_WRITENOP /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */
- AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP // watchdog? banking? very noisy
- AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("z80bank2")
-ADDRESS_MAP_END
+void ms32_state::ms32_sound_map(address_map &map)
+{
+ map(0x0000, 0x3eff).rom();
+ map(0x3f00, 0x3f0f).rw("ymf", FUNC(ymf271_device::read), FUNC(ymf271_device::write));
+ map(0x3f10, 0x3f10).rw(this, FUNC(ms32_state::latch_r), FUNC(ms32_state::to_main_w));
+ map(0x3f20, 0x3f20).nopr(); /* 2nd latch ? */
+ map(0x3f20, 0x3f20).nopw(); /* to_main2_w ? */
+ map(0x3f40, 0x3f40).nopw(); /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */
+ map(0x3f70, 0x3f70).nopw(); // watchdog? banking? very noisy
+ map(0x3f80, 0x3f80).w(this, FUNC(ms32_state::ms32_snd_bank_w));
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0xbfff).bankr("z80bank1");
+ map(0xc000, 0xffff).bankr("z80bank2");
+}
/********** MACHINE INIT **********/
diff --git a/src/mame/drivers/ms6102.cpp b/src/mame/drivers/ms6102.cpp
index b0decb61fb5..233ea0c31b0 100644
--- a/src/mame/drivers/ms6102.cpp
+++ b/src/mame/drivers/ms6102.cpp
@@ -121,26 +121,28 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(ms6102_state::ms6102_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x0000, 0x2fff) AM_ROM
- AM_RANGE (0x3800, 0x3bff) AM_RAM AM_SHARE("nvram")
- AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ms6102_state::ms6102_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x00, 0x00) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w)
- AM_RANGE (0x01, 0x01) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w)
- AM_RANGE (0x10, 0x18) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
- AM_RANGE (0x20, 0x23) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+void ms6102_state::ms6102_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x2fff).rom();
+ map(0x3800, 0x3bff).ram().share("nvram");
+ map(0xc000, 0xffff).ram().share("videoram");
+}
+
+void ms6102_state::ms6102_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x00).rw(m_i8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw(m_i8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x10, 0x18).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write));
+ map(0x20, 0x23).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
//AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE("589wa1", ay31015_device, receive, transmit)
- AM_RANGE (0x30, 0x3f) AM_READ(kbd_get)
- AM_RANGE (0x40, 0x41) AM_READWRITE(crtc_r, crtc_w)
- AM_RANGE (0x50, 0x5f) AM_NOP // video disable?
- AM_RANGE (0x60, 0x6f) AM_WRITE(pic_w)
- AM_RANGE (0x70, 0x7f) AM_READ(misc_r)
-ADDRESS_MAP_END
+ map(0x30, 0x3f).r(this, FUNC(ms6102_state::kbd_get));
+ map(0x40, 0x41).rw(this, FUNC(ms6102_state::crtc_r), FUNC(ms6102_state::crtc_w));
+ map(0x50, 0x5f).noprw(); // video disable?
+ map(0x60, 0x6f).w(this, FUNC(ms6102_state::pic_w));
+ map(0x70, 0x7f).r(this, FUNC(ms6102_state::misc_r));
+}
static const gfx_layout ms6102_charlayout =
{
diff --git a/src/mame/drivers/ms9540.cpp b/src/mame/drivers/ms9540.cpp
index ff67aa63f08..65041dd56b5 100644
--- a/src/mame/drivers/ms9540.cpp
+++ b/src/mame/drivers/ms9540.cpp
@@ -51,13 +51,14 @@ private:
};
-ADDRESS_MAP_START(ms9540_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x010000, 0x013fff) AM_ROM AM_REGION("9540", 0)
- AM_RANGE(0x018000, 0x018fff) AM_RAM
-ADDRESS_MAP_END
+void ms9540_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ map(0x000000, 0x00ffff).ram().share("rambase");
+ map(0x010000, 0x013fff).rom().region("9540", 0);
+ map(0x018000, 0x018fff).ram();
+}
/* Input ports */
diff --git a/src/mame/drivers/msbc1.cpp b/src/mame/drivers/msbc1.cpp
index 6aad51082d7..4377e9c13d8 100644
--- a/src/mame/drivers/msbc1.cpp
+++ b/src/mame/drivers/msbc1.cpp
@@ -72,11 +72,12 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(msbc1_state::msbc1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_RAM
- AM_RANGE(0xf80000, 0xf87fff) AM_ROM AM_REGION(MC68000R12_TAG, 0)
-ADDRESS_MAP_END
+void msbc1_state::msbc1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).ram();
+ map(0xf80000, 0xf87fff).rom().region(MC68000R12_TAG, 0);
+}
/* Input ports */
static INPUT_PORTS_START( msbc1 )
diff --git a/src/mame/drivers/msisaac.cpp b/src/mame/drivers/msisaac.cpp
index d82da48efc8..2529f7a44c5 100644
--- a/src/mame/drivers/msisaac.cpp
+++ b/src/mame/drivers/msisaac.cpp
@@ -174,44 +174,45 @@ WRITE8_MEMBER(msisaac_state::msisaac_mcu_w)
#endif
}
-ADDRESS_MAP_START(msisaac_state::msisaac_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf000, 0xf000) AM_WRITE(msisaac_bg2_textbank_w)
- AM_RANGE(0xf001, 0xf001) AM_WRITENOP //???
- AM_RANGE(0xf002, 0xf002) AM_WRITENOP //???
-
- AM_RANGE(0xf060, 0xf060) AM_WRITE(sound_command_w) //sound command
- AM_RANGE(0xf061, 0xf061) AM_WRITENOP /*sound_reset*/ //????
-
- AM_RANGE(0xf0a3, 0xf0a3) AM_WRITE(ms_unknown_w) //???? written in interrupt routine
-
- AM_RANGE(0xf0c0, 0xf0c0) AM_WRITE(msisaac_fg_scrollx_w)
- AM_RANGE(0xf0c1, 0xf0c1) AM_WRITE(msisaac_fg_scrolly_w)
- AM_RANGE(0xf0c2, 0xf0c2) AM_WRITE(msisaac_bg2_scrollx_w)
- AM_RANGE(0xf0c3, 0xf0c3) AM_WRITE(msisaac_bg2_scrolly_w)
- AM_RANGE(0xf0c4, 0xf0c4) AM_WRITE(msisaac_bg_scrollx_w)
- AM_RANGE(0xf0c5, 0xf0c5) AM_WRITE(msisaac_bg_scrolly_w)
-
- AM_RANGE(0xf0e0, 0xf0e0) AM_READWRITE(msisaac_mcu_r, msisaac_mcu_w)
- AM_RANGE(0xf0e1, 0xf0e1) AM_READ(msisaac_mcu_status_r)
-
- AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
- AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
- AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3")
- AM_RANGE(0xf083, 0xf083) AM_READ_PORT("IN0")
- AM_RANGE(0xf084, 0xf084) AM_READ_PORT("IN1")
+void msisaac_state::msisaac_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf000, 0xf000).w(this, FUNC(msisaac_state::msisaac_bg2_textbank_w));
+ map(0xf001, 0xf001).nopw(); //???
+ map(0xf002, 0xf002).nopw(); //???
+
+ map(0xf060, 0xf060).w(this, FUNC(msisaac_state::sound_command_w)); //sound command
+ map(0xf061, 0xf061).nopw(); /*sound_reset*/ //????
+
+ map(0xf0a3, 0xf0a3).w(this, FUNC(msisaac_state::ms_unknown_w)); //???? written in interrupt routine
+
+ map(0xf0c0, 0xf0c0).w(this, FUNC(msisaac_state::msisaac_fg_scrollx_w));
+ map(0xf0c1, 0xf0c1).w(this, FUNC(msisaac_state::msisaac_fg_scrolly_w));
+ map(0xf0c2, 0xf0c2).w(this, FUNC(msisaac_state::msisaac_bg2_scrollx_w));
+ map(0xf0c3, 0xf0c3).w(this, FUNC(msisaac_state::msisaac_bg2_scrolly_w));
+ map(0xf0c4, 0xf0c4).w(this, FUNC(msisaac_state::msisaac_bg_scrollx_w));
+ map(0xf0c5, 0xf0c5).w(this, FUNC(msisaac_state::msisaac_bg_scrolly_w));
+
+ map(0xf0e0, 0xf0e0).rw(this, FUNC(msisaac_state::msisaac_mcu_r), FUNC(msisaac_state::msisaac_mcu_w));
+ map(0xf0e1, 0xf0e1).r(this, FUNC(msisaac_state::msisaac_mcu_status_r));
+
+ map(0xf080, 0xf080).portr("DSW1");
+ map(0xf081, 0xf081).portr("DSW2");
+ map(0xf082, 0xf082).portr("DSW3");
+ map(0xf083, 0xf083).portr("IN0");
+ map(0xf084, 0xf084).portr("IN1");
// AM_RANGE(0xf086, 0xf086) AM_READ_PORT("IN2")
- AM_RANGE(0xf100, 0xf17f) AM_RAM AM_SHARE("spriteram") //sprites
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(msisaac_fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(msisaac_bg2_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(msisaac_bg_videoram_w) AM_SHARE("videoram2")
+ map(0xf100, 0xf17f).ram().share("spriteram"); //sprites
+ map(0xf400, 0xf7ff).ram().w(this, FUNC(msisaac_state::msisaac_fg_videoram_w)).share("videoram");
+ map(0xf800, 0xfbff).ram().w(this, FUNC(msisaac_state::msisaac_bg2_videoram_w)).share("videoram3");
+ map(0xfc00, 0xffff).ram().w(this, FUNC(msisaac_state::msisaac_bg_videoram_w)).share("videoram2");
// AM_RANGE(0xf801, 0xf801) AM_WRITE(msisaac_bgcolor_w)
// AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w)
// AM_RANGE(0xfc03, 0xfc04) AM_WRITE(msisaac_coin_counter_w)
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(msisaac_state::sound_control_0_w)
{
@@ -240,20 +241,21 @@ WRITE8_MEMBER(msisaac_state::sound_control_1_w)
//popmessage("SND1 0=%2x 1=%2x", m_snd_ctrl0, m_snd_ctrl1);
}
-ADDRESS_MAP_START(msisaac_state::msisaac_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8010, 0x801d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0x8020, 0x8020) AM_WRITE(sound_control_0_w)
- AM_RANGE(0x8030, 0x8030) AM_WRITE(sound_control_1_w)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc001, 0xc001) AM_WRITE(nmi_enable_w)
- AM_RANGE(0xc002, 0xc002) AM_WRITE(nmi_disable_w)
- AM_RANGE(0xc003, 0xc003) AM_WRITENOP /*???*/ /* this is NOT mixer_enable */
- AM_RANGE(0xe000, 0xffff) AM_READNOP /*space for diagnostic ROM (not dumped, not reachable) */
-ADDRESS_MAP_END
+void msisaac_state::msisaac_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8010, 0x801d).w(m_msm, FUNC(msm5232_device::write));
+ map(0x8020, 0x8020).w(this, FUNC(msisaac_state::sound_control_0_w));
+ map(0x8030, 0x8030).w(this, FUNC(msisaac_state::sound_control_1_w));
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc001, 0xc001).w(this, FUNC(msisaac_state::nmi_enable_w));
+ map(0xc002, 0xc002).w(this, FUNC(msisaac_state::nmi_disable_w));
+ map(0xc003, 0xc003).nopw(); /*???*/ /* this is NOT mixer_enable */
+ map(0xe000, 0xffff).nopr(); /*space for diagnostic ROM (not dumped, not reachable) */
+}
static INPUT_PORTS_START( msisaac )
PORT_START("DSW1")
diff --git a/src/mame/drivers/mstation.cpp b/src/mame/drivers/mstation.cpp
index f2a1cce7b98..bab0cac33ce 100644
--- a/src/mame/drivers/mstation.cpp
+++ b/src/mame/drivers/mstation.cpp
@@ -256,33 +256,36 @@ READ8_MEMBER( mstation_state::kb_r )
}
-ADDRESS_MAP_START(mstation_state::mstation_banked_map)
- AM_RANGE(0x0000000, 0x00fffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write)
- AM_RANGE(0x0400000, 0x041ffff) AM_MIRROR(0x03e0000) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0c00000, 0x0c7ffff) AM_MIRROR(0x0380000) AM_DEVREADWRITE("flash1", intelfsh8_device, read, write)
- AM_RANGE(0x0800000, 0x0803fff) AM_MIRROR(0x03fc000) AM_READWRITE(lcd_left_r, lcd_left_w)
- AM_RANGE(0x1000000, 0x1003fff) AM_MIRROR(0x03fc000) AM_READWRITE(lcd_right_r, lcd_right_w)
- AM_RANGE(0x1400000, 0x1403fff) AM_MIRROR(0x03fc000) AM_READWRITE(modem_r, modem_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mstation_state::mstation_mem)
- AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write)
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank0", address_map_bank_device, read8, write8)
- AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8)
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("sysram") // system ram always first RAM bank
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mstation_state::mstation_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_READWRITE(kb_r, kb_w)
- AM_RANGE( 0x02, 0x02 ) AM_WRITE(port2_w)
- AM_RANGE( 0x03, 0x03 ) AM_READWRITE(irq_r, irq_w)
- AM_RANGE( 0x05, 0x06 ) AM_READWRITE(bank1_r, bank1_w)
- AM_RANGE( 0x07, 0x08 ) AM_READWRITE(bank2_r, bank2_w)
- AM_RANGE( 0x09, 0x09 ) AM_READ(battery_status_r)
- AM_RANGE( 0x10, 0x1f ) AM_DEVREADWRITE("rtc", rp5c01_device, read, write)
+void mstation_state::mstation_banked_map(address_map &map)
+{
+ map(0x0000000, 0x00fffff).mirror(0x0300000).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0400000, 0x041ffff).mirror(0x03e0000).ram().share("nvram");
+ map(0x0c00000, 0x0c7ffff).mirror(0x0380000).rw("flash1", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0800000, 0x0803fff).mirror(0x03fc000).rw(this, FUNC(mstation_state::lcd_left_r), FUNC(mstation_state::lcd_left_w));
+ map(0x1000000, 0x1003fff).mirror(0x03fc000).rw(this, FUNC(mstation_state::lcd_right_r), FUNC(mstation_state::lcd_right_w));
+ map(0x1400000, 0x1403fff).mirror(0x03fc000).rw(this, FUNC(mstation_state::modem_r), FUNC(mstation_state::modem_w));
+}
+
+void mstation_state::mstation_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x4000, 0x7fff).rw(m_bankdev1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0x8000, 0xbfff).rw(m_bankdev2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xffff).bankrw("sysram"); // system ram always first RAM bank
+}
+
+void mstation_state::mstation_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).rw(this, FUNC(mstation_state::kb_r), FUNC(mstation_state::kb_w));
+ map(0x02, 0x02).w(this, FUNC(mstation_state::port2_w));
+ map(0x03, 0x03).rw(this, FUNC(mstation_state::irq_r), FUNC(mstation_state::irq_w));
+ map(0x05, 0x06).rw(this, FUNC(mstation_state::bank1_r), FUNC(mstation_state::bank1_w));
+ map(0x07, 0x08).rw(this, FUNC(mstation_state::bank2_r), FUNC(mstation_state::bank2_w));
+ map(0x09, 0x09).r(this, FUNC(mstation_state::battery_status_r));
+ map(0x10, 0x1f).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write));
//AM_RANGE( 0x2c, 0x2c ) printer
-ADDRESS_MAP_END
+}
/* Input ports */
diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp
index d80065b6c66..714d81a04be 100644
--- a/src/mame/drivers/msx.cpp
+++ b/src/mame/drivers/msx.cpp
@@ -539,10 +539,11 @@ PCB Layouts missing
#include "speaker.h"
-ADDRESS_MAP_START(msx_state::msx_memory_map)
- AM_RANGE(0x0000, 0xfffe) AM_READWRITE(msx_mem_read, msx_mem_write)
- AM_RANGE(0xffff, 0xffff) AM_READWRITE(msx_sec_slot_r, msx_sec_slot_w)
-ADDRESS_MAP_END
+void msx_state::msx_memory_map(address_map &map)
+{
+ map(0x0000, 0xfffe).rw(this, FUNC(msx_state::msx_mem_read), FUNC(msx_state::msx_mem_write));
+ map(0xffff, 0xffff).rw(this, FUNC(msx_state::msx_sec_slot_r), FUNC(msx_state::msx_sec_slot_w));
+}
WRITE8_MEMBER(msx_state::msx_ay8910_w)
@@ -554,56 +555,59 @@ WRITE8_MEMBER(msx_state::msx_ay8910_w)
}
-ADDRESS_MAP_START(msx_state::msx_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void msx_state::msx_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system
- AM_RANGE( 0x90, 0x90) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE( 0x90, 0x90) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write)
- AM_RANGE( 0x91, 0x91) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE( 0xa0, 0xa7) AM_DEVREAD("ay8910", ay8910_device, data_r) AM_WRITE(msx_ay8910_w)
- AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0x98, 0x98) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE( 0x99, 0x99) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE( 0xd8, 0xd9) AM_READWRITE(msx_kanji_r, msx_kanji_w)
+ map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write));
+ map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0xa0, 0xa7).r(m_ay8910, FUNC(ay8910_device::data_r)).w(this, FUNC(msx_state::msx_ay8910_w));
+ map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x98, 0x98).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x99, 0x99).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0xd8, 0xd9).rw(this, 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
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(msx_state::msx2_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x40, 0x4f) AM_READWRITE(msx_switched_r, msx_switched_w)
+void msx_state::msx2_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x4f).rw(this, FUNC(msx_state::msx_switched_r), FUNC(msx_state::msx_switched_w));
// 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system
- AM_RANGE( 0x90, 0x90) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE( 0x90, 0x90) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write)
- AM_RANGE( 0x91, 0x91) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE( 0xa0, 0xa7) AM_DEVREAD("ay8910", ay8910_device, data_r) AM_WRITE(msx_ay8910_w)
- AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9938", v9938_device, read, write)
- AM_RANGE( 0xb4, 0xb4) AM_WRITE(msx_rtc_latch_w)
- AM_RANGE( 0xb5, 0xb5) AM_READWRITE(msx_rtc_reg_r, msx_rtc_reg_w)
- AM_RANGE( 0xd8, 0xd9) AM_READWRITE(msx_kanji_r, msx_kanji_w)
+ map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write));
+ map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0xa0, 0xa7).r(m_ay8910, FUNC(ay8910_device::data_r)).w(this, FUNC(msx_state::msx_ay8910_w));
+ map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0xb4, 0xb4).w(this, FUNC(msx_state::msx_rtc_latch_w));
+ map(0xb5, 0xb5).rw(this, FUNC(msx_state::msx_rtc_reg_r), FUNC(msx_state::msx_rtc_reg_w));
+ map(0xd8, 0xd9).rw(this, 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
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(msx_state::msx2p_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x40, 0x4f) AM_READWRITE(msx_switched_r, msx_switched_w)
+void msx_state::msx2p_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x4f).rw(this, FUNC(msx_state::msx_switched_r), FUNC(msx_state::msx_switched_w));
// 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system
- AM_RANGE( 0x90, 0x90) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE( 0x90, 0x90) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write)
- AM_RANGE( 0x91, 0x91) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE( 0xa0, 0xa7) AM_DEVREAD("ay8910", ay8910_device, data_r) AM_WRITE(msx_ay8910_w)
- AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9958", v9958_device, read, write)
- AM_RANGE( 0xb4, 0xb4) AM_WRITE(msx_rtc_latch_w)
- AM_RANGE( 0xb5, 0xb5) AM_READWRITE(msx_rtc_reg_r, msx_rtc_reg_w)
- AM_RANGE( 0xd8, 0xd9) AM_READWRITE(msx_kanji_r, msx_kanji_w)
+ map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write));
+ map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0xa0, 0xa7).r(m_ay8910, FUNC(ay8910_device::data_r)).w(this, FUNC(msx_state::msx_ay8910_w));
+ map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x98, 0x9b).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write));
+ map(0xb4, 0xb4).w(this, FUNC(msx_state::msx_rtc_latch_w));
+ map(0xb5, 0xb5).rw(this, FUNC(msx_state::msx_rtc_reg_r), FUNC(msx_state::msx_rtc_reg_w));
+ map(0xd8, 0xd9).rw(this, 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
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( msx_dips )
diff --git a/src/mame/drivers/mt735.cpp b/src/mame/drivers/mt735.cpp
index 40c972026f2..cb095958c25 100644
--- a/src/mame/drivers/mt735.cpp
+++ b/src/mame/drivers/mt735.cpp
@@ -50,13 +50,14 @@ READ8_MEMBER(mt735_state::p5_r)
return 0x00;
}
-ADDRESS_MAP_START(mt735_state::mt735_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x278000, 0x287fff) AM_RAM
- AM_RANGE(0x400000, 0x4fffff) AM_RAM
- AM_RANGE(0xff8004, 0xff8005) AM_READ8(p4_r, 0xff00)
- AM_RANGE(0xff8004, 0xff8005) AM_READ8(p5_r, 0x00ff)
-ADDRESS_MAP_END
+void mt735_state::mt735_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("maincpu", 0);
+ map(0x278000, 0x287fff).ram();
+ map(0x400000, 0x4fffff).ram();
+ map(0xff8004, 0xff8004).r(this, FUNC(mt735_state::p4_r));
+ map(0xff8005, 0xff8005).r(this, FUNC(mt735_state::p5_r));
+}
static INPUT_PORTS_START( mt735 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp
index ae158d3e808..a2f180e0ff9 100644
--- a/src/mame/drivers/mtouchxl.cpp
+++ b/src/mame/drivers/mtouchxl.cpp
@@ -104,44 +104,47 @@ WRITE8_MEMBER(mtxl_state::key_w)
m_multikey->write_dq((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
}
-ADDRESS_MAP_START(mtxl_state::at32_map)
- ADDRESS_MAP_UNMAP_HIGH
+void mtxl_state::at32_map(address_map &map)
+{
+ map.unmap_value_high();
#ifndef REAL_PCI_CHIPSET
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x000c8000, 0x000cffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x000d0000, 0x000dffff) AM_DEVICE("dbank", address_map_bank_device, amap32)
- AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0)
+ map(0x00000000, 0x0009ffff).bankrw("bank10");
+ map(0x000c8000, 0x000cffff).ram().share("nvram");
+ map(0x000d0000, 0x000dffff).m(m_iocard, FUNC(address_map_bank_device::amap32));
+ map(0x000e0000, 0x000fffff).rom().region("bios", 0);
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0);
#endif
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(mtxl_state::at32_io)
- ADDRESS_MAP_UNMAP_HIGH
+void mtxl_state::at32_io(address_map &map)
+{
+ map.unmap_value_high();
#ifndef REAL_PCI_CHIPSET
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("mb:dma8237_1", am9517a_device, read, write, 0xffffffff)
- AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("mb:pic8259_master", pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("mb:pit8254", pit8254_device, read, write, 0xffffffff)
- AM_RANGE(0x0060, 0x0067) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffffffff)
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("mb", at_mb_device, portb_r, portb_w, 0x0000ff00)
- AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("mb:rtc", mc146818_device, read, write, 0xffffffff)
- AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("mb", at_mb_device, page8_r, page8_w, 0xffffffff)
- AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("mb:pic8259_slave", pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("mb:dma8237_2", am9517a_device, read, write, 0x00ff00ff)
- AM_RANGE(0x0224, 0x0227) AM_DEVREADWRITE8("cs4231", ad1848_device, read, write, 0xffffffff)
+ map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x0020, 0x003f).rw("mb:pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0040, 0x005f).rw("mb:pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write));
+ map(0x0060, 0x0067).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w));
+ map(0x0061, 0x0061).rw("mb", FUNC(at_mb_device::portb_r), FUNC(at_mb_device::portb_w));
+ map(0x0070, 0x007f).rw("mb:rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+ map(0x0080, 0x009f).rw("mb", FUNC(at_mb_device::page8_r), FUNC(at_mb_device::page8_w));
+ map(0x00a0, 0x00bf).rw("mb:pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x00c0, 0x00df).rw("mb:dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0x00ff00ff);
+ map(0x0224, 0x0227).rw("cs4231", FUNC(ad1848_device::read), FUNC(ad1848_device::write));
#endif
- AM_RANGE(0x0228, 0x022b) AM_READ_PORT("Unknown")
- AM_RANGE(0x022c, 0x022f) AM_WRITE8(bank_w, 0xff000000)
- AM_RANGE(0x022c, 0x022f) AM_READWRITE8(key_r, key_w, 0x0000ff00)
- AM_RANGE(0x022c, 0x022f) AM_READ8(coin_r, 0x000000ff)
+ map(0x0228, 0x022b).portr("Unknown");
+ map(0x022f, 0x022f).w(this, FUNC(mtxl_state::bank_w));
+ map(0x022d, 0x022d).rw(this, FUNC(mtxl_state::key_r), FUNC(mtxl_state::key_w));
+ map(0x022c, 0x022c).r(this, FUNC(mtxl_state::coin_r));
#ifndef REAL_PCI_CHIPSET
- AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16550", ns16550_device, ins8250_r, ins8250_w, 0xffffffff)
+ map(0x03f8, 0x03ff).rw("ns16550", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
#endif
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(mtxl_state::dbank_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("ioboard", 0)
- AM_RANGE(0x100000, 0x17ffff) AM_DEVREADWRITE8("flash", intelfsh8_device, read, write, 0xffffffff)
-ADDRESS_MAP_END
+void mtxl_state::dbank_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().region("ioboard", 0);
+ map(0x100000, 0x17ffff).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+}
static INPUT_PORTS_START(mtouchxl)
PORT_START("Coin")
diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp
index ee0235a7feb..720d01cbd70 100644
--- a/src/mame/drivers/mtx.cpp
+++ b/src/mame/drivers/mtx.cpp
@@ -46,28 +46,30 @@
ADDRESS_MAP( mtx_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(mtx_state::mtx_mem)
-ADDRESS_MAP_END
+void mtx_state::mtx_mem(address_map &map)
+{
+}
/*-------------------------------------------------
ADDRESS_MAP( mtx_io )
-------------------------------------------------*/
-ADDRESS_MAP_START(mtx_state::mtx_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(mtx_strobe_r, mtx_bankswitch_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("tms9929a", tms9929a_device, vram_read, vram_write)
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("tms9929a", tms9929a_device, register_read, register_write)
- AM_RANGE(0x03, 0x03) AM_READWRITE(mtx_sound_strobe_r, mtx_cst_w)
- AM_RANGE(0x04, 0x04) AM_READ(mtx_prt_r) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x05, 0x05) AM_READWRITE(mtx_key_lo_r, mtx_sense_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(mtx_key_hi_r, mtx_sound_latch_w)
+void mtx_state::mtx_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, 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(0x03, 0x03).rw(this, FUNC(mtx_state::mtx_sound_strobe_r), FUNC(mtx_state::mtx_cst_w));
+ map(0x04, 0x04).r(this, FUNC(mtx_state::mtx_prt_r)).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x05, 0x05).rw(this, FUNC(mtx_state::mtx_key_lo_r), FUNC(mtx_state::mtx_sense_w));
+ map(0x06, 0x06).rw(this, FUNC(mtx_state::mtx_key_hi_r), FUNC(mtx_state::mtx_sound_latch_w));
// AM_RANGE(0x07, 0x07) PIO
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x1f, 0x1f) AM_WRITE(mtx_cst_motor_w)
- AM_RANGE(0x30, 0x31) AM_WRITE(hrx_address_w)
- AM_RANGE(0x32, 0x32) AM_READWRITE(hrx_data_r, hrx_data_w)
- AM_RANGE(0x33, 0x33) AM_READWRITE(hrx_attr_r, hrx_attr_w)
+ map(0x08, 0x0b).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x1f, 0x1f).w(this, FUNC(mtx_state::mtx_cst_motor_w));
+ map(0x30, 0x31).w(this, FUNC(mtx_state::hrx_address_w));
+ map(0x32, 0x32).rw(this, FUNC(mtx_state::hrx_data_r), FUNC(mtx_state::hrx_data_w));
+ map(0x33, 0x33).rw(this, FUNC(mtx_state::hrx_attr_r), FUNC(mtx_state::hrx_attr_w));
// AM_RANGE(0x38, 0x38) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
// AM_RANGE(0x39, 0x39) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_r, register_w)
/* AM_RANGE(0x40, 0x43) AM_DEVREADWRITE_LEGACY(FD1791_TAG, wd17xx_r, wd17xx_w)
@@ -75,16 +77,17 @@ ADDRESS_MAP_START(mtx_state::mtx_io)
AM_RANGE(0x45, 0x45) AM_WRITE(fdx_drv_sel_w)
AM_RANGE(0x46, 0x46) AM_WRITE(fdx_dma_lo_w)
AM_RANGE(0x47, 0x47) AM_WRITE(fdx_dma_hi_w)*/
-ADDRESS_MAP_END
+}
/*-------------------------------------------------
ADDRESS_MAP( rs128_io )
-------------------------------------------------*/
-ADDRESS_MAP_START(mtx_state::rs128_io)
- AM_IMPORT_FROM(mtx_io)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, cd_ba_r, cd_ba_w)
-ADDRESS_MAP_END
+void mtx_state::rs128_io(address_map &map)
+{
+ mtx_io(map);
+ map(0x0c, 0x0f).rw(m_z80dart, FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w));
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/mugsmash.cpp b/src/mame/drivers/mugsmash.cpp
index c595c113474..b8e2f32decd 100644
--- a/src/mame/drivers/mugsmash.cpp
+++ b/src/mame/drivers/mugsmash.cpp
@@ -175,33 +175,35 @@ READ16_MEMBER(mugsmash_state::mugsmash_input_ports_r)
}
#endif
-ADDRESS_MAP_START(mugsmash_state::mugsmash_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(mugsmash_videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(mugsmash_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(mugsmash_reg_w) AM_SHARE("regs1") /* video registers*/
- AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x140007) AM_WRITE(mugsmash_reg2_w) AM_SHARE("regs2") /* sound + ? */
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* main ram? */
- AM_RANGE(0x1c4000, 0x1cffff) AM_RAM
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
+void mugsmash_state::mugsmash_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(mugsmash_state::mugsmash_videoram1_w)).share("videoram1");
+ map(0x082000, 0x082fff).ram().w(this, FUNC(mugsmash_state::mugsmash_videoram2_w)).share("videoram2");
+ map(0x0c0000, 0x0c0007).w(this, FUNC(mugsmash_state::mugsmash_reg_w)).share("regs1"); /* video registers*/
+ map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x140007).w(this, FUNC(mugsmash_state::mugsmash_reg2_w)).share("regs2"); /* sound + ? */
+ map(0x1c0000, 0x1c3fff).ram(); /* main ram? */
+ map(0x1c4000, 0x1cffff).ram();
+ map(0x200000, 0x203fff).ram().share("spriteram"); /* sprite ram */
#if USE_FAKE_INPUT_PORTS
- AM_RANGE(0x180000, 0x180007) AM_READ(mugsmash_input_ports_r)
+ map(0x180000, 0x180007).r(this, FUNC(mugsmash_state::mugsmash_input_ports_r));
#else
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2")
- AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3")
+ map(0x180000, 0x180001).portr("IN0");
+ map(0x180002, 0x180003).portr("IN1");
+ map(0x180004, 0x180005).portr("IN2");
+ map(0x180006, 0x180007).portr("IN3");
#endif
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mugsmash_state::mugsmash_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+}
+
+void mugsmash_state::mugsmash_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
#define MUGSMASH_PLAYER_INPUT( player, start ) \
diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp
index bc66ba38a61..46b3c7b0212 100644
--- a/src/mame/drivers/multfish.cpp
+++ b/src/mame/drivers/multfish.cpp
@@ -679,12 +679,13 @@ DRIVER_INIT_MEMBER(igrosoft_gamble_state,crzmon2ent)
// needs gfx (and palette) descrambles
}
-ADDRESS_MAP_START(igrosoft_gamble_state::igrosoft_gamble_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITE(igrosoft_gamble_vid_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(igrosoft_gamble_timekeeper_r, igrosoft_gamble_timekeeper_w)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(bankedram_r, bankedram_w)
-ADDRESS_MAP_END
+void igrosoft_gamble_state::igrosoft_gamble_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_vid_w));
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).rw(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_timekeeper_r), FUNC(igrosoft_gamble_state::igrosoft_gamble_timekeeper_w));
+ map(0xe000, 0xffff).rw(this, FUNC(igrosoft_gamble_state::bankedram_r), FUNC(igrosoft_gamble_state::bankedram_w));
+}
// According to control panel the user buttons are arranged as
// Maxbet | Help | Payout |
@@ -912,75 +913,77 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_dispenable_w)
m_disp_enable = data;
}
-ADDRESS_MAP_START(igrosoft_gamble_state::igrosoft_gamble_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2")
- AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3")
- AM_RANGE(0x14, 0x14) AM_READ_PORT("IN4")
- AM_RANGE(0x15, 0x15) AM_READ_PORT("IN5")
- AM_RANGE(0x16, 0x16) AM_READ_PORT("IN6")
- AM_RANGE(0x17, 0x17) AM_READ_PORT("IN7")
+void igrosoft_gamble_state::igrosoft_gamble_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).portr("IN0");
+ map(0x11, 0x11).portr("IN1");
+ map(0x12, 0x12).portr("IN2");
+ map(0x13, 0x13).portr("IN3");
+ map(0x14, 0x14).portr("IN4");
+ map(0x15, 0x15).portr("IN5");
+ map(0x16, 0x16).portr("IN6");
+ map(0x17, 0x17).portr("IN7");
/* Write ports not hooked up yet */
- AM_RANGE(0x30, 0x30) AM_WRITE(igrosoft_gamble_lamps1_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(igrosoft_gamble_counters_w)
+ map(0x30, 0x30).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_lamps1_w));
+ map(0x31, 0x31).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_counters_w));
// AM_RANGE(0x32, 0x32) AM_WRITE(igrosoft_gamble_port32_w)
- AM_RANGE(0x33, 0x33) AM_WRITE(igrosoft_gamble_hopper_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(igrosoft_gamble_lamps2_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(igrosoft_gamble_lamps3_w)
+ map(0x33, 0x33).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_hopper_w));
+ map(0x34, 0x34).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_lamps2_w));
+ map(0x35, 0x35).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_lamps3_w));
// AM_RANGE(0x36, 0x36) AM_WRITE(igrosoft_gamble_port36_w)
- AM_RANGE(0x37, 0x37) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x38, 0x38) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x39, 0x39) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x3a, 0x3a) AM_DEVREAD("aysnd", ay8910_device, data_r)
-
- AM_RANGE(0x60, 0x60) AM_WRITE(igrosoft_gamble_dispenable_w) // display enable mirror for lottery sets
-
- AM_RANGE(0x90, 0x90) AM_READ(ray_r)
-
- AM_RANGE(0xa0, 0xa0) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey 2 banking
- AM_RANGE(0xa5, 0xa5) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey 2 Ent banking
- AM_RANGE(0xb0, 0xb0) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail 2 lottery banking
- AM_RANGE(0xb1, 0xb1) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey Ent banking
- AM_RANGE(0xb2, 0xb2) AM_WRITE(igrosoft_gamble_bank_w) // Lacky Haunter Ent banking
- AM_RANGE(0xb3, 0xb3) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail Ent banking
- AM_RANGE(0xb4, 0xb4) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail 2 Ent banking
- AM_RANGE(0xb5, 0xb5) AM_WRITE(igrosoft_gamble_bank_w) // Garage Ent banking
- AM_RANGE(0xb6, 0xb6) AM_WRITE(igrosoft_gamble_bank_w) // Resident Ent banking
- AM_RANGE(0xb7, 0xb7) AM_WRITE(igrosoft_gamble_bank_w) // Rock Climber Ent banking
- AM_RANGE(0xb9, 0xb9) AM_WRITE(igrosoft_gamble_bank_w) // Sweet Life 2 Ent banking
- AM_RANGE(0xbb, 0xbb) AM_WRITE(igrosoft_gamble_bank_w) // Island 2 Ent banking
- AM_RANGE(0xbd, 0xbd) AM_WRITE(igrosoft_gamble_bank_w) // Pirate 2 Ent banking
- AM_RANGE(0xbe, 0xbe) AM_WRITE(igrosoft_gamble_bank_w) // Keks Ent banking
- AM_RANGE(0xbf, 0xbf) AM_WRITE(igrosoft_gamble_bank_w) // Gnome Ent banking
- AM_RANGE(0xc7, 0xc7) AM_WRITE(igrosoft_gamble_bank_w) // Resident lottery banking
- AM_RANGE(0xca, 0xca) AM_WRITE(igrosoft_gamble_bank_w) // Gnome lottery banking
- AM_RANGE(0xcb, 0xcb) AM_WRITE(igrosoft_gamble_bank_w) // Keks lottery banking
- AM_RANGE(0xcc, 0xcc) AM_WRITE(igrosoft_gamble_bank_w) // Sweet Life 2 lottery banking
- AM_RANGE(0xcd, 0xcd) AM_WRITE(igrosoft_gamble_bank_w) // Island 2 lottery banking
- AM_RANGE(0xce, 0xce) AM_WRITE(igrosoft_gamble_bank_w) // Pirate 2 lottery banking
- AM_RANGE(0xd0, 0xd0) AM_WRITE(igrosoft_gamble_bank_w) // rollfr_4 banking
- AM_RANGE(0xe1, 0xe1) AM_WRITE(igrosoft_gamble_bank_w) // Island 2 banking
- AM_RANGE(0xe5, 0xe5) AM_WRITE(igrosoft_gamble_bank_w) // Gnome banking
- AM_RANGE(0xe8, 0xe8) AM_WRITE(igrosoft_gamble_bank_w) // Sweet Life 2 banking
- AM_RANGE(0xea, 0xea) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail 2 banking
- AM_RANGE(0xec, 0xec) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey lottery banking
-
- AM_RANGE(0xf0, 0xf0) AM_WRITE(igrosoft_gamble_bank_w) // Gold Fish banking
- AM_RANGE(0xf1, 0xf1) AM_WRITE(igrosoft_gamble_rambank_w)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(igrosoft_gamble_f3_w) // from 00->01 at startup, irq enable maybe?
- AM_RANGE(0xf4, 0xf4) AM_WRITE(igrosoft_gamble_dispenable_w) // display enable
+ map(0x37, 0x37).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x38, 0x38).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x39, 0x39).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x3a, 0x3a).r("aysnd", FUNC(ay8910_device::data_r));
+
+ map(0x60, 0x60).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_dispenable_w)); // display enable mirror for lottery sets
+
+ map(0x90, 0x90).r(this, FUNC(igrosoft_gamble_state::ray_r));
+
+ map(0xa0, 0xa0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey 2 banking
+ map(0xa5, 0xa5).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey 2 Ent banking
+ map(0xb0, 0xb0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail 2 lottery banking
+ map(0xb1, 0xb1).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey Ent banking
+ map(0xb2, 0xb2).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Lacky Haunter Ent banking
+ map(0xb3, 0xb3).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail Ent banking
+ map(0xb4, 0xb4).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail 2 Ent banking
+ map(0xb5, 0xb5).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Garage Ent banking
+ map(0xb6, 0xb6).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Resident Ent banking
+ map(0xb7, 0xb7).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Rock Climber Ent banking
+ map(0xb9, 0xb9).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 Ent banking
+ map(0xbb, 0xbb).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 Ent banking
+ map(0xbd, 0xbd).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate 2 Ent banking
+ map(0xbe, 0xbe).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Keks Ent banking
+ map(0xbf, 0xbf).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome Ent banking
+ map(0xc7, 0xc7).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Resident lottery banking
+ map(0xca, 0xca).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome lottery banking
+ map(0xcb, 0xcb).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Keks lottery banking
+ map(0xcc, 0xcc).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 lottery banking
+ map(0xcd, 0xcd).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 lottery banking
+ map(0xce, 0xce).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate 2 lottery banking
+ map(0xd0, 0xd0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // rollfr_4 banking
+ map(0xe1, 0xe1).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 banking
+ map(0xe5, 0xe5).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome banking
+ map(0xe8, 0xe8).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 banking
+ map(0xea, 0xea).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail 2 banking
+ map(0xec, 0xec).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey lottery banking
+
+ map(0xf0, 0xf0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gold Fish banking
+ map(0xf1, 0xf1).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_rambank_w));
+ map(0xf3, 0xf3).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_f3_w)); // from 00->01 at startup, irq enable maybe?
+ map(0xf4, 0xf4).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_dispenable_w)); // display enable
/* mirrors of the rom banking */
- AM_RANGE(0xf8, 0xfd) AM_WRITE(igrosoft_gamble_bank_w)
-ADDRESS_MAP_END
+ map(0xf8, 0xfd).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w));
+}
-ADDRESS_MAP_START(igrosoft_gamble_state::rollfr_portmap)
- AM_IMPORT_FROM(igrosoft_gamble_portmap)
- AM_RANGE(0x33, 0x33) AM_WRITE(rollfr_hopper_w)
-ADDRESS_MAP_END
+void igrosoft_gamble_state::rollfr_portmap(address_map &map)
+{
+ igrosoft_gamble_portmap(map);
+ map(0x33, 0x33).w(this, FUNC(igrosoft_gamble_state::rollfr_hopper_w));
+}
static const gfx_layout tiles16x16_layout =
{
diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp
index f3d796ca709..389e049e76a 100644
--- a/src/mame/drivers/multi16.cpp
+++ b/src/mame/drivers/multi16.cpp
@@ -92,13 +92,14 @@ uint32_t multi16_state::screen_update_multi16(screen_device &screen, bitmap_ind1
return 0;
}
-ADDRESS_MAP_START(multi16_state::multi16_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x7ffff) AM_RAM
- AM_RANGE(0xd8000,0xdffff) AM_RAM AM_SHARE("p_vram")
- AM_RANGE(0xe0000,0xeffff) AM_RAM
- AM_RANGE(0xf0000,0xf3fff) AM_MIRROR(0xc000) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+void multi16_state::multi16_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x7ffff).ram();
+ map(0xd8000, 0xdffff).ram().share("p_vram");
+ map(0xe0000, 0xeffff).ram();
+ map(0xf0000, 0xf3fff).mirror(0xc000).rom().region("ipl", 0);
+}
WRITE8_MEMBER( multi16_state::multi16_6845_address_w )
{
@@ -112,12 +113,13 @@ WRITE8_MEMBER( multi16_state::multi16_6845_data_w )
m_crtc->register_w(space, offset, data);
}
-ADDRESS_MAP_START(multi16_state::multi16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0xffff) // i8259
- AM_RANGE(0x40, 0x41) AM_WRITE8(multi16_6845_address_w, 0x00ff)
- AM_RANGE(0x40, 0x41) AM_WRITE8(multi16_6845_data_w, 0xff00)
-ADDRESS_MAP_END
+void multi16_state::multi16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x02, 0x03).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); // i8259
+ map(0x40, 0x40).w(this, FUNC(multi16_state::multi16_6845_address_w));
+ map(0x41, 0x41).w(this, FUNC(multi16_state::multi16_6845_data_w));
+}
/* Input ports */
static INPUT_PORTS_START( multi16 )
diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp
index fb38fb40031..d32b7ba3634 100644
--- a/src/mame/drivers/multi8.cpp
+++ b/src/mame/drivers/multi8.cpp
@@ -288,33 +288,35 @@ WRITE8_MEMBER( multi8_state::kanji_w )
m_knj_addr = (offset == 0) ? (m_knj_addr & 0xff00) | (data & 0xff) : (m_knj_addr & 0x00ff) | (data << 8);
}
-ADDRESS_MAP_START(multi8_state::multi8_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(multi8_state::multi8_io)
+void multi8_state::multi8_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).rw(this, FUNC(multi8_state::vram_r), FUNC(multi8_state::vram_w));
+ map(0xc000, 0xffff).ram();
+}
+
+void multi8_state::multi8_io(address_map &map)
+{
// ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(key_input_r) //keyboard
- AM_RANGE(0x01, 0x01) AM_READ(key_status_r) //keyboard
- AM_RANGE(0x18, 0x19) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x18, 0x18) AM_READ(ay8912_0_r)
- AM_RANGE(0x1a, 0x1a) AM_READ(ay8912_1_r)
- AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x1d, 0x1d) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) //cmt
- AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("pit", pit8253_device, read, write) //pit
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x2c, 0x2d) AM_DEVREADWRITE("pic", pic8259_device, read, write) //i8259
- AM_RANGE(0x30, 0x37) AM_READWRITE(pal_r,pal_w)
- AM_RANGE(0x40, 0x41) AM_READWRITE(kanji_r, kanji_w) //kanji regs
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(multi8_state::key_input_r)); //keyboard
+ map(0x01, 0x01).r(this, FUNC(multi8_state::key_status_r)); //keyboard
+ map(0x18, 0x19).w(m_aysnd, FUNC(ay8910_device::address_data_w));
+ map(0x18, 0x18).r(this, FUNC(multi8_state::ay8912_0_r));
+ map(0x1a, 0x1a).r(this, FUNC(multi8_state::ay8912_1_r));
+ map(0x1c, 0x1c).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x1d, 0x1d).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x20, 0x20).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); //cmt
+ map(0x24, 0x27).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); //pit
+ map(0x28, 0x2b).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x2c, 0x2d).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); //i8259
+ map(0x30, 0x37).rw(this, FUNC(multi8_state::pal_r), FUNC(multi8_state::pal_w));
+ map(0x40, 0x41).rw(this, FUNC(multi8_state::kanji_r), FUNC(multi8_state::kanji_w)); //kanji regs
// AM_RANGE(0x70, 0x74) //upd765a fdc
// AM_RANGE(0x78, 0x78) //memory banking
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( multi8 )
diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp
index fbb7f5cbaeb..e10934b4a3f 100644
--- a/src/mame/drivers/multigam.cpp
+++ b/src/mame/drivers/multigam.cpp
@@ -402,37 +402,39 @@ WRITE8_MEMBER(multigam_state::multigam_mapper2_w)
*******************************************************/
-ADDRESS_MAP_START(multigam_state::multigam_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */
- AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x5000, 0x5ffe) AM_ROM
- AM_RANGE(0x5002, 0x5002) AM_WRITENOP
- AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0x6fff, 0x6fff) AM_WRITE(multigam_switch_prg_rom)
- AM_RANGE(0x7fff, 0x7fff) AM_WRITE(multigam_switch_gfx_rom)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(multigam_mapper2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(multigam_state::multigmt_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */
- AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(multigam_switch_prg_rom)
- AM_RANGE(0x3fff, 0x3fff) AM_WRITE(multigam_switch_gfx_rom)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x5000, 0x5ffe) AM_ROM
- AM_RANGE(0x5002, 0x5002) AM_WRITENOP
- AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(multigam_mapper2_w)
-ADDRESS_MAP_END
+void multigam_state::multigam_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* NES RAM */
+ map(0x0800, 0x0fff).ram(); /* additional RAM */
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x5000, 0x5ffe).rom();
+ map(0x5002, 0x5002).nopw();
+ map(0x5fff, 0x5fff).portr("IN0");
+ map(0x6000, 0x7fff).rom();
+ map(0x6fff, 0x6fff).w(this, FUNC(multigam_state::multigam_switch_prg_rom));
+ map(0x7fff, 0x7fff).w(this, FUNC(multigam_state::multigam_switch_gfx_rom));
+ map(0x8000, 0xffff).rom().w(this, FUNC(multigam_state::multigam_mapper2_w));
+}
+
+void multigam_state::multigmt_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* NES RAM */
+ map(0x0800, 0x0fff).ram(); /* additional RAM */
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x3000, 0x3000).w(this, FUNC(multigam_state::multigam_switch_prg_rom));
+ map(0x3fff, 0x3fff).w(this, FUNC(multigam_state::multigam_switch_gfx_rom));
+ map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x5000, 0x5ffe).rom();
+ map(0x5002, 0x5002).nopw();
+ map(0x5fff, 0x5fff).portr("IN0");
+ map(0x6000, 0x7fff).rom();
+ map(0x8000, 0xffff).rom().w(this, FUNC(multigam_state::multigam_mapper2_w));
+}
/******************************************************
@@ -681,22 +683,23 @@ WRITE8_MEMBER(multigam_state::multigm3_switch_prg_rom)
*******************************************************/
-ADDRESS_MAP_START(multigam_state::multigm3_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */
- AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x5001, 0x5001) AM_WRITE(multigm3_switch_prg_rom)
- AM_RANGE(0x5002, 0x5002) AM_WRITENOP
- AM_RANGE(0x5003, 0x5003) AM_WRITE(multigm3_switch_gfx_rom)
- AM_RANGE(0x5000, 0x5ffe) AM_ROM
- AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank10")
- AM_RANGE(0x6fff, 0x6fff) AM_WRITENOP /* 0x00 in attract mode, 0xff during play */
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(multigm3_mapper2_w)
-ADDRESS_MAP_END
+void multigam_state::multigm3_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* NES RAM */
+ map(0x0800, 0x0fff).ram(); /* additional RAM */
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x5001, 0x5001).w(this, FUNC(multigam_state::multigm3_switch_prg_rom));
+ map(0x5002, 0x5002).nopw();
+ map(0x5003, 0x5003).w(this, FUNC(multigam_state::multigm3_switch_gfx_rom));
+ map(0x5000, 0x5ffe).rom();
+ map(0x5fff, 0x5fff).portr("IN0");
+ map(0x6000, 0x7fff).bankrw("bank10");
+ map(0x6fff, 0x6fff).nopw(); /* 0x00 in attract mode, 0xff during play */
+ map(0x8000, 0xffff).rom().w(this, FUNC(multigam_state::multigm3_mapper2_w));
+}
/******************************************************
@@ -981,22 +984,23 @@ WRITE8_MEMBER(multigam_state::supergm3_chr_bank_w)
*******************************************************/
-ADDRESS_MAP_START(multigam_state::supergm3_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */
- AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4fff, 0x4fff) AM_READ_PORT("IN0")
- AM_RANGE(0x5000, 0x5fff) AM_ROM
- AM_RANGE(0x5000, 0x5000) AM_WRITENOP
- AM_RANGE(0x5001, 0x5001) AM_WRITE(supergm3_prg_bank_w)
- AM_RANGE(0x5002, 0x5002) AM_WRITE(supergm3_chr_bank_w)
- AM_RANGE(0x5fff, 0x5fff) AM_WRITENOP
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank10")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void multigam_state::supergm3_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* NES RAM */
+ map(0x0800, 0x0fff).ram(); /* additional RAM */
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4fff, 0x4fff).portr("IN0");
+ map(0x5000, 0x5fff).rom();
+ map(0x5000, 0x5000).nopw();
+ map(0x5001, 0x5001).w(this, FUNC(multigam_state::supergm3_prg_bank_w));
+ map(0x5002, 0x5002).w(this, FUNC(multigam_state::supergm3_chr_bank_w));
+ map(0x5fff, 0x5fff).nopw();
+ map(0x6000, 0x7fff).bankrw("bank10");
+ map(0x8000, 0xffff).rom();
+}
/******************************************************
diff --git a/src/mame/drivers/munchmo.cpp b/src/mame/drivers/munchmo.cpp
index fe13910ff5a..d36773e3f5b 100644
--- a/src/mame/drivers/munchmo.cpp
+++ b/src/mame/drivers/munchmo.cpp
@@ -93,39 +93,44 @@ READ8_MEMBER(munchmo_state::ay2reset_r)
*
*************************************/
-ADDRESS_MAP_START(munchmo_state::mnchmobl_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_xpos")
- AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_tile")
- AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_attr")
- AM_RANGE(0xb800, 0xb8ff) AM_MIRROR(0x0100) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xbaba, 0xbaba) AM_WRITENOP /* ? */
- AM_RANGE(0xbc00, 0xbc7f) AM_RAM AM_SHARE("status_vram")
- AM_RANGE(0xbe00, 0xbe00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- ;map(0xbe01, 0xbe01).select(0x0070).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 4, data, mem_mask); });
- AM_RANGE(0xbe02, 0xbe02) AM_READ_PORT("DSW1")
- AM_RANGE(0xbe03, 0xbe03) AM_READ_PORT("DSW2")
- AM_RANGE(0xbf00, 0xbf00) AM_WRITE(nmi_ack_w) // CNI 1-8C
- AM_RANGE(0xbf01, 0xbf01) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xbf02, 0xbf02) AM_READ_PORT("P1")
- AM_RANGE(0xbf03, 0xbf03) AM_READ_PORT("P2")
- AM_RANGE(0xbf04, 0xbf07) AM_WRITEONLY AM_SHARE("vreg") // MY0 1-8C
-ADDRESS_MAP_END
+void munchmo_state::mnchmobl_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0xa000, 0xa3ff).mirror(0x0400).ram().share("sprite_xpos");
+ map(0xa800, 0xabff).mirror(0x0400).ram().share("sprite_tile");
+ map(0xb000, 0xb3ff).mirror(0x0400).ram().share("sprite_attr");
+ map(0xb800, 0xb8ff).mirror(0x0100).ram().share("videoram");
+ map(0xbaba, 0xbaba).nopw(); /* ? */
+ map(0xbc00, 0xbc7f).ram().share("status_vram");
+ map(0xbe00, 0xbe00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xbe01, 0xbe01).select(0x0070).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){
+ m_mainlatch->write_d0(space, offset >> 4, data, mem_mask);
+ });
+ map(0xbe02, 0xbe02).portr("DSW1");
+ map(0xbe03, 0xbe03).portr("DSW2");
+ map(0xbf00, 0xbf00).w(this, FUNC(munchmo_state::nmi_ack_w)); // CNI 1-8C
+ map(0xbf01, 0xbf01).portr("SYSTEM");
+ map(0xbf02, 0xbf02).portr("P1");
+ map(0xbf03, 0xbf03).portr("P2");
+ map(0xbf04, 0xbf07).writeonly().share("vreg"); // MY0 1-8C
+}
/* memory map provided thru schematics */
-ADDRESS_MAP_START(munchmo_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x8000, 0x9fff) AM_READ(ay1reset_r) AM_DEVWRITE("ay1", ay8910_device, reset_w)
- AM_RANGE(0xa000, 0xbfff) AM_READ(ay2reset_r) AM_DEVWRITE("ay2", ay8910_device, reset_w)
- AM_RANGE(0xc000, 0xdfff) AM_WRITE(sound_nmi_ack_w) // NCL 1-8H
- AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM // is mirror ok?
-ADDRESS_MAP_END
+void munchmo_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x4fff).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x5000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6fff).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x7000, 0x7fff).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x8000, 0x9fff).r(this, FUNC(munchmo_state::ay1reset_r)).w("ay1", FUNC(ay8910_device::reset_w));
+ map(0xa000, 0xbfff).r(this, FUNC(munchmo_state::ay2reset_r)).w("ay2", FUNC(ay8910_device::reset_w));
+ map(0xc000, 0xdfff).w(this, FUNC(munchmo_state::sound_nmi_ack_w)); // NCL 1-8H
+ map(0xe000, 0xe7ff).mirror(0x1800).ram(); // is mirror ok?
+}
/*************************************
diff --git a/src/mame/drivers/murogem.cpp b/src/mame/drivers/murogem.cpp
index e2199dd8cee..4bc3473686b 100644
--- a/src/mame/drivers/murogem.cpp
+++ b/src/mame/drivers/murogem.cpp
@@ -155,16 +155,17 @@ WRITE8_MEMBER(murogem_state::outport_w)
}
-ADDRESS_MAP_START(murogem_state::murogem_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("IN1")
- AM_RANGE(0x7000, 0x7000) AM_WRITE(outport_w) /* output port */
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void murogem_state::murogem_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x4000, 0x4000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x4001, 0x4001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x5000, 0x5000).portr("IN0");
+ map(0x5800, 0x5800).portr("IN1");
+ map(0x7000, 0x7000).w(this, FUNC(murogem_state::outport_w)); /* output port */
+ map(0x8000, 0x87ff).ram().share("videoram");
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( murogem )
diff --git a/src/mame/drivers/murogmbl.cpp b/src/mame/drivers/murogmbl.cpp
index 1abf9730073..f35e4b3551a 100644
--- a/src/mame/drivers/murogmbl.cpp
+++ b/src/mame/drivers/murogmbl.cpp
@@ -144,29 +144,31 @@ PALETTE_INIT_MEMBER(slotunbl_state, slotunbl)
}
}
-ADDRESS_MAP_START(murogmbl_state::murogmbl_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM
- AM_RANGE(0x5800, 0x5bff) AM_RAM AM_SHARE("video")
- AM_RANGE(0x5c00, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("DSW")
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN1")
- AM_RANGE(0x7800, 0x7800) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* read is always discarded */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slotunbl_state::slotunbl_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("video")
+void murogmbl_state::murogmbl_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x4800, 0x4bff).ram();
+ map(0x5800, 0x5bff).ram().share("video");
+ map(0x5c00, 0x5fff).ram();
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6800, 0x6800).portr("DSW");
+ map(0x7000, 0x7000).portr("IN1");
+ map(0x7800, 0x7800).nopr().w("dac", FUNC(dac_byte_interface::write)); /* read is always discarded */
+}
+
+void slotunbl_state::slotunbl_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x4800, 0x4fff).ram();
+ map(0x5000, 0x53ff).ram().share("video");
// AM_RANGE(0x5400, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x6800, 0x6800) AM_READ_PORT("DSW")
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN1")
- AM_RANGE(0x7800, 0x7800) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* read is always discarded */
-ADDRESS_MAP_END
+ map(0x6000, 0x6000).portr("IN0");
+ map(0x6800, 0x6800).portr("DSW");
+ map(0x7000, 0x7000).portr("IN1");
+ map(0x7800, 0x7800).nopr().w("dac", FUNC(dac_byte_interface::write)); /* read is always discarded */
+}
void murogmbl_state::video_start()
{
diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp
index 2d62f7ccb8b..91bcfe11f9d 100644
--- a/src/mame/drivers/mustache.cpp
+++ b/src/mame/drivers/mustache.cpp
@@ -45,30 +45,32 @@ YM2151:
#define YM_CLOCK (XTAL1/4)
-ADDRESS_MAP_START(mustache_state::memmap)
- AM_RANGE(0x0000, 0x7fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
- AM_RANGE(0xd001, 0xd001) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r)
- AM_RANGE(0xd002, 0xd002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
- AM_RANGE(0xd003, 0xd003) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("t5182", t5182_device, sharedram_r, sharedram_w)
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("P1")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("P2")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("START")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB")
- AM_RANGE(0xd806, 0xd806) AM_WRITE(scroll_w)
- AM_RANGE(0xd807, 0xd807) AM_WRITE(video_control_w)
- AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mustache_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
+void mustache_state::memmap(address_map &map)
+{
+ map(0x0000, 0x7fff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().w(this, FUNC(mustache_state::videoram_w)).share("videoram");
+ map(0xd000, 0xd000).w("t5182", FUNC(t5182_device::sound_irq_w));
+ map(0xd001, 0xd001).r("t5182", FUNC(t5182_device::sharedram_semaphore_snd_r));
+ map(0xd002, 0xd002).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_acquire_w));
+ map(0xd003, 0xd003).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_release_w));
+ map(0xd400, 0xd4ff).rw("t5182", FUNC(t5182_device::sharedram_r), FUNC(t5182_device::sharedram_w));
+ map(0xd800, 0xd800).portr("P1");
+ map(0xd801, 0xd801).portr("P2");
+ map(0xd802, 0xd802).portr("START");
+ map(0xd803, 0xd803).portr("DSWA");
+ map(0xd804, 0xd804).portr("DSWB");
+ map(0xd806, 0xd806).w(this, FUNC(mustache_state::scroll_w));
+ map(0xd807, 0xd807).w(this, FUNC(mustache_state::video_control_w));
+ map(0xe800, 0xefff).writeonly().share("spriteram");
+ map(0xf000, 0xffff).ram();
+}
+
+void mustache_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+ map(0x8000, 0xbfff).rom().region("maincpu", 0x8000);
+}
/******************************************************************************/
diff --git a/src/mame/drivers/mvme147.cpp b/src/mame/drivers/mvme147.cpp
index 72679da1e4b..82108dc4e21 100644
--- a/src/mame/drivers/mvme147.cpp
+++ b/src/mame/drivers/mvme147.cpp
@@ -235,28 +235,29 @@ private:
uint8_t m_vc_cntl_conf;
};
-ADDRESS_MAP_START(mvme147_state::mvme147_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x00000000, 0x00000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */
- AM_RANGE (0x00000000, 0x00000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just during reset */
- AM_RANGE (0x00000008, 0x003fffff) AM_RAM /* 4 Mb RAM */
- AM_RANGE (0xff800000, 0xff9fffff) AM_ROM AM_REGION("roms", 0x800000) //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 1 - 147bug */
- AM_RANGE (0xffa00000, 0xffbfffff) AM_ROM AM_REGION("roms", 0xa00000) //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 2 - unpopulated */
+void mvme147_state::mvme147_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x00000007).ram().w(this, FUNC(mvme147_state::bootvect_w)); /* After first write we act as RAM */
+ map(0x00000000, 0x00000007).rom().r(this, FUNC(mvme147_state::bootvect_r)); /* ROM mirror just during reset */
+ map(0x00000008, 0x003fffff).ram(); /* 4 Mb RAM */
+ map(0xff800000, 0xff9fffff).rom().region("roms", 0x800000); //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 1 - 147bug */
+ map(0xffa00000, 0xffbfffff).rom().region("roms", 0xa00000); //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 2 - unpopulated */
/* SGS-Thompson M48T18 RAM and clock chip, only 4088 bytes used, and 8 bytes for the RTC, out of 8Kb though */
- AM_RANGE (0xfffe0000, 0xfffe0fff) AM_DEVREADWRITE8("m48t18", timekeeper_device, read, write, 0xffffffff)
+ map(0xfffe0000, 0xfffe0fff).rw("m48t18", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
//AM_RANGE (0xfffe1000, 0xfffe100f) AM_READWRITE32(pcc32_r, pcc32_w, 0xffffffff) /* PCC 32 bits registers - needs U64 cast defined to work */
- AM_RANGE (0xfffe1010, 0xfffe1017) AM_READWRITE16(pcc16_r, pcc16_w, 0xffffffff) /* PCC 16 bits registers */
- AM_RANGE (0xfffe1018, 0xfffe102f) AM_READWRITE8(pcc8_r, pcc8_w, 0xffffffff) /* PCC 8 bits registers */
- AM_RANGE (0xfffe2000, 0xfffe201b) AM_READWRITE8(vmechip_r, vmechip_w, 0x00ff00ff) /* VMEchip 8 bits registers on odd adresses */
+ map(0xfffe1010, 0xfffe1017).rw(this, FUNC(mvme147_state::pcc16_r), FUNC(mvme147_state::pcc16_w)); /* PCC 16 bits registers */
+ map(0xfffe1018, 0xfffe102f).rw(this, FUNC(mvme147_state::pcc8_r), FUNC(mvme147_state::pcc8_w)); /* PCC 8 bits registers */
+ map(0xfffe2000, 0xfffe201b).rw(this, FUNC(mvme147_state::vmechip_r), FUNC(mvme147_state::vmechip_w)).umask32(0x00ff00ff); /* VMEchip 8 bits registers on odd adresses */
- AM_RANGE (0xfffe3000, 0xfffe3003) AM_DEVREADWRITE8("scc", scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 1&2 - Dual serial port Z80-SCC */
- AM_RANGE (0xfffe3800, 0xfffe3803) AM_DEVREADWRITE8("scc2", scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 3&4 - Dual serial port Z80-SCC */
+ map(0xfffe3000, 0xfffe3003).rw(m_sccterm, FUNC(scc85c30_device::ba_cd_inv_r), FUNC(scc85c30_device::ba_cd_inv_w)); /* Port 1&2 - Dual serial port Z80-SCC */
+ map(0xfffe3800, 0xfffe3803).rw(m_sccterm2, FUNC(scc85c30_device::ba_cd_inv_r), FUNC(scc85c30_device::ba_cd_inv_w)); /* Port 3&4 - Dual serial port Z80-SCC */
//AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */
//AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START (mvme147)
diff --git a/src/mame/drivers/mw18w.cpp b/src/mame/drivers/mw18w.cpp
index 37255b01ba5..29f28bbf5d5 100644
--- a/src/mame/drivers/mw18w.cpp
+++ b/src/mame/drivers/mw18w.cpp
@@ -162,22 +162,24 @@ CUSTOM_INPUT_MEMBER(mw18w_state::mw18w_sensors_r)
}
-ADDRESS_MAP_START(mw18w_state::mw18w_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mw18w_state::mw18w_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(mw18w_sound0_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(mw18w_sound1_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(mw18w_lamps_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(mw18w_led_display_w)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4")
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(mw18w_irq0_clear_w)
-ADDRESS_MAP_END
+void mw18w_state::mw18w_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+}
+
+void mw18w_state::mw18w_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(mw18w_state::mw18w_sound0_w));
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(mw18w_state::mw18w_sound1_w));
+ map(0x02, 0x02).portr("IN2").w(this, FUNC(mw18w_state::mw18w_lamps_w));
+ map(0x03, 0x03).portr("DSW").w(this, FUNC(mw18w_state::mw18w_led_display_w));
+ map(0x04, 0x04).portr("IN4");
+ map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).w(this, FUNC(mw18w_state::mw18w_irq0_clear_w));
+}
diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp
index df7fbc42f9e..cbfe91185cc 100644
--- a/src/mame/drivers/mw8080bw.cpp
+++ b/src/mame/drivers/mw8080bw.cpp
@@ -214,12 +214,13 @@ WRITE8_MEMBER(mw8080bw_state::mw8080bw_reversable_shift_count_w)
*
*************************************/
-ADDRESS_MAP_START(mw8080bw_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP
- AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x4000, 0x5fff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
+void mw8080bw_state::main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom().nopw();
+ map(0x2000, 0x3fff).mirror(0x4000).ram().share("main_ram");
+ map(0x4000, 0x5fff).rom().nopw();
+}
@@ -330,19 +331,20 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::seawolf_erase_input_r)
}
-ADDRESS_MAP_START(mw8080bw_state::seawolf_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_WRITE(seawolf_explosion_lamp_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(seawolf_periscope_lamp_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(seawolf_audio_w)
-ADDRESS_MAP_END
+void mw8080bw_state::seawolf_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r));
+ map(0x01, 0x01).mirror(0x04).portr("IN0");
+ map(0x02, 0x02).mirror(0x04).portr("IN1");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(this, FUNC(mw8080bw_state::seawolf_explosion_lamp_w));
+ map(0x02, 0x02).w(this, FUNC(mw8080bw_state::seawolf_periscope_lamp_w));
+ map(0x03, 0x03).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::seawolf_audio_w));
+}
/* the 30 position encoder is verified */
@@ -443,16 +445,17 @@ WRITE8_MEMBER(mw8080bw_state::gunfight_io_w)
}
-ADDRESS_MAP_START(mw8080bw_state::gunfight_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
+void mw8080bw_state::gunfight_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
/* no decoder, just 3 AND gates */
- AM_RANGE(0x00, 0x07) AM_WRITE(gunfight_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x07).w(this, FUNC(mw8080bw_state::gunfight_io_w));
+}
static const ioport_value gunfight_controller_table[7] =
@@ -638,16 +641,17 @@ WRITE8_MEMBER(mw8080bw_state::tornbase_io_w)
}
-ADDRESS_MAP_START(mw8080bw_state::tornbase_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
+void mw8080bw_state::tornbase_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
/* no decoder, just 3 AND gates */
- AM_RANGE(0x00, 0x07) AM_WRITE(tornbase_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x07).w(this, FUNC(mw8080bw_state::tornbase_io_w));
+}
static INPUT_PORTS_START( tornbase )
@@ -759,19 +763,20 @@ MACHINE_CONFIG_END
*
*************************************/
-ADDRESS_MAP_START(mw8080bw_state::zzzap_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x02, 0x02) AM_WRITE(zzzap_audio_1_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(zzzap_audio_2_w)
- AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void mw8080bw_state::zzzap_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x02, 0x02).w(this, FUNC(mw8080bw_state::zzzap_audio_1_w));
+ map(0x03, 0x03).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::zzzap_audio_2_w));
+ map(0x07, 0x07).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( zzzap )
@@ -918,14 +923,15 @@ WRITE8_MEMBER(mw8080bw_state::maze_io_w)
}
-ADDRESS_MAP_START(mw8080bw_state::maze_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
+void mw8080bw_state::maze_io_map(address_map &map)
+{
+ map.global_mask(0x3);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
/* no decoder, just a couple of AND gates */
- AM_RANGE(0x00, 0x03) AM_WRITE(maze_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x03).w(this, FUNC(mw8080bw_state::maze_io_w));
+}
static INPUT_PORTS_START( maze )
@@ -989,20 +995,21 @@ MACHINE_START_MEMBER(mw8080bw_state,boothill)
}
-ADDRESS_MAP_START(mw8080bw_state::boothill_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(boothill_audio_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w)
-ADDRESS_MAP_END
+void mw8080bw_state::boothill_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r));
+
+ map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::boothill_audio_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w));
+}
static const ioport_value boothill_controller_table[7] =
@@ -1084,16 +1091,17 @@ WRITE8_MEMBER(mw8080bw_state::checkmat_io_w)
}
-ADDRESS_MAP_START(mw8080bw_state::checkmat_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3")
+void mw8080bw_state::checkmat_io_map(address_map &map)
+{
+ map.global_mask(0x3);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).portr("IN3");
/* no decoder, just a couple of AND gates */
- AM_RANGE(0x00, 0x03) AM_WRITE(checkmat_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x03).w(this, FUNC(mw8080bw_state::checkmat_io_w));
+}
static INPUT_PORTS_START( checkmat )
@@ -1219,21 +1227,22 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::desertgu_dip_sw_0_1_r)
}
-ADDRESS_MAP_START(mw8080bw_state::desertgu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(desertgu_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(desertgu_audio_2_w)
-ADDRESS_MAP_END
+void mw8080bw_state::desertgu_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r));
+ map(0x01, 0x01).mirror(0x04).portr("IN0");
+ map(0x02, 0x02).mirror(0x04).portr("IN1");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::desertgu_audio_1_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w));
+ map(0x07, 0x07).w(this, FUNC(mw8080bw_state::desertgu_audio_2_w));
+}
static INPUT_PORTS_START( desertgu )
@@ -1344,20 +1353,21 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::dplay_pitch_right_input_r)
}
-ADDRESS_MAP_START(mw8080bw_state::dplay_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(dplay_audio_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w)
-ADDRESS_MAP_END
+void mw8080bw_state::dplay_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::dplay_audio_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w));
+}
static INPUT_PORTS_START( dplay )
@@ -1523,21 +1533,22 @@ MACHINE_START_MEMBER(mw8080bw_state,gmissile)
}
-ADDRESS_MAP_START(mw8080bw_state::gmissile_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(gmissile_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(gmissile_audio_2_w)
+void mw8080bw_state::gmissile_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r));
+
+ map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::gmissile_audio_1_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::gmissile_audio_2_w));
/* also writes 0x00 to 0x06, but it is not connected */
- AM_RANGE(0x07, 0x07) AM_WRITE(gmissile_audio_3_w)
-ADDRESS_MAP_END
+ map(0x07, 0x07).w(this, FUNC(mw8080bw_state::gmissile_audio_3_w));
+}
static INPUT_PORTS_START( gmissile )
@@ -1620,19 +1631,20 @@ MACHINE_START_MEMBER(mw8080bw_state,m4)
}
-ADDRESS_MAP_START(mw8080bw_state::m4_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(m4_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(m4_audio_2_w)
-ADDRESS_MAP_END
+void mw8080bw_state::m4_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r));
+
+ map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::m4_audio_1_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::m4_audio_2_w));
+}
static INPUT_PORTS_START( m4 )
@@ -1736,21 +1748,22 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::clowns_controller_r)
}
-ADDRESS_MAP_START(mw8080bw_state::clowns_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(clowns_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(clowns_audio_2_w)
-ADDRESS_MAP_END
+void mw8080bw_state::clowns_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::clowns_audio_1_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w));
+ map(0x07, 0x07).w(this, FUNC(mw8080bw_state::clowns_audio_2_w));
+}
static INPUT_PORTS_START( clowns )
@@ -1876,22 +1889,23 @@ MACHINE_CONFIG_END
*
*************************************/
-ADDRESS_MAP_START(mw8080bw_state::spacwalk_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
-
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(spacwalk_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(spacwalk_audio_2_w)
-ADDRESS_MAP_END
+void mw8080bw_state::spacwalk_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::spacwalk_audio_1_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w));
+ map(0x07, 0x07).w(this, FUNC(mw8080bw_state::spacwalk_audio_2_w));
+}
static INPUT_PORTS_START( spacwalk )
PORT_START("IN0")
@@ -1973,21 +1987,22 @@ MACHINE_CONFIG_END
*
*************************************/
-ADDRESS_MAP_START(mw8080bw_state::shuffle_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xf) /* yes, 4, and no mirroring on the read handlers */
- AM_RANGE(0x01, 0x01) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
- AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3")
-
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_1_w)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_2_w)
-ADDRESS_MAP_END
+void mw8080bw_state::shuffle_io_map(address_map &map)
+{
+ map.global_mask(0xf); /* yes, 4, and no mirroring on the read handlers */
+ map(0x01, 0x01).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+ map(0x02, 0x02).portr("IN0");
+ map(0x03, 0x03).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r));
+ map(0x04, 0x04).portr("IN1");
+ map(0x05, 0x05).portr("IN2");
+ map(0x06, 0x06).portr("IN3");
+
+ map(0x01, 0x01).mirror(0x08).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).mirror(0x08).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).mirror(0x08).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).mirror(0x08).w(this, FUNC(mw8080bw_state::shuffle_audio_1_w));
+ map(0x06, 0x06).mirror(0x08).w(this, FUNC(mw8080bw_state::shuffle_audio_2_w));
+}
static INPUT_PORTS_START( shuffle )
@@ -2056,20 +2071,21 @@ MACHINE_CONFIG_END
*
*************************************/
-ADDRESS_MAP_START(mw8080bw_state::dogpatch_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(dogpatch_audio_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w)
-ADDRESS_MAP_END
+void mw8080bw_state::dogpatch_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::dogpatch_audio_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w));
+}
static const ioport_value dogpatch_controller_table[7] =
@@ -2207,16 +2223,17 @@ WRITE8_MEMBER(mw8080bw_state::spcenctr_io_w)
}
-ADDRESS_MAP_START(mw8080bw_state::spcenctr_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xfc) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xfc) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xfc) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xfc) AM_READNOP
+void mw8080bw_state::spcenctr_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0xfc).portr("IN0");
+ map(0x01, 0x01).mirror(0xfc).portr("IN1");
+ map(0x02, 0x02).mirror(0xfc).portr("IN2");
+ map(0x03, 0x03).mirror(0xfc).nopr();
/* complicated addressing logic */
- AM_RANGE(0x00, 0xff) AM_WRITE(spcenctr_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0xff).w(this, FUNC(mw8080bw_state::spcenctr_io_w));
+}
static const ioport_value spcenctr_controller_table[] =
@@ -2315,19 +2332,20 @@ MACHINE_START_MEMBER(mw8080bw_state,phantom2)
}
-ADDRESS_MAP_START(mw8080bw_state::phantom2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(phantom2_audio_1_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(phantom2_audio_2_w)
-ADDRESS_MAP_END
+void mw8080bw_state::phantom2_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r));
+ map(0x01, 0x01).mirror(0x04).portr("IN0");
+ map(0x02, 0x02).mirror(0x04).portr("IN1");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::phantom2_audio_1_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::phantom2_audio_2_w));
+}
static INPUT_PORTS_START( phantom2 )
@@ -2443,27 +2461,28 @@ WRITE8_MEMBER(mw8080bw_state::bowler_lights_2_w)
}
-ADDRESS_MAP_START(mw8080bw_state::bowler_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xf) /* no masking on the reads, all 4 bits are decoded */
- AM_RANGE(0x01, 0x01) AM_READ(bowler_shift_result_r)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
- AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3")
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(bowler_audio_1_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(bowler_audio_2_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(bowler_lights_1_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(bowler_audio_3_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(bowler_audio_4_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(bowler_audio_5_w)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(bowler_lights_2_w)
- AM_RANGE(0x0f, 0x0f) AM_WRITE(bowler_audio_6_w)
-ADDRESS_MAP_END
+void mw8080bw_state::bowler_io_map(address_map &map)
+{
+ map.global_mask(0xf); /* no masking on the reads, all 4 bits are decoded */
+ map(0x01, 0x01).r(this, FUNC(mw8080bw_state::bowler_shift_result_r));
+ map(0x02, 0x02).portr("IN0");
+ map(0x03, 0x03).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r));
+ map(0x04, 0x04).portr("IN1");
+ map(0x05, 0x05).portr("IN2");
+ map(0x06, 0x06).portr("IN3");
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::bowler_audio_1_w));
+ map(0x06, 0x06).w(this, FUNC(mw8080bw_state::bowler_audio_2_w));
+ map(0x07, 0x07).w(this, FUNC(mw8080bw_state::bowler_lights_1_w));
+ map(0x08, 0x08).w(this, FUNC(mw8080bw_state::bowler_audio_3_w));
+ map(0x09, 0x09).w(this, FUNC(mw8080bw_state::bowler_audio_4_w));
+ map(0x0a, 0x0a).w(this, FUNC(mw8080bw_state::bowler_audio_5_w));
+ map(0x0e, 0x0e).w(this, FUNC(mw8080bw_state::bowler_lights_2_w));
+ map(0x0f, 0x0f).w(this, FUNC(mw8080bw_state::bowler_audio_6_w));
+}
static INPUT_PORTS_START( bowler )
@@ -2630,19 +2649,20 @@ int mw8080bw_state::invaders_is_cabinet_cocktail()
}
-ADDRESS_MAP_START(mw8080bw_state::invaders_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invaders_audio_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void mw8080bw_state::invaders_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::invaders_audio_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::invaders_audio_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( invaders )
@@ -2764,18 +2784,19 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::blueshrk_coin_input_r)
}
-ADDRESS_MAP_START(mw8080bw_state::blueshrk_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(blueshrk_audio_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void mw8080bw_state::blueshrk_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r));
+ map(0x01, 0x01).mirror(0x04).portr("IN0");
+ map(0x02, 0x02).mirror(0x04).portr("IN1");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::blueshrk_audio_w));
+ map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
static INPUT_PORTS_START( blueshrk )
@@ -2847,21 +2868,22 @@ uint32_t mw8080bw_state::invad2ct_coin_input_r(void *param)
#endif
-ADDRESS_MAP_START(mw8080bw_state::invad2ct_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
-
- AM_RANGE(0x01, 0x01) AM_WRITE(invad2ct_audio_3_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(invad2ct_audio_1_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(invad2ct_audio_2_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(invad2ct_audio_4_w)
-ADDRESS_MAP_END
+void mw8080bw_state::invad2ct_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r));
+
+ map(0x01, 0x01).w(this, FUNC(mw8080bw_state::invad2ct_audio_3_w));
+ map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w));
+ map(0x03, 0x03).w(this, FUNC(mw8080bw_state::invad2ct_audio_1_w));
+ map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w));
+ map(0x05, 0x05).w(this, FUNC(mw8080bw_state::invad2ct_audio_2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).w(this, FUNC(mw8080bw_state::invad2ct_audio_4_w));
+}
static INPUT_PORTS_START( invad2ct )
diff --git a/src/mame/drivers/mwarr.cpp b/src/mame/drivers/mwarr.cpp
index 2fe9a3aca5e..b67bac5ea37 100644
--- a/src/mame/drivers/mwarr.cpp
+++ b/src/mame/drivers/mwarr.cpp
@@ -212,35 +212,37 @@ WRITE16_MEMBER(mwarr_state::mwarr_brightness_w)
*
*************************************/
-ADDRESS_MAP_START(mwarr_state::mwarr_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(mlow_videoram_w) AM_SHARE("mlow_videoram")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(mhigh_videoram_w) AM_SHARE("mhigh_videoram")
- AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x103000, 0x1033ff) AM_RAM AM_SHARE("bg_scrollram")
- AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram")
- AM_RANGE(0x103800, 0x103bff) AM_RAM AM_SHARE("mhigh_scrollram")
- AM_RANGE(0x103c00, 0x103fff) AM_RAM AM_SHARE("vidattrram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x108000, 0x108fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("mwarr_ram")
- AM_RANGE(0x110000, 0x110001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x110002, 0x110003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x110004, 0x110005) AM_READ_PORT("DSW")
- AM_RANGE(0x110010, 0x110011) AM_WRITE(oki1_bank_w)
- AM_RANGE(0x110014, 0x110015) AM_WRITE(mwarr_brightness_w)
- AM_RANGE(0x110016, 0x110017) AM_WRITE(sprites_commands_w)
- AM_RANGE(0x180000, 0x180001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x190000, 0x190001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mwarr_state::oki2_map)
+void mwarr_state::mwarr_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x1007ff).ram().w(this, FUNC(mwarr_state::bg_videoram_w)).share("bg_videoram");
+ map(0x100800, 0x100fff).ram().w(this, FUNC(mwarr_state::mlow_videoram_w)).share("mlow_videoram");
+ map(0x101000, 0x1017ff).ram().w(this, FUNC(mwarr_state::mhigh_videoram_w)).share("mhigh_videoram");
+ map(0x101800, 0x1027ff).ram().w(this, FUNC(mwarr_state::tx_videoram_w)).share("tx_videoram");
+ map(0x103000, 0x1033ff).ram().share("bg_scrollram");
+ map(0x103400, 0x1037ff).ram().share("mlow_scrollram");
+ map(0x103800, 0x103bff).ram().share("mhigh_scrollram");
+ map(0x103c00, 0x103fff).ram().share("vidattrram");
+ map(0x104000, 0x104fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x108000, 0x108fff).ram().share("spriteram");
+ map(0x110000, 0x11ffff).ram().share("mwarr_ram");
+ map(0x110000, 0x110001).portr("P1_P2");
+ map(0x110002, 0x110003).portr("SYSTEM");
+ map(0x110004, 0x110005).portr("DSW");
+ map(0x110010, 0x110011).w(this, FUNC(mwarr_state::oki1_bank_w));
+ map(0x110014, 0x110015).w(this, FUNC(mwarr_state::mwarr_brightness_w));
+ map(0x110016, 0x110017).w(this, FUNC(mwarr_state::sprites_commands_w));
+ map(0x180001, 0x180001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x190001, 0x190001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void mwarr_state::oki2_map(address_map &map)
+{
/* $00000-$20000 stays the same in all sound banks, */
/* the second half of the bank is what gets switched */
- AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("oki2", 0)
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+ map(0x00000, 0x1ffff).rom().region("oki2", 0);
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
/*************************************
diff --git a/src/mame/drivers/mwsub.cpp b/src/mame/drivers/mwsub.cpp
index c031a68ff05..f8b0dd0e88a 100644
--- a/src/mame/drivers/mwsub.cpp
+++ b/src/mame/drivers/mwsub.cpp
@@ -146,22 +146,24 @@ WRITE8_MEMBER(submar_state::submar_irq_clear_w)
}
-ADDRESS_MAP_START(submar_state::submar_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x207f) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(submar_state::submar_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(submar_sensor0_r, submar_motor_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(submar_sensor1_r, submar_lamp_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(submar_solenoid_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(submar_sound_w)
- AM_RANGE(0x04, 0x05) AM_WRITE(submar_led_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(submar_irq_clear_w)
-ADDRESS_MAP_END
+void submar_state::submar_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x207f).ram();
+}
+
+void submar_state::submar_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(submar_state::submar_sensor0_r), FUNC(submar_state::submar_motor_w));
+ map(0x01, 0x01).rw(this, FUNC(submar_state::submar_sensor1_r), FUNC(submar_state::submar_lamp_w));
+ map(0x02, 0x02).w(this, FUNC(submar_state::submar_solenoid_w));
+ map(0x03, 0x03).portr("DSW").w(this, FUNC(submar_state::submar_sound_w));
+ map(0x04, 0x05).w(this, FUNC(submar_state::submar_led_w));
+ map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x07, 0x07).w(this, FUNC(submar_state::submar_irq_clear_w));
+}
diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp
index 5098a0d5c4c..c0622d679ff 100644
--- a/src/mame/drivers/mx2178.cpp
+++ b/src/mame/drivers/mx2178.cpp
@@ -56,21 +56,23 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(mx2178_state::mx2178_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mx2178_state::mx2178_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("acia1", acia6850_device, read, write)
- AM_RANGE(0xa0, 0xa1) AM_DEVREADWRITE("acia2", acia6850_device, read, write)
-ADDRESS_MAP_END
+void mx2178_state::mx2178_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom().region("roms", 0);
+ map(0x2000, 0x27ff).ram().share("videoram");
+ map(0x6000, 0x6fff).ram();
+ map(0xe000, 0xe7ff).ram();
+}
+
+void mx2178_state::mx2178_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x01, 0x01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x80, 0x81).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xa0, 0xa1).rw("acia2", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+}
/* Input ports */
diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp
index d36f5bb6d06..d7d2081f875 100644
--- a/src/mame/drivers/myb3k.cpp
+++ b/src/mame/drivers/myb3k.cpp
@@ -563,43 +563,45 @@ WRITE8_MEMBER( myb3k_state::myb3k_video_mode_w )
* OFF ON - ?
* ON ON - ?
**********************************************************/
-ADDRESS_MAP_START(myb3k_state::myb3k_map)
- ADDRESS_MAP_UNMAP_HIGH
+void myb3k_state::myb3k_map(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x00000,0x3ffff) AM_RAM // It's either 128Kb or 256Kb RAM installed by machine_start()
- AM_RANGE(0x40000,0x7ffff) AM_NOP
- AM_RANGE(0x80000,0xcffff) AM_NOP // Expansion Unit connected through an ISA8 cable
- AM_RANGE(0xd0000,0xeffff) AM_RAM AM_SHARE("vram") // Area 6, physical at 30000-3FFFF (128Kb RAM) or 10000-1FFFF (256KB RAM)
- AM_RANGE(0xf0000,0xfffff) AM_ROM AM_REGION("ipl", 0) // Area 7, 8 x 8Kb
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(myb3k_state::myb3k_io)
- ADDRESS_MAP_UNMAP_LOW
+ map(0x40000, 0x7ffff).noprw();
+ map(0x80000, 0xcffff).noprw(); // Expansion Unit connected through an ISA8 cable
+ map(0xd0000, 0xeffff).ram().share("vram"); // Area 6, physical at 30000-3FFFF (128Kb RAM) or 10000-1FFFF (256KB RAM)
+ map(0xf0000, 0xfffff).rom().region("ipl", 0); // Area 7, 8 x 8Kb
+}
+
+void myb3k_state::myb3k_io(address_map &map)
+{
+ map.unmap_value_low();
/* Main Unit 0-0x7ff */
// 0-3 8255A PPI parallel port
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write)
+ map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
// Discrete latches
- AM_RANGE(0x04, 0x04) AM_READ(myb3k_kbd_r)
- AM_RANGE(0x04, 0x04) AM_WRITE(myb3k_video_mode_w) // b0=40CH, b1=80CH, b2=16 raster
- AM_RANGE(0x05, 0x05) AM_READ(myb3k_io_status_r) // printer connector bits: b3=fault b2=paper out b1 or b0=busy
- AM_RANGE(0x05, 0x05) AM_WRITE(dma_segment_w) // b0-b3=addr, b6=A b7=B
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2")
+ map(0x04, 0x04).r(this, FUNC(myb3k_state::myb3k_kbd_r));
+ map(0x04, 0x04).w(this, FUNC(myb3k_state::myb3k_video_mode_w)); // b0=40CH, b1=80CH, b2=16 raster
+ map(0x05, 0x05).r(this, FUNC(myb3k_state::myb3k_io_status_r)); // printer connector bits: b3=fault b2=paper out b1 or b0=busy
+ map(0x05, 0x05).w(this, FUNC(myb3k_state::dma_segment_w)); // b0-b3=addr, b6=A b7=B
+ map(0x06, 0x06).portr("DSW2");
// 8-9 8259A interrupt controller
- AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("pic", pic8259_device, read, write)
+ map(0x08, 0x09).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
// c-f 8253 PIT timer
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pit", pit8253_device, read, write)
+ map(0x0c, 0x0f).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
// 10-18 8257 DMA
- AM_RANGE(0x10, 0x18) AM_DEVREADWRITE("dma", i8257_device, read, write)
+ map(0x10, 0x18).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write));
// 1c-1d HD46505S CRTC
- AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("crtc", h46505_device, status_r, address_w)
- AM_RANGE(0x1d, 0x1d) AM_DEVREADWRITE("crtc", h46505_device, register_r, register_w)
+ map(0x1c, 0x1c).rw(m_crtc, FUNC(h46505_device::status_r), FUNC(h46505_device::address_w));
+ map(0x1d, 0x1d).rw(m_crtc, FUNC(h46505_device::register_r), FUNC(h46505_device::register_w));
/* Expansion Unit 0x800 - 0xfff */
-ADDRESS_MAP_END
+}
/* Input ports - from Step/One service manual */
static INPUT_PORTS_START( myb3k )
diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp
index 2b4c687bcd5..9aaad3ce800 100644
--- a/src/mame/drivers/mycom.cpp
+++ b/src/mame/drivers/mycom.cpp
@@ -216,24 +216,26 @@ WRITE8_MEMBER( mycom_state::vram_data_w )
m_p_videoram[m_i_videoram] = data;
}
-ADDRESS_MAP_START(mycom_state::mycom_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
- AM_RANGE(0x1000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_READWRITE(mycom_upper_r,mycom_upper_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mycom_state::mycom_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(mycom_00_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(vram_data_r,vram_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1771_device, read, write)
-ADDRESS_MAP_END
+void mycom_state::mycom_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("boot");
+ map(0x1000, 0xbfff).ram();
+ map(0xc000, 0xffff).rw(this, FUNC(mycom_state::mycom_upper_r), FUNC(mycom_state::mycom_upper_w));
+}
+
+void mycom_state::mycom_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(mycom_state::mycom_00_w));
+ map(0x01, 0x01).rw(this, FUNC(mycom_state::vram_data_r), FUNC(mycom_state::vram_data_w));
+ map(0x02, 0x02).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x03, 0x03).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x04, 0x07).rw(m_ppi0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw(m_ppi1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0c, 0x0f).rw(m_ppi2, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x10, 0x13).rw(m_fdc, FUNC(fd1771_device::read), FUNC(fd1771_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( mycom )
diff --git a/src/mame/drivers/mystston.cpp b/src/mame/drivers/mystston.cpp
index 7a9ddbc575b..0c641e2cef8 100644
--- a/src/mame/drivers/mystston.cpp
+++ b/src/mame/drivers/mystston.cpp
@@ -101,21 +101,22 @@ WRITE8_MEMBER(mystston_state::mystston_ay8910_select_w)
*
*************************************/
-ADDRESS_MAP_START(mystston_state::main_map)
- AM_RANGE(0x0000, 0x077f) AM_RAM
- AM_RANGE(0x0780, 0x07df) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x07e0, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("fg_videoram")
- AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("bg_videoram")
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x1f8f) AM_READ_PORT("IN0") AM_WRITE(mystston_video_control_w) AM_SHARE("video_control")
- AM_RANGE(0x2010, 0x2010) AM_MIRROR(0x1f8f) AM_READ_PORT("IN1") AM_WRITE(irq_clear_w)
- AM_RANGE(0x2020, 0x2020) AM_MIRROR(0x1f8f) AM_READ_PORT("DSW0") AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x2030, 0x2030) AM_MIRROR(0x1f8f) AM_READ_PORT("DSW1") AM_WRITEONLY AM_SHARE("ay8910_data")
- AM_RANGE(0x2040, 0x2040) AM_MIRROR(0x1f8f) AM_READNOP AM_WRITE(mystston_ay8910_select_w) AM_SHARE("ay8910_select")
- AM_RANGE(0x2050, 0x2050) AM_MIRROR(0x1f8f) AM_NOP
- AM_RANGE(0x2060, 0x207f) AM_MIRROR(0x1f80) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void mystston_state::main_map(address_map &map)
+{
+ map(0x0000, 0x077f).ram();
+ map(0x0780, 0x07df).ram().share("spriteram");
+ map(0x07e0, 0x0fff).ram();
+ map(0x1000, 0x17ff).ram().share("fg_videoram");
+ map(0x1800, 0x1fff).ram().share("bg_videoram");
+ map(0x2000, 0x2000).mirror(0x1f8f).portr("IN0").w(this, FUNC(mystston_state::mystston_video_control_w)).share("video_control");
+ map(0x2010, 0x2010).mirror(0x1f8f).portr("IN1").w(this, FUNC(mystston_state::irq_clear_w));
+ map(0x2020, 0x2020).mirror(0x1f8f).portr("DSW0").writeonly().share("scroll");
+ map(0x2030, 0x2030).mirror(0x1f8f).portr("DSW1").writeonly().share("ay8910_data");
+ map(0x2040, 0x2040).mirror(0x1f8f).nopr().w(this, FUNC(mystston_state::mystston_ay8910_select_w)).share("ay8910_select");
+ map(0x2050, 0x2050).mirror(0x1f8f).noprw();
+ map(0x2060, 0x207f).mirror(0x1f80).ram().share("paletteram");
+ map(0x4000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp
index 86c33ba5f42..0bebfd6c7dd 100644
--- a/src/mame/drivers/mystwarr.cpp
+++ b/src/mame/drivers/mystwarr.cpp
@@ -292,94 +292,97 @@ WRITE16_MEMBER(mystwarr_state::k053247_scattered_word_w)
/* 68000 memory handlers */
/* Mystic Warriors */
-ADDRESS_MAP_START(mystwarr_state::mystwarr_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x480000, 0x4800ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x482000, 0x48200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x482010, 0x48201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x484000, 0x484007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x48a000, 0x48a01f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x48c000, 0x48c03f) AM_DEVWRITE("k056832", k056832_device,word_w)
- AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w)
- AM_RANGE(0x492000, 0x492001) AM_NOP // watchdog
- AM_RANGE(0x494000, 0x494001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x494002, 0x494003) AM_READ_PORT("P3_P4")
- AM_RANGE(0x496000, 0x496001) AM_READ_PORT("IN0")
- AM_RANGE(0x496002, 0x496003) AM_READ(eeprom_r)
- AM_RANGE(0x498000, 0x49801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x49c000, 0x49c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w) // VSCCS (custom)
- AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
- AM_RANGE(0x602000, 0x603fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential)
- AM_RANGE(0x680000, 0x683fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void mystwarr_state::mystwarr_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program
+ map(0x200000, 0x20ffff).ram().share("gx_workram");
+ map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram");
+ map(0x480000, 0x4800ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x482000, 0x48200f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x482010, 0x48201f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x484000, 0x484007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x48a000, 0x48a01f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x48c000, 0x48c03f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x490000, 0x490001).w(this, FUNC(mystwarr_state::mweeprom_w));
+ map(0x492000, 0x492001).noprw(); // watchdog
+ map(0x494000, 0x494001).portr("P1_P2");
+ map(0x494002, 0x494003).portr("P3_P4");
+ map(0x496000, 0x496001).portr("IN0");
+ map(0x496002, 0x496003).r(this, FUNC(mystwarr_state::eeprom_r));
+ map(0x498000, 0x49801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x49a000, 0x49a001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x49c000, 0x49c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x49e000, 0x49e007).w(this, FUNC(mystwarr_state::irq_ack_w)); // VSCCS (custom)
+ map(0x600000, 0x601fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x602000, 0x603fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read(essential)
+ map(0x680000, 0x683fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
/* Metamorphic Force */
-ADDRESS_MAP_START(mystwarr_state::metamrph_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE("k055673", k055673_device,k053247_word_r,k053247_word_w)
- AM_RANGE(0x211000, 0x21ffff) AM_RAM
- AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x24c000, 0x24ffff) AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
- AM_RANGE(0x250000, 0x25000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
- AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w)
- AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w)
- AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0")
- AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r)
- AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here
- AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
- AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x320000, 0x321fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
- AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void mystwarr_state::metamrph_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program
+ map(0x200000, 0x20ffff).ram().share("gx_workram");
+ map(0x210000, 0x210fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w));
+ map(0x211000, 0x21ffff).ram();
+ map(0x240000, 0x240007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x244000, 0x24400f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x244010, 0x24401f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x24c000, 0x24ffff).rw("k053250_1", FUNC(k053250_device::ram_r), FUNC(k053250_device::ram_w));
+ map(0x250000, 0x25000f).rw("k053250_1", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w));
+ map(0x254000, 0x25401f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x258000, 0x2580ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x260000, 0x26001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x264000, 0x264001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x268000, 0x26801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x26c000, 0x26c007).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x270000, 0x27003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x274000, 0x274001).portr("P1_P3");
+ map(0x274002, 0x274003).portr("P2_P4");
+ map(0x278000, 0x278001).portr("IN0");
+ map(0x278002, 0x278003).r(this, FUNC(mystwarr_state::eeprom_r));
+ map(0x27c000, 0x27c001).nopr(); // watchdog lives here
+ map(0x27c000, 0x27c001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x300000, 0x301fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x302000, 0x303fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential)
+ map(0x310000, 0x311fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x320000, 0x321fff).r("k053250_1", FUNC(k053250_device::rom_r));
+ map(0x330000, 0x331fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
/* Violent Storm */
-ADDRESS_MAP_START(mystwarr_state::viostorm_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r,k053247_word_w)
- AM_RANGE(0x211000, 0x21ffff) AM_RAM
- AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x24c000, 0x24ffff) AM_RAM // K053250 ram
- AM_RANGE(0x250000, 0x25000f) AM_RAM // K053250 reg
- AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w)
- AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w)
- AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w)
- AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3")
- AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4")
- AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0")
- AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r)
- AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here
- AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
- AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential)
- AM_RANGE(0x304000, 0x3041ff) AM_RAM
- AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void mystwarr_state::viostorm_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program
+ map(0x200000, 0x20ffff).ram().share("gx_workram");
+ map(0x210000, 0x210fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w));
+ map(0x211000, 0x21ffff).ram();
+ map(0x240000, 0x240007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x244000, 0x24400f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x244010, 0x24401f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x24c000, 0x24ffff).ram(); // K053250 ram
+ map(0x250000, 0x25000f).ram(); // K053250 reg
+ map(0x254000, 0x25401f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x258000, 0x2580ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x25c000, 0x25c03f).rw(this, FUNC(mystwarr_state::K055550_word_r), FUNC(mystwarr_state::K055550_word_w));
+ map(0x260000, 0x26001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x264000, 0x264001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x268000, 0x26801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x26c000, 0x26c007).w(m_k056832, FUNC(k056832_device::b_word_w));
+ map(0x270000, 0x27003f).w(m_k056832, FUNC(k056832_device::word_w));
+ map(0x274000, 0x274001).portr("P1_P3");
+ map(0x274002, 0x274003).portr("P2_P4");
+ map(0x278000, 0x278001).portr("IN0");
+ map(0x278002, 0x278003).r(this, FUNC(mystwarr_state::eeprom_r));
+ map(0x27c000, 0x27c001).nopr(); // watchdog lives here
+ map(0x27c000, 0x27c001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x300000, 0x301fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x302000, 0x303fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read(essential)
+ map(0x304000, 0x3041ff).ram();
+ map(0x310000, 0x311fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x330000, 0x331fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
// Martial Champion specific interfaces
READ16_MEMBER(mystwarr_state::k053247_martchmp_word_r)
@@ -444,102 +447,105 @@ WRITE16_MEMBER(mystwarr_state::mceeprom_w)
}
/* Martial Champion */
-ADDRESS_MAP_START(mystwarr_state::martchmp_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("gx_workram") // work RAM
- AM_RANGE(0x300000, 0x3fffff) AM_ROM // data ROM
- AM_RANGE(0x400000, 0x4000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2
- AM_RANGE(0x402000, 0x40200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // sprite ROM readback
- AM_RANGE(0x402010, 0x40201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) // OBJSET2
- AM_RANGE(0x404000, 0x404007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // OBJSET1
- AM_RANGE(0x40a000, 0x40a01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC
- AM_RANGE(0x40c000, 0x40c03f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET
- AM_RANGE(0x40e000, 0x40e03f) AM_WRITE(K053990_martchmp_word_w) // protection
- AM_RANGE(0x410000, 0x410001) AM_WRITE(mceeprom_w)
- AM_RANGE(0x412000, 0x412001) AM_READWRITE(mccontrol_r,mccontrol_w)
- AM_RANGE(0x414000, 0x414001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x414002, 0x414003) AM_READ_PORT("P3_P4")
- AM_RANGE(0x416000, 0x416001) AM_READ_PORT("IN0")
- AM_RANGE(0x416002, 0x416003) AM_READ(eeprom_r) // eeprom read
- AM_RANGE(0x418000, 0x41801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x41c000, 0x41c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU
- AM_RANGE(0x41e000, 0x41e007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
- AM_RANGE(0x480000, 0x483fff) AM_READWRITE(k053247_martchmp_word_r,k053247_martchmp_word_w) AM_SHARE("spriteram") // sprite RAM
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette RAM
- AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
- AM_RANGE(0x682000, 0x683fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) // tile ROM readback
-ADDRESS_MAP_END
+void mystwarr_state::martchmp_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // main program
+ map(0x100000, 0x10ffff).ram().share("gx_workram"); // work RAM
+ map(0x300000, 0x3fffff).rom(); // data ROM
+ map(0x400000, 0x4000ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); // PCU2
+ map(0x402000, 0x40200f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // sprite ROM readback
+ map(0x402010, 0x40201f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); // OBJSET2
+ map(0x404000, 0x404007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // OBJSET1
+ map(0x40a000, 0x40a01f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC
+ map(0x40c000, 0x40c03f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET
+ map(0x40e000, 0x40e03f).w(this, FUNC(mystwarr_state::K053990_martchmp_word_w)); // protection
+ map(0x410000, 0x410001).w(this, FUNC(mystwarr_state::mceeprom_w));
+ map(0x412000, 0x412001).rw(this, FUNC(mystwarr_state::mccontrol_r), FUNC(mystwarr_state::mccontrol_w));
+ map(0x414000, 0x414001).portr("P1_P2");
+ map(0x414002, 0x414003).portr("P3_P4");
+ map(0x416000, 0x416001).portr("IN0");
+ map(0x416002, 0x416003).r(this, FUNC(mystwarr_state::eeprom_r)); // eeprom read
+ map(0x418000, 0x41801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x41a000, 0x41a001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x41c000, 0x41c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU
+ map(0x41e000, 0x41e007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x480000, 0x483fff).rw(this, FUNC(mystwarr_state::k053247_martchmp_word_r), FUNC(mystwarr_state::k053247_martchmp_word_w)).share("spriteram"); // sprite RAM
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette RAM
+ map(0x680000, 0x681fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM
+ map(0x682000, 0x683fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential)
+ map(0x700000, 0x703fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); // tile ROM readback
+}
/* Ultimate Battler Dadandarn */
-ADDRESS_MAP_START(mystwarr_state::dadandrn_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program and data ROM
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
- AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x440000, 0x443fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16")
- AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16")
- AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET
- AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
- AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
- AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00)
- AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch
- AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x680000, 0x68003f) AM_READWRITE(K055550_word_r,K055550_word_w)
- AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
- AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x800000, 0x87ffff) AM_READ(ddd_053936_tilerom_0_r) // 256k tilemap readback
- AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback
- AM_RANGE(0xc00000, 0xdfffff) AM_READ(ddd_053936_tilerom_2_r) // tile character readback
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void mystwarr_state::dadandrn_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // main program and data ROM
+ map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram");
+ map(0x410000, 0x411fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM
+ map(0x412000, 0x413fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential)
+ map(0x420000, 0x421fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x430000, 0x430007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x440000, 0x443fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x450000, 0x45000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x450010, 0x45001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x460000, 0x46001f).writeonly().share("k053936_0_ct16");
+ map(0x470000, 0x470fff).ram().share("k053936_0_li16");
+ map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET
+ map(0x482000, 0x482007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x484000, 0x484003).w(this, FUNC(mystwarr_state::ddd_053936_clip_w));
+ map(0x486000, 0x48601f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x488000, 0x4880ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x48a000, 0x48a01f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00);
+ map(0x48c000, 0x48c01f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x48e000, 0x48e001).portr("IN0_P1"); // bit 3 (0x8) is test switch
+ map(0x48e020, 0x48e021).r(this, FUNC(mystwarr_state::dddeeprom_r));
+ map(0x600000, 0x60ffff).ram().share("gx_workram");
+ map(0x680000, 0x68003f).rw(this, FUNC(mystwarr_state::K055550_word_r), FUNC(mystwarr_state::K055550_word_w));
+ map(0x6a0000, 0x6a0001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x6c0000, 0x6c0001).w(this, FUNC(mystwarr_state::ddd_053936_enable_w));
+ map(0x6e0000, 0x6e0001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x800000, 0x87ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_0_r)); // 256k tilemap readback
+ map(0xa00000, 0xa7ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_1_r)); // 128k tilemap readback
+ map(0xc00000, 0xdfffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_2_r)); // tile character readback
+ map(0xe00000, 0xe00001).nopw(); // watchdog
+}
/* Gaiapolis */
// a00000 = the 128k tilemap
// 800000 = the 256k tilemap
// c00000 = 936 tiles (7fffff window)
-ADDRESS_MAP_START(mystwarr_state::gaiapols_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program
- AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
- AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read / write (essential)
- AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
- AM_RANGE(0x440000, 0x441fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r)
- AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w)
- AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16")
- AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16")
- AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET
- AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
- AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
- AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
- AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00)
- AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w)
- AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch
- AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gx_workram")
- AM_RANGE(0x660000, 0x6600ff) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w)
- AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
- AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
- AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x800000, 0x87ffff) AM_READ(gai_053936_tilerom_0_r) // 256k tilemap readback
- AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback
- AM_RANGE(0xc00000, 0xdfffff) AM_READ(gai_053936_tilerom_2_r) // tile character readback
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void mystwarr_state::gaiapols_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom(); // main program
+ map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram");
+ map(0x410000, 0x411fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM
+ map(0x412000, 0x413fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read / write (essential)
+ map(0x420000, 0x421fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x430000, 0x430007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
+ map(0x440000, 0x441fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r));
+ map(0x450000, 0x45000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
+ map(0x450010, 0x45001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x460000, 0x46001f).writeonly().share("k053936_0_ct16");
+ map(0x470000, 0x470fff).ram().share("k053936_0_li16");
+ map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET
+ map(0x482000, 0x482007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS
+ map(0x484000, 0x484003).w(this, FUNC(mystwarr_state::ddd_053936_clip_w));
+ map(0x486000, 0x48601f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff);
+ map(0x488000, 0x4880ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x48a000, 0x48a01f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00);
+ map(0x48c000, 0x48c01f).w(m_k054338, FUNC(k054338_device::word_w));
+ map(0x48e000, 0x48e001).portr("IN0_P1"); // bit 3 (0x8) is test switch
+ map(0x48e020, 0x48e021).r(this, FUNC(mystwarr_state::dddeeprom_r));
+ map(0x600000, 0x60ffff).ram().share("gx_workram");
+ map(0x660000, 0x6600ff).rw("k054000", FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w));
+ map(0x6a0000, 0x6a0001).w(this, FUNC(mystwarr_state::mmeeprom_w));
+ map(0x6c0000, 0x6c0001).w(this, FUNC(mystwarr_state::ddd_053936_enable_w));
+ map(0x6e0000, 0x6e0001).w(this, FUNC(mystwarr_state::sound_irq_w));
+ map(0x800000, 0x87ffff).r(this, FUNC(mystwarr_state::gai_053936_tilerom_0_r)); // 256k tilemap readback
+ map(0xa00000, 0xa7ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_1_r)); // 128k tilemap readback
+ map(0xc00000, 0xdfffff).r(this, FUNC(mystwarr_state::gai_053936_tilerom_2_r)); // tile character readback
+ map(0xe00000, 0xe00001).nopw(); // watchdog
+}
/**********************************************************************************/
@@ -560,39 +566,42 @@ WRITE8_MEMBER(mystwarr_state::sound_ctrl_w)
quite similar to xexex/gijoe/asterix's sound.
*/
-ADDRESS_MAP_START(mystwarr_state::mystwarr_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
- AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539_1", k054539_device, read, write)
- AM_RANGE(0xe230, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write)
- AM_RANGE(0xe630, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w)
- AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mystwarr_state::martchmp_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
- AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xe230, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe62f) AM_NOP
- AM_RANGE(0xe630, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w)
- AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(mystwarr_state::mystwarr_k054539_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("k054539", 0)
-ADDRESS_MAP_END
+void mystwarr_state::mystwarr_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(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(this, 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));
+ map(0xf800, 0xf800).w(this, FUNC(mystwarr_state::sound_ctrl_w));
+ map(0xfff0, 0xfff3).nopw(); // unknown write
+}
+
+
+void mystwarr_state::mystwarr_k054539_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("k054539", 0);
+}
WRITE_LINE_MEMBER(mystwarr_state::k054539_nmi_gen)
diff --git a/src/mame/drivers/myvision.cpp b/src/mame/drivers/myvision.cpp
index e5db2e67973..2e1a795dfa3 100644
--- a/src/mame/drivers/myvision.cpp
+++ b/src/mame/drivers/myvision.cpp
@@ -71,22 +71,24 @@ private:
};
-ADDRESS_MAP_START(myvision_state::myvision_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void myvision_state::myvision_mem(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x0000, 0x5fff) // mapped by the cartslot
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9918", tms9918a_device, vram_read, vram_write)
- AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9918", tms9918a_device, register_read, register_write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(myvision_state::myvision_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ay8910", ay8910_device, data_r)
-ADDRESS_MAP_END
+ 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));
+}
+
+
+void myvision_state::myvision_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0x01, 0x01).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0x02, 0x02).r("ay8910", FUNC(ay8910_device::data_r));
+}
/* Input ports */
diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp
index 0b4bf8596a8..c198afcf050 100644
--- a/src/mame/drivers/mz2000.cpp
+++ b/src/mame/drivers/mz2000.cpp
@@ -404,32 +404,35 @@ WRITE8_MEMBER(mz2000_state::mz2000_gvram_mask_w)
m_gvram_mask = data;
}
-ADDRESS_MAP_START(mz2000_state::mz2000_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(mz2000_mem_r,mz2000_mem_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz2000_state::mz80b_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xd8, 0xdb) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0xdc, 0xdc) AM_WRITE(floppy_select_w)
- AM_RANGE(0xdd, 0xdd) AM_WRITE(floppy_side_w)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
- AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt)
- AM_RANGE(0xf0, 0xf3) AM_WRITE(timer_w)
+void mz2000_state::mz2000_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(mz2000_state::mz2000_mem_r), FUNC(mz2000_state::mz2000_mem_w));
+}
+
+void mz2000_state::mz80b_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xd8, 0xdb).rw(this, FUNC(mz2000_state::fdc_r), FUNC(mz2000_state::fdc_w));
+ map(0xdc, 0xdc).w(this, FUNC(mz2000_state::floppy_select_w));
+ map(0xdd, 0xdd).w(this, FUNC(mz2000_state::floppy_side_w));
+ map(0xe0, 0xe3).rw("i8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe4, 0xe7).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xe8, 0xeb).rw("z80pio_1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0xf0, 0xf3).w(this, FUNC(mz2000_state::timer_w));
// AM_RANGE(0xf4, 0xf4) AM_WRITE(vram_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz2000_state::mz2000_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_IMPORT_FROM(mz80b_io)
- AM_RANGE(0xf5, 0xf5) AM_WRITE(mz2000_tvram_attr_w)
- AM_RANGE(0xf6, 0xf6) AM_WRITE(mz2000_gvram_mask_w)
- AM_RANGE(0xf7, 0xf7) AM_WRITE(mz2000_gvram_bank_w)
-ADDRESS_MAP_END
+}
+
+void mz2000_state::mz2000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ mz80b_io(map);
+ map(0xf5, 0xf5).w(this, FUNC(mz2000_state::mz2000_tvram_attr_w));
+ map(0xf6, 0xf6).w(this, FUNC(mz2000_state::mz2000_gvram_mask_w));
+ map(0xf7, 0xf7).w(this, FUNC(mz2000_state::mz2000_gvram_bank_w));
+}
/*
diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp
index ad8be4569d1..52b0065d4b9 100644
--- a/src/mame/drivers/mz2500.cpp
+++ b/src/mame/drivers/mz2500.cpp
@@ -1227,16 +1227,17 @@ WRITE8_MEMBER(mz2500_state::floppy_side_w)
}
-ADDRESS_MAP_START(mz2500_state::mz2500_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(bank0_r,bank0_w)
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(bank1_r,bank1_w)
- AM_RANGE(0x4000, 0x5fff) AM_READWRITE(bank2_r,bank2_w)
- AM_RANGE(0x6000, 0x7fff) AM_READWRITE(bank3_r,bank3_w)
- AM_RANGE(0x8000, 0x9fff) AM_READWRITE(bank4_r,bank4_w)
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(bank5_r,bank5_w)
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(bank6_r,bank6_w)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(bank7_r,bank7_w)
-ADDRESS_MAP_END
+void mz2500_state::mz2500_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(mz2500_state::bank0_r), FUNC(mz2500_state::bank0_w));
+ map(0x2000, 0x3fff).rw(this, FUNC(mz2500_state::bank1_r), FUNC(mz2500_state::bank1_w));
+ map(0x4000, 0x5fff).rw(this, FUNC(mz2500_state::bank2_r), FUNC(mz2500_state::bank2_w));
+ map(0x6000, 0x7fff).rw(this, FUNC(mz2500_state::bank3_r), FUNC(mz2500_state::bank3_w));
+ map(0x8000, 0x9fff).rw(this, FUNC(mz2500_state::bank4_r), FUNC(mz2500_state::bank4_w));
+ map(0xa000, 0xbfff).rw(this, FUNC(mz2500_state::bank5_r), FUNC(mz2500_state::bank5_w));
+ map(0xc000, 0xdfff).rw(this, FUNC(mz2500_state::bank6_r), FUNC(mz2500_state::bank6_w));
+ map(0xe000, 0xffff).rw(this, FUNC(mz2500_state::bank7_r), FUNC(mz2500_state::bank7_w));
+}
READ8_MEMBER(mz2500_state::mz2500_rom_r)
@@ -1511,46 +1512,47 @@ WRITE8_MEMBER(mz2500_state::mz2500_emm_data_w)
m_emm_ram[m_emm_offset] = data;
}
-ADDRESS_MAP_START(mz2500_state::mz2500_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void mz2500_state::mz2500_io(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x60, 0x63) AM_WRITE(w3100a_w)
// AM_RANGE(0x63, 0x63) AM_READ(w3100a_r)
// AM_RANGE(0x98, 0x99) ADPCM, unknown type, custom?
- AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("z80sio", z80sio_device, ba_cd_r, ba_cd_w)
+ map(0xa0, 0xa3).rw("z80sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
// AM_RANGE(0xa4, 0xa5) AM_READWRITE(sasi_r, sasi_w)
- AM_RANGE(0xa8, 0xa8) AM_WRITE(mz2500_rom_w)
- AM_RANGE(0xa9, 0xa9) AM_READ(mz2500_rom_r)
- AM_RANGE(0xac, 0xac) AM_WRITE(mz2500_emm_addr_w)
- AM_RANGE(0xad, 0xad) AM_READ(mz2500_emm_data_r) AM_WRITE(mz2500_emm_data_w)
- AM_RANGE(0xae, 0xae) AM_WRITE(palette4096_io_w)
+ map(0xa8, 0xa8).w(this, FUNC(mz2500_state::mz2500_rom_w));
+ map(0xa9, 0xa9).r(this, FUNC(mz2500_state::mz2500_rom_r));
+ map(0xac, 0xac).w(this, FUNC(mz2500_state::mz2500_emm_addr_w));
+ map(0xad, 0xad).r(this, FUNC(mz2500_state::mz2500_emm_data_r)).w(this, FUNC(mz2500_state::mz2500_emm_data_w));
+ map(0xae, 0xae).w(this, FUNC(mz2500_state::palette4096_io_w));
// AM_RANGE(0xb0, 0xb3) AM_READWRITE(sio_r,sio_w)
- AM_RANGE(0xb4, 0xb4) AM_READWRITE(mz2500_bank_addr_r,mz2500_bank_addr_w)
- AM_RANGE(0xb5, 0xb5) AM_READWRITE(mz2500_bank_data_r,mz2500_bank_data_w)
- AM_RANGE(0xb7, 0xb7) AM_WRITENOP
- AM_RANGE(0xb8, 0xb9) AM_READWRITE(mz2500_kanji_r,mz2500_kanji_w)
- AM_RANGE(0xbc, 0xbc) AM_READ(mz2500_bplane_latch_r) AM_WRITE(mz2500_cg_addr_w)
- AM_RANGE(0xbd, 0xbd) AM_READ(mz2500_rplane_latch_r) AM_WRITE(mz2500_cg_data_w)
- AM_RANGE(0xbe, 0xbe) AM_READ(mz2500_gplane_latch_r)
- AM_RANGE(0xbf, 0xbf) AM_READ(mz2500_iplane_latch_r)
- AM_RANGE(0xc6, 0xc6) AM_WRITE(mz2500_irq_sel_w)
- AM_RANGE(0xc7, 0xc7) AM_WRITE(mz2500_irq_data_w)
- AM_RANGE(0xc8, 0xc9) AM_DEVREADWRITE("ym", ym2203_device, read, write)
+ map(0xb4, 0xb4).rw(this, FUNC(mz2500_state::mz2500_bank_addr_r), FUNC(mz2500_state::mz2500_bank_addr_w));
+ map(0xb5, 0xb5).rw(this, FUNC(mz2500_state::mz2500_bank_data_r), FUNC(mz2500_state::mz2500_bank_data_w));
+ map(0xb7, 0xb7).nopw();
+ map(0xb8, 0xb9).rw(this, FUNC(mz2500_state::mz2500_kanji_r), FUNC(mz2500_state::mz2500_kanji_w));
+ map(0xbc, 0xbc).r(this, FUNC(mz2500_state::mz2500_bplane_latch_r)).w(this, FUNC(mz2500_state::mz2500_cg_addr_w));
+ map(0xbd, 0xbd).r(this, FUNC(mz2500_state::mz2500_rplane_latch_r)).w(this, FUNC(mz2500_state::mz2500_cg_data_w));
+ map(0xbe, 0xbe).r(this, FUNC(mz2500_state::mz2500_gplane_latch_r));
+ map(0xbf, 0xbf).r(this, FUNC(mz2500_state::mz2500_iplane_latch_r));
+ map(0xc6, 0xc6).w(this, FUNC(mz2500_state::mz2500_irq_sel_w));
+ map(0xc7, 0xc7).w(this, FUNC(mz2500_state::mz2500_irq_data_w));
+ map(0xc8, 0xc9).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
// AM_RANGE(0xca, 0xca) AM_READWRITE(voice_r,voice_w)
- AM_RANGE(0xcc, 0xcc) AM_READWRITE(rp5c15_8_r, rp5c15_8_w)
- AM_RANGE(0xce, 0xce) AM_WRITE(mz2500_dictionary_bank_w)
- AM_RANGE(0xcf, 0xcf) AM_WRITE(mz2500_kanji_bank_w)
- AM_RANGE(0xd8, 0xdb) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0xdc, 0xdc) AM_WRITE(floppy_select_w)
- AM_RANGE(0xdd, 0xdd) AM_WRITE(floppy_side_w)
- AM_RANGE(0xde, 0xde) AM_WRITENOP
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
- AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt)
- AM_RANGE(0xef, 0xef) AM_READWRITE(mz2500_joystick_r,mz2500_joystick_w)
- AM_RANGE(0xf0, 0xf3) AM_WRITE(timer_w)
- AM_RANGE(0xf4, 0xf7) AM_READ(mz2500_crtc_hvblank_r) AM_WRITE(mz2500_tv_crtc_w)
+ map(0xcc, 0xcc).rw(this, FUNC(mz2500_state::rp5c15_8_r), FUNC(mz2500_state::rp5c15_8_w));
+ map(0xce, 0xce).w(this, FUNC(mz2500_state::mz2500_dictionary_bank_w));
+ map(0xcf, 0xcf).w(this, FUNC(mz2500_state::mz2500_kanji_bank_w));
+ map(0xd8, 0xdb).rw(this, FUNC(mz2500_state::fdc_r), FUNC(mz2500_state::fdc_w));
+ map(0xdc, 0xdc).w(this, FUNC(mz2500_state::floppy_select_w));
+ map(0xdd, 0xdd).w(this, FUNC(mz2500_state::floppy_side_w));
+ map(0xde, 0xde).nopw();
+ map(0xe0, 0xe3).rw("i8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe4, 0xe7).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xe8, 0xeb).rw("z80pio_1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0xef, 0xef).rw(this, FUNC(mz2500_state::mz2500_joystick_r), FUNC(mz2500_state::mz2500_joystick_w));
+ map(0xf0, 0xf3).w(this, FUNC(mz2500_state::timer_w));
+ map(0xf4, 0xf7).r(this, FUNC(mz2500_state::mz2500_crtc_hvblank_r)).w(this, FUNC(mz2500_state::mz2500_tv_crtc_w));
// AM_RANGE(0xf8, 0xf9) AM_READWRITE(extrom_r,extrom_w)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( mz2500 )
diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp
index 86c6d304df8..7b958380d27 100644
--- a/src/mame/drivers/mz3500.cpp
+++ b/src/mame/drivers/mz3500.cpp
@@ -591,41 +591,45 @@ READ8_MEMBER(mz3500_state::mz3500_fdc_dma_r)
return m_fdc->dma_r();
}
-ADDRESS_MAP_START(mz3500_state::mz3500_master_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mz3500_master_mem_r,mz3500_master_mem_w)
-ADDRESS_MAP_END
+void mz3500_state::mz3500_master_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(mz3500_state::mz3500_master_mem_r), FUNC(mz3500_state::mz3500_master_mem_w));
+}
-ADDRESS_MAP_START(mz3500_state::mz3500_master_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void mz3500_state::mz3500_master_io(address_map &map)
+{
+ map.global_mask(0xff);
// ADDRESS_MAP_UNMAP_HIGH
// AM_RANGE(0xe4, 0xe7) SFD upd765
// AM_RANGE(0xe8, 0xeb) SFD I/O port and DMAC chip select
// AM_RANGE(0xec, 0xef) irq signal from slave to master CPU
- AM_RANGE(0xf4, 0xf5) AM_DEVICE("upd765a", upd765a_device, map) // MFD upd765
+ map(0xf4, 0xf5).m(m_fdc, FUNC(upd765a_device::map)); // MFD upd765
// AM_RANGE(0xf8, 0xfb) MFD I/O port
- AM_RANGE(0xf8, 0xf8) AM_READWRITE(mz3500_fdc_r,mz3500_fdc_w)
- AM_RANGE(0xf9, 0xf9) AM_READ(mz3500_fdc_dma_r)
- AM_RANGE(0xfc, 0xff) AM_READWRITE(mz3500_io_r,mz3500_io_w) // memory mapper
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz3500_state::mz3500_slave_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("ipl", 0)
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(mz3500_shared_ram_r, mz3500_shared_ram_w)
- AM_RANGE(0x4000, 0x5fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz3500_state::mz3500_slave_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
+ map(0xf8, 0xf8).rw(this, FUNC(mz3500_state::mz3500_fdc_r), FUNC(mz3500_state::mz3500_fdc_w));
+ map(0xf9, 0xf9).r(this, FUNC(mz3500_state::mz3500_fdc_dma_r));
+ map(0xfc, 0xff).rw(this, FUNC(mz3500_state::mz3500_io_r), FUNC(mz3500_state::mz3500_io_w)); // memory mapper
+}
+
+void mz3500_state::mz3500_slave_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("ipl", 0);
+ map(0x2000, 0x27ff).rw(this, FUNC(mz3500_state::mz3500_shared_ram_r), FUNC(mz3500_state::mz3500_shared_ram_w));
+ map(0x4000, 0x5fff).ram();
+}
+
+void mz3500_state::mz3500_slave_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
// AM_RANGE(0x00, 0x0f) f/f and irq to master CPU
// AM_RANGE(0x10, 0x1f) i8251
// AM_RANGE(0x20, 0x2f) pit8253
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("i8255", i8255_device, read, write)
- AM_RANGE(0x40, 0x40) AM_READ_PORT("DSW")
- AM_RANGE(0x50, 0x5f) AM_RAM_WRITE(mz3500_crtc_w)
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("upd7220_gfx", upd7220_device, read, write)
- AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("upd7220_chr", upd7220_device, read, write)
-ADDRESS_MAP_END
+ map(0x30, 0x33).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x40).portr("DSW");
+ map(0x50, 0x5f).ram().w(this, FUNC(mz3500_state::mz3500_crtc_w));
+ map(0x60, 0x61).rw(m_hgdc2, FUNC(upd7220_device::read), FUNC(upd7220_device::write));
+ map(0x70, 0x71).rw(m_hgdc1, FUNC(upd7220_device::read), FUNC(upd7220_device::write));
+}
WRITE8_MEMBER(mz3500_state::mz3500_pa_w)
{
@@ -793,14 +797,16 @@ void mz3500_state::machine_reset()
}
-ADDRESS_MAP_START(mz3500_state::upd7220_1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x00000, 0x00fff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void mz3500_state::upd7220_1_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x00000, 0x00fff).ram().share("video_ram");
+}
-ADDRESS_MAP_START(mz3500_state::upd7220_2_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM // AM_SHARE("video_ram_2")
-ADDRESS_MAP_END
+void mz3500_state::upd7220_2_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram(); // AM_SHARE("video_ram_2")
+}
static SLOT_INTERFACE_START( mz3500_floppies )
SLOT_INTERFACE( "525ssdd", FLOPPY_525_SSDD )
diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp
index a9c1c94fb39..8441cb4c3ba 100644
--- a/src/mame/drivers/mz6500.cpp
+++ b/src/mame/drivers/mz6500.cpp
@@ -80,26 +80,28 @@ WRITE8_MEMBER( mz6500_state::mz6500_vram_w )
m_video_ram[offset] |= data << mask;
}
-ADDRESS_MAP_START(mz6500_state::mz6500_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x9ffff) AM_RAM
+void mz6500_state::mz6500_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x9ffff).ram();
// AM_RANGE(0xa0000,0xbffff) kanji/dictionary ROM
- AM_RANGE(0xc0000,0xeffff) AM_READWRITE8(mz6500_vram_r,mz6500_vram_w,0xffff)
- AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+ map(0xc0000, 0xeffff).rw(this, FUNC(mz6500_state::mz6500_vram_r), FUNC(mz6500_state::mz6500_vram_w));
+ map(0xfc000, 0xfffff).rom().region("ipl", 0);
+}
-ADDRESS_MAP_START(mz6500_state::mz6500_io)
- ADDRESS_MAP_UNMAP_HIGH
+void mz6500_state::mz6500_io(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x0000, 0x000f) i8237 dma
// AM_RANGE(0x0010, 0x001f) i8255
- AM_RANGE(0x0020, 0x0021) AM_MIRROR(0xe) AM_DEVICE8("upd765", upd765a_device, map, 0xffff)
+ map(0x0020, 0x0021).mirror(0xe).m(m_fdc, FUNC(upd765a_device::map));
// AM_RANGE(0x0030, 0x003f) i8259 master
// AM_RANGE(0x0040, 0x004f) i8259 slave
// AM_RANGE(0x0050, 0x0050) segment byte for DMA
// AM_RANGE(0x0060, 0x0060) system port A
// AM_RANGE(0x0070, 0x0070) system port C
// AM_RANGE(0x00cd, 0x00cd) MZ-1R32
- AM_RANGE(0x0100, 0x0103) AM_MIRROR(0xc) AM_DEVREADWRITE8("upd7220", upd7220_device, read, write, 0x00ff)
+ map(0x0100, 0x0103).mirror(0xc).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask16(0x00ff);
// AM_RANGE(0x0110, 0x011f) video address / data registers (priority)
// AM_RANGE(0x0120, 0x012f) video registers
// AM_RANGE(0x0130, 0x013f) video register
@@ -111,7 +113,7 @@ ADDRESS_MAP_START(mz6500_state::mz6500_io)
// AM_RANGE(0x0240, 0x0240) z80ctc vector ack
// AM_RANGE(0x0250, 0x0250) z80sio vector ack
// AM_RANGE(0x0270, 0x0270) system port B
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( mz6500 )
@@ -136,9 +138,10 @@ static SLOT_INTERFACE_START( mz6500_floppies )
SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
SLOT_INTERFACE_END
-ADDRESS_MAP_START(mz6500_state::upd7220_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void mz6500_state::upd7220_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram().share("video_ram");
+}
MACHINE_CONFIG_START(mz6500_state::mz6500)
diff --git a/src/mame/drivers/mz700.cpp b/src/mame/drivers/mz700.cpp
index 6b3493873f3..73c8a16dcc4 100644
--- a/src/mame/drivers/mz700.cpp
+++ b/src/mame/drivers/mz700.cpp
@@ -112,81 +112,87 @@ TIMER_DEVICE_CALLBACK_MEMBER(mz_state::ne556_other_callback)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(mz_state::mz700_mem)
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x1000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bankd")
- AM_RANGE(0xe000, 0xffff) AM_DEVICE("banke", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz_state::mz700_banke)
+void mz_state::mz700_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0xcfff).ram();
+ map(0xd000, 0xdfff).bankrw("bankd");
+ map(0xe000, 0xffff).m(m_banke, FUNC(address_map_bank_device::amap8));
+}
+
+void mz_state::mz700_banke(address_map &map)
+{
// bank 0: ram (mz700_bank1)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
+ map(0x0000, 0x1fff).ram();
// bank 1: devices (mz700_bank3)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x2004, 0x2007) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x2008, 0x200b) AM_MIRROR(0x1ff0) AM_READWRITE(mz700_e008_r,mz700_e008_w)
- AM_RANGE(0x200c, 0x200f) AM_MIRROR(0x1ff0) AM_NOP
+ map(0x2000, 0x2003).mirror(0x1ff0).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x2004, 0x2007).mirror(0x1ff0).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x2008, 0x200b).mirror(0x1ff0).rw(this, FUNC(mz_state::mz700_e008_r), FUNC(mz_state::mz700_e008_w));
+ map(0x200c, 0x200f).mirror(0x1ff0).noprw();
// bank 2: switched out (mz700_bank5)
- AM_RANGE(0x4000, 0x5fff) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz_state::mz700_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mz700_bank_0_w)
- AM_RANGE(0xe1, 0xe1) AM_WRITE(mz700_bank_1_w)
- AM_RANGE(0xe2, 0xe2) AM_WRITE(mz700_bank_2_w)
- AM_RANGE(0xe3, 0xe3) AM_WRITE(mz700_bank_3_w)
- AM_RANGE(0xe4, 0xe4) AM_WRITE(mz700_bank_4_w)
- AM_RANGE(0xe5, 0xe5) AM_WRITE(mz700_bank_5_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(mz700_bank_6_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz_state::mz800_mem)
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0x2000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("banka")
- AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bankc")
- AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bankd")
- AM_RANGE(0xe000, 0xffff) AM_DEVICE("bankf", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz_state::mz800_bankf)
+ map(0x4000, 0x5fff).noprw();
+}
+
+void mz_state::mz700_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xe0, 0xe0).w(this, FUNC(mz_state::mz700_bank_0_w));
+ map(0xe1, 0xe1).w(this, FUNC(mz_state::mz700_bank_1_w));
+ map(0xe2, 0xe2).w(this, FUNC(mz_state::mz700_bank_2_w));
+ map(0xe3, 0xe3).w(this, FUNC(mz_state::mz700_bank_3_w));
+ map(0xe4, 0xe4).w(this, FUNC(mz_state::mz700_bank_4_w));
+ map(0xe5, 0xe5).w(this, FUNC(mz_state::mz700_bank_5_w));
+ map(0xe6, 0xe6).w(this, FUNC(mz_state::mz700_bank_6_w));
+}
+
+void mz_state::mz800_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x7fff).ram();
+ map(0x8000, 0xbfff).bankrw("banka");
+ map(0xc000, 0xcfff).bankrw("bankc");
+ map(0xd000, 0xdfff).bankrw("bankd");
+ map(0xe000, 0xffff).m(m_bankf, FUNC(address_map_bank_device::amap8));
+}
+
+void mz_state::mz800_bankf(address_map &map)
+{
// bank 0: ram (mz700_bank1)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
+ map(0x0000, 0x1fff).ram();
// bank 1: devices (mz700_bank3)
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x2004, 0x2007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0x2008, 0x200b) AM_READWRITE(mz700_e008_r,mz700_e008_w)
- AM_RANGE(0x200c, 0x200f) AM_NOP
- AM_RANGE(0x2010, 0x3fff) AM_ROM AM_REGION("monitor", 0x2010)
+ map(0x2000, 0x2003).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x2004, 0x2007).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x2008, 0x200b).rw(this, FUNC(mz_state::mz700_e008_r), FUNC(mz_state::mz700_e008_w));
+ map(0x200c, 0x200f).noprw();
+ map(0x2010, 0x3fff).rom().region("monitor", 0x2010);
// bank 2: switched out (mz700_bank5)
- AM_RANGE(0x4000, 0x5fff) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz_state::mz800_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xcc, 0xcc) AM_WRITE(mz800_write_format_w )
- AM_RANGE(0xcd, 0xcd) AM_WRITE(mz800_read_format_w )
- AM_RANGE(0xce, 0xce) AM_READWRITE(mz800_crtc_r, mz800_display_mode_w )
- AM_RANGE(0xcf, 0xcf) AM_WRITE(mz800_scroll_border_w )
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0xd4, 0xd7) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0xe0, 0xe0) AM_READWRITE(mz800_bank_0_r, mz800_bank_0_w)
- AM_RANGE(0xe1, 0xe1) AM_READWRITE(mz800_bank_1_r, mz700_bank_1_w)
- AM_RANGE(0xe2, 0xe2) AM_WRITE(mz700_bank_2_w)
- AM_RANGE(0xe3, 0xe3) AM_WRITE(mz700_bank_3_w)
- AM_RANGE(0xe4, 0xe4) AM_WRITE(mz700_bank_4_w)
- AM_RANGE(0xe5, 0xe5) AM_WRITE(mz700_bank_5_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(mz700_bank_6_w)
- AM_RANGE(0xea, 0xea) AM_READWRITE(mz800_ramdisk_r, mz800_ramdisk_w )
- AM_RANGE(0xeb, 0xeb) AM_WRITE(mz800_ramaddr_w )
- AM_RANGE(0xf0, 0xf0) AM_READ_PORT("atari_joy1") AM_WRITE(mz800_palette_w)
- AM_RANGE(0xf1, 0xf1) AM_READ_PORT("atari_joy2")
- AM_RANGE(0xf2, 0xf2) AM_DEVWRITE("sn76489n", sn76489_device, write)
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
-ADDRESS_MAP_END
+ map(0x4000, 0x5fff).noprw();
+}
+
+void mz_state::mz800_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xcc, 0xcc).w(this, FUNC(mz_state::mz800_write_format_w));
+ map(0xcd, 0xcd).w(this, FUNC(mz_state::mz800_read_format_w));
+ map(0xce, 0xce).rw(this, FUNC(mz_state::mz800_crtc_r), FUNC(mz_state::mz800_display_mode_w));
+ map(0xcf, 0xcf).w(this, FUNC(mz_state::mz800_scroll_border_w));
+ map(0xd0, 0xd3).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xd4, 0xd7).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xe0, 0xe0).rw(this, FUNC(mz_state::mz800_bank_0_r), FUNC(mz_state::mz800_bank_0_w));
+ map(0xe1, 0xe1).rw(this, FUNC(mz_state::mz800_bank_1_r), FUNC(mz_state::mz700_bank_1_w));
+ map(0xe2, 0xe2).w(this, FUNC(mz_state::mz700_bank_2_w));
+ map(0xe3, 0xe3).w(this, FUNC(mz_state::mz700_bank_3_w));
+ map(0xe4, 0xe4).w(this, FUNC(mz_state::mz700_bank_4_w));
+ map(0xe5, 0xe5).w(this, FUNC(mz_state::mz700_bank_5_w));
+ map(0xe6, 0xe6).w(this, FUNC(mz_state::mz700_bank_6_w));
+ map(0xea, 0xea).rw(this, FUNC(mz_state::mz800_ramdisk_r), FUNC(mz_state::mz800_ramdisk_w));
+ map(0xeb, 0xeb).w(this, FUNC(mz_state::mz800_ramaddr_w));
+ map(0xf0, 0xf0).portr("atari_joy1").w(this, FUNC(mz_state::mz800_palette_w));
+ map(0xf1, 0xf1).portr("atari_joy2");
+ map(0xf2, 0xf2).w("sn76489n", FUNC(sn76489_device::write));
+ map(0xfc, 0xff).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/mz80.cpp b/src/mame/drivers/mz80.cpp
index 5c5c9ea97a0..8eaa595c481 100644
--- a/src/mame/drivers/mz80.cpp
+++ b/src/mame/drivers/mz80.cpp
@@ -245,21 +245,23 @@ static INPUT_PORTS_START( mz80a )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
INPUT_PORTS_END
-ADDRESS_MAP_START(mz80_state::mz80k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0xcfff) AM_RAM AM_SHARE("p_ram") // 48 KB of RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram") // Video RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) /* PPIA 8255 */
- AM_RANGE(0xe004, 0xe007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) /* PIT 8253 */
- AM_RANGE(0xe008, 0xe00b) AM_READWRITE( mz80k_strobe_r, mz80k_strobe_w)
- AM_RANGE(0xf000, 0xf3ff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mz80_state::mz80k_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void mz80_state::mz80k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0xcfff).ram().share("p_ram"); // 48 KB of RAM
+ map(0xd000, 0xd7ff).ram().share("videoram"); // Video RAM
+ map(0xe000, 0xe003).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); /* PPIA 8255 */
+ map(0xe004, 0xe007).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); /* PIT 8253 */
+ map(0xe008, 0xe00b).rw(this, FUNC(mz80_state::mz80k_strobe_r), FUNC(mz80_state::mz80k_strobe_w));
+ map(0xf000, 0xf3ff).rom();
+}
+
+void mz80_state::mz80k_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+}
static GFXDECODE_START( mz80k )
GFXDECODE_ENTRY( "chargen", 0x0000, mz80k_charlayout, 0, 1 )
diff --git a/src/mame/drivers/mzr8105.cpp b/src/mame/drivers/mzr8105.cpp
index 0f31f0bfc7f..1c18b485535 100644
--- a/src/mame/drivers/mzr8105.cpp
+++ b/src/mame/drivers/mzr8105.cpp
@@ -184,15 +184,16 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(mzr8105_state::mzr8105_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void mzr8105_state::mzr8105_mem(address_map &map)
+{
+ map.unmap_value_high();
/* The ROMs contains an OS9 bootloader. It is position independent but reset vector suggests that it sits flat on adress 0 (zero) */
- AM_RANGE (0x000000, 0x003fff) AM_ROM AM_REGION("roms", 0x000000) /* System EPROM Area 16Kb OS9 DEBUG - not verified */
- AM_RANGE (0x004000, 0x01ffff) AM_ROM AM_REGION("roms", 0x004000)/* System EPROM Area 112Kb for System ROM - not verified */
- AM_RANGE (0x020000, 0x03ffff) AM_RAM /* Not verified */
+ map(0x000000, 0x003fff).rom().region("roms", 0x000000); /* System EPROM Area 16Kb OS9 DEBUG - not verified */
+ map(0x004000, 0x01ffff).rom().region("roms", 0x004000);/* System EPROM Area 112Kb for System ROM - not verified */
+ map(0x020000, 0x03ffff).ram(); /* Not verified */
// AM_RANGE (0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */
// AM_RANGE (0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START (mzr8105)
diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp
index 477765a03b3..7fc8e8991f9 100644
--- a/src/mame/drivers/n64.cpp
+++ b/src/mame/drivers/n64.cpp
@@ -50,53 +50,56 @@ READ32_MEMBER(n64_mess_state::dd_null_r)
return 0xffffffff;
}
-ADDRESS_MAP_START(n64_mess_state::n64_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rdram") // RDRAM
- AM_RANGE(0x03f00000, 0x03f00027) AM_DEVREADWRITE("rcp", n64_periphs, rdram_reg_r, rdram_reg_w)
- AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") // RSP DMEM
- AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") // RSP IMEM
- AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rcp", n64_periphs, sp_reg_r, sp_reg_w) // RSP
- AM_RANGE(0x04100000, 0x041fffff) AM_DEVREADWRITE("rcp", n64_periphs, dp_reg_r, dp_reg_w) // RDP
- AM_RANGE(0x04300000, 0x043fffff) AM_DEVREADWRITE("rcp", n64_periphs, mi_reg_r, mi_reg_w) // MIPS Interface
- AM_RANGE(0x04400000, 0x044fffff) AM_DEVREADWRITE("rcp", n64_periphs, vi_reg_r, vi_reg_w) // Video Interface
- AM_RANGE(0x04500000, 0x045fffff) AM_DEVREADWRITE("rcp", n64_periphs, ai_reg_r, ai_reg_w) // Audio Interface
- AM_RANGE(0x04600000, 0x046fffff) AM_DEVREADWRITE("rcp", n64_periphs, pi_reg_r, pi_reg_w) // Peripheral Interface
- AM_RANGE(0x04700000, 0x047fffff) AM_DEVREADWRITE("rcp", n64_periphs, ri_reg_r, ri_reg_w) // RDRAM Interface
- AM_RANGE(0x04800000, 0x048fffff) AM_DEVREADWRITE("rcp", n64_periphs, si_reg_r, si_reg_w) // Serial Interface
- AM_RANGE(0x05000508, 0x0500050b) AM_READ(dd_null_r);
- AM_RANGE(0x08000000, 0x0801ffff) AM_RAM AM_SHARE("sram") // Cartridge SRAM
- AM_RANGE(0x10000000, 0x13ffffff) AM_ROM AM_REGION("user2", 0) // Cartridge
- AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM
- AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(n64_mess_state::n64dd_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rdram") // RDRAM
- AM_RANGE(0x03f00000, 0x03f00027) AM_DEVREADWRITE("rcp", n64_periphs, rdram_reg_r, rdram_reg_w)
- AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") // RSP DMEM
- AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") // RSP IMEM
- AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rcp", n64_periphs, sp_reg_r, sp_reg_w) // RSP
- AM_RANGE(0x04100000, 0x041fffff) AM_DEVREADWRITE("rcp", n64_periphs, dp_reg_r, dp_reg_w) // RDP
- AM_RANGE(0x04300000, 0x043fffff) AM_DEVREADWRITE("rcp", n64_periphs, mi_reg_r, mi_reg_w) // MIPS Interface
- AM_RANGE(0x04400000, 0x044fffff) AM_DEVREADWRITE("rcp", n64_periphs, vi_reg_r, vi_reg_w) // Video Interface
- AM_RANGE(0x04500000, 0x045fffff) AM_DEVREADWRITE("rcp", n64_periphs, ai_reg_r, ai_reg_w) // Audio Interface
- AM_RANGE(0x04600000, 0x046fffff) AM_DEVREADWRITE("rcp", n64_periphs, pi_reg_r, pi_reg_w) // Peripheral Interface
- AM_RANGE(0x04700000, 0x047fffff) AM_DEVREADWRITE("rcp", n64_periphs, ri_reg_r, ri_reg_w) // RDRAM Interface
- AM_RANGE(0x04800000, 0x048fffff) AM_DEVREADWRITE("rcp", n64_periphs, si_reg_r, si_reg_w) // Serial Interface
- AM_RANGE(0x05000000, 0x05ffffff) AM_DEVREADWRITE("rcp", n64_periphs, dd_reg_r, dd_reg_w) // 64DD Interface
- AM_RANGE(0x06000000, 0x063fffff) AM_ROM AM_REGION("ddipl", 0) // 64DD IPL ROM
- AM_RANGE(0x08000000, 0x0801ffff) AM_RAM AM_SHARE("sram") // Cartridge SRAM
- AM_RANGE(0x10000000, 0x13ffffff) AM_ROM AM_REGION("user2", 0) // Cartridge
- AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM
- AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(n64_mess_state::rsp_map)
- AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("rsp_dmem")
- AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("rsp_imem")
- AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem")
- AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem")
-ADDRESS_MAP_END
+void n64_mess_state::n64_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram().share("rdram"); // RDRAM
+ map(0x03f00000, 0x03f00027).rw("rcp", FUNC(n64_periphs::rdram_reg_r), FUNC(n64_periphs::rdram_reg_w));
+ map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); // RSP DMEM
+ map(0x04001000, 0x04001fff).ram().share("rsp_imem"); // RSP IMEM
+ map(0x04040000, 0x040fffff).rw("rcp", FUNC(n64_periphs::sp_reg_r), FUNC(n64_periphs::sp_reg_w)); // RSP
+ map(0x04100000, 0x041fffff).rw("rcp", FUNC(n64_periphs::dp_reg_r), FUNC(n64_periphs::dp_reg_w)); // RDP
+ map(0x04300000, 0x043fffff).rw("rcp", FUNC(n64_periphs::mi_reg_r), FUNC(n64_periphs::mi_reg_w)); // MIPS Interface
+ map(0x04400000, 0x044fffff).rw("rcp", FUNC(n64_periphs::vi_reg_r), FUNC(n64_periphs::vi_reg_w)); // Video Interface
+ map(0x04500000, 0x045fffff).rw("rcp", FUNC(n64_periphs::ai_reg_r), FUNC(n64_periphs::ai_reg_w)); // Audio Interface
+ map(0x04600000, 0x046fffff).rw("rcp", FUNC(n64_periphs::pi_reg_r), FUNC(n64_periphs::pi_reg_w)); // Peripheral Interface
+ map(0x04700000, 0x047fffff).rw("rcp", FUNC(n64_periphs::ri_reg_r), FUNC(n64_periphs::ri_reg_w)); // RDRAM Interface
+ map(0x04800000, 0x048fffff).rw("rcp", FUNC(n64_periphs::si_reg_r), FUNC(n64_periphs::si_reg_w)); // Serial Interface
+ map(0x05000508, 0x0500050b).r(this, FUNC(n64_mess_state::dd_null_r));
+ map(0x08000000, 0x0801ffff).ram().share("sram"); // Cartridge SRAM
+ map(0x10000000, 0x13ffffff).rom().region("user2", 0); // Cartridge
+ map(0x1fc00000, 0x1fc007bf).rom().region("user1", 0); // PIF ROM
+ map(0x1fc007c0, 0x1fc007ff).rw("rcp", FUNC(n64_periphs::pif_ram_r), FUNC(n64_periphs::pif_ram_w));
+}
+
+void n64_mess_state::n64dd_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram().share("rdram"); // RDRAM
+ map(0x03f00000, 0x03f00027).rw("rcp", FUNC(n64_periphs::rdram_reg_r), FUNC(n64_periphs::rdram_reg_w));
+ map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); // RSP DMEM
+ map(0x04001000, 0x04001fff).ram().share("rsp_imem"); // RSP IMEM
+ map(0x04040000, 0x040fffff).rw("rcp", FUNC(n64_periphs::sp_reg_r), FUNC(n64_periphs::sp_reg_w)); // RSP
+ map(0x04100000, 0x041fffff).rw("rcp", FUNC(n64_periphs::dp_reg_r), FUNC(n64_periphs::dp_reg_w)); // RDP
+ map(0x04300000, 0x043fffff).rw("rcp", FUNC(n64_periphs::mi_reg_r), FUNC(n64_periphs::mi_reg_w)); // MIPS Interface
+ map(0x04400000, 0x044fffff).rw("rcp", FUNC(n64_periphs::vi_reg_r), FUNC(n64_periphs::vi_reg_w)); // Video Interface
+ map(0x04500000, 0x045fffff).rw("rcp", FUNC(n64_periphs::ai_reg_r), FUNC(n64_periphs::ai_reg_w)); // Audio Interface
+ map(0x04600000, 0x046fffff).rw("rcp", FUNC(n64_periphs::pi_reg_r), FUNC(n64_periphs::pi_reg_w)); // Peripheral Interface
+ map(0x04700000, 0x047fffff).rw("rcp", FUNC(n64_periphs::ri_reg_r), FUNC(n64_periphs::ri_reg_w)); // RDRAM Interface
+ map(0x04800000, 0x048fffff).rw("rcp", FUNC(n64_periphs::si_reg_r), FUNC(n64_periphs::si_reg_w)); // Serial Interface
+ map(0x05000000, 0x05ffffff).rw("rcp", FUNC(n64_periphs::dd_reg_r), FUNC(n64_periphs::dd_reg_w)); // 64DD Interface
+ map(0x06000000, 0x063fffff).rom().region("ddipl", 0); // 64DD IPL ROM
+ map(0x08000000, 0x0801ffff).ram().share("sram"); // Cartridge SRAM
+ map(0x10000000, 0x13ffffff).rom().region("user2", 0); // Cartridge
+ map(0x1fc00000, 0x1fc007bf).rom().region("user1", 0); // PIF ROM
+ map(0x1fc007c0, 0x1fc007ff).rw("rcp", FUNC(n64_periphs::pif_ram_r), FUNC(n64_periphs::pif_ram_w));
+}
+
+void n64_mess_state::rsp_map(address_map &map)
+{
+ map(0x00000000, 0x00000fff).ram().share("rsp_dmem");
+ map(0x00001000, 0x00001fff).ram().share("rsp_imem");
+ map(0x04000000, 0x04000fff).ram().share("rsp_dmem");
+ map(0x04001000, 0x04001fff).ram().share("rsp_imem");
+}
static INPUT_PORTS_START( n64 )
PORT_START("input")
diff --git a/src/mame/drivers/n8080.cpp b/src/mame/drivers/n8080.cpp
index f076b9b885d..4f5a540b3c6 100644
--- a/src/mame/drivers/n8080.cpp
+++ b/src/mame/drivers/n8080.cpp
@@ -34,33 +34,36 @@ READ8_MEMBER(n8080_state::n8080_shift_r)
return m_shift_data >> (8 - m_shift_bits);
}
-ADDRESS_MAP_START(n8080_state::main_cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(n8080_state::helifire_main_cpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(n8080_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_READ(n8080_shift_r)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN3")
-
- AM_RANGE(0x02, 0x02) AM_WRITE(n8080_shift_bits_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(n8080_shift_data_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(n8080_sound_1_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(n8080_sound_2_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(n8080_video_control_w)
-ADDRESS_MAP_END
+void n8080_state::main_cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).ram().share("videoram");
+}
+
+
+void n8080_state::helifire_main_cpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).ram().share("videoram");
+ map(0xc000, 0xdfff).ram().share("colorram");
+}
+
+void n8080_state::main_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).r(this, FUNC(n8080_state::n8080_shift_r));
+ map(0x04, 0x04).portr("IN3");
+
+ map(0x02, 0x02).w(this, FUNC(n8080_state::n8080_shift_bits_w));
+ map(0x03, 0x03).w(this, FUNC(n8080_state::n8080_shift_data_w));
+ map(0x04, 0x04).w(this, FUNC(n8080_state::n8080_sound_1_w));
+ map(0x05, 0x05).w(this, FUNC(n8080_state::n8080_sound_2_w));
+ map(0x06, 0x06).w(this, FUNC(n8080_state::n8080_video_control_w));
+}
/* Input ports */
diff --git a/src/mame/drivers/nakajies.cpp b/src/mame/drivers/nakajies.cpp
index 41e36f4a240..0829a3b0502 100644
--- a/src/mame/drivers/nakajies.cpp
+++ b/src/mame/drivers/nakajies.cpp
@@ -398,16 +398,17 @@ WRITE8_MEMBER( nakajies_state::bank6_w ) { bank_w( 6, offset, data ); }
WRITE8_MEMBER( nakajies_state::bank7_w ) { bank_w( 7, offset, data ); }
-ADDRESS_MAP_START(nakajies_state::nakajies_map)
- AM_RANGE( 0x00000, 0x1ffff ) AM_READ_BANK( "bank0" ) AM_WRITE( bank0_w )
- AM_RANGE( 0x20000, 0x3ffff ) AM_READ_BANK( "bank1" ) AM_WRITE( bank1_w )
- AM_RANGE( 0x40000, 0x5ffff ) AM_READ_BANK( "bank2" ) AM_WRITE( bank2_w )
- AM_RANGE( 0x60000, 0x7ffff ) AM_READ_BANK( "bank3" ) AM_WRITE( bank3_w )
- AM_RANGE( 0x80000, 0x9ffff ) AM_READ_BANK( "bank4" ) AM_WRITE( bank4_w )
- AM_RANGE( 0xa0000, 0xbffff ) AM_READ_BANK( "bank5" ) AM_WRITE( bank5_w )
- AM_RANGE( 0xc0000, 0xdffff ) AM_READ_BANK( "bank6" ) AM_WRITE( bank6_w )
- AM_RANGE( 0xe0000, 0xfffff ) AM_READ_BANK( "bank7" ) AM_WRITE( bank7_w )
-ADDRESS_MAP_END
+void nakajies_state::nakajies_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).bankr("bank0").w(this, FUNC(nakajies_state::bank0_w));
+ map(0x20000, 0x3ffff).bankr("bank1").w(this, FUNC(nakajies_state::bank1_w));
+ map(0x40000, 0x5ffff).bankr("bank2").w(this, FUNC(nakajies_state::bank2_w));
+ map(0x60000, 0x7ffff).bankr("bank3").w(this, FUNC(nakajies_state::bank3_w));
+ map(0x80000, 0x9ffff).bankr("bank4").w(this, FUNC(nakajies_state::bank4_w));
+ map(0xa0000, 0xbffff).bankr("bank5").w(this, FUNC(nakajies_state::bank5_w));
+ map(0xc0000, 0xdffff).bankr("bank6").w(this, FUNC(nakajies_state::bank6_w));
+ map(0xe0000, 0xfffff).bankr("bank7").w(this, FUNC(nakajies_state::bank7_w));
+}
/*********************************************
@@ -501,15 +502,16 @@ READ8_MEMBER( nakajies_state::keyboard_r )
}
-ADDRESS_MAP_START(nakajies_state::nakajies_io_map)
- AM_RANGE( 0x0000, 0x0000 ) AM_WRITE( lcd_memory_start_w )
- AM_RANGE( 0x0010, 0x0017 ) AM_WRITE( banking_w )
- AM_RANGE( 0x0060, 0x0060 ) AM_READWRITE( irq_enable_r, irq_enable_w )
- AM_RANGE( 0x0090, 0x0090 ) AM_READWRITE( irq_clear_r, irq_clear_w )
- AM_RANGE( 0x00a0, 0x00a0 ) AM_READ( unk_a0_r )
- AM_RANGE( 0x00b0, 0x00b0 ) AM_READ( keyboard_r )
- AM_RANGE( 0x00d0, 0x00df ) AM_DEVREADWRITE("rtc", rp5c01_device, read, write)
-ADDRESS_MAP_END
+void nakajies_state::nakajies_io_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(nakajies_state::lcd_memory_start_w));
+ map(0x0010, 0x0017).w(this, FUNC(nakajies_state::banking_w));
+ map(0x0060, 0x0060).rw(this, FUNC(nakajies_state::irq_enable_r), FUNC(nakajies_state::irq_enable_w));
+ map(0x0090, 0x0090).rw(this, FUNC(nakajies_state::irq_clear_r), FUNC(nakajies_state::irq_clear_w));
+ map(0x00a0, 0x00a0).r(this, FUNC(nakajies_state::unk_a0_r));
+ map(0x00b0, 0x00b0).r(this, FUNC(nakajies_state::keyboard_r));
+ map(0x00d0, 0x00df).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write));
+}
INPUT_CHANGED_MEMBER(nakajies_state::trigger_irq)
diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp
index 10927e5a7e1..a376a201612 100644
--- a/src/mame/drivers/namcofl.cpp
+++ b/src/mame/drivers/namcofl.cpp
@@ -214,25 +214,26 @@ WRITE8_MEMBER(namcofl_state::namcofl_c116_w)
}
}
-ADDRESS_MAP_START(namcofl_state::namcofl_mem)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1")
- AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2")
- AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */
- AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w)
- AM_RANGE(0x30284000, 0x3028bfff) AM_RAM AM_SHARE("shareram")
- AM_RANGE(0x30300000, 0x30303fff) AM_RAM /* COMRAM */
- AM_RANGE(0x30380000, 0x303800ff) AM_READ(fl_network_r ) /* network registers */
- AM_RANGE(0x30400000, 0x30407fff) AM_DEVREAD8("c116", namco_c116_device,read,0xffffffff) AM_WRITE8(namcofl_c116_w,0xffffffff)
- AM_RANGE(0x30800000, 0x3080ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff)
- AM_RANGE(0x30a00000, 0x30a0003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff)
- AM_RANGE(0x30c00000, 0x30c1ffff) AM_READWRITE16(c169_roz_videoram_r,c169_roz_videoram_w,0xffffffff) AM_SHARE("rozvideoram")
- AM_RANGE(0x30d00000, 0x30d0001f) AM_READWRITE16(c169_roz_control_r,c169_roz_control_w,0xffffffff)
- AM_RANGE(0x30e00000, 0x30e1ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
- AM_RANGE(0x30f00000, 0x30f0000f) AM_RAM /* NebulaM2 code says this is int enable at 0000, int request at 0004, but doesn't do much about it */
- AM_RANGE(0x40000000, 0x4000005f) AM_READWRITE(namcofl_sysreg_r, namcofl_sysreg_w )
- AM_RANGE(0xfffffffc, 0xffffffff) AM_READ(fl_unk1_r )
-ADDRESS_MAP_END
+void namcofl_state::namcofl_mem(address_map &map)
+{
+ map(0x00000000, 0x000fffff).bankrw("bank1");
+ map(0x10000000, 0x100fffff).bankrw("bank2");
+ map(0x20000000, 0x201fffff).rom().region("data", 0);
+ map(0x30000000, 0x30001fff).ram().share("nvram"); /* nvram */
+ map(0x30100000, 0x30100003).w(this, FUNC(namcofl_state::namcofl_spritebank_w));
+ map(0x30284000, 0x3028bfff).ram().share("shareram");
+ map(0x30300000, 0x30303fff).ram(); /* COMRAM */
+ map(0x30380000, 0x303800ff).r(this, FUNC(namcofl_state::fl_network_r)); /* network registers */
+ map(0x30400000, 0x30407fff).r(m_c116, FUNC(namco_c116_device::read)).w(this, FUNC(namcofl_state::namcofl_c116_w));
+ map(0x30800000, 0x3080ffff).rw(this, FUNC(namcofl_state::c123_tilemap_videoram_r), FUNC(namcofl_state::c123_tilemap_videoram_w));
+ map(0x30a00000, 0x30a0003f).rw(this, FUNC(namcofl_state::c123_tilemap_control_r), FUNC(namcofl_state::c123_tilemap_control_w));
+ map(0x30c00000, 0x30c1ffff).rw(this, FUNC(namcofl_state::c169_roz_videoram_r), FUNC(namcofl_state::c169_roz_videoram_w)).share("rozvideoram");
+ map(0x30d00000, 0x30d0001f).rw(this, FUNC(namcofl_state::c169_roz_control_r), FUNC(namcofl_state::c169_roz_control_w));
+ map(0x30e00000, 0x30e1ffff).rw(this, FUNC(namcofl_state::c355_obj_ram_r), FUNC(namcofl_state::c355_obj_ram_w)).share("objram");
+ map(0x30f00000, 0x30f0000f).ram(); /* NebulaM2 code says this is int enable at 0000, int request at 0004, but doesn't do much about it */
+ map(0x40000000, 0x4000005f).rw(this, FUNC(namcofl_state::namcofl_sysreg_r), FUNC(namcofl_state::namcofl_sysreg_w));
+ map(0xfffffffc, 0xffffffff).r(this, FUNC(namcofl_state::fl_unk1_r));
+}
WRITE16_MEMBER(namcofl_state::mcu_shared_w)
@@ -311,24 +312,26 @@ READ8_MEMBER(namcofl_state::dac2_r){ return 0xff; }
READ8_MEMBER(namcofl_state::dac1_r){ return 0xff; }
READ8_MEMBER(namcofl_state::dac0_r){ return 0xff; }
-ADDRESS_MAP_START(namcofl_state::namcoc75_am)
- AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("shareram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c75data", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcofl_state::namcoc75_io)
- AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w)
- AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READ(port7_r)
- AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ(dac7_r)
- AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ(dac6_r)
- AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ(dac5_r)
- AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ(dac4_r)
- AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ(dac3_r)
- AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ(dac2_r)
- AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ(dac1_r)
- AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ(dac0_r)
-ADDRESS_MAP_END
+void namcofl_state::namcoc75_am(address_map &map)
+{
+ map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x004000, 0x00bfff).ram().w(this, FUNC(namcofl_state::mcu_shared_w)).share("shareram");
+ map(0x200000, 0x27ffff).rom().region("c75data", 0);
+}
+
+void namcofl_state::namcoc75_io(address_map &map)
+{
+ map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcofl_state::port6_r), FUNC(namcofl_state::port6_w));
+ map(M37710_PORT7, M37710_PORT7).r(this, FUNC(namcofl_state::port7_r));
+ map(M37710_ADC7_L, M37710_ADC7_L).r(this, FUNC(namcofl_state::dac7_r));
+ map(M37710_ADC6_L, M37710_ADC6_L).r(this, FUNC(namcofl_state::dac6_r));
+ map(M37710_ADC5_L, M37710_ADC5_L).r(this, FUNC(namcofl_state::dac5_r));
+ map(M37710_ADC4_L, M37710_ADC4_L).r(this, FUNC(namcofl_state::dac4_r));
+ map(M37710_ADC3_L, M37710_ADC3_L).r(this, FUNC(namcofl_state::dac3_r));
+ map(M37710_ADC2_L, M37710_ADC2_L).r(this, FUNC(namcofl_state::dac2_r));
+ map(M37710_ADC1_L, M37710_ADC1_L).r(this, FUNC(namcofl_state::dac1_r));
+ map(M37710_ADC0_L, M37710_ADC0_L).r(this, FUNC(namcofl_state::dac0_r));
+}
static INPUT_PORTS_START( speedrcr )
diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp
index 76ff5542765..e2c1fb66374 100644
--- a/src/mame/drivers/namcona1.cpp
+++ b/src/mame/drivers/namcona1.cpp
@@ -551,21 +551,22 @@ WRITE16_MEMBER(namcona1_state::mcu_mailbox_w_mcu)
COMBINE_DATA(&m_mcu_mailbox[offset%8]);
}
-ADDRESS_MAP_START(namcona1_state::namcona1_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0x3f8000, 0x3fffff) AM_READWRITE(mcu_mailbox_r, mcu_mailbox_w_68k)
- AM_RANGE(0x400000, 0xbfffff) AM_ROM AM_REGION("maskrom", 0) // data
- AM_RANGE(0xc00000, 0xdfffff) AM_ROM AM_REGION("maincpu", 0) // code
- AM_RANGE(0xe00000, 0xe00fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xe40000, 0xe4000f) AM_READWRITE(custom_key_r, custom_key_w)
- AM_RANGE(0xefff00, 0xefffff) AM_RAM_WRITE(vreg_w) AM_SHARE("vreg")
- AM_RANGE(0xf00000, 0xf01fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xf40000, 0xf7ffff) AM_READWRITE(gfxram_r, gfxram_w) AM_SHARE("cgram")
- AM_RANGE(0xff0000, 0xffbfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM /* unknown */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM AM_SHARE("scroll") /* scroll registers */
- AM_RANGE(0xfff000, 0xffffff) AM_RAM AM_SHARE("spriteram") /* spriteram */
-ADDRESS_MAP_END
+void namcona1_state::namcona1_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).ram().share("workram");
+ map(0x3f8000, 0x3fffff).rw(this, FUNC(namcona1_state::mcu_mailbox_r), FUNC(namcona1_state::mcu_mailbox_w_68k));
+ map(0x400000, 0xbfffff).rom().region("maskrom", 0); // data
+ map(0xc00000, 0xdfffff).rom().region("maincpu", 0); // code
+ map(0xe00000, 0xe00fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xe40000, 0xe4000f).rw(this, FUNC(namcona1_state::custom_key_r), FUNC(namcona1_state::custom_key_w));
+ map(0xefff00, 0xefffff).ram().w(this, FUNC(namcona1_state::vreg_w)).share("vreg");
+ map(0xf00000, 0xf01fff).ram().w(this, FUNC(namcona1_state::paletteram_w)).share("paletteram");
+ map(0xf40000, 0xf7ffff).rw(this, FUNC(namcona1_state::gfxram_r), FUNC(namcona1_state::gfxram_w)).share("cgram");
+ map(0xff0000, 0xffbfff).ram().w(this, FUNC(namcona1_state::videoram_w)).share("videoram");
+ map(0xffd000, 0xffdfff).ram(); /* unknown */
+ map(0xffe000, 0xffefff).ram().share("scroll"); /* scroll registers */
+ map(0xfff000, 0xffffff).ram().share("spriteram"); /* spriteram */
+}
READ8_MEMBER(xday2_namcona2_state::printer_r)
{
@@ -579,17 +580,18 @@ WRITE8_MEMBER(xday2_namcona2_state::printer_w)
// ...
}
-ADDRESS_MAP_START(xday2_namcona2_state::xday2_main_map)
- AM_IMPORT_FROM(namcona1_main_map)
+void xday2_namcona2_state::xday2_main_map(address_map &map)
+{
+ namcona1_main_map(map);
// these two seems lamps and flash related (mux too?)
- AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP
- AM_RANGE(0xd40000, 0xd40001) AM_WRITENOP
- AM_RANGE(0xd80000, 0xd80001) AM_READWRITE8(printer_r,printer_w,0x00ff) /* xday: serial out? */
- AM_RANGE(0xdc0000, 0xdc001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) /* RTC device */
+ map(0xd00000, 0xd00001).nopw();
+ map(0xd40000, 0xd40001).nopw();
+ map(0xd80001, 0xd80001).rw(this, FUNC(xday2_namcona2_state::printer_r), FUNC(xday2_namcona2_state::printer_w)); /* xday: serial out? */
+ map(0xdc0000, 0xdc001f).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); /* RTC device */
// seems bigger than standard na1 (otherwise you won't get proper ranking defaults)
- AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xe00000, 0xe03fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+}
/* ----- NA-1 MCU handling ----------------------------------- */
@@ -635,13 +637,14 @@ WRITE16_MEMBER(namcona1_state::snd_w)
}
}
-ADDRESS_MAP_START(namcona1_state::namcona1_mcu_map)
- AM_RANGE(0x000800, 0x000fff) AM_READWRITE(mcu_mailbox_r, mcu_mailbox_w_mcu) // "Mailslot" communications ports
- AM_RANGE(0x001000, 0x001fff) AM_READWRITE(snd_r, snd_w) // C140-alike sound chip
- AM_RANGE(0x002000, 0x002fff) AM_READWRITE(na1mcu_shared_r, na1mcu_shared_w) // mirror of first page of shared work RAM
- AM_RANGE(0x003000, 0x00afff) AM_RAM // there is a 32k RAM chip according to CGFM
- AM_RANGE(0x200000, 0x27ffff) AM_READWRITE(na1mcu_shared_r, na1mcu_shared_w) // shared work RAM
-ADDRESS_MAP_END
+void namcona1_state::namcona1_mcu_map(address_map &map)
+{
+ map(0x000800, 0x000fff).rw(this, FUNC(namcona1_state::mcu_mailbox_r), FUNC(namcona1_state::mcu_mailbox_w_mcu)); // "Mailslot" communications ports
+ map(0x001000, 0x001fff).rw(this, FUNC(namcona1_state::snd_r), FUNC(namcona1_state::snd_w)); // C140-alike sound chip
+ map(0x002000, 0x002fff).rw(this, 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(this, FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // shared work RAM
+}
// port 4: bit 3 (0x08) enables the 68000 (see the 68k launch code at c604 in swcourt's BIOS)
@@ -752,14 +755,15 @@ READ8_MEMBER(namcona1_state::portana_r)
return (port & bitnum[offset>>1]) ? 0xff : 0x00;
}
-ADDRESS_MAP_START(namcona1_state::namcona1_mcu_io_map)
- AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READWRITE(port4_r, port4_w )
- AM_RANGE(M37710_PORT5, M37710_PORT5) AM_READWRITE(port5_r, port5_w )
- AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w )
- AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READWRITE(port7_r, port7_w )
- AM_RANGE(M37710_PORT8, M37710_PORT8) AM_READWRITE(port8_r, port8_w )
- AM_RANGE(0x10, 0x1f) AM_READ(portana_r )
-ADDRESS_MAP_END
+void namcona1_state::namcona1_mcu_io_map(address_map &map)
+{
+ map(M37710_PORT4, M37710_PORT4).rw(this, FUNC(namcona1_state::port4_r), FUNC(namcona1_state::port4_w));
+ map(M37710_PORT5, M37710_PORT5).rw(this, FUNC(namcona1_state::port5_r), FUNC(namcona1_state::port5_w));
+ map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcona1_state::port6_r), FUNC(namcona1_state::port6_w));
+ map(M37710_PORT7, M37710_PORT7).rw(this, FUNC(namcona1_state::port7_r), FUNC(namcona1_state::port7_w));
+ map(M37710_PORT8, M37710_PORT8).rw(this, FUNC(namcona1_state::port8_r), FUNC(namcona1_state::port8_w));
+ map(0x10, 0x1f).r(this, FUNC(namcona1_state::portana_r));
+}
/***************************************************************************/
diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp
index 007a3597606..a82b42f2f2f 100644
--- a/src/mame/drivers/namconb1.cpp
+++ b/src/mame/drivers/namconb1.cpp
@@ -690,46 +690,48 @@ WRITE32_MEMBER(namconb1_state::share_w)
COMBINE_DATA(m_namconb_shareram+offset*2);
}
-ADDRESS_MAP_START(namconb1_state::namconb1_am)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10001f) AM_READ(gunbulet_gun_r)
- AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
- AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE(share_r, share_w)
- AM_RANGE(0x208000, 0x2fffff) AM_RAM
- AM_RANGE(0x400000, 0x40001f) AM_READWRITE8(namconb1_cpureg_r, namconb1_cpureg_w, 0xffffffff)
- AM_RANGE(0x580000, 0x5807ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff)
- AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
- AM_RANGE(0x620000, 0x620007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
- AM_RANGE(0x640000, 0x64ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff)
- AM_RANGE(0x660000, 0x66003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff)
- AM_RANGE(0x680000, 0x68000f) AM_RAM AM_SHARE("spritebank32")
- AM_RANGE(0x6e0000, 0x6e001f) AM_READ(custom_key_r) AM_WRITENOP
- AM_RANGE(0x700000, 0x707fff) AM_DEVREADWRITE8("c116", namco_c116_device, read, write, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namconb1_state::namconb2_am)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
- AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE(share_r, share_w)
- AM_RANGE(0x208000, 0x2fffff) AM_RAM
- AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
- AM_RANGE(0x620000, 0x620007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
- AM_RANGE(0x640000, 0x64000f) AM_RAM /* unknown xy offset */
- AM_RANGE(0x680000, 0x68ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff)
- AM_RANGE(0x6c0000, 0x6c003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff)
- AM_RANGE(0x700000, 0x71ffff) AM_READWRITE16(c169_roz_videoram_r,c169_roz_videoram_w,0xffffffff) AM_SHARE("rozvideoram")
- AM_RANGE(0x740000, 0x74001f) AM_READWRITE16(c169_roz_control_r,c169_roz_control_w,0xffffffff)
- AM_RANGE(0x800000, 0x807fff) AM_DEVREADWRITE8("c116", namco_c116_device, read, write, 0xffffffff)
- AM_RANGE(0x900008, 0x90000f) AM_RAM AM_SHARE("spritebank32")
- AM_RANGE(0x940000, 0x94000f) AM_RAM AM_SHARE("tilebank32")
- AM_RANGE(0x980000, 0x98000f) AM_READWRITE16(c169_roz_bank_r,c169_roz_bank_w,0xffffffff)
- AM_RANGE(0xa00000, 0xa007ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff)
- AM_RANGE(0xc00000, 0xc0001f) AM_READ(custom_key_r) AM_WRITENOP
- AM_RANGE(0xf00000, 0xf0001f) AM_READWRITE8(namconb2_cpureg_r, namconb2_cpureg_w, 0xffffffff)
-ADDRESS_MAP_END
+void namconb1_state::namconb1_am(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10001f).r(this, FUNC(namconb1_state::gunbulet_gun_r));
+ map(0x1c0000, 0x1cffff).ram();
+ map(0x1e4000, 0x1e4003).rw(this, FUNC(namconb1_state::randgen_r), FUNC(namconb1_state::srand_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(namconb1_state::share_r), FUNC(namconb1_state::share_w));
+ map(0x208000, 0x2fffff).ram();
+ map(0x400000, 0x40001f).rw(this, FUNC(namconb1_state::namconb1_cpureg_r), FUNC(namconb1_state::namconb1_cpureg_w));
+ map(0x580000, 0x5807ff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
+ map(0x600000, 0x61ffff).rw(this, FUNC(namconb1_state::c355_obj_ram_r), FUNC(namconb1_state::c355_obj_ram_w)).share("objram");
+ map(0x620000, 0x620007).rw(this, FUNC(namconb1_state::c355_obj_position_r), FUNC(namconb1_state::c355_obj_position_w));
+ map(0x640000, 0x64ffff).rw(this, FUNC(namconb1_state::c123_tilemap_videoram_r), FUNC(namconb1_state::c123_tilemap_videoram_w));
+ map(0x660000, 0x66003f).rw(this, FUNC(namconb1_state::c123_tilemap_control_r), FUNC(namconb1_state::c123_tilemap_control_w));
+ map(0x680000, 0x68000f).ram().share("spritebank32");
+ map(0x6e0000, 0x6e001f).r(this, FUNC(namconb1_state::custom_key_r)).nopw();
+ map(0x700000, 0x707fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write));
+}
+
+void namconb1_state::namconb2_am(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x1c0000, 0x1cffff).ram();
+ map(0x1e4000, 0x1e4003).rw(this, FUNC(namconb1_state::randgen_r), FUNC(namconb1_state::srand_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(namconb1_state::share_r), FUNC(namconb1_state::share_w));
+ map(0x208000, 0x2fffff).ram();
+ map(0x400000, 0x4fffff).rom().region("data", 0);
+ map(0x600000, 0x61ffff).rw(this, FUNC(namconb1_state::c355_obj_ram_r), FUNC(namconb1_state::c355_obj_ram_w)).share("objram");
+ map(0x620000, 0x620007).rw(this, FUNC(namconb1_state::c355_obj_position_r), FUNC(namconb1_state::c355_obj_position_w));
+ map(0x640000, 0x64000f).ram(); /* unknown xy offset */
+ map(0x680000, 0x68ffff).rw(this, FUNC(namconb1_state::c123_tilemap_videoram_r), FUNC(namconb1_state::c123_tilemap_videoram_w));
+ map(0x6c0000, 0x6c003f).rw(this, FUNC(namconb1_state::c123_tilemap_control_r), FUNC(namconb1_state::c123_tilemap_control_w));
+ map(0x700000, 0x71ffff).rw(this, FUNC(namconb1_state::c169_roz_videoram_r), FUNC(namconb1_state::c169_roz_videoram_w)).share("rozvideoram");
+ map(0x740000, 0x74001f).rw(this, FUNC(namconb1_state::c169_roz_control_r), FUNC(namconb1_state::c169_roz_control_w));
+ map(0x800000, 0x807fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write));
+ map(0x900008, 0x90000f).ram().share("spritebank32");
+ map(0x940000, 0x94000f).ram().share("tilebank32");
+ map(0x980000, 0x98000f).rw(this, FUNC(namconb1_state::c169_roz_bank_r), FUNC(namconb1_state::c169_roz_bank_w));
+ map(0xa00000, 0xa007ff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
+ map(0xc00000, 0xc0001f).r(this, FUNC(namconb1_state::custom_key_r)).nopw();
+ map(0xf00000, 0xf0001f).rw(this, FUNC(namconb1_state::namconb2_cpureg_r), FUNC(namconb1_state::namconb2_cpureg_w));
+}
WRITE16_MEMBER(namconb1_state::mcu_shared_w)
{
@@ -752,11 +754,12 @@ WRITE16_MEMBER(namconb1_state::mcu_shared_w)
}
}
-ADDRESS_MAP_START(namconb1_state::namcoc75_am)
- AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("namconb_share")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c75data", 0)
-ADDRESS_MAP_END
+void namconb1_state::namcoc75_am(address_map &map)
+{
+ map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x004000, 0x00bfff).ram().w(this, FUNC(namconb1_state::mcu_shared_w)).share("namconb_share");
+ map(0x200000, 0x27ffff).rom().region("c75data", 0);
+}
READ8_MEMBER(namconb1_state::port6_r)
@@ -835,18 +838,19 @@ READ8_MEMBER(namconb1_state::dac0_r)// bit 6
return (m_p3.read_safe(0xff)<<7)&0x80;
}
-ADDRESS_MAP_START(namconb1_state::namcoc75_io)
- AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w)
- AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READ(port7_r)
- AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ(dac7_r)
- AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ(dac6_r)
- AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ(dac5_r)
- AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ(dac4_r)
- AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ(dac3_r)
- AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ(dac2_r)
- AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ(dac1_r)
- AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ(dac0_r)
-ADDRESS_MAP_END
+void namconb1_state::namcoc75_io(address_map &map)
+{
+ map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namconb1_state::port6_r), FUNC(namconb1_state::port6_w));
+ map(M37710_PORT7, M37710_PORT7).r(this, FUNC(namconb1_state::port7_r));
+ map(M37710_ADC7_L, M37710_ADC7_L).r(this, FUNC(namconb1_state::dac7_r));
+ map(M37710_ADC6_L, M37710_ADC6_L).r(this, FUNC(namconb1_state::dac6_r));
+ map(M37710_ADC5_L, M37710_ADC5_L).r(this, FUNC(namconb1_state::dac5_r));
+ map(M37710_ADC4_L, M37710_ADC4_L).r(this, FUNC(namconb1_state::dac4_r));
+ map(M37710_ADC3_L, M37710_ADC3_L).r(this, FUNC(namconb1_state::dac3_r));
+ map(M37710_ADC2_L, M37710_ADC2_L).r(this, FUNC(namconb1_state::dac2_r));
+ map(M37710_ADC1_L, M37710_ADC1_L).r(this, FUNC(namconb1_state::dac1_r));
+ map(M37710_ADC0_L, M37710_ADC0_L).r(this, FUNC(namconb1_state::dac0_r));
+}
/****************************************************************************/
diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp
index 7a7ab20dd3e..72898dbaaf7 100644
--- a/src/mame/drivers/namcond1.cpp
+++ b/src/mame/drivers/namcond1.cpp
@@ -196,26 +196,28 @@ Some logic, resistors/caps/transistors, some connectors etc.
/*************************************************************/
-ADDRESS_MAP_START(namcond1_state::namcond1_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x800000, 0x80000f) AM_DEVICE8("ygv608", ygv608_device, port_map, 0xff00)
- AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00)
- AM_RANGE(0xc3ff00, 0xc3ffff) AM_READWRITE(cuskey_r,cuskey_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcond1_state::abcheck_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("zpr1")
- AM_RANGE(0x608000, 0x60ffff) AM_RAM AM_SHARE("zpr2")
- AM_RANGE(0x700000, 0x700001) AM_WRITENOP
- AM_RANGE(0x740000, 0x740001) AM_WRITENOP
- AM_RANGE(0x780000, 0x780001) AM_READ(printer_r)
- AM_RANGE(0x800000, 0x80000f) AM_DEVICE8("ygv608", ygv608_device, port_map, 0xff00)
- AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00)
- AM_RANGE(0xc3ff00, 0xc3ffff) AM_READWRITE(cuskey_r,cuskey_w)
-ADDRESS_MAP_END
+void namcond1_state::namcond1_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40ffff).ram().share("shared_ram");
+ map(0x800000, 0x80000f).m(m_ygv608, FUNC(ygv608_device::port_map)).umask16(0xff00);
+ map(0xa00000, 0xa00fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask16(0xff00);
+ map(0xc3ff00, 0xc3ffff).rw(this, FUNC(namcond1_state::cuskey_r), FUNC(namcond1_state::cuskey_w));
+}
+
+void namcond1_state::abcheck_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40ffff).ram().share("shared_ram");
+ map(0x600000, 0x607fff).ram().share("zpr1");
+ map(0x608000, 0x60ffff).ram().share("zpr2");
+ map(0x700000, 0x700001).nopw();
+ map(0x740000, 0x740001).nopw();
+ map(0x780000, 0x780001).r(this, FUNC(namcond1_state::printer_r));
+ map(0x800000, 0x80000f).m(m_ygv608, FUNC(ygv608_device::port_map)).umask16(0xff00);
+ map(0xa00000, 0xa00fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask16(0xff00);
+ map(0xc3ff00, 0xc3ffff).rw(this, FUNC(namcond1_state::cuskey_r), FUNC(namcond1_state::cuskey_w));
+}
READ16_MEMBER(namcond1_state::printer_r)
{
@@ -298,25 +300,27 @@ WRITE16_MEMBER(namcond1_state::mcu_pa_write)
}
/* H8/3002 MCU stuff */
-ADDRESS_MAP_START(namcond1_state::nd1h8rwmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xa00000, 0xa07fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1_P2")
- AM_RANGE(0xc00010, 0xc00011) AM_NOP
- AM_RANGE(0xc00030, 0xc00031) AM_NOP
- AM_RANGE(0xc00040, 0xc00041) AM_NOP
- AM_RANGE(0xffff1a, 0xffff1b) AM_NOP // abcheck
- AM_RANGE(0xffff1e, 0xffff1f) AM_NOP // ^
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcond1_state::nd1h8iomap)
- AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ(mcu_p7_read )
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(mcu_pa_read, mcu_pa_write )
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_3) AM_NOP // MCU reads these, but the games have no analog controls
- AM_RANGE(0x14, 0x17) AM_READNOP // abcheck
-ADDRESS_MAP_END
+void namcond1_state::nd1h8rwmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram().share("shared_ram");
+ map(0xa00000, 0xa07fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0xc00000, 0xc00001).portr("DSW");
+ map(0xc00002, 0xc00003).portr("P1_P2");
+ map(0xc00010, 0xc00011).noprw();
+ map(0xc00030, 0xc00031).noprw();
+ map(0xc00040, 0xc00041).noprw();
+ map(0xffff1a, 0xffff1b).noprw(); // abcheck
+ map(0xffff1e, 0xffff1f).noprw(); // ^
+}
+
+void namcond1_state::nd1h8iomap(address_map &map)
+{
+ map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(namcond1_state::mcu_p7_read));
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcond1_state::mcu_pa_read), FUNC(namcond1_state::mcu_pa_write));
+ map(h8_device::ADC_0, h8_device::ADC_3).noprw(); // MCU reads these, but the games have no analog controls
+ map(0x14, 0x17).nopr(); // abcheck
+}
INTERRUPT_GEN_MEMBER(namcond1_state::mcu_interrupt)
{
diff --git a/src/mame/drivers/namcops2.cpp b/src/mame/drivers/namcops2.cpp
index 1187704922d..c5679674b21 100644
--- a/src/mame/drivers/namcops2.cpp
+++ b/src/mame/drivers/namcops2.cpp
@@ -908,10 +908,11 @@ uint32_t namcops2_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
return 0;
}
-ADDRESS_MAP_START(namcops2_state::ps2_map)
- AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // 32 MB RAM in consumer PS2s, do these have more?
- AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void namcops2_state::ps2_map(address_map &map)
+{
+ map(0x00000000, 0x01ffffff).ram(); // 32 MB RAM in consumer PS2s, do these have more?
+ map(0x1fc00000, 0x1fdfffff).rom().region("bios", 0);
+}
static INPUT_PORTS_START( system246 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp
index d4085dacc2a..2bb8847bde0 100644
--- a/src/mame/drivers/namcos1.cpp
+++ b/src/mame/drivers/namcos1.cpp
@@ -339,7 +339,6 @@ C - uses sub board with support for player 3 and 4 controls
#include "includes/namcos1.h"
#include "cpu/m6809/m6809.h"
-#include "cpu/m6800/m6801.h"
#include "machine/nvram.h"
#include "sound/volt_reg.h"
#include "sound/ym2151.h"
@@ -394,61 +393,67 @@ WRITE8_MEMBER(namcos1_state::dac_gain_w)
-ADDRESS_MAP_START(namcos1_state::main_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("c117", namco_c117_device, main_r, main_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos1_state::sub_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("c117", namco_c117_device, sub_r, sub_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos1_state::virtual_map)
- AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(_3dcs_w)
- AM_RANGE(0x2e0000, 0x2e7fff) AM_DEVREADWRITE("c116", namco_c116_device, read, write)
- AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2f8000, 0x2f9fff) AM_READWRITE(no_key_r, no_key_w)
- AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x2fd000, 0x2fd01f) AM_RAM AM_SHARE("pfcontrol") AM_MIRROR(0xfe0)
- AM_RANGE(0x2fe000, 0x2fe3ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0xc00) /* PSG ( Shared ) */
- AM_RANGE(0x2ff000, 0x2ff7ff) AM_RAM AM_SHARE("triram") AM_MIRROR(0x800)
- AM_RANGE(0x300000, 0x307fff) AM_RAM
- AM_RANGE(0x400000, 0x7fffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(namcos1_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("soundbank") /* Banked ROMs */
- AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write)
- AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("triram")
- AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */
- AM_RANGE(0xc000, 0xc001) AM_WRITE(sound_bankswitch_w) /* ROM bank selector */
- AM_RANGE(0xd001, 0xd001) AM_DEVWRITE("c117", namco_c117_device, sound_watchdog_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(audiocpu_irq_ack_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(namcos1_state::mcu_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */
- AM_RANGE(0x1000, 0x1003) AM_READ(dsw_r)
- AM_RANGE(0x1400, 0x1400) AM_READ_PORT("CONTROL0")
- AM_RANGE(0x1401, 0x1401) AM_READ_PORT("CONTROL1")
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("mcubank") /* banked external ROM */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("triram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("dac0", dac_byte_interface, write)
- AM_RANGE(0xd400, 0xd400) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0xd800, 0xd800) AM_WRITE(mcu_bankswitch_w) /* ROM bank selector */
- AM_RANGE(0xf000, 0xf000) AM_WRITE(mcu_irq_ack_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("mcu", 0) /* internal ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos1_state::mcu_port_map)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(coin_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(dac_gain_w)
-ADDRESS_MAP_END
+void namcos1_state::main_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(m_c117, FUNC(namco_c117_device::main_r), FUNC(namco_c117_device::main_w));
+}
+
+void namcos1_state::sub_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(m_c117, FUNC(namco_c117_device::sub_r), FUNC(namco_c117_device::sub_w));
+}
+
+void namcos1_state::virtual_map(address_map &map)
+{
+ map(0x2c0000, 0x2c1fff).w(this, FUNC(namcos1_state::_3dcs_w));
+ map(0x2e0000, 0x2e7fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write));
+ map(0x2f0000, 0x2f7fff).ram().w(this, FUNC(namcos1_state::videoram_w)).share("videoram");
+ map(0x2f8000, 0x2f9fff).rw(this, FUNC(namcos1_state::no_key_r), FUNC(namcos1_state::no_key_w));
+ map(0x2fc000, 0x2fcfff).ram().w(this, FUNC(namcos1_state::spriteram_w)).share("spriteram");
+ map(0x2fd000, 0x2fd01f).ram().share("pfcontrol").mirror(0xfe0);
+ map(0x2fe000, 0x2fe3ff).rw("namco", FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)).mirror(0xc00); /* PSG ( Shared ) */
+ map(0x2ff000, 0x2ff7ff).ram().share("triram").mirror(0x800);
+ map(0x300000, 0x307fff).ram();
+ map(0x400000, 0x7fffff).rom().region("user1", 0);
+}
+
+
+void namcos1_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("soundbank"); /* Banked ROMs */
+ map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write));
+ map(0x5000, 0x53ff).rw("namco", FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)).mirror(0x400); /* PSG ( Shared ) */
+ map(0x7000, 0x77ff).ram().share("triram");
+ map(0x8000, 0x9fff).ram(); /* Sound RAM 3 */
+ map(0xc000, 0xc001).w(this, FUNC(namcos1_state::sound_bankswitch_w)); /* ROM bank selector */
+ map(0xd001, 0xd001).w(m_c117, FUNC(namco_c117_device::sound_watchdog_w));
+ map(0xe000, 0xe000).w(this, FUNC(namcos1_state::audiocpu_irq_ack_w));
+ map(0xc000, 0xffff).rom().region("audiocpu", 0);
+}
+
+
+void namcos1_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram(); /* built in RAM */
+ map(0x1000, 0x1003).r(this, FUNC(namcos1_state::dsw_r));
+ map(0x1400, 0x1400).portr("CONTROL0");
+ map(0x1401, 0x1401).portr("CONTROL1");
+ map(0x4000, 0xbfff).bankr("mcubank"); /* banked external ROM */
+ map(0xc000, 0xc7ff).ram().share("triram");
+ map(0xc800, 0xcfff).ram().share("nvram"); /* EEPROM */
+ map(0xd000, 0xd000).w(m_dac0, FUNC(dac_byte_interface::write));
+ map(0xd400, 0xd400).w(m_dac1, FUNC(dac_byte_interface::write));
+ map(0xd800, 0xd800).w(this, FUNC(namcos1_state::mcu_bankswitch_w)); /* ROM bank selector */
+ map(0xf000, 0xf000).w(this, FUNC(namcos1_state::mcu_irq_ack_w));
+ map(0xf000, 0xffff).rom().region("mcu", 0); /* internal ROM */
+}
+
+void namcos1_state::mcu_port_map(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).portr("COIN").w(this, FUNC(namcos1_state::coin_w));
+ map(M6801_PORT2, M6801_PORT2).nopr().w(this, FUNC(namcos1_state::dac_gain_w));
+}
// #define PRIORITY_EASINESS_TO_PLAY
diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp
index 0f13db2c0a2..f4c6a1cce3a 100644
--- a/src/mame/drivers/namcos10.cpp
+++ b/src/mame/drivers/namcos10.cpp
@@ -490,16 +490,17 @@ public:
};
-ADDRESS_MAP_START(namcos10_state::namcos10_map)
- AM_RANGE(0x1f500000, 0x1f501fff) AM_RAM AM_SHARE("share3") /* ram? stores block numbers */
- AM_RANGE(0x9f500000, 0x9f501fff) AM_RAM AM_SHARE("share3") /* ram? stores block numbers */
- AM_RANGE(0xbf500000, 0xbf501fff) AM_RAM AM_SHARE("share3") /* ram? stores block numbers */
-
- AM_RANGE(0x1fba0000, 0x1fba000f) AM_READWRITE16(control_r, control_w, 0xffffffff)
- AM_RANGE(0x1fba0000, 0x1fba0003) AM_READWRITE16(sprot_r, sprot_w, 0xffff0000)
- AM_RANGE(0x1fba0008, 0x1fba000b) AM_READWRITE16(i2c_clock_r, i2c_clock_w, 0x0000ffff)
- AM_RANGE(0x1fba0008, 0x1fba000b) AM_READWRITE16(i2c_data_r, i2c_data_w, 0xffff0000)
-ADDRESS_MAP_END
+void namcos10_state::namcos10_map(address_map &map)
+{
+ map(0x1f500000, 0x1f501fff).ram().share("share3"); /* ram? stores block numbers */
+ map(0x9f500000, 0x9f501fff).ram().share("share3"); /* ram? stores block numbers */
+ map(0xbf500000, 0xbf501fff).ram().share("share3"); /* ram? stores block numbers */
+
+ map(0x1fba0000, 0x1fba000f).rw(this, FUNC(namcos10_state::control_r), FUNC(namcos10_state::control_w));
+ map(0x1fba0002, 0x1fba0003).rw(this, FUNC(namcos10_state::sprot_r), FUNC(namcos10_state::sprot_w));
+ map(0x1fba0008, 0x1fba0009).rw(this, FUNC(namcos10_state::i2c_clock_r), FUNC(namcos10_state::i2c_clock_w));
+ map(0x1fba000a, 0x1fba000b).rw(this, FUNC(namcos10_state::i2c_data_r), FUNC(namcos10_state::i2c_data_w));
+}
// memm variant interface
@@ -676,13 +677,14 @@ void namcos10_state::i2c_update()
i2c_prev_clock = clock;
}
-ADDRESS_MAP_START(namcos10_state::namcos10_memm_map)
- AM_IMPORT_FROM(namcos10_map)
+void namcos10_state::namcos10_memm_map(address_map &map)
+{
+ namcos10_map(map);
- AM_RANGE(0x1f300000, 0x1f300003) AM_WRITE16(crypto_switch_w, 0x0000ffff)
- AM_RANGE(0x1f400000, 0x1f5fffff) AM_READ16(range_r, 0xffffffff)
- AM_RANGE(0x1fb40000, 0x1fb4000f) AM_WRITE16(bank_w, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x1f300000, 0x1f300001).w(this, FUNC(namcos10_state::crypto_switch_w));
+ map(0x1f400000, 0x1f5fffff).r(this, FUNC(namcos10_state::range_r));
+ map(0x1fb40000, 0x1fb4000f).w(this, FUNC(namcos10_state::bank_w));
+}
// memn variant interface
@@ -771,19 +773,20 @@ READ16_MEMBER(namcos10_state::nand_block_r)
return block[ offset ];
}
-ADDRESS_MAP_START(namcos10_state::namcos10_memn_map)
- AM_IMPORT_FROM(namcos10_map)
-
- AM_RANGE(0x1f300000, 0x1f300003) AM_WRITE16(crypto_switch_w, 0x0000ffff)
- AM_RANGE(0x1f380000, 0x1f380003) AM_WRITE16(crypto_switch_w, 0x0000ffff)
- AM_RANGE(0x1f400000, 0x1f400003) AM_READ16(nand_status_r, 0x0000ffff)
- AM_RANGE(0x1f410000, 0x1f410003) AM_WRITE8(nand_address1_w, 0x000000ff)
- AM_RANGE(0x1f420000, 0x1f420003) AM_WRITE8(nand_address2_w, 0x000000ff)
- AM_RANGE(0x1f430000, 0x1f430003) AM_WRITE8(nand_address3_w, 0x000000ff)
- AM_RANGE(0x1f440000, 0x1f440003) AM_WRITE8(nand_address4_w, 0x000000ff)
- AM_RANGE(0x1f450000, 0x1f450003) AM_READ16(nand_data_r, 0x0000ffff)
- AM_RANGE(0x1fb60000, 0x1fb60003) AM_READWRITE16(nand_block_r, nand_block_w, 0x0000ffff)
-ADDRESS_MAP_END
+void namcos10_state::namcos10_memn_map(address_map &map)
+{
+ namcos10_map(map);
+
+ map(0x1f300000, 0x1f300001).w(this, FUNC(namcos10_state::crypto_switch_w));
+ map(0x1f380000, 0x1f380001).w(this, FUNC(namcos10_state::crypto_switch_w));
+ map(0x1f400000, 0x1f400001).r(this, FUNC(namcos10_state::nand_status_r));
+ map(0x1f410000, 0x1f410000).w(this, FUNC(namcos10_state::nand_address1_w));
+ map(0x1f420000, 0x1f420000).w(this, FUNC(namcos10_state::nand_address2_w));
+ map(0x1f430000, 0x1f430000).w(this, FUNC(namcos10_state::nand_address3_w));
+ map(0x1f440000, 0x1f440000).w(this, FUNC(namcos10_state::nand_address4_w));
+ map(0x1f450000, 0x1f450001).r(this, FUNC(namcos10_state::nand_data_r));
+ map(0x1fb60000, 0x1fb60001).rw(this, FUNC(namcos10_state::nand_block_r), FUNC(namcos10_state::nand_block_w));
+}
void namcos10_state::memn_driver_init( )
{
diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp
index ed257fda765..7a33f11b913 100644
--- a/src/mame/drivers/namcos11.cpp
+++ b/src/mame/drivers/namcos11.cpp
@@ -464,75 +464,81 @@ WRITE16_MEMBER( namcos11_state::c76_shared_w )
COMBINE_DATA( &m_sharedram.target()[ offset ] );
}
-ADDRESS_MAP_START(namcos11_state::namcos11_map)
- AM_RANGE(0x1fa04000, 0x1fa0ffff) AM_READWRITE16(c76_shared_r, c76_shared_w, 0xffffffff) /* shared ram with C76 */
- AM_RANGE(0x1fa20000, 0x1fa2001f) AM_DEVREADWRITE16("keycus", ns11_keycus_device, read, write, 0xffffffff)
- AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITENOP /* ?? */
- AM_RANGE(0x1fbf6000, 0x1fbf6003) AM_WRITENOP /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos11_state::rom8_map)
- AM_IMPORT_FROM(namcos11_map)
-
- AM_RANGE(0x1f000000, 0x1f0fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x1f100000, 0x1f1fffff) AM_ROMBANK("bank2")
- AM_RANGE(0x1f200000, 0x1f2fffff) AM_ROMBANK("bank3")
- AM_RANGE(0x1f300000, 0x1f3fffff) AM_ROMBANK("bank4")
- AM_RANGE(0x1f400000, 0x1f4fffff) AM_ROMBANK("bank5")
- AM_RANGE(0x1f500000, 0x1f5fffff) AM_ROMBANK("bank6")
- AM_RANGE(0x1f600000, 0x1f6fffff) AM_ROMBANK("bank7")
- AM_RANGE(0x1f700000, 0x1f7fffff) AM_ROMBANK("bank8")
- AM_RANGE(0x1fa10020, 0x1fa1002f) AM_WRITE16(rom8_w, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos11_state::rom8_64_map)
- AM_IMPORT_FROM(namcos11_map)
-
- AM_RANGE(0x1f000000, 0x1f0fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x1f100000, 0x1f1fffff) AM_ROMBANK("bank2")
- AM_RANGE(0x1f200000, 0x1f2fffff) AM_ROMBANK("bank3")
- AM_RANGE(0x1f300000, 0x1f3fffff) AM_ROMBANK("bank4")
- AM_RANGE(0x1f400000, 0x1f4fffff) AM_ROMBANK("bank5")
- AM_RANGE(0x1f500000, 0x1f5fffff) AM_ROMBANK("bank6")
- AM_RANGE(0x1f600000, 0x1f6fffff) AM_ROMBANK("bank7")
- AM_RANGE(0x1f700000, 0x1f7fffff) AM_ROMBANK("bank8")
- AM_RANGE(0x1f080000, 0x1f080003) AM_WRITE16(rom8_64_upper_w, 0xffffffff)
- AM_RANGE(0x1fa10020, 0x1fa1002f) AM_READNOP AM_WRITE16(rom8_64_w, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos11_state::ptblank2ua_map)
- AM_IMPORT_FROM(rom8_64_map)
-
- AM_RANGE(0x1f780000, 0x1f78000f) AM_READ16(lightgun_r, 0xffffffff)
- AM_RANGE(0x1f788000, 0x1f788003) AM_WRITE16(lightgun_w, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos11_state::c76_map)
- AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x001000, 0x001001) AM_READ_PORT("PLAYER4")
- AM_RANGE(0x001002, 0x001003) AM_READ_PORT("SWITCH")
- AM_RANGE(0x001004, 0x001005) AM_READ_PORT("PLAYER1")
- AM_RANGE(0x001006, 0x001007) AM_READ_PORT("PLAYER2")
- AM_RANGE(0x004000, 0x00bfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("c76", 0)
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c76", 0)
- AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("c76", 0)
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP
- AM_RANGE(0x301000, 0x301001) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos11_state::c76_io_map)
- AM_RANGE(M37710_ADC0_H, M37710_ADC7_H) AM_READNOP
- AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ_PORT("ADC0")
- AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ_PORT("ADC1")
- AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ_PORT("ADC2")
- AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ_PORT("ADC3")
- AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ_PORT("ADC4")
- AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ_PORT("ADC5")
- AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ_PORT("ADC6")
- AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ_PORT("ADC7")
-ADDRESS_MAP_END
+void namcos11_state::namcos11_map(address_map &map)
+{
+ map(0x1fa04000, 0x1fa0ffff).rw(this, FUNC(namcos11_state::c76_shared_r), FUNC(namcos11_state::c76_shared_w)); /* shared ram with C76 */
+ map(0x1fa20000, 0x1fa2001f).rw("keycus", FUNC(ns11_keycus_device::read), FUNC(ns11_keycus_device::write));
+ map(0x1fa30000, 0x1fa30fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x00ff00ff); /* eeprom */
+ map(0x1fb00000, 0x1fb00003).nopw(); /* ?? */
+ map(0x1fbf6000, 0x1fbf6003).nopw(); /* ?? */
+}
+
+void namcos11_state::rom8_map(address_map &map)
+{
+ namcos11_map(map);
+
+ map(0x1f000000, 0x1f0fffff).bankr("bank1");
+ map(0x1f100000, 0x1f1fffff).bankr("bank2");
+ map(0x1f200000, 0x1f2fffff).bankr("bank3");
+ map(0x1f300000, 0x1f3fffff).bankr("bank4");
+ map(0x1f400000, 0x1f4fffff).bankr("bank5");
+ map(0x1f500000, 0x1f5fffff).bankr("bank6");
+ map(0x1f600000, 0x1f6fffff).bankr("bank7");
+ map(0x1f700000, 0x1f7fffff).bankr("bank8");
+ map(0x1fa10020, 0x1fa1002f).w(this, FUNC(namcos11_state::rom8_w));
+}
+
+void namcos11_state::rom8_64_map(address_map &map)
+{
+ namcos11_map(map);
+
+ map(0x1f000000, 0x1f0fffff).bankr("bank1");
+ map(0x1f100000, 0x1f1fffff).bankr("bank2");
+ map(0x1f200000, 0x1f2fffff).bankr("bank3");
+ map(0x1f300000, 0x1f3fffff).bankr("bank4");
+ map(0x1f400000, 0x1f4fffff).bankr("bank5");
+ map(0x1f500000, 0x1f5fffff).bankr("bank6");
+ map(0x1f600000, 0x1f6fffff).bankr("bank7");
+ map(0x1f700000, 0x1f7fffff).bankr("bank8");
+ map(0x1f080000, 0x1f080003).w(this, FUNC(namcos11_state::rom8_64_upper_w));
+ map(0x1fa10020, 0x1fa1002f).nopr().w(this, FUNC(namcos11_state::rom8_64_w));
+}
+
+void namcos11_state::ptblank2ua_map(address_map &map)
+{
+ rom8_64_map(map);
+
+ map(0x1f780000, 0x1f78000f).r(this, FUNC(namcos11_state::lightgun_r));
+ map(0x1f788000, 0x1f788003).w(this, FUNC(namcos11_state::lightgun_w));
+}
+
+void namcos11_state::c76_map(address_map &map)
+{
+ map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x001000, 0x001001).portr("PLAYER4");
+ map(0x001002, 0x001003).portr("SWITCH");
+ map(0x001004, 0x001005).portr("PLAYER1");
+ map(0x001006, 0x001007).portr("PLAYER2");
+ map(0x004000, 0x00bfff).ram().share("sharedram");
+ map(0x080000, 0x0fffff).rom().region("c76", 0);
+ map(0x200000, 0x27ffff).rom().region("c76", 0);
+ map(0x280000, 0x2fffff).rom().region("c76", 0);
+ map(0x300000, 0x300001).nopw();
+ map(0x301000, 0x301001).nopw();
+}
+
+void namcos11_state::c76_io_map(address_map &map)
+{
+ map(M37710_ADC0_H, M37710_ADC7_H).nopr();
+ map(M37710_ADC0_L, M37710_ADC0_L).portr("ADC0");
+ map(M37710_ADC1_L, M37710_ADC1_L).portr("ADC1");
+ map(M37710_ADC2_L, M37710_ADC2_L).portr("ADC2");
+ map(M37710_ADC3_L, M37710_ADC3_L).portr("ADC3");
+ map(M37710_ADC4_L, M37710_ADC4_L).portr("ADC4");
+ map(M37710_ADC5_L, M37710_ADC5_L).portr("ADC5");
+ map(M37710_ADC6_L, M37710_ADC6_L).portr("ADC6");
+ map(M37710_ADC7_L, M37710_ADC7_L).portr("ADC7");
+}
READ16_MEMBER(namcos11_state::c76_speedup_r)
{
diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp
index 4207cb71e43..dcee22ab234 100644
--- a/src/mame/drivers/namcos12.cpp
+++ b/src/mame/drivers/namcos12.cpp
@@ -1333,34 +1333,38 @@ void namcos12_state::namcos12_sub_irq( screen_device &screen, bool vblank_state
m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7);
}
-ADDRESS_MAP_START(namcos12_state::namcos12_map)
- AM_RANGE(0x1f000000, 0x1f000003) AM_READNOP AM_WRITE16(bankoffset_w, 0x0000ffff) /* banking */
- AM_RANGE(0x1f080000, 0x1f083fff) AM_READWRITE16(sharedram_r, sharedram_w, 0xffffffff) /* shared ram?? */
- AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */
- AM_RANGE(0x1f1bff08, 0x1f1bff0f) AM_WRITENOP /* ?? */
- AM_RANGE(0x1f700000, 0x1f70ffff) AM_WRITE16(dmaoffset_w, 0xffffffff) /* dma */
+void namcos12_state::namcos12_map(address_map &map)
+{
+ map(0x1f000000, 0x1f000003).nopr();
+ map(0x1f000000, 0x1f000001).w(this, FUNC(namcos12_state::bankoffset_w)); /* banking */
+ map(0x1f080000, 0x1f083fff).rw(this, FUNC(namcos12_state::sharedram_r), FUNC(namcos12_state::sharedram_w)); /* shared ram?? */
+ map(0x1f140000, 0x1f140fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x00ff00ff); /* eeprom */
+ map(0x1f1bff08, 0x1f1bff0f).nopw(); /* ?? */
+ map(0x1f700000, 0x1f70ffff).w(this, FUNC(namcos12_state::dmaoffset_w)); /* dma */
/* Network area */
-// AM_RANGE(0x1f780000, 0x1f78ffff) AM_READWRITE16(link_sharedram_r, link_sharedram_w, 0xffffffff) /* H8 link CPU code */
-// AM_RANGE(0x1f796000, 0x1f796003) AM_WRITE16(linkcpu_enable_w,0xffff0000)
-// AM_RANGE(0x1f796020, 0x1f796023) AM_WRITE16(linkcpu_disable_w,0xffff0000)
+// map(0x1f780000, 0x1f78ffff).rw(this, FUNC(namcos12_state::link_sharedram_r), FUNC(namcos12_state::link_sharedram_w)); /* H8 link CPU code */
+// map(0x1f796002, 0x1f796003).w(this, FUNC(namcos12_state::linkcpu_enable_w));
+// map(0x1f796022, 0x1f796023).w(this, FUNC(namcos12_state::linkcpu_disable_w));
- AM_RANGE(0x1fa00000, 0x1fbfffff) AM_ROMBANK("bank1") /* banked roms */
-ADDRESS_MAP_END
+ map(0x1fa00000, 0x1fbfffff).bankr("bank1"); /* banked roms */
+}
-ADDRESS_MAP_START(namcos12_state::ptblank2_map)
- AM_IMPORT_FROM( namcos12_map )
+void namcos12_state::ptblank2_map(address_map &map)
+{
+ namcos12_map(map);
- AM_RANGE(0x1f780000, 0x1f78000f) AM_READ16(system11gun_r, 0xffffffff)
- AM_RANGE(0x1f788000, 0x1f788003) AM_WRITE16(system11gun_w, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x1f780000, 0x1f78000f).r(this, FUNC(namcos12_state::system11gun_r));
+ map(0x1f788000, 0x1f788003).w(this, FUNC(namcos12_state::system11gun_w));
+}
-ADDRESS_MAP_START(namcos12_state::tektagt_map)
- AM_IMPORT_FROM( namcos12_map )
+void namcos12_state::tektagt_map(address_map &map)
+{
+ namcos12_map(map);
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_READWRITE16(tektagt_protection_1_r, tektagt_protection_1_w, 0xffffffff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_READWRITE16(tektagt_protection_2_r, tektagt_protection_2_w, 0xffffffff)
- AM_RANGE(0x1f700000, 0x1f700003) AM_READ16(tektagt_protection_3_r, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x1fb00000, 0x1fb00003).rw(this, FUNC(namcos12_state::tektagt_protection_1_r), FUNC(namcos12_state::tektagt_protection_1_w));
+ map(0x1fb80000, 0x1fb80003).rw(this, FUNC(namcos12_state::tektagt_protection_2_r), FUNC(namcos12_state::tektagt_protection_2_w));
+ map(0x1f700000, 0x1f700003).r(this, FUNC(namcos12_state::tektagt_protection_3_r));
+}
WRITE16_MEMBER(namcos12_state::system11gun_w)
{
@@ -1533,26 +1537,28 @@ void namcos12_boothack_state::machine_reset()
}
/* H8/3002 MCU stuff */
-ADDRESS_MAP_START(namcos12_state::s12h8rwmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")
- AM_RANGE(0x300010, 0x300011) AM_NOP // golgo13 writes here a lot, possibly also a wait state generator?
- AM_RANGE(0x300030, 0x300031) AM_NOP // most S12 bioses write here simply to generate a wait state. there is no deeper meaning.
-ADDRESS_MAP_END
+void namcos12_state::s12h8rwmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram().share("sharedram");
+ map(0x280000, 0x287fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x300000, 0x300001).portr("IN0");
+ map(0x300002, 0x300003).portr("IN1");
+ map(0x300010, 0x300011).noprw(); // golgo13 writes here a lot, possibly also a wait state generator?
+ map(0x300030, 0x300031).noprw(); // most S12 bioses write here simply to generate a wait state. there is no deeper meaning.
+}
// map for JVS games w/o controls connected directly
-ADDRESS_MAP_START(namcos12_state::s12h8rwjvsmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DIN0")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DIN1")
- AM_RANGE(0x300010, 0x300011) AM_NOP
- AM_RANGE(0x300030, 0x300031) AM_NOP // most S12 bioses write here simply to generate a wait state. there is no deeper meaning.
-ADDRESS_MAP_END
+void namcos12_state::s12h8rwjvsmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram().share("sharedram");
+ map(0x280000, 0x287fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x300000, 0x300001).portr("DIN0");
+ map(0x300002, 0x300003).portr("DIN1");
+ map(0x300010, 0x300011).noprw();
+ map(0x300030, 0x300031).noprw(); // most S12 bioses write here simply to generate a wait state. there is no deeper meaning.
+}
READ16_MEMBER(namcos12_state::s12_mcu_p8_r)
{
@@ -1598,41 +1604,44 @@ READ16_MEMBER(namcos12_state::s12_mcu_jvs_p8_r)
return 0x12; // bit 4 = JVS enable. aplarail requires it to be on, soulclbr & others will require JVS I/O if it's on
}
-ADDRESS_MAP_START(namcos12_state::s12h8iomap)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(s12_mcu_p6_r)
- AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW")
- AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_p8_r) AM_WRITENOP
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w)
- AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w)
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
- AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos12_state::s12h8jvsiomap)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(s12_mcu_p6_r)
- AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW")
- AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_jvs_p8_r) AM_WRITENOP
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w)
- AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w)
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
- AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos12_state::s12h8railiomap)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(s12_mcu_p6_r)
- AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW")
- AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_jvs_p8_r) AM_WRITENOP
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w)
- AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w)
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_READ_PORT("LEVER")
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
- AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP
-ADDRESS_MAP_END
+void namcos12_state::s12h8iomap(address_map &map)
+{
+ map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::s12_mcu_p6_r));
+ map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW");
+ map(h8_device::PORT_8, h8_device::PORT_8).r(this, FUNC(namcos12_state::s12_mcu_p8_r)).nopw();
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w));
+ map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w));
+ map(h8_device::ADC_0, h8_device::ADC_0).noprw();
+ map(h8_device::ADC_1, h8_device::ADC_1).noprw();
+ map(h8_device::ADC_2, h8_device::ADC_2).noprw();
+ map(h8_device::ADC_3, h8_device::ADC_3).noprw();
+}
+
+void namcos12_state::s12h8jvsiomap(address_map &map)
+{
+ map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::s12_mcu_p6_r));
+ map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW");
+ map(h8_device::PORT_8, h8_device::PORT_8).r(this, FUNC(namcos12_state::s12_mcu_jvs_p8_r)).nopw();
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w));
+ map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w));
+ map(h8_device::ADC_0, h8_device::ADC_0).noprw();
+ map(h8_device::ADC_1, h8_device::ADC_1).noprw();
+ map(h8_device::ADC_2, h8_device::ADC_2).noprw();
+ map(h8_device::ADC_3, h8_device::ADC_3).noprw();
+}
+
+void namcos12_state::s12h8railiomap(address_map &map)
+{
+ map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::s12_mcu_p6_r));
+ map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW");
+ map(h8_device::PORT_8, h8_device::PORT_8).r(this, FUNC(namcos12_state::s12_mcu_jvs_p8_r)).nopw();
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w));
+ map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w));
+ map(h8_device::ADC_0, h8_device::ADC_0).portr("LEVER");
+ map(h8_device::ADC_1, h8_device::ADC_1).noprw();
+ map(h8_device::ADC_2, h8_device::ADC_2).noprw();
+ map(h8_device::ADC_3, h8_device::ADC_3).noprw();
+}
// Golgo 13 lightgun inputs
@@ -1646,13 +1655,13 @@ READ16_MEMBER(namcos12_state::s12_mcu_gun_v_r)
return ioport("LIGHT0_Y")->read();
}
-ADDRESS_MAP_START(namcos12_state::golgo13_h8iomap)
- AM_IMPORT_FROM( s12h8iomap )
-
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(s12_mcu_gun_h_r)
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(s12_mcu_gun_v_r)
-ADDRESS_MAP_END
+void namcos12_state::golgo13_h8iomap(address_map &map)
+{
+ s12h8iomap(map);
+ map(h8_device::ADC_1, h8_device::ADC_1).r(this, FUNC(namcos12_state::s12_mcu_gun_h_r));
+ map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(namcos12_state::s12_mcu_gun_v_r));
+}
DRIVER_INIT_MEMBER(namcos12_state,namcos12)
{
@@ -1752,13 +1761,15 @@ MACHINE_CONFIG_START(namcos12_boothack_state::golgo13)
MACHINE_CONFIG_END
#define JVSCLOCK (XTAL(14'745'600))
-ADDRESS_MAP_START(namcos12_state::jvsmap)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("iocpu", 0)
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void namcos12_state::jvsmap(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("iocpu", 0);
+ map(0xc000, 0xffff).ram();
+}
-ADDRESS_MAP_START(namcos12_state::jvsiomap)
-ADDRESS_MAP_END
+void namcos12_state::jvsiomap(address_map &map)
+{
+}
MACHINE_CONFIG_START(namcos12_boothack_state::truckk)
@@ -1801,35 +1812,39 @@ READ16_MEMBER(namcos12_state::iob_p6_r)
return sb | 0;
}
-ADDRESS_MAP_START(namcos12_state::tdjvsmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("iocpu", 0)
- AM_RANGE(0x6000, 0x6001) AM_READ_PORT("IN01")
- AM_RANGE(0x6002, 0x6003) AM_READ_PORT("IN23")
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos12_state::tdjvsiomap)
- AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READWRITE(iob_p4_r, iob_p4_w)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(iob_p6_r)
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_READ_PORT("STEER")
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ_PORT("BRAKE")
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ_PORT("GAS")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos12_state::plarailjvsmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("iocpu", 0)
- AM_RANGE(0x6000, 0x6001) AM_READ_PORT("IN01")
- AM_RANGE(0x6002, 0x6003) AM_READ_PORT("IN23")
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos12_state::plarailjvsiomap)
- AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READWRITE(iob_p4_r, iob_p4_w)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ_PORT("SERVICE")
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
-ADDRESS_MAP_END
+void namcos12_state::tdjvsmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("iocpu", 0);
+ map(0x6000, 0x6001).portr("IN01");
+ map(0x6002, 0x6003).portr("IN23");
+ map(0xc000, 0xffff).ram();
+}
+
+void namcos12_state::tdjvsiomap(address_map &map)
+{
+ map(h8_device::PORT_4, h8_device::PORT_4).rw(this, FUNC(namcos12_state::iob_p4_r), FUNC(namcos12_state::iob_p4_w));
+ map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::iob_p6_r));
+ map(h8_device::ADC_0, h8_device::ADC_0).portr("STEER");
+ map(h8_device::ADC_1, h8_device::ADC_1).portr("BRAKE");
+ map(h8_device::ADC_2, h8_device::ADC_2).portr("GAS");
+}
+
+void namcos12_state::plarailjvsmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("iocpu", 0);
+ map(0x6000, 0x6001).portr("IN01");
+ map(0x6002, 0x6003).portr("IN23");
+ map(0xc000, 0xffff).ram();
+}
+
+void namcos12_state::plarailjvsiomap(address_map &map)
+{
+ map(h8_device::PORT_4, h8_device::PORT_4).rw(this, FUNC(namcos12_state::iob_p4_r), FUNC(namcos12_state::iob_p4_w));
+ map(h8_device::PORT_6, h8_device::PORT_6).portr("SERVICE");
+ map(h8_device::ADC_0, h8_device::ADC_0).noprw();
+ map(h8_device::ADC_1, h8_device::ADC_1).noprw();
+ map(h8_device::ADC_2, h8_device::ADC_2).noprw();
+}
MACHINE_CONFIG_START(namcos12_boothack_state::technodr)
coh700(config);
diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp
index 0ca0d08fa23..68a49ab974d 100644
--- a/src/mame/drivers/namcos2.cpp
+++ b/src/mame/drivers/namcos2.cpp
@@ -594,192 +594,210 @@ READ8_MEMBER(namcos2_state::ack_mcu_vbl_r)
0xc00000 ONWARDS are unverified memory locations on the video board
*/
-ADDRESS_MAP_START(namcos2_state::namcos2_68k_default_cpu_board_am)
- AM_RANGE(0x200000, 0x3fffff) AM_ROM AM_REGION("data_rom", 0)
- AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(c123_tilemap_videoram_r,c123_tilemap_videoram_w)
- AM_RANGE(0x420000, 0x42003f) AM_READWRITE(c123_tilemap_control_r,c123_tilemap_control_w)
- AM_RANGE(0x440000, 0x44ffff) AM_READWRITE(paletteram_word_r,paletteram_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x460000, 0x460fff) AM_MIRROR(0xf000) AM_READWRITE(dpram_word_r,dpram_word_w)
- AM_RANGE(0x480000, 0x483fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
- AM_RANGE(0x4a0000, 0x4a000f) AM_DEVICE("sci", namco_c139_device, regs_map)
-ADDRESS_MAP_END
+void namcos2_state::namcos2_68k_default_cpu_board_am(address_map &map)
+{
+ map(0x200000, 0x3fffff).rom().region("data_rom", 0);
+ map(0x400000, 0x41ffff).rw(this, FUNC(namcos2_state::c123_tilemap_videoram_r), FUNC(namcos2_state::c123_tilemap_videoram_w));
+ map(0x420000, 0x42003f).rw(this, FUNC(namcos2_state::c123_tilemap_control_r), FUNC(namcos2_state::c123_tilemap_control_w));
+ map(0x440000, 0x44ffff).rw(this, FUNC(namcos2_state::paletteram_word_r), FUNC(namcos2_state::paletteram_word_w)).share("paletteram");
+ map(0x460000, 0x460fff).mirror(0xf000).rw(this, FUNC(namcos2_state::dpram_word_r), FUNC(namcos2_state::dpram_word_w));
+ map(0x480000, 0x483fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
+ map(0x4a0000, 0x4a000f).m(m_sci, FUNC(namco_c139_device::regs_map));
+}
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::common_default_am)
- AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc40000, 0xc40001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w)
- AM_RANGE(0xc80000, 0xc9ffff) AM_RAM_WRITE(rozram_word_w) AM_SHARE("rozram")
- AM_RANGE(0xcc0000, 0xcc000f) AM_RAM AM_SHARE("rozctrl")
- AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::master_default_am)
- AM_IMPORT_FROM( common_default_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM)
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::slave_default_am)
- AM_IMPORT_FROM( common_default_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
-ADDRESS_MAP_END
+void namcos2_state::common_default_am(address_map &map)
+{
+ namcos2_68k_default_cpu_board_am(map);
+ map(0xc00000, 0xc03fff).ram().share("spriteram");
+ map(0xc40000, 0xc40001).rw(this, FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w));
+ map(0xc80000, 0xc9ffff).ram().w(this, FUNC(namcos2_state::rozram_word_w)).share("rozram");
+ map(0xcc0000, 0xcc000f).ram().share("rozctrl");
+ map(0xd00000, 0xd0000f).rw(this, FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w));
+}
+
+void namcos2_state::master_default_am(address_map &map)
+{
+ common_default_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM);
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+}
+
+void namcos2_state::slave_default_am(address_map &map)
+{
+ common_default_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM);
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+}
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::common_finallap_am)
- AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
- AM_RANGE(0x300000, 0x33ffff) AM_READ(namcos2_finallap_prot_r)
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x840000, 0x840001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w)
- AM_RANGE(0x880000, 0x89ffff) AM_DEVREADWRITE("c45_road", namco_c45_road_device, read, write)
- AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::master_finallap_am)
- AM_IMPORT_FROM( common_finallap_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM)
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::slave_finallap_am)
- AM_IMPORT_FROM( common_finallap_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
-ADDRESS_MAP_END
+void namcos2_state::common_finallap_am(address_map &map)
+{
+ namcos2_68k_default_cpu_board_am(map);
+ map(0x300000, 0x33ffff).r(this, FUNC(namcos2_state::namcos2_finallap_prot_r));
+ map(0x800000, 0x80ffff).ram().share("spriteram");
+ map(0x840000, 0x840001).rw(this, FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w));
+ map(0x880000, 0x89ffff).rw(m_c45_road, FUNC(namco_c45_road_device::read), FUNC(namco_c45_road_device::write));
+ map(0x8c0000, 0x8c0001).nopw();
+}
+
+void namcos2_state::master_finallap_am(address_map &map)
+{
+ common_finallap_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM);
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+}
+
+void namcos2_state::slave_finallap_am(address_map &map)
+{
+ common_finallap_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM);
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+}
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::common_sgunner_am)
- AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
- AM_RANGE(0x800000, 0x8141ff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w)
- AM_RANGE(0x818000, 0x818001) AM_WRITENOP
- AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::master_sgunner_am)
- AM_IMPORT_FROM( common_sgunner_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM)
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::slave_sgunner_am)
- AM_IMPORT_FROM( common_sgunner_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
-ADDRESS_MAP_END
+void namcos2_state::common_sgunner_am(address_map &map)
+{
+ namcos2_68k_default_cpu_board_am(map);
+ map(0x800000, 0x8141ff).rw(this, FUNC(namcos2_state::c355_obj_ram_r), FUNC(namcos2_state::c355_obj_ram_w));
+ map(0x818000, 0x818001).nopw();
+ map(0xa00000, 0xa0000f).rw(this, FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w));
+}
+
+void namcos2_state::master_sgunner_am(address_map &map)
+{
+ common_sgunner_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM);
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+}
+
+void namcos2_state::slave_sgunner_am(address_map &map)
+{
+ common_sgunner_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM);
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+}
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::common_metlhawk_am)
- AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc40000, 0xc4ffff) AM_READWRITE(c169_roz_videoram_r,c169_roz_videoram_w) AM_SHARE("rozvideoram")
- AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(c169_roz_control_r,c169_roz_control_w)
- AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w) /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::master_metlhawk_am)
- AM_IMPORT_FROM( common_metlhawk_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM)
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::slave_metlhawk_am)
- AM_IMPORT_FROM( common_metlhawk_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
-ADDRESS_MAP_END
+void namcos2_state::common_metlhawk_am(address_map &map)
+{
+ namcos2_68k_default_cpu_board_am(map);
+ map(0xc00000, 0xc03fff).ram().share("spriteram");
+ map(0xc40000, 0xc4ffff).rw(this, FUNC(namcos2_state::c169_roz_videoram_r), FUNC(namcos2_state::c169_roz_videoram_w)).share("rozvideoram");
+ map(0xd00000, 0xd0001f).rw(this, FUNC(namcos2_state::c169_roz_control_r), FUNC(namcos2_state::c169_roz_control_w));
+ map(0xe00000, 0xe00001).rw(this, FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w)); /* ??? */
+}
+
+void namcos2_state::master_metlhawk_am(address_map &map)
+{
+ common_metlhawk_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM);
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+}
+
+void namcos2_state::slave_metlhawk_am(address_map &map)
+{
+ common_metlhawk_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM);
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+}
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::common_luckywld_am)
- AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
- AM_RANGE(0x800000, 0x8141ff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w)
- AM_RANGE(0x818000, 0x818001) AM_NOP /* enable? */
- AM_RANGE(0x81a000, 0x81a001) AM_WRITENOP /* enable? */
- AM_RANGE(0x840000, 0x840001) AM_READNOP
- AM_RANGE(0x900000, 0x900007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w)
- AM_RANGE(0xa00000, 0xa1ffff) AM_DEVREADWRITE("c45_road", namco_c45_road_device, read, write)
- AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(c169_roz_videoram_r,c169_roz_videoram_w) AM_SHARE("rozvideoram")
- AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(c169_roz_control_r,c169_roz_control_w)
- AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::master_luckywld_am)
- AM_IMPORT_FROM( common_luckywld_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM)
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos2_state::slave_luckywld_am)
- AM_IMPORT_FROM( common_luckywld_am )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
-ADDRESS_MAP_END
+void namcos2_state::common_luckywld_am(address_map &map)
+{
+ namcos2_68k_default_cpu_board_am(map);
+ map(0x800000, 0x8141ff).rw(this, FUNC(namcos2_state::c355_obj_ram_r), FUNC(namcos2_state::c355_obj_ram_w));
+ map(0x818000, 0x818001).noprw(); /* enable? */
+ map(0x81a000, 0x81a001).nopw(); /* enable? */
+ map(0x840000, 0x840001).nopr();
+ map(0x900000, 0x900007).rw(this, FUNC(namcos2_state::c355_obj_position_r), FUNC(namcos2_state::c355_obj_position_w));
+ map(0xa00000, 0xa1ffff).rw(m_c45_road, FUNC(namco_c45_road_device::read), FUNC(namco_c45_road_device::write));
+ map(0xc00000, 0xc0ffff).rw(this, FUNC(namcos2_state::c169_roz_videoram_r), FUNC(namcos2_state::c169_roz_videoram_w)).share("rozvideoram");
+ map(0xd00000, 0xd0001f).rw(this, FUNC(namcos2_state::c169_roz_control_r), FUNC(namcos2_state::c169_roz_control_w));
+ map(0xf00000, 0xf00007).rw(this, FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w));
+}
+
+void namcos2_state::master_luckywld_am(address_map &map)
+{
+ common_luckywld_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM);
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+}
+
+void namcos2_state::slave_luckywld_am(address_map &map)
+{
+ common_luckywld_am(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM);
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+}
/*************************************************************/
/* 6809 SOUND CPU Memory declarations */
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::sound_default_am)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */
- AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_device, c140_r,c140_w)
- AM_RANGE(0x7000, 0x77ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram")
- AM_RANGE(0x7800, 0x7fff) AM_READWRITE(dpram_byte_r,dpram_byte_w) /* mirror */
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* Amplifier enable on 1st write */
- AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos2_sound_bankselect_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* Watchdog */
- AM_RANGE(0xe000, 0xe000) AM_WRITENOP
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void namcos2_state::sound_default_am(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank6"); /* banked */
+ map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x5000, 0x6fff).rw("c140", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w));
+ map(0x7000, 0x77ff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram");
+ map(0x7800, 0x7fff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)); /* mirror */
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).nopw(); /* Amplifier enable on 1st write */
+ map(0xc000, 0xc001).w(this, FUNC(namcos2_state::namcos2_sound_bankselect_w));
+ map(0xd001, 0xd001).nopw(); /* Watchdog */
+ map(0xe000, 0xe000).nopw();
+ map(0xd000, 0xffff).rom();
+}
/*************************************************************/
/* 68705 IO CPU Memory declarations */
/*************************************************************/
-ADDRESS_MAP_START(namcos2_state::mcu_default_am)
+void namcos2_state::mcu_default_am(address_map &map)
+{
/* input ports and dips are mapped here */
- AM_RANGE(0x0000, 0x003f) AM_RAM /* Fill in register to stop logging */
- AM_RANGE(0x0000, 0x0000) AM_READNOP /* Keep logging quiet */
- AM_RANGE(0x0001, 0x0001) AM_READ_PORT("MCUB")
- AM_RANGE(0x0002, 0x0002) AM_READ_PORT("MCUC")
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(namcos2_mcu_port_d_r,namcos2_mcu_port_d_w)
- AM_RANGE(0x0007, 0x0007) AM_READ_PORT("MCUH")
- AM_RANGE(0x0010, 0x0010) AM_READWRITE(namcos2_mcu_analog_ctrl_r,namcos2_mcu_analog_ctrl_w)
- AM_RANGE(0x0011, 0x0011) AM_READWRITE(namcos2_mcu_analog_port_r,namcos2_mcu_analog_port_w)
- AM_RANGE(0x0040, 0x01bf) AM_RAM
- AM_RANGE(0x01c0, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("MCUDI0")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3")
- AM_RANGE(0x5000, 0x57ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram")
- AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0000, 0x003f).ram(); /* Fill in register to stop logging */
+ map(0x0000, 0x0000).nopr(); /* Keep logging quiet */
+ map(0x0001, 0x0001).portr("MCUB");
+ map(0x0002, 0x0002).portr("MCUC");
+ map(0x0003, 0x0003).rw(this, FUNC(namcos2_state::namcos2_mcu_port_d_r), FUNC(namcos2_state::namcos2_mcu_port_d_w));
+ map(0x0007, 0x0007).portr("MCUH");
+ map(0x0010, 0x0010).rw(this, FUNC(namcos2_state::namcos2_mcu_analog_ctrl_r), FUNC(namcos2_state::namcos2_mcu_analog_ctrl_w));
+ map(0x0011, 0x0011).rw(this, FUNC(namcos2_state::namcos2_mcu_analog_port_r), FUNC(namcos2_state::namcos2_mcu_analog_port_w));
+ map(0x0040, 0x01bf).ram();
+ map(0x01c0, 0x1fff).rom();
+ map(0x2000, 0x2000).portr("DSW");
+ map(0x3000, 0x3000).portr("MCUDI0");
+ map(0x3001, 0x3001).portr("MCUDI1");
+ map(0x3002, 0x3002).portr("MCUDI2");
+ map(0x3003, 0x3003).portr("MCUDI3");
+ map(0x5000, 0x57ff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram");
+ map(0x6000, 0x6fff).nopr(); /* watchdog */
+ map(0x8000, 0xffff).rom();
+}
/*************************************************************/
@@ -795,17 +813,18 @@ WRITE8_MEMBER(namcos2_state::c68_p3_w)
m_player_mux = (data & 0x80) ? 1 : 0;
}
-ADDRESS_MAP_START(namcos2_state::c68_default_am)
+void namcos2_state::c68_default_am(address_map &map)
+{
/* input ports and dips are mapped here */
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("MCUDI0")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3")
- AM_RANGE(0x5000, 0x57ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram")
- AM_RANGE(0x6000, 0x6fff) AM_READ(ack_mcu_vbl_r) // VBL ack
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("c68", 0)
-ADDRESS_MAP_END
+ map(0x2000, 0x2000).portr("DSW");
+ map(0x3000, 0x3000).portr("MCUDI0");
+ map(0x3001, 0x3001).portr("MCUDI1");
+ map(0x3002, 0x3002).portr("MCUDI2");
+ map(0x3003, 0x3003).portr("MCUDI3");
+ map(0x5000, 0x57ff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram");
+ map(0x6000, 0x6fff).r(this, FUNC(namcos2_state::ack_mcu_vbl_r)); // VBL ack
+ map(0x8000, 0xffff).rom().region("c68", 0);
+}
/*************************************************************/
/* */
diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp
index ff6e13a3ecc..6fb7f7e9ace 100644
--- a/src/mame/drivers/namcos21.cpp
+++ b/src/mame/drivers/namcos21.cpp
@@ -978,29 +978,32 @@ WRITE16_MEMBER(namcos21_state::dsp_xf_w)
if (ENABLE_LOGGING) logerror("xf(%d)\n",data);
}
-ADDRESS_MAP_START(namcos21_state::master_dsp_program)
- AM_RANGE(0x0000, 0x0fff) AM_ROM /* BIOS */
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("master_dsp_code")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::master_dsp_data)
- AM_RANGE(0x2000, 0x200f) AM_READWRITE(dspcuskey_r,dspcuskey_w)
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram16_r,dspram16_w<false>) /* 0x8000 words */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::master_dsp_io)
- AM_RANGE(0x00,0x00) AM_READWRITE(dsp_port0_r,dsp_port0_w)
- AM_RANGE(0x01,0x01) AM_READWRITE(dsp_port1_r,dsp_port1_w)
- AM_RANGE(0x02,0x02) AM_READWRITE(dsp_port2_r,dsp_port2_w)
- AM_RANGE(0x03,0x03) AM_READWRITE(dsp_port3_idc_rcv_enable_r,dsp_port3_w)
- AM_RANGE(0x04,0x04) AM_WRITE(dsp_port4_w)
- AM_RANGE(0x08,0x08) AM_READWRITE(dsp_port8_r,dsp_port8_w)
- AM_RANGE(0x09,0x09) AM_READ(dsp_port9_r)
- AM_RANGE(0x0a,0x0a) AM_READWRITE(dsp_porta_r,dsp_porta_w)
- AM_RANGE(0x0b,0x0b) AM_READWRITE(dsp_portb_r,dsp_portb_w)
- AM_RANGE(0x0c,0x0c) AM_WRITE(dsp_portc_w)
- AM_RANGE(0x0f,0x0f) AM_READ(dsp_portf_r)
-ADDRESS_MAP_END
+void namcos21_state::master_dsp_program(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); /* BIOS */
+ map(0x8000, 0xbfff).ram().share("master_dsp_code");
+}
+
+void namcos21_state::master_dsp_data(address_map &map)
+{
+ map(0x2000, 0x200f).rw(this, FUNC(namcos21_state::dspcuskey_r), FUNC(namcos21_state::dspcuskey_w));
+ map(0x8000, 0xffff).rw(this, FUNC(namcos21_state::dspram16_r), FUNC(namcos21_state::dspram16_w<false>)); /* 0x8000 words */
+}
+
+void namcos21_state::master_dsp_io(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(namcos21_state::dsp_port0_r), FUNC(namcos21_state::dsp_port0_w));
+ map(0x01, 0x01).rw(this, FUNC(namcos21_state::dsp_port1_r), FUNC(namcos21_state::dsp_port1_w));
+ map(0x02, 0x02).rw(this, FUNC(namcos21_state::dsp_port2_r), FUNC(namcos21_state::dsp_port2_w));
+ map(0x03, 0x03).rw(this, FUNC(namcos21_state::dsp_port3_idc_rcv_enable_r), FUNC(namcos21_state::dsp_port3_w));
+ map(0x04, 0x04).w(this, FUNC(namcos21_state::dsp_port4_w));
+ map(0x08, 0x08).rw(this, FUNC(namcos21_state::dsp_port8_r), FUNC(namcos21_state::dsp_port8_w));
+ map(0x09, 0x09).r(this, FUNC(namcos21_state::dsp_port9_r));
+ map(0x0a, 0x0a).rw(this, FUNC(namcos21_state::dsp_porta_r), FUNC(namcos21_state::dsp_porta_w));
+ map(0x0b, 0x0b).rw(this, FUNC(namcos21_state::dsp_portb_r), FUNC(namcos21_state::dsp_portb_w));
+ map(0x0c, 0x0c).w(this, FUNC(namcos21_state::dsp_portc_w));
+ map(0x0f, 0x0f).r(this, FUNC(namcos21_state::dsp_portf_r));
+}
/************************************************************************************/
@@ -1101,21 +1104,24 @@ READ16_MEMBER(namcos21_state::slave_portf_r)
return 1;
}
-ADDRESS_MAP_START(namcos21_state::slave_dsp_program)
- AM_RANGE(0x0000, 0x0fff) AM_ROM /* BIOS */
- AM_RANGE(0x8000, 0x8fff) AM_RAM
-ADDRESS_MAP_END
+void namcos21_state::slave_dsp_program(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); /* BIOS */
+ map(0x8000, 0x8fff).ram();
+}
-ADDRESS_MAP_START(namcos21_state::slave_dsp_data)
+void namcos21_state::slave_dsp_data(address_map &map)
+{
/* no external data memory */
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(namcos21_state::slave_dsp_io)
- AM_RANGE(0x00,0x00) AM_READWRITE(slave_port0_r,slave_port0_w)
- AM_RANGE(0x02,0x02) AM_READ(slave_port2_r)
- AM_RANGE(0x03,0x03) AM_READWRITE(slave_port3_r,slave_port3_w)
- AM_RANGE(0x0f,0x0f) AM_READ(slave_portf_r)
-ADDRESS_MAP_END
+void namcos21_state::slave_dsp_io(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(namcos21_state::slave_port0_r), FUNC(namcos21_state::slave_port0_w));
+ map(0x02, 0x02).r(this, FUNC(namcos21_state::slave_port2_r));
+ map(0x03, 0x03).rw(this, FUNC(namcos21_state::slave_port3_r), FUNC(namcos21_state::slave_port3_w));
+ map(0x0f, 0x0f).r(this, FUNC(namcos21_state::slave_portf_r));
+}
/************************************************************************************/
@@ -1235,41 +1241,44 @@ WRITE8_MEMBER(namcos21_state::namcos2_dualportram_byte_w)
/* MASTER 68000 CPU Memory declarations */
/*************************************************************/
-ADDRESS_MAP_START(namcos21_state::common_map)
- AM_RANGE(0x280000, 0x280001) AM_WRITENOP /* written once on startup */
- AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
- AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
- AM_RANGE(0x440002, 0x47ffff) AM_WRITENOP /* (?) Air Combat */
- AM_RANGE(0x480000, 0x4807ff) AM_READWRITE(namcos21_depthcue_r,namcos21_depthcue_w) /* Air Combat */
- AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w)
- AM_RANGE(0x720000, 0x720007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w)
- AM_RANGE(0x740000, 0x74ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x750000, 0x75ffff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x760000, 0x760001) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w)
- AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
- AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
- AM_RANGE(0xc00000, 0xcfffff) AM_ROM AM_MIRROR(0x100000) AM_REGION("edata", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::master_map)
- AM_IMPORT_FROM( common_map )
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
- AM_RANGE(0x200000, 0x20ffff) AM_READWRITE(dspram16_r,dspram16_w<true>) AM_SHARE("dspram16")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::slave_map)
- AM_IMPORT_FROM( common_map )
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAM /* private work RAM */
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
- AM_RANGE(0x200000, 0x20ffff) AM_READWRITE(dspram16_r,dspram16_w<false>) AM_SHARE("dspram16")
-ADDRESS_MAP_END
+void namcos21_state::common_map(address_map &map)
+{
+ map(0x280000, 0x280001).nopw(); /* written once on startup */
+ map(0x400000, 0x400001).w(this, FUNC(namcos21_state::pointram_control_w));
+ map(0x440000, 0x440001).rw(this, FUNC(namcos21_state::pointram_data_r), FUNC(namcos21_state::pointram_data_w));
+ map(0x440002, 0x47ffff).nopw(); /* (?) Air Combat */
+ map(0x480000, 0x4807ff).rw(this, FUNC(namcos21_state::namcos21_depthcue_r), FUNC(namcos21_state::namcos21_depthcue_w)); /* Air Combat */
+ map(0x700000, 0x71ffff).rw(this, FUNC(namcos21_state::c355_obj_ram_r), FUNC(namcos21_state::c355_obj_ram_w));
+ map(0x720000, 0x720007).rw(this, FUNC(namcos21_state::c355_obj_position_r), FUNC(namcos21_state::c355_obj_position_w));
+ map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
+ map(0x760000, 0x760001).rw(this, FUNC(namcos21_state::namcos21_video_enable_r), FUNC(namcos21_state::namcos21_video_enable_w));
+ map(0x800000, 0x8fffff).rom().region("data", 0);
+ map(0x900000, 0x90ffff).ram().share("sharedram");
+ map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w));
+ map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
+ map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
+ map(0xc00000, 0xcfffff).rom().mirror(0x100000).region("edata", 0);
+}
+
+void namcos21_state::master_map(address_map &map)
+{
+ common_map(map);
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* private work RAM */
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+ map(0x200000, 0x20ffff).rw(this, FUNC(namcos21_state::dspram16_r), FUNC(namcos21_state::dspram16_w<true>)).share("dspram16");
+}
+
+void namcos21_state::slave_map(address_map &map)
+{
+ common_map(map);
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x13ffff).ram(); /* private work RAM */
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+ map(0x200000, 0x20ffff).rw(this, FUNC(namcos21_state::dspram16_r), FUNC(namcos21_state::dspram16_w<false>)).share("dspram16");
+}
/*************************************************************
@@ -1407,22 +1416,25 @@ READ16_MEMBER(namcos21_state::winrun_table_r)
return m_winrun_polydata[offset];
}
-ADDRESS_MAP_START(namcos21_state::winrun_dsp_program)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void namcos21_state::winrun_dsp_program(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
-ADDRESS_MAP_START(namcos21_state::winrun_dsp_data)
- AM_RANGE( 0x2000, 0x200f ) AM_READWRITE(winrun_cuskey_r,winrun_cuskey_w)
- AM_RANGE( 0x4000, 0x4fff ) AM_READWRITE(winrun_dspcomram_r,winrun_dspcomram_w)
- AM_RANGE( 0x8000, 0xffff ) AM_READ(winrun_table_r )
-ADDRESS_MAP_END
+void namcos21_state::winrun_dsp_data(address_map &map)
+{
+ map(0x2000, 0x200f).rw(this, FUNC(namcos21_state::winrun_cuskey_r), FUNC(namcos21_state::winrun_cuskey_w));
+ map(0x4000, 0x4fff).rw(this, FUNC(namcos21_state::winrun_dspcomram_r), FUNC(namcos21_state::winrun_dspcomram_w));
+ map(0x8000, 0xffff).r(this, FUNC(namcos21_state::winrun_table_r));
+}
-ADDRESS_MAP_START(namcos21_state::winrun_dsp_io)
- AM_RANGE(0x08,0x09) AM_READWRITE(winrun_dsp_pointrom_data_r,winrun_dsp_pointrom_addr_w)
- AM_RANGE(0x0a,0x0a) AM_WRITE(winrun_dsp_render_w)
- AM_RANGE(0x0b,0x0b) AM_WRITENOP
- AM_RANGE(0x0c,0x0c) AM_WRITE(winrun_dsp_complete_w)
-ADDRESS_MAP_END
+void namcos21_state::winrun_dsp_io(address_map &map)
+{
+ map(0x08, 0x09).rw(this, FUNC(namcos21_state::winrun_dsp_pointrom_data_r), FUNC(namcos21_state::winrun_dsp_pointrom_addr_w));
+ map(0x0a, 0x0a).w(this, FUNC(namcos21_state::winrun_dsp_render_w));
+ map(0x0b, 0x0b).nopw();
+ map(0x0c, 0x0c).w(this, FUNC(namcos21_state::winrun_dsp_complete_w));
+}
WRITE16_MEMBER(namcos21_state::winrun_dspbios_w)
{
@@ -1464,98 +1476,103 @@ WRITE16_MEMBER(namcos21_state::winrun_dspcomram_control_w)
COMBINE_DATA( &m_winrun_dspcomram_control[offset] );
}
-ADDRESS_MAP_START(namcos21_state::winrun_master_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
- AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_SHARE("winrun_polydata")
- AM_RANGE(0x260000, 0x26ffff) AM_RAM /* unused? */
- AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_SHARE("winrun_dspbios")
- AM_RANGE(0x380000, 0x38000f) AM_READWRITE(winrun_dspcomram_control_r,winrun_dspcomram_control_w)
- AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
- AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
- AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
- AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
- AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::winrun_slave_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAM
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
- AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
- AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(namcos21_state::winrun_gpu_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */
- AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("gpu_intc", namco_c148_device, map)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gpu_comram")
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x410000, 0x41ffff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gdata", 0)
- AM_RANGE(0xc00000, 0xcfffff) AM_READWRITE(winrun_gpu_videoram_r,winrun_gpu_videoram_w)
- AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE(winrun_gpu_register_r,winrun_gpu_register_w)
- AM_RANGE(0xe0000c, 0xe0000d) AM_DEVREADWRITE8("gpu_intc", namco_c148_device, ext_posirq_line_r,ext_posirq_line_w,0x00ff)
-ADDRESS_MAP_END
+void namcos21_state::winrun_master_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+ map(0x250000, 0x25ffff).ram().share("winrun_polydata");
+ map(0x260000, 0x26ffff).ram(); /* unused? */
+ map(0x280000, 0x281fff).w(this, FUNC(namcos21_state::winrun_dspbios_w)).share("winrun_dspbios");
+ map(0x380000, 0x38000f).rw(this, FUNC(namcos21_state::winrun_dspcomram_control_r), FUNC(namcos21_state::winrun_dspcomram_control_w));
+ map(0x3c0000, 0x3c1fff).rw(this, FUNC(namcos21_state::winrun_68k_dspcomram_r), FUNC(namcos21_state::winrun_68k_dspcomram_w));
+ map(0x400000, 0x400001).w(this, FUNC(namcos21_state::pointram_control_w));
+ map(0x440000, 0x440001).rw(this, FUNC(namcos21_state::pointram_data_r), FUNC(namcos21_state::pointram_data_w));
+ map(0x600000, 0x60ffff).ram().share("gpu_comram");
+ map(0x800000, 0x87ffff).rom().region("data", 0);
+ map(0x900000, 0x90ffff).ram().share("sharedram");
+ map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w));
+ map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
+ map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
+}
+
+void namcos21_state::winrun_slave_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x13ffff).ram();
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+ map(0x600000, 0x60ffff).ram().share("gpu_comram");
+ map(0x800000, 0x87ffff).rom().region("data", 0);
+ map(0x900000, 0x90ffff).ram().share("sharedram");
+ map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w));
+ map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
+ map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
+}
+
+
+void namcos21_state::winrun_gpu_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).rw(this, FUNC(namcos21_state::winrun_gpu_color_r), FUNC(namcos21_state::winrun_gpu_color_w)); /* ? */
+ map(0x180000, 0x19ffff).ram(); /* work RAM */
+ map(0x1c0000, 0x1fffff).m(m_gpu_intc, FUNC(namco_c148_device::map));
+ map(0x200000, 0x20ffff).ram().share("gpu_comram");
+ map(0x400000, 0x40ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x410000, 0x41ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
+ map(0x600000, 0x6fffff).rom().region("gdata", 0);
+ map(0xc00000, 0xcfffff).rw(this, FUNC(namcos21_state::winrun_gpu_videoram_r), FUNC(namcos21_state::winrun_gpu_videoram_w));
+ map(0xd00000, 0xd0000f).rw(this, FUNC(namcos21_state::winrun_gpu_register_r), FUNC(namcos21_state::winrun_gpu_register_w));
+ map(0xe0000d, 0xe0000d).rw(m_gpu_intc, FUNC(namco_c148_device::ext_posirq_line_r), FUNC(namco_c148_device::ext_posirq_line_w));
+}
/*************************************************************/
/* SOUND 6809 CPU Memory declarations */
/*************************************************************/
-ADDRESS_MAP_START(namcos21_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */
- AM_RANGE(0x3000, 0x3003) AM_WRITENOP /* ? */
- AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_device, c140_r,c140_w)
- AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_SHARE("mpdualportram")
- AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* amplifier enable on 1st write */
- AM_RANGE(0xc000, 0xffff) AM_WRITENOP /* avoid debug log noise; games write frequently to 0xe000 */
- AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos2_sound_bankselect_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog */
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void namcos21_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank6"); /* banked */
+ map(0x3000, 0x3003).nopw(); /* ? */
+ map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x5000, 0x6fff).rw("c140", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w));
+ map(0x7000, 0x77ff).rw(this, FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)).share("mpdualportram");
+ map(0x7800, 0x7fff).rw(this, FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)); /* mirror */
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).nopw(); /* amplifier enable on 1st write */
+ map(0xc000, 0xffff).nopw(); /* avoid debug log noise; games write frequently to 0xe000 */
+ map(0xc000, 0xc001).w(this, FUNC(namcos21_state::namcos2_sound_bankselect_w));
+ map(0xd001, 0xd001).nopw(); /* watchdog */
+ map(0xd000, 0xffff).rom();
+}
/*************************************************************/
/* I/O HD63705 MCU Memory declarations */
/*************************************************************/
-ADDRESS_MAP_START(namcos21_state::mcu_map)
- AM_RANGE(0x0000, 0x003f) AM_RAM
- AM_RANGE(0x0000, 0x0000) AM_READNOP
- AM_RANGE(0x0001, 0x0001) AM_READ_PORT("PORTB") /* p1,p2 start */
- AM_RANGE(0x0002, 0x0002) AM_READ_PORT("PORTC") /* coins */
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(namcos2_mcu_port_d_r,namcos2_mcu_port_d_w)
- AM_RANGE(0x0007, 0x0007) AM_READ_PORT("PORTH") /* fire buttons */
- AM_RANGE(0x0010, 0x0010) AM_READWRITE(namcos2_mcu_analog_ctrl_r,namcos2_mcu_analog_ctrl_w)
- AM_RANGE(0x0011, 0x0011) AM_READWRITE(namcos2_mcu_analog_port_r,namcos2_mcu_analog_port_w)
- AM_RANGE(0x0040, 0x01bf) AM_RAM
- AM_RANGE(0x01c0, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DIAL0")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DIAL1")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DIAL2")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DIAL3")
- AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_SHARE("mpdualportram")
- AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void namcos21_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x003f).ram();
+ map(0x0000, 0x0000).nopr();
+ map(0x0001, 0x0001).portr("PORTB"); /* p1,p2 start */
+ map(0x0002, 0x0002).portr("PORTC"); /* coins */
+ map(0x0003, 0x0003).rw(this, FUNC(namcos21_state::namcos2_mcu_port_d_r), FUNC(namcos21_state::namcos2_mcu_port_d_w));
+ map(0x0007, 0x0007).portr("PORTH"); /* fire buttons */
+ map(0x0010, 0x0010).rw(this, FUNC(namcos21_state::namcos2_mcu_analog_ctrl_r), FUNC(namcos21_state::namcos2_mcu_analog_ctrl_w));
+ map(0x0011, 0x0011).rw(this, FUNC(namcos21_state::namcos2_mcu_analog_port_r), FUNC(namcos21_state::namcos2_mcu_analog_port_w));
+ map(0x0040, 0x01bf).ram();
+ map(0x01c0, 0x1fff).rom();
+ map(0x2000, 0x2000).portr("DSW");
+ map(0x3000, 0x3000).portr("DIAL0");
+ map(0x3001, 0x3001).portr("DIAL1");
+ map(0x3002, 0x3002).portr("DIAL2");
+ map(0x3003, 0x3003).portr("DIAL3");
+ map(0x5000, 0x57ff).rw(this, FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)).share("mpdualportram");
+ map(0x6000, 0x6fff).nopr(); /* watchdog */
+ map(0x8000, 0xffff).rom();
+}
/*************************************************************/
@@ -1563,39 +1580,42 @@ ADDRESS_MAP_END
/*************************************************************/
-ADDRESS_MAP_START(namcos21_state::driveyes_common_map)
- AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w)
- AM_RANGE(0x720000, 0x720007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w)
- AM_RANGE(0x740000, 0x74ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x750000, 0x75ffff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x760000, 0x760001) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w)
- AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
- AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::driveyes_master_map)
- AM_IMPORT_FROM( driveyes_common_map )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff)
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map)
- AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_SHARE("winrun_polydata")
- AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_SHARE("winrun_dspbios")
- AM_RANGE(0x380000, 0x38000f) AM_READWRITE(winrun_dspcomram_control_r,winrun_dspcomram_control_w)
- AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
- AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
- AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos21_state::driveyes_slave_map)
- AM_IMPORT_FROM( driveyes_common_map )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
- AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map)
-ADDRESS_MAP_END
+void namcos21_state::driveyes_common_map(address_map &map)
+{
+ map(0x700000, 0x71ffff).rw(this, FUNC(namcos21_state::c355_obj_ram_r), FUNC(namcos21_state::c355_obj_ram_w));
+ map(0x720000, 0x720007).rw(this, FUNC(namcos21_state::c355_obj_position_r), FUNC(namcos21_state::c355_obj_position_w));
+ map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
+ map(0x760000, 0x760001).rw(this, FUNC(namcos21_state::namcos21_video_enable_r), FUNC(namcos21_state::namcos21_video_enable_w));
+ map(0x800000, 0x8fffff).rom().region("data", 0);
+ map(0x900000, 0x90ffff).ram().share("sharedram");
+ map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w));
+ map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
+ map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
+}
+
+void namcos21_state::driveyes_master_map(address_map &map)
+{
+ driveyes_common_map(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* private work RAM */
+ map(0x180000, 0x183fff).rw(this, FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
+ map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
+ map(0x250000, 0x25ffff).ram().share("winrun_polydata");
+ map(0x280000, 0x281fff).w(this, FUNC(namcos21_state::winrun_dspbios_w)).share("winrun_dspbios");
+ map(0x380000, 0x38000f).rw(this, FUNC(namcos21_state::winrun_dspcomram_control_r), FUNC(namcos21_state::winrun_dspcomram_control_w));
+ map(0x3c0000, 0x3c1fff).rw(this, FUNC(namcos21_state::winrun_68k_dspcomram_r), FUNC(namcos21_state::winrun_68k_dspcomram_w));
+ map(0x400000, 0x400001).w(this, FUNC(namcos21_state::pointram_control_w));
+ map(0x440000, 0x440001).rw(this, FUNC(namcos21_state::pointram_data_r), FUNC(namcos21_state::pointram_data_w));
+}
+
+void namcos21_state::driveyes_slave_map(address_map &map)
+{
+ driveyes_common_map(map);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* private work RAM */
+ map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
+}
/*************************************************************/
/* */
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp
index c32842148fd..6a27f262867 100644
--- a/src/mame/drivers/namcos22.cpp
+++ b/src/mame/drivers/namcos22.cpp
@@ -1724,20 +1724,21 @@ WRITE32_MEMBER(namcos22_state::namcos22s_chipselect_w)
// System 22
-ADDRESS_MAP_START(namcos22_state::namcos22_am)
+void namcos22_state::namcos22_am(address_map &map)
+{
/**
* Program ROM (2M bytes)
* Mounted position: LLB: CPU 4D, LMB: CPU 2D, UMB: CPU 8D, UUB: CPU 6D
* Known ROM chip type: TI TMS27C040-10, ST M27C4001-10, M27C4001-12Z
*/
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM
+ map(0x00000000, 0x001fffff).rom();
/**
* Main RAM (128K bytes)
* Mounted position: CPU 3D, 5D, 7D, 9D
* Known DRAM chip type: TC55328P-25, N3441256P-15
*/
- AM_RANGE(0x10000000, 0x1001ffff) AM_RAM AM_MIRROR(0x08000000)
+ map(0x10000000, 0x1001ffff).ram().mirror(0x08000000);
/**
* KEYCUS
@@ -1748,7 +1749,7 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* C389? (Cyber Cycles)
* C392? (Ace Driver Victory Lap)
*/
- AM_RANGE(0x20000000, 0x2000000f) AM_READWRITE16(namcos22_keycus_r, namcos22_keycus_w, 0xffffffff)
+ map(0x20000000, 0x2000000f).rw(this, FUNC(namcos22_state::namcos22_keycus_r), FUNC(namcos22_state::namcos22_keycus_w));
/**
* C139 SCI Buffer
@@ -1760,7 +1761,7 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* 20010000 - 20011fff TX Buffer
* 20012000 - 20013fff RX FIFO Buffer (also used for TX Buffer)
*/
- AM_RANGE(0x20010000, 0x20013fff) AM_RAM
+ map(0x20010000, 0x20013fff).ram();
/**
* C139 SCI Register
@@ -1791,13 +1792,13 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* 2002000c 2 R/W RX FIFO Pointer (0x0000 - 0x0fff)
* 2002000e 2 W TX FIFO Pointer (0x0000 - 0x1fff)
*/
- AM_RANGE(0x20020000, 0x2002000f) AM_READ(namcos22_sci_r) AM_WRITEONLY
+ map(0x20020000, 0x2002000f).r(this, FUNC(namcos22_state::namcos22_sci_r)).writeonly();
/**
* System Controller: Interrupt Control, Peripheral Control
*
*/
- AM_RANGE(0x40000000, 0x4000001f) AM_READWRITE8(namcos22_system_controller_r, namcos22_system_controller_w, 0xffffffff)
+ map(0x40000000, 0x4000001f).rw(this, FUNC(namcos22_state::namcos22_system_controller_r), FUNC(namcos22_state::namcos22_system_controller_w));
/**
* Unknown Device (optional for diagnostics?)
@@ -1805,22 +1806,22 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* zero means not-connected.
* may be related to device at 0x94000000
*/
- AM_RANGE(0x48000000, 0x4800003f) AM_READNOP AM_WRITENOP
+ map(0x48000000, 0x4800003f).nopr().nopw();
/**
* DIPSW
* 0x50000000 - DIPSW3
* 0x50000001 - DIPSW2
*/
- AM_RANGE(0x50000000, 0x50000003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff)
- AM_RANGE(0x50000008, 0x5000000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff)
+ map(0x50000000, 0x50000003).rw(this, FUNC(namcos22_state::namcos22_dipswitch_r), FUNC(namcos22_state::namcos22_cpuleds_w));
+ map(0x50000008, 0x5000000b).rw(this, FUNC(namcos22_state::namcos22_portbit_r), FUNC(namcos22_state::namcos22_portbit_w));
/**
* EEPROM
* Mounted position: CPU 9E
* Known chip type: HN58C65P-25 (8k x 8bit EEPROM)
*/
- AM_RANGE(0x58000000, 0x58001fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff)
+ map(0x58000000, 0x58001fff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
/**
* C74 (Mitsubishi M37702 MCU) Shared RAM (0x60004000 - 0x6000bfff)
@@ -1861,8 +1862,8 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* +0x0100 - 0x02ff Parameter RAM from Main MPU (for SEs)
* +0x0300 - 0x03ff? Song Title (put messages here from Sound CPU)
*/
- AM_RANGE(0x60000000, 0x60003fff) AM_WRITENOP
- AM_RANGE(0x60004000, 0x6000bfff) AM_RAM AM_SHARE("shareram")
+ map(0x60000000, 0x60003fff).nopw();
+ map(0x60004000, 0x6000bfff).ram().share("shareram");
/**
* C71 (TI TMS320C25 DSP) Shared RAM (0x70000000 - 0x70020000)
@@ -1872,43 +1873,43 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* Known chip type: TC55328P-25, N341256P-15
* Notes: connected bits = 0x00ffffff (24bit)
*/
- AM_RANGE(0x70000000, 0x7001ffff) AM_READWRITE(namcos22_dspram_r, namcos22_dspram_w) AM_SHARE("polygonram")
+ map(0x70000000, 0x7001ffff).rw(this, FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram");
/**
* LED on PCB(?)
*/
- AM_RANGE(0x90000000, 0x90000003) AM_RAM
+ map(0x90000000, 0x90000003).ram();
/**
* Depth-cueing Look-up Table (fog density between near to far)
* Mounted position: VIDEO 8P
* Known chip type: TC55328P-25
*/
- AM_RANGE(0x90010000, 0x90017fff) AM_RAM AM_SHARE("czram")
+ map(0x90010000, 0x90017fff).ram().share("czram");
/**
* C305 (Display Controller)
* Mounted position: VIDEO 7D (C305)
* Notes: Boot time check: 0x90020100 - 0x9002027f
*/
- AM_RANGE(0x90020000, 0x90027fff) AM_RAM AM_SHARE("video_mixer")
+ map(0x90020000, 0x90027fff).ram().share("video_mixer");
/**
* Mounted position: VIDEO 6B, 7B, 8B (near C305)
* Note: 0xff00-0xffff are for Tilemap (16 x 16)
*/
- AM_RANGE(0x90028000, 0x9003ffff) AM_RAM_WRITE(namcos22_paletteram_w) AM_SHARE("paletteram")
+ map(0x90028000, 0x9003ffff).ram().w(this, FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram");
/**
* unknown (option)
* Note: This device may be optional. This may relate to device at 0x40000000
*/
- AM_RANGE(0x90040000, 0x9007ffff) AM_RAM /* diagnostic ROM? */
+ map(0x90040000, 0x9007ffff).ram(); /* diagnostic ROM? */
/**
* Tilemap PCG Memory
*/
- AM_RANGE(0x90080000, 0x9009dfff) AM_RAM_WRITE(namcos22_cgram_w) AM_SHARE("cgram")
+ map(0x90080000, 0x9009dfff).ram().w(this, FUNC(namcos22_state::namcos22_cgram_w)).share("cgram");
/**
* Tilemap Memory (64 x 64)
@@ -1916,43 +1917,44 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am)
* Known chip type: HM511664 (64k x 16bit SRAM)
* Note: Self test: 90084000 - 9009ffff
*/
- AM_RANGE(0x9009e000, 0x9009ffff) AM_RAM_WRITE(namcos22_textram_w) AM_SHARE("textram")
+ map(0x9009e000, 0x9009ffff).ram().w(this, FUNC(namcos22_state::namcos22_textram_w)).share("textram");
/**
* Tilemap Register
* Mounted position: unknown
*/
- AM_RANGE(0x900a0000, 0x900a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_SHARE("tilemapattr")
-ADDRESS_MAP_END
+ map(0x900a0000, 0x900a000f).rw(this, FUNC(namcos22_state::namcos22_tilemapattr_r), FUNC(namcos22_state::namcos22_tilemapattr_w)).share("tilemapattr");
+}
// Super System 22
-ADDRESS_MAP_START(namcos22_state::namcos22s_am)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x400000, 0x40001f) AM_READWRITE16(namcos22_keycus_r, namcos22_keycus_w, 0xffffffff)
- AM_RANGE(0x410000, 0x413fff) AM_RAM /* C139 SCI buffer */
- AM_RANGE(0x420000, 0x42000f) AM_READ(namcos22_sci_r) AM_WRITEONLY /* C139 SCI registers */
- AM_RANGE(0x440000, 0x440003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff)
- AM_RANGE(0x450008, 0x45000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff)
- AM_RANGE(0x460000, 0x463fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00)
- AM_RANGE(0x700000, 0x70001f) AM_READWRITE8(namcos22_system_controller_r, namcos22s_system_controller_w, 0xffffffff)
- AM_RANGE(0x800000, 0x800003) AM_WRITE(namcos22s_chipselect_w)
- AM_RANGE(0x810000, 0x81000f) AM_RAM AM_SHARE("czattr")
- AM_RANGE(0x810200, 0x8103ff) AM_READWRITE(namcos22s_czram_r, namcos22s_czram_w)
- AM_RANGE(0x820000, 0x8202ff) AM_WRITENOP /* leftover of old (non-super) video mixer device */
- AM_RANGE(0x824000, 0x8243ff) AM_RAM AM_SHARE("video_mixer")
- AM_RANGE(0x828000, 0x83ffff) AM_RAM_WRITE(namcos22_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x860000, 0x860007) AM_READWRITE(namcos22s_spotram_r, namcos22s_spotram_w)
- AM_RANGE(0x880000, 0x89dfff) AM_RAM_WRITE(namcos22_cgram_w) AM_SHARE("cgram")
- AM_RANGE(0x89e000, 0x89ffff) AM_RAM_WRITE(namcos22_textram_w) AM_SHARE("textram")
- AM_RANGE(0x8a0000, 0x8a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_SHARE("tilemapattr")
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("vics_data")
- AM_RANGE(0x940000, 0x94007f) AM_READWRITE(namcos22s_vics_control_r, namcos22s_vics_control_w) AM_SHARE("vics_control")
- AM_RANGE(0x980000, 0x9affff) AM_RAM AM_SHARE("spriteram") /* C374 */
- AM_RANGE(0xa04000, 0xa0bfff) AM_RAM AM_SHARE("shareram") /* COM RAM */
- AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(namcos22_dspram_r, namcos22_dspram_w) AM_SHARE("polygonram")
- AM_RANGE(0xe00000, 0xe3ffff) AM_RAM /* workram */
-ADDRESS_MAP_END
+void namcos22_state::namcos22s_am(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x400000, 0x40001f).rw(this, FUNC(namcos22_state::namcos22_keycus_r), FUNC(namcos22_state::namcos22_keycus_w));
+ map(0x410000, 0x413fff).ram(); /* C139 SCI buffer */
+ map(0x420000, 0x42000f).r(this, FUNC(namcos22_state::namcos22_sci_r)).writeonly(); /* C139 SCI registers */
+ map(0x440000, 0x440003).rw(this, FUNC(namcos22_state::namcos22_dipswitch_r), FUNC(namcos22_state::namcos22_cpuleds_w));
+ map(0x450008, 0x45000b).rw(this, FUNC(namcos22_state::namcos22_portbit_r), FUNC(namcos22_state::namcos22_portbit_w));
+ map(0x460000, 0x463fff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00);
+ map(0x700000, 0x70001f).rw(this, FUNC(namcos22_state::namcos22_system_controller_r), FUNC(namcos22_state::namcos22s_system_controller_w));
+ map(0x800000, 0x800003).w(this, FUNC(namcos22_state::namcos22s_chipselect_w));
+ map(0x810000, 0x81000f).ram().share("czattr");
+ map(0x810200, 0x8103ff).rw(this, FUNC(namcos22_state::namcos22s_czram_r), FUNC(namcos22_state::namcos22s_czram_w));
+ map(0x820000, 0x8202ff).nopw(); /* leftover of old (non-super) video mixer device */
+ map(0x824000, 0x8243ff).ram().share("video_mixer");
+ map(0x828000, 0x83ffff).ram().w(this, FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram");
+ map(0x860000, 0x860007).rw(this, FUNC(namcos22_state::namcos22s_spotram_r), FUNC(namcos22_state::namcos22s_spotram_w));
+ map(0x880000, 0x89dfff).ram().w(this, FUNC(namcos22_state::namcos22_cgram_w)).share("cgram");
+ map(0x89e000, 0x89ffff).ram().w(this, FUNC(namcos22_state::namcos22_textram_w)).share("textram");
+ map(0x8a0000, 0x8a000f).rw(this, FUNC(namcos22_state::namcos22_tilemapattr_r), FUNC(namcos22_state::namcos22_tilemapattr_w)).share("tilemapattr");
+ map(0x900000, 0x90ffff).ram().share("vics_data");
+ map(0x940000, 0x94007f).rw(this, FUNC(namcos22_state::namcos22s_vics_control_r), FUNC(namcos22_state::namcos22s_vics_control_w)).share("vics_control");
+ map(0x980000, 0x9affff).ram().share("spriteram"); /* C374 */
+ map(0xa04000, 0xa0bfff).ram().share("shareram"); /* COM RAM */
+ map(0xc00000, 0xc1ffff).rw(this, FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram");
+ map(0xe00000, 0xe3ffff).ram(); /* workram */
+}
// Time Crisis gun
@@ -1976,10 +1978,11 @@ READ32_MEMBER(namcos22_state::namcos22_gun_r)
}
}
-ADDRESS_MAP_START(namcos22_state::timecris_am)
- AM_IMPORT_FROM( namcos22s_am )
- AM_RANGE(0x430000, 0x43000f) AM_READ(namcos22_gun_r)
-ADDRESS_MAP_END
+void namcos22_state::timecris_am(address_map &map)
+{
+ namcos22s_am(map);
+ map(0x430000, 0x43000f).r(this, FUNC(namcos22_state::namcos22_gun_r));
+}
// Alpine Surfer protection
@@ -2009,11 +2012,12 @@ WRITE32_MEMBER(namcos22_state::alpinesa_prot_w)
}
}
-ADDRESS_MAP_START(namcos22_state::alpinesa_am)
- AM_IMPORT_FROM( namcos22s_am )
- AM_RANGE(0x200000, 0x200003) AM_READ(alpinesa_prot_r)
- AM_RANGE(0x300000, 0x300003) AM_WRITE(alpinesa_prot_w)
-ADDRESS_MAP_END
+void namcos22_state::alpinesa_am(address_map &map)
+{
+ namcos22s_am(map);
+ map(0x200000, 0x200003).r(this, FUNC(namcos22_state::alpinesa_prot_r));
+ map(0x300000, 0x300003).w(this, FUNC(namcos22_state::alpinesa_prot_w));
+}
@@ -2539,33 +2543,36 @@ WRITE16_MEMBER(namcos22_state::master_render_device_w)
}
}
-ADDRESS_MAP_START(namcos22_state::master_dsp_program)
- AM_RANGE(0x0000, 0x0fff) AM_ROM /* internal ROM (4k words) */
- AM_RANGE(0x4000, 0x7fff) AM_ROM AM_SHARE("masterextram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos22_state::master_dsp_data)
- AM_RANGE(0x1000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_READ(master_external_ram_r) AM_WRITE(master_external_ram_w)
- AM_RANGE(0x8000, 0xffff) AM_READ(namcos22_dspram16_r) AM_WRITE(namcos22_dspram16_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos22_state::master_dsp_io)
- AM_RANGE(0x0, 0x0) AM_READWRITE(point_loword_r, point_loword_iw)
- AM_RANGE(0x1, 0x1) AM_READWRITE(point_hiword_ir, point_hiword_w)
- AM_RANGE(0x2, 0x2) AM_READWRITE(pdp_begin_r, dsp_unk2_w)
- AM_RANGE(0x3, 0x3) AM_READWRITE(dsp_unk_port3_r, point_address_w)
- AM_RANGE(0x4, 0x4) AM_WRITENOP /* unknown */
- AM_RANGE(0x7, 0x7) AM_WRITE(upload_code_to_slave_dsp_w)
- AM_RANGE(0x8, 0x8) AM_READWRITE(dsp_unk8_r, dsp_unk8_w) /* trigger irq? */
- AM_RANGE(0x9, 0x9) AM_READ(custom_ic_status_r) AM_WRITENOP /* trigger irq? */
- AM_RANGE(0xa, 0xa) AM_WRITE(dsp_unk_porta_w)
- AM_RANGE(0xb, 0xb) AM_WRITENOP /* RINT-related? */
- AM_RANGE(0xc, 0xc) AM_WRITE(master_render_device_w)
- AM_RANGE(0xd, 0xd) AM_WRITE(namcos22_dspram16_bank_w)
- AM_RANGE(0xe, 0xe) AM_WRITE(dsp_led_w)
- AM_RANGE(0xf, 0xf) AM_READ(dsp_upload_status_r) AM_WRITENOP
-ADDRESS_MAP_END
+void namcos22_state::master_dsp_program(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); /* internal ROM (4k words) */
+ map(0x4000, 0x7fff).rom().share("masterextram");
+}
+
+void namcos22_state::master_dsp_data(address_map &map)
+{
+ map(0x1000, 0x3fff).ram();
+ map(0x4000, 0x7fff).r(this, FUNC(namcos22_state::master_external_ram_r)).w(this, FUNC(namcos22_state::master_external_ram_w));
+ map(0x8000, 0xffff).r(this, FUNC(namcos22_state::namcos22_dspram16_r)).w(this, FUNC(namcos22_state::namcos22_dspram16_w));
+}
+
+void namcos22_state::master_dsp_io(address_map &map)
+{
+ map(0x0, 0x0).rw(this, FUNC(namcos22_state::point_loword_r), FUNC(namcos22_state::point_loword_iw));
+ map(0x1, 0x1).rw(this, FUNC(namcos22_state::point_hiword_ir), FUNC(namcos22_state::point_hiword_w));
+ map(0x2, 0x2).rw(this, FUNC(namcos22_state::pdp_begin_r), FUNC(namcos22_state::dsp_unk2_w));
+ map(0x3, 0x3).rw(this, FUNC(namcos22_state::dsp_unk_port3_r), FUNC(namcos22_state::point_address_w));
+ map(0x4, 0x4).nopw(); /* unknown */
+ map(0x7, 0x7).w(this, FUNC(namcos22_state::upload_code_to_slave_dsp_w));
+ map(0x8, 0x8).rw(this, FUNC(namcos22_state::dsp_unk8_r), FUNC(namcos22_state::dsp_unk8_w)); /* trigger irq? */
+ map(0x9, 0x9).r(this, FUNC(namcos22_state::custom_ic_status_r)).nopw(); /* trigger irq? */
+ map(0xa, 0xa).w(this, FUNC(namcos22_state::dsp_unk_porta_w));
+ map(0xb, 0xb).nopw(); /* RINT-related? */
+ map(0xc, 0xc).w(this, FUNC(namcos22_state::master_render_device_w));
+ map(0xd, 0xd).w(this, FUNC(namcos22_state::namcos22_dspram16_bank_w));
+ map(0xe, 0xe).w(this, FUNC(namcos22_state::dsp_led_w));
+ map(0xf, 0xf).r(this, FUNC(namcos22_state::dsp_upload_status_r)).nopw();
+}
READ16_MEMBER(namcos22_state::dsp_bioz_r)
@@ -2625,31 +2632,34 @@ WRITE16_MEMBER(namcos22_state::dsp_slave_portb_w)
/* The slave dsp uses this to transmit a command sequence to an external device. */
}
-ADDRESS_MAP_START(namcos22_state::slave_dsp_program)
- AM_RANGE(0x0000, 0x0fff) AM_ROM /* internal ROM */
- AM_RANGE(0x8000, 0x9fff) AM_ROM AM_SHARE("slaveextram")
-ADDRESS_MAP_END
+void namcos22_state::slave_dsp_program(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); /* internal ROM */
+ map(0x8000, 0x9fff).rom().share("slaveextram");
+}
-ADDRESS_MAP_START(namcos22_state::slave_dsp_data)
- AM_RANGE(0x8000, 0x9fff) AM_READWRITE(slave_external_ram_r, slave_external_ram_w)
-ADDRESS_MAP_END
+void namcos22_state::slave_dsp_data(address_map &map)
+{
+ map(0x8000, 0x9fff).rw(this, FUNC(namcos22_state::slave_external_ram_r), FUNC(namcos22_state::slave_external_ram_w));
+}
-ADDRESS_MAP_START(namcos22_state::slave_dsp_io)
+void namcos22_state::slave_dsp_io(address_map &map)
+{
/* unknown signal */
- AM_RANGE(0x3, 0x3) AM_READ(dsp_slave_port3_r)
+ map(0x3, 0x3).r(this, FUNC(namcos22_state::dsp_slave_port3_r));
- AM_RANGE(0x4, 0x4) AM_READ(dsp_slave_port4_r)
- AM_RANGE(0x5, 0x5) AM_READ(dsp_slave_port5_r)
- AM_RANGE(0x6, 0x6) AM_READ(dsp_slave_port6_r) AM_WRITENOP
+ map(0x4, 0x4).r(this, FUNC(namcos22_state::dsp_slave_port4_r));
+ map(0x5, 0x5).r(this, FUNC(namcos22_state::dsp_slave_port5_r));
+ map(0x6, 0x6).r(this, FUNC(namcos22_state::dsp_slave_port6_r)).nopw();
/* render device state */
- AM_RANGE(0x8, 0x8) AM_READ(dsp_slave_port8_r) AM_WRITENOP
+ map(0x8, 0x8).r(this, FUNC(namcos22_state::dsp_slave_port8_r)).nopw();
/* render device */
- AM_RANGE(0xb, 0xb) AM_READWRITE(dsp_slave_portb_r, dsp_slave_portb_w)
+ map(0xb, 0xb).rw(this, FUNC(namcos22_state::dsp_slave_portb_r), FUNC(namcos22_state::dsp_slave_portb_w));
- AM_RANGE(0xc, 0xc) AM_WRITE(dsp_slave_portc_w)
-ADDRESS_MAP_END
+ map(0xc, 0xc).w(this, FUNC(namcos22_state::dsp_slave_portc_w));
+}
/*********************************************************************************************/
@@ -2705,28 +2715,32 @@ READ8_MEMBER(namcos22_state::iomcu_port4_s22_r)
return 0x00;
}
-ADDRESS_MAP_START(namcos22_state::mcu_s22_program)
- AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x004000, 0x00bfff) AM_READWRITE(s22mcu_shared_r, s22mcu_shared_w )
- AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x301000, 0x301001) AM_NOP // watchdog? LEDs?
- AM_RANGE(0x308000, 0x308003) AM_NOP // volume control IC?
-ADDRESS_MAP_END
+void namcos22_state::mcu_s22_program(address_map &map)
+{
+ map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x004000, 0x00bfff).rw(this, FUNC(namcos22_state::s22mcu_shared_r), FUNC(namcos22_state::s22mcu_shared_w));
+ map(0x080000, 0x0fffff).rom().region("mcu", 0);
+ map(0x200000, 0x27ffff).rom().region("mcu", 0);
+ map(0x280000, 0x2fffff).rom().region("mcu", 0);
+ map(0x301000, 0x301001).noprw(); // watchdog? LEDs?
+ map(0x308000, 0x308003).noprw(); // volume control IC?
+}
-ADDRESS_MAP_START(namcos22_state::iomcu_s22_program)
+void namcos22_state::iomcu_s22_program(address_map &map)
+{
// is there any external memory or MMIO on this one?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(namcos22_state::mcu_s22_io)
- AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READ(mcu_port4_s22_r)
-ADDRESS_MAP_END
+void namcos22_state::mcu_s22_io(address_map &map)
+{
+ map(M37710_PORT4, M37710_PORT4).r(this, FUNC(namcos22_state::mcu_port4_s22_r));
+}
-ADDRESS_MAP_START(namcos22_state::iomcu_s22_io)
- AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READ(iomcu_port4_s22_r)
- AM_RANGE(0x00, 0xff) AM_NOP
-ADDRESS_MAP_END
+void namcos22_state::iomcu_s22_io(address_map &map)
+{
+ map(M37710_PORT4, M37710_PORT4).r(this, FUNC(namcos22_state::iomcu_port4_s22_r));
+ map(0x00, 0xff).noprw();
+}
// Super System 22 M37710
@@ -2794,24 +2808,26 @@ READ8_MEMBER(namcos22_state::namcos22s_mcu_adc_r)
return (offset & 1) ? adc >> 8 : adc;
}
-ADDRESS_MAP_START(namcos22_state::mcu_program)
- AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x004000, 0x00bfff) AM_READWRITE(s22mcu_shared_r, s22mcu_shared_w )
- AM_RANGE(0x00c000, 0x00ffff) AM_ROM AM_REGION("mcu", 0xc000)
- AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x301000, 0x301001) AM_NOP // watchdog? LEDs?
- AM_RANGE(0x308000, 0x308003) AM_NOP // volume control IC?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos22_state::mcu_io)
- AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READWRITE(mcu_port4_r, mcu_port4_w)
- AM_RANGE(M37710_PORT5, M37710_PORT5) AM_READWRITE(mcu_port5_r, mcu_port5_w)
- AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(mcu_port6_r, mcu_port6_w)
- AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READWRITE(mcu_port7_r, mcu_port7_w)
- AM_RANGE(M37710_ADC0_L, M37710_ADC7_H) AM_READ(namcos22s_mcu_adc_r)
-ADDRESS_MAP_END
+void namcos22_state::mcu_program(address_map &map)
+{
+ map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x004000, 0x00bfff).rw(this, FUNC(namcos22_state::s22mcu_shared_r), FUNC(namcos22_state::s22mcu_shared_w));
+ map(0x00c000, 0x00ffff).rom().region("mcu", 0xc000);
+ map(0x080000, 0x0fffff).rom().region("mcu", 0);
+ map(0x200000, 0x27ffff).rom().region("mcu", 0);
+ map(0x280000, 0x2fffff).rom().region("mcu", 0);
+ map(0x301000, 0x301001).noprw(); // watchdog? LEDs?
+ map(0x308000, 0x308003).noprw(); // volume control IC?
+}
+
+void namcos22_state::mcu_io(address_map &map)
+{
+ map(M37710_PORT4, M37710_PORT4).rw(this, FUNC(namcos22_state::mcu_port4_r), FUNC(namcos22_state::mcu_port4_w));
+ map(M37710_PORT5, M37710_PORT5).rw(this, FUNC(namcos22_state::mcu_port5_r), FUNC(namcos22_state::mcu_port5_w));
+ map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcos22_state::mcu_port6_r), FUNC(namcos22_state::mcu_port6_w));
+ map(M37710_PORT7, M37710_PORT7).rw(this, FUNC(namcos22_state::mcu_port7_r), FUNC(namcos22_state::mcu_port7_w));
+ map(M37710_ADC0_L, M37710_ADC7_H).r(this, FUNC(namcos22_state::namcos22s_mcu_adc_r));
+}
/*********************************************************************************************/
@@ -2954,10 +2970,11 @@ WRITE8_MEMBER(namcos22_state::alpine_mcu_port5_w)
}
}
-ADDRESS_MAP_START(namcos22_state::alpine_io_map)
- AM_IMPORT_FROM( mcu_io )
- AM_RANGE(M37710_PORT5, M37710_PORT5) AM_WRITE(alpine_mcu_port5_w)
-ADDRESS_MAP_END
+void namcos22_state::alpine_io_map(address_map &map)
+{
+ mcu_io(map);
+ map(M37710_PORT5, M37710_PORT5).w(this, FUNC(namcos22_state::alpine_mcu_port5_w));
+}
// Prop Cycle
@@ -2971,10 +2988,11 @@ WRITE8_MEMBER(namcos22_state::propcycle_mcu_port5_w)
output().set_led_value(0, data & 2);
}
-ADDRESS_MAP_START(namcos22_state::propcycl_io_map)
- AM_IMPORT_FROM( mcu_io )
- AM_RANGE(M37710_PORT5, M37710_PORT5) AM_WRITE(propcycle_mcu_port5_w)
-ADDRESS_MAP_END
+void namcos22_state::propcycl_io_map(address_map &map)
+{
+ mcu_io(map);
+ map(M37710_PORT5, M37710_PORT5).w(this, FUNC(namcos22_state::propcycle_mcu_port5_w));
+}
TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::propcycl_pedal_interrupt)
{
diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp
index eb29d864301..571582f9cf1 100644
--- a/src/mame/drivers/namcos23.cpp
+++ b/src/mame/drivers/namcos23.cpp
@@ -2890,56 +2890,58 @@ WRITE16_MEMBER(namcos23_state::sub_comm_w)
// System Gorgon
-ADDRESS_MAP_START(namcos23_state::gorgon_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffffff)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(c435_r, c435_w)
- AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(c417_r, c417_w, 0xffffffff)
- AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_SHARE("shared_ram") // Communication RAM (C416)
- AM_RANGE(0x04c3ff00, 0x04c3ff0f) AM_WRITE16(mcuen_w, 0xffffffff)
- AM_RANGE(0x06080000, 0x0608000f) AM_RAM AM_SHARE("czattr")
- AM_RANGE(0x06080200, 0x060803ff) AM_RAM // PCZ Convert RAM (C406) (should be banked)
- AM_RANGE(0x06108000, 0x061087ff) AM_RAM AM_SHARE("gammaram") // Gamma RAM (C404)
- AM_RANGE(0x06110000, 0x0613ffff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") // Palette RAM (C404)
- AM_RANGE(0x06400000, 0x0641dfff) AM_RAM_WRITE(textchar_w) AM_SHARE("charram") // Text CGRAM (C361)
- AM_RANGE(0x0641e000, 0x0641ffff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") // Text VRAM (C361)
- AM_RANGE(0x06420000, 0x0642000f) AM_READWRITE16(c361_r, c361_w, 0xffffffff) // C361
- AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs
- AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_SHARE("nvram") // Backup RAM
- AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(ctl_r, ctl_w, 0xffffffff) // write for LEDs at d000000, watchdog at d000004
- AM_RANGE(0x0e000000, 0x0e007fff) AM_RAM // C405 RAM - what is this?
- AM_RANGE(0x0f000000, 0x0f000003) AM_READWRITE16(sub_comm_r, sub_comm_w, 0xffffffff) // not sure
- AM_RANGE(0x0f200000, 0x0f203fff) AM_RAM // C422 RAM
- AM_RANGE(0x0f300000, 0x0f30000f) AM_READWRITE16(c422_r, c422_w, 0xffffffff) // C422 registers
- AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void namcos23_state::gorgon_map(address_map &map)
+{
+ map.global_mask(0xfffffff);
+ map(0x00000000, 0x003fffff).ram().share("mainram");
+ map(0x01000000, 0x010000ff).rw(this, FUNC(namcos23_state::c435_r), FUNC(namcos23_state::c435_w));
+ map(0x02000000, 0x0200000f).rw(this, FUNC(namcos23_state::c417_r), FUNC(namcos23_state::c417_w));
+ map(0x04400000, 0x0440ffff).ram().share("shared_ram"); // Communication RAM (C416)
+ map(0x04c3ff00, 0x04c3ff0f).w(this, FUNC(namcos23_state::mcuen_w));
+ map(0x06080000, 0x0608000f).ram().share("czattr");
+ map(0x06080200, 0x060803ff).ram(); // PCZ Convert RAM (C406) (should be banked)
+ map(0x06108000, 0x061087ff).ram().share("gammaram"); // Gamma RAM (C404)
+ map(0x06110000, 0x0613ffff).ram().w(this, FUNC(namcos23_state::paletteram_w)).share("paletteram"); // Palette RAM (C404)
+ map(0x06400000, 0x0641dfff).ram().w(this, FUNC(namcos23_state::textchar_w)).share("charram"); // Text CGRAM (C361)
+ map(0x0641e000, 0x0641ffff).ram().w(this, FUNC(namcos23_state::textram_w)).share("textram"); // Text VRAM (C361)
+ map(0x06420000, 0x0642000f).rw(this, FUNC(namcos23_state::c361_r), FUNC(namcos23_state::c361_w)); // C361
+ map(0x08000000, 0x087fffff).rom().region("data", 0); // data ROMs
+ map(0x0c000000, 0x0c00ffff).ram().share("nvram"); // Backup RAM
+ map(0x0d000000, 0x0d00000f).rw(this, FUNC(namcos23_state::ctl_r), FUNC(namcos23_state::ctl_w)); // write for LEDs at d000000, watchdog at d000004
+ map(0x0e000000, 0x0e007fff).ram(); // C405 RAM - what is this?
+ map(0x0f000000, 0x0f000003).rw(this, FUNC(namcos23_state::sub_comm_r), FUNC(namcos23_state::sub_comm_w)); // not sure
+ map(0x0f200000, 0x0f203fff).ram(); // C422 RAM
+ map(0x0f300000, 0x0f30000f).rw(this, FUNC(namcos23_state::c422_r), FUNC(namcos23_state::c422_w)); // C422 registers
+ map(0x0fc00000, 0x0fffffff).nopw().rom().region("user1", 0);
+}
// (Super) System 23
-ADDRESS_MAP_START(namcos23_state::s23_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffffff)
- AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(c435_r, c435_w)
- AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(c417_r, c417_w, 0xffffffff)
- AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_SHARE("shared_ram") // Communication RAM (C416)
- AM_RANGE(0x04c3ff00, 0x04c3ff0f) AM_WRITE16(mcuen_w, 0xffffffff)
- AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_SHARE("nvram") // Backup RAM
- AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422 RAM
- AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16(c422_r, c422_w, 0xffffffff) // C422 registers
- AM_RANGE(0x06800000, 0x0681dfff) AM_RAM_WRITE(textchar_w) AM_SHARE("charram") // Text CGRAM (C361)
- AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") // Text VRAM (C361)
- AM_RANGE(0x06820000, 0x0682000f) AM_READWRITE16(c361_r, c361_w, 0xffffffff) // C361
- AM_RANGE(0x06a08000, 0x06a087ff) AM_RAM AM_SHARE("gammaram") // Gamma RAM (C404)
- AM_RANGE(0x06a10000, 0x06a3ffff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") // Palette RAM (C404)
- AM_RANGE(0x08000000, 0x08ffffff) AM_ROM AM_REGION("data", 0x0000000) AM_MIRROR(0x1000000) // data ROMs
- AM_RANGE(0x0a000000, 0x0affffff) AM_ROM AM_REGION("data", 0x1000000) AM_MIRROR(0x1000000)
- AM_RANGE(0x0c000000, 0x0c00001f) AM_READWRITE16(c412_r, c412_w, 0xffffffff)
- AM_RANGE(0x0c400000, 0x0c400007) AM_READWRITE16(c421_r, c421_w, 0xffffffff)
- AM_RANGE(0x0c800010, 0x0c800013) AM_WRITE16(c435_state_reset_w, 0xffff0000)
- AM_RANGE(0x0c800014, 0x0c800017) AM_WRITE16(c435_state_pio_w, 0x0000ffff)
- AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(ctl_r, ctl_w, 0xffffffff)
- AM_RANGE(0x0e800000, 0x0e800003) AM_READWRITE16(sub_comm_r, sub_comm_w, 0xffffffff) // not sure
- AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void namcos23_state::s23_map(address_map &map)
+{
+ map.global_mask(0xfffffff);
+ map(0x00000000, 0x00ffffff).ram().share("mainram");
+ map(0x01000000, 0x010000ff).rw(this, FUNC(namcos23_state::c435_r), FUNC(namcos23_state::c435_w));
+ map(0x02000000, 0x0200000f).rw(this, FUNC(namcos23_state::c417_r), FUNC(namcos23_state::c417_w));
+ map(0x04400000, 0x0440ffff).ram().share("shared_ram"); // Communication RAM (C416)
+ map(0x04c3ff00, 0x04c3ff0f).w(this, FUNC(namcos23_state::mcuen_w));
+ map(0x06000000, 0x0600ffff).ram().share("nvram"); // Backup RAM
+ map(0x06200000, 0x06203fff).ram(); // C422 RAM
+ map(0x06400000, 0x0640000f).rw(this, FUNC(namcos23_state::c422_r), FUNC(namcos23_state::c422_w)); // C422 registers
+ map(0x06800000, 0x0681dfff).ram().w(this, FUNC(namcos23_state::textchar_w)).share("charram"); // Text CGRAM (C361)
+ map(0x0681e000, 0x0681ffff).ram().w(this, FUNC(namcos23_state::textram_w)).share("textram"); // Text VRAM (C361)
+ map(0x06820000, 0x0682000f).rw(this, FUNC(namcos23_state::c361_r), FUNC(namcos23_state::c361_w)); // C361
+ map(0x06a08000, 0x06a087ff).ram().share("gammaram"); // Gamma RAM (C404)
+ map(0x06a10000, 0x06a3ffff).ram().w(this, FUNC(namcos23_state::paletteram_w)).share("paletteram"); // Palette RAM (C404)
+ map(0x08000000, 0x08ffffff).rom().region("data", 0x0000000).mirror(0x1000000); // data ROMs
+ map(0x0a000000, 0x0affffff).rom().region("data", 0x1000000).mirror(0x1000000);
+ map(0x0c000000, 0x0c00001f).rw(this, FUNC(namcos23_state::c412_r), FUNC(namcos23_state::c412_w));
+ map(0x0c400000, 0x0c400007).rw(this, FUNC(namcos23_state::c421_r), FUNC(namcos23_state::c421_w));
+ map(0x0c800010, 0x0c800011).w(this, FUNC(namcos23_state::c435_state_reset_w));
+ map(0x0c800016, 0x0c800017).w(this, FUNC(namcos23_state::c435_state_pio_w));
+ map(0x0d000000, 0x0d00000f).rw(this, FUNC(namcos23_state::ctl_r), FUNC(namcos23_state::ctl_w));
+ map(0x0e800000, 0x0e800003).rw(this, FUNC(namcos23_state::sub_comm_r), FUNC(namcos23_state::sub_comm_w)); // not sure
+ map(0x0fc00000, 0x0fffffff).nopw().rom().region("user1", 0);
+}
@@ -2963,23 +2965,25 @@ WRITE32_MEMBER(namcos23_state::sh2_shared_w)
COMBINE_DATA(&m_gmen_sh2_shared[offset]);
}
-ADDRESS_MAP_START(namcos23_state::gmen_mips_map)
- AM_IMPORT_FROM(s23_map)
- AM_RANGE(0x0e400000, 0x0e400003) AM_READ(gmen_trigger_sh2)
- AM_RANGE(0x0e700000, 0x0e70ffff) AM_READWRITE(sh2_shared_r, sh2_shared_w)
-ADDRESS_MAP_END
+void namcos23_state::gmen_mips_map(address_map &map)
+{
+ s23_map(map);
+ map(0x0e400000, 0x0e400003).r(this, FUNC(namcos23_state::gmen_trigger_sh2));
+ map(0x0e700000, 0x0e70ffff).rw(this, FUNC(namcos23_state::sh2_shared_r), FUNC(namcos23_state::sh2_shared_w));
+}
// SH2 memmap
/* TODO: of course, I believe that area 0x008***** is actually a bank of some sort ... */
-ADDRESS_MAP_START(namcos23_state::gmen_sh2_map)
- AM_RANGE(0x00000000, 0x0000ffff) AM_RAM AM_SHARE("gmen_sh2_shared")
- AM_RANGE(0x00800000, 0x008fffff) AM_ROM AM_REGION("data", 0xc00000) //c00000 "data" for final furlong 2. 0x1b6bc0 "user1" for gunmen wars
- AM_RANGE(0x01800000, 0x0183ffff) AM_RAM // ???
+void namcos23_state::gmen_sh2_map(address_map &map)
+{
+ map(0x00000000, 0x0000ffff).ram().share("gmen_sh2_shared");
+ map(0x00800000, 0x008fffff).rom().region("data", 0xc00000); //c00000 "data" for final furlong 2. 0x1b6bc0 "user1" for gunmen wars
+ map(0x01800000, 0x0183ffff).ram(); // ???
//AM_RANGE(0x02800000, 0x02800003) AM_RAM // probably transfer status related, reads/writes after each end of flash transfer, TBD
- AM_RANGE(0x04000000, 0x043fffff) AM_RAM // SH-2 main work RAM (SDRAM)
- AM_RANGE(0x06000000, 0x06000003) AM_NOP // serial port for camera?
-ADDRESS_MAP_END
+ map(0x04000000, 0x043fffff).ram(); // SH-2 main work RAM (SDRAM)
+ map(0x06000000, 0x06000003).noprw(); // serial port for camera?
+}
@@ -3085,27 +3089,29 @@ WRITE16_MEMBER(namcos23_state::mcu_pb_w)
}
-ADDRESS_MAP_START(namcos23_state::s23h8rwmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(sharedram_sub_r, sharedram_sub_w )
- AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write)
- AM_RANGE(0x300000, 0x300003) AM_NOP // seems to be more inputs, maybe false leftover code from System 12?
- AM_RANGE(0x300010, 0x300011) AM_NOP
- AM_RANGE(0x300020, 0x300021) AM_WRITE(sub_interrupt_main_w )
- AM_RANGE(0x300030, 0x300031) AM_WRITENOP // timecrs2 writes this when writing to the sync shared ram location, motoxgo doesn't
-ADDRESS_MAP_END
+void namcos23_state::s23h8rwmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).rw(this, FUNC(namcos23_state::sharedram_sub_r), FUNC(namcos23_state::sharedram_sub_w));
+ map(0x280000, 0x287fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
+ map(0x300000, 0x300003).noprw(); // seems to be more inputs, maybe false leftover code from System 12?
+ map(0x300010, 0x300011).noprw();
+ map(0x300020, 0x300021).w(this, FUNC(namcos23_state::sub_interrupt_main_w));
+ map(0x300030, 0x300031).nopw(); // timecrs2 writes this when writing to the sync shared ram location, motoxgo doesn't
+}
-ADDRESS_MAP_START(namcos23_state::s23h8iomap)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(mcu_p6_r, mcu_p6_w )
- AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READWRITE(mcu_p8_r, mcu_p8_w )
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(mcu_pa_r, mcu_pa_w )
- AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(mcu_pb_r, mcu_pb_w )
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
- AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
- AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP
-ADDRESS_MAP_END
+void namcos23_state::s23h8iomap(address_map &map)
+{
+ map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(namcos23_state::mcu_p6_r), FUNC(namcos23_state::mcu_p6_w));
+ map(h8_device::PORT_8, h8_device::PORT_8).rw(this, FUNC(namcos23_state::mcu_p8_r), FUNC(namcos23_state::mcu_p8_w));
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos23_state::mcu_pa_r), FUNC(namcos23_state::mcu_pa_w));
+ map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos23_state::mcu_pb_r), FUNC(namcos23_state::mcu_pb_w));
+ map(h8_device::ADC_0, h8_device::ADC_0).noprw();
+ map(h8_device::ADC_1, h8_device::ADC_1).noprw();
+ map(h8_device::ADC_2, h8_device::ADC_2).noprw();
+ map(h8_device::ADC_3, h8_device::ADC_3).noprw();
+}
@@ -3159,23 +3165,25 @@ READ16_MEMBER(namcos23_state::iob_analog_r)
}
-ADDRESS_MAP_START(namcos23_state::s23iobrdmap)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("iocpu", 0)
- AM_RANGE(0x6000, 0x6001) AM_READ_PORT("IN01")
- AM_RANGE(0x6002, 0x6003) AM_READ_PORT("IN23")
- AM_RANGE(0x6004, 0x6005) AM_WRITENOP
- AM_RANGE(0x6006, 0x6007) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void namcos23_state::s23iobrdmap(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("iocpu", 0);
+ map(0x6000, 0x6001).portr("IN01");
+ map(0x6002, 0x6003).portr("IN23");
+ map(0x6004, 0x6005).nopw();
+ map(0x6006, 0x6007).noprw();
+ map(0xc000, 0xffff).ram();
+}
-ADDRESS_MAP_START(namcos23_state::s23iobrdiomap)
- AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READWRITE(iob_p4_r, iob_p4_w)
- AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) AM_NOP // bit 2 = status LED to indicate transmitting packet to main
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(iob_p6_r, iob_p6_w)
- AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_NOP // unknown - used on ASCA-5 only
- AM_RANGE(h8_device::PORT_9, h8_device::PORT_9) AM_NOP // unknown - used on ASCA-5 only
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_3) AM_READ(iob_analog_r)
-ADDRESS_MAP_END
+void namcos23_state::s23iobrdiomap(address_map &map)
+{
+ map(h8_device::PORT_4, h8_device::PORT_4).rw(this, FUNC(namcos23_state::iob_p4_r), FUNC(namcos23_state::iob_p4_w));
+ map(h8_device::PORT_5, h8_device::PORT_5).noprw(); // bit 2 = status LED to indicate transmitting packet to main
+ map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(namcos23_state::iob_p6_r), FUNC(namcos23_state::iob_p6_w));
+ map(h8_device::PORT_8, h8_device::PORT_8).noprw(); // unknown - used on ASCA-5 only
+ map(h8_device::PORT_9, h8_device::PORT_9).noprw(); // unknown - used on ASCA-5 only
+ map(h8_device::ADC_0, h8_device::ADC_3).r(this, FUNC(namcos23_state::iob_analog_r));
+}
// Time Crisis lightgun
@@ -3198,10 +3206,11 @@ READ8_MEMBER(namcos23_state::iob_gun_r)
return 0;
}
-ADDRESS_MAP_START(namcos23_state::timecrs2iobrdmap)
- AM_IMPORT_FROM( s23iobrdmap )
- AM_RANGE(0x7000, 0x700f) AM_READ8(iob_gun_r, 0xffff)
-ADDRESS_MAP_END
+void namcos23_state::timecrs2iobrdmap(address_map &map)
+{
+ s23iobrdmap(map);
+ map(0x7000, 0x700f).r(this, FUNC(namcos23_state::iob_gun_r));
+}
diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp
index 5463aca574e..56408f97444 100644
--- a/src/mame/drivers/namcos86.cpp
+++ b/src/mame/drivers/namcos86.cpp
@@ -333,153 +333,165 @@ void namcos86_state::machine_start()
}
-ADDRESS_MAP_START(namcos86_state::cpu1_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_WRITE(videoram2_w) AM_SHARE("videoram2")
+void namcos86_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1");
+ map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2");
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_WRITE(spriteram_w) AM_SHARE("spriteram")
+ map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram");
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
+ map(0x4000, 0x43ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
/* ROM & Voice expansion board - only some games have it */
- AM_RANGE(0x6000, 0x7fff) AM_WRITE(cus115_w) /* ROM bank select and 63701X sample player control */
+ map(0x6000, 0x7fff).w(this, FUNC(namcos86_state::cus115_w)); /* ROM bank select and 63701X sample player control */
- AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog1_w)
- AM_RANGE(0x8400, 0x8400) AM_WRITE(int_ack1_w) /* IRQ acknowledge */
- AM_RANGE(0x8800, 0x8fff) AM_WRITE(tilebank_select_w)
+ map(0x8000, 0x8000).w(this, FUNC(namcos86_state::watchdog1_w));
+ map(0x8400, 0x8400).w(this, FUNC(namcos86_state::int_ack1_w)); /* IRQ acknowledge */
+ map(0x8800, 0x8fff).w(this, FUNC(namcos86_state::tilebank_select_w));
- AM_RANGE(0x9000, 0x9002) AM_WRITE(scroll0_w) /* scroll + priority */
- AM_RANGE(0x9003, 0x9003) AM_WRITE(bankswitch1_w)
- AM_RANGE(0x9004, 0x9006) AM_WRITE(scroll1_w) /* scroll + priority */
+ map(0x9000, 0x9002).w(this, FUNC(namcos86_state::scroll0_w)); /* scroll + priority */
+ map(0x9003, 0x9003).w(this, FUNC(namcos86_state::bankswitch1_w));
+ map(0x9004, 0x9006).w(this, FUNC(namcos86_state::scroll1_w)); /* scroll + priority */
- AM_RANGE(0x9400, 0x9402) AM_WRITE(scroll2_w) /* scroll + priority */
+ map(0x9400, 0x9402).w(this, FUNC(namcos86_state::scroll2_w)); /* scroll + priority */
// { 0x9403, 0x9403 } sub CPU rom bank select would be here
- AM_RANGE(0x9404, 0x9406) AM_WRITE(scroll3_w) /* scroll + priority */
+ map(0x9404, 0x9406).w(this, FUNC(namcos86_state::scroll3_w)); /* scroll + priority */
- AM_RANGE(0xa000, 0xa000) AM_WRITE(backcolor_w)
-ADDRESS_MAP_END
+ map(0xa000, 0xa000).w(this, FUNC(namcos86_state::backcolor_w));
+}
// skykiddx and hopmappy cpu2 programs do nothing but sit in a loop resetting the watchdog
// shared RAM is presumably mapped somewhere, but it's impossible to infer from program behaviour
-ADDRESS_MAP_START(namcos86_state::hopmappy_cpu2_map)
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(watchdog2_w)
- AM_RANGE(0x9400, 0x9400) AM_WRITE(int_ack2_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::roishtar_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(watchdog2_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(int_ack2_w) // IRQ acknowledge
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::genpeitd_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xb000, 0xb000) AM_WRITE(watchdog2_w)
- AM_RANGE(0x8800, 0x8800) AM_WRITE(int_ack2_w) // IRQ acknowledge
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::rthunder_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog2_w)
- AM_RANGE(0x8800, 0x8800) AM_WRITE(int_ack2_w) // IRQ acknowledge
+void namcos86_state::hopmappy_cpu2_map(address_map &map)
+{
+ map(0x8000, 0xffff).rom();
+ map(0x9000, 0x9000).w(this, FUNC(namcos86_state::watchdog2_w));
+ map(0x9400, 0x9400).w(this, FUNC(namcos86_state::int_ack2_w));
+}
+
+void namcos86_state::roishtar_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram");
+ map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2");
+ map(0x6000, 0x7fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1");
+ map(0x8000, 0xffff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(namcos86_state::watchdog2_w));
+ map(0xb000, 0xb000).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge
+}
+
+void namcos86_state::genpeitd_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1");
+ map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2");
+ map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram");
+ map(0x8000, 0xffff).rom();
+ map(0xb000, 0xb000).w(this, FUNC(namcos86_state::watchdog2_w));
+ map(0x8800, 0x8800).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge
+}
+
+void namcos86_state::rthunder_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram");
+ map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1");
+ map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2");
+ map(0x6000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xffff).rom();
+ map(0x8000, 0x8000).w(this, FUNC(namcos86_state::watchdog2_w));
+ map(0x8800, 0x8800).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge
// { 0xd800, 0xd802 } layer 2 scroll registers would be here
- AM_RANGE(0xd803, 0xd803) AM_WRITE(bankswitch2_w)
+ map(0xd803, 0xd803).w(this, FUNC(namcos86_state::bankswitch2_w));
// { 0xd804, 0xd806 } layer 3 scroll registers would be here
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::wndrmomo_cpu2_map)
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
- AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_WRITE(watchdog2_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(int_ack2_w) // IRQ acknowledge
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(namcos86_state::common_mcu_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r,m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w)
- AM_RANGE(0x1400, 0x1fff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROM // external ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM // internal ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::hopmappy_mcu_map)
- AM_IMPORT_FROM(common_mcu_map)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x2020, 0x2020) AM_READ_PORT("IN0")
- AM_RANGE(0x2021, 0x2021) AM_READ_PORT("IN1")
- AM_RANGE(0x2030, 0x2030) AM_READ(dsw0_r)
- AM_RANGE(0x2031, 0x2031) AM_READ(dsw1_r)
- AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ??? written (not always) at end of interrupt
- AM_RANGE(0x8800, 0x8800) AM_WRITENOP // ??? written (not always) at end of interrupt
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::roishtar_mcu_map)
- AM_IMPORT_FROM(common_mcu_map)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x6020, 0x6020) AM_READ_PORT("IN0")
- AM_RANGE(0x6021, 0x6021) AM_READ_PORT("IN1")
- AM_RANGE(0x6030, 0x6030) AM_READ(dsw0_r)
- AM_RANGE(0x6031, 0x6031) AM_READ(dsw1_r)
- AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ??? written (not always) at end of interrupt
- AM_RANGE(0x9800, 0x9800) AM_WRITENOP // ??? written (not always) at end of interrupt
-ADDRESS_MAP_END
+}
+
+void namcos86_state::wndrmomo_cpu2_map(address_map &map)
+{
+ map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram");
+ map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1");
+ map(0x6000, 0x7fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2");
+ map(0x8000, 0xffff).rom();
+ map(0xc000, 0xc000).w(this, FUNC(namcos86_state::watchdog2_w));
+ map(0xc800, 0xc800).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge
+}
+
+
+void namcos86_state::common_mcu_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw("mcu", FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w));
+ map(0x1400, 0x1fff).ram();
+ map(0x8000, 0xbfff).rom(); // external ROM
+ map(0xf000, 0xffff).rom(); // internal ROM
+}
+
+void namcos86_state::hopmappy_mcu_map(address_map &map)
+{
+ common_mcu_map(map);
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2020, 0x2020).portr("IN0");
+ map(0x2021, 0x2021).portr("IN1");
+ map(0x2030, 0x2030).r(this, FUNC(namcos86_state::dsw0_r));
+ map(0x2031, 0x2031).r(this, FUNC(namcos86_state::dsw1_r));
+ map(0x8000, 0x8000).nopw(); // ??? written (not always) at end of interrupt
+ map(0x8800, 0x8800).nopw(); // ??? written (not always) at end of interrupt
+}
+
+void namcos86_state::roishtar_mcu_map(address_map &map)
+{
+ common_mcu_map(map);
+ map(0x2000, 0x3fff).rom();
+ map(0x6000, 0x6001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x6020, 0x6020).portr("IN0");
+ map(0x6021, 0x6021).portr("IN1");
+ map(0x6030, 0x6030).r(this, FUNC(namcos86_state::dsw0_r));
+ map(0x6031, 0x6031).r(this, FUNC(namcos86_state::dsw1_r));
+ map(0x8000, 0x8000).nopw(); // ??? written (not always) at end of interrupt
+ map(0x9800, 0x9800).nopw(); // ??? written (not always) at end of interrupt
+}
// are these three actually different, or are the I/O ports simply mirrored from 0x2000-0x3fff?
-ADDRESS_MAP_START(namcos86_state::genpeitd_mcu_map)
- AM_IMPORT_FROM(common_mcu_map)
- AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x2820, 0x2820) AM_READ_PORT("IN0")
- AM_RANGE(0x2821, 0x2821) AM_READ_PORT("IN1")
- AM_RANGE(0x2830, 0x2830) AM_READ(dsw0_r)
- AM_RANGE(0x2831, 0x2831) AM_READ(dsw1_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP // ??? written (not always) at end of interrupt
- AM_RANGE(0xa800, 0xa800) AM_WRITENOP // ??? written (not always) at end of interrupt
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::rthunder_mcu_map)
- AM_IMPORT_FROM(common_mcu_map)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x2020, 0x2020) AM_READ_PORT("IN0")
- AM_RANGE(0x2021, 0x2021) AM_READ_PORT("IN1")
- AM_RANGE(0x2030, 0x2030) AM_READ(dsw0_r)
- AM_RANGE(0x2031, 0x2031) AM_READ(dsw1_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROM
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // ??? written (not always) at end of interrupt
- AM_RANGE(0xb800, 0xb800) AM_WRITENOP // ??? written (not always) at end of interrupt
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos86_state::wndrmomo_mcu_map)
- AM_IMPORT_FROM(common_mcu_map)
- AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x3820, 0x3820) AM_READ_PORT("IN0")
- AM_RANGE(0x3821, 0x3821) AM_READ_PORT("IN1")
- AM_RANGE(0x3830, 0x3830) AM_READ(dsw0_r)
- AM_RANGE(0x3831, 0x3831) AM_READ(dsw1_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_WRITENOP // ??? written (not always) at end of interrupt
- AM_RANGE(0xc800, 0xc800) AM_WRITENOP // ??? written (not always) at end of interrupt
-ADDRESS_MAP_END
+void namcos86_state::genpeitd_mcu_map(address_map &map)
+{
+ common_mcu_map(map);
+ map(0x2800, 0x2801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2820, 0x2820).portr("IN0");
+ map(0x2821, 0x2821).portr("IN1");
+ map(0x2830, 0x2830).r(this, FUNC(namcos86_state::dsw0_r));
+ map(0x2831, 0x2831).r(this, FUNC(namcos86_state::dsw1_r));
+ map(0x4000, 0x7fff).rom();
+ map(0xa000, 0xa000).nopw(); // ??? written (not always) at end of interrupt
+ map(0xa800, 0xa800).nopw(); // ??? written (not always) at end of interrupt
+}
+
+void namcos86_state::rthunder_mcu_map(address_map &map)
+{
+ common_mcu_map(map);
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2020, 0x2020).portr("IN0");
+ map(0x2021, 0x2021).portr("IN1");
+ map(0x2030, 0x2030).r(this, FUNC(namcos86_state::dsw0_r));
+ map(0x2031, 0x2031).r(this, FUNC(namcos86_state::dsw1_r));
+ map(0x4000, 0x7fff).rom();
+ map(0xb000, 0xb000).nopw(); // ??? written (not always) at end of interrupt
+ map(0xb800, 0xb800).nopw(); // ??? written (not always) at end of interrupt
+}
+
+void namcos86_state::wndrmomo_mcu_map(address_map &map)
+{
+ common_mcu_map(map);
+ map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x3820, 0x3820).portr("IN0");
+ map(0x3821, 0x3821).portr("IN1");
+ map(0x3830, 0x3830).r(this, FUNC(namcos86_state::dsw0_r));
+ map(0x3831, 0x3831).r(this, FUNC(namcos86_state::dsw1_r));
+ map(0x4000, 0x7fff).rom();
+ map(0xc000, 0xc000).nopw(); // ??? written (not always) at end of interrupt
+ map(0xc800, 0xc800).nopw(); // ??? written (not always) at end of interrupt
+}
READ8_MEMBER(namcos86_state::readFF)
@@ -487,12 +499,13 @@ READ8_MEMBER(namcos86_state::readFF)
return 0xff;
}
-ADDRESS_MAP_START(namcos86_state::mcu_port_map)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("IN2")
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(coin_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(led_w)
-ADDRESS_MAP_END
+void namcos86_state::mcu_port_map(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).portr("IN2");
+ map(M6801_PORT2, M6801_PORT2).r(this, FUNC(namcos86_state::readFF)); /* leds won't work otherwise */
+ map(M6801_PORT1, M6801_PORT1).w(this, FUNC(namcos86_state::coin_w));
+ map(M6801_PORT2, M6801_PORT2).w(this, FUNC(namcos86_state::led_w));
+}
/*******************************************************************/
diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp
index 0ecd4600eec..2ec3e84e971 100644
--- a/src/mame/drivers/nanos.cpp
+++ b/src/mame/drivers/nanos.cpp
@@ -93,10 +93,11 @@ private:
-ADDRESS_MAP_START(nanos_state::nanos_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_READ_BANK("bank1") AM_WRITE_BANK("bank3")
- AM_RANGE( 0x1000, 0xffff ) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
+void nanos_state::nanos_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bank1").bankw("bank3");
+ map(0x1000, 0xffff).bankrw("bank2");
+}
WRITE8_MEMBER(nanos_state::nanos_tc_w)
{
@@ -139,31 +140,32 @@ static const z80_daisy_config nanos_daisy_chain[] =
{ nullptr }
};
-ADDRESS_MAP_START(nanos_state::nanos_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void nanos_state::nanos_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
/* CPU card */
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
+ map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
/* I/O card */
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write)
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("z80sio_0", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x88, 0x8B) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write)
- AM_RANGE(0x8C, 0x8F) AM_DEVREADWRITE("z80ctc_0", z80ctc_device, read, write)
+ map(0x80, 0x83).rw(m_pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x84, 0x87).rw(m_sio_0, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x88, 0x8B).rw(m_pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x8C, 0x8F).rw(m_ctc_0, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
/* FDC card */
- AM_RANGE(0x92, 0x92) AM_WRITE(nanos_tc_w)
- AM_RANGE(0x94, 0x95) AM_DEVICE("upd765", upd765a_device, map)
+ map(0x92, 0x92).w(this, FUNC(nanos_state::nanos_tc_w));
+ map(0x94, 0x95).m(m_fdc, FUNC(upd765a_device::map));
/* V24+IFSS card */
- AM_RANGE(0xA0, 0xA3) AM_DEVREADWRITE("z80sio_0", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0xA4, 0xA7) AM_DEVREADWRITE("z80ctc_1", z80ctc_device, read, write)
+ map(0xA0, 0xA3).rw(m_sio_0, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0xA4, 0xA7).rw(m_ctc_1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
/* 256-k RAM card I - 64k OS-Memory + 192k-RAM-Floppy */
//AM_RANGE(0xC0, 0xC7)
/* 256-k RAM card II - 64k OS-Memory + 192k-RAM-Floppy */
//AM_RANGE(0xC8, 0xCF)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( nanos )
diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp
index fedc6467368..45bf387b23f 100644
--- a/src/mame/drivers/naomi.cpp
+++ b/src/mame/drivers/naomi.cpp
@@ -1680,43 +1680,44 @@ WRITE64_MEMBER(naomi_state::eeprom_93c46a_w )
* Naomi 1 address map
*/
-ADDRESS_MAP_START(naomi_state::naomi_map)
+void naomi_state::naomi_map(address_map &map)
+{
/* Area 0 */
- AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rombase") // BIOS
-
- AM_RANGE(0x00200000, 0x00207fff) AM_MIRROR(0x02000000) AM_RAM // bios uses it (battery backed ram ?)
- AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w )
- AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7018, 0x005f702f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16( "comm_board", m3comm_device, naomi_r, naomi_w, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w )
- AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU)
- AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU)
- AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w )
- AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU)
- AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU )
- AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB)
+ map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0).share("rombase"); // BIOS
+
+ map(0x00200000, 0x00207fff).mirror(0x02000000).ram(); // bios uses it (battery backed ram ?)
+ map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_sysctrl_r), FUNC(naomi_state::dc_sysctrl_w));
+ map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap));
+ map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff);
+ map(0x005f7018, 0x005f702f).mirror(0x02000000).rw("comm_board", FUNC(m3comm_device::naomi_r), FUNC(m3comm_device::naomi_w)).umask64(0x0000ffff0000ffff);
+ map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap));
+ map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_g2_ctrl_r), FUNC(naomi_state::dc_g2_ctrl_w));
+ map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map));
+ map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map));
+ map(0x00600000, 0x006007ff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_modem_r), FUNC(naomi_state::dc_modem_w));
+ map(0x00700000, 0x00707fff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_aica_reg_r), FUNC(naomi_state::dc_aica_reg_w));
+ map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff);
+ map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(this, FUNC(naomi_state::sh4_soundram_r), FUNC(naomi_state::sh4_soundram_w)); // sound RAM (8 MB)
/* External Device */
- AM_RANGE(0x01000000, 0x01ffffff) AM_MIRROR(0x02000000) AM_READ16(naomi_g2bus_r, 0xffffffffffffffffU)
+ map(0x01000000, 0x01ffffff).mirror(0x02000000).r(this, FUNC(naomi_state::naomi_g2bus_r));
/* Area 1 */
- AM_RANGE(0x04000000, 0x04ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access
- AM_RANGE(0x05000000, 0x05ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
+ map(0x04000000, 0x04ffffff).mirror(0x02000000).ram().share("dc_texture_ram"); // texture memory 64 bit access
+ map(0x05000000, 0x05ffffff).mirror(0x02000000).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
/* Area 2*/
- AM_RANGE(0x08000000, 0x09ffffff) AM_MIRROR(0x02000000) AM_NOP // 'Unassigned'
+ map(0x08000000, 0x09ffffff).mirror(0x02000000).noprw(); // 'Unassigned'
/* Area 3 */
- AM_RANGE(0x0c000000, 0x0dffffff) AM_MIRROR(0xa2000000) AM_RAM AM_SHARE("dc_ram")
+ map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram");
/* Area 4 */
- AM_RANGE(0x10000000, 0x107fffff) AM_MIRROR(0x02000000) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w)
- AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU)
- AM_RANGE(0x11000000, 0x11ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
+ map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
+ map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
+ map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
/* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */
- AM_RANGE(0x13000000, 0x13ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
+ map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
/* Area 5 */
//AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext.
@@ -1726,7 +1727,7 @@ ADDRESS_MAP_START(naomi_state::naomi_map)
/* Area 7 */
//AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal
-ADDRESS_MAP_END
+}
/*
* Naomi 2 address map
@@ -1739,54 +1740,55 @@ WRITE32_MEMBER(naomi2_state::both_pvr2_ta_w)
space.write_dword(0x025f8000|offset*4,data,mem_mask);
}
-ADDRESS_MAP_START(naomi2_state::naomi2_map)
+void naomi2_state::naomi2_map(address_map &map)
+{
/* Area 0 */
- AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rombase") // BIOS
-
- AM_RANGE(0x00200000, 0x00207fff) AM_MIRROR(0x02000000) AM_RAM // bios uses it (battery backed ram ?)
- AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w )
- AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w )
- AM_RANGE(0x005f7c00, 0x005f7cff) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU)
- AM_RANGE(0x005f8000, 0x005f9fff) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU)
- AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w )
- AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU)
- AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU )
- AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB)
+ map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0).share("rombase"); // BIOS
+
+ map(0x00200000, 0x00207fff).mirror(0x02000000).ram(); // bios uses it (battery backed ram ?)
+ map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_sysctrl_r), FUNC(naomi2_state::dc_sysctrl_w));
+ map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap));
+ map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff);
+ map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap));
+ map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_g2_ctrl_r), FUNC(naomi2_state::dc_g2_ctrl_w));
+ map(0x005f7c00, 0x005f7cff).m(m_powervr2, FUNC(powervr2_device::pd_dma_map));
+ map(0x005f8000, 0x005f9fff).m(m_powervr2, FUNC(powervr2_device::ta_map));
+ map(0x00600000, 0x006007ff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_modem_r), FUNC(naomi2_state::dc_modem_w));
+ map(0x00700000, 0x00707fff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_aica_reg_r), FUNC(naomi2_state::dc_aica_reg_w));
+ map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff);
+ map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(this, FUNC(naomi2_state::sh4_soundram_r), FUNC(naomi2_state::sh4_soundram_w)); // sound RAM (8 MB)
/* External Device */
- AM_RANGE(0x01000000, 0x01ffffff) AM_MIRROR(0x02000000) AM_READ16(naomi_g2bus_r, 0xffffffffffffffffU)
+ map(0x01000000, 0x01ffffff).mirror(0x02000000).r(this, FUNC(naomi2_state::naomi_g2bus_r));
- AM_RANGE(0x025f7c00, 0x025f7cff) AM_DEVICE32("powervr2_slave", powervr2_device, pd_dma_map, 0xffffffffffffffffU)
- AM_RANGE(0x025f8000, 0x025f9fff) AM_DEVICE32("powervr2_slave", powervr2_device, ta_map, 0xffffffffffffffffU)
+ map(0x025f7c00, 0x025f7cff).m(m_powervr2_slave, FUNC(powervr2_device::pd_dma_map));
+ map(0x025f8000, 0x025f9fff).m(m_powervr2_slave, FUNC(powervr2_device::ta_map));
// AM_RANGE(0x025f6800, 0x025f69ff) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) // second PVR DMA!
// AM_RANGE(0x025f7c00, 0x025f7cff) AM_DEVREADWRITE32("powervr2", powervr2_device, pvr_ctrl_r, pvr_ctrl_w, 0xffffffffffffffffU)
// AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU)
/* Area 1 */
- AM_RANGE(0x04000000, 0x04ffffff) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access
- AM_RANGE(0x05000000, 0x05ffffff) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
- AM_RANGE(0x06000000, 0x06ffffff) AM_RAM AM_SHARE("textureram2") // 64 bit access 2nd PVR RAM
- AM_RANGE(0x07000000, 0x07ffffff) AM_RAM AM_SHARE("frameram2")// 32 bit access 2nd PVR RAM
+ map(0x04000000, 0x04ffffff).ram().share("dc_texture_ram"); // texture memory 64 bit access
+ map(0x05000000, 0x05ffffff).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
+ map(0x06000000, 0x06ffffff).ram().share("textureram2"); // 64 bit access 2nd PVR RAM
+ map(0x07000000, 0x07ffffff).ram().share("frameram2");// 32 bit access 2nd PVR RAM
/* Area 2*/
- AM_RANGE(0x085f6800, 0x085f69ff) AM_WRITE(dc_sysctrl_w ) // TODO: writes to BOTH PVRs
- AM_RANGE(0x085f8000, 0x085f9fff) AM_WRITE32(both_pvr2_ta_w, 0xffffffffffffffffU)
- AM_RANGE(0x08800000, 0x088000ff) AM_DEVREADWRITE32("powervr2", powervr2_device, elan_regs_r, elan_regs_w, 0xffffffffffffffffU) // T&L chip registers
+ map(0x085f6800, 0x085f69ff).w(this, FUNC(naomi2_state::dc_sysctrl_w)); // TODO: writes to BOTH PVRs
+ map(0x085f8000, 0x085f9fff).w(this, FUNC(naomi2_state::both_pvr2_ta_w));
+ map(0x08800000, 0x088000ff).rw(m_powervr2, FUNC(powervr2_device::elan_regs_r), FUNC(powervr2_device::elan_regs_w)); // T&L chip registers
// AM_RANGE(0x09000000, 0x09??????) T&L command processing
- AM_RANGE(0x0a000000, 0x0bffffff) AM_RAM AM_SHARE("elan_ram") // T&L chip RAM
+ map(0x0a000000, 0x0bffffff).ram().share("elan_ram"); // T&L chip RAM
/* Area 3 */
- AM_RANGE(0x0c000000, 0x0dffffff) AM_MIRROR(0xa2000000) AM_RAM AM_SHARE("dc_ram")
+ map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram");
/* Area 4 */
- AM_RANGE(0x10000000, 0x107fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w)
- AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU)
- AM_RANGE(0x11000000, 0x11ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
+ map(0x10000000, 0x107fffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
+ map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
+ map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
/* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */
- AM_RANGE(0x13000000, 0x13ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
+ map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
/* Area 5 */
//AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext.
@@ -1796,12 +1798,13 @@ ADDRESS_MAP_START(naomi2_state::naomi2_map)
/* Area 7 */
//AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(naomi_state::naomi_port)
- AM_RANGE(0x00, 0x0f) AM_READWRITE(eeprom_93c46a_r, eeprom_93c46a_w)
-ADDRESS_MAP_END
+void naomi_state::naomi_port(address_map &map)
+{
+ map(0x00, 0x0f).rw(this, FUNC(naomi_state::eeprom_93c46a_r), FUNC(naomi_state::eeprom_93c46a_w));
+}
/*
* Atomiswave address map, almost identical to Dreamcast
@@ -1913,46 +1916,47 @@ WRITE64_MEMBER(atomiswave_state::aw_modem_w )
osd_printf_verbose("%s",string_format("MODEM: [%08x=%x] write %x to %x, mask %x\n", 0x600000+reg*4, dat, data, offset, mem_mask).c_str());
}
-ADDRESS_MAP_START(atomiswave_state::aw_map)
+void atomiswave_state::aw_map(address_map &map)
+{
/* Area 0 */
- AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE(aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0)
- AM_RANGE(0xa0000000, 0xa001ffff) AM_READWRITE(aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0)
-
- AM_RANGE(0x00200000, 0x0021ffff) AM_RAM // battery backed up RAM
- AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w )
- AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", aw_rom_board, submap, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w )
- AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU)
- AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU)
- AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE(aw_modem_r, aw_modem_w )
- AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU)
- AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU )
- AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB)
+ map(0x00000000, 0x0001ffff).rw(this, FUNC(atomiswave_state::aw_flash_r), FUNC(atomiswave_state::aw_flash_w)).region("awflash", 0);
+ map(0xa0000000, 0xa001ffff).rw(this, FUNC(atomiswave_state::aw_flash_r), FUNC(atomiswave_state::aw_flash_w)).region("awflash", 0);
+
+ map(0x00200000, 0x0021ffff).ram(); // battery backed up RAM
+ map(0x005f6800, 0x005f69ff).rw(this, FUNC(atomiswave_state::dc_sysctrl_r), FUNC(atomiswave_state::dc_sysctrl_w));
+ map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap));
+ map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff);
+ map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap));
+ map(0x005f7800, 0x005f78ff).rw(this, FUNC(atomiswave_state::dc_g2_ctrl_r), FUNC(atomiswave_state::dc_g2_ctrl_w));
+ map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map));
+ map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map));
+ map(0x00600000, 0x006007ff).rw(this, FUNC(atomiswave_state::aw_modem_r), FUNC(atomiswave_state::aw_modem_w));
+ map(0x00700000, 0x00707fff).rw(this, FUNC(atomiswave_state::dc_aica_reg_r), FUNC(atomiswave_state::dc_aica_reg_w));
+ map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff);
+ map(0x00800000, 0x00ffffff).rw(this, FUNC(atomiswave_state::sh4_soundram_r), FUNC(atomiswave_state::sh4_soundram_w)); // sound RAM (8 MB)
/* Area 1 - half the texture memory, like dreamcast, not naomi */
- AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_MIRROR(0x00800000) AM_SHARE("dc_texture_ram") // texture memory 64 bit access
- AM_RANGE(0x05000000, 0x057fffff) AM_RAM AM_MIRROR(0x00800000) AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
+ map(0x04000000, 0x047fffff).ram().mirror(0x00800000).share("dc_texture_ram"); // texture memory 64 bit access
+ map(0x05000000, 0x057fffff).ram().mirror(0x00800000).share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
/* Area 2*/
- AM_RANGE(0x08000000, 0x0bffffff) AM_NOP // 'Unassigned'
+ map(0x08000000, 0x0bffffff).noprw(); // 'Unassigned'
/* Area 3 */
- AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("dc_ram")
- AM_RANGE(0x0d000000, 0x0dffffff) AM_RAM AM_SHARE("dc_ram") // extra ram on Naomi (mirror on DC)
- AM_RANGE(0x0e000000, 0x0effffff) AM_RAM AM_SHARE("dc_ram") // mirror
- AM_RANGE(0x0f000000, 0x0fffffff) AM_RAM AM_SHARE("dc_ram") // mirror
+ map(0x0c000000, 0x0cffffff).ram().share("dc_ram");
+ map(0x0d000000, 0x0dffffff).ram().share("dc_ram"); // extra ram on Naomi (mirror on DC)
+ map(0x0e000000, 0x0effffff).ram().share("dc_ram"); // mirror
+ map(0x0f000000, 0x0fffffff).ram().share("dc_ram"); // mirror
- AM_RANGE(0x8c000000, 0x8cffffff) AM_RAM AM_SHARE("dc_ram") // RAM access through cache
- AM_RANGE(0x8d000000, 0x8dffffff) AM_RAM AM_SHARE("dc_ram") // RAM access through cache
+ map(0x8c000000, 0x8cffffff).ram().share("dc_ram"); // RAM access through cache
+ map(0x8d000000, 0x8dffffff).ram().share("dc_ram"); // RAM access through cache
/* Area 4 - half the texture memory, like dreamcast, not naomi */
- AM_RANGE(0x10000000, 0x107fffff) AM_MIRROR(0x02000000) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w)
- AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU)
- AM_RANGE(0x11000000, 0x117fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue
+ map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
+ map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
+ map(0x11000000, 0x117fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue
/* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */
- AM_RANGE(0x13000000, 0x137fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue
+ map(0x13000000, 0x137fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue
/* Area 5 */
@@ -1963,17 +1967,19 @@ ADDRESS_MAP_START(atomiswave_state::aw_map)
/* Area 7 */
//AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(atomiswave_state::aw_port)
+void atomiswave_state::aw_port(address_map &map)
+{
// ???
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(dc_state::dc_audio_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("dc_sound_ram") /* shared with SH-4 */
- AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w)
-ADDRESS_MAP_END
+void dc_state::dc_audio_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x007fffff).ram().share("dc_sound_ram"); /* shared with SH-4 */
+ map(0x00800000, 0x00807fff).rw(this, FUNC(dc_state::dc_arm_aica_r), FUNC(dc_state::dc_arm_aica_w));
+}
/*
* Input ports
diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp
index 805176f4bfb..a183c9714dc 100644
--- a/src/mame/drivers/nascom1.cpp
+++ b/src/mame/drivers/nascom1.cpp
@@ -473,40 +473,45 @@ void nascom_state::screen_update(bitmap_ind16 &bitmap, const rectangle &cliprect
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(nascom1_state::nascom1_mem)
- AM_RANGE(0x0000, 0x07ff) AM_ROM // MONITOR
- AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM // WRAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nascom1_state::nascom1_io)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x00, 0x00) AM_READWRITE(nascom1_port_00_r, nascom1_port_00_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(nascom1_port_01_r, nascom1_port_01_w)
- AM_RANGE(0x02, 0x02) AM_READ(nascom1_port_02_r)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nascom2_state::nascom2_mem)
- AM_RANGE(0x0000, 0x07ff) AM_ROM // MONITOR
- AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM // WRAM
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("basic", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nascom2_state::nascom2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(nascom1_port_00_r, nascom1_port_00_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(nascom1_port_01_r, nascom1_port_01_w)
- AM_RANGE(0x02, 0x02) AM_READ(nascom1_port_02_r)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nascom2_state::nascom2c_mem)
- AM_RANGE(0xf000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xfc00, 0xffff) AM_RAM // WRAM
-ADDRESS_MAP_END
+void nascom1_state::nascom1_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom(); // MONITOR
+ map(0x0800, 0x0bff).ram().share("videoram");
+ map(0x0c00, 0x0fff).ram(); // WRAM
+}
+
+void nascom1_state::nascom1_io(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x00, 0x00).rw(this, FUNC(nascom1_state::nascom1_port_00_r), FUNC(nascom1_state::nascom1_port_00_w));
+ map(0x01, 0x01).rw(this, FUNC(nascom1_state::nascom1_port_01_r), FUNC(nascom1_state::nascom1_port_01_w));
+ map(0x02, 0x02).r(this, FUNC(nascom1_state::nascom1_port_02_r));
+ map(0x04, 0x07).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
+
+void nascom2_state::nascom2_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom(); // MONITOR
+ map(0x0800, 0x0bff).ram().share("videoram");
+ map(0x0c00, 0x0fff).ram(); // WRAM
+ map(0xe000, 0xffff).rom().region("basic", 0);
+}
+
+void nascom2_state::nascom2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(nascom2_state::nascom1_port_00_r), FUNC(nascom2_state::nascom1_port_00_w));
+ map(0x01, 0x01).rw(this, FUNC(nascom2_state::nascom1_port_01_r), FUNC(nascom2_state::nascom1_port_01_w));
+ map(0x02, 0x02).r(this, FUNC(nascom2_state::nascom1_port_02_r));
+ map(0x04, 0x07).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
+
+void nascom2_state::nascom2c_mem(address_map &map)
+{
+ map(0xf000, 0xf7ff).rom().region("maincpu", 0);
+ map(0xf800, 0xfbff).ram().share("videoram");
+ map(0xfc00, 0xffff).ram(); // WRAM
+}
//**************************************************************************
diff --git a/src/mame/drivers/naughtyb.cpp b/src/mame/drivers/naughtyb.cpp
index a2f73212fc0..e258b227f67 100644
--- a/src/mame/drivers/naughtyb.cpp
+++ b/src/mame/drivers/naughtyb.cpp
@@ -246,31 +246,33 @@ WRITE8_MEMBER(naughtyb_state::popflame_protection_w)
-ADDRESS_MAP_START(naughtyb_state::naughtyb_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x9000, 0x97ff) AM_WRITE(naughtyb_videoreg_w)
- AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("scrollreg")
- AM_RANGE(0xa000, 0xa7ff) AM_DEVWRITE("naughtyb_custom", naughtyb_sound_device, control_a_w)
- AM_RANGE(0xa800, 0xafff) AM_DEVWRITE("naughtyb_custom", naughtyb_sound_device, control_b_w)
- AM_RANGE(0xb000, 0xb7ff) AM_READ(in0_port_r) // IN0
- AM_RANGE(0xb800, 0xbfff) AM_READ(dsw0_port_r) // DSW0
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(naughtyb_state::popflame_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x9000, 0x97ff) AM_WRITE(popflame_videoreg_w)
- AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("scrollreg")
- AM_RANGE(0xa000, 0xa7ff) AM_DEVWRITE("popflame_custom", popflame_sound_device, control_a_w)
- AM_RANGE(0xa800, 0xafff) AM_DEVWRITE("popflame_custom", popflame_sound_device, control_b_w)
- AM_RANGE(0xb000, 0xb7ff) AM_READ(in0_port_r) // IN0
- AM_RANGE(0xb800, 0xbfff) AM_READ(dsw0_port_r) // DSW0
-ADDRESS_MAP_END
+void naughtyb_state::naughtyb_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0x87ff).ram().share("videoram");
+ map(0x8800, 0x8fff).ram().share("videoram2");
+ map(0x9000, 0x97ff).w(this, FUNC(naughtyb_state::naughtyb_videoreg_w));
+ map(0x9800, 0x9fff).ram().share("scrollreg");
+ map(0xa000, 0xa7ff).w(m_naughtyb_custom, FUNC(naughtyb_sound_device::control_a_w));
+ map(0xa800, 0xafff).w(m_naughtyb_custom, FUNC(naughtyb_sound_device::control_b_w));
+ map(0xb000, 0xb7ff).r(this, FUNC(naughtyb_state::in0_port_r)); // IN0
+ map(0xb800, 0xbfff).r(this, FUNC(naughtyb_state::dsw0_port_r)); // DSW0
+}
+
+void naughtyb_state::popflame_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0x87ff).ram().share("videoram");
+ map(0x8800, 0x8fff).ram().share("videoram2");
+ map(0x9000, 0x97ff).w(this, FUNC(naughtyb_state::popflame_videoreg_w));
+ map(0x9800, 0x9fff).ram().share("scrollreg");
+ map(0xa000, 0xa7ff).w(m_popflame_custom, FUNC(popflame_sound_device::control_a_w));
+ map(0xa800, 0xafff).w(m_popflame_custom, FUNC(popflame_sound_device::control_b_w));
+ map(0xb000, 0xb7ff).r(this, FUNC(naughtyb_state::in0_port_r)); // IN0
+ map(0xb800, 0xbfff).r(this, FUNC(naughtyb_state::dsw0_port_r)); // DSW0
+}
diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp
index f5eb6c3ec02..90545e6b25b 100644
--- a/src/mame/drivers/nbmj8688.cpp
+++ b/src/mame/drivers/nbmj8688.cpp
@@ -121,21 +121,24 @@ DRIVER_INIT_MEMBER(nbmj8688_state,kaguya2)
}
-ADDRESS_MAP_START(nbmj8688_state::mjsikaku_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void nbmj8688_state::mjsikaku_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram().share("nvram");
+}
-ADDRESS_MAP_START(nbmj8688_state::secolove_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void nbmj8688_state::secolove_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram().share("nvram");
+}
-ADDRESS_MAP_START(nbmj8688_state::ojousan_map)
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void nbmj8688_state::ojousan_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).rom();
+}
@@ -146,24 +149,25 @@ READ8_MEMBER(nbmj8688_state::ff_r)
return 0xff;
}
-ADDRESS_MAP_START(nbmj8688_state::secolove_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
+void nbmj8688_state::secolove_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::secolove_romsel_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
WRITE8_MEMBER(nbmj8688_state::barline_output_w)
{
@@ -171,213 +175,223 @@ WRITE8_MEMBER(nbmj8688_state::barline_output_w)
machine().bookkeeping().coin_counter_w(0,data & 0x02);
}
-ADDRESS_MAP_START(nbmj8688_state::barline_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void nbmj8688_state::barline_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank1_w)
- AM_RANGE(0x70, 0x70) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_device, read, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) AM_WRITE(barline_output_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank1_w));
+ map(0x70, 0x70).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x80, 0x81).rw("psg", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)).w(this, FUNC(nbmj8688_state::barline_output_w));
+ map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
// AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) //not used
- AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) AM_WRITE(scrolly_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8688_state::crystalg_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(crystalg_romsel_w)
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::secolove_romsel_w));
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)).w(this, FUNC(nbmj8688_state::scrolly_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8688_state::crystalg_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::crystalg_romsel_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf0, 0xf0) AM_WRITENOP
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8688_state::otonano_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
- AM_RANGE(0x70, 0x77) AM_WRITE(blitter_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_device, read, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) AM_WRITE(scrolly_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8688_state::kaguya_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
- AM_RANGE(0x70, 0x77) AM_WRITE(blitter_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) AM_WRITE(scrolly_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8688_state::iemoto_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x40, 0x47) AM_WRITE(blitter_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
+}
+
+
+void nbmj8688_state::otonano_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w));
+ map(0x70, 0x77).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0x80, 0x81).rw("psg", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)).w(this, FUNC(nbmj8688_state::scrolly_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+
+void nbmj8688_state::kaguya_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w));
+ map(0x70, 0x77).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)).w(this, FUNC(nbmj8688_state::scrolly_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+
+void nbmj8688_state::iemoto_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x40, 0x47).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::seiha_romsel_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8688_state::seiha_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
+
+
+void nbmj8688_state::seiha_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::seiha_romsel_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8688_state::mjgaiden_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
+
+void nbmj8688_state::mjgaiden_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8688_state::p16bit_LCD_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x42, 0x42) AM_DEVWRITE("lcdc0", hd61830_device, data_w)
- AM_RANGE(0x43, 0x43) AM_DEVWRITE("lcdc0", hd61830_device, control_w)
- AM_RANGE(0x44, 0x44) AM_DEVWRITE("lcdc1", hd61830_device, data_w)
- AM_RANGE(0x45, 0x45) AM_DEVWRITE("lcdc1", hd61830_device, control_w)
- AM_RANGE(0x46, 0x46) AM_WRITE(HD61830B_both_data_w)
- AM_RANGE(0x47, 0x47) AM_WRITE(HD61830B_both_instr_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
+
+void nbmj8688_state::p16bit_LCD_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x42, 0x42).w(m_lcdc0, FUNC(hd61830_device::data_w));
+ map(0x43, 0x43).w(m_lcdc0, FUNC(hd61830_device::control_w));
+ map(0x44, 0x44).w(m_lcdc1, FUNC(hd61830_device::data_w));
+ map(0x45, 0x45).w(m_lcdc1, FUNC(hd61830_device::control_w));
+ map(0x46, 0x46).w(this, FUNC(nbmj8688_state::HD61830B_both_data_w));
+ map(0x47, 0x47).w(this, FUNC(nbmj8688_state::HD61830B_both_instr_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::secolove_romsel_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8688_state::mjsikaku_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
- AM_RANGE(0x60, 0x67) AM_WRITE(blitter_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_device, read, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8688_state::mmsikaku_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w)
- AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w)
- AM_RANGE(0x40, 0x47) AM_WRITE(blitter_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
+
+
+void nbmj8688_state::mjsikaku_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w));
+ map(0x60, 0x67).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0x80, 0x81).rw("psg", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
+
+
+void nbmj8688_state::mmsikaku_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w));
+ map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w));
+ map(0x40, 0x47).w(this, FUNC(nbmj8688_state::blitter_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w));
+ map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog?
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w));
// AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
// AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w)
-ADDRESS_MAP_END
+ map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w));
+}
CUSTOM_INPUT_MEMBER( nbmj8688_state::nb1413m3_busyflag_r )
{
diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp
index c4ea76b85c2..e485e73917b 100644
--- a/src/mame/drivers/nbmj8891.cpp
+++ b/src/mame/drivers/nbmj8891.cpp
@@ -227,326 +227,350 @@ DRIVER_INIT_MEMBER(nbmj8891_state,pairsten)
}
}
-ADDRESS_MAP_START(nbmj8891_state::gionbana_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::mgion_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::omotesnd_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::hanamomo_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::scandalm_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::club90s_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf80f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(palette_type1_r, palette_type1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::lovehous_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type2_r, palette_type2_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::maiko_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type2_r, palette_type2_w)
- AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::hnxmasev_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(palette_type2_r, palette_type2_w)
- AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::hnageman_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type2_r, palette_type2_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::mmaiko_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type2_r, palette_type2_w)
- AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::hanaoji_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(palette_type2_r, palette_type2_w)
- AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void nbmj8891_state::gionbana_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj8891_state::mgion_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w));
+ map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj8891_state::omotesnd_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj8891_state::hanamomo_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w));
+ map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8891_state::scandalm_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj8891_state::club90s_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf80f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xfc00, 0xfdff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w));
+}
+
+void nbmj8891_state::lovehous_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj8891_state::maiko_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w));
+ map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8891_state::hnxmasev_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf200, 0xf3ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w));
+ map(0xf700, 0xf70f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8891_state::hnageman_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8891_state::mmaiko_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w));
+ map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj8891_state::hanaoji_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf200, 0xf3ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w));
+ map(0xf700, 0xf70f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w));
+ map(0xf800, 0xffff).ram().share("nvram");
+}
READ8_MEMBER(nbmj8891_state::taiwanmb_unk_r)
{
return 0x00; // MCU or 1413M3 STATUS?
}
-ADDRESS_MAP_START(nbmj8891_state::taiwanmb_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xec00, 0xedff) AM_READWRITE(palette_type3_r, palette_type3_w)
- AM_RANGE(0xf800, 0xfeff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xff00, 0xff1f) AM_NOP // ?
- AM_RANGE(0xff20, 0xff20) AM_READ(taiwanmb_unk_r) // MCU or 1413M3 STATUS? (return != 0x00 then loop)
- AM_RANGE(0xff20, 0xff20) AM_WRITE(taiwanmb_mcu_w) // MCU PARAMETER?
- AM_RANGE(0xff21, 0xff2f) AM_READNOP // ?
- AM_RANGE(0xff21, 0xff21) AM_WRITENOP // blitter parameter set end (write 0x01 only)
- AM_RANGE(0xff22, 0xff27) AM_WRITE(taiwanmb_blitter_w) // blitter parameter
- AM_RANGE(0xff28, 0xff28) AM_WRITE(romsel_w) // gfx rombank select
- AM_RANGE(0xff29, 0xff29) AM_WRITE(taiwanmb_gfxflag_w) // screen flip flag?
- AM_RANGE(0xff2a, 0xff2a) AM_WRITENOP // not used?
- AM_RANGE(0xff2b, 0xff2b) AM_WRITE(clutsel_w) // color look up table select
- AM_RANGE(0xff2c, 0xff2c) AM_WRITENOP // blitter parameter set start (write 0xff only)
- AM_RANGE(0xff2d, 0xff2d) AM_WRITENOP // not used?
- AM_RANGE(0xff2e, 0xff2e) AM_WRITENOP // not used?
- AM_RANGE(0xff2f, 0xff2f) AM_WRITENOP // not used?
- AM_RANGE(0xff30, 0xffff) AM_RAM // RAM?
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8891_state::gionbana_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x20, 0x27) AM_WRITE(blitter_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::mgion_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x30, 0x37) AM_WRITE(blitter_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::omotesnd_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(vramsel_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w)
- AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w)
+void nbmj8891_state::taiwanmb_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xec00, 0xedff).rw(this, FUNC(nbmj8891_state::palette_type3_r), FUNC(nbmj8891_state::palette_type3_w));
+ map(0xf800, 0xfeff).ram().share("nvram");
+ map(0xff00, 0xff1f).noprw(); // ?
+ map(0xff20, 0xff20).r(this, FUNC(nbmj8891_state::taiwanmb_unk_r)); // MCU or 1413M3 STATUS? (return != 0x00 then loop)
+ map(0xff20, 0xff20).w(this, FUNC(nbmj8891_state::taiwanmb_mcu_w)); // MCU PARAMETER?
+ map(0xff21, 0xff2f).nopr(); // ?
+ map(0xff21, 0xff21).nopw(); // blitter parameter set end (write 0x01 only)
+ map(0xff22, 0xff27).w(this, FUNC(nbmj8891_state::taiwanmb_blitter_w)); // blitter parameter
+ map(0xff28, 0xff28).w(this, FUNC(nbmj8891_state::romsel_w)); // gfx rombank select
+ map(0xff29, 0xff29).w(this, FUNC(nbmj8891_state::taiwanmb_gfxflag_w)); // screen flip flag?
+ map(0xff2a, 0xff2a).nopw(); // not used?
+ map(0xff2b, 0xff2b).w(this, FUNC(nbmj8891_state::clutsel_w)); // color look up table select
+ map(0xff2c, 0xff2c).nopw(); // blitter parameter set start (write 0xff only)
+ map(0xff2d, 0xff2d).nopw(); // not used?
+ map(0xff2e, 0xff2e).nopw(); // not used?
+ map(0xff2f, 0xff2f).nopw(); // not used?
+ map(0xff30, 0xffff).ram(); // RAM?
+}
+
+
+void nbmj8891_state::gionbana_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x20, 0x27).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w));
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::mgion_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x30, 0x37).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w));
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::omotesnd_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x30, 0x30).w(this, FUNC(nbmj8891_state::vramsel_w));
+ map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w));
// AM_RANGE(0x50, 0x50) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_WRITENOP
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) AM_WRITENOP
- AM_RANGE(0xd0, 0xdf) AM_READ(clut_r)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::hanamomo_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x30, 0x37) AM_WRITE(blitter_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)).nopw();
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)).nopw();
+ map(0xd0, 0xdf).r(this, FUNC(nbmj8891_state::clut_r));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::hanamomo_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x30, 0x37).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) //AM_WRITENOP
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::msjiken_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); //AM_WRITENOP
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::msjiken_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x50, 0x57).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) //AM_WRITENOP
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::scandal_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w)
- AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); //AM_WRITENOP
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::scandal_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w));
+ map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) //AM_WRITENOP
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::scandalm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w)
- AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); //AM_WRITENOP
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::scandalm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::bananadr_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(vramsel_w)
- AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::bananadr_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x30, 0x30).w(this, FUNC(nbmj8891_state::vramsel_w));
+ map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w));
+ map(0x50, 0x50).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::lovehous_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) //AM_WRITENOP
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2")
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::maiko_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2") //AM_WRITENOP
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8891_state::taiwanmb_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) //AM_WRITENOP // ?
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::lovehous_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x50, 0x57).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); //AM_WRITENOP
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).portr("PORT0-2");
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w));
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::maiko_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w));
+ map(0x50, 0x57).w(this, FUNC(nbmj8891_state::blitter_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).portr("PORT0-2"); //AM_WRITENOP
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w));
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8891_state::taiwanmb_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); //AM_WRITENOP // ?
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
// AM_RANGE(0xc0, 0xc0) AM_WRITENOP // ?
// AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog?
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_h_r) AM_WRITE(taiwanmb_gfxdraw_w) // blitter draw start
- AM_RANGE(0xe1, 0xe1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_l_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw2_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
-ADDRESS_MAP_END
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw3_h_r)).w(this, FUNC(nbmj8891_state::taiwanmb_gfxdraw_w)); // blitter draw start
+ map(0xe1, 0xe1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw3_l_r));
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r));
+}
CUSTOM_INPUT_MEMBER( nbmj8891_state::nb1413m3_busyflag_r )
{
diff --git a/src/mame/drivers/nbmj8900.cpp b/src/mame/drivers/nbmj8900.cpp
index 9262731c1ba..ad793896ad3 100644
--- a/src/mame/drivers/nbmj8900.cpp
+++ b/src/mame/drivers/nbmj8900.cpp
@@ -93,42 +93,45 @@ DRIVER_INIT_MEMBER(nbmj8900_state,togenkyo)
}
-ADDRESS_MAP_START(nbmj8900_state::ohpaipee_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8900_state::togenkyo_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8900_state::ohpaipee_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w)
- AM_RANGE(0x20, 0x27) AM_WRITE(blitter_w)
-
- AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w)
-
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
-
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
-
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w)
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw2_r, outcoin_w)
-ADDRESS_MAP_END
+void nbmj8900_state::ohpaipee_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8900_state::clut_r), FUNC(nbmj8900_state::clut_w));
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8900_state::palette_type1_r), FUNC(nbmj8900_state::palette_type1_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8900_state::togenkyo_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8900_state::clut_r), FUNC(nbmj8900_state::clut_w));
+ map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8900_state::palette_type1_r), FUNC(nbmj8900_state::palette_type1_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8900_state::ohpaipee_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w));
+ map(0x20, 0x27).w(this, FUNC(nbmj8900_state::blitter_w));
+
+ map(0x40, 0x40).w(this, FUNC(nbmj8900_state::clutsel_w));
+ map(0x60, 0x60).w(this, FUNC(nbmj8900_state::romsel_w));
+ map(0x70, 0x70).w(this, FUNC(nbmj8900_state::scrolly_w));
+
+ map(0x80, 0x81).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).w(this, FUNC(nbmj8900_state::vramsel_w));
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r));
+ map(0xf1, 0xf1).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r), FUNC(nb1413m3_device::outcoin_w));
+}
static INPUT_PORTS_START( ohpaipee )
diff --git a/src/mame/drivers/nbmj8991.cpp b/src/mame/drivers/nbmj8991.cpp
index 2e216572d42..ff94a73a527 100644
--- a/src/mame/drivers/nbmj8991.cpp
+++ b/src/mame/drivers/nbmj8991.cpp
@@ -96,140 +96,155 @@ DRIVER_INIT_MEMBER(nbmj8991_state,tokimbsj)
}
-ADDRESS_MAP_START(nbmj8991_state::pstadium_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // finalbny
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::triplew1_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
- AM_RANGE(0xf200, 0xf20f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // mjgottub
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::triplew2_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
- AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::mjlstory_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
- AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::galkoku_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(palette_type1_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // hyouban
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::galkaika_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(palette_type2_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // tokimbsj
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::tokyogal_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type2_w) AM_SHARE("paletteram")
- AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::av2mj1bb_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
- AM_RANGE(0xf500, 0xf50f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::av2mj2rg_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::galkoku_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(blitter_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+void nbmj8991_state::pstadium_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram");
+ map(0xf800, 0xffff).ram().share("nvram"); // finalbny
+}
+
+void nbmj8991_state::triplew1_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram");
+ map(0xf200, 0xf20f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf800, 0xffff).ram().share("nvram"); // mjgottub
+}
+
+void nbmj8991_state::triplew2_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram");
+ map(0xf400, 0xf40f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8991_state::mjlstory_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram");
+ map(0xf700, 0xf70f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8991_state::galkoku_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(nbmj8991_state::palette_type1_w)).share("paletteram");
+ map(0xf800, 0xffff).ram().share("nvram"); // hyouban
+}
+
+void nbmj8991_state::galkaika_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(nbmj8991_state::palette_type2_w)).share("paletteram");
+ map(0xf800, 0xffff).ram().share("nvram"); // tokimbsj
+}
+
+void nbmj8991_state::tokyogal_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type2_w)).share("paletteram");
+ map(0xf400, 0xf40f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8991_state::av2mj1bb_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram");
+ map(0xf500, 0xf50f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8991_state::av2mj2rg_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w));
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram");
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj8991_state::galkoku_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)).w(this, FUNC(nbmj8991_state::blitter_w));
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::hyouban_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(blitter_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w)
- AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write)
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8991_state::hyouban_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)).w(this, FUNC(nbmj8991_state::blitter_w));
+ map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w));
+ map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w));
+ map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write));
// AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::pstadium_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_WRITE(blitter_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) //AM_WRITENOP
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r)
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8991_state::pstadium_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).w(this, FUNC(nbmj8991_state::blitter_w));
+ map(0x80, 0x80).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)); //AM_WRITENOP
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r));
// AM_RANGE(0xd0, 0xd0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w)
- AM_RANGE(0xf8, 0xf8) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::av2mj1bb_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x7f) AM_WRITE(blitter_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, vcrctrl_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r)
+ map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w));
+ map(0xf8, 0xf8).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+void nbmj8991_state::av2mj1bb_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x7f).w(this, FUNC(nbmj8991_state::blitter_w));
+ map(0x80, 0x80).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::vcrctrl_w));
+ map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r));
// AM_RANGE(0xd0, 0xd0) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r)
+ map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r));
// AM_RANGE(0xf0, 0xf0) AM_WRITENOP
- AM_RANGE(0xf8, 0xf8) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nbmj8991_state::nbmj8991_sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj8991_state::nbmj8991_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(soundbank_w)
- AM_RANGE(0x06, 0x06) AM_WRITENOP
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
-ADDRESS_MAP_END
+ map(0xf8, 0xf8).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r));
+}
+
+
+void nbmj8991_state::nbmj8991_sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void nbmj8991_state::nbmj8991_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x02, 0x02).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x04, 0x04).w(this, FUNC(nbmj8991_state::soundbank_w));
+ map(0x06, 0x06).nopw();
+ map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write));
+}
CUSTOM_INPUT_MEMBER( nbmj8991_state::nb1413m3_busyflag_r )
{
diff --git a/src/mame/drivers/nbmj9195.cpp b/src/mame/drivers/nbmj9195.cpp
index e006a39c325..c8c256eb1cf 100644
--- a/src/mame/drivers/nbmj9195.cpp
+++ b/src/mame/drivers/nbmj9195.cpp
@@ -232,411 +232,444 @@ DRIVER_INIT_MEMBER(nbmj9195_state,nbmj9195)
}
-ADDRESS_MAP_START(nbmj9195_state::sailorws_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mjuraden_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::koinomp_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::ngpgal_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mscoutm_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe5ff) AM_RAM
- AM_RANGE(0xe600, 0xebff) AM_RAM_WRITE(nb22090_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xec00, 0xf1ff) AM_RAM
- AM_RANGE(0xf200, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mjegolf_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe5ff) AM_RAM_WRITE(nb22090_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xe600, 0xebff) AM_RAM
- AM_RANGE(0xec00, 0xf1ff) AM_RAM
- AM_RANGE(0xf200, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mjuraden_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb2, 0xb2) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb4, 0xb4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb6, 0xb6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::koinomp_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc2, 0xc2) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xc4, 0xc4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xc6, 0xc6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
- AM_RANGE(0xcf, 0xcf) AM_MIRROR(0xff00) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::patimono_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
-
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mmehyou_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::gal10ren_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc8, 0xc8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xd0, 0xd0) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xd8, 0xd8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::renaiclb_io_map)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x24, 0x24) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x28, 0x28) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x2c, 0x2c) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mjlaman_io_map)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x22, 0x22) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x24, 0x24) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x26, 0x26) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mkeibaou_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xd8, 0xd8) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xda, 0xda) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xdc, 0xdc) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xde, 0xde) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::pachiten_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xe4, 0xe4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xe6, 0xe6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::sailorws_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf2, 0xf2) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf4, 0xf4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::sailorwr_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xf8, 0xf8) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xfa, 0xfa) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xfc, 0xfc) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xfe, 0xfe) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::psailor1_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf2, 0xf2) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf4, 0xf4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::psailor2_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xe4, 0xe4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::otatidai_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb8, 0xb8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::yosimoto_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0x90, 0x90) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x94, 0x94) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x98, 0x98) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0x9c, 0x9c) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::yosimotm_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
- AM_RANGE(0xfc, 0xfc) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf4, 0xf4) AM_MIRROR(0xff00) AM_NOP
- AM_RANGE(0xf8, 0xf8) AM_MIRROR(0xff00) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::jituroku_io_map)
- AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xe8, 0xe8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xf8, 0xf8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::ngpgal_io_map)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mjgottsu_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::cmehyou_io_map)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
- AM_RANGE(0xb4, 0xb4) AM_MIRROR(0xff00) AM_WRITENOP
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nbmj9195_state::mjkoiura_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-ADDRESS_MAP_END
+void nbmj9195_state::sailorws_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram");
+ map(0xf800, 0xffff).ram().share("nvram");
+}
+
+void nbmj9195_state::mjuraden_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram");
+ map(0xf800, 0xffff).ram();
+}
+
+void nbmj9195_state::koinomp_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe1ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram");
+ map(0xe800, 0xefff).ram().share("nvram");
+}
+
+void nbmj9195_state::ngpgal_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom();
+ map(0xd000, 0xd1ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram");
+ map(0xd800, 0xdfff).ram();
+}
+
+void nbmj9195_state::mscoutm_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe5ff).ram();
+ map(0xe600, 0xebff).ram().w(this, FUNC(nbmj9195_state::nb22090_palette_w)).share("paletteram");
+ map(0xec00, 0xf1ff).ram();
+ map(0xf200, 0xffff).ram();
+}
+
+void nbmj9195_state::mjegolf_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe5ff).ram().w(this, FUNC(nbmj9195_state::nb22090_palette_w)).share("paletteram");
+ map(0xe600, 0xebff).ram();
+ map(0xec00, 0xf1ff).ram();
+ map(0xf200, 0xffff).ram();
+}
+
+void nbmj9195_state::mjuraden_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xb0, 0xb0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb2, 0xb2).mirror(0xff00).nopw();
+ map(0xb4, 0xb4).mirror(0xff00).nopw();
+ map(0xb6, 0xb6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::koinomp_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xc0, 0xc0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc2, 0xc2).mirror(0xff00).nopw();
+ map(0xc4, 0xc4).mirror(0xff00).nopw();
+ map(0xc6, 0xc6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+ map(0xcf, 0xcf).mirror(0xff00).nopw();
+}
+
+void nbmj9195_state::patimono_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa4, 0xa4).mirror(0xff00).nopw();
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+}
+
+void nbmj9195_state::mmehyou_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa4, 0xa4).mirror(0xff00).nopw();
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::gal10ren_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xc0, 0xc0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc8, 0xc8).mirror(0xff00).nopw();
+ map(0xd0, 0xd0).mirror(0xff00).nopw();
+ map(0xd8, 0xd8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::renaiclb_io_map(address_map &map)
+{
+ map(0x20, 0x20).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x24, 0x24).mirror(0xff00).nopw();
+ map(0x28, 0x28).mirror(0xff00).nopw();
+ map(0x2c, 0x2c).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+}
+
+void nbmj9195_state::mjlaman_io_map(address_map &map)
+{
+ map(0x20, 0x20).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x22, 0x22).mirror(0xff00).nopw();
+ map(0x24, 0x24).mirror(0xff00).nopw();
+ map(0x26, 0x26).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+}
+
+void nbmj9195_state::mkeibaou_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xd8, 0xd8).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xda, 0xda).mirror(0xff00).nopw();
+ map(0xdc, 0xdc).mirror(0xff00).nopw();
+ map(0xde, 0xde).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::pachiten_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xe0, 0xe0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xe2, 0xe2).mirror(0xff00).nopw();
+ map(0xe4, 0xe4).mirror(0xff00).nopw();
+ map(0xe6, 0xe6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::sailorws_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xf0, 0xf0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf2, 0xf2).mirror(0xff00).nopw();
+ map(0xf4, 0xf4).mirror(0xff00).nopw();
+ map(0xf6, 0xf6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::sailorwr_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xf8, 0xf8).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xfa, 0xfa).mirror(0xff00).nopw();
+ map(0xfc, 0xfc).mirror(0xff00).nopw();
+ map(0xfe, 0xfe).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::psailor1_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xf0, 0xf0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf2, 0xf2).mirror(0xff00).nopw();
+ map(0xf4, 0xf4).mirror(0xff00).nopw();
+ map(0xf6, 0xf6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::psailor2_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xe0, 0xe0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xe2, 0xe2).mirror(0xff00).nopw();
+ map(0xe4, 0xe4).mirror(0xff00).nopw();
+ map(0xf6, 0xf6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::otatidai_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).nopw();
+ map(0xb8, 0xb8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::yosimoto_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0x90, 0x90).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x94, 0x94).mirror(0xff00).nopw();
+ map(0x98, 0x98).mirror(0xff00).nopw();
+ map(0x9c, 0x9c).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+}
+
+void nbmj9195_state::yosimotm_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xf0, 0xf0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+ map(0xfc, 0xfc).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf4, 0xf4).mirror(0xff00).noprw();
+ map(0xf8, 0xf8).mirror(0xff00).noprw();
+}
+
+void nbmj9195_state::jituroku_io_map(address_map &map)
+{
+ map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+
+ map(0xe0, 0xe0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xe8, 0xe8).mirror(0xff00).nopw();
+ map(0xf0, 0xf0).mirror(0xff00).nopw();
+ map(0xf8, 0xf8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::ngpgal_io_map(address_map &map)
+{
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa4, 0xa4).mirror(0xff00).nopw();
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+}
+
+void nbmj9195_state::mjgottsu_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa4, 0xa4).mirror(0xff00).nopw();
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
+
+void nbmj9195_state::cmehyou_io_map(address_map &map)
+{
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+ map(0xb4, 0xb4).mirror(0xff00).nopw();
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+}
+
+void nbmj9195_state::mjkoiura_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa4, 0xa4).mirror(0xff00).nopw();
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+}
-ADDRESS_MAP_START(nbmj9195_state::mkoiuraa_io_map)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w)
-
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
-ADDRESS_MAP_END
+void nbmj9195_state::mkoiuraa_io_map(address_map &map)
+{
+ map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xa4, 0xa4).mirror(0xff00).nopw();
+ map(0xa8, 0xa8).mirror(0xff00).nopw();
+ map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w));
+
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+}
-ADDRESS_MAP_START(nbmj9195_state::mscoutm_io_map)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_1_r)
- AM_RANGE(0x82, 0x82) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_0_r)
- AM_RANGE(0x84, 0x84) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+void nbmj9195_state::mscoutm_io_map(address_map &map)
+{
+ map(0x80, 0x80).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_1_r));
+ map(0x82, 0x82).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_0_r));
+ map(0x84, 0x84).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0xa0, 0xa6) AM_MIRROR(0xff00) AM_WRITENOP // nb22090 param ?
+ map(0xa0, 0xa6).mirror(0xff00).nopw(); // nb22090 param ?
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
- AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
+ map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
- AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-ADDRESS_MAP_END
+ map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+}
-ADDRESS_MAP_START(nbmj9195_state::imekura_io_map)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_1_r)
- AM_RANGE(0x82, 0x82) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_0_r)
- AM_RANGE(0x84, 0x84) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+void nbmj9195_state::imekura_io_map(address_map &map)
+{
+ map(0x80, 0x80).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_1_r));
+ map(0x82, 0x82).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_0_r));
+ map(0x84, 0x84).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0xb0, 0xb6) AM_MIRROR(0xff00) AM_WRITENOP // nb22090 param ?
+ map(0xb0, 0xb6).mirror(0xff00).nopw(); // nb22090 param ?
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
- AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
- AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
-ADDRESS_MAP_END
+ map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
+ map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
+}
-ADDRESS_MAP_START(nbmj9195_state::mjegolf_io_map)
- AM_RANGE(0x80, 0x86) AM_MIRROR(0xff00) AM_WRITENOP // nb22090 param ?
+void nbmj9195_state::mjegolf_io_map(address_map &map)
+{
+ map(0x80, 0x86).mirror(0xff00).nopw(); // nb22090 param ?
- AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_0_r)
- AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w)
- AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w)
+ map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r));
+ map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w));
+ map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w));
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r)
- AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w)
+ map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r));
+ map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w));
- AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w)
+ map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w));
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_1_r)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_0_r)
- AM_RANGE(0xe4, 0xe4) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
+ map(0xe0, 0xe0).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_1_r));
+ map(0xe2, 0xe2).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_0_r));
+ map(0xe4, 0xe4).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
-ADDRESS_MAP_START(nbmj9195_state::sailorws_sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
+void nbmj9195_state::sailorws_sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
-ADDRESS_MAP_START(nbmj9195_state::sailorws_sound_io_map)
- AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym3812_device, write)
-ADDRESS_MAP_END
+void nbmj9195_state::sailorws_sound_io_map(address_map &map)
+{
+ map(0x80, 0x81).mirror(0xff00).w("ymsnd", FUNC(ym3812_device::write));
+}
@@ -645,19 +678,21 @@ ADDRESS_MAP_END
TODO: it probably doesn't belong in here. Both CPUs are certainly tmpz84c011 tho ...
*/
-ADDRESS_MAP_START(nbmj9195_state::shabdama_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
+void nbmj9195_state::shabdama_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xe7ff).ram();
// AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram")
// AM_RANGE(0xd800, 0xdfff) AM_RAM
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(nbmj9195_state::shabdama_io_map)
+void nbmj9195_state::shabdama_io_map(address_map &map)
+{
// ADDRESS_MAP_UNMAP_HIGH
// AM_RANGE(0x60, 0x61) AM_READ(blitter_0_r)
// AM_RANGE(0x60, 0x6f) AM_WRITE(blitter_0_w)
// AM_RANGE(0x70, 0x7f) AM_WRITE(clut_0_w)
-ADDRESS_MAP_END
+}
/********************************************************************************
These Nichibutsu Mahjong games use two different but very similar control ports:
diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp
index 5e80b6e53b5..56f73fde96f 100644
--- a/src/mame/drivers/nc.cpp
+++ b/src/mame/drivers/nc.cpp
@@ -469,12 +469,13 @@ void nc_state::nc_common_init_machine()
m_uart_control = 0x0ff;
}
-ADDRESS_MAP_START(nc_state::nc_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5")
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6")
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7")
- AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8")
-ADDRESS_MAP_END
+void nc_state::nc_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1").bankw("bank5");
+ map(0x4000, 0x7fff).bankr("bank2").bankw("bank6");
+ map(0x8000, 0xbfff).bankr("bank3").bankw("bank7");
+ map(0xc000, 0xffff).bankr("bank4").bankw("bank8");
+}
READ8_MEMBER(nc_state::nc_memory_management_r)
@@ -857,25 +858,26 @@ WRITE8_MEMBER(nc_state::nc100_memory_card_wait_state_w)
-ADDRESS_MAP_START(nc_state::nc100_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x0f) AM_WRITE(nc100_display_memory_start_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(nc_memory_management_r, nc_memory_management_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(nc100_memory_card_wait_state_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(nc100_uart_control_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x50, 0x53) AM_WRITE(nc_sound_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(nc_irq_mask_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(nc100_poweroff_control_w)
- AM_RANGE(0x90, 0x90) AM_READWRITE(nc_irq_status_r, nc_irq_status_w)
- AM_RANGE(0x91, 0x9f) AM_READ(nc_irq_status_r)
- AM_RANGE(0xa0, 0xaf) AM_READ(nc100_card_battery_status_r)
- AM_RANGE(0xb0, 0xb9) AM_READ(nc_key_data_in_r)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w)
- AM_RANGE(0xc1, 0xc1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xd0, 0xdf) AM_DEVREADWRITE("rtc", tc8521_device, read, write)
-ADDRESS_MAP_END
+void nc_state::nc100_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x0f).w(this, FUNC(nc_state::nc100_display_memory_start_w));
+ map(0x10, 0x13).rw(this, FUNC(nc_state::nc_memory_management_r), FUNC(nc_state::nc_memory_management_w));
+ map(0x20, 0x20).w(this, FUNC(nc_state::nc100_memory_card_wait_state_w));
+ map(0x30, 0x30).w(this, FUNC(nc_state::nc100_uart_control_w));
+ map(0x40, 0x40).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x50, 0x53).w(this, FUNC(nc_state::nc_sound_w));
+ map(0x60, 0x60).w(this, FUNC(nc_state::nc_irq_mask_w));
+ map(0x70, 0x70).w(this, FUNC(nc_state::nc100_poweroff_control_w));
+ map(0x90, 0x90).rw(this, FUNC(nc_state::nc_irq_status_r), FUNC(nc_state::nc_irq_status_w));
+ map(0x91, 0x9f).r(this, FUNC(nc_state::nc_irq_status_r));
+ map(0xa0, 0xaf).r(this, FUNC(nc_state::nc100_card_battery_status_r));
+ map(0xb0, 0xb9).r(this, FUNC(nc_state::nc_key_data_in_r));
+ map(0xc0, 0xc0).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc1, 0xc1).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xd0, 0xdf).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write));
+}
/* 2008-05 FP:
@@ -1264,25 +1266,26 @@ WRITE8_MEMBER(nc_state::nc200_poweroff_control_w)
nc200_video_set_backlight(((data ^ (1 << 2)) >> 2) & 0x01);
}
-ADDRESS_MAP_START(nc_state::nc200_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_WRITE(nc100_display_memory_start_w)
- AM_RANGE(0x10, 0x13) AM_READWRITE(nc_memory_management_r, nc_memory_management_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(nc200_memory_card_wait_state_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(nc200_uart_control_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x50, 0x53) AM_WRITE(nc_sound_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(nc_irq_mask_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(nc200_poweroff_control_w)
- AM_RANGE(0x80, 0x80) AM_READ(nc200_printer_status_r)
- AM_RANGE(0x90, 0x90) AM_READWRITE(nc_irq_status_r, nc_irq_status_w)
- AM_RANGE(0xa0, 0xa0) AM_READ(nc200_card_battery_status_r)
- AM_RANGE(0xb0, 0xb9) AM_READ(nc_key_data_in_r)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w)
- AM_RANGE(0xc1, 0xc1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("mc", mc146818_device, read, write)
- AM_RANGE(0xe0, 0xe1) AM_DEVICE("upd765", upd765a_device, map)
-ADDRESS_MAP_END
+void nc_state::nc200_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).w(this, FUNC(nc_state::nc100_display_memory_start_w));
+ map(0x10, 0x13).rw(this, FUNC(nc_state::nc_memory_management_r), FUNC(nc_state::nc_memory_management_w));
+ map(0x20, 0x20).w(this, FUNC(nc_state::nc200_memory_card_wait_state_w));
+ map(0x30, 0x30).w(this, FUNC(nc_state::nc200_uart_control_w));
+ map(0x40, 0x40).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x50, 0x53).w(this, FUNC(nc_state::nc_sound_w));
+ map(0x60, 0x60).w(this, FUNC(nc_state::nc_irq_mask_w));
+ map(0x70, 0x70).w(this, FUNC(nc_state::nc200_poweroff_control_w));
+ map(0x80, 0x80).r(this, FUNC(nc_state::nc200_printer_status_r));
+ map(0x90, 0x90).rw(this, FUNC(nc_state::nc_irq_status_r), FUNC(nc_state::nc_irq_status_w));
+ map(0xa0, 0xa0).r(this, FUNC(nc_state::nc200_card_battery_status_r));
+ map(0xb0, 0xb9).r(this, FUNC(nc_state::nc_key_data_in_r));
+ map(0xc0, 0xc0).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc1, 0xc1).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xd0, 0xd1).rw("mc", FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+ map(0xe0, 0xe1).m("upd765", FUNC(upd765a_device::map));
+}
static INPUT_PORTS_START(nc200)
PORT_START("LINE0")
diff --git a/src/mame/drivers/nds.cpp b/src/mame/drivers/nds.cpp
index cab0db4fcdb..b7cb4db10b4 100644
--- a/src/mame/drivers/nds.cpp
+++ b/src/mame/drivers/nds.cpp
@@ -582,40 +582,44 @@ WRITE32_MEMBER(nds_state::arm9_io_w)
}
}
-ADDRESS_MAP_START(nds_state::nds_arm7_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM AM_REGION("arm7", 0)
- AM_RANGE(0x02000000, 0x023fffff) AM_RAM AM_MIRROR(0x00400000) AM_SHARE("mainram")
- AM_RANGE(0x03000000, 0x03007fff) AM_MIRROR(0x007f8000) AM_DEVICE("nds7wram", address_map_bank_device, amap32)
- AM_RANGE(0x03800000, 0x0380ffff) AM_RAM AM_MIRROR(0x007f0000) AM_SHARE("arm7ram")
- AM_RANGE(0x04000000, 0x0410ffff) AM_READWRITE(arm7_io_r, arm7_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nds_state::nds_arm9_map)
- AM_RANGE(0x02000000, 0x023fffff) AM_RAM AM_MIRROR(0x00400000) AM_SHARE("mainram")
- AM_RANGE(0x03000000, 0x03007fff) AM_MIRROR(0x00ff8000) AM_DEVICE("nds9wram", address_map_bank_device, amap32)
- AM_RANGE(0x04000000, 0x0410ffff) AM_READWRITE(arm9_io_r, arm9_io_w)
- AM_RANGE(0xffff0000, 0xffff0fff) AM_ROM AM_MIRROR(0x1000) AM_REGION("arm9", 0)
-ADDRESS_MAP_END
+void nds_state::nds_arm7_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom().region("arm7", 0);
+ map(0x02000000, 0x023fffff).ram().mirror(0x00400000).share("mainram");
+ map(0x03000000, 0x03007fff).mirror(0x007f8000).m(m_arm7wrambnk, FUNC(address_map_bank_device::amap32));
+ map(0x03800000, 0x0380ffff).ram().mirror(0x007f0000).share("arm7ram");
+ map(0x04000000, 0x0410ffff).rw(this, FUNC(nds_state::arm7_io_r), FUNC(nds_state::arm7_io_w));
+}
+
+void nds_state::nds_arm9_map(address_map &map)
+{
+ map(0x02000000, 0x023fffff).ram().mirror(0x00400000).share("mainram");
+ map(0x03000000, 0x03007fff).mirror(0x00ff8000).m("nds9wram", FUNC(address_map_bank_device::amap32));
+ map(0x04000000, 0x0410ffff).rw(this, FUNC(nds_state::arm9_io_r), FUNC(nds_state::arm9_io_w));
+ map(0xffff0000, 0xffff0fff).rom().mirror(0x1000).region("arm9", 0);
+}
// ARM7 views of WRAM
-ADDRESS_MAP_START(nds_state::nds7_wram_map)
- AM_RANGE(0x00000, 0x07fff) AM_READWRITE(wram_arm7mirror_r, wram_arm7mirror_w)
- AM_RANGE(0x08000, 0x0bfff) AM_READWRITE(wram_first_half_r, wram_first_half_w)
- AM_RANGE(0x0c000, 0x0ffff) AM_READWRITE(wram_first_half_r, wram_first_half_w)
- AM_RANGE(0x10000, 0x13fff) AM_READWRITE(wram_second_half_r, wram_second_half_w)
- AM_RANGE(0x14000, 0x17fff) AM_READWRITE(wram_second_half_r, wram_second_half_w)
- AM_RANGE(0x18000, 0x1ffff) AM_READWRITE(wram_first_half_r, wram_first_half_w)
-ADDRESS_MAP_END
+void nds_state::nds7_wram_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rw(this, FUNC(nds_state::wram_arm7mirror_r), FUNC(nds_state::wram_arm7mirror_w));
+ map(0x08000, 0x0bfff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w));
+ map(0x0c000, 0x0ffff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w));
+ map(0x10000, 0x13fff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w));
+ map(0x14000, 0x17fff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w));
+ map(0x18000, 0x1ffff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w));
+}
// ARM9 views of WRAM
-ADDRESS_MAP_START(nds_state::nds9_wram_map)
- AM_RANGE(0x00000, 0x07fff) AM_READWRITE(wram_first_half_r, wram_first_half_w)
- AM_RANGE(0x08000, 0x0bfff) AM_READWRITE(wram_second_half_r, wram_second_half_w)
- AM_RANGE(0x0c000, 0x0ffff) AM_READWRITE(wram_second_half_r, wram_second_half_w)
- AM_RANGE(0x10000, 0x13fff) AM_READWRITE(wram_first_half_r, wram_first_half_w)
- AM_RANGE(0x14000, 0x17fff) AM_READWRITE(wram_first_half_r, wram_first_half_w)
- AM_RANGE(0x18000, 0x1ffff) AM_NOP AM_WRITENOP // probably actually open bus? GBATEK describes as "random"
-ADDRESS_MAP_END
+void nds_state::nds9_wram_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w));
+ map(0x08000, 0x0bfff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w));
+ map(0x0c000, 0x0ffff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w));
+ map(0x10000, 0x13fff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w));
+ map(0x14000, 0x17fff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w));
+ map(0x18000, 0x1ffff).noprw().nopw(); // probably actually open bus? GBATEK describes as "random"
+}
READ32_MEMBER(nds_state::wram_first_half_r) { return m_WRAM[offset]; }
READ32_MEMBER(nds_state::wram_second_half_r) { return m_WRAM[offset+0x4000]; }
diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp
index 64746092fc4..0aaad50890c 100644
--- a/src/mame/drivers/nemesis.cpp
+++ b/src/mame/drivers/nemesis.cpp
@@ -251,271 +251,282 @@ WRITE8_MEMBER(nemesis_state::city_sound_bank_w)
}
-ADDRESS_MAP_START(nemesis_state::nemesis_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05cc06, 0x05cc07) AM_READ_PORT("TEST")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::gx400_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
- AM_RANGE(0x010000, 0x01ffff) AM_RAM
- AM_RANGE(0x020000, 0x027fff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
- AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x057000, 0x057fff) AM_RAM /* needed for twinbee */
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x07ffff) AM_RAM /* WORK RAM */
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::konamigt_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05cc06, 0x05cc07) AM_READ_PORT("TEST")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
- AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::rf2_gx400_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
- AM_RANGE(0x010000, 0x01ffff) AM_RAM
- AM_RANGE(0x020000, 0x027fff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
- AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
- AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nemesis_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w)
- AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w)
- AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w)
- AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xe007, 0xe007) AM_SELECT(0x1ff8) AM_WRITE(nemesis_filter_w)
- AM_RANGE(0xe086, 0xe086) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xe106, 0xe106) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xe205, 0xe205) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::gx400_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("gx400_shared")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("voiceram")
- AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w)
- AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w)
- AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w)
- AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xe007, 0xe007) AM_SELECT(0x1ff8) AM_WRITE(nemesis_filter_w)
- AM_RANGE(0xe030, 0xe030) AM_WRITE(gx400_speech_start_w)
- AM_RANGE(0xe086, 0xe086) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xe106, 0xe106) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xe205, 0xe205) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w)
-ADDRESS_MAP_END
+void nemesis_state::nemesis_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c400, 0x05c401).portr("DSW0");
+ map(0x05c402, 0x05c403).portr("DSW1");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05cc06, 0x05cc07).portr("TEST");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x067fff).ram(); /* WORK RAM */
+}
+
+void nemesis_state::gx400_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); /* ROM BIOS */
+ map(0x010000, 0x01ffff).ram();
+ map(0x020000, 0x027fff).rw(this, FUNC(nemesis_state::gx400_sharedram_word_r), FUNC(nemesis_state::gx400_sharedram_word_w));
+ map(0x030000, 0x03ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x057000, 0x057fff).ram(); /* needed for twinbee */
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c402, 0x05c403).portr("DSW0");
+ map(0x05c404, 0x05c405).portr("DSW1");
+ map(0x05c406, 0x05c407).portr("TEST");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x07ffff).ram(); /* WORK RAM */
+ map(0x080000, 0x0bffff).rom();
+}
+
+void nemesis_state::konamigt_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c400, 0x05c401).portr("DSW0");
+ map(0x05c402, 0x05c403).portr("DSW1");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05cc06, 0x05cc07).portr("TEST");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x067fff).ram(); /* WORK RAM */
+ map(0x070000, 0x070001).r(this, FUNC(nemesis_state::konamigt_input_word_r));
+}
+
+void nemesis_state::rf2_gx400_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); /* ROM BIOS */
+ map(0x010000, 0x01ffff).ram();
+ map(0x020000, 0x027fff).rw(this, FUNC(nemesis_state::gx400_sharedram_word_r), FUNC(nemesis_state::gx400_sharedram_word_w));
+ map(0x030000, 0x03ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c402, 0x05c403).portr("DSW0");
+ map(0x05c404, 0x05c405).portr("DSW1");
+ map(0x05c406, 0x05c407).portr("TEST");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x067fff).ram(); /* WORK RAM */
+ map(0x070000, 0x070001).r(this, FUNC(nemesis_state::konamigt_input_word_r));
+ map(0x080000, 0x0bffff).rom();
+}
+
+
+void nemesis_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0xa000, 0xafff).w(m_k005289, FUNC(k005289_device::ld1_w));
+ map(0xc000, 0xcfff).w(m_k005289, FUNC(k005289_device::ld2_w));
+ map(0xe001, 0xe001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe003, 0xe003).w(m_k005289, FUNC(k005289_device::tg1_w));
+ map(0xe004, 0xe004).w(m_k005289, FUNC(k005289_device::tg2_w));
+ map(0xe005, 0xe005).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xe006, 0xe006).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xe007, 0xe007).select(0x1ff8).w(this, FUNC(nemesis_state::nemesis_filter_w));
+ map(0xe086, 0xe086).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xe106, 0xe106).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xe205, 0xe205).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xe405, 0xe405).w("ay2", FUNC(ay8910_device::data_w));
+}
+
+void nemesis_state::gx400_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).ram().share("gx400_shared");
+ map(0x8000, 0x87ff).ram().share("voiceram");
+ map(0xa000, 0xafff).w(m_k005289, FUNC(k005289_device::ld1_w));
+ map(0xc000, 0xcfff).w(m_k005289, FUNC(k005289_device::ld2_w));
+ map(0xe000, 0xe000).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0xe001, 0xe001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe003, 0xe003).w(m_k005289, FUNC(k005289_device::tg1_w));
+ map(0xe004, 0xe004).w(m_k005289, FUNC(k005289_device::tg2_w));
+ map(0xe005, 0xe005).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xe006, 0xe006).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xe007, 0xe007).select(0x1ff8).w(this, FUNC(nemesis_state::nemesis_filter_w));
+ map(0xe030, 0xe030).w(this, FUNC(nemesis_state::gx400_speech_start_w));
+ map(0xe086, 0xe086).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xe106, 0xe106).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xe205, 0xe205).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xe405, 0xe405).w("ay2", FUNC(ay8910_device::data_w));
+}
// gx400 voice data is not in a ROM but in sound RAM at $8000
-ADDRESS_MAP_START(nemesis_state::gx400_vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7ff)
- AM_RANGE(0x000, 0x7ff) AM_RAM AM_SHARE("voiceram")
-ADDRESS_MAP_END
+void nemesis_state::gx400_vlm_map(address_map &map)
+{
+ map.global_mask(0x7ff);
+ map(0x000, 0x7ff).ram().share("voiceram");
+}
/******************************************************************************/
-ADDRESS_MAP_START(nemesis_state::salamand_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x0c2002, 0x0c2003) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2004, 0x0c2005) AM_READ_PORT("IN2")
- AM_RANGE(0x0c2006, 0x0c2007) AM_READ_PORT("DSW1")
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") /* VRAM */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1")
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
- AM_RANGE(0x190000, 0x191fff) AM_RAM
- AM_RANGE(0x190000, 0x1903ff) AM_SHARE("xscroll2")
- AM_RANGE(0x190400, 0x1907ff) AM_SHARE("xscroll1")
- AM_RANGE(0x190f00, 0x190f7f) AM_SHARE("yscroll1")
- AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::blkpnthr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x081fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x090000, 0x097fff) AM_RAM
- AM_RANGE(0x0a0000, 0x0a0001) AM_RAM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x0c2002, 0x0c2003) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2004, 0x0c2005) AM_READ_PORT("IN2")
- AM_RANGE(0x0c2006, 0x0c2007) AM_READ_PORT("DSW1")
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") AM_MIRROR(0x4000) /* VRAM */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") AM_MIRROR(0x4000)
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x180000, 0x181fff) AM_RAM
- AM_RANGE(0x180000, 0x1803ff) AM_SHARE("xscroll1")
- AM_RANGE(0x180400, 0x1807ff) AM_SHARE("xscroll2")
- AM_RANGE(0x180f00, 0x180f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x180f80, 0x180fff) AM_SHARE("yscroll1")
- AM_RANGE(0x190000, 0x190fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::citybomb_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x0e0000, 0x0e1fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
- AM_RANGE(0x0f0002, 0x0f0003) AM_READ_PORT("IN2")
- AM_RANGE(0x0f0004, 0x0f0005) AM_READ_PORT("IN1")
- AM_RANGE(0x0f0006, 0x0f0007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW0")
- AM_RANGE(0x0f0010, 0x0f0011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0f0018, 0x0f0019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x0f0020, 0x0f0021) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control? */
- AM_RANGE(0x0f8000, 0x0f8001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x100000, 0x1bffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x210000, 0x210fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x211000, 0x211fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x212000, 0x212fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x213000, 0x213fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x300000, 0x301fff) AM_RAM
- AM_RANGE(0x300000, 0x3003ff) AM_SHARE("xscroll1")
- AM_RANGE(0x300400, 0x3007ff) AM_SHARE("xscroll2")
- AM_RANGE(0x300f00, 0x300f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x300f80, 0x300fff) AM_SHARE("yscroll1")
- AM_RANGE(0x310000, 0x310fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::nyanpani_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM
- AM_RANGE(0x060000, 0x061fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x070000, 0x070001) AM_READ_PORT("DSW1")
- AM_RANGE(0x070002, 0x070003) AM_READ_PORT("IN2")
- AM_RANGE(0x070004, 0x070005) AM_READ_PORT("IN1")
- AM_RANGE(0x070006, 0x070007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x070008, 0x070009) AM_READ_PORT("DSW0")
- AM_RANGE(0x070010, 0x070011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x070018, 0x070019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x078000, 0x078001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x100000, 0x13ffff) AM_ROM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x201000, 0x201fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x202000, 0x202fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x203000, 0x203fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x210000, 0x21ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
- AM_RANGE(0x310000, 0x311fff) AM_RAM
- AM_RANGE(0x310000, 0x3103ff) AM_SHARE("xscroll1")
- AM_RANGE(0x310400, 0x3107ff) AM_SHARE("xscroll2")
- AM_RANGE(0x310f00, 0x310f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x310f80, 0x310fff) AM_SHARE("yscroll1")
-ADDRESS_MAP_END
+void nemesis_state::salamand_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x087fff).ram();
+ map(0x090000, 0x091fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0002, 0x0c0003).portr("DSW0");
+ map(0x0c0004, 0x0c0005).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x0c2000, 0x0c2001).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x0c2002, 0x0c2003).portr("IN1");
+ map(0x0c2004, 0x0c2005).portr("IN2");
+ map(0x0c2006, 0x0c2007).portr("DSW1");
+ map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); /* VRAM */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1");
+ map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x180000, 0x180fff).ram().share("spriteram"); /* more sprite ram ??? */
+ map(0x190000, 0x191fff).ram();
+ map(0x190000, 0x1903ff).share("xscroll2");
+ map(0x190400, 0x1907ff).share("xscroll1");
+ map(0x190f00, 0x190f7f).share("yscroll1");
+ map(0x190f80, 0x190fff).share("yscroll2");
+}
+
+void nemesis_state::blkpnthr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x081fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x090000, 0x097fff).ram();
+ map(0x0a0000, 0x0a0001).ram().w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0002, 0x0c0003).portr("DSW0");
+ map(0x0c0004, 0x0c0005).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x0c2000, 0x0c2001).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x0c2002, 0x0c2003).portr("IN1");
+ map(0x0c2004, 0x0c2005).portr("IN2");
+ map(0x0c2006, 0x0c2007).portr("DSW1");
+ map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1").mirror(0x4000); /* VRAM */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2").mirror(0x4000);
+ map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1");
+ map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x180000, 0x181fff).ram();
+ map(0x180000, 0x1803ff).share("xscroll1");
+ map(0x180400, 0x1807ff).share("xscroll2");
+ map(0x180f00, 0x180f7f).share("yscroll2");
+ map(0x180f80, 0x180fff).share("yscroll1");
+ map(0x190000, 0x190fff).ram().share("spriteram"); /* more sprite ram ??? */
+}
+
+void nemesis_state::citybomb_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x080000, 0x087fff).ram();
+ map(0x0e0000, 0x0e1fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0f0000, 0x0f0001).portr("DSW1");
+ map(0x0f0002, 0x0f0003).portr("IN2");
+ map(0x0f0004, 0x0f0005).portr("IN1");
+ map(0x0f0006, 0x0f0007).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x0f0008, 0x0f0009).portr("DSW0");
+ map(0x0f0011, 0x0f0011).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0f0018, 0x0f0019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x0f0020, 0x0f0021).r(this, FUNC(nemesis_state::selected_ip_word_r)).nopw(); /* WEC Le Mans 24 control? */
+ map(0x0f8000, 0x0f8001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x100000, 0x1bffff).rom();
+ map(0x200000, 0x20ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x210000, 0x210fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x211000, 0x211fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x212000, 0x212fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x213000, 0x213fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x300000, 0x301fff).ram();
+ map(0x300000, 0x3003ff).share("xscroll1");
+ map(0x300400, 0x3007ff).share("xscroll2");
+ map(0x300f00, 0x300f7f).share("yscroll2");
+ map(0x300f80, 0x300fff).share("yscroll1");
+ map(0x310000, 0x310fff).ram().share("spriteram"); /* more sprite ram ??? */
+}
+
+void nemesis_state::nyanpani_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x047fff).ram();
+ map(0x060000, 0x061fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x070000, 0x070001).portr("DSW1");
+ map(0x070002, 0x070003).portr("IN2");
+ map(0x070004, 0x070005).portr("IN1");
+ map(0x070006, 0x070007).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x070008, 0x070009).portr("DSW0");
+ map(0x070011, 0x070011).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x070018, 0x070019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x078000, 0x078001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x100000, 0x13ffff).rom();
+ map(0x200000, 0x200fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x201000, 0x201fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x202000, 0x202fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x203000, 0x203fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x210000, 0x21ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x300000, 0x300fff).ram().share("spriteram"); /* more sprite ram ??? */
+ map(0x310000, 0x311fff).ram();
+ map(0x310000, 0x3103ff).share("xscroll1");
+ map(0x310400, 0x3107ff).share("xscroll2");
+ map(0x310f00, 0x310f7f).share("yscroll2");
+ map(0x310f80, 0x310fff).share("yscroll1");
+}
READ8_MEMBER(nemesis_state::wd_r)
{
@@ -523,75 +534,80 @@ READ8_MEMBER(nemesis_state::wd_r)
return m_frame_counter;
}
-ADDRESS_MAP_START(nemesis_state::sal_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
- AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::salamand_vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::blkpnthr_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::city_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w)
- AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w)
- AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w)
- AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
- AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(city_sound_bank_w) /* 7232 bankswitch */
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void nemesis_state::sal_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd000, 0xd000).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0xe000, 0xe000).r(this, FUNC(nemesis_state::wd_r)); /* watchdog?? */
+ map(0xf000, 0xf000).w(this, FUNC(nemesis_state::salamand_speech_start_w));
+}
+
+void nemesis_state::salamand_vlm_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x3fff).rom();
+}
+
+void nemesis_state::blkpnthr_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe000, 0xe000).r(this, FUNC(nemesis_state::wd_r)); /* watchdog?? */
+}
+
+void nemesis_state::city_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w));
+ map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w));
+ map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w));
+ map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w));
+ map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w));
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc000).w(this, FUNC(nemesis_state::city_sound_bank_w)); /* 7232 bankswitch */
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
/******************************************************************************/
-ADDRESS_MAP_START(nemesis_state::hcrash_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("TEST")
- AM_RANGE(0x0c0008, 0x0c0009) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* watchdog probably */
- AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("IN0")
- AM_RANGE(0x0c2000, 0x0c2001) AM_READ(konamigt_input_word_r) /* Konami GT control */
- AM_RANGE(0x0c2800, 0x0c280f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) // ???
- AM_RANGE(0x0c4000, 0x0c4001) AM_READ_PORT("IN1") AM_WRITE(selected_ip_word_w)
- AM_RANGE(0x0c4002, 0x0c4003) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control. latches the value read previously */
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") /* VRAM */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1")
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x190000, 0x191fff) AM_RAM
- AM_RANGE(0x190000, 0x1903ff) AM_SHARE("xscroll2")
- AM_RANGE(0x190400, 0x1907ff) AM_SHARE("xscroll1")
- AM_RANGE(0x190f00, 0x190f7f) AM_SHARE("yscroll1")
- AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2")
-ADDRESS_MAP_END
+void nemesis_state::hcrash_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x05ffff).rom();
+ map(0x080000, 0x083fff).ram();
+ map(0x090000, 0x091fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0002, 0x0c0003).portr("DSW0");
+ map(0x0c0004, 0x0c0005).portr("DSW1");
+ map(0x0c0006, 0x0c0007).portr("TEST");
+ map(0x0c0008, 0x0c0009).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* watchdog probably */
+ map(0x0c000a, 0x0c000b).portr("IN0");
+ map(0x0c2000, 0x0c2001).r(this, FUNC(nemesis_state::konamigt_input_word_r)); /* Konami GT control */
+ map(0x0c2800, 0x0c280f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); // ???
+ map(0x0c4000, 0x0c4001).portr("IN1").w(this, FUNC(nemesis_state::selected_ip_word_w));
+ map(0x0c4002, 0x0c4003).r(this, FUNC(nemesis_state::selected_ip_word_r)).nopw(); /* WEC Le Mans 24 control. latches the value read previously */
+ map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); /* VRAM */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1");
+ map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x180000, 0x180fff).ram().share("spriteram");
+ map(0x190000, 0x191fff).ram();
+ map(0x190000, 0x1903ff).share("xscroll2");
+ map(0x190400, 0x1907ff).share("xscroll1");
+ map(0x190f00, 0x190f7f).share("yscroll1");
+ map(0x190f80, 0x190fff).share("yscroll2");
+}
/******************************************************************************/
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 816434f4cf2..24bed3ec12d 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -1410,33 +1410,36 @@ READ16_MEMBER(neogeo_state::banked_vectors_r)
*
*************************************/
-ADDRESS_MAP_START(neogeo_state::neogeo_main_map)
+void neogeo_state::neogeo_main_map(address_map &map)
+{
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM
+ map(0x100000, 0x10ffff).mirror(0x0f0000).ram();
/* some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too */
- AM_RANGE(0x300080, 0x300081) AM_MIRROR(0x01ff7e) AM_READ_PORT("TEST")
- AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x00ff)
- AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO/COIN") AM_WRITE8(audio_command_w, 0xff00)
- AM_RANGE(0x360000, 0x37ffff) AM_READ(unmapped_r)
- AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff)
- AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(unmapped_r)
- AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_DEVWRITE8("systemlatch", hc259_device, write_a3, 0x00ff) // BITW1 (system control registers)
- AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(video_register_r)
- AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(video_register_w)
- AM_RANGE(0x3e0000, 0x3fffff) AM_READ(unmapped_r)
- AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(paletteram_r, paletteram_w)
- AM_RANGE(0x800000, 0x800fff) AM_READWRITE(memcard_r, memcard_w)
- AM_RANGE(0xc00000, 0xc1ffff) AM_MIRROR(0x0e0000) AM_ROM AM_REGION("mainbios", 0)
- AM_RANGE(0xd00000, 0xd0ffff) AM_MIRROR(0x0f0000) AM_RAM_WRITE(save_ram_w) AM_SHARE("saveram")
- AM_RANGE(0xe00000, 0xffffff) AM_READ(unmapped_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(neogeo_state::main_map_slot)
- AM_IMPORT_FROM( neogeo_main_map )
- AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r)
-ADDRESS_MAP_END
+ map(0x300080, 0x300081).mirror(0x01ff7e).portr("TEST");
+ map(0x300001, 0x300001).mirror(0x01fffe).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x320000, 0x320001).mirror(0x01fffe).portr("AUDIO/COIN");
+ map(0x320000, 0x320000).mirror(0x01fffe).w(this, FUNC(neogeo_state::audio_command_w));
+ map(0x360000, 0x37ffff).r(this, FUNC(neogeo_state::unmapped_r));
+ map(0x380000, 0x380001).mirror(0x01fffe).portr("SYSTEM");
+ map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(neogeo_state::io_control_w)).umask16(0x00ff);
+ map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(neogeo_state::unmapped_r));
+ map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff); // BITW1 (system control registers)
+ map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(neogeo_state::video_register_r));
+ map(0x3c0000, 0x3c000f).mirror(0x01fff0).w(this, FUNC(neogeo_state::video_register_w));
+ map(0x3e0000, 0x3fffff).r(this, FUNC(neogeo_state::unmapped_r));
+ map(0x400000, 0x401fff).mirror(0x3fe000).rw(this, FUNC(neogeo_state::paletteram_r), FUNC(neogeo_state::paletteram_w));
+ map(0x800000, 0x800fff).rw(this, FUNC(neogeo_state::memcard_r), FUNC(neogeo_state::memcard_w));
+ map(0xc00000, 0xc1ffff).mirror(0x0e0000).rom().region("mainbios", 0);
+ map(0xd00000, 0xd0ffff).mirror(0x0f0000).ram().w(this, FUNC(neogeo_state::save_ram_w)).share("saveram");
+ map(0xe00000, 0xffffff).r(this, FUNC(neogeo_state::unmapped_r));
+}
+
+
+void neogeo_state::main_map_slot(address_map &map)
+{
+ neogeo_main_map(map);
+ map(0x000000, 0x00007f).r(this, FUNC(neogeo_state::banked_vectors_r));
+}
@@ -1448,26 +1451,28 @@ READ16_MEMBER(aes_state::aes_in2_r)
return ret;
}
-ADDRESS_MAP_START(aes_state::aes_main_map)
- AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r)
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM
+void aes_state::aes_main_map(address_map &map)
+{
+ map(0x000000, 0x00007f).r(this, FUNC(aes_state::banked_vectors_r));
+ map(0x100000, 0x10ffff).mirror(0x0f0000).ram();
// some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too
- AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl1", neogeo_control_port_device, ctrl_r, 0xff00)
- AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO") AM_WRITE8(audio_command_w, 0xff00)
- AM_RANGE(0x340000, 0x340001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl2", neogeo_control_port_device, ctrl_r, 0xff00)
- AM_RANGE(0x360000, 0x37ffff) AM_READ(unmapped_r)
- AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ(aes_in2_r)
- AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff)
- AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(unmapped_r)
- AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_DEVWRITE8("systemlatch", hc259_device, write_a3, 0x00ff)
- AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(video_register_r)
- AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(video_register_w)
- AM_RANGE(0x3e0000, 0x3fffff) AM_READ(unmapped_r)
- AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(paletteram_r, paletteram_w)
- AM_RANGE(0x800000, 0x800fff) AM_READWRITE(memcard_r, memcard_w)
- AM_RANGE(0xc00000, 0xc1ffff) AM_MIRROR(0x0e0000) AM_ROM AM_REGION("mainbios", 0)
- AM_RANGE(0xd00000, 0xffffff) AM_READ(unmapped_r)
-ADDRESS_MAP_END
+ map(0x300000, 0x300000).mirror(0x01fffe).r(m_ctrl1, FUNC(neogeo_control_port_device::ctrl_r));
+ map(0x320000, 0x320001).mirror(0x01fffe).portr("AUDIO");
+ map(0x320000, 0x320000).mirror(0x01fffe).w(this, FUNC(aes_state::audio_command_w));
+ map(0x340000, 0x340000).mirror(0x01fffe).r(m_ctrl2, FUNC(neogeo_control_port_device::ctrl_r));
+ map(0x360000, 0x37ffff).r(this, FUNC(aes_state::unmapped_r));
+ map(0x380000, 0x380001).mirror(0x01fffe).r(this, FUNC(aes_state::aes_in2_r));
+ map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(aes_state::io_control_w)).umask16(0x00ff);
+ map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(aes_state::unmapped_r));
+ map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff);
+ map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(aes_state::video_register_r));
+ map(0x3c0000, 0x3c000f).mirror(0x01fff0).w(this, FUNC(aes_state::video_register_w));
+ map(0x3e0000, 0x3fffff).r(this, FUNC(aes_state::unmapped_r));
+ map(0x400000, 0x401fff).mirror(0x3fe000).rw(this, FUNC(aes_state::paletteram_r), FUNC(aes_state::paletteram_w));
+ map(0x800000, 0x800fff).rw(this, FUNC(aes_state::memcard_r), FUNC(aes_state::memcard_w));
+ map(0xc00000, 0xc1ffff).mirror(0x0e0000).rom().region("mainbios", 0);
+ map(0xd00000, 0xffffff).r(this, FUNC(aes_state::unmapped_r));
+}
/*************************************
@@ -1476,14 +1481,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(neogeo_state::audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("audio_main")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audio_8000")
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("audio_c000")
- AM_RANGE(0xe000, 0xefff) AM_ROMBANK("audio_e000")
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audio_f000")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void neogeo_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("audio_main");
+ map(0x8000, 0xbfff).bankr("audio_8000");
+ map(0xc000, 0xdfff).bankr("audio_c000");
+ map(0xe000, 0xefff).bankr("audio_e000");
+ map(0xf000, 0xf7ff).bankr("audio_f000");
+ map(0xf800, 0xffff).ram();
+}
@@ -1493,13 +1499,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(neogeo_state::audio_io_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_SELECT(0x0010) AM_WRITE(audio_cpu_enable_nmi_w)
- AM_RANGE(0x08, 0x0b) AM_MIRROR(0x00f0) AM_SELECT(0xff00) AM_READ(audio_cpu_bank_select_r)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void neogeo_state::audio_io_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff00).r(this, FUNC(neogeo_state::audio_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w));
+ map(0x04, 0x07).mirror(0xff00).rw(m_ym, FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x08, 0x08).mirror(0xff00).select(0x0010).w(this, FUNC(neogeo_state::audio_cpu_enable_nmi_w));
+ map(0x08, 0x0b).mirror(0x00f0).select(0xff00).r(this, FUNC(neogeo_state::audio_cpu_bank_select_r));
+ map(0x0c, 0x0c).mirror(0xff00).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+}
diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp
index 59a0f0e4a2d..d27770be1ab 100644
--- a/src/mame/drivers/neogeocd.cpp
+++ b/src/mame/drivers/neogeocd.cpp
@@ -889,31 +889,33 @@ MACHINE_RESET_MEMBER(ngcd_state,neocd)
*
*************************************/
-ADDRESS_MAP_START(ngcd_state::neocd_main_map)
+void ngcd_state::neocd_main_map(address_map &map)
+{
// AM_RANGE(0x000000, 0x00007f) AM_READ_BANK("vectors") // writes will fall through to area below
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_REGION("maincpu", 0x00000)
- AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r)
-
- AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl1", neogeo_control_port_device, ctrl_r, 0xff00)
- AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO") AM_WRITE8(audio_command_w, 0xff00)
- AM_RANGE(0x340000, 0x340001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl2", neogeo_control_port_device, ctrl_r, 0xff00)
- AM_RANGE(0x360000, 0x37ffff) AM_READ(unmapped_r)
- AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ(aes_in2_r)
- AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff)
- AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(unmapped_r)
- AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_DEVWRITE8("systemlatch", hc259_device, write_a3, 0x00ff)
- AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(video_register_r)
- AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(video_register_w)
- AM_RANGE(0x3e0000, 0x3fffff) AM_READ(unmapped_r)
- AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(paletteram_r, paletteram_w)
- AM_RANGE(0x800000, 0x803fff) AM_READWRITE(neocd_memcard_r, neocd_memcard_w)
- AM_RANGE(0xc00000, 0xc7ffff) AM_MIRROR(0x080000) AM_ROM AM_REGION("mainbios", 0)
- AM_RANGE(0xd00000, 0xdfffff) AM_READ(unmapped_r)
- AM_RANGE(0xe00000, 0xefffff) AM_READWRITE8(neocd_transfer_r,neocd_transfer_w, 0xffff)
- AM_RANGE(0xf00000, 0xfeffff) AM_READ(unmapped_r)
- AM_RANGE(0xff0000, 0xff01ff) AM_READWRITE(neocd_control_r, neocd_control_w) // CDROM / DMA
- AM_RANGE(0xff0200, 0xffffff) AM_READ(unmapped_r)
-ADDRESS_MAP_END
+ map(0x000000, 0x1fffff).ram().region("maincpu", 0x00000);
+ map(0x000000, 0x00007f).r(this, FUNC(ngcd_state::banked_vectors_r));
+
+ map(0x300000, 0x300000).mirror(0x01fffe).r(m_ctrl1, FUNC(neogeo_control_port_device::ctrl_r));
+ map(0x320000, 0x320001).mirror(0x01fffe).portr("AUDIO");
+ map(0x320000, 0x320000).mirror(0x01fffe).w(this, FUNC(ngcd_state::audio_command_w));
+ map(0x340000, 0x340000).mirror(0x01fffe).r(m_ctrl2, FUNC(neogeo_control_port_device::ctrl_r));
+ map(0x360000, 0x37ffff).r(this, FUNC(ngcd_state::unmapped_r));
+ map(0x380000, 0x380001).mirror(0x01fffe).r(this, FUNC(ngcd_state::aes_in2_r));
+ map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(ngcd_state::io_control_w)).umask16(0x00ff);
+ map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(ngcd_state::unmapped_r));
+ map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff);
+ map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(ngcd_state::video_register_r));
+ map(0x3c0000, 0x3c000f).mirror(0x01fff0).w(this, FUNC(ngcd_state::video_register_w));
+ map(0x3e0000, 0x3fffff).r(this, FUNC(ngcd_state::unmapped_r));
+ map(0x400000, 0x401fff).mirror(0x3fe000).rw(this, FUNC(ngcd_state::paletteram_r), FUNC(ngcd_state::paletteram_w));
+ map(0x800000, 0x803fff).rw(this, FUNC(ngcd_state::neocd_memcard_r), FUNC(ngcd_state::neocd_memcard_w));
+ map(0xc00000, 0xc7ffff).mirror(0x080000).rom().region("mainbios", 0);
+ map(0xd00000, 0xdfffff).r(this, FUNC(ngcd_state::unmapped_r));
+ map(0xe00000, 0xefffff).rw(this, FUNC(ngcd_state::neocd_transfer_r), FUNC(ngcd_state::neocd_transfer_w));
+ map(0xf00000, 0xfeffff).r(this, FUNC(ngcd_state::unmapped_r));
+ map(0xff0000, 0xff01ff).rw(this, FUNC(ngcd_state::neocd_control_r), FUNC(ngcd_state::neocd_control_w)); // CDROM / DMA
+ map(0xff0200, 0xffffff).r(this, FUNC(ngcd_state::unmapped_r));
+}
/*************************************
@@ -923,24 +925,26 @@ ADDRESS_MAP_END
*************************************/
-ADDRESS_MAP_START(ngcd_state::neocd_audio_map)
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("audiocpu", 0x00000)
-ADDRESS_MAP_END
+void ngcd_state::neocd_audio_map(address_map &map)
+{
+ map(0x0000, 0xffff).ram().region("audiocpu", 0x00000);
+}
-ADDRESS_MAP_START(ngcd_state::neocd_audio_io_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_SELECT(0x0010) AM_WRITE(audio_cpu_enable_nmi_w)
+void ngcd_state::neocd_audio_io_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff00).r(this, FUNC(ngcd_state::audio_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w));
+ map(0x04, 0x07).mirror(0xff00).rw(m_ym, FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x08, 0x08).mirror(0xff00).select(0x0010).w(this, FUNC(ngcd_state::audio_cpu_enable_nmi_w));
// banking reads are actually NOP on NeoCD? but some games still access them
// AM_RANGE(0x08, 0x0b) AM_MIRROR(0x00f0) AM_SELECT(0xff00) AM_READ(audio_cpu_bank_select_r)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
+ map(0x0c, 0x0c).mirror(0xff00).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
// ??
- AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_WRITENOP
- AM_RANGE(0xc1, 0xc1) AM_MIRROR(0xff00) AM_WRITENOP
-ADDRESS_MAP_END
+ map(0x80, 0x80).mirror(0xff00).nopw();
+ map(0xc0, 0xc0).mirror(0xff00).nopw();
+ map(0xc1, 0xc1).mirror(0xff00).nopw();
+}
/*************************************
diff --git a/src/mame/drivers/neoprint.cpp b/src/mame/drivers/neoprint.cpp
index 8e8de5f18b5..db7c9ffcd09 100644
--- a/src/mame/drivers/neoprint.cpp
+++ b/src/mame/drivers/neoprint.cpp
@@ -247,26 +247,27 @@ WRITE8_MEMBER(neoprint_state::audio_result_w)
m_audio_result = data;
}
-ADDRESS_MAP_START(neoprint_state::neoprint_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void neoprint_state::neoprint_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
/* AM_RANGE(0x100000, 0x17ffff) multi-cart or banking, some writes points here if anything lies there too */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("npvidram")
- AM_RANGE(0x500000, 0x51ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x600001) AM_READWRITE8(neoprint_audio_result_r, audio_command_w, 0xff00)
- AM_RANGE(0x600002, 0x600003) AM_READWRITE8(neoprint_calendar_r, neoprint_calendar_w, 0xff00)
- AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") AM_WRITENOP
- AM_RANGE(0x600006, 0x600007) AM_READ_PORT("IN") AM_WRITENOP
- AM_RANGE(0x600008, 0x600009) AM_READ_PORT("DSW1")
- AM_RANGE(0x60000a, 0x60000b) AM_READ8(neoprint_unk_r,0xff00)
- AM_RANGE(0x60000c, 0x60000d) AM_READ_PORT("DSW2")
- AM_RANGE(0x60000e, 0x60000f) AM_WRITENOP
-
- AM_RANGE(0x700000, 0x70001b) AM_RAM AM_SHARE("npvidregs")
-
- AM_RANGE(0x70001e, 0x70001f) AM_WRITENOP //watchdog
-ADDRESS_MAP_END
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x30ffff).ram().share("nvram");
+ map(0x400000, 0x43ffff).ram().share("npvidram");
+ map(0x500000, 0x51ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x600000, 0x600000).rw(this, FUNC(neoprint_state::neoprint_audio_result_r), FUNC(neoprint_state::audio_command_w));
+ map(0x600002, 0x600002).rw(this, FUNC(neoprint_state::neoprint_calendar_r), FUNC(neoprint_state::neoprint_calendar_w));
+ map(0x600004, 0x600005).portr("SYSTEM").nopw();
+ map(0x600006, 0x600007).portr("IN").nopw();
+ map(0x600008, 0x600009).portr("DSW1");
+ map(0x60000a, 0x60000a).r(this, FUNC(neoprint_state::neoprint_unk_r));
+ map(0x60000c, 0x60000d).portr("DSW2");
+ map(0x60000e, 0x60000f).nopw();
+
+ map(0x700000, 0x70001b).ram().share("npvidregs");
+
+ map(0x70001e, 0x70001f).nopw(); //watchdog
+}
WRITE16_MEMBER(neoprint_state::nprsp_palette_w)
{
@@ -315,26 +316,28 @@ READ16_MEMBER(neoprint_state::rom_window_r)
return rom[offset | 0x80000/2 | m_bank_val*0x40000/2];
}
-ADDRESS_MAP_START(neoprint_state::nprsp_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_READ(rom_window_r)
- AM_RANGE(0x200000, 0x200001) AM_READWRITE8(neoprint_audio_result_r, audio_command_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_READWRITE8(neoprint_calendar_r, neoprint_calendar_w, 0xff00)
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("SYSTEM") AM_WRITENOP
- AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN") AM_WRITENOP
- AM_RANGE(0x200008, 0x200009) AM_READ_PORT("DSW1") AM_WRITE8(nprsp_bank_w,0xff00)
- AM_RANGE(0x20000a, 0x20000b) AM_READ8(neoprint_unk_r,0xff00)
- AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("DSW2")
- AM_RANGE(0x20000e, 0x20000f) AM_WRITENOP
-
- AM_RANGE(0x240000, 0x24001b) AM_RAM AM_SHARE("npvidregs")
- AM_RANGE(0x24001e, 0x24001f) AM_WRITENOP //watchdog
-
- AM_RANGE(0x300000, 0x33ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x380000, 0x38ffff) AM_RAM
- AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("npvidram")
- AM_RANGE(0x500000, 0x57ffff) AM_RAM_WRITE(nprsp_palette_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
+void neoprint_state::nprsp_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x0fffff).r(this, FUNC(neoprint_state::rom_window_r));
+ map(0x200000, 0x200000).rw(this, FUNC(neoprint_state::neoprint_audio_result_r), FUNC(neoprint_state::audio_command_w));
+ map(0x200002, 0x200002).rw(this, FUNC(neoprint_state::neoprint_calendar_r), FUNC(neoprint_state::neoprint_calendar_w));
+ map(0x200004, 0x200005).portr("SYSTEM").nopw();
+ map(0x200006, 0x200007).portr("IN").nopw();
+ map(0x200008, 0x200009).portr("DSW1");
+ map(0x200008, 0x200008).w(this, FUNC(neoprint_state::nprsp_bank_w));
+ map(0x20000a, 0x20000a).r(this, FUNC(neoprint_state::neoprint_unk_r));
+ map(0x20000c, 0x20000d).portr("DSW2");
+ map(0x20000e, 0x20000f).nopw();
+
+ map(0x240000, 0x24001b).ram().share("npvidregs");
+ map(0x24001e, 0x24001f).nopw(); //watchdog
+
+ map(0x300000, 0x33ffff).ram().share("nvram");
+ map(0x380000, 0x38ffff).ram();
+ map(0x400000, 0x43ffff).ram().share("npvidram");
+ map(0x500000, 0x57ffff).ram().w(this, FUNC(neoprint_state::nprsp_palette_w)).share("paletteram");
+}
/*************************************
*
@@ -342,14 +345,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(neoprint_state::neoprint_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM//AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_MAIN_BANK)
+void neoprint_state::neoprint_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();//AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_MAIN_BANK)
// AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 3)
// AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 2)
// AM_RANGE(0xe000, 0xefff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 1)
// AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 0)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).ram();
+}
@@ -359,18 +363,19 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(neoprint_state::neoprint_audio_io_map)
+void neoprint_state::neoprint_audio_io_map(address_map &map)
+{
/*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, audio_cpu_clear_nmi_w);*/ /* may not and NMI clear */
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_WRITENOP
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
+ map(0x00, 0x00).mirror(0xff00).r(this, FUNC(neoprint_state::audio_command_r)).nopw();
+ map(0x04, 0x07).mirror(0xff00).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
// AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) /* write - NMI enable / acknowledge? (the data written doesn't matter) */
// AM_RANGE(0x08, 0x08) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_f000_f7ff_r)
// AM_RANGE(0x09, 0x09) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_e000_efff_r)
// AM_RANGE(0x0a, 0x0a) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_c000_dfff_r)
// AM_RANGE(0x0b, 0x0b) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_8000_bfff_r)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_WRITE(audio_result_w)
+ map(0x0c, 0x0c).mirror(0xff00).w(this, FUNC(neoprint_state::audio_result_w));
// AM_RANGE(0x18, 0x18) AM_MIRROR(0xff00) /* write - NMI disable? (the data written doesn't matter) */
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( neoprint )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/neptunp2.cpp b/src/mame/drivers/neptunp2.cpp
index 7042f8c3077..280e2311f4a 100644
--- a/src/mame/drivers/neptunp2.cpp
+++ b/src/mame/drivers/neptunp2.cpp
@@ -54,25 +54,27 @@ READ8_MEMBER( neptunp2_state::test_r )
return machine().rand();
}
-ADDRESS_MAP_START(neptunp2_state::neptunp2_map)
- AM_RANGE(0x00000, 0xbffff) AM_ROM
- AM_RANGE(0xe0000, 0xeffff) AM_RAM
+void neptunp2_state::neptunp2_map(address_map &map)
+{
+ map(0x00000, 0xbffff).rom();
+ map(0xe0000, 0xeffff).ram();
- AM_RANGE(0xd0000, 0xd7fff) AM_RAM //videoram
- AM_RANGE(0xdb004, 0xdb007) AM_RAM
- AM_RANGE(0xdb00c, 0xdb00f) AM_RAM
+ map(0xd0000, 0xd7fff).ram(); //videoram
+ map(0xdb004, 0xdb007).ram();
+ map(0xdb00c, 0xdb00f).ram();
- AM_RANGE(0xff806, 0xff806) AM_READ(test_r)
- AM_RANGE(0xff810, 0xff810) AM_READ(test_r)
- AM_RANGE(0xff812, 0xff812) AM_READ(test_r)
+ map(0xff806, 0xff806).r(this, FUNC(neptunp2_state::test_r));
+ map(0xff810, 0xff810).r(this, FUNC(neptunp2_state::test_r));
+ map(0xff812, 0xff812).r(this, FUNC(neptunp2_state::test_r));
- AM_RANGE(0xff980, 0xff980) AM_WRITENOP
+ map(0xff980, 0xff980).nopw();
- AM_RANGE(0xffff0, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xffff0, 0xfffff).rom();
+}
-ADDRESS_MAP_START(neptunp2_state::neptunp2_io)
-ADDRESS_MAP_END
+void neptunp2_state::neptunp2_io(address_map &map)
+{
+}
static INPUT_PORTS_START( neptunp2 )
diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp
index da2ba6a2be3..d99a7e27b80 100644
--- a/src/mame/drivers/nes.cpp
+++ b/src/mame/drivers/nes.cpp
@@ -26,16 +26,17 @@ WRITE8_MEMBER(nes_state::nes_vh_sprite_dma_w)
m_ppu->spriteram_dma(space, data);
}
-ADDRESS_MAP_START(nes_state::nes_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) /* RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */
- AM_RANGE(0x4014, 0x4014) AM_WRITE(nes_vh_sprite_dma_w) /* stupid address space hole */
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w) /* IN0 - input port 1 */
- AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) /* IN1 - input port 2 */
+void nes_state::nes_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().mirror(0x1800); /* RAM */
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */
+ map(0x4014, 0x4014).w(this, FUNC(nes_state::nes_vh_sprite_dma_w)); /* stupid address space hole */
+ map(0x4016, 0x4016).rw(this, FUNC(nes_state::nes_in0_r), FUNC(nes_state::nes_in0_w)); /* IN0 - input port 1 */
+ map(0x4017, 0x4017).r(this, FUNC(nes_state::nes_in1_r)); /* IN1 - input port 2 */
// 0x4100-0x5fff -> LOW HANDLER defined on a pcb base
// 0x6000-0x7fff -> MID HANDLER defined on a pcb base
// 0x8000-0xffff -> HIGH HANDLER defined on a pcb base
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( nes )
// input devices go through slot options
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp
index 4e58a69da87..46139cf7d14 100644
--- a/src/mame/drivers/nes_vt.cpp
+++ b/src/mame/drivers/nes_vt.cpp
@@ -1171,137 +1171,149 @@ WRITE8_MEMBER(nes_vt_state::vt03_4034_w)
m_vdma_ctrl = data;
}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_MASK(0x001F) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */
+void nes_vt_state::nes_vt_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x3fff).mask(0x001F).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */
- AM_RANGE(0x4000, 0x4013) AM_DEVREADWRITE("apu", nesapu_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_READ(psg1_4014_r) AM_WRITE(nes_vh_sprite_dma_w)
- AM_RANGE(0x4015, 0x4015) AM_READWRITE(psg1_4015_r, psg1_4015_w) /* PSG status / first control register */
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) AM_WRITE(psg1_4017_w)
+ map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write));
+ map(0x4014, 0x4014).r(this, FUNC(nes_vt_state::psg1_4014_r)).w(this, FUNC(nes_vt_state::nes_vh_sprite_dma_w));
+ map(0x4015, 0x4015).rw(this, FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */
+ map(0x4016, 0x4016).rw(this, FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(nes_vt_state::nes_in1_r)).w(this, FUNC(nes_vt_state::psg1_4017_w));
- AM_RANGE(0x4034, 0x4034) AM_WRITE(vt03_4034_w)
+ map(0x4034, 0x4034).w(this, FUNC(nes_vt_state::vt03_4034_w));
- AM_RANGE(0x4100, 0x410b) AM_READ(vt03_410x_r) AM_WRITE(vt03_410x_w)
+ map(0x4100, 0x410b).r(this, FUNC(nes_vt_state::vt03_410x_r)).w(this, FUNC(nes_vt_state::vt03_410x_w));
- AM_RANGE(0x8000, 0xffff) AM_DEVICE("prg", address_map_bank_device, amap8)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).m(m_prg, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_w));
+ map(0x6000, 0x7fff).ram();
+}
/* Some later VT models have more RAM */
-ADDRESS_MAP_START(nes_vt_state::nes_vt_xx_map)
- AM_IMPORT_FROM(nes_vt_map)
- AM_RANGE(0x0800, 0x0fff) AM_RAM
-ADDRESS_MAP_END
+void nes_vt_state::nes_vt_xx_map(address_map &map)
+{
+ nes_vt_map(map);
+ map(0x0800, 0x0fff).ram();
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_hum_map)
- AM_IMPORT_FROM(nes_vt_map)
- AM_RANGE(0x4100, 0x410b) AM_WRITE(vt03_410x_hum_w)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_hum_w)
-ADDRESS_MAP_END
+void nes_vt_state::nes_vt_hum_map(address_map &map)
+{
+ nes_vt_map(map);
+ map(0x4100, 0x410b).w(this, FUNC(nes_vt_state::vt03_410x_hum_w));
+ map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_hum_w));
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_pjoy_map)
- AM_IMPORT_FROM(nes_vt_map)
- AM_RANGE(0x4100, 0x410b) AM_WRITE(vt03_410x_pjoy_w)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_pjoy_w)
-ADDRESS_MAP_END
+void nes_vt_state::nes_vt_pjoy_map(address_map &map)
+{
+ nes_vt_map(map);
+ map(0x4100, 0x410b).w(this, FUNC(nes_vt_state::vt03_410x_pjoy_w));
+ map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_pjoy_w));
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_sp69_map)
- AM_IMPORT_FROM(nes_vt_map)
- AM_RANGE(0x4100, 0x410b) AM_WRITE(vt03_410x_sp69_w)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_sp69_w)
-ADDRESS_MAP_END
+void nes_vt_state::nes_vt_sp69_map(address_map &map)
+{
+ nes_vt_map(map);
+ map(0x4100, 0x410b).w(this, FUNC(nes_vt_state::vt03_410x_sp69_w));
+ map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_sp69_w));
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_cy_map)
- AM_IMPORT_FROM(nes_vt_xx_map)
- AM_RANGE(0x41b0, 0x41bf) AM_READ(vt03_41bx_r) AM_WRITE(vt03_41bx_w)
- AM_RANGE(0x48a0, 0x48af) AM_READ(vt03_48ax_r) AM_WRITE(vt03_48ax_w)
- AM_RANGE(0x4130, 0x4136) AM_READ(vt03_413x_r) AM_WRITE(vt03_413x_w)
- AM_RANGE(0x414F, 0x414F) AM_READ(vt03_414f_r)
- AM_RANGE(0x415C, 0x415C ) AM_READ(vt03_415c_r)
+void nes_vt_state::nes_vt_cy_map(address_map &map)
+{
+ nes_vt_xx_map(map);
+ map(0x41b0, 0x41bf).r(this, FUNC(nes_vt_state::vt03_41bx_r)).w(this, FUNC(nes_vt_state::vt03_41bx_w));
+ map(0x48a0, 0x48af).r(this, FUNC(nes_vt_state::vt03_48ax_r)).w(this, FUNC(nes_vt_state::vt03_48ax_w));
+ map(0x4130, 0x4136).r(this, FUNC(nes_vt_state::vt03_413x_r)).w(this, FUNC(nes_vt_state::vt03_413x_w));
+ map(0x414F, 0x414F).r(this, FUNC(nes_vt_state::vt03_414f_r));
+ map(0x415C, 0x415C).r(this, FUNC(nes_vt_state::vt03_415c_r));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_bt_map)
- AM_IMPORT_FROM(nes_vt_xx_map)
- AM_RANGE(0x412c, 0x412c) AM_WRITE(vt03_412c_w)
-ADDRESS_MAP_END
+void nes_vt_state::nes_vt_bt_map(address_map &map)
+{
+ nes_vt_xx_map(map);
+ map(0x412c, 0x412c).w(this, FUNC(nes_vt_state::vt03_412c_w));
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_hh_map)
- AM_RANGE(0x0000, 0x1fff) AM_MASK(0x0fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */
+void nes_vt_state::nes_vt_hh_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mask(0x0fff).ram();
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */
- AM_RANGE(0x4000, 0x4013) AM_DEVREADWRITE("apu", nesapu_device, read, write)
- AM_RANGE(0x4015, 0x4015) AM_READWRITE(psg1_4015_r, psg1_4015_w) /* PSG status / first control register */
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) AM_WRITE(psg1_4017_w)
+ map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write));
+ map(0x4015, 0x4015).rw(this, FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */
+ map(0x4016, 0x4016).rw(this, FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(nes_vt_state::nes_in1_r)).w(this, FUNC(nes_vt_state::psg1_4017_w));
- AM_RANGE(0x4100, 0x410b) AM_READ(vt03_410x_r) AM_WRITE(vt03_410x_w)
+ map(0x4100, 0x410b).r(this, FUNC(nes_vt_state::vt03_410x_r)).w(this, FUNC(nes_vt_state::vt03_410x_w));
- AM_RANGE(0x8000, 0xffff) AM_DEVICE("prg", address_map_bank_device, amap8)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_w)
+ map(0x8000, 0xffff).m(m_prg, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_w));
- AM_RANGE(0x4034, 0x4034) AM_WRITE(vt03_4034_w)
- AM_RANGE(0x4014, 0x4014) AM_READ(psg1_4014_r) AM_WRITE(vt_hh_sprite_dma_w)
+ map(0x4034, 0x4034).w(this, FUNC(nes_vt_state::vt03_4034_w));
+ map(0x4014, 0x4014).r(this, FUNC(nes_vt_state::psg1_4014_r)).w(this, FUNC(nes_vt_state::vt_hh_sprite_dma_w));
- AM_RANGE(0x414A, 0x414A) AM_READ(vthh_414a_r)
- AM_RANGE(0x411d, 0x411d) AM_WRITE(vtfp_411d_w)
+ map(0x414A, 0x414A).r(this, FUNC(nes_vt_state::vthh_414a_r));
+ map(0x411d, 0x411d).w(this, FUNC(nes_vt_state::vtfp_411d_w));
- AM_RANGE(0x6000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x6000, 0x7fff).ram();
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_dg_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */
+void nes_vt_state::nes_vt_dg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */
- AM_RANGE(0x4000, 0x4013) AM_DEVREADWRITE("apu", nesapu_device, read, write)
- AM_RANGE(0x4015, 0x4015) AM_READWRITE(psg1_4015_r, psg1_4015_w) /* PSG status / first control register */
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) AM_WRITE(psg1_4017_w)
+ map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write));
+ map(0x4015, 0x4015).rw(this, FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */
+ map(0x4016, 0x4016).rw(this, FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(nes_vt_state::nes_in1_r)).w(this, FUNC(nes_vt_state::psg1_4017_w));
- AM_RANGE(0x4100, 0x410b) AM_READ(vt03_410x_r) AM_WRITE(vt03_410x_w)
+ map(0x4100, 0x410b).r(this, FUNC(nes_vt_state::vt03_410x_r)).w(this, FUNC(nes_vt_state::vt03_410x_w));
- AM_RANGE(0x411c, 0x411c) AM_WRITE(vt03_411c_w)
+ map(0x411c, 0x411c).w(this, FUNC(nes_vt_state::vt03_411c_w));
- AM_RANGE(0x8000, 0xffff) AM_DEVICE("prg", address_map_bank_device, amap8)
- AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_w)
+ map(0x8000, 0xffff).m(m_prg, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_w));
- AM_RANGE(0x4034, 0x4034) AM_WRITE(vt03_4034_w)
- AM_RANGE(0x4014, 0x4014) AM_READ(psg1_4014_r) AM_WRITE(nes_vh_sprite_dma_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x4034, 0x4034).w(this, FUNC(nes_vt_state::vt03_4034_w));
+ map(0x4014, 0x4014).r(this, FUNC(nes_vt_state::psg1_4014_r)).w(this, FUNC(nes_vt_state::nes_vh_sprite_dma_w));
+ map(0x6000, 0x7fff).ram();
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_fp_map)
- AM_IMPORT_FROM(nes_vt_hh_map)
- AM_RANGE(0x411e, 0x411e) AM_WRITE(vtfp_411e_w)
- AM_RANGE(0x4a00, 0x4a00) AM_WRITE(vtfp_4a00_w)
- AM_RANGE(0x412c, 0x412c) AM_WRITE(vtfp_412c_w)
- AM_RANGE(0x412d, 0x412d) AM_READ(vtfp_412d_r)
- AM_RANGE(0x4242, 0x4242) AM_WRITE(vtfp_4242_w)
- AM_RANGE(0x4119, 0x4119) AM_READ(vtfp_4119_r)
+void nes_vt_state::nes_vt_fp_map(address_map &map)
+{
+ nes_vt_hh_map(map);
+ map(0x411e, 0x411e).w(this, FUNC(nes_vt_state::vtfp_411e_w));
+ map(0x4a00, 0x4a00).w(this, FUNC(nes_vt_state::vtfp_4a00_w));
+ map(0x412c, 0x412c).w(this, FUNC(nes_vt_state::vtfp_412c_w));
+ map(0x412d, 0x412d).r(this, FUNC(nes_vt_state::vtfp_412d_r));
+ map(0x4242, 0x4242).w(this, FUNC(nes_vt_state::vtfp_4242_w));
+ map(0x4119, 0x4119).r(this, FUNC(nes_vt_state::vtfp_4119_r));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(nes_vt_state::nes_vt_fa_map)
+void nes_vt_state::nes_vt_fa_map(address_map &map)
+{
- AM_IMPORT_FROM(nes_vt_dg_map)
+ nes_vt_dg_map(map);
- AM_RANGE(0x412c, 0x412c) AM_READ(vtfa_412c_r) AM_WRITE(vtfa_412c_w)
- AM_RANGE(0x4242, 0x4242) AM_WRITE(vtfp_4242_w)
+ map(0x412c, 0x412c).r(this, FUNC(nes_vt_state::vtfa_412c_r)).w(this, FUNC(nes_vt_state::vtfa_412c_w));
+ map(0x4242, 0x4242).w(this, FUNC(nes_vt_state::vtfp_4242_w));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(nes_vt_state::prg_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("prg_bank0")
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("prg_bank1")
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("prg_bank2")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("prg_bank3")
-ADDRESS_MAP_END
+void nes_vt_state::prg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("prg_bank0");
+ map(0x2000, 0x3fff).bankr("prg_bank1");
+ map(0x4000, 0x5fff).bankr("prg_bank2");
+ map(0x6000, 0x7fff).bankr("prg_bank3");
+}
WRITE_LINE_MEMBER(nes_vt_state::apu_irq)
{
diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp
index 362ab5b94d9..62af2714b16 100644
--- a/src/mame/drivers/newbrain.cpp
+++ b/src/mame/drivers/newbrain.cpp
@@ -577,20 +577,22 @@ READ_LINE_MEMBER( newbrain_state::tdi_r )
// ADDRESS_MAP( newbrain_mreq )
//-------------------------------------------------
-ADDRESS_MAP_START(newbrain_state::newbrain_mreq)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w)
-ADDRESS_MAP_END
+void newbrain_state::newbrain_mreq(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(newbrain_state::mreq_r), FUNC(newbrain_state::mreq_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( newbrain_iorq )
//-------------------------------------------------
-ADDRESS_MAP_START(newbrain_state::newbrain_iorq)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(iorq_r, iorq_w)
-ADDRESS_MAP_END
+void newbrain_state::newbrain_iorq(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(newbrain_state::iorq_r), FUNC(newbrain_state::iorq_w));
+}
diff --git a/src/mame/drivers/news.cpp b/src/mame/drivers/news.cpp
index 2f3df09ce25..076e2eb8741 100644
--- a/src/mame/drivers/news.cpp
+++ b/src/mame/drivers/news.cpp
@@ -24,17 +24,18 @@ driver by David Haywood
#include "speaker.h"
-ADDRESS_MAP_START(news_state::news_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* 4000-7fff is written to during startup, probably leftover code */
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(news_fgram_w) AM_SHARE("fgram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(news_bgram_w) AM_SHARE("bgram")
- AM_RANGE(0x9000, 0x91ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("INPUTS")
- AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc003, 0xc003) AM_WRITE(news_bgpic_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void news_state::news_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* 4000-7fff is written to during startup, probably leftover code */
+ map(0x8000, 0x87ff).ram().w(this, FUNC(news_state::news_fgram_w)).share("fgram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(news_state::news_bgram_w)).share("bgram");
+ map(0x9000, 0x91ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xc000, 0xc000).portr("DSW");
+ map(0xc001, 0xc001).portr("INPUTS");
+ map(0xc002, 0xc002).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc003, 0xc003).w(this, FUNC(news_state::news_bgpic_w));
+ map(0xe000, 0xffff).ram();
+}
static INPUT_PORTS_START( news )
diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp
index d6730d13c0f..f442d0f54ce 100644
--- a/src/mame/drivers/next.cpp
+++ b/src/mame/drivers/next.cpp
@@ -892,36 +892,37 @@ WRITE_LINE_MEMBER(next_state::vblank_w)
}
}
-ADDRESS_MAP_START(next_state::next_mem)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x01000000, 0x0101ffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x02000000, 0x020001ff) AM_MIRROR(0x300200) AM_READWRITE(dma_ctrl_r, dma_ctrl_w)
- AM_RANGE(0x02004000, 0x020041ff) AM_MIRROR(0x300200) AM_READWRITE(dma_regs_r, dma_regs_w)
- AM_RANGE(0x02006000, 0x0200600f) AM_MIRROR(0x300000) AM_DEVICE8("net", mb8795_device, map, 0xffffffff)
+void next_state::next_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom().region("user1", 0);
+ map(0x01000000, 0x0101ffff).rom().region("user1", 0);
+ map(0x02000000, 0x020001ff).mirror(0x300200).rw(this, FUNC(next_state::dma_ctrl_r), FUNC(next_state::dma_ctrl_w));
+ map(0x02004000, 0x020041ff).mirror(0x300200).rw(this, FUNC(next_state::dma_regs_r), FUNC(next_state::dma_regs_w));
+ map(0x02006000, 0x0200600f).mirror(0x300000).m(net, FUNC(mb8795_device::map));
// AM_RANGE(0x02006010, 0x02006013) AM_MIRROR(0x300000) memory timing
- AM_RANGE(0x02007000, 0x02007003) AM_MIRROR(0x300000) AM_READ(irq_status_r)
- AM_RANGE(0x02007800, 0x02007803) AM_MIRROR(0x300000) AM_READWRITE(irq_mask_r,irq_mask_w)
- AM_RANGE(0x02008000, 0x02008003) AM_MIRROR(0x300000) AM_READ(dsp_r)
- AM_RANGE(0x0200c000, 0x0200c003) AM_MIRROR(0x300000) AM_READ(scr1_r)
- AM_RANGE(0x0200c800, 0x0200c803) AM_MIRROR(0x300000) AM_READ(rom_map_r)
- AM_RANGE(0x0200d000, 0x0200d003) AM_MIRROR(0x300000) AM_READWRITE(scr2_r,scr2_w)
+ map(0x02007000, 0x02007003).mirror(0x300000).r(this, FUNC(next_state::irq_status_r));
+ map(0x02007800, 0x02007803).mirror(0x300000).rw(this, FUNC(next_state::irq_mask_r), FUNC(next_state::irq_mask_w));
+ map(0x02008000, 0x02008003).mirror(0x300000).r(this, FUNC(next_state::dsp_r));
+ map(0x0200c000, 0x0200c003).mirror(0x300000).r(this, FUNC(next_state::scr1_r));
+ map(0x0200c800, 0x0200c803).mirror(0x300000).r(this, FUNC(next_state::rom_map_r));
+ map(0x0200d000, 0x0200d003).mirror(0x300000).rw(this, FUNC(next_state::scr2_r), FUNC(next_state::scr2_w));
// AM_RANGE(0x0200d800, 0x0200d803) AM_MIRROR(0x300000) RMTINT
- AM_RANGE(0x0200e000, 0x0200e00b) AM_MIRROR(0x300000) AM_DEVICE("keyboard", nextkbd_device, amap)
+ map(0x0200e000, 0x0200e00b).mirror(0x300000).m(keyboard, FUNC(nextkbd_device::amap));
// AM_RANGE(0x0200f000, 0x0200f003) AM_MIRROR(0x300000) printer
// AM_RANGE(0x02010000, 0x02010003) AM_MIRROR(0x300000) brightness
- AM_RANGE(0x02012000, 0x0201201f) AM_MIRROR(0x300000) AM_DEVICE8("mo", nextmo_device, map, 0xffffffff)
- AM_RANGE(0x02014000, 0x0201400f) AM_MIRROR(0x300000) AM_DEVICE8("scsibus:7:ncr5390", ncr5390_device, map, 0xffffffff)
- AM_RANGE(0x02014020, 0x02014023) AM_MIRROR(0x300000) AM_READWRITE(scsictrl_r, scsictrl_w)
- AM_RANGE(0x02016000, 0x02016003) AM_MIRROR(0x300000) AM_READWRITE(timer_data_r, timer_data_w)
- AM_RANGE(0x02016004, 0x02016007) AM_MIRROR(0x300000) AM_READWRITE(timer_ctrl_r, timer_ctrl_w)
- AM_RANGE(0x02018000, 0x02018003) AM_MIRROR(0x300000) AM_DEVREADWRITE8("scc", scc8530_t, reg_r, reg_w, 0xffffffff)
+ map(0x02012000, 0x0201201f).mirror(0x300000).m(mo, FUNC(nextmo_device::map));
+ map(0x02014000, 0x0201400f).mirror(0x300000).m(scsi, FUNC(ncr5390_device::map));
+ map(0x02014020, 0x02014023).mirror(0x300000).rw(this, FUNC(next_state::scsictrl_r), FUNC(next_state::scsictrl_w));
+ map(0x02016000, 0x02016003).mirror(0x300000).rw(this, FUNC(next_state::timer_data_r), FUNC(next_state::timer_data_w));
+ map(0x02016004, 0x02016007).mirror(0x300000).rw(this, FUNC(next_state::timer_ctrl_r), FUNC(next_state::timer_ctrl_w));
+ map(0x02018000, 0x02018003).mirror(0x300000).rw(scc, FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w));
// AM_RANGE(0x02018004, 0x02018007) AM_MIRROR(0x300000) SCC CLK
// AM_RANGE(0x02018190, 0x02018197) AM_MIRROR(0x300000) warp 9c DRAM timing
// AM_RANGE(0x02018198, 0x0201819f) AM_MIRROR(0x300000) warp 9c VRAM timing
- AM_RANGE(0x0201a000, 0x0201a003) AM_MIRROR(0x300000) AM_READ(event_counter_r) // EVENTC
+ map(0x0201a000, 0x0201a003).mirror(0x300000).r(this, FUNC(next_state::event_counter_r)); // EVENTC
// AM_RANGE(0x020c0000, 0x020c0004) AM_MIRROR(0x300000) BMAP
- AM_RANGE(0x020c0030, 0x020c0037) AM_MIRROR(0x300000) AM_READWRITE(phy_r, phy_w)
- AM_RANGE(0x04000000, 0x07ffffff) AM_RAM //work ram
+ map(0x020c0030, 0x020c0037).mirror(0x300000).rw(this, FUNC(next_state::phy_r), FUNC(next_state::phy_w));
+ map(0x04000000, 0x07ffffff).ram(); //work ram
// AM_RANGE(0x0c000000, 0x0c03ffff) video RAM w A+B-AB function
// AM_RANGE(0x0d000000, 0x0d03ffff) video RAM w (1-A)B function
// AM_RANGE(0x0e000000, 0x0e03ffff) video RAM w ceil(A+B) function
@@ -930,40 +931,46 @@ ADDRESS_MAP_START(next_state::next_mem)
// AM_RANGE(0x14000000, 0x1403ffff) main RAM w (1-A)B function
// AM_RANGE(0x18000000, 0x1803ffff) main RAM w ceil(A+B) function
// AM_RANGE(0x1c000000, 0x1c03ffff) main RAM w AB function
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0b_m_nofdc_mem)
- AM_IMPORT_FROM(next_mem)
- AM_RANGE(0x0b000000, 0x0b03ffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_fdc_mem)
- AM_IMPORT_FROM(next_mem)
- AM_RANGE(0x02014100, 0x02014107) AM_MIRROR(0x300000) AM_DEVICE8("fdc", n82077aa_device, map, 0xffffffff)
- AM_RANGE(0x02014108, 0x0201410b) AM_MIRROR(0x300000) AM_READWRITE(fdc_control_r, fdc_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0b_m_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x0b000000, 0x0b03ffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0c_m_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0c_c_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02018180, 0x02018183) AM_MIRROR(0x300000) AM_WRITE8(ramdac_w, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_2c_c_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x2c000000, 0x2c1fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02018180, 0x02018183) AM_MIRROR(0x300000) AM_WRITE8(ramdac_w, 0xffffffff)
-ADDRESS_MAP_END
+}
+
+void next_state::next_0b_m_nofdc_mem(address_map &map)
+{
+ next_mem(map);
+ map(0x0b000000, 0x0b03ffff).ram().share("vram");
+}
+
+void next_state::next_fdc_mem(address_map &map)
+{
+ next_mem(map);
+ map(0x02014100, 0x02014107).mirror(0x300000).m(fdc, FUNC(n82077aa_device::map));
+ map(0x02014108, 0x0201410b).mirror(0x300000).rw(this, FUNC(next_state::fdc_control_r), FUNC(next_state::fdc_control_w));
+}
+
+void next_state::next_0b_m_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x0b000000, 0x0b03ffff).ram().share("vram");
+}
+
+void next_state::next_0c_m_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x0c000000, 0x0c1fffff).ram().share("vram");
+}
+
+void next_state::next_0c_c_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x0c000000, 0x0c1fffff).ram().share("vram");
+ map(0x02018180, 0x02018183).mirror(0x300000).w(this, FUNC(next_state::ramdac_w));
+}
+
+void next_state::next_2c_c_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x2c000000, 0x2c1fffff).ram().share("vram");
+ map(0x02018180, 0x02018183).mirror(0x300000).w(this, FUNC(next_state::ramdac_w));
+}
/* Input ports */
diff --git a/src/mame/drivers/nexus3d.cpp b/src/mame/drivers/nexus3d.cpp
index e6dacaae799..a4da3b2557c 100644
--- a/src/mame/drivers/nexus3d.cpp
+++ b/src/mame/drivers/nexus3d.cpp
@@ -78,15 +78,16 @@ READ32_MEMBER(nexus3d_state::nexus3d_unk_r)
//
//}
-ADDRESS_MAP_START(nexus3d_state::nexus3d_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("mainram")
+void nexus3d_state::nexus3d_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("mainram");
- AM_RANGE(0x00400000, 0x01ffffff) AM_RAM // ?? uploads various data, + pointers to data in the 0x01ffxxxx range, might be video system related
+ map(0x00400000, 0x01ffffff).ram(); // ?? uploads various data, + pointers to data in the 0x01ffxxxx range, might be video system related
// flash
- AM_RANGE(0x9C000000, 0x9C000003) AM_DEVREAD8( "flash", serflash_device, n3d_flash_r, 0xffffffff)
- AM_RANGE(0x9C000010, 0x9C000013) AM_DEVWRITE8("flash", serflash_device, n3d_flash_cmd_w, 0xffffffff)
- AM_RANGE(0x9C000018, 0x9C00001b) AM_DEVWRITE8("flash", serflash_device, n3d_flash_addr_w, 0xffffffff)
+ map(0x9C000000, 0x9C000003).r(m_serflash, FUNC(serflash_device::n3d_flash_r));
+ map(0x9C000010, 0x9C000013).w(m_serflash, FUNC(serflash_device::n3d_flash_cmd_w));
+ map(0x9C000018, 0x9C00001b).w(m_serflash, FUNC(serflash_device::n3d_flash_addr_w));
// lots of accesses in this range
// 0xc00018xx seems CRTC related
@@ -94,10 +95,10 @@ ADDRESS_MAP_START(nexus3d_state::nexus3d_map)
// AM_RANGE(0xC0000F44, 0xC0000F47) AM_READWRITE(nexus3d_unk2_r, nexus3d_unk2_w ) // often, status for something.
// AM_RANGE(0xC0000F4C, 0xC0000F4f) AM_READWRITE(nexus3d_unk3_r, nexus3d_unk3_w ) // often
- AM_RANGE(0xE0000014, 0xE0000017) AM_READ(nexus3d_unk_r ) // sits waiting for this
+ map(0xE0000014, 0xE0000017).r(this, FUNC(nexus3d_state::nexus3d_unk_r)); // sits waiting for this
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( nexus3d )
diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp
index ce19cf400b1..69b0aa89331 100644
--- a/src/mame/drivers/ngen.cpp
+++ b/src/mame/drivers/ngen.cpp
@@ -860,16 +860,18 @@ void ngen_state::machine_reset()
}
// boot ROMs from modules are not mapped anywhere, instead, they have to send the code from the boot ROM via DMA
-ADDRESS_MAP_START(ngen_state::ngen_mem)
- AM_RANGE(0x00000, 0xf7fff) AM_RAM
- AM_RANGE(0xf8000, 0xf9fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xfa000, 0xfbfff) AM_RAM AM_SHARE("fontram")
- AM_RANGE(0xfc000, 0xfcfff) AM_RAM
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("bios",0)
-ADDRESS_MAP_END
+void ngen_state::ngen_mem(address_map &map)
+{
+ map(0x00000, 0xf7fff).ram();
+ map(0xf8000, 0xf9fff).ram().share("vram");
+ map(0xfa000, 0xfbfff).ram().share("fontram");
+ map(0xfc000, 0xfcfff).ram();
+ map(0xfe000, 0xfffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(ngen_state::ngen_io)
- AM_RANGE(0x0000, 0x0001) AM_READWRITE(xbus_r,xbus_w)
+void ngen_state::ngen_io(address_map &map)
+{
+ map(0x0000, 0x0001).rw(this, FUNC(ngen_state::xbus_r), FUNC(ngen_state::xbus_w));
// Floppy/Hard disk module
// AM_RANGE(0x0100, 0x0107) AM_DEVREADWRITE8("fdc",wd2797_t,read,write,0x00ff) // a guess for now
@@ -880,7 +882,7 @@ ADDRESS_MAP_START(ngen_state::ngen_io)
// 0x0120-0x012f - WD1010 Winchester disk controller (unemulated)
// AM_RANGE(0x0130, 0x0137) AM_DEVREADWRITE8("hdc_timer",pit8253_device,read,write,0x00ff)
-ADDRESS_MAP_END
+}
ADDRESS_MAP_START(ngen_state::ngen386_mem)
AM_RANGE(0x00000000, 0x000f7fff) AM_RAM
diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp
index 0c03ae2c593..a376910ab4a 100644
--- a/src/mame/drivers/ngp.cpp
+++ b/src/mame/drivers/ngp.cpp
@@ -551,15 +551,16 @@ WRITE8_MEMBER( ngp_state::flash1_w )
}
-ADDRESS_MAP_START(ngp_state::ngp_mem)
- AM_RANGE( 0x000080, 0x0000bf ) AM_READWRITE(ngp_io_r, ngp_io_w) /* ngp/c specific i/o */
- AM_RANGE( 0x004000, 0x006fff ) AM_RAM AM_SHARE("mainram") /* work ram */
- AM_RANGE( 0x007000, 0x007fff ) AM_RAM AM_SHARE("share1") /* shared with sound cpu */
- AM_RANGE( 0x008000, 0x00bfff ) AM_DEVREADWRITE("k1ge", k1ge_device, read, write) /* video chip */
- AM_RANGE( 0x200000, 0x3fffff ) AM_WRITE(flash0_w) /* cart area #1 */
- AM_RANGE( 0x800000, 0x9fffff ) AM_WRITE(flash1_w) /* cart area #2 */
- AM_RANGE( 0xff0000, 0xffffff ) AM_ROM AM_REGION("maincpu", 0) /* system rom */
-ADDRESS_MAP_END
+void ngp_state::ngp_mem(address_map &map)
+{
+ map(0x000080, 0x0000bf).rw(this, FUNC(ngp_state::ngp_io_r), FUNC(ngp_state::ngp_io_w)); /* ngp/c specific i/o */
+ map(0x004000, 0x006fff).ram().share("mainram"); /* work ram */
+ map(0x007000, 0x007fff).ram().share("share1"); /* shared with sound cpu */
+ map(0x008000, 0x00bfff).rw(m_k1ge, FUNC(k1ge_device::read), FUNC(k1ge_device::write)); /* video chip */
+ map(0x200000, 0x3fffff).w(this, FUNC(ngp_state::flash0_w)); /* cart area #1 */
+ map(0x800000, 0x9fffff).w(this, FUNC(ngp_state::flash1_w)); /* cart area #2 */
+ map(0xff0000, 0xffffff).rom().region("maincpu", 0); /* system rom */
+}
READ8_MEMBER( ngp_state::ngp_z80_comm_r )
@@ -580,12 +581,13 @@ WRITE8_MEMBER( ngp_state::ngp_z80_signal_main_w )
}
-ADDRESS_MAP_START(ngp_state::z80_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAM AM_SHARE("share1") /* shared with tlcs900 */
- AM_RANGE( 0x4000, 0x4001 ) AM_DEVWRITE("t6w28", t6w28_device, write ) /* sound chip (right, left) */
- AM_RANGE( 0x8000, 0x8000 ) AM_READWRITE( ngp_z80_comm_r, ngp_z80_comm_w ) /* main-sound communication */
- AM_RANGE( 0xc000, 0xc000 ) AM_WRITE( ngp_z80_signal_main_w ) /* signal irq to main cpu */
-ADDRESS_MAP_END
+void ngp_state::z80_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("share1"); /* shared with tlcs900 */
+ map(0x4000, 0x4001).w(m_t6w28, FUNC(t6w28_device::write)); /* sound chip (right, left) */
+ map(0x8000, 0x8000).rw(this, FUNC(ngp_state::ngp_z80_comm_r), FUNC(ngp_state::ngp_z80_comm_w)); /* main-sound communication */
+ map(0xc000, 0xc000).w(this, FUNC(ngp_state::ngp_z80_signal_main_w)); /* signal irq to main cpu */
+}
WRITE8_MEMBER( ngp_state::ngp_z80_clear_irq )
@@ -597,9 +599,10 @@ WRITE8_MEMBER( ngp_state::ngp_z80_clear_irq )
}
-ADDRESS_MAP_START(ngp_state::z80_io)
- AM_RANGE( 0x0000, 0xffff ) AM_WRITE( ngp_z80_clear_irq )
-ADDRESS_MAP_END
+void ngp_state::z80_io(address_map &map)
+{
+ map(0x0000, 0xffff).w(this, FUNC(ngp_state::ngp_z80_clear_irq));
+}
INPUT_CHANGED_MEMBER(ngp_state::power_callback)
diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp
index 0f04f4dd377..7ce9764365e 100644
--- a/src/mame/drivers/nibble.cpp
+++ b/src/mame/drivers/nibble.cpp
@@ -152,17 +152,19 @@ void nibble_state::machine_reset()
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(nibble_state::nibble_map)
+void nibble_state::nibble_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_WRITE(nibble_videoram_w) AM_SHARE("videoram") // placeholder
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).w(this, FUNC(nibble_state::nibble_videoram_w)).share("videoram"); // placeholder
// AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("crtc", mc6845_device, address_w)
// AM_RANGE(0xff02, 0xff03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(nibble_state::nibble_cru_map)
-ADDRESS_MAP_END
+void nibble_state::nibble_cru_map(address_map &map)
+{
+}
/*************************
diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp
index 0cb1b05d085..1594859a31d 100644
--- a/src/mame/drivers/nightgal.cpp
+++ b/src/mame/drivers/nightgal.cpp
@@ -364,13 +364,14 @@ WRITE8_MEMBER(nightgal_state::output_w)
* Common
********************************/
-ADDRESS_MAP_START(nightgal_state::common_nsc_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x0080) AM_READ_PORT("BLIT_PORT")
- AM_RANGE(0x0081, 0x0083) AM_READ(royalqn_nsc_blit_r)
- AM_RANGE(0x00a0, 0x00af) AM_DEVWRITE("blitter", jangou_blitter_device, vregs_w)
- AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("blitter", jangou_blitter_device, bltflip_w)
-ADDRESS_MAP_END
+void nightgal_state::common_nsc_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x0080, 0x0080).portr("BLIT_PORT");
+ map(0x0081, 0x0083).r(this, FUNC(nightgal_state::royalqn_nsc_blit_r));
+ map(0x00a0, 0x00af).w(m_blitter, FUNC(jangou_blitter_device::vregs_w));
+ map(0x00b0, 0x00b0).w(m_blitter, FUNC(jangou_blitter_device::bltflip_w));
+}
/********************************
* Sexy Gal
@@ -398,100 +399,111 @@ WRITE8_MEMBER(nightgal_state::sexygal_audionmi_w)
}
-ADDRESS_MAP_START(nightgal_state::sweetgal_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x807f) AM_RAM AM_SHARE("sound_ram")
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void nightgal_state::sweetgal_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x807f).ram().share("sound_ram");
+ map(0xe000, 0xefff).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram");
+ map(0xf000, 0xffff).ram();
+}
-ADDRESS_MAP_START(nightgal_state::sexygal_map)
- AM_IMPORT_FROM(sweetgal_map)
- AM_RANGE(0xa000, 0xa000) AM_WRITE(sexygal_audioff_w)
-ADDRESS_MAP_END
+void nightgal_state::sexygal_map(address_map &map)
+{
+ sweetgal_map(map);
+ map(0xa000, 0xa000).w(this, FUNC(nightgal_state::sexygal_audioff_w));
+}
-ADDRESS_MAP_START(nightgal_state::common_sexygal_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10,0x10) AM_READ_PORT("DSWA") AM_WRITE(output_w)
- AM_RANGE(0x11,0x11) AM_READ_PORT("SYSTEM") AM_WRITE(mux_w)
- AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_0_w)
- AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(royalqn_blitter_1_w)
- AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w)
-ADDRESS_MAP_END
+void nightgal_state::common_sexygal_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).portr("DSWA").w(this, FUNC(nightgal_state::output_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(nightgal_state::mux_w));
+ map(0x12, 0x12).mirror(0xe8).portr("DSWB").w(this, FUNC(nightgal_state::royalqn_blitter_0_w));
+ map(0x13, 0x13).mirror(0xe8).portr("DSWC").w(this, FUNC(nightgal_state::royalqn_blitter_1_w));
+ map(0x14, 0x14).mirror(0xe8).nopr().w(this, FUNC(nightgal_state::royalqn_blitter_2_w));
+}
-ADDRESS_MAP_START(nightgal_state::sexygal_io)
- AM_IMPORT_FROM( common_sexygal_io )
+void nightgal_state::sexygal_io(address_map &map)
+{
+ common_sexygal_io(map);
- AM_RANGE(0x00,0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
-ADDRESS_MAP_START(nightgal_state::sgaltrop_io)
- AM_IMPORT_FROM( common_sexygal_io )
+void nightgal_state::sgaltrop_io(address_map &map)
+{
+ common_sexygal_io(map);
- AM_RANGE(0x01,0x01) AM_DEVREAD("ymsnd", ym2203_device, data_r)
- AM_RANGE(0x02,0x03) AM_DEVWRITE("ymsnd", ym2203_device, data_address_w)
-ADDRESS_MAP_END
+ map(0x01, 0x01).r("ymsnd", FUNC(ym2203_device::data_r));
+ map(0x02, 0x03).w("ymsnd", FUNC(ym2203_device::data_address_w));
+}
-ADDRESS_MAP_START(nightgal_state::sexygal_nsc_map)
- AM_IMPORT_FROM( common_nsc_map )
- AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v2_regs)
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram")
- AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0)
-ADDRESS_MAP_END
+void nightgal_state::sexygal_nsc_map(address_map &map)
+{
+ common_nsc_map(map);
+ map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v2_regs));
+ map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram");
+ map(0xc000, 0xdfff).mirror(0x2000).rom().region("subrom", 0);
+}
-ADDRESS_MAP_START(nightgal_state::sgaltrop_nsc_map)
- AM_IMPORT_FROM( common_nsc_map )
+void nightgal_state::sgaltrop_nsc_map(address_map &map)
+{
+ common_nsc_map(map);
- AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v2_regs)
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram")
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("subrom", 0)
-ADDRESS_MAP_END
+ map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v2_regs));
+ map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram");
+ map(0xc000, 0xffff).rom().region("subrom", 0);
+}
-ADDRESS_MAP_START(nightgal_state::sexygal_audio_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
+void nightgal_state::sexygal_audio_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
- AM_RANGE(0x2000, 0x207f) AM_RAM AM_SHARE("sound_ram")
- AM_RANGE(0x3000, 0x3000) AM_WRITE(sexygal_audionmi_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiorom", 0)
-ADDRESS_MAP_END
+ map(0x2000, 0x207f).ram().share("sound_ram");
+ map(0x3000, 0x3000).w(this, FUNC(nightgal_state::sexygal_audionmi_w));
+ map(0xc000, 0xffff).rom().region("audiorom", 0);
+}
/********************************
* Royal Queen
********************************/
-ADDRESS_MAP_START(nightgal_state::royalqn_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_NOP
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nightgal_state::royalqn_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_MIRROR(0xec) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02,0x03) AM_MIRROR(0xec) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10,0x10) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(output_w)
- AM_RANGE(0x11,0x11) AM_MIRROR(0xe8) AM_READ_PORT("SYSTEM") AM_WRITE(mux_w)
- AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_0_w)
- AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(royalqn_blitter_1_w)
- AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w)
- AM_RANGE(0x15,0x15) AM_MIRROR(0xe8) AM_NOP
- AM_RANGE(0x16,0x16) AM_MIRROR(0xe8) AM_NOP
- AM_RANGE(0x17,0x17) AM_MIRROR(0xe8) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nightgal_state::royalqn_nsc_map)
- AM_IMPORT_FROM( common_nsc_map )
-
- AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs)
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w)
- AM_RANGE(0x4000, 0x4000) AM_NOP
- AM_RANGE(0x8000, 0x8000) AM_NOP //open bus or protection check
- AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0)
-ADDRESS_MAP_END
+void nightgal_state::royalqn_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).noprw();
+ map(0xc000, 0xdfff).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram");
+ map(0xe000, 0xffff).ram();
+}
+
+void nightgal_state::royalqn_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).mirror(0xec).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).mirror(0xec).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).mirror(0xe8).portr("DSWA").w(this, FUNC(nightgal_state::output_w));
+ map(0x11, 0x11).mirror(0xe8).portr("SYSTEM").w(this, FUNC(nightgal_state::mux_w));
+ map(0x12, 0x12).mirror(0xe8).portr("DSWB").w(this, FUNC(nightgal_state::royalqn_blitter_0_w));
+ map(0x13, 0x13).mirror(0xe8).portr("DSWC").w(this, FUNC(nightgal_state::royalqn_blitter_1_w));
+ map(0x14, 0x14).mirror(0xe8).nopr().w(this, FUNC(nightgal_state::royalqn_blitter_2_w));
+ map(0x15, 0x15).mirror(0xe8).noprw();
+ map(0x16, 0x16).mirror(0xe8).noprw();
+ map(0x17, 0x17).mirror(0xe8).noprw();
+}
+
+void nightgal_state::royalqn_nsc_map(address_map &map)
+{
+ common_nsc_map(map);
+
+ map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs));
+ map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w));
+ map(0x4000, 0x4000).noprw();
+ map(0x8000, 0x8000).noprw(); //open bus or protection check
+ map(0xc000, 0xdfff).mirror(0x2000).rom().region("subrom", 0);
+}
/********************************************
*
diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp
index c7cf8d02546..dd4bd61ea00 100644
--- a/src/mame/drivers/ninjakd2.cpp
+++ b/src/mame/drivers/ninjakd2.cpp
@@ -372,123 +372,131 @@ WRITE8_MEMBER(ninjakd2_state::ninjakd2_soundreset_w)
*
*************************************/
-ADDRESS_MAP_START(ninjakd2_state::ninjakd2_main_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("KEYCOIN")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("PAD1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("PAD2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DIPSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DIPSW2")
- AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc201, 0xc201) AM_WRITE(ninjakd2_soundreset_w)
- AM_RANGE(0xc202, 0xc202) AM_WRITE(ninjakd2_bankselect_w)
- AM_RANGE(0xc203, 0xc203) AM_WRITE(ninjakd2_sprite_overdraw_w)
- AM_RANGE(0xc208, 0xc20c) AM_WRITE(ninjakd2_bg_ctrl_w)
- AM_RANGE(0xc800, 0xcdff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(ninjakd2_bgvideoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe000, 0xf9ff) AM_RAM
- AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ninjakd2_state::mnight_main_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xd9ff) AM_RAM
- AM_RANGE(0xda00, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ninjakd2_bgvideoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xf000, 0xf5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("KEYCOIN")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("PAD1")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("PAD2")
- AM_RANGE(0xf803, 0xf803) AM_READ_PORT("DIPSW1")
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DIPSW2")
- AM_RANGE(0xfa00, 0xfa00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xfa01, 0xfa01) AM_WRITE(ninjakd2_soundreset_w)
- AM_RANGE(0xfa02, 0xfa02) AM_WRITE(ninjakd2_bankselect_w)
- AM_RANGE(0xfa03, 0xfa03) AM_WRITE(ninjakd2_sprite_overdraw_w)
- AM_RANGE(0xfa08, 0xfa0c) AM_WRITE(ninjakd2_bg_ctrl_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ninjakd2_state::robokid_main_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd000, 0xd3ff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked
- AM_RANGE(0xd400, 0xd7ff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked
- AM_RANGE(0xd800, 0xdbff) AM_READWRITE(robokid_bg0_videoram_r, robokid_bg0_videoram_w) // banked
- AM_RANGE(0xdc00, 0xdc00) AM_READ_PORT("KEYCOIN") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xdc01, 0xdc01) AM_READ_PORT("PAD1") AM_WRITE(ninjakd2_soundreset_w)
- AM_RANGE(0xdc02, 0xdc02) AM_READ_PORT("PAD2") AM_WRITE(ninjakd2_bankselect_w)
- AM_RANGE(0xdc03, 0xdc03) AM_READ_PORT("DIPSW1") AM_WRITE(ninjakd2_sprite_overdraw_w)
- AM_RANGE(0xdc04, 0xdc04) AM_READ_PORT("DIPSW2")
- AM_RANGE(0xdd00, 0xdd04) AM_WRITE(robokid_bg0_ctrl_w)
- AM_RANGE(0xdd05, 0xdd05) AM_WRITE(robokid_bg0_bank_w)
- AM_RANGE(0xde00, 0xde04) AM_WRITE(robokid_bg1_ctrl_w)
- AM_RANGE(0xde05, 0xde05) AM_WRITE(robokid_bg1_bank_w)
- AM_RANGE(0xdf00, 0xdf04) AM_WRITE(robokid_bg2_ctrl_w)
- AM_RANGE(0xdf05, 0xdf05) AM_WRITE(robokid_bg2_bank_w)
- AM_RANGE(0xe000, 0xf9ff) AM_RAM
- AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ninjakd2_state::omegaf_main_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("KEYCOIN") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc001, 0xc003) AM_READ(omegaf_io_protection_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITE(ninjakd2_soundreset_w)
- AM_RANGE(0xc002, 0xc002) AM_WRITE(ninjakd2_bankselect_w)
- AM_RANGE(0xc003, 0xc003) AM_WRITE(ninjakd2_sprite_overdraw_w)
- AM_RANGE(0xc004, 0xc006) AM_WRITE(omegaf_io_protection_w)
- AM_RANGE(0xc100, 0xc104) AM_WRITE(robokid_bg0_ctrl_w)
- AM_RANGE(0xc105, 0xc105) AM_WRITE(robokid_bg0_bank_w)
- AM_RANGE(0xc1e7, 0xc1e7) AM_READNOP // see notes
- AM_RANGE(0xc200, 0xc204) AM_WRITE(robokid_bg1_ctrl_w)
- AM_RANGE(0xc205, 0xc205) AM_WRITE(robokid_bg1_bank_w)
- AM_RANGE(0xc300, 0xc304) AM_WRITE(robokid_bg2_ctrl_w)
- AM_RANGE(0xc305, 0xc305) AM_WRITE(robokid_bg2_bank_w)
- AM_RANGE(0xc400, 0xc7ff) AM_READWRITE(robokid_bg0_videoram_r, robokid_bg0_videoram_w) // banked
- AM_RANGE(0xc800, 0xcbff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked
- AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xf9ff) AM_RAM
- AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ninjakd2_state::ninjakd2_sound_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(ninjakd2_pcm_play_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ninjakd2_state::ninjakid_nopcm_sound_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ninjakd2_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("soundcpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ninjakd2_state::ninjakd2_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("2203.1", ym2203_device, write)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("2203.2", ym2203_device, write)
-ADDRESS_MAP_END
+void ninjakd2_state::ninjakd2_main_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("KEYCOIN");
+ map(0xc001, 0xc001).portr("PAD1");
+ map(0xc002, 0xc002).portr("PAD2");
+ map(0xc003, 0xc003).portr("DIPSW1");
+ map(0xc004, 0xc004).portr("DIPSW2");
+ map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc201, 0xc201).w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w));
+ map(0xc202, 0xc202).w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w));
+ map(0xc203, 0xc203).w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w));
+ map(0xc208, 0xc20c).w(this, FUNC(ninjakd2_state::ninjakd2_bg_ctrl_w));
+ map(0xc800, 0xcdff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_bgvideoram_w)).share("bg_videoram");
+ map(0xe000, 0xf9ff).ram();
+ map(0xfa00, 0xffff).ram().share("spriteram");
+}
+
+void ninjakd2_state::mnight_main_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xd9ff).ram();
+ map(0xda00, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_bgvideoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram");
+ map(0xf000, 0xf5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xf800).portr("KEYCOIN");
+ map(0xf801, 0xf801).portr("PAD1");
+ map(0xf802, 0xf802).portr("PAD2");
+ map(0xf803, 0xf803).portr("DIPSW1");
+ map(0xf804, 0xf804).portr("DIPSW2");
+ map(0xfa00, 0xfa00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xfa01, 0xfa01).w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w));
+ map(0xfa02, 0xfa02).w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w));
+ map(0xfa03, 0xfa03).w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w));
+ map(0xfa08, 0xfa0c).w(this, FUNC(ninjakd2_state::ninjakd2_bg_ctrl_w));
+}
+
+
+void ninjakd2_state::robokid_main_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram");
+ map(0xd000, 0xd3ff).rw(this, FUNC(ninjakd2_state::robokid_bg2_videoram_r), FUNC(ninjakd2_state::robokid_bg2_videoram_w)); // banked
+ map(0xd400, 0xd7ff).rw(this, FUNC(ninjakd2_state::robokid_bg1_videoram_r), FUNC(ninjakd2_state::robokid_bg1_videoram_w)); // banked
+ map(0xd800, 0xdbff).rw(this, FUNC(ninjakd2_state::robokid_bg0_videoram_r), FUNC(ninjakd2_state::robokid_bg0_videoram_w)); // banked
+ map(0xdc00, 0xdc00).portr("KEYCOIN").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xdc01, 0xdc01).portr("PAD1").w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w));
+ map(0xdc02, 0xdc02).portr("PAD2").w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w));
+ map(0xdc03, 0xdc03).portr("DIPSW1").w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w));
+ map(0xdc04, 0xdc04).portr("DIPSW2");
+ map(0xdd00, 0xdd04).w(this, FUNC(ninjakd2_state::robokid_bg0_ctrl_w));
+ map(0xdd05, 0xdd05).w(this, FUNC(ninjakd2_state::robokid_bg0_bank_w));
+ map(0xde00, 0xde04).w(this, FUNC(ninjakd2_state::robokid_bg1_ctrl_w));
+ map(0xde05, 0xde05).w(this, FUNC(ninjakd2_state::robokid_bg1_bank_w));
+ map(0xdf00, 0xdf04).w(this, FUNC(ninjakd2_state::robokid_bg2_ctrl_w));
+ map(0xdf05, 0xdf05).w(this, FUNC(ninjakd2_state::robokid_bg2_bank_w));
+ map(0xe000, 0xf9ff).ram();
+ map(0xfa00, 0xffff).ram().share("spriteram");
+}
+
+
+void ninjakd2_state::omegaf_main_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc000).portr("KEYCOIN").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc001, 0xc003).r(this, FUNC(ninjakd2_state::omegaf_io_protection_r));
+ map(0xc001, 0xc001).w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w));
+ map(0xc002, 0xc002).w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w));
+ map(0xc003, 0xc003).w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w));
+ map(0xc004, 0xc006).w(this, FUNC(ninjakd2_state::omegaf_io_protection_w));
+ map(0xc100, 0xc104).w(this, FUNC(ninjakd2_state::robokid_bg0_ctrl_w));
+ map(0xc105, 0xc105).w(this, FUNC(ninjakd2_state::robokid_bg0_bank_w));
+ map(0xc1e7, 0xc1e7).nopr(); // see notes
+ map(0xc200, 0xc204).w(this, FUNC(ninjakd2_state::robokid_bg1_ctrl_w));
+ map(0xc205, 0xc205).w(this, FUNC(ninjakd2_state::robokid_bg1_bank_w));
+ map(0xc300, 0xc304).w(this, FUNC(ninjakd2_state::robokid_bg2_ctrl_w));
+ map(0xc305, 0xc305).w(this, FUNC(ninjakd2_state::robokid_bg2_bank_w));
+ map(0xc400, 0xc7ff).rw(this, FUNC(ninjakd2_state::robokid_bg0_videoram_r), FUNC(ninjakd2_state::robokid_bg0_videoram_w)); // banked
+ map(0xc800, 0xcbff).rw(this, FUNC(ninjakd2_state::robokid_bg1_videoram_r), FUNC(ninjakd2_state::robokid_bg1_videoram_w)); // banked
+ map(0xcc00, 0xcfff).rw(this, FUNC(ninjakd2_state::robokid_bg2_videoram_r), FUNC(ninjakd2_state::robokid_bg2_videoram_w)); // banked
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram");
+ map(0xd800, 0xdfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe000, 0xf9ff).ram();
+ map(0xfa00, 0xffff).ram().share("spriteram");
+}
+
+
+void ninjakd2_state::ninjakd2_sound_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).w(this, FUNC(ninjakd2_state::ninjakd2_pcm_play_w));
+}
+
+void ninjakd2_state::ninjakid_nopcm_sound_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).noprw();
+}
+
+void ninjakd2_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).rom().region("soundcpu", 0x8000);
+}
+
+void ninjakd2_state::ninjakd2_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("2203.1", FUNC(ym2203_device::write));
+ map(0x80, 0x81).w("2203.2", FUNC(ym2203_device::write));
+}
diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp
index 2cb80e4f49e..f910d98a5f0 100644
--- a/src/mame/drivers/ninjaw.cpp
+++ b/src/mame/drivers/ninjaw.cpp
@@ -420,84 +420,89 @@ WRITE16_MEMBER(ninjaw_state::tc0100scn_triple_screen_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(ninjaw_state::ninjaw_master_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* main ram */
- AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
- AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x220000, 0x220003) AM_READWRITE(sound_r,sound_w)
- AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
- AM_RANGE(0x2a0000, 0x2a000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x2c0000, 0x2d3fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */
- AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, word_r, word_w) /* tilemaps (3rd screen) */
- AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
- AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
- AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */
-ADDRESS_MAP_END
+void ninjaw_state::ninjaw_master_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* main ram */
+ map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+ map(0x210000, 0x210001).w(this, FUNC(ninjaw_state::cpua_ctrl_w));
+ map(0x220000, 0x220003).rw(this, FUNC(ninjaw_state::sound_r), FUNC(ninjaw_state::sound_w));
+ map(0x240000, 0x24ffff).ram().share("share1");
+ map(0x260000, 0x263fff).ram().share("spriteram");
+ map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */
+ map(0x2a0000, 0x2a000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x2c0000, 0x2d3fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */
+ map(0x2e0000, 0x2e000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x300000, 0x313fff).rw("tc0100scn_3", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (3rd screen) */
+ map(0x320000, 0x32000f).rw("tc0100scn_3", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x340000, 0x340007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */
+ map(0x350000, 0x350007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */
+ map(0x360000, 0x360007).rw("tc0110pcr_3", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (3rd screen) */
+}
// NB there could be conflicts between which cpu writes what to the
// palette, as our interleaving won't match the original board.
-ADDRESS_MAP_START(ninjaw_state::ninjaw_slave_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main ram */
- AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
- AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
- AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
- AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
- AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ninjaw_state::darius2_master_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* main ram */
- AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
- AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x220000, 0x220003) AM_READWRITE(sound_r,sound_w)
- AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
- AM_RANGE(0x2a0000, 0x2a000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x2c0000, 0x2d3fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */
- AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, word_r, word_w) /* tilemaps (3rd screen) */
- AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
- AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
- AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ninjaw_state::darius2_slave_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main ram */
- AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
- AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
-ADDRESS_MAP_END
+void ninjaw_state::ninjaw_slave_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x080000, 0x08ffff).ram(); /* main ram */
+ map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+ map(0x240000, 0x24ffff).ram().share("share1");
+ map(0x260000, 0x263fff).ram().share("spriteram");
+ map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */
+ map(0x340000, 0x340007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */
+ map(0x350000, 0x350007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */
+ map(0x360000, 0x360007).rw("tc0110pcr_3", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (3rd screen) */
+}
+
+void ninjaw_state::darius2_master_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* main ram */
+ map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+ map(0x210000, 0x210001).w(this, FUNC(ninjaw_state::cpua_ctrl_w));
+ map(0x220000, 0x220003).rw(this, FUNC(ninjaw_state::sound_r), FUNC(ninjaw_state::sound_w));
+ map(0x240000, 0x24ffff).ram().share("share1");
+ map(0x260000, 0x263fff).ram().share("spriteram");
+ map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */
+ map(0x2a0000, 0x2a000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x2c0000, 0x2d3fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */
+ map(0x2e0000, 0x2e000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x300000, 0x313fff).rw("tc0100scn_3", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (3rd screen) */
+ map(0x320000, 0x32000f).rw("tc0100scn_3", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x340000, 0x340007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */
+ map(0x350000, 0x350007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */
+ map(0x360000, 0x360007).rw("tc0110pcr_3", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (3rd screen) */
+}
+
+void ninjaw_state::darius2_slave_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x080000, 0x08ffff).ram(); /* main ram */
+ map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+ map(0x240000, 0x24ffff).ram().share("share1");
+ map(0x260000, 0x263fff).ram().share("spriteram");
+ map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */
+}
/***************************************************************************/
-ADDRESS_MAP_START(ninjaw_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r,slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol_w) /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void ninjaw_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).w(this, FUNC(ninjaw_state::pancontrol_w)); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(ninjaw_state::sound_bankswitch_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/nitedrvr.cpp b/src/mame/drivers/nitedrvr.cpp
index 42b6191761a..300859ed9c2 100644
--- a/src/mame/drivers/nitedrvr.cpp
+++ b/src/mame/drivers/nitedrvr.cpp
@@ -48,20 +48,21 @@
/* Memory Map */
-ADDRESS_MAP_START(nitedrvr_state::nitedrvr_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100) // SCRAM
- AM_RANGE(0x0200, 0x027f) AM_READNOP AM_WRITE(nitedrvr_videoram_w) AM_MIRROR(0x180) AM_SHARE("videoram") // PFW
- AM_RANGE(0x0400, 0x042f) AM_READNOP AM_WRITEONLY AM_MIRROR(0x1c0) AM_SHARE("hvc") // POSH, POSV, CHAR
- AM_RANGE(0x0430, 0x043f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_MIRROR(0x1c0)
- AM_RANGE(0x0600, 0x07ff) AM_READ(nitedrvr_in0_r)
- AM_RANGE(0x0800, 0x09ff) AM_READ(nitedrvr_in1_r)
- AM_RANGE(0x0a00, 0x0bff) AM_WRITE(nitedrvr_out0_w)
- AM_RANGE(0x0c00, 0x0dff) AM_WRITE(nitedrvr_out1_w)
- AM_RANGE(0x8000, 0x807f) AM_READONLY AM_MIRROR(0x380) AM_SHARE("videoram") // PFR
- AM_RANGE(0x8400, 0x87ff) AM_READWRITE(nitedrvr_steering_reset_r, nitedrvr_steering_reset_w)
- AM_RANGE(0x9000, 0x9fff) AM_ROM // ROM1-ROM2
- AM_RANGE(0xfff0, 0xffff) AM_ROM // ROM2 for 6502 vectors
-ADDRESS_MAP_END
+void nitedrvr_state::nitedrvr_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().mirror(0x100); // SCRAM
+ map(0x0200, 0x027f).nopr().w(this, FUNC(nitedrvr_state::nitedrvr_videoram_w)).mirror(0x180).share("videoram"); // PFW
+ map(0x0400, 0x042f).nopr().writeonly().mirror(0x1c0).share("hvc"); // POSH, POSV, CHAR
+ map(0x0430, 0x043f).w("watchdog", FUNC(watchdog_timer_device::reset_w)).mirror(0x1c0);
+ map(0x0600, 0x07ff).r(this, FUNC(nitedrvr_state::nitedrvr_in0_r));
+ map(0x0800, 0x09ff).r(this, FUNC(nitedrvr_state::nitedrvr_in1_r));
+ map(0x0a00, 0x0bff).w(this, FUNC(nitedrvr_state::nitedrvr_out0_w));
+ map(0x0c00, 0x0dff).w(this, FUNC(nitedrvr_state::nitedrvr_out1_w));
+ map(0x8000, 0x807f).readonly().mirror(0x380).share("videoram"); // PFR
+ map(0x8400, 0x87ff).rw(this, FUNC(nitedrvr_state::nitedrvr_steering_reset_r), FUNC(nitedrvr_state::nitedrvr_steering_reset_w));
+ map(0x9000, 0x9fff).rom(); // ROM1-ROM2
+ map(0xfff0, 0xffff).rom(); // ROM2 for 6502 vectors
+}
/* Input Ports */
diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp
index f1fdde217a9..e93f22ce272 100644
--- a/src/mame/drivers/niyanpai.cpp
+++ b/src/mame/drivers/niyanpai.cpp
@@ -123,157 +123,161 @@ WRITE16_MEMBER(niyanpai_state::musobana_inputport_w)
m_musobana_inputport = data;
}
-ADDRESS_MAP_START(niyanpai_state::niyanpai_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram")
-
- AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w)
- AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
-
- AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
-
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00)
-
- AM_RANGE(0x200200, 0x200201) AM_WRITENOP // unknown
- AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
- AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
-
- AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
- AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
- AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
- AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
- AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
- AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
- AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
- AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
- AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
- AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
-
- AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2")
- AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
- AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
- AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
-
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void niyanpai_state::niyanpai_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x040fff).ram().share("nvram");
+
+ map(0x0a0000, 0x0a08ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w));
+ map(0x0a0900, 0x0a11ff).ram(); // palette work ram?
+
+ map(0x0bf800, 0x0bffff).ram();
+
+ map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w));
+
+ map(0x200200, 0x200201).nopw(); // unknown
+ map(0x240000, 0x240009).nopw(); // unknown
+ map(0x240200, 0x2403ff).nopw(); // unknown
+
+ map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff);
+ map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff);
+ map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff);
+ map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff);
+ map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff);
+ map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff);
+ map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff);
+ map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff);
+ map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff);
+ map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r));
+
+ map(0x280200, 0x280201).portr("P1_P2");
+ map(0x280400, 0x280401).portr("SYSTEM");
+ map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w));
+ map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w));
+ map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w));
+
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
-ADDRESS_MAP_START(niyanpai_state::musobana_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM
+void niyanpai_state::musobana_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x040fff).ram();
- AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w)
- AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
+ map(0x0a0000, 0x0a08ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w));
+ map(0x0a0900, 0x0a11ff).ram(); // palette work ram?
- AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
+ map(0x0a8000, 0x0a87ff).ram().share("nvram");
+ map(0x0bf800, 0x0bffff).ram();
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00)
+ map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w));
- AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select
- AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
- AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
+ map(0x200200, 0x200201).w(this, FUNC(niyanpai_state::musobana_inputport_w)); // inputport select
+ map(0x240000, 0x240009).nopw(); // unknown
+ map(0x240200, 0x2403ff).nopw(); // unknown
- AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
- AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
- AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
+ map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff);
+ map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff);
+ map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff);
- AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
- AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
- AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
+ map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff);
+ map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff);
+ map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff);
- AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
- AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
- AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
- AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
- AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
- AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
+ map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff);
+ map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff);
+ map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff);
+ map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w));
+ map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w));
+ map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w));
- AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
- AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
- AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
+ map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r));
+ map(0x280200, 0x280201).r(this, FUNC(niyanpai_state::musobana_inputport_0_r));
+ map(0x280400, 0x280401).portr("SYSTEM");
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
-ADDRESS_MAP_START(niyanpai_state::mhhonban_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040fff) AM_RAM
+void niyanpai_state::mhhonban_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x040fff).ram();
- AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(palette_r,palette_w)
- AM_RANGE(0x060900, 0x0611ff) AM_RAM // palette work ram?
- AM_RANGE(0x07f800, 0x07ffff) AM_RAM
+ map(0x060000, 0x0608ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w));
+ map(0x060900, 0x0611ff).ram(); // palette work ram?
+ map(0x07f800, 0x07ffff).ram();
- AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0bf000, 0x0bffff) AM_RAM
+ map(0x0a8000, 0x0a87ff).ram().share("nvram");
+ map(0x0bf000, 0x0bffff).ram();
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00)
+ map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w));
- AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select
- AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
- AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
+ map(0x200200, 0x200201).w(this, FUNC(niyanpai_state::musobana_inputport_w)); // inputport select
+ map(0x240000, 0x240009).nopw(); // unknown
+ map(0x240200, 0x2403ff).nopw(); // unknown
- AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
- AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
- AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
+ map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff);
+ map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff);
+ map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff);
- AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
- AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
- AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
+ map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff);
+ map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff);
+ map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff);
- AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
- AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
- AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
+ map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff);
+ map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff);
+ map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff);
- AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
- AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
- AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
+ map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w));
+ map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w));
+ map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w));
- AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
- AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
- AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
+ map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r));
+ map(0x280200, 0x280201).r(this, FUNC(niyanpai_state::musobana_inputport_0_r));
+ map(0x280400, 0x280401).portr("SYSTEM");
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
-ADDRESS_MAP_START(niyanpai_state::zokumahj_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM
+void niyanpai_state::zokumahj_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0ff000, 0x0fffff).ram();
- AM_RANGE(0x0e0000, 0x0e08ff) AM_READWRITE(palette_r,palette_w)
- AM_RANGE(0x0e0900, 0x0e11ff) AM_RAM // palette work ram?
+ map(0x0e0000, 0x0e08ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w));
+ map(0x0e0900, 0x0e11ff).ram(); // palette work ram?
- AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM
+ map(0x0a8000, 0x0a87ff).ram().share("nvram");
+ map(0x0c0000, 0x0cffff).ram();
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00)
+ map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w));
- AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select
- AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
- AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
+ map(0x200200, 0x200201).w(this, FUNC(niyanpai_state::musobana_inputport_w)); // inputport select
+ map(0x240000, 0x240009).nopw(); // unknown
+ map(0x240200, 0x2403ff).nopw(); // unknown
- AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
- AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
- AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
+ map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff);
+ map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff);
+ map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff);
- AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
- AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
- AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
+ map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff);
+ map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff);
+ map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff);
- AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
- AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
- AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
+ map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff);
+ map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff);
+ map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff);
- AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
- AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
- AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
+ map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w));
+ map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w));
+ map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w));
- AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
- AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
- AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
+ map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r));
+ map(0x280200, 0x280201).r(this, FUNC(niyanpai_state::musobana_inputport_0_r));
+ map(0x280400, 0x280401).portr("SYSTEM");
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
static INPUT_PORTS_START( niyanpai )
diff --git a/src/mame/drivers/nmg5.cpp b/src/mame/drivers/nmg5.cpp
index f8879011d23..ac5d0eed4bf 100644
--- a/src/mame/drivers/nmg5.cpp
+++ b/src/mame/drivers/nmg5.cpp
@@ -367,44 +367,46 @@ WRITE8_MEMBER(nmg5_state::oki_banking_w)
********************************************************************/
-ADDRESS_MAP_START(nmg5_state::nmg5_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x120000, 0x12ffff) AM_RAM
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x180000, 0x180001) AM_WRITE(nmg5_soundlatch_w)
- AM_RANGE(0x180002, 0x180003) AM_WRITENOP
- AM_RANGE(0x180004, 0x180005) AM_READWRITE(prot_r, prot_w)
- AM_RANGE(0x180006, 0x180007) AM_WRITE(gfx_bank_w)
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW")
- AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("INPUTS")
- AM_RANGE(0x18000e, 0x18000f) AM_WRITE(priority_reg_w)
- AM_RANGE(0x300002, 0x300009) AM_WRITEONLY AM_SHARE("scroll_ram")
- AM_RANGE(0x30000a, 0x30000f) AM_WRITENOP
- AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("bitmap")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmg5_state::pclubys_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x440000, 0x4407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x460000, 0x4607ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x480000, 0x480001) AM_WRITE(nmg5_soundlatch_w)
- AM_RANGE(0x480002, 0x480003) AM_WRITENOP
- AM_RANGE(0x480004, 0x480005) AM_READWRITE(prot_r, prot_w)
- AM_RANGE(0x480006, 0x480007) AM_WRITE(gfx_bank_w)
- AM_RANGE(0x480008, 0x480009) AM_READ_PORT("DSW")
- AM_RANGE(0x48000a, 0x48000b) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x48000c, 0x48000d) AM_READ_PORT("INPUTS")
- AM_RANGE(0x48000e, 0x48000f) AM_WRITE(priority_reg_w)
- AM_RANGE(0x500002, 0x500009) AM_WRITEONLY AM_SHARE("scroll_ram")
- AM_RANGE(0x520000, 0x521fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x522000, 0x523fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("bitmap")
-ADDRESS_MAP_END
+void nmg5_state::nmg5_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x120000, 0x12ffff).ram();
+ map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x1607ff).ram().share("spriteram");
+ map(0x180000, 0x180001).w(this, FUNC(nmg5_state::nmg5_soundlatch_w));
+ map(0x180002, 0x180003).nopw();
+ map(0x180004, 0x180005).rw(this, FUNC(nmg5_state::prot_r), FUNC(nmg5_state::prot_w));
+ map(0x180006, 0x180007).w(this, FUNC(nmg5_state::gfx_bank_w));
+ map(0x180008, 0x180009).portr("DSW");
+ map(0x18000a, 0x18000b).portr("SYSTEM");
+ map(0x18000c, 0x18000d).portr("INPUTS");
+ map(0x18000e, 0x18000f).w(this, FUNC(nmg5_state::priority_reg_w));
+ map(0x300002, 0x300009).writeonly().share("scroll_ram");
+ map(0x30000a, 0x30000f).nopw();
+ map(0x320000, 0x321fff).ram().w(this, FUNC(nmg5_state::bg_videoram_w)).share("bg_videoram");
+ map(0x322000, 0x323fff).ram().w(this, FUNC(nmg5_state::fg_videoram_w)).share("fg_videoram");
+ map(0x800000, 0x80ffff).ram().share("bitmap");
+}
+
+void nmg5_state::pclubys_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x440000, 0x4407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x460000, 0x4607ff).ram().share("spriteram");
+ map(0x480000, 0x480001).w(this, FUNC(nmg5_state::nmg5_soundlatch_w));
+ map(0x480002, 0x480003).nopw();
+ map(0x480004, 0x480005).rw(this, FUNC(nmg5_state::prot_r), FUNC(nmg5_state::prot_w));
+ map(0x480006, 0x480007).w(this, FUNC(nmg5_state::gfx_bank_w));
+ map(0x480008, 0x480009).portr("DSW");
+ map(0x48000a, 0x48000b).portr("SYSTEM");
+ map(0x48000c, 0x48000d).portr("INPUTS");
+ map(0x48000e, 0x48000f).w(this, FUNC(nmg5_state::priority_reg_w));
+ map(0x500002, 0x500009).writeonly().share("scroll_ram");
+ map(0x520000, 0x521fff).ram().w(this, FUNC(nmg5_state::bg_videoram_w)).share("bg_videoram");
+ map(0x522000, 0x523fff).ram().w(this, FUNC(nmg5_state::fg_videoram_w)).share("fg_videoram");
+ map(0x800000, 0x80ffff).ram().share("bitmap");
+}
/*******************************************************************
@@ -412,23 +414,26 @@ ADDRESS_MAP_END
********************************************************************/
-ADDRESS_MAP_START(nmg5_state::nmg5_sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmg5_state::pclubys_sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmg5_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(oki_banking_w)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x18, 0x18) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+void nmg5_state::nmg5_sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram();
+}
+
+void nmg5_state::pclubys_sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void nmg5_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(nmg5_state::oki_banking_w));
+ map(0x10, 0x11).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x18, 0x18).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1c, 0x1c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
static INPUT_PORTS_START( nmg5 )
PORT_START("DSW")
diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp
index 67168813772..394c55627c2 100644
--- a/src/mame/drivers/nmk16.cpp
+++ b/src/mame/drivers/nmk16.cpp
@@ -320,187 +320,199 @@ WRITE16_MEMBER(nmk16_state::nmk_txvideoram_w)
/***************************************************************************/
-ADDRESS_MAP_START(nmk16_state::vandyke_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c007) AM_WRITE(vandyke_scroll_w)
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
- AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::vandykeb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
-// AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x080010, 0x08001d) AM_WRITE(vandykeb_scroll_w) /* 10, 12, 1a, 1c */
- AM_RANGE(0x080016, 0x080017) AM_WRITENOP /* IRQ enable? */
- AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
-// AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c007) AM_WRITENOP /* just in case... */
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
- AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::manybloc_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
- AM_RANGE(0x080010, 0x080011) AM_WRITENOP /* See notes at the top of the driver */
- AM_RANGE(0x080012, 0x080013) AM_WRITENOP /* See notes at the top of the driver */
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x08001c, 0x08001d) AM_WRITENOP /* See notes at the top of the driver */
- AM_RANGE(0x08001e, 0x08001f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(manybloc_scroll_w) AM_SHARE("scrollram")
- AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::tharrier_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ(tharrier_mcu_r) // AM_READ_PORT("IN1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */
- AM_RANGE(0x080010, 0x080011) AM_WRITE(tharrier_mcu_control_w)
- AM_RANGE(0x080012, 0x080013) AM_WRITENOP
-// AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
-// AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2")
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-// AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM /* Unused txvideoram area? */
- AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::tharrier_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xf400, 0xf400) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xf500, 0xf500) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0xf600, 0xf600) AM_WRITE(tharrier_oki6295_bankswitch_w<0>)
- AM_RANGE(0xf700, 0xf700) AM_WRITE(tharrier_oki6295_bankswitch_w<1>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::tharrier_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void nmk16_state::vandyke_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+ map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c007).w(this, FUNC(nmk16_state::vandyke_scroll_w));
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x094000, 0x097fff).ram(); /* what is this? */
+ map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+}
+
+void nmk16_state::vandykeb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+// map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x080010, 0x08001d).w(this, FUNC(nmk16_state::vandykeb_scroll_w)); /* 10, 12, 1a, 1c */
+ map(0x080016, 0x080017).nopw(); /* IRQ enable? */
+ map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+// map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c007).nopw(); /* just in case... */
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x094000, 0x097fff).ram(); /* what is this? */
+ map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+}
+
+void nmk16_state::manybloc_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080004, 0x080005).portr("DSW1");
+ map(0x080010, 0x080011).nopw(); /* See notes at the top of the driver */
+ map(0x080012, 0x080013).nopw(); /* See notes at the top of the driver */
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x08001c, 0x08001d).nopw(); /* See notes at the top of the driver */
+ map(0x08001f, 0x08001f).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09cfff).ram().w(this, FUNC(nmk16_state::manybloc_scroll_w)).share("scrollram");
+ map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+}
+
+void nmk16_state::tharrier_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).r(this, FUNC(nmk16_state::tharrier_mcu_r)); // AM_READ_PORT("IN1")
+ map(0x080004, 0x080005).portr("DSW1");
+ map(0x08000f, 0x08000f).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */
+ map(0x080010, 0x080011).w(this, FUNC(nmk16_state::tharrier_mcu_control_w));
+ map(0x080012, 0x080013).nopw();
+// map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+// map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x080202, 0x080203).portr("IN2");
+ map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+// map(0x08c000, 0x08c007).w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram(); /* Unused txvideoram area? */
+ map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
+
+void nmk16_state::tharrier_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xf000, 0xf000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0xf400, 0xf400).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf500, 0xf500).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf600, 0xf600).w(this, FUNC(nmk16_state::tharrier_oki6295_bankswitch_w<0>));
+ map(0xf700, 0xf700).w(this, FUNC(nmk16_state::tharrier_oki6295_bankswitch_w<1>));
+}
+
+void nmk16_state::tharrier_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
//Read input port 1 030c8/ BAD
//3478 GOOD
-ADDRESS_MAP_START(nmk16_state::mustang_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) AM_WRITENOP
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w) // frame number?
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
- AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::mustangb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000e, 0x08000f) AM_NOP
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number?
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
- AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nmk16_state::twinactn_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000e, 0x08000f) AM_NOP
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number?
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
- AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nmk16_state::acrobatm_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x80000, 0x8ffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xc0000, 0xc0001) AM_READ_PORT("IN0")
- AM_RANGE(0xc0002, 0xc0003) AM_READ_PORT("IN1")
- AM_RANGE(0xc0008, 0xc0009) AM_READ_PORT("DSW1")
- AM_RANGE(0xc000a, 0xc000b) AM_READ_PORT("DSW2")
- AM_RANGE(0xc000e, 0xc000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0xc0014, 0xc0015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0xc0016, 0xc0017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0xc0018, 0xc0019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0xc001e, 0xc001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0xc4000, 0xc45ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc8000, 0xc8007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0xd4000, 0xd47ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::bioship_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
-// AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_bioship_x0016_w)
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x084000, 0x084001) AM_WRITE(bioship_bank_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(bioshipbg_scroll_w)
- AM_RANGE(0x08c010, 0x08c017) AM_RAM_WRITE(bioship_scroll_w)
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+void nmk16_state::mustang_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080004, 0x080005).portr("DSW1");
+ map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x08000e, 0x08000f).nopw();
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); // frame number?
+ map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c001).w(this, FUNC(nmk16_state::mustang_scroll_w));
+ map(0x08c002, 0x08c087).nopw(); // ??
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
+
+void nmk16_state::mustangb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080004, 0x080005).portr("DSW1");
+ map(0x08000e, 0x08000f).noprw();
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).nopw(); // frame number?
+ map(0x08001e, 0x08001f).w("seibu_sound", FUNC(seibu_sound_device::main_mustb_w));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c001).w(this, FUNC(nmk16_state::mustang_scroll_w));
+ map(0x08c002, 0x08c087).nopw(); // ??
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
+
+
+void nmk16_state::twinactn_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080004, 0x080005).portr("DSW1");
+ map(0x08000e, 0x08000f).noprw();
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).nopw(); // frame number?
+ map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c001).w(this, FUNC(nmk16_state::mustang_scroll_w));
+ map(0x08c002, 0x08c087).nopw(); // ??
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
+
+
+void nmk16_state::acrobatm_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x80000, 0x8ffff).ram().share("mainram");
+ map(0xc0000, 0xc0001).portr("IN0");
+ map(0xc0002, 0xc0003).portr("IN1");
+ map(0xc0008, 0xc0009).portr("DSW1");
+ map(0xc000a, 0xc000b).portr("DSW2");
+ map(0xc000f, 0xc000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0xc0014, 0xc0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0xc0016, 0xc0017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0xc0018, 0xc0019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0xc001f, 0xc001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0xc4000, 0xc45ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xc8000, 0xc8007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0xcc000, 0xcffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0xd4000, 0xd47ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+}
+
+void nmk16_state::bioship_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+ map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+// map(0xc0014, 0xc0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_bioship_x0016_w));
+ map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x084000, 0x084001).w(this, FUNC(nmk16_state::bioship_bank_w));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c007).ram().w(this, FUNC(nmk16_state::bioshipbg_scroll_w));
+ map(0x08c010, 0x08c017).ram().w(this, FUNC(nmk16_state::bioship_scroll_w));
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+}
/******************************************************************************************
@@ -661,26 +673,27 @@ WRITE16_MEMBER(nmk16_state::hachamf_mainram_w)
}
-ADDRESS_MAP_START(nmk16_state::hachamf_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void nmk16_state::hachamf_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
/* I/O Region */
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+ map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
/* Video Region */
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c007).w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
/* Main RAM, inc sprites, shared with MCU */
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") // ram is shared with MCU
-ADDRESS_MAP_END
+ map(0x0f0000, 0x0fffff).ram().share("mainram"); // ram is shared with MCU
+}
@@ -888,29 +901,30 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::hachamf_mcu_sim)
mcu_run(0);
}
-ADDRESS_MAP_START(nmk16_state::tdragon_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x044022, 0x044023) AM_READNOP /* No Idea */
+void nmk16_state::tdragon_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x044022, 0x044023).nopr(); /* No Idea */
// AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM /* Work RAM */
// AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
// AM_RANGE(0x0b9000, 0x0bdfff) AM_RAM AM_SHARE("mcu_work_ram") /* Work RAM */
// AM_RANGE(0x0be000, 0x0befff) AM_READWRITE(mcu_shared_r,tdragon_mcu_shared_w) AM_SHARE("mcu_shared_ram") /* Work RAM */
// AM_RANGE(0x0bf000, 0x0bffff) AM_RAM /* Work RAM */
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("IN1")
- AM_RANGE(0x0c0008, 0x0c0009) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c000e, 0x0c000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
- AM_RANGE(0x0c0016, 0x0c0017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
- AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
-ADDRESS_MAP_END
+ map(0x0b0000, 0x0bffff).ram().share("mainram");
+ map(0x0c0000, 0x0c0001).portr("IN0");
+ map(0x0c0002, 0x0c0003).portr("IN1");
+ map(0x0c0008, 0x0c0009).portr("DSW1");
+ map(0x0c000a, 0x0c000b).portr("DSW2");
+ map(0x0c000f, 0x0c000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x0c0014, 0x0c0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); /* Maybe */
+ map(0x0c0016, 0x0c0017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0x0c0018, 0x0c0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); /* Tile Bank ? */
+ map(0x0c001f, 0x0c001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x0c4000, 0x0c4007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x0c8000, 0x0c87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0cc000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x0d0000, 0x0d07ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+}
// No sprites without this. Is it actually protection?
READ16_MEMBER(nmk16_state::tdragonb_prot_r)
@@ -918,218 +932,233 @@ READ16_MEMBER(nmk16_state::tdragonb_prot_r)
return 0x0003;
}
-ADDRESS_MAP_START(nmk16_state::tdragonb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x044022, 0x044023) AM_READ(tdragonb_prot_r)
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("IN1")
- AM_RANGE(0x0c0008, 0x0c0009) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
- AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
- AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w)
- AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::ssmissin_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("IN1")
- AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("DSW1")
+void nmk16_state::tdragonb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x044022, 0x044023).r(this, FUNC(nmk16_state::tdragonb_prot_r));
+ map(0x0b0000, 0x0bffff).ram().share("mainram");
+ map(0x0c0000, 0x0c0001).portr("IN0");
+ map(0x0c0002, 0x0c0003).portr("IN1");
+ map(0x0c0008, 0x0c0009).portr("DSW1");
+ map(0x0c000a, 0x0c000b).portr("DSW2");
+ map(0x0c0014, 0x0c0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); /* Maybe */
+ map(0x0c0018, 0x0c0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); /* Tile Bank ? */
+ map(0x0c001e, 0x0c001f).w("seibu_sound", FUNC(seibu_sound_device::main_mustb_w));
+ map(0x0c4000, 0x0c4007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x0c8000, 0x0c87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0cc000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x0d0000, 0x0d07ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+}
+
+void nmk16_state::ssmissin_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0b0000, 0x0bffff).ram().share("mainram");
+ map(0x0c0000, 0x0c0001).portr("IN0");
+ map(0x0c0004, 0x0c0005).portr("IN1");
+ map(0x0c0006, 0x0c0007).portr("DSW1");
// AM_RANGE(0x0c000e, 0x0c000f) AM_READ(??)
- AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
- AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
- AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_MIRROR(0x1800) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") //mirror for airattck
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::ssmissin_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(ssmissin_soundbank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::oki1_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::oki2_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::strahl_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x80000, 0x80001) AM_READ_PORT("IN0")
- AM_RANGE(0x80002, 0x80003) AM_READ_PORT("IN1")
- AM_RANGE(0x80008, 0x80009) AM_READ_PORT("DSW1")
- AM_RANGE(0x8000a, 0x8000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x8000e, 0x8000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x80014, 0x80015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x80016, 0x80017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0x8001e, 0x8001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x84000, 0x84007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x88000, 0x88007) AM_RAM_WRITE(nmk_scroll_2_w)
- AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x94000, 0x97fff) AM_RAM_WRITE(nmk_fgvideoram_w) AM_SHARE("nmk_fgvideoram")
- AM_RANGE(0x9c000, 0x9c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0xf0000, 0xfffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::macross_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::gunnail_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff)
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w)
- AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08c000, 0x08c1ff) AM_WRITEONLY AM_SHARE("scrollram")
- AM_RANGE(0x08c200, 0x08c3ff) AM_WRITEONLY AM_SHARE("scrollramy")
- AM_RANGE(0x08c400, 0x08c7ff) AM_WRITEONLY // unknown
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x001000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::macross2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
- AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x10000e, 0x10000f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */
- AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x100016, 0x100017) AM_WRITE(macross2_sound_reset_w) /* Z80 reset */
- AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) /* to Z80 */
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-
- AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy")
- AM_RANGE(0x130400, 0x1307ff) AM_RAM
-
- AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram_w<1>) AM_SHARE("nmk_bgvideoram1")
- AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram_w<2>) AM_SHARE("nmk_bgvideoram2")
- AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w<3>) AM_SHARE("nmk_bgvideoram3")
-
- AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::tdragon3h_map) // bootleg has these 2 swapped
- AM_IMPORT_FROM(macross2_map)
- AM_RANGE(0x10000e, 0x10000f) AM_READ_PORT("DSW2")
- AM_RANGE(0x10000a, 0x10000b) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::raphero_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
- AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x10000e, 0x10000f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */
- AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable or z80 sound reset like in Macross 2? */
- AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) /* to Z80 */
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-
- AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy")
- AM_RANGE(0x130400, 0x1307ff) AM_RAM
-
- AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram_w<1>) AM_SHARE("nmk_bgvideoram1")
- AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram_w<2>) AM_SHARE("nmk_bgvideoram2")
- AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w<3>) AM_SHARE("nmk_bgvideoram3")
-
-
- AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::raphero_sound_mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank")
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xc800, 0xc800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xc808, 0xc808) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0xc810, 0xc817) AM_DEVWRITE("nmk112", nmk112_device, okibank_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(macross2_sound_bank_w)
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // main cpu
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::macross2_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") /* banked ROM */
- AM_RANGE(0xa000, 0xa000) AM_READNOP /* IRQ ack? watchdog? */
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe001, 0xe001) AM_WRITE(macross2_sound_bank_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* from 68000 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::macross2_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::bjtwin_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
- AM_RANGE(0x084000, 0x084001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x084010, 0x084011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x084020, 0x08402f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x094000, 0x094001) AM_WRITE(nmk_tilebank_w)
- AM_RANGE(0x094002, 0x094003) AM_WRITENOP /* IRQ enable? */
- AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+ map(0x0c0014, 0x0c0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); /* Maybe */
+ map(0x0c0018, 0x0c0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); /* Tile Bank ? */
+ map(0x0c001f, 0x0c001f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0c4000, 0x0c4007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x0c8000, 0x0c87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0cc000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x0d0000, 0x0d07ff).mirror(0x1800).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); //mirror for airattck
+}
+
+void nmk16_state::ssmissin_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(nmk16_state::ssmissin_soundbank_w));
+ map(0x9800, 0x9800).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void nmk16_state::oki1_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank1");
+}
+
+void nmk16_state::oki2_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank2");
+}
+
+void nmk16_state::strahl_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x80000, 0x80001).portr("IN0");
+ map(0x80002, 0x80003).portr("IN1");
+ map(0x80008, 0x80009).portr("DSW1");
+ map(0x8000a, 0x8000b).portr("DSW2");
+ map(0x8000f, 0x8000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x80014, 0x80015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x80016, 0x80017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0x8001f, 0x8001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x84000, 0x84007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x88000, 0x88007).ram().w(this, FUNC(nmk16_state::nmk_scroll_2_w));
+ map(0x8c000, 0x8c7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x90000, 0x93fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x94000, 0x97fff).ram().w(this, FUNC(nmk16_state::nmk_fgvideoram_w)).share("nmk_fgvideoram");
+ map(0x9c000, 0x9c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0xf0000, 0xfffff).ram().share("mainram");
+}
+
+void nmk16_state::macross_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+ map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w));
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
+
+void nmk16_state::gunnail_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+ map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read));
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w));
+ map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c1ff).writeonly().share("scrollram");
+ map(0x08c200, 0x08c3ff).writeonly().share("scrollramy");
+ map(0x08c400, 0x08c7ff).writeonly(); // unknown
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x09c000, 0x09cfff).mirror(0x001000).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+}
+
+void nmk16_state::macross2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).portr("IN0");
+ map(0x100002, 0x100003).portr("IN1");
+ map(0x100008, 0x100009).portr("DSW1");
+ map(0x10000a, 0x10000b).portr("DSW2");
+ map(0x10000f, 0x10000f).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */
+ map(0x100014, 0x100015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x100016, 0x100017).w(this, FUNC(nmk16_state::macross2_sound_reset_w)); /* Z80 reset */
+ map(0x100018, 0x100019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x10001f, 0x10001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* to Z80 */
+ map(0x120000, 0x1207ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+
+ map(0x130000, 0x1301ff).ram().share("scrollram");
+ map(0x130200, 0x1303ff).ram().share("scrollramy");
+ map(0x130400, 0x1307ff).ram();
+
+ map(0x140000, 0x143fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x144000, 0x147fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<1>)).share("nmk_bgvideoram1");
+ map(0x148000, 0x14bfff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<2>)).share("nmk_bgvideoram2");
+ map(0x14c000, 0x14ffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<3>)).share("nmk_bgvideoram3");
+
+ map(0x170000, 0x170fff).mirror(0x1000).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x1f0000, 0x1fffff).ram().share("mainram");
+}
+
+void nmk16_state::tdragon3h_map(address_map &map)
+{ // bootleg has these 2 swapped
+ macross2_map(map);
+ map(0x10000e, 0x10000f).portr("DSW2");
+ map(0x10000b, 0x10000b).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */
+}
+
+void nmk16_state::raphero_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).portr("IN0");
+ map(0x100002, 0x100003).portr("IN1");
+ map(0x100008, 0x100009).portr("DSW1");
+ map(0x10000a, 0x10000b).portr("DSW2");
+ map(0x10000f, 0x10000f).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */
+ map(0x100014, 0x100015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x100016, 0x100017).nopw(); /* IRQ enable or z80 sound reset like in Macross 2? */
+ map(0x100018, 0x100019).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x10001f, 0x10001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* to Z80 */
+ map(0x120000, 0x1207ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+
+ map(0x130000, 0x1301ff).ram().share("scrollram");
+ map(0x130200, 0x1303ff).ram().share("scrollramy");
+ map(0x130400, 0x1307ff).ram();
+
+ map(0x140000, 0x143fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x144000, 0x147fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<1>)).share("nmk_bgvideoram1");
+ map(0x148000, 0x14bfff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<2>)).share("nmk_bgvideoram2");
+ map(0x14c000, 0x14ffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<3>)).share("nmk_bgvideoram3");
+
+
+ map(0x170000, 0x170fff).mirror(0x1000).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram");
+ map(0x1f0000, 0x1fffff).ram().share("mainram");
+}
+
+void nmk16_state::raphero_sound_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("audiobank");
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc800, 0xc800).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc808, 0xc808).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc810, 0xc817).w("nmk112", FUNC(nmk112_device::okibank_w));
+ map(0xd000, 0xd000).w(this, FUNC(nmk16_state::macross2_sound_bank_w));
+ map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // main cpu
+ map(0xe000, 0xffff).ram();
+}
+
+void nmk16_state::macross2_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("audiobank"); /* banked ROM */
+ map(0xa000, 0xa000).nopr(); /* IRQ ack? watchdog? */
+ map(0xc000, 0xdfff).ram();
+ map(0xe001, 0xe001).w(this, FUNC(nmk16_state::macross2_sound_bank_w));
+ map(0xf000, 0xf000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* from 68000 */
+}
+
+void nmk16_state::macross2_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x80).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x88, 0x88).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w));
+}
+
+void nmk16_state::bjtwin_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080008, 0x080009).portr("DSW1");
+ map(0x08000a, 0x08000b).portr("DSW2");
+ map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w));
+ map(0x084001, 0x084001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x084011, 0x084011).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x084020, 0x08402f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff);
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x094000, 0x094001).w(this, FUNC(nmk16_state::nmk_tilebank_w));
+ map(0x094002, 0x094003).nopw(); /* IRQ enable? */
+ map(0x09c000, 0x09cfff).mirror(0x1000).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0");
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+}
static INPUT_PORTS_START( vandyke )
PORT_START("IN0")
@@ -4936,54 +4965,56 @@ WRITE16_MEMBER(nmk16_state::afega_scroll_w)
*/
-ADDRESS_MAP_START(nmk16_state::afega_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") // Buttons
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") // P1 + P2
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") // 2 x DSW
- AM_RANGE(0x080012, 0x080013) AM_READ(afega_unknown_r)
- AM_RANGE(0x080000, 0x08001d) AM_WRITEONLY //
- AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sound CPU
- AM_RANGE(0x080020, 0x087fff) AM_WRITEONLY //
- AM_RANGE(0x084000, 0x084003) AM_RAM_WRITE(afega_scroll_w<0>) // Scroll on redhawkb (mirror or changed?..)
- AM_RANGE(0x084004, 0x084007) AM_RAM_WRITE(afega_scroll_w<1>) // Scroll on redhawkb (mirror or changed?..)
- AM_RANGE(0x088000, 0x0885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x088600, 0x08bfff) AM_WRITEONLY //
- AM_RANGE(0x08c000, 0x08c003) AM_RAM_WRITE(afega_scroll_w<0>) AM_SHARE("afega_scroll_0") // Scroll
- AM_RANGE(0x08c004, 0x08c007) AM_RAM_WRITE(afega_scroll_w<1>) AM_SHARE("afega_scroll_1") //
- AM_RANGE(0x08c008, 0x08ffff) AM_WRITEONLY //
- AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ?
- AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1
-
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
+void nmk16_state::afega_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).portr("IN0"); // Buttons
+ map(0x080002, 0x080003).portr("IN1"); // P1 + P2
+ map(0x080004, 0x080005).portr("DSW1"); // 2 x DSW
+ map(0x080012, 0x080013).r(this, FUNC(nmk16_state::afega_unknown_r));
+ map(0x080000, 0x08001d).writeonly(); //
+ map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0x080020, 0x087fff).writeonly(); //
+ map(0x084000, 0x084003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)); // Scroll on redhawkb (mirror or changed?..)
+ map(0x084004, 0x084007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)); // Scroll on redhawkb (mirror or changed?..)
+ map(0x088000, 0x0885ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x088600, 0x08bfff).writeonly(); //
+ map(0x08c000, 0x08c003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)).share("afega_scroll_0"); // Scroll
+ map(0x08c004, 0x08c007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)).share("afega_scroll_1"); //
+ map(0x08c008, 0x08ffff).writeonly(); //
+ map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); // Layer 0 // ?
+ map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); // Layer 1
+
+ map(0x0c0000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
// firehawk has 0x100000 bytes of program rom (at least the switchable version) so the above can't work.
-ADDRESS_MAP_START(nmk16_state::firehawk_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Buttons
- AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // P1 + P2
- AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW1") // 2 x DSW
- AM_RANGE(0x280012, 0x280013) AM_READ(afega_unknown_r)
- AM_RANGE(0x280000, 0x28001d) AM_WRITEONLY //
- AM_RANGE(0x28001e, 0x28001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sound CPU
- AM_RANGE(0x280020, 0x287fff) AM_WRITEONLY //
- AM_RANGE(0x284000, 0x284003) AM_RAM_WRITE(afega_scroll_w<0>) // Scroll on redhawkb (mirror or changed?..)
- AM_RANGE(0x284004, 0x284007) AM_RAM_WRITE(afega_scroll_w<1>) // Scroll on redhawkb (mirror or changed?..)
- AM_RANGE(0x288000, 0x2885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x288600, 0x28bfff) AM_WRITEONLY //
- AM_RANGE(0x28c000, 0x28c003) AM_RAM_WRITE(afega_scroll_w<0>) AM_SHARE("afega_scroll_0") // Scroll
- AM_RANGE(0x28c004, 0x28c007) AM_RAM_WRITE(afega_scroll_w<1>) AM_SHARE("afega_scroll_1") //
- AM_RANGE(0x28c008, 0x28ffff) AM_WRITEONLY //
- AM_RANGE(0x290000, 0x293fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ?
- AM_RANGE(0x29c000, 0x29c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1
-
- AM_RANGE(0x3c0000, 0x3cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
- AM_RANGE(0x3f0000, 0x3fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
-ADDRESS_MAP_END
+void nmk16_state::firehawk_map(address_map &map)
+{
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x0fffff).rom();
+ map(0x280000, 0x280001).portr("IN0"); // Buttons
+ map(0x280002, 0x280003).portr("IN1"); // P1 + P2
+ map(0x280004, 0x280005).portr("DSW1"); // 2 x DSW
+ map(0x280012, 0x280013).r(this, FUNC(nmk16_state::afega_unknown_r));
+ map(0x280000, 0x28001d).writeonly(); //
+ map(0x28001f, 0x28001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0x280020, 0x287fff).writeonly(); //
+ map(0x284000, 0x284003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)); // Scroll on redhawkb (mirror or changed?..)
+ map(0x284004, 0x284007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)); // Scroll on redhawkb (mirror or changed?..)
+ map(0x288000, 0x2885ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x288600, 0x28bfff).writeonly(); //
+ map(0x28c000, 0x28c003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)).share("afega_scroll_0"); // Scroll
+ map(0x28c004, 0x28c007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)).share("afega_scroll_1"); //
+ map(0x28c008, 0x28ffff).writeonly(); //
+ map(0x290000, 0x293fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); // Layer 0 // ?
+ map(0x29c000, 0x29c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); // Layer 1
+
+ map(0x3c0000, 0x3cffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+ map(0x3f0000, 0x3fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram");
+}
/***************************************************************************
@@ -5001,25 +5032,27 @@ WRITE8_MEMBER(nmk16_state::spec2k_oki1_banking_w)
m_oki2->set_rom_bank(1);
}
-ADDRESS_MAP_START(nmk16_state::afega_sound_cpu)
- AM_RANGE(0x0003, 0x0003) AM_WRITENOP // bug in sound prg?
- AM_RANGE(0x0004, 0x0004) AM_WRITENOP // bug in sound prg?
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
- AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
- AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nmk16_state::firehawk_sound_cpu)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM // not used, only tested
- AM_RANGE(0xfff0, 0xfff0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xfff2, 0xfff2) AM_WRITE(spec2k_oki1_banking_w )
- AM_RANGE(0xfff8, 0xfff8) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0xfffa, 0xfffa) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
-ADDRESS_MAP_END
+void nmk16_state::afega_sound_cpu(address_map &map)
+{
+ map(0x0003, 0x0003).nopw(); // bug in sound prg?
+ map(0x0004, 0x0004).nopw(); // bug in sound prg?
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram(); // RAM
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+ map(0xf808, 0xf809).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0xf80a, 0xf80a).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+}
+
+void nmk16_state::firehawk_sound_cpu(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram(); // not used, only tested
+ map(0xfff0, 0xfff0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xfff2, 0xfff2).w(this, FUNC(nmk16_state::spec2k_oki1_banking_w));
+ map(0xfff8, 0xfff8).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfffa, 0xfffa).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
WRITE8_MEMBER(nmk16_state::twinactn_oki_bank_w)
@@ -5032,13 +5065,14 @@ WRITE8_MEMBER(nmk16_state::twinactn_oki_bank_w)
// logerror("%04x: oki bank %02x\n", m_audiocpu->pc(), data);
}
-ADDRESS_MAP_START(nmk16_state::twinactn_sound_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(twinactn_oki_bank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void nmk16_state::twinactn_sound_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(nmk16_state::twinactn_oki_bank_w));
+ map(0x9800, 0x9800).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+}
/***************************************************************************
diff --git a/src/mame/drivers/nmkmedal.cpp b/src/mame/drivers/nmkmedal.cpp
index b0004e01e5d..af8df30be89 100644
--- a/src/mame/drivers/nmkmedal.cpp
+++ b/src/mame/drivers/nmkmedal.cpp
@@ -46,10 +46,11 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(nmkmedal_state::mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
+void nmkmedal_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0xc000, 0xc7ff).ram();
+}
static INPUT_PORTS_START( trocana )
INPUT_PORTS_END
diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp
index c31be561cb3..4887d66749a 100644
--- a/src/mame/drivers/nokia_3310.cpp
+++ b/src/mame/drivers/nokia_3310.cpp
@@ -631,19 +631,20 @@ WRITE8_MEMBER(noki3310_state::mad2_mcuif_w)
}
-ADDRESS_MAP_START(noki3310_state::noki3310_map)
- ADDRESS_MAP_GLOBAL_MASK(0x00ffffff)
- AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x80000) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // boot ROM / RAM
- AM_RANGE(0x00010000, 0x00010fff) AM_MIRROR(0x8f000) AM_READWRITE16(dsp_ram_r, dsp_ram_w, 0xffffffff) // DSP shared memory
- AM_RANGE(0x00020000, 0x000200ff) AM_MIRROR(0x8ff00) AM_READWRITE8(mad2_io_r, mad2_io_w, 0xffffffff) // IO (Primary I/O range, configures peripherals)
- AM_RANGE(0x00030000, 0x00030003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_dspif_r, mad2_dspif_w, 0xffffffff) // DSPIF (API control register)
- AM_RANGE(0x00040000, 0x00040003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_mcuif_r, mad2_mcuif_w, 0xffffffff) // MCUIF (Secondary I/O range, configures memory ranges)
- AM_RANGE(0x00100000, 0x0017ffff) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // RAMSelX
- AM_RANGE(0x00200000, 0x005fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) // ROM1SelX
- AM_RANGE(0x00600000, 0x009fffff) AM_UNMAP // ROM2SelX
- AM_RANGE(0x00a00000, 0x00dfffff) AM_UNMAP // EEPROMSelX
- AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // Reserved
-ADDRESS_MAP_END
+void noki3310_state::noki3310_map(address_map &map)
+{
+ map.global_mask(0x00ffffff);
+ map(0x00000000, 0x0000ffff).mirror(0x80000).rw(this, FUNC(noki3310_state::ram_r), FUNC(noki3310_state::ram_w)); // boot ROM / RAM
+ map(0x00010000, 0x00010fff).mirror(0x8f000).rw(this, FUNC(noki3310_state::dsp_ram_r), FUNC(noki3310_state::dsp_ram_w)); // DSP shared memory
+ map(0x00020000, 0x000200ff).mirror(0x8ff00).rw(this, FUNC(noki3310_state::mad2_io_r), FUNC(noki3310_state::mad2_io_w)); // IO (Primary I/O range, configures peripherals)
+ map(0x00030000, 0x00030003).mirror(0x8fffc).rw(this, FUNC(noki3310_state::mad2_dspif_r), FUNC(noki3310_state::mad2_dspif_w)); // DSPIF (API control register)
+ map(0x00040000, 0x00040003).mirror(0x8fffc).rw(this, FUNC(noki3310_state::mad2_mcuif_r), FUNC(noki3310_state::mad2_mcuif_w)); // MCUIF (Secondary I/O range, configures memory ranges)
+ map(0x00100000, 0x0017ffff).rw(this, FUNC(noki3310_state::ram_r), FUNC(noki3310_state::ram_w)); // RAMSelX
+ map(0x00200000, 0x005fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); // ROM1SelX
+ map(0x00600000, 0x009fffff).unmaprw(); // ROM2SelX
+ map(0x00a00000, 0x00dfffff).unmaprw(); // EEPROMSelX
+ map(0x00e00000, 0x00ffffff).unmaprw(); // Reserved
+}
INPUT_CHANGED_MEMBER( noki3310_state::key_irq )
diff --git a/src/mame/drivers/norautp.cpp b/src/mame/drivers/norautp.cpp
index ea02944a310..c2ad642bbb5 100644
--- a/src/mame/drivers/norautp.cpp
+++ b/src/mame/drivers/norautp.cpp
@@ -829,22 +829,24 @@ READ8_MEMBER(norautp_state::test2_r)
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
*/
-ADDRESS_MAP_START(norautp_state::norautp_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("nvram") /* 6116 */
-ADDRESS_MAP_END
+void norautp_state::norautp_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram().share("nvram"); /* 6116 */
+}
-ADDRESS_MAP_START(norautp_state::norautp_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa0, 0xa3) AM_MIRROR(0x1c) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x3c) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
+void norautp_state::norautp_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x60, 0x63).mirror(0x1c).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa0, 0xa3).mirror(0x1c).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc0, 0xc3).mirror(0x3c).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
//AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3c) AM_READWRITE(vram_data_r, vram_data_w)
//AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3c) AM_WRITE(vram_addr_w)
//AM_RANGE(0xc2, 0xc2) AM_MIRROR(0x3c) AM_READ(test_r)
- AM_RANGE(0xef, 0xef) AM_READ(test2_r)
-ADDRESS_MAP_END
+ map(0xef, 0xef).r(this, FUNC(norautp_state::test2_r));
+}
/*
Video RAM R/W:
@@ -860,23 +862,26 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(norautp_state::nortest1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void norautp_state::nortest1_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x2fff).rom();
+ map(0x5000, 0x57ff).ram().share("nvram");
+}
-ADDRESS_MAP_START(norautp_state::norautxp_map)
+void norautp_state::norautxp_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(~0x4000)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* need to be checked */
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") /* HM6116 */
-ADDRESS_MAP_END
+ map.global_mask(0x7fff);
+ map(0x0000, 0x3fff).rom(); /* need to be checked */
+ map(0x6000, 0x67ff).ram().share("nvram"); /* HM6116 */
+}
-ADDRESS_MAP_START(norautp_state::norautx4_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") /* 6116 */
-ADDRESS_MAP_END
+void norautp_state::norautx4_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram"); /* 6116 */
+}
#ifdef UNUSED_CODE
ADDRESS_MAP_START(norautp_state::norautx8_map)
@@ -885,11 +890,12 @@ ADDRESS_MAP_START(norautp_state::norautx8_map)
ADDRESS_MAP_END
#endif
-ADDRESS_MAP_START(norautp_state::kimble_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc800, 0xc9ff) AM_RAM /* working RAM? */
-ADDRESS_MAP_END
+void norautp_state::kimble_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().share("nvram");
+ map(0xc800, 0xc9ff).ram(); /* working RAM? */
+}
#ifdef UNUSED_CODE
ADDRESS_MAP_START(norautp_state::norautxp_portmap)
@@ -897,37 +903,42 @@ ADDRESS_MAP_START(norautp_state::norautxp_portmap)
ADDRESS_MAP_END
#endif
-ADDRESS_MAP_START(norautp_state::newhilop_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram") /* 6116 */
-ADDRESS_MAP_END
+void norautp_state::newhilop_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0xd000, 0xd7ff).ram().share("nvram"); /* 6116 */
+}
/*********** 8080 based **********/
-ADDRESS_MAP_START(norautp_state::dphl_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram") /* should be 2x 0x100 segments (4x 2111) */
-ADDRESS_MAP_END
+void norautp_state::dphl_map(address_map &map)
+{
+ map.global_mask(0x7fff); /* A15 not connected */
+ map(0x0000, 0x3fff).rom();
+ map(0x5000, 0x53ff).ram().share("nvram"); /* should be 2x 0x100 segments (4x 2111) */
+}
-ADDRESS_MAP_START(norautp_state::dphla_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void norautp_state::dphla_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram().share("nvram");
+}
-ADDRESS_MAP_START(norautp_state::ssjkrpkr_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void norautp_state::ssjkrpkr_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram().share("nvram");
+}
-ADDRESS_MAP_START(norautp_state::dphltest_map)
+void norautp_state::dphltest_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0x87ff).ram().share("nvram");
+}
/*
Kimble:
@@ -942,17 +953,19 @@ ADDRESS_MAP_END
The code read on port $62, when is suppossed to be set as output.
*/
-ADDRESS_MAP_START(norautp_state::kimbldhl_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void norautp_state::kimbldhl_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().share("nvram");
+}
-ADDRESS_MAP_START(norautp_state::drhl_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x5400, 0x57ff) AM_RAM
-ADDRESS_MAP_END
+void norautp_state::drhl_map(address_map &map)
+{
+ map.global_mask(0x7fff); /* A15 not connected */
+ map(0x0000, 0x3fff).rom();
+ map(0x5000, 0x53ff).ram().share("nvram");
+ map(0x5400, 0x57ff).ram();
+}
/*************************
diff --git a/src/mame/drivers/notechan.cpp b/src/mame/drivers/notechan.cpp
index e164a390b22..8d77e85ed67 100644
--- a/src/mame/drivers/notechan.cpp
+++ b/src/mame/drivers/notechan.cpp
@@ -324,20 +324,22 @@ public:
* Memory Map Definition *
*********************************************/
-ADDRESS_MAP_START(notechan_state::notechan_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(notechan_state::notechan_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("IN0") AM_WRITE(out_f8_w)
- AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN1") AM_WRITE(out_f9_w)
- AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN2") AM_WRITE(out_fa_w)
- AM_RANGE(0xfb, 0xfb) AM_READ_PORT("IN3")
- AM_RANGE(0xff, 0xff) AM_WRITE(out_ff_w) // watchdog reset? (written immediately upon reset, INT and NMI)
-ADDRESS_MAP_END
+void notechan_state::notechan_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).ram();
+}
+
+void notechan_state::notechan_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf8, 0xf8).portr("IN0").w(this, FUNC(notechan_state::out_f8_w));
+ map(0xf9, 0xf9).portr("IN1").w(this, FUNC(notechan_state::out_f9_w));
+ map(0xfa, 0xfa).portr("IN2").w(this, FUNC(notechan_state::out_fa_w));
+ map(0xfb, 0xfb).portr("IN3");
+ map(0xff, 0xff).w(this, FUNC(notechan_state::out_ff_w)); // watchdog reset? (written immediately upon reset, INT and NMI)
+}
/*********************************************
diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp
index b30fe4a05e6..6ff82bbd80a 100644
--- a/src/mame/drivers/nova2001.cpp
+++ b/src/mame/drivers/nova2001.cpp
@@ -180,116 +180,124 @@ MACHINE_START_MEMBER(nova2001_state,ninjakun)
*
*************************************/
-ADDRESS_MAP_START(nova2001_state::nova2001_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(nova2001_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb800, 0xbfff) AM_WRITE(nova2001_flipscreen_w)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xc003, 0xc003) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xc004, 0xc004) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc006, 0xc006) AM_READ_PORT("IN0")
- AM_RANGE(0xc007, 0xc007) AM_READ_PORT("IN1")
- AM_RANGE(0xc00e, 0xc00e) AM_READ_PORT("IN2")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nova2001_state::ninjakun_cpu1_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITE(ninjakun_cpu1_io_A002_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(pkunwar_flipscreen_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::ninjakun_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITE(ninjakun_cpu2_io_A002_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(nova2001_flipscreen_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("share2") /* swapped wrt CPU1 */
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("share1") /* swapped wrt CPU1 */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nova2001_state::pkunwar_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(nova2001_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xa003, 0xa003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::pkunwar_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(pkunwar_flipscreen_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nova2001_state::raiders5_cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x9000, 0x97ff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(nova2001_scroll_x_w)
- AM_RANGE(0xa001, 0xa001) AM_WRITE(nova2001_scroll_y_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(pkunwar_flipscreen_w)
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xc003, 0xc003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::raiders5_cpu2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x9000, 0x9000) AM_READNOP /* unknown */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xc000, 0xc000) AM_READNOP /* unknown */
- AM_RANGE(0xc800, 0xc800) AM_READNOP /* unknown */
- AM_RANGE(0xd000, 0xd000) AM_READNOP /* unknown */
- AM_RANGE(0xe000, 0xe000) AM_WRITE(nova2001_scroll_x_w)
- AM_RANGE(0xe001, 0xe001) AM_WRITE(nova2001_scroll_y_w)
- AM_RANGE(0xe002, 0xe002) AM_WRITE(pkunwar_flipscreen_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::raiders5_io)
- AM_RANGE(0x00, 0x00) AM_READNOP /* unknown */
-ADDRESS_MAP_END
+void nova2001_state::nova2001_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xa800, 0xafff).ram().w(this, FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
+ map(0xb000, 0xb7ff).ram().share("spriteram");
+ map(0xb800, 0xbfff).w(this, FUNC(nova2001_state::nova2001_flipscreen_w));
+ map(0xc000, 0xc000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xc001, 0xc001).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xc002, 0xc002).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xc003, 0xc003).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xc004, 0xc004).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc006, 0xc006).portr("IN0");
+ map(0xc007, 0xc007).portr("IN1");
+ map(0xc00e, 0xc00e).portr("IN2");
+ map(0xe000, 0xe7ff).ram();
+}
+
+
+void nova2001_state::ninjakun_cpu1_map(address_map &map)
+{
+ 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").w(this, FUNC(nova2001_state::ninjakun_cpu1_io_A002_w));
+ map(0xa003, 0xa003).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).rw(this, 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(this, 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)
+{
+ 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(this, FUNC(nova2001_state::ninjakun_cpu2_io_A002_w));
+ map(0xa003, 0xa003).w(this, FUNC(nova2001_state::nova2001_flipscreen_w));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).rw(this, 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(this, 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 */
+}
+
+
+void nova2001_state::pkunwar_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("spriteram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
+ map(0xa000, 0xa001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xa001, 0xa001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xa003, 0xa003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xffff).rom();
+}
+
+void nova2001_state::pkunwar_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+}
+
+
+void nova2001_state::raiders5_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("spriteram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0x9000, 0x97ff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
+ map(0xa000, 0xa000).w(this, FUNC(nova2001_state::nova2001_scroll_x_w));
+ map(0xa001, 0xa001).w(this, FUNC(nova2001_state::nova2001_scroll_y_w));
+ map(0xa002, 0xa002).w(this, 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(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
+ map(0xe000, 0xe7ff).ram().share("share1");
+}
+
+void nova2001_state::raiders5_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).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(0x9000, 0x9000).nopr(); /* unknown */
+ map(0xa000, 0xa7ff).ram().share("share1");
+ map(0xc000, 0xc000).nopr(); /* unknown */
+ map(0xc800, 0xc800).nopr(); /* unknown */
+ map(0xd000, 0xd000).nopr(); /* unknown */
+ map(0xe000, 0xe000).w(this, FUNC(nova2001_state::nova2001_scroll_x_w));
+ map(0xe001, 0xe001).w(this, FUNC(nova2001_state::nova2001_scroll_y_w));
+ map(0xe002, 0xe002).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+}
+
+void nova2001_state::raiders5_io(address_map &map)
+{
+ map(0x00, 0x00).nopr(); /* unknown */
+}
diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp
index 6b3164238d9..f2c84c8a86f 100644
--- a/src/mame/drivers/novag6502.cpp
+++ b/src/mame/drivers/novag6502.cpp
@@ -506,44 +506,48 @@ WRITE8_MEMBER(novag6502_state::sforte_lcd_data_w)
// Super Constellation / Constellation Forte
-ADDRESS_MAP_START(novag6502_state::supercon_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1c00, 0x1c00) AM_WRITENOP // printer/clock?
- AM_RANGE(0x1d00, 0x1d00) AM_WRITENOP // printer/clock?
- AM_RANGE(0x1e00, 0x1e00) AM_READWRITE(supercon_input2_r, supercon_mux_w)
- AM_RANGE(0x1f00, 0x1f00) AM_READWRITE(supercon_input1_r, supercon_control_w)
- AM_RANGE(0x2000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(novag6502_state::cforte_map)
- AM_IMPORT_FROM( supercon_map )
- AM_RANGE(0x1e00, 0x1e00) AM_READWRITE(supercon_input2_r, cforte_mux_w)
- AM_RANGE(0x1f00, 0x1f00) AM_READWRITE(supercon_input1_r, cforte_control_w)
-ADDRESS_MAP_END
+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(this, FUNC(novag6502_state::supercon_input2_r), FUNC(novag6502_state::supercon_mux_w));
+ map(0x1f00, 0x1f00).rw(this, 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(this, FUNC(novag6502_state::supercon_input2_r), FUNC(novag6502_state::cforte_mux_w));
+ map(0x1f00, 0x1f00).rw(this, FUNC(novag6502_state::supercon_input1_r), FUNC(novag6502_state::cforte_control_w));
+}
// Super Expert / Super Forte
-ADDRESS_MAP_START(novag6502_state::sforte_map)
- AM_RANGE(0x0000, 0x1fef) AM_RAM AM_SHARE("nvram") // 8KB RAM, but RAM CE pin is deactivated on $1ff0-$1fff
- AM_RANGE(0x1ff0, 0x1ff0) AM_READ(sexpert_input1_r)
- AM_RANGE(0x1ff1, 0x1ff1) AM_READ(sexpert_input2_r)
- AM_RANGE(0x1ff2, 0x1ff2) AM_WRITENOP // printer
- AM_RANGE(0x1ff3, 0x1ff3) AM_WRITENOP // printer
- AM_RANGE(0x1ff6, 0x1ff6) AM_WRITE(sforte_lcd_control_w)
- AM_RANGE(0x1ff7, 0x1ff7) AM_WRITE(sforte_lcd_data_w)
- AM_RANGE(0x1ffc, 0x1fff) AM_DEVREADWRITE("acia", mos6551_device, read, write)
- AM_RANGE(0x2000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(novag6502_state::sexpert_map)
- AM_IMPORT_FROM( sforte_map )
- AM_RANGE(0x1ff4, 0x1ff4) AM_WRITE(sexpert_leds_w)
- AM_RANGE(0x1ff5, 0x1ff5) AM_WRITE(sexpert_mux_w)
- AM_RANGE(0x1ff6, 0x1ff6) AM_WRITE(sexpert_lcd_control_w)
- AM_RANGE(0x1ff7, 0x1ff7) AM_WRITE(sexpert_lcd_data_w)
-ADDRESS_MAP_END
+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(this, FUNC(novag6502_state::sexpert_input1_r));
+ map(0x1ff1, 0x1ff1).r(this, FUNC(novag6502_state::sexpert_input2_r));
+ map(0x1ff2, 0x1ff2).nopw(); // printer
+ map(0x1ff3, 0x1ff3).nopw(); // printer
+ map(0x1ff6, 0x1ff6).w(this, FUNC(novag6502_state::sforte_lcd_control_w));
+ map(0x1ff7, 0x1ff7).w(this, 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("bank1");
+}
+
+void novag6502_state::sexpert_map(address_map &map)
+{
+ sforte_map(map);
+ map(0x1ff4, 0x1ff4).w(this, FUNC(novag6502_state::sexpert_leds_w));
+ map(0x1ff5, 0x1ff5).w(this, FUNC(novag6502_state::sexpert_mux_w));
+ map(0x1ff6, 0x1ff6).w(this, FUNC(novag6502_state::sexpert_lcd_control_w));
+ map(0x1ff7, 0x1ff7).w(this, FUNC(novag6502_state::sexpert_lcd_data_w));
+}
diff --git a/src/mame/drivers/novag68k.cpp b/src/mame/drivers/novag68k.cpp
index 52ebfefd133..0c48b204951 100644
--- a/src/mame/drivers/novag68k.cpp
+++ b/src/mame/drivers/novag68k.cpp
@@ -112,17 +112,19 @@ READ8_MEMBER(novag68k_state::diablo68k_input2_r)
// Diablo 68000
-ADDRESS_MAP_START(novag68k_state::diablo68k_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x280000, 0x28ffff) AM_RAM
- AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE8("acia", mos6551_device, read, write, 0xff00)
- AM_RANGE(0x380000, 0x380001) AM_WRITE8(diablo68k_leds_w, 0xff00) AM_READNOP
- AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE8(diablo68k_lcd_data_w, 0xff00)
- AM_RANGE(0x3c0000, 0x3c0001) AM_READWRITE8(diablo68k_input2_r, diablo68k_control_w, 0xff00)
- AM_RANGE(0x3e0000, 0x3e0001) AM_READ8(diablo68k_input1_r, 0xff00)
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+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(this, FUNC(novag68k_state::diablo68k_leds_w));
+ map(0x3a0000, 0x3a0000).w(this, FUNC(novag68k_state::diablo68k_lcd_data_w));
+ map(0x3c0000, 0x3c0000).rw(this, FUNC(novag68k_state::diablo68k_input2_r), FUNC(novag68k_state::diablo68k_control_w));
+ map(0x3e0000, 0x3e0000).r(this, FUNC(novag68k_state::diablo68k_input1_r));
+ map(0xff8000, 0xffbfff).ram().share("nvram");
+}
diff --git a/src/mame/drivers/novagf8.cpp b/src/mame/drivers/novagf8.cpp
index 92cfeb7157d..ca545ff2bba 100644
--- a/src/mame/drivers/novagf8.cpp
+++ b/src/mame/drivers/novagf8.cpp
@@ -119,17 +119,19 @@ READ8_MEMBER(novagf8_state::delta1_io1_r)
// Delta-1
-ADDRESS_MAP_START(novagf8_state::delta1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM // _A13
- AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x1f00) AM_RAM // A13
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(novagf8_state::delta1_io)
- AM_RANGE(0x0, 0x0) AM_READWRITE(delta1_io0_r, delta1_io0_w )
- AM_RANGE(0x1, 0x1) AM_READWRITE(delta1_io1_r, delta1_io1_w )
- AM_RANGE(0xc, 0xf) AM_DEVREADWRITE("f3853", f3853_device, read, write )
-ADDRESS_MAP_END
+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 novagf8_state::delta1_io(address_map &map)
+{
+ map(0x0, 0x0).rw(this, FUNC(novagf8_state::delta1_io0_r), FUNC(novagf8_state::delta1_io0_w));
+ map(0x1, 0x1).rw(this, 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));
+}
diff --git a/src/mame/drivers/nsg6809.cpp b/src/mame/drivers/nsg6809.cpp
index 7cfc0700af6..e143787bba8 100644
--- a/src/mame/drivers/nsg6809.cpp
+++ b/src/mame/drivers/nsg6809.cpp
@@ -54,13 +54,14 @@ public:
};
-ADDRESS_MAP_START(nsg6809_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2800, 0x280f) AM_DEVREADWRITE("via", via6522_device, read, write)
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("acia", mos6551_device, read, write)
- AM_RANGE(0x3e00, 0x3e00) AM_DEVWRITE("deadman", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void nsg6809_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2800, 0x280f).rw("via", FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x3000, 0x3003).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x3e00, 0x3e00).w("deadman", FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( pitchhit )
INPUT_PORTS_END
diff --git a/src/mame/drivers/nsm.cpp b/src/mame/drivers/nsm.cpp
index 542262ce1b6..2dd86047c87 100644
--- a/src/mame/drivers/nsm.cpp
+++ b/src/mame/drivers/nsm.cpp
@@ -53,28 +53,30 @@ private:
uint8_t m_cru_count;
};
-ADDRESS_MAP_START(nsm_state::nsm_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xffec, 0xffed) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xffee, 0xffef) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nsm_state::nsm_io_map)
+void nsm_state::nsm_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xefff).ram();
+ map(0xffec, 0xffed).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xffee, 0xffef).w("ay2", FUNC(ay8910_device::address_data_w));
+}
+
+void nsm_state::nsm_io_map(address_map &map)
+{
// 00-71 selected by IC600 (74LS151)
- AM_RANGE(0x0000, 0x0001) AM_READ(ff_r) // 5v supply
- AM_RANGE(0x0010, 0x0011) AM_READNOP // antenna
- AM_RANGE(0x0020, 0x0021) AM_READNOP // reset circuit
- AM_RANGE(0x0030, 0x0031) AM_READ(ff_r) // service plug
- AM_RANGE(0x0040, 0x0041) AM_READ(ff_r) // service plug
- AM_RANGE(0x0050, 0x0051) AM_READ(ff_r) // test of internal battery
- AM_RANGE(0x0060, 0x0061) AM_READ(ff_r) // sum of analog outputs of ay2
+ map(0x0000, 0x0001).r(this, FUNC(nsm_state::ff_r)); // 5v supply
+ map(0x0010, 0x0011).nopr(); // antenna
+ map(0x0020, 0x0021).nopr(); // reset circuit
+ map(0x0030, 0x0031).r(this, FUNC(nsm_state::ff_r)); // service plug
+ map(0x0040, 0x0041).r(this, FUNC(nsm_state::ff_r)); // service plug
+ map(0x0050, 0x0051).r(this, FUNC(nsm_state::ff_r)); // test of internal battery
+ map(0x0060, 0x0061).r(this, FUNC(nsm_state::ff_r)); // sum of analog outputs of ay2
//AM_RANGE(0x0070, 0x0071) AM_READNOP // serial data in
- AM_RANGE(0x0f70, 0x0f7d) AM_WRITENOP
- AM_RANGE(0x0fe4, 0x0fff) AM_READNOP
- AM_RANGE(0x7fb0, 0x7fbf) AM_WRITE(cru_w)
- AM_RANGE(0x7fd0, 0x7fd1) AM_WRITE(oe_w)
-ADDRESS_MAP_END
+ map(0x0f70, 0x0f7d).nopw();
+ map(0x0fe4, 0x0fff).nopr();
+ map(0x7fb0, 0x7fbf).w(this, FUNC(nsm_state::cru_w));
+ map(0x7fd0, 0x7fd1).w(this, FUNC(nsm_state::oe_w));
+}
static INPUT_PORTS_START( nsm )
INPUT_PORTS_END
diff --git a/src/mame/drivers/nsmpoker.cpp b/src/mame/drivers/nsmpoker.cpp
index 45646430fff..c452f4f77d2 100644
--- a/src/mame/drivers/nsmpoker.cpp
+++ b/src/mame/drivers/nsmpoker.cpp
@@ -177,18 +177,20 @@ READ8_MEMBER(nsmpoker_state::debug_r)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(nsmpoker_state::nsmpoker_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x9000, 0xafff) AM_RAM // OK... cleared at beginning.
- AM_RANGE(0xb000, 0xcfff) AM_ROM // WRONG... just to map the last rom somewhere.
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(nsmpoker_videoram_w) AM_SHARE("videoram") // WRONG... just a placeholder.
- AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(nsmpoker_colorram_w) AM_SHARE("colorram") // WRONG... just a placeholder.
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nsmpoker_state::nsmpoker_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_READ(debug_r) // kind of trap at beginning
-ADDRESS_MAP_END
+void nsmpoker_state::nsmpoker_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x9000, 0xafff).ram(); // OK... cleared at beginning.
+ map(0xb000, 0xcfff).rom(); // WRONG... just to map the last rom somewhere.
+ map(0xe000, 0xefff).ram().w(this, FUNC(nsmpoker_state::nsmpoker_videoram_w)).share("videoram"); // WRONG... just a placeholder.
+ map(0xf000, 0xffff).ram().w(this, FUNC(nsmpoker_state::nsmpoker_colorram_w)).share("colorram"); // WRONG... just a placeholder.
+}
+
+void nsmpoker_state::nsmpoker_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).r(this, FUNC(nsmpoker_state::debug_r)); // kind of trap at beginning
+}
/* I/O byte R/W
diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp
index a72e3446542..c70f3c7fd4d 100644
--- a/src/mame/drivers/nss.cpp
+++ b/src/mame/drivers/nss.cpp
@@ -365,11 +365,12 @@ uint32_t nss_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap,
-ADDRESS_MAP_START(nss_state::snes_map)
- AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes_r_bank1, snes_w_bank1)
- AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
- AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* Mirror and ROM */
-ADDRESS_MAP_END
+void nss_state::snes_map(address_map &map)
+{
+ map(0x000000, 0x7dffff).rw(this, FUNC(nss_state::snes_r_bank1), FUNC(nss_state::snes_w_bank1));
+ map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
+ map(0x800000, 0xffffff).rw(this, FUNC(nss_state::snes_r_bank2), FUNC(nss_state::snes_w_bank2)); /* Mirror and ROM */
+}
READ8_MEMBER(nss_state::spc_ram_100_r)
{
@@ -381,11 +382,12 @@ WRITE8_MEMBER(nss_state::spc_ram_100_w)
m_spc700->spc_ram_w(space, offset + 0x100, data);
}
-ADDRESS_MAP_START(nss_state::spc_mem)
- AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */
- AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */
- AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
-ADDRESS_MAP_END
+void nss_state::spc_mem(address_map &map)
+{
+ map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */
+ map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */
+ map(0x0100, 0xffff).rw(this, FUNC(nss_state::spc_ram_100_r), FUNC(nss_state::spc_ram_100_w));
+}
/* NSS specific */
/*
@@ -504,14 +506,15 @@ WRITE8_MEMBER(nss_state::nss_prot_w)
}
-ADDRESS_MAP_START(nss_state::bios_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9fff) AM_READWRITE(ram_wp_r,ram_wp_w)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("EEPROMIN")
- AM_RANGE(0xc000, 0xdfff) AM_ROM AM_REGION("ibios_rom", 0x6000 )
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(nss_prot_r,nss_prot_w)
-ADDRESS_MAP_END
+void nss_state::bios_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9fff).rw(this, FUNC(nss_state::ram_wp_r), FUNC(nss_state::ram_wp_w));
+ map(0xa000, 0xa000).portr("EEPROMIN");
+ map(0xc000, 0xdfff).rom().region("ibios_rom", 0x6000);
+ map(0xe000, 0xffff).rw(this, FUNC(nss_state::nss_prot_r), FUNC(nss_state::nss_prot_w));
+}
READ8_MEMBER(nss_state::port_00_r)
{
@@ -621,15 +624,16 @@ WRITE8_MEMBER(nss_state::port_07_w)
m_joy_flag = 1;
}
-ADDRESS_MAP_START(nss_state::bios_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_READ(port_00_r) AM_WRITE(port_00_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("FP") AM_WRITE(port_01_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") AM_WRITE(port_02_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("RTC") AM_WRITE(port_03_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(port_04_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(port_07_w)
-ADDRESS_MAP_END
+void nss_state::bios_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).r(this, FUNC(nss_state::port_00_r)).w(this, FUNC(nss_state::port_00_w));
+ map(0x01, 0x01).portr("FP").w(this, FUNC(nss_state::port_01_w));
+ map(0x02, 0x02).portr("SYSTEM").w(this, FUNC(nss_state::port_02_w));
+ map(0x03, 0x03).portr("RTC").w(this, FUNC(nss_state::port_03_w));
+ map(0x04, 0x04).w(this, FUNC(nss_state::port_04_w));
+ map(0x07, 0x07).w(this, FUNC(nss_state::port_07_w));
+}
void nss_state::machine_start()
{
diff --git a/src/mame/drivers/nwk-tr.cpp b/src/mame/drivers/nwk-tr.cpp
index f75b6dfae23..268330a2ccc 100644
--- a/src/mame/drivers/nwk-tr.cpp
+++ b/src/mame/drivers/nwk-tr.cpp
@@ -657,35 +657,37 @@ void nwktr_state::machine_start()
m_sound_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nwktr_state::sound_irq), this));
}
-ADDRESS_MAP_START(nwktr_state::nwktr_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */
- AM_RANGE(0x74000000, 0x740000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w)
- AM_RANGE(0x74010000, 0x74017fff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram")
- AM_RANGE(0x74020000, 0x7403ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w)
- AM_RANGE(0x74040000, 0x7407ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w)
- AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
- AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
- AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ(sysreg_r)
- AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE(sysreg_w)
- AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */
- AM_RANGE(0x7d030000, 0x7d03000f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x7d040000, 0x7d04ffff) AM_READWRITE(lanc1_r, lanc1_w)
- AM_RANGE(0x7d050000, 0x7d05ffff) AM_READWRITE(lanc2_r, lanc2_w)
- AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */
- AM_RANGE(0x7f000000, 0x7f1fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
+void nwktr_state::nwktr_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("work_ram"); /* Work RAM */
+ map(0x74000000, 0x740000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w));
+ map(0x74010000, 0x74017fff).ram().w(this, FUNC(nwktr_state::paletteram32_w)).share("paletteram");
+ map(0x74020000, 0x7403ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w));
+ map(0x74040000, 0x7407ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w));
+ map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
+ map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
+ map(0x7d000000, 0x7d00ffff).r(this, FUNC(nwktr_state::sysreg_r));
+ map(0x7d010000, 0x7d01ffff).w(this, FUNC(nwktr_state::sysreg_w));
+ map(0x7d020000, 0x7d021fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */
+ map(0x7d030000, 0x7d03000f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x7d040000, 0x7d04ffff).rw(this, FUNC(nwktr_state::lanc1_r), FUNC(nwktr_state::lanc1_w));
+ map(0x7d050000, 0x7d05ffff).rw(this, FUNC(nwktr_state::lanc2_r), FUNC(nwktr_state::lanc2_w));
+ map(0x7e000000, 0x7e7fffff).rom().region("user2", 0); /* Data ROM */
+ map(0x7f000000, 0x7f1fffff).rom().share("share2");
+ map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
+}
/*****************************************************************************/
-ADDRESS_MAP_START(nwktr_state::sound_memmap)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_WRITE(soundtimer_en_w) AM_READNOP
- AM_RANGE(0x600000, 0x600001) AM_WRITE(soundtimer_count_w) AM_READNOP
-ADDRESS_MAP_END
+void nwktr_state::sound_memmap(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x200fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */
+ map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x500000, 0x500001).w(this, FUNC(nwktr_state::soundtimer_en_w)).nopr();
+ map(0x600000, 0x600001).w(this, FUNC(nwktr_state::soundtimer_count_w)).nopr();
+}
/*****************************************************************************/
@@ -710,25 +712,27 @@ WRITE32_MEMBER(nwktr_state::dsp_dataram1_w)
m_sharc1_dataram[offset] = data;
}
-ADDRESS_MAP_START(nwktr_state::sharc0_map)
- AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
- AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
- AM_RANGE(0x1400000, 0x14fffff) AM_RAM
- AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("konppc", konppc_device, nwk_voodoo_0_r, nwk_voodoo_0_w)
- AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
- AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_0_r, K033906_0_w)
- AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nwktr_state::sharc1_map)
- AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w)
- AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w)
- AM_RANGE(0x1400000, 0x14fffff) AM_RAM
- AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("konppc", konppc_device, nwk_voodoo_0_r, nwk_voodoo_0_w)
- AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w)
- AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_1_r, K033906_1_w)
- AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6")
-ADDRESS_MAP_END
+void nwktr_state::sharc0_map(address_map &map)
+{
+ map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
+ map(0x0500000, 0x05fffff).rw(this, FUNC(nwktr_state::dsp_dataram0_r), FUNC(nwktr_state::dsp_dataram0_w));
+ map(0x1400000, 0x14fffff).ram();
+ map(0x2400000, 0x27fffff).rw(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r), FUNC(konppc_device::nwk_voodoo_0_w));
+ map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
+ map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w));
+ map(0x3600000, 0x37fffff).bankr("bank5");
+}
+
+void nwktr_state::sharc1_map(address_map &map)
+{
+ map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w));
+ map(0x0500000, 0x05fffff).rw(this, FUNC(nwktr_state::dsp_dataram1_r), FUNC(nwktr_state::dsp_dataram1_w));
+ map(0x1400000, 0x14fffff).ram();
+ map(0x2400000, 0x27fffff).rw(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r), FUNC(konppc_device::nwk_voodoo_0_w));
+ map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w));
+ map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w));
+ map(0x3600000, 0x37fffff).bankr("bank6");
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/nycaptor.cpp b/src/mame/drivers/nycaptor.cpp
index ca128d93d50..9b45538620d 100644
--- a/src/mame/drivers/nycaptor.cpp
+++ b/src/mame/drivers/nycaptor.cpp
@@ -281,66 +281,69 @@ WRITE8_MEMBER(nycaptor_state::nycaptor_generic_control_w)
membank("bank1")->set_entry((data&0x08)>>3);
}
-ADDRESS_MAP_START(nycaptor_state::nycaptor_master_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
- AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, nycaptor_generic_control_w) /* bit 3 - memory bank at 0x8000-0xbfff */
- AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd401, 0xd401) AM_READNOP
- AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
- AM_RANGE(0xd805, 0xd805) AM_READ(nycaptor_mcu_status_r1)
- AM_RANGE(0xd806, 0xd806) AM_READ(sound_status_r)
- AM_RANGE(0xd807, 0xd807) AM_READ(nycaptor_mcu_status_r2)
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
- AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
- AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nycaptor_state::nycaptor_slave_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
-
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
- AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
- AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
- AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
- AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITENOP/* ? gfx control ? */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nycaptor_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_device, write)
- AM_RANGE(0xca00, 0xca00) AM_WRITENOP
- AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
- AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
- AM_RANGE(0xd600, 0xd600) AM_DEVWRITE("dac", dac_byte_interface, write) //otherwise no girl's scream in cycle shooting, see MT03975
- AM_RANGE(0xe000, 0xefff) AM_NOP
-ADDRESS_MAP_END
+void nycaptor_state::nycaptor_master_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram");
+ map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0xd001, 0xd001).w(this, FUNC(nycaptor_state::sub_cpu_halt_w));
+ map(0xd002, 0xd002).rw(this, FUNC(nycaptor_state::nycaptor_generic_control_r), FUNC(nycaptor_state::nycaptor_generic_control_w)); /* bit 3 - memory bank at 0x8000-0xbfff */
+ map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd401, 0xd401).nopr();
+ map(0xd403, 0xd403).w(this, FUNC(nycaptor_state::sound_cpu_reset_w));
+ map(0xd800, 0xd800).portr("DSWA");
+ map(0xd801, 0xd801).portr("DSWB");
+ map(0xd802, 0xd802).portr("DSWC");
+ map(0xd803, 0xd803).portr("IN0");
+ map(0xd804, 0xd804).portr("IN1");
+ map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::nycaptor_mcu_status_r1));
+ map(0xd806, 0xd806).r(this, FUNC(nycaptor_state::sound_status_r));
+ map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::nycaptor_mcu_status_r2));
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).ram().w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram");
+ map(0xdce1, 0xdce1).nopw();
+ map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w));
+ map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w));
+ map(0xe000, 0xffff).ram().share("sharedram");
+}
+
+void nycaptor_state::nycaptor_slave_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram");
+ map(0xd800, 0xd800).portr("DSWA");
+ map(0xd801, 0xd801).portr("DSWB");
+ map(0xd802, 0xd802).portr("DSWC");
+ map(0xd803, 0xd803).portr("IN0");
+ map(0xd804, 0xd804).portr("IN1");
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram");
+
+ map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w));
+ map(0xdf00, 0xdf00).r(this, FUNC(nycaptor_state::nycaptor_bx_r));
+ map(0xdf01, 0xdf01).r(this, FUNC(nycaptor_state::nycaptor_by_r));
+ map(0xdf02, 0xdf02).r(this, FUNC(nycaptor_state::nycaptor_b_r));
+ map(0xdf03, 0xdf03).r(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r)).nopw();/* ? gfx control ? */
+ map(0xe000, 0xffff).ram().share("sharedram");
+}
+
+void nycaptor_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xc802, 0xc803).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xc900, 0xc90d).w(m_msm, FUNC(msm5232_device::write));
+ map(0xca00, 0xca00).nopw();
+ map(0xcb00, 0xcb00).nopw();
+ map(0xcc00, 0xcc00).nopw();
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write));
+ map(0xd200, 0xd200).nopr().w(this, FUNC(nycaptor_state::nmi_enable_w));
+ map(0xd400, 0xd400).w(this, FUNC(nycaptor_state::nmi_disable_w));
+ map(0xd600, 0xd600).w("dac", FUNC(dac_byte_interface::write)); //otherwise no girl's scream in cycle shooting, see MT03975
+ map(0xe000, 0xefff).noprw();
+}
/* Cycle Shooting */
@@ -376,103 +379,108 @@ WRITE8_MEMBER(nycaptor_state::cyclshtg_generic_control_w)
}
-ADDRESS_MAP_START(nycaptor_state::cyclshtg_master_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd000) AM_READWRITE(cyclshtg_mcu_r, cyclshtg_mcu_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
- AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w)
- AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
- AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
- AM_RANGE(0xd806, 0xd806) AM_READ(sound_status_r)
- AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
- AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
- AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nycaptor_state::cyclshtg_slave_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
- AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
- AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
- AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
- AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
- AM_RANGE(0xdf03, 0xdf03) AM_WRITENOP
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
+void nycaptor_state::cyclshtg_master_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram");
+ map(0xd000, 0xd000).rw(this, FUNC(nycaptor_state::cyclshtg_mcu_r), FUNC(nycaptor_state::cyclshtg_mcu_w));
+ map(0xd001, 0xd001).w(this, FUNC(nycaptor_state::sub_cpu_halt_w));
+ map(0xd002, 0xd002).rw(this, FUNC(nycaptor_state::nycaptor_generic_control_r), FUNC(nycaptor_state::cyclshtg_generic_control_w));
+ map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd403, 0xd403).w(this, FUNC(nycaptor_state::sound_cpu_reset_w));
+ map(0xd800, 0xd800).portr("DSWA");
+ map(0xd801, 0xd801).portr("DSWB");
+ map(0xd802, 0xd802).portr("DSWC");
+ map(0xd803, 0xd803).portr("IN0");
+ map(0xd804, 0xd804).portr("IN1");
+ map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r));
+ map(0xd806, 0xd806).r(this, FUNC(nycaptor_state::sound_status_r));
+ map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r));
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).ram().w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram");
+ map(0xdce1, 0xdce1).nopw();
+ map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w));
+ map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w));
+ map(0xe000, 0xffff).ram().share("sharedram");
+}
+
+void nycaptor_state::cyclshtg_slave_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram");
+ map(0xd800, 0xd800).portr("DSWA");
+ map(0xd801, 0xd801).portr("DSWB");
+ map(0xd802, 0xd802).portr("DSWC");
+ map(0xd803, 0xd803).portr("IN0");
+ map(0xd804, 0xd804).portr("IN1");
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram");
+ map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w));
+ map(0xdf00, 0xdf00).r(this, FUNC(nycaptor_state::nycaptor_bx_r));
+ map(0xdf01, 0xdf01).r(this, FUNC(nycaptor_state::nycaptor_by_r));
+ map(0xdf02, 0xdf02).r(this, FUNC(nycaptor_state::nycaptor_b_r));
+ map(0xdf03, 0xdf03).r(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r));
+ map(0xdf03, 0xdf03).nopw();
+ map(0xe000, 0xffff).ram().share("sharedram");
+}
READ8_MEMBER(nycaptor_state::unk_r)
{
return machine().rand();
}
-ADDRESS_MAP_START(nycaptor_state::bronx_master_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r) AM_WRITENOP
- AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
- AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w)
- AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xd401, 0xd401) AM_READ(unk_r)
- AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
- AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
- AM_RANGE(0xd806, 0xd806) AM_READ(sound_status_r)
- AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
- AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nycaptor_state::bronx_slave_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
- AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r1)
- AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
- AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
- AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
- AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
- AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
- AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
- AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nycaptor_state::bronx_slave_io_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void nycaptor_state::bronx_master_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram");
+ map(0xd000, 0xd000).r(this, FUNC(nycaptor_state::cyclshtg_mcu_r)).nopw();
+ map(0xd001, 0xd001).w(this, FUNC(nycaptor_state::sub_cpu_halt_w));
+ map(0xd002, 0xd002).rw(this, FUNC(nycaptor_state::nycaptor_generic_control_r), FUNC(nycaptor_state::cyclshtg_generic_control_w));
+ map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xd401, 0xd401).r(this, FUNC(nycaptor_state::unk_r));
+ map(0xd403, 0xd403).w(this, FUNC(nycaptor_state::sound_cpu_reset_w));
+ map(0xd800, 0xd800).portr("DSWA");
+ map(0xd801, 0xd801).portr("DSWB");
+ map(0xd802, 0xd802).portr("DSWC");
+ map(0xd803, 0xd803).portr("IN0");
+ map(0xd804, 0xd804).portr("IN1");
+ map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r));
+ map(0xd806, 0xd806).r(this, FUNC(nycaptor_state::sound_status_r));
+ map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r));
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).ram().w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram");
+ map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w));
+ map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w));
+ map(0xe000, 0xffff).ram().share("sharedram");
+}
+
+void nycaptor_state::bronx_slave_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram");
+ map(0xd800, 0xd800).portr("DSWA");
+ map(0xd801, 0xd801).portr("DSWB");
+ map(0xd802, 0xd802).portr("DSWC");
+ map(0xd803, 0xd803).portr("IN0");
+ map(0xd804, 0xd804).portr("IN1");
+ map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r1));
+ map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r));
+ map(0xdc00, 0xdc9f).ram().share("spriteram");
+ map(0xdca0, 0xdcbf).w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram");
+ map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w));
+ map(0xdf00, 0xdf00).r(this, FUNC(nycaptor_state::nycaptor_bx_r));
+ map(0xdf01, 0xdf01).r(this, FUNC(nycaptor_state::nycaptor_by_r));
+ map(0xdf02, 0xdf02).r(this, FUNC(nycaptor_state::nycaptor_b_r));
+ map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w));
+ map(0xe000, 0xffff).ram().share("sharedram");
+}
+
+void nycaptor_state::bronx_slave_io_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("user1", 0);
+}
/* verified from Z80 code */
diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp
index af5253116b1..ef335ef75b8 100644
--- a/src/mame/drivers/nyny.cpp
+++ b/src/mame/drivers/nyny.cpp
@@ -426,51 +426,54 @@ WRITE8_MEMBER(nyny_state::nyny_pia_1_2_w)
}
-ADDRESS_MAP_START(nyny_state::nyny_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram1")
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("colorram1")
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("colorram2")
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("nvram") /* SRAM (coin counter, shown when holding F2) */
- AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xa101, 0xa101) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xa200, 0xa20f) AM_MIRROR(0x00f0) AM_READWRITE(nyny_pia_1_2_r, nyny_pia_1_2_w)
- AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x00ff) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) AM_WRITE(audio_1_command_w)
- AM_RANGE(0xa400, 0xa7ff) AM_NOP
- AM_RANGE(0xa800, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nyny_state::nyny_audio_1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x0fff) AM_NOP
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(audio_1_answer_w)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0fff) AM_READ_PORT("SW3")
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffc) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x3000, 0x3001) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x3002, 0x3002) AM_MIRROR(0x0ffc) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x3002, 0x3003) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x4000, 0x4fff) AM_NOP
- AM_RANGE(0x5000, 0x57ff) AM_MIRROR(0x0800) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x0800) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nyny_state::nyny_audio_2_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x0fff) AM_NOP
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD("ay3", ay8910_device, data_r)
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0ffe) AM_DEVWRITE("ay3", ay8910_device, data_address_w)
- AM_RANGE(0x3000, 0x6fff) AM_NOP
- AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM
-ADDRESS_MAP_END
+void nyny_state::nyny_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("videoram1");
+ map(0x2000, 0x3fff).ram().share("colorram1");
+ map(0x4000, 0x5fff).ram().share("videoram2");
+ map(0x6000, 0x7fff).ram().share("colorram2");
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa0ff).ram().share("nvram"); /* SRAM (coin counter, shown when holding F2) */
+ map(0xa100, 0xa100).mirror(0x00fe).w(m_mc6845, FUNC(mc6845_device::address_w));
+ map(0xa101, 0xa101).mirror(0x00fe).w(m_mc6845, FUNC(mc6845_device::register_w));
+ map(0xa200, 0xa20f).mirror(0x00f0).rw(this, FUNC(nyny_state::nyny_pia_1_2_r), FUNC(nyny_state::nyny_pia_1_2_w));
+ map(0xa300, 0xa300).mirror(0x00ff).r(m_soundlatch3, FUNC(generic_latch_8_device::read)).w(this, FUNC(nyny_state::audio_1_command_w));
+ map(0xa400, 0xa7ff).noprw();
+ map(0xa800, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xffff).rom();
+}
+
+
+void nyny_state::nyny_audio_1_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0080, 0x0fff).noprw();
+ map(0x1000, 0x1000).mirror(0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(nyny_state::audio_1_answer_w));
+ map(0x2000, 0x2000).mirror(0x0fff).portr("SW3");
+ map(0x3000, 0x3000).mirror(0x0ffc).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x3000, 0x3001).mirror(0x0ffc).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x3002, 0x3002).mirror(0x0ffc).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x3002, 0x3003).mirror(0x0ffc).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x4000, 0x4fff).noprw();
+ map(0x5000, 0x57ff).mirror(0x0800).rom();
+ map(0x6000, 0x67ff).mirror(0x0800).rom();
+ map(0x7000, 0x77ff).mirror(0x0800).rom();
+}
+
+
+void nyny_state::nyny_audio_2_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0080, 0x0fff).noprw();
+ map(0x1000, 0x1000).mirror(0x0fff).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0x2000, 0x2000).mirror(0x0ffe).r("ay3", FUNC(ay8910_device::data_r));
+ map(0x2000, 0x2001).mirror(0x0ffe).w("ay3", FUNC(ay8910_device::data_address_w));
+ map(0x3000, 0x6fff).noprw();
+ map(0x7000, 0x77ff).mirror(0x0800).rom();
+}
diff --git a/src/mame/drivers/ob68k1a.cpp b/src/mame/drivers/ob68k1a.cpp
index 28a2d92527c..a1bdd89f76a 100644
--- a/src/mame/drivers/ob68k1a.cpp
+++ b/src/mame/drivers/ob68k1a.cpp
@@ -117,18 +117,19 @@ WRITE8_MEMBER( ob68k1a_state::pia_w )
// ADDRESS_MAP( ob68k1a_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(ob68k1a_state::ob68k1a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x01ffff) AM_RAM
- AM_RANGE(0xfe0000, 0xfeffff) AM_ROM AM_REGION(MC68000L10_TAG, 0)
- AM_RANGE(0xffff00, 0xffff03) AM_DEVREADWRITE8(MC6850_0_TAG, acia6850_device, read, write, 0x00ff)
- AM_RANGE(0xffff10, 0xffff11) AM_WRITE8(com8116_w, 0xff00)
- AM_RANGE(0xffff20, 0xffff23) AM_DEVREADWRITE8(MC6850_1_TAG, acia6850_device, read, write, 0x00ff)
+void ob68k1a_state::ob68k1a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x01ffff).ram();
+ map(0xfe0000, 0xfeffff).rom().region(MC68000L10_TAG, 0);
+ map(0xffff00, 0xffff03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+ map(0xffff10, 0xffff10).w(this, FUNC(ob68k1a_state::com8116_w));
+ map(0xffff20, 0xffff23).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
// AM_RANGE(0xffff40, 0xffff47) AM_DEVREADWRITE8(MC6821_0_TAG, pia6821_device, read, write, 0x00ff)
// AM_RANGE(0xffff40, 0xffff47) AM_DEVREADWRITE8(MC6821_1_TAG, pia6821_device, read, write, 0xff00)
- AM_RANGE(0xffff40, 0xffff47) AM_READWRITE8(pia_r, pia_w, 0xffff)
- AM_RANGE(0xffff60, 0xffff6f) AM_DEVREADWRITE8(MC6840_TAG, ptm6840_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xffff40, 0xffff47).rw(this, FUNC(ob68k1a_state::pia_r), FUNC(ob68k1a_state::pia_w));
+ map(0xffff60, 0xffff6f).rw(MC6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
+}
diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp
index d434d8f6c6a..cb049683b74 100644
--- a/src/mame/drivers/octopus.cpp
+++ b/src/mame/drivers/octopus.cpp
@@ -285,56 +285,61 @@ private:
};
-ADDRESS_MAP_START(octopus_state::octopus_mem)
- AM_RANGE(0x00000, 0xcffff) AM_RAMBANK("main_ram_bank")
- AM_RANGE(0xd0000, 0xdffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xe0000, 0xe3fff) AM_NOP
- AM_RANGE(0xe4000, 0xe5fff) AM_RAM AM_SHARE("fram")
- AM_RANGE(0xe6000, 0xe7fff) AM_ROM AM_REGION("chargen",0)
- AM_RANGE(0xe8000, 0xfbfff) AM_NOP
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(octopus_state::octopus_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("dma1", am9517a_device, read, write)
- AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma2", am9517a_device, read, write)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWA")
- AM_RANGE(0x21, 0x2f) AM_READWRITE(system_r, system_w)
- AM_RANGE(0x31, 0x33) AM_READWRITE(bank_sel_r, bank_sel_w)
- AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("keyboard", i8251_device, data_r, data_w)
- AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("keyboard", i8251_device, status_r, control_w)
+void octopus_state::octopus_mem(address_map &map)
+{
+ map(0x00000, 0xcffff).bankrw("main_ram_bank");
+ map(0xd0000, 0xdffff).ram().share("vram");
+ map(0xe0000, 0xe3fff).noprw();
+ map(0xe4000, 0xe5fff).ram().share("fram");
+ map(0xe6000, 0xe7fff).rom().region("chargen", 0);
+ map(0xe8000, 0xfbfff).noprw();
+ map(0xfc000, 0xfffff).rom().region("user1", 0);
+}
+
+void octopus_state::octopus_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x0f).rw(m_dma1, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x10, 0x1f).rw(m_dma2, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x20, 0x20).portr("DSWA");
+ map(0x21, 0x2f).rw(this, FUNC(octopus_state::system_r), FUNC(octopus_state::system_w));
+ map(0x31, 0x33).rw(this, FUNC(octopus_state::bank_sel_r), FUNC(octopus_state::bank_sel_w));
+ map(0x50, 0x50).rw(m_kb_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x51, 0x51).rw(m_kb_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// 0x70-73: HD controller
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("serial", z80sio_device, da_r, da_w)
- AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("serial", z80sio_device, ca_r, ca_w)
- AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE("serial", z80sio_device, db_r, db_w)
- AM_RANGE(0xa3, 0xa3) AM_DEVREADWRITE("serial", z80sio_device, cb_r, cb_w)
- AM_RANGE(0xb0, 0xb1) AM_DEVREADWRITE("pic_master", pic8259_device, read, write)
- AM_RANGE(0xb4, 0xb5) AM_DEVREADWRITE("pic_slave", pic8259_device, read, write)
- AM_RANGE(0xc0, 0xc7) AM_DEVREADWRITE("crtc", scn2674_device, read, write)
- AM_RANGE(0xc8, 0xc8) AM_READWRITE(vidcontrol_r, vidcontrol_w)
- AM_RANGE(0xc9, 0xca) AM_READWRITE(video_latch_r, video_latch_w)
+ map(0x80, 0x83).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xa0, 0xa0).rw(m_serial, FUNC(z80sio_device::da_r), FUNC(z80sio_device::da_w));
+ map(0xa1, 0xa1).rw(m_serial, FUNC(z80sio_device::ca_r), FUNC(z80sio_device::ca_w));
+ map(0xa2, 0xa2).rw(m_serial, FUNC(z80sio_device::db_r), FUNC(z80sio_device::db_w));
+ map(0xa3, 0xa3).rw(m_serial, FUNC(z80sio_device::cb_r), FUNC(z80sio_device::cb_w));
+ map(0xb0, 0xb1).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xb4, 0xb5).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xc0, 0xc7).rw(m_crtc, FUNC(scn2674_device::read), FUNC(scn2674_device::write));
+ map(0xc8, 0xc8).rw(this, FUNC(octopus_state::vidcontrol_r), FUNC(octopus_state::vidcontrol_w));
+ map(0xc9, 0xca).rw(this, FUNC(octopus_state::video_latch_r), FUNC(octopus_state::video_latch_w));
// 0xcf: mode control
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0xe0, 0xe4) AM_READWRITE(z80_vector_r, z80_vector_w)
- AM_RANGE(0xf0, 0xf1) AM_READWRITE(parallel_r, parallel_w)
- AM_RANGE(0xf8, 0xff) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0xd0, 0xd3).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0xe0, 0xe4).rw(this, FUNC(octopus_state::z80_vector_r), FUNC(octopus_state::z80_vector_w));
+ map(0xf0, 0xf1).rw(this, FUNC(octopus_state::parallel_r), FUNC(octopus_state::parallel_w));
+ map(0xf8, 0xff).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
-ADDRESS_MAP_START(octopus_state::octopus_sub_mem)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("z80_bank", address_map_bank_device, read8, write8)
-ADDRESS_MAP_END
+void octopus_state::octopus_sub_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(m_z80_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+}
-ADDRESS_MAP_START(octopus_state::octopus_sub_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_io_r, z80_io_w)
-ADDRESS_MAP_END
+void octopus_state::octopus_sub_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(octopus_state::z80_io_r), FUNC(octopus_state::z80_io_w));
+}
-ADDRESS_MAP_START(octopus_state::octopus_vram)
- AM_RANGE(0x0000,0xffff) AM_READWRITE(vram_r, vram_w)
-ADDRESS_MAP_END
+void octopus_state::octopus_vram(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(octopus_state::vram_r), FUNC(octopus_state::vram_w));
+}
/* Input ports */
static INPUT_PORTS_START( octopus )
diff --git a/src/mame/drivers/odyssey.cpp b/src/mame/drivers/odyssey.cpp
index da68746f3b3..85c053945bb 100644
--- a/src/mame/drivers/odyssey.cpp
+++ b/src/mame/drivers/odyssey.cpp
@@ -101,8 +101,9 @@ uint32_t odyssey_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
* Memory Map *
**************************************/
-ADDRESS_MAP_START(odyssey_state::odyssey_map)
-ADDRESS_MAP_END
+void odyssey_state::odyssey_map(address_map &map)
+{
+}
/**************************************
diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp
index fa1d6689cbb..c55d2f6173e 100644
--- a/src/mame/drivers/odyssey2.cpp
+++ b/src/mame/drivers/odyssey2.cpp
@@ -111,21 +111,24 @@ protected:
};
-ADDRESS_MAP_START(odyssey2_state::odyssey2_mem)
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x0400, 0x0bff) AM_DEVREAD("cartslot", o2_cart_slot_device, read_rom04)
- AM_RANGE(0x0c00, 0x0fff) AM_DEVREAD("cartslot", o2_cart_slot_device, read_rom0c)
-ADDRESS_MAP_END
+void odyssey2_state::odyssey2_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x0bff).r(m_cart, FUNC(o2_cart_slot_device::read_rom04));
+ map(0x0c00, 0x0fff).r(m_cart, FUNC(o2_cart_slot_device::read_rom0c));
+}
-ADDRESS_MAP_START(odyssey2_state::odyssey2_io)
- AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write)
-ADDRESS_MAP_END
+void odyssey2_state::odyssey2_io(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(odyssey2_state::io_read), FUNC(odyssey2_state::io_write));
+}
-ADDRESS_MAP_START(g7400_state::g7400_io)
- AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write)
-ADDRESS_MAP_END
+void g7400_state::g7400_io(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(g7400_state::io_read), FUNC(g7400_state::io_write));
+}
static INPUT_PORTS_START( odyssey2 )
diff --git a/src/mame/drivers/offtwall.cpp b/src/mame/drivers/offtwall.cpp
index 7f9c560e2f8..efcd9234e51 100644
--- a/src/mame/drivers/offtwall.cpp
+++ b/src/mame/drivers/offtwall.cpp
@@ -222,32 +222,33 @@ READ16_MEMBER(offtwall_state::unknown_verify_r)
*
*************************************/
-ADDRESS_MAP_START(offtwall_state::main_map)
- AM_RANGE(0x000000, 0x037fff) AM_ROM
- AM_RANGE(0x038000, 0x03ffff) AM_READ(bankrom_r) AM_REGION("maincpu", 0x38000) AM_SHARE("bankrom_base")
- AM_RANGE(0x120000, 0x120fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x260000, 0x260001) AM_READ_PORT("260000")
- AM_RANGE(0x260002, 0x260003) AM_READ_PORT("260002")
- AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
- AM_RANGE(0x260012, 0x260013) AM_READ_PORT("260012")
- AM_RANGE(0x260020, 0x260021) AM_READ_PORT("260020")
- AM_RANGE(0x260022, 0x260023) AM_READ_PORT("260022")
- AM_RANGE(0x260024, 0x260025) AM_READ_PORT("260024")
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff)
- AM_RANGE(0x260040, 0x260041) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff)
- AM_RANGE(0x260050, 0x260051) AM_WRITE(io_latch_w)
- AM_RANGE(0x260060, 0x260061) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write)
- AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_msb_w) AM_SHARE("vad:playfield")
- AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_SHARE("vad:eof")
- AM_RANGE(0x3f5f80, 0x3f5fff) AM_RAM AM_SHARE("vad:mob:slip")
- AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext")
- AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM
- AM_RANGE(0x3fd000, 0x3fd7ff) AM_RAM AM_SHARE("vad:mob")
- AM_RANGE(0x3fd800, 0x3fffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
+void offtwall_state::main_map(address_map &map)
+{
+ map(0x000000, 0x037fff).rom();
+ map(0x038000, 0x03ffff).r(this, FUNC(offtwall_state::bankrom_r)).region("maincpu", 0x38000).share("bankrom_base");
+ map(0x120000, 0x120fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x260000, 0x260001).portr("260000");
+ map(0x260002, 0x260003).portr("260002");
+ map(0x260010, 0x260011).portr("260010");
+ map(0x260012, 0x260013).portr("260012");
+ map(0x260020, 0x260021).portr("260020");
+ map(0x260022, 0x260023).portr("260022");
+ map(0x260024, 0x260025).portr("260024");
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r));
+ map(0x260041, 0x260041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w));
+ map(0x260050, 0x260051).w(this, FUNC(offtwall_state::io_latch_w));
+ map(0x260060, 0x260061).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x2a0000, 0x2a0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write));
+ map(0x3f4000, 0x3f5eff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_msb_w)).share("vad:playfield");
+ map(0x3f5f00, 0x3f5f7f).ram().share("vad:eof");
+ map(0x3f5f80, 0x3f5fff).ram().share("vad:mob:slip");
+ map(0x3f6000, 0x3f7fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext");
+ map(0x3f8000, 0x3fcfff).ram();
+ map(0x3fd000, 0x3fd7ff).ram().share("vad:mob");
+ map(0x3fd800, 0x3fffff).ram().share("mainram");
+}
diff --git a/src/mame/drivers/ohmygod.cpp b/src/mame/drivers/ohmygod.cpp
index 4f097d864de..45dc4ccb283 100644
--- a/src/mame/drivers/ohmygod.cpp
+++ b/src/mame/drivers/ohmygod.cpp
@@ -41,31 +41,33 @@ WRITE16_MEMBER(ohmygod_state::ohmygod_ctrl_w)
}
}
-ADDRESS_MAP_START(ohmygod_state::ohmygod_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x300000, 0x303fff) AM_RAM
- AM_RANGE(0x304000, 0x307fff) AM_RAM_WRITE(ohmygod_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x308000, 0x30ffff) AM_RAM
- AM_RANGE(0x400000, 0x400001) AM_WRITE(ohmygod_scrollx_w)
- AM_RANGE(0x400002, 0x400003) AM_WRITE(ohmygod_scrolly_w)
- AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x703fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x704000, 0x707fff) AM_RAM
- AM_RANGE(0x708000, 0x70ffff) AM_RAM /* Work RAM */
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1")
- AM_RANGE(0x800002, 0x800003) AM_READ_PORT("P2")
- AM_RANGE(0x900000, 0x900001) AM_WRITE(ohmygod_ctrl_w)
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("DSW1")
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW2")
- AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xc00000, 0xc00001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE(ohmygod_spritebank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ohmygod_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void ohmygod_state::ohmygod_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x300000, 0x303fff).ram();
+ map(0x304000, 0x307fff).ram().w(this, FUNC(ohmygod_state::ohmygod_videoram_w)).share("videoram");
+ map(0x308000, 0x30ffff).ram();
+ map(0x400000, 0x400001).w(this, FUNC(ohmygod_state::ohmygod_scrollx_w));
+ map(0x400002, 0x400003).w(this, FUNC(ohmygod_state::ohmygod_scrolly_w));
+ map(0x600000, 0x6007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x703fff).ram().share("spriteram");
+ map(0x704000, 0x707fff).ram();
+ map(0x708000, 0x70ffff).ram(); /* Work RAM */
+ map(0x800000, 0x800001).portr("P1");
+ map(0x800002, 0x800003).portr("P2");
+ map(0x900000, 0x900001).w(this, FUNC(ohmygod_state::ohmygod_ctrl_w));
+ map(0xa00000, 0xa00001).portr("DSW1");
+ map(0xa00002, 0xa00003).portr("DSW2");
+ map(0xb00001, 0xb00001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc00000, 0xc00001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0xd00000, 0xd00001).w(this, FUNC(ohmygod_state::ohmygod_spritebank_w));
+}
+
+void ohmygod_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( ohmygod )
PORT_START("P1")
diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp
index d9058cedc6c..00cc6ff306d 100644
--- a/src/mame/drivers/ojankohs.cpp
+++ b/src/mame/drivers/ojankohs.cpp
@@ -96,80 +96,87 @@ WRITE8_MEMBER(ojankohs_state::ojankoc_ctrl_w)
}
-ADDRESS_MAP_START(ojankohs_state::ojankohs_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(ojankohs_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(ojankohs_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xb7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(ojankohs_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ojankohs_state::ojankoy_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(ojankohs_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(ojankohs_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ojankohs_state::ojankoc_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(ojankoc_videoram_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ojankohs_state::ojankohs_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("system") AM_WRITE(port_select_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(keymatrix_p1_r, ojankohs_rombank_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(keymatrix_p2_r, ojankohs_gfxreg_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(ojankohs_adpcm_reset_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ym2149_device, data_r)
- AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ym2149_device, data_address_w)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ojankohs_state::ojankoy_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("system") AM_WRITE(port_select_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(keymatrix_p1_r, ojankoy_rombank_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(keymatrix_p2_r, ojankoy_coinctr_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ojankohs_state::ccasino_io_map)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ_PORT("system") AM_WRITE(port_select_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xff00) AM_READWRITE(keymatrix_p1_r, ojankohs_rombank_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0xff00) AM_READWRITE(keymatrix_p2_r, ccasino_coinctr_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0xff00) AM_READ(ccasino_dipsw3_r) AM_WRITE(ojankohs_adpcm_reset_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0xff00) AM_READ(ccasino_dipsw4_r) AM_WRITE(ojankohs_flipscreen_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0xff00) AM_WRITE(ojankohs_msm5205_w)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0xff00) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x06, 0x07) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x08, 0x0f) AM_SELECT(0xff00) AM_WRITE(ccasino_palette_w) // 16bit address access
- AM_RANGE(0x10, 0x11) AM_MIRROR(0xff00) AM_DEVWRITE("gga", vsystem_gga_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ojankohs_state::ojankoc_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_WRITE(ojankoc_palette_w)
- AM_RANGE(0xf9, 0xf9) AM_WRITE(ojankohs_msm5205_w)
- AM_RANGE(0xfb, 0xfb) AM_WRITE(ojankoc_ctrl_w)
- AM_RANGE(0xfc, 0xfc) AM_READ(ojankoc_keymatrix_p1_r)
- AM_RANGE(0xfd, 0xfd) AM_READ(ojankoc_keymatrix_p2_r)
- AM_RANGE(0xfd, 0xfd) AM_WRITE(port_select_w)
- AM_RANGE(0xfe, 0xff) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0xff, 0xff) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+void ojankohs_state::ojankohs_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(ojankohs_state::ojankohs_videoram_w)).share("videoram");
+ map(0x9000, 0x9fff).ram().w(this, FUNC(ojankohs_state::ojankohs_colorram_w)).share("colorram");
+ map(0xa000, 0xb7ff).ram().share("nvram");
+ map(0xb800, 0xbfff).ram().w(this, FUNC(ojankohs_state::ojankohs_palette_w)).share("paletteram");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+
+void ojankohs_state::ojankoy_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram().w(this, FUNC(ojankohs_state::ojankohs_videoram_w)).share("videoram");
+ map(0xa000, 0xafff).ram().w(this, FUNC(ojankohs_state::ojankohs_colorram_w)).share("colorram");
+ map(0xb000, 0xbfff).ram().share("nvram");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+
+void ojankohs_state::ojankoc_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).bankr("bank1").w(this, FUNC(ojankohs_state::ojankoc_videoram_w));
+}
+
+
+void ojankohs_state::ojankohs_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("system").w(this, FUNC(ojankohs_state::port_select_w));
+ map(0x01, 0x01).rw(this, FUNC(ojankohs_state::keymatrix_p1_r), FUNC(ojankohs_state::ojankohs_rombank_w));
+ map(0x02, 0x02).rw(this, FUNC(ojankohs_state::keymatrix_p2_r), FUNC(ojankohs_state::ojankohs_gfxreg_w));
+ map(0x03, 0x03).w(this, FUNC(ojankohs_state::ojankohs_adpcm_reset_w));
+ map(0x04, 0x04).w(this, FUNC(ojankohs_state::ojankohs_flipscreen_w));
+ map(0x05, 0x05).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w));
+ map(0x06, 0x06).r("aysnd", FUNC(ym2149_device::data_r));
+ map(0x06, 0x07).w("aysnd", FUNC(ym2149_device::data_address_w));
+ map(0x10, 0x11).w("gga", FUNC(vsystem_gga_device::write));
+}
+
+void ojankohs_state::ojankoy_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("system").w(this, FUNC(ojankohs_state::port_select_w));
+ map(0x01, 0x01).rw(this, FUNC(ojankohs_state::keymatrix_p1_r), FUNC(ojankohs_state::ojankoy_rombank_w));
+ map(0x02, 0x02).rw(this, FUNC(ojankohs_state::keymatrix_p2_r), FUNC(ojankohs_state::ojankoy_coinctr_w));
+ map(0x04, 0x04).w(this, FUNC(ojankohs_state::ojankohs_flipscreen_w));
+ map(0x05, 0x05).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w));
+ map(0x06, 0x06).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x06, 0x07).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
+
+void ojankohs_state::ccasino_io_map(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff00).portr("system").w(this, FUNC(ojankohs_state::port_select_w));
+ map(0x01, 0x01).mirror(0xff00).rw(this, FUNC(ojankohs_state::keymatrix_p1_r), FUNC(ojankohs_state::ojankohs_rombank_w));
+ map(0x02, 0x02).mirror(0xff00).rw(this, FUNC(ojankohs_state::keymatrix_p2_r), FUNC(ojankohs_state::ccasino_coinctr_w));
+ map(0x03, 0x03).mirror(0xff00).r(this, FUNC(ojankohs_state::ccasino_dipsw3_r)).w(this, FUNC(ojankohs_state::ojankohs_adpcm_reset_w));
+ map(0x04, 0x04).mirror(0xff00).r(this, FUNC(ojankohs_state::ccasino_dipsw4_r)).w(this, FUNC(ojankohs_state::ojankohs_flipscreen_w));
+ map(0x05, 0x05).mirror(0xff00).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w));
+ map(0x06, 0x06).mirror(0xff00).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x06, 0x07).mirror(0xff00).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x08, 0x0f).select(0xff00).w(this, FUNC(ojankohs_state::ccasino_palette_w)); // 16bit address access
+ map(0x10, 0x11).mirror(0xff00).w("gga", FUNC(vsystem_gga_device::write));
+}
+
+void ojankohs_state::ojankoc_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x1f).w(this, FUNC(ojankohs_state::ojankoc_palette_w));
+ map(0xf9, 0xf9).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w));
+ map(0xfb, 0xfb).w(this, FUNC(ojankohs_state::ojankoc_ctrl_w));
+ map(0xfc, 0xfc).r(this, FUNC(ojankohs_state::ojankoc_keymatrix_p1_r));
+ map(0xfd, 0xfd).r(this, FUNC(ojankohs_state::ojankoc_keymatrix_p2_r));
+ map(0xfd, 0xfd).w(this, FUNC(ojankohs_state::port_select_w));
+ map(0xfe, 0xff).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0xff, 0xff).r("aysnd", FUNC(ay8910_device::data_r));
+}
//**************************************************************************
diff --git a/src/mame/drivers/okean240.cpp b/src/mame/drivers/okean240.cpp
index 757dc3d8882..a5452dbac9a 100644
--- a/src/mame/drivers/okean240.cpp
+++ b/src/mame/drivers/okean240.cpp
@@ -219,37 +219,40 @@ WRITE8_MEMBER(okean240_state::scroll_w)
m_scroll = data;
}
-ADDRESS_MAP_START(okean240_state::okean240_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
- AM_RANGE(0x0800, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(okean240_state::okean240_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppikbd", i8255_device, read, write)
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("pic", pic8259_device, read, write)
- AM_RANGE(0x80, 0x80) AM_READ(okean240_kbd_status_r)
- AM_RANGE(0xa0, 0xa0) AM_READ(term_r)
- AM_RANGE(0xa1, 0xa1) AM_READ(term_status_r)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppic", i8255_device, read, write)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("ppie", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(okean240_state::okean240a_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppikbd", i8255_device, read, write)
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("pic", pic8259_device, read, write)
- AM_RANGE(0x80, 0x80) AM_READ(okean240a_kbd_status_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppic", i8255_device, read, write)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("ppie", i8255_device, read, write)
+void okean240_state::okean240_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0x3fff).ram();
+ map(0x4000, 0x7fff).ram().share("videoram");
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xffff).rom();
+}
+
+void okean240_state::okean240_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x43).rw("ppikbd", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x60, 0x63).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x80, 0x81).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x80, 0x80).r(this, FUNC(okean240_state::okean240_kbd_status_r));
+ map(0xa0, 0xa0).r(this, FUNC(okean240_state::term_r));
+ map(0xa1, 0xa1).r(this, FUNC(okean240_state::term_status_r));
+ map(0xc0, 0xc3).rw("ppic", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe0, 0xe3).rw("ppie", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void okean240_state::okean240a_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x43).rw("ppikbd", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x60, 0x63).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x80, 0x81).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x80, 0x80).r(this, FUNC(okean240_state::okean240a_kbd_status_r));
+ map(0xa0, 0xa0).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xa1, 0xa1).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xc0, 0xc3).rw("ppic", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe0, 0xe3).rw("ppie", FUNC(i8255_device::read), FUNC(i8255_device::write));
// AM_RANGE(0x00, 0x1f)=ppa00.data
// AM_RANGE(0x20, 0x23)=dsk.data
// AM_RANGE(0x24, 0x24)=dsk.wait
@@ -260,20 +263,21 @@ ADDRESS_MAP_START(okean240_state::okean240a_io)
// AM_RANGE(0xa0, 0xa1)=comport.data
// AM_RANGE(0xc0, 0xdf)=ppaC0.data
// AM_RANGE(0xe0, 0xff)=ppaE0.data
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(okean240_state::okean240t_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x23) AM_WRITENOP
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppikbd", i8255_device, read, write)
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("pic", pic8259_device, read, write)
- AM_RANGE(0x80, 0x80) AM_READ(okean240_kbd_status_r)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppic", i8255_device, read, write)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("ppie", i8255_device, read, write)
-ADDRESS_MAP_END
+}
+
+void okean240_state::okean240t_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x20, 0x23).nopw();
+ map(0x40, 0x43).rw("ppikbd", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x60, 0x63).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x80, 0x81).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x80, 0x80).r(this, FUNC(okean240_state::okean240_kbd_status_r));
+ map(0xa0, 0xa0).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xa1, 0xa1).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xc0, 0xc3).rw("ppic", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe0, 0xe3).rw("ppie", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( okean240 )
diff --git a/src/mame/drivers/olibochu.cpp b/src/mame/drivers/olibochu.cpp
index 64c3d3d7159..dc256e266c7 100644
--- a/src/mame/drivers/olibochu.cpp
+++ b/src/mame/drivers/olibochu.cpp
@@ -270,33 +270,35 @@ WRITE8_MEMBER(olibochu_state::sound_command_w)
}
-ADDRESS_MAP_START(olibochu_state::olibochu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(olibochu_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(olibochu_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9000, 0x903f) AM_RAM //???
- AM_RANGE(0x9800, 0x983f) AM_RAM //???
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2")
- AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW0")
- AM_RANGE(0xa004, 0xa004) AM_READ_PORT("DSW1")
- AM_RANGE(0xa005, 0xa005) AM_READ_PORT("DSW2")
- AM_RANGE(0xa800, 0xa801) AM_WRITE(sound_command_w)
- AM_RANGE(0xa802, 0xa802) AM_WRITE(olibochu_flipscreen_w) /* bit 6 = enable sound? */
- AM_RANGE(0xf000, 0xffff) AM_RAM
- AM_RANGE(0xf400, 0xf41f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf440, 0xf47f) AM_RAM AM_SHARE("spriteram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(olibochu_state::olibochu_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* likely ay8910 input port, not direct */
- AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x7004, 0x7004) AM_WRITENOP //sound filter?
- AM_RANGE(0x7006, 0x7006) AM_WRITENOP //irq ack?
-ADDRESS_MAP_END
+void olibochu_state::olibochu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(olibochu_state::olibochu_videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(olibochu_state::olibochu_colorram_w)).share("colorram");
+ map(0x9000, 0x903f).ram(); //???
+ map(0x9800, 0x983f).ram(); //???
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1");
+ map(0xa002, 0xa002).portr("IN2");
+ map(0xa003, 0xa003).portr("DSW0");
+ map(0xa004, 0xa004).portr("DSW1");
+ map(0xa005, 0xa005).portr("DSW2");
+ map(0xa800, 0xa801).w(this, FUNC(olibochu_state::sound_command_w));
+ map(0xa802, 0xa802).w(this, FUNC(olibochu_state::olibochu_flipscreen_w)); /* bit 6 = enable sound? */
+ map(0xf000, 0xffff).ram();
+ map(0xf400, 0xf41f).ram().share("spriteram");
+ map(0xf440, 0xf47f).ram().share("spriteram2");
+}
+
+void olibochu_state::olibochu_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x6000, 0x63ff).ram();
+ map(0x7000, 0x7000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* likely ay8910 input port, not direct */
+ map(0x7000, 0x7001).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x7004, 0x7004).nopw(); //sound filter?
+ map(0x7006, 0x7006).nopw(); //irq ack?
+}
static INPUT_PORTS_START( olibochu )
diff --git a/src/mame/drivers/olyboss.cpp b/src/mame/drivers/olyboss.cpp
index edd5b60f933..0eb4e4ab5d1 100644
--- a/src/mame/drivers/olyboss.cpp
+++ b/src/mame/drivers/olyboss.cpp
@@ -162,38 +162,41 @@ void olyboss_state::device_timer(emu_timer &timer, device_timer_id id, int param
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(olyboss_state::olyboss_mem)
- AM_RANGE(0x0000, 0x7ff ) AM_READWRITE(rom_r, rom_w) AM_SHARE("lowram")
- AM_RANGE(0x800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(olyboss_state::olyboss_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0, 0x8) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write)
- AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", upd765a_device, map)
+void olyboss_state::olyboss_mem(address_map &map)
+{
+ map(0x0000, 0x7ff).rw(this, FUNC(olyboss_state::rom_r), FUNC(olyboss_state::rom_w)).share("lowram");
+ map(0x800, 0xffff).ram();
+}
+
+void olyboss_state::olyboss_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x0, 0x8).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write));
+ map(0x10, 0x11).m(m_fdc, FUNC(upd765a_device::map));
//AM_RANGE(0x20, 0x20) //beeper?
- AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("uic", am9519_device, data_r, data_w)
- AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("uic", am9519_device, stat_r, cmd_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppi", i8255_device, read, write)
+ map(0x30, 0x30).rw(m_uic, FUNC(am9519_device::data_r), FUNC(am9519_device::data_w));
+ map(0x31, 0x31).rw(m_uic, FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w));
+ map(0x40, 0x43).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
//AM_RANGE(0x50, 0x53) COM2651
- AM_RANGE(0x60, 0x60) AM_READWRITE(fdcctrl_r, fdcctrl_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write)
- AM_RANGE(0x82, 0x84) AM_WRITE(vchrmap_w)
- AM_RANGE(0x90, 0x9f) AM_WRITE(vchrram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(olyboss_state::olyboss85_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0, 0x8) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write)
- AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", upd765a_device, map)
- AM_RANGE(0x20, 0x21) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write)
- AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("pic", pic8259_device, read, write)
- AM_RANGE(0x42, 0x42) AM_READ(keyboard_read)
- AM_RANGE(0x42, 0x44) AM_WRITE(vchrram85_w)
- AM_RANGE(0x45, 0x45) AM_WRITE(fdcctrl85_w)
-ADDRESS_MAP_END
+ map(0x60, 0x60).rw(this, FUNC(olyboss_state::fdcctrl_r), FUNC(olyboss_state::fdcctrl_w));
+ map(0x80, 0x81).rw(m_crtc, FUNC(upd3301_device::read), FUNC(upd3301_device::write));
+ map(0x82, 0x84).w(this, FUNC(olyboss_state::vchrmap_w));
+ map(0x90, 0x9f).w(this, FUNC(olyboss_state::vchrram_w));
+}
+
+void olyboss_state::olyboss85_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x0, 0x8).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write));
+ map(0x10, 0x11).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x20, 0x21).rw(m_crtc, FUNC(upd3301_device::read), FUNC(upd3301_device::write));
+ map(0x30, 0x31).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x42, 0x42).r(this, FUNC(olyboss_state::keyboard_read));
+ map(0x42, 0x44).w(this, FUNC(olyboss_state::vchrram85_w));
+ map(0x45, 0x45).w(this, FUNC(olyboss_state::fdcctrl85_w));
+}
static INPUT_PORTS_START( olyboss )
PORT_START("DSW")
diff --git a/src/mame/drivers/omegrace.cpp b/src/mame/drivers/omegrace.cpp
index 803f9afc576..18b780e2bc6 100644
--- a/src/mame/drivers/omegrace.cpp
+++ b/src/mame/drivers/omegrace.cpp
@@ -360,30 +360,32 @@ WRITE8_MEMBER(omegrace_state::omegrace_soundlatch_w)
*
*************************************/
-ADDRESS_MAP_START(omegrace_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4bff) AM_RAM
- AM_RANGE(0x5c00, 0x5cff) AM_RAM AM_SHARE("nvram") /* NVRAM */
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x8000) /* vector ram */
- AM_RANGE(0x9000, 0x9fff) AM_ROM /* vector rom */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(omegrace_state::port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x08) AM_READ(omegrace_vg_go_r)
- AM_RANGE(0x09, 0x09) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("dvg", dvg_device, reset_w)
- AM_RANGE(0x0b, 0x0b) AM_READ_PORT("AVGDVG") /* vg_halt */
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1") /* DIP SW C4 */
- AM_RANGE(0x17, 0x17) AM_READ_PORT("DSW2") /* DIP SW C6 */
- AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") /* Player 1 input */
- AM_RANGE(0x12, 0x12) AM_READ_PORT("IN1") /* Player 2 input */
- AM_RANGE(0x13, 0x13) AM_WRITE(omegrace_leds_w) /* coin counters, leds, flip screen */
- AM_RANGE(0x14, 0x14) AM_WRITE(omegrace_soundlatch_w) /* Sound command */
- AM_RANGE(0x15, 0x15) AM_READ(omegrace_spinner1_r) /* 1st controller */
- AM_RANGE(0x16, 0x16) AM_READ_PORT("SPIN1") /* 2nd controller (cocktail) */
-ADDRESS_MAP_END
+void omegrace_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4bff).ram();
+ map(0x5c00, 0x5cff).ram().share("nvram"); /* NVRAM */
+ map(0x8000, 0x8fff).ram().share("vectorram").region("maincpu", 0x8000); /* vector ram */
+ map(0x9000, 0x9fff).rom(); /* vector rom */
+}
+
+
+void omegrace_state::port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x08).r(this, FUNC(omegrace_state::omegrace_vg_go_r));
+ map(0x09, 0x09).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x0a, 0x0a).w(m_dvg, FUNC(dvg_device::reset_w));
+ map(0x0b, 0x0b).portr("AVGDVG"); /* vg_halt */
+ map(0x10, 0x10).portr("DSW1"); /* DIP SW C4 */
+ map(0x17, 0x17).portr("DSW2"); /* DIP SW C6 */
+ map(0x11, 0x11).portr("IN0"); /* Player 1 input */
+ map(0x12, 0x12).portr("IN1"); /* Player 2 input */
+ map(0x13, 0x13).w(this, FUNC(omegrace_state::omegrace_leds_w)); /* coin counters, leds, flip screen */
+ map(0x14, 0x14).w(this, FUNC(omegrace_state::omegrace_soundlatch_w)); /* Sound command */
+ map(0x15, 0x15).r(this, FUNC(omegrace_state::omegrace_spinner1_r)); /* 1st controller */
+ map(0x16, 0x16).portr("SPIN1"); /* 2nd controller (cocktail) */
+}
/*************************************
@@ -392,18 +394,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(omegrace_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_MIRROR(0x800)
- AM_RANGE(0x1000, 0x13ff) AM_RAM
-ADDRESS_MAP_END
+void omegrace_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom().mirror(0x800);
+ map(0x1000, 0x13ff).ram();
+}
-ADDRESS_MAP_START(omegrace_state::sound_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // the game reads from ay1 port b, but ay8912 only has port a
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8912_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8912_device, address_data_w)
-ADDRESS_MAP_END
+void omegrace_state::sound_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // the game reads from ay1 port b, but ay8912 only has port a
+ map(0x00, 0x01).w("ay1", FUNC(ay8912_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8912_device::address_data_w));
+}
diff --git a/src/mame/drivers/ondra.cpp b/src/mame/drivers/ondra.cpp
index d2793f1429a..14c73cfabec 100644
--- a/src/mame/drivers/ondra.cpp
+++ b/src/mame/drivers/ondra.cpp
@@ -22,19 +22,21 @@
/* Address maps */
-ADDRESS_MAP_START(ondra_state::ondra_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0xdfff) AM_RAMBANK("bank2")
- AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ondra_state::ondra_io)
- ADDRESS_MAP_GLOBAL_MASK(0x0b)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x03, 0x03) AM_WRITE(ondra_port_03_w)
+void ondra_state::ondra_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0xdfff).bankrw("bank2");
+ map(0xe000, 0xffff).bankrw("bank3");
+}
+
+void ondra_state::ondra_io(address_map &map)
+{
+ map.global_mask(0x0b);
+ map.unmap_value_high();
+ map(0x03, 0x03).w(this, FUNC(ondra_state::ondra_port_03_w));
//AM_RANGE(0x09, 0x09) AM_WRITE(ondra_port_09_w)
//AM_RANGE(0x0a, 0x0a) AM_WRITE(ondra_port_0a_w)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( ondra )
diff --git a/src/mame/drivers/oneshot.cpp b/src/mame/drivers/oneshot.cpp
index 58ffb101e69..93d59f3c8f3 100644
--- a/src/mame/drivers/oneshot.cpp
+++ b/src/mame/drivers/oneshot.cpp
@@ -109,36 +109,38 @@ WRITE16_MEMBER(oneshot_state::soundbank_w)
-ADDRESS_MAP_START(oneshot_state::oneshot_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x120000, 0x120fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(oneshot_mid_videoram_w) AM_SHARE("mid_videoram") // some people , girl etc.
- AM_RANGE(0x181000, 0x181fff) AM_RAM_WRITE(oneshot_fg_videoram_w) AM_SHARE("fg_videoram") // credits etc.
- AM_RANGE(0x182000, 0x182fff) AM_RAM_WRITE(oneshot_bg_videoram_w) AM_SHARE("bg_videoram") // credits etc.
- AM_RANGE(0x188000, 0x18800f) AM_WRITEONLY AM_SHARE("scroll") // scroll registers
- AM_RANGE(0x190002, 0x190003) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x190010, 0x190011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x190018, 0x190019) AM_WRITE(soundbank_w)
- AM_RANGE(0x190026, 0x190027) AM_READ(oneshot_gun_x_p1_r)
- AM_RANGE(0x19002e, 0x19002f) AM_READ(oneshot_gun_x_p2_r)
- AM_RANGE(0x190036, 0x190037) AM_READ(oneshot_gun_y_p1_r)
- AM_RANGE(0x19003e, 0x19003f) AM_READ(oneshot_gun_y_p2_r)
- AM_RANGE(0x19c020, 0x19c021) AM_READ(oneshot_in0_word_r)
- AM_RANGE(0x19c024, 0x19c025) AM_READ_PORT("DSW2")
- AM_RANGE(0x19c02c, 0x19c02d) AM_READ_PORT("CREDITS")
- AM_RANGE(0x19c030, 0x19c031) AM_READ_PORT("P1")
- AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("P2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(oneshot_state::oneshot_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write)
- AM_RANGE(0x8001, 0x87ff) AM_RAM
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+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("sprites");
+ map(0x180000, 0x180fff).ram().w(this, FUNC(oneshot_state::oneshot_mid_videoram_w)).share("mid_videoram"); // some people , girl etc.
+ map(0x181000, 0x181fff).ram().w(this, FUNC(oneshot_state::oneshot_fg_videoram_w)).share("fg_videoram"); // credits etc.
+ map(0x182000, 0x182fff).ram().w(this, 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(0x190018, 0x190019).w(this, FUNC(oneshot_state::soundbank_w));
+ map(0x190026, 0x190027).r(this, FUNC(oneshot_state::oneshot_gun_x_p1_r));
+ map(0x19002e, 0x19002f).r(this, FUNC(oneshot_state::oneshot_gun_x_p2_r));
+ map(0x190036, 0x190037).r(this, FUNC(oneshot_state::oneshot_gun_y_p1_r));
+ map(0x19003e, 0x19003f).r(this, FUNC(oneshot_state::oneshot_gun_y_p2_r));
+ map(0x19c020, 0x19c021).r(this, FUNC(oneshot_state::oneshot_in0_word_r));
+ map(0x19c024, 0x19c025).portr("DSW2");
+ map(0x19c02c, 0x19c02d).portr("CREDITS");
+ map(0x19c030, 0x19c031).portr("P1");
+ map(0x19c034, 0x19c035).portr("P2");
+}
+
+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));
+ map(0x8001, 0x87ff).ram();
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xe010, 0xe010).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
static INPUT_PORTS_START( oneshot )
diff --git a/src/mame/drivers/onetwo.cpp b/src/mame/drivers/onetwo.cpp
index c838830babe..521be6eaeeb 100644
--- a/src/mame/drivers/onetwo.cpp
+++ b/src/mame/drivers/onetwo.cpp
@@ -181,37 +181,41 @@ WRITE8_MEMBER(onetwo_state::palette2_w)
*
*************************************/
-ADDRESS_MAP_START(onetwo_state::main_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc800, 0xc87f) AM_RAM_WRITE(palette1_w) AM_SHARE("paletteram")
- AM_RANGE(0xc900, 0xc97f) AM_RAM_WRITE(palette2_w) AM_SHARE("paletteram2")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(onetwo_fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(onetwo_state::main_cpu_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(onetwo_coin_counters_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE(onetwo_cpubank_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("P2")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(onetwo_state::sound_cpu)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(onetwo_state::sound_cpu_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+void onetwo_state::main_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0x10000);
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc800, 0xc87f).ram().w(this, FUNC(onetwo_state::palette1_w)).share("paletteram");
+ map(0xc900, 0xc97f).ram().w(this, FUNC(onetwo_state::palette2_w)).share("paletteram2");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(onetwo_state::onetwo_fgram_w)).share("fgram");
+ map(0xe000, 0xffff).ram();
+}
+
+void onetwo_state::main_cpu_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1").w(this, FUNC(onetwo_state::onetwo_coin_counters_w));
+ map(0x01, 0x01).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).portr("P1").w(this, FUNC(onetwo_state::onetwo_cpubank_w));
+ map(0x03, 0x03).portr("P2");
+ map(0x04, 0x04).portr("SYSTEM");
+}
+
+void onetwo_state::sound_cpu(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void onetwo_state::sound_cpu_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/onyx.cpp b/src/mame/drivers/onyx.cpp
index 5889377b477..1a6be042567 100644
--- a/src/mame/drivers/onyx.cpp
+++ b/src/mame/drivers/onyx.cpp
@@ -90,13 +90,15 @@ MACHINE_RESET_MEMBER(onyx_state, c8002)
{
}
-ADDRESS_MAP_START(onyx_state::c8002_mem)
- AM_RANGE(0x00000, 0x00fff) AM_ROM AM_SHARE("share0")
- AM_RANGE(0x01000, 0x07fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x08000, 0x0ffff) AM_RAM AM_SHARE("share2") // Z8002 has 64k memory
-ADDRESS_MAP_END
+void onyx_state::c8002_mem(address_map &map)
+{
+ map(0x00000, 0x00fff).rom().share("share0");
+ map(0x01000, 0x07fff).ram().share("share1");
+ map(0x08000, 0x0ffff).ram().share("share2"); // Z8002 has 64k memory
+}
-ADDRESS_MAP_START(onyx_state::c8002_io)
+void onyx_state::c8002_io(address_map &map)
+{
map(0xff00, 0xff07).lrw8("sio1_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sio1->cd_ba_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sio1->cd_ba_w(space, offset >> 1, data, mem_mask); });
map(0xff08, 0xff0f).lrw8("sio2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sio1->cd_ba_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sio1->cd_ba_w(space, offset >> 1, data, mem_mask); });
map(0xff10, 0xff17).lrw8("sio3_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sio1->cd_ba_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sio1->cd_ba_w(space, offset >> 1, data, mem_mask); });
@@ -107,19 +109,21 @@ ADDRESS_MAP_START(onyx_state::c8002_io)
map(0xff40, 0xff47).lrw8("ctc3_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_ctc3->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ctc3->write(space, offset >> 1, data, mem_mask); });
map(0xff50, 0xff57).lrw8("pio1_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_pio1->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pio1->write(space, offset >> 1, data, mem_mask); });
map(0xff58, 0xff5f).lrw8("pio2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_pio2->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pio2->write(space, offset >> 1, data, mem_mask); });
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(onyx_state::submem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void onyx_state::submem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0xffff).ram();
+}
-ADDRESS_MAP_START(onyx_state::subio)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pio1s", z80pio_device, read, write)
- AM_RANGE(0x04, 0x04) AM_READNOP // disk status?
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("sio1s", z80sio_device, cd_ba_r, cd_ba_w )
-ADDRESS_MAP_END
+void onyx_state::subio(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("pio1s", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x04, 0x04).nopr(); // disk status?
+ map(0x0c, 0x0f).rw("sio1s", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+}
/***************************************************************************
@@ -227,15 +231,17 @@ Labels of proms: 339, 153, XMN4, 2_1, 1_2
*********************************************************************************************************************************/
-ADDRESS_MAP_START(onyx_state::c5000_mem)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void onyx_state::c5000_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0xffff).ram();
+}
-ADDRESS_MAP_START(onyx_state::c5000_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio1", z80sio_device, cd_ba_r, cd_ba_w )
-ADDRESS_MAP_END
+void onyx_state::c5000_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x13).rw(m_sio1, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+}
MACHINE_CONFIG_START(onyx_state::c5000)
/* basic machine hardware */
diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp
index 4a731de13de..7cf87c8630c 100644
--- a/src/mame/drivers/opwolf.cpp
+++ b/src/mame/drivers/opwolf.cpp
@@ -346,82 +346,89 @@ WRITE8_MEMBER(opwolf_state::sound_bankswitch_w)
***********************************************************/
-ADDRESS_MAP_START(opwolf_state::opwolf_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0f0000, 0x0f07ff) AM_MIRROR(0xf000) AM_READ(opwolf_cchip_data_r)
- AM_RANGE(0x0f0802, 0x0f0803) AM_MIRROR(0xf000) AM_READ(opwolf_cchip_status_r)
- AM_RANGE(0x0ff000, 0x0ff7ff) AM_WRITE(opwolf_cchip_data_w)
- AM_RANGE(0x0ff802, 0x0ff803) AM_WRITE(opwolf_cchip_status_w)
- AM_RANGE(0x0ffc00, 0x0ffc01) AM_WRITE(opwolf_cchip_bank_w)
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */
- AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire
- AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 */
- AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog ?? */
- AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w)
- AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY /* error in init code (?) */
- AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(opwolf_state::opwolfb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0f0008, 0x0f000b) AM_READ(opwolf_in_r) /* coins and buttons */
- AM_RANGE(0x0ff000, 0x0fffff) AM_READWRITE(cchip_r,cchip_w)
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */
- AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire
- AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 */
- AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog ?? */
- AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w)
- AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY /* error in init code (?) */
- AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(opwolf_state::opwolfp_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x107fff) AM_RAM
-
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */
- AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire
- AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 (AND INPUTS) */
- AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog ?? */
- AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w)
- AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY /* error in init code (?) */
- AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
-ADDRESS_MAP_END
+void opwolf_state::opwolf_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0f0000, 0x0f07ff).mirror(0xf000).r(this, FUNC(opwolf_state::opwolf_cchip_data_r));
+ map(0x0f0802, 0x0f0803).mirror(0xf000).r(this, FUNC(opwolf_state::opwolf_cchip_status_r));
+ map(0x0ff000, 0x0ff7ff).w(this, FUNC(opwolf_state::opwolf_cchip_data_w));
+ map(0x0ff802, 0x0ff803).w(this, FUNC(opwolf_state::opwolf_cchip_status_w));
+ map(0x0ffc00, 0x0ffc01).w(this, FUNC(opwolf_state::opwolf_cchip_bank_w));
+ map(0x100000, 0x107fff).ram();
+ map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x380000, 0x380003).r(this, FUNC(opwolf_state::opwolf_dsw_r)); /* dip switches */
+ map(0x380000, 0x380003).w(this, FUNC(opwolf_state::opwolf_spritectrl_w)); // usually 0x4, changes when you fire
+ map(0x3a0000, 0x3a0003).r(this, FUNC(opwolf_state::opwolf_lightgun_r)); /* lightgun, read at $11e0/6 */
+ map(0x3c0000, 0x3c0001).nopw(); /* watchdog ?? */
+ map(0x3e0000, 0x3e0001).nopr();
+ map(0x3e0000, 0x3e0000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x3e0002, 0x3e0002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xc10000, 0xc1ffff).writeonly(); /* error in init code (?) */
+ map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+}
+
+
+void opwolf_state::opwolfb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0f0008, 0x0f000b).r(this, FUNC(opwolf_state::opwolf_in_r)); /* coins and buttons */
+ map(0x0ff000, 0x0fffff).rw(this, FUNC(opwolf_state::cchip_r), FUNC(opwolf_state::cchip_w));
+ map(0x100000, 0x107fff).ram();
+ map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x380000, 0x380003).r(this, FUNC(opwolf_state::opwolf_dsw_r)); /* dip switches */
+ map(0x380000, 0x380003).w(this, FUNC(opwolf_state::opwolf_spritectrl_w)); // usually 0x4, changes when you fire
+ map(0x3a0000, 0x3a0003).r(this, FUNC(opwolf_state::opwolf_lightgun_r)); /* lightgun, read at $11e0/6 */
+ map(0x3c0000, 0x3c0001).nopw(); /* watchdog ?? */
+ map(0x3e0000, 0x3e0001).nopr();
+ map(0x3e0000, 0x3e0000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x3e0002, 0x3e0002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xc10000, 0xc1ffff).writeonly(); /* error in init code (?) */
+ map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+}
+
+void opwolf_state::opwolfp_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x107fff).ram();
+
+ map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x380000, 0x380003).r(this, FUNC(opwolf_state::opwolf_dsw_r)); /* dip switches */
+ map(0x380000, 0x380003).w(this, FUNC(opwolf_state::opwolf_spritectrl_w)); // usually 0x4, changes when you fire
+ map(0x3a0000, 0x3a0003).r(this, FUNC(opwolf_state::opwolf_lightgun_r)); /* lightgun, read at $11e0/6 (AND INPUTS) */
+ map(0x3c0000, 0x3c0001).nopw(); /* watchdog ?? */
+ map(0x3e0000, 0x3e0001).nopr();
+ map(0x3e0000, 0x3e0000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x3e0002, 0x3e0002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xc10000, 0xc1ffff).writeonly(); /* error in init code (?) */
+ map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+}
/***************************************************************************
This extra Z80 substitutes for the c-chip in the bootleg
*/
-ADDRESS_MAP_START(opwolf_state::opwolfb_sub_z80_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8800, 0x8800) AM_READ(z80_input1_r) /* read at PC=$637: poked to $c004 */
- AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown write, 0 then 1 each interrupt */
- AM_RANGE(0x9800, 0x9800) AM_READ(z80_input2_r) /* read at PC=$631: poked to $c005 */
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP /* IRQ acknowledge (unimplemented) */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("cchip_ram")
-ADDRESS_MAP_END
+void opwolf_state::opwolfb_sub_z80_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8800, 0x8800).r(this, FUNC(opwolf_state::z80_input1_r)); /* read at PC=$637: poked to $c004 */
+ map(0x9000, 0x9000).nopw(); /* unknown write, 0 then 1 each interrupt */
+ map(0x9800, 0x9800).r(this, FUNC(opwolf_state::z80_input2_r)); /* read at PC=$631: poked to $c005 */
+ map(0xa000, 0xa000).nopw(); /* IRQ acknowledge (unimplemented) */
+ map(0xc000, 0xc7ff).ram().share("cchip_ram");
+}
/***************************************************************************/
@@ -550,19 +557,20 @@ WRITE8_MEMBER(opwolf_state::opwolf_adpcm_e_w)
// logerror("CPU #1 e00%i-data=%2x pc=%4x\n",offset,data,m_audiocpu->pc() );
}
-ADDRESS_MAP_START(opwolf_state::opwolf_sound_z80_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x9002, 0x9100) AM_READNOP
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb006) AM_WRITE(opwolf_adpcm_b_w)
- AM_RANGE(0xc000, 0xc006) AM_WRITE(opwolf_adpcm_c_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(opwolf_adpcm_d_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(opwolf_adpcm_e_w)
-ADDRESS_MAP_END
+void opwolf_state::opwolf_sound_z80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9002, 0x9100).nopr();
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb006).w(this, FUNC(opwolf_state::opwolf_adpcm_b_w));
+ map(0xc000, 0xc006).w(this, FUNC(opwolf_state::opwolf_adpcm_c_w));
+ map(0xd000, 0xd000).w(this, FUNC(opwolf_state::opwolf_adpcm_d_w));
+ map(0xe000, 0xe000).w(this, FUNC(opwolf_state::opwolf_adpcm_e_w));
+}
/***********************************************************
INPUT PORTS, DIPs
diff --git a/src/mame/drivers/orao.cpp b/src/mame/drivers/orao.cpp
index 0fc6d11a229..13fb13fa31a 100644
--- a/src/mame/drivers/orao.cpp
+++ b/src/mame/drivers/orao.cpp
@@ -26,15 +26,16 @@
/* Address maps */
-ADDRESS_MAP_START(orao_state::orao_mem)
- AM_RANGE( 0x0000, 0x5fff ) AM_RAM AM_SHARE("memory")
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM AM_SHARE("video_ram") // video ram
- AM_RANGE( 0x8000, 0x9fff ) AM_READWRITE(orao_io_r, orao_io_w )
- AM_RANGE( 0xa000, 0xafff ) AM_RAM // extension
- AM_RANGE( 0xb000, 0xbfff ) AM_RAM // DOS
- AM_RANGE( 0xc000, 0xdfff ) AM_ROM
- AM_RANGE( 0xe000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+void orao_state::orao_mem(address_map &map)
+{
+ map(0x0000, 0x5fff).ram().share("memory");
+ map(0x6000, 0x7fff).ram().share("video_ram"); // video ram
+ map(0x8000, 0x9fff).rw(this, FUNC(orao_state::orao_io_r), FUNC(orao_state::orao_io_w));
+ map(0xa000, 0xafff).ram(); // extension
+ map(0xb000, 0xbfff).ram(); // DOS
+ map(0xc000, 0xdfff).rom();
+ map(0xe000, 0xffff).rom();
+}
/* Input ports */
diff --git a/src/mame/drivers/orbit.cpp b/src/mame/drivers/orbit.cpp
index 8c92ff514cb..fde30c4eb16 100644
--- a/src/mame/drivers/orbit.cpp
+++ b/src/mame/drivers/orbit.cpp
@@ -91,24 +91,25 @@ WRITE_LINE_MEMBER(orbit_state::hyper_led_w)
*
*************************************/
-ADDRESS_MAP_START(orbit_state::orbit_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM
- AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x07ff) AM_READ_PORT("P1")
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x07ff) AM_READ_PORT("P2")
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x07ff) AM_READ_PORT("DSW1")
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07ff) AM_READ_PORT("DSW2")
- AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x07ff) AM_READ_PORT("BUTTONS")
- AM_RANGE(0x3000, 0x33bf) AM_MIRROR(0x0400) AM_RAM_WRITE(orbit_playfield_w) AM_SHARE("playfield_ram")
- AM_RANGE(0x33c0, 0x33ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x00ff) AM_WRITE(orbit_note_w)
- AM_RANGE(0x3900, 0x3900) AM_MIRROR(0x00ff) AM_WRITE(orbit_noise_amp_w)
- AM_RANGE(0x3a00, 0x3a00) AM_MIRROR(0x00ff) AM_WRITE(orbit_note_amp_w)
- AM_RANGE(0x3c00, 0x3c0f) AM_MIRROR(0x00f0) AM_DEVWRITE("latch", f9334_device, write_a0)
- AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x00ff) AM_WRITE(orbit_noise_rst_w)
- AM_RANGE(0x3f00, 0x3f00) AM_MIRROR(0x00ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void orbit_state::orbit_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).mirror(0x0700).ram();
+ map(0x0800, 0x0800).mirror(0x07ff).portr("P1");
+ map(0x1000, 0x1000).mirror(0x07ff).portr("P2");
+ map(0x1800, 0x1800).mirror(0x07ff).portr("DSW1");
+ map(0x2000, 0x2000).mirror(0x07ff).portr("DSW2");
+ map(0x2800, 0x2800).mirror(0x07ff).portr("BUTTONS");
+ map(0x3000, 0x33bf).mirror(0x0400).ram().w(this, FUNC(orbit_state::orbit_playfield_w)).share("playfield_ram");
+ map(0x33c0, 0x33ff).mirror(0x0400).ram().share("sprite_ram");
+ map(0x3800, 0x3800).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_note_w));
+ map(0x3900, 0x3900).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_noise_amp_w));
+ map(0x3a00, 0x3a00).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_note_amp_w));
+ map(0x3c00, 0x3c0f).mirror(0x00f0).w(m_latch, FUNC(f9334_device::write_a0));
+ map(0x3e00, 0x3e00).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_noise_rst_w));
+ map(0x3f00, 0x3f00).mirror(0x00ff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x6000, 0x7fff).rom();
+}
diff --git a/src/mame/drivers/oric.cpp b/src/mame/drivers/oric.cpp
index 96c8fe8b336..ffc520e11f6 100644
--- a/src/mame/drivers/oric.cpp
+++ b/src/mame/drivers/oric.cpp
@@ -190,27 +190,29 @@ protected:
};
/* Ram is 64K, with 16K hidden by the rom. The 300-3ff is also hidden by the i/o */
-ADDRESS_MAP_START(oric_state::oric_mem)
- AM_RANGE( 0x0000, 0xffff) AM_RAM AM_SHARE("ram")
- AM_RANGE( 0x0300, 0x030f) AM_DEVREADWRITE("via6522", via6522_device, read, write) AM_MIRROR(0xf0)
- AM_RANGE( 0xc000, 0xdfff) AM_READ_BANK("bank_c000_r") AM_WRITE_BANK("bank_c000_w")
- AM_RANGE( 0xe000, 0xf7ff) AM_READ_BANK("bank_e000_r") AM_WRITE_BANK("bank_e000_w")
- AM_RANGE( 0xf800, 0xffff) AM_READ_BANK("bank_f800_r") AM_WRITE_BANK("bank_f800_w")
-ADDRESS_MAP_END
+void oric_state::oric_mem(address_map &map)
+{
+ map(0x0000, 0xffff).ram().share("ram");
+ map(0x0300, 0x030f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).mirror(0xf0);
+ map(0xc000, 0xdfff).bankr("bank_c000_r").bankw("bank_c000_w");
+ map(0xe000, 0xf7ff).bankr("bank_e000_r").bankw("bank_e000_w");
+ map(0xf800, 0xffff).bankr("bank_f800_r").bankw("bank_f800_w");
+}
/*
The telestrat has the memory regions split into 16k blocks.
Memory region &c000-&ffff can be ram or rom. */
-ADDRESS_MAP_START(telestrat_state::telestrat_mem)
- AM_RANGE( 0x0000, 0xffff) AM_RAM AM_SHARE("ram")
- AM_RANGE( 0x0300, 0x030f) AM_DEVREADWRITE("via6522", via6522_device, read, write)
- AM_RANGE( 0x0310, 0x0313) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE( 0x0314, 0x0314) AM_READWRITE(port_314_r, port_314_w)
- AM_RANGE( 0x0318, 0x0318) AM_READ(port_318_r)
- AM_RANGE( 0x031c, 0x031f) AM_DEVREADWRITE("acia", mos6551_device, read, write)
- AM_RANGE( 0x0320, 0x032f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write)
- AM_RANGE( 0xc000, 0xffff) AM_READ_BANK("bank_c000_r") AM_WRITE_BANK("bank_c000_w")
-ADDRESS_MAP_END
+void telestrat_state::telestrat_mem(address_map &map)
+{
+ map(0x0000, 0xffff).ram().share("ram");
+ map(0x0300, 0x030f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x0310, 0x0313).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x0314, 0x0314).rw(this, FUNC(telestrat_state::port_314_r), FUNC(telestrat_state::port_314_w));
+ map(0x0318, 0x0318).r(this, FUNC(telestrat_state::port_318_r));
+ map(0x031c, 0x031f).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x0320, 0x032f).rw(m_via2, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xc000, 0xffff).bankr("bank_c000_r").bankw("bank_c000_w");
+}
uint32_t oric_state::screen_update_oric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
diff --git a/src/mame/drivers/orion.cpp b/src/mame/drivers/orion.cpp
index f3f85130ca2..8909988c70c 100644
--- a/src/mame/drivers/orion.cpp
+++ b/src/mame/drivers/orion.cpp
@@ -25,56 +25,62 @@
/* Address maps */
/* Orion 128 */
-ADDRESS_MAP_START(orion_state::orion128_mem)
- AM_RANGE( 0x0000, 0xefff ) AM_RAMBANK("bank1")
- AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank2")
- AM_RANGE( 0xf400, 0xf4ff ) AM_READWRITE(orion128_system_r,orion128_system_w) // Keyboard and cassette
- AM_RANGE( 0xf500, 0xf5ff ) AM_READWRITE(orion128_romdisk_r,orion128_romdisk_w)
- AM_RANGE( 0xf700, 0xf7ff ) AM_READWRITE(orion128_floppy_r,orion128_floppy_w)
- AM_RANGE( 0xf800, 0xffff ) AM_ROM
- AM_RANGE( 0xf800, 0xf8ff ) AM_WRITE(orion128_video_mode_w)
- AM_RANGE( 0xf900, 0xf9ff ) AM_WRITE(orion128_memory_page_w)
- AM_RANGE( 0xfa00, 0xfaff ) AM_WRITE(orion128_video_page_w)
-ADDRESS_MAP_END
+void orion_state::orion128_mem(address_map &map)
+{
+ map(0x0000, 0xefff).bankrw("bank1");
+ map(0xf000, 0xf3ff).bankrw("bank2");
+ map(0xf400, 0xf4ff).rw(this, FUNC(orion_state::orion128_system_r), FUNC(orion_state::orion128_system_w)); // Keyboard and cassette
+ map(0xf500, 0xf5ff).rw(this, FUNC(orion_state::orion128_romdisk_r), FUNC(orion_state::orion128_romdisk_w));
+ map(0xf700, 0xf7ff).rw(this, FUNC(orion_state::orion128_floppy_r), FUNC(orion_state::orion128_floppy_w));
+ map(0xf800, 0xffff).rom();
+ map(0xf800, 0xf8ff).w(this, FUNC(orion_state::orion128_video_mode_w));
+ map(0xf900, 0xf9ff).w(this, FUNC(orion_state::orion128_memory_page_w));
+ map(0xfa00, 0xfaff).w(this, FUNC(orion_state::orion128_video_page_w));
+}
/* Orion Z80 Card II */
-ADDRESS_MAP_START(orion_state::orion128_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0xf8, 0xf8) AM_WRITE(orion128_video_mode_w )
- AM_RANGE( 0xf9, 0xf9) AM_WRITE(orion128_memory_page_w )
- AM_RANGE( 0xfa, 0xfa) AM_WRITE(orion128_video_page_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(orion_state::orionz80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x4000, 0xefff ) AM_RAMBANK("bank2")
- AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank3")
- AM_RANGE( 0xf400, 0xf7ff ) AM_RAMBANK("bank4")
- AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank5")
-ADDRESS_MAP_END
+void orion_state::orion128_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xf8, 0xf8).w(this, FUNC(orion_state::orion128_video_mode_w));
+ map(0xf9, 0xf9).w(this, FUNC(orion_state::orion128_memory_page_w));
+ map(0xfa, 0xfa).w(this, FUNC(orion_state::orion128_video_page_w));
+}
+
+void orion_state::orionz80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0xefff).bankrw("bank2");
+ map(0xf000, 0xf3ff).bankrw("bank3");
+ map(0xf400, 0xf7ff).bankrw("bank4");
+ map(0xf800, 0xffff).bankrw("bank5");
+}
/* Orion Pro */
-ADDRESS_MAP_START(orion_state::orionz80_io)
- AM_RANGE( 0x0000, 0xffff) AM_READWRITE(orionz80_io_r, orionz80_io_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(orion_state::orionpro_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x1fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x2000, 0x3fff ) AM_RAMBANK("bank2")
- AM_RANGE( 0x4000, 0x7fff ) AM_RAMBANK("bank3")
- AM_RANGE( 0x8000, 0xbfff ) AM_RAMBANK("bank4")
- AM_RANGE( 0xc000, 0xefff ) AM_RAMBANK("bank5")
- AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank6")
- AM_RANGE( 0xf400, 0xf7ff ) AM_RAMBANK("bank7")
- AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank8")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(orion_state::orionpro_io)
- AM_RANGE( 0x0000, 0xffff) AM_READWRITE(orionpro_io_r, orionpro_io_w )
-ADDRESS_MAP_END
+void orion_state::orionz80_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(orion_state::orionz80_io_r), FUNC(orion_state::orionz80_io_w));
+}
+
+void orion_state::orionpro_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x3fff).bankrw("bank2");
+ map(0x4000, 0x7fff).bankrw("bank3");
+ map(0x8000, 0xbfff).bankrw("bank4");
+ map(0xc000, 0xefff).bankrw("bank5");
+ map(0xf000, 0xf3ff).bankrw("bank6");
+ map(0xf400, 0xf7ff).bankrw("bank7");
+ map(0xf800, 0xffff).bankrw("bank8");
+}
+
+void orion_state::orionpro_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(orion_state::orionpro_io_r), FUNC(orion_state::orionpro_io_w));
+}
FLOPPY_FORMATS_MEMBER( orion_state::orion_floppy_formats )
FLOPPY_SMX_FORMAT
diff --git a/src/mame/drivers/osbexec.cpp b/src/mame/drivers/osbexec.cpp
index 35793d2d024..d8f68fc50a1 100644
--- a/src/mame/drivers/osbexec.cpp
+++ b/src/mame/drivers/osbexec.cpp
@@ -211,27 +211,29 @@ READ8_MEMBER(osbexec_state::osbexec_rtc_r)
}
-ADDRESS_MAP_START(osbexec_state::osbexec_mem)
- AM_RANGE( 0x0000, 0x1FFF ) AM_READ_BANK("0000") AM_WRITE(osbexec_0000_w ) /* ROM and maybe also banked ram */
- AM_RANGE( 0x2000, 0x3FFF ) AM_RAMBANK("2000") /* Banked RAM */
- AM_RANGE( 0x4000, 0xBFFF ) AM_RAMBANK("4000") /* Banked RAM */
- AM_RANGE( 0xC000, 0xDFFF ) AM_READWRITE(osbexec_c000_r, osbexec_c000_w ) /* Video ram / Banked RAM */
- AM_RANGE( 0xE000, 0xEFFF ) AM_RAMBANK("e000") /* Banked RAM */
- AM_RANGE( 0xF000, 0xFFFF ) AM_RAM /* 4KB of non-banked RAM for system stack etc */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(osbexec_state::osbexec_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0x03 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read, write) /* 6821 PIA @ UD12 */
- AM_RANGE( 0x04, 0x07 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("ctc", pit8253_device, read, write) /* 8253 @UD1 */
- AM_RANGE( 0x08, 0x0B ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("mb8877", wd_fdc_device_base, read, write ) /* MB8877 @ UB17 input clock = 1MHz */
- AM_RANGE( 0x0C, 0x0F ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w ) /* SIO @ UD4 */
- AM_RANGE( 0x10, 0x13 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_1", pia6821_device, read, write) /* 6821 PIA @ UD8 */
- AM_RANGE( 0x14, 0x17 ) AM_SELECT( 0xff00 ) AM_READ(osbexec_kbd_r ) /* KBD */
- AM_RANGE( 0x18, 0x1b ) AM_MIRROR( 0xff00 ) AM_READ(osbexec_rtc_r ) /* "RTC" @ UE13/UF13 */
+void osbexec_state::osbexec_mem(address_map &map)
+{
+ map(0x0000, 0x1FFF).bankr("0000").w(this, FUNC(osbexec_state::osbexec_0000_w)); /* ROM and maybe also banked ram */
+ map(0x2000, 0x3FFF).bankrw("2000"); /* Banked RAM */
+ map(0x4000, 0xBFFF).bankrw("4000"); /* Banked RAM */
+ map(0xC000, 0xDFFF).rw(this, FUNC(osbexec_state::osbexec_c000_r), FUNC(osbexec_state::osbexec_c000_w)); /* Video ram / Banked RAM */
+ map(0xE000, 0xEFFF).bankrw("e000"); /* Banked RAM */
+ map(0xF000, 0xFFFF).ram(); /* 4KB of non-banked RAM for system stack etc */
+}
+
+
+void osbexec_state::osbexec_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x03).mirror(0xff00).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* 6821 PIA @ UD12 */
+ map(0x04, 0x07).mirror(0xff00).rw("ctc", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); /* 8253 @UD1 */
+ map(0x08, 0x0B).mirror(0xff00).rw(m_mb8877, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)); /* MB8877 @ UB17 input clock = 1MHz */
+ map(0x0C, 0x0F).mirror(0xff00).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); /* SIO @ UD4 */
+ map(0x10, 0x13).mirror(0xff00).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* 6821 PIA @ UD8 */
+ map(0x14, 0x17).select(0xff00).r(this, FUNC(osbexec_state::osbexec_kbd_r)); /* KBD */
+ map(0x18, 0x1b).mirror(0xff00).r(this, FUNC(osbexec_state::osbexec_rtc_r)); /* "RTC" @ UE13/UF13 */
/* ?? - vid ? */
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( osbexec )
diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp
index d6b2b9dc593..4916929a3f2 100644
--- a/src/mame/drivers/osborne1.cpp
+++ b/src/mame/drivers/osborne1.cpp
@@ -100,26 +100,29 @@ TODO:
static constexpr XTAL MAIN_CLOCK = 15.9744_MHz_XTAL;
-ADDRESS_MAP_START(osborne1_state::osborne1_mem)
- AM_RANGE( 0x0000, 0x0FFF ) AM_READ_BANK("bank_0xxx") AM_WRITE(bank_0xxx_w)
- AM_RANGE( 0x1000, 0x1FFF ) AM_READ_BANK("bank_1xxx") AM_WRITE(bank_1xxx_w)
- AM_RANGE( 0x2000, 0x3FFF ) AM_READWRITE(bank_2xxx_3xxx_r, bank_2xxx_3xxx_w)
- AM_RANGE( 0x4000, 0xEFFF ) AM_RAM
- AM_RANGE( 0xF000, 0xFFFF ) AM_READ_BANK("bank_fxxx") AM_WRITE(videoram_w)
-ADDRESS_MAP_END
+void osborne1_state::osborne1_mem(address_map &map)
+{
+ map(0x0000, 0x0FFF).bankr("bank_0xxx").w(this, FUNC(osborne1_state::bank_0xxx_w));
+ map(0x1000, 0x1FFF).bankr("bank_1xxx").w(this, FUNC(osborne1_state::bank_1xxx_w));
+ map(0x2000, 0x3FFF).rw(this, FUNC(osborne1_state::bank_2xxx_3xxx_r), FUNC(osborne1_state::bank_2xxx_3xxx_w));
+ map(0x4000, 0xEFFF).ram();
+ map(0xF000, 0xFFFF).bankr("bank_fxxx").w(this, FUNC(osborne1_state::videoram_w));
+}
-ADDRESS_MAP_START(osborne1_state::osborne1_op)
- AM_RANGE( 0x0000, 0xFFFF ) AM_READ(opcode_r)
-ADDRESS_MAP_END
+void osborne1_state::osborne1_op(address_map &map)
+{
+ map(0x0000, 0xFFFF).r(this, FUNC(osborne1_state::opcode_r));
+}
-ADDRESS_MAP_START(osborne1_state::osborne1_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void osborne1_state::osborne1_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
- AM_RANGE( 0x00, 0x03 ) AM_MIRROR( 0xfc ) AM_WRITE(bankswitch_w)
-ADDRESS_MAP_END
+ map(0x00, 0x03).mirror(0xfc).w(this, FUNC(osborne1_state::bankswitch_w));
+}
ADDRESS_MAP_START(osborne1_state::osborne1nv_io)
ADDRESS_MAP_UNMAP_HIGH
diff --git a/src/mame/drivers/osi.cpp b/src/mame/drivers/osi.cpp
index 39b4795ce3b..725c98e2980 100644
--- a/src/mame/drivers/osi.cpp
+++ b/src/mame/drivers/osi.cpp
@@ -448,58 +448,62 @@ WRITE_LINE_MEMBER( c1pmf_state::osi470_pia_cb2_w )
/* Memory Maps */
-ADDRESS_MAP_START(sb2m600_state::osi600_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xdf00, 0xdf00) AM_READWRITE(keyboard_r, keyboard_w)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia_0", acia6850_device, read, write)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(uk101_state::uk101_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xd400, 0xd7ff) AM_NOP // bios sets this to spaces at boot
- AM_RANGE(0xdc00, 0xdfff) AM_READ(keyboard_r) AM_WRITE(keyboard_w)
- AM_RANGE(0xf000, 0xf001) AM_MIRROR(0x00fe) AM_DEVREADWRITE("acia_0", acia6850_device, read, write)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(c1p_state::c1p_mem)
- AM_RANGE(0x0000, 0x4fff) AM_RAMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xc704, 0xc707) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0xc708, 0xc70b) AM_DEVREADWRITE("pia_2", pia6821_device, read, write)
- AM_RANGE(0xc70c, 0xc70f) AM_DEVREADWRITE("pia_3", pia6821_device, read, write)
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("color_ram")
- AM_RANGE(0xd800, 0xd800) AM_WRITE(ctrl_w)
- AM_RANGE(0xdf00, 0xdf00) AM_READWRITE(keyboard_r, keyboard_w)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia_0", acia6850_device, read, write)
- AM_RANGE(0xf7c0, 0xf7c0) AM_WRITE(osi630_sound_w)
- AM_RANGE(0xf7e0, 0xf7e0) AM_WRITE(osi630_ctrl_w)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(c1pmf_state::c1pmf_mem)
- AM_RANGE(0x0000, 0x4fff) AM_RAMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) // FDC
- AM_RANGE(0xc010, 0xc011) AM_DEVREADWRITE("acia_1", acia6850_device, read, write)
- AM_RANGE(0xc704, 0xc707) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0xc708, 0xc70b) AM_DEVREADWRITE("pia_2", pia6821_device, read, write)
- AM_RANGE(0xc70c, 0xc70f) AM_DEVREADWRITE("pia_3", pia6821_device, read, write)
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("color_ram")
- AM_RANGE(0xd800, 0xd800) AM_WRITE(ctrl_w)
- AM_RANGE(0xdf00, 0xdf00) AM_READWRITE(keyboard_r, keyboard_w)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia_0", acia6850_device, read, write)
- AM_RANGE(0xf7c0, 0xf7c0) AM_WRITE(osi630_sound_w)
- AM_RANGE(0xf7e0, 0xf7e0) AM_WRITE(osi630_ctrl_w)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void sb2m600_state::osi600_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0xa000, 0xbfff).rom();
+ map(0xd000, 0xd3ff).ram().share("video_ram");
+ map(0xdf00, 0xdf00).rw(this, FUNC(sb2m600_state::keyboard_r), FUNC(sb2m600_state::keyboard_w));
+ map(0xf000, 0xf001).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xf800, 0xffff).rom();
+}
+
+void uk101_state::uk101_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0xa000, 0xbfff).rom();
+ map(0xd000, 0xd3ff).ram().share("video_ram");
+ map(0xd400, 0xd7ff).noprw(); // bios sets this to spaces at boot
+ map(0xdc00, 0xdfff).r(this, FUNC(uk101_state::keyboard_r)).w(this, FUNC(uk101_state::keyboard_w));
+ map(0xf000, 0xf001).mirror(0x00fe).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xf800, 0xffff).rom();
+}
+
+void c1p_state::c1p_mem(address_map &map)
+{
+ map(0x0000, 0x4fff).bankrw("bank1");
+ map(0xa000, 0xbfff).rom();
+ map(0xc704, 0xc707).rw("pia_1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc708, 0xc70b).rw("pia_2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc70c, 0xc70f).rw("pia_3", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xd000, 0xd3ff).ram().share("video_ram");
+ map(0xd400, 0xd7ff).ram().share("color_ram");
+ map(0xd800, 0xd800).w(this, FUNC(c1p_state::ctrl_w));
+ map(0xdf00, 0xdf00).rw(this, FUNC(c1p_state::keyboard_r), FUNC(c1p_state::keyboard_w));
+ map(0xf000, 0xf001).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xf7c0, 0xf7c0).w(this, FUNC(c1p_state::osi630_sound_w));
+ map(0xf7e0, 0xf7e0).w(this, FUNC(c1p_state::osi630_ctrl_w));
+ map(0xf800, 0xffff).rom();
+}
+
+void c1pmf_state::c1pmf_mem(address_map &map)
+{
+ map(0x0000, 0x4fff).bankrw("bank1");
+ map(0xa000, 0xbfff).rom();
+ map(0xc000, 0xc003).rw("pia_0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // FDC
+ map(0xc010, 0xc011).rw("acia_1", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xc704, 0xc707).rw("pia_1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc708, 0xc70b).rw("pia_2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc70c, 0xc70f).rw("pia_3", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xd000, 0xd3ff).ram().share("video_ram");
+ map(0xd400, 0xd7ff).ram().share("color_ram");
+ map(0xd800, 0xd800).w(this, FUNC(c1pmf_state::ctrl_w));
+ map(0xdf00, 0xdf00).rw(this, FUNC(c1pmf_state::keyboard_r), FUNC(c1pmf_state::keyboard_w));
+ map(0xf000, 0xf001).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xf7c0, 0xf7c0).w(this, FUNC(c1pmf_state::osi630_sound_w));
+ map(0xf7e0, 0xf7e0).w(this, FUNC(c1pmf_state::osi630_ctrl_w));
+ map(0xf800, 0xffff).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp
index e320185885b..7ffeeed445d 100644
--- a/src/mame/drivers/othello.cpp
+++ b/src/mame/drivers/othello.cpp
@@ -160,12 +160,13 @@ PALETTE_INIT_MEMBER(othello_state, othello)
palette.set_pen_color(0x0f, rgb_t(0xff, 0xff, 0xff));
}
-ADDRESS_MAP_START(othello_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x97ff) AM_NOP /* not populated */
- AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void othello_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x97ff).noprw(); /* not populated */
+ map(0x9800, 0x9fff).ram().share("videoram");
+ map(0xf000, 0xffff).ram();
+}
READ8_MEMBER(othello_state::unk_87_r)
{
@@ -213,20 +214,21 @@ WRITE8_MEMBER(othello_state::tilebank_w)
logerror("tilebank -> %x\n", data);
}
-ADDRESS_MAP_START(othello_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x09, 0x09) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("INP")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x83, 0x83) AM_READ_PORT("DSW")
- AM_RANGE(0x86, 0x86) AM_WRITE(tilebank_w)
- AM_RANGE(0x87, 0x87) AM_READ(unk_87_r)
- AM_RANGE(0x8a, 0x8a) AM_WRITE(unk_8a_w)
- AM_RANGE(0x8c, 0x8c) AM_READWRITE(unk_8c_r, unk_8c_w)
- AM_RANGE(0x8d, 0x8d) AM_READ(sound_ack_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x8f, 0x8f) AM_WRITE(unk_8f_w)
-ADDRESS_MAP_END
+void othello_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x08).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x09, 0x09).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x80, 0x80).portr("INP");
+ map(0x81, 0x81).portr("SYSTEM");
+ map(0x83, 0x83).portr("DSW");
+ map(0x86, 0x86).w(this, FUNC(othello_state::tilebank_w));
+ map(0x87, 0x87).r(this, FUNC(othello_state::unk_87_r));
+ map(0x8a, 0x8a).w(this, FUNC(othello_state::unk_8a_w));
+ map(0x8c, 0x8c).rw(this, FUNC(othello_state::unk_8c_r), FUNC(othello_state::unk_8c_w));
+ map(0x8d, 0x8d).r(this, FUNC(othello_state::sound_ack_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x8f, 0x8f).w(this, FUNC(othello_state::unk_8f_w));
+}
READ8_MEMBER(othello_state::latch_r)
{
@@ -257,19 +259,21 @@ WRITE8_MEMBER(othello_state::ay_data_w)
if (m_ay_select & 2) m_ay2->data_w(space, 0, data);
}
-ADDRESS_MAP_START(othello_state::audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(othello_state::audio_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(latch_r)
- AM_RANGE(0x01, 0x01) AM_WRITE(ay_data_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(ay_address_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(ack_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(ay_select_w)
-ADDRESS_MAP_END
+void othello_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x83ff).ram();
+}
+
+void othello_state::audio_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(othello_state::latch_r));
+ map(0x01, 0x01).w(this, FUNC(othello_state::ay_data_w));
+ map(0x03, 0x03).w(this, FUNC(othello_state::ay_address_w));
+ map(0x04, 0x04).w(this, FUNC(othello_state::ack_w));
+ map(0x08, 0x08).w(this, FUNC(othello_state::ay_select_w));
+}
WRITE8_MEMBER(othello_state::n7751_rom_control_w)
{
diff --git a/src/mame/drivers/othunder.cpp b/src/mame/drivers/othunder.cpp
index 120d8e4685a..cc4abc6b0a9 100644
--- a/src/mame/drivers/othunder.cpp
+++ b/src/mame/drivers/othunder.cpp
@@ -470,37 +470,39 @@ WRITE8_MEMBER(othunder_state::tc0310fam_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(othunder_state::othunder_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x090000, 0x09000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
+void othunder_state::othunder_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram();
+ map(0x090000, 0x09000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
// AM_RANGE(0x09000c, 0x09000d) AM_WRITENOP /* ?? (keeps writing 0x77) */
- AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
- AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x300000, 0x300003) AM_READWRITE(sound_r, sound_w)
- AM_RANGE(0x400000, 0x4005ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x500007) AM_READWRITE(lightgun_r, lightgun_w)
- AM_RANGE(0x600000, 0x600003) AM_WRITE(irq_ack_w)
-ADDRESS_MAP_END
+ map(0x100000, 0x100007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */
+ map(0x200000, 0x20ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x220000, 0x22000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x300000, 0x300003).rw(this, FUNC(othunder_state::sound_r), FUNC(othunder_state::sound_w));
+ map(0x400000, 0x4005ff).ram().share("spriteram");
+ map(0x500000, 0x500007).rw(this, FUNC(othunder_state::lightgun_r), FUNC(othunder_state::lightgun_w));
+ map(0x600000, 0x600003).w(this, FUNC(othunder_state::irq_ack_w));
+}
/***************************************************************************/
-ADDRESS_MAP_START(othunder_state::z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITE(tc0310fam_w) /* pan */
- AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */
- AM_RANGE(0xea00, 0xea00) AM_READ_PORT(ROTARY_PORT_TAG) /* rotary input */
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void othunder_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).w(this, FUNC(othunder_state::tc0310fam_w)); /* pan */
+ map(0xe600, 0xe600).nopw(); /* ? */
+ map(0xea00, 0xea00).portr(ROTARY_PORT_TAG); /* rotary input */
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(othunder_state::sound_bankswitch_w));
+}
diff --git a/src/mame/drivers/otomedius.cpp b/src/mame/drivers/otomedius.cpp
index 58d48edc0da..b7164140027 100644
--- a/src/mame/drivers/otomedius.cpp
+++ b/src/mame/drivers/otomedius.cpp
@@ -46,11 +46,12 @@ uint32_t konami_pc_state::screen_update_konami_pc(screen_device &screen, bitmap_
return 0;
}
-ADDRESS_MAP_START(konami_pc_state::konami_pc_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0x70000)
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void konami_pc_state::konami_pc_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000f0000, 0x000fffff).rom().region("maincpu", 0x70000);
+ map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( konami_pc )
INPUT_PORTS_END
diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp
index e466016fbf6..e624dafca50 100644
--- a/src/mame/drivers/overdriv.cpp
+++ b/src/mame/drivers/overdriv.cpp
@@ -156,32 +156,33 @@ WRITE16_MEMBER(overdriv_state::slave_irq5_assert_w)
m_subcpu->set_input_line(5, HOLD_LINE);
}
-ADDRESS_MAP_START(overdriv_state::overdriv_master_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM /* work RAM */
- AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0e0000, 0x0e0001) AM_WRITENOP /* unknown (always 0x30) */
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* 053252? (LSB) */
- AM_RANGE(0x140000, 0x140001) AM_WRITENOP //watchdog reset?
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("PADDLE") AM_WRITENOP // writes 0 at POST and expect that motor busy flag is off, then checks if paddle is at center otherwise throws a "VOLUME ERROR".
- AM_RANGE(0x1c0000, 0x1c001f) AM_DEVWRITE8("k051316_1", k051316_device, ctrl_w, 0xff00)
- AM_RANGE(0x1c8000, 0x1c801f) AM_DEVWRITE8("k051316_2", k051316_device, ctrl_w, 0xff00)
- AM_RANGE(0x1d0000, 0x1d001f) AM_DEVWRITE("k053251", k053251_device, msb_w)
- AM_RANGE(0x1d8000, 0x1d8003) AM_DEVREADWRITE8("k053260_1", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x1e0000, 0x1e0003) AM_DEVREADWRITE8("k053260_2", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x1e8000, 0x1e8001) AM_WRITE(overdriv_soundirq_w)
- AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(cpuA_ctrl_w) /* halt cpu B, coin counter, start lamp, other? */
- AM_RANGE(0x1f8000, 0x1f8001) AM_WRITE(eeprom_w)
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0xff00)
- AM_RANGE(0x218000, 0x218fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0xff00)
- AM_RANGE(0x220000, 0x220fff) AM_DEVREAD8("k051316_1", k051316_device, rom_r, 0xff00)
- AM_RANGE(0x228000, 0x228fff) AM_DEVREAD8("k051316_2", k051316_device, rom_r, 0xff00)
- AM_RANGE(0x230000, 0x230001) AM_WRITE(slave_irq4_assert_w)
- AM_RANGE(0x238000, 0x238001) AM_WRITE(slave_irq5_assert_w)
-ADDRESS_MAP_END
+void overdriv_state::overdriv_master_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram(); /* work RAM */
+ map(0x080000, 0x080fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0c0000, 0x0c0001).portr("INPUTS");
+ map(0x0c0002, 0x0c0003).portr("SYSTEM");
+ map(0x0e0000, 0x0e0001).nopw(); /* unknown (always 0x30) */
+ map(0x100000, 0x10001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* 053252? (LSB) */
+ map(0x140000, 0x140001).nopw(); //watchdog reset?
+ map(0x180000, 0x180001).portr("PADDLE").nopw(); // writes 0 at POST and expect that motor busy flag is off, then checks if paddle is at center otherwise throws a "VOLUME ERROR".
+ map(0x1c0000, 0x1c001f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)).umask16(0xff00);
+ map(0x1c8000, 0x1c801f).w(m_k051316_2, FUNC(k051316_device::ctrl_w)).umask16(0xff00);
+ map(0x1d0000, 0x1d001f).w(m_k053251, FUNC(k053251_device::msb_w));
+ map(0x1d8000, 0x1d8003).rw("k053260_1", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x1e0000, 0x1e0003).rw("k053260_2", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x1e8000, 0x1e8001).w(this, FUNC(overdriv_state::overdriv_soundirq_w));
+ map(0x1f0000, 0x1f0001).w(this, FUNC(overdriv_state::cpuA_ctrl_w)); /* halt cpu B, coin counter, start lamp, other? */
+ map(0x1f8000, 0x1f8001).w(this, FUNC(overdriv_state::eeprom_w));
+ map(0x200000, 0x203fff).ram().share("share1");
+ map(0x210000, 0x210fff).rw(m_k051316_1, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0xff00);
+ map(0x218000, 0x218fff).rw(m_k051316_2, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0xff00);
+ map(0x220000, 0x220fff).r(m_k051316_1, FUNC(k051316_device::rom_r)).umask16(0xff00);
+ map(0x228000, 0x228fff).r(m_k051316_2, FUNC(k051316_device::rom_r)).umask16(0xff00);
+ map(0x230000, 0x230001).w(this, FUNC(overdriv_state::slave_irq4_assert_w));
+ map(0x238000, 0x238001).w(this, FUNC(overdriv_state::slave_irq5_assert_w));
+}
#ifdef UNUSED_FUNCTION
WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w )
@@ -221,43 +222,46 @@ WRITE16_MEMBER(overdriv_state::objdma_w)
m_k053246->k053246_w(space,5,data,mem_mask);
}
-ADDRESS_MAP_START(overdriv_state::overdriv_slave_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM /* work RAM */
- AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
- AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
- AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w)
- AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA..
- AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
- AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */
- AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff)
- AM_RANGE(0x130004, 0x130005) AM_WRITE(objdma_w)
+void overdriv_state::overdriv_slave_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x083fff).ram(); /* work RAM */
+ map(0x0c0000, 0x0c1fff).ram(); //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
+ map(0x100000, 0x10000f).rw("k053250_1", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w));
+ map(0x108000, 0x10800f).rw("k053250_2", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w));
+ map(0x118000, 0x118fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w)); // data gets copied to sprite chip with DMA..
+ map(0x120000, 0x120001).r(m_k053246, FUNC(k053247_device::k053246_word_r));
+ map(0x128000, 0x128001).rw(this, FUNC(overdriv_state::cpuB_ctrl_r), FUNC(overdriv_state::cpuB_ctrl_w)); /* enable K053247 ROM reading, plus something else */
+ map(0x130000, 0x130007).rw(m_k053246, FUNC(k053247_device::k053246_r), FUNC(k053247_device::k053246_w));
+ map(0x130004, 0x130005).w(this, FUNC(overdriv_state::objdma_w));
//AM_RANGE(0x140000, 0x140001) used in later stages, set after writes at 0x208000-0x20bfff range
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x208000, 0x20bfff) AM_RAM // sprite indirect table?
- AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
- AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r)
-ADDRESS_MAP_END
+ map(0x200000, 0x203fff).ram().share("share1");
+ map(0x208000, 0x20bfff).ram(); // sprite indirect table?
+ map(0x218000, 0x219fff).r("k053250_1", FUNC(k053250_device::rom_r));
+ map(0x220000, 0x221fff).r("k053250_2", FUNC(k053250_device::rom_r));
+}
WRITE8_MEMBER(overdriv_state::sound_ack_w)
{
m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
}
-ADDRESS_MAP_START(overdriv_state::overdriv_sound_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w)
+void overdriv_state::overdriv_sound_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(overdriv_state::sound_ack_w));
// 0x012 read during explosions
// 0x180
- AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write)
- AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write)
- AM_RANGE(0x0800, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(overdriv_state::overdriv_k053260_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_REGION("k053260", 0)
-ADDRESS_MAP_END
+ map(0x0200, 0x0201).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x0400, 0x042f).rw("k053260_1", FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0x0600, 0x062f).rw("k053260_2", FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0x0800, 0x0fff).ram();
+ map(0x1000, 0xffff).rom();
+}
+
+void overdriv_state::overdriv_k053260_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom().region("k053260", 0);
+}
/* Both IPT_START1 assignments are needed. The game will reset during */
/* the "continue" sequence if the assignment on the first port */
diff --git a/src/mame/drivers/p112.cpp b/src/mame/drivers/p112.cpp
index 3f2b38406cb..dfb80728991 100644
--- a/src/mame/drivers/p112.cpp
+++ b/src/mame/drivers/p112.cpp
@@ -55,16 +55,18 @@ public:
};
-ADDRESS_MAP_START(p112_state::p112_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x07fff) AM_ROM
- AM_RANGE(0x08000, 0xfffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(p112_state::p112_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void p112_state::p112_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x07fff).rom();
+ map(0x08000, 0xfffff).ram();
+}
+
+void p112_state::p112_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
/* Input ports */
static INPUT_PORTS_START( p112 )
diff --git a/src/mame/drivers/p2000t.cpp b/src/mame/drivers/p2000t.cpp
index acd56d1b7cb..d62bdc661d4 100644
--- a/src/mame/drivers/p2000t.cpp
+++ b/src/mame/drivers/p2000t.cpp
@@ -36,35 +36,38 @@ Philips P2000 1 Memory map
/* port i/o functions */
-ADDRESS_MAP_START(p2000t_state::p2000t_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_READ(p2000t_port_000f_r)
- AM_RANGE(0x10, 0x1f) AM_WRITE(p2000t_port_101f_w)
- AM_RANGE(0x20, 0x2f) AM_READ(p2000t_port_202f_r)
- AM_RANGE(0x30, 0x3f) AM_WRITE(p2000t_port_303f_w)
- AM_RANGE(0x50, 0x5f) AM_WRITE(p2000t_port_505f_w)
- AM_RANGE(0x70, 0x7f) AM_WRITE(p2000t_port_707f_w)
- AM_RANGE(0x88, 0x8b) AM_WRITE(p2000t_port_888b_w)
- AM_RANGE(0x8c, 0x90) AM_WRITE(p2000t_port_8c90_w)
- AM_RANGE(0x94, 0x94) AM_WRITE(p2000t_port_9494_w)
-ADDRESS_MAP_END
+void p2000t_state::p2000t_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).r(this, FUNC(p2000t_state::p2000t_port_000f_r));
+ map(0x10, 0x1f).w(this, FUNC(p2000t_state::p2000t_port_101f_w));
+ map(0x20, 0x2f).r(this, FUNC(p2000t_state::p2000t_port_202f_r));
+ map(0x30, 0x3f).w(this, FUNC(p2000t_state::p2000t_port_303f_w));
+ map(0x50, 0x5f).w(this, FUNC(p2000t_state::p2000t_port_505f_w));
+ map(0x70, 0x7f).w(this, FUNC(p2000t_state::p2000t_port_707f_w));
+ map(0x88, 0x8b).w(this, FUNC(p2000t_state::p2000t_port_888b_w));
+ map(0x8c, 0x90).w(this, FUNC(p2000t_state::p2000t_port_8c90_w));
+ map(0x94, 0x94).w(this, FUNC(p2000t_state::p2000t_port_9494_w));
+}
/* Memory w/r functions */
-ADDRESS_MAP_START(p2000t_state::p2000t_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x4fff) AM_ROM
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x5800, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xffff) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(p2000m_state::p2000m_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x4fff) AM_ROM
- AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void p2000t_state::p2000t_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x4fff).rom();
+ map(0x5000, 0x57ff).ram().share("videoram");
+ map(0x5800, 0x9fff).ram();
+ map(0xa000, 0xffff).noprw();
+}
+
+void p2000m_state::p2000m_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x4fff).rom();
+ map(0x5000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x9fff).ram();
+ map(0xa000, 0xffff).noprw();
+}
/* graphics output */
diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp
index a4dfd157e8a..4065ee1c001 100644
--- a/src/mame/drivers/p8k.cpp
+++ b/src/mame/drivers/p8k.cpp
@@ -125,38 +125,40 @@ private:
****************************************************************************/
-ADDRESS_MAP_START(p8k_state::p8k_memmap)
- AM_RANGE(0x0000, 0x0FFF) AM_RAMBANK("bank0")
- AM_RANGE(0x1000, 0x1FFF) AM_RAMBANK("bank1")
- AM_RANGE(0x2000, 0x2FFF) AM_RAMBANK("bank2")
- AM_RANGE(0x3000, 0x3FFF) AM_RAMBANK("bank3")
- AM_RANGE(0x4000, 0x4FFF) AM_RAMBANK("bank4")
- AM_RANGE(0x5000, 0x5FFF) AM_RAMBANK("bank5")
- AM_RANGE(0x6000, 0x6FFF) AM_RAMBANK("bank6")
- AM_RANGE(0x7000, 0x7FFF) AM_RAMBANK("bank7")
- AM_RANGE(0x8000, 0x8FFF) AM_RAMBANK("bank8")
- AM_RANGE(0x9000, 0x9FFF) AM_RAMBANK("bank9")
- AM_RANGE(0xA000, 0xAFFF) AM_RAMBANK("bank10")
- AM_RANGE(0xB000, 0xBFFF) AM_RAMBANK("bank11")
- AM_RANGE(0xC000, 0xCFFF) AM_RAMBANK("bank12")
- AM_RANGE(0xD000, 0xDFFF) AM_RAMBANK("bank13")
- AM_RANGE(0xE000, 0xEFFF) AM_RAMBANK("bank14")
- AM_RANGE(0xF000, 0xFFFF) AM_RAMBANK("bank15")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(p8k_state::p8k_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_READWRITE(p8k_port0_r,p8k_port0_w) // MH7489
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc0", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio0", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x20, 0x21) AM_DEVICE("i8272", i8272a_device, map)
- AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write)
- AM_RANGE(0x3c, 0x3c) AM_DEVREADWRITE("dma", z80dma_device, read, write)
-ADDRESS_MAP_END
+void p8k_state::p8k_memmap(address_map &map)
+{
+ map(0x0000, 0x0FFF).bankrw("bank0");
+ map(0x1000, 0x1FFF).bankrw("bank1");
+ map(0x2000, 0x2FFF).bankrw("bank2");
+ map(0x3000, 0x3FFF).bankrw("bank3");
+ map(0x4000, 0x4FFF).bankrw("bank4");
+ map(0x5000, 0x5FFF).bankrw("bank5");
+ map(0x6000, 0x6FFF).bankrw("bank6");
+ map(0x7000, 0x7FFF).bankrw("bank7");
+ map(0x8000, 0x8FFF).bankrw("bank8");
+ map(0x9000, 0x9FFF).bankrw("bank9");
+ map(0xA000, 0xAFFF).bankrw("bank10");
+ map(0xB000, 0xBFFF).bankrw("bank11");
+ map(0xC000, 0xCFFF).bankrw("bank12");
+ map(0xD000, 0xDFFF).bankrw("bank13");
+ map(0xE000, 0xEFFF).bankrw("bank14");
+ map(0xF000, 0xFFFF).bankrw("bank15");
+}
+
+void p8k_state::p8k_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x07).rw(this, FUNC(p8k_state::p8k_port0_r), FUNC(p8k_state::p8k_port0_w)); // MH7489
+ map(0x08, 0x0b).rw("ctc0", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).rw("pio0", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x18, 0x1b).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x1c, 0x1f).rw(m_pio2, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x20, 0x21).m(m_i8272, FUNC(i8272a_device::map));
+ map(0x24, 0x27).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x28, 0x2b).rw("sio1", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x2c, 0x2f).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x3c, 0x3c).rw("dma", FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+}
@@ -319,36 +321,39 @@ DRIVER_INIT_MEMBER(p8k_state,p8k)
****************************************************************************/
-ADDRESS_MAP_START(p8k_state::p8k_16_memmap)
- AM_RANGE(0x00000, 0x03fff) AM_ROM AM_SHARE("share0")
- AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x08000, 0xfffff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
+void p8k_state::p8k_16_memmap(address_map &map)
+{
+ map(0x00000, 0x03fff).rom().share("share0");
+ map(0x04000, 0x07fff).ram().share("share1");
+ map(0x08000, 0xfffff).ram().share("share2");
+}
-ADDRESS_MAP_START(p8k_state::p8k_16_datamap)
- AM_RANGE(0x00000, 0x03fff) AM_ROM AM_SHARE("share0")
- AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x08000, 0xfffff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
+void p8k_state::p8k_16_datamap(address_map &map)
+{
+ map(0x00000, 0x03fff).rom().share("share0");
+ map(0x04000, 0x07fff).ram().share("share1");
+ map(0x08000, 0xfffff).ram().share("share2");
+}
-ADDRESS_MAP_START(p8k_state::p8k_16_iomap)
+void p8k_state::p8k_16_iomap(address_map &map)
+{
// AM_RANGE(0x0fef0, 0x0feff) // clock
- AM_RANGE(0x0ff80, 0x0ff87) AM_DEVREADWRITE8("sio", z80sio_device, cd_ba_r, cd_ba_w, 0xff)
- AM_RANGE(0x0ff88, 0x0ff8f) AM_DEVREADWRITE8("sio1", z80sio_device, cd_ba_r, cd_ba_w, 0xff)
- AM_RANGE(0x0ff90, 0x0ff97) AM_DEVREADWRITE8("pio0", z80pio_device, read_alt, write_alt, 0xff)
- AM_RANGE(0x0ff98, 0x0ff9f) AM_DEVREADWRITE8("pio1", z80pio_device, read_alt, write_alt, 0xff)
- AM_RANGE(0x0ffa0, 0x0ffa7) AM_DEVREADWRITE8("pio2", z80pio_device, read_alt, write_alt, 0xff)
- AM_RANGE(0x0ffa8, 0x0ffaf) AM_DEVREADWRITE8("ctc0", z80ctc_device, read, write, 0xff)
- AM_RANGE(0x0ffb0, 0x0ffb7) AM_DEVREADWRITE8("ctc1", z80ctc_device, read, write, 0xff)
+ map(0x0ff80, 0x0ff87).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)).umask16(0x00ff);
+ map(0x0ff88, 0x0ff8f).rw("sio1", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)).umask16(0x00ff);
+ map(0x0ff90, 0x0ff97).rw("pio0", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).umask16(0x00ff);
+ map(0x0ff98, 0x0ff9f).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).umask16(0x00ff);
+ map(0x0ffa0, 0x0ffa7).rw(m_pio2, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).umask16(0x00ff);
+ map(0x0ffa8, 0x0ffaf).rw("ctc0", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff);
+ map(0x0ffb0, 0x0ffb7).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff);
// AM_RANGE(0x0ffc0, 0x0ffc1) // SCR
// AM_RANGE(0x0ffc8, 0x0ffc9) // SBR
// AM_RANGE(0x0ffd0, 0x0ffd1) // NBR
// AM_RANGE(0x0ffd8, 0x0ffd9) // SNVR
- AM_RANGE(0x0ffe0, 0x0ffe1) AM_DEVWRITE8("p8k_16_daisy", p8k_16_daisy_device, reti_w, 0xff)
+ map(0x0ffe1, 0x0ffe1).w(m_daisy, FUNC(p8k_16_daisy_device::reti_w));
// AM_RANGE(0x0fff0, 0x0fff1) // TRPL
// AM_RANGE(0x0fff8, 0x0fff9) // IF1L
-ADDRESS_MAP_END
+}
/***************************************************************************
diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp
index 6135b480c91..bba8b18b00a 100644
--- a/src/mame/drivers/pachifev.cpp
+++ b/src/mame/drivers/pachifev.cpp
@@ -140,29 +140,31 @@ READ8_MEMBER(pachifev_state::controls_r)
return output_bit;
}
-ADDRESS_MAP_START(pachifev_state::pachifev_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
-
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf0fb) AM_NOP /* internal ram */
- AM_RANGE(0xff00, 0xff00) AM_READ_PORT("IN0")
- AM_RANGE(0xff02, 0xff02) AM_READ_PORT("IN1")
- AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW1")
- AM_RANGE(0xff06, 0xff06) AM_READ_PORT("DSW2")
- AM_RANGE(0xff08, 0xff08) AM_READ_PORT("DSW3")
- AM_RANGE(0xff10, 0xff10) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xff12, 0xff12) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0xff20, 0xff20) AM_DEVWRITE("y2404_1", y2404_device, write)
- AM_RANGE(0xff30, 0xff30) AM_DEVWRITE("y2404_2", y2404_device, write)
- AM_RANGE(0xff40, 0xff40) AM_WRITE(controls_w)
- AM_RANGE(0xff50, 0xff50) AM_WRITENOP /* unknown */
- AM_RANGE(0xfffa, 0xfffb) AM_NOP /* decrementer */
- AM_RANGE(0xfffc, 0xffff) AM_NOP /* nmi */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pachifev_state::pachifev_cru)
- AM_RANGE(0x000, 0x000) AM_READ(controls_r)
-ADDRESS_MAP_END
+void pachifev_state::pachifev_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+
+ map(0xe000, 0xe7ff).ram();
+ map(0xf000, 0xf0fb).noprw(); /* internal ram */
+ map(0xff00, 0xff00).portr("IN0");
+ map(0xff02, 0xff02).portr("IN1");
+ 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(0xff40, 0xff40).w(this, FUNC(pachifev_state::controls_w));
+ map(0xff50, 0xff50).nopw(); /* unknown */
+ map(0xfffa, 0xfffb).noprw(); /* decrementer */
+ map(0xfffc, 0xffff).noprw(); /* nmi */
+}
+
+void pachifev_state::pachifev_cru(address_map &map)
+{
+ map(0x000, 0x000).r(this, FUNC(pachifev_state::controls_r));
+}
/* verified from TMS9995 code */
diff --git a/src/mame/drivers/pacland.cpp b/src/mame/drivers/pacland.cpp
index 8ada3ecf98e..643bf6226ae 100644
--- a/src/mame/drivers/pacland.cpp
+++ b/src/mame/drivers/pacland.cpp
@@ -194,7 +194,6 @@ Notes:
#include "includes/pacland.h"
#include "cpu/m6809/m6809.h"
-#include "cpu/m6800/m6801.h"
#include "machine/watchdog.h"
#include "speaker.h"
@@ -260,33 +259,35 @@ WRITE8_MEMBER(pacland_state::irq_2_ctrl_w)
-ADDRESS_MAP_START(pacland_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x2000, 0x37ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3800, 0x3801) AM_WRITE(scroll0_w)
- AM_RANGE(0x3a00, 0x3a01) AM_WRITE(scroll1_w)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITE(bankswitch_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
- AM_RANGE(0x7000, 0x7fff) AM_WRITE(irq_1_ctrl_w)
- AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_WRITE(subreset_w)
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(flipscreen_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacland_state::mcu_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog? */
- AM_RANGE(0x4000, 0x7fff) AM_WRITE(irq_2_ctrl_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd003) AM_READ(input_r)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void pacland_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().w(this, FUNC(pacland_state::videoram_w)).share("videoram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(pacland_state::videoram2_w)).share("videoram2");
+ map(0x2000, 0x37ff).ram().share("spriteram");
+ map(0x3800, 0x3801).w(this, FUNC(pacland_state::scroll0_w));
+ map(0x3a00, 0x3a01).w(this, FUNC(pacland_state::scroll1_w));
+ map(0x3c00, 0x3c00).w(this, FUNC(pacland_state::bankswitch_w));
+ map(0x4000, 0x5fff).bankr("bank1");
+ map(0x6800, 0x6bff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
+ map(0x7000, 0x7fff).w(this, FUNC(pacland_state::irq_1_ctrl_w));
+ map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8000, 0xffff).rom();
+ map(0x8000, 0x8fff).w(this, FUNC(pacland_state::subreset_w));
+ map(0x9000, 0x9fff).w(this, FUNC(pacland_state::flipscreen_w));
+}
+
+void pacland_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
+ map(0x2000, 0x3fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog? */
+ map(0x4000, 0x7fff).w(this, FUNC(pacland_state::irq_2_ctrl_w));
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd003).r(this, FUNC(pacland_state::input_r));
+ map(0xf000, 0xffff).rom();
+}
READ8_MEMBER(pacland_state::readFF)
@@ -294,12 +295,13 @@ READ8_MEMBER(pacland_state::readFF)
return 0xff;
}
-ADDRESS_MAP_START(pacland_state::mcu_port_map)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("IN2")
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(coin_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(led_w)
-ADDRESS_MAP_END
+void pacland_state::mcu_port_map(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).portr("IN2");
+ map(M6801_PORT1, M6801_PORT1).w(this, FUNC(pacland_state::coin_w));
+ map(M6801_PORT2, M6801_PORT2).r(this, FUNC(pacland_state::readFF)); /* leds won't work otherwise */
+ map(M6801_PORT2, M6801_PORT2).w(this, FUNC(pacland_state::led_w));
+}
diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp
index 481bc0236e2..51c2e588687 100644
--- a/src/mame/drivers/pacman.cpp
+++ b/src/mame/drivers/pacman.cpp
@@ -996,354 +996,369 @@ READ8_MEMBER(pacman_state::pacman_read_nop)
*
*************************************/
-ADDRESS_MAP_START(pacman_state::pacman_map)
+void pacman_state::pacman_map(address_map &map)
+{
//A lot of games don't have an a15 at the cpu. Generally only games with a cpu daughter board can access the full 32k of romspace.
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", addressable_latch_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::birdiy_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ map(0x0000, 0x3fff).mirror(0x8000).rom();
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(addressable_latch_device::write_d0));
+ map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+}
+
+
+void pacman_state::birdiy_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x8000).rom();
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
// AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5080, 0x509f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x50a0, 0x50af) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5080, 0x509f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x50a0, 0x50af).mirror(0xaf00).writeonly().share("spriteram2");
// AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
// AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+}
-ADDRESS_MAP_START(pacman_state::mspacman_map)
+void pacman_state::mspacman_map(address_map &map)
+{
/* start with 0000-3fff and 8000-bfff mapped to the ROMs */
- AM_RANGE(0x0000, 0xffff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_UNMAP
-
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
+ map(0x0000, 0xffff).bankr("bank1");
+ map(0x4000, 0x7fff).mirror(0x8000).unmaprw();
+
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
/* overlay decode enable/disable on top */
- AM_RANGE(0x0038, 0x003f) AM_READWRITE(mspacman_disable_decode_r_0x0038,mspacman_disable_decode_w)
- AM_RANGE(0x03b0, 0x03b7) AM_READWRITE(mspacman_disable_decode_r_0x03b0,mspacman_disable_decode_w)
- AM_RANGE(0x1600, 0x1607) AM_READWRITE(mspacman_disable_decode_r_0x1600,mspacman_disable_decode_w)
- AM_RANGE(0x2120, 0x2127) AM_READWRITE(mspacman_disable_decode_r_0x2120,mspacman_disable_decode_w)
- AM_RANGE(0x3ff0, 0x3ff7) AM_READWRITE(mspacman_disable_decode_r_0x3ff0,mspacman_disable_decode_w)
- AM_RANGE(0x3ff8, 0x3fff) AM_READWRITE(mspacman_enable_decode_r_0x3ff8,mspacman_enable_decode_w)
- AM_RANGE(0x8000, 0x8007) AM_READWRITE(mspacman_disable_decode_r_0x8000,mspacman_disable_decode_w)
- AM_RANGE(0x97f0, 0x97f7) AM_READWRITE(mspacman_disable_decode_r_0x97f0,mspacman_disable_decode_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::woodpek_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
- AM_RANGE(0x8000, 0xbfff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::numcrash_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_ROM
+ map(0x0038, 0x003f).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x0038), FUNC(pacman_state::mspacman_disable_decode_w));
+ map(0x03b0, 0x03b7).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x03b0), FUNC(pacman_state::mspacman_disable_decode_w));
+ map(0x1600, 0x1607).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x1600), FUNC(pacman_state::mspacman_disable_decode_w));
+ map(0x2120, 0x2127).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x2120), FUNC(pacman_state::mspacman_disable_decode_w));
+ map(0x3ff0, 0x3ff7).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x3ff0), FUNC(pacman_state::mspacman_disable_decode_w));
+ map(0x3ff8, 0x3fff).rw(this, FUNC(pacman_state::mspacman_enable_decode_r_0x3ff8), FUNC(pacman_state::mspacman_enable_decode_w));
+ map(0x8000, 0x8007).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x8000), FUNC(pacman_state::mspacman_disable_decode_w));
+ map(0x97f0, 0x97f7).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x97f0), FUNC(pacman_state::mspacman_disable_decode_w));
+}
+
+
+void pacman_state::woodpek_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+ map(0x8000, 0xbfff).rom();
+}
+
+
+void pacman_state::numcrash_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).rom();
/* 0x2800 - 0x2fff unmapped? */
- AM_RANGE(0x3000, 0x37ff) AM_ROM
+ map(0x3000, 0x37ff).rom();
/* 0x3800 - 0x3fff unmapped? */
- AM_RANGE(0x8000, 0x9fff) AM_ROM
+ map(0x8000, 0x9fff).rom();
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ map(0x4000, 0x43ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
- AM_RANGE(0x4c00, 0x4fef) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ map(0x4c00, 0x4fef).ram();
+ map(0x4ff0, 0x4fff).ram().share("spriteram");
+ map(0x5000, 0x5007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).writeonly().share("spriteram2");
// AM_RANGE(0x5070, 0x507f) AM_WRITENOP
// AM_RANGE(0x5080, 0x5080) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).portr("IN0");
+ map(0x5040, 0x5040).portr("IN1");
+ map(0x5080, 0x5080).portr("DSW1");
// AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2") // only one DSW on the PCB
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::alibaba_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4eef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ef0, 0x4eff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4f00, 0x4fff) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("latch1", ls259_device, write_d0)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf38) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5040, 0x506f) AM_MIRROR(0xaf00) AM_WRITE(alibaba_sound_w) /* the sound region is not contiguous */
- AM_RANGE(0x5050, 0x505f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c7) AM_MIRROR(0xaf00) AM_DEVWRITE("latch2", ls259_device, write_d0)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf00) AM_READ(alibaba_mystery_1_r)
- AM_RANGE(0x50c1, 0x50c1) AM_MIRROR(0xaf00) AM_READ(alibaba_mystery_2_r)
- AM_RANGE(0x50c2, 0x50ff) AM_MIRROR(0xaf00) AM_READ(pacman_read_nop)
- AM_RANGE(0x8000, 0x8fff) AM_ROM
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::dremshpr_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
+}
+
+
+void pacman_state::alibaba_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4eef).mirror(0xa000).ram();
+ map(0x4ef0, 0x4eff).mirror(0xa000).ram().share("spriteram");
+ map(0x4f00, 0x4fff).mirror(0xa000).ram();
+ map(0x5000, 0x5007).mirror(0xaf38).w("latch1", FUNC(ls259_device::write_d0));
+ map(0x5000, 0x5000).mirror(0xaf38).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5040, 0x506f).mirror(0xaf00).w(this, FUNC(pacman_state::alibaba_sound_w)); /* the sound region is not contiguous */
+ map(0x5050, 0x505f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c7).mirror(0xaf00).w("latch2", FUNC(ls259_device::write_d0));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf00).r(this, FUNC(pacman_state::alibaba_mystery_1_r));
+ map(0x50c1, 0x50c1).mirror(0xaf00).r(this, FUNC(pacman_state::alibaba_mystery_2_r));
+ map(0x50c2, 0x50ff).mirror(0xaf00).r(this, FUNC(pacman_state::pacman_read_nop));
+ map(0x8000, 0x8fff).rom();
+ map(0x9000, 0x93ff).mirror(0x0c00).ram();
+ map(0xa000, 0xa7ff).mirror(0x1800).rom();
+}
+
+
+void pacman_state::dremshpr_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
// AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
- AM_RANGE(0x8000, 0xbfff) AM_ROM
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+ map(0x8000, 0xbfff).rom();
/* vanvan: probably a leftover from development: the Sanritsu version writes
the color lookup table here, while the Karateco version writes garbage. */
- AM_RANGE(0xb800, 0xb87f) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::epos_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::s2650games_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1")
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x6000) AM_WRITE(s2650games_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1400, 0x141f) AM_MIRROR(0x6000) AM_WRITE(s2650games_scroll_w)
- AM_RANGE(0x1420, 0x148f) AM_MIRROR(0x6000) AM_WRITEONLY
- AM_RANGE(0x1490, 0x149f) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("s2650_spriteram")
- AM_RANGE(0x14a0, 0x14bf) AM_MIRROR(0x6000) AM_WRITE(s2650games_tilesbank_w) AM_SHARE("s2650_tileram")
- AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY
- AM_RANGE(0x1500, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x1508, 0x155f) AM_MIRROR(0x6000) AM_WRITEONLY
- AM_RANGE(0x1560, 0x156f) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x1570, 0x157f) AM_MIRROR(0x6000) AM_WRITEONLY
- AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_WRITENOP
- AM_RANGE(0x15c0, 0x15c0) AM_MIRROR(0x6000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x15c7, 0x15c7) AM_MIRROR(0x6000) AM_WRITE(porky_banking_w)
- AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
- AM_RANGE(0x1540, 0x1540) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
- AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(s2650games_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1fef) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1ff0, 0x1fff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("bank2")
- AM_RANGE(0x4000, 0x4fff) AM_ROMBANK("bank3")
- AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank4")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::rocktrv2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4c00, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5fe0, 0x5fe3) AM_WRITE(rocktrv2_prot_data_w) AM_SHARE("rocktrv2_prot")
- AM_RANGE(0x5ff0, 0x5ff0) AM_WRITE(rocktrv2_question_bank_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x507f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
- AM_RANGE(0x5fe0, 0x5fe0) AM_READ(rocktrv2_prot1_data_r)
- AM_RANGE(0x5fe4, 0x5fe4) AM_READ(rocktrv2_prot2_data_r)
- AM_RANGE(0x5fe8, 0x5fe8) AM_READ(rocktrv2_prot3_data_r)
- AM_RANGE(0x5fec, 0x5fec) AM_READ(rocktrv2_prot4_data_r)
- AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("DSW2") /* DSW2 mirrored */
- AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_READ(rocktrv2_question_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::bigbucks_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4c00, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x503f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x507f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x50bf) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50ff) AM_READ_PORT("DSW2")
- AM_RANGE(0x5100, 0x5100) AM_WRITENOP /*?*/
- AM_RANGE(0x6000, 0x6000) AM_WRITE(bigbucks_bank_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::mschamp_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::superabc_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4fef) AM_MIRROR(0xa000) AM_RAM AM_SHARE("28c16.u17") // nvram
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5002, 0x5002) AM_MIRROR(0xaf3c) AM_WRITE(superabc_bank_w)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank3")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pacman_state::crushs_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
- AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_WRITENOP // doesn't use pacman sound hw
- AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
- AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
- AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(pacman_state::pengojpm_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
+ map(0xb800, 0xb87f).nopw();
+}
+
+
+void pacman_state::epos_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x8000).bankr("bank1");
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+}
+
+
+void pacman_state::s2650games_map(address_map &map)
+{
+ map(0x0000, 0x0fff).bankr("bank1");
+ map(0x1000, 0x13ff).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_colorram_w)).share("colorram");
+ map(0x1400, 0x141f).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_scroll_w));
+ map(0x1420, 0x148f).mirror(0x6000).writeonly();
+ map(0x1490, 0x149f).mirror(0x6000).writeonly().share("s2650_spriteram");
+ map(0x14a0, 0x14bf).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_tilesbank_w)).share("s2650_tileram");
+ map(0x14c0, 0x14ff).mirror(0x6000).writeonly();
+ map(0x1500, 0x1507).mirror(0x6000).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x1508, 0x155f).mirror(0x6000).writeonly();
+ map(0x1560, 0x156f).mirror(0x6000).writeonly().share("spriteram2");
+ map(0x1570, 0x157f).mirror(0x6000).writeonly();
+ map(0x1586, 0x1587).mirror(0x6000).nopw();
+ map(0x15c0, 0x15c0).mirror(0x6000).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x15c7, 0x15c7).mirror(0x6000).w(this, FUNC(pacman_state::porky_banking_w));
+ map(0x1500, 0x1500).mirror(0x6000).portr("IN0");
+ map(0x1540, 0x1540).mirror(0x6000).portr("IN1");
+ map(0x1580, 0x1580).mirror(0x6000).portr("DSW0");
+ map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_videoram_w)).share("videoram");
+ map(0x1c00, 0x1fef).mirror(0x6000).ram();
+ map(0x1ff0, 0x1fff).mirror(0x6000).writeonly().share("spriteram");
+ map(0x2000, 0x2fff).bankr("bank2");
+ map(0x4000, 0x4fff).bankr("bank3");
+ map(0x6000, 0x6fff).bankr("bank4");
+}
+
+
+void pacman_state::rocktrv2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4c00, 0x4fff).ram();
+ map(0x5000, 0x5007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5fe0, 0x5fe3).w(this, FUNC(pacman_state::rocktrv2_prot_data_w)).share("rocktrv2_prot");
+ map(0x5ff0, 0x5ff0).w(this, FUNC(pacman_state::rocktrv2_question_bank_w));
+ map(0x5000, 0x5000).portr("IN0");
+ map(0x5040, 0x507f).portr("IN1");
+ map(0x5080, 0x5080).portr("DSW1");
+ map(0x50c0, 0x50c0).portr("DSW2");
+ map(0x5fe0, 0x5fe0).r(this, FUNC(pacman_state::rocktrv2_prot1_data_r));
+ map(0x5fe4, 0x5fe4).r(this, FUNC(pacman_state::rocktrv2_prot2_data_r));
+ map(0x5fe8, 0x5fe8).r(this, FUNC(pacman_state::rocktrv2_prot3_data_r));
+ map(0x5fec, 0x5fec).r(this, FUNC(pacman_state::rocktrv2_prot4_data_r));
+ map(0x5fff, 0x5fff).portr("DSW2"); /* DSW2 mirrored */
+ map(0x6000, 0x7fff).rom();
+ map(0x8000, 0xffff).r(this, FUNC(pacman_state::rocktrv2_question_r));
+}
+
+
+void pacman_state::bigbucks_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4c00, 0x4fff).ram();
+ map(0x5000, 0x5007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x503f).portr("IN0");
+ map(0x5040, 0x507f).portr("IN1");
+ map(0x5080, 0x50bf).portr("DSW1");
+ map(0x50c0, 0x50ff).portr("DSW2");
+ map(0x5100, 0x5100).nopw(); /*?*/
+ map(0x6000, 0x6000).w(this, FUNC(pacman_state::bigbucks_bank_w));
+ map(0x8000, 0x9fff).rom();
+}
+
+
+void pacman_state::mschamp_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+ map(0x8000, 0xbfff).bankr("bank2");
+}
+
+
+void pacman_state::superabc_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4fef).mirror(0xa000).ram().share("28c16.u17"); // nvram
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5002, 0x5002).mirror(0xaf3c).w(this, FUNC(pacman_state::superabc_bank_w));
+ map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1");
+ map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2");
+ map(0x8000, 0x9fff).bankr("bank2");
+ map(0xa000, 0xbfff).bankr("bank3");
+}
+
+
+void pacman_state::crushs_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x8000).rom();
+ map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
+ map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw();
+ map(0x4c00, 0x4fef).mirror(0xa000).ram();
+ map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram");
+ map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x5040, 0x505f).mirror(0xaf00).nopw(); // doesn't use pacman sound hw
+ map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2");
+ map(0x5070, 0x507f).mirror(0xaf00).nopw();
+ map(0x5080, 0x5080).mirror(0xaf3f).nopw();
+ map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0");
+ map(0x5080, 0x5080).mirror(0xaf3f).portr("IN1");
+}
+
+
+
+void pacman_state::pengojpm_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
// AM_RANGE(0x1000, 0x1fff) // header check for 0x55aa at POST, diagnostic ROM?
- AM_RANGE(0x4000, 0x7fff) AM_ROM
+ map(0x4000, 0x7fff).rom();
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ map(0x8000, 0x83ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram");
- AM_RANGE(0x8800, 0x8bff) AM_RAM
+ map(0x8800, 0x8bff).ram();
// AM_RANGE(0x8800, 0x8bff) AM_READ(pacman_read_nop) AM_WRITENOP
- AM_RANGE(0x8c00, 0x8fef) AM_RAM
- AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9000, 0x9007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x9040, 0x905f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x9060, 0x906f) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x9070, 0x907f) AM_WRITENOP
- AM_RANGE(0x9080, 0x9080) AM_WRITENOP
- AM_RANGE(0x90c0, 0x90c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN0")
- AM_RANGE(0x9040, 0x9040) AM_READ_PORT("IN1")
- AM_RANGE(0x9080, 0x9080) AM_READ_PORT("DSW1")
- AM_RANGE(0x90c0, 0x90c0) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x8c00, 0x8fef).ram();
+ map(0x8ff0, 0x8fff).ram().share("spriteram");
+ map(0x9000, 0x9007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x9040, 0x905f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x9060, 0x906f).writeonly().share("spriteram2");
+ map(0x9070, 0x907f).nopw();
+ map(0x9080, 0x9080).nopw();
+ map(0x90c0, 0x90c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x9000, 0x9000).portr("IN0");
+ map(0x9040, 0x9040).portr("IN1");
+ map(0x9080, 0x9080).portr("DSW1");
+ map(0x90c0, 0x90c0).portr("DSW2");
+
+ map(0xf000, 0xffff).ram();
+}
/*************************************
@@ -1352,71 +1367,84 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(pacman_state::writeport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(pacman_interrupt_vector_w) /* Pac-Man only */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::vanvan_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn2", sn76496_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::dremshpr_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay8910", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::piranha_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(piranha_interrupt_vector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::nmouse_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(nmouse_interrupt_vector_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::epos_portmap)
- AM_IMPORT_FROM(writeport)
- AM_RANGE(0x00, 0xff) AM_READ(epos_decryption_w) /* Switch protection logic */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::mschamp_portmap)
- AM_IMPORT_FROM(writeport)
- AM_RANGE(0x00, 0x00) AM_READ(mschamp_kludge_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::bigbucks_portmap)
- AM_RANGE(0x0000, 0xffff) AM_READ(bigbucks_question_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::s2650games_dataport)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_DEVWRITE("sn1", sn76496_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::drivfrcp_portmap)
- AM_RANGE(0x00, 0x00) AM_READNOP
- AM_RANGE(0x01, 0x01) AM_READ(drivfrcp_port1_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::_8bpm_portmap)
- AM_RANGE(0x00, 0x00) AM_READNOP
- AM_RANGE(0x01, 0x01) AM_READ(_8bpm_port1_r)
- AM_RANGE(0xe0, 0xe0) AM_READNOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::porky_portmap)
- AM_RANGE(0x01, 0x01) AM_READ(porky_port1_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pacman_state::crushs_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay8912", ay8912_device, data_address_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1")
-ADDRESS_MAP_END
+void pacman_state::writeport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(pacman_state::pacman_interrupt_vector_w)); /* Pac-Man only */
+}
+
+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));
+}
+
+void pacman_state::dremshpr_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x06, 0x07).w("ay8910", FUNC(ay8910_device::data_address_w));
+}
+
+void pacman_state::piranha_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(pacman_state::piranha_interrupt_vector_w));
+}
+
+void pacman_state::nmouse_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(pacman_state::nmouse_interrupt_vector_w));
+}
+
+void pacman_state::epos_portmap(address_map &map)
+{
+ writeport(map);
+ map(0x00, 0xff).r(this, FUNC(pacman_state::epos_decryption_w)); /* Switch protection logic */
+}
+
+void pacman_state::mschamp_portmap(address_map &map)
+{
+ writeport(map);
+ map(0x00, 0x00).r(this, FUNC(pacman_state::mschamp_kludge_r));
+}
+
+void pacman_state::bigbucks_portmap(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(pacman_state::bigbucks_question_r));
+}
+
+void pacman_state::s2650games_dataport(address_map &map)
+{
+ map(S2650_DATA_PORT, S2650_DATA_PORT).w("sn1", FUNC(sn76496_device::write));
+}
+
+void pacman_state::drivfrcp_portmap(address_map &map)
+{
+ map(0x00, 0x00).nopr();
+ map(0x01, 0x01).r(this, FUNC(pacman_state::drivfrcp_port1_r));
+}
+
+void pacman_state::_8bpm_portmap(address_map &map)
+{
+ map(0x00, 0x00).nopr();
+ map(0x01, 0x01).r(this, FUNC(pacman_state::_8bpm_port1_r));
+ map(0xe0, 0xe0).nopr();
+}
+
+void pacman_state::porky_portmap(address_map &map)
+{
+ map(0x01, 0x01).r(this, FUNC(pacman_state::porky_port1_r));
+}
+
+void pacman_state::crushs_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay8912", FUNC(ay8912_device::data_address_w));
+ map(0x01, 0x01).portr("DSW2");
+ map(0x02, 0x02).portr("DSW1");
+}
diff --git a/src/mame/drivers/palm.cpp b/src/mame/drivers/palm.cpp
index 1b9c5ad9ad2..ae9349c1403 100644
--- a/src/mame/drivers/palm.cpp
+++ b/src/mame/drivers/palm.cpp
@@ -165,10 +165,11 @@ PALETTE_INIT_MEMBER(palm_state, palm)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(palm_state::palm_map)
- AM_RANGE(0xc00000, 0xe07fff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xfff000, 0xffffff) AM_DEVREADWRITE(MC68328_TAG, mc68328_device, read, write)
-ADDRESS_MAP_END
+void palm_state::palm_map(address_map &map)
+{
+ map(0xc00000, 0xe07fff).rom().region("bios", 0);
+ map(0xfff000, 0xffffff).rw(m_lsi, FUNC(mc68328_device::read), FUNC(mc68328_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/palmz22.cpp b/src/mame/drivers/palmz22.cpp
index 822d4ee9b4c..5829deb7990 100644
--- a/src/mame/drivers/palmz22.cpp
+++ b/src/mame/drivers/palmz22.cpp
@@ -268,9 +268,10 @@ void palmz22_state::machine_reset()
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(palmz22_state::palmz22_map)
- AM_RANGE(0x30000000, 0x31ffffff) AM_RAM
-ADDRESS_MAP_END
+void palmz22_state::palmz22_map(address_map &map)
+{
+ map(0x30000000, 0x31ffffff).ram();
+}
/***************************************************************************
MACHINE DRIVERS
diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp
index 347884531e3..64211f1d80f 100644
--- a/src/mame/drivers/pandoras.cpp
+++ b/src/mame/drivers/pandoras.cpp
@@ -117,57 +117,62 @@ WRITE_LINE_MEMBER(pandoras_state::coin_counter_2_w)
}
-ADDRESS_MAP_START(pandoras_state::pandoras_master_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("spriteram") /* Work RAM (Shared with CPU B) */
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE("colorram") /* Color RAM (shared with CPU B) */
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE("videoram") /* Video RAM (shared with CPU B) */
- AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) /* INT control */
- AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w) /* bg scroll */
- AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w) /* cause INT on the Z80 */
- AM_RANGE(0x1e00, 0x1e00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound command to the Z80 */
- AM_RANGE(0x2000, 0x2000) AM_WRITE(pandoras_cpub_irqtrigger_w) /* cause FIRQ on CPU B */
- AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */
- AM_RANGE(0x4000, 0x5fff) AM_ROM /* space for diagnostic ROM */
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("share4") /* Shared RAM with CPU B */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pandoras_state::pandoras_slave_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("spriteram") /* Work RAM (Shared with CPU A) */
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE("colorram") /* Color RAM (shared with CPU A) */
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE("videoram") /* Video RAM (shared with CPU A) */
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) /* INT control */
- AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1a01, 0x1a01) AM_READ_PORT("P1")
- AM_RANGE(0x1a02, 0x1a02) AM_READ_PORT("P2")
- AM_RANGE(0x1a03, 0x1a03) AM_READ_PORT("DSW3")
- AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW2")
+void pandoras_state::pandoras_master_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("spriteram"); /* Work RAM (Shared with CPU B) */
+ map(0x1000, 0x13ff).ram().w(this, FUNC(pandoras_state::pandoras_cram_w)).share("colorram"); /* Color RAM (shared with CPU B) */
+ map(0x1400, 0x17ff).ram().w(this, FUNC(pandoras_state::pandoras_vram_w)).share("videoram"); /* Video RAM (shared with CPU B) */
+ map(0x1800, 0x1807).w("mainlatch", FUNC(ls259_device::write_d0)); /* INT control */
+ map(0x1a00, 0x1a00).w(this, FUNC(pandoras_state::pandoras_scrolly_w)); /* bg scroll */
+ map(0x1c00, 0x1c00).w(this, FUNC(pandoras_state::pandoras_z80_irqtrigger_w)); /* cause INT on the Z80 */
+ map(0x1e00, 0x1e00).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound command to the Z80 */
+ map(0x2000, 0x2000).w(this, FUNC(pandoras_state::pandoras_cpub_irqtrigger_w)); /* cause FIRQ on CPU B */
+ map(0x2001, 0x2001).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */
+ map(0x4000, 0x5fff).rom(); /* space for diagnostic ROM */
+ map(0x6000, 0x67ff).ram().share("share4"); /* Shared RAM with CPU B */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void pandoras_state::pandoras_slave_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("spriteram"); /* Work RAM (Shared with CPU A) */
+ map(0x1000, 0x13ff).ram().w(this, FUNC(pandoras_state::pandoras_cram_w)).share("colorram"); /* Color RAM (shared with CPU A) */
+ map(0x1400, 0x17ff).ram().w(this, FUNC(pandoras_state::pandoras_vram_w)).share("videoram"); /* Video RAM (shared with CPU A) */
+ map(0x1800, 0x1800).portr("DSW1");
+ map(0x1800, 0x1807).w("mainlatch", FUNC(ls259_device::write_d0)); /* INT control */
+ map(0x1a00, 0x1a00).portr("SYSTEM");
+ map(0x1a01, 0x1a01).portr("P1");
+ map(0x1a02, 0x1a02).portr("P2");
+ map(0x1a03, 0x1a03).portr("DSW3");
+ map(0x1c00, 0x1c00).portr("DSW2");
// AM_RANGE(0x1e00, 0x1e00) AM_READNOP /* ??? seems to be important */
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */
- AM_RANGE(0xa000, 0xa000) AM_WRITE(pandoras_cpua_irqtrigger_w) /* cause FIRQ on CPU A */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share4") /* Shared RAM with the CPU A */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pandoras_state::pandoras_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM /* ROM */
- AM_RANGE(0x2000, 0x23ff) AM_RAM /* RAM */
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY-8910 */
- AM_RANGE(0x6001, 0x6001) AM_DEVREAD("aysnd", ay8910_device, data_r) /* AY-8910 */
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("aysnd", ay8910_device, data_w) /* AY-8910 */
- AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w) /* cause INT on the 8039 */
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* sound command to the 8039 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pandoras_state::pandoras_i8039_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pandoras_state::pandoras_i8039_io_map)
- AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */
+ map(0xa000, 0xa000).w(this, FUNC(pandoras_state::pandoras_cpua_irqtrigger_w)); /* cause FIRQ on CPU A */
+ map(0xc000, 0xc7ff).ram().share("share4"); /* Shared RAM with the CPU A */
+ map(0xe000, 0xffff).rom(); /* ROM */
+}
+
+void pandoras_state::pandoras_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom(); /* ROM */
+ map(0x2000, 0x23ff).ram(); /* RAM */
+ map(0x4000, 0x4000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x6000, 0x6000).w("aysnd", FUNC(ay8910_device::address_w)); /* AY-8910 */
+ map(0x6001, 0x6001).r("aysnd", FUNC(ay8910_device::data_r)); /* AY-8910 */
+ map(0x6002, 0x6002).w("aysnd", FUNC(ay8910_device::data_w)); /* AY-8910 */
+ map(0x8000, 0x8000).w(this, FUNC(pandoras_state::pandoras_i8039_irqtrigger_w)); /* cause INT on the 8039 */
+ map(0xa000, 0xa000).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* sound command to the 8039 */
+}
+
+void pandoras_state::pandoras_i8039_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void pandoras_state::pandoras_i8039_io_map(address_map &map)
+{
+ map(0x00, 0xff).r("soundlatch2", FUNC(generic_latch_8_device::read));
+}
/***************************************************************************
diff --git a/src/mame/drivers/pangofun.cpp b/src/mame/drivers/pangofun.cpp
index d984735ae3e..5a49388de5a 100644
--- a/src/mame/drivers/pangofun.cpp
+++ b/src/mame/drivers/pangofun.cpp
@@ -115,26 +115,28 @@ public:
};
-ADDRESS_MAP_START(pangofun_state::pcat_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0)
- AM_RANGE(0x000e0000, 0x000effff) AM_ROM AM_REGION("game_prg", 0)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 )
+void pangofun_state::pcat_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0);
+ map(0x000e0000, 0x000effff).rom().region("game_prg", 0);
+ map(0x000f0000, 0x000fffff).rom().region("bios", 0);
/* TODO: correct RAM mapping/size? */
- AM_RANGE(0x00100000, 0x00ffffff) AM_NOP
- AM_RANGE(0x01000000, 0x01ffffff) AM_RAM
- AM_RANGE(0x02000000, 0xfffeffff) AM_NOP
- AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pangofun_state::pcat_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e0, 0x00e3) AM_WRITENOP
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x00100000, 0x00ffffff).noprw();
+ map(0x01000000, 0x01ffffff).ram();
+ map(0x02000000, 0xfffeffff).noprw();
+ map(0xffff0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void pangofun_state::pcat_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e0, 0x00e3).nopw();
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+}
#define AT_KEYB_HELPER(bit, text, key1) \
PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(text) PORT_CODE(key1)
diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp
index 33d7e129243..6069b545f43 100644
--- a/src/mame/drivers/panicr.cpp
+++ b/src/mame/drivers/panicr.cpp
@@ -428,29 +428,30 @@ WRITE8_MEMBER(panicr_state::t5182shared_w)
}
-ADDRESS_MAP_START(panicr_state::panicr_map)
- AM_RANGE(0x00000, 0x01fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x02000, 0x03cff) AM_RAM AM_SHARE("spriteram") // how big is sprite ram, some places definitely have sprites at 3000+
- AM_RANGE(0x03d00, 0x03fff) AM_RAM
- AM_RANGE(0x08000, 0x0bfff) AM_READ(collision_r)
- AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x0d000, 0x0d000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
- AM_RANGE(0x0d002, 0x0d002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
- AM_RANGE(0x0d004, 0x0d004) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r)
- AM_RANGE(0x0d006, 0x0d006) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w)
- AM_RANGE(0x0d200, 0x0d2ff) AM_READWRITE(t5182shared_r, t5182shared_w)
- AM_RANGE(0x0d400, 0x0d400) AM_READ_PORT("P1")
- AM_RANGE(0x0d402, 0x0d402) AM_READ_PORT("P2")
- AM_RANGE(0x0d404, 0x0d404) AM_READ_PORT("START")
- AM_RANGE(0x0d406, 0x0d406) AM_READ_PORT("DSW1")
- AM_RANGE(0x0d407, 0x0d407) AM_READ_PORT("DSW2")
- AM_RANGE(0x0d802, 0x0d802) AM_WRITE(scrollx_hi_w)
- AM_RANGE(0x0d804, 0x0d804) AM_WRITE(scrollx_lo_w)
- AM_RANGE(0x0d80a, 0x0d80a) AM_WRITE(output_w)
- AM_RANGE(0x0d80c, 0x0d80c) AM_WRITEONLY AM_SHARE("spritebank")
- AM_RANGE(0x0d818, 0x0d818) AM_WRITENOP // watchdog?
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void panicr_state::panicr_map(address_map &map)
+{
+ map(0x00000, 0x01fff).ram().share("mainram");
+ map(0x02000, 0x03cff).ram().share("spriteram"); // how big is sprite ram, some places definitely have sprites at 3000+
+ map(0x03d00, 0x03fff).ram();
+ map(0x08000, 0x0bfff).r(this, FUNC(panicr_state::collision_r));
+ map(0x0c000, 0x0cfff).ram().share("textram");
+ map(0x0d000, 0x0d000).w(m_t5182, FUNC(t5182_device::sound_irq_w));
+ map(0x0d002, 0x0d002).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_acquire_w));
+ map(0x0d004, 0x0d004).r(m_t5182, FUNC(t5182_device::sharedram_semaphore_snd_r));
+ map(0x0d006, 0x0d006).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_release_w));
+ map(0x0d200, 0x0d2ff).rw(this, FUNC(panicr_state::t5182shared_r), FUNC(panicr_state::t5182shared_w));
+ map(0x0d400, 0x0d400).portr("P1");
+ map(0x0d402, 0x0d402).portr("P2");
+ map(0x0d404, 0x0d404).portr("START");
+ map(0x0d406, 0x0d406).portr("DSW1");
+ map(0x0d407, 0x0d407).portr("DSW2");
+ map(0x0d802, 0x0d802).w(this, FUNC(panicr_state::scrollx_hi_w));
+ map(0x0d804, 0x0d804).w(this, FUNC(panicr_state::scrollx_lo_w));
+ map(0x0d80a, 0x0d80a).w(this, FUNC(panicr_state::output_w));
+ map(0x0d80c, 0x0d80c).writeonly().share("spritebank");
+ map(0x0d818, 0x0d818).nopw(); // watchdog?
+ map(0xf0000, 0xfffff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp
index 6d2a199290f..3f7d769ec04 100644
--- a/src/mame/drivers/paradise.cpp
+++ b/src/mame/drivers/paradise.cpp
@@ -128,54 +128,60 @@ WRITE8_MEMBER(paradise_state::torus_coin_counter_w)
machine().bookkeeping().coin_counter_w(0, data ^ 0xff);
}
-ADDRESS_MAP_START(paradise_state::base_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("prgbank") /* ROM (banked) */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2") /* Background */
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") /* Midground */
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") /* Foreground */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paradise_state::paradise_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xd800, 0xd8ff) AM_RAM // RAM
- AM_RANGE(0xd900, 0xe0ff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xe100, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paradise_state::tgtball_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xd800, 0xd8ff) AM_RAM // RAM
- AM_RANGE(0xd900, 0xd9ff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xda00, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paradise_state::torus_map)
- AM_IMPORT_FROM(base_map)
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xe000, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paradise_state::torus_io_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0x1800, 0x1800) AM_WRITE(priority_w) // Layers priority
- AM_RANGE(0x2001, 0x2001) AM_WRITE(flipscreen_w) // Flip Screen
- AM_RANGE(0x2004, 0x2004) AM_WRITE(palbank_w) // Layers palette bank
- AM_RANGE(0x2006, 0x2006) AM_WRITE(rombank_w) // ROM bank
- AM_RANGE(0x2010, 0x2010) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // OKI 0
- AM_RANGE(0x2020, 0x2020) AM_READ_PORT("DSW1")
- AM_RANGE(0x2021, 0x2021) AM_READ_PORT("DSW2")
- AM_RANGE(0x2022, 0x2022) AM_READ_PORT("P1")
- AM_RANGE(0x2023, 0x2023) AM_READ_PORT("P2")
- AM_RANGE(0x2024, 0x2024) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x8000, 0xffff) AM_RAM_WRITE(pixmap_w) AM_SHARE("videoram") // Pixmap
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paradise_state::paradise_io_map)
- AM_IMPORT_FROM(torus_io_map)
- AM_RANGE(0x2007, 0x2007) AM_WRITE(paradise_okibank_w) // OKI 1 samples bank
- AM_RANGE(0x2030, 0x2030) AM_DEVREADWRITE("oki2", okim6295_device, read, write) // OKI 1
-ADDRESS_MAP_END
+void paradise_state::base_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* ROM */
+ map(0x8000, 0xbfff).bankr("prgbank"); /* ROM (banked) */
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(paradise_state::vram_2_w)).share("vram_2"); /* Background */
+ map(0xc800, 0xcfff).ram().w(this, FUNC(paradise_state::vram_1_w)).share("vram_1"); /* Midground */
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(paradise_state::vram_0_w)).share("vram_0"); /* Foreground */
+}
+
+void paradise_state::paradise_map(address_map &map)
+{
+ base_map(map);
+ map(0xd800, 0xd8ff).ram(); // RAM
+ map(0xd900, 0xe0ff).ram().share("spriteram"); // Sprites
+ map(0xe100, 0xffff).ram(); // RAM
+}
+
+void paradise_state::tgtball_map(address_map &map)
+{
+ base_map(map);
+ map(0xd800, 0xd8ff).ram(); // RAM
+ map(0xd900, 0xd9ff).ram().share("spriteram"); // Sprites
+ map(0xda00, 0xffff).ram(); // RAM
+}
+
+void paradise_state::torus_map(address_map &map)
+{
+ base_map(map);
+ map(0xd800, 0xdfff).ram().share("spriteram"); // Sprites
+ map(0xe000, 0xffff).ram(); // RAM
+}
+
+void paradise_state::torus_io_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram().w(this, FUNC(paradise_state::palette_w)).share("paletteram"); // Palette
+ map(0x1800, 0x1800).w(this, FUNC(paradise_state::priority_w)); // Layers priority
+ map(0x2001, 0x2001).w(this, FUNC(paradise_state::flipscreen_w)); // Flip Screen
+ map(0x2004, 0x2004).w(this, FUNC(paradise_state::palbank_w)); // Layers palette bank
+ map(0x2006, 0x2006).w(this, FUNC(paradise_state::rombank_w)); // ROM bank
+ map(0x2010, 0x2010).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI 0
+ map(0x2020, 0x2020).portr("DSW1");
+ map(0x2021, 0x2021).portr("DSW2");
+ map(0x2022, 0x2022).portr("P1");
+ map(0x2023, 0x2023).portr("P2");
+ map(0x2024, 0x2024).portr("SYSTEM");
+ map(0x8000, 0xffff).ram().w(this, FUNC(paradise_state::pixmap_w)).share("videoram"); // Pixmap
+}
+
+void paradise_state::paradise_io_map(address_map &map)
+{
+ torus_io_map(map);
+ map(0x2007, 0x2007).w(this, FUNC(paradise_state::paradise_okibank_w)); // OKI 1 samples bank
+ map(0x2030, 0x2030).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI 1
+}
/***************************************************************************
diff --git a/src/mame/drivers/paranoia.cpp b/src/mame/drivers/paranoia.cpp
index de95a8fa890..b492f78fcf2 100644
--- a/src/mame/drivers/paranoia.cpp
+++ b/src/mame/drivers/paranoia.cpp
@@ -78,42 +78,47 @@ static INPUT_PORTS_START( paranoia )
PCE_STANDARD_INPUT_PORT_P1
INPUT_PORTS_END
-ADDRESS_MAP_START(paranoia_state::pce_mem)
- AM_RANGE( 0x000000, 0x03FFFF) AM_ROM
- AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000)
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paranoia_state::pce_io)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
-ADDRESS_MAP_END
+void paranoia_state::pce_mem(address_map &map)
+{
+ map(0x000000, 0x03FFFF).rom();
+ map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000);
+ map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+ map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(paranoia_state::pce_joystick_r), FUNC(paranoia_state::pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+}
+
+void paranoia_state::pce_io(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+}
WRITE8_MEMBER(paranoia_state::i8085_d000_w)
{
//logerror( "D000 (8085) write %02x\n", data );
}
-ADDRESS_MAP_START(paranoia_state::paranoia_8085_map)
- AM_RANGE( 0x0000, 0x7fff) AM_ROM
- AM_RANGE( 0x8000, 0x80ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w)
- AM_RANGE( 0x8100, 0x8107) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w)
- AM_RANGE( 0xd000, 0xd000) AM_WRITE(i8085_d000_w )
- AM_RANGE( 0xe000, 0xe1ff) AM_RAM
-ADDRESS_MAP_END
+void paranoia_state::paranoia_8085_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x80ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x8100, 0x8107).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0xd000, 0xd000).w(this, FUNC(paranoia_state::i8085_d000_w));
+ map(0xe000, 0xe1ff).ram();
+}
-ADDRESS_MAP_START(paranoia_state::paranoia_8085_io_map)
-ADDRESS_MAP_END
+void paranoia_state::paranoia_8085_io_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(paranoia_state::paranoia_z80_map)
- AM_RANGE( 0x0000, 0x3fff) AM_ROM
- AM_RANGE( 0x6000, 0x67ff) AM_RAM
- AM_RANGE( 0x7000, 0x73ff) AM_RAM
-ADDRESS_MAP_END
+void paranoia_state::paranoia_z80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x7000, 0x73ff).ram();
+}
READ8_MEMBER(paranoia_state::z80_io_01_r)
{
@@ -133,13 +138,14 @@ WRITE8_MEMBER(paranoia_state::z80_io_37_w)
{
}
-ADDRESS_MAP_START(paranoia_state::paranoia_z80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_READ(z80_io_01_r )
- AM_RANGE( 0x02, 0x02 ) AM_READ(z80_io_02_r )
- AM_RANGE( 0x17, 0x17 ) AM_WRITE(z80_io_17_w )
- AM_RANGE( 0x37, 0x37 ) AM_WRITE(z80_io_37_w )
-ADDRESS_MAP_END
+void paranoia_state::paranoia_z80_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(this, FUNC(paranoia_state::z80_io_01_r));
+ map(0x02, 0x02).r(this, FUNC(paranoia_state::z80_io_02_r));
+ map(0x17, 0x17).w(this, FUNC(paranoia_state::z80_io_17_w));
+ map(0x37, 0x37).w(this, FUNC(paranoia_state::z80_io_37_w));
+}
WRITE8_MEMBER(paranoia_state::i8155_a_w)
{
diff --git a/src/mame/drivers/parodius.cpp b/src/mame/drivers/parodius.cpp
index 031851aa35a..8c42ee3e773 100644
--- a/src/mame/drivers/parodius.cpp
+++ b/src/mame/drivers/parodius.cpp
@@ -92,43 +92,47 @@ WRITE8_MEMBER(parodius_state::sound_arm_nmi_w)
/********************************************/
-ADDRESS_MAP_START(parodius_state::parodius_map)
- AM_RANGE(0x0000, 0x07ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
- AM_RANGE(0x0800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x5fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x2000, 0x27ff) AM_DEVICE("bank2000", address_map_bank_device, amap8)
- AM_RANGE(0x3f8c, 0x3f8c) AM_READ_PORT("P1")
- AM_RANGE(0x3f8d, 0x3f8d) AM_READ_PORT("P2")
- AM_RANGE(0x3f8e, 0x3f8e) AM_READ_PORT("DSW3")
- AM_RANGE(0x3f8f, 0x3f8f) AM_READ_PORT("DSW1")
- AM_RANGE(0x3f90, 0x3f90) AM_READ_PORT("DSW2")
- AM_RANGE(0x3fa0, 0x3faf) AM_DEVREADWRITE("k053245", k05324x_device, k053244_r, k053244_w)
- AM_RANGE(0x3fb0, 0x3fbf) AM_DEVWRITE("k053251", k053251_device, write)
- AM_RANGE(0x3fc0, 0x3fc0) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(parodius_3fc0_w)
- AM_RANGE(0x3fc4, 0x3fc4) AM_WRITE(parodius_videobank_w)
- AM_RANGE(0x3fc8, 0x3fc8) AM_WRITE(parodius_sh_irqtrigger_w)
- AM_RANGE(0x3fcc, 0x3fcd) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write)
- AM_RANGE(0x6000, 0x9fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION("maincpu", 0x3a000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(parodius_state::bank0000_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(parodius_state::bank2000_map)
- AM_RANGE(0x0000, 0x07ff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("k053245", k05324x_device, k053245_r, k053245_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(parodius_state::parodius_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
- AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
-ADDRESS_MAP_END
+void parodius_state::parodius_map(address_map &map)
+{
+ map(0x0000, 0x07ff).m(m_bank0000, FUNC(address_map_bank_device::amap8));
+ map(0x0800, 0x1fff).ram();
+ map(0x2000, 0x5fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x2000, 0x27ff).m(m_bank2000, FUNC(address_map_bank_device::amap8));
+ map(0x3f8c, 0x3f8c).portr("P1");
+ map(0x3f8d, 0x3f8d).portr("P2");
+ map(0x3f8e, 0x3f8e).portr("DSW3");
+ map(0x3f8f, 0x3f8f).portr("DSW1");
+ map(0x3f90, 0x3f90).portr("DSW2");
+ map(0x3fa0, 0x3faf).rw(m_k053245, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w));
+ map(0x3fb0, 0x3fbf).w(m_k053251, FUNC(k053251_device::write));
+ map(0x3fc0, 0x3fc0).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(parodius_state::parodius_3fc0_w));
+ map(0x3fc4, 0x3fc4).w(this, FUNC(parodius_state::parodius_videobank_w));
+ map(0x3fc8, 0x3fc8).w(this, FUNC(parodius_state::parodius_sh_irqtrigger_w));
+ map(0x3fcc, 0x3fcd).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write));
+ map(0x6000, 0x9fff).bankr("bank1"); /* banked ROM */
+ map(0xa000, 0xffff).rom().region("maincpu", 0x3a000);
+}
+
+void parodius_state::bank0000_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void parodius_state::bank2000_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x0800, 0x0fff).rw(m_k053245, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w));
+}
+
+void parodius_state::parodius_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(parodius_state::sound_arm_nmi_w));
+ map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/partner.cpp b/src/mame/drivers/partner.cpp
index 841572e55bc..3c68fdb4a59 100644
--- a/src/mame/drivers/partner.cpp
+++ b/src/mame/drivers/partner.cpp
@@ -25,26 +25,27 @@
/* Address maps */
-ADDRESS_MAP_START(partner_state::partner_mem)
- AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x0800, 0x3fff ) AM_RAMBANK("bank2")
- AM_RANGE( 0x4000, 0x5fff ) AM_RAMBANK("bank3")
- AM_RANGE( 0x6000, 0x7fff ) AM_RAMBANK("bank4")
- AM_RANGE( 0x8000, 0x9fff ) AM_RAMBANK("bank5")
- AM_RANGE( 0xa000, 0xb7ff ) AM_RAMBANK("bank6")
- AM_RANGE( 0xb800, 0xbfff ) AM_RAMBANK("bank7")
- AM_RANGE( 0xc000, 0xc7ff ) AM_RAMBANK("bank8")
- AM_RANGE( 0xc800, 0xcfff ) AM_RAMBANK("bank9")
- AM_RANGE( 0xd000, 0xd7ff ) AM_RAMBANK("bank10")
- AM_RANGE( 0xd800, 0xd8ff ) AM_DEVREADWRITE("i8275", i8275_device, read, write) // video
- AM_RANGE( 0xd900, 0xd9ff ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE( 0xda00, 0xdaff ) AM_WRITE(partner_mem_page_w)
- AM_RANGE( 0xdb00, 0xdbff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xdc00, 0xddff ) AM_RAMBANK("bank11")
- AM_RANGE( 0xde00, 0xdeff ) AM_WRITE(partner_win_memory_page_w)
- AM_RANGE( 0xe000, 0xe7ff ) AM_RAMBANK("bank12")
- AM_RANGE( 0xe800, 0xffff ) AM_RAMBANK("bank13")
-ADDRESS_MAP_END
+void partner_state::partner_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankrw("bank1");
+ map(0x0800, 0x3fff).bankrw("bank2");
+ map(0x4000, 0x5fff).bankrw("bank3");
+ map(0x6000, 0x7fff).bankrw("bank4");
+ map(0x8000, 0x9fff).bankrw("bank5");
+ map(0xa000, 0xb7ff).bankrw("bank6");
+ map(0xb800, 0xbfff).bankrw("bank7");
+ map(0xc000, 0xc7ff).bankrw("bank8");
+ map(0xc800, 0xcfff).bankrw("bank9");
+ map(0xd000, 0xd7ff).bankrw("bank10");
+ map(0xd800, 0xd8ff).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)); // video
+ map(0xd900, 0xd9ff).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xda00, 0xdaff).w(this, FUNC(partner_state::partner_mem_page_w));
+ map(0xdb00, 0xdbff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xdc00, 0xddff).bankrw("bank11");
+ map(0xde00, 0xdeff).w(this, FUNC(partner_state::partner_win_memory_page_w));
+ map(0xe000, 0xe7ff).bankrw("bank12");
+ map(0xe800, 0xffff).bankrw("bank13");
+}
/* Input ports */
static INPUT_PORTS_START( partner )
diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp
index 6854296e319..5b84e2c2f94 100644
--- a/src/mame/drivers/pasha2.cpp
+++ b/src/mame/drivers/pasha2.cpp
@@ -233,36 +233,38 @@ WRITE16_MEMBER(pasha2_state::pasha2_lamps_w)
machine().output().set_value("lamp_p3_b", BIT(data, 10));
}
-ADDRESS_MAP_START(pasha2_state::pasha2_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram")
- AM_RANGE(0x40000000, 0x4001ffff) AM_RAM_WRITE(bitmap_0_w)
- AM_RANGE(0x40020000, 0x4003ffff) AM_RAM_WRITE(bitmap_1_w)
- AM_RANGE(0x40060000, 0x40060001) AM_WRITENOP
- AM_RANGE(0x40064000, 0x40064001) AM_WRITENOP
- AM_RANGE(0x40068000, 0x40068001) AM_WRITENOP
- AM_RANGE(0x4006c000, 0x4006c001) AM_WRITENOP
- AM_RANGE(0x40070000, 0x40070001) AM_WRITE(vbuffer_clear_w)
- AM_RANGE(0x40074000, 0x40074001) AM_WRITE(vbuffer_set_w)
- AM_RANGE(0x40078000, 0x40078001) AM_WRITENOP //once at startup -> to disable the eeprom?
- AM_RANGE(0x80000000, 0x803fffff) AM_ROMBANK("bank1")
- AM_RANGE(0xe0000000, 0xe00003ff) AM_RAM_WRITE(pasha2_palette_w) AM_SHARE("paletteram") //tilemap? palette?
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pasha2_state::pasha2_io)
- AM_RANGE(0x08, 0x0b) AM_READNOP //sound status?
- AM_RANGE(0x18, 0x1b) AM_READNOP //sound status?
- AM_RANGE(0x20, 0x23) AM_WRITE(pasha2_lamps_w)
- AM_RANGE(0x40, 0x43) AM_READ_PORT("COINS")
- AM_RANGE(0x60, 0x63) AM_READ_PORT("DSW")
- AM_RANGE(0x80, 0x83) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa0, 0xa3) AM_WRITENOP //soundlatch?
- AM_RANGE(0xc0, 0xc3) AM_WRITE(pasha2_misc_w)
- AM_RANGE(0xe2, 0xe3) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xe6, 0xe7) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xe8, 0xeb) AM_WRITE(oki1_bank_w)
- AM_RANGE(0xec, 0xef) AM_WRITE(oki2_bank_w)
-ADDRESS_MAP_END
+void pasha2_state::pasha2_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("wram");
+ map(0x40000000, 0x4001ffff).ram().w(this, FUNC(pasha2_state::bitmap_0_w));
+ map(0x40020000, 0x4003ffff).ram().w(this, FUNC(pasha2_state::bitmap_1_w));
+ map(0x40060000, 0x40060001).nopw();
+ map(0x40064000, 0x40064001).nopw();
+ map(0x40068000, 0x40068001).nopw();
+ map(0x4006c000, 0x4006c001).nopw();
+ map(0x40070000, 0x40070001).w(this, FUNC(pasha2_state::vbuffer_clear_w));
+ map(0x40074000, 0x40074001).w(this, FUNC(pasha2_state::vbuffer_set_w));
+ map(0x40078000, 0x40078001).nopw(); //once at startup -> to disable the eeprom?
+ map(0x80000000, 0x803fffff).bankr("bank1");
+ map(0xe0000000, 0xe00003ff).ram().w(this, FUNC(pasha2_state::pasha2_palette_w)).share("paletteram"); //tilemap? palette?
+ map(0xfff80000, 0xffffffff).rom().region("user1", 0);
+}
+
+void pasha2_state::pasha2_io(address_map &map)
+{
+ map(0x08, 0x0b).nopr(); //sound status?
+ map(0x18, 0x1b).nopr(); //sound status?
+ map(0x20, 0x23).w(this, FUNC(pasha2_state::pasha2_lamps_w));
+ map(0x40, 0x43).portr("COINS");
+ map(0x60, 0x63).portr("DSW");
+ map(0x80, 0x83).portr("INPUTS");
+ map(0xa0, 0xa3).nopw(); //soundlatch?
+ map(0xc0, 0xc3).w(this, FUNC(pasha2_state::pasha2_misc_w));
+ map(0xe3, 0xe3).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe7, 0xe7).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe8, 0xeb).w(this, FUNC(pasha2_state::oki1_bank_w));
+ map(0xec, 0xef).w(this, FUNC(pasha2_state::oki2_bank_w));
+}
static INPUT_PORTS_START( pasha2 )
PORT_START("COINS")
diff --git a/src/mame/drivers/paso1600.cpp b/src/mame/drivers/paso1600.cpp
index dacd843b713..4b331a0bff8 100644
--- a/src/mame/drivers/paso1600.cpp
+++ b/src/mame/drivers/paso1600.cpp
@@ -229,28 +229,30 @@ READ16_MEMBER( paso1600_state::test_hi_r )
return 0xffff;
}
-ADDRESS_MAP_START(paso1600_state::paso1600_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x7ffff) AM_RAM
- AM_RANGE(0xb0000,0xb0fff) AM_RAM AM_SHARE("vram") // tvram
- AM_RANGE(0xbfff0,0xbffff) AM_READWRITE8(paso1600_pcg_r,paso1600_pcg_w,0xffff)
- AM_RANGE(0xc0000,0xdffff) AM_RAM AM_SHARE("gvram")// gvram
- AM_RANGE(0xe0000,0xeffff) AM_ROM AM_REGION("kanji",0)// kanji rom, banked via port 0x93
- AM_RANGE(0xfe000,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(paso1600_state::paso1600_io)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000,0x000f) AM_DEVREADWRITE8("8237dma", am9517a_device, read, write, 0xffff)
- AM_RANGE(0x0010,0x0011) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0xffff) // i8259
- AM_RANGE(0x001a,0x001b) AM_READ(test_hi_r) // causes RAM error otherwise?
- AM_RANGE(0x0030,0x0033) AM_READWRITE8(key_r,key_w,0xffff) //UART keyboard?
- AM_RANGE(0x0048,0x0049) AM_READ(test_hi_r)
- AM_RANGE(0x0090,0x0091) AM_READWRITE8(paso1600_6845_status_r,paso1600_6845_address_w,0x00ff)
- AM_RANGE(0x0090,0x0091) AM_READWRITE8(paso1600_6845_data_r,paso1600_6845_data_w,0xff00)
+void paso1600_state::paso1600_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x7ffff).ram();
+ map(0xb0000, 0xb0fff).ram().share("vram"); // tvram
+ map(0xbfff0, 0xbffff).rw(this, FUNC(paso1600_state::paso1600_pcg_r), FUNC(paso1600_state::paso1600_pcg_w));
+ map(0xc0000, 0xdffff).ram().share("gvram");// gvram
+ map(0xe0000, 0xeffff).rom().region("kanji", 0);// kanji rom, banked via port 0x93
+ map(0xfe000, 0xfffff).rom().region("ipl", 0);
+}
+
+void paso1600_state::paso1600_io(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x000f).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x0010, 0x0011).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); // i8259
+ map(0x001a, 0x001b).r(this, FUNC(paso1600_state::test_hi_r)); // causes RAM error otherwise?
+ map(0x0030, 0x0033).rw(this, FUNC(paso1600_state::key_r), FUNC(paso1600_state::key_w)); //UART keyboard?
+ map(0x0048, 0x0049).r(this, FUNC(paso1600_state::test_hi_r));
+ map(0x0090, 0x0090).rw(this, FUNC(paso1600_state::paso1600_6845_status_r), FUNC(paso1600_state::paso1600_6845_address_w));
+ map(0x0091, 0x0091).rw(this, FUNC(paso1600_state::paso1600_6845_data_r), FUNC(paso1600_state::paso1600_6845_data_w));
// AM_RANGE(0x00d8,0x00df) //fdc, unknown type
// other undefined ports: 18, 1C, 92
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( paso1600 )
diff --git a/src/mame/drivers/pasogo.cpp b/src/mame/drivers/pasogo.cpp
index 76c11941c2a..fa2bb491a78 100644
--- a/src/mame/drivers/pasogo.cpp
+++ b/src/mame/drivers/pasogo.cpp
@@ -442,24 +442,27 @@ WRITE16_MEMBER( pasogo_state::emsram_w )
m_ems->write16(space, offset & 0x1fff, data, mem_mask);
}
-ADDRESS_MAP_START(pasogo_state::emsbank_map)
- AM_RANGE(0x04080000, 0x040fffff) AM_RAM
- AM_RANGE(0x08000000, 0x080fffff) AM_ROMBANK("bank27")
- AM_RANGE(0x10000000, 0x1000ffff) AM_RAM // cart ram?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pasogo_state::pasogo_mem)
- AM_RANGE(0x80000, 0xeffff) AM_READWRITE(emsram_r, emsram_w)
- AM_RANGE(0xb8000, 0xbffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("bank27")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pasogo_state::pasogo_io)
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
- AM_RANGE(0x0026, 0x0027) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff)
- AM_RANGE(0x006c, 0x006f) AM_READWRITE(ems_r, ems_w)
-ADDRESS_MAP_END
+void pasogo_state::emsbank_map(address_map &map)
+{
+ map(0x04080000, 0x040fffff).ram();
+ map(0x08000000, 0x080fffff).bankr("bank27");
+ map(0x10000000, 0x1000ffff).ram(); // cart ram?
+}
+
+void pasogo_state::pasogo_mem(address_map &map)
+{
+ map(0x80000, 0xeffff).rw(this, FUNC(pasogo_state::emsram_r), FUNC(pasogo_state::emsram_w));
+ map(0xb8000, 0xbffff).ram().share("vram");
+ map(0xf0000, 0xfffff).bankr("bank27");
+}
+
+
+void pasogo_state::pasogo_io(address_map &map)
+{
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+ map(0x0026, 0x0027).rw(this, FUNC(pasogo_state::vg230_io_r), FUNC(pasogo_state::vg230_io_w));
+ map(0x006c, 0x006f).rw(this, FUNC(pasogo_state::ems_r), FUNC(pasogo_state::ems_w));
+}
static INPUT_PORTS_START( pasogo )
diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp
index 64737fd1401..5d7abc9d806 100644
--- a/src/mame/drivers/pasopia.cpp
+++ b/src/mame/drivers/pasopia.cpp
@@ -122,27 +122,29 @@ WRITE8_MEMBER( pasopia_state::pasopia_ctrl_w )
membank("bank1")->set_entry(m_ram_bank);
}
-ADDRESS_MAP_START(pasopia_state::pasopia_map)
- AM_RANGE(0x0000,0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
- AM_RANGE(0x8000,0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pasopia_state::pasopia_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x08,0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x10,0x10) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x11,0x11) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+void pasopia_state::pasopia_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank1").bankw("bank2");
+ map(0x8000, 0xffff).ram();
+}
+
+
+void pasopia_state::pasopia_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_ppi0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw(m_ppi1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x10, 0x10).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x11, 0x11).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
// 0x18 - 0x1b pac2
// 0x1c - 0x1f something
- AM_RANGE(0x20,0x23) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x28,0x2b) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
- AM_RANGE(0x30,0x33) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
+ map(0x20, 0x23).rw(m_ppi2, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x28, 0x2b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x30, 0x33).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
// 0x38 printer
- AM_RANGE(0x3c,0x3c) AM_WRITE(pasopia_ctrl_w)
-ADDRESS_MAP_END
+ map(0x3c, 0x3c).w(this, FUNC(pasopia_state::pasopia_ctrl_w));
+}
/* Input ports */
static INPUT_PORTS_START( pasopia )
diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp
index 986fda7f64f..4edfc308b28 100644
--- a/src/mame/drivers/pasopia7.cpp
+++ b/src/mame/drivers/pasopia7.cpp
@@ -700,19 +700,21 @@ WRITE8_MEMBER( pasopia7_state::pasopia7_io_w )
}
}
-ADDRESS_MAP_START(pasopia7_state::pasopia7_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_WRITE( ram_bank_w )
- AM_RANGE( 0x0000, 0x3fff ) AM_ROMBANK("bank1")
- AM_RANGE( 0x4000, 0x7fff ) AM_ROMBANK("bank2")
- AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(vram_r, vram_w )
- AM_RANGE( 0xc000, 0xffff ) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pasopia7_state::pasopia7_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xffff) AM_READWRITE( pasopia7_io_r, pasopia7_io_w )
-ADDRESS_MAP_END
+void pasopia7_state::pasopia7_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).w(this, FUNC(pasopia7_state::ram_bank_w));
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xbfff).rw(this, FUNC(pasopia7_state::vram_r), FUNC(pasopia7_state::vram_w));
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void pasopia7_state::pasopia7_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(pasopia7_state::pasopia7_io_r), FUNC(pasopia7_state::pasopia7_io_w));
+}
/* TODO: where are SPACE and RETURN keys? */
static INPUT_PORTS_START( pasopia7 )
diff --git a/src/mame/drivers/pass.cpp b/src/mame/drivers/pass.cpp
index 7f618192d04..5d1dbb3a761 100644
--- a/src/mame/drivers/pass.cpp
+++ b/src/mame/drivers/pass.cpp
@@ -114,30 +114,33 @@
/* todo: check all memory regions actually readable / read from */
-ADDRESS_MAP_START(pass_state::pass_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(pass_bg_videoram_w) AM_SHARE("bg_videoram") // Background
- AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(pass_fg_videoram_w) AM_SHARE("fg_videoram") // Foreground
- AM_RANGE(0x220000, 0x2203ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x230000, 0x230001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW")
- AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS")
-ADDRESS_MAP_END
+void pass_state::pass_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x083fff).ram();
+ map(0x200000, 0x200fff).ram().w(this, FUNC(pass_state::pass_bg_videoram_w)).share("bg_videoram"); // Background
+ map(0x210000, 0x213fff).ram().w(this, FUNC(pass_state::pass_fg_videoram_w)).share("fg_videoram"); // Foreground
+ map(0x220000, 0x2203ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x230001, 0x230001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x230100, 0x230101).portr("DSW");
+ map(0x230200, 0x230201).portr("INPUTS");
+}
/* sound cpu */
-ADDRESS_MAP_START(pass_state::pass_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pass_state::pass_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
-ADDRESS_MAP_END
+void pass_state::pass_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void pass_state::pass_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x80).w("oki", FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).w("soundlatch", FUNC(generic_latch_8_device::clear_w));
+}
/* todo : work out function of unknown but used dsw */
static INPUT_PORTS_START( pass )
diff --git a/src/mame/drivers/pastelg.cpp b/src/mame/drivers/pastelg.cpp
index 492a968263b..ce45917d3d1 100644
--- a/src/mame/drivers/pastelg.cpp
+++ b/src/mame/drivers/pastelg.cpp
@@ -45,10 +45,11 @@ READ8_MEMBER(pastelg_state::pastelg_sndrom_r)
return ROM[pastelg_blitter_src_addr_r() & 0x7fff];
}
-ADDRESS_MAP_START(pastelg_state::pastelg_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void pastelg_state::pastelg_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+}
READ8_MEMBER(pastelg_state::pastelg_irq_ack_r)
{
@@ -56,21 +57,22 @@ READ8_MEMBER(pastelg_state::pastelg_irq_ack_r)
return 0;
}
-ADDRESS_MAP_START(pastelg_state::pastelg_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void pastelg_state::pastelg_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_WRITENOP
- AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x90, 0x96) AM_WRITE(pastelg_blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) AM_WRITE(pastelg_romsel_w)
- AM_RANGE(0xc0, 0xc0) AM_READ(pastelg_sndrom_r)
- AM_RANGE(0xc0, 0xcf) AM_WRITEONLY AM_SHARE("clut")
- AM_RANGE(0xd0, 0xd0) AM_READ(pastelg_irq_ack_r) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe0, 0xe0) AM_READ_PORT("DSWC")
-ADDRESS_MAP_END
+ map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r));
+ map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).portr("SYSTEM");
+ map(0x90, 0x96).w(this, FUNC(pastelg_state::pastelg_blitter_w));
+ map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w));
+ map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)).w(this, FUNC(pastelg_state::pastelg_romsel_w));
+ map(0xc0, 0xc0).r(this, FUNC(pastelg_state::pastelg_sndrom_r));
+ map(0xc0, 0xcf).writeonly().share("clut");
+ map(0xd0, 0xd0).r(this, FUNC(pastelg_state::pastelg_irq_ack_r)).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe0, 0xe0).portr("DSWC");
+}
READ8_MEMBER(pastelg_state::threeds_inputport1_r)
@@ -111,18 +113,19 @@ CUSTOM_INPUT_MEMBER( pastelg_state::nb1413m3_busyflag_r )
return m_nb1413m3->m_busyflag & 0x01;
}
-ADDRESS_MAP_START(pastelg_state::threeds_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") AM_WRITE(threeds_romsel_w )
- AM_RANGE(0xf0, 0xf6) AM_WRITE(pastelg_blitter_w)
- AM_RANGE(0xa0, 0xa0) AM_READWRITE(threeds_inputport1_r, threeds_inputportsel_w)
- AM_RANGE(0xb0, 0xb0) AM_READ(threeds_inputport2_r) AM_WRITE(threeds_output_w)//writes: bit 3 is coin lockout, bit 1 is coin counter
- AM_RANGE(0xc0, 0xcf) AM_WRITEONLY AM_SHARE("clut")
- AM_RANGE(0xc0, 0xc0) AM_READ(threeds_rom_readback_r)
- AM_RANGE(0xd0, 0xd0) AM_READ(pastelg_irq_ack_r) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void pastelg_state::threeds_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x90, 0x90).portr("SYSTEM").w(this, FUNC(pastelg_state::threeds_romsel_w));
+ map(0xf0, 0xf6).w(this, FUNC(pastelg_state::pastelg_blitter_w));
+ map(0xa0, 0xa0).rw(this, FUNC(pastelg_state::threeds_inputport1_r), FUNC(pastelg_state::threeds_inputportsel_w));
+ map(0xb0, 0xb0).r(this, FUNC(pastelg_state::threeds_inputport2_r)).w(this, FUNC(pastelg_state::threeds_output_w));//writes: bit 3 is coin lockout, bit 1 is coin counter
+ map(0xc0, 0xcf).writeonly().share("clut");
+ map(0xc0, 0xc0).r(this, FUNC(pastelg_state::threeds_rom_readback_r));
+ map(0xd0, 0xd0).r(this, FUNC(pastelg_state::pastelg_irq_ack_r)).w("dac", FUNC(dac_byte_interface::write));
+}
static INPUT_PORTS_START( pastelg )
PORT_START("DSWA")
diff --git a/src/mame/drivers/patapata.cpp b/src/mame/drivers/patapata.cpp
index 55a901af0e8..84074747888 100644
--- a/src/mame/drivers/patapata.cpp
+++ b/src/mame/drivers/patapata.cpp
@@ -182,23 +182,24 @@ also
*/
-ADDRESS_MAP_START(patapata_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
-
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
- AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff)
- AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs")
- AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x130000, 0x13ffff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x150000, 0x150001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x150010, 0x150011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x150020, 0x15002f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff)
- AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
-ADDRESS_MAP_END
+void patapata_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+
+ map(0x100000, 0x100001).portr("IN0");
+ map(0x100002, 0x100003).portr("IN1");
+ map(0x100008, 0x100009).portr("DSW1");
+ map(0x10000a, 0x10000b).portr("DSW2");
+ map(0x100015, 0x100015).w(this, FUNC(patapata_state::flipscreen_w));
+ map(0x110000, 0x1103ff).ram().share("videoregs");
+ map(0x120000, 0x1205ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x130000, 0x13ffff).ram().w(this, FUNC(patapata_state::fg_videoram_w)).share("fg_videoram");
+ map(0x140000, 0x14ffff).ram().w(this, FUNC(patapata_state::bg_videoram_w)).share("bg_videoram");
+ map(0x150001, 0x150001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x150011, 0x150011).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x150020, 0x15002f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff);
+ map(0x180000, 0x18ffff).ram(); // mainram?
+}
static INPUT_PORTS_START( patapata )
PORT_START("IN0")
diff --git a/src/mame/drivers/pb1000.cpp b/src/mame/drivers/pb1000.cpp
index 6fb19150a29..acb6e47e7d0 100644
--- a/src/mame/drivers/pb1000.cpp
+++ b/src/mame/drivers/pb1000.cpp
@@ -80,25 +80,27 @@ public:
void pb2000c_mem(address_map &map);
};
-ADDRESS_MAP_START(pb1000_state::pb1000_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE( 0x00000, 0x00bff ) AM_ROM
+void pb1000_state::pb1000_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x00000, 0x00bff).rom();
//AM_RANGE( 0x00c00, 0x00c0f ) AM_NOP //I/O
- AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram1")
- AM_RANGE( 0x08000, 0x0ffff ) AM_ROMBANK("bank1")
- AM_RANGE( 0x18000, 0x1ffff ) AM_RAM AM_SHARE("nvram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pb1000_state::pb2000c_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE( 0x00000, 0x0ffff ) AM_ROMBANK("bank1")
- AM_RANGE( 0x00000, 0x00bff ) AM_ROM
+ map(0x06000, 0x07fff).ram().share("nvram1");
+ map(0x08000, 0x0ffff).bankr("bank1");
+ map(0x18000, 0x1ffff).ram().share("nvram2");
+}
+
+void pb1000_state::pb2000c_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x00000, 0x0ffff).bankr("bank1");
+ map(0x00000, 0x00bff).rom();
//AM_RANGE( 0x00c00, 0x00c0f ) AM_NOP //I/O
- AM_RANGE( 0x00c10, 0x00c11 ) AM_WRITE(gatearray_w)
- AM_RANGE( 0x10000, 0x1ffff ) AM_RAM AM_SHARE("nvram1")
- AM_RANGE( 0x20000, 0x27fff ) AM_DEVREAD("cardslot1", generic_slot_device, read16_rom)
- AM_RANGE( 0x28000, 0x2ffff ) AM_RAM AM_SHARE("nvram2")
-ADDRESS_MAP_END
+ map(0x00c10, 0x00c11).w(this, FUNC(pb1000_state::gatearray_w));
+ map(0x10000, 0x1ffff).ram().share("nvram1");
+ map(0x20000, 0x27fff).r(m_card1, FUNC(generic_slot_device::read16_rom));
+ map(0x28000, 0x2ffff).ram().share("nvram2");
+}
/* Input ports */
diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp
index cba2e934d6f..6f474f63515 100644
--- a/src/mame/drivers/pbaction.cpp
+++ b/src/mame/drivers/pbaction.cpp
@@ -86,43 +86,47 @@ WRITE8_MEMBER(pbaction_state::nmi_mask_w)
m_nmi_mask = data & 1;
}
-ADDRESS_MAP_START(pbaction_state::pbaction_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(pbaction_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(pbaction_colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(pbaction_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(pbaction_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe400, 0xe5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1") AM_WRITE(nmi_mask_w)
- AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2")
- AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe604, 0xe604) AM_READ_PORT("DSW1") AM_WRITE(pbaction_flipscreen_w)
- AM_RANGE(0xe605, 0xe605) AM_READ_PORT("DSW2")
- AM_RANGE(0xe606, 0xe606) AM_READNOP /* ??? */ AM_WRITE(pbaction_scroll_w)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(pbaction_sh_command_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pbaction_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pbaction_state::pbaction_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pbaction_state::pbaction_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x30, 0x31) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void pbaction_state::pbaction_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().share("work_ram");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(pbaction_state::pbaction_videoram2_w)).share("videoram2");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(pbaction_state::pbaction_colorram2_w)).share("colorram2");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(pbaction_state::pbaction_videoram_w)).share("videoram");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(pbaction_state::pbaction_colorram_w)).share("colorram");
+ map(0xe000, 0xe07f).ram().share("spriteram");
+ map(0xe400, 0xe5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe600, 0xe600).portr("P1").w(this, FUNC(pbaction_state::nmi_mask_w));
+ map(0xe601, 0xe601).portr("P2");
+ map(0xe602, 0xe602).portr("SYSTEM");
+ map(0xe604, 0xe604).portr("DSW1").w(this, FUNC(pbaction_state::pbaction_flipscreen_w));
+ map(0xe605, 0xe605).portr("DSW2");
+ map(0xe606, 0xe606).nopr() /* ??? */ .w(this, FUNC(pbaction_state::pbaction_scroll_w));
+ map(0xe800, 0xe800).w(this, FUNC(pbaction_state::pbaction_sh_command_w));
+}
+
+void pbaction_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).rom().region("maincpu", 0x8000);
+}
+
+void pbaction_state::pbaction_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xffff, 0xffff).nopw(); /* watchdog? */
+}
+
+
+void pbaction_state::pbaction_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x20, 0x21).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x30, 0x31).w("ay3", FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( pbaction )
diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp
index a927759a2a6..515f396e4a9 100644
--- a/src/mame/drivers/pc.cpp
+++ b/src/mame/drivers/pc.cpp
@@ -404,50 +404,57 @@ public:
void zenith_map(address_map &map);
};
-ADDRESS_MAP_START(pc_state::pc8_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc_state::zenith_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xf7fff) AM_RAM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc_state::pc16_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc_state::pc8_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc_state::pc16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
- AM_RANGE(0x0070, 0x007f) AM_RAM // needed for Poisk-2
-ADDRESS_MAP_END
+void pc_state::pc8_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void pc_state::zenith_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xf7fff).ram();
+ map(0xf8000, 0xfffff).rom().region("bios", 0x8000);
+}
+
+void pc_state::pc16_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void pc_state::pc8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+}
+
+void pc_state::pc16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+ map(0x0070, 0x007f).ram(); // needed for Poisk-2
+}
READ8_MEMBER(pc_state::unk_r)
{
return 0;
}
-ADDRESS_MAP_START(pc_state::ibm5550_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
- AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc_state::epc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
- AM_RANGE(0x0070, 0x0070) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w)
- AM_RANGE(0x0071, 0x0071) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void pc_state::ibm5550_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+ map(0x00a0, 0x00a0).r(this, FUNC(pc_state::unk_r));
+}
+
+void pc_state::epc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+ map(0x0070, 0x0070).rw("i8251", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0071, 0x0071).rw("i8251", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
INPUT_CHANGED_MEMBER(pc_state::pc_turbo_callback)
{
diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp
index bc977f862b6..33fb115091f 100644
--- a/src/mame/drivers/pc100.cpp
+++ b/src/mame/drivers/pc100.cpp
@@ -232,12 +232,13 @@ WRITE16_MEMBER( pc100_state::pc100_vram_w )
}
}
-ADDRESS_MAP_START(pc100_state::pc100_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0xbffff) AM_RAM // work ram
- AM_RANGE(0xc0000,0xdffff) AM_READWRITE(pc100_vram_r,pc100_vram_w) // vram, blitter based!
- AM_RANGE(0xf8000,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+void pc100_state::pc100_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xbffff).ram(); // work ram
+ map(0xc0000, 0xdffff).rw(this, FUNC(pc100_state::pc100_vram_r), FUNC(pc100_state::pc100_vram_w)); // vram, blitter based!
+ map(0xf8000, 0xfffff).rom().region("ipl", 0);
+}
READ16_MEMBER( pc100_state::pc100_kanji_r )
{
@@ -312,28 +313,29 @@ WRITE8_MEMBER( pc100_state::pc100_crtc_data_w )
/* everything is 8-bit bus wide */
-ADDRESS_MAP_START(pc100_state::pc100_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) // i8259
+void pc100_state::pc100_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // i8259
// AM_RANGE(0x04, 0x07) i8237?
- AM_RANGE(0x08, 0x0b) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff ) // upd765
- AM_RANGE(0x10, 0x17) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write,0x00ff) // i8255 #1
- AM_RANGE(0x18, 0x1f) AM_DEVREADWRITE8("ppi8255_2", i8255_device, read, write,0x00ff) // i8255 #2
- AM_RANGE(0x20, 0x23) AM_READ8(pc100_key_r,0x00ff) //i/o, keyboard, mouse
- AM_RANGE(0x22, 0x23) AM_WRITE8(pc100_output_w,0x00ff) //i/o, keyboard, mouse
- AM_RANGE(0x24, 0x25) AM_WRITE8(pc100_tc_w,0x00ff) //i/o, keyboard, mouse
- AM_RANGE(0x28, 0x29) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x2a, 0x2b) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x30, 0x31) AM_READWRITE8(pc100_shift_r,pc100_shift_w,0x00ff) // crtc shift
- AM_RANGE(0x38, 0x39) AM_WRITE8(pc100_crtc_addr_w,0x00ff) //crtc address reg
- AM_RANGE(0x3a, 0x3b) AM_WRITE8(pc100_crtc_data_w,0x00ff) //crtc data reg
- AM_RANGE(0x3c, 0x3f) AM_READWRITE8(pc100_vs_vreg_r,pc100_vs_vreg_w,0x00ff) //crtc vertical start position
- AM_RANGE(0x40, 0x5f) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x08, 0x0b).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); // upd765
+ map(0x10, 0x17).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255 #1
+ map(0x18, 0x1f).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255 #2
+ map(0x20, 0x23).r(this, FUNC(pc100_state::pc100_key_r)).umask16(0x00ff); //i/o, keyboard, mouse
+ map(0x22, 0x22).w(this, FUNC(pc100_state::pc100_output_w)); //i/o, keyboard, mouse
+ map(0x24, 0x24).w(this, FUNC(pc100_state::pc100_tc_w)); //i/o, keyboard, mouse
+ map(0x28, 0x28).rw("uart8251", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x2a, 0x2a).rw("uart8251", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x30, 0x30).rw(this, FUNC(pc100_state::pc100_shift_r), FUNC(pc100_state::pc100_shift_w)); // crtc shift
+ map(0x38, 0x38).w(this, FUNC(pc100_state::pc100_crtc_addr_w)); //crtc address reg
+ map(0x3a, 0x3a).w(this, FUNC(pc100_state::pc100_crtc_data_w)); //crtc data reg
+ map(0x3c, 0x3f).rw(this, FUNC(pc100_state::pc100_vs_vreg_r), FUNC(pc100_state::pc100_vs_vreg_w)).umask16(0x00ff); //crtc vertical start position
+ map(0x40, 0x5f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
// AM_RANGE(0x60, 0x61) crtc command (16-bit wide)
- AM_RANGE(0x80, 0x81) AM_READWRITE(pc100_kanji_r,pc100_kanji_w)
- AM_RANGE(0x82, 0x83) AM_WRITENOP //kanji-related?
- AM_RANGE(0x84, 0x87) AM_WRITENOP //kanji "strobe" signal 0/1
-ADDRESS_MAP_END
+ map(0x80, 0x81).rw(this, FUNC(pc100_state::pc100_kanji_r), FUNC(pc100_state::pc100_kanji_w));
+ map(0x82, 0x83).nopw(); //kanji-related?
+ map(0x84, 0x87).nopw(); //kanji "strobe" signal 0/1
+}
/* Input ports */
diff --git a/src/mame/drivers/pc1500.cpp b/src/mame/drivers/pc1500.cpp
index 33eca9e025e..df6597d8354 100644
--- a/src/mame/drivers/pc1500.cpp
+++ b/src/mame/drivers/pc1500.cpp
@@ -58,21 +58,23 @@ public:
void pc1500_mem_io(address_map &map);
};
-ADDRESS_MAP_START(pc1500_state::pc1500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff) AM_ROM //module ROM/RAM
- AM_RANGE( 0x4000, 0x47ff) AM_RAM //user RAM
- AM_RANGE( 0x4800, 0x6fff) AM_RAM //expansion RAM
- AM_RANGE( 0x7000, 0x71ff) AM_RAM AM_MIRROR(0x0600) AM_SHARE("lcd_data")
- AM_RANGE( 0x7800, 0x7bff) AM_RAM AM_REGION("maincpu", 0x7800) AM_MIRROR(0x0400)
- AM_RANGE( 0xa000, 0xbfff) AM_ROM //expansion ROM
- AM_RANGE( 0xc000, 0xffff) AM_ROM //system ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc1500_state::pc1500_mem_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0xf000, 0xf00f) AM_DEVREADWRITE("lh5810", lh5810_device, data_r, data_w)
-ADDRESS_MAP_END
+void pc1500_state::pc1500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom(); //module ROM/RAM
+ map(0x4000, 0x47ff).ram(); //user RAM
+ map(0x4800, 0x6fff).ram(); //expansion RAM
+ map(0x7000, 0x71ff).ram().mirror(0x0600).share("lcd_data");
+ map(0x7800, 0x7bff).ram().region("maincpu", 0x7800).mirror(0x0400);
+ map(0xa000, 0xbfff).rom(); //expansion ROM
+ map(0xc000, 0xffff).rom(); //system ROM
+}
+
+void pc1500_state::pc1500_mem_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf000, 0xf00f).rw("lh5810", FUNC(lh5810_device::data_r), FUNC(lh5810_device::data_w));
+}
READ8_MEMBER( pc1500_state::pc1500_kb_r )
{
diff --git a/src/mame/drivers/pc1512.cpp b/src/mame/drivers/pc1512.cpp
index d0b6342e373..49382da6000 100644
--- a/src/mame/drivers/pc1512.cpp
+++ b/src/mame/drivers/pc1512.cpp
@@ -607,68 +607,72 @@ READ8_MEMBER( pc1640_state::io_r )
// ADDRESS_MAP( pc1512_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(pc1512_state::pc1512_mem)
- AM_RANGE(0x00000, 0x9ffff) AM_RAM
- AM_RANGE(0xb8000, 0xbbfff) AM_READWRITE8(video_ram_r, video_ram_w, 0xffff)
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
-ADDRESS_MAP_END
+void pc1512_state::pc1512_mem(address_map &map)
+{
+ map(0x00000, 0x9ffff).ram();
+ map(0xb8000, 0xbbfff).rw(this, FUNC(pc1512_state::video_ram_r), FUNC(pc1512_state::video_ram_w));
+ map(0xfc000, 0xfffff).rom().region(I8086_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( pc1512_io )
//-------------------------------------------------
-ADDRESS_MAP_START(pc1512_state::pc1512_io)
+void pc1512_state::pc1512_io(address_map &map)
+{
// [RH] 29 Aug 2016: I can find no evidence to indicate that Amstrad had only 10 I/O lines, as the
// schematic calls for a stock 8086 and the I/O and data lines are multiplexed onto the same bus,
// plus address lines 20-10 are towards the middle of a standard ISA slot. If it turns out that this
// is not in fact accurate to hardware, please add this back in.
// ADDRESS_MAP_GLOBAL_MASK(0x3ff)
- AM_RANGE(0x000, 0x00f) AM_DEVREADWRITE8(I8237A5_TAG, am9517a_device, read, write, 0xffff)
- AM_RANGE(0x020, 0x021) AM_DEVREADWRITE8(I8259A2_TAG, pic8259_device, read, write, 0xffff)
- AM_RANGE(0x040, 0x043) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0xffff)
- AM_RANGE(0x060, 0x06f) AM_READWRITE8(system_r, system_w, 0xffff)
- AM_RANGE(0x070, 0x071) AM_MIRROR(0x02) AM_DEVREADWRITE8(MC146818_TAG, mc146818_device, read, write, 0xffff)
- AM_RANGE(0x078, 0x07f) AM_READWRITE8(mouse_r, mouse_w, 0xffff)
- AM_RANGE(0x080, 0x083) AM_WRITE8(dma_page_w, 0xffff)
- AM_RANGE(0x0a0, 0x0a1) AM_WRITE8(nmi_mask_w, 0xff00)
- AM_RANGE(0x378, 0x37b) AM_READWRITE8(printer_r, printer_w, 0xffff)
- AM_RANGE(0x3d0, 0x3df) AM_READWRITE8(vdu_r, vdu_w, 0xffff)
- AM_RANGE(0x3f0, 0x3f7) AM_DEVICE8(PC_FDC_XT_TAG, pc_fdc_xt_device, map, 0xffff)
- AM_RANGE(0x3f8, 0x3ff) AM_DEVREADWRITE8(INS8250_TAG, ins8250_device, ins8250_r, ins8250_w, 0xffff)
-ADDRESS_MAP_END
+ map(0x000, 0x00f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x020, 0x021).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x040, 0x043).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x060, 0x06f).rw(this, FUNC(pc1512_state::system_r), FUNC(pc1512_state::system_w));
+ map(0x070, 0x071).mirror(0x02).rw(m_rtc, FUNC(mc146818_device::read), FUNC(mc146818_device::write));
+ map(0x078, 0x07f).rw(this, FUNC(pc1512_state::mouse_r), FUNC(pc1512_state::mouse_w));
+ map(0x080, 0x083).w(this, FUNC(pc1512_state::dma_page_w));
+ map(0x0a1, 0x0a1).w(this, FUNC(pc1512_state::nmi_mask_w));
+ map(0x378, 0x37b).rw(this, FUNC(pc1512_state::printer_r), FUNC(pc1512_state::printer_w));
+ map(0x3d0, 0x3df).rw(this, FUNC(pc1512_state::vdu_r), FUNC(pc1512_state::vdu_w));
+ map(0x3f0, 0x3f7).m(m_fdc, FUNC(pc_fdc_xt_device::map));
+ map(0x3f8, 0x3ff).rw(m_uart, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( pc1640_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(pc1640_state::pc1640_mem)
- AM_RANGE(0x00000, 0x9ffff) AM_RAM
- AM_RANGE(0xf0000, 0xf3fff) AM_MIRROR(0xc000) AM_ROM AM_REGION(I8086_TAG, 0)
-ADDRESS_MAP_END
+void pc1640_state::pc1640_mem(address_map &map)
+{
+ map(0x00000, 0x9ffff).ram();
+ map(0xf0000, 0xf3fff).mirror(0xc000).rom().region(I8086_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( pc1640_io )
//-------------------------------------------------
-ADDRESS_MAP_START(pc1640_state::pc1640_io)
- AM_RANGE(0x0000, 0xffff) AM_READ8(io_r, 0xffff)
-
- AM_RANGE(0x000, 0x00f) AM_DEVWRITE8(I8237A5_TAG, am9517a_device, write, 0xffff)
- AM_RANGE(0x020, 0x021) AM_DEVWRITE8(I8259A2_TAG, pic8259_device, write, 0xffff)
- AM_RANGE(0x040, 0x043) AM_DEVWRITE8(I8253_TAG, pit8253_device, write, 0xffff)
- AM_RANGE(0x060, 0x06f) AM_WRITE8(system_w, 0xffff)
- AM_RANGE(0x070, 0x071) AM_MIRROR(0x02) AM_DEVWRITE8(MC146818_TAG, mc146818_device, write, 0xffff)
- AM_RANGE(0x078, 0x07f) AM_WRITE8(mouse_w, 0xffff)
- AM_RANGE(0x080, 0x083) AM_WRITE8(dma_page_w, 0xffff)
- AM_RANGE(0x0a0, 0x0a1) AM_WRITE8(nmi_mask_w, 0xff00)
- AM_RANGE(0x378, 0x37b) AM_WRITE8(printer_w, 0xffff)
- AM_RANGE(0x3f2, 0x3f3) AM_DEVWRITE8(PC_FDC_XT_TAG, pc_fdc_xt_device, dor_w, 0x00ff)
- AM_RANGE(0x3f4, 0x3f5) AM_DEVWRITE8(PC_FDC_XT_TAG ":upd765", upd765_family_device, fifo_w, 0xff00)
- AM_RANGE(0x3f8, 0x3ff) AM_DEVWRITE8(INS8250_TAG, ins8250_device, ins8250_w, 0xffff)
-ADDRESS_MAP_END
+void pc1640_state::pc1640_io(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(pc1640_state::io_r));
+
+ map(0x000, 0x00f).w(m_dmac, FUNC(am9517a_device::write));
+ map(0x020, 0x021).w(m_pic, FUNC(pic8259_device::write));
+ map(0x040, 0x043).w(m_pit, FUNC(pit8253_device::write));
+ map(0x060, 0x06f).w(this, FUNC(pc1640_state::system_w));
+ map(0x070, 0x071).mirror(0x02).w(m_rtc, FUNC(mc146818_device::write));
+ map(0x078, 0x07f).w(this, FUNC(pc1640_state::mouse_w));
+ map(0x080, 0x083).w(this, FUNC(pc1640_state::dma_page_w));
+ map(0x0a1, 0x0a1).w(this, FUNC(pc1640_state::nmi_mask_w));
+ map(0x378, 0x37b).w(this, FUNC(pc1640_state::printer_w));
+ map(0x3f2, 0x3f2).w(m_fdc, FUNC(pc_fdc_xt_device::dor_w));
+ map(0x3f5, 0x3f5).w(PC_FDC_XT_TAG ":upd765", FUNC(upd765_family_device::fifo_w));
+ map(0x3f8, 0x3ff).w(m_uart, FUNC(ins8250_device::ins8250_w));
+}
diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp
index 9b2f205092a..000b4bd8d29 100644
--- a/src/mame/drivers/pc2000.cpp
+++ b/src/mame/drivers/pc2000.cpp
@@ -202,24 +202,26 @@ WRITE8_MEMBER( pc2000_state::beep_w )
m_beep_state = data;
}
-ADDRESS_MAP_START(pc2000_state::pc2000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank0")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x59 0x45, if it succeeds a jump at 0x8004 occurs
- AM_RANGE(0xc000, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc2000_state::pc2000_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(rombank0_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(rombank1_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(rombank2_w)
- AM_RANGE(0x0a, 0x0b) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
- AM_RANGE(0x10, 0x11) AM_READWRITE(key_matrix_r, key_matrix_w)
- AM_RANGE(0x12, 0x12) AM_READWRITE(beep_r, beep_w)
-ADDRESS_MAP_END
+void pc2000_state::pc2000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankr("bank0");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xbfff).bankr("bank2"); //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x59 0x45, if it succeeds a jump at 0x8004 occurs
+ map(0xc000, 0xdfff).ram();
+}
+
+void pc2000_state::pc2000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(pc2000_state::rombank0_w));
+ map(0x01, 0x01).w(this, FUNC(pc2000_state::rombank1_w));
+ map(0x03, 0x03).w(this, FUNC(pc2000_state::rombank2_w));
+ map(0x0a, 0x0b).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write));
+ map(0x10, 0x11).rw(this, FUNC(pc2000_state::key_matrix_r), FUNC(pc2000_state::key_matrix_w));
+ map(0x12, 0x12).rw(this, FUNC(pc2000_state::beep_r), FUNC(pc2000_state::beep_w));
+}
void gl3000s_state::machine_start()
@@ -330,15 +332,16 @@ SED1520_UPDATE_CB(gl3000s_state::screen_update_left)
}
-ADDRESS_MAP_START(gl3000s_state::gl3000s_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_WRITE(rombank1_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(rombank2_w)
- AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("sed1520_r", sed1520_device, read, write)
- AM_RANGE(0x0a, 0x0b) AM_DEVREADWRITE("sed1520_l", sed1520_device, read, write)
- AM_RANGE(0x10, 0x11) AM_READWRITE(key_matrix_r, key_matrix_w)
-ADDRESS_MAP_END
+void gl3000s_state::gl3000s_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x01, 0x01).w(this, FUNC(gl3000s_state::rombank1_w));
+ map(0x03, 0x03).w(this, FUNC(gl3000s_state::rombank2_w));
+ map(0x08, 0x09).rw(m_lcdc_r, FUNC(sed1520_device::read), FUNC(sed1520_device::write));
+ map(0x0a, 0x0b).rw(m_lcdc_l, FUNC(sed1520_device::read), FUNC(sed1520_device::write));
+ map(0x10, 0x11).rw(this, FUNC(gl3000s_state::key_matrix_r), FUNC(gl3000s_state::key_matrix_w));
+}
READ8_MEMBER( pc1000_state::kb_r )
{
@@ -395,19 +398,21 @@ HD44780_PIXEL_UPDATE(pc1000_state::pc1000_pixel_update)
}
}
-ADDRESS_MAP_START(pc1000_state::pc1000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("bios", 0x00000)
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_DEVREAD("cartslot", generic_slot_device, read_rom) //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x33, if it succeeds a jump at 0x8010 occurs
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc1000_state::pc1000_io)
- AM_RANGE(0x0000, 0x01ff) AM_READ(kb_r)
- AM_RANGE(0x4000, 0x4000) AM_MIRROR(0xfe) AM_READWRITE(lcdc_control_r, lcdc_control_w)
- AM_RANGE(0x4100, 0x4100) AM_MIRROR(0xfe) AM_READWRITE(lcdc_data_r, lcdc_data_w)
-ADDRESS_MAP_END
+void pc1000_state::pc1000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom().region("bios", 0x00000);
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0xbfff).r(m_cart, FUNC(generic_slot_device::read_rom)); //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x33, if it succeeds a jump at 0x8010 occurs
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+void pc1000_state::pc1000_io(address_map &map)
+{
+ map(0x0000, 0x01ff).r(this, FUNC(pc1000_state::kb_r));
+ map(0x4000, 0x4000).mirror(0xfe).rw(this, FUNC(pc1000_state::lcdc_control_r), FUNC(pc1000_state::lcdc_control_w));
+ map(0x4100, 0x4100).mirror(0xfe).rw(this, FUNC(pc1000_state::lcdc_data_r), FUNC(pc1000_state::lcdc_data_w));
+}
/* Input ports */
static INPUT_PORTS_START( pc2000 )
diff --git a/src/mame/drivers/pc4.cpp b/src/mame/drivers/pc4.cpp
index 387550ce755..d820ebb7c4e 100644
--- a/src/mame/drivers/pc4.cpp
+++ b/src/mame/drivers/pc4.cpp
@@ -61,27 +61,29 @@ WRITE8_MEMBER( pc4_state::beep_w )
m_beep->set_state(data&0x40);
}
-ADDRESS_MAP_START(pc4_state::pc4_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc4_state::pc4_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("rtc", rp5c01_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_WRITE(beep_w)
- AM_RANGE(0x1fff, 0x1fff) AM_WRITE(bank_w)
-
- AM_RANGE(0x3000, 0x3000) AM_WRITE(lcd_control_w)
- AM_RANGE(0x3001, 0x3001) AM_WRITE(lcd_data_w)
- AM_RANGE(0x3002, 0x3002) AM_READ(lcd_control_r)
- AM_RANGE(0x3003, 0x3003) AM_READ(lcd_data_r)
- AM_RANGE(0x3005, 0x3005) AM_WRITE(lcd_offset_w)
+void pc4_state::pc4_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).ram();
+}
+
+void pc4_state::pc4_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x000f).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write));
+ map(0x1000, 0x1000).w(this, FUNC(pc4_state::beep_w));
+ map(0x1fff, 0x1fff).w(this, FUNC(pc4_state::bank_w));
+
+ map(0x3000, 0x3000).w(this, FUNC(pc4_state::lcd_control_w));
+ map(0x3001, 0x3001).w(this, FUNC(pc4_state::lcd_data_w));
+ map(0x3002, 0x3002).r(this, FUNC(pc4_state::lcd_control_r));
+ map(0x3003, 0x3003).r(this, FUNC(pc4_state::lcd_data_r));
+ map(0x3005, 0x3005).w(this, FUNC(pc4_state::lcd_offset_w));
//keyboard read, offset used as matrix
- AM_RANGE(0x5000, 0x50ff) AM_READ(kb_r)
-ADDRESS_MAP_END
+ map(0x5000, 0x50ff).r(this, FUNC(pc4_state::kb_r));
+}
static INPUT_PORTS_START( pc4 )
PORT_START("LINE0")
diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp
index 5bc9a0af231..58041d7fe55 100644
--- a/src/mame/drivers/pc6001.cpp
+++ b/src/mame/drivers/pc6001.cpp
@@ -227,27 +227,29 @@ WRITE8_MEMBER(pc6001_state::nec_ppi8255_w)
m_ppi->write(space,offset,data);
}
-ADDRESS_MAP_START(pc6001_state::pc6001_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP
+void pc6001_state::pc6001_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom().nopw();
// AM_RANGE(0x4000, 0x5fff) // mapped by the cartslot
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc6001_state::pc6001_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_READWRITE(nec_ppi8255_r, nec_ppi8255_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_WRITENOP
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_WRITE(system_latch_w)
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_NOP // disk device
-ADDRESS_MAP_END
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).ram().share("ram");
+}
+
+void pc6001_state::pc6001_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x90, 0x93).mirror(0x0c).rw(this, FUNC(pc6001_state::nec_ppi8255_r), FUNC(pc6001_state::nec_ppi8255_w));
+ map(0xa0, 0xa0).mirror(0x0c).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0xa1, 0xa1).mirror(0x0c).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0xa2, 0xa2).mirror(0x0c).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0xa3, 0xa3).mirror(0x0c).nopw();
+ map(0xb0, 0xb0).mirror(0x0f).w(this, FUNC(pc6001_state::system_latch_w));
+ map(0xd0, 0xd3).mirror(0x0c).noprw(); // disk device
+}
/*****************************************
*
@@ -677,50 +679,52 @@ READ8_MEMBER(pc6001mk2_state::mk2_bank_w0_r)
return m_bank_w;
}
-ADDRESS_MAP_START(pc6001mk2_state::pc6001mk2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") AM_WRITE(mk2_work_ram0_w)
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") AM_WRITE(mk2_work_ram1_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank3") AM_WRITE(mk2_work_ram2_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank4") AM_WRITE(mk2_work_ram3_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank5") AM_WRITE(mk2_work_ram4_w)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank6") AM_WRITE(mk2_work_ram5_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank7") AM_WRITE(mk2_work_ram6_w)
- AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank8") AM_WRITE(mk2_work_ram7_w)
-ADDRESS_MAP_END
+void pc6001mk2_state::pc6001mk2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankr("bank1").w(this, FUNC(pc6001mk2_state::mk2_work_ram0_w));
+ map(0x2000, 0x3fff).bankr("bank2").w(this, FUNC(pc6001mk2_state::mk2_work_ram1_w));
+ map(0x4000, 0x5fff).bankr("bank3").w(this, FUNC(pc6001mk2_state::mk2_work_ram2_w));
+ map(0x6000, 0x7fff).bankr("bank4").w(this, FUNC(pc6001mk2_state::mk2_work_ram3_w));
+ map(0x8000, 0x9fff).bankr("bank5").w(this, FUNC(pc6001mk2_state::mk2_work_ram4_w));
+ map(0xa000, 0xbfff).bankr("bank6").w(this, FUNC(pc6001mk2_state::mk2_work_ram5_w));
+ map(0xc000, 0xdfff).bankr("bank7").w(this, FUNC(pc6001mk2_state::mk2_work_ram6_w));
+ map(0xe000, 0xffff).bankr("bank8").w(this, FUNC(pc6001mk2_state::mk2_work_ram7_w));
+}
-ADDRESS_MAP_START(pc6001mk2_state::pc6001mk2_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
+void pc6001mk2_state::pc6001mk2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
- AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_READWRITE(nec_ppi8255_r, necmk2_ppi8255_w)
+ map(0x90, 0x93).mirror(0x0c).rw(this, FUNC(pc6001mk2_state::nec_ppi8255_r), FUNC(pc6001mk2_state::necmk2_ppi8255_w));
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_NOP
+ map(0xa0, 0xa0).mirror(0x0c).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0xa1, 0xa1).mirror(0x0c).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0xa2, 0xa2).mirror(0x0c).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0xa3, 0xa3).mirror(0x0c).noprw();
- AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_WRITE(mk2_system_latch_w)
+ map(0xb0, 0xb0).mirror(0x0f).w(this, FUNC(pc6001mk2_state::mk2_system_latch_w));
- AM_RANGE(0xc0, 0xc0) AM_WRITE(mk2_col_bank_w)
- AM_RANGE(0xc1, 0xc1) AM_WRITE(mk2_vram_bank_w)
- AM_RANGE(0xc2, 0xc2) AM_WRITE(mk2_opt_bank_w)
+ map(0xc0, 0xc0).w(this, FUNC(pc6001mk2_state::mk2_col_bank_w));
+ map(0xc1, 0xc1).w(this, FUNC(pc6001mk2_state::mk2_vram_bank_w));
+ map(0xc2, 0xc2).w(this, FUNC(pc6001mk2_state::mk2_opt_bank_w));
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_NOP // disk device
+ map(0xd0, 0xd3).mirror(0x0c).noprw(); // disk device
- AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("upd7752", upd7752_device, read, write)
+ map(0xe0, 0xe3).mirror(0x0c).rw("upd7752", FUNC(upd7752_device::read), FUNC(upd7752_device::write));
- AM_RANGE(0xf0, 0xf0) AM_READWRITE(mk2_bank_r0_r, mk2_bank_r0_w)
- AM_RANGE(0xf1, 0xf1) AM_READWRITE(mk2_bank_r1_r, mk2_bank_r1_w)
- AM_RANGE(0xf2, 0xf2) AM_READWRITE(mk2_bank_w0_r, mk2_bank_w0_w)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(mk2_0xf3_w)
+ map(0xf0, 0xf0).rw(this, FUNC(pc6001mk2_state::mk2_bank_r0_r), FUNC(pc6001mk2_state::mk2_bank_r0_w));
+ map(0xf1, 0xf1).rw(this, FUNC(pc6001mk2_state::mk2_bank_r1_r), FUNC(pc6001mk2_state::mk2_bank_r1_w));
+ map(0xf2, 0xf2).rw(this, FUNC(pc6001mk2_state::mk2_bank_w0_r), FUNC(pc6001mk2_state::mk2_bank_w0_w));
+ map(0xf3, 0xf3).w(this, FUNC(pc6001mk2_state::mk2_0xf3_w));
// AM_RANGE(0xf4
// AM_RANGE(0xf5
- AM_RANGE(0xf6, 0xf6) AM_WRITE(mk2_timer_adj_w)
- AM_RANGE(0xf7, 0xf7) AM_WRITE(mk2_timer_irqv_w)
-ADDRESS_MAP_END
+ map(0xf6, 0xf6).w(this, FUNC(pc6001mk2_state::mk2_timer_adj_w));
+ map(0xf7, 0xf7).w(this, FUNC(pc6001mk2_state::mk2_timer_irqv_w));
+}
/*****************************************
*
@@ -739,18 +743,19 @@ WRITE8_MEMBER(pc6601_state::fdc_w)
{
}
-ADDRESS_MAP_START(pc6601_state::pc6601_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_IMPORT_FROM( pc6001mk2_io )
+void pc6601_state::pc6601_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ pc6001mk2_io(map);
// these are disk related
// AM_RANGE(0xb1
// AM_RANGE(0xb2
// AM_RANGE(0xb3
- AM_RANGE(0xd0, 0xdf) AM_READWRITE(fdc_r, fdc_w)
-ADDRESS_MAP_END
+ map(0xd0, 0xdf).rw(this, FUNC(pc6601_state::fdc_r), FUNC(pc6601_state::fdc_w));
+}
/*****************************************
*
@@ -908,63 +913,65 @@ READ8_MEMBER(pc6001sr_state::hw_rev_r)
return 0;
}
-ADDRESS_MAP_START(pc6001sr_state::pc6001sr_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") AM_WRITE(sr_work_ram0_w)
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") AM_WRITE(sr_work_ram1_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank3") AM_WRITE(sr_work_ram2_w)
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank4") AM_WRITE(sr_work_ram3_w)
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank5") AM_WRITE(sr_work_ram4_w)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank6") AM_WRITE(sr_work_ram5_w)
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank7") AM_WRITE(sr_work_ram6_w)
- AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank8") AM_WRITE(sr_work_ram7_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc6001sr_state::pc6001sr_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void pc6001sr_state::pc6001sr_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankr("bank1").w(this, FUNC(pc6001sr_state::sr_work_ram0_w));
+ map(0x2000, 0x3fff).bankr("bank2").w(this, FUNC(pc6001sr_state::sr_work_ram1_w));
+ map(0x4000, 0x5fff).bankr("bank3").w(this, FUNC(pc6001sr_state::sr_work_ram2_w));
+ map(0x6000, 0x7fff).bankr("bank4").w(this, FUNC(pc6001sr_state::sr_work_ram3_w));
+ map(0x8000, 0x9fff).bankr("bank5").w(this, FUNC(pc6001sr_state::sr_work_ram4_w));
+ map(0xa000, 0xbfff).bankr("bank6").w(this, FUNC(pc6001sr_state::sr_work_ram5_w));
+ map(0xc000, 0xdfff).bankr("bank7").w(this, FUNC(pc6001sr_state::sr_work_ram6_w));
+ map(0xe000, 0xffff).bankr("bank8").w(this, FUNC(pc6001sr_state::sr_work_ram7_w));
+}
+
+void pc6001sr_state::pc6001sr_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// 0x40-0x43 palette indexes
- AM_RANGE(0x60, 0x67) AM_READWRITE(sr_bank_rn_r, sr_bank_rn_w)
- AM_RANGE(0x68, 0x6f) AM_READWRITE(sr_bank_wn_r, sr_bank_wn_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
+ map(0x60, 0x67).rw(this, FUNC(pc6001sr_state::sr_bank_rn_r), FUNC(pc6001sr_state::sr_bank_rn_w));
+ map(0x68, 0x6f).rw(this, FUNC(pc6001sr_state::sr_bank_wn_r), FUNC(pc6001sr_state::sr_bank_wn_w));
+ map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
- AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_READWRITE(nec_ppi8255_r, necsr_ppi8255_w)
+ map(0x90, 0x93).mirror(0x0c).rw(this, FUNC(pc6001sr_state::nec_ppi8255_r), FUNC(pc6001sr_state::necsr_ppi8255_w));
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_NOP
+ map(0xa0, 0xa0).mirror(0x0c).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0xa1, 0xa1).mirror(0x0c).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0xa2, 0xa2).mirror(0x0c).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0xa3, 0xa3).mirror(0x0c).noprw();
- AM_RANGE(0xb0, 0xb0) AM_WRITE(sr_system_latch_w)
+ map(0xb0, 0xb0).w(this, FUNC(pc6001sr_state::sr_system_latch_w));
/* these are disk related */
// AM_RANGE(0xb1
- AM_RANGE(0xb2, 0xb2) AM_READ(hw_rev_r)
+ map(0xb2, 0xb2).r(this, FUNC(pc6001sr_state::hw_rev_r));
// AM_RANGE(0xb3
- AM_RANGE(0xb8, 0xbf) AM_RAM AM_SHARE("irq_vectors")
+ map(0xb8, 0xbf).ram().share("irq_vectors");
// AM_RANGE(0xc0, 0xc0) AM_WRITE(mk2_col_bank_w)
// AM_RANGE(0xc1, 0xc1) AM_WRITE(mk2_vram_bank_w)
// AM_RANGE(0xc2, 0xc2) AM_WRITE(opt_bank_w)
- AM_RANGE(0xc8, 0xc8) AM_WRITE(sr_mode_w)
- AM_RANGE(0xc9, 0xc9) AM_WRITE(sr_vram_bank_w)
- AM_RANGE(0xce, 0xce) AM_WRITE(sr_bitmap_yoffs_w)
- AM_RANGE(0xcf, 0xcf) AM_WRITE(sr_bitmap_xoffs_w)
+ map(0xc8, 0xc8).w(this, FUNC(pc6001sr_state::sr_mode_w));
+ map(0xc9, 0xc9).w(this, FUNC(pc6001sr_state::sr_vram_bank_w));
+ map(0xce, 0xce).w(this, FUNC(pc6001sr_state::sr_bitmap_yoffs_w));
+ map(0xcf, 0xcf).w(this, FUNC(pc6001sr_state::sr_bitmap_xoffs_w));
- AM_RANGE(0xd0, 0xdf) AM_READWRITE(fdc_r,fdc_w) // disk device
+ map(0xd0, 0xdf).rw(this, FUNC(pc6001sr_state::fdc_r), FUNC(pc6001sr_state::fdc_w)); // disk device
- AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("upd7752", upd7752_device, read, write)
+ map(0xe0, 0xe3).mirror(0x0c).rw("upd7752", FUNC(upd7752_device::read), FUNC(upd7752_device::write));
// AM_RANGE(0xf0, 0xf0) AM_READWRITE(mk2_bank_r0_r, mk2_bank_r0_w)
// AM_RANGE(0xf1, 0xf1) AM_READWRITE(mk2_bank_r1_r, mk2_bank_r1_w)
// AM_RANGE(0xf2, 0xf2) AM_READWRITE(mk2_bank_w0_r, mk2_bank_w0_w)
- AM_RANGE(0xf3, 0xf3) AM_WRITE(mk2_0xf3_w)
+ map(0xf3, 0xf3).w(this, FUNC(pc6001sr_state::mk2_0xf3_w));
// AM_RANGE(0xf4
// AM_RANGE(0xf5
- AM_RANGE(0xf6, 0xf6) AM_WRITE(mk2_timer_adj_w)
- AM_RANGE(0xf7, 0xf7) AM_WRITE(mk2_timer_irqv_w)
-ADDRESS_MAP_END
+ map(0xf6, 0xf6).w(this, FUNC(pc6001sr_state::mk2_timer_adj_w));
+ map(0xf7, 0xf7).w(this, FUNC(pc6001sr_state::mk2_timer_irqv_w));
+}
/* Input ports */
static INPUT_PORTS_START( pc6001 )
diff --git a/src/mame/drivers/pc8001.cpp b/src/mame/drivers/pc8001.cpp
index 6aa6dbd13cf..327817557f8 100644
--- a/src/mame/drivers/pc8001.cpp
+++ b/src/mame/drivers/pc8001.cpp
@@ -166,32 +166,34 @@ WRITE8_MEMBER( pc8001_state::port40_w )
/* Memory Maps */
-ADDRESS_MAP_START(pc8001_state::pc8001_mem)
- AM_RANGE(0x0000, 0x5fff) AM_RAMBANK("bank1")
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc8001_state::pc8001_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_READ_PORT("Y0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("Y1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("Y2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("Y3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("Y4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("Y5")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("Y6")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("Y7")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("Y8")
- AM_RANGE(0x09, 0x09) AM_READ_PORT("Y9")
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_WRITE(port10_w)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(port30_w)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READWRITE(port40_r, port40_w)
- AM_RANGE(0x50, 0x51) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write)
- AM_RANGE(0x60, 0x68) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write)
+void pc8001_state::pc8001_mem(address_map &map)
+{
+ map(0x0000, 0x5fff).bankrw("bank1");
+ map(0x6000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xffff).bankrw("bank3");
+}
+
+void pc8001_state::pc8001_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x00).portr("Y0");
+ map(0x01, 0x01).portr("Y1");
+ map(0x02, 0x02).portr("Y2");
+ map(0x03, 0x03).portr("Y3");
+ map(0x04, 0x04).portr("Y4");
+ map(0x05, 0x05).portr("Y5");
+ map(0x06, 0x06).portr("Y6");
+ map(0x07, 0x07).portr("Y7");
+ map(0x08, 0x08).portr("Y8");
+ map(0x09, 0x09).portr("Y9");
+ map(0x10, 0x10).mirror(0x0f).w(this, FUNC(pc8001_state::port10_w));
+ map(0x20, 0x20).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x30, 0x30).mirror(0x0f).w(this, FUNC(pc8001_state::port30_w));
+ map(0x40, 0x40).mirror(0x0f).rw(this, FUNC(pc8001_state::port40_r), FUNC(pc8001_state::port40_w));
+ map(0x50, 0x51).rw(m_crtc, FUNC(upd3301_device::read), FUNC(upd3301_device::write));
+ map(0x60, 0x68).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write));
// AM_RANGE(0x70, 0x7f) unused
// AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) AM_WRITE(pc8011_ext0_w)
// AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(pc8011_ext1_w)
@@ -216,20 +218,22 @@ ADDRESS_MAP_START(pc8001_state::pc8001_io)
// AM_RANGE(0xe6, 0xe6) AM_WRITE(irq_mask_w)
// AM_RANGE(0xe7, 0xe7) AM_WRITE(pc8012_memory_mode_w)
// AM_RANGE(0xe8, 0xfb) unused
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc8001mk2_state::pc8001mk2_mem)
- AM_RANGE(0x0000, 0x5fff) AM_RAMBANK("bank1")
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc8001mk2_state::pc8001mk2_io)
- AM_IMPORT_FROM(pc8001_io)
- AM_RANGE(0x30, 0x30) AM_WRITE(port30_w)
- AM_RANGE(0x31, 0x31) AM_WRITE(port31_w)
+ map(0xfc, 0xff).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void pc8001mk2_state::pc8001mk2_mem(address_map &map)
+{
+ map(0x0000, 0x5fff).bankrw("bank1");
+ map(0x6000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void pc8001mk2_state::pc8001mk2_io(address_map &map)
+{
+ pc8001_io(map);
+ map(0x30, 0x30).w(this, FUNC(pc8001mk2_state::port30_w));
+ map(0x31, 0x31).w(this, FUNC(pc8001mk2_state::port31_w));
// AM_RANGE(0x5c, 0x5c) AM_WRITE(gram_on_w)
// AM_RANGE(0x5f, 0x5f) AM_WRITE(gram_off_w)
// AM_RANGE(0xe8, 0xe8) kanji_address_lo_w, kanji_data_lo_r
@@ -245,7 +249,7 @@ ADDRESS_MAP_START(pc8001mk2_state::pc8001mk2_io)
// AM_RANGE(0xf9, 0xf9) DMA type 5 inch margin control
// AM_RANGE(0xfa, 0xfa) DMA type 5 inch FDC status
// AM_RANGE(0xfb, 0xfb) DMA type 5 inch FDC data register
-ADDRESS_MAP_END
+}
/* Input Ports */
diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp
index acf7765a391..00ac3813e60 100644
--- a/src/mame/drivers/pc8401a.cpp
+++ b/src/mame/drivers/pc8401a.cpp
@@ -331,18 +331,20 @@ WRITE8_MEMBER( pc8401a_state::port71_w )
/* Memory Maps */
-ADDRESS_MAP_START(pc8401a_state::pc8401a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xe7ff) AM_RAMBANK("bank4")
- AM_RANGE(0xe800, 0xffff) AM_RAMBANK("bank5")
-ADDRESS_MAP_END
+void pc8401a_state::pc8401a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xe7ff).bankrw("bank4");
+ map(0xe800, 0xffff).bankrw("bank5");
+}
-ADDRESS_MAP_START(pc8401a_state::pc8401a_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void pc8401a_state::pc8401a_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
ADDRESS_MAP_START(pc8401a_state::pc8500_io)
ADDRESS_MAP_UNMAP_HIGH
diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp
index 0be6674abad..183352fbd68 100644
--- a/src/mame/drivers/pc8801.cpp
+++ b/src/mame/drivers/pc8801.cpp
@@ -1166,9 +1166,10 @@ WRITE8_MEMBER(pc8801_state::pc8801_mem_w)
}
}
-ADDRESS_MAP_START(pc8801_state::pc8801_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(pc8801_mem_r,pc8801_mem_w)
-ADDRESS_MAP_END
+void pc8801_state::pc8801_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(pc8801_state::pc8801_mem_r), FUNC(pc8801_state::pc8801_mem_w));
+}
READ8_MEMBER(pc8801_state::pc8801_ctrl_r)
{
@@ -1767,79 +1768,80 @@ WRITE8_MEMBER(pc8801_state::pc8801_unk_w)
printf("Write port 0x33\n");
}
-ADDRESS_MAP_START(pc8801_state::pc8801_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_READ_PORT("KEY0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("KEY1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("KEY2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("KEY3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("KEY4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("KEY5")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("KEY6")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("KEY7")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("KEY8")
- AM_RANGE(0x09, 0x09) AM_READ_PORT("KEY9")
- AM_RANGE(0x0a, 0x0a) AM_READ_PORT("KEY10")
- AM_RANGE(0x0b, 0x0b) AM_READ_PORT("KEY11")
- AM_RANGE(0x0c, 0x0c) AM_READ_PORT("KEY12")
- AM_RANGE(0x0d, 0x0d) AM_READ_PORT("KEY13")
- AM_RANGE(0x0e, 0x0e) AM_READ_PORT("KEY14")
- AM_RANGE(0x0f, 0x0f) AM_READ_PORT("KEY15")
- AM_RANGE(0x00, 0x02) AM_WRITE(pc8801_pcg8100_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(pc8801_rtc_w)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) /* RS-232C and CMT */
- AM_RANGE(0x21, 0x21) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x30, 0x30) AM_READ_PORT("DSW1") AM_WRITE(pc8801_txt_cmt_ctrl_w)
- AM_RANGE(0x31, 0x31) AM_READ_PORT("DSW2") AM_WRITE(pc8801_gfx_ctrl_w)
- AM_RANGE(0x32, 0x32) AM_READWRITE(pc8801_misc_ctrl_r, pc8801_misc_ctrl_w)
- AM_RANGE(0x33, 0x33) AM_READWRITE(pc8801_unk_r,pc8801_unk_w)
- AM_RANGE(0x34, 0x34) AM_WRITE(pc8801_alu_ctrl1_w)
- AM_RANGE(0x35, 0x35) AM_WRITE(pc8801_alu_ctrl2_w)
- AM_RANGE(0x40, 0x40) AM_READWRITE(pc8801_ctrl_r, pc8801_ctrl_w)
- AM_RANGE(0x44, 0x47) AM_READWRITE(pc8801_sound_board_r,pc8801_sound_board_w) /* OPN / OPNA ports */
- AM_RANGE(0x50, 0x50) AM_READWRITE(pc8801_crtc_param_r, pc88_crtc_param_w)
- AM_RANGE(0x51, 0x51) AM_READWRITE(pc8801_crtc_status_r, pc88_crtc_cmd_w)
- AM_RANGE(0x52, 0x52) AM_WRITE(pc8801_bgpal_w)
- AM_RANGE(0x53, 0x53) AM_WRITE(pc8801_layer_masking_w)
- AM_RANGE(0x54, 0x5b) AM_WRITE(pc8801_palram_w)
- AM_RANGE(0x5c, 0x5c) AM_READ(pc8801_vram_select_r)
- AM_RANGE(0x5c, 0x5f) AM_WRITE(pc8801_vram_select_w)
- AM_RANGE(0x60, 0x67) AM_READWRITE(pc8801_dmac_r,pc8801_dmac_w)
- AM_RANGE(0x68, 0x68) AM_READWRITE(pc8801_dmac_status_r,pc8801_dmac_mode_w)
- AM_RANGE(0x6e, 0x6e) AM_READ(pc8801_cpuclock_r)
- AM_RANGE(0x6f, 0x6f) AM_READWRITE(pc8801_baudrate_r,pc8801_baudrate_w)
- AM_RANGE(0x70, 0x70) AM_READWRITE(pc8801_window_bank_r, pc8801_window_bank_w)
- AM_RANGE(0x71, 0x71) AM_READWRITE(pc8801_ext_rom_bank_r, pc8801_ext_rom_bank_w)
- AM_RANGE(0x78, 0x78) AM_WRITE(pc8801_window_bank_inc_w)
- AM_RANGE(0x90, 0x9f) AM_READWRITE(pc8801_cdrom_r,pc8801_cdrom_w)
+void pc8801_state::pc8801_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x00).portr("KEY0");
+ map(0x01, 0x01).portr("KEY1");
+ map(0x02, 0x02).portr("KEY2");
+ map(0x03, 0x03).portr("KEY3");
+ map(0x04, 0x04).portr("KEY4");
+ map(0x05, 0x05).portr("KEY5");
+ map(0x06, 0x06).portr("KEY6");
+ map(0x07, 0x07).portr("KEY7");
+ map(0x08, 0x08).portr("KEY8");
+ map(0x09, 0x09).portr("KEY9");
+ map(0x0a, 0x0a).portr("KEY10");
+ map(0x0b, 0x0b).portr("KEY11");
+ map(0x0c, 0x0c).portr("KEY12");
+ map(0x0d, 0x0d).portr("KEY13");
+ map(0x0e, 0x0e).portr("KEY14");
+ map(0x0f, 0x0f).portr("KEY15");
+ map(0x00, 0x02).w(this, FUNC(pc8801_state::pc8801_pcg8100_w));
+ map(0x10, 0x10).w(this, FUNC(pc8801_state::pc8801_rtc_w));
+ map(0x20, 0x20).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); /* RS-232C and CMT */
+ map(0x21, 0x21).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x30, 0x30).portr("DSW1").w(this, FUNC(pc8801_state::pc8801_txt_cmt_ctrl_w));
+ map(0x31, 0x31).portr("DSW2").w(this, FUNC(pc8801_state::pc8801_gfx_ctrl_w));
+ map(0x32, 0x32).rw(this, FUNC(pc8801_state::pc8801_misc_ctrl_r), FUNC(pc8801_state::pc8801_misc_ctrl_w));
+ map(0x33, 0x33).rw(this, FUNC(pc8801_state::pc8801_unk_r), FUNC(pc8801_state::pc8801_unk_w));
+ map(0x34, 0x34).w(this, FUNC(pc8801_state::pc8801_alu_ctrl1_w));
+ map(0x35, 0x35).w(this, FUNC(pc8801_state::pc8801_alu_ctrl2_w));
+ map(0x40, 0x40).rw(this, FUNC(pc8801_state::pc8801_ctrl_r), FUNC(pc8801_state::pc8801_ctrl_w));
+ map(0x44, 0x47).rw(this, FUNC(pc8801_state::pc8801_sound_board_r), FUNC(pc8801_state::pc8801_sound_board_w)); /* OPN / OPNA ports */
+ map(0x50, 0x50).rw(this, FUNC(pc8801_state::pc8801_crtc_param_r), FUNC(pc8801_state::pc88_crtc_param_w));
+ map(0x51, 0x51).rw(this, FUNC(pc8801_state::pc8801_crtc_status_r), FUNC(pc8801_state::pc88_crtc_cmd_w));
+ map(0x52, 0x52).w(this, FUNC(pc8801_state::pc8801_bgpal_w));
+ map(0x53, 0x53).w(this, FUNC(pc8801_state::pc8801_layer_masking_w));
+ map(0x54, 0x5b).w(this, FUNC(pc8801_state::pc8801_palram_w));
+ map(0x5c, 0x5c).r(this, FUNC(pc8801_state::pc8801_vram_select_r));
+ map(0x5c, 0x5f).w(this, FUNC(pc8801_state::pc8801_vram_select_w));
+ map(0x60, 0x67).rw(this, FUNC(pc8801_state::pc8801_dmac_r), FUNC(pc8801_state::pc8801_dmac_w));
+ map(0x68, 0x68).rw(this, FUNC(pc8801_state::pc8801_dmac_status_r), FUNC(pc8801_state::pc8801_dmac_mode_w));
+ map(0x6e, 0x6e).r(this, FUNC(pc8801_state::pc8801_cpuclock_r));
+ map(0x6f, 0x6f).rw(this, FUNC(pc8801_state::pc8801_baudrate_r), FUNC(pc8801_state::pc8801_baudrate_w));
+ map(0x70, 0x70).rw(this, FUNC(pc8801_state::pc8801_window_bank_r), FUNC(pc8801_state::pc8801_window_bank_w));
+ map(0x71, 0x71).rw(this, FUNC(pc8801_state::pc8801_ext_rom_bank_r), FUNC(pc8801_state::pc8801_ext_rom_bank_w));
+ map(0x78, 0x78).w(this, FUNC(pc8801_state::pc8801_window_bank_inc_w));
+ map(0x90, 0x9f).rw(this, FUNC(pc8801_state::pc8801_cdrom_r), FUNC(pc8801_state::pc8801_cdrom_w));
// AM_RANGE(0xa0, 0xa3) AM_NOP /* music & network */
- AM_RANGE(0xa8, 0xad) AM_READWRITE(pc8801_opna_r,pc8801_opna_w) /* second sound board */
+ map(0xa8, 0xad).rw(this, FUNC(pc8801_state::pc8801_opna_r), FUNC(pc8801_state::pc8801_opna_w)); /* second sound board */
// AM_RANGE(0xb4, 0xb5) AM_NOP /* Video art board */
// AM_RANGE(0xc1, 0xc1) AM_NOP /* (unknown) */
// AM_RANGE(0xc2, 0xcf) AM_NOP /* music */
// AM_RANGE(0xd0, 0xd7) AM_NOP /* music & GP-IB */
// AM_RANGE(0xd8, 0xd8) AM_NOP /* GP-IB */
// AM_RANGE(0xdc, 0xdf) AM_NOP /* MODEM */
- AM_RANGE(0xe2, 0xe2) AM_READWRITE(pc8801_extram_mode_r,pc8801_extram_mode_w) /* expand RAM mode */
- AM_RANGE(0xe3, 0xe3) AM_READWRITE(pc8801_extram_bank_r,pc8801_extram_bank_w) /* expand RAM bank */
+ map(0xe2, 0xe2).rw(this, FUNC(pc8801_state::pc8801_extram_mode_r), FUNC(pc8801_state::pc8801_extram_mode_w)); /* expand RAM mode */
+ map(0xe3, 0xe3).rw(this, FUNC(pc8801_state::pc8801_extram_bank_r), FUNC(pc8801_state::pc8801_extram_bank_w)); /* expand RAM bank */
#ifdef USE_PROPER_I8214
- AM_RANGE(0xe4, 0xe4) AM_WRITE(i8214_irq_level_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(i8214_irq_mask_w)
+ map(0xe4, 0xe4).w(this, FUNC(pc8801_state::i8214_irq_level_w));
+ map(0xe6, 0xe6).w(this, FUNC(pc8801_state::i8214_irq_mask_w));
#else
- AM_RANGE(0xe4, 0xe4) AM_WRITE(pc8801_irq_level_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(pc8801_irq_mask_w)
+ map(0xe4, 0xe4).w(this, FUNC(pc8801_state::pc8801_irq_level_w));
+ map(0xe6, 0xe6).w(this, FUNC(pc8801_state::pc8801_irq_mask_w));
#endif
// AM_RANGE(0xe7, 0xe7) AM_NOP /* Arcus writes here, almost likely to be a mirror of above */
- AM_RANGE(0xe8, 0xeb) AM_READWRITE(pc8801_kanji_r, pc8801_kanji_w)
- AM_RANGE(0xec, 0xef) AM_READWRITE(pc8801_kanji_lv2_r, pc8801_kanji_lv2_w)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(pc8801_dic_bank_w)
- AM_RANGE(0xf1, 0xf1) AM_WRITE(pc8801_dic_ctrl_w)
+ map(0xe8, 0xeb).rw(this, FUNC(pc8801_state::pc8801_kanji_r), FUNC(pc8801_state::pc8801_kanji_w));
+ map(0xec, 0xef).rw(this, FUNC(pc8801_state::pc8801_kanji_lv2_r), FUNC(pc8801_state::pc8801_kanji_lv2_w));
+ map(0xf0, 0xf0).w(this, FUNC(pc8801_state::pc8801_dic_bank_w));
+ map(0xf1, 0xf1).w(this, FUNC(pc8801_state::pc8801_dic_ctrl_w));
// AM_RANGE(0xf3, 0xf3) AM_NOP /* DMA floppy (unknown) */
// AM_RANGE(0xf4, 0xf7) AM_NOP /* DMA 5'floppy (may be not released) */
// AM_RANGE(0xf8, 0xfb) AM_NOP /* DMA 8'floppy (unknown) */
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_master", i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0xfc, 0xff).rw("d8255_master", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
READ8_MEMBER(pc8801_state::cpu_8255_c_r)
{
@@ -1870,10 +1872,11 @@ WRITE8_MEMBER(pc8801_state::fdc_8255_c_w)
m_i8255_1_pc = data;
}
-ADDRESS_MAP_START(pc8801_state::pc8801fdc_mem)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void pc8801_state::pc8801fdc_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).ram();
+}
TIMER_CALLBACK_MEMBER(pc8801_state::pc8801fd_upd765_tc_to_zero)
{
@@ -1913,15 +1916,16 @@ WRITE8_MEMBER(pc8801_state::fdc_drive_mode_w)
machine().device<upd765a_device>("upd765")->set_rate(data & 0x20 ? 500000 : 250000);
}
-ADDRESS_MAP_START(pc8801_state::pc8801fdc_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(fdc_irq_vector_w) // Interrupt Opcode Port
- AM_RANGE(0xf4, 0xf4) AM_WRITE(fdc_drive_mode_w) // Drive mode, 2d, 2dd, 2hd
- AM_RANGE(0xf7, 0xf7) AM_WRITENOP // printer port output
- AM_RANGE(0xf8, 0xf8) AM_READWRITE(upd765_tc_r,upd765_mc_w) // (R) Terminal Count Port (W) Motor Control Port
- AM_RANGE(0xfa, 0xfb) AM_DEVICE("upd765", upd765a_device, map )
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_slave", i8255_device, read, write)
-ADDRESS_MAP_END
+void pc8801_state::pc8801fdc_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(pc8801_state::fdc_irq_vector_w)); // Interrupt Opcode Port
+ map(0xf4, 0xf4).w(this, FUNC(pc8801_state::fdc_drive_mode_w)); // Drive mode, 2d, 2dd, 2hd
+ map(0xf7, 0xf7).nopw(); // printer port output
+ map(0xf8, 0xf8).rw(this, FUNC(pc8801_state::upd765_tc_r), FUNC(pc8801_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port
+ map(0xfa, 0xfb).m("upd765", FUNC(upd765a_device::map));
+ map(0xfc, 0xff).rw("d8255_slave", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index a192520e40e..7cddd40f074 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -673,13 +673,14 @@ WRITE16_MEMBER(pc88va_state::sys_mem_w)
}
}
-ADDRESS_MAP_START(pc88va_state::pc88va_map)
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
+void pc88va_state::pc88va_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).ram();
// AM_RANGE(0x80000, 0x9ffff) AM_RAM // EMM
- AM_RANGE(0xa0000, 0xdffff) AM_READWRITE(sys_mem_r,sys_mem_w)
- AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("rom00_bank")
- AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("rom10_bank")
-ADDRESS_MAP_END
+ map(0xa0000, 0xdffff).rw(this, FUNC(pc88va_state::sys_mem_r), FUNC(pc88va_state::sys_mem_w));
+ map(0xe0000, 0xeffff).bankr("rom00_bank");
+ map(0xf0000, 0xfffff).bankr("rom10_bank");
+}
/* IDP = NEC uPD72022 */
READ8_MEMBER(pc88va_state::idp_status_r)
@@ -1248,23 +1249,24 @@ READ8_MEMBER(pc88va_state::no_subfdc_r)
}
#endif
-ADDRESS_MAP_START(pc88va_state::pc88va_io_map)
- AM_RANGE(0x0000, 0x000f) AM_READ8(key_r,0xffff) // Keyboard ROW reading
+void pc88va_state::pc88va_io_map(address_map &map)
+{
+ map(0x0000, 0x000f).r(this, FUNC(pc88va_state::key_r)); // Keyboard ROW reading
// AM_RANGE(0x0010, 0x0010) Printer / Calendar Clock Interface
- AM_RANGE(0x0020, 0x0021) AM_NOP // RS-232C
- AM_RANGE(0x0030, 0x0031) AM_READWRITE8(backupram_dsw_r,sys_port1_w,0xffff) // 0x30 (R) DSW1 (W) Text Control Port 0 / 0x31 (R) DSW2 (W) System Port 1
+ map(0x0020, 0x0021).noprw(); // RS-232C
+ map(0x0030, 0x0031).rw(this, FUNC(pc88va_state::backupram_dsw_r), FUNC(pc88va_state::sys_port1_w)); // 0x30 (R) DSW1 (W) Text Control Port 0 / 0x31 (R) DSW2 (W) System Port 1
// AM_RANGE(0x0032, 0x0032) (R) ? (W) System Port 2
// AM_RANGE(0x0034, 0x0034) GVRAM Control Port 1
// AM_RANGE(0x0035, 0x0035) GVRAM Control Port 2
- AM_RANGE(0x0040, 0x0041) AM_READ(sys_port4_r) // (R) System Port 4 (W) System port 3 (strobe port)
- AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x0002) AM_DEVREADWRITE8("ym", ym2203_device, read, write, 0xffff)
+ map(0x0040, 0x0041).r(this, FUNC(pc88va_state::sys_port4_r)); // (R) System Port 4 (W) System port 3 (strobe port)
+ map(0x0044, 0x0045).mirror(0x0002).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
// AM_RANGE(0x005c, 0x005c) (R) GVRAM status
// AM_RANGE(0x005c, 0x005f) (W) GVRAM selection
// AM_RANGE(0x0070, 0x0070) ? (*)
// AM_RANGE(0x0071, 0x0071) Expansion ROM select (*)
// AM_RANGE(0x0078, 0x0078) Memory offset increment (*)
// AM_RANGE(0x0080, 0x0081) HDD related
- AM_RANGE(0x0082, 0x0083) AM_READ8(hdd_status_r,0x00ff)// HDD control, byte access 7-0
+ map(0x0082, 0x0082).r(this, FUNC(pc88va_state::hdd_status_r));// HDD control, byte access 7-0
// AM_RANGE(0x00bc, 0x00bf) d8255 1
// AM_RANGE(0x00e2, 0x00e3) Expansion RAM selection (*)
// AM_RANGE(0x00e4, 0x00e4) 8214 IRQ control (*)
@@ -1272,14 +1274,14 @@ ADDRESS_MAP_START(pc88va_state::pc88va_io_map)
// AM_RANGE(0x00e8, 0x00e9) ? (*)
// AM_RANGE(0x00ec, 0x00ed) ? (*)
#if TEST_SUBFDC
- AM_RANGE(0x00fc, 0x00ff) AM_DEVREADWRITE8("d8255_2", i8255_device, read, write, 0xffff) // d8255 2, FDD
+ map(0x00fc, 0x00ff).rw("d8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // d8255 2, FDD
#else
- AM_RANGE(0x00fc, 0x00ff) AM_READ8(no_subfdc_r,0xffff) AM_WRITENOP
+ map(0x00fc, 0x00ff).r(this, FUNC(pc88va_state::no_subfdc_r)).nopw();
#endif
- AM_RANGE(0x0100, 0x0101) AM_READWRITE(screen_ctrl_r,screen_ctrl_w) // Screen Control Register
+ map(0x0100, 0x0101).rw(this, FUNC(pc88va_state::screen_ctrl_r), FUNC(pc88va_state::screen_ctrl_w)); // Screen Control Register
// AM_RANGE(0x0102, 0x0103) Graphic Screen Control Register
- AM_RANGE(0x0106, 0x0109) AM_WRITE(video_pri_w) // Palette Control Register (priority) / Direct Color Control Register (priority)
+ map(0x0106, 0x0109).w(this, FUNC(pc88va_state::video_pri_w)); // Palette Control Register (priority) / Direct Color Control Register (priority)
// AM_RANGE(0x010a, 0x010b) Picture Mask Mode Register
// AM_RANGE(0x010c, 0x010d) Color Palette Mode Register
// AM_RANGE(0x010e, 0x010f) Backdrop Color Register
@@ -1288,41 +1290,41 @@ ADDRESS_MAP_START(pc88va_state::pc88va_io_map)
// AM_RANGE(0x0126, 0x0127) ? (related to Transparent Color of Graphic Screen 1)
// AM_RANGE(0x012e, 0x012f) ? (related to Transparent Color of Text/Sprite)
// AM_RANGE(0x0130, 0x0137) Picture Mask Parameter
- AM_RANGE(0x0142, 0x0143) AM_READWRITE8(idp_status_r,idp_command_w,0x00ff) //Text Controller (IDP) - (R) Status (W) command
- AM_RANGE(0x0146, 0x0147) AM_WRITE8(idp_param_w,0x00ff) //Text Controller (IDP) - (R/W) Parameter
+ map(0x0142, 0x0142).rw(this, FUNC(pc88va_state::idp_status_r), FUNC(pc88va_state::idp_command_w)); //Text Controller (IDP) - (R) Status (W) command
+ map(0x0146, 0x0146).w(this, FUNC(pc88va_state::idp_param_w)); //Text Controller (IDP) - (R/W) Parameter
// AM_RANGE(0x0148, 0x0149) Text control port 1
// AM_RANGE(0x014c, 0x014f) ? CG Port
- AM_RANGE(0x0150, 0x0151) AM_READ(sysop_r) // System Operational Mode
- AM_RANGE(0x0152, 0x0153) AM_READWRITE(bios_bank_r,bios_bank_w) // Memory Map Register
+ map(0x0150, 0x0151).r(this, FUNC(pc88va_state::sysop_r)); // System Operational Mode
+ map(0x0152, 0x0153).rw(this, FUNC(pc88va_state::bios_bank_r), FUNC(pc88va_state::bios_bank_w)); // Memory Map Register
// AM_RANGE(0x0154, 0x0155) Refresh Register (wait states)
- AM_RANGE(0x0156, 0x0157) AM_READ8(rom_bank_r,0x00ff) // ROM bank status
+ map(0x0156, 0x0156).r(this, FUNC(pc88va_state::rom_bank_r)); // ROM bank status
// AM_RANGE(0x0158, 0x0159) Interruption Mode Modification
// AM_RANGE(0x015c, 0x015f) NMI mask port (strobe port)
- AM_RANGE(0x0160, 0x016f) AM_DEVREADWRITE8("dmac", am9517a_device, read, write, 0xffff) // DMA Controller
- AM_RANGE(0x0184, 0x0187) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0188, 0x018b) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) // ICU, also controls 8214 emulation
+ map(0x0160, 0x016f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); // DMA Controller
+ map(0x0184, 0x0187).rw("pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0188, 0x018b).rw("pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // ICU, also controls 8214 emulation
// AM_RANGE(0x0190, 0x0191) System Port 5
// AM_RANGE(0x0196, 0x0197) Keyboard sub CPU command port
- AM_RANGE(0x0198, 0x0199) AM_WRITE(backupram_wp_1_w) //Backup RAM write inhibit
- AM_RANGE(0x019a, 0x019b) AM_WRITE(backupram_wp_0_w) //Backup RAM write permission
- AM_RANGE(0x01a0, 0x01a7) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)// vTCU (timer counter unit)
- AM_RANGE(0x01a8, 0x01a9) AM_WRITE8(timer3_ctrl_reg_w,0x00ff) // General-purpose timer 3 control port
- AM_RANGE(0x01b0, 0x01b7) AM_READWRITE8(pc88va_fdc_r,pc88va_fdc_w,0x00ff)// FDC related (765)
- AM_RANGE(0x01b8, 0x01bb) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff)
+ map(0x0198, 0x0199).w(this, FUNC(pc88va_state::backupram_wp_1_w)); //Backup RAM write inhibit
+ map(0x019a, 0x019b).w(this, FUNC(pc88va_state::backupram_wp_0_w)); //Backup RAM write permission
+ map(0x01a0, 0x01a7).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);// vTCU (timer counter unit)
+ map(0x01a8, 0x01a8).w(this, FUNC(pc88va_state::timer3_ctrl_reg_w)); // General-purpose timer 3 control port
+ map(0x01b0, 0x01b7).rw(this, FUNC(pc88va_state::pc88va_fdc_r), FUNC(pc88va_state::pc88va_fdc_w)).umask16(0x00ff);// FDC related (765)
+ map(0x01b8, 0x01bb).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
// AM_RANGE(0x01c0, 0x01c1) ?
- AM_RANGE(0x01c6, 0x01c7) AM_WRITENOP // ???
- AM_RANGE(0x01c8, 0x01cf) AM_DEVREADWRITE8("d8255_3", i8255_device, read, write,0xff00) //i8255 3 (byte access)
+ map(0x01c6, 0x01c7).nopw(); // ???
+ map(0x01c8, 0x01cf).rw("d8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); //i8255 3 (byte access)
// AM_RANGE(0x01d0, 0x01d1) Expansion RAM bank selection
- AM_RANGE(0x0200, 0x021f) AM_RAM // Frame buffer 0 control parameter
- AM_RANGE(0x0220, 0x023f) AM_RAM // Frame buffer 1 control parameter
- AM_RANGE(0x0240, 0x025f) AM_RAM // Frame buffer 2 control parameter
- AM_RANGE(0x0260, 0x027f) AM_RAM // Frame buffer 3 control parameter
- AM_RANGE(0x0300, 0x033f) AM_RAM_WRITE(palette_ram_w) AM_SHARE("palram") // Palette RAM (xBBBBxRRRRxGGGG format)
+ map(0x0200, 0x021f).ram(); // Frame buffer 0 control parameter
+ map(0x0220, 0x023f).ram(); // Frame buffer 1 control parameter
+ map(0x0240, 0x025f).ram(); // Frame buffer 2 control parameter
+ map(0x0260, 0x027f).ram(); // Frame buffer 3 control parameter
+ map(0x0300, 0x033f).ram().w(this, FUNC(pc88va_state::palette_ram_w)).share("palram"); // Palette RAM (xBBBBxRRRRxGGGG format)
// AM_RANGE(0x0500, 0x05ff) GVRAM
// AM_RANGE(0x1000, 0xfeff) user area (???)
- AM_RANGE(0xff00, 0xffff) AM_NOP // CPU internal use
-ADDRESS_MAP_END
+ map(0xff00, 0xffff).noprw(); // CPU internal use
+}
// (*) are specific N88 V1 / V2 ports
TIMER_CALLBACK_MEMBER(pc88va_state::pc8801fd_upd765_tc_to_zero)
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp
index c246a4b3b3f..8df9cd2004c 100644
--- a/src/mame/drivers/pc9801.cpp
+++ b/src/mame/drivers/pc9801.cpp
@@ -672,50 +672,53 @@ READ8_MEMBER(pc9801_state::f0_r)
return 0xff;
}
-ADDRESS_MAP_START(pc9801_state::pc9801_map)
- AM_RANGE(0xa0000, 0xa3fff) AM_READWRITE(tvram_r,tvram_w) //TVRAM
- AM_RANGE(0xa8000, 0xbffff) AM_READWRITE8(gvram_r,gvram_w,0xffff) //bitmap VRAM
- AM_RANGE(0xcc000, 0xcdfff) AM_ROM AM_REGION("sound_bios",0) //sound BIOS
- AM_RANGE(0xd6000, 0xd6fff) AM_ROM AM_REGION("fdc_bios_2dd",0) //floppy BIOS 2dd
- AM_RANGE(0xd7000, 0xd7fff) AM_ROM AM_REGION("fdc_bios_2hd",0) //floppy BIOS 2hd
- AM_RANGE(0xe8000, 0xfffff) AM_ROM AM_REGION("ipl",0)
-ADDRESS_MAP_END
+void pc9801_state::pc9801_map(address_map &map)
+{
+ map(0xa0000, 0xa3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w)); //TVRAM
+ map(0xa8000, 0xbffff).rw(this, FUNC(pc9801_state::gvram_r), FUNC(pc9801_state::gvram_w)); //bitmap VRAM
+ map(0xcc000, 0xcdfff).rom().region("sound_bios", 0); //sound BIOS
+ map(0xd6000, 0xd6fff).rom().region("fdc_bios_2dd", 0); //floppy BIOS 2dd
+ map(0xd7000, 0xd7fff).rom().region("fdc_bios_2hd", 0); //floppy BIOS 2hd
+ map(0xe8000, 0xfffff).rom().region("ipl", 0);
+}
/* first device is even offsets, second one is odd offsets */
-ADDRESS_MAP_START(pc9801_state::pc9801_common_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xff00)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE8(pic_r, pic_w, 0x00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
- AM_RANGE(0x0020, 0x002f) AM_WRITE8(rtc_w,0x00ff)
- AM_RANGE(0x0030, 0x0037) AM_DEVREADWRITE8("ppi8255_sys", i8255_device, read, write, 0xff00) //i8251 RS232c / i8255 system port
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255_prn", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00) //i8255 printer port / i8251 keyboard
- AM_RANGE(0x0050, 0x0057) AM_DEVREADWRITE8("ppi8255_fdd", i8255_device, read, write, 0xff00)
- AM_RANGE(0x0050, 0x0057) AM_WRITE8(nmi_ctrl_w,0x00ff) // NMI FF / i8255 floppy port (2d?)
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("upd7220_chr", upd7220_device, read, write, 0x00ff) //upd7220 character ports / <undefined>
- AM_RANGE(0x0064, 0x0065) AM_WRITE8(vrtc_clear_w,0x00ff)
+void pc9801_state::pc9801_common_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x001f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0xff00);
+ map(0x0000, 0x001f).rw(this, FUNC(pc9801_state::pic_r), FUNC(pc9801_state::pic_w)).umask16(0x00ff); // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
+ map(0x0020, 0x002f).w(this, FUNC(pc9801_state::rtc_w)).umask16(0x00ff);
+ map(0x0030, 0x0037).rw("ppi8255_sys", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); //i8251 RS232c / i8255 system port
+ map(0x0040, 0x0047).rw("ppi8255_prn", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0040, 0x0047).rw(m_keyb, FUNC(pc9801_kbd_device::rx_r), FUNC(pc9801_kbd_device::tx_w)).umask16(0xff00); //i8255 printer port / i8251 keyboard
+ map(0x0050, 0x0057).rw("ppi8255_fdd", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00);
+ map(0x0050, 0x0057).w(this, FUNC(pc9801_state::nmi_ctrl_w)).umask16(0x00ff); // NMI FF / i8255 floppy port (2d?)
+ map(0x0060, 0x0063).rw(m_hgdc1, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask16(0x00ff); //upd7220 character ports / <undefined>
+ map(0x0064, 0x0064).w(this, FUNC(pc9801_state::vrtc_clear_w));
// AM_RANGE(0x006c, 0x006f) border color / <undefined>
- AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00)
- AM_RANGE(0x0070, 0x007f) AM_READWRITE8(txt_scrl_r,txt_scrl_w,0x00ff) //display registers / i8253 pit
- AM_RANGE(0x0080, 0x0081) AM_READWRITE8(sasi_data_r, sasi_data_w, 0x00ff)
- AM_RANGE(0x0082, 0x0083) AM_READWRITE8(sasi_status_r, sasi_ctrl_w,0x00ff)
- AM_RANGE(0x0090, 0x0091) AM_DEVREAD8("upd765_2hd", upd765a_device, msr_r, 0x00ff)
- AM_RANGE(0x0092, 0x0093) AM_DEVREADWRITE8("upd765_2hd", upd765a_device, fifo_r, fifo_w, 0x00ff)
- AM_RANGE(0x0094, 0x0095) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x00ff)
- AM_RANGE(0x0090, 0x0091) AM_DEVREADWRITE8(UPD8251_TAG, i8251_device, data_r, data_w, 0xff00)
- AM_RANGE(0x0092, 0x0093) AM_DEVREADWRITE8(UPD8251_TAG, i8251_device, status_r, control_w, 0xff00)
- AM_RANGE(0x7fd8, 0x7fdf) AM_DEVREADWRITE8("ppi8255_mouse", i8255_device, read, write, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc9801_state::pc9801_io)
- AM_IMPORT_FROM(pc9801_common_io)
- AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg4_w,0xff00)
- AM_RANGE(0x0068, 0x0069) AM_WRITE8(pc9801_video_ff_w,0x00ff) //mode FF / <undefined>
- AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9801_a0_r,pc9801_a0_w,0xffff) //upd7220 bitmap ports / display registers
- AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2dd", upd765a_device, map, 0x00ff)
- AM_RANGE(0x00cc, 0x00cd) AM_READWRITE8(fdc_2dd_ctrl_r, fdc_2dd_ctrl_w, 0x00ff) //upd765a 2dd / <undefined>
- AM_RANGE(0x00f0, 0x00ff) AM_READ8(f0_r,0x00ff)
-ADDRESS_MAP_END
+ map(0x0070, 0x007f).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00);
+ map(0x0070, 0x007f).rw(this, FUNC(pc9801_state::txt_scrl_r), FUNC(pc9801_state::txt_scrl_w)).umask16(0x00ff); //display registers / i8253 pit
+ map(0x0080, 0x0080).rw(this, FUNC(pc9801_state::sasi_data_r), FUNC(pc9801_state::sasi_data_w));
+ map(0x0082, 0x0082).rw(this, FUNC(pc9801_state::sasi_status_r), FUNC(pc9801_state::sasi_ctrl_w));
+ map(0x0090, 0x0090).r(m_fdc_2hd, FUNC(upd765a_device::msr_r));
+ map(0x0092, 0x0092).rw(m_fdc_2hd, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w));
+ map(0x0094, 0x0094).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w));
+ map(0x0091, 0x0091).rw(m_sio, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0093, 0x0093).rw(m_sio, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x7fd8, 0x7fdf).rw("ppi8255_mouse", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00);
+}
+
+void pc9801_state::pc9801_io(address_map &map)
+{
+ pc9801_common_io(map);
+ map(0x0020, 0x002f).w(this, FUNC(pc9801_state::dmapg4_w)).umask16(0xff00);
+ map(0x0068, 0x0068).w(this, FUNC(pc9801_state::pc9801_video_ff_w)); //mode FF / <undefined>
+ map(0x00a0, 0x00af).rw(this, FUNC(pc9801_state::pc9801_a0_r), FUNC(pc9801_state::pc9801_a0_w)); //upd7220 bitmap ports / display registers
+ map(0x00c8, 0x00cb).m(m_fdc_2dd, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0x00cc, 0x00cc).rw(this, FUNC(pc9801_state::fdc_2dd_ctrl_r), FUNC(pc9801_state::fdc_2dd_ctrl_w)); //upd765a 2dd / <undefined>
+ map(0x00f0, 0x00ff).r(this, FUNC(pc9801_state::f0_r)).umask16(0x00ff);
+}
/*************************************
*
@@ -1082,55 +1085,60 @@ WRITE16_MEMBER(pc9801_state::grcg_gvram0_w)
upd7220_grcg_w(space, offset | (m_vram_bank << 16), data, mem_mask);
}
-ADDRESS_MAP_START(pc9801_state::ipl_bank)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc9801_state::pc9801ux_map)
- AM_RANGE(0x0a0000, 0x0a3fff) AM_READWRITE(tvram_r, tvram_w)
- AM_RANGE(0x0a4000, 0x0a4fff) AM_READWRITE8(pc9801rs_knjram_r, pc9801rs_knjram_w, 0xffff)
- AM_RANGE(0x0a8000, 0x0bffff) AM_READWRITE(grcg_gvram_r, grcg_gvram_w)
- AM_RANGE(0x0e0000, 0x0e7fff) AM_READWRITE(grcg_gvram0_r,grcg_gvram0_w)
- AM_RANGE(0x0e8000, 0x0fffff) AM_DEVICE("ipl_bank", address_map_bank_device, amap16)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc9801_state::pc9801ux_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(pc9801_common_io)
- AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg8_w,0xff00)
- AM_RANGE(0x0050, 0x0057) AM_NOP // 2dd ppi?
- AM_RANGE(0x005c, 0x005f) AM_READ(timestamp_r) AM_WRITENOP // artic
- AM_RANGE(0x0068, 0x006b) AM_WRITE8(pc9801rs_video_ff_w,0x00ff) //mode FF / <undefined>
- AM_RANGE(0x0070, 0x007f) AM_READWRITE8(grcg_r, grcg_w, 0x00ff) //display registers "GRCG" / i8253 pit
- AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9801_a0_r, pc9801rs_a0_w, 0xffff) //upd7220 bitmap ports / display registers
- AM_RANGE(0x00bc, 0x00bf) AM_READWRITE8(fdc_mode_ctrl_r,fdc_mode_ctrl_w,0xffff)
- AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2hd", upd765a_device, map, 0x00ff)
- AM_RANGE(0x00cc, 0x00cd) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x00ff)
- AM_RANGE(0x00f0, 0x00ff) AM_READWRITE8(a20_ctrl_r, a20_ctrl_w, 0x00ff)
- AM_RANGE(0x0438, 0x043b) AM_READWRITE8(access_ctrl_r,access_ctrl_w,0xffff)
- AM_RANGE(0x043c, 0x043f) AM_WRITE8(pc9801rs_bank_w, 0xffff) //ROM/RAM bank
- AM_RANGE(0x04a0, 0x04af) AM_WRITE(egc_w)
- AM_RANGE(0x3fd8, 0x3fdf) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc9801_state::pc9801rs_map)
- AM_IMPORT_FROM(pc9801ux_map)
+void pc9801_state::ipl_bank(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom().region("ipl", 0);
+}
+
+void pc9801_state::pc9801ux_map(address_map &map)
+{
+ map(0x0a0000, 0x0a3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w));
+ map(0x0a4000, 0x0a4fff).rw(this, FUNC(pc9801_state::pc9801rs_knjram_r), FUNC(pc9801_state::pc9801rs_knjram_w));
+ map(0x0a8000, 0x0bffff).rw(this, FUNC(pc9801_state::grcg_gvram_r), FUNC(pc9801_state::grcg_gvram_w));
+ map(0x0e0000, 0x0e7fff).rw(this, FUNC(pc9801_state::grcg_gvram0_r), FUNC(pc9801_state::grcg_gvram0_w));
+ map(0x0e8000, 0x0fffff).m(m_ipl, FUNC(address_map_bank_device::amap16));
+}
+
+void pc9801_state::pc9801ux_io(address_map &map)
+{
+ map.unmap_value_high();
+ pc9801_common_io(map);
+ map(0x0020, 0x002f).w(this, FUNC(pc9801_state::dmapg8_w)).umask16(0xff00);
+ map(0x0050, 0x0057).noprw(); // 2dd ppi?
+ map(0x005c, 0x005f).r(this, FUNC(pc9801_state::timestamp_r)).nopw(); // artic
+ map(0x0068, 0x006b).w(this, FUNC(pc9801_state::pc9801rs_video_ff_w)).umask16(0x00ff); //mode FF / <undefined>
+ map(0x0070, 0x007f).rw(this, FUNC(pc9801_state::grcg_r), FUNC(pc9801_state::grcg_w)).umask16(0x00ff); //display registers "GRCG" / i8253 pit
+ map(0x00a0, 0x00af).rw(this, FUNC(pc9801_state::pc9801_a0_r), FUNC(pc9801_state::pc9801rs_a0_w)); //upd7220 bitmap ports / display registers
+ map(0x00bc, 0x00bf).rw(this, FUNC(pc9801_state::fdc_mode_ctrl_r), FUNC(pc9801_state::fdc_mode_ctrl_w));
+ map(0x00c8, 0x00cb).m(m_fdc_2hd, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0x00cc, 0x00cc).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w));
+ map(0x00f0, 0x00ff).rw(this, FUNC(pc9801_state::a20_ctrl_r), FUNC(pc9801_state::a20_ctrl_w)).umask16(0x00ff);
+ map(0x0438, 0x043b).rw(this, FUNC(pc9801_state::access_ctrl_r), FUNC(pc9801_state::access_ctrl_w));
+ map(0x043c, 0x043f).w(this, FUNC(pc9801_state::pc9801rs_bank_w)); //ROM/RAM bank
+ map(0x04a0, 0x04af).w(this, FUNC(pc9801_state::egc_w));
+ map(0x3fd8, 0x3fdf).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00);
+}
+
+void pc9801_state::pc9801rs_map(address_map &map)
+{
+ pc9801ux_map(map);
// AM_RANGE(0x0d8000, 0x0d9fff) AM_ROM AM_REGION("ide",0)
- AM_RANGE(0x0da000, 0x0dbfff) AM_RAM // ide ram
- AM_RANGE(0xee8000, 0xefffff) AM_DEVICE("ipl_bank", address_map_bank_device, amap16)
- AM_RANGE(0xfe8000, 0xffffff) AM_DEVICE("ipl_bank", address_map_bank_device, amap16)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc9801_state::pc9801rs_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(pc9801ux_io)
- AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff)
- AM_RANGE(0x0640, 0x064f) AM_READWRITE(ide_cs0_r, ide_cs0_w)
- AM_RANGE(0x0740, 0x074f) AM_READWRITE(ide_cs1_r, ide_cs1_w)
- AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // temp
- AM_RANGE(0xbfd8, 0xbfdf) AM_WRITE8(pc9801rs_mouse_freq_w, 0xffff)
- AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(midi_r, 0xffff)
-ADDRESS_MAP_END
+ map(0x0da000, 0x0dbfff).ram(); // ide ram
+ map(0xee8000, 0xefffff).m(m_ipl, FUNC(address_map_bank_device::amap16));
+ map(0xfe8000, 0xffffff).m(m_ipl, FUNC(address_map_bank_device::amap16));
+}
+
+void pc9801_state::pc9801rs_io(address_map &map)
+{
+ map.unmap_value_high();
+ pc9801ux_io(map);
+ map(0x0430, 0x0433).rw(this, FUNC(pc9801_state::ide_ctrl_r), FUNC(pc9801_state::ide_ctrl_w)).umask16(0x00ff);
+ map(0x0640, 0x064f).rw(this, FUNC(pc9801_state::ide_cs0_r), FUNC(pc9801_state::ide_cs0_w));
+ map(0x0740, 0x074f).rw(this, FUNC(pc9801_state::ide_cs1_r), FUNC(pc9801_state::ide_cs1_w));
+ map(0x1e8c, 0x1e8f).noprw(); // temp
+ map(0xbfd8, 0xbfdf).w(this, FUNC(pc9801_state::pc9801rs_mouse_freq_w));
+ map(0xe0d0, 0xe0d3).r(this, FUNC(pc9801_state::midi_r));
+}
/*************************************
*
@@ -1407,62 +1415,64 @@ WRITE16_MEMBER(pc9801_state::pc9821_grcg_gvram0_w)
}
-ADDRESS_MAP_START(pc9801_state::pc9821_map)
+void pc9801_state::pc9821_map(address_map &map)
+{
//AM_RANGE(0x00080000, 0x0009ffff) AM_READWRITE8(winram_r, winram_w, 0xffffffff)
- AM_RANGE(0x000a0000, 0x000a3fff) AM_READWRITE16(tvram_r, tvram_w, 0xffffffff)
- AM_RANGE(0x000a4000, 0x000a4fff) AM_READWRITE8(pc9801rs_knjram_r, pc9801rs_knjram_w, 0xffffffff)
- AM_RANGE(0x000a8000, 0x000bffff) AM_READWRITE16(pc9821_grcg_gvram_r, pc9821_grcg_gvram_w, 0xffffffff)
- AM_RANGE(0x000cc000, 0x000cdfff) AM_ROM AM_REGION("sound_bios",0) //sound BIOS
+ map(0x000a0000, 0x000a3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w));
+ map(0x000a4000, 0x000a4fff).rw(this, FUNC(pc9801_state::pc9801rs_knjram_r), FUNC(pc9801_state::pc9801rs_knjram_w));
+ map(0x000a8000, 0x000bffff).rw(this, FUNC(pc9801_state::pc9821_grcg_gvram_r), FUNC(pc9801_state::pc9821_grcg_gvram_w));
+ map(0x000cc000, 0x000cdfff).rom().region("sound_bios", 0); //sound BIOS
// AM_RANGE(0x000d8000, 0x000d9fff) AM_ROM AM_REGION("ide",0)
- AM_RANGE(0x000da000, 0x000dbfff) AM_RAM // ide ram
- AM_RANGE(0x000e0000, 0x000e7fff) AM_READWRITE16(pc9821_grcg_gvram0_r,pc9821_grcg_gvram0_w, 0xffffffff)
- AM_RANGE(0x000e8000, 0x000fffff) AM_DEVICE16("ipl_bank", address_map_bank_device, amap16, 0xffffffff)
- AM_RANGE(0x00f00000, 0x00f9ffff) AM_RAM AM_SHARE("ext_gvram")
- AM_RANGE(0xffee8000, 0xffefffff) AM_DEVICE16("ipl_bank", address_map_bank_device, amap16, 0xffffffff)
- AM_RANGE(0xfffe8000, 0xffffffff) AM_DEVICE16("ipl_bank", address_map_bank_device, amap16, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc9801_state::pc9821_io)
+ map(0x000da000, 0x000dbfff).ram(); // ide ram
+ map(0x000e0000, 0x000e7fff).rw(this, FUNC(pc9801_state::pc9821_grcg_gvram0_r), FUNC(pc9801_state::pc9821_grcg_gvram0_w));
+ map(0x000e8000, 0x000fffff).m(m_ipl, FUNC(address_map_bank_device::amap16));
+ map(0x00f00000, 0x00f9ffff).ram().share("ext_gvram");
+ map(0xffee8000, 0xffefffff).m(m_ipl, FUNC(address_map_bank_device::amap16));
+ map(0xfffe8000, 0xffffffff).m(m_ipl, FUNC(address_map_bank_device::amap16));
+}
+
+void pc9801_state::pc9821_io(address_map &map)
+{
// ADDRESS_MAP_UNMAP_HIGH // TODO: a read to somewhere makes this to fail at POST
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xff00ff00)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE8(pic_r, pic_w, 0x00ff00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
- AM_RANGE(0x0020, 0x002f) AM_WRITE8(rtc_w,0x000000ff)
- AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg8_w,0xff00ff00)
- AM_RANGE(0x0030, 0x0037) AM_DEVREADWRITE8("ppi8255_sys", i8255_device, read, write, 0xff00ff00) //i8251 RS232c / i8255 system port
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255_prn", i8255_device, read, write, 0x00ff00ff)
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00ff00) //i8255 printer port / i8251 keyboard
- AM_RANGE(0x0050, 0x0053) AM_WRITE8(nmi_ctrl_w, 0x00ff00ff)
- AM_RANGE(0x005c, 0x005f) AM_READ16(timestamp_r,0xffffffff) AM_WRITENOP // artic
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("upd7220_chr", upd7220_device, read, write, 0x00ff00ff) //upd7220 character ports / <undefined>
- AM_RANGE(0x0060, 0x0063) AM_READ8(unk_r, 0xff00ff00) // mouse related (unmapped checking for AT keyb controller\PS/2 mouse?)
- AM_RANGE(0x0064, 0x0067) AM_WRITE8(vrtc_clear_w, 0x000000ff)
- AM_RANGE(0x0068, 0x006b) AM_WRITE8(pc9821_video_ff_w, 0x00ff00ff) //mode FF / <undefined>
- AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00ff00)
- AM_RANGE(0x0070, 0x007f) AM_READWRITE8(grcg_r, grcg_w, 0x00ff00ff) //display registers "GRCG" / i8253 pit
- AM_RANGE(0x0090, 0x0093) AM_DEVICE8("upd765_2hd", upd765a_device, map, 0x00ff00ff)
- AM_RANGE(0x0094, 0x0097) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x000000ff)
- AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9821_a0_r, pc9821_a0_w, 0xffffffff) //upd7220 bitmap ports / display registers
+ map(0x0000, 0x001f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0xff00ff00);
+ map(0x0000, 0x001f).rw(this, FUNC(pc9801_state::pic_r), FUNC(pc9801_state::pic_w)).umask32(0x00ff00ff); // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
+ map(0x0020, 0x002f).w(this, FUNC(pc9801_state::rtc_w)).umask32(0x000000ff);
+ map(0x0020, 0x002f).w(this, FUNC(pc9801_state::dmapg8_w)).umask32(0xff00ff00);
+ map(0x0030, 0x0037).rw("ppi8255_sys", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0xff00ff00); //i8251 RS232c / i8255 system port
+ map(0x0040, 0x0047).rw("ppi8255_prn", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0x00ff00ff);
+ map(0x0040, 0x0047).rw(m_keyb, FUNC(pc9801_kbd_device::rx_r), FUNC(pc9801_kbd_device::tx_w)).umask32(0xff00ff00); //i8255 printer port / i8251 keyboard
+ map(0x0050, 0x0053).w(this, FUNC(pc9801_state::nmi_ctrl_w)).umask32(0x00ff00ff);
+ map(0x005c, 0x005f).r(this, FUNC(pc9801_state::timestamp_r)).nopw(); // artic
+ map(0x0060, 0x0063).rw(m_hgdc1, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask32(0x00ff00ff); //upd7220 character ports / <undefined>
+ map(0x0060, 0x0063).r(this, FUNC(pc9801_state::unk_r)).umask32(0xff00ff00); // mouse related (unmapped checking for AT keyb controller\PS/2 mouse?)
+ map(0x0064, 0x0064).w(this, FUNC(pc9801_state::vrtc_clear_w));
+ map(0x0068, 0x006b).w(this, FUNC(pc9801_state::pc9821_video_ff_w)).umask32(0x00ff00ff); //mode FF / <undefined>
+ map(0x0070, 0x007f).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0xff00ff00);
+ map(0x0070, 0x007f).rw(this, FUNC(pc9801_state::grcg_r), FUNC(pc9801_state::grcg_w)).umask32(0x00ff00ff); //display registers "GRCG" / i8253 pit
+ map(0x0090, 0x0093).m(m_fdc_2hd, FUNC(upd765a_device::map)).umask32(0x00ff00ff);
+ map(0x0094, 0x0094).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w));
+ map(0x00a0, 0x00af).rw(this, FUNC(pc9801_state::pc9821_a0_r), FUNC(pc9801_state::pc9821_a0_w)); //upd7220 bitmap ports / display registers
// AM_RANGE(0x00b0, 0x00b3) PC9861k (serial port?)
// AM_RANGE(0x00b9, 0x00b9) PC9861k
// AM_RANGE(0x00bb, 0x00bb) PC9861k
- AM_RANGE(0x00bc, 0x00bf) AM_READWRITE8(fdc_mode_ctrl_r,fdc_mode_ctrl_w,0xffffffff)
- AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2hd", upd765a_device, map, 0x00ff00ff)
- AM_RANGE(0x00cc, 0x00cf) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x000000ff)
+ map(0x00bc, 0x00bf).rw(this, FUNC(pc9801_state::fdc_mode_ctrl_r), FUNC(pc9801_state::fdc_mode_ctrl_w));
+ map(0x00c8, 0x00cb).m(m_fdc_2hd, FUNC(upd765a_device::map)).umask32(0x00ff00ff);
+ map(0x00cc, 0x00cc).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w));
// AM_RANGE(0x00d8, 0x00df) AMD98 (sound?) board
- AM_RANGE(0x00f0, 0x00ff) AM_READWRITE8(a20_ctrl_r, a20_ctrl_w, 0x00ff00ff)
+ map(0x00f0, 0x00ff).rw(this, FUNC(pc9801_state::a20_ctrl_r), FUNC(pc9801_state::a20_ctrl_w)).umask32(0x00ff00ff);
// AM_RANGE(0x0188, 0x018f) AM_READWRITE8(pc9801_opn_r, pc9801_opn_w, 0xffffffff) //ym2203 opn / <undefined>
// AM_RANGE(0x018c, 0x018f) YM2203 OPN extended ports / <undefined>
- AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff00ff)
- AM_RANGE(0x0438, 0x043b) AM_READWRITE8(access_ctrl_r,access_ctrl_w,0xffffffff)
+ map(0x0430, 0x0433).rw(this, FUNC(pc9801_state::ide_ctrl_r), FUNC(pc9801_state::ide_ctrl_w)).umask32(0x00ff00ff);
+ map(0x0438, 0x043b).rw(this, FUNC(pc9801_state::access_ctrl_r), FUNC(pc9801_state::access_ctrl_w));
// AM_RANGE(0x043d, 0x043d) ROM/RAM bank (NEC)
- AM_RANGE(0x043c, 0x043f) AM_WRITE8(pc9801rs_bank_w, 0xffffffff) //ROM/RAM bank (EPSON)
- AM_RANGE(0x0460, 0x0463) AM_READWRITE8(window_bank_r,window_bank_w, 0xffffffff)
- AM_RANGE(0x04a0, 0x04af) AM_WRITE16(egc_w, 0xffffffff)
+ map(0x043c, 0x043f).w(this, FUNC(pc9801_state::pc9801rs_bank_w)); //ROM/RAM bank (EPSON)
+ map(0x0460, 0x0463).rw(this, FUNC(pc9801_state::window_bank_r), FUNC(pc9801_state::window_bank_w));
+ map(0x04a0, 0x04af).w(this, FUNC(pc9801_state::egc_w));
// AM_RANGE(0x04be, 0x04be) FDC "RPM" register
- AM_RANGE(0x0640, 0x064f) AM_READWRITE16(ide_cs0_r, ide_cs0_w, 0xffffffff)
- AM_RANGE(0x0740, 0x074f) AM_READWRITE16(ide_cs1_r, ide_cs1_w, 0xffffffff)
+ map(0x0640, 0x064f).rw(this, FUNC(pc9801_state::ide_cs0_r), FUNC(pc9801_state::ide_cs0_w));
+ map(0x0740, 0x074f).rw(this, FUNC(pc9801_state::ide_cs1_r), FUNC(pc9801_state::ide_cs1_w));
// AM_RANGE(0x08e0, 0x08ea) <undefined> / EMM SIO registers
- AM_RANGE(0x09a0, 0x09a3) AM_READWRITE8(ext2_video_ff_r, ext2_video_ff_w, 0x000000ff) // GDC extended register r/w
+ map(0x09a0, 0x09a0).rw(this, FUNC(pc9801_state::ext2_video_ff_r), FUNC(pc9801_state::ext2_video_ff_w)); // GDC extended register r/w
// AM_RANGE(0x09a8, 0x09a8) GDC 31KHz register r/w
// AM_RANGE(0x0c07, 0x0c07) EPSON register w
// AM_RANGE(0x0c03, 0x0c03) EPSON register 0 r
@@ -1472,21 +1482,21 @@ ADDRESS_MAP_START(pc9801_state::pc9821_io)
// AM_RANGE(0x0c2d, 0x0c2d) cs4231 PCM board hi byte control
// AM_RANGE(0x0cc0, 0x0cc7) SCSI interface / <undefined>
// AM_RANGE(0x0cfc, 0x0cff) PCI bus
- AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // IDE RAM switch
- AM_RANGE(0x3fd8, 0x3fdf) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00ff00) // <undefined> / pit mirror ports
- AM_RANGE(0x7fd8, 0x7fdf) AM_DEVREADWRITE8("ppi8255_mouse", i8255_device, read, write, 0xff00ff00)
- AM_RANGE(0x841c, 0x841f) AM_READWRITE8(sdip_0_r,sdip_0_w,0xffffffff)
- AM_RANGE(0x851c, 0x851f) AM_READWRITE8(sdip_1_r,sdip_1_w,0xffffffff)
- AM_RANGE(0x861c, 0x861f) AM_READWRITE8(sdip_2_r,sdip_2_w,0xffffffff)
- AM_RANGE(0x871c, 0x871f) AM_READWRITE8(sdip_3_r,sdip_3_w,0xffffffff)
- AM_RANGE(0x881c, 0x881f) AM_READWRITE8(sdip_4_r,sdip_4_w,0xffffffff)
- AM_RANGE(0x891c, 0x891f) AM_READWRITE8(sdip_5_r,sdip_5_w,0xffffffff)
- AM_RANGE(0x8a1c, 0x8a1f) AM_READWRITE8(sdip_6_r,sdip_6_w,0xffffffff)
- AM_RANGE(0x8b1c, 0x8b1f) AM_READWRITE8(sdip_7_r,sdip_7_w,0xffffffff)
- AM_RANGE(0x8c1c, 0x8c1f) AM_READWRITE8(sdip_8_r,sdip_8_w,0xffffffff)
- AM_RANGE(0x8d1c, 0x8d1f) AM_READWRITE8(sdip_9_r,sdip_9_w,0xffffffff)
- AM_RANGE(0x8e1c, 0x8e1f) AM_READWRITE8(sdip_a_r,sdip_a_w,0xffffffff)
- AM_RANGE(0x8f1c, 0x8f1f) AM_READWRITE8(sdip_b_r,sdip_b_w,0xffffffff)
+ map(0x1e8c, 0x1e8f).noprw(); // IDE RAM switch
+ map(0x3fd8, 0x3fdf).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0xff00ff00); // <undefined> / pit mirror ports
+ map(0x7fd8, 0x7fdf).rw("ppi8255_mouse", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0xff00ff00);
+ map(0x841c, 0x841f).rw(this, FUNC(pc9801_state::sdip_0_r), FUNC(pc9801_state::sdip_0_w));
+ map(0x851c, 0x851f).rw(this, FUNC(pc9801_state::sdip_1_r), FUNC(pc9801_state::sdip_1_w));
+ map(0x861c, 0x861f).rw(this, FUNC(pc9801_state::sdip_2_r), FUNC(pc9801_state::sdip_2_w));
+ map(0x871c, 0x871f).rw(this, FUNC(pc9801_state::sdip_3_r), FUNC(pc9801_state::sdip_3_w));
+ map(0x881c, 0x881f).rw(this, FUNC(pc9801_state::sdip_4_r), FUNC(pc9801_state::sdip_4_w));
+ map(0x891c, 0x891f).rw(this, FUNC(pc9801_state::sdip_5_r), FUNC(pc9801_state::sdip_5_w));
+ map(0x8a1c, 0x8a1f).rw(this, FUNC(pc9801_state::sdip_6_r), FUNC(pc9801_state::sdip_6_w));
+ map(0x8b1c, 0x8b1f).rw(this, FUNC(pc9801_state::sdip_7_r), FUNC(pc9801_state::sdip_7_w));
+ map(0x8c1c, 0x8c1f).rw(this, FUNC(pc9801_state::sdip_8_r), FUNC(pc9801_state::sdip_8_w));
+ map(0x8d1c, 0x8d1f).rw(this, FUNC(pc9801_state::sdip_9_r), FUNC(pc9801_state::sdip_9_w));
+ map(0x8e1c, 0x8e1f).rw(this, FUNC(pc9801_state::sdip_a_r), FUNC(pc9801_state::sdip_a_w));
+ map(0x8f1c, 0x8f1f).rw(this, FUNC(pc9801_state::sdip_b_r), FUNC(pc9801_state::sdip_b_w));
// AM_RANGE(0xa460, 0xa46f) cs4231 PCM extended port / <undefined>
// AM_RANGE(0xbfdb, 0xbfdb) mouse timing port
// AM_RANGE(0xc0d0, 0xc0d3) MIDI port, option 0 / <undefined>
@@ -1497,7 +1507,7 @@ ADDRESS_MAP_START(pc9801_state::pc9821_io)
// AM_RANGE(0xd4d0, 0xd4d3) MIDI port, option 5 / <undefined>
// AM_RANGE(0xd8d0, 0xd8d3) MIDI port, option 6 / <undefined>
// AM_RANGE(0xdcd0, 0xdcd3) MIDI port, option 7 / <undefined>
- AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(midi_r, 0xffffffff) // MIDI port, option 8 / <undefined>
+ map(0xe0d0, 0xe0d3).r(this, FUNC(pc9801_state::midi_r)); // MIDI port, option 8 / <undefined>
// AM_RANGE(0xe4d0, 0xe4d3) MIDI port, option 9 / <undefined>
// AM_RANGE(0xe8d0, 0xe8d3) MIDI port, option A / <undefined>
// AM_RANGE(0xecd0, 0xecd3) MIDI port, option B / <undefined>
@@ -1505,19 +1515,22 @@ ADDRESS_MAP_START(pc9801_state::pc9821_io)
// AM_RANGE(0xf4d0, 0xf4d3) MIDI port, option D / <undefined>
// AM_RANGE(0xf8d0, 0xf8d3) MIDI port, option E / <undefined>
// AM_RANGE(0xfcd0, 0xfcd3) MIDI port, option F / <undefined>
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(pc9801_state::upd7220_1_map)
- AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("video_ram_1")
-ADDRESS_MAP_END
+void pc9801_state::upd7220_1_map(address_map &map)
+{
+ map(0x00000, 0x03fff).ram().share("video_ram_1");
+}
-ADDRESS_MAP_START(pc9801_state::upd7220_2_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_2")
-ADDRESS_MAP_END
+void pc9801_state::upd7220_2_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram().share("video_ram_2");
+}
-ADDRESS_MAP_START(pc9801_state::upd7220_grcg_2_map)
- AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(upd7220_grcg_r, upd7220_grcg_w) AM_SHARE("video_ram_2")
-ADDRESS_MAP_END
+void pc9801_state::upd7220_grcg_2_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rw(this, FUNC(pc9801_state::upd7220_grcg_r), FUNC(pc9801_state::upd7220_grcg_w)).share("video_ram_2");
+}
CUSTOM_INPUT_MEMBER(pc9801_state::system_type_r)
{
diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp
index ae84e3b205b..2a1db32a81e 100644
--- a/src/mame/drivers/pcat_dyn.cpp
+++ b/src/mame/drivers/pcat_dyn.cpp
@@ -97,29 +97,31 @@ WRITE8_MEMBER(pcat_dyn_state::bank2_w)
m_nvram_bank->set_entry(data & 1);
}
-ADDRESS_MAP_START(pcat_dyn_state::pcat_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0)
- AM_RANGE(0x000d0000, 0x000d0fff) AM_ROM AM_REGION("game_prg", 0x0000) AM_WRITE8(bank1_w, 0xffffffff)
- AM_RANGE(0x000d1000, 0x000d1fff) AM_ROM AM_REGION("game_prg", 0x1000) AM_WRITE8(bank2_w, 0xffffffff)
- AM_RANGE(0x000d2000, 0x000d2fff) AM_ROMBANK("prgbank")
- AM_RANGE(0x000d3000, 0x000d3fff) AM_RAMBANK("nvram_bank")
- AM_RANGE(0x000df400, 0x000df8ff) AM_RAM //I/O board?
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 )
- AM_RANGE(0x00100000, 0x001fffff) AM_RAM
- AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcat_dyn_state::pcat_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16550", ns16550_device, ins8250_r, ins8250_w, 0xffffffff)
- AM_RANGE(0x0530, 0x0533) AM_READ8(audio_r, 0xffffffff)
- AM_RANGE(0x0534, 0x0537) AM_DEVREADWRITE8("ad1848", ad1848_device, read, write, 0xffffffff)
-ADDRESS_MAP_END
+void pcat_dyn_state::pcat_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w));
+ map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0);
+ map(0x000d0000, 0x000d0fff).rom().region("game_prg", 0x0000).w(this, FUNC(pcat_dyn_state::bank1_w));
+ map(0x000d1000, 0x000d1fff).rom().region("game_prg", 0x1000).w(this, FUNC(pcat_dyn_state::bank2_w));
+ map(0x000d2000, 0x000d2fff).bankr("prgbank");
+ map(0x000d3000, 0x000d3fff).bankrw("nvram_bank");
+ map(0x000df400, 0x000df8ff).ram(); //I/O board?
+ map(0x000f0000, 0x000fffff).rom().region("bios", 0);
+ map(0x00100000, 0x001fffff).ram();
+ map(0xffff0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void pcat_dyn_state::pcat_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w));
+ map(0x03f8, 0x03ff).rw("ns16550", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x0530, 0x0533).r(this, FUNC(pcat_dyn_state::audio_r));
+ map(0x0534, 0x0537).rw("ad1848", FUNC(ad1848_device::read), FUNC(ad1848_device::write));
+}
//TODO: use atmb device
WRITE8_MEMBER( pcat_dyn_state::dma8237_1_dack_w ){ m_isabus->dack_w(1, data); }
diff --git a/src/mame/drivers/pcat_nit.cpp b/src/mame/drivers/pcat_nit.cpp
index 1b2c680f7dd..a6b072fca12 100644
--- a/src/mame/drivers/pcat_nit.cpp
+++ b/src/mame/drivers/pcat_nit.cpp
@@ -152,27 +152,29 @@ WRITE8_MEMBER(pcat_nit_state::pcat_nit_rombank_w)
}
}
-ADDRESS_MAP_START(pcat_nit_state::pcat_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) AM_WRITENOP
- AM_RANGE(0x000d0000, 0x000d3fff) AM_RAM AM_REGION("disk_bios", 0)
- AM_RANGE(0x000d7000, 0x000d7003) AM_WRITE8(pcat_nit_rombank_w, 0xff)
- AM_RANGE(0x000d8000, 0x000dffff) AM_ROMBANK("rombank")
- AM_RANGE(0x000f0000, 0x000fffff) AM_RAM AM_REGION("bios", 0 )
- AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcat_nit_state::bonanza_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) AM_WRITENOP
- AM_RANGE(0x000d0000, 0x000d3fff) AM_RAM AM_REGION("disk_bios", 0)
- AM_RANGE(0x000d7000, 0x000d7003) AM_WRITE8(pcat_nit_rombank_w, 0xff)
- AM_RANGE(0x000d8000, 0x000dffff) AM_ROMBANK("rombank")
- AM_RANGE(0x000f0000, 0x000fffff) AM_RAM AM_REGION("bios", 0 )
- AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
-ADDRESS_MAP_END
+void pcat_nit_state::pcat_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0).nopw();
+ map(0x000d0000, 0x000d3fff).ram().region("disk_bios", 0);
+ map(0x000d7000, 0x000d7000).w(this, FUNC(pcat_nit_state::pcat_nit_rombank_w));
+ map(0x000d8000, 0x000dffff).bankr("rombank");
+ map(0x000f0000, 0x000fffff).ram().region("bios", 0);
+ map(0xffff0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void pcat_nit_state::bonanza_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(cirrus_gd5428_device::mem_r), FUNC(cirrus_gd5428_device::mem_w));
+ map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0).nopw();
+ map(0x000d0000, 0x000d3fff).ram().region("disk_bios", 0);
+ map(0x000d7000, 0x000d7000).w(this, FUNC(pcat_nit_state::pcat_nit_rombank_w));
+ map(0x000d8000, 0x000dffff).bankr("rombank");
+ map(0x000f0000, 0x000fffff).ram().region("bios", 0);
+ map(0xffff0000, 0xffffffff).rom().region("bios", 0);
+}
READ8_MEMBER(pcat_nit_state::pcat_nit_io_r)
{
@@ -189,25 +191,27 @@ READ8_MEMBER(pcat_nit_state::pcat_nit_io_r)
}
}
-ADDRESS_MAP_START(pcat_nit_state::pcat_nit_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x0278, 0x027f) AM_READ8(pcat_nit_io_r, 0xffffffff) AM_WRITENOP
- AM_RANGE(0x0280, 0x0283) AM_READNOP
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16450_0", ns16450_device, ins8250_r, ins8250_w, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcat_nit_state::bonanza_io_map)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x0278, 0x027f) AM_READ8(pcat_nit_io_r, 0xffffffff) AM_WRITENOP
- AM_RANGE(0x0280, 0x0283) AM_READNOP
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16450_0", ns16450_device, ins8250_r, ins8250_w, 0xffffffff)
-ADDRESS_MAP_END
+void pcat_nit_state::pcat_nit_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x0278, 0x027f).r(this, FUNC(pcat_nit_state::pcat_nit_io_r)).nopw();
+ map(0x0280, 0x0283).nopr();
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+ map(0x03f8, 0x03ff).rw(m_uart, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w));
+}
+
+void pcat_nit_state::bonanza_io_map(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x0278, 0x027f).r(this, FUNC(pcat_nit_state::pcat_nit_io_r)).nopw();
+ map(0x0280, 0x0283).nopr();
+ map(0x03b0, 0x03bf).rw("vga", FUNC(cirrus_gd5428_device::port_03b0_r), FUNC(cirrus_gd5428_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(cirrus_gd5428_device::port_03c0_r), FUNC(cirrus_gd5428_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(cirrus_gd5428_device::port_03d0_r), FUNC(cirrus_gd5428_device::port_03d0_w));
+ map(0x03f8, 0x03ff).rw(m_uart, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w));
+}
static INPUT_PORTS_START( pcat_nit )
PORT_START("IN0")
diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp
index 90b28f5130a..28c20a8e38c 100644
--- a/src/mame/drivers/pcd.cpp
+++ b/src/mame/drivers/pcd.cpp
@@ -437,39 +437,42 @@ READ16_MEMBER(pcd_state::mem_r)
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(pcd_state::pcd_map)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
- AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(mem_r, mem_w)
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcd_state::pcd_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf820, 0xf821) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff)
- AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00)
- AM_RANGE(0xf880, 0xf8bf) AM_READWRITE8(rtc_r, rtc_w, 0xffff)
- AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_device, read, write, 0xffff)
- AM_RANGE(0xf904, 0xf905) AM_READWRITE(dskctl_r, dskctl_w)
- AM_RANGE(0xf940, 0xf943) AM_READWRITE8(scsi_r, scsi_w, 0xffff)
- AM_RANGE(0xf980, 0xf9bf) AM_DEVICE("video", pcdx_video_device, map)
- AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff) // UARTs
- AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff)
- AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff)
+void pcd_state::pcd_map(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+ map(0x00000, 0x7ffff).rw(this, FUNC(pcd_state::mem_r), FUNC(pcd_state::mem_w));
+ map(0xfc000, 0xfffff).rom().region("bios", 0);
+}
+
+void pcd_state::pcd_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+ map(0xf000, 0xf7ff).ram().share("nvram");
+ map(0xf800, 0xf801).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf820, 0xf821).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf840, 0xf840).rw(this, FUNC(pcd_state::stat_r), FUNC(pcd_state::stat_w));
+ map(0xf841, 0xf841).rw(this, FUNC(pcd_state::led_r), FUNC(pcd_state::led_w));
+ map(0xf880, 0xf8bf).rw(this, 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(this, FUNC(pcd_state::dskctl_r), FUNC(pcd_state::dskctl_w));
+ map(0xf940, 0xf943).rw(this, FUNC(pcd_state::scsi_r), FUNC(pcd_state::scsi_w));
+ map(0xf980, 0xf9bf).m("video", FUNC(pcdx_video_device::map));
+ map(0xf9c0, 0xf9c3).rw("usart1", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // UARTs
+ map(0xf9d0, 0xf9d3).rw("usart2", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
+ map(0xf9e0, 0xf9e3).rw("usart3", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
// AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select)
- AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0x00ff)
- AM_RANGE(0xfb02, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcd_state::pcx_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(pcd_io)
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(mmu_r, mmu_w)
- AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xff00)
-ADDRESS_MAP_END
+ map(0xfb00, 0xfb00).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+ map(0xfb02, 0xffff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+}
+
+void pcd_state::pcx_io(address_map &map)
+{
+ map.unmap_value_high();
+ pcd_io(map);
+ map(0x8000, 0x8fff).rw(this, FUNC(pcd_state::mmu_r), FUNC(pcd_state::mmu_w));
+ map(0xfb01, 0xfb01).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+}
//**************************************************************************
// MACHINE DRIVERS
diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp
index 13f4d33830a..c94082daf62 100644
--- a/src/mame/drivers/pce.cpp
+++ b/src/mame/drivers/pce.cpp
@@ -249,49 +249,53 @@ INPUT_PORTS_END
-ADDRESS_MAP_START(pce_state::pce_mem)
- AM_RANGE( 0x000000, 0x0FFFFF) AM_DEVREADWRITE("cartslot", pce_cart_slot_device, read_cart, write_cart)
- AM_RANGE( 0x100000, 0x10FFFF) AM_RAM AM_SHARE("cd_ram")
- AM_RANGE( 0x110000, 0x1EDFFF) AM_NOP
- AM_RANGE( 0x1EE000, 0x1EE7FF) AM_DEVREADWRITE("pce_cd", pce_cd_device, bram_r, bram_w)
- AM_RANGE( 0x1EE800, 0x1EFFFF) AM_NOP
- AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) AM_SHARE("user_ram")
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE( C6280_TAG, c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE( "maincpu", h6280_device, timer_r, timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE( mess_pce_joystick_r, mess_pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w )
- AM_RANGE( 0x1FF800, 0x1FFBFF) AM_READWRITE( pce_cd_intf_r, pce_cd_intf_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pce_state::pce_io)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pce_state::sgx_mem)
- AM_RANGE( 0x000000, 0x0FFFFF) AM_DEVREADWRITE("cartslot", pce_cart_slot_device, read_cart, write_cart)
- AM_RANGE( 0x100000, 0x10FFFF) AM_RAM AM_SHARE("cd_ram")
- AM_RANGE( 0x110000, 0x1EDFFF) AM_NOP
- AM_RANGE( 0x1EE000, 0x1EE7FF) AM_DEVREADWRITE("pce_cd", pce_cd_device, bram_r, bram_w)
- AM_RANGE( 0x1EE800, 0x1EFFFF) AM_NOP
- AM_RANGE( 0x1F0000, 0x1F7FFF) AM_RAM AM_SHARE("user_ram")
- AM_RANGE( 0x1FE000, 0x1FE007) AM_DEVREADWRITE( "huc6270_0", huc6270_device, read, write ) AM_MIRROR(0x03E0)
- AM_RANGE( 0x1FE008, 0x1FE00F) AM_DEVREADWRITE( "huc6202", huc6202_device, read, write ) AM_MIRROR(0x03E0)
- AM_RANGE( 0x1FE010, 0x1FE017) AM_DEVREADWRITE( "huc6270_1", huc6270_device, read, write ) AM_MIRROR(0x03E0)
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE(C6280_TAG, c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(mess_pce_joystick_r, mess_pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w )
- AM_RANGE( 0x1FF800, 0x1FFBFF) AM_READWRITE(pce_cd_intf_r, pce_cd_intf_w )
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pce_state::sgx_io)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6202", huc6202_device, io_read, io_write )
-ADDRESS_MAP_END
+void pce_state::pce_mem(address_map &map)
+{
+ map(0x000000, 0x0FFFFF).rw(m_cartslot, FUNC(pce_cart_slot_device::read_cart), FUNC(pce_cart_slot_device::write_cart));
+ map(0x100000, 0x10FFFF).ram().share("cd_ram");
+ map(0x110000, 0x1EDFFF).noprw();
+ map(0x1EE000, 0x1EE7FF).rw(m_cd, FUNC(pce_cd_device::bram_r), FUNC(pce_cd_device::bram_w));
+ map(0x1EE800, 0x1EFFFF).noprw();
+ map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000).share("user_ram");
+ map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+ map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1FE800, 0x1FEBFF).rw(C6280_TAG, FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(pce_state::mess_pce_joystick_r), FUNC(pce_state::mess_pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+ map(0x1FF800, 0x1FFBFF).rw(this, FUNC(pce_state::pce_cd_intf_r), FUNC(pce_state::pce_cd_intf_w));
+}
+
+void pce_state::pce_io(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+}
+
+
+void pce_state::sgx_mem(address_map &map)
+{
+ map(0x000000, 0x0FFFFF).rw(m_cartslot, FUNC(pce_cart_slot_device::read_cart), FUNC(pce_cart_slot_device::write_cart));
+ map(0x100000, 0x10FFFF).ram().share("cd_ram");
+ map(0x110000, 0x1EDFFF).noprw();
+ map(0x1EE000, 0x1EE7FF).rw(m_cd, FUNC(pce_cd_device::bram_r), FUNC(pce_cd_device::bram_w));
+ map(0x1EE800, 0x1EFFFF).noprw();
+ map(0x1F0000, 0x1F7FFF).ram().share("user_ram");
+ map(0x1FE000, 0x1FE007).rw("huc6270_0", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0);
+ map(0x1FE008, 0x1FE00F).rw("huc6202", FUNC(huc6202_device::read), FUNC(huc6202_device::write)).mirror(0x03E0);
+ map(0x1FE010, 0x1FE017).rw("huc6270_1", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0);
+ map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1FE800, 0x1FEBFF).rw(C6280_TAG, FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(pce_state::mess_pce_joystick_r), FUNC(pce_state::mess_pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+ map(0x1FF800, 0x1FFBFF).rw(this, FUNC(pce_state::pce_cd_intf_r), FUNC(pce_state::pce_cd_intf_w));
+}
+
+
+void pce_state::sgx_io(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6202", FUNC(huc6202_device::io_read), FUNC(huc6202_device::io_write));
+}
uint32_t pce_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp
index bf5e3c67a01..8eb486c6d83 100644
--- a/src/mame/drivers/pce220.cpp
+++ b/src/mame/drivers/pce220.cpp
@@ -576,59 +576,62 @@ WRITE8_MEMBER( pcg850v_state::g850v_lcd_data_w )
}
-ADDRESS_MAP_START(pce220_state::pce220_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pce220_state::pce220_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ(kb_r)
- AM_RANGE(0x11, 0x12) AM_WRITE(kb_matrix_w)
- AM_RANGE(0x13, 0x13) AM_READ_PORT("SHIFT")
- AM_RANGE(0x14, 0x14) AM_READWRITE(timer_r, timer_w)
- AM_RANGE(0x15, 0x15) AM_READWRITE(port15_r, port15_w)
- AM_RANGE(0x16, 0x16) AM_READWRITE(irq_status_r, irq_ack_w)
- AM_RANGE(0x17, 0x17) AM_WRITE(irq_mask_w)
- AM_RANGE(0x18, 0x18) AM_READWRITE(port18_r, port18_w)
- AM_RANGE(0x19, 0x19) AM_READWRITE(rom_bank_r, rom_bank_w)
- AM_RANGE(0x1a, 0x1a) AM_WRITE(boot_bank_w)
- AM_RANGE(0x1b, 0x1b) AM_WRITE(ram_bank_w)
- AM_RANGE(0x1c, 0x1c) AM_WRITENOP //peripheral reset
- AM_RANGE(0x1d, 0x1d) AM_READ_PORT("BATTERY")
- AM_RANGE(0x1e, 0x1e) AM_WRITENOP //???
- AM_RANGE(0x1f, 0x1f) AM_READ(port1f_r)
- AM_RANGE(0x58, 0x58) AM_WRITE(lcd_control_w)
- AM_RANGE(0x59, 0x59) AM_READ(lcd_status_r)
- AM_RANGE(0x5a, 0x5a) AM_WRITE(lcd_data_w)
- AM_RANGE(0x5b, 0x5b) AM_READ(lcd_data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcg850v_state::pcg850v_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ(kb_r)
- AM_RANGE(0x11, 0x12) AM_WRITE(kb_matrix_w)
- AM_RANGE(0x13, 0x13) AM_READ_PORT("SHIFT")
- AM_RANGE(0x14, 0x14) AM_READWRITE(timer_r, timer_w)
- AM_RANGE(0x15, 0x15) AM_READWRITE(port15_r, port15_w)
- AM_RANGE(0x16, 0x16) AM_READWRITE(irq_status_r, irq_ack_w)
- AM_RANGE(0x17, 0x17) AM_WRITE(irq_mask_w)
- AM_RANGE(0x18, 0x18) AM_READWRITE(port18_r, port18_w)
- AM_RANGE(0x19, 0x19) AM_READWRITE(rom_bank_r, rom_bank_w)
- AM_RANGE(0x1a, 0x1a) AM_WRITE(boot_bank_w)
- AM_RANGE(0x1b, 0x1b) AM_WRITE(ram_bank_w)
- AM_RANGE(0x1c, 0x1c) AM_WRITENOP //peripheral reset
- AM_RANGE(0x1d, 0x1d) AM_READ_PORT("BATTERY")
- AM_RANGE(0x1e, 0x1e) AM_WRITENOP //???
- AM_RANGE(0x1f, 0x1f) AM_READ(port1f_r)
- AM_RANGE(0x40, 0x40) AM_READWRITE(g850v_lcd_status_r, g850v_lcd_control_w)
- AM_RANGE(0x41, 0x41) AM_READWRITE(g850v_lcd_data_r, g850v_lcd_data_w)
- AM_RANGE(0x69, 0x69) AM_READWRITE(g850v_bank_r, g850v_bank_w)
-ADDRESS_MAP_END
+void pce220_state::pce220_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xffff).bankr("bank4");
+}
+
+void pce220_state::pce220_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x10, 0x10).r(this, FUNC(pce220_state::kb_r));
+ map(0x11, 0x12).w(this, FUNC(pce220_state::kb_matrix_w));
+ map(0x13, 0x13).portr("SHIFT");
+ map(0x14, 0x14).rw(this, FUNC(pce220_state::timer_r), FUNC(pce220_state::timer_w));
+ map(0x15, 0x15).rw(this, FUNC(pce220_state::port15_r), FUNC(pce220_state::port15_w));
+ map(0x16, 0x16).rw(this, FUNC(pce220_state::irq_status_r), FUNC(pce220_state::irq_ack_w));
+ map(0x17, 0x17).w(this, FUNC(pce220_state::irq_mask_w));
+ map(0x18, 0x18).rw(this, FUNC(pce220_state::port18_r), FUNC(pce220_state::port18_w));
+ map(0x19, 0x19).rw(this, FUNC(pce220_state::rom_bank_r), FUNC(pce220_state::rom_bank_w));
+ map(0x1a, 0x1a).w(this, FUNC(pce220_state::boot_bank_w));
+ map(0x1b, 0x1b).w(this, FUNC(pce220_state::ram_bank_w));
+ map(0x1c, 0x1c).nopw(); //peripheral reset
+ map(0x1d, 0x1d).portr("BATTERY");
+ map(0x1e, 0x1e).nopw(); //???
+ map(0x1f, 0x1f).r(this, FUNC(pce220_state::port1f_r));
+ map(0x58, 0x58).w(this, FUNC(pce220_state::lcd_control_w));
+ map(0x59, 0x59).r(this, FUNC(pce220_state::lcd_status_r));
+ map(0x5a, 0x5a).w(this, FUNC(pce220_state::lcd_data_w));
+ map(0x5b, 0x5b).r(this, FUNC(pce220_state::lcd_data_r));
+}
+
+void pcg850v_state::pcg850v_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x10, 0x10).r(this, FUNC(pcg850v_state::kb_r));
+ map(0x11, 0x12).w(this, FUNC(pcg850v_state::kb_matrix_w));
+ map(0x13, 0x13).portr("SHIFT");
+ map(0x14, 0x14).rw(this, FUNC(pcg850v_state::timer_r), FUNC(pcg850v_state::timer_w));
+ map(0x15, 0x15).rw(this, FUNC(pcg850v_state::port15_r), FUNC(pcg850v_state::port15_w));
+ map(0x16, 0x16).rw(this, FUNC(pcg850v_state::irq_status_r), FUNC(pcg850v_state::irq_ack_w));
+ map(0x17, 0x17).w(this, FUNC(pcg850v_state::irq_mask_w));
+ map(0x18, 0x18).rw(this, FUNC(pcg850v_state::port18_r), FUNC(pcg850v_state::port18_w));
+ map(0x19, 0x19).rw(this, FUNC(pcg850v_state::rom_bank_r), FUNC(pcg850v_state::rom_bank_w));
+ map(0x1a, 0x1a).w(this, FUNC(pcg850v_state::boot_bank_w));
+ map(0x1b, 0x1b).w(this, FUNC(pcg850v_state::ram_bank_w));
+ map(0x1c, 0x1c).nopw(); //peripheral reset
+ map(0x1d, 0x1d).portr("BATTERY");
+ map(0x1e, 0x1e).nopw(); //???
+ map(0x1f, 0x1f).r(this, FUNC(pcg850v_state::port1f_r));
+ map(0x40, 0x40).rw(this, FUNC(pcg850v_state::g850v_lcd_status_r), FUNC(pcg850v_state::g850v_lcd_control_w));
+ map(0x41, 0x41).rw(this, FUNC(pcg850v_state::g850v_lcd_data_r), FUNC(pcg850v_state::g850v_lcd_data_w));
+ map(0x69, 0x69).rw(this, FUNC(pcg850v_state::g850v_bank_r), FUNC(pcg850v_state::g850v_bank_w));
+}
INPUT_CHANGED_MEMBER(pce220_state::kb_irq)
{
diff --git a/src/mame/drivers/pcfx.cpp b/src/mame/drivers/pcfx.cpp
index 404dc8b9ad3..cc52e64b9b1 100644
--- a/src/mame/drivers/pcfx.cpp
+++ b/src/mame/drivers/pcfx.cpp
@@ -94,14 +94,15 @@ WRITE8_MEMBER(pcfx_state::extio_w)
io_space.write_byte(offset, data);
}
-ADDRESS_MAP_START(pcfx_state::pcfx_mem)
- AM_RANGE( 0x00000000, 0x001FFFFF ) AM_RAM /* RAM */
+void pcfx_state::pcfx_mem(address_map &map)
+{
+ map(0x00000000, 0x001FFFFF).ram(); /* RAM */
// AM_RANGE( 0x80000000, 0x807FFFFF ) AM_READWRITE8(extio_r,extio_w,0xffffffff) /* EXTIO */
- AM_RANGE( 0xE0000000, 0xE7FFFFFF ) AM_NOP /* BackUp RAM */
- AM_RANGE( 0xE8000000, 0xE9FFFFFF ) AM_NOP /* Extended BackUp RAM */
- AM_RANGE( 0xF8000000, 0xF8000007 ) AM_NOP /* PIO */
- AM_RANGE( 0xFFF00000, 0xFFFFFFFF ) AM_ROM AM_REGION("ipl", 0) /* ROM */
-ADDRESS_MAP_END
+ map(0xE0000000, 0xE7FFFFFF).noprw(); /* BackUp RAM */
+ map(0xE8000000, 0xE9FFFFFF).noprw(); /* Extended BackUp RAM */
+ map(0xF8000000, 0xF8000007).noprw(); /* PIO */
+ map(0xFFF00000, 0xFFFFFFFF).rom().region("ipl", 0); /* ROM */
+}
READ16_MEMBER( pcfx_state::pad_r )
{
@@ -185,21 +186,22 @@ WRITE16_MEMBER( pcfx_state::pad_w )
}
-ADDRESS_MAP_START(pcfx_state::pcfx_io)
- AM_RANGE( 0x00000000, 0x000000FF ) AM_READWRITE16(pad_r, pad_w, 0xffffffff) /* PAD */
- AM_RANGE( 0x00000100, 0x000001FF ) AM_NOP /* HuC6230 */
- AM_RANGE( 0x00000200, 0x000002FF ) AM_DEVICE16( "huc6271", huc6271_device, regs, 0xffff ) /* HuC6271 */
- AM_RANGE( 0x00000300, 0x000003FF ) AM_DEVREADWRITE16( "huc6261", huc6261_device, read, write, 0xffff ) /* HuC6261 */
- AM_RANGE( 0x00000400, 0x000004FF ) AM_DEVREADWRITE8( "huc6270_a", huc6270_device, read, write, 0xffff ) /* HuC6270-A */
- AM_RANGE( 0x00000500, 0x000005FF ) AM_DEVREADWRITE8( "huc6270_b", huc6270_device, read, write, 0xffff ) /* HuC6270-B */
- AM_RANGE( 0x00000600, 0x000006FF ) AM_DEVREADWRITE( "huc6272", huc6272_device, read, write ) /* HuC6272 */
- AM_RANGE( 0x00000C80, 0x00000C83 ) AM_NOP
- AM_RANGE( 0x00000E00, 0x00000EFF ) AM_READWRITE16( irq_read, irq_write, 0xffff ) /* Interrupt controller */
- AM_RANGE( 0x00000F00, 0x00000FFF ) AM_NOP
+void pcfx_state::pcfx_io(address_map &map)
+{
+ map(0x00000000, 0x000000FF).rw(this, FUNC(pcfx_state::pad_r), FUNC(pcfx_state::pad_w)); /* PAD */
+ map(0x00000100, 0x000001FF).noprw(); /* HuC6230 */
+ map(0x00000200, 0x000002FF).m("huc6271", FUNC(huc6271_device::regs)).umask32(0x0000ffff); /* HuC6271 */
+ map(0x00000300, 0x000003FF).rw(m_huc6261, FUNC(huc6261_device::read), FUNC(huc6261_device::write)).umask32(0x0000ffff); /* HuC6261 */
+ map(0x00000400, 0x000004FF).rw("huc6270_a", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).umask32(0x0000ffff); /* HuC6270-A */
+ map(0x00000500, 0x000005FF).rw("huc6270_b", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).umask32(0x0000ffff); /* HuC6270-B */
+ map(0x00000600, 0x000006FF).rw("huc6272", FUNC(huc6272_device::read), FUNC(huc6272_device::write)); /* HuC6272 */
+ map(0x00000C80, 0x00000C83).noprw();
+ map(0x00000E00, 0x00000EFF).rw(this, FUNC(pcfx_state::irq_read), FUNC(pcfx_state::irq_write)).umask32(0x0000ffff); /* Interrupt controller */
+ map(0x00000F00, 0x00000FFF).noprw();
// AM_RANGE( 0x00600000, 0x006FFFFF ) AM_READ(scsi_ctrl_r)
- AM_RANGE( 0x00780000, 0x007FFFFF ) AM_ROM AM_REGION("scsi_rom", 0 )
- AM_RANGE( 0x80500000, 0x805000FF ) AM_NOP /* HuC6273 */
-ADDRESS_MAP_END
+ map(0x00780000, 0x007FFFFF).rom().region("scsi_rom", 0);
+ map(0x80500000, 0x805000FF).noprw(); /* HuC6273 */
+}
static INPUT_PORTS_START( pcfx )
diff --git a/src/mame/drivers/pcktgal.cpp b/src/mame/drivers/pcktgal.cpp
index 875cca31817..43d770c5b56 100644
--- a/src/mame/drivers/pcktgal.cpp
+++ b/src/mame/drivers/pcktgal.cpp
@@ -71,35 +71,37 @@ READ8_MEMBER(pcktgal_state::adpcm_reset_r)
/***************************************************************************/
-ADDRESS_MAP_START(pcktgal_state::pcktgal_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
- AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
- AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
- AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w)
-
- AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(sound_w)
- AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(bank_w)
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void pcktgal_state::pcktgal_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w));
+ map(0x1000, 0x11ff).ram().share("spriteram");
+ map(0x1800, 0x1800).portr("P1");
+ map(0x1800, 0x1807).w(m_tilegen1, FUNC(deco_bac06_device::pf_control0_8bit_w));
+ map(0x1810, 0x181f).rw(m_tilegen1, FUNC(deco_bac06_device::pf_control1_8bit_r), FUNC(deco_bac06_device::pf_control1_8bit_w));
+
+ map(0x1a00, 0x1a00).portr("P2").w(this, FUNC(pcktgal_state::sound_w));
+ map(0x1c00, 0x1c00).portr("DSW").w(this, FUNC(pcktgal_state::bank_w));
+ map(0x4000, 0x5fff).bankr("bank1");
+ map(0x6000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************/
-ADDRESS_MAP_START(pcktgal_state::pcktgal_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_data_w) /* ADPCM data for the MSM5205 chip */
- AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_bank_w)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x3400, 0x3400) AM_READ(adpcm_reset_r) /* ? not sure */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank3")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void pcktgal_state::pcktgal_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write));
+ map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write));
+ map(0x1800, 0x1800).w(this, FUNC(pcktgal_state::adpcm_data_w)); /* ADPCM data for the MSM5205 chip */
+ map(0x2000, 0x2000).w(this, FUNC(pcktgal_state::sound_bank_w));
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x3400, 0x3400).r(this, FUNC(pcktgal_state::adpcm_reset_r)); /* ? not sure */
+ map(0x4000, 0x7fff).bankr("bank3");
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************/
diff --git a/src/mame/drivers/pcm.cpp b/src/mame/drivers/pcm.cpp
index 235468dd830..c3ea8f809d5 100644
--- a/src/mame/drivers/pcm.cpp
+++ b/src/mame/drivers/pcm.cpp
@@ -160,26 +160,28 @@ WRITE8_MEMBER( pcm_state::pcm_85_w )
-ADDRESS_MAP_START(pcm_state::pcm_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x1fff ) AM_ROM // ROM
- AM_RANGE( 0x2000, 0xf7ff ) AM_RAM // RAM
- AM_RANGE( 0xf800, 0xffff ) AM_RAM AM_SHARE("videoram") // Video RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcm_state::pcm_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ctc_s", z80ctc_device, read, write) // system CTC
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("pio_s", z80pio_device, read, write) // system PIO
- AM_RANGE(0x88, 0x8B) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) // SIO
- AM_RANGE(0x8C, 0x8F) AM_DEVREADWRITE("ctc_u", z80ctc_device, read, write) // user CTC
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("pio_u", z80pio_device, read, write) // user PIO
+void pcm_state::pcm_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom(); // ROM
+ map(0x2000, 0xf7ff).ram(); // RAM
+ map(0xf800, 0xffff).ram().share("videoram"); // Video RAM
+}
+
+void pcm_state::pcm_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw(m_ctc_s, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // system CTC
+ map(0x84, 0x87).rw(m_pio_s, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // system PIO
+ map(0x88, 0x8B).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO
+ map(0x8C, 0x8F).rw(m_ctc_u, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // user CTC
+ map(0x90, 0x93).rw(m_pio_u, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // user PIO
//AM_RANGE(0x94, 0x97) // bank select
//AM_RANGE(0x98, 0x9B) // NMI generator
//AM_RANGE(0x9C, 0x9F) // io ports available to the user
// disk controller?
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( pcm )
diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp
index 0ec799cb2da..1692dc3ee7b 100644
--- a/src/mame/drivers/pcw.cpp
+++ b/src/mame/drivers/pcw.cpp
@@ -192,12 +192,13 @@ WRITE_LINE_MEMBER( pcw_state::pcw_fdc_interrupt )
block 3 could be paged into any bank, and this explains the
setup of the memory below.
*/
-ADDRESS_MAP_START(pcw_state::pcw_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5")
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6")
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7")
- AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8")
-ADDRESS_MAP_END
+void pcw_state::pcw_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1").bankw("bank5");
+ map(0x4000, 0x7fff).bankr("bank2").bankw("bank6");
+ map(0x8000, 0xbfff).bankr("bank3").bankw("bank7");
+ map(0xc000, 0xffff).bankr("bank4").bankw("bank8");
+}
/* Keyboard is read by the MCU and sent as serial data to the gate array ASIC */
@@ -948,34 +949,36 @@ WRITE8_MEMBER(pcw_state::pcw9512_parallel_w)
logerror("pcw9512 parallel w: offs: %04x data: %02x\n",offset,data);
}
-ADDRESS_MAP_START(pcw_state::pcw_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x000, 0x001) AM_MIRROR(0x7e) AM_DEVICE("upd765", upd765a_device, map)
- AM_RANGE(0x080, 0x0ef) AM_READWRITE(pcw_expansion_r, pcw_expansion_w)
- AM_RANGE(0x0f0, 0x0f3) AM_WRITE( pcw_bank_select_w)
- AM_RANGE(0x0f4, 0x0f4) AM_READWRITE(pcw_interrupt_counter_r, pcw_bank_force_selection_w)
- AM_RANGE(0x0f5, 0x0f5) AM_WRITE( pcw_roller_ram_addr_w)
- AM_RANGE(0x0f6, 0x0f6) AM_WRITE( pcw_pointer_table_top_scan_w)
- AM_RANGE(0x0f7, 0x0f7) AM_WRITE( pcw_vdu_video_control_register_w)
- AM_RANGE(0x0f8, 0x0f8) AM_READWRITE(pcw_system_status_r, pcw_system_control_w)
- AM_RANGE(0x0fc, 0x0fc) AM_READWRITE(pcw_printer_data_r, pcw_printer_data_w)
- AM_RANGE(0x0fd, 0x0fd) AM_READWRITE(pcw_printer_status_r, pcw_printer_command_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(pcw_state::pcw9512_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x000, 0x001) AM_MIRROR(0x7e) AM_DEVICE("upd765", upd765a_device, map)
- AM_RANGE(0x080, 0x0ef) AM_READWRITE(pcw_expansion_r, pcw_expansion_w)
- AM_RANGE(0x0f0, 0x0f3) AM_WRITE( pcw_bank_select_w)
- AM_RANGE(0x0f4, 0x0f4) AM_READWRITE(pcw_interrupt_counter_r, pcw_bank_force_selection_w)
- AM_RANGE(0x0f5, 0x0f5) AM_WRITE( pcw_roller_ram_addr_w)
- AM_RANGE(0x0f6, 0x0f6) AM_WRITE( pcw_pointer_table_top_scan_w)
- AM_RANGE(0x0f7, 0x0f7) AM_WRITE( pcw_vdu_video_control_register_w)
- AM_RANGE(0x0f8, 0x0f8) AM_READWRITE(pcw_system_status_r, pcw_system_control_w)
- AM_RANGE(0x0fc, 0x0fd) AM_READWRITE(pcw9512_parallel_r, pcw9512_parallel_w)
-ADDRESS_MAP_END
+void pcw_state::pcw_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x000, 0x001).mirror(0x7e).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x080, 0x0ef).rw(this, FUNC(pcw_state::pcw_expansion_r), FUNC(pcw_state::pcw_expansion_w));
+ map(0x0f0, 0x0f3).w(this, FUNC(pcw_state::pcw_bank_select_w));
+ map(0x0f4, 0x0f4).rw(this, FUNC(pcw_state::pcw_interrupt_counter_r), FUNC(pcw_state::pcw_bank_force_selection_w));
+ map(0x0f5, 0x0f5).w(this, FUNC(pcw_state::pcw_roller_ram_addr_w));
+ map(0x0f6, 0x0f6).w(this, FUNC(pcw_state::pcw_pointer_table_top_scan_w));
+ map(0x0f7, 0x0f7).w(this, FUNC(pcw_state::pcw_vdu_video_control_register_w));
+ map(0x0f8, 0x0f8).rw(this, FUNC(pcw_state::pcw_system_status_r), FUNC(pcw_state::pcw_system_control_w));
+ map(0x0fc, 0x0fc).rw(this, FUNC(pcw_state::pcw_printer_data_r), FUNC(pcw_state::pcw_printer_data_w));
+ map(0x0fd, 0x0fd).rw(this, FUNC(pcw_state::pcw_printer_status_r), FUNC(pcw_state::pcw_printer_command_w));
+}
+
+
+
+void pcw_state::pcw9512_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x000, 0x001).mirror(0x7e).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x080, 0x0ef).rw(this, FUNC(pcw_state::pcw_expansion_r), FUNC(pcw_state::pcw_expansion_w));
+ map(0x0f0, 0x0f3).w(this, FUNC(pcw_state::pcw_bank_select_w));
+ map(0x0f4, 0x0f4).rw(this, FUNC(pcw_state::pcw_interrupt_counter_r), FUNC(pcw_state::pcw_bank_force_selection_w));
+ map(0x0f5, 0x0f5).w(this, FUNC(pcw_state::pcw_roller_ram_addr_w));
+ map(0x0f6, 0x0f6).w(this, FUNC(pcw_state::pcw_pointer_table_top_scan_w));
+ map(0x0f7, 0x0f7).w(this, FUNC(pcw_state::pcw_vdu_video_control_register_w));
+ map(0x0f8, 0x0f8).rw(this, FUNC(pcw_state::pcw_system_status_r), FUNC(pcw_state::pcw_system_control_w));
+ map(0x0fc, 0x0fd).rw(this, FUNC(pcw_state::pcw9512_parallel_r), FUNC(pcw_state::pcw9512_parallel_w));
+}
TIMER_CALLBACK_MEMBER(pcw_state::setup_beep)
diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp
index 61c80319a80..1d2dd69184b 100644
--- a/src/mame/drivers/pcw16.cpp
+++ b/src/mame/drivers/pcw16.cpp
@@ -142,9 +142,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(pcw16_state::pcw16_timer_callback)
}
}
-ADDRESS_MAP_START(pcw16_state::pcw16_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(pcw16_mem_r, pcw16_mem_w)
-ADDRESS_MAP_END
+void pcw16_state::pcw16_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(pcw16_state::pcw16_mem_r), FUNC(pcw16_state::pcw16_mem_w));
+}
WRITE8_MEMBER(pcw16_state::pcw16_palette_w)
@@ -934,28 +935,29 @@ static SLOT_INTERFACE_START( pcw16_floppies )
SLOT_INTERFACE_END
-ADDRESS_MAP_START(pcw16_state::pcw16_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void pcw16_state::pcw16_io(address_map &map)
+{
+ map.global_mask(0xff);
/* super i/o chip */
- AM_RANGE(0x018, 0x01f) AM_DEVICE("fdc", pc_fdc_superio_device, map)
- AM_RANGE(0x020, 0x027) AM_DEVREADWRITE("ns16550_1", ns16550_device, ins8250_r, ins8250_w)
- AM_RANGE(0x028, 0x02f) AM_DEVREADWRITE("ns16550_2", ns16550_device, ins8250_r, ins8250_w)
- AM_RANGE(0x038, 0x03a) AM_DEVREADWRITE("lpt", pc_lpt_device, read, write)
+ map(0x018, 0x01f).m(m_fdc, FUNC(pc_fdc_superio_device::map));
+ map(0x020, 0x027).rw("ns16550_1", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x028, 0x02f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x038, 0x03a).rw("lpt", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write));
/* anne asic */
- AM_RANGE(0x0e0, 0x0ef) AM_WRITE(pcw16_palette_w)
- AM_RANGE(0x0f0, 0x0f3) AM_READWRITE(pcw16_bankhw_r, pcw16_bankhw_w)
- AM_RANGE(0x0f4, 0x0f4) AM_READWRITE(pcw16_keyboard_data_shift_r, pcw16_keyboard_data_shift_w)
- AM_RANGE(0x0f5, 0x0f5) AM_READWRITE(pcw16_keyboard_status_r, pcw16_keyboard_control_w)
- AM_RANGE(0x0f7, 0x0f7) AM_READWRITE(pcw16_timer_interrupt_counter_r, pcw16_video_control_w)
- AM_RANGE(0x0f8, 0x0f8) AM_READWRITE(pcw16_system_status_r, pcw16_system_control_w)
- AM_RANGE(0x0f9, 0x0f9) AM_READWRITE(rtc_256ths_seconds_r, rtc_control_w)
- AM_RANGE(0x0fa, 0x0fa) AM_READWRITE(rtc_seconds_r, rtc_seconds_w)
- AM_RANGE(0x0fb, 0x0fb) AM_READWRITE(rtc_minutes_r, rtc_minutes_w)
- AM_RANGE(0x0fc, 0x0fc) AM_READWRITE(rtc_hours_r, rtc_hours_w)
- AM_RANGE(0x0fd, 0x0fd) AM_READWRITE(rtc_days_r, rtc_days_w)
- AM_RANGE(0x0fe, 0x0fe) AM_READWRITE(rtc_month_r, rtc_month_w)
- AM_RANGE(0x0ff, 0x0ff) AM_READWRITE(rtc_year_invalid_r, rtc_year_w)
-ADDRESS_MAP_END
+ map(0x0e0, 0x0ef).w(this, FUNC(pcw16_state::pcw16_palette_w));
+ map(0x0f0, 0x0f3).rw(this, FUNC(pcw16_state::pcw16_bankhw_r), FUNC(pcw16_state::pcw16_bankhw_w));
+ map(0x0f4, 0x0f4).rw(this, FUNC(pcw16_state::pcw16_keyboard_data_shift_r), FUNC(pcw16_state::pcw16_keyboard_data_shift_w));
+ map(0x0f5, 0x0f5).rw(this, FUNC(pcw16_state::pcw16_keyboard_status_r), FUNC(pcw16_state::pcw16_keyboard_control_w));
+ map(0x0f7, 0x0f7).rw(this, FUNC(pcw16_state::pcw16_timer_interrupt_counter_r), FUNC(pcw16_state::pcw16_video_control_w));
+ map(0x0f8, 0x0f8).rw(this, FUNC(pcw16_state::pcw16_system_status_r), FUNC(pcw16_state::pcw16_system_control_w));
+ map(0x0f9, 0x0f9).rw(this, FUNC(pcw16_state::rtc_256ths_seconds_r), FUNC(pcw16_state::rtc_control_w));
+ map(0x0fa, 0x0fa).rw(this, FUNC(pcw16_state::rtc_seconds_r), FUNC(pcw16_state::rtc_seconds_w));
+ map(0x0fb, 0x0fb).rw(this, FUNC(pcw16_state::rtc_minutes_r), FUNC(pcw16_state::rtc_minutes_w));
+ map(0x0fc, 0x0fc).rw(this, FUNC(pcw16_state::rtc_hours_r), FUNC(pcw16_state::rtc_hours_w));
+ map(0x0fd, 0x0fd).rw(this, FUNC(pcw16_state::rtc_days_r), FUNC(pcw16_state::rtc_days_w));
+ map(0x0fe, 0x0fe).rw(this, FUNC(pcw16_state::rtc_month_r), FUNC(pcw16_state::rtc_month_w));
+ map(0x0ff, 0x0ff).rw(this, FUNC(pcw16_state::rtc_year_invalid_r), FUNC(pcw16_state::rtc_year_w));
+}
void pcw16_state::machine_reset()
diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp
index 45210f27f20..e0d5a6b6e47 100644
--- a/src/mame/drivers/pcxt.cpp
+++ b/src/mame/drivers/pcxt.cpp
@@ -364,40 +364,45 @@ WRITE8_MEMBER(pcxt_state::fdc_dor_w)
m_mb->m_pic8259->ir6_w(1);
}
-ADDRESS_MAP_START(pcxt_state::filetto_map)
- AM_RANGE(0xc0000, 0xcffff) AM_DEVICE("bank", address_map_bank_device, amap8)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcxt_state::filetto_io)
- ADDRESS_MAP_GLOBAL_MASK(0x3ff)
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
- AM_RANGE(0x0060, 0x0060) AM_READ(port_a_r) //not a real 8255
- AM_RANGE(0x0061, 0x0061) AM_READWRITE(port_b_r, port_b_w)
- AM_RANGE(0x0062, 0x0062) AM_READ(port_c_r)
- AM_RANGE(0x0201, 0x0201) AM_READ_PORT("COIN") //game port
- AM_RANGE(0x0310, 0x0311) AM_READWRITE(disk_iobank_r,disk_iobank_w) //Prototyping card
- AM_RANGE(0x0312, 0x0312) AM_READ_PORT("IN0") //Prototyping card,read only
- AM_RANGE(0x03f2, 0x03f2) AM_WRITE(fdc_dor_w)
- AM_RANGE(0x03f4, 0x03f4) AM_READ(fdc765_status_r) //765 Floppy Disk Controller (FDC) Status
- AM_RANGE(0x03f5, 0x03f5) AM_READWRITE(fdc765_data_r,fdc765_data_w)//FDC Data
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcxt_state::tetriskr_map)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcxt_state::tetriskr_io)
- ADDRESS_MAP_GLOBAL_MASK(0x3ff)
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
- AM_RANGE(0x03c8, 0x03c8) AM_READ_PORT("IN0")
- AM_RANGE(0x03c9, 0x03c9) AM_READ_PORT("IN1")
+void pcxt_state::filetto_map(address_map &map)
+{
+ map(0xc0000, 0xcffff).m(m_bank, FUNC(address_map_bank_device::amap8));
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void pcxt_state::filetto_io(address_map &map)
+{
+ map.global_mask(0x3ff);
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x0060, 0x0060).r(this, FUNC(pcxt_state::port_a_r)); //not a real 8255
+ map(0x0061, 0x0061).rw(this, FUNC(pcxt_state::port_b_r), FUNC(pcxt_state::port_b_w));
+ map(0x0062, 0x0062).r(this, FUNC(pcxt_state::port_c_r));
+ map(0x0201, 0x0201).portr("COIN"); //game port
+ map(0x0310, 0x0311).rw(this, FUNC(pcxt_state::disk_iobank_r), FUNC(pcxt_state::disk_iobank_w)); //Prototyping card
+ map(0x0312, 0x0312).portr("IN0"); //Prototyping card,read only
+ map(0x03f2, 0x03f2).w(this, FUNC(pcxt_state::fdc_dor_w));
+ map(0x03f4, 0x03f4).r(this, FUNC(pcxt_state::fdc765_status_r)); //765 Floppy Disk Controller (FDC) Status
+ map(0x03f5, 0x03f5).rw(this, FUNC(pcxt_state::fdc765_data_r), FUNC(pcxt_state::fdc765_data_w));//FDC Data
+}
+
+void pcxt_state::tetriskr_map(address_map &map)
+{
+ map(0xf0000, 0xfffff).rom().region("bios", 0);
+}
+
+void pcxt_state::tetriskr_io(address_map &map)
+{
+ map.global_mask(0x3ff);
+ map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
+ map(0x03c8, 0x03c8).portr("IN0");
+ map(0x03c9, 0x03c9).portr("IN1");
// AM_RANGE(0x03ce, 0x03ce) AM_READ_PORT("IN1") //read then discarded?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(pcxt_state::bank_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("game_prg", 0)
-ADDRESS_MAP_END
+void pcxt_state::bank_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom().region("game_prg", 0);
+}
static INPUT_PORTS_START( filetto )
PORT_START("IN0")
diff --git a/src/mame/drivers/pda600.cpp b/src/mame/drivers/pda600.cpp
index c15acdf7b23..943662b4732 100644
--- a/src/mame/drivers/pda600.cpp
+++ b/src/mame/drivers/pda600.cpp
@@ -84,22 +84,24 @@ public:
};
-ADDRESS_MAP_START(pda600_state::pda600_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
+void pda600_state::pda600_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).rom();
//AM_RANGE(0x20000, 0x9ffff) AM_RAM // PCMCIA Card
- AM_RANGE(0xa0000, 0xa7fff) AM_RAM AM_REGION("videoram", 0)
- AM_RANGE(0xe0000, 0xfffff) AM_RAM AM_REGION("mainram", 0) AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pda600_state::pda600_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */
+ map(0xa0000, 0xa7fff).ram().region("videoram", 0);
+ map(0xe0000, 0xfffff).ram().region("mainram", 0).share("nvram");
+}
+
+void pda600_state::pda600_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x3f).noprw(); /* Z180 internal registers */
//AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */
- AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", hd64610_device, read, write)
+ map(0x80, 0x8f).rw("rtc", FUNC(hd64610_device::read), FUNC(hd64610_device::write));
//AM_RANGE(0xC0, 0xC1) AM_NOP /* LCD */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( pda600 )
diff --git a/src/mame/drivers/pdp1.cpp b/src/mame/drivers/pdp1.cpp
index 2863f384518..7da4491344c 100644
--- a/src/mame/drivers/pdp1.cpp
+++ b/src/mame/drivers/pdp1.cpp
@@ -71,9 +71,10 @@ To load and play a game:
*/
-ADDRESS_MAP_START(pdp1_state::pdp1_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void pdp1_state::pdp1_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
static INPUT_PORTS_START( pdp1 )
PORT_START("SPACEWAR") /* 0: spacewar controllers */
diff --git a/src/mame/drivers/pdp11.cpp b/src/mame/drivers/pdp11.cpp
index 526e5d967d4..20be653321a 100644
--- a/src/mame/drivers/pdp11.cpp
+++ b/src/mame/drivers/pdp11.cpp
@@ -161,21 +161,23 @@ WRITE16_MEMBER(pdp11_state::teletype_ctrl_w)
}
}
-ADDRESS_MAP_START(pdp11_state::pdp11_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xdfff ) AM_RAM // RAM
- AM_RANGE( 0xea00, 0xfeff ) AM_ROM
- AM_RANGE( 0xff70, 0xff77 ) AM_READWRITE(teletype_ctrl_r,teletype_ctrl_w)
-
- AM_RANGE( 0xfe78, 0xfe7b ) AM_DEVWRITE("rx01", rx01_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pdp11_state::pdp11qb_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xe9ff ) AM_RAM // RAM
- AM_RANGE( 0xea00, 0xefff ) AM_ROM
- AM_RANGE( 0xf000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+void pdp11_state::pdp11_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).ram(); // RAM
+ map(0xea00, 0xfeff).rom();
+ map(0xff70, 0xff77).rw(this, FUNC(pdp11_state::teletype_ctrl_r), FUNC(pdp11_state::teletype_ctrl_w));
+
+ map(0xfe78, 0xfe7b).w("rx01", FUNC(rx01_device::write));
+}
+
+void pdp11_state::pdp11qb_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xe9ff).ram(); // RAM
+ map(0xea00, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
#define M9312_PORT_CONFSETTING \
PORT_CONFSETTING ( 0x00, "'DL' BOOT prom for RL11 controller") \
diff --git a/src/mame/drivers/pecom.cpp b/src/mame/drivers/pecom.cpp
index 7903507ea94..3c3a292a943 100644
--- a/src/mame/drivers/pecom.cpp
+++ b/src/mame/drivers/pecom.cpp
@@ -17,20 +17,22 @@
/* Address maps */
-ADDRESS_MAP_START(pecom_state::pecom64_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x4000, 0x7fff ) AM_RAMBANK("bank2")
- AM_RANGE( 0x8000, 0xbfff ) AM_ROM // ROM 1
- AM_RANGE( 0xc000, 0xf3ff ) AM_ROM // ROM 2
- AM_RANGE( 0xf000, 0xf7ff ) AM_RAMBANK("bank3") // CDP1869 / ROM
- AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank4") // CDP1869 / ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pecom_state::pecom64_io)
- AM_RANGE(0x01, 0x01) AM_WRITE(pecom_bank_w)
- AM_RANGE(0x03, 0x03) AM_READ(pecom_keyboard_r)
- AM_RANGE(0x03, 0x07) AM_WRITE(pecom_cdp1869_w)
-ADDRESS_MAP_END
+void pecom_state::pecom64_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).rom(); // ROM 1
+ map(0xc000, 0xf3ff).rom(); // ROM 2
+ map(0xf000, 0xf7ff).bankrw("bank3"); // CDP1869 / ROM
+ map(0xf800, 0xffff).bankrw("bank4"); // CDP1869 / ROM
+}
+
+void pecom_state::pecom64_io(address_map &map)
+{
+ map(0x01, 0x01).w(this, FUNC(pecom_state::pecom_bank_w));
+ map(0x03, 0x03).r(this, FUNC(pecom_state::pecom_keyboard_r));
+ map(0x03, 0x07).w(this, FUNC(pecom_state::pecom_cdp1869_w));
+}
/* Input ports */
/* Pecom 64 keyboard layout is as follows
diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp
index ccaa03426a2..b0a2e820eba 100644
--- a/src/mame/drivers/pegasus.cpp
+++ b/src/mame/drivers/pegasus.cpp
@@ -193,24 +193,26 @@ READ8_MEMBER( pegasus_state::pegasus_protection_r )
return data;
}
-ADDRESS_MAP_START(pegasus_state::pegasus_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void pegasus_state::pegasus_mem(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x0000, 0x2fff) // mapped by the cartslots 1-3
- AM_RANGE(0xb000, 0xbdff) AM_RAM
- AM_RANGE(0xbe00, 0xbfff) AM_RAM AM_SHARE("videoram")
+ map(0xb000, 0xbdff).ram();
+ map(0xbe00, 0xbfff).ram().share("videoram");
//AM_RANGE(0xc000, 0xdfff) // mapped by the cartslots 4-5
- AM_RANGE(0xe000, 0xe1ff) AM_READ(pegasus_protection_r)
- AM_RANGE(0xe200, 0xe3ff) AM_READWRITE(pegasus_pcg_r,pegasus_pcg_w)
- AM_RANGE(0xe400, 0xe403) AM_MIRROR(0x1fc) AM_DEVREADWRITE("pia_u", pia6821_device, read, write)
- AM_RANGE(0xe600, 0xe603) AM_MIRROR(0x1fc) AM_DEVREADWRITE("pia_s", pia6821_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pegasus_state::pegasusm_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(pegasus_mem)
- AM_RANGE(0x5000, 0xafff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe000, 0xe1ff).r(this, FUNC(pegasus_state::pegasus_protection_r));
+ map(0xe200, 0xe3ff).rw(this, FUNC(pegasus_state::pegasus_pcg_r), FUNC(pegasus_state::pegasus_pcg_w));
+ map(0xe400, 0xe403).mirror(0x1fc).rw(m_pia_u, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe600, 0xe603).mirror(0x1fc).rw(m_pia_s, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf000, 0xffff).rom();
+}
+
+void pegasus_state::pegasusm_mem(address_map &map)
+{
+ map.unmap_value_high();
+ pegasus_mem(map);
+ map(0x5000, 0xafff).ram();
+}
/* Input ports */
static INPUT_PORTS_START( pegasus )
diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp
index 568ba21f66d..ae07914556f 100644
--- a/src/mame/drivers/pencil2.cpp
+++ b/src/mame/drivers/pencil2.cpp
@@ -129,36 +129,38 @@ private:
required_device<generic_slot_device> m_cart;
};
-ADDRESS_MAP_START(pencil2_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x5fff) AM_WRITENOP // stop error log filling up
- AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x1800) AM_RAM
+void pencil2_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x5fff).nopw(); // stop error log filling up
+ map(0x6000, 0x67ff).mirror(0x1800).ram();
//AM_RANGE(0x8000, 0xffff) // mapped by the cartslot
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pencil2_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x10, 0x1f) AM_WRITE(port10_w)
- AM_RANGE(0x30, 0x3f) AM_WRITE(port30_w)
- AM_RANGE(0x80, 0x9f) AM_WRITE(port80_w)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0xc0, 0xdf) AM_WRITE(portc0_w)
- AM_RANGE(0xe0, 0xff) AM_DEVWRITE("sn76489a", sn76489a_device, write)
- AM_RANGE(0xe0, 0xe0) AM_READ_PORT("E0")
- AM_RANGE(0xe1, 0xe1) AM_READ_PORT("E1")
- AM_RANGE(0xe2, 0xe2) AM_READ(porte2_r)
- AM_RANGE(0xe3, 0xe3) AM_READ_PORT("E3")
- AM_RANGE(0xe4, 0xe4) AM_READ_PORT("E4")
- AM_RANGE(0xe6, 0xe6) AM_READ_PORT("E6")
- AM_RANGE(0xe8, 0xe8) AM_READ_PORT("E8")
- AM_RANGE(0xea, 0xea) AM_READ_PORT("EA")
- AM_RANGE(0xf0, 0xf0) AM_READ_PORT("F0")
- AM_RANGE(0xf2, 0xf2) AM_READ_PORT("F2")
-ADDRESS_MAP_END
+}
+
+void pencil2_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x0f).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x10, 0x1f).w(this, FUNC(pencil2_state::port10_w));
+ map(0x30, 0x3f).w(this, FUNC(pencil2_state::port30_w));
+ map(0x80, 0x9f).w(this, FUNC(pencil2_state::port80_w));
+ map(0xa0, 0xa0).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0xa1, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0xc0, 0xdf).w(this, FUNC(pencil2_state::portc0_w));
+ map(0xe0, 0xff).w("sn76489a", FUNC(sn76489a_device::write));
+ map(0xe0, 0xe0).portr("E0");
+ map(0xe1, 0xe1).portr("E1");
+ map(0xe2, 0xe2).r(this, FUNC(pencil2_state::porte2_r));
+ map(0xe3, 0xe3).portr("E3");
+ map(0xe4, 0xe4).portr("E4");
+ map(0xe6, 0xe6).portr("E6");
+ map(0xe8, 0xe8).portr("E8");
+ map(0xea, 0xea).portr("EA");
+ map(0xf0, 0xf0).portr("F0");
+ map(0xf2, 0xf2).portr("F2");
+}
READ8_MEMBER( pencil2_state::porte2_r)
{
diff --git a/src/mame/drivers/pengadvb.cpp b/src/mame/drivers/pengadvb.cpp
index ddfd39bc020..34e01c4a6be 100644
--- a/src/mame/drivers/pengadvb.cpp
+++ b/src/mame/drivers/pengadvb.cpp
@@ -101,34 +101,37 @@ WRITE8_MEMBER(pengadvb_state::megarom_bank_w)
m_bank[offset >> 13 & 3]->set_entry(data & 0xf);
}
-ADDRESS_MAP_START(pengadvb_state::program_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w) // 4 pages of 16KB
-ADDRESS_MAP_END
+void pengadvb_state::program_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(pengadvb_state::mem_r), FUNC(pengadvb_state::mem_w)); // 4 pages of 16KB
+}
-ADDRESS_MAP_START(pengadvb_state::bank_mem)
+void pengadvb_state::bank_mem(address_map &map)
+{
// slot 0, MSX BIOS
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("maincpu", 0)
+ map(0x00000, 0x07fff).rom().region("maincpu", 0);
// slot 1, MegaROM
- AM_RANGE(0x14000, 0x15fff) AM_ROMBANK("bank0")
- AM_RANGE(0x16000, 0x17fff) AM_ROMBANK("bank1")
- AM_RANGE(0x18000, 0x19fff) AM_ROMBANK("bank2")
- AM_RANGE(0x1a000, 0x1bfff) AM_ROMBANK("bank3")
- AM_RANGE(0x14000, 0x1bfff) AM_WRITE(megarom_bank_w)
+ map(0x14000, 0x15fff).bankr("bank0");
+ map(0x16000, 0x17fff).bankr("bank1");
+ map(0x18000, 0x19fff).bankr("bank2");
+ map(0x1a000, 0x1bfff).bankr("bank3");
+ map(0x14000, 0x1bfff).w(this, FUNC(pengadvb_state::megarom_bank_w));
// slot 3, 16KB RAM
- AM_RANGE(0x3c000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pengadvb_state::io_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x98, 0x98) AM_DEVREADWRITE("tms9128", tms9128_device, vram_read, vram_write)
- AM_RANGE(0x99, 0x99) AM_DEVREADWRITE("tms9128", tms9128_device, register_read, register_write)
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0x3c000, 0x3ffff).ram();
+}
+
+void pengadvb_state::io_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x98, 0x98).rw("tms9128", FUNC(tms9128_device::vram_read), FUNC(tms9128_device::vram_write));
+ map(0x99, 0x99).rw("tms9128", FUNC(tms9128_device::register_read), FUNC(tms9128_device::register_write));
+ 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));
+}
/***************************************************************************
diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp
index 7738d7f2e97..a2623011130 100644
--- a/src/mame/drivers/pengo.cpp
+++ b/src/mame/drivers/pengo.cpp
@@ -139,44 +139,47 @@ WRITE_LINE_MEMBER(pengo_state::irq_mask_w)
m_irq_mask = state;
}
-ADDRESS_MAP_START(pengo_state::pengo_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") /* video and color RAM, scratchpad RAM, sprite codes */
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x8fef) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9000, 0x901f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x9020, 0x902f) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x9000, 0x903f) AM_READ_PORT("DSW1")
- AM_RANGE(0x9040, 0x907f) AM_READ_PORT("DSW0")
- AM_RANGE(0x9040, 0x9047) AM_DEVWRITE("latch", ls259_device, write_d0)
- AM_RANGE(0x9070, 0x9070) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9080, 0x90bf) AM_READ_PORT("IN1")
- AM_RANGE(0x90c0, 0x90ff) AM_READ_PORT("IN0")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pengo_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8800, 0x8fef) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pengo_state::jrpacmbl_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(jrpacman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x8fef) AM_RAM
- AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9000, 0x901f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0x9020, 0x902f) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x9030, 0x9030) AM_WRITE(jrpacman_scroll_w)
- AM_RANGE(0x9040, 0x904f) AM_READ_PORT("DSW")
- AM_RANGE(0x9040, 0x9047) AM_DEVWRITE("latch", ls259_device, write_d0)
- AM_RANGE(0x9070, 0x9070) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9080, 0x90bf) AM_READ_PORT("P2")
- AM_RANGE(0x90c0, 0x90ff) AM_READ_PORT("P1")
-ADDRESS_MAP_END
+void pengo_state::pengo_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(pengo_state::pacman_videoram_w)).share("videoram"); /* video and color RAM, scratchpad RAM, sprite codes */
+ map(0x8400, 0x87ff).ram().w(this, FUNC(pengo_state::pacman_colorram_w)).share("colorram");
+ map(0x8800, 0x8fef).ram().share("mainram");
+ map(0x8ff0, 0x8fff).ram().share("spriteram");
+ map(0x9000, 0x901f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x9020, 0x902f).writeonly().share("spriteram2");
+ map(0x9000, 0x903f).portr("DSW1");
+ map(0x9040, 0x907f).portr("DSW0");
+ map(0x9040, 0x9047).w("latch", FUNC(ls259_device::write_d0));
+ map(0x9070, 0x9070).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x9080, 0x90bf).portr("IN1");
+ map(0x90c0, 0x90ff).portr("IN0");
+}
+
+
+void pengo_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8800, 0x8fef).ram().share("mainram");
+ map(0x8ff0, 0x8fff).ram().share("spriteram");
+}
+
+
+void pengo_state::jrpacmbl_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(pengo_state::jrpacman_videoram_w)).share("videoram");
+ map(0x8800, 0x8fef).ram();
+ map(0x8ff0, 0x8fff).ram().share("spriteram");
+ map(0x9000, 0x901f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0x9020, 0x902f).writeonly().share("spriteram2");
+ map(0x9030, 0x9030).w(this, FUNC(pengo_state::jrpacman_scroll_w));
+ map(0x9040, 0x904f).portr("DSW");
+ map(0x9040, 0x9047).w("latch", FUNC(ls259_device::write_d0));
+ map(0x9070, 0x9070).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x9080, 0x90bf).portr("P2");
+ map(0x90c0, 0x90ff).portr("P1");
+}
diff --git a/src/mame/drivers/pentagon.cpp b/src/mame/drivers/pentagon.cpp
index cc9444cae04..73bd073b387 100644
--- a/src/mame/drivers/pentagon.cpp
+++ b/src/mame/drivers/pentagon.cpp
@@ -181,31 +181,34 @@ READ8_MEMBER(pentagon_state::beta_disable_r)
return m_program->read_byte(offset + 0x4000);
}
-ADDRESS_MAP_START(pentagon_state::pentagon_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pentagon_state::pentagon_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0000) AM_WRITE(pentagon_port_7ffd_w) AM_MIRROR(0x7ffd) // (A15 | A1) == 0
- AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00)
- AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00)
- AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00)
- AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00)
- AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xff00)
- AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pentagon_state::pentagon_switch)
- AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with next because we want real addresses on the 3e00-3fff range
- AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r)
- AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r)
-ADDRESS_MAP_END
+void pentagon_state::pentagon_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void pentagon_state::pentagon_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0000).w(this, FUNC(pentagon_state::pentagon_port_7ffd_w)).mirror(0x7ffd); // (A15 | A1) == 0
+ map(0x001f, 0x001f).rw(m_beta, FUNC(beta_disk_device::status_r), FUNC(beta_disk_device::command_w)).mirror(0xff00);
+ map(0x003f, 0x003f).rw(m_beta, FUNC(beta_disk_device::track_r), FUNC(beta_disk_device::track_w)).mirror(0xff00);
+ map(0x005f, 0x005f).rw(m_beta, FUNC(beta_disk_device::sector_r), FUNC(beta_disk_device::sector_w)).mirror(0xff00);
+ map(0x007f, 0x007f).rw(m_beta, FUNC(beta_disk_device::data_r), FUNC(beta_disk_device::data_w)).mirror(0xff00);
+ map(0x00fe, 0x00fe).rw(this, FUNC(pentagon_state::spectrum_port_fe_r), FUNC(pentagon_state::spectrum_port_fe_w)).select(0xff00);
+ map(0x00ff, 0x00ff).rw(m_beta, FUNC(beta_disk_device::state_r), FUNC(beta_disk_device::param_w)).mirror(0xff00);
+ 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);
+}
+
+void pentagon_state::pentagon_switch(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(pentagon_state::beta_neutral_r)); // Overlap with next because we want real addresses on the 3e00-3fff range
+ map(0x3d00, 0x3dff).r(this, FUNC(pentagon_state::beta_enable_r));
+ map(0x4000, 0xffff).r(this, FUNC(pentagon_state::beta_disable_r));
+}
MACHINE_RESET_MEMBER(pentagon_state,pentagon)
{
diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp
index 0ffe4cbafcb..3a7e6690b5e 100644
--- a/src/mame/drivers/peoplepc.cpp
+++ b/src/mame/drivers/peoplepc.cpp
@@ -190,31 +190,33 @@ void peoplepc_state::machine_start()
m_flop1->get_device()->setup_unload_cb(floppy_image_device::unload_cb(&peoplepc_state::floppy_unload, this));
}
-ADDRESS_MAP_START(peoplepc_state::peoplepc_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
- AM_RANGE(0xc0000, 0xdffff) AM_RAM AM_SHARE("gvram")
- AM_RANGE(0xe0000, 0xe3fff) AM_RAM AM_SHARE("cvram")
- AM_RANGE(0xe4000, 0xe5fff) AM_WRITE(charram_w)
- AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(peoplepc_state::peoplepc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0014, 0x0017) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0018, 0x001b) AM_DEVREADWRITE8("pic8259_0", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0020, 0x0031) AM_DEVREADWRITE8("i8257", i8257_device, read, write, 0x00ff)
- AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x0048, 0x004f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0054, 0x0055) AM_DEVREADWRITE8("i8251_0", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x0056, 0x0057) AM_DEVREADWRITE8("i8251_0", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x005c, 0x005d) AM_DEVREADWRITE8("i8251_1", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x005e, 0x005f) AM_DEVREADWRITE8("i8251_1", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0x0064, 0x0067) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff)
- AM_RANGE(0x006c, 0x006d) AM_DEVWRITE8("h46505", mc6845_device, address_w, 0x00ff)
- AM_RANGE(0x006e, 0x006f) AM_DEVREADWRITE8("h46505", mc6845_device, register_r, register_w, 0x00ff)
- AM_RANGE(0x0070, 0x0071) AM_WRITE8(dmapg_w, 0x00ff)
-ADDRESS_MAP_END
+void peoplepc_state::peoplepc_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x7ffff).ram();
+ map(0xc0000, 0xdffff).ram().share("gvram");
+ map(0xe0000, 0xe3fff).ram().share("cvram");
+ map(0xe4000, 0xe5fff).w(this, FUNC(peoplepc_state::charram_w));
+ map(0xfe000, 0xfffff).rom().region("maincpu", 0);
+}
+
+void peoplepc_state::peoplepc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0014, 0x0017).rw(m_pic_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0018, 0x001b).rw("pic8259_0", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0020, 0x0031).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write)).umask16(0x00ff);
+ map(0x0040, 0x0047).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x0048, 0x004f).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0054, 0x0054).rw(m_8251key, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0056, 0x0056).rw(m_8251key, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x005c, 0x005c).rw(m_8251ser, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x005e, 0x005e).rw(m_8251ser, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x0064, 0x0067).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0x006c, 0x006c).w("h46505", FUNC(mc6845_device::address_w));
+ map(0x006e, 0x006e).rw("h46505", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0070, 0x0070).w(this, FUNC(peoplepc_state::dmapg_w));
+}
static SLOT_INTERFACE_START( peoplepc_floppies )
SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp
index e006381d1be..e199f274eb8 100644
--- a/src/mame/drivers/peplus.cpp
+++ b/src/mame/drivers/peplus.cpp
@@ -1011,63 +1011,65 @@ GFXDECODE_END
* Memory map information *
*************************/
-ADDRESS_MAP_START(peplus_state::peplus_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("prograram")
-ADDRESS_MAP_END
+void peplus_state::peplus_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().share("prograram");
+}
-ADDRESS_MAP_START(peplus_state::peplus_iomap)
+void peplus_state::peplus_iomap(address_map &map)
+{
// Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only)
- AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(peplus_cmos_w) AM_SHARE("cmos")
+ map(0x0000, 0x1fff).ram().w(this, FUNC(peplus_state::peplus_cmos_w)).share("cmos");
// CRT Controller
- AM_RANGE(0x2008, 0x2008) AM_WRITE(peplus_crtc_mode_w)
- AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w)
+ map(0x2008, 0x2008).w(this, FUNC(peplus_state::peplus_crtc_mode_w));
+ map(0x2080, 0x2080).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x2081, 0x2081).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x2083, 0x2083).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(peplus_state::peplus_crtc_display_w));
// Superboard Data
- AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("s3000_ram")
+ map(0x3000, 0x3fff).ram().share("s3000_ram");
// Sound and Dipswitches
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_device, data_w)
+ map(0x4000, 0x4000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x4004, 0x4004).portr("SW1") /* likely ay8910 input port, not direct */ .w("aysnd", FUNC(ay8910_device::data_w));
// Superboard Data
- AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("s5000_ram")
+ map(0x5000, 0x5fff).ram().share("s5000_ram");
// Background Color Latch
- AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w)
+ map(0x6000, 0x6000).r(this, FUNC(peplus_state::peplus_bgcolor_r)).w(this, FUNC(peplus_state::peplus_bgcolor_w));
// Bogus Location for Video RAM
- AM_RANGE(0x06001, 0x06400) AM_RAM AM_SHARE("videoram")
+ map(0x06001, 0x06400).ram().share("videoram");
// Superboard Data
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("s7000_ram")
+ map(0x7000, 0x7fff).ram().share("s7000_ram");
// Input Bank A, Output Bank C
- AM_RANGE(0x8000, 0x8000) AM_READ(peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w)
+ map(0x8000, 0x8000).r(this, FUNC(peplus_state::peplus_input_bank_a_r)).w(this, FUNC(peplus_state::peplus_output_bank_c_w));
// Drop Door, I2C EEPROM Writes
- AM_RANGE(0x9000, 0x9000) AM_READ(peplus_dropdoor_r) AM_WRITE(i2c_nvram_w)
+ map(0x9000, 0x9000).r(this, FUNC(peplus_state::peplus_dropdoor_r)).w(this, FUNC(peplus_state::i2c_nvram_w));
// Input Banks B & C, Output Bank B
- AM_RANGE(0xa000, 0xa000) AM_READ(peplus_input0_r) AM_WRITE(peplus_output_bank_b_w)
+ map(0xa000, 0xa000).r(this, FUNC(peplus_state::peplus_input0_r)).w(this, FUNC(peplus_state::peplus_output_bank_b_w));
// Superboard Data
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("sb000_ram")
+ map(0xb000, 0xbfff).ram().share("sb000_ram");
// Output Bank A
- AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w)
+ map(0xc000, 0xc000).r(this, FUNC(peplus_state::peplus_watchdog_r)).w(this, FUNC(peplus_state::peplus_output_bank_a_w));
// Superboard Data
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sd000_ram")
+ map(0xd000, 0xdfff).ram().share("sd000_ram");
// DUART
- AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w)
+ map(0xe000, 0xe00f).rw(this, FUNC(peplus_state::peplus_duart_r), FUNC(peplus_state::peplus_duart_w));
// Superboard Data
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sf000_ram")
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).ram().share("sf000_ram");
+}
/*************************
diff --git a/src/mame/drivers/pes.cpp b/src/mame/drivers/pes.cpp
index 450c0c5bd66..0bb2aab1e57 100644
--- a/src/mame/drivers/pes.cpp
+++ b/src/mame/drivers/pes.cpp
@@ -223,18 +223,20 @@ void pes_state::machine_reset()
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(pes_state::i80c31_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM /* 27C64 ROM */
+void pes_state::i80c31_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom(); /* 27C64 ROM */
// AM_RANGE(0x2000, 0x3fff) AM_RAM /* 6164 8k SRAM, not populated */
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(pes_state::i80c31_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0, 0x0) AM_WRITE(rsq_wsq_w) /* /WS(0) and /RS(1) */
- AM_RANGE(0x1, 0x1) AM_READWRITE(port1_r, port1_w) /* tms5220 reads and writes */
- AM_RANGE(0x3, 0x3) AM_READWRITE(port3_r, port3_w) /* writes and reads from port 3, see top of file */
-ADDRESS_MAP_END
+void pes_state::i80c31_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0, 0x0).w(this, FUNC(pes_state::rsq_wsq_w)); /* /WS(0) and /RS(1) */
+ map(0x1, 0x1).rw(this, FUNC(pes_state::port1_r), FUNC(pes_state::port1_w)); /* tms5220 reads and writes */
+ map(0x3, 0x3).rw(this, FUNC(pes_state::port3_r), FUNC(pes_state::port3_w)); /* writes and reads from port 3, see top of file */
+}
/******************************************************************************
Input Ports
diff --git a/src/mame/drivers/pet.cpp b/src/mame/drivers/pet.cpp
index 45ee779b3d4..cb73e92d25c 100644
--- a/src/mame/drivers/pet.cpp
+++ b/src/mame/drivers/pet.cpp
@@ -884,18 +884,20 @@ WRITE8_MEMBER( cbm8296_state::write )
// ADDRESS_MAP( pet2001_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(pet_state::pet2001_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void pet_state::pet2001_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(pet_state::read), FUNC(pet_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( cbm8296_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(cbm8296_state::cbm8296_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void cbm8296_state::cbm8296_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(cbm8296_state::read), FUNC(cbm8296_state::write));
+}
diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp
index 8c18d6942c9..7cb2b7e5868 100644
--- a/src/mame/drivers/peyper.cpp
+++ b/src/mame/drivers/peyper.cpp
@@ -205,29 +205,31 @@ CUSTOM_INPUT_MEMBER(peyper_state::wolfman_replay_hs_r)
}
-ADDRESS_MAP_START(peyper_state::peyper_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x5FFF) AM_ROM
- AM_RANGE(0x6000, 0x67FF) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(peyper_state::peyper_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("i8279", i8279_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x05, 0x05) AM_DEVREAD("ay1", ay8910_device, data_r) // only read by Ator?
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x09, 0x09) AM_DEVREAD("ay2", ay8910_device, data_r) // never actually read?
- AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(sol_w)
- AM_RANGE(0x10, 0x18) AM_WRITE(lamp_w)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW0")
- AM_RANGE(0x24, 0x24) AM_READ_PORT("DSW1")
- AM_RANGE(0x28, 0x28) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x2c, 0x2c) AM_WRITE(lamp7_w)
-ADDRESS_MAP_END
+void peyper_state::peyper_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5FFF).rom();
+ map(0x6000, 0x67FF).ram().share("nvram");
+}
+
+void peyper_state::peyper_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0x04, 0x04).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x05, 0x05).r("ay1", FUNC(ay8910_device::data_r)); // only read by Ator?
+ map(0x06, 0x06).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x08, 0x08).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x09, 0x09).r("ay2", FUNC(ay8910_device::data_r)); // never actually read?
+ map(0x0a, 0x0a).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x0c, 0x0c).w(this, FUNC(peyper_state::sol_w));
+ map(0x10, 0x18).w(this, FUNC(peyper_state::lamp_w));
+ map(0x20, 0x20).portr("DSW0");
+ map(0x24, 0x24).portr("DSW1");
+ map(0x28, 0x28).portr("SYSTEM");
+ map(0x2c, 0x2c).w(this, FUNC(peyper_state::lamp7_w));
+}
static INPUT_PORTS_START( pbsonic_generic )
/* SYSTEM : port 0x28 (cpl'ed) */
diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp
index b029527f21e..dbf403c5902 100644
--- a/src/mame/drivers/pg685.cpp
+++ b/src/mame/drivers/pg685.cpp
@@ -155,75 +155,78 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(pg685_state::pg675_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0xbffff) AM_RAM
- AM_RANGE(0xf0000,0xf1fff) AM_RAM
- AM_RANGE(0xf9f00, 0xf9f01) AM_DEVREADWRITE("kbdc", i8279_device, read, write)
- AM_RANGE(0xf9f02, 0xf9f02) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0xf9f03, 0xf9f03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0xf9f04, 0xf9f04) AM_READWRITE(f9f04_r, f9f04_w)
- AM_RANGE(0xf9f06, 0xf9f07) AM_DEVREADWRITE("mainpic", pic8259_device, read, write)
- AM_RANGE(0xf9f08, 0xf9f08) AM_DEVREADWRITE("mainuart", i8251_device, data_r, data_w)
- AM_RANGE(0xf9f09, 0xf9f09) AM_DEVREADWRITE("mainuart", i8251_device, status_r, control_w)
- AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE("fdc", fd1797_device, read, write)
- AM_RANGE(0xf9f24, 0xf9f24) AM_READWRITE(f9f24_r, f9f24_w)
- AM_RANGE(0xf9f28, 0xf9f2b) AM_DEVREADWRITE("modppi1", i8255_device, read, write)
- AM_RANGE(0xf9f2c, 0xf9f2f) AM_DEVREADWRITE("modppi2", i8255_device, read, write)
- AM_RANGE(0xf9f30, 0xf9f30) AM_DEVREADWRITE("moduart", i8251_device, data_r, data_w)
- AM_RANGE(0xf9f31, 0xf9f31) AM_DEVREADWRITE("moduart", i8251_device, status_r, control_w)
- AM_RANGE(0xf9f32, 0xf9f32) AM_WRITE(f9f32_w)
- AM_RANGE(0xf9f33, 0xf9f33) AM_READ(f9f33_r)
- AM_RANGE(0xf9f40, 0xf9f5f) AM_DEVREADWRITE("rtc", mm58167_device, read, write)
- AM_RANGE(0xfa000,0xfa7ff) AM_RAM AM_SHARE ("charcopy")
- AM_RANGE(0xfb000,0xfb7ff) AM_RAM AM_SHARE ("framebuffer")
- AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pg685_state::pg685_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(pg675_mem)
- AM_RANGE(0xf9f34, 0xf9f37) AM_DEVREADWRITE("bppit", pit8253_device, read, write)
- AM_RANGE(0xf9f38, 0xf9f3b) AM_DEVREADWRITE("bpuart", mc2661_device, read, write)
- AM_RANGE(0xf9f3c, 0xf9f3d) AM_DEVREADWRITE("bppic", pic8259_device, read, write)
- AM_RANGE(0xf9f3e, 0xf9f3e) AM_WRITE(f9f3e_w)
- AM_RANGE(0xf9f70, 0xf9f77) AM_DEVREADWRITE("hdc", wd2010_device, read, write)
- AM_RANGE(0xf9f78, 0xf9f78) AM_READWRITE(f9f78_r, f9f78_w)
- AM_RANGE(0xf9f79, 0xf9f79) AM_WRITE(f9f79_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pg685_state::pg685oua12_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0xdffff) AM_RAM
- AM_RANGE(0xe0000,0xeffff) AM_RAM AM_SHARE ("framebuffer16")
- AM_RANGE(0xf0000,0xf1fff) AM_RAM
- AM_RANGE(0xf9f00, 0xf9f01) AM_DEVREADWRITE8("kbdc", i8279_device, read, write, 0xffff)
- AM_RANGE(0xf9f04, 0xf9f05) AM_READWRITE8(f9f04_r, f9f04_w, 0x00ff)
- AM_RANGE(0xf9f06, 0xf9f07) AM_DEVREADWRITE8("mainpic", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf9f08, 0xf9f09) AM_DEVREADWRITE8("mainuart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf9f08, 0xf9f09) AM_DEVREADWRITE8("mainuart", i8251_device, status_r, control_w, 0xff00)
- AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE8("fdc", fd1797_device, read, write, 0xffff)
- AM_RANGE(0xf9f24, 0xf9f25) AM_READWRITE8(f9f24_r, f9f24_w, 0x00ff)
- AM_RANGE(0xf9f28, 0xf9f2b) AM_DEVREADWRITE8("modppi1", i8255_device, read, write, 0xffff)
- AM_RANGE(0xf9f2c, 0xf9f2f) AM_DEVREADWRITE8("modppi2", i8255_device, read, write, 0xffff)
- AM_RANGE(0xf9f30, 0xf9f31) AM_DEVREADWRITE8("moduart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf9f30, 0xf9f31) AM_DEVREADWRITE8("moduart", i8251_device, status_r, control_w, 0xff00)
- AM_RANGE(0xf9f32, 0xf9f33) AM_WRITE8(f9f32_w, 0x00ff)
- AM_RANGE(0xf9f32, 0xf9f33) AM_READ8(f9f33_r, 0xff00)
- AM_RANGE(0xf9f34, 0xf9f37) AM_DEVREADWRITE8("bppit", pit8253_device, read, write, 0xffff)
- AM_RANGE(0xf9f38, 0xf9f3b) AM_DEVREADWRITE8("bpuart", mc2661_device, read, write, 0xffff)
- AM_RANGE(0xf9f3c, 0xf9f3d) AM_DEVREADWRITE8("bppic", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf9f3e, 0xf9f3f) AM_WRITE8(f9f3e_w, 0x00ff)
- AM_RANGE(0xf9f3e, 0xf9f3f) AM_READ8(f9f3f_r, 0xff00)
- AM_RANGE(0xf9f40, 0xf9f5f) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0xffff)
- AM_RANGE(0xf9f70, 0xf9f77) AM_DEVREADWRITE8("hdc", wd2010_device, read, write, 0xffff)
- AM_RANGE(0xf9f78, 0xf9f79) AM_READWRITE8(f9f78_r, f9f78_w, 0x00ff)
- AM_RANGE(0xf9f78, 0xf9f79) AM_WRITE8(f9f79_w, 0xff00)
- AM_RANGE(0xf9f80, 0xf9f81) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff)
- AM_RANGE(0xf9f80, 0xf9f81) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
- AM_RANGE(0xfc000,0xfffff) AM_RAM // BIOS RAM shadow
- AM_RANGE(0xffc000,0xffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void pg685_state::pg675_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xbffff).ram();
+ map(0xf0000, 0xf1fff).ram();
+ map(0xf9f00, 0xf9f01).rw("kbdc", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0xf9f02, 0xf9f02).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xf9f03, 0xf9f03).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xf9f04, 0xf9f04).rw(this, FUNC(pg685_state::f9f04_r), FUNC(pg685_state::f9f04_w));
+ map(0xf9f06, 0xf9f07).rw("mainpic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf9f08, 0xf9f08).rw("mainuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf9f09, 0xf9f09).rw("mainuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf9f20, 0xf9f23).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
+ map(0xf9f24, 0xf9f24).rw(this, FUNC(pg685_state::f9f24_r), FUNC(pg685_state::f9f24_w));
+ map(0xf9f28, 0xf9f2b).rw("modppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf9f2c, 0xf9f2f).rw("modppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf9f30, 0xf9f30).rw("moduart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf9f31, 0xf9f31).rw("moduart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf9f32, 0xf9f32).w(this, FUNC(pg685_state::f9f32_w));
+ map(0xf9f33, 0xf9f33).r(this, FUNC(pg685_state::f9f33_r));
+ map(0xf9f40, 0xf9f5f).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write));
+ map(0xfa000, 0xfa7ff).ram().share("charcopy");
+ map(0xfb000, 0xfb7ff).ram().share("framebuffer");
+ map(0xfc000, 0xfffff).rom().region("bios", 0);
+}
+
+void pg685_state::pg685_mem(address_map &map)
+{
+ map.unmap_value_high();
+ pg675_mem(map);
+ map(0xf9f34, 0xf9f37).rw("bppit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
+ map(0xf9f3c, 0xf9f3d).rw("bppic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf9f3e, 0xf9f3e).w(this, FUNC(pg685_state::f9f3e_w));
+ map(0xf9f70, 0xf9f77).rw("hdc", FUNC(wd2010_device::read), FUNC(wd2010_device::write));
+ map(0xf9f78, 0xf9f78).rw(this, FUNC(pg685_state::f9f78_r), FUNC(pg685_state::f9f78_w));
+ map(0xf9f79, 0xf9f79).w(this, FUNC(pg685_state::f9f79_w));
+}
+
+void pg685_state::pg685oua12_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xdffff).ram();
+ map(0xe0000, 0xeffff).ram().share("framebuffer16");
+ map(0xf0000, 0xf1fff).ram();
+ map(0xf9f00, 0xf9f01).rw("kbdc", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0xf9f04, 0xf9f04).rw(this, FUNC(pg685_state::f9f04_r), FUNC(pg685_state::f9f04_w));
+ map(0xf9f06, 0xf9f07).rw("mainpic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf9f08, 0xf9f08).rw("mainuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf9f09, 0xf9f09).rw("mainuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf9f20, 0xf9f23).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
+ map(0xf9f24, 0xf9f24).rw(this, FUNC(pg685_state::f9f24_r), FUNC(pg685_state::f9f24_w));
+ map(0xf9f28, 0xf9f2b).rw("modppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf9f2c, 0xf9f2f).rw("modppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf9f30, 0xf9f30).rw("moduart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf9f31, 0xf9f31).rw("moduart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf9f32, 0xf9f32).w(this, FUNC(pg685_state::f9f32_w));
+ map(0xf9f33, 0xf9f33).r(this, FUNC(pg685_state::f9f33_r));
+ map(0xf9f34, 0xf9f37).rw("bppit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
+ map(0xf9f3c, 0xf9f3d).rw("bppic", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf9f3e, 0xf9f3e).w(this, FUNC(pg685_state::f9f3e_w));
+ map(0xf9f3f, 0xf9f3f).r(this, FUNC(pg685_state::f9f3f_r));
+ map(0xf9f40, 0xf9f5f).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write));
+ map(0xf9f70, 0xf9f77).rw("hdc", FUNC(wd2010_device::read), FUNC(wd2010_device::write));
+ map(0xf9f78, 0xf9f78).rw(this, FUNC(pg685_state::f9f78_r), FUNC(pg685_state::f9f78_w));
+ map(0xf9f79, 0xf9f79).w(this, FUNC(pg685_state::f9f79_w));
+ map(0xf9f80, 0xf9f80).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xf9f81, 0xf9f81).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xfc000, 0xfffff).ram(); // BIOS RAM shadow
+ map(0xffc000, 0xffffff).rom().region("bios", 0);
+}
//**************************************************************************
diff --git a/src/mame/drivers/pgm.cpp b/src/mame/drivers/pgm.cpp
index 42a22df302e..9cb598b0928 100644
--- a/src/mame/drivers/pgm.cpp
+++ b/src/mame/drivers/pgm.cpp
@@ -299,53 +299,58 @@ WRITE8_MEMBER(pgm_state::z80_l3_w)
/*** Z80 (sound CPU)**********************************************************/
-ADDRESS_MAP_START(pgm_state::pgm_z80_mem)
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("z80_mainram")
-ADDRESS_MAP_END
+void pgm_state::pgm_z80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).ram().share("z80_mainram");
+}
-ADDRESS_MAP_START(pgm_state::pgm_z80_io)
- AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE("ics", ics2115_device, read, write)
- AM_RANGE(0x8100, 0x81ff) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) AM_WRITE(z80_l3_w)
- AM_RANGE(0x8200, 0x82ff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write)
- AM_RANGE(0x8400, 0x84ff) AM_DEVREADWRITE("soundlatch2", generic_latch_8_device, read, write)
-ADDRESS_MAP_END
+void pgm_state::pgm_z80_io(address_map &map)
+{
+ map(0x8000, 0x8003).rw("ics", FUNC(ics2115_device::read), FUNC(ics2115_device::write));
+ map(0x8100, 0x81ff).r(m_soundlatch3, FUNC(generic_latch_8_device::read)).w(this, FUNC(pgm_state::z80_l3_w));
+ map(0x8200, 0x82ff).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
+ map(0x8400, 0x84ff).rw("soundlatch2", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
+}
/*** 68000 (main CPU) + variants for protection devices **********************/
-ADDRESS_MAP_START(pgm_state::pgm_base_mem)
- AM_RANGE(0x700006, 0x700007) AM_WRITENOP // Watchdog?
+void pgm_state::pgm_base_mem(address_map &map)
+{
+ map(0x700006, 0x700007).nopw(); // Watchdog?
- AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_MIRROR(0x0e0000) AM_SHARE("sram") /* Main Ram */
+ map(0x800000, 0x81ffff).ram().mirror(0x0e0000).share("sram"); /* Main Ram */
- AM_RANGE(0x900000, 0x907fff) AM_MIRROR(0x0f8000) AM_READWRITE(pgm_videoram_r, pgm_videoram_w) AM_SHARE("videoram") /* IGS023 VIDEO CHIP */
- AM_RANGE(0xa00000, 0xa011ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb0ffff) AM_RAM AM_SHARE("videoregs") /* Video Regs inc. Zoom Table */
+ map(0x900000, 0x907fff).mirror(0x0f8000).rw(this, FUNC(pgm_state::pgm_videoram_r), FUNC(pgm_state::pgm_videoram_w)).share("videoram"); /* IGS023 VIDEO CHIP */
+ map(0xa00000, 0xa011ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xb00000, 0xb0ffff).ram().share("videoregs"); /* Video Regs inc. Zoom Table */
- AM_RANGE(0xc00002, 0xc00003) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0xc00002, 0xc00003) AM_WRITE(m68k_l1_w)
- AM_RANGE(0xc00004, 0xc00005) AM_DEVREADWRITE8("soundlatch2", generic_latch_8_device, read, write, 0x00ff)
- AM_RANGE(0xc00006, 0xc00007) AM_DEVREADWRITE8("rtc", v3021_device, read, write, 0x00ff)
- AM_RANGE(0xc00008, 0xc00009) AM_WRITE(z80_reset_w)
- AM_RANGE(0xc0000a, 0xc0000b) AM_WRITE(z80_ctrl_w)
- AM_RANGE(0xc0000c, 0xc0000d) AM_DEVREADWRITE8("soundlatch3", generic_latch_8_device, read, write, 0x00ff)
+ map(0xc00003, 0xc00003).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc00002, 0xc00003).w(this, FUNC(pgm_state::m68k_l1_w));
+ map(0xc00005, 0xc00005).rw("soundlatch2", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
+ map(0xc00007, 0xc00007).rw("rtc", FUNC(v3021_device::read), FUNC(v3021_device::write));
+ map(0xc00008, 0xc00009).w(this, FUNC(pgm_state::z80_reset_w));
+ map(0xc0000a, 0xc0000b).w(this, FUNC(pgm_state::z80_ctrl_w));
+ map(0xc0000d, 0xc0000d).rw(m_soundlatch3, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
- AM_RANGE(0xc08000, 0xc08001) AM_READ_PORT("P1P2")
- AM_RANGE(0xc08002, 0xc08003) AM_READ_PORT("P3P4")
- AM_RANGE(0xc08004, 0xc08005) AM_READ_PORT("Service")
- AM_RANGE(0xc08006, 0xc08007) AM_READ_PORT("DSW") AM_WRITE(pgm_coin_counter_w)
+ map(0xc08000, 0xc08001).portr("P1P2");
+ map(0xc08002, 0xc08003).portr("P3P4");
+ map(0xc08004, 0xc08005).portr("Service");
+ map(0xc08006, 0xc08007).portr("DSW").w(this, FUNC(pgm_state::pgm_coin_counter_w));
- AM_RANGE(0xc10000, 0xc1ffff) AM_READWRITE(z80_ram_r, z80_ram_w) /* Z80 Program */
-ADDRESS_MAP_END
+ map(0xc10000, 0xc1ffff).rw(this, FUNC(pgm_state::z80_ram_r), FUNC(pgm_state::z80_ram_w)); /* Z80 Program */
+}
-ADDRESS_MAP_START(pgm_state::pgm_mem)
- AM_IMPORT_FROM(pgm_base_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* BIOS ROM */
-ADDRESS_MAP_END
+void pgm_state::pgm_mem(address_map &map)
+{
+ pgm_base_mem(map);
+ map(0x000000, 0x0fffff).rom(); /* BIOS ROM */
+}
-ADDRESS_MAP_START(pgm_state::pgm_basic_mem)
- AM_IMPORT_FROM(pgm_mem)
- AM_RANGE(0x100000, 0x3fffff) AM_ROMBANK("bank1") /* Game ROM */
-ADDRESS_MAP_END
+void pgm_state::pgm_basic_mem(address_map &map)
+{
+ pgm_mem(map);
+ map(0x100000, 0x3fffff).bankr("bank1"); /* Game ROM */
+}
/*** Input Ports *************************************************************/
diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp
index 5f4de7ad041..f92f37405a5 100644
--- a/src/mame/drivers/pgm2.cpp
+++ b/src/mame/drivers/pgm2.cpp
@@ -513,88 +513,92 @@ READ32_MEMBER(pgm2_state::pio_pdsr_r)
return (module_data_r() == ASSERT_LINE ? 1 : 0) << 8; // fpga data read and status (bit 7, must be 0)
}
-ADDRESS_MAP_START(pgm2_state::pgm2_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM //AM_REGION("user1", 0x00000) // internal ROM
+void pgm2_state::pgm2_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom(); //AM_REGION("user1", 0x00000) // internal ROM
- AM_RANGE(0x02000000, 0x0200ffff) AM_RAM AM_SHARE("sram") // 'battery ram' (in CPU?)
+ map(0x02000000, 0x0200ffff).ram().share("sram"); // 'battery ram' (in CPU?)
- AM_RANGE(0x03600000, 0x036bffff) AM_READWRITE(mcu_r, mcu_w)
+ map(0x03600000, 0x036bffff).rw(this, FUNC(pgm2_state::mcu_r), FUNC(pgm2_state::mcu_w));
- AM_RANGE(0x03900000, 0x03900003) AM_READ_PORT("INPUTS0")
- AM_RANGE(0x03a00000, 0x03a00003) AM_READ_PORT("INPUTS1")
+ map(0x03900000, 0x03900003).portr("INPUTS0");
+ map(0x03a00000, 0x03a00003).portr("INPUTS1");
- AM_RANGE(0x20000000, 0x2007ffff) AM_RAM AM_SHARE("mainram")
+ map(0x20000000, 0x2007ffff).ram().share("mainram");
- AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("sp_videoram") // spriteram ('move' ram in test mode)
+ map(0x30000000, 0x30001fff).ram().share("sp_videoram"); // spriteram ('move' ram in test mode)
- AM_RANGE(0x30020000, 0x30021fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x30040000, 0x30045fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
+ map(0x30020000, 0x30021fff).ram().w(this, FUNC(pgm2_state::bg_videoram_w)).share("bg_videoram");
+ map(0x30040000, 0x30045fff).ram().w(this, FUNC(pgm2_state::fg_videoram_w)).share("fg_videoram");
- AM_RANGE(0x30060000, 0x30063fff) AM_RAM_DEVWRITE("sp_palette", palette_device, write32) AM_SHARE("sp_palette")
+ map(0x30060000, 0x30063fff).ram().w(m_sp_palette, FUNC(palette_device::write32)).share("sp_palette");
- AM_RANGE(0x30080000, 0x30081fff) AM_RAM_DEVWRITE("bg_palette", palette_device, write32) AM_SHARE("bg_palette")
+ map(0x30080000, 0x30081fff).ram().w(m_bg_palette, FUNC(palette_device::write32)).share("bg_palette");
- AM_RANGE(0x300a0000, 0x300a07ff) AM_RAM_DEVWRITE("tx_palette", palette_device, write32) AM_SHARE("tx_palette")
+ map(0x300a0000, 0x300a07ff).ram().w(m_tx_palette, FUNC(palette_device::write32)).share("tx_palette");
- AM_RANGE(0x300c0000, 0x300c01ff) AM_RAM AM_SHARE("sp_zoom") // sprite zoom table - it uploads the same data 4x, maybe xshrink,xgrow,yshrink,ygrow or just redundant mirrors
+ map(0x300c0000, 0x300c01ff).ram().share("sp_zoom"); // sprite zoom table - it uploads the same data 4x, maybe xshrink,xgrow,yshrink,ygrow or just redundant mirrors
/* linescroll ram - it clears to 0x3bf on startup which is enough bytes for 240 lines if each rowscroll value was 8 bytes, but each row is 4,
so only half of this is used? or tx can do it too (unlikely, as orl2 writes 256 lines of data) maybe just bad mem check bounds on orleg2.
It reports pass even if it fails the first byte but if the first byte passes it attempts to test 0x10000 bytes, which is far too big so
what is the real size? */
- AM_RANGE(0x300e0000, 0x300e03ff) AM_RAM AM_SHARE("lineram") AM_MIRROR(0x000fc00)
+ map(0x300e0000, 0x300e03ff).ram().share("lineram").mirror(0x000fc00);
- AM_RANGE(0x30100000, 0x301000ff) AM_READWRITE8(shareram_r, shareram_w, 0x00ff00ff)
+ map(0x30100000, 0x301000ff).rw(this, FUNC(pgm2_state::shareram_r), FUNC(pgm2_state::shareram_w)).umask32(0x00ff00ff);
- AM_RANGE(0x30120000, 0x30120003) AM_RAM AM_SHARE("bgscroll") // scroll
- AM_RANGE(0x30120008, 0x3012000b) AM_RAM AM_SHARE("fgscroll")
- AM_RANGE(0x3012000c, 0x3012000f) AM_RAM AM_SHARE("vidmode")
- AM_RANGE(0x30120014, 0x30120017) AM_WRITE16(unk30120014_w, 0xffffffff)
- AM_RANGE(0x30120018, 0x3012001b) AM_WRITE16(vbl_ack_w, 0x0000ffff)
- AM_RANGE(0x30120030, 0x30120033) AM_WRITE16(share_bank_w, 0xffff0000)
- AM_RANGE(0x30120038, 0x3012003b) AM_WRITE(sprite_encryption_w)
+ map(0x30120000, 0x30120003).ram().share("bgscroll"); // scroll
+ map(0x30120008, 0x3012000b).ram().share("fgscroll");
+ map(0x3012000c, 0x3012000f).ram().share("vidmode");
+ map(0x30120014, 0x30120017).w(this, FUNC(pgm2_state::unk30120014_w));
+ map(0x30120018, 0x30120019).w(this, FUNC(pgm2_state::vbl_ack_w));
+ map(0x30120032, 0x30120033).w(this, FUNC(pgm2_state::share_bank_w));
+ map(0x30120038, 0x3012003b).w(this, FUNC(pgm2_state::sprite_encryption_w));
// there are other 0x301200xx regs
- AM_RANGE(0x40000000, 0x40000003) AM_DEVREAD8("ymz774", ymz774_device, read, 0xffffffff) AM_DEVWRITE8("ymz774", ymz774_device, write, 0xffffffff)
+ map(0x40000000, 0x40000003).r("ymz774", FUNC(ymz774_device::read)).w("ymz774", FUNC(ymz774_device::write));
// internal IGS036 - most of them is standard ATMEL peripherals followed by custom bits
// AM_RANGE(0xfffa0000, 0xfffa00ff) TC (Timer Counter) not used, mentioned in disabled / unused code
// AM_RANGE(0xffffec00, 0xffffec7f) SMC (Static Memory Controller)
// AM_RANGE(0xffffee00, 0xffffee57) MATRIX (Bus Matrix)
- AM_RANGE(0xfffff000, 0xfffff14b) AM_DEVICE("arm_aic", arm_aic_device, regs_map)
+ map(0xfffff000, 0xfffff14b).m(m_arm_aic, FUNC(arm_aic_device::regs_map));
// AM_RANGE(0xfffff200, 0xfffff247) DBGU (Debug Unit)
// AM_RANGE(0xfffff400, 0xfffff4af) PIO (Parallel Input Output Controller)
- AM_RANGE(0xfffff430, 0xfffff437) AM_WRITENOP // often
+ map(0xfffff430, 0xfffff437).nopw(); // often
// AM_RANGE(0xfffffd00, 0xfffffd0b) RSTC (Reset Controller)
// AM_RANGE(0xfffffd20, 0xfffffd2f) RTTC (Real Time Timer)
- AM_RANGE(0xfffffd28, 0xfffffd2b) AM_READ(rtc_r)
+ map(0xfffffd28, 0xfffffd2b).r(this, FUNC(pgm2_state::rtc_r));
// AM_RANGE(0xfffffd40, 0xfffffd4b) WDTC (Watch Dog Timer)
// custom IGS036 stuff starts here
- AM_RANGE(0xfffffa08, 0xfffffa0b) AM_WRITE(encryption_do_w) // after uploading encryption? table might actually send it or enable external ROM? when read bits0-1 called FUSE 0 and 1, must be 0
- AM_RANGE(0xfffffa0c, 0xfffffa0f) AM_READ(unk_startup_r) // written 0, then 0x1c, then expected to return (result&0x180)==0x180, then written 0x7c
- AM_RANGE(0xfffffc00, 0xfffffcff) AM_READWRITE8(encryption_r, encryption_w, 0xffffffff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(pgm2_state::pgm2_rom_map)
- AM_IMPORT_FROM(pgm2_map)
- AM_RANGE(0x10000000, 0x10ffffff) AM_ROM AM_REGION("user1", 0) // external ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pgm2_state::pgm2_ram_rom_map)
- AM_IMPORT_FROM(pgm2_map)
- AM_RANGE(0x10000000, 0x101fffff) AM_RAM AM_SHARE("romboard_ram") // we should also probably decrypt writes once the encryption is enabled, but the game never writes with it turned on anyway
- AM_RANGE(0x10200000, 0x103fffff) AM_ROM AM_REGION("user1", 0) // external ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pgm2_state::pgm2_module_rom_map)
- AM_IMPORT_FROM(pgm2_rom_map)
- AM_RANGE(0x10000000, 0x107fffff) AM_WRITE16(module_rom_w, 0xffffffff)
- AM_RANGE(0x10000000, 0x1000000f) AM_READ16(module_rom_r, 0xffffffff)
- AM_RANGE(0xfffff430, 0xfffff433) AM_WRITE(pio_sodr_w)
- AM_RANGE(0xfffff434, 0xfffff437) AM_WRITE(pio_codr_w)
- AM_RANGE(0xfffff43c, 0xfffff43f) AM_READ(pio_pdsr_r)
-ADDRESS_MAP_END
+ map(0xfffffa08, 0xfffffa0b).w(this, FUNC(pgm2_state::encryption_do_w)); // after uploading encryption? table might actually send it or enable external ROM? when read bits0-1 called FUSE 0 and 1, must be 0
+ map(0xfffffa0c, 0xfffffa0f).r(this, FUNC(pgm2_state::unk_startup_r)); // written 0, then 0x1c, then expected to return (result&0x180)==0x180, then written 0x7c
+ map(0xfffffc00, 0xfffffcff).rw(this, FUNC(pgm2_state::encryption_r), FUNC(pgm2_state::encryption_w));
+}
+
+
+void pgm2_state::pgm2_rom_map(address_map &map)
+{
+ pgm2_map(map);
+ map(0x10000000, 0x10ffffff).rom().region("user1", 0); // external ROM
+}
+
+void pgm2_state::pgm2_ram_rom_map(address_map &map)
+{
+ pgm2_map(map);
+ map(0x10000000, 0x101fffff).ram().share("romboard_ram"); // we should also probably decrypt writes once the encryption is enabled, but the game never writes with it turned on anyway
+ map(0x10200000, 0x103fffff).rom().region("user1", 0); // external ROM
+}
+
+void pgm2_state::pgm2_module_rom_map(address_map &map)
+{
+ pgm2_rom_map(map);
+ map(0x10000000, 0x107fffff).w(this, FUNC(pgm2_state::module_rom_w));
+ map(0x10000000, 0x1000000f).r(this, FUNC(pgm2_state::module_rom_r));
+ map(0xfffff430, 0xfffff433).w(this, FUNC(pgm2_state::pio_sodr_w));
+ map(0xfffff434, 0xfffff437).w(this, FUNC(pgm2_state::pio_codr_w));
+ map(0xfffff43c, 0xfffff43f).r(this, FUNC(pgm2_state::pio_pdsr_r));
+}
static INPUT_PORTS_START( pgm2 )
PORT_START("INPUTS0")
diff --git a/src/mame/drivers/pgm3.cpp b/src/mame/drivers/pgm3.cpp
index 85bd95bb96c..f623db40d60 100644
--- a/src/mame/drivers/pgm3.cpp
+++ b/src/mame/drivers/pgm3.cpp
@@ -71,9 +71,10 @@ public:
void pgm3_map(address_map &map);
};
-ADDRESS_MAP_START(pgm3_state::pgm3_map)
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM
-ADDRESS_MAP_END
+void pgm3_state::pgm3_map(address_map &map)
+{
+ map(0x00000000, 0x00003fff).rom();
+}
static INPUT_PORTS_START( pgm3 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/phc25.cpp b/src/mame/drivers/phc25.cpp
index 777634b58ed..c56ae2b29c2 100644
--- a/src/mame/drivers/phc25.cpp
+++ b/src/mame/drivers/phc25.cpp
@@ -119,30 +119,32 @@ WRITE_LINE_MEMBER( phc25_state::write_centronics_busy )
/* Memory Maps */
-ADDRESS_MAP_START(phc25_state::phc25_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION(Z80_TAG, 0)
- AM_RANGE(0x6000, 0x77ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(phc25_state::phc25_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x40, 0x40) AM_READWRITE(port40_r, port40_w)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("KEY0")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("KEY1")
- AM_RANGE(0x82, 0x82) AM_READ_PORT("KEY2")
- AM_RANGE(0x83, 0x83) AM_READ_PORT("KEY3")
- AM_RANGE(0x84, 0x84) AM_READ_PORT("KEY4")
- AM_RANGE(0x85, 0x85) AM_READ_PORT("KEY5")
- AM_RANGE(0x86, 0x86) AM_READ_PORT("KEY6")
- AM_RANGE(0x87, 0x87) AM_READ_PORT("KEY7")
- AM_RANGE(0x88, 0x88) AM_READ_PORT("KEY8")
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE(AY8910_TAG, ay8910_device, data_r, data_w)
- AM_RANGE(0xc1, 0xc1) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w)
-ADDRESS_MAP_END
+void phc25_state::phc25_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5fff).rom().region(Z80_TAG, 0);
+ map(0x6000, 0x77ff).ram().share("video_ram");
+ map(0xc000, 0xffff).ram();
+}
+
+void phc25_state::phc25_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x40, 0x40).rw(this, FUNC(phc25_state::port40_r), FUNC(phc25_state::port40_w));
+ map(0x80, 0x80).portr("KEY0");
+ map(0x81, 0x81).portr("KEY1");
+ map(0x82, 0x82).portr("KEY2");
+ map(0x83, 0x83).portr("KEY3");
+ map(0x84, 0x84).portr("KEY4");
+ map(0x85, 0x85).portr("KEY5");
+ map(0x86, 0x86).portr("KEY6");
+ map(0x87, 0x87).portr("KEY7");
+ map(0x88, 0x88).portr("KEY8");
+ map(0xc0, 0xc0).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xc1, 0xc1).w(AY8910_TAG, FUNC(ay8910_device::address_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/phoenix.cpp b/src/mame/drivers/phoenix.cpp
index 6e6f9eb9caa..55a16758c89 100644
--- a/src/mame/drivers/phoenix.cpp
+++ b/src/mame/drivers/phoenix.cpp
@@ -56,38 +56,41 @@ Pleiads:
#include "speaker.h"
-ADDRESS_MAP_START(phoenix_state::phoenix_memory_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bank1") AM_WRITE(phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */
- AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w)
- AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
- AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("cust", phoenix_sound_device, control_a_w)
- AM_RANGE(0x6800, 0x6bff) AM_DEVWRITE("cust", phoenix_sound_device, control_b_w)
- AM_RANGE(0x7000, 0x73ff) AM_READ_PORT("IN0") /* IN0 or IN1 */
- AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(phoenix_state::pleiads_memory_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bank1") AM_WRITE(phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */
- AM_RANGE(0x5000, 0x53ff) AM_WRITE(pleiads_videoreg_w)
- AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
- AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("pleiads_custom", pleiads_sound_device, control_a_w)
- AM_RANGE(0x6800, 0x6bff) AM_DEVWRITE("pleiads_custom", pleiads_sound_device, control_b_w)
- AM_RANGE(0x7000, 0x73ff) AM_READ_PORT("IN0") /* IN0 or IN1 + protection */
- AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(phoenix_state::survival_memory_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bank1") AM_WRITE(phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */
- AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w)
- AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
- AM_RANGE(0x6800, 0x68ff) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x6900, 0x69ff) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x7000, 0x73ff) AM_READ(survival_input_port_0_r) /* IN0 or IN1 */
- AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */
-ADDRESS_MAP_END
+void phoenix_state::phoenix_memory_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).bankr("bank1").w(this, FUNC(phoenix_state::phoenix_videoram_w)); /* 2 pages selected by bit 0 of the video register */
+ map(0x5000, 0x53ff).w(this, FUNC(phoenix_state::phoenix_videoreg_w));
+ map(0x5800, 0x5bff).w(this, FUNC(phoenix_state::phoenix_scroll_w));
+ map(0x6000, 0x63ff).w("cust", FUNC(phoenix_sound_device::control_a_w));
+ map(0x6800, 0x6bff).w("cust", FUNC(phoenix_sound_device::control_b_w));
+ map(0x7000, 0x73ff).portr("IN0"); /* IN0 or IN1 */
+ map(0x7800, 0x7bff).portr("DSW0"); /* DSW */
+}
+
+void phoenix_state::pleiads_memory_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).bankr("bank1").w(this, FUNC(phoenix_state::phoenix_videoram_w)); /* 2 pages selected by bit 0 of the video register */
+ map(0x5000, 0x53ff).w(this, FUNC(phoenix_state::pleiads_videoreg_w));
+ map(0x5800, 0x5bff).w(this, FUNC(phoenix_state::phoenix_scroll_w));
+ map(0x6000, 0x63ff).w(m_pleiads_custom, FUNC(pleiads_sound_device::control_a_w));
+ map(0x6800, 0x6bff).w(m_pleiads_custom, FUNC(pleiads_sound_device::control_b_w));
+ map(0x7000, 0x73ff).portr("IN0"); /* IN0 or IN1 + protection */
+ map(0x7800, 0x7bff).portr("DSW0"); /* DSW */
+}
+
+void phoenix_state::survival_memory_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4fff).bankr("bank1").w(this, FUNC(phoenix_state::phoenix_videoram_w)); /* 2 pages selected by bit 0 of the video register */
+ map(0x5000, 0x53ff).w(this, FUNC(phoenix_state::phoenix_videoreg_w));
+ map(0x5800, 0x5bff).w(this, FUNC(phoenix_state::phoenix_scroll_w));
+ map(0x6800, 0x68ff).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x6900, 0x69ff).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x7000, 0x73ff).r(this, FUNC(phoenix_state::survival_input_port_0_r)); /* IN0 or IN1 */
+ map(0x7800, 0x7bff).portr("DSW0"); /* DSW */
+}
diff --git a/src/mame/drivers/photon.cpp b/src/mame/drivers/photon.cpp
index 05e195697a6..cd489014942 100644
--- a/src/mame/drivers/photon.cpp
+++ b/src/mame/drivers/photon.cpp
@@ -128,27 +128,29 @@ WRITE8_MEMBER(photon_state::_80_portc_w)
m_speaker->level_w(BIT(data,7));
}
-ADDRESS_MAP_START(photon_state::pk8000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5")
- AM_RANGE( 0x4000, 0x7fff ) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6")
- AM_RANGE( 0x8000, 0xbfff ) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7")
- AM_RANGE( 0xc000, 0xffff ) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(photon_state::pk8000_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x88, 0x88) AM_READWRITE(video_color_r, video_color_w)
- AM_RANGE(0x8c, 0x8c) AM_READ_PORT("JOY1")
- AM_RANGE(0x8d, 0x8d) AM_READ_PORT("JOY2")
- AM_RANGE(0x90, 0x90) AM_READWRITE(text_start_r, text_start_w)
- AM_RANGE(0x91, 0x91) AM_READWRITE(chargen_start_r, chargen_start_w)
- AM_RANGE(0x92, 0x92) AM_READWRITE(video_start_r, video_start_w)
- AM_RANGE(0x93, 0x93) AM_READWRITE(color_start_r, color_start_w)
- AM_RANGE(0xa0, 0xbf) AM_READWRITE(color_r, color_w)
-ADDRESS_MAP_END
+void photon_state::pk8000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankr("bank1").bankw("bank5");
+ map(0x4000, 0x7fff).bankr("bank2").bankw("bank6");
+ map(0x8000, 0xbfff).bankr("bank3").bankw("bank7");
+ map(0xc000, 0xffff).bankr("bank4").bankw("bank8");
+}
+
+void photon_state::pk8000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x84, 0x87).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x88, 0x88).rw(this, FUNC(photon_state::video_color_r), FUNC(photon_state::video_color_w));
+ map(0x8c, 0x8c).portr("JOY1");
+ map(0x8d, 0x8d).portr("JOY2");
+ map(0x90, 0x90).rw(this, FUNC(photon_state::text_start_r), FUNC(photon_state::text_start_w));
+ map(0x91, 0x91).rw(this, FUNC(photon_state::chargen_start_r), FUNC(photon_state::chargen_start_w));
+ map(0x92, 0x92).rw(this, FUNC(photon_state::video_start_r), FUNC(photon_state::video_start_w));
+ map(0x93, 0x93).rw(this, FUNC(photon_state::color_start_r), FUNC(photon_state::color_start_w));
+ map(0xa0, 0xbf).rw(this, FUNC(photon_state::color_r), FUNC(photon_state::color_w));
+}
static INPUT_PORTS_START( photon )
PORT_START("JOY1")
diff --git a/src/mame/drivers/photon2.cpp b/src/mame/drivers/photon2.cpp
index c6c93c71f26..d68c3a713aa 100644
--- a/src/mame/drivers/photon2.cpp
+++ b/src/mame/drivers/photon2.cpp
@@ -258,21 +258,23 @@ WRITE8_MEMBER(photon2_state::misc_w)
*
*************************************/
-ADDRESS_MAP_START(photon2_state::spectrum_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x4000, 0x5aff) AM_RAM AM_SHARE("spectrum_vram")
- AM_RANGE(0x5b00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(photon2_state::spectrum_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x1f, 0x1f) AM_READ_PORT("JOY")
- AM_RANGE(0x5b, 0x5b) AM_READ_PORT("COIN") AM_WRITE(misc_w)
- AM_RANGE(0x7a, 0x7a) AM_WRITE(membank_w)
- AM_RANGE(0x7b, 0x7b) AM_WRITENOP // unknown write
- AM_RANGE(0x7e, 0x7e) AM_WRITE(membank_w)
- AM_RANGE(0xfe, 0xfe) AM_READWRITE(fe_r, fe_w)
-ADDRESS_MAP_END
+void photon2_state::spectrum_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("mainbank");
+ map(0x4000, 0x5aff).ram().share("spectrum_vram");
+ map(0x5b00, 0xffff).ram();
+}
+
+void photon2_state::spectrum_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x1f, 0x1f).portr("JOY");
+ map(0x5b, 0x5b).portr("COIN").w(this, FUNC(photon2_state::misc_w));
+ map(0x7a, 0x7a).w(this, FUNC(photon2_state::membank_w));
+ map(0x7b, 0x7b).nopw(); // unknown write
+ map(0x7e, 0x7e).w(this, FUNC(photon2_state::membank_w));
+ map(0xfe, 0xfe).rw(this, FUNC(photon2_state::fe_r), FUNC(photon2_state::fe_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/photoply.cpp b/src/mame/drivers/photoply.cpp
index 4585ea985c9..b98a52b4536 100644
--- a/src/mame/drivers/photoply.cpp
+++ b/src/mame/drivers/photoply.cpp
@@ -190,37 +190,39 @@ WRITE8_MEMBER(photoply_state::eeprom_w)
// Bits 4-7 are set for some writes, but may do nothing?
}
-ADDRESS_MAP_START(photoply_state::photoply_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, mem_r, mem_w, 0xffffffff)
+void photoply_state::photoply_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(cirrus_gd5446_device::mem_r), FUNC(cirrus_gd5446_device::mem_w));
// AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0)
// AM_RANGE(0x000c8000, 0x000cffff) AM_RAM AM_REGION("ex_bios", 0)
- AM_RANGE(0x000c0000, 0x000fffff) AM_READWRITE8(bios_r,bios_w,0xffffffff)
- AM_RANGE(0x00100000, 0x07ffffff) AM_RAM // 64MB RAM, guess!
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+ map(0x000c0000, 0x000fffff).rw(this, FUNC(photoply_state::bios_r), FUNC(photoply_state::bios_w));
+ map(0x00100000, 0x07ffffff).ram(); // 64MB RAM, guess!
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0);
+}
-ADDRESS_MAP_START(photoply_state::photoply_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00eb) AM_NOP
+void photoply_state::photoply_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e8, 0x00eb).noprw();
- AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x0200, 0x0203) AM_WRITE8(eeprom_w, 0x00ff0000)
+ map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x0202, 0x0202).w(this, FUNC(photoply_state::eeprom_w));
// AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2
- AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1)
+ map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
// AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, port_03d0_r, port_03d0_w, 0xffffffff)
+ map(0x03b0, 0x03bf).rw("vga", FUNC(cirrus_gd5446_device::port_03b0_r), FUNC(cirrus_gd5446_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(cirrus_gd5446_device::port_03c0_r), FUNC(cirrus_gd5446_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(cirrus_gd5446_device::port_03d0_r), FUNC(cirrus_gd5446_device::port_03d0_w));
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1)
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
-ADDRESS_MAP_END
+}
#define AT_KEYB_HELPER(bit, text, key1) \
PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1)
diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp
index 6dbb0198fff..c4d63a902b2 100644
--- a/src/mame/drivers/phunsy.cpp
+++ b/src/mame/drivers/phunsy.cpp
@@ -89,24 +89,27 @@ READ_LINE_MEMBER(phunsy_state::cass_r)
return (m_cass->input() > 0.03) ? 0 : 1;
}
-ADDRESS_MAP_START(phunsy_state::phunsy_mem)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x0800, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram") // Video RAM
- AM_RANGE(0x1800, 0x1fff) AM_READ_BANK("bankru") AM_WRITE_BANK("bankwu") // Banked RAM/ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bankq") // Banked RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(phunsy_state::phunsy_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(phunsy_state::phunsy_data)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_WRITE(phunsy_ctrl_w)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(phunsy_data_r, phunsy_data_w)
-ADDRESS_MAP_END
+void phunsy_state::phunsy_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom().region("roms", 0);
+ map(0x0800, 0x0fff).ram();
+ map(0x1000, 0x17ff).ram().share("videoram"); // Video RAM
+ map(0x1800, 0x1fff).bankr("bankru").bankw("bankwu"); // Banked RAM/ROM
+ map(0x2000, 0x3fff).ram();
+ map(0x4000, 0x7fff).bankrw("bankq"); // Banked RAM
+}
+
+void phunsy_state::phunsy_io(address_map &map)
+{
+ map.unmap_value_high();
+}
+
+void phunsy_state::phunsy_data(address_map &map)
+{
+ map.unmap_value_high();
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(this, FUNC(phunsy_state::phunsy_ctrl_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(phunsy_state::phunsy_data_r), FUNC(phunsy_state::phunsy_data_w));
+}
WRITE8_MEMBER( phunsy_state::phunsy_ctrl_w )
diff --git a/src/mame/drivers/picno.cpp b/src/mame/drivers/picno.cpp
index 74a88951399..6b67a51aa59 100644
--- a/src/mame/drivers/picno.cpp
+++ b/src/mame/drivers/picno.cpp
@@ -48,16 +48,18 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(picno_state::mem_map)
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0) // 32kb internal rom
- AM_RANGE(0x0fb80, 0x0ff7f) AM_RAM // internal ram
- AM_RANGE(0x0ff80, 0x0ffff) // internal controls
- AM_RANGE(0x10000, 0x8ffff) AM_ROM AM_REGION("roms", 0x8000) // guess
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(picno_state::io_map)
+void picno_state::mem_map(address_map &map)
+{
+ map(0x00000, 0x07fff).rom().region("roms", 0); // 32kb internal rom
+ map(0x0fb80, 0x0ff7f).ram(); // internal ram
+ map(0x0ff80, 0x0ffff); // internal controls
+ map(0x10000, 0x8ffff).rom().region("roms", 0x8000); // guess
+}
+
+void picno_state::io_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( picno )
INPUT_PORTS_END
diff --git a/src/mame/drivers/piggypas.cpp b/src/mame/drivers/piggypas.cpp
index 78cce2bd33c..8350628195c 100644
--- a/src/mame/drivers/piggypas.cpp
+++ b/src/mame/drivers/piggypas.cpp
@@ -116,24 +116,27 @@ WRITE8_MEMBER(piggypas_state::lcd_control_w)
}
}
-ADDRESS_MAP_START(piggypas_state::piggypas_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(piggypas_state::piggypas_io)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("hd44780", hd44780_device, write)
- AM_RANGE(0x1802, 0x1803) AM_DEVREAD("hd44780", hd44780_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(piggypas_state::fidlstix_io)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x1800, 0x1800) AM_WRITENOP // input matrix scan?
-ADDRESS_MAP_END
+void piggypas_state::piggypas_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
+
+void piggypas_state::piggypas_io(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1800, 0x1801).w(m_hd44780, FUNC(hd44780_device::write));
+ map(0x1802, 0x1803).r(m_hd44780, FUNC(hd44780_device::read));
+}
+
+void piggypas_state::fidlstix_io(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x0800, 0x0803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1800, 0x1800).nopw(); // input matrix scan?
+}
INPUT_CHANGED_MEMBER(piggypas_state::ball_sensor)
diff --git a/src/mame/drivers/pimps.cpp b/src/mame/drivers/pimps.cpp
index 976bdf6804d..6d4e7dda22b 100644
--- a/src/mame/drivers/pimps.cpp
+++ b/src/mame/drivers/pimps.cpp
@@ -91,19 +91,21 @@ private:
};
-ADDRESS_MAP_START(pimps_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pimps_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void pimps_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).ram();
+ map(0xf000, 0xffff).rom().region("roms", 0);
+}
+
+void pimps_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xf0, 0xf0).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf1, 0xf1).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xf2, 0xf2).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf3, 0xf3).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( pimps )
diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp
index 1400529fcf0..17cc793e586 100644
--- a/src/mame/drivers/pinball2k.cpp
+++ b/src/mame/drivers/pinball2k.cpp
@@ -475,28 +475,30 @@ void pinball2k_state::cx5510_pci_w(int function, int reg, uint32_t data, uint32_
/*****************************************************************************/
-ADDRESS_MAP_START(pinball2k_state::mediagx_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x000a0000, 0x000affff) AM_RAM
- AM_RANGE(0x000b0000, 0x000b7fff) AM_RAM AM_SHARE("cga_ram")
- AM_RANGE(0x000c0000, 0x000fffff) AM_RAM AM_SHARE("bios_ram")
- AM_RANGE(0x00100000, 0x00ffffff) AM_RAM
- AM_RANGE(0x40008000, 0x400080ff) AM_READWRITE(biu_ctrl_r, biu_ctrl_w)
- AM_RANGE(0x40008300, 0x400083ff) AM_READWRITE(disp_ctrl_r, disp_ctrl_w)
- AM_RANGE(0x40008400, 0x400084ff) AM_READWRITE(memory_ctrl_r, memory_ctrl_w)
- AM_RANGE(0x40800000, 0x40bfffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pinball2k_state::mediagx_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x0020, 0x0023) AM_READWRITE8(io20_r, io20_w, 0xffff0000)
- AM_RANGE(0x00e8, 0x00eb) AM_NOP // I/O delay port
- AM_RANGE(0x0378, 0x037b) AM_READWRITE(parallel_port_r, parallel_port_w)
- AM_RANGE(0x0400, 0x0403) AM_READWRITE(port400_r, port400_w)
- AM_RANGE(0x0800, 0x0803) AM_READWRITE(port800_r, port800_w)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+void pinball2k_state::mediagx_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram().share("main_ram");
+ map(0x000a0000, 0x000affff).ram();
+ map(0x000b0000, 0x000b7fff).ram().share("cga_ram");
+ map(0x000c0000, 0x000fffff).ram().share("bios_ram");
+ map(0x00100000, 0x00ffffff).ram();
+ map(0x40008000, 0x400080ff).rw(this, FUNC(pinball2k_state::biu_ctrl_r), FUNC(pinball2k_state::biu_ctrl_w));
+ map(0x40008300, 0x400083ff).rw(this, FUNC(pinball2k_state::disp_ctrl_r), FUNC(pinball2k_state::disp_ctrl_w));
+ map(0x40008400, 0x400084ff).rw(this, FUNC(pinball2k_state::memory_ctrl_r), FUNC(pinball2k_state::memory_ctrl_w));
+ map(0x40800000, 0x40bfffff).ram().share("vram");
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void pinball2k_state::mediagx_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x0022, 0x0023).rw(this, FUNC(pinball2k_state::io20_r), FUNC(pinball2k_state::io20_w));
+ map(0x00e8, 0x00eb).noprw(); // I/O delay port
+ map(0x0378, 0x037b).rw(this, FUNC(pinball2k_state::parallel_port_r), FUNC(pinball2k_state::parallel_port_w));
+ map(0x0400, 0x0403).rw(this, FUNC(pinball2k_state::port400_r), FUNC(pinball2k_state::port400_w));
+ map(0x0800, 0x0803).rw(this, FUNC(pinball2k_state::port800_r), FUNC(pinball2k_state::port800_w));
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
/*****************************************************************************/
@@ -590,9 +592,10 @@ void pinball2k_state::machine_reset()
m_maincpu->reset();
}
-ADDRESS_MAP_START(pinball2k_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void pinball2k_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(pinball2k_state::mediagx)
diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp
index 16341198293..9462300868e 100644
--- a/src/mame/drivers/pingpong.cpp
+++ b/src/mame/drivers/pingpong.cpp
@@ -89,43 +89,45 @@ TIMER_DEVICE_CALLBACK_MEMBER(pingpong_state::merlinmm_interrupt)
}
}
-ADDRESS_MAP_START(pingpong_state::pingpong_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pingpong_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pingpong_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9002) AM_RAM
- AM_RANGE(0x9003, 0x9052) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9053, 0x97ff) AM_RAM
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa880, 0xa880) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa900, 0xa900) AM_READ_PORT("DSW1")
- AM_RANGE(0xa980, 0xa980) AM_READ_PORT("DSW2")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w) /* coin counters + irq enables */
- AM_RANGE(0xa200, 0xa200) AM_WRITENOP /* SN76496 data latch */
- AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("snsnd", sn76496_device, write) /* trigger read */
- AM_RANGE(0xa600, 0xa600) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pingpong_state::merlinmm_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x5400, 0x57ff) AM_RAM
- AM_RANGE(0x6000, 0x6007) AM_WRITENOP /* solenoid writes */
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN4")
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pingpong_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pingpong_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9002) AM_RAM
- AM_RANGE(0x9003, 0x9052) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9053, 0x97ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w) /* irq enables */
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa080, 0xa080) AM_READ_PORT("IN1")
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN2")
- AM_RANGE(0xa180, 0xa180) AM_READ_PORT("IN3")
- AM_RANGE(0xa200, 0xa200) AM_WRITENOP /* SN76496 data latch */
- AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("snsnd", sn76496_device, write) /* trigger read */
- AM_RANGE(0xa600, 0xa600) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void pingpong_state::pingpong_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(pingpong_state::pingpong_colorram_w)).share("colorram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(pingpong_state::pingpong_videoram_w)).share("videoram");
+ map(0x9000, 0x9002).ram();
+ map(0x9003, 0x9052).ram().share("spriteram");
+ map(0x9053, 0x97ff).ram();
+ map(0xa800, 0xa800).portr("SYSTEM");
+ map(0xa880, 0xa880).portr("INPUTS");
+ map(0xa900, 0xa900).portr("DSW1");
+ map(0xa980, 0xa980).portr("DSW2");
+ map(0xa000, 0xa000).w(this, 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(0xa600, 0xa600).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
+
+void pingpong_state::merlinmm_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x5000, 0x53ff).ram().share("nvram");
+ map(0x5400, 0x57ff).ram();
+ map(0x6000, 0x6007).nopw(); /* solenoid writes */
+ map(0x7000, 0x7000).portr("IN4");
+ map(0x8000, 0x83ff).ram().w(this, FUNC(pingpong_state::pingpong_colorram_w)).share("colorram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(pingpong_state::pingpong_videoram_w)).share("videoram");
+ map(0x9000, 0x9002).ram();
+ map(0x9003, 0x9052).ram().share("spriteram");
+ map(0x9053, 0x97ff).ram();
+ map(0xa000, 0xa000).w(this, FUNC(pingpong_state::coin_w)); /* irq enables */
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa080, 0xa080).portr("IN1");
+ 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(0xa600, 0xa600).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
diff --git a/src/mame/drivers/pinkiri8.cpp b/src/mame/drivers/pinkiri8.cpp
index 5b3d02d4dba..fe886b5ba1b 100644
--- a/src/mame/drivers/pinkiri8.cpp
+++ b/src/mame/drivers/pinkiri8.cpp
@@ -376,12 +376,13 @@ uint32_t pinkiri8_state::screen_update_pinkiri8(screen_device &screen, bitmap_in
return 0;
}
-ADDRESS_MAP_START(pinkiri8_state::pinkiri8_map)
- AM_RANGE(0x00000, 0x0bfff) AM_ROM
- AM_RANGE(0x0c000, 0x0dfff) AM_RAM
- AM_RANGE(0x0e000, 0x0ffff) AM_ROM
- AM_RANGE(0x10000, 0x1ffff) AM_ROM
-ADDRESS_MAP_END
+void pinkiri8_state::pinkiri8_map(address_map &map)
+{
+ map(0x00000, 0x0bfff).rom();
+ map(0x0c000, 0x0dfff).ram();
+ map(0x0e000, 0x0ffff).rom();
+ map(0x10000, 0x1ffff).rom();
+}
WRITE8_MEMBER(pinkiri8_state::output_regs_w)
{
@@ -461,42 +462,43 @@ READ8_MEMBER(pinkiri8_state::mux_p1_r)
return 0xff;
}
-ADDRESS_MAP_START(pinkiri8_state::pinkiri8_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x3f) AM_RAM //Z180 internal I/O
- AM_RANGE(0x60, 0x60) AM_WRITE(output_regs_w)
- AM_RANGE(0x80, 0x83) AM_WRITE(pinkiri8_vram_w)
-
- AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write) //correct?
- AM_RANGE(0xb0, 0xb0) AM_WRITE(mux_w) //mux
- AM_RANGE(0xb0, 0xb0) AM_READ(mux_p2_r) // mux inputs
- AM_RANGE(0xb1, 0xb1) AM_READ(mux_p1_r) // mux inputs
- AM_RANGE(0xb2, 0xb2) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW1")
- AM_RANGE(0xf9, 0xf9) AM_READ_PORT("DSW2")
- AM_RANGE(0xfa, 0xfa) AM_READ_PORT("DSW3")
- AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW4")
+void pinkiri8_state::pinkiri8_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).ram(); //Z180 internal I/O
+ map(0x60, 0x60).w(this, FUNC(pinkiri8_state::output_regs_w));
+ map(0x80, 0x83).w(this, FUNC(pinkiri8_state::pinkiri8_vram_w));
+
+ map(0xa0, 0xa0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //correct?
+ map(0xb0, 0xb0).w(this, FUNC(pinkiri8_state::mux_w)); //mux
+ map(0xb0, 0xb0).r(this, FUNC(pinkiri8_state::mux_p2_r)); // mux inputs
+ map(0xb1, 0xb1).r(this, FUNC(pinkiri8_state::mux_p1_r)); // mux inputs
+ map(0xb2, 0xb2).portr("SYSTEM");
+ map(0xf8, 0xf8).portr("DSW1");
+ map(0xf9, 0xf9).portr("DSW2");
+ map(0xfa, 0xfa).portr("DSW3");
+ map(0xfb, 0xfb).portr("DSW4");
/* Wing custom sound chip, same as Lucky Girl Z180 */
- AM_RANGE(0xc3, 0xc3) AM_WRITENOP
- AM_RANGE(0xc7, 0xc7) AM_WRITENOP
- AM_RANGE(0xcb, 0xcb) AM_WRITENOP
- AM_RANGE(0xcf, 0xcf) AM_WRITENOP
+ map(0xc3, 0xc3).nopw();
+ map(0xc7, 0xc7).nopw();
+ map(0xcb, 0xcb).nopw();
+ map(0xcf, 0xcf).nopw();
- AM_RANGE(0xd3, 0xd3) AM_WRITENOP
- AM_RANGE(0xd7, 0xd7) AM_WRITENOP
- AM_RANGE(0xdb, 0xdb) AM_WRITENOP
- AM_RANGE(0xdf, 0xdf) AM_WRITENOP
+ map(0xd3, 0xd3).nopw();
+ map(0xd7, 0xd7).nopw();
+ map(0xdb, 0xdb).nopw();
+ map(0xdf, 0xdf).nopw();
- AM_RANGE(0xe3, 0xe3) AM_WRITENOP
- AM_RANGE(0xe7, 0xe7) AM_WRITENOP
- AM_RANGE(0xeb, 0xeb) AM_WRITENOP
- AM_RANGE(0xef, 0xef) AM_WRITENOP
+ map(0xe3, 0xe3).nopw();
+ map(0xe7, 0xe7).nopw();
+ map(0xeb, 0xeb).nopw();
+ map(0xef, 0xef).nopw();
- AM_RANGE(0xf3, 0xf3) AM_WRITENOP
- AM_RANGE(0xf7, 0xf7) AM_WRITENOP
+ map(0xf3, 0xf3).nopw();
+ map(0xf7, 0xf7).nopw();
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( base_inputs )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/pipbug.cpp b/src/mame/drivers/pipbug.cpp
index b0464148490..6be0cb7708f 100644
--- a/src/mame/drivers/pipbug.cpp
+++ b/src/mame/drivers/pipbug.cpp
@@ -68,16 +68,18 @@ WRITE8_MEMBER( pipbug_state::pipbug_ctrl_w )
// 0x80 is written here - not connected in the baby 2650
}
-ADDRESS_MAP_START(pipbug_state::pipbug_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x03ff) AM_ROM
- AM_RANGE( 0x0400, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void pipbug_state::pipbug_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x7fff).ram();
+}
-ADDRESS_MAP_START(pipbug_state::pipbug_data)
+void pipbug_state::pipbug_data(address_map &map)
+{
// ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_WRITE(pipbug_ctrl_w)
-ADDRESS_MAP_END
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(this, FUNC(pipbug_state::pipbug_ctrl_w));
+}
/* Input ports */
static INPUT_PORTS_START( pipbug )
diff --git a/src/mame/drivers/pipedrm.cpp b/src/mame/drivers/pipedrm.cpp
index ca85fcff707..f8f54207b0e 100644
--- a/src/mame/drivers/pipedrm.cpp
+++ b/src/mame/drivers/pipedrm.cpp
@@ -252,26 +252,28 @@ READ8_MEMBER(pipedrm_state::pending_command_r )
*
*************************************/
-ADDRESS_MAP_START(pipedrm_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xd000, 0xffff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void pipedrm_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd000, 0xffff).rw(this, FUNC(pipedrm_state::fromance_videoram_r), FUNC(pipedrm_state::fromance_videoram_w)).share("videoram");
+}
-ADDRESS_MAP_START(pipedrm_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x21, 0x21) AM_READ_PORT("P2") AM_WRITE(pipedrm_bankswitch_w)
- AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w)
- AM_RANGE(0x22, 0x22) AM_READ_PORT("DSW1")
- AM_RANGE(0x23, 0x23) AM_READ_PORT("DSW2")
- AM_RANGE(0x24, 0x24) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x25, 0x25) AM_READ(pending_command_r)
-ADDRESS_MAP_END
+void pipedrm_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write));
+ map(0x20, 0x20).portr("P1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x21, 0x21).portr("P2").w(this, FUNC(pipedrm_state::pipedrm_bankswitch_w));
+ map(0x22, 0x25).w(this, FUNC(pipedrm_state::fromance_scroll_w));
+ map(0x22, 0x22).portr("DSW1");
+ map(0x23, 0x23).portr("DSW2");
+ map(0x24, 0x24).portr("SYSTEM");
+ map(0x25, 0x25).r(this, FUNC(pipedrm_state::pending_command_r));
+}
@@ -281,28 +283,31 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(pipedrm_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
+void pipedrm_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank2");
+}
-ADDRESS_MAP_START(pipedrm_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x04) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0x16, 0x16) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x17, 0x17) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+void pipedrm_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x04, 0x04).w(this, FUNC(pipedrm_state::sound_bankswitch_w));
+ map(0x16, 0x16).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x17, 0x17).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
-ADDRESS_MAP_START(pipedrm_state::hatris_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x08) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x05, 0x05) AM_READ(pending_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+void pipedrm_state::hatris_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x08).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x05, 0x05).r(this, FUNC(pipedrm_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
diff --git a/src/mame/drivers/pipeline.cpp b/src/mame/drivers/pipeline.cpp
index 6476f3a16c1..e35a6e458f5 100644
--- a/src/mame/drivers/pipeline.cpp
+++ b/src/mame/drivers/pipeline.cpp
@@ -222,28 +222,31 @@ WRITE8_MEMBER(pipeline_state::protection_w)
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
-ADDRESS_MAP_START(pipeline_state::cpu0_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x97ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1")
- AM_RANGE(0x9800, 0xa7ff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2")
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xb830, 0xb830) AM_NOP
- AM_RANGE(0xb840, 0xb840) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pipeline_state::cpu1_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pipeline_state::sound_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x06, 0x07) AM_NOP
-ADDRESS_MAP_END
+void pipeline_state::cpu0_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x97ff).ram().w(this, FUNC(pipeline_state::vram1_w)).share("vram1");
+ map(0x9800, 0xa7ff).ram().w(this, FUNC(pipeline_state::vram2_w)).share("vram2");
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb830, 0xb830).noprw();
+ map(0xb840, 0xb840).noprw();
+}
+
+void pipeline_state::cpu1_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe003).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void pipeline_state::sound_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x06, 0x07).noprw();
+}
WRITE8_MEMBER(pipeline_state::mcu_portA_w)
{
diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp
index ace366b6f0a..c0834e08188 100644
--- a/src/mame/drivers/pirates.cpp
+++ b/src/mame/drivers/pirates.cpp
@@ -153,25 +153,26 @@ CUSTOM_INPUT_MEMBER(pirates_state::prot_r)
/* Memory Maps */
-ADDRESS_MAP_START(pirates_state::pirates_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // main ram
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM")
+void pirates_state::pirates_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram(); // main ram
+ map(0x300000, 0x300001).portr("INPUTS");
+ map(0x400000, 0x400001).portr("SYSTEM");
// AM_RANGE(0x500000, 0x5007ff) AM_RAM
- AM_RANGE(0x500000, 0x5007ff) AM_WRITEONLY AM_SHARE("spriteram")
+ map(0x500000, 0x5007ff).writeonly().share("spriteram");
// AM_RANGE(0x500800, 0x50080f) AM_WRITENOP
- AM_RANGE(0x600000, 0x600001) AM_WRITE(out_w)
- AM_RANGE(0x700000, 0x700001) AM_WRITEONLY AM_SHARE("scroll") // scroll reg
- AM_RANGE(0x800000, 0x803fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x900000, 0x90017f) AM_RAM // more of tilemaps ?
- AM_RANGE(0x900180, 0x90137f) AM_RAM_WRITE(tx_tileram_w) AM_SHARE("tx_tileram")
- AM_RANGE(0x901380, 0x902a7f) AM_RAM_WRITE(fg_tileram_w) AM_SHARE("fg_tileram")
+ map(0x600000, 0x600001).w(this, FUNC(pirates_state::out_w));
+ map(0x700000, 0x700001).writeonly().share("scroll"); // scroll reg
+ map(0x800000, 0x803fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x900000, 0x90017f).ram(); // more of tilemaps ?
+ map(0x900180, 0x90137f).ram().w(this, FUNC(pirates_state::tx_tileram_w)).share("tx_tileram");
+ map(0x901380, 0x902a7f).ram().w(this, FUNC(pirates_state::fg_tileram_w)).share("fg_tileram");
// AM_RANGE(0x902580, 0x902a7f) AM_RAM // more of tilemaps ?
- AM_RANGE(0x902a80, 0x904187) AM_RAM_WRITE(bg_tileram_w) AM_SHARE("bg_tileram")
+ map(0x902a80, 0x904187).ram().w(this, FUNC(pirates_state::bg_tileram_w)).share("bg_tileram");
// AM_RANGE(0x903c80, 0x904187) AM_RAM // more of tilemaps ?
- AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xa00001, 0xa00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp
index 8d463ce7344..40ab75dc84e 100644
--- a/src/mame/drivers/piratesh.cpp
+++ b/src/mame/drivers/piratesh.cpp
@@ -383,34 +383,35 @@ WRITE16_MEMBER(piratesh_state::control3_w)
}
-ADDRESS_MAP_START(piratesh_state::piratesh_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x084000, 0x087fff) AM_RAM
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CRTC
- AM_RANGE(0x180000, 0x18003f) AM_DEVWRITE("k056832", k056832_device, word_w) // TILEMAP
- AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES
- AM_RANGE(0x290000, 0x29000f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES
- AM_RANGE(0x290010, 0x29001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) // SPRITES
- AM_RANGE(0x2a0000, 0x2a0fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r, k053247_word_w) // SPRITES
- AM_RANGE(0x2a1000, 0x2a3fff) AM_WRITENOP
- AM_RANGE(0x2b0000, 0x2b000f) AM_DEVREADWRITE("k053250", k053250ps_device, reg_r, reg_w) // LVC
- AM_RANGE(0x300000, 0x3000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
- AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0")
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1")
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW1")
- AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW2")
- AM_RANGE(0x400008, 0x400009) AM_READ_PORT("SPECIAL")
- AM_RANGE(0x40000c, 0x40000d) AM_WRITE(control1_w)
- AM_RANGE(0x400010, 0x400011) AM_WRITE(control2_w)
- AM_RANGE(0x400014, 0x400015) AM_WRITE(control3_w)
- AM_RANGE(0x500000, 0x50ffff) AM_READ(K056832_rom_r) // VRAM ROM
- AM_RANGE(0x580000, 0x581fff) AM_DEVREAD("k053250", k053250ps_device, rom_r) // LVC ROM access
- AM_RANGE(0x600000, 0x6004ff) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0xff00) // SOUND
- AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // TILEMAP
- AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("k053250", k053250ps_device, ram_r, ram_w) // LVC
-ADDRESS_MAP_END
+void piratesh_state::piratesh_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).ram().share("nvram");
+ map(0x084000, 0x087fff).ram();
+ map(0x100000, 0x10001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CRTC
+ map(0x180000, 0x18003f).w(m_k056832, FUNC(k056832_device::word_w)); // TILEMAP
+ map(0x280000, 0x280007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // SPRITES
+ map(0x290000, 0x29000f).r(m_k055673, FUNC(k055673_device::k055673_ps_rom_word_r)); // SPRITES
+ map(0x290010, 0x29001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); // SPRITES
+ map(0x2a0000, 0x2a0fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w)); // SPRITES
+ map(0x2a1000, 0x2a3fff).nopw();
+ map(0x2b0000, 0x2b000f).rw(m_k053250, FUNC(k053250ps_device::reg_r), FUNC(k053250ps_device::reg_w)); // LVC
+ map(0x300000, 0x3000ff).w(m_k055555, FUNC(k055555_device::K055555_word_w));
+ map(0x380000, 0x381fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400001).portr("IN0");
+ map(0x400002, 0x400003).portr("IN1");
+ map(0x400004, 0x400005).portr("DSW1");
+ map(0x400006, 0x400007).portr("DSW2");
+ map(0x400008, 0x400009).portr("SPECIAL");
+ map(0x40000c, 0x40000d).w(this, FUNC(piratesh_state::control1_w));
+ map(0x400010, 0x400011).w(this, FUNC(piratesh_state::control2_w));
+ map(0x400014, 0x400015).w(this, FUNC(piratesh_state::control3_w));
+ map(0x500000, 0x50ffff).r(this, FUNC(piratesh_state::K056832_rom_r)); // VRAM ROM
+ map(0x580000, 0x581fff).r(m_k053250, FUNC(k053250ps_device::rom_r)); // LVC ROM access
+ map(0x600000, 0x6004ff).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00); // SOUND
+ map(0x680000, 0x681fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // TILEMAP
+ map(0x700000, 0x703fff).rw(m_k053250, FUNC(k053250ps_device::ram_r), FUNC(k053250ps_device::ram_w)); // LVC
+}
WRITE_LINE_MEMBER(piratesh_state::k054539_nmi_gen)
diff --git a/src/mame/drivers/pitagjr.cpp b/src/mame/drivers/pitagjr.cpp
index 4ffa23cb47f..e3118280373 100644
--- a/src/mame/drivers/pitagjr.cpp
+++ b/src/mame/drivers/pitagjr.cpp
@@ -177,11 +177,12 @@ public:
};
-ADDRESS_MAP_START(pitagjr_state::pitajr_mem)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_ROM // boot ROM ???
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
-ADDRESS_MAP_END
+void pitagjr_state::pitajr_mem(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x1000, 0x1fff).rom(); // boot ROM ???
+ map(0x2000, 0x3fff).bankr("rombank");
+}
/* Input ports */
INPUT_PORTS_START( pitajr )
diff --git a/src/mame/drivers/pitnrun.cpp b/src/mame/drivers/pitnrun.cpp
index 49217973600..a805e75d507 100644
--- a/src/mame/drivers/pitnrun.cpp
+++ b/src/mame/drivers/pitnrun.cpp
@@ -105,50 +105,54 @@ WRITE_LINE_MEMBER(pitnrun_state::vflip_w)
flip_screen_y_set(state);
}
-ADDRESS_MAP_START(pitnrun_state::pitnrun_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa800, 0xa807) AM_DEVWRITE("noiselatch", ls259_device, write_d0) /* Analog Sound */
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w)
- AM_RANGE(0xc802, 0xc802) AM_WRITE(scroll_y_w)
+void pitnrun_state::pitnrun_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8fff).ram().w(this, FUNC(pitnrun_state::videoram_w)).share("videoram");
+ map(0x9000, 0x9fff).ram().w(this, FUNC(pitnrun_state::videoram2_w)).share("videoram2");
+ map(0xa000, 0xa0ff).ram().share("spriteram");
+ map(0xa800, 0xa800).portr("SYSTEM");
+ map(0xa800, 0xa807).w("noiselatch", FUNC(ls259_device::write_d0)); /* Analog Sound */
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).portr("INPUTS").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc800, 0xc801).w(this, FUNC(pitnrun_state::scroll_w));
+ map(0xc802, 0xc802).w(this, FUNC(pitnrun_state::scroll_y_w));
//AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w)
- AM_RANGE(0xc805, 0xc805) AM_WRITE(h_heed_w)
- AM_RANGE(0xc806, 0xc806) AM_WRITE(v_heed_w)
- AM_RANGE(0xc807, 0xc807) AM_WRITE(ha_w)
+ map(0xc805, 0xc805).w(this, FUNC(pitnrun_state::h_heed_w));
+ map(0xc806, 0xc806).w(this, FUNC(pitnrun_state::v_heed_w));
+ map(0xc807, 0xc807).w(this, FUNC(pitnrun_state::ha_w));
//AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r)
//AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r)
- AM_RANGE(0xf000, 0xf000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pitnrun_state::pitnrun_map_mcu)
- AM_IMPORT_FROM(pitnrun_map)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w)
- AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r)
- AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pitnrun_state::pitnrun_sound_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3800, 0x3bff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pitnrun_state::pitnrun_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x90, 0x96) AM_WRITENOP
- AM_RANGE(0x97, 0x97) AM_WRITENOP
- AM_RANGE(0x98, 0x98) AM_WRITENOP
-ADDRESS_MAP_END
+ map(0xf000, 0xf000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void pitnrun_state::pitnrun_map_mcu(address_map &map)
+{
+ pitnrun_map(map);
+ map(0xc804, 0xc804).w(this, FUNC(pitnrun_state::mcu_data_w));
+ map(0xd000, 0xd000).r(this, FUNC(pitnrun_state::mcu_data_r));
+ map(0xd800, 0xd800).r(this, FUNC(pitnrun_state::mcu_status_r));
+}
+
+void pitnrun_state::pitnrun_sound_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3800, 0x3bff).ram();
+}
+
+void pitnrun_state::pitnrun_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::clear_w));
+ map(0x8c, 0x8d).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8e, 0x8f).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8f, 0x8f).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x90, 0x96).nopw();
+ map(0x97, 0x97).nopw();
+ map(0x98, 0x98).nopw();
+}
static INPUT_PORTS_START( pitnrun )
diff --git a/src/mame/drivers/pk8000.cpp b/src/mame/drivers/pk8000.cpp
index fd0b0c047e8..20258322284 100644
--- a/src/mame/drivers/pk8000.cpp
+++ b/src/mame/drivers/pk8000.cpp
@@ -184,27 +184,29 @@ READ8_MEMBER(pk8000_state::joy_2_r)
return retVal;
}
-ADDRESS_MAP_START(pk8000_state::pk8000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5")
- AM_RANGE( 0x4000, 0x7fff ) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6")
- AM_RANGE( 0x8000, 0xbfff ) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7")
- AM_RANGE( 0xc000, 0xffff ) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pk8000_state::pk8000_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE(0x88, 0x88) AM_READWRITE(video_color_r, video_color_w)
- AM_RANGE(0x8c, 0x8c) AM_READ(joy_1_r)
- AM_RANGE(0x8d, 0x8d) AM_READ(joy_2_r)
- AM_RANGE(0x90, 0x90) AM_READWRITE(text_start_r, text_start_w)
- AM_RANGE(0x91, 0x91) AM_READWRITE(chargen_start_r, chargen_start_w)
- AM_RANGE(0x92, 0x92) AM_READWRITE(video_start_r, video_start_w)
- AM_RANGE(0x93, 0x93) AM_READWRITE(color_start_r, color_start_w)
- AM_RANGE(0xa0, 0xbf) AM_READWRITE(color_r, color_w)
-ADDRESS_MAP_END
+void pk8000_state::pk8000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankr("bank1").bankw("bank5");
+ map(0x4000, 0x7fff).bankr("bank2").bankw("bank6");
+ map(0x8000, 0xbfff).bankr("bank3").bankw("bank7");
+ map(0xc000, 0xffff).bankr("bank4").bankw("bank8");
+}
+
+void pk8000_state::pk8000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x84, 0x87).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x88, 0x88).rw(this, FUNC(pk8000_state::video_color_r), FUNC(pk8000_state::video_color_w));
+ map(0x8c, 0x8c).r(this, FUNC(pk8000_state::joy_1_r));
+ map(0x8d, 0x8d).r(this, FUNC(pk8000_state::joy_2_r));
+ map(0x90, 0x90).rw(this, FUNC(pk8000_state::text_start_r), FUNC(pk8000_state::text_start_w));
+ map(0x91, 0x91).rw(this, FUNC(pk8000_state::chargen_start_r), FUNC(pk8000_state::chargen_start_w));
+ map(0x92, 0x92).rw(this, FUNC(pk8000_state::video_start_r), FUNC(pk8000_state::video_start_w));
+ map(0x93, 0x93).rw(this, FUNC(pk8000_state::color_start_r), FUNC(pk8000_state::color_start_w));
+ map(0xa0, 0xbf).rw(this, FUNC(pk8000_state::color_r), FUNC(pk8000_state::color_w));
+}
/* Input ports */
static INPUT_PORTS_START( pk8000 )
diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp
index ee56c09543c..1e0221916a1 100644
--- a/src/mame/drivers/pk8020.cpp
+++ b/src/mame/drivers/pk8020.cpp
@@ -23,13 +23,15 @@
#include "speaker.h"
/* Address maps */
-ADDRESS_MAP_START(pk8020_state::pk8020_mem)
-ADDRESS_MAP_END
+void pk8020_state::pk8020_mem(address_map &map)
+{
+}
-ADDRESS_MAP_START(pk8020_state::pk8020_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void pk8020_state::pk8020_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+}
/* Input ports */
static INPUT_PORTS_START( pk8020 )
diff --git a/src/mame/drivers/pkscram.cpp b/src/mame/drivers/pkscram.cpp
index ac780c39d3d..ade974796b2 100644
--- a/src/mame/drivers/pkscram.cpp
+++ b/src/mame/drivers/pkscram.cpp
@@ -119,27 +119,28 @@ WRITE16_MEMBER(pkscram_state::pkscramble_output_w)
machine().bookkeeping().coin_counter_w(0, data & 0x80);
}
-ADDRESS_MAP_START(pkscram_state::pkscramble_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7ffff)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x0400ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x041000, 0x043fff) AM_RAM // main ram
- AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE(pkscramble_fgtilemap_w) AM_SHARE("fgtilemap_ram") // fg tilemap
- AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(pkscramble_mdtilemap_w) AM_SHARE("mdtilemap_ram") // md tilemap (just a copy of fg?)
- AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(pkscramble_bgtilemap_w) AM_SHARE("bgtilemap_ram") // bg tilemap
- AM_RANGE(0x047000, 0x047fff) AM_RAM // unused
- AM_RANGE(0x048000, 0x048fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x049000, 0x049001) AM_READ_PORT("DSW")
- AM_RANGE(0x049004, 0x049005) AM_READ_PORT("INPUTS")
- AM_RANGE(0x049008, 0x049009) AM_WRITE(pkscramble_output_w)
- AM_RANGE(0x049010, 0x049011) AM_WRITENOP
- AM_RANGE(0x049014, 0x049015) AM_WRITENOP
- AM_RANGE(0x049018, 0x049019) AM_WRITENOP
- AM_RANGE(0x04901c, 0x04901d) AM_WRITENOP
- AM_RANGE(0x049020, 0x049021) AM_WRITENOP
- AM_RANGE(0x04900c, 0x04900f) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
- AM_RANGE(0x052086, 0x052087) AM_WRITENOP
-ADDRESS_MAP_END
+void pkscram_state::pkscramble_map(address_map &map)
+{
+ map.global_mask(0x7ffff);
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x0400ff).ram().share("nvram");
+ map(0x041000, 0x043fff).ram(); // main ram
+ map(0x044000, 0x044fff).ram().w(this, FUNC(pkscram_state::pkscramble_fgtilemap_w)).share("fgtilemap_ram"); // fg tilemap
+ map(0x045000, 0x045fff).ram().w(this, FUNC(pkscram_state::pkscramble_mdtilemap_w)).share("mdtilemap_ram"); // md tilemap (just a copy of fg?)
+ map(0x046000, 0x046fff).ram().w(this, FUNC(pkscram_state::pkscramble_bgtilemap_w)).share("bgtilemap_ram"); // bg tilemap
+ map(0x047000, 0x047fff).ram(); // unused
+ map(0x048000, 0x048fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x049000, 0x049001).portr("DSW");
+ map(0x049004, 0x049005).portr("INPUTS");
+ map(0x049008, 0x049009).w(this, FUNC(pkscram_state::pkscramble_output_w));
+ map(0x049010, 0x049011).nopw();
+ map(0x049014, 0x049015).nopw();
+ map(0x049018, 0x049019).nopw();
+ map(0x04901c, 0x04901d).nopw();
+ map(0x049020, 0x049021).nopw();
+ map(0x04900c, 0x04900f).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
+ map(0x052086, 0x052087).nopw();
+}
static INPUT_PORTS_START( pkscramble )
diff --git a/src/mame/drivers/pktgaldx.cpp b/src/mame/drivers/pktgaldx.cpp
index 00df9656864..1b8873ebdf5 100644
--- a/src/mame/drivers/pktgaldx.cpp
+++ b/src/mame/drivers/pktgaldx.cpp
@@ -100,33 +100,35 @@ WRITE16_MEMBER( pktgaldx_state::vblank_ack_w )
m_maincpu->set_input_line(6, CLEAR_LINE);
}
-ADDRESS_MAP_START(pktgaldx_state::pktgaldx_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void pktgaldx_state::pktgaldx_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x110000, 0x1107ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x112000, 0x1127ff) AM_RAM AM_SHARE("pf2_rowscroll")
+ map(0x100000, 0x100fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x102000, 0x102fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x110000, 0x1107ff).ram().share("pf1_rowscroll");
+ map(0x112000, 0x1127ff).ram().share("pf2_rowscroll");
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x130000, 0x130fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x130000, 0x130fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x140000, 0x14000f) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x140006, 0x140007) AM_DEVREAD8("oki1", okim6295_device, read, 0x00ff)
- AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff)
- AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_device, read, 0x00ff)
+ map(0x140000, 0x14000f).w("oki1", FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x140007, 0x140007).r("oki1", FUNC(okim6295_device::read));
+ map(0x150000, 0x15000f).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x150007, 0x150007).r(m_oki2, FUNC(okim6295_device::read));
- AM_RANGE(0x161800, 0x16180f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x164800, 0x164801) AM_WRITE(pktgaldx_oki_bank_w)
- AM_RANGE(0x166800, 0x166801) AM_WRITE(vblank_ack_w)
- AM_RANGE(0x167800, 0x167fff) AM_READWRITE(pktgaldx_protection_region_f_104_r,pktgaldx_protection_region_f_104_w) AM_SHARE("prot16ram") /* Protection device */
+ map(0x161800, 0x16180f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x164800, 0x164801).w(this, FUNC(pktgaldx_state::pktgaldx_oki_bank_w));
+ map(0x166800, 0x166801).w(this, FUNC(pktgaldx_state::vblank_ack_w));
+ map(0x167800, 0x167fff).rw(this, FUNC(pktgaldx_state::pktgaldx_protection_region_f_104_r), FUNC(pktgaldx_state::pktgaldx_protection_region_f_104_w)).share("prot16ram"); /* Protection device */
- AM_RANGE(0x170000, 0x17ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x170000, 0x17ffff).ram();
+}
-ADDRESS_MAP_START(pktgaldx_state::decrypted_opcodes_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
+void pktgaldx_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().share("decrypted_opcodes");
+}
/* Pocket Gal Deluxe (bootleg!) */
@@ -155,38 +157,39 @@ cpu #0 (PC=0000923C): unmapped program memory word read from 00167DB2 & 00FF
/* do the 300000 addresses somehow interact with the protection addresses on this bootleg? */
/* or maybe protection writes go to sound ... */
-ADDRESS_MAP_START(pktgaldx_state::pktgaldb_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("pktgaldb_fgram") // fgram on original?
- AM_RANGE(0x102000, 0x102fff) AM_RAM // bgram on original?
- AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("pktgaldb_spr")
+void pktgaldx_state::pktgaldb_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).ram().share("pktgaldb_fgram"); // fgram on original?
+ map(0x102000, 0x102fff).ram(); // bgram on original?
+ map(0x120000, 0x123fff).ram().share("pktgaldb_spr");
- AM_RANGE(0x130000, 0x130fff) AM_RAM // palette on original?
+ map(0x130000, 0x130fff).ram(); // palette on original?
- AM_RANGE(0x140000, 0x14000f) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x140006, 0x140007) AM_DEVREAD8("oki1", okim6295_device, read, 0x00ff)
- AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff)
- AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_device, read, 0x00ff)
+ map(0x140000, 0x14000f).w("oki1", FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x140007, 0x140007).r("oki1", FUNC(okim6295_device::read));
+ map(0x150000, 0x15000f).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x150007, 0x150007).r(m_oki2, FUNC(okim6295_device::read));
// AM_RANGE(0x160000, 0x167fff) AM_RAM
- AM_RANGE(0x164800, 0x164801) AM_WRITE(pktgaldx_oki_bank_w)
- AM_RANGE(0x16500a, 0x16500b) AM_READ(pckgaldx_unknown_r)
- AM_RANGE(0x166800, 0x166801) AM_WRITE(vblank_ack_w)
+ map(0x164800, 0x164801).w(this, FUNC(pktgaldx_state::pktgaldx_oki_bank_w));
+ map(0x16500a, 0x16500b).r(this, FUNC(pktgaldx_state::pckgaldx_unknown_r));
+ map(0x166800, 0x166801).w(this, FUNC(pktgaldx_state::vblank_ack_w));
/* should we really be using these to read the i/o in the BOOTLEG?
these look like i/o through protection ... */
- AM_RANGE(0x167842, 0x167843) AM_READ_PORT("INPUTS")
- AM_RANGE(0x167c4c, 0x167c4d) AM_READ_PORT("DSW")
- AM_RANGE(0x167db2, 0x167db3) AM_READ_PORT("SYSTEM")
+ map(0x167842, 0x167843).portr("INPUTS");
+ map(0x167c4c, 0x167c4d).portr("DSW");
+ map(0x167db2, 0x167db3).portr("SYSTEM");
- AM_RANGE(0x167d10, 0x167d11) AM_READ(pckgaldx_protection_r) // check code at 6ea
- AM_RANGE(0x167d1a, 0x167d1b) AM_READ(pckgaldx_protection_r) // check code at 7C4
+ map(0x167d10, 0x167d11).r(this, FUNC(pktgaldx_state::pckgaldx_protection_r)); // check code at 6ea
+ map(0x167d1a, 0x167d1b).r(this, FUNC(pktgaldx_state::pckgaldx_protection_r)); // check code at 7C4
- AM_RANGE(0x170000, 0x17ffff) AM_RAM
+ map(0x170000, 0x17ffff).ram();
- AM_RANGE(0x300000, 0x30000f) AM_RAM // ??
+ map(0x300000, 0x30000f).ram(); // ??
- AM_RANGE(0x330000, 0x330bff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // extra colours?
-ADDRESS_MAP_END
+ map(0x330000, 0x330bff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // extra colours?
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/plan80.cpp b/src/mame/drivers/plan80.cpp
index 6de34e4e90f..4b6be7f09eb 100644
--- a/src/mame/drivers/plan80.cpp
+++ b/src/mame/drivers/plan80.cpp
@@ -88,20 +88,22 @@ WRITE8_MEMBER( plan80_state::plan80_09_w )
}
-ADDRESS_MAP_START(plan80_state::plan80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
- AM_RANGE(0x0800, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(plan80_state::plan80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x04) AM_READ(plan80_04_r)
- AM_RANGE(0x09, 0x09) AM_WRITE(plan80_09_w)
-ADDRESS_MAP_END
+void plan80_state::plan80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0xefff).ram();
+ map(0xf000, 0xf7ff).ram().share("videoram");
+ map(0xf800, 0xffff).rom();
+}
+
+void plan80_state::plan80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x04, 0x04).r(this, FUNC(plan80_state::plan80_04_r));
+ map(0x09, 0x09).w(this, FUNC(plan80_state::plan80_09_w));
+}
/* Input ports */
static INPUT_PORTS_START( plan80 ) // Keyboard was worked out by trial & error;'F' keys produce foreign symbols
diff --git a/src/mame/drivers/play_1.cpp b/src/mame/drivers/play_1.cpp
index 804567a7ec6..57dd47d9215 100644
--- a/src/mame/drivers/play_1.cpp
+++ b/src/mame/drivers/play_1.cpp
@@ -72,29 +72,32 @@ private:
required_device<clock_device> m_monotone;
};
-ADDRESS_MAP_START(play_1_state::play_1_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x0800, 0x081f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery"
- AM_RANGE(0x0c00, 0x0c1f) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_1_state::chance_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x0bff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x0c00, 0x0c1f) AM_RAM
- AM_RANGE(0x0e00, 0x0e1f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery"
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_1_state::play_1_io)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(port01_w) //segments
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(port02_w) // N1-8
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3") AM_WRITE(port03_w) // D1-4
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4") AM_WRITE(port04_w) // U1-8
- AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5") AM_WRITE(port05_w) // V1-8
- AM_RANGE(0x06, 0x06) AM_READ_PORT("IN6") AM_WRITE(port06_w) // W1-8
- AM_RANGE(0x07, 0x07) AM_READ(port07_r)
-ADDRESS_MAP_END
+void play_1_state::play_1_map(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x07ff).rom().region("roms", 0);
+ map(0x0800, 0x081f).ram().share("nvram"); // capacitor acting as a 2-month "battery"
+ map(0x0c00, 0x0c1f).ram();
+}
+
+void play_1_state::chance_map(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x0bff).rom().region("roms", 0);
+ map(0x0c00, 0x0c1f).ram();
+ map(0x0e00, 0x0e1f).ram().share("nvram"); // capacitor acting as a 2-month "battery"
+}
+
+void play_1_state::play_1_io(address_map &map)
+{
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(play_1_state::port01_w)); //segments
+ map(0x02, 0x02).portr("IN2").w(this, FUNC(play_1_state::port02_w)); // N1-8
+ map(0x03, 0x03).portr("IN3").w(this, FUNC(play_1_state::port03_w)); // D1-4
+ map(0x04, 0x04).portr("IN4").w(this, FUNC(play_1_state::port04_w)); // U1-8
+ map(0x05, 0x05).portr("IN5").w(this, FUNC(play_1_state::port05_w)); // V1-8
+ map(0x06, 0x06).portr("IN6").w(this, FUNC(play_1_state::port06_w)); // W1-8
+ map(0x07, 0x07).r(this, FUNC(play_1_state::port07_r));
+}
static INPUT_PORTS_START( chance )
PORT_START("X.0")
diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp
index 28dc9545f6f..53c4fd84216 100644
--- a/src/mame/drivers/play_2.cpp
+++ b/src/mame/drivers/play_2.cpp
@@ -103,24 +103,27 @@ private:
};
-ADDRESS_MAP_START(play_2_state::play_2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_2_state::play_2_io)
- AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits
- AM_RANGE(0x02, 0x02) AM_WRITE(port02_w)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("1863", cdp1863_device, str_w)
- AM_RANGE(0x04, 0x04) AM_READ(port04_r)
- AM_RANGE(0x05, 0x05) AM_READ(port05_r)
- AM_RANGE(0x06, 0x06) AM_WRITE(port06_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(port07_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_2_state::zira_sound_map)
- AM_RANGE(0x000, 0x3ff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+void play_2_state::play_2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("roms", 0);
+ map(0x2000, 0x20ff).ram().share("nvram"); // pair of 5101, battery-backed
+}
+
+void play_2_state::play_2_io(address_map &map)
+{
+ map(0x01, 0x01).w(this, FUNC(play_2_state::port01_w)); // digits
+ map(0x02, 0x02).w(this, FUNC(play_2_state::port02_w));
+ map(0x03, 0x03).w(m_1863, FUNC(cdp1863_device::str_w));
+ map(0x04, 0x04).r(this, FUNC(play_2_state::port04_r));
+ map(0x05, 0x05).r(this, FUNC(play_2_state::port05_r));
+ map(0x06, 0x06).w(this, FUNC(play_2_state::port06_w));
+ map(0x07, 0x07).w(this, FUNC(play_2_state::port07_w));
+}
+
+void play_2_state::zira_sound_map(address_map &map)
+{
+ map(0x000, 0x3ff).bankr("bank1");
+}
static INPUT_PORTS_START( play_2 )
diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp
index 3844fbf4ee9..306d866f8f7 100644
--- a/src/mame/drivers/play_3.cpp
+++ b/src/mame/drivers/play_3.cpp
@@ -123,42 +123,48 @@ private:
};
-ADDRESS_MAP_START(play_3_state::play_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x80ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_3_state::play_3_io)
- AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits, scan-lines
- AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) // sound code
- AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) //
- AM_RANGE(0x04, 0x04) AM_READ(port04_r) // switches
- AM_RANGE(0x05, 0x05) AM_READ(port05_r) // more switches
- AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments
- AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) // flipflop clear
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_3_state::megaaton_io)
- AM_IMPORT_FROM(play_3_io)
- AM_RANGE(0x01, 0x01) AM_WRITE(megaaton_port01_w) // digits, scan-lines
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_3_state::sklflite_io)
- AM_IMPORT_FROM(play_3_io)
- AM_RANGE(0x03, 0x03) AM_WRITE(sklflite_port03_w) //
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_3_state::play_3_audio_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("aysnd1", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("aysnd2", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x8000, 0x80ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(play_3_state::play_3_audio_io)
- AM_RANGE(0x01, 0x01) AM_WRITE(port01_a_w) // irq counter
- AM_RANGE(0x02, 0x02) AM_READ(port02_a_r) // sound code
-ADDRESS_MAP_END
+void play_3_state::play_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x80ff).ram().share("nvram"); // pair of 5101, battery-backed
+}
+
+void play_3_state::play_3_io(address_map &map)
+{
+ map(0x01, 0x01).w(this, FUNC(play_3_state::port01_w)); // digits, scan-lines
+ map(0x02, 0x02).w(this, FUNC(play_3_state::port02_w)); // sound code
+ map(0x03, 0x03).w(this, FUNC(play_3_state::port03_w)); //
+ map(0x04, 0x04).r(this, FUNC(play_3_state::port04_r)); // switches
+ map(0x05, 0x05).r(this, FUNC(play_3_state::port05_r)); // more switches
+ map(0x06, 0x06).w(this, FUNC(play_3_state::port06_w)); // segments
+ map(0x07, 0x07).w(this, FUNC(play_3_state::port07_w)); // flipflop clear
+}
+
+void play_3_state::megaaton_io(address_map &map)
+{
+ play_3_io(map);
+ map(0x01, 0x01).w(this, FUNC(play_3_state::megaaton_port01_w)); // digits, scan-lines
+}
+
+void play_3_state::sklflite_io(address_map &map)
+{
+ play_3_io(map);
+ map(0x03, 0x03).w(this, FUNC(play_3_state::sklflite_port03_w)); //
+}
+
+void play_3_state::play_3_audio_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4001).mirror(0x1ffe).rw(m_aysnd1, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).mirror(0x1ffe).rw(m_aysnd2, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x8000, 0x80ff).ram();
+}
+
+void play_3_state::play_3_audio_io(address_map &map)
+{
+ map(0x01, 0x01).w(this, FUNC(play_3_state::port01_a_w)); // irq counter
+ map(0x02, 0x02).r(this, FUNC(play_3_state::port02_a_r)); // sound code
+}
static INPUT_PORTS_START( play_3 )
diff --git a/src/mame/drivers/playch10.cpp b/src/mame/drivers/playch10.cpp
index 9938b0efbe0..c94f431832b 100644
--- a/src/mame/drivers/playch10.cpp
+++ b/src/mame/drivers/playch10.cpp
@@ -350,34 +350,37 @@ WRITE8_MEMBER(playch10_state::time_w)
/******************************************************************************/
/* BIOS */
-ADDRESS_MAP_START(playch10_state::bios_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM // 8V
- AM_RANGE(0x8800, 0x8fff) AM_READWRITE(ram_8w_r, ram_8w_w) AM_SHARE("ram_8w") // 8W
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(playch10_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(pc10_prot_r, pc10_prot_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playch10_state::bios_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("BIOS")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("SW1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SW2")
- AM_RANGE(0x03, 0x03) AM_READ(pc10_detectclr_r)
- AM_RANGE(0x00, 0x07) AM_DEVWRITE("outlatch1", ls259_device, write_d0)
- AM_RANGE(0x08, 0x0f) AM_DEVWRITE("outlatch2", ls259_device, write_d0)
- AM_RANGE(0x10, 0x13) AM_WRITE(time_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playch10_state::cart_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) AM_SHARE("work_ram")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(pc10_in0_r, pc10_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(pc10_in1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void playch10_state::bios_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram(); // 8V
+ map(0x8800, 0x8fff).rw(this, FUNC(playch10_state::ram_8w_r), FUNC(playch10_state::ram_8w_w)).share("ram_8w"); // 8W
+ map(0x9000, 0x97ff).ram().w(this, FUNC(playch10_state::playch10_videoram_w)).share("videoram");
+ map(0xc000, 0xdfff).rom();
+ map(0xe000, 0xffff).rw(this, FUNC(playch10_state::pc10_prot_r), FUNC(playch10_state::pc10_prot_w));
+}
+
+void playch10_state::bios_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("BIOS");
+ map(0x01, 0x01).portr("SW1");
+ map(0x02, 0x02).portr("SW2");
+ map(0x03, 0x03).r(this, FUNC(playch10_state::pc10_detectclr_r));
+ map(0x00, 0x07).w("outlatch1", FUNC(ls259_device::write_d0));
+ map(0x08, 0x0f).w("outlatch2", FUNC(ls259_device::write_d0));
+ map(0x10, 0x13).w(this, FUNC(playch10_state::time_w));
+}
+
+void playch10_state::cart_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().mirror(0x1800).share("work_ram");
+ map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(playch10_state::sprite_dma_w));
+ map(0x4016, 0x4016).rw(this, FUNC(playch10_state::pc10_in0_r), FUNC(playch10_state::pc10_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(playch10_state::pc10_in1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x8000, 0xffff).rom();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp
index 1bdab8861c7..884ff6acab7 100644
--- a/src/mame/drivers/playmark.cpp
+++ b/src/mame/drivers/playmark.cpp
@@ -261,154 +261,162 @@ WRITE8_MEMBER(playmark_state::hrdtimes_snd_control_w)
/***************************** 68000 Memory Maps ****************************/
-ADDRESS_MAP_START(playmark_state::bigtwin_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x304000, 0x304001) AM_NOP /* watchdog? irq ack? */
- AM_RANGE(0x440000, 0x4403ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x500fff) AM_WRITE(wbeachvl_fgvideoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x501000, 0x501fff) AM_WRITENOP /* unused RAM? */
- AM_RANGE(0x502000, 0x503fff) AM_WRITE(wbeachvl_txvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x504000, 0x50ffff) AM_WRITENOP /* unused RAM? */
- AM_RANGE(0x510000, 0x51000b) AM_WRITE(bigtwin_scroll_w)
- AM_RANGE(0x51000c, 0x51000d) AM_WRITENOP /* always 3? */
- AM_RANGE(0x600000, 0x67ffff) AM_RAM AM_SHARE("bgvideoram")
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("P2")
- AM_RANGE(0x700016, 0x700017) AM_WRITE(coinctrl_w)
- AM_RANGE(0x70001a, 0x70001b) AM_READ_PORT("DSW2")
- AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("DSW1")
- AM_RANGE(0x70001e, 0x70001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x780000, 0x7807ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+void playmark_state::bigtwin_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x304000, 0x304001).noprw(); /* watchdog? irq ack? */
+ map(0x440000, 0x4403ff).ram().share("spriteram");
+ map(0x500000, 0x500fff).w(this, FUNC(playmark_state::wbeachvl_fgvideoram_w)).share("videoram2");
+ map(0x501000, 0x501fff).nopw(); /* unused RAM? */
+ map(0x502000, 0x503fff).w(this, FUNC(playmark_state::wbeachvl_txvideoram_w)).share("videoram1");
+ map(0x504000, 0x50ffff).nopw(); /* unused RAM? */
+ map(0x510000, 0x51000b).w(this, FUNC(playmark_state::bigtwin_scroll_w));
+ map(0x51000c, 0x51000d).nopw(); /* always 3? */
+ map(0x600000, 0x67ffff).ram().share("bgvideoram");
+ map(0x700010, 0x700011).portr("SYSTEM");
+ map(0x700012, 0x700013).portr("P1");
+ map(0x700014, 0x700015).portr("P2");
+ map(0x700016, 0x700017).w(this, FUNC(playmark_state::coinctrl_w));
+ map(0x70001a, 0x70001b).portr("DSW2");
+ map(0x70001c, 0x70001d).portr("DSW1");
+ map(0x70001e, 0x70001f).w(this, FUNC(playmark_state::playmark_snd_command_w));
+ map(0x780000, 0x7807ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
// AM_RANGE(0xe00000, 0xe00001) ?? written on startup
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::bigtwinb_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w)
- AM_RANGE(0x201000, 0x2013ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2")
- AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2")
- AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1")
- AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::wbeachvl_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(wbeachvl_bgvideoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(wbeachvl_fgvideoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x508000, 0x509fff) AM_RAM_WRITE(wbeachvl_txvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x50f000, 0x50ffff) AM_RAM AM_SHARE("rowscroll")
- AM_RANGE(0x510000, 0x51000b) AM_WRITE(wbeachvl_scroll_w)
- AM_RANGE(0x51000c, 0x51000d) AM_WRITENOP /* 2 and 3 */
+ map(0xff0000, 0xffffff).ram();
+}
+
+void playmark_state::bigtwinb_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3");
+ map(0x104000, 0x107fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2");
+ map(0x108000, 0x10ffff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1");
+ map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w));
+ map(0x201000, 0x2013ff).ram().share("spriteram");
+ map(0x280000, 0x2807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300010, 0x300011).portr("SYSTEM");
+ map(0x300012, 0x300013).portr("P1");
+ map(0x300014, 0x300015).portr("P2");
+ map(0x30001a, 0x30001b).portr("DSW2");
+ map(0x30001c, 0x30001d).portr("DSW1");
+ map(0x30001e, 0x30001f).w(this, FUNC(playmark_state::playmark_snd_command_w));
+ map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */
+ map(0xff0000, 0xffffff).ram();
+}
+
+void playmark_state::wbeachvl_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x440000, 0x440fff).ram().share("spriteram");
+ map(0x500000, 0x501fff).ram().w(this, FUNC(playmark_state::wbeachvl_bgvideoram_w)).share("videoram3");
+ map(0x504000, 0x505fff).ram().w(this, FUNC(playmark_state::wbeachvl_fgvideoram_w)).share("videoram2");
+ map(0x508000, 0x509fff).ram().w(this, FUNC(playmark_state::wbeachvl_txvideoram_w)).share("videoram1");
+ map(0x50f000, 0x50ffff).ram().share("rowscroll");
+ map(0x510000, 0x51000b).w(this, FUNC(playmark_state::wbeachvl_scroll_w));
+ map(0x51000c, 0x51000d).nopw(); /* 2 and 3 */
// AM_RANGE(0x700000, 0x700001) ?? written on startup
- AM_RANGE(0x710010, 0x710011) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x710012, 0x710013) AM_READ_PORT("P1")
- AM_RANGE(0x710014, 0x710015) AM_READ_PORT("P2")
- AM_RANGE(0x710016, 0x710017) AM_WRITE(wbeachvl_coin_eeprom_w)
- AM_RANGE(0x710018, 0x710019) AM_READ_PORT("P3")
- AM_RANGE(0x71001a, 0x71001b) AM_READ_PORT("P4")
+ map(0x710010, 0x710011).portr("SYSTEM");
+ map(0x710012, 0x710013).portr("P1");
+ map(0x710014, 0x710015).portr("P2");
+ map(0x710016, 0x710017).w(this, FUNC(playmark_state::wbeachvl_coin_eeprom_w));
+ map(0x710018, 0x710019).portr("P3");
+ map(0x71001a, 0x71001b).portr("P4");
// AM_RANGE(0x71001c, 0x71001d) AM_READ(playmark_snd_status???)
- AM_RANGE(0x71001e, 0x71001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::excelsr_main_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0x440000, 0x440cff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(wbeachvl_fgvideoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(wbeachvl_txvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x510000, 0x51000b) AM_WRITE(excelsr_scroll_w)
- AM_RANGE(0x51000c, 0x51000d) AM_WRITENOP /* 2 and 3 */
- AM_RANGE(0x600000, 0x67ffff) AM_RAM AM_SHARE("bgvideoram")
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("P2")
- AM_RANGE(0x700016, 0x700017) AM_WRITE(coinctrl_w)
- AM_RANGE(0x70001a, 0x70001b) AM_READ_PORT("DSW2")
- AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("DSW1")
- AM_RANGE(0x70001e, 0x70001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x780000, 0x7807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::hrdtimes_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x0bffff) AM_RAM
- AM_RANGE(0x0c0000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0x0c0000)
- AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") // 32*32?
- AM_RANGE(0x100800, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x105fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") // 128*32?
- AM_RANGE(0x106000, 0x107fff) AM_RAM
- AM_RANGE(0x108000, 0x109fff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") // 64*64?
- AM_RANGE(0x10a000, 0x10bfff) AM_RAM
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM // Unused
- AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w)
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x280800, 0x280fff) AM_RAM // Unused
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2")
- AM_RANGE(0x300016, 0x300017) AM_WRITE(hrdtimes_coin_w)
- AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2")
- AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1")
+ map(0x71001e, 0x71001f).w(this, FUNC(playmark_state::playmark_snd_command_w));
+ map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void playmark_state::excelsr_main_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom();
+ map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */
+ map(0x440000, 0x440cff).ram().share("spriteram");
+ map(0x500000, 0x500fff).ram().w(this, FUNC(playmark_state::wbeachvl_fgvideoram_w)).share("videoram2");
+ map(0x501000, 0x501fff).ram().w(this, FUNC(playmark_state::wbeachvl_txvideoram_w)).share("videoram1");
+ map(0x510000, 0x51000b).w(this, FUNC(playmark_state::excelsr_scroll_w));
+ map(0x51000c, 0x51000d).nopw(); /* 2 and 3 */
+ map(0x600000, 0x67ffff).ram().share("bgvideoram");
+ map(0x700010, 0x700011).portr("SYSTEM");
+ map(0x700012, 0x700013).portr("P1");
+ map(0x700014, 0x700015).portr("P2");
+ map(0x700016, 0x700017).w(this, FUNC(playmark_state::coinctrl_w));
+ map(0x70001a, 0x70001b).portr("DSW2");
+ map(0x70001c, 0x70001d).portr("DSW1");
+ map(0x70001e, 0x70001f).w(this, FUNC(playmark_state::playmark_snd_command_w));
+ map(0x780000, 0x7807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void playmark_state::hrdtimes_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x0bffff).ram();
+ map(0x0c0000, 0x0fffff).rom().region("maincpu", 0x0c0000);
+ map(0x100000, 0x1007ff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3"); // 32*32?
+ map(0x100800, 0x103fff).ram();
+ map(0x104000, 0x105fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2"); // 128*32?
+ map(0x106000, 0x107fff).ram();
+ map(0x108000, 0x109fff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1"); // 64*64?
+ map(0x10a000, 0x10bfff).ram();
+ map(0x10c000, 0x10ffff).ram(); // Unused
+ map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w));
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x280000, 0x2807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x280800, 0x280fff).ram(); // Unused
+ map(0x300010, 0x300011).portr("SYSTEM");
+ map(0x300012, 0x300013).portr("P1");
+ map(0x300014, 0x300015).portr("P2");
+ map(0x300016, 0x300017).w(this, FUNC(playmark_state::hrdtimes_coin_w));
+ map(0x30001a, 0x30001b).portr("DSW2");
+ map(0x30001c, 0x30001d).portr("DSW1");
// AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::hotmind_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w)
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("COINS")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("DISPENSER") AM_WRITE(hotmind_coin_eeprom_w)
- AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2")
- AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1")
- AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::luckboomh_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w)
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x2807ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("COINS")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("DISPENSER") AM_WRITE(luckboomh_dispenser_w)
- AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("SERVICE")
- AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w)
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0xff0000, 0xff03ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(playmark_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+ map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */
+}
+
+void playmark_state::hotmind_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3");
+ map(0x104000, 0x107fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2");
+ map(0x108000, 0x10ffff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1");
+ map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w));
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x280000, 0x2807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300010, 0x300011).portr("COINS");
+ map(0x300012, 0x300013).portr("P1");
+ map(0x300014, 0x300015).portr("DISPENSER").w(this, FUNC(playmark_state::hotmind_coin_eeprom_w));
+ map(0x30001a, 0x30001b).portr("DSW2");
+ map(0x30001c, 0x30001d).portr("DSW1");
+ map(0x30001e, 0x30001f).w(this, FUNC(playmark_state::playmark_snd_command_w));
+ map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */
+ map(0xff0000, 0xffffff).ram();
+}
+
+void playmark_state::luckboomh_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3");
+ map(0x104000, 0x107fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2");
+ map(0x108000, 0x10ffff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1");
+ map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w));
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x280000, 0x2807ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300010, 0x300011).portr("COINS");
+ map(0x300012, 0x300013).portr("P1");
+ map(0x300014, 0x300015).portr("DISPENSER").w(this, FUNC(playmark_state::luckboomh_dispenser_w));
+ map(0x30001c, 0x30001d).portr("SERVICE");
+ map(0x30001e, 0x30001f).w(this, FUNC(playmark_state::playmark_snd_command_w));
+ map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */
+ map(0xff0000, 0xff03ff).ram().share("nvram");
+ map(0xff8000, 0xffffff).ram();
+}
+
+void playmark_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
#define PLAYMARK_COINS \
diff --git a/src/mame/drivers/plus4.cpp b/src/mame/drivers/plus4.cpp
index 09ad9f71b91..cd823f5d64a 100644
--- a/src/mame/drivers/plus4.cpp
+++ b/src/mame/drivers/plus4.cpp
@@ -482,18 +482,20 @@ READ8_MEMBER( plus4_state::ted_videoram_r )
// ADDRESS_MAP( plus4_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(plus4_state::plus4_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void plus4_state::plus4_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(plus4_state::read), FUNC(plus4_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( ted_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(plus4_state::ted_videoram_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(ted_videoram_r)
-ADDRESS_MAP_END
+void plus4_state::ted_videoram_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(plus4_state::ted_videoram_r));
+}
diff --git a/src/mame/drivers/pluto5.cpp b/src/mame/drivers/pluto5.cpp
index d23f252d66e..f1ff10262f5 100644
--- a/src/mame/drivers/pluto5.cpp
+++ b/src/mame/drivers/pluto5.cpp
@@ -239,9 +239,10 @@ WRITE32_MEMBER(pluto5_state::pluto5_mem_w)
}
-ADDRESS_MAP_START(pluto5_state::pluto5_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(pluto5_mem_r, pluto5_mem_w)
-ADDRESS_MAP_END
+void pluto5_state::pluto5_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(pluto5_state::pluto5_mem_r), FUNC(pluto5_state::pluto5_mem_w));
+}
static INPUT_PORTS_START( pluto5 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp
index 593dd930d72..3e2ec832102 100644
--- a/src/mame/drivers/plygonet.cpp
+++ b/src/mame/drivers/plygonet.cpp
@@ -413,44 +413,47 @@ WRITE16_MEMBER(polygonet_state::dsp56k_ram_bank04_write)
/**********************************************************************************/
-ADDRESS_MAP_START(polygonet_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE16("k053936", k053936_device, ctrl_r, ctrl_w, 0xffffffff)
- AM_RANGE(0x440000, 0x440fff) AM_READWRITE(polygonet_roz_ram_r, polygonet_roz_ram_w)
- AM_RANGE(0x480000, 0x480003) AM_READ8(polygonet_inputs_r, 0xffffffff)
- AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE8(polygonet_sys_w, 0xffffffff)
- AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(shared_ram_write) AM_SHARE("shared_ram")
- AM_RANGE(0x504000, 0x504003) AM_WRITE(dsp_w_lines)
- AM_RANGE(0x506000, 0x50600f) AM_READWRITE(dsp_host_interface_r, dsp_host_interface_w)
- AM_RANGE(0x540000, 0x540fff) AM_READWRITE(polygonet_ttl_ram_r, polygonet_ttl_ram_w)
- AM_RANGE(0x541000, 0x54101f) AM_RAM
- AM_RANGE(0x580000, 0x5807ff) AM_RAM
- AM_RANGE(0x580800, 0x580803) AM_READ(network_r) AM_WRITENOP /* network RAM | registers? */
- AM_RANGE(0x600000, 0x60000f) AM_DEVICE8("k054321", k054321_device, main_map, 0xffffffff)
- AM_RANGE(0x640000, 0x640003) AM_WRITE(sound_irq_w)
- AM_RANGE(0x680000, 0x680003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w)
- AM_RANGE(0x700000, 0x73ffff) AM_ROM AM_REGION("gfx2", 0)
- AM_RANGE(0x780000, 0x79ffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void polygonet_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x21ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x400000, 0x40001f).rw(m_k053936, FUNC(k053936_device::ctrl_r), FUNC(k053936_device::ctrl_w));
+ map(0x440000, 0x440fff).rw(this, FUNC(polygonet_state::polygonet_roz_ram_r), FUNC(polygonet_state::polygonet_roz_ram_w));
+ map(0x480000, 0x480003).r(this, FUNC(polygonet_state::polygonet_inputs_r));
+ map(0x4c0000, 0x4c0003).w(this, FUNC(polygonet_state::polygonet_sys_w));
+ map(0x500000, 0x503fff).ram().w(this, FUNC(polygonet_state::shared_ram_write)).share("shared_ram");
+ map(0x504000, 0x504003).w(this, FUNC(polygonet_state::dsp_w_lines));
+ map(0x506000, 0x50600f).rw(this, FUNC(polygonet_state::dsp_host_interface_r), FUNC(polygonet_state::dsp_host_interface_w));
+ map(0x540000, 0x540fff).rw(this, FUNC(polygonet_state::polygonet_ttl_ram_r), FUNC(polygonet_state::polygonet_ttl_ram_w));
+ map(0x541000, 0x54101f).ram();
+ map(0x580000, 0x5807ff).ram();
+ map(0x580800, 0x580803).r(this, FUNC(polygonet_state::network_r)).nopw(); /* network RAM | registers? */
+ map(0x600000, 0x60000f).m(m_k054321, FUNC(k054321_device::main_map));
+ map(0x640000, 0x640003).w(this, FUNC(polygonet_state::sound_irq_w));
+ map(0x680000, 0x680003).w("watchdog", FUNC(watchdog_timer_device::reset32_w));
+ map(0x700000, 0x73ffff).rom().region("gfx2", 0);
+ map(0x780000, 0x79ffff).rom().region("gfx1", 0);
+ map(0xff8000, 0xffffff).ram();
+}
/**********************************************************************************/
-ADDRESS_MAP_START(polygonet_state::dsp_program_map)
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("dsp56k_p_mirror") /* Unsure of size, but 0x1000 matches bank01 */
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("dsp56k_p_8000")
- AM_RANGE(0xc000, 0xc000) AM_READ(dsp56k_bootload_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polygonet_state::dsp_data_map)
- AM_RANGE(0x0800, 0x5fff) AM_RAM /* Appears to not be affected by banking? */
- AM_RANGE(0x6000, 0x6fff) AM_READWRITE(dsp56k_ram_bank00_read, dsp56k_ram_bank00_write)
- AM_RANGE(0x7000, 0x7fff) AM_READWRITE(dsp56k_ram_bank01_read, dsp56k_ram_bank01_write) /* Mirrored in program space @ 0x7000 */
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE(dsp56k_ram_bank02_read, dsp56k_ram_bank02_write)
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(dsp56k_shared_ram_read, dsp56k_shared_ram_write)
- AM_RANGE(0xe000, 0xffbf) AM_READWRITE(dsp56k_ram_bank04_read, dsp56k_ram_bank04_write)
-ADDRESS_MAP_END
+void polygonet_state::dsp_program_map(address_map &map)
+{
+ map(0x7000, 0x7fff).ram().share("dsp56k_p_mirror"); /* Unsure of size, but 0x1000 matches bank01 */
+ map(0x8000, 0x87ff).ram().share("dsp56k_p_8000");
+ map(0xc000, 0xc000).r(this, FUNC(polygonet_state::dsp56k_bootload_r));
+}
+
+void polygonet_state::dsp_data_map(address_map &map)
+{
+ map(0x0800, 0x5fff).ram(); /* Appears to not be affected by banking? */
+ map(0x6000, 0x6fff).rw(this, FUNC(polygonet_state::dsp56k_ram_bank00_read), FUNC(polygonet_state::dsp56k_ram_bank00_write));
+ map(0x7000, 0x7fff).rw(this, FUNC(polygonet_state::dsp56k_ram_bank01_read), FUNC(polygonet_state::dsp56k_ram_bank01_write)); /* Mirrored in program space @ 0x7000 */
+ map(0x8000, 0xbfff).rw(this, FUNC(polygonet_state::dsp56k_ram_bank02_read), FUNC(polygonet_state::dsp56k_ram_bank02_write));
+ map(0xc000, 0xdfff).rw(this, FUNC(polygonet_state::dsp56k_shared_ram_read), FUNC(polygonet_state::dsp56k_shared_ram_write));
+ map(0xe000, 0xffbf).rw(this, FUNC(polygonet_state::dsp56k_ram_bank04_read), FUNC(polygonet_state::dsp56k_ram_bank04_write));
+}
/**********************************************************************************/
@@ -472,17 +475,18 @@ WRITE8_MEMBER(polygonet_state::sound_ctrl_w)
-ADDRESS_MAP_START(polygonet_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xe230, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe62f) AM_READNOP AM_WRITENOP // Second 054539 (not present)
- AM_RANGE(0xe630, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w)
-ADDRESS_MAP_END
+void polygonet_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe230, 0xe3ff).ram();
+ map(0xe400, 0xe62f).nopr().nopw(); // Second 054539 (not present)
+ map(0xe630, 0xe7ff).ram();
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(this, FUNC(polygonet_state::sound_ctrl_w));
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/pm68k.cpp b/src/mame/drivers/pm68k.cpp
index 5588892fc8f..5278d890b71 100644
--- a/src/mame/drivers/pm68k.cpp
+++ b/src/mame/drivers/pm68k.cpp
@@ -35,14 +35,15 @@ private:
};
-ADDRESS_MAP_START(pm68k_state::pm68k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x200000, 0x205fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("mpsc", i8274_new_device, ba_cd_r, ba_cd_w, 0xff00)
- AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE("stc", am9513_device, read16, write16)
-ADDRESS_MAP_END
+void pm68k_state::pm68k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).ram().share("rambase");
+ map(0x200000, 0x205fff).rom().region("roms", 0);
+ map(0x600000, 0x600007).rw("mpsc", FUNC(i8274_new_device::ba_cd_r), FUNC(i8274_new_device::ba_cd_w)).umask16(0xff00);
+ map(0x800000, 0x800003).rw("stc", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
+}
/* Input ports */
diff --git a/src/mame/drivers/pmd85.cpp b/src/mame/drivers/pmd85.cpp
index 42cfb573d5e..a77b1a8ea01 100644
--- a/src/mame/drivers/pmd85.cpp
+++ b/src/mame/drivers/pmd85.cpp
@@ -220,77 +220,85 @@ uint32_t pmd85_state::screen_update_pmd85(screen_device &screen, bitmap_ind16 &b
/* I/O ports */
-ADDRESS_MAP_START(pmd85_state::pmd85_io_map)
- AM_RANGE( 0x00, 0xff) AM_READWRITE(pmd85_io_r, pmd85_io_w )
-ADDRESS_MAP_END
+void pmd85_state::pmd85_io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(pmd85_state::pmd85_io_r), FUNC(pmd85_state::pmd85_io_w));
+}
-ADDRESS_MAP_START(pmd85_state::mato_io_map)
- AM_RANGE( 0x00, 0xff) AM_READWRITE(mato_io_r, mato_io_w )
-ADDRESS_MAP_END
+void pmd85_state::mato_io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(pmd85_state::mato_io_r), FUNC(pmd85_state::mato_io_w));
+}
/* memory w/r functions */
-ADDRESS_MAP_START(pmd85_state::pmd85_mem)
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1")
- AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2")
- AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3")
- AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank5")
- AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank6")
- AM_RANGE(0x9000, 0x9fff) AM_NOP
- AM_RANGE(0xa000, 0xafff) AM_READ_BANK("bank7")
- AM_RANGE(0xb000, 0xbfff) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank8")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pmd85_state::pmd852a_mem)
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1")
- AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2")
- AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3")
- AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank5")
- AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank6")
- AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("bank7")
- AM_RANGE(0xa000, 0xafff) AM_READ_BANK("bank8")
- AM_RANGE(0xb000, 0xbfff) AM_RAMBANK("bank9")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank10")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pmd85_state::pmd853_mem)
- AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank9")
- AM_RANGE(0x2000, 0x3fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank10")
- AM_RANGE(0x4000, 0x5fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank11")
- AM_RANGE(0x6000, 0x7fff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank12")
- AM_RANGE(0x8000, 0x9fff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank13")
- AM_RANGE(0xa000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank14")
- AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank15")
- AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank8") AM_WRITE_BANK("bank16")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pmd85_state::alfa_mem)
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1")
- AM_RANGE(0x1000, 0x33ff) AM_RAMBANK("bank2")
- AM_RANGE(0x3400, 0x3fff) AM_RAMBANK("bank3")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank4")
- AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank5")
- AM_RANGE(0x9000, 0xb3ff) AM_READ_BANK("bank6")
- AM_RANGE(0xb400, 0xbfff) AM_NOP
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank7")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pmd85_state::mato_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pmd85_state::c2717_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
+void pmd85_state::pmd85_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1");
+ map(0x1000, 0x1fff).bankrw("bank2");
+ map(0x2000, 0x2fff).bankrw("bank3");
+ map(0x3000, 0x3fff).bankrw("bank4");
+ map(0x4000, 0x7fff).bankrw("bank5");
+ map(0x8000, 0x8fff).bankr("bank6");
+ map(0x9000, 0x9fff).noprw();
+ map(0xa000, 0xafff).bankr("bank7");
+ map(0xb000, 0xbfff).noprw();
+ map(0xc000, 0xffff).bankrw("bank8");
+}
+
+void pmd85_state::pmd852a_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1");
+ map(0x1000, 0x1fff).bankrw("bank2");
+ map(0x2000, 0x2fff).bankrw("bank3");
+ map(0x3000, 0x3fff).bankrw("bank4");
+ map(0x4000, 0x7fff).bankrw("bank5");
+ map(0x8000, 0x8fff).bankr("bank6");
+ map(0x9000, 0x9fff).bankrw("bank7");
+ map(0xa000, 0xafff).bankr("bank8");
+ map(0xb000, 0xbfff).bankrw("bank9");
+ map(0xc000, 0xffff).bankrw("bank10");
+}
+
+void pmd85_state::pmd853_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bank1").bankw("bank9");
+ map(0x2000, 0x3fff).bankr("bank2").bankw("bank10");
+ map(0x4000, 0x5fff).bankr("bank3").bankw("bank11");
+ map(0x6000, 0x7fff).bankr("bank4").bankw("bank12");
+ map(0x8000, 0x9fff).bankr("bank5").bankw("bank13");
+ map(0xa000, 0xbfff).bankr("bank6").bankw("bank14");
+ map(0xc000, 0xdfff).bankr("bank7").bankw("bank15");
+ map(0xe000, 0xffff).bankr("bank8").bankw("bank16");
+}
+
+void pmd85_state::alfa_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1");
+ map(0x1000, 0x33ff).bankrw("bank2");
+ map(0x3400, 0x3fff).bankrw("bank3");
+ map(0x4000, 0x7fff).bankrw("bank4");
+ map(0x8000, 0x8fff).bankr("bank5");
+ map(0x9000, 0xb3ff).bankr("bank6");
+ map(0xb400, 0xbfff).noprw();
+ map(0xc000, 0xffff).bankrw("bank7");
+}
+
+void pmd85_state::mato_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void pmd85_state::c2717_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
/* keyboard input */
diff --git a/src/mame/drivers/pmi80.cpp b/src/mame/drivers/pmi80.cpp
index 5c804ae1597..22d4f539f88 100644
--- a/src/mame/drivers/pmi80.cpp
+++ b/src/mame/drivers/pmi80.cpp
@@ -82,18 +82,20 @@ WRITE8_MEMBER( pmi80_state::leds_w )
}
}
-ADDRESS_MAP_START(pmi80_state::pmi80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x03ff ) AM_ROM
- AM_RANGE( 0x0400, 0x1fff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pmi80_state::pmi80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf8, 0xf8) AM_WRITE(leds_w)
- AM_RANGE(0xfa, 0xfa) AM_READWRITE(keyboard_r,keyboard_w)
-ADDRESS_MAP_END
+void pmi80_state::pmi80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x0400, 0x1fff).ram();
+}
+
+void pmi80_state::pmi80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf8, 0xf8).w(this, FUNC(pmi80_state::leds_w));
+ map(0xfa, 0xfa).rw(this, FUNC(pmi80_state::keyboard_r), FUNC(pmi80_state::keyboard_w));
+}
/* Input ports */
static INPUT_PORTS_START( pmi80 )
diff --git a/src/mame/drivers/pntnpuzl.cpp b/src/mame/drivers/pntnpuzl.cpp
index 0e66912456c..52588bd6af4 100644
--- a/src/mame/drivers/pntnpuzl.cpp
+++ b/src/mame/drivers/pntnpuzl.cpp
@@ -281,29 +281,31 @@ READ16_MEMBER(pntnpuzl_state::irq4_ack_r)
}
-ADDRESS_MAP_START(pntnpuzl_state::pntnpuzl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ(irq1_ack_r)
- AM_RANGE(0x100000, 0x100001) AM_READ(irq2_ack_r)
- AM_RANGE(0x180000, 0x180001) AM_READ(irq4_ack_r)
- AM_RANGE(0x200000, 0x200001) AM_WRITE(pntnpuzl_200000_w)
- AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("via", via6522_device, read, write, 0xff00)
- AM_RANGE(0x280014, 0x280015) AM_READ(pntnpuzl_280014_r)
- AM_RANGE(0x280018, 0x280019) AM_WRITE(pntnpuzl_280018_w)
- AM_RANGE(0x28001a, 0x28001b) AM_READ(pntnpuzl_28001a_r)
+void pntnpuzl_state::pntnpuzl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080001).r(this, FUNC(pntnpuzl_state::irq1_ack_r));
+ map(0x100000, 0x100001).r(this, FUNC(pntnpuzl_state::irq2_ack_r));
+ map(0x180000, 0x180001).r(this, FUNC(pntnpuzl_state::irq4_ack_r));
+ map(0x200000, 0x200001).w(this, FUNC(pntnpuzl_state::pntnpuzl_200000_w));
+ map(0x280000, 0x28001f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0xff00);
+ map(0x280014, 0x280015).r(this, FUNC(pntnpuzl_state::pntnpuzl_280014_r));
+ map(0x280018, 0x280019).w(this, FUNC(pntnpuzl_state::pntnpuzl_280018_w));
+ map(0x28001a, 0x28001b).r(this, FUNC(pntnpuzl_state::pntnpuzl_28001a_r));
/* standard VGA */
- AM_RANGE(0x3a0000, 0x3bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffff)
- AM_RANGE(0x3c03b0, 0x3c03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffff)
- AM_RANGE(0x3c03c0, 0x3c03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffff)
- AM_RANGE(0x3c03d0, 0x3c03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffff)
+ map(0x3a0000, 0x3bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x3c03b0, 0x3c03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x3c03c0, 0x3c03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x3c03d0, 0x3c03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
- AM_RANGE(0x400000, 0x407fff) AM_RAM
-ADDRESS_MAP_END
+ map(0x400000, 0x407fff).ram();
+}
-ADDRESS_MAP_START(pntnpuzl_state::mcu_map)
- AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("mcu", 0)
-ADDRESS_MAP_END
+void pntnpuzl_state::mcu_map(address_map &map)
+{
+ map(0x2000, 0x3fff).rom().region("mcu", 0);
+}
INPUT_CHANGED_MEMBER(pntnpuzl_state::coin_inserted)
diff --git a/src/mame/drivers/pockchal.cpp b/src/mame/drivers/pockchal.cpp
index 2e6b69cf9b7..f2dd0402011 100644
--- a/src/mame/drivers/pockchal.cpp
+++ b/src/mame/drivers/pockchal.cpp
@@ -71,9 +71,10 @@ uint32_t pockchalv1_state::screen_update_pockchalv1(screen_device &screen, bitma
}
-ADDRESS_MAP_START(pockchalv1_state::pockchalv1_map)
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void pockchalv1_state::pockchalv1_map(address_map &map)
+{
+ map(0xc000, 0xffff).ram();
+}
static INPUT_PORTS_START( pockchalv1 )
diff --git a/src/mame/drivers/pocketc.cpp b/src/mame/drivers/pocketc.cpp
index 1424190f482..049a8e66caf 100644
--- a/src/mame/drivers/pocketc.cpp
+++ b/src/mame/drivers/pocketc.cpp
@@ -85,79 +85,89 @@
/* special keys
red c-ce and reset; warm boot, program NOT lost*/
-ADDRESS_MAP_START(pc1401_state::pc1401_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x3800, 0x47ff) AM_RAM
- AM_RANGE( 0x6000, 0x67ff) AM_READWRITE(pc1401_lcd_read, pc1401_lcd_write ) AM_MIRROR(0x1000)
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void pc1401_state::pc1401_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3800, 0x47ff).ram();
+ map(0x6000, 0x67ff).rw(this, FUNC(pc1401_state::pc1401_lcd_read), FUNC(pc1401_state::pc1401_lcd_write)).mirror(0x1000);
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(pc1401_state::pc1402_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x2000, 0x47ff) AM_RAM
- AM_RANGE( 0x6000, 0x67ff) AM_READWRITE(pc1401_lcd_read, pc1401_lcd_write ) AM_MIRROR(0x1000)
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void pc1401_state::pc1402_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x47ff).ram();
+ map(0x6000, 0x67ff).rw(this, FUNC(pc1401_state::pc1401_lcd_read), FUNC(pc1401_state::pc1401_lcd_write)).mirror(0x1000);
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(pc1251_state::pc1250_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x4000, 0x7fff) AM_ROM
- AM_RANGE( 0xc000, 0xc7ff) AM_RAM // 2KB RAM
- AM_RANGE( 0xf800, 0xf8ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
-ADDRESS_MAP_END
+void pc1251_state::pc1250_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram(); // 2KB RAM
+ map(0xf800, 0xf8ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
+}
-ADDRESS_MAP_START(pc1251_state::pc1251_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x4000, 0x7fff) AM_ROM
- AM_RANGE( 0xb800, 0xc7ff) AM_RAM // 4KB RAM
- AM_RANGE( 0xf800, 0xf8ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
-ADDRESS_MAP_END
+void pc1251_state::pc1251_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).rom();
+ map(0xb800, 0xc7ff).ram(); // 4KB RAM
+ map(0xf800, 0xf8ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
+}
-ADDRESS_MAP_START(pc1251_state::pc1255_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x4000, 0x7fff) AM_ROM
- AM_RANGE( 0xa000, 0xc7ff) AM_RAM // 10KB RAM
- AM_RANGE( 0xf800, 0xf8ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
-ADDRESS_MAP_END
+void pc1251_state::pc1255_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).rom();
+ map(0xa000, 0xc7ff).ram(); // 10KB RAM
+ map(0xf800, 0xf8ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
+}
-ADDRESS_MAP_START(pc1251_state::pc1260_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x2000, 0x20ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
+void pc1251_state::pc1260_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
//AM_RANGE( 0x2800, 0x28ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
- AM_RANGE( 0x5800, 0x67ff) AM_RAM // 4KB RAM
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x5800, 0x67ff).ram(); // 4KB RAM
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(pc1251_state::pc1261_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x2000, 0x20ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
+void pc1251_state::pc1261_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x20ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write));
//AM_RANGE( 0x2800, 0x28ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write)
- AM_RANGE( 0x4000, 0x67ff) AM_RAM // 10KB RAM
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x4000, 0x67ff).ram(); // 10KB RAM
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(pc1350_state::pc1350_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x7000, 0x7eff) AM_READWRITE(pc1350_lcd_read, pc1350_lcd_write )
- AM_RANGE( 0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pc1403_state::pc1403_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x3000, 0x30bf) AM_READWRITE(pc1403_lcd_read, pc1403_lcd_write )
- AM_RANGE( 0x3800, 0x3fff) AM_READWRITE(pc1403_asic_read, pc1403_asic_write )
- AM_RANGE( 0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE( 0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void pc1350_state::pc1350_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x7000, 0x7eff).rw(this, FUNC(pc1350_state::pc1350_lcd_read), FUNC(pc1350_state::pc1350_lcd_write));
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(pc1403_state::pc1403h_mem)
- AM_RANGE( 0x0000, 0x1fff) AM_ROM
- AM_RANGE( 0x3000, 0x30bf) AM_READWRITE(pc1403_lcd_read, pc1403_lcd_write )
- AM_RANGE( 0x3800, 0x3fff) AM_READWRITE(pc1403_asic_read, pc1403_asic_write )
- AM_RANGE( 0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE( 0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void pc1403_state::pc1403_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x30bf).rw(this, FUNC(pc1403_state::pc1403_lcd_read), FUNC(pc1403_state::pc1403_lcd_write));
+ map(0x3800, 0x3fff).rw(this, FUNC(pc1403_state::pc1403_asic_read), FUNC(pc1403_state::pc1403_asic_write));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0xe000, 0xffff).ram();
+}
+
+void pc1403_state::pc1403h_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x30bf).rw(this, FUNC(pc1403_state::pc1403_lcd_read), FUNC(pc1403_state::pc1403_lcd_write));
+ map(0x3800, 0x3fff).rw(this, FUNC(pc1403_state::pc1403_asic_read), FUNC(pc1403_state::pc1403_asic_write));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).ram();
+}
#if 0
diff --git a/src/mame/drivers/pockstat.cpp b/src/mame/drivers/pockstat.cpp
index a97391e8f5a..dda961ce241 100644
--- a/src/mame/drivers/pockstat.cpp
+++ b/src/mame/drivers/pockstat.cpp
@@ -841,21 +841,22 @@ WRITE32_MEMBER(pockstat_state::ps_audio_w)
verboselog(0, "ps_audio_w: Unknown Write: %08x = %08x & %08x\n", 0xd800000 + (offset << 2), data, mem_mask);
}
-ADDRESS_MAP_START(pockstat_state::pockstat_mem)
- AM_RANGE(0x00000000, 0x000007ff) AM_RAM
- AM_RANGE(0x02000000, 0x02ffffff) AM_READ(ps_rombank_r)
- AM_RANGE(0x04000000, 0x04003fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x06000000, 0x06000307) AM_READWRITE(ps_ftlb_r, ps_ftlb_w)
- AM_RANGE(0x08000000, 0x0801ffff) AM_READWRITE(ps_flash_r, ps_flash_w)
- AM_RANGE(0x0a000000, 0x0a000013) AM_READWRITE(ps_intc_r, ps_intc_w)
- AM_RANGE(0x0a800000, 0x0a80002b) AM_READWRITE(ps_timer_r, ps_timer_w)
- AM_RANGE(0x0b000000, 0x0b000007) AM_READWRITE(ps_clock_r, ps_clock_w)
- AM_RANGE(0x0b800000, 0x0b80000f) AM_READWRITE(ps_rtc_r, ps_rtc_w)
- AM_RANGE(0x0d000000, 0x0d000003) AM_READWRITE(ps_lcd_r, ps_lcd_w)
- AM_RANGE(0x0d000100, 0x0d00017f) AM_RAM AM_SHARE("lcd_buffer")
- AM_RANGE(0x0d80000c, 0x0d80000f) AM_READWRITE(ps_audio_r, ps_audio_w)
- AM_RANGE(0x0d800014, 0x0d800017) AM_DEVWRITE16("dac", dac_word_interface, write, 0x0000ffff)
-ADDRESS_MAP_END
+void pockstat_state::pockstat_mem(address_map &map)
+{
+ map(0x00000000, 0x000007ff).ram();
+ map(0x02000000, 0x02ffffff).r(this, FUNC(pockstat_state::ps_rombank_r));
+ map(0x04000000, 0x04003fff).rom().region("maincpu", 0);
+ map(0x06000000, 0x06000307).rw(this, FUNC(pockstat_state::ps_ftlb_r), FUNC(pockstat_state::ps_ftlb_w));
+ map(0x08000000, 0x0801ffff).rw(this, FUNC(pockstat_state::ps_flash_r), FUNC(pockstat_state::ps_flash_w));
+ map(0x0a000000, 0x0a000013).rw(this, FUNC(pockstat_state::ps_intc_r), FUNC(pockstat_state::ps_intc_w));
+ map(0x0a800000, 0x0a80002b).rw(this, FUNC(pockstat_state::ps_timer_r), FUNC(pockstat_state::ps_timer_w));
+ map(0x0b000000, 0x0b000007).rw(this, FUNC(pockstat_state::ps_clock_r), FUNC(pockstat_state::ps_clock_w));
+ map(0x0b800000, 0x0b80000f).rw(this, FUNC(pockstat_state::ps_rtc_r), FUNC(pockstat_state::ps_rtc_w));
+ map(0x0d000000, 0x0d000003).rw(this, FUNC(pockstat_state::ps_lcd_r), FUNC(pockstat_state::ps_lcd_w));
+ map(0x0d000100, 0x0d00017f).ram().share("lcd_buffer");
+ map(0x0d80000c, 0x0d80000f).rw(this, FUNC(pockstat_state::ps_audio_r), FUNC(pockstat_state::ps_audio_w));
+ map(0x0d800014, 0x0d800015).w("dac", FUNC(dac_word_interface::write));
+}
/* Input ports */
static INPUT_PORTS_START( pockstat )
diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp
index 53c700382c9..fc78c46e8c8 100644
--- a/src/mame/drivers/pofo.cpp
+++ b/src/mame/drivers/pofo.cpp
@@ -781,28 +781,31 @@ WRITE8_MEMBER( portfolio_state::io_w )
// ADDRESS_MAP( portfolio_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(portfolio_state::portfolio_mem)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mem_r, mem_w)
-ADDRESS_MAP_END
+void portfolio_state::portfolio_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(portfolio_state::mem_r), FUNC(portfolio_state::mem_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( portfolio_io )
//-------------------------------------------------
-ADDRESS_MAP_START(portfolio_state::portfolio_io)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void portfolio_state::portfolio_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(portfolio_state::io_r), FUNC(portfolio_state::io_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( portfolio_lcdc )
//-------------------------------------------------
-ADDRESS_MAP_START(portfolio_state::portfolio_lcdc)
- ADDRESS_MAP_GLOBAL_MASK(0x7ff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
-ADDRESS_MAP_END
+void portfolio_state::portfolio_lcdc(address_map &map)
+{
+ map.global_mask(0x7ff);
+ map(0x0000, 0x07ff).ram();
+}
diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp
index 70218e46921..9488a1cc5f4 100644
--- a/src/mame/drivers/poisk1.cpp
+++ b/src/mame/drivers/poisk1.cpp
@@ -620,20 +620,22 @@ MACHINE_RESET_MEMBER(p1_state, poisk1)
* macros
*/
-ADDRESS_MAP_START(p1_state::poisk1_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0xc000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(p1_state::poisk1_io)
- AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x0028, 0x002B) AM_READWRITE(p1_trap_r, p1_trap_w)
- AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+void p1_state::poisk1_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xfc000, 0xfffff).rom().region("bios", 0xc000);
+}
+
+void p1_state::poisk1_io(address_map &map)
+{
+ map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0028, 0x002B).rw(this, FUNC(p1_state::p1_trap_r), FUNC(p1_state::p1_trap_w));
+ map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
// can't use regular AM_DEVREADWRITE, because THIS IS SPARTA!
// 1st PPI occupies ports 60, 69, 6A and 6B; 2nd PPI -- 68, 61, 62 and 63.
- AM_RANGE(0x0060, 0x006F) AM_READWRITE(p1_ppi_r, p1_ppi_w)
- AM_RANGE(0x03D0, 0x03DF) AM_READWRITE(p1_cga_r, p1_cga_w)
-ADDRESS_MAP_END
+ map(0x0060, 0x006F).rw(this, FUNC(p1_state::p1_ppi_r), FUNC(p1_state::p1_ppi_w));
+ map(0x03D0, 0x03DF).rw(this, FUNC(p1_state::p1_cga_r), FUNC(p1_state::p1_cga_w));
+}
static INPUT_PORTS_START( poisk1 )
PORT_INCLUDE( poisk1_keyboard_v91 )
diff --git a/src/mame/drivers/pokechmp.cpp b/src/mame/drivers/pokechmp.cpp
index 3fb7d83f089..29fc48bd6a9 100644
--- a/src/mame/drivers/pokechmp.cpp
+++ b/src/mame/drivers/pokechmp.cpp
@@ -81,48 +81,51 @@ WRITE8_MEMBER(pokechmp_state::pokechmp_sound_w)
-ADDRESS_MAP_START(pokechmp_state::pokechmp_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pokechmp_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram")
+void pokechmp_state::pokechmp_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0fff).ram().w(this, FUNC(pokechmp_state::pokechmp_videoram_w)).share("videoram");
+ map(0x1000, 0x11ff).ram().share("spriteram");
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
- AM_RANGE(0x1801, 0x1801) AM_WRITE(pokechmp_flipscreen_w)
+ map(0x1800, 0x1800).portr("P1");
+ map(0x1801, 0x1801).w(this, FUNC(pokechmp_state::pokechmp_flipscreen_w));
/* 1800 - 0x181f are unused BAC-06 registers, see video/dec0.c */
- AM_RANGE(0x1802, 0x181f) AM_WRITENOP
+ map(0x1802, 0x181f).nopw();
- AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(pokechmp_sound_w)
- AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pokechmp_bank_w)
+ map(0x1a00, 0x1a00).portr("P2").w(this, FUNC(pokechmp_state::pokechmp_sound_w));
+ map(0x1c00, 0x1c00).portr("DSW").w(this, FUNC(pokechmp_state::pokechmp_bank_w));
/* Extra on Poke Champ (not on Pocket Gal) */
- AM_RANGE(0x2000, 0x23ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixed")
-ADDRESS_MAP_END
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).bankr("fixed");
+}
/***************************************************************************/
-ADDRESS_MAP_START(pokechmp_state::pokechmp_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x1800, 0x1800) AM_WRITENOP /* MSM5205 chip on Pocket Gal, not connected here? */
- AM_RANGE(0x2000, 0x2000) AM_WRITE(pokechmp_sound_bank_w) /* sound rom bank seems to be replaced with OKI bank */
- AM_RANGE(0x2800, 0x2800) AM_DEVREADWRITE("oki", okim6295_device, read, write) // extra
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+void pokechmp_state::pokechmp_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write));
+ map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write));
+ map(0x1800, 0x1800).nopw(); /* MSM5205 chip on Pocket Gal, not connected here? */
+ map(0x2000, 0x2000).w(this, FUNC(pokechmp_state::pokechmp_sound_bank_w)); /* sound rom bank seems to be replaced with OKI bank */
+ map(0x2800, 0x2800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // extra
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
// AM_RANGE(0x3400, 0x3400) AM_READ(pokechmp_adpcm_reset_r) /* not on here */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank3")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x4000, 0x7fff).bankr("bank3");
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(pokechmp_state::pokechmp_oki_map)
- AM_RANGE(0x00000, 0x37fff) AM_ROM
- AM_RANGE(0x38000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void pokechmp_state::pokechmp_oki_map(address_map &map)
+{
+ map(0x00000, 0x37fff).rom();
+ map(0x38000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( pokechmp )
diff --git a/src/mame/drivers/pokemini.cpp b/src/mame/drivers/pokemini.cpp
index d76aa166f99..45231a5df16 100644
--- a/src/mame/drivers/pokemini.cpp
+++ b/src/mame/drivers/pokemini.cpp
@@ -125,12 +125,13 @@ READ8_MEMBER( pokemini_state::rom_r )
return m_cart->read_rom(space, offset & 0x1fffff);
}
-ADDRESS_MAP_START(pokemini_state::pokemini_mem_map)
- AM_RANGE( 0x000000, 0x000fff ) AM_ROM /* bios */
- AM_RANGE( 0x001000, 0x001fff ) AM_RAM AM_SHARE("p_ram") /* VRAM/RAM */
- AM_RANGE( 0x002000, 0x0020ff ) AM_READWRITE(hwreg_r, hwreg_w) /* hardware registers */
- AM_RANGE( 0x002100, 0x1fffff ) AM_READ(rom_r) /* cartridge area */
-ADDRESS_MAP_END
+void pokemini_state::pokemini_mem_map(address_map &map)
+{
+ map(0x000000, 0x000fff).rom(); /* bios */
+ map(0x001000, 0x001fff).ram().share("p_ram"); /* VRAM/RAM */
+ map(0x002000, 0x0020ff).rw(this, FUNC(pokemini_state::hwreg_r), FUNC(pokemini_state::hwreg_w)); /* hardware registers */
+ map(0x002100, 0x1fffff).r(this, FUNC(pokemini_state::rom_r)); /* cartridge area */
+}
static INPUT_PORTS_START( pokemini )
diff --git a/src/mame/drivers/poker72.cpp b/src/mame/drivers/poker72.cpp
index 87517f4d888..12fcb9ec5ab 100644
--- a/src/mame/drivers/poker72.cpp
+++ b/src/mame/drivers/poker72.cpp
@@ -115,26 +115,27 @@ WRITE8_MEMBER(poker72_state::tile_bank_w)
m_tile_bank = (data & 4) >> 2;
}
-ADDRESS_MAP_START(poker72_state::poker72_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM //work ram
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xf000, 0xfbff) AM_RAM_WRITE(poker72_paletteram_w) AM_SHARE("pal")
- AM_RANGE(0xfc00, 0xfdff) AM_RAM //???
- AM_RANGE(0xfe08, 0xfe08) AM_READ_PORT("SW1")
- AM_RANGE(0xfe09, 0xfe09) AM_READ_PORT("IN1")
- AM_RANGE(0xfe0a, 0xfe0a) AM_READ_PORT("IN2")
- AM_RANGE(0xfe0c, 0xfe0c) AM_READ_PORT("SW4")
- AM_RANGE(0xfe0d, 0xfe0d) AM_READ_PORT("SW5")
- AM_RANGE(0xfe0e, 0xfe0e) AM_READ_PORT("SW6")
-
- AM_RANGE(0xfe17, 0xfe17) AM_READNOP //irq ack
- AM_RANGE(0xfe20, 0xfe20) AM_WRITE(output_w) //output, irq enable?
- AM_RANGE(0xfe22, 0xfe22) AM_WRITE(tile_bank_w)
- AM_RANGE(0xfe40, 0xfe40) AM_DEVREADWRITE("ay", ay8910_device, data_r, data_w)
- AM_RANGE(0xfe60, 0xfe60) AM_DEVWRITE("ay", ay8910_device, address_w)
-
- AM_RANGE(0xff00, 0xffff) AM_RAM //??
+void poker72_state::poker72_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank1");
+ map(0xc000, 0xdfff).ram(); //work ram
+ map(0xe000, 0xefff).ram().share("vram");
+ map(0xf000, 0xfbff).ram().w(this, FUNC(poker72_state::poker72_paletteram_w)).share("pal");
+ map(0xfc00, 0xfdff).ram(); //???
+ map(0xfe08, 0xfe08).portr("SW1");
+ map(0xfe09, 0xfe09).portr("IN1");
+ map(0xfe0a, 0xfe0a).portr("IN2");
+ map(0xfe0c, 0xfe0c).portr("SW4");
+ map(0xfe0d, 0xfe0d).portr("SW5");
+ map(0xfe0e, 0xfe0e).portr("SW6");
+
+ map(0xfe17, 0xfe17).nopr(); //irq ack
+ map(0xfe20, 0xfe20).w(this, FUNC(poker72_state::output_w)); //output, irq enable?
+ map(0xfe22, 0xfe22).w(this, FUNC(poker72_state::tile_bank_w));
+ map(0xfe40, 0xfe40).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xfe60, 0xfe60).w("ay", FUNC(ay8910_device::address_w));
+
+ map(0xff00, 0xffff).ram(); //??
/*
bp 13a
@@ -146,7 +147,7 @@ fe24 w
01f9 : call 6399 --> cls
*/
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( poker72 )
diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp
index beff2b2c65c..fd5eed82c11 100644
--- a/src/mame/drivers/polepos.cpp
+++ b/src/mame/drivers/polepos.cpp
@@ -422,52 +422,57 @@ MACHINE_RESET_MEMBER(polepos_state,polepos)
* CPU memory structures
*********************************************************************/
-ADDRESS_MAP_START(polepos_state::z80_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram") /* Battery Backup */
- AM_RANGE(0x4000, 0x47ff) AM_READWRITE(polepos_sprite_r, polepos_sprite_w) /* Motion Object */
- AM_RANGE(0x4800, 0x4bff) AM_READWRITE(polepos_road_r, polepos_road_w) /* Road Memory */
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(polepos_alpha_r, polepos_alpha_w) /* Alphanumeric (char ram) */
- AM_RANGE(0x5000, 0x57ff) AM_READWRITE(polepos_view_r, polepos_view_w) /* Background Memory */
-
- AM_RANGE(0x8000, 0x83bf) AM_MIRROR(0x0c00) AM_RAM /* Sound Memory */
- AM_RANGE(0x83c0, 0x83ff) AM_MIRROR(0x0c00) AM_DEVREADWRITE("namco", namco_device, polepos_sound_r, polepos_sound_w) /* Sound data */
-
- AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0eff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w)
- AM_RANGE(0x9100, 0x9100) AM_MIRROR(0x0eff) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x0cff) AM_READ(polepos_ready_r) /* READY */
- AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x0cf8) AM_DEVWRITE("latch", ls259_device, write_d0)
- AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x0cff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xa200, 0xa200) AM_MIRROR(0x0cff) AM_DEVWRITE("polepos", polepos_sound_device, polepos_engine_sound_lsb_w) /* Car Sound ( Lower Nibble ) */
- AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x0cff) AM_DEVWRITE("polepos", polepos_sound_device, polepos_engine_sound_msb_w) /* Car Sound ( Upper Nibble ) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polepos_state::z80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(polepos_adc_r) AM_WRITENOP
-ADDRESS_MAP_END
+void polepos_state::z80_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x37ff).mirror(0x0800).ram().share("nvram"); /* Battery Backup */
+ map(0x4000, 0x47ff).rw(this, FUNC(polepos_state::polepos_sprite_r), FUNC(polepos_state::polepos_sprite_w)); /* Motion Object */
+ map(0x4800, 0x4bff).rw(this, FUNC(polepos_state::polepos_road_r), FUNC(polepos_state::polepos_road_w)); /* Road Memory */
+ map(0x4c00, 0x4fff).rw(this, FUNC(polepos_state::polepos_alpha_r), FUNC(polepos_state::polepos_alpha_w)); /* Alphanumeric (char ram) */
+ map(0x5000, 0x57ff).rw(this, FUNC(polepos_state::polepos_view_r), FUNC(polepos_state::polepos_view_w)); /* Background Memory */
+
+ map(0x8000, 0x83bf).mirror(0x0c00).ram(); /* Sound Memory */
+ map(0x83c0, 0x83ff).mirror(0x0c00).rw(m_namco_sound, FUNC(namco_device::polepos_sound_r), FUNC(namco_device::polepos_sound_w)); /* Sound data */
+
+ map(0x9000, 0x9000).mirror(0x0eff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w));
+ map(0x9100, 0x9100).mirror(0x0eff).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w));
+ map(0xa000, 0xa000).mirror(0x0cff).r(this, FUNC(polepos_state::polepos_ready_r)); /* READY */
+ map(0xa000, 0xa007).mirror(0x0cf8).w(m_latch, FUNC(ls259_device::write_d0));
+ map(0xa100, 0xa100).mirror(0x0cff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xa200, 0xa200).mirror(0x0cff).w("polepos", FUNC(polepos_sound_device::polepos_engine_sound_lsb_w)); /* Car Sound ( Lower Nibble ) */
+ map(0xa300, 0xa300).mirror(0x0cff).w("polepos", FUNC(polepos_sound_device::polepos_engine_sound_msb_w)); /* Car Sound ( Upper Nibble ) */
+}
+
+void polepos_state::z80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(polepos_state::polepos_adc_r)).nopw();
+}
/* the same memory map is used by both Z8002 CPUs; all RAM areas are shared */
-ADDRESS_MAP_START(polepos_state::z8002_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(polepos_sprite16_r, polepos_sprite16_w) AM_SHARE("sprite16_memory") /* Motion Object */
- AM_RANGE(0x9000, 0x97ff) AM_READWRITE(polepos_road16_r, polepos_road16_w) AM_SHARE("road16_memory") /* Road Memory */
- AM_RANGE(0x9800, 0x9fff) AM_READWRITE(polepos_alpha16_r, polepos_alpha16_w) AM_SHARE("alpha16_memory") /* Alphanumeric (char ram) */
- AM_RANGE(0xa000, 0xafff) AM_READWRITE(polepos_view16_r, polepos_view16_w) AM_SHARE("view16_memory") /* Background memory */
- AM_RANGE(0xc000, 0xc001) AM_MIRROR(0x38fe) AM_WRITE(polepos_view16_hscroll_w) /* Background horz scroll position */
- AM_RANGE(0xc100, 0xc101) AM_MIRROR(0x38fe) AM_WRITE(polepos_road16_vscroll_w) /* Road vertical position */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polepos_state::z8002_map_1)
- AM_IMPORT_FROM(z8002_map)
- AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x0ffe) AM_WRITE(polepos_z8002_nvi_enable_w<true>) /* NVI enable - *NOT* shared by the two CPUs */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polepos_state::z8002_map_2)
- AM_IMPORT_FROM(z8002_map)
- AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x0ffe) AM_WRITE(polepos_z8002_nvi_enable_w<false>) /* NVI enable - *NOT* shared by the two CPUs */
-ADDRESS_MAP_END
+void polepos_state::z8002_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).rw(this, FUNC(polepos_state::polepos_sprite16_r), FUNC(polepos_state::polepos_sprite16_w)).share("sprite16_memory"); /* Motion Object */
+ map(0x9000, 0x97ff).rw(this, FUNC(polepos_state::polepos_road16_r), FUNC(polepos_state::polepos_road16_w)).share("road16_memory"); /* Road Memory */
+ map(0x9800, 0x9fff).rw(this, FUNC(polepos_state::polepos_alpha16_r), FUNC(polepos_state::polepos_alpha16_w)).share("alpha16_memory"); /* Alphanumeric (char ram) */
+ map(0xa000, 0xafff).rw(this, FUNC(polepos_state::polepos_view16_r), FUNC(polepos_state::polepos_view16_w)).share("view16_memory"); /* Background memory */
+ map(0xc000, 0xc001).mirror(0x38fe).w(this, FUNC(polepos_state::polepos_view16_hscroll_w)); /* Background horz scroll position */
+ map(0xc100, 0xc101).mirror(0x38fe).w(this, FUNC(polepos_state::polepos_road16_vscroll_w)); /* Road vertical position */
+}
+
+void polepos_state::z8002_map_1(address_map &map)
+{
+ z8002_map(map);
+ map(0x6000, 0x6001).mirror(0x0ffe).w(this, FUNC(polepos_state::polepos_z8002_nvi_enable_w<true>)); /* NVI enable - *NOT* shared by the two CPUs */
+}
+
+void polepos_state::z8002_map_2(address_map &map)
+{
+ z8002_map(map);
+ map(0x6000, 0x6001).mirror(0x0ffe).w(this, FUNC(polepos_state::polepos_z8002_nvi_enable_w<false>)); /* NVI enable - *NOT* shared by the two CPUs */
+}
/*********************************************************************
@@ -958,27 +963,30 @@ WRITE8_MEMBER(polepos_state::bootleg_soundlatch_w)
m_soundlatch->write(space, 0, data | 0xfc);
}
-ADDRESS_MAP_START(polepos_state::topracern_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_IMPORT_FROM(z80_io)
+void polepos_state::topracern_io(address_map &map)
+{
+ map.global_mask(0xff);
+ z80_io(map);
// extra direct mapped inputs read
- AM_RANGE(0x02, 0x02) AM_READ_PORT("STEER") AM_WRITENOP
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN0") AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWA") AM_WRITENOP // explosion sound trigger
- AM_RANGE(0x05, 0x05) AM_READ_PORT("DSWB") AM_WRITE(bootleg_soundlatch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polepos_state::sound_z80_bootleg_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2700, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, acknowledge_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polepos_state::sound_z80_bootleg_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("tms", tms5220_device, status_r, data_w)
-ADDRESS_MAP_END
+ map(0x02, 0x02).portr("STEER").nopw();
+ map(0x03, 0x03).portr("IN0").w("dac", FUNC(dac_byte_interface::write));
+ map(0x04, 0x04).portr("DSWA").nopw(); // explosion sound trigger
+ map(0x05, 0x05).portr("DSWB").w(this, FUNC(polepos_state::bootleg_soundlatch_w));
+}
+
+void polepos_state::sound_z80_bootleg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2700, 0x27ff).ram();
+ map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_r));
+}
+
+void polepos_state::sound_z80_bootleg_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w));
+}
MACHINE_CONFIG_START(polepos_state::topracern)
diff --git a/src/mame/drivers/polgar.cpp b/src/mame/drivers/polgar.cpp
index 2329f73f018..03abe828a88 100644
--- a/src/mame/drivers/polgar.cpp
+++ b/src/mame/drivers/polgar.cpp
@@ -170,17 +170,18 @@ WRITE8_MEMBER(mephisto_polgar_state::polgar_led_w)
output().set_led_value(100 + offset, BIT(data, 7));
}
-ADDRESS_MAP_START(mephisto_polgar_state::polgar_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2000, 0x2000 ) AM_DEVWRITE("display", mephisto_display_modul_device, latch_w)
- AM_RANGE( 0x2004, 0x2004 ) AM_DEVWRITE("display", mephisto_display_modul_device, io_w)
- AM_RANGE( 0x2400, 0x2400 ) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x2c00, 0x2c07 ) AM_READ(polgar_keys_r)
- AM_RANGE( 0x3000, 0x3000 ) AM_DEVREAD("board", mephisto_board_device, input_r)
- AM_RANGE( 0x3400, 0x3405 ) AM_WRITE(polgar_led_w)
- AM_RANGE( 0x4000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+void mephisto_polgar_state::polgar_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x2000).w("display", FUNC(mephisto_display_modul_device::latch_w));
+ map(0x2004, 0x2004).w("display", FUNC(mephisto_display_modul_device::io_w));
+ map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
+ map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0x2c00, 0x2c07).r(this, FUNC(mephisto_polgar_state::polgar_keys_r));
+ map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x3400, 0x3405).w(this, FUNC(mephisto_polgar_state::polgar_led_w));
+ map(0x4000, 0xffff).rom();
+}
WRITE8_MEMBER(mephisto_risc_state::bank_w)
@@ -236,29 +237,31 @@ TIMER_CALLBACK_MEMBER(mephisto_risc_state::disable_boot_rom)
remove_boot_rom();
}
-ADDRESS_MAP_START(mephisto_risc_state::mrisc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2000, 0x2000 ) AM_DEVWRITE("display", mephisto_display_modul_device, latch_w)
- AM_RANGE( 0x2004, 0x2004 ) AM_DEVWRITE("display", mephisto_display_modul_device, io_w)
- AM_RANGE( 0x2c00, 0x2c07 ) AM_READ(polgar_keys_r)
- AM_RANGE( 0x2400, 0x2400 ) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x3000, 0x3000 ) AM_DEVREAD("board", mephisto_board_device, input_r)
- AM_RANGE( 0x3400, 0x3405 ) AM_WRITE(polgar_led_w)
- AM_RANGE( 0x3406, 0x3407 ) AM_WRITE(bank_w)
- AM_RANGE( 0x3800, 0x3800 ) AM_WRITE(latch1_w)
- AM_RANGE( 0x3c00, 0x3c00 ) AM_READ(latch0_r)
- AM_RANGE( 0x4000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("rombank")
-ADDRESS_MAP_END
+void mephisto_risc_state::mrisc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x2000).w("display", FUNC(mephisto_display_modul_device::latch_w));
+ map(0x2004, 0x2004).w("display", FUNC(mephisto_display_modul_device::io_w));
+ map(0x2c00, 0x2c07).r(this, FUNC(mephisto_risc_state::polgar_keys_r));
+ map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
+ map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
+ map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x3400, 0x3405).w(this, FUNC(mephisto_risc_state::polgar_led_w));
+ map(0x3406, 0x3407).w(this, FUNC(mephisto_risc_state::bank_w));
+ map(0x3800, 0x3800).w(this, FUNC(mephisto_risc_state::latch1_w));
+ map(0x3c00, 0x3c00).r(this, FUNC(mephisto_risc_state::latch0_r));
+ map(0x4000, 0x7fff).rom();
+ map(0x8000, 0xffff).bankr("rombank");
+}
-ADDRESS_MAP_START(mephisto_risc_state::mrisc_arm_mem)
- AM_RANGE( 0x00000000, 0x000fffff ) AM_RAM
- AM_RANGE( 0x00400000, 0x007fffff ) AM_READWRITE8(latch1_r, latch0_w, 0x000000ff)
- AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(disable_boot_rom_r)
-ADDRESS_MAP_END
+void mephisto_risc_state::mrisc_arm_mem(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram();
+ map(0x00400000, 0x007fffff).rw(this, FUNC(mephisto_risc_state::latch1_r), FUNC(mephisto_risc_state::latch0_w)).umask32(0x000000ff);
+ map(0x01800000, 0x01800003).r(this, FUNC(mephisto_risc_state::disable_boot_rom_r));
+}
READ8_MEMBER(mephisto_milano_state::milano_input_r)
@@ -289,18 +292,19 @@ WRITE8_MEMBER(mephisto_milano_state::milano_io_w)
m_display->io_w(space, offset, data & 0x0f);
}
-ADDRESS_MAP_START(mephisto_milano_state::milano_mem)
- AM_RANGE( 0x0000, 0x1fbf ) AM_RAM AM_SHARE("nvram")
+void mephisto_milano_state::milano_mem(address_map &map)
+{
+ map(0x0000, 0x1fbf).ram().share("nvram");
- AM_RANGE( 0x1fc0, 0x1fc0 ) AM_DEVWRITE("display", mephisto_display_modul_device, latch_w)
- AM_RANGE( 0x1fd0, 0x1fd0 ) AM_WRITE(milano_led_w)
- AM_RANGE( 0x1fe0, 0x1fe0 ) AM_READ(milano_input_r)
- AM_RANGE( 0x1fe8, 0x1fed ) AM_WRITE(polgar_led_w)
- AM_RANGE( 0x1fd8, 0x1fdf ) AM_READ(polgar_keys_r)
- AM_RANGE( 0x1ff0, 0x1ff0 ) AM_WRITE(milano_io_w)
+ map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display_modul_device::latch_w));
+ map(0x1fd0, 0x1fd0).w(this, FUNC(mephisto_milano_state::milano_led_w));
+ map(0x1fe0, 0x1fe0).r(this, FUNC(mephisto_milano_state::milano_input_r));
+ map(0x1fe8, 0x1fed).w(this, FUNC(mephisto_milano_state::polgar_led_w));
+ map(0x1fd8, 0x1fdf).r(this, FUNC(mephisto_milano_state::polgar_keys_r));
+ map(0x1ff0, 0x1ff0).w(this, FUNC(mephisto_milano_state::milano_io_w));
- AM_RANGE( 0x2000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+ map(0x2000, 0xffff).rom();
+}
READ8_MEMBER(mephisto_modena_state::modena_input_r)
@@ -338,14 +342,15 @@ WRITE8_MEMBER(mephisto_modena_state::modena_digits_w)
m_digits_idx = (m_digits_idx + 1) & 3;
}
-ADDRESS_MAP_START(mephisto_modena_state::modena_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x4000, 0x4000 ) AM_WRITE(modena_digits_w)
- AM_RANGE( 0x5000, 0x5000 ) AM_WRITE(modena_led_w)
- AM_RANGE( 0x6000, 0x6000 ) AM_WRITE(modena_io_w)
- AM_RANGE( 0x7000, 0x7fff ) AM_READ(modena_input_r)
- AM_RANGE( 0x8000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+void mephisto_modena_state::modena_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x4000, 0x4000).w(this, FUNC(mephisto_modena_state::modena_digits_w));
+ map(0x5000, 0x5000).w(this, FUNC(mephisto_modena_state::modena_led_w));
+ map(0x6000, 0x6000).w(this, FUNC(mephisto_modena_state::modena_io_w));
+ map(0x7000, 0x7fff).r(this, FUNC(mephisto_modena_state::modena_input_r));
+ map(0x8000, 0xffff).rom();
+}
INTERRUPT_GEN_MEMBER(mephisto_academy_state::academy_irq)
@@ -385,17 +390,18 @@ READ8_MEMBER(mephisto_academy_state::academy_input_r)
return data ^ 0xff;
}
-ADDRESS_MAP_START(mephisto_academy_state::academy_mem)
- AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x2400, 0x2400 ) AM_READ(academy_input_r)
- AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w)
- AM_RANGE( 0x2c00, 0x2c00 ) AM_DEVWRITE("board", mephisto_board_device, led_w)
- AM_RANGE( 0x3002, 0x3002 ) AM_WRITE(academy_beeper_w)
- AM_RANGE( 0x3001, 0x3001 ) AM_WRITE(academy_nmi_w)
- AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(academy_led_w)
- AM_RANGE( 0x3800, 0x3801 ) AM_DEVREADWRITE("display:hd44780", hd44780_device, read, write)
- AM_RANGE( 0x4000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
+void mephisto_academy_state::academy_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2400, 0x2400).r(this, FUNC(mephisto_academy_state::academy_input_r));
+ map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w));
+ map(0x3002, 0x3002).w(this, FUNC(mephisto_academy_state::academy_beeper_w));
+ map(0x3001, 0x3001).w(this, FUNC(mephisto_academy_state::academy_nmi_w));
+ map(0x3400, 0x3400).w(this, FUNC(mephisto_academy_state::academy_led_w));
+ map(0x3800, 0x3801).rw("display:hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write));
+ map(0x4000, 0xffff).rom();
+}
static INPUT_PORTS_START( polgar )
PORT_START("KEY")
diff --git a/src/mame/drivers/policetr.cpp b/src/mame/drivers/policetr.cpp
index f3b242582d7..7ed8b790e33 100644
--- a/src/mame/drivers/policetr.cpp
+++ b/src/mame/drivers/policetr.cpp
@@ -241,42 +241,44 @@ WRITE32_MEMBER(policetr_state::speedup_w)
*
*************************************/
-ADDRESS_MAP_START(policetr_state::policetr_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x00200000, 0x0020000f) AM_WRITE(policetr_video_w)
- AM_RANGE(0x00400000, 0x00400003) AM_READ(policetr_video_r)
- AM_RANGE(0x00500000, 0x00500003) AM_WRITENOP // copies ROM here at startup, plus checksum
- AM_RANGE(0x00600000, 0x00600003) AM_READ(bsmt2000_data_r)
- AM_RANGE(0x00700000, 0x00700003) AM_WRITE(policetr_bsmt2000_reg_w)
- AM_RANGE(0x00800000, 0x00800003) AM_WRITE(policetr_bsmt2000_data_w)
- AM_RANGE(0x00900000, 0x00900003) AM_WRITE(policetr_palette_offset_w)
- AM_RANGE(0x00920000, 0x00920003) AM_WRITE(policetr_palette_data_w)
- AM_RANGE(0x00a00000, 0x00a00003) AM_WRITE(control_w)
- AM_RANGE(0x00a00000, 0x00a00003) AM_READ_PORT("IN0")
- AM_RANGE(0x00a20000, 0x00a20003) AM_READ_PORT("IN1")
- AM_RANGE(0x00a40000, 0x00a40003) AM_READ_PORT("DSW")
- AM_RANGE(0x00e00000, 0x00e00003) AM_WRITENOP // watchdog???
- AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(policetr_state::sshooter_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x00200000, 0x00200003) AM_WRITE(policetr_bsmt2000_data_w)
- AM_RANGE(0x00300000, 0x00300003) AM_WRITE(policetr_palette_offset_w)
- AM_RANGE(0x00320000, 0x00320003) AM_WRITE(policetr_palette_data_w)
- AM_RANGE(0x00400000, 0x00400003) AM_READ(policetr_video_r)
- AM_RANGE(0x00500000, 0x00500003) AM_WRITENOP // copies ROM here at startup, plus checksum
- AM_RANGE(0x00600000, 0x00600003) AM_READ(bsmt2000_data_r)
- AM_RANGE(0x00700000, 0x00700003) AM_WRITE(policetr_bsmt2000_reg_w)
- AM_RANGE(0x00800000, 0x0080000f) AM_WRITE(policetr_video_w)
- AM_RANGE(0x00a00000, 0x00a00003) AM_WRITE(control_w)
- AM_RANGE(0x00a00000, 0x00a00003) AM_READ_PORT("IN0")
- AM_RANGE(0x00a20000, 0x00a20003) AM_READ_PORT("IN1")
- AM_RANGE(0x00a40000, 0x00a40003) AM_READ_PORT("DSW")
- AM_RANGE(0x00e00000, 0x00e00003) AM_WRITENOP // watchdog???
- AM_RANGE(0x1fc00000, 0x1fcfffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void policetr_state::policetr_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().share("rambase");
+ map(0x00200000, 0x0020000f).w(this, FUNC(policetr_state::policetr_video_w));
+ map(0x00400000, 0x00400003).r(this, FUNC(policetr_state::policetr_video_r));
+ map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum
+ map(0x00600000, 0x00600003).r(this, FUNC(policetr_state::bsmt2000_data_r));
+ map(0x00700000, 0x00700003).w(this, FUNC(policetr_state::policetr_bsmt2000_reg_w));
+ map(0x00800000, 0x00800003).w(this, FUNC(policetr_state::policetr_bsmt2000_data_w));
+ map(0x00900000, 0x00900003).w(this, FUNC(policetr_state::policetr_palette_offset_w));
+ map(0x00920000, 0x00920003).w(this, FUNC(policetr_state::policetr_palette_data_w));
+ map(0x00a00000, 0x00a00003).w(this, FUNC(policetr_state::control_w));
+ map(0x00a00000, 0x00a00003).portr("IN0");
+ map(0x00a20000, 0x00a20003).portr("IN1");
+ map(0x00a40000, 0x00a40003).portr("DSW");
+ map(0x00e00000, 0x00e00003).nopw(); // watchdog???
+ map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0);
+}
+
+
+void policetr_state::sshooter_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().share("rambase");
+ map(0x00200000, 0x00200003).w(this, FUNC(policetr_state::policetr_bsmt2000_data_w));
+ map(0x00300000, 0x00300003).w(this, FUNC(policetr_state::policetr_palette_offset_w));
+ map(0x00320000, 0x00320003).w(this, FUNC(policetr_state::policetr_palette_data_w));
+ map(0x00400000, 0x00400003).r(this, FUNC(policetr_state::policetr_video_r));
+ map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum
+ map(0x00600000, 0x00600003).r(this, FUNC(policetr_state::bsmt2000_data_r));
+ map(0x00700000, 0x00700003).w(this, FUNC(policetr_state::policetr_bsmt2000_reg_w));
+ map(0x00800000, 0x0080000f).w(this, FUNC(policetr_state::policetr_video_w));
+ map(0x00a00000, 0x00a00003).w(this, FUNC(policetr_state::control_w));
+ map(0x00a00000, 0x00a00003).portr("IN0");
+ map(0x00a20000, 0x00a20003).portr("IN1");
+ map(0x00a40000, 0x00a40003).portr("DSW");
+ map(0x00e00000, 0x00e00003).nopw(); // watchdog???
+ map(0x1fc00000, 0x1fcfffff).rom().region("user1", 0);
+}
diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp
index c933f5dec30..a9ba88f62fd 100644
--- a/src/mame/drivers/poly.cpp
+++ b/src/mame/drivers/poly.cpp
@@ -82,27 +82,28 @@ private:
};
-ADDRESS_MAP_START(poly_state::poly_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x9fff) AM_RAM
- AM_RANGE(0xa000,0xcfff) AM_ROM
- AM_RANGE(0xd000,0xdfff) AM_RAM
- AM_RANGE(0xe000,0xe003) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //video control PIA 6821
- AM_RANGE(0xe004,0xe005) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xe006,0xe006) AM_WRITE(baud_rate_w)
- AM_RANGE(0xe00c,0xe00f) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //keyboard PIA 6821
- AM_RANGE(0xe020,0xe027) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) //timer 6840
- AM_RANGE(0xe030,0xe037) AM_DEVREADWRITE("adlc", mc6854_device, read, write) //Data Link Controller 6854
- AM_RANGE(0xe040,0xe040) AM_NOP //Set protect flip-flop after 1 E-cycle
- AM_RANGE(0xe050,0xe05f) AM_RAM //Dynamic Address Translater (arranges memory banks)
+void poly_state::poly_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x9fff).ram();
+ map(0xa000, 0xcfff).rom();
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //video control PIA 6821
+ map(0xe004, 0xe005).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe006, 0xe006).w(this, FUNC(poly_state::baud_rate_w));
+ map(0xe00c, 0xe00f).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //keyboard PIA 6821
+ map(0xe020, 0xe027).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); //timer 6840
+ map(0xe030, 0xe037).rw("adlc", FUNC(mc6854_device::read), FUNC(mc6854_device::write)); //Data Link Controller 6854
+ map(0xe040, 0xe040).noprw(); //Set protect flip-flop after 1 E-cycle
+ map(0xe050, 0xe05f).ram(); //Dynamic Address Translater (arranges memory banks)
// AM_RANGE(0xe060,0xe060) Select Map 1
// AM_RANGE(0xe070,0xe070) Select Map 2
- AM_RANGE(0xe800,0xebbf) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xebc0,0xebff) AM_RAM
- AM_RANGE(0xec00,0xefbf) AM_RAM // screen 2 AM_SHARE("videoram")
- AM_RANGE(0xefc0,0xefff) AM_RAM
- AM_RANGE(0xf000,0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xe800, 0xebbf).ram().share("videoram");
+ map(0xebc0, 0xebff).ram();
+ map(0xec00, 0xefbf).ram(); // screen 2 AM_SHARE("videoram")
+ map(0xefc0, 0xefff).ram();
+ map(0xf000, 0xffff).rom();
+}
/* Input ports */
diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp
index a14f460dc8f..3e584779e4b 100644
--- a/src/mame/drivers/poly88.cpp
+++ b/src/mame/drivers/poly88.cpp
@@ -48,40 +48,44 @@
#include "speaker.h"
-ADDRESS_MAP_START(poly88_state::poly88_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_ROM // Monitor ROM
- AM_RANGE(0x0400, 0x0bff) AM_ROM // ROM Expansion
- AM_RANGE(0x0c00, 0x0dff) AM_RAM AM_MIRROR(0x200) // System RAM (mirrored)
- AM_RANGE(0x1000, 0x1fff) AM_ROM // System Expansion area
- AM_RANGE(0x2000, 0x3fff) AM_RAM // Minimal user RAM area
- AM_RANGE(0x4000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("video_ram") // Video RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(poly88_state::poly88_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(poly88_baud_rate_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(poly88_intr_w)
- AM_RANGE(0xf8, 0xf8) AM_READ(poly88_keyboard_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(poly88_state::poly8813_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_ROM // Monitor ROM
- AM_RANGE(0x0400, 0x0bff) AM_ROM // Disk System ROM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM // System RAM
- AM_RANGE(0x1800, 0x1bff) AM_RAM AM_SHARE("video_ram") // Video RAM
- AM_RANGE(0x2000, 0xffff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(poly88_state::poly8813_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void poly88_state::poly88_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom(); // Monitor ROM
+ map(0x0400, 0x0bff).rom(); // ROM Expansion
+ map(0x0c00, 0x0dff).ram().mirror(0x200); // System RAM (mirrored)
+ map(0x1000, 0x1fff).rom(); // System Expansion area
+ map(0x2000, 0x3fff).ram(); // Minimal user RAM area
+ map(0x4000, 0xf7ff).ram();
+ map(0xf800, 0xfbff).ram().share("video_ram"); // Video RAM
+}
+
+void poly88_state::poly88_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x04, 0x04).w(this, FUNC(poly88_state::poly88_baud_rate_w));
+ map(0x08, 0x08).w(this, FUNC(poly88_state::poly88_intr_w));
+ map(0xf8, 0xf8).r(this, FUNC(poly88_state::poly88_keyboard_r));
+}
+
+void poly88_state::poly8813_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom(); // Monitor ROM
+ map(0x0400, 0x0bff).rom(); // Disk System ROM
+ map(0x0c00, 0x0fff).ram(); // System RAM
+ map(0x1800, 0x1bff).ram().share("video_ram"); // Video RAM
+ map(0x2000, 0xffff).ram(); // RAM
+}
+
+void poly88_state::poly8813_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
/* Input ports */
static INPUT_PORTS_START( poly88 )
diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp
index 7b5d55788e0..2041ed1e5c4 100644
--- a/src/mame/drivers/poly880.cpp
+++ b/src/mame/drivers/poly880.cpp
@@ -63,22 +63,24 @@ WRITE8_MEMBER( poly880_state::cldig_w )
/* Memory Maps */
-ADDRESS_MAP_START(poly880_state::poly880_mem)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_ROM
- AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x3c00) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(poly880_state::poly880_io)
- ADDRESS_MAP_GLOBAL_MASK(0xaf)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_WRITE(cldig_w)
-ADDRESS_MAP_END
+void poly880_state::poly880_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x0c00).rom();
+ map(0x1000, 0x13ff).mirror(0x0c00).rom();
+ map(0x2000, 0x23ff).mirror(0x0c00).rom();
+ map(0x3000, 0x33ff).mirror(0x0c00).rom();
+ map(0x4000, 0x43ff).mirror(0x3c00).ram();
+ map(0x8000, 0xffff).bankrw("bank1");
+}
+
+void poly880_state::poly880_io(address_map &map)
+{
+ map.global_mask(0xaf);
+ map(0x80, 0x83).rw(Z80PIO1_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x84, 0x87).rw(Z80PIO2_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x88, 0x8b).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0xa0, 0xa0).mirror(0x0f).w(this, FUNC(poly880_state::cldig_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp
index 66869e4e059..71d5160831b 100644
--- a/src/mame/drivers/polyplay.cpp
+++ b/src/mame/drivers/polyplay.cpp
@@ -232,39 +232,43 @@ INPUT_CHANGED_MEMBER(polyplay_state::input_changed)
}
/* memory mapping */
-ADDRESS_MAP_START(polyplay_state::polyplay_mem_zre)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0c00, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x8fff) AM_ROM
- AM_RANGE(0xe800, 0xebff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0xec00, 0xf7ff) AM_RAM_WRITE(polyplay_characterram_w) AM_SHARE("characterram")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void polyplay_state::polyplay_mem_zre(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0c00, 0x0fff).ram();
+ map(0x1000, 0x8fff).rom();
+ map(0xe800, 0xebff).rom().region("gfx1", 0);
+ map(0xec00, 0xf7ff).ram().w(this, FUNC(polyplay_state::polyplay_characterram_w)).share("characterram");
+ map(0xf800, 0xffff).ram().share("videoram");
+}
-ADDRESS_MAP_START(polyplay_state::polyplay_mem_zrepp)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
+void polyplay_state::polyplay_mem_zrepp(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
- AM_RANGE(0xc000, 0xcfff) AM_RAM
+ map(0xc000, 0xcfff).ram();
- AM_RANGE(0xd000, 0xd7ff) AM_ROM AM_REGION("gfx1", 0)
+ map(0xd000, 0xd7ff).rom().region("gfx1", 0);
- AM_RANGE(0xea00, 0xebff) AM_RAM
- AM_RANGE(0xec00, 0xf7ff) AM_RAM_WRITE(polyplay_characterram_w) AM_SHARE("characterram")
+ map(0xea00, 0xebff).ram();
+ map(0xec00, 0xf7ff).ram().w(this, FUNC(polyplay_state::polyplay_characterram_w)).share("characterram");
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).ram().share("videoram");
+}
/* port mapping */
-ADDRESS_MAP_START(polyplay_state::polyplay_io_zre)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(polyplay_state::polyplay_io_zrepp)
- AM_IMPORT_FROM(polyplay_io_zre)
- AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE(Z80SIO_TAG, z80sio_device, cd_ba_r, cd_ba_w)
-ADDRESS_MAP_END
+void polyplay_state::polyplay_io_zre(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x84, 0x87).rw(m_z80pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
+
+void polyplay_state::polyplay_io_zrepp(address_map &map)
+{
+ polyplay_io_zre(map);
+ map(0x88, 0x8b).rw(m_z80sio, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+}
static INPUT_PORTS_START( polyplay )
PORT_START("IN0")
diff --git a/src/mame/drivers/poolshrk.cpp b/src/mame/drivers/poolshrk.cpp
index d83a888d04c..d3c4e33d3a4 100644
--- a/src/mame/drivers/poolshrk.cpp
+++ b/src/mame/drivers/poolshrk.cpp
@@ -101,23 +101,24 @@ READ8_MEMBER(poolshrk_state::irq_reset_r)
}
-ADDRESS_MAP_START(poolshrk_state::poolshrk_cpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x2300) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x2000) AM_WRITEONLY AM_SHARE("playfield_ram")
- AM_RANGE(0x0800, 0x080f) AM_MIRROR(0x23f0) AM_WRITEONLY AM_SHARE("hpos_ram")
- AM_RANGE(0x0c00, 0x0c0f) AM_MIRROR(0x23f0) AM_WRITEONLY AM_SHARE("vpos_ram")
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2000) AM_READWRITE(input_r, watchdog_w)
- AM_RANGE(0x1400, 0x17ff) AM_MIRROR(0x2000) AM_WRITE(scratch_sound_w)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x2000) AM_WRITE(score_sound_w)
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x2000) AM_WRITE(click_sound_w)
- AM_RANGE(0x4000, 0x4000) AM_NOP /* diagnostic ROM location */
- AM_RANGE(0x6000, 0x63ff) AM_WRITE(da_latch_w)
- AM_RANGE(0x6400, 0x67ff) AM_WRITE(bump_sound_w)
- AM_RANGE(0x6800, 0x6bff) AM_READ(irq_reset_r)
- AM_RANGE(0x6c00, 0x6fff) AM_WRITE(led_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void poolshrk_state::poolshrk_cpu_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).mirror(0x2300).ram();
+ map(0x0400, 0x07ff).mirror(0x2000).writeonly().share("playfield_ram");
+ map(0x0800, 0x080f).mirror(0x23f0).writeonly().share("hpos_ram");
+ map(0x0c00, 0x0c0f).mirror(0x23f0).writeonly().share("vpos_ram");
+ map(0x1000, 0x13ff).mirror(0x2000).rw(this, FUNC(poolshrk_state::input_r), FUNC(poolshrk_state::watchdog_w));
+ map(0x1400, 0x17ff).mirror(0x2000).w(this, FUNC(poolshrk_state::scratch_sound_w));
+ map(0x1800, 0x1bff).mirror(0x2000).w(this, FUNC(poolshrk_state::score_sound_w));
+ map(0x1c00, 0x1fff).mirror(0x2000).w(this, FUNC(poolshrk_state::click_sound_w));
+ map(0x4000, 0x4000).noprw(); /* diagnostic ROM location */
+ map(0x6000, 0x63ff).w(this, FUNC(poolshrk_state::da_latch_w));
+ map(0x6400, 0x67ff).w(this, FUNC(poolshrk_state::bump_sound_w));
+ map(0x6800, 0x6bff).r(this, FUNC(poolshrk_state::irq_reset_r));
+ map(0x6c00, 0x6fff).w(this, FUNC(poolshrk_state::led_w));
+ map(0x7000, 0x7fff).rom();
+}
static INPUT_PORTS_START( poolshrk )
diff --git a/src/mame/drivers/pooyan.cpp b/src/mame/drivers/pooyan.cpp
index f4423db46f4..a45a8f749fa 100644
--- a/src/mame/drivers/pooyan.cpp
+++ b/src/mame/drivers/pooyan.cpp
@@ -64,22 +64,23 @@ WRITE_LINE_MEMBER(pooyan_state::coin_counter_2_w)
*
*************************************/
-ADDRESS_MAP_START(pooyan_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9400, 0x94ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x5e7f) AM_READ_PORT("DSW1")
- AM_RANGE(0xa080, 0xa080) AM_MIRROR(0x5e1f) AM_READ_PORT("IN0")
- AM_RANGE(0xa0a0, 0xa0a0) AM_MIRROR(0x5e1f) AM_READ_PORT("IN1")
- AM_RANGE(0xa0c0, 0xa0c0) AM_MIRROR(0x5e1f) AM_READ_PORT("IN2")
- AM_RANGE(0xa0e0, 0xa0e0) AM_MIRROR(0x5e1f) AM_READ_PORT("DSW0")
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x5e7f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x5e7f) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w)
- AM_RANGE(0xa180, 0xa187) AM_MIRROR(0x5e78) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void pooyan_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(pooyan_state::colorram_w)).share("colorram");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(pooyan_state::videoram_w)).share("videoram");
+ map(0x8800, 0x8fff).ram();
+ map(0x9000, 0x90ff).mirror(0x0b00).ram().share("spriteram");
+ map(0x9400, 0x94ff).mirror(0x0b00).ram().share("spriteram2");
+ map(0xa000, 0xa000).mirror(0x5e7f).portr("DSW1");
+ map(0xa080, 0xa080).mirror(0x5e1f).portr("IN0");
+ map(0xa0a0, 0xa0a0).mirror(0x5e1f).portr("IN1");
+ map(0xa0c0, 0xa0c0).mirror(0x5e1f).portr("IN2");
+ map(0xa0e0, 0xa0e0).mirror(0x5e1f).portr("DSW0");
+ map(0xa000, 0xa000).mirror(0x5e7f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xa100, 0xa100).mirror(0x5e7f).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w));
+ map(0xa180, 0xa187).mirror(0x5e78).w("mainlatch", FUNC(ls259_device::write_d0));
+}
diff --git a/src/mame/drivers/popeye.cpp b/src/mame/drivers/popeye.cpp
index e5b03097e07..3ebcb377092 100644
--- a/src/mame/drivers/popeye.cpp
+++ b/src/mame/drivers/popeye.cpp
@@ -206,17 +206,18 @@ WRITE8_MEMBER(tnx1_state::protection_w)
-ADDRESS_MAP_START(tnx1_state::maincpu_program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_WRITENOP // Attempts to initialize this area with 00 on boot
- AM_RANGE(0x8c00, 0x8e7f) AM_RAM AM_SHARE("dmasource")
- AM_RANGE(0x8e80, 0x8fff) AM_RAM
- AM_RANGE(0xa000, 0xa3ff) AM_WRITE(popeye_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa400, 0xa7ff) AM_WRITE(popeye_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xcfff) AM_WRITE(background_w)
- AM_RANGE(0xe000, 0xe001) AM_READWRITE(protection_r,protection_w)
-ADDRESS_MAP_END
+void tnx1_state::maincpu_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).nopw(); // Attempts to initialize this area with 00 on boot
+ map(0x8c00, 0x8e7f).ram().share("dmasource");
+ map(0x8e80, 0x8fff).ram();
+ map(0xa000, 0xa3ff).w(this, FUNC(tnx1_state::popeye_videoram_w)).share("videoram");
+ map(0xa400, 0xa7ff).w(this, FUNC(tnx1_state::popeye_colorram_w)).share("colorram");
+ map(0xc000, 0xcfff).w(this, FUNC(tnx1_state::background_w));
+ map(0xe000, 0xe001).rw(this, FUNC(tnx1_state::protection_r), FUNC(tnx1_state::protection_w));
+}
ADDRESS_MAP_START(tpp2_state::maincpu_program_map)
AM_IMPORT_FROM(tpp1_state::maincpu_program_map)
@@ -236,14 +237,15 @@ ADDRESS_MAP_START(popeyebl_state::maincpu_program_map)
AM_RANGE(0xe000, 0xe01f) AM_ROM AM_REGION("blprot", 0x00)
ADDRESS_MAP_END
-ADDRESS_MAP_START(tnx1_state::maincpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x03, 0x03) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+void tnx1_state::maincpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).portr("P2");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x03, 0x03).r("aysnd", FUNC(ay8910_device::data_r));
+}
CUSTOM_INPUT_MEMBER(tnx1_state::dsw1_read)
diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp
index 2bf5433bb19..d4562ded0b7 100644
--- a/src/mame/drivers/popobear.cpp
+++ b/src/mame/drivers/popobear.cpp
@@ -473,36 +473,38 @@ WRITE8_MEMBER(popobear_state::irq_ack_w)
}
}
-ADDRESS_MAP_START(popobear_state::popobear_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM
- AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("spr") // unknown boundaries, 0x2ff800 contains a sprite list, lower area = sprite gfx
- AM_RANGE(0x300000, 0x3fffff) AM_RAM_WRITE( vram_w ) AM_SHARE("vram") // tile definitions + tilemaps
+void popobear_state::popobear_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom();
+ map(0x210000, 0x21ffff).ram();
+ map(0x280000, 0x2fffff).ram().share("spr"); // unknown boundaries, 0x2ff800 contains a sprite list, lower area = sprite gfx
+ map(0x300000, 0x3fffff).ram().w(this, FUNC(popobear_state::vram_w)).share("vram"); // tile definitions + tilemaps
/* Most if not all of these are vregs */
- AM_RANGE(0x480000, 0x48001f) AM_RAM AM_SHARE("vregs")
- AM_RANGE(0x480020, 0x480023) AM_RAM
- AM_RANGE(0x480028, 0x48002d) AM_RAM
+ map(0x480000, 0x48001f).ram().share("vregs");
+ map(0x480020, 0x480023).ram();
+ map(0x480028, 0x48002d).ram();
// AM_RANGE(0x480020, 0x480021) AM_NOP //AM_READ(480020_r) AM_WRITE(480020_w)
// AM_RANGE(0x480028, 0x480029) AM_NOP //AM_WRITE(480028_w)
// AM_RANGE(0x48002c, 0x48002d) AM_NOP //AM_WRITE(48002c_w)
- AM_RANGE(0x480030, 0x480031) AM_WRITE8(irq_ack_w, 0x00ff)
- AM_RANGE(0x480034, 0x480035) AM_RAM // coin counter or coin lockout
- AM_RANGE(0x48003a, 0x48003b) AM_RAM //AM_READ(48003a_r) AM_WRITE(48003a_w)
+ map(0x480031, 0x480031).w(this, FUNC(popobear_state::irq_ack_w));
+ map(0x480034, 0x480035).ram(); // coin counter or coin lockout
+ map(0x48003a, 0x48003b).ram(); //AM_READ(48003a_r) AM_WRITE(48003a_w)
- AM_RANGE(0x480400, 0x4807ff) AM_RAM AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x480400, 0x4807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0")
- AM_RANGE(0x520000, 0x520001) AM_READ_PORT("IN1")
- AM_RANGE(0x540000, 0x540001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x550000, 0x550003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
+ map(0x500000, 0x500001).portr("IN0");
+ map(0x520000, 0x520001).portr("IN1");
+ map(0x540001, 0x540001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x550000, 0x550003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
- AM_RANGE(0x600000, 0x600001) AM_WRITENOP
- AM_RANGE(0x620000, 0x620001) AM_READ8(_620000_r,0xff00) AM_WRITENOP
- AM_RANGE(0x800000, 0xbfffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x600000, 0x600001).nopw();
+ map(0x620000, 0x620000).r(this, FUNC(popobear_state::_620000_r));
+ map(0x620000, 0x620001).nopw();
+ map(0x800000, 0xbfffff).rom();
+}
static INPUT_PORTS_START( popobear )
diff --git a/src/mame/drivers/popper.cpp b/src/mame/drivers/popper.cpp
index 13bd773ca13..c78c587358b 100644
--- a/src/mame/drivers/popper.cpp
+++ b/src/mame/drivers/popper.cpp
@@ -120,36 +120,38 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(popper_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_NOP
- AM_RANGE(0xc000, 0xc0ff) AM_RAM
- AM_RANGE(0xc100, 0xc6ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xc700, 0xc8ff) AM_RAM
- AM_RANGE(0xc900, 0xceff) AM_RAM AM_SHARE("attribute_ram")
- AM_RANGE(0xcf00, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("shared")
- AM_RANGE(0xe000, 0xe003) AM_MIRROR(0x03fc) AM_READ(inputs_r)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_WRITE(nmi_control_w)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_WRITE(crt_direction_w)
- AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_WRITE(back_color_select_w)
- AM_RANGE(0xe003, 0xe003) AM_MIRROR(0x1ff8) AM_WRITE(vram_page_select_w)
- AM_RANGE(0xe004, 0xe007) AM_MIRROR(0x1ff8) AM_WRITE(intcycle_w)
- AM_RANGE(0xe400, 0xe400) AM_MIRROR(0x03ff) AM_READ(subcpu_nmi_r)
- AM_RANGE(0xe800, 0xf7ff) AM_NOP
- AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x03ff) AM_READ(subcpu_reset_r)
- AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0x03ff) AM_READ(watchdog_clear_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(popper_state::sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_WRITE(ay1_w)
- AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay2", ay8910_device, write_bc1_bc2)
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("shared")
- AM_RANGE(0xe000, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void popper_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).noprw();
+ map(0xc000, 0xc0ff).ram();
+ map(0xc100, 0xc6ff).ram().share("video_ram");
+ map(0xc700, 0xc8ff).ram();
+ map(0xc900, 0xceff).ram().share("attribute_ram");
+ map(0xcf00, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().share("sprite_ram");
+ map(0xd800, 0xdfff).ram().share("shared");
+ map(0xe000, 0xe003).mirror(0x03fc).r(this, FUNC(popper_state::inputs_r));
+ map(0xe000, 0xe000).mirror(0x1ff8).w(this, FUNC(popper_state::nmi_control_w));
+ map(0xe001, 0xe001).mirror(0x1ff8).w(this, FUNC(popper_state::crt_direction_w));
+ map(0xe002, 0xe002).mirror(0x1ff8).w(this, FUNC(popper_state::back_color_select_w));
+ map(0xe003, 0xe003).mirror(0x1ff8).w(this, FUNC(popper_state::vram_page_select_w));
+ map(0xe004, 0xe007).mirror(0x1ff8).w(this, FUNC(popper_state::intcycle_w));
+ map(0xe400, 0xe400).mirror(0x03ff).r(this, FUNC(popper_state::subcpu_nmi_r));
+ map(0xe800, 0xf7ff).noprw();
+ map(0xf800, 0xf800).mirror(0x03ff).r(this, FUNC(popper_state::subcpu_reset_r));
+ map(0xfc00, 0xfc00).mirror(0x03ff).r(this, FUNC(popper_state::watchdog_clear_r));
+}
+
+void popper_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x7fff).noprw();
+ map(0x8000, 0x8003).mirror(0x1ffc).w(this, FUNC(popper_state::ay1_w));
+ map(0xa000, 0xa003).mirror(0x1ffc).w("ay2", FUNC(ay8910_device::write_bc1_bc2));
+ map(0xc000, 0xc7ff).mirror(0x1800).ram().share("shared");
+ map(0xe000, 0xffff).noprw();
+}
//**************************************************************************
diff --git a/src/mame/drivers/portrait.cpp b/src/mame/drivers/portrait.cpp
index 84a2fdd155b..8c5f197342f 100644
--- a/src/mame/drivers/portrait.cpp
+++ b/src/mame/drivers/portrait.cpp
@@ -122,28 +122,30 @@ WRITE8_MEMBER(portrait_state::negative_scroll_w)
m_scroll = - (data ^ 0xff);
}
-ADDRESS_MAP_START(portrait_state::portrait_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(bgvideo_write) AM_SHARE("bgvideoram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(fgvideo_write) AM_SHARE("fgvideoram")
- AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9200, 0x97ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xa010, 0xa010) AM_WRITENOP // ?
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW1")
- AM_RANGE(0xa004, 0xa004) AM_READ_PORT("DSW2")
- AM_RANGE(0xa008, 0xa008) AM_READ_PORT("SYSTEM") AM_WRITE(ctrl_w)
- AM_RANGE(0xa010, 0xa010) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa018, 0xa018) AM_READNOP AM_WRITE(positive_scroll_w)
- AM_RANGE(0xa019, 0xa019) AM_WRITE(negative_scroll_w)
- AM_RANGE(0xa800, 0xa83f) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xffff, 0xffff) AM_READNOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(portrait_state::portrait_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void portrait_state::portrait_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(portrait_state::bgvideo_write)).share("bgvideoram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(portrait_state::fgvideo_write)).share("fgvideoram");
+ map(0x9000, 0x91ff).ram().share("spriteram");
+ map(0x9200, 0x97ff).ram();
+ map(0xa000, 0xa000).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xa010, 0xa010).nopw(); // ?
+ map(0xa000, 0xa000).portr("DSW1");
+ map(0xa004, 0xa004).portr("DSW2");
+ map(0xa008, 0xa008).portr("SYSTEM").w(this, FUNC(portrait_state::ctrl_w));
+ map(0xa010, 0xa010).portr("INPUTS");
+ map(0xa018, 0xa018).nopr().w(this, FUNC(portrait_state::positive_scroll_w));
+ map(0xa019, 0xa019).w(this, FUNC(portrait_state::negative_scroll_w));
+ map(0xa800, 0xa83f).ram().share("nvram");
+ map(0xffff, 0xffff).nopr();
+}
+
+
+void portrait_state::portrait_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
static INPUT_PORTS_START( portrait )
diff --git a/src/mame/drivers/potgoldu.cpp b/src/mame/drivers/potgoldu.cpp
index e66ae83aadb..1ac9a7f4609 100644
--- a/src/mame/drivers/potgoldu.cpp
+++ b/src/mame/drivers/potgoldu.cpp
@@ -64,9 +64,10 @@ void potgold_state::machine_reset()
}
-ADDRESS_MAP_START(potgold_state::potgold_map)
- AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void potgold_state::potgold_map(address_map &map)
+{
+ map(0xff000000, 0xffffffff).rom().region("user1", 0);
+}
static INPUT_PORTS_START( potgold )
diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp
index 36dc6bd36d3..0e9a6ddb2a0 100644
--- a/src/mame/drivers/powerbal.cpp
+++ b/src/mame/drivers/powerbal.cpp
@@ -105,72 +105,76 @@ WRITE16_MEMBER(powerbal_state::oki_banking)
m_okibank->set_entry(bank & (m_oki_numbanks - 1));
}
-ADDRESS_MAP_START(powerbal_state::magicstk_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x094000, 0x094001) AM_WRITENOP
- AM_RANGE(0x094002, 0x094003) AM_WRITENOP
- AM_RANGE(0x094004, 0x094005) AM_WRITE(tile_banking_w)
- AM_RANGE(0x098180, 0x09917f) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0")
- AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2") AM_WRITE(magicstk_coin_eeprom_w)
- AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c201c, 0x0c201d) AM_WRITE(oki_banking)
- AM_RANGE(0x0c201e, 0x0c201f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c4000, 0x0c4001) AM_WRITENOP
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM
- AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerbal_state::powerbal_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x094000, 0x094001) AM_WRITENOP
- AM_RANGE(0x094002, 0x094003) AM_WRITENOP
- AM_RANGE(0x094004, 0x094005) AM_WRITE(tile_banking_w)
- AM_RANGE(0x098000, 0x098fff) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x099000, 0x09bfff) AM_RAM // not used
- AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0")
- AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2")
- AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c201c, 0x0c201d) AM_WRITE(oki_banking)
- AM_RANGE(0x0c201e, 0x0c201f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c4000, 0x0c4001) AM_WRITENOP
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM
- AM_RANGE(0x101000, 0x101fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x102000, 0x10200d) AM_WRITENOP // not used scroll regs?
- AM_RANGE(0x103000, 0x103fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerbal_state::atombjt_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080008, 0x080009) AM_READNOP // remnant of the original?
- AM_RANGE(0x080014, 0x080015) AM_NOP // always 1 in this bootleg. Flip-screen switch not present according to dip sheet.
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x094000, 0x094001) AM_WRITE(atombjt_tile_banking_w)
- AM_RANGE(0x094002, 0x094003) AM_NOP /* IRQ enable? */
- AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0")
- AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2")
- AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2")
- AM_RANGE(0x0c201c, 0x0c201d) AM_WRITE(oki_banking)
- AM_RANGE(0x0c201e, 0x0c201f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c4000, 0x0c4001) AM_WRITENOP // always 0?
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x100000, 0x100fff) AM_RAM
- AM_RANGE(0x101000, 0x101fff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerbal_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void powerbal_state::magicstk_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x094000, 0x094001).nopw();
+ map(0x094002, 0x094003).nopw();
+ map(0x094004, 0x094005).w(this, FUNC(powerbal_state::tile_banking_w));
+ map(0x098180, 0x09917f).ram().w(this, FUNC(powerbal_state::magicstk_bgvideoram_w)).share("videoram1");
+ map(0x0c2010, 0x0c2011).portr("IN0");
+ map(0x0c2012, 0x0c2013).portr("IN1");
+ map(0x0c2014, 0x0c2015).portr("IN2").w(this, FUNC(powerbal_state::magicstk_coin_eeprom_w));
+ map(0x0c2016, 0x0c2017).portr("DSW1");
+ map(0x0c2018, 0x0c2019).portr("DSW2");
+ map(0x0c201c, 0x0c201d).w(this, FUNC(powerbal_state::oki_banking));
+ map(0x0c201f, 0x0c201f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0c4000, 0x0c4001).nopw();
+ map(0x0e0000, 0x0fffff).ram();
+ map(0x100000, 0x100fff).ram().share("spriteram");
+}
+
+void powerbal_state::powerbal_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x094000, 0x094001).nopw();
+ map(0x094002, 0x094003).nopw();
+ map(0x094004, 0x094005).w(this, FUNC(powerbal_state::tile_banking_w));
+ map(0x098000, 0x098fff).ram().w(this, FUNC(powerbal_state::magicstk_bgvideoram_w)).share("videoram1");
+ map(0x099000, 0x09bfff).ram(); // not used
+ map(0x0c2010, 0x0c2011).portr("IN0");
+ map(0x0c2012, 0x0c2013).portr("IN1");
+ map(0x0c2014, 0x0c2015).portr("IN2");
+ map(0x0c2016, 0x0c2017).portr("DSW1");
+ map(0x0c2018, 0x0c2019).portr("DSW2");
+ map(0x0c201c, 0x0c201d).w(this, FUNC(powerbal_state::oki_banking));
+ map(0x0c201f, 0x0c201f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0c4000, 0x0c4001).nopw();
+ map(0x0f0000, 0x0fffff).ram();
+ map(0x101000, 0x101fff).ram().share("spriteram");
+ map(0x102000, 0x10200d).nopw(); // not used scroll regs?
+ map(0x103000, 0x103fff).ram();
+}
+
+void powerbal_state::atombjt_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080008, 0x080009).nopr(); // remnant of the original?
+ map(0x080014, 0x080015).noprw(); // always 1 in this bootleg. Flip-screen switch not present according to dip sheet.
+ map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x094000, 0x094001).w(this, FUNC(powerbal_state::atombjt_tile_banking_w));
+ map(0x094002, 0x094003).noprw(); /* IRQ enable? */
+ map(0x09c000, 0x09cfff).mirror(0x1000).ram().w(this, FUNC(powerbal_state::magicstk_bgvideoram_w)).share("videoram1");
+ map(0x0c2010, 0x0c2011).portr("IN0");
+ map(0x0c2012, 0x0c2013).portr("IN1");
+ map(0x0c2014, 0x0c2015).portr("IN2");
+ map(0x0c2016, 0x0c2017).portr("DSW1");
+ map(0x0c2018, 0x0c2019).portr("DSW2");
+ map(0x0c201c, 0x0c201d).w(this, FUNC(powerbal_state::oki_banking));
+ map(0x0c201f, 0x0c201f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0c4000, 0x0c4001).nopw(); // always 0?
+ map(0x0f0000, 0x0fffff).ram().share("mainram");
+ map(0x100000, 0x100fff).ram();
+ map(0x101000, 0x101fff).ram().share("spriteram");
+}
+
+void powerbal_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( powerbal )
PORT_START("IN0")
diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp
index 96cf4c0fd59..e512351c121 100644
--- a/src/mame/drivers/powerins.cpp
+++ b/src/mame/drivers/powerins.cpp
@@ -59,60 +59,66 @@ READ8_MEMBER(powerins_state::powerinsb_fake_ym2203_r)
}
-ADDRESS_MAP_START(powerins_state::powerins_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
- AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff)
- AM_RANGE(0x100016, 0x100017) AM_WRITENOP // ? always 1
- AM_RANGE(0x100018, 0x100019) AM_WRITE8(tilebank_w, 0x00ff)
- AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0")
- AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0")
- AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1")
- AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w)
- AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
+void powerins_state::powerins_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100001).portr("SYSTEM");
+ map(0x100002, 0x100003).portr("P1_P2");
+ map(0x100008, 0x100009).portr("DSW1");
+ map(0x10000a, 0x10000b).portr("DSW2");
+ map(0x100015, 0x100015).w(this, FUNC(powerins_state::flipscreen_w));
+ map(0x100016, 0x100017).nopw(); // ? always 1
+ map(0x100019, 0x100019).w(this, FUNC(powerins_state::tilebank_w));
+ map(0x10001f, 0x10001f).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x120000, 0x120fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x130000, 0x130007).ram().share("vctrl_0");
+ map(0x140000, 0x143fff).ram().w(this, FUNC(powerins_state::vram_0_w)).share("vram_0");
+ map(0x170000, 0x170fff).ram().w(this, FUNC(powerins_state::vram_1_w)).share("vram_1");
+ map(0x171000, 0x171fff).w(this, FUNC(powerins_state::vram_1_w));
+ map(0x180000, 0x18ffff).ram().share("spriteram");
+}
/* powerinsa: same as the original one but without the sound cpu (and inferior sound HW) */
-ADDRESS_MAP_START(powerins_state::powerinsa_map)
- AM_IMPORT_FROM(powerins_map)
- AM_RANGE(0x100030, 0x100031) AM_WRITE8(powerinsa_okibank_w, 0x00ff)
- AM_RANGE(0x10003e, 0x10003f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerins_state::powerins_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+void powerins_state::powerinsa_map(address_map &map)
+{
+ powerins_map(map);
+ map(0x100031, 0x100031).w(this, FUNC(powerins_state::powerinsa_okibank_w));
+ map(0x10003f, 0x10003f).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void powerins_state::powerins_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
// AM_RANGE(0xe000, 0xe000) AM_WRITENOP // ? written only once ?
// AM_RANGE(0xe001, 0xe001) AM_WRITENOP // ?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerins_state::powerins_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerins_state::powerinsb_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(powerinsb_fake_ym2203_r) AM_WRITENOP
- AM_RANGE(0x01, 0x01) AM_NOP
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(powerins_state::powerinsa_oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+}
+
+void powerins_state::powerins_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x80).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x88, 0x88).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w));
+}
+
+void powerins_state::powerinsb_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(powerins_state::powerinsb_fake_ym2203_r)).nopw();
+ map(0x01, 0x01).noprw();
+ map(0x80, 0x80).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x88, 0x88).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w));
+}
+
+void powerins_state::powerinsa_oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
/***************************************************************************
diff --git a/src/mame/drivers/pp01.cpp b/src/mame/drivers/pp01.cpp
index 56980b44c08..85a776c434e 100644
--- a/src/mame/drivers/pp01.cpp
+++ b/src/mame/drivers/pp01.cpp
@@ -16,34 +16,36 @@
/* Address maps */
-ADDRESS_MAP_START(pp01_state::pp01_mem)
- AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1")
- AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2")
- AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3")
- AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4")
- AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank5")
- AM_RANGE(0x5000, 0x5fff) AM_RAMBANK("bank6")
- AM_RANGE(0x6000, 0x6fff) AM_RAMBANK("bank7")
- AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank8")
- AM_RANGE(0x8000, 0x8fff) AM_RAMBANK("bank9")
- AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("bank10")
- AM_RANGE(0xa000, 0xafff) AM_RAMBANK("bank11")
- AM_RANGE(0xb000, 0xbfff) AM_RAMBANK("bank12")
- AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bank13")
- AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bank14")
- AM_RANGE(0xe000, 0xefff) AM_RAMBANK("bank15")
- AM_RANGE(0xf000, 0xffff) AM_RAMBANK("bank16")
-ADDRESS_MAP_END
+void pp01_state::pp01_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1");
+ map(0x1000, 0x1fff).bankrw("bank2");
+ map(0x2000, 0x2fff).bankrw("bank3");
+ map(0x3000, 0x3fff).bankrw("bank4");
+ map(0x4000, 0x4fff).bankrw("bank5");
+ map(0x5000, 0x5fff).bankrw("bank6");
+ map(0x6000, 0x6fff).bankrw("bank7");
+ map(0x7000, 0x7fff).bankrw("bank8");
+ map(0x8000, 0x8fff).bankrw("bank9");
+ map(0x9000, 0x9fff).bankrw("bank10");
+ map(0xa000, 0xafff).bankrw("bank11");
+ map(0xb000, 0xbfff).bankrw("bank12");
+ map(0xc000, 0xcfff).bankrw("bank13");
+ map(0xd000, 0xdfff).bankrw("bank14");
+ map(0xe000, 0xefff).bankrw("bank15");
+ map(0xf000, 0xffff).bankrw("bank16");
+}
-ADDRESS_MAP_START(pp01_state::pp01_io)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // system
+void pp01_state::pp01_io(address_map &map)
+{
+ map(0xc0, 0xc3).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // system
//AM_RANGE(0xc4, 0xc7) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // user
- AM_RANGE(0xc8, 0xc8) AM_MIRROR(2) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0xc9, 0xc9) AM_MIRROR(2) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xcc, 0xcf) AM_WRITE(pp01_video_write_mode_w)
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0xe0, 0xef) AM_MIRROR(0x10) AM_READWRITE(pp01_mem_block_r, pp01_mem_block_w)
-ADDRESS_MAP_END
+ map(0xc8, 0xc8).mirror(2).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc9, 0xc9).mirror(2).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xcc, 0xcf).w(this, FUNC(pp01_state::pp01_video_write_mode_w));
+ map(0xd0, 0xd3).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xe0, 0xef).mirror(0x10).rw(this, FUNC(pp01_state::pp01_mem_block_r), FUNC(pp01_state::pp01_mem_block_w));
+}
/* Input ports */
static INPUT_PORTS_START( pp01 )
diff --git a/src/mame/drivers/ppmast93.cpp b/src/mame/drivers/ppmast93.cpp
index 2bf18d06dca..5aa253a24a5 100644
--- a/src/mame/drivers/ppmast93.cpp
+++ b/src/mame/drivers/ppmast93.cpp
@@ -204,35 +204,39 @@ WRITE8_MEMBER(ppmast93_state::port4_w)
membank("cpubank")->set_entry(data & 0x07);
}
-ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubank")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
- AM_RANGE(0xd800, 0xdfff) AM_WRITENOP
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM") AM_WRITE(port4_w)
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW1")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu2_map)
- AM_RANGE(0x0000, 0xfbff) AM_ROM AM_REGION("sub", 0x10000)
- AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xfd00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu2_io)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("sub", 0x20000)
- AM_RANGE(0x0000, 0x0001) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x0002, 0x0002) AM_MIRROR(0xff00) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void ppmast93_state::ppmast93_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().nopw();
+ map(0x8000, 0xbfff).bankr("cpubank");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(ppmast93_state::bgram_w)).share("bgram");
+ map(0xd800, 0xdfff).nopw();
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(ppmast93_state::fgram_w)).share("fgram");
+ map(0xf800, 0xffff).ram();
+}
+
+void ppmast93_state::ppmast93_cpu1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).portr("P2");
+ map(0x04, 0x04).portr("SYSTEM").w(this, FUNC(ppmast93_state::port4_w));
+ map(0x06, 0x06).portr("DSW1");
+ map(0x08, 0x08).portr("DSW2");
+}
+
+void ppmast93_state::ppmast93_cpu2_map(address_map &map)
+{
+ map(0x0000, 0xfbff).rom().region("sub", 0x10000);
+ map(0xfc00, 0xfc00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xfd00, 0xffff).ram();
+}
+
+void ppmast93_state::ppmast93_cpu2_io(address_map &map)
+{
+ map(0x0000, 0xffff).rom().region("sub", 0x20000);
+ map(0x0000, 0x0001).mirror(0xff00).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x0002, 0x0002).mirror(0xff00).w("dac", FUNC(dac_byte_interface::write));
+}
static INPUT_PORTS_START( ppmast93 )
PORT_START("P1")
diff --git a/src/mame/drivers/prehisle.cpp b/src/mame/drivers/prehisle.cpp
index 693cead7ccc..44bdf05a09a 100644
--- a/src/mame/drivers/prehisle.cpp
+++ b/src/mame/drivers/prehisle.cpp
@@ -30,17 +30,18 @@ WRITE16_MEMBER(prehisle_state::soundcmd_w)
/*******************************************************************************/
-ADDRESS_MAP_START(prehisle_state::prehisle_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x070000, 0x073fff) AM_RAM
- AM_RANGE(0x090000, 0x0907ff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("tx_vram")
- AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(fg_vram_w) AM_SHARE("fg_vram")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0e0000, 0x0e00ff) AM_READ(control_r)
- AM_RANGE(0x0f0000, 0x0ff0ff) AM_WRITE(control_w)
- AM_RANGE(0x0f0070, 0x0ff071) AM_WRITE(soundcmd_w)
-ADDRESS_MAP_END
+void prehisle_state::prehisle_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x070000, 0x073fff).ram();
+ map(0x090000, 0x0907ff).ram().w(this, FUNC(prehisle_state::tx_vram_w)).share("tx_vram");
+ map(0x0a0000, 0x0a07ff).ram().share("spriteram");
+ map(0x0b0000, 0x0b3fff).ram().w(this, FUNC(prehisle_state::fg_vram_w)).share("fg_vram");
+ map(0x0d0000, 0x0d07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0e0000, 0x0e00ff).r(this, FUNC(prehisle_state::control_r));
+ map(0x0f0000, 0x0ff0ff).w(this, FUNC(prehisle_state::control_w));
+ map(0x0f0070, 0x0ff071).w(this, FUNC(prehisle_state::soundcmd_w));
+}
/******************************************************************************/
@@ -56,20 +57,22 @@ WRITE8_MEMBER(prehisle_state::D7759_upd_reset_w)
m_upd7759->reset_w(data & 0x80);
}
-ADDRESS_MAP_START(prehisle_state::prehisle_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP // ???
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(prehisle_state::prehisle_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(D7759_write_port_0_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(D7759_upd_reset_w)
-ADDRESS_MAP_END
+void prehisle_state::prehisle_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf800, 0xf800).nopw(); // ???
+}
+
+void prehisle_state::prehisle_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).w(this, FUNC(prehisle_state::D7759_write_port_0_w));
+ map(0x80, 0x80).w(this, FUNC(prehisle_state::D7759_upd_reset_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp
index 546c1784557..7e9770cb0b5 100644
--- a/src/mame/drivers/prestige.cpp
+++ b/src/mame/drivers/prestige.cpp
@@ -323,32 +323,35 @@ WRITE8_MEMBER( prestige_state::lcdc_w )
}
-ADDRESS_MAP_START(prestige_state::prestige_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3")
- AM_RANGE(0xc000, 0xdfff) AM_RAMBANK("bank4")
- AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(prestige_state::prestige_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x05) AM_READWRITE(mouse_r, mouse_w)
- AM_RANGE(0x30, 0x3f) AM_WRITE(lcdc_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(kb_w)
- AM_RANGE(0x41, 0x42) AM_READ(kb_r)
- AM_RANGE(0x50, 0x56) AM_READWRITE(bankswitch_r, bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(prestige_state::glcolor_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x30, 0x3f) AM_WRITE(lcdc_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(kb_w)
- AM_RANGE(0x41, 0x42) AM_READ(kb_r)
- AM_RANGE(0x50, 0x56) AM_READWRITE(bankswitch_r, bankswitch_w)
-ADDRESS_MAP_END
+void prestige_state::prestige_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xdfff).bankrw("bank4");
+ map(0xe000, 0xffff).bankrw("bank5");
+}
+
+void prestige_state::prestige_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x04, 0x05).rw(this, FUNC(prestige_state::mouse_r), FUNC(prestige_state::mouse_w));
+ map(0x30, 0x3f).w(this, FUNC(prestige_state::lcdc_w));
+ map(0x40, 0x40).w(this, FUNC(prestige_state::kb_w));
+ map(0x41, 0x42).r(this, FUNC(prestige_state::kb_r));
+ map(0x50, 0x56).rw(this, FUNC(prestige_state::bankswitch_r), FUNC(prestige_state::bankswitch_w));
+}
+
+void prestige_state::glcolor_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x30, 0x3f).w(this, FUNC(prestige_state::lcdc_w));
+ map(0x40, 0x40).w(this, FUNC(prestige_state::kb_w));
+ map(0x41, 0x42).r(this, FUNC(prestige_state::kb_r));
+ map(0x50, 0x56).rw(this, FUNC(prestige_state::bankswitch_r), FUNC(prestige_state::bankswitch_w));
+}
/* Input ports */
INPUT_PORTS_START( prestige )
diff --git a/src/mame/drivers/primo.cpp b/src/mame/drivers/primo.cpp
index e917ed6e4d8..9dc3f5d31ed 100644
--- a/src/mame/drivers/primo.cpp
+++ b/src/mame/drivers/primo.cpp
@@ -117,34 +117,39 @@ Interrupts:
#include "formats/primoptp.h"
-ADDRESS_MAP_START(primo_state::primoa_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x3f ) AM_READWRITE(primo_be_1_r, primo_ki_1_w )
- AM_RANGE( 0xfd, 0xfd ) AM_WRITE(primo_FD_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(primo_state::primob_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x3f ) AM_READWRITE(primo_be_1_r, primo_ki_1_w )
- AM_RANGE( 0x40, 0x7f ) AM_READWRITE(primo_be_2_r, primo_ki_2_w )
- AM_RANGE( 0xfd, 0xfd ) AM_WRITE(primo_FD_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(primo_state::primo32_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM AM_MIRROR ( 0x8000 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(primo_state::primo48_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xbfff ) AM_RAM AM_MIRROR ( 0x4000 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(primo_state::primo64_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x4000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+void primo_state::primoa_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).rw(this, FUNC(primo_state::primo_be_1_r), FUNC(primo_state::primo_ki_1_w));
+ map(0xfd, 0xfd).w(this, FUNC(primo_state::primo_FD_w));
+}
+
+void primo_state::primob_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x3f).rw(this, FUNC(primo_state::primo_be_1_r), FUNC(primo_state::primo_ki_1_w));
+ map(0x40, 0x7f).rw(this, FUNC(primo_state::primo_be_2_r), FUNC(primo_state::primo_ki_2_w));
+ map(0xfd, 0xfd).w(this, FUNC(primo_state::primo_FD_w));
+}
+
+void primo_state::primo32_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).ram().mirror(0x8000);
+}
+
+void primo_state::primo48_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0xbfff).ram().mirror(0x4000);
+}
+
+void primo_state::primo64_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0xffff).ram();
+}
static INPUT_PORTS_START( primo )
PORT_START( "IN0" )
diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp
index 519d095aaa4..da11277c446 100644
--- a/src/mame/drivers/pro80.cpp
+++ b/src/mame/drivers/pro80.cpp
@@ -112,21 +112,23 @@ READ8_MEMBER( pro80_state::kp_r )
return data | m_cass_in | 0xc0;
}
-ADDRESS_MAP_START(pro80_state::pro80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM
- AM_RANGE(0x1400, 0x17ff) AM_RAM // 2nd RAM is optional
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pro80_state::pro80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pio", z80pio_device, read, write)
- AM_RANGE(0x44, 0x47) AM_READ(kp_r)
- AM_RANGE(0x48, 0x4b) AM_WRITE(digit_w)
- AM_RANGE(0x4c, 0x4f) AM_WRITE(segment_w)
-ADDRESS_MAP_END
+void pro80_state::pro80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom();
+ map(0x1000, 0x13ff).ram();
+ map(0x1400, 0x17ff).ram(); // 2nd RAM is optional
+}
+
+void pro80_state::pro80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x43).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x44, 0x47).r(this, FUNC(pro80_state::kp_r));
+ map(0x48, 0x4b).w(this, FUNC(pro80_state::digit_w));
+ map(0x4c, 0x4f).w(this, FUNC(pro80_state::segment_w));
+}
/* Input ports */
static INPUT_PORTS_START( pro80 )
diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp
index 60ee5f0d952..e26a01eea82 100644
--- a/src/mame/drivers/proconn.cpp
+++ b/src/mame/drivers/proconn.cpp
@@ -206,69 +206,71 @@ public:
DECLARE_READ16_MEMBER(serial_receive);
};
-ADDRESS_MAP_START(proconn_state::proconn_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void proconn_state::proconn_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
// the mapping of the devices is rather ugly with address bits 8-9 providing the usual address bits 0-1 or 'offset'
// r0/r1/r2/r3 and w0/w1/w2/w3 might still be in the wrong order at the moment.
-ADDRESS_MAP_START(proconn_state::proconn_portmap)
+void proconn_state::proconn_portmap(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0x3ff)
// sio (vfd should be connected to it?)
- AM_RANGE(0x00ff, 0x00ff) AM_READWRITE(sio_r0, sio_w0)
- AM_RANGE(0x01ff, 0x01ff) AM_READWRITE(sio_r2, sio_w2)
- AM_RANGE(0x02ff, 0x02ff) AM_READWRITE(sio_r1, sio_w1)
- AM_RANGE(0x03ff, 0x03ff) AM_READWRITE(sio_r3, sio_w3)
+ map(0x00ff, 0x00ff).rw(this, FUNC(proconn_state::sio_r0), FUNC(proconn_state::sio_w0));
+ map(0x01ff, 0x01ff).rw(this, FUNC(proconn_state::sio_r2), FUNC(proconn_state::sio_w2));
+ map(0x02ff, 0x02ff).rw(this, FUNC(proconn_state::sio_r1), FUNC(proconn_state::sio_w1));
+ map(0x03ff, 0x03ff).rw(this, FUNC(proconn_state::sio_r3), FUNC(proconn_state::sio_w3));
// ctc
- AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(ctc_r0, ctc_w0)
- AM_RANGE(0x01fe, 0x01fe) AM_READWRITE(ctc_r2, ctc_w2)
- AM_RANGE(0x02fe, 0x02fe) AM_READWRITE(ctc_r1, ctc_w1)
- AM_RANGE(0x03fe, 0x03fe) AM_READWRITE(ctc_r3, ctc_w3)
+ map(0x00fe, 0x00fe).rw(this, FUNC(proconn_state::ctc_r0), FUNC(proconn_state::ctc_w0));
+ map(0x01fe, 0x01fe).rw(this, FUNC(proconn_state::ctc_r2), FUNC(proconn_state::ctc_w2));
+ map(0x02fe, 0x02fe).rw(this, FUNC(proconn_state::ctc_r1), FUNC(proconn_state::ctc_w1));
+ map(0x03fe, 0x03fe).rw(this, FUNC(proconn_state::ctc_r3), FUNC(proconn_state::ctc_w3));
// ay (meters connected to it?)
- AM_RANGE(0x00fd, 0x00fd) AM_READWRITE(ay_r0, ay_w0)
- AM_RANGE(0x00fc, 0x00fc) AM_WRITE(ay_w1)
+ map(0x00fd, 0x00fd).rw(this, FUNC(proconn_state::ay_r0), FUNC(proconn_state::ay_w0));
+ map(0x00fc, 0x00fc).w(this, FUNC(proconn_state::ay_w1));
// ??
- AM_RANGE(0xfbf9, 0xfbf9) AM_WRITENOP
- AM_RANGE(0xfff9, 0xfff9) AM_WRITENOP
+ map(0xfbf9, 0xfbf9).nopw();
+ map(0xfff9, 0xfff9).nopw();
// pio5 (lamps?)
- AM_RANGE(0x00f0, 0x00f0) AM_READWRITE(pio5_r0, pio5_w0)
- AM_RANGE(0x01f0, 0x01f0) AM_READWRITE(pio5_r1, pio5_w1)
- AM_RANGE(0x02f0, 0x02f0) AM_READWRITE(pio5_r2, pio5_w2)
- AM_RANGE(0x03f0, 0x03f0) AM_READWRITE(pio5_r3, pio5_w3)
+ map(0x00f0, 0x00f0).rw(this, FUNC(proconn_state::pio5_r0), FUNC(proconn_state::pio5_w0));
+ map(0x01f0, 0x01f0).rw(this, FUNC(proconn_state::pio5_r1), FUNC(proconn_state::pio5_w1));
+ map(0x02f0, 0x02f0).rw(this, FUNC(proconn_state::pio5_r2), FUNC(proconn_state::pio5_w2));
+ map(0x03f0, 0x03f0).rw(this, FUNC(proconn_state::pio5_r3), FUNC(proconn_state::pio5_w3));
// pio4 (triacs + 7segs)
- AM_RANGE(0x00e8, 0x00e8) AM_READWRITE(pio4_r0, pio4_w0)
- AM_RANGE(0x01e8, 0x01e8) AM_READWRITE(pio4_r1, pio4_w1)
- AM_RANGE(0x02e8, 0x02e8) AM_READWRITE(pio4_r2, pio4_w2)
- AM_RANGE(0x03e8, 0x03e8) AM_READWRITE(pio4_r3, pio4_w3)
+ map(0x00e8, 0x00e8).rw(this, FUNC(proconn_state::pio4_r0), FUNC(proconn_state::pio4_w0));
+ map(0x01e8, 0x01e8).rw(this, FUNC(proconn_state::pio4_r1), FUNC(proconn_state::pio4_w1));
+ map(0x02e8, 0x02e8).rw(this, FUNC(proconn_state::pio4_r2), FUNC(proconn_state::pio4_w2));
+ map(0x03e8, 0x03e8).rw(this, FUNC(proconn_state::pio4_r3), FUNC(proconn_state::pio4_w3));
// pio3 (lamps? + opto in?)
- AM_RANGE(0x00d8, 0x00d8) AM_READWRITE(pio3_r0, pio3_w0)
- AM_RANGE(0x01d8, 0x01d8) AM_READWRITE(pio3_r1, pio3_w1)
- AM_RANGE(0x02d8, 0x02d8) AM_READWRITE(pio3_r2, pio3_w2)
- AM_RANGE(0x03d8, 0x03d8) AM_READWRITE(pio3_r3, pio3_w3)
+ map(0x00d8, 0x00d8).rw(this, FUNC(proconn_state::pio3_r0), FUNC(proconn_state::pio3_w0));
+ map(0x01d8, 0x01d8).rw(this, FUNC(proconn_state::pio3_r1), FUNC(proconn_state::pio3_w1));
+ map(0x02d8, 0x02d8).rw(this, FUNC(proconn_state::pio3_r2), FUNC(proconn_state::pio3_w2));
+ map(0x03d8, 0x03d8).rw(this, FUNC(proconn_state::pio3_r3), FUNC(proconn_state::pio3_w3));
// pio2 (reels?)
- AM_RANGE(0x00b8, 0x00b8) AM_READWRITE(pio2_r0, pio2_w0)
- AM_RANGE(0x01b8, 0x01b8) AM_READWRITE(pio2_r1, pio2_w1)
- AM_RANGE(0x02b8, 0x02b8) AM_READWRITE(pio2_r2, pio2_w2)
- AM_RANGE(0x03b8, 0x03b8) AM_READWRITE(pio2_r3, pio2_w3)
+ map(0x00b8, 0x00b8).rw(this, FUNC(proconn_state::pio2_r0), FUNC(proconn_state::pio2_w0));
+ map(0x01b8, 0x01b8).rw(this, FUNC(proconn_state::pio2_r1), FUNC(proconn_state::pio2_w1));
+ map(0x02b8, 0x02b8).rw(this, FUNC(proconn_state::pio2_r2), FUNC(proconn_state::pio2_w2));
+ map(0x03b8, 0x03b8).rw(this, FUNC(proconn_state::pio2_r3), FUNC(proconn_state::pio2_w3));
// pio1 (reels? + inputs?)
- AM_RANGE(0x0078, 0x0078) AM_READWRITE(pio1_r0, pio1_w0)
- AM_RANGE(0x0178, 0x0178) AM_READWRITE(pio1_r1, pio1_w1)
- AM_RANGE(0x0278, 0x0278) AM_READWRITE(pio1_r2, pio1_w2)
- AM_RANGE(0x0378, 0x0378) AM_READWRITE(pio1_r3, pio1_w3)
-ADDRESS_MAP_END
+ map(0x0078, 0x0078).rw(this, FUNC(proconn_state::pio1_r0), FUNC(proconn_state::pio1_w0));
+ map(0x0178, 0x0178).rw(this, FUNC(proconn_state::pio1_r1), FUNC(proconn_state::pio1_w1));
+ map(0x0278, 0x0278).rw(this, FUNC(proconn_state::pio1_r2), FUNC(proconn_state::pio1_w2));
+ map(0x0378, 0x0378).rw(this, FUNC(proconn_state::pio1_r3), FUNC(proconn_state::pio1_w3));
+}
static INPUT_PORTS_START( proconn )
diff --git a/src/mame/drivers/prof180x.cpp b/src/mame/drivers/prof180x.cpp
index 1ab28499beb..2bd2b0951df 100644
--- a/src/mame/drivers/prof180x.cpp
+++ b/src/mame/drivers/prof180x.cpp
@@ -186,17 +186,19 @@ READ8_MEMBER( prof180x_state::status_r )
/* Address Maps */
-ADDRESS_MAP_START(prof180x_state::prof180x_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(prof180x_state::prof180x_io)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_WRITE(flr_w)
- AM_RANGE(0x09, 0x09) AM_SELECT(0xff00) AM_READ(status_r)
- AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xff00) AM_DEVREADWRITE(FDC9268_TAG, upd765a_device, mdma_r, mdma_w)
- AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xff00) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x0c, 0x0d) AM_MIRROR(0xff00) AM_DEVICE(FDC9268_TAG, upd765a_device, map)
-ADDRESS_MAP_END
+void prof180x_state::prof180x_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(prof180x_state::read), FUNC(prof180x_state::write));
+}
+
+void prof180x_state::prof180x_io(address_map &map)
+{
+ map(0x08, 0x08).mirror(0xff00).w(this, FUNC(prof180x_state::flr_w));
+ map(0x09, 0x09).select(0xff00).r(this, FUNC(prof180x_state::status_r));
+ 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::write));
+ map(0x0c, 0x0d).mirror(0xff00).m(FDC9268_TAG, FUNC(upd765a_device::map));
+}
/* Input ports */
diff --git a/src/mame/drivers/prof80.cpp b/src/mame/drivers/prof80.cpp
index 4c1e8c6ec0f..410bb5f5ef9 100644
--- a/src/mame/drivers/prof80.cpp
+++ b/src/mame/drivers/prof80.cpp
@@ -271,28 +271,31 @@ WRITE8_MEMBER( prof80_state::unio_ctrl_w )
// ADDRESS_MAP( prof80_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(prof80_state::prof80_mem)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE(MMU_TAG, prof80_mmu_device, z80_program_map)
-ADDRESS_MAP_END
+void prof80_state::prof80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_mmu, FUNC(prof80_mmu_device::z80_program_map));
+}
//-------------------------------------------------
// ADDRESS_MAP( prof80_mmu )
//-------------------------------------------------
-ADDRESS_MAP_START(prof80_state::prof80_mmu)
- AM_RANGE(0x40000, 0x5ffff) AM_RAM
- AM_RANGE(0xc0000, 0xdffff) AM_RAM
- AM_RANGE(0xf0000, 0xf1fff) AM_MIRROR(0xe000) AM_ROM AM_REGION(Z80_TAG, 0)
-ADDRESS_MAP_END
+void prof80_state::prof80_mmu(address_map &map)
+{
+ map(0x40000, 0x5ffff).ram();
+ map(0xc0000, 0xdffff).ram();
+ map(0xf0000, 0xf1fff).mirror(0xe000).rom().region(Z80_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( prof80_io )
//-------------------------------------------------
-ADDRESS_MAP_START(prof80_state::prof80_io)
- AM_RANGE(0x00, 0xd7) AM_MIRROR(0xff00) AM_DEVREADWRITE(ECBBUS_TAG, ecbbus_device, io_r, io_w)
+void prof80_state::prof80_io(address_map &map)
+{
+ map(0x00, 0xd7).mirror(0xff00).rw(m_ecb, FUNC(ecbbus_device::io_r), FUNC(ecbbus_device::io_w));
// AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_DEVREADWRITE(UNIO_Z80STI_TAG, z80sti_device, read, write)
// AM_RANGE(0x94, 0x95) AM_MIRROR(0xff00) AM_DEVREADWRITE_LEGACY(UNIO_Z80SIO_TAG, z80sio_d_r, z80sio_d_w)
// AM_RANGE(0x96, 0x97) AM_MIRROR(0xff00) AM_DEVREADWRITE_LEGACY(UNIO_Z80SIO_TAG, z80sio_c_r, z80sio_c_w)
@@ -301,12 +304,12 @@ ADDRESS_MAP_START(prof80_state::prof80_io)
// AM_RANGE(0x9d, 0x9d) AM_MIRROR(0xff00) AM_DEVWRITE(UNIO_CENTRONICS1_TAG, centronics_device, write)
// AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_READ(gripc_r)
// AM_RANGE(0xc1, 0xc1) AM_MIRROR(0xff00) AM_READWRITE(gripd_r, gripd_w)
- AM_RANGE(0xd8, 0xd8) AM_MIRROR(0xff00) AM_WRITE(flr_w)
- AM_RANGE(0xda, 0xda) AM_MIRROR(0xff00) AM_READ(status_r)
- AM_RANGE(0xdb, 0xdb) AM_MIRROR(0xff00) AM_READ(status2_r)
- AM_RANGE(0xdc, 0xdd) AM_MIRROR(0xff00) AM_DEVICE(UPD765_TAG, upd765a_device, map)
- AM_RANGE(0xde, 0xde) AM_MIRROR(0x0001) AM_SELECT(0xff00) AM_DEVWRITE(MMU_TAG, prof80_mmu_device, par_w)
-ADDRESS_MAP_END
+ map(0xd8, 0xd8).mirror(0xff00).w(this, FUNC(prof80_state::flr_w));
+ map(0xda, 0xda).mirror(0xff00).r(this, FUNC(prof80_state::status_r));
+ map(0xdb, 0xdb).mirror(0xff00).r(this, FUNC(prof80_state::status2_r));
+ map(0xdc, 0xdd).mirror(0xff00).m(m_fdc, FUNC(upd765a_device::map));
+ map(0xde, 0xde).mirror(0x0001).select(0xff00).w(m_mmu, FUNC(prof80_mmu_device::par_w));
+}
diff --git a/src/mame/drivers/progolf.cpp b/src/mame/drivers/progolf.cpp
index b4d8f0b3d1c..626d87251ac 100644
--- a/src/mame/drivers/progolf.cpp
+++ b/src/mame/drivers/progolf.cpp
@@ -261,31 +261,33 @@ WRITE8_MEMBER(progolf_state::videoram_w)
m_videoram[offset] = data;
}
-ADDRESS_MAP_START(progolf_state::main_cpu)
- AM_RANGE(0x0000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(charram_w) AM_SHARE("fbram")
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(videoram_r, videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN2") AM_WRITE(char_vregs_w)
- AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") AM_WRITE(scrollx_hi_w) //p1 inputs
- AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") AM_WRITE(scrollx_lo_w) //p2 inputs
- AM_RANGE(0x9600, 0x9600) AM_READ_PORT("IN0") AM_WRITE(flip_screen_w) /* VBLANK */
- AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1")
- AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x9a00, 0x9a00) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+void progolf_state::main_cpu(address_map &map)
+{
+ map(0x0000, 0x5fff).ram();
+ map(0x6000, 0x7fff).ram().w(this, FUNC(progolf_state::charram_w)).share("fbram");
+ map(0x8000, 0x8fff).rw(this, FUNC(progolf_state::videoram_r), FUNC(progolf_state::videoram_w)).share("videoram");
+ map(0x9000, 0x9000).portr("IN2").w(this, FUNC(progolf_state::char_vregs_w));
+ map(0x9200, 0x9200).portr("P1").w(this, FUNC(progolf_state::scrollx_hi_w)); //p1 inputs
+ map(0x9400, 0x9400).portr("P2").w(this, FUNC(progolf_state::scrollx_lo_w)); //p2 inputs
+ map(0x9600, 0x9600).portr("IN0").w(this, FUNC(progolf_state::flip_screen_w)); /* VBLANK */
+ map(0x9800, 0x9800).portr("DSW1");
+ map(0x9800, 0x9800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x9801, 0x9801).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x9a00, 0x9a00).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write));
// AM_RANGE(0x9e00, 0x9e00) AM_WRITENOP
- AM_RANGE(0xb000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(progolf_state::sound_cpu)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x4000, 0x4fff) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6fff) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xb000, 0xffff).rom();
+}
+
+void progolf_state::sound_cpu(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x4000, 0x4fff).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x5000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6fff).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x7000, 0x7fff).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x8000, 0x8fff).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xf000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(progolf_state::coin_inserted)
diff --git a/src/mame/drivers/prophet600.cpp b/src/mame/drivers/prophet600.cpp
index 3edba6498ed..27c456ece51 100644
--- a/src/mame/drivers/prophet600.cpp
+++ b/src/mame/drivers/prophet600.cpp
@@ -239,24 +239,26 @@ READ8_MEMBER(prophet600_state::comparitor_r)
return m_comparitor;
}
-ADDRESS_MAP_START(prophet600_state::cpu_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION(MAINCPU_TAG, 0)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x4000, 0x4001) AM_WRITE(dac_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE(UART_TAG, acia6850_device, write)
- AM_RANGE(0xe000, 0xe001) AM_DEVREAD(UART_TAG, acia6850_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(prophet600_state::io_map)
- AM_RANGE(0x00, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE(PIT_TAG, pit8253_device, read, write)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_WRITE(scanrow_w)
- AM_RANGE(0x09, 0x09) AM_MIRROR(0xff00) AM_READWRITE(comparitor_r, led_w)
- AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xff00) AM_READWRITE(scan_r, potmux_w)
- AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xff00) AM_WRITE(gate_w)
- AM_RANGE(0x0d, 0x0d) AM_MIRROR(0xff00) AM_WRITE(cv_w)
- AM_RANGE(0x0e, 0x0e) AM_MIRROR(0xff00) AM_WRITE(mask_w)
-ADDRESS_MAP_END
+void prophet600_state::cpu_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region(MAINCPU_TAG, 0);
+ map(0x2000, 0x27ff).ram();
+ map(0x3000, 0x37ff).ram();
+ map(0x4000, 0x4001).w(this, FUNC(prophet600_state::dac_w));
+ map(0x6000, 0x6001).w(m_acia, FUNC(acia6850_device::write));
+ map(0xe000, 0xe001).r(m_acia, FUNC(acia6850_device::read));
+}
+
+void prophet600_state::io_map(address_map &map)
+{
+ map(0x00, 0x07).mirror(0xff00).rw(PIT_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x08, 0x08).mirror(0xff00).w(this, FUNC(prophet600_state::scanrow_w));
+ map(0x09, 0x09).mirror(0xff00).rw(this, FUNC(prophet600_state::comparitor_r), FUNC(prophet600_state::led_w));
+ map(0x0a, 0x0a).mirror(0xff00).rw(this, FUNC(prophet600_state::scan_r), FUNC(prophet600_state::potmux_w));
+ map(0x0b, 0x0b).mirror(0xff00).w(this, FUNC(prophet600_state::gate_w));
+ map(0x0d, 0x0d).mirror(0xff00).w(this, FUNC(prophet600_state::cv_w));
+ map(0x0e, 0x0e).mirror(0xff00).w(this, FUNC(prophet600_state::mask_w));
+}
DRIVER_INIT_MEMBER(prophet600_state, prophet600)
{
diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp
index c8e937a20b3..b07967d70ce 100644
--- a/src/mame/drivers/proteus3.cpp
+++ b/src/mame/drivers/proteus3.cpp
@@ -136,14 +136,15 @@ private:
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(proteus3_state::proteus3_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAM
- AM_RANGE(0x8004, 0x8007) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // cassette
- AM_RANGE(0x8010, 0x8011) AM_DEVREADWRITE("acia2", acia6850_device, read, write) // serial keyboard (never writes data)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void proteus3_state::proteus3_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram();
+ map(0x8004, 0x8007).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8008, 0x8009).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // cassette
+ map(0x8010, 0x8011).rw(m_acia2, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // serial keyboard (never writes data)
+ map(0xc000, 0xffff).rom();
+}
/******************************************************************************
diff --git a/src/mame/drivers/ps2.cpp b/src/mame/drivers/ps2.cpp
index e1d644fabd1..79a7713b627 100644
--- a/src/mame/drivers/ps2.cpp
+++ b/src/mame/drivers/ps2.cpp
@@ -41,29 +41,33 @@ MACHINE_CONFIG_START(ps2_state::at_softlists)
MCFG_SOFTWARE_LIST_ADD("at_cdrom_list","ibm5170_cdrom")
MACHINE_CONFIG_END
-ADDRESS_MAP_START(ps2_state::ps2_16_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ps2_state::ps2_32_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ps2_state::ps2_16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ps2_state::ps2_32_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE16("mb", at_mb_device, map, 0xffffffff)
-ADDRESS_MAP_END
+void ps2_state::ps2_16_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x09ffff).bankrw("bank10");
+ map(0x0e0000, 0x0fffff).rom().region("bios", 0);
+ map(0xfe0000, 0xffffff).rom().region("bios", 0);
+}
+
+void ps2_state::ps2_32_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0009ffff).bankrw("bank10");
+ map(0x000e0000, 0x000fffff).rom().region("bios", 0);
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0);
+}
+
+void ps2_state::ps2_16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+}
+
+void ps2_state::ps2_32_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map));
+}
void ps2_state::machine_start()
{
diff --git a/src/mame/drivers/ps2sony.cpp b/src/mame/drivers/ps2sony.cpp
index f2846731296..4691fd7549c 100644
--- a/src/mame/drivers/ps2sony.cpp
+++ b/src/mame/drivers/ps2sony.cpp
@@ -188,10 +188,11 @@ uint32_t ps2sony_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
return 0;
}
-ADDRESS_MAP_START(ps2sony_state::mem_map)
- AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // 32 MB RAM
- AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void ps2sony_state::mem_map(address_map &map)
+{
+ map(0x00000000, 0x01ffffff).ram(); // 32 MB RAM
+ map(0x1fc00000, 0x1fdfffff).rom().region("bios", 0);
+}
static INPUT_PORTS_START( ps2sony )
INPUT_PORTS_END
diff --git a/src/mame/drivers/psikyo.cpp b/src/mame/drivers/psikyo.cpp
index 9b09694a8f5..01b62040053 100644
--- a/src/mame/drivers/psikyo.cpp
+++ b/src/mame/drivers/psikyo.cpp
@@ -229,18 +229,19 @@ READ32_MEMBER(psikyo_state::s1945_mcu_r)
***************************************************************************/
-ADDRESS_MAP_START(psikyo_state::psikyo_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM (not all used)
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites, buffered by two frames (list buffered + fb buffered)
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_SHARE("vram_0") // Layer 0
- AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_SHARE("vram_1") // Layer 1
- AM_RANGE(0x804000, 0x807fff) AM_RAM AM_SHARE("vregs") // RAM + Vregs
+void psikyo_state::psikyo_map(address_map &map)
+{
+ 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(this, FUNC(psikyo_state::psikyo_vram_0_w)).share("vram_0"); // Layer 0
+ map(0x802000, 0x803fff).ram().w(this, FUNC(psikyo_state::psikyo_vram_1_w)).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
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+ map(0xfe0000, 0xffffff).ram(); // RAM
+}
READ32_MEMBER(psikyo_state::s1945bl_oki_r)
{
@@ -270,27 +271,29 @@ WRITE32_MEMBER(psikyo_state::s1945bl_oki_w)
printf("ACCESSING_BITS_0_7 ?? %08x %08x\n", data & 0x000000ff, mem_mask);
}
-ADDRESS_MAP_START(psikyo_state::s1945bl_oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void psikyo_state::s1945bl_oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
-ADDRESS_MAP_START(psikyo_state::psikyo_bootleg_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM (not all used)
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("boot_spritebuf") // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals?
+void psikyo_state::psikyo_bootleg_map(address_map &map)
+{
+ 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?
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites, buffered by two frames (list buffered + fb buffered)
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_SHARE("vram_0") // Layer 0
- AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_SHARE("vram_1") // Layer 1
- AM_RANGE(0x804000, 0x807fff) AM_RAM AM_SHARE("vregs") // RAM + Vregs
- AM_RANGE(0xc00000, 0xc0000b) AM_READ(gunbird_input_r) // input ports
+ 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(this, FUNC(psikyo_state::psikyo_vram_0_w)).share("vram_0"); // Layer 0
+ map(0x802000, 0x803fff).ram().w(this, FUNC(psikyo_state::psikyo_vram_1_w)).share("vram_1"); // Layer 1
+ map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
+ map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::gunbird_input_r)); // input ports
- AM_RANGE(0xc00018, 0xc0001b) AM_READWRITE(s1945bl_oki_r, s1945bl_oki_w)
+ map(0xc00018, 0xc0001b).rw(this, FUNC(psikyo_state::s1945bl_oki_r), FUNC(psikyo_state::s1945bl_oki_w));
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM
+ map(0xfe0000, 0xffffff).ram(); // RAM
-ADDRESS_MAP_END
+}
/***************************************************************************
Sengoku Ace / Samurai Aces
@@ -308,30 +311,33 @@ READ32_MEMBER(psikyo_state::sngkace_input_r)
}
}
-ADDRESS_MAP_START(psikyo_state::sngkace_map)
- AM_IMPORT_FROM(psikyo_map)
- AM_RANGE(0xc00000, 0xc0000b) AM_READ(sngkace_input_r)
- AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
-ADDRESS_MAP_END
+void psikyo_state::sngkace_map(address_map &map)
+{
+ psikyo_map(map);
+ map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::sngkace_input_r));
+ map(0xc00013, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
WRITE8_MEMBER(psikyo_state::sngkace_sound_bankswitch_w)
{
membank("bank1")->set_entry(data & 0x03);
}
-ADDRESS_MAP_START(psikyo_state::sngkace_sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM // ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM // RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // Banked ROM
-ADDRESS_MAP_END
+void psikyo_state::sngkace_sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom(); // ROM
+ map(0x7800, 0x7fff).ram(); // RAM
+ map(0x8000, 0xffff).bankr("bank1"); // Banked ROM
+}
-ADDRESS_MAP_START(psikyo_state::sngkace_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(sngkace_sound_bankswitch_w)
- AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+void psikyo_state::sngkace_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x04, 0x04).w(this, FUNC(psikyo_state::sngkace_sound_bankswitch_w));
+ map(0x08, 0x08).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x0c, 0x0c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
/***************************************************************************
@@ -349,36 +355,40 @@ READ32_MEMBER(psikyo_state::gunbird_input_r)
}
}
-ADDRESS_MAP_START(psikyo_state::gunbird_map)
- AM_IMPORT_FROM(psikyo_map)
- AM_RANGE(0xc00000, 0xc0000b) AM_READ(gunbird_input_r)
- AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
-ADDRESS_MAP_END
+void psikyo_state::gunbird_map(address_map &map)
+{
+ psikyo_map(map);
+ map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::gunbird_input_r));
+ map(0xc00013, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
-ADDRESS_MAP_START(psikyo_state::s1945jn_map)
- AM_IMPORT_FROM(psikyo_map)
- AM_RANGE(0xc00000, 0xc0000b) AM_READ(gunbird_input_r)
- AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000)
-ADDRESS_MAP_END
+void psikyo_state::s1945jn_map(address_map &map)
+{
+ psikyo_map(map);
+ map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::gunbird_input_r));
+ map(0xc00011, 0xc00011).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
WRITE8_MEMBER(psikyo_state::gunbird_sound_bankswitch_w)
{
membank("bank1")->set_entry((data >> 4) & 0x03);
}
-ADDRESS_MAP_START(psikyo_state::gunbird_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0x81ff) AM_RAM // RAM
- AM_RANGE(0x8200, 0xffff) AM_ROMBANK("bank1") // Banked ROM
-ADDRESS_MAP_END
+void psikyo_state::gunbird_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0x81ff).ram(); // RAM
+ map(0x8200, 0xffff).bankr("bank1"); // Banked ROM
+}
-ADDRESS_MAP_START(psikyo_state::gunbird_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+void psikyo_state::gunbird_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(psikyo_state::gunbird_sound_bankswitch_w));
+ map(0x04, 0x07).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x08, 0x08).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x0c, 0x0c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
/***************************************************************************
Strikers 1945 / Tengai
@@ -396,21 +406,23 @@ READ32_MEMBER(psikyo_state::s1945_input_r)
}
}
-ADDRESS_MAP_START(psikyo_state::s1945_map)
- AM_IMPORT_FROM(psikyo_map)
- AM_RANGE(0xc00000, 0xc0000b) AM_READ(s1945_input_r) // input ports
- AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w) // protection and tile bank switching
- AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psikyo_state::s1945_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w)
- AM_RANGE(0x02, 0x03) AM_WRITENOP
- AM_RANGE(0x08, 0x0d) AM_DEVREADWRITE("ymf", ymf278b_device, read, write)
- AM_RANGE(0x10, 0x10) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+void psikyo_state::s1945_map(address_map &map)
+{
+ psikyo_map(map);
+ map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::s1945_input_r)); // input ports
+ map(0xc00004, 0xc0000b).w(this, FUNC(psikyo_state::s1945_mcu_w)); // protection and tile bank switching
+ map(0xc00011, 0xc00011).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+void psikyo_state::s1945_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(psikyo_state::gunbird_sound_bankswitch_w));
+ map(0x02, 0x03).nopw();
+ map(0x08, 0x0d).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write));
+ map(0x10, 0x10).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x18, 0x18).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/psikyo4.cpp b/src/mame/drivers/psikyo4.cpp
index 9f9e48a1887..b224907621a 100644
--- a/src/mame/drivers/psikyo4.cpp
+++ b/src/mame/drivers/psikyo4.cpp
@@ -321,34 +321,36 @@ WRITE32_MEMBER(psikyo4_state::io_select_w)
logerror("Unk ioselect write %x mask %x\n", data, mem_mask);
}
-ADDRESS_MAP_START(psikyo4_state::ps4_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg)
- AM_RANGE(0x02000000, 0x021fffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM
- AM_RANGE(0x03000000, 0x030037ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x03003fe0, 0x03003fe3) AM_READWRITE(ps4_eeprom_r,ps4_eeprom_w)
- AM_RANGE(0x03003fe4, 0x03003fef) AM_RAM_WRITE(ps4_vidregs_w) AM_SHARE("vidregs") // vid regs?
- AM_RANGE(0x03003fe4, 0x03003fe7) AM_READNOP // also writes to this address - might be vblank?
+void psikyo4_state::ps4_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom(); // program ROM (1 meg)
+ map(0x02000000, 0x021fffff).rom().region("maincpu", 0x100000); // data ROM
+ map(0x03000000, 0x030037ff).ram().share("spriteram");
+ map(0x03003fe0, 0x03003fe3).rw(this, FUNC(psikyo4_state::ps4_eeprom_r), FUNC(psikyo4_state::ps4_eeprom_w));
+ map(0x03003fe4, 0x03003fef).ram().w(this, FUNC(psikyo4_state::ps4_vidregs_w)).share("vidregs"); // vid regs?
+ map(0x03003fe4, 0x03003fe7).nopr(); // also writes to this address - might be vblank?
// AM_RANGE(0x03003fe4, 0x03003fe7) AM_WRITENOP // might be vblank?
- AM_RANGE(0x03003ff0, 0x03003ff3) AM_WRITE(ps4_screen1_brt_w) // screen 1 brightness
- AM_RANGE(0x03003ff4, 0x03003ff7) AM_WRITE(ps4_bgpen_1_dword_w) AM_SHARE("bgpen_1") // screen 1 clear colour
- AM_RANGE(0x03003ff8, 0x03003ffb) AM_WRITE(ps4_screen2_brt_w) // screen 2 brightness
- AM_RANGE(0x03003ffc, 0x03003fff) AM_WRITE(ps4_bgpen_2_dword_w) AM_SHARE("bgpen_2") // screen 2 clear colour
- AM_RANGE(0x03004000, 0x03005fff) AM_RAM_WRITE(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_SHARE("paletteram") // palette
- AM_RANGE(0x03006000, 0x03007fff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg
- AM_RANGE(0x05000000, 0x05000007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff)
- AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x05800004, 0x05800007) AM_READ_PORT("P3_P4")
- AM_RANGE(0x05800008, 0x0580000b) AM_WRITE(io_select_w) // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets)
-
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") // main RAM (1 meg)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psikyo4_state::ps4_ymf_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROMBANK("ymfbank0")
- AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("ymfbank1")
- AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK("ymfbank2")
- AM_RANGE(0x300000, 0x3fffff) AM_ROMBANK("ymfbank3")
-ADDRESS_MAP_END
+ map(0x03003ff0, 0x03003ff3).w(this, FUNC(psikyo4_state::ps4_screen1_brt_w)); // screen 1 brightness
+ map(0x03003ff4, 0x03003ff7).w(this, FUNC(psikyo4_state::ps4_bgpen_1_dword_w)).share("bgpen_1"); // screen 1 clear colour
+ map(0x03003ff8, 0x03003ffb).w(this, FUNC(psikyo4_state::ps4_screen2_brt_w)); // screen 2 brightness
+ map(0x03003ffc, 0x03003fff).w(this, FUNC(psikyo4_state::ps4_bgpen_2_dword_w)).share("bgpen_2"); // screen 2 clear colour
+ map(0x03004000, 0x03005fff).ram().w(this, FUNC(psikyo4_state::ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w)).share("paletteram"); // palette
+ map(0x03006000, 0x03007fff).bankr("gfxbank"); // data for rom tests (gfx), data is controlled by vidreg
+ map(0x05000000, 0x05000007).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write));
+ map(0x05800000, 0x05800003).portr("P1_P2");
+ map(0x05800004, 0x05800007).portr("P3_P4");
+ map(0x05800008, 0x0580000b).w(this, FUNC(psikyo4_state::io_select_w)); // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets)
+
+ map(0x06000000, 0x060fffff).ram().share("ram"); // main RAM (1 meg)
+}
+
+void psikyo4_state::ps4_ymf_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).bankr("ymfbank0");
+ map(0x100000, 0x1fffff).bankr("ymfbank1");
+ map(0x200000, 0x2fffff).bankr("ymfbank2");
+ map(0x300000, 0x3fffff).bankr("ymfbank3");
+}
static INPUT_PORTS_START( hotgmck )
diff --git a/src/mame/drivers/psikyosh.cpp b/src/mame/drivers/psikyosh.cpp
index 3b14da362f3..71a7c886ea9 100644
--- a/src/mame/drivers/psikyosh.cpp
+++ b/src/mame/drivers/psikyosh.cpp
@@ -487,51 +487,53 @@ P1KEY11 29|30 P2KEY11
// ps3v1
-ADDRESS_MAP_START(psikyosh_state::ps3v1_map)
+void psikyosh_state::ps3v1_map(address_map &map)
+{
// rom mapping
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg)
- AM_RANGE(0x02000000, 0x020fffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM
+ map(0x00000000, 0x000fffff).rom(); // program ROM (1 meg)
+ map(0x02000000, 0x020fffff).rom().region("maincpu", 0x100000); // data ROM
// video chip
- AM_RANGE(0x03000000, 0x03003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list)
- AM_RANGE(0x03004000, 0x0300ffff) AM_RAM AM_SHARE("bgram") // video banks 7-0x1f (backgrounds and other effects)
- AM_RANGE(0x03040000, 0x03044fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // palette..
- AM_RANGE(0x03050000, 0x030501ff) AM_RAM AM_SHARE("zoomram") // sprite zoom lookup table
- AM_RANGE(0x0305ffdc, 0x0305ffdf) AM_DEVREAD("watchdog", watchdog_timer_device, reset32_r) AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads?
- AM_RANGE(0x0305ffe0, 0x0305ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_SHARE("vidregs") // video registers
- AM_RANGE(0x03060000, 0x0307ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg
+ map(0x03000000, 0x03003fff).ram().share("spriteram"); // video banks0-7 (sprites and sprite list)
+ map(0x03004000, 0x0300ffff).ram().share("bgram"); // video banks 7-0x1f (backgrounds and other effects)
+ map(0x03040000, 0x03044fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // palette..
+ map(0x03050000, 0x030501ff).ram().share("zoomram"); // sprite zoom lookup table
+ map(0x0305ffdc, 0x0305ffdf).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).w(this, FUNC(psikyosh_state::psikyosh_irqctrl_w)); // also writes to this address - might be vblank reads?
+ map(0x0305ffe0, 0x0305ffff).ram().w(this, FUNC(psikyosh_state::psikyosh_vidregs_w)).share("vidregs"); // video registers
+ map(0x03060000, 0x0307ffff).bankr("gfxbank"); // data for rom tests (gfx), data is controlled by vidreg
// rom mapping
- AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx) (Mirrored?)
+ map(0x04060000, 0x0407ffff).bankr("gfxbank"); // data for rom tests (gfx) (Mirrored?)
// sound chip
- AM_RANGE(0x05000000, 0x05000007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff)
+ map(0x05000000, 0x05000007).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write));
// inputs/eeprom
- AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x05800004, 0x05800007) AM_READWRITE(psh_eeprom_r, psh_eeprom_w)
+ map(0x05800000, 0x05800003).portr("INPUTS");
+ map(0x05800004, 0x05800007).rw(this, FUNC(psikyosh_state::psh_eeprom_r), FUNC(psikyosh_state::psh_eeprom_w));
// ram
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") // main RAM (1 meg)
-ADDRESS_MAP_END
+ map(0x06000000, 0x060fffff).ram().share("ram"); // main RAM (1 meg)
+}
// ps5, ps5v2
-ADDRESS_MAP_START(psikyosh_state::ps5_map)
+void psikyosh_state::ps5_map(address_map &map)
+{
// rom mapping
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg)
+ map(0x00000000, 0x000fffff).rom(); // program ROM (1 meg)
// inputs/eeprom
- AM_RANGE(0x03000000, 0x03000003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x03000004, 0x03000007) AM_READWRITE(psh_eeprom_r, psh_eeprom_w)
+ map(0x03000000, 0x03000003).portr("INPUTS");
+ map(0x03000004, 0x03000007).rw(this, FUNC(psikyosh_state::psh_eeprom_r), FUNC(psikyosh_state::psh_eeprom_w));
// sound chip
- AM_RANGE(0x03100000, 0x03100007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff)
+ map(0x03100000, 0x03100007).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write));
// video chip
- AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list)
- AM_RANGE(0x04004000, 0x0400ffff) AM_RAM AM_SHARE("bgram") // video banks 7-0x1f (backgrounds and other effects)
- AM_RANGE(0x04040000, 0x04044fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x04050000, 0x040501ff) AM_RAM AM_SHARE("zoomram") // sprite zoom lookup table
- AM_RANGE(0x0405ffdc, 0x0405ffdf) AM_READNOP AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads?
- AM_RANGE(0x0405ffe0, 0x0405ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_SHARE("vidregs") // video registers
- AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg
+ map(0x04000000, 0x04003fff).ram().share("spriteram"); // video banks0-7 (sprites and sprite list)
+ map(0x04004000, 0x0400ffff).ram().share("bgram"); // video banks 7-0x1f (backgrounds and other effects)
+ map(0x04040000, 0x04044fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x04050000, 0x040501ff).ram().share("zoomram"); // sprite zoom lookup table
+ map(0x0405ffdc, 0x0405ffdf).nopr().w(this, FUNC(psikyosh_state::psikyosh_irqctrl_w)); // also writes to this address - might be vblank reads?
+ map(0x0405ffe0, 0x0405ffff).ram().w(this, FUNC(psikyosh_state::psikyosh_vidregs_w)).share("vidregs"); // video registers
+ map(0x04060000, 0x0407ffff).bankr("gfxbank"); // data for rom tests (gfx), data is controlled by vidreg
// rom mapping
- AM_RANGE(0x05000000, 0x0507ffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM
+ map(0x05000000, 0x0507ffff).rom().region("maincpu", 0x100000); // data ROM
// ram
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+ map(0x06000000, 0x060fffff).ram().share("ram");
+}
static INPUT_PORTS_START( common )
diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp
index 5c189a427e9..5e18c8d3a56 100644
--- a/src/mame/drivers/psion.cpp
+++ b/src/mame/drivers/psion.cpp
@@ -249,66 +249,72 @@ READ8_MEMBER( psion1_state::switchoff_r )
return 0;
}
-ADDRESS_MAP_START(psion1_state::psion1_mem)
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07fe) AM_DEVREADWRITE("hd44780", hd44780_device, control_read, control_write)
- AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("hd44780", hd44780_device, data_read, data_write)
- AM_RANGE(0x2800, 0x2800) AM_READ(reset_kb_counter_r)
- AM_RANGE(0x2e00, 0x2e00) AM_READ(switchoff_r)
- AM_RANGE(0x3000, 0x3000) AM_READ(inc_kb_counter_r)
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psion_state::psioncm_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
- AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psion_state::psionla_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
- AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x0400, 0x5fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psion_state::psionp350_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
- AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x0400, 0x3fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("rambank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psion_state::psionlam_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
- AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x0400, 0x7fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psion_state::psionlz_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
- AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
- AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x0400, 0x3fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("rambank")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void psion1_state::psion1_mem(address_map &map)
+{
+ map(0x0000, 0x001f).rw(this, FUNC(psion1_state::hd63701_int_reg_r), FUNC(psion1_state::hd63701_int_reg_w));
+ map(0x0040, 0x00ff).ram().share("sys_register");
+ map(0x2000, 0x2000).mirror(0x07fe).rw(m_lcdc, FUNC(hd44780_device::control_read), FUNC(hd44780_device::control_write));
+ map(0x2001, 0x2001).mirror(0x07fe).rw(m_lcdc, FUNC(hd44780_device::data_read), FUNC(hd44780_device::data_write));
+ map(0x2800, 0x2800).r(this, FUNC(psion1_state::reset_kb_counter_r));
+ map(0x2e00, 0x2e00).r(this, FUNC(psion1_state::switchoff_r));
+ map(0x3000, 0x3000).r(this, FUNC(psion1_state::inc_kb_counter_r));
+ map(0x4000, 0x47ff).ram().share("ram");
+ map(0xf000, 0xffff).rom();
+}
+
+void psion_state::psioncm_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w));
+ map(0x0040, 0x00ff).ram().share("sys_register");
+ map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w));
+ map(0x2000, 0x3fff).ram().share("ram");
+ map(0x8000, 0xffff).rom();
+}
+
+void psion_state::psionla_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w));
+ map(0x0040, 0x00ff).ram().share("sys_register");
+ map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w));
+ map(0x0400, 0x5fff).ram().share("ram");
+ map(0x8000, 0xffff).rom();
+}
+
+void psion_state::psionp350_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w));
+ map(0x0040, 0x00ff).ram().share("sys_register");
+ map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w));
+ map(0x0400, 0x3fff).ram().share("ram");
+ map(0x4000, 0x7fff).bankrw("rambank");
+ map(0x8000, 0xffff).rom();
+}
+
+void psion_state::psionlam_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w));
+ map(0x0040, 0x00ff).ram().share("sys_register");
+ map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w));
+ map(0x0400, 0x7fff).ram().share("ram");
+ map(0x8000, 0xbfff).bankr("rombank");
+ map(0xc000, 0xffff).rom();
+}
+
+void psion_state::psionlz_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w));
+ map(0x0040, 0x00ff).ram().share("sys_register");
+ map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w));
+ map(0x0400, 0x3fff).ram().share("ram");
+ map(0x4000, 0x7fff).bankrw("rambank");
+ map(0x8000, 0xbfff).bankr("rombank");
+ map(0xc000, 0xffff).rom();
+}
/* Input ports */
INPUT_PORTS_START( psion )
diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp
index 3543709f36c..51efa6cceaa 100644
--- a/src/mame/drivers/psx.cpp
+++ b/src/mame/drivers/psx.cpp
@@ -503,13 +503,15 @@ void psx1_state::cd_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t
printf("cd_dma_write?!: addr %x, size %x\n", n_address, n_size);
}
-ADDRESS_MAP_START(psx1_state::psx_map)
- AM_RANGE(0x1f000000, 0x1f07ffff) AM_READWRITE16(parallel_r, parallel_w, 0xffffffff)
-ADDRESS_MAP_END
+void psx1_state::psx_map(address_map &map)
+{
+ map(0x1f000000, 0x1f07ffff).rw(this, FUNC(psx1_state::parallel_r), FUNC(psx1_state::parallel_w));
+}
-ADDRESS_MAP_START(psx1_state::subcpu_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void psx1_state::subcpu_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
MACHINE_CONFIG_START(psx1_state::psj)
/* basic machine hardware */
diff --git a/src/mame/drivers/psychic5.cpp b/src/mame/drivers/psychic5.cpp
index e986b246513..1318b06beaa 100644
--- a/src/mame/drivers/psychic5.cpp
+++ b/src/mame/drivers/psychic5.cpp
@@ -435,106 +435,114 @@ WRITE8_MEMBER(psychic5_state::bombsa_flipscreen_w)
***************************************************************************/
-ADDRESS_MAP_START(psychic5_state::psychic5_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xdfff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf001, 0xf001) AM_READNOP AM_WRITE(psychic5_coin_counter_w)
- AM_RANGE(0xf002, 0xf002) AM_READWRITE(bankselect_r, psychic5_bankselect_w)
- AM_RANGE(0xf003, 0xf003) AM_READWRITE(vram_page_select_r, vram_page_select_w)
- AM_RANGE(0xf004, 0xf004) AM_NOP // ???
- AM_RANGE(0xf005, 0xf005) AM_READNOP AM_WRITE(psychic5_title_screen_w)
- AM_RANGE(0xf006, 0xf1ff) AM_NOP
- AM_RANGE(0xf200, 0xf7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(psychic5_state::psychic5_vrambank_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM
-
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
- AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
- AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
-
- AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
-
- AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
- AM_RANGE(0x2800, 0x29ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
- AM_RANGE(0x2a00, 0x2bff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
-
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
-
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(psychic5_state::psychic5_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psychic5_state::psychic5_soundport_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ym2203_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(psychic5_state::bombsa_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
+void psychic5_state::psychic5_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xdfff).m(m_vrambank, FUNC(address_map_bank_device::amap8));
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xf000).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf001, 0xf001).nopr().w(this, FUNC(psychic5_state::psychic5_coin_counter_w));
+ map(0xf002, 0xf002).rw(this, FUNC(psychic5_state::bankselect_r), FUNC(psychic5_state::psychic5_bankselect_w));
+ map(0xf003, 0xf003).rw(this, FUNC(psychic5_state::vram_page_select_r), FUNC(psychic5_state::vram_page_select_w));
+ map(0xf004, 0xf004).noprw(); // ???
+ map(0xf005, 0xf005).nopr().w(this, FUNC(psychic5_state::psychic5_title_screen_w));
+ map(0xf006, 0xf1ff).noprw();
+ map(0xf200, 0xf7ff).ram().share("spriteram");
+ map(0xf800, 0xffff).ram();
+}
+
+
+void psychic5_state::psychic5_vrambank_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().w(this, FUNC(psychic5_state::bg_videoram_w)).share("bg_videoram");
+ map(0x1000, 0x1fff).ram();
+
+ map(0x2000, 0x2000).portr("SYSTEM");
+ map(0x2001, 0x2001).portr("P1");
+ map(0x2002, 0x2002).portr("P2");
+ map(0x2003, 0x2003).portr("DSW1");
+ map(0x2004, 0x2004).portr("DSW2");
+
+ map(0x2308, 0x230c).ram().share("bg_control");
+
+ map(0x2400, 0x25ff).ram().w(this, FUNC(psychic5_state::sprite_col_w)).share("palette_ram_sp");
+ map(0x2800, 0x29ff).ram().w(this, FUNC(psychic5_state::bg_col_w)).share("palette_ram_bg");
+ map(0x2a00, 0x2bff).ram().w(this, FUNC(psychic5_state::tx_col_w)).share("palette_ram_tx");
+
+ map(0x3000, 0x37ff).ram().w(this, FUNC(psychic5_state::fg_videoram_w)).share("fg_videoram");
+
+}
+
+
+void psychic5_state::psychic5_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
+
+void psychic5_state::psychic5_soundport_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write));
+ map(0x80, 0x81).w("ym2", FUNC(ym2203_device::write));
+}
+
+
+void psychic5_state::bombsa_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xcfff).ram();
/* ports look like the other games */
- AM_RANGE(0xd000, 0xd1ff) AM_RAM
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // confirmed
- AM_RANGE(0xd001, 0xd001) AM_WRITE(bombsa_flipscreen_w)
- AM_RANGE(0xd002, 0xd002) AM_READWRITE(bankselect_r, bombsa_bankselect_w)
- AM_RANGE(0xd003, 0xd003) AM_READWRITE(vram_page_select_r, vram_page_select_w)
- AM_RANGE(0xd005, 0xd005) AM_WRITE(bombsa_unknown_w) // ?
-
- AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM
-
- AM_RANGE(0xe000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psychic5_state::bombsa_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_WRITEONLY // Is this a confirm of some sort?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psychic5_state::bombsa_soundport_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(psychic5_state::bombsa_vrambank_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
-
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
- AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
- AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
-
- AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
-
- AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
- AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
- AM_RANGE(0x3400, 0x35ff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
-
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
-ADDRESS_MAP_END
+ map(0xd000, 0xd1ff).ram();
+ map(0xd000, 0xd000).w("soundlatch", FUNC(generic_latch_8_device::write)); // confirmed
+ map(0xd001, 0xd001).w(this, FUNC(psychic5_state::bombsa_flipscreen_w));
+ map(0xd002, 0xd002).rw(this, FUNC(psychic5_state::bankselect_r), FUNC(psychic5_state::bombsa_bankselect_w));
+ map(0xd003, 0xd003).rw(this, FUNC(psychic5_state::vram_page_select_r), FUNC(psychic5_state::vram_page_select_w));
+ map(0xd005, 0xd005).w(this, FUNC(psychic5_state::bombsa_unknown_w)); // ?
+
+ map(0xd200, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram();
+
+ map(0xe000, 0xffff).m(m_vrambank, FUNC(address_map_bank_device::amap8));
+}
+
+void psychic5_state::bombsa_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).writeonly(); // Is this a confirm of some sort?
+}
+
+void psychic5_state::bombsa_soundport_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x81).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
+
+void psychic5_state::bombsa_vrambank_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().w(this, FUNC(psychic5_state::bg_videoram_w)).share("bg_videoram");
+
+ map(0x2000, 0x2000).portr("SYSTEM");
+ map(0x2001, 0x2001).portr("P1");
+ map(0x2002, 0x2002).portr("P2");
+ map(0x2003, 0x2003).portr("DSW1");
+ map(0x2004, 0x2004).portr("DSW2");
+
+ map(0x2308, 0x230c).ram().share("bg_control");
+
+ map(0x3000, 0x31ff).ram().w(this, FUNC(psychic5_state::sprite_col_w)).share("palette_ram_sp");
+ map(0x3200, 0x33ff).ram().w(this, FUNC(psychic5_state::bg_col_w)).share("palette_ram_bg");
+ map(0x3400, 0x35ff).ram().w(this, FUNC(psychic5_state::tx_col_w)).share("palette_ram_tx");
+
+ map(0x2800, 0x2fff).ram().w(this, FUNC(psychic5_state::fg_videoram_w)).share("fg_videoram");
+}
static INPUT_PORTS_START( psychic5 )
diff --git a/src/mame/drivers/pt68k4.cpp b/src/mame/drivers/pt68k4.cpp
index bf2a16cd379..0b16a985291 100644
--- a/src/mame/drivers/pt68k4.cpp
+++ b/src/mame/drivers/pt68k4.cpp
@@ -250,34 +250,36 @@ WRITE8_MEMBER(pt68k4_state::fdc_select_w)
}
}
-ADDRESS_MAP_START(pt68k4_state::pt68k2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("rambase") // 1MB RAM
- AM_RANGE(0xf80000, 0xf8ffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, mem_r, mem_w, 0x00ff)
- AM_RANGE(0xfa0000, 0xfbffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, io_r, io_w, 0x00ff)
- AM_RANGE(0xfe0000, 0xfe001f) AM_DEVREADWRITE8(DUART1_TAG, mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xfe0080, 0xfe00bf) AM_READ8(pia_stub_r, 0x00ff)
- AM_RANGE(0xfe00c0, 0xfe00ff) AM_WRITE8(fdc_select_w, 0x00ff)
- AM_RANGE(0xfe0100, 0xfe013f) AM_DEVREADWRITE8(WDFDC_TAG, wd1772_device, read, write, 0x00ff)
- AM_RANGE(0xfe01c0, 0xfe01c3) AM_READWRITE8(keyboard_r, keyboard_w, 0x00ff)
- AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE8(hiram_r, hiram_w, 0xff00)
- AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pt68k4_state::pt68k4_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("rambase") // 1MB RAM (OS9 needs more)
- AM_RANGE(0xf80000, 0xf8ffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, mem_r, mem_w, 0x00ff)
- AM_RANGE(0xfa0000, 0xfbffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, io_r, io_w, 0x00ff)
- AM_RANGE(0xfe0000, 0xfe001f) AM_DEVREADWRITE8(DUART1_TAG, mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xfe01c0, 0xfe01c3) AM_READWRITE8(keyboard_r, keyboard_w, 0x00ff)
- AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE8(hiram_r, hiram_w, 0xff00)
- AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void pt68k4_state::pt68k2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().share("rambase"); // 1MB RAM
+ map(0xf80000, 0xf8ffff).rom().region("roms", 0);
+ map(0xc00000, 0xdfffff).rw(m_isa, FUNC(isa8_device::mem_r), FUNC(isa8_device::mem_w)).umask16(0x00ff);
+ map(0xfa0000, 0xfbffff).rw(m_isa, FUNC(isa8_device::io_r), FUNC(isa8_device::io_w)).umask16(0x00ff);
+ map(0xfe0000, 0xfe001f).rw(m_duart1, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xfe0040, 0xfe005f).rw(m_duart2, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xfe0080, 0xfe00bf).r(this, FUNC(pt68k4_state::pia_stub_r)).umask16(0x00ff);
+ map(0xfe00c0, 0xfe00ff).w(this, FUNC(pt68k4_state::fdc_select_w)).umask16(0x00ff);
+ map(0xfe0100, 0xfe013f).rw(m_wdfdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff);
+ map(0xfe01c0, 0xfe01c3).rw(this, FUNC(pt68k4_state::keyboard_r), FUNC(pt68k4_state::keyboard_w)).umask16(0x00ff);
+ map(0xff0000, 0xff0fff).rw(this, FUNC(pt68k4_state::hiram_r), FUNC(pt68k4_state::hiram_w)).umask16(0xff00);
+ map(0xff0000, 0xff0fff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0x00ff);
+}
+
+void pt68k4_state::pt68k4_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().share("rambase"); // 1MB RAM (OS9 needs more)
+ map(0xf80000, 0xf8ffff).rom().region("roms", 0);
+ map(0xc00000, 0xdfffff).rw(m_isa, FUNC(isa8_device::mem_r), FUNC(isa8_device::mem_w)).umask16(0x00ff);
+ map(0xfa0000, 0xfbffff).rw(m_isa, FUNC(isa8_device::io_r), FUNC(isa8_device::io_w)).umask16(0x00ff);
+ map(0xfe0000, 0xfe001f).rw(m_duart1, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xfe0040, 0xfe005f).rw(m_duart2, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xfe01c0, 0xfe01c3).rw(this, FUNC(pt68k4_state::keyboard_r), FUNC(pt68k4_state::keyboard_w)).umask16(0x00ff);
+ map(0xff0000, 0xff0fff).rw(this, FUNC(pt68k4_state::hiram_r), FUNC(pt68k4_state::hiram_w)).umask16(0xff00);
+ map(0xff0000, 0xff0fff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0x00ff);
+}
/* Input ports */
static INPUT_PORTS_START( pt68k4 )
diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp
index 848324936f9..2ca57ea6248 100644
--- a/src/mame/drivers/ptcsol.cpp
+++ b/src/mame/drivers/ptcsol.cpp
@@ -424,26 +424,28 @@ WRITE8_MEMBER( sol20_state::sol20_fe_w )
m_sol20_fe = data;
}
-ADDRESS_MAP_START(sol20_state::sol20_mem)
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
- AM_RANGE(0x0800, 0xbfff) AM_RAM // optional s100 ram
- AM_RANGE(0xc000, 0xc7ff) AM_ROM
- AM_RANGE(0xc800, 0xcbff) AM_RAM // system ram
- AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xd000, 0xffff) AM_RAM // optional s100 ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sol20_state::sol20_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf8, 0xf8) AM_READWRITE(sol20_f8_r, sol20_f8_w)
- AM_RANGE(0xf9, 0xf9) AM_DEVREADWRITE("uart", ay51013_device, receive, transmit)
- AM_RANGE(0xfa, 0xfa) AM_READWRITE(sol20_fa_r, sol20_fa_w)
- AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE("uart_s", ay51013_device, receive, transmit)
- AM_RANGE(0xfc, 0xfc) AM_READ(sol20_fc_r)
- AM_RANGE(0xfd, 0xfd) AM_READWRITE(sol20_fd_r, sol20_fd_w)
- AM_RANGE(0xfe, 0xfe) AM_WRITE(sol20_fe_w)
- AM_RANGE(0xff, 0xff) AM_READ_PORT("S2")
+void sol20_state::sol20_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0xbfff).ram(); // optional s100 ram
+ map(0xc000, 0xc7ff).rom();
+ map(0xc800, 0xcbff).ram(); // system ram
+ map(0xcc00, 0xcfff).ram().share("videoram");
+ map(0xd000, 0xffff).ram(); // optional s100 ram
+}
+
+void sol20_state::sol20_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xf8, 0xf8).rw(this, FUNC(sol20_state::sol20_f8_r), FUNC(sol20_state::sol20_f8_w));
+ map(0xf9, 0xf9).rw(m_uart, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit));
+ map(0xfa, 0xfa).rw(this, FUNC(sol20_state::sol20_fa_r), FUNC(sol20_state::sol20_fa_w));
+ map(0xfb, 0xfb).rw(m_uart_s, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit));
+ map(0xfc, 0xfc).r(this, FUNC(sol20_state::sol20_fc_r));
+ map(0xfd, 0xfd).rw(this, FUNC(sol20_state::sol20_fd_r), FUNC(sol20_state::sol20_fd_w));
+ map(0xfe, 0xfe).w(this, FUNC(sol20_state::sol20_fe_w));
+ map(0xff, 0xff).portr("S2");
/* AM_RANGE(0xf8, 0xf8) serial status in (bit 6=data av, bit 7=tmbe)
AM_RANGE(0xf9, 0xf9) serial data in, out
AM_RANGE(0xfa, 0xfa) general status in (bit 0=keyb data av, bit 1=parin data av, bit 2=parout ready)
@@ -452,7 +454,7 @@ ADDRESS_MAP_START(sol20_state::sol20_io)
AM_RANGE(0xfd, 0xfd) parallel data in, out
AM_RANGE(0xfe, 0xfe) scroll register
AM_RANGE(0xff, 0xff) sense switches */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( sol20 )
diff --git a/src/mame/drivers/pturn.cpp b/src/mame/drivers/pturn.cpp
index b5c5c6bfa6b..8f6208ff89d 100644
--- a/src/mame/drivers/pturn.cpp
+++ b/src/mame/drivers/pturn.cpp
@@ -343,41 +343,43 @@ READ8_MEMBER(pturn_state::custom_r)
}
-ADDRESS_MAP_START(pturn_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_WRITENOP AM_READ(custom_r)
+void pturn_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).nopw().r(this, FUNC(pturn_state::custom_r));
- AM_RANGE(0xdfe0, 0xdfe0) AM_NOP
+ map(0xdfe0, 0xdfe0).noprw();
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe400) AM_WRITE(fgpalette_w)
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(pturn_state::videoram_w)).share("videoram");
+ map(0xe400, 0xe400).w(this, FUNC(pturn_state::fgpalette_w));
+ map(0xe800, 0xe800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram")
+ map(0xf000, 0xf0ff).ram().share("spriteram");
- AM_RANGE(0xf400, 0xf400) AM_WRITE(bg_scrollx_w)
+ map(0xf400, 0xf400).w(this, FUNC(pturn_state::bg_scrollx_w));
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_WRITENOP
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf803, 0xf803) AM_WRITE(bg_scrolly_w)
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW2")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW1")
- AM_RANGE(0xf806, 0xf806) AM_READNOP /* Protection related, ((val&3)==2) -> jump to 0 */
+ map(0xf800, 0xf800).portr("P1").nopw();
+ map(0xf801, 0xf801).portr("P2").w(this, FUNC(pturn_state::bgcolor_w));
+ map(0xf802, 0xf802).portr("SYSTEM");
+ map(0xf803, 0xf803).w(this, FUNC(pturn_state::bg_scrolly_w));
+ map(0xf804, 0xf804).portr("DSW2");
+ map(0xf805, 0xf805).portr("DSW1");
+ map(0xf806, 0xf806).nopr(); /* Protection related, ((val&3)==2) -> jump to 0 */
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(pturn_state::sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(nmi_sub_enable_w)
- AM_RANGE(0x4000, 0x4000) AM_RAM
- AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void pturn_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(pturn_state::nmi_sub_enable_w));
+ map(0x4000, 0x4000).ram();
+ map(0x5000, 0x5001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).w("ay2", FUNC(ay8910_device::address_data_w));
+}
static const gfx_layout charlayout =
{
diff --git a/src/mame/drivers/puckpkmn.cpp b/src/mame/drivers/puckpkmn.cpp
index 78a400fc0f3..9c1233627bc 100644
--- a/src/mame/drivers/puckpkmn.cpp
+++ b/src/mame/drivers/puckpkmn.cpp
@@ -213,49 +213,51 @@ static INPUT_PORTS_START( jzth )
INPUT_PORTS_END
-ADDRESS_MAP_START(md_boot_state::puckpkmn_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM /* Main 68k Program Roms */
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2")
- AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK")
- AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
- AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
- AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
- AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
-
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
+void md_boot_state::puckpkmn_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom(); /* Main 68k Program Roms */
+ map(0x700010, 0x700011).portr("P2");
+ map(0x700012, 0x700013).portr("P1");
+ map(0x700014, 0x700015).portr("UNK");
+ map(0x700016, 0x700017).portr("DSW1");
+ map(0x700018, 0x700019).portr("DSW2");
+ map(0x700023, 0x700023).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa04000, 0xa04003).rw(this, FUNC(md_boot_state::megadriv_68k_YM2612_read), FUNC(md_boot_state::megadriv_68k_YM2612_write));
+ map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
+
+ map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000);
/* Unknown reads/writes: */
- AM_RANGE(0xa00000, 0xa00551) AM_WRITENOP /* ? */
+ map(0xa00000, 0xa00551).nopw(); /* ? */
// AM_RANGE(0xa10000, 0xa10001) AM_READNOP /* ? once */
- AM_RANGE(0xa10002, 0xa10005) AM_NOP /* ? alternative way of reading inputs ? */
- AM_RANGE(0xa11100, 0xa11101) AM_NOP /* ? */
+ map(0xa10002, 0xa10005).noprw(); /* ? alternative way of reading inputs ? */
+ map(0xa11100, 0xa11101).noprw(); /* ? */
// AM_RANGE(0xa10008, 0xa1000d) AM_WRITENOP /* ? once */
// AM_RANGE(0xa14000, 0xa14003) AM_WRITENOP /* ? once */
- AM_RANGE(0xa11200, 0xa11201) AM_WRITENOP /* ? */
-ADDRESS_MAP_END
+ map(0xa11200, 0xa11201).nopw(); /* ? */
+}
-ADDRESS_MAP_START(md_boot_state::jzth_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2")
- AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK")
- AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
- AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
- AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8( megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
- AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
+void md_boot_state::jzth_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x700010, 0x700011).portr("P2");
+ map(0x700012, 0x700013).portr("P1");
+ map(0x700014, 0x700015).portr("UNK");
+ map(0x700016, 0x700017).portr("DSW1");
+ map(0x700018, 0x700019).portr("DSW2");
+ map(0x700023, 0x700023).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa04000, 0xa04003).rw(this, FUNC(md_boot_state::megadriv_68k_YM2612_read), FUNC(md_boot_state::megadriv_68k_YM2612_write));
+ map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
+ map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000);
- AM_RANGE(0xa00000, 0xa00551) AM_NOP
+ map(0xa00000, 0xa00551).noprw();
- AM_RANGE(0xA11100, 0xA11101) AM_NOP
+ map(0xA11100, 0xA11101).noprw();
- AM_RANGE(0x710000, 0x710001) AM_READWRITE(bl_710000_r,bl_710000_w) // protection, will erase the VDP address causing writes to 0 unless this returns 0xe
-ADDRESS_MAP_END
+ map(0x710000, 0x710001).rw(this, FUNC(md_boot_state::bl_710000_r), FUNC(md_boot_state::bl_710000_w)); // protection, will erase the VDP address causing writes to 0 unless this returns 0xe
+}
READ16_MEMBER(md_boot_state::puckpkmna_70001c_r)
{
@@ -269,11 +271,12 @@ READ16_MEMBER(md_boot_state::puckpkmna_4b2476_r)
return 0x3400;
}
-ADDRESS_MAP_START(md_boot_state::puckpkmna_map)
- AM_IMPORT_FROM( puckpkmn_map )
- AM_RANGE(0x4b2476, 0x4b2477) AM_READ(puckpkmna_4b2476_r)
- AM_RANGE(0x70001c, 0x70001d) AM_READ(puckpkmna_70001c_r)
-ADDRESS_MAP_END
+void md_boot_state::puckpkmna_map(address_map &map)
+{
+ puckpkmn_map(map);
+ map(0x4b2476, 0x4b2477).r(this, FUNC(md_boot_state::puckpkmna_4b2476_r));
+ map(0x70001c, 0x70001d).r(this, FUNC(md_boot_state::puckpkmna_70001c_r));
+}
MACHINE_CONFIG_START(md_boot_state::puckpkmn)
md_ntsc(config);
diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp
index 064bdd0afa2..e4c9fe0970a 100644
--- a/src/mame/drivers/pulsar.cpp
+++ b/src/mame/drivers/pulsar.cpp
@@ -81,21 +81,23 @@ private:
required_device<msm5832_device> m_rtc;
};
-ADDRESS_MAP_START(pulsar_state::pulsar_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x0800, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pulsar_state::pulsar_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x0c) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_DEVREADWRITE("fdc", fd1797_device, read, write)
- AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xf0, 0xff) AM_WRITE(baud_w)
-ADDRESS_MAP_END
+void pulsar_state::pulsar_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0");
+ map(0x0800, 0xf7ff).ram();
+ map(0xf800, 0xffff).bankr("bankr1").bankw("bankw1");
+}
+
+void pulsar_state::pulsar_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xc0, 0xc3).mirror(0x0c).rw("dart", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0xd0, 0xd3).mirror(0x0c).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
+ map(0xe0, 0xe3).mirror(0x0c).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf0, 0xff).w(this, FUNC(pulsar_state::baud_w));
+}
WRITE8_MEMBER( pulsar_state::baud_w )
diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp
index 991a45aeb60..e6a11870549 100644
--- a/src/mame/drivers/punchout.cpp
+++ b/src/mame/drivers/punchout.cpp
@@ -140,52 +140,56 @@ WRITE_LINE_MEMBER(punchout_state::nmi_mask_w)
m_nmi_mask = state;
}
-ADDRESS_MAP_START(punchout_state::punchout_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(punchout_bg_top_videoram_w) AM_SHARE("bg_top_videoram")
- AM_RANGE(0xdff0, 0xdff7) AM_SHARE("spr1_ctrlram")
- AM_RANGE(0xdff8, 0xdffc) AM_SHARE("spr2_ctrlram")
- AM_RANGE(0xdffd, 0xdffd) AM_SHARE("palettebank")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(punchout_spr1_videoram_w) AM_SHARE("spr1_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(punchout_spr2_videoram_w) AM_SHARE("spr2_videoram")
- AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(punchout_bg_bot_videoram_w) AM_SHARE("bg_bot_videoram") // also contains scroll RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(punchout_state::armwrest_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(armwrest_fg_videoram_w) AM_SHARE("armwrest_fgram")
- AM_RANGE(0xdff0, 0xdff7) AM_SHARE("spr1_ctrlram")
- AM_RANGE(0xdff8, 0xdffc) AM_SHARE("spr2_ctrlram")
- AM_RANGE(0xdffd, 0xdffd) AM_SHARE("palettebank")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(punchout_spr1_videoram_w) AM_SHARE("spr1_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(punchout_spr2_videoram_w) AM_SHARE("spr2_videoram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(punchout_bg_bot_videoram_w) AM_SHARE("bg_bot_videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(punchout_bg_top_videoram_w) AM_SHARE("bg_top_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(punchout_state::punchout_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x00, 0x01) AM_WRITENOP // the 2A03 #1 is not present
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0x05, 0x07) AM_WRITENOP // spunchout protection
- AM_RANGE(0x08, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(punchout_state::punchout_vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void punchout_state::punchout_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram().share("nvram");
+ map(0xd000, 0xd7ff).ram();
+ map(0xd800, 0xdfff).ram().w(this, FUNC(punchout_state::punchout_bg_top_videoram_w)).share("bg_top_videoram");
+ map(0xdff0, 0xdff7).share("spr1_ctrlram");
+ map(0xdff8, 0xdffc).share("spr2_ctrlram");
+ map(0xdffd, 0xdffd).share("palettebank");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(punchout_state::punchout_spr1_videoram_w)).share("spr1_videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(punchout_state::punchout_spr2_videoram_w)).share("spr2_videoram");
+ map(0xf000, 0xffff).ram().w(this, FUNC(punchout_state::punchout_bg_bot_videoram_w)).share("bg_bot_videoram"); // also contains scroll RAM
+}
+
+
+void punchout_state::armwrest_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram().share("nvram");
+ map(0xd000, 0xd7ff).ram();
+ map(0xd800, 0xdfff).ram().w(this, FUNC(punchout_state::armwrest_fg_videoram_w)).share("armwrest_fgram");
+ map(0xdff0, 0xdff7).share("spr1_ctrlram");
+ map(0xdff8, 0xdffc).share("spr2_ctrlram");
+ map(0xdffd, 0xdffd).share("palettebank");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(punchout_state::punchout_spr1_videoram_w)).share("spr1_videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(punchout_state::punchout_spr2_videoram_w)).share("spr2_videoram");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(punchout_state::punchout_bg_bot_videoram_w)).share("bg_bot_videoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(punchout_state::punchout_bg_top_videoram_w)).share("bg_top_videoram");
+}
+
+
+void punchout_state::punchout_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x00, 0x01).nopw(); // the 2A03 #1 is not present
+ map(0x02, 0x02).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x03, 0x03).portr("DSW1").w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x04, 0x04).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0x05, 0x07).nopw(); // spunchout protection
+ map(0x08, 0x0f).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+
+void punchout_state::punchout_vlm_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x3fff).rom();
+}
// Super Punch-Out!! comes with an extra security PCB that plugs into the Z80 socket
@@ -235,21 +239,23 @@ WRITE8_MEMBER(punchout_state::spunchout_rp5h01_clock_w)
m_rp5h01->test_w(data & 1);
}
-ADDRESS_MAP_START(punchout_state::spnchout_io_map)
- AM_IMPORT_FROM( punchout_io_map )
- AM_RANGE(0x05, 0x05) AM_MIRROR(0xf0) AM_WRITE(spunchout_rp5h01_reset_w)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0xf0) AM_WRITE(spunchout_rp5h01_clock_w)
- AM_RANGE(0x07, 0x07) AM_SELECT(0xf0) AM_READWRITE(spunchout_exp_r, spunchout_exp_w) // protection ports
-ADDRESS_MAP_END
+void punchout_state::spnchout_io_map(address_map &map)
+{
+ punchout_io_map(map);
+ map(0x05, 0x05).mirror(0xf0).w(this, FUNC(punchout_state::spunchout_rp5h01_reset_w));
+ map(0x06, 0x06).mirror(0xf0).w(this, FUNC(punchout_state::spunchout_rp5h01_clock_w));
+ map(0x07, 0x07).select(0xf0).rw(this, FUNC(punchout_state::spunchout_exp_r), FUNC(punchout_state::spunchout_exp_w)); // protection ports
+}
// 2A03 (sound)
-ADDRESS_MAP_START(punchout_state::punchout_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x4016, 0x4016) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4017, 0x4017) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void punchout_state::punchout_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x4016, 0x4016).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x4017, 0x4017).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/pv1000.cpp b/src/mame/drivers/pv1000.cpp
index 83557663c86..989c9672b54 100644
--- a/src/mame/drivers/pv1000.cpp
+++ b/src/mame/drivers/pv1000.cpp
@@ -179,17 +179,19 @@ public:
};
-ADDRESS_MAP_START(pv1000_state::pv1000)
+void pv1000_state::pv1000(address_map &map)
+{
//AM_RANGE(0x0000, 0x7fff) // mapped by the cartslot
- AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(gfxram_w) AM_REGION("gfxram", 0)
-ADDRESS_MAP_END
+ map(0xb800, 0xbbff).ram().share("videoram");
+ map(0xbc00, 0xbfff).ram().w(this, FUNC(pv1000_state::gfxram_w)).region("gfxram", 0);
+}
-ADDRESS_MAP_START(pv1000_state::pv1000_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf8, 0xff) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void pv1000_state::pv1000_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf8, 0xff).rw(this, FUNC(pv1000_state::io_r), FUNC(pv1000_state::io_w));
+}
WRITE8_MEMBER( pv1000_state::gfxram_w )
diff --git a/src/mame/drivers/pv2000.cpp b/src/mame/drivers/pv2000.cpp
index ceec19c2b83..9f93b991382 100644
--- a/src/mame/drivers/pv2000.cpp
+++ b/src/mame/drivers/pv2000.cpp
@@ -178,34 +178,36 @@ WRITE8_MEMBER( pv2000_state::cass_out )
/* Memory Maps */
-ADDRESS_MAP_START(pv2000_state::pv2000_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
+void pv2000_state::pv2000_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
- AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
+ map(0x4000, 0x4000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0x4001, 0x4001).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
- AM_RANGE(0x7000, 0x7fff) AM_RAM
+ map(0x7000, 0x7fff).ram();
//AM_RANGE(0x8000, 0xbfff) ext ram?
//AM_RANGE(0xc000, 0xffff) // mapped by the cartslot
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(pv2000_state::pv2000_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void pv2000_state::pv2000_io_map(address_map &map)
+{
+ map.global_mask(0xff);
//theres also printer and tape I/O (TODO)
- AM_RANGE(0x00, 0x00) AM_WRITE(cass_conf_w)
+ map(0x00, 0x00).w(this, FUNC(pv2000_state::cass_conf_w));
//keyboard/joystick
- AM_RANGE(0x10, 0x10) AM_READ(keys_hi_r)
- AM_RANGE(0x20, 0x20) AM_READWRITE(keys_lo_r, keys_w)
+ map(0x10, 0x10).r(this, FUNC(pv2000_state::keys_hi_r));
+ map(0x20, 0x20).rw(this, FUNC(pv2000_state::keys_lo_r), FUNC(pv2000_state::keys_w));
//sn76489a
- AM_RANGE(0x40, 0x40) AM_READ(keys_mod_r) AM_DEVWRITE("sn76489a", sn76489a_device, write)
+ map(0x40, 0x40).r(this, FUNC(pv2000_state::keys_mod_r)).w("sn76489a", FUNC(sn76489a_device::write));
/* Cassette input. Gets hit a lot after a GLOAD command */
- AM_RANGE(0x60, 0x60) AM_READWRITE(cass_in,cass_out)
-ADDRESS_MAP_END
+ map(0x60, 0x60).rw(this, FUNC(pv2000_state::cass_in), FUNC(pv2000_state::cass_out));
+}
static INPUT_PORTS_START( pv2000 )
diff --git a/src/mame/drivers/pv9234.cpp b/src/mame/drivers/pv9234.cpp
index dbd03d117c1..91072b0e063 100644
--- a/src/mame/drivers/pv9234.cpp
+++ b/src/mame/drivers/pv9234.cpp
@@ -105,23 +105,24 @@ WRITE32_MEMBER( pv9234_state::debug2_w )
logerror("debug2=%02x\n",data); // ignore the huge amount of zeroes here
}
-ADDRESS_MAP_START(pv9234_state::pv9234_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("maincpu",0) //FLASH ROM!
+void pv9234_state::pv9234_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().region("maincpu", 0); //FLASH ROM!
// AM_RANGE(0x00000000, 0x00000033) AM_WRITE something
// AM_RANGE(0x00000044, 0x00000047) AM_WRITE something
// AM_RANGE(0x00000060, 0x0000006b) AM_WRITE something
// AM_RANGE(0x00007000, 0x00007003) AM_WRITE something
// AM_RANGE(0x00008000, 0x00008003) AM_WRITE something
- AM_RANGE(0x00008014, 0x00008017) AM_WRITE(debug1_w)
+ map(0x00008014, 0x00008017).w(this, FUNC(pv9234_state::debug1_w));
// AM_RANGE(0x00008020, 0x00008027) AM_WRITE something
- AM_RANGE(0x000080c0, 0x000080c3) AM_WRITE(debug2_w)
- AM_RANGE(0x000080cc, 0x000080cf) AM_WRITE(debug_w)
+ map(0x000080c0, 0x000080c3).w(this, FUNC(pv9234_state::debug2_w));
+ map(0x000080cc, 0x000080cf).w(this, FUNC(pv9234_state::debug_w));
// AM_RANGE(0x000080d0, 0x000080d3) AM_WRITE something
- AM_RANGE(0x0003e000, 0x0003efff) AM_RAM AM_SHARE("p_ram")
- AM_RANGE(0x00080000, 0x00087fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("share1")//mirror is a guess, writes a prg at 0xc0200 then it jumps at b0200 (!)
- AM_RANGE(0xe0000000, 0xe0007fff) AM_MIRROR(0x0fff8000) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xffffff00, 0xffffffff) AM_RAM //i/o? stack ram?
-ADDRESS_MAP_END
+ map(0x0003e000, 0x0003efff).ram().share("p_ram");
+ map(0x00080000, 0x00087fff).mirror(0x78000).ram().share("share1");//mirror is a guess, writes a prg at 0xc0200 then it jumps at b0200 (!)
+ map(0xe0000000, 0xe0007fff).mirror(0x0fff8000).ram().share("share1");
+ map(0xffffff00, 0xffffffff).ram(); //i/o? stack ram?
+}
/* Input ports */
static INPUT_PORTS_START( pv9234 )
diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp
index 95134119778..cec4828a444 100644
--- a/src/mame/drivers/pve500.cpp
+++ b/src/mame/drivers/pve500.cpp
@@ -133,25 +133,29 @@ static const z80_daisy_config maincpu_daisy_chain[] =
};
-ADDRESS_MAP_START(pve500_state::maincpu_io)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0xff00) AM_DEVREADWRITE("external_sio", z80sio0_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x08, 0x0B) AM_MIRROR(0xff00) AM_DEVREADWRITE("external_ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pve500_state::maincpu_prg)
- AM_RANGE(0x0000, 0xbfff) AM_ROM // ICB7: 48kbytes EPROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM // ICD6: 8kbytes of RAM
- AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_DEVREADWRITE("mb8421", mb8421_device, left_r, left_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pve500_state::subcpu_io)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pve500_state::subcpu_prg)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ICG5: 32kbytes EPROM
- AM_RANGE(0x8000, 0x8007) AM_MIRROR(0x3ff8) AM_DEVREADWRITE("cxdio", cxd1095_device, read, write)
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w)
-ADDRESS_MAP_END
+void pve500_state::maincpu_io(address_map &map)
+{
+ map(0x00, 0x03).mirror(0xff00).rw("external_sio", FUNC(z80sio0_device::cd_ba_r), FUNC(z80sio0_device::cd_ba_w));
+ map(0x08, 0x0B).mirror(0xff00).rw("external_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
+
+void pve500_state::maincpu_prg(address_map &map)
+{
+ map(0x0000, 0xbfff).rom(); // ICB7: 48kbytes EPROM
+ map(0xc000, 0xdfff).ram(); // ICD6: 8kbytes of RAM
+ map(0xe000, 0xe7ff).mirror(0x1800).rw("mb8421", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+}
+
+void pve500_state::subcpu_io(address_map &map)
+{
+}
+
+void pve500_state::subcpu_prg(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ICG5: 32kbytes EPROM
+ map(0x8000, 0x8007).mirror(0x3ff8).rw(m_cxdio, FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0xc000, 0xc7ff).mirror(0x3800).rw("mb8421", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+}
DRIVER_INIT_MEMBER( pve500_state, pve500 )
{
diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp
index 2599066f130..b7b489bfed5 100644
--- a/src/mame/drivers/pwrview.cpp
+++ b/src/mame/drivers/pwrview.cpp
@@ -337,61 +337,65 @@ READ8_MEMBER(pwrview_state::pitclock_r)
return 0;
}
-ADDRESS_MAP_START(pwrview_state::bios_bank)
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0x00000, 0x07fff) AM_WRITE(nmimem_w)
-
- AM_RANGE(0x08000, 0x0ffff) AM_WRITE(nmimem_w)
- AM_RANGE(0x0be00, 0x0be7f) AM_RAMBANK("vram1")
- AM_RANGE(0x0befe, 0x0beff) AM_READWRITE(vram1_r, vram1_w);
- AM_RANGE(0x0bf00, 0x0bf7f) AM_RAMBANK("vram2")
- AM_RANGE(0x0bffe, 0x0bfff) AM_READWRITE(vram2_r, vram2_w);
- AM_RANGE(0x0c000, 0x0ffff) AM_ROM AM_REGION("bios", 0x4000)
-
- AM_RANGE(0x10000, 0x17fff) AM_RAM
-
- AM_RANGE(0x18000, 0x1ffff) AM_WRITE(nmimem_w)
-
- AM_RANGE(0x1be00, 0x1be7f) AM_RAMBANK("vram1")
- AM_RANGE(0x1befe, 0x1beff) AM_READWRITE(vram1_r, vram1_w);
- AM_RANGE(0x1bf00, 0x1bf7f) AM_RAMBANK("vram2")
- AM_RANGE(0x1bffe, 0x1bfff) AM_READWRITE(vram2_r, vram2_w);
- AM_RANGE(0x1c000, 0x1ffff) AM_ROM AM_REGION("bios", 0x4000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pwrview_state::pwrview_map)
- AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x00000, 0x003ff) AM_READWRITE(bank0_r, bank0_w)
- AM_RANGE(0xf8000, 0xfffff) AM_DEVICE("bios_bank", address_map_bank_device, amap16)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pwrview_state::pwrview_fetch_map)
- AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x00000, 0x003ff) AM_READ(bank0_r)
- AM_RANGE(0xf8000, 0xfffff) AM_READ(fbios_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pwrview_state::pwrview_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmiio_r, nmiio_w)
- AM_RANGE(0xc000, 0xc001) AM_READWRITE8(unk1_r, unk1_w, 0xff00)
- AM_RANGE(0xc002, 0xc005) AM_READWRITE8(led_r, led_w, 0xff00)
- AM_RANGE(0xc006, 0xc007) AM_READ8(rotary_r, 0xff00)
- AM_RANGE(0xc008, 0xc009) AM_READWRITE8(unk2_r, unk2_w, 0xff00)
- AM_RANGE(0xc00a, 0xc00b) AM_READ8(err_r, 0xff00)
- AM_RANGE(0xc00c, 0xc00d) AM_RAM
- AM_RANGE(0xc080, 0xc081) AM_READWRITE8(unk4_r, unk4_w, 0x00ff)
- AM_RANGE(0xc088, 0xc089) AM_DEVWRITE8("crtc", hd6845_device, address_w, 0x00ff)
- AM_RANGE(0xc08a, 0xc08b) AM_DEVREADWRITE8("crtc", hd6845_device, register_r, register_w, 0x00ff)
- AM_RANGE(0xc280, 0xc287) AM_READWRITE8(unk3_r, unk3_w, 0x00ff)
- AM_RANGE(0xc288, 0xc28f) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xc2a0, 0xc2a7) AM_DEVREADWRITE8("sio", z80sio2_device, cd_ba_r, cd_ba_w, 0x00ff)
- AM_RANGE(0xc2c0, 0xc2c1) AM_DEVREADWRITE8("uart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xc2c2, 0xc2c3) AM_DEVREADWRITE8("uart", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xc2e0, 0xc2e3) AM_DEVICE8("fdc", upd765a_device, map, 0x00ff)
- AM_RANGE(0xc2e4, 0xc2e5) AM_RAM
- AM_RANGE(0xc2e6, 0xc2e7) AM_READ8(pitclock_r, 0x00ff)
-ADDRESS_MAP_END
+void pwrview_state::bios_bank(address_map &map)
+{
+ map(0x00000, 0x07fff).rom().region("bios", 0);
+ map(0x00000, 0x07fff).w(this, FUNC(pwrview_state::nmimem_w));
+
+ map(0x08000, 0x0ffff).w(this, FUNC(pwrview_state::nmimem_w));
+ map(0x0be00, 0x0be7f).bankrw("vram1");
+ map(0x0befe, 0x0beff).rw(this, FUNC(pwrview_state::vram1_r), FUNC(pwrview_state::vram1_w));
+ map(0x0bf00, 0x0bf7f).bankrw("vram2");
+ map(0x0bffe, 0x0bfff).rw(this, FUNC(pwrview_state::vram2_r), FUNC(pwrview_state::vram2_w));
+ map(0x0c000, 0x0ffff).rom().region("bios", 0x4000);
+
+ map(0x10000, 0x17fff).ram();
+
+ map(0x18000, 0x1ffff).w(this, FUNC(pwrview_state::nmimem_w));
+
+ map(0x1be00, 0x1be7f).bankrw("vram1");
+ map(0x1befe, 0x1beff).rw(this, FUNC(pwrview_state::vram1_r), FUNC(pwrview_state::vram1_w));
+ map(0x1bf00, 0x1bf7f).bankrw("vram2");
+ map(0x1bffe, 0x1bfff).rw(this, FUNC(pwrview_state::vram2_r), FUNC(pwrview_state::vram2_w));
+ map(0x1c000, 0x1ffff).rom().region("bios", 0x4000);
+}
+
+void pwrview_state::pwrview_map(address_map &map)
+{
+ map(0x00000, 0xf7fff).ram().share("ram");
+ map(0x00000, 0x003ff).rw(this, FUNC(pwrview_state::bank0_r), FUNC(pwrview_state::bank0_w));
+ map(0xf8000, 0xfffff).m(m_biosbank, FUNC(address_map_bank_device::amap16));
+}
+
+void pwrview_state::pwrview_fetch_map(address_map &map)
+{
+ map(0x00000, 0xf7fff).ram().share("ram");
+ map(0x00000, 0x003ff).r(this, FUNC(pwrview_state::bank0_r));
+ map(0xf8000, 0xfffff).r(this, FUNC(pwrview_state::fbios_r));
+}
+
+void pwrview_state::pwrview_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(pwrview_state::nmiio_r), FUNC(pwrview_state::nmiio_w));
+ map(0xc001, 0xc001).rw(this, FUNC(pwrview_state::unk1_r), FUNC(pwrview_state::unk1_w));
+ map(0xc002, 0xc005).rw(this, FUNC(pwrview_state::led_r), FUNC(pwrview_state::led_w)).umask16(0xff00);
+ map(0xc007, 0xc007).r(this, FUNC(pwrview_state::rotary_r));
+ map(0xc009, 0xc009).rw(this, FUNC(pwrview_state::unk2_r), FUNC(pwrview_state::unk2_w));
+ map(0xc00b, 0xc00b).r(this, FUNC(pwrview_state::err_r));
+ map(0xc00c, 0xc00d).ram();
+ map(0xc080, 0xc080).rw(this, FUNC(pwrview_state::unk4_r), FUNC(pwrview_state::unk4_w));
+ map(0xc088, 0xc088).w("crtc", FUNC(hd6845_device::address_w));
+ map(0xc08a, 0xc08a).rw("crtc", FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w));
+ map(0xc280, 0xc287).rw(this, FUNC(pwrview_state::unk3_r), FUNC(pwrview_state::unk3_w)).umask16(0x00ff);
+ map(0xc288, 0xc28f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xc2a0, 0xc2a7).rw("sio", FUNC(z80sio2_device::cd_ba_r), FUNC(z80sio2_device::cd_ba_w)).umask16(0x00ff);
+ map(0xc2c0, 0xc2c0).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc2c2, 0xc2c2).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xc2e0, 0xc2e3).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0xc2e4, 0xc2e5).ram();
+ map(0xc2e6, 0xc2e6).r(this, FUNC(pwrview_state::pitclock_r));
+}
static SLOT_INTERFACE_START(pwrview_floppies)
SLOT_INTERFACE("525dd", FLOPPY_525_DD)
diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp
index a1d3582475b..22665bbf853 100644
--- a/src/mame/drivers/px4.cpp
+++ b/src/mame/drivers/px4.cpp
@@ -1259,46 +1259,49 @@ void px4p_state::machine_start()
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(px4_state::px4_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(px4_state::px4_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void px4_state::px4_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).bankrw("bank2");
+}
+
+void px4_state::px4_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// gapnit, 0x00-0x07
- AM_RANGE(0x00, 0x00) AM_READWRITE( icrlc_r, ctrl1_w )
- AM_RANGE(0x01, 0x01) AM_READWRITE( icrhc_r, cmdr_w )
- AM_RANGE(0x02, 0x02) AM_READWRITE( icrlb_r, ctrl2_w )
- AM_RANGE(0x03, 0x03) AM_READ( icrhb_r )
- AM_RANGE(0x04, 0x04) AM_READWRITE( isr_r, ier_w )
- AM_RANGE(0x05, 0x05) AM_READWRITE( str_r, bankr_w )
- AM_RANGE(0x06, 0x06) AM_READWRITE( sior_r, sior_w )
- AM_RANGE(0x07, 0x07) AM_NOP
+ map(0x00, 0x00).rw(this, FUNC(px4_state::icrlc_r), FUNC(px4_state::ctrl1_w));
+ map(0x01, 0x01).rw(this, FUNC(px4_state::icrhc_r), FUNC(px4_state::cmdr_w));
+ map(0x02, 0x02).rw(this, FUNC(px4_state::icrlb_r), FUNC(px4_state::ctrl2_w));
+ map(0x03, 0x03).r(this, FUNC(px4_state::icrhb_r));
+ map(0x04, 0x04).rw(this, FUNC(px4_state::isr_r), FUNC(px4_state::ier_w));
+ map(0x05, 0x05).rw(this, FUNC(px4_state::str_r), FUNC(px4_state::bankr_w));
+ map(0x06, 0x06).rw(this, FUNC(px4_state::sior_r), FUNC(px4_state::sior_w));
+ map(0x07, 0x07).noprw();
// gapndl, 0x08-0x0f
- AM_RANGE(0x08, 0x08) AM_WRITE( vadr_w )
- AM_RANGE(0x09, 0x09) AM_WRITE( yoff_w )
- AM_RANGE(0x0a, 0x0a) AM_WRITE( fr_w )
- AM_RANGE(0x0b, 0x0b) AM_WRITE( spur_w )
- AM_RANGE(0x0c, 0x0f) AM_NOP
+ map(0x08, 0x08).w(this, FUNC(px4_state::vadr_w));
+ map(0x09, 0x09).w(this, FUNC(px4_state::yoff_w));
+ map(0x0a, 0x0a).w(this, FUNC(px4_state::fr_w));
+ map(0x0b, 0x0b).w(this, FUNC(px4_state::spur_w));
+ map(0x0c, 0x0f).noprw();
// gapnio, 0x10-0x1f
- AM_RANGE(0x10, 0x13) AM_READWRITE( ctgif_r, ctgif_w )
- AM_RANGE(0x14, 0x14) AM_READWRITE( artdir_r, artdor_w )
- AM_RANGE(0x15, 0x15) AM_READWRITE( artsr_r, artmr_w )
- AM_RANGE(0x16, 0x16) AM_READWRITE( iostr_r, artcr_w )
- AM_RANGE(0x17, 0x17) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x18, 0x18) AM_WRITE( swr_w )
- AM_RANGE(0x19, 0x19) AM_WRITE( ioctlr_w )
- AM_RANGE(0x1a, 0x1f) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(px4p_state::px4p_io)
- AM_IMPORT_FROM(px4_io)
- AM_RANGE(0x90, 0x92) AM_WRITE(ramdisk_address_w )
- AM_RANGE(0x93, 0x93) AM_READWRITE(ramdisk_data_r, ramdisk_data_w )
- AM_RANGE(0x94, 0x94) AM_READ(ramdisk_control_r)
-ADDRESS_MAP_END
+ map(0x10, 0x13).rw(this, FUNC(px4_state::ctgif_r), FUNC(px4_state::ctgif_w));
+ map(0x14, 0x14).rw(this, FUNC(px4_state::artdir_r), FUNC(px4_state::artdor_w));
+ map(0x15, 0x15).rw(this, FUNC(px4_state::artsr_r), FUNC(px4_state::artmr_w));
+ map(0x16, 0x16).rw(this, FUNC(px4_state::iostr_r), FUNC(px4_state::artcr_w));
+ map(0x17, 0x17).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x18, 0x18).w(this, FUNC(px4_state::swr_w));
+ map(0x19, 0x19).w(this, FUNC(px4_state::ioctlr_w));
+ map(0x1a, 0x1f).noprw();
+}
+
+void px4p_state::px4p_io(address_map &map)
+{
+ px4_io(map);
+ map(0x90, 0x92).w(this, FUNC(px4p_state::ramdisk_address_w));
+ map(0x93, 0x93).rw(this, FUNC(px4p_state::ramdisk_data_r), FUNC(px4p_state::ramdisk_data_w));
+ map(0x94, 0x94).r(this, FUNC(px4p_state::ramdisk_control_r));
+}
//**************************************************************************
diff --git a/src/mame/drivers/px8.cpp b/src/mame/drivers/px8.cpp
index 30163e8df6a..3cd20844cb0 100644
--- a/src/mame/drivers/px8.cpp
+++ b/src/mame/drivers/px8.cpp
@@ -511,51 +511,55 @@ WRITE8_MEMBER( px8_state::ksc_w )
ADDRESS_MAP( px8_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(px8_state::px8_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank0")
- AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank1")
-ADDRESS_MAP_END
+void px8_state::px8_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankrw("bank0");
+ map(0x8000, 0xffff).bankrw("bank1");
+}
/*-------------------------------------------------
ADDRESS_MAP( px8_io )
-------------------------------------------------*/
-ADDRESS_MAP_START(px8_state::px8_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x00, 0x07) AM_READWRITE(gah40m_r, gah40m_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x0d, 0x0d) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
+void px8_state::px8_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x0f);
+ map(0x00, 0x07).rw(this, FUNC(px8_state::gah40m_r), FUNC(px8_state::gah40m_w));
+ map(0x0c, 0x0c).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x0d, 0x0d).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// AM_RANGE(0x0e, 0x0e) AM_DEVREADWRITE(SED1320_TAG, sed1330_device, status_r, data_w)
// AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE(SED1320_TAG, sed1330_device, data_r, command_w)
-ADDRESS_MAP_END
+}
/*-------------------------------------------------
ADDRESS_MAP( px8_slave_mem )
-------------------------------------------------*/
-ADDRESS_MAP_START(px8_state::px8_slave_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0020, 0x0023) AM_READWRITE(gah40s_r, gah40s_w)
+void px8_state::px8_slave_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0020, 0x0023).rw(this, FUNC(px8_state::gah40s_r), FUNC(px8_state::gah40s_w));
// AM_RANGE(0x0024, 0x0027) AM_DEVREADWRITE_LEGACY(SED1320_TAG, )
- AM_RANGE(0x0028, 0x0028) AM_WRITE(gah40s_ier_w)
- AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x9800, 0xefff) AM_NOP
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6303_TAG, 0) /* internal mask rom */
-ADDRESS_MAP_END
+ map(0x0028, 0x0028).w(this, FUNC(px8_state::gah40s_ier_w));
+ map(0x8000, 0x97ff).ram().share("video_ram");
+ map(0x9800, 0xefff).noprw();
+ map(0xf000, 0xffff).rom().region(HD6303_TAG, 0); /* internal mask rom */
+}
/*-------------------------------------------------
ADDRESS_MAP( px8_slave_io )
-------------------------------------------------*/
-ADDRESS_MAP_START(px8_state::px8_slave_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(M6801_PORT1, M6801_PORT1)
- AM_RANGE(M6801_PORT2, M6801_PORT2)
- AM_RANGE(M6801_PORT3, M6801_PORT3)
- AM_RANGE(M6801_PORT4, M6801_PORT4)
-ADDRESS_MAP_END
+void px8_state::px8_slave_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(M6801_PORT1, M6801_PORT1);
+ map(M6801_PORT2, M6801_PORT2);
+ map(M6801_PORT3, M6801_PORT3);
+ map(M6801_PORT4, M6801_PORT4);
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp
index 2906dd7f168..f2c70e7ade5 100644
--- a/src/mame/drivers/pyl601.cpp
+++ b/src/mame/drivers/pyl601.cpp
@@ -254,29 +254,30 @@ READ8_MEMBER(pyl601_state::floppy_r)
return m_floppy_ctrl;
}
-ADDRESS_MAP_START(pyl601_state::pyl601_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xbfff ) AM_RAMBANK("bank1")
- AM_RANGE( 0xc000, 0xdfff ) AM_RAMBANK("bank2")
- AM_RANGE( 0xe000, 0xe5ff ) AM_RAMBANK("bank3")
- AM_RANGE( 0xe600, 0xe600 ) AM_MIRROR(4) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE( 0xe601, 0xe601 ) AM_MIRROR(4) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE( 0xe628, 0xe628 ) AM_READ(keyboard_r)
- AM_RANGE( 0xe629, 0xe629 ) AM_READWRITE(video_mode_r,video_mode_w)
- AM_RANGE( 0xe62a, 0xe62a ) AM_READWRITE(keycheck_r,led_w)
- AM_RANGE( 0xe62b, 0xe62b ) AM_READWRITE(timer_r,speaker_w)
- AM_RANGE( 0xe62d, 0xe62d ) AM_READ(video_mode_r)
- AM_RANGE( 0xe62e, 0xe62e ) AM_READWRITE(keycheck_r,led_w)
- AM_RANGE( 0xe680, 0xe680 ) AM_WRITE(vdisk_page_w)
- AM_RANGE( 0xe681, 0xe681 ) AM_WRITE(vdisk_h_w)
- AM_RANGE( 0xe682, 0xe682 ) AM_WRITE(vdisk_l_w)
- AM_RANGE( 0xe683, 0xe683 ) AM_READWRITE(vdisk_data_r,vdisk_data_w)
- AM_RANGE( 0xe6c0, 0xe6c0 ) AM_READWRITE(floppy_r, floppy_w)
- AM_RANGE( 0xe6d0, 0xe6d1 ) AM_DEVICE("upd765", upd765a_device, map)
- AM_RANGE( 0xe6f0, 0xe6f0 ) AM_READWRITE(rom_page_r, rom_page_w)
- AM_RANGE( 0xe700, 0xefff ) AM_RAMBANK("bank4")
- AM_RANGE( 0xf000, 0xffff ) AM_READ_BANK("bank5") AM_WRITE_BANK("bank6")
-ADDRESS_MAP_END
+void pyl601_state::pyl601_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xbfff).bankrw("bank1");
+ map(0xc000, 0xdfff).bankrw("bank2");
+ map(0xe000, 0xe5ff).bankrw("bank3");
+ map(0xe600, 0xe600).mirror(4).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xe601, 0xe601).mirror(4).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xe628, 0xe628).r(this, FUNC(pyl601_state::keyboard_r));
+ map(0xe629, 0xe629).rw(this, FUNC(pyl601_state::video_mode_r), FUNC(pyl601_state::video_mode_w));
+ map(0xe62a, 0xe62a).rw(this, FUNC(pyl601_state::keycheck_r), FUNC(pyl601_state::led_w));
+ map(0xe62b, 0xe62b).rw(this, FUNC(pyl601_state::timer_r), FUNC(pyl601_state::speaker_w));
+ map(0xe62d, 0xe62d).r(this, FUNC(pyl601_state::video_mode_r));
+ map(0xe62e, 0xe62e).rw(this, FUNC(pyl601_state::keycheck_r), FUNC(pyl601_state::led_w));
+ map(0xe680, 0xe680).w(this, FUNC(pyl601_state::vdisk_page_w));
+ map(0xe681, 0xe681).w(this, FUNC(pyl601_state::vdisk_h_w));
+ map(0xe682, 0xe682).w(this, FUNC(pyl601_state::vdisk_l_w));
+ map(0xe683, 0xe683).rw(this, FUNC(pyl601_state::vdisk_data_r), FUNC(pyl601_state::vdisk_data_w));
+ map(0xe6c0, 0xe6c0).rw(this, FUNC(pyl601_state::floppy_r), FUNC(pyl601_state::floppy_w));
+ map(0xe6d0, 0xe6d1).m(m_fdc, FUNC(upd765a_device::map));
+ map(0xe6f0, 0xe6f0).rw(this, FUNC(pyl601_state::rom_page_r), FUNC(pyl601_state::rom_page_w));
+ map(0xe700, 0xefff).bankrw("bank4");
+ map(0xf000, 0xffff).bankr("bank5").bankw("bank6");
+}
/* Input ports */
/* A small note about natural keyboard mode: Ctrl is mapped to PGUP and the 'Lat/Cyr' key is mapped to PGDOWN */
diff --git a/src/mame/drivers/pyson.cpp b/src/mame/drivers/pyson.cpp
index 14838183ab1..8261f6558be 100644
--- a/src/mame/drivers/pyson.cpp
+++ b/src/mame/drivers/pyson.cpp
@@ -187,10 +187,11 @@ uint32_t pyson_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
-ADDRESS_MAP_START(pyson_state::ps2_map)
- AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // 32 MB RAM in consumer PS2s, do these have more?
- AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void pyson_state::ps2_map(address_map &map)
+{
+ map(0x00000000, 0x01ffffff).ram(); // 32 MB RAM in consumer PS2s, do these have more?
+ map(0x1fc00000, 0x1fdfffff).rom().region("bios", 0);
+}
static INPUT_PORTS_START( pyson )
INPUT_PORTS_END
diff --git a/src/mame/drivers/pzletime.cpp b/src/mame/drivers/pzletime.cpp
index bb35ec083b4..619f13e3227 100644
--- a/src/mame/drivers/pzletime.cpp
+++ b/src/mame/drivers/pzletime.cpp
@@ -233,21 +233,22 @@ CUSTOM_INPUT_MEMBER(pzletime_state::ticket_status_r)
return (m_ticket && !(m_screen->frame_number() % 128));
}
-ADDRESS_MAP_START(pzletime_state::pzletime_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x700000, 0x700005) AM_RAM_WRITE(video_regs_w) AM_SHARE("video_regs")
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x900000, 0x9005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa00000, 0xa00007) AM_RAM AM_SHARE("tilemap_regs")
- AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("bg_videoram")
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(mid_videoram_w) AM_SHARE("mid_videoram")
- AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(txt_videoram_w) AM_SHARE("txt_videoram")
- AM_RANGE(0xd00000, 0xd01fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("INPUT") AM_WRITE(eeprom_w)
- AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("SYSTEM") AM_WRITE(ticket_w)
- AM_RANGE(0xe00004, 0xe00005) AM_WRITE(oki_bank_w)
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM
-ADDRESS_MAP_END
+void pzletime_state::pzletime_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x700000, 0x700005).ram().w(this, FUNC(pzletime_state::video_regs_w)).share("video_regs");
+ map(0x800001, 0x800001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x900000, 0x9005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa00000, 0xa00007).ram().share("tilemap_regs");
+ map(0xb00000, 0xb3ffff).ram().share("bg_videoram");
+ map(0xc00000, 0xc00fff).ram().w(this, FUNC(pzletime_state::mid_videoram_w)).share("mid_videoram");
+ map(0xc01000, 0xc01fff).ram().w(this, FUNC(pzletime_state::txt_videoram_w)).share("txt_videoram");
+ map(0xd00000, 0xd01fff).ram().share("spriteram");
+ map(0xe00000, 0xe00001).portr("INPUT").w(this, FUNC(pzletime_state::eeprom_w));
+ map(0xe00002, 0xe00003).portr("SYSTEM").w(this, FUNC(pzletime_state::ticket_w));
+ map(0xe00004, 0xe00005).w(this, FUNC(pzletime_state::oki_bank_w));
+ map(0xf00000, 0xf0ffff).ram();
+}
static INPUT_PORTS_START( pzletime )
diff --git a/src/mame/drivers/qdrmfgp.cpp b/src/mame/drivers/qdrmfgp.cpp
index 3b3697db9c7..fa93ba96d07 100644
--- a/src/mame/drivers/qdrmfgp.cpp
+++ b/src/mame/drivers/qdrmfgp.cpp
@@ -248,56 +248,59 @@ WRITE_LINE_MEMBER(qdrmfgp_state::gp2_ide_interrupt)
*
*************************************/
-ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("workram") /* work ram */
- AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */
- AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_device, word_w) /* video reg */
- AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* ccu */
- AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service sw */
- AM_RANGE(0x340000, 0x340001) AM_READ(inputs_r) /* inputport */
- AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */
- AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */
- AM_RANGE(0x370000, 0x370001) AM_WRITE(gp_control_w) /* control reg */
- AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */
- AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0x00ff) /* sound regs */
- AM_RANGE(0x880000, 0x881fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* vram */
- AM_RANGE(0x882000, 0x883fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* vram (mirror) */
- AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */
- AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) /* IDE control regs */
- AM_RANGE(0xa40000, 0xa4000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs1, write_cs1) /* IDE status control reg */
- AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r, sndram_w) /* sound ram */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp2_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x110fff) AM_RAM AM_SHARE("workram") /* work ram */
- AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */
- AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_device, word_w) /* video reg */
- AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00) /* ccu */
- AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service */
- AM_RANGE(0x340000, 0x340001) AM_READ(inputs_r) /* inputport */
- AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */
- AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */
- AM_RANGE(0x370000, 0x370001) AM_WRITE(gp2_control_w) /* control reg */
- AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */
- AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0x00ff) /* sound regs */
- AM_RANGE(0x880000, 0x881fff) AM_READWRITE(gp2_vram_r, gp2_vram_w) /* vram */
- AM_RANGE(0x89f000, 0x8a0fff) AM_READWRITE(gp2_vram_mirror_r, gp2_vram_mirror_w) /* vram (mirror) */
- AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */
- AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) /* IDE control regs */
- AM_RANGE(0xa40000, 0xa4000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs1, write_cs1) /* IDE status control reg */
- AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w) /* sound ram */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp_k054539_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("k054539", 0)
- AM_RANGE(0x100000, 0x45ffff) AM_RAM AM_SHARE("sndram")
-ADDRESS_MAP_END
+void qdrmfgp_state::qdrmfgp_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram().share("workram"); /* work ram */
+ map(0x180000, 0x183fff).ram().share("nvram"); /* backup ram */
+ map(0x280000, 0x280fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30003f).w(m_k056832, FUNC(k056832_device::word_w)); /* video reg */
+ map(0x320000, 0x32001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* ccu */
+ map(0x330000, 0x330001).portr("SENSOR"); /* battery power & service sw */
+ map(0x340000, 0x340001).r(this, FUNC(qdrmfgp_state::inputs_r)); /* inputport */
+ map(0x350000, 0x350001).nopw(); /* unknown */
+ map(0x360000, 0x360001).nopw(); /* unknown */
+ map(0x370000, 0x370001).w(this, FUNC(qdrmfgp_state::gp_control_w)); /* control reg */
+ map(0x380000, 0x380001).nopw(); /* Watchdog */
+ map(0x800000, 0x80045f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); /* sound regs */
+ map(0x880000, 0x881fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* vram */
+ map(0x882000, 0x883fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* vram (mirror) */
+ map(0x900000, 0x901fff).r(this, FUNC(qdrmfgp_state::v_rom_r)); /* gfxrom through */
+ map(0xa00000, 0xa0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); /* IDE control regs */
+ map(0xa40000, 0xa4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); /* IDE status control reg */
+ map(0xc00000, 0xcbffff).rw(this, FUNC(qdrmfgp_state::sndram_r), FUNC(qdrmfgp_state::sndram_w)); /* sound ram */
+}
+
+
+void qdrmfgp_state::qdrmfgp2_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x110fff).ram().share("workram"); /* work ram */
+ map(0x180000, 0x183fff).ram().share("nvram"); /* backup ram */
+ map(0x280000, 0x280fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30003f).w(m_k056832, FUNC(k056832_device::word_w)); /* video reg */
+ map(0x320000, 0x32001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0xff00); /* ccu */
+ map(0x330000, 0x330001).portr("SENSOR"); /* battery power & service */
+ map(0x340000, 0x340001).r(this, FUNC(qdrmfgp_state::inputs_r)); /* inputport */
+ map(0x350000, 0x350001).nopw(); /* unknown */
+ map(0x360000, 0x360001).nopw(); /* unknown */
+ map(0x370000, 0x370001).w(this, FUNC(qdrmfgp_state::gp2_control_w)); /* control reg */
+ map(0x380000, 0x380001).nopw(); /* Watchdog */
+ map(0x800000, 0x80045f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); /* sound regs */
+ map(0x880000, 0x881fff).rw(this, FUNC(qdrmfgp_state::gp2_vram_r), FUNC(qdrmfgp_state::gp2_vram_w)); /* vram */
+ map(0x89f000, 0x8a0fff).rw(this, FUNC(qdrmfgp_state::gp2_vram_mirror_r), FUNC(qdrmfgp_state::gp2_vram_mirror_w)); /* vram (mirror) */
+ map(0x900000, 0x901fff).r(this, FUNC(qdrmfgp_state::v_rom_r)); /* gfxrom through */
+ map(0xa00000, 0xa0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); /* IDE control regs */
+ map(0xa40000, 0xa4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); /* IDE status control reg */
+ map(0xc00000, 0xcbffff).rw(this, FUNC(qdrmfgp_state::sndram_r), FUNC(qdrmfgp_state::sndram_w)); /* sound ram */
+}
+
+
+void qdrmfgp_state::qdrmfgp_k054539_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().region("k054539", 0);
+ map(0x100000, 0x45ffff).ram().share("sndram");
+}
/*************************************
*
diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp
index bf1577b1116..3540944bbe1 100644
--- a/src/mame/drivers/qix.cpp
+++ b/src/mame/drivers/qix.cpp
@@ -245,47 +245,50 @@ Interrupts:
*
*************************************/
-ADDRESS_MAP_START(qix_state::main_map)
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8400, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_READNOP /* 6850 ACIA */
- AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
- AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
- AM_RANGE(0x9000, 0x93ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write)
- AM_RANGE(0x9400, 0x97ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w)
- AM_RANGE(0x9800, 0x9bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x9c00, 0x9fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(qix_state::kram3_main_map)
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8400, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_READNOP /* 6850 ACIA */
- AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
- AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
- AM_RANGE(0x9000, 0x93ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write)
- AM_RANGE(0x9400, 0x97ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w)
- AM_RANGE(0x9800, 0x9bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x9c00, 0x9fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0xa000, 0xffff) AM_ROMBANK("bank0")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(qix_state::zoo_main_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x0400, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0bff) AM_READNOP /* ACIA */
- AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
- AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
- AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write)
- AM_RANGE(0x1400, 0x17ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w)
- AM_RANGE(0x1800, 0x1bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x1c00, 0x1fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void qix_state::main_map(address_map &map)
+{
+ map(0x8000, 0x83ff).ram().share("share1");
+ map(0x8400, 0x87ff).ram();
+ map(0x8800, 0x8bff).nopr(); /* 6850 ACIA */
+ map(0x8c00, 0x8c00).mirror(0x3fe).rw(this, FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w));
+ map(0x8c01, 0x8c01).mirror(0x3fe).rw(this, FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w));
+ map(0x9000, 0x93ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x9400, 0x97ff).r(m_pia0, FUNC(pia6821_device::read)).w(this, FUNC(qix_state::qix_pia_w));
+ map(0x9800, 0x9bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x9c00, 0x9fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xa000, 0xffff).rom();
+}
+
+
+void qix_state::kram3_main_map(address_map &map)
+{
+ map(0x8000, 0x83ff).ram().share("share1");
+ map(0x8400, 0x87ff).ram();
+ map(0x8800, 0x8bff).nopr(); /* 6850 ACIA */
+ map(0x8c00, 0x8c00).mirror(0x3fe).rw(this, FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w));
+ map(0x8c01, 0x8c01).mirror(0x3fe).rw(this, FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w));
+ map(0x9000, 0x93ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x9400, 0x97ff).r(m_pia0, FUNC(pia6821_device::read)).w(this, FUNC(qix_state::qix_pia_w));
+ map(0x9800, 0x9bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x9c00, 0x9fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xa000, 0xffff).bankr("bank0");
+}
+
+
+
+void qix_state::zoo_main_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("share1");
+ map(0x0400, 0x07ff).ram();
+ map(0x0800, 0x0bff).nopr(); /* ACIA */
+ map(0x0c00, 0x0c00).mirror(0x3fe).rw(this, FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w));
+ map(0x0c01, 0x0c01).mirror(0x3fe).rw(this, FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w));
+ map(0x1000, 0x13ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1400, 0x17ff).r(m_pia0, FUNC(pia6821_device::read)).w(this, FUNC(qix_state::qix_pia_w));
+ map(0x1800, 0x1bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1c00, 0x1fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp
index 3cdbad14824..5659a7e3ed5 100644
--- a/src/mame/drivers/ql.cpp
+++ b/src/mame/drivers/ql.cpp
@@ -496,19 +496,21 @@ READ8_MEMBER( ql_state::ipc_bus_r )
// ADDRESS_MAP( ql_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(ql_state::ql_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void ql_state::ql_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rw(this, FUNC(ql_state::read), FUNC(ql_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( ipc_io )
//-------------------------------------------------
-ADDRESS_MAP_START(ql_state::ipc_io)
- AM_RANGE(0x00, 0x7f) AM_WRITE(ipc_w)
- AM_RANGE(0x27, 0x28) AM_READNOP // IPC reads these to set P0 (bus) to Hi-Z mode
-ADDRESS_MAP_END
+void ql_state::ipc_io(address_map &map)
+{
+ map(0x00, 0x7f).w(this, FUNC(ql_state::ipc_w));
+ map(0x27, 0x28).nopr(); // IPC reads these to set P0 (bus) to Hi-Z mode
+}
diff --git a/src/mame/drivers/qtsbc.cpp b/src/mame/drivers/qtsbc.cpp
index 21453953e2b..6c5d5e6e95f 100644
--- a/src/mame/drivers/qtsbc.cpp
+++ b/src/mame/drivers/qtsbc.cpp
@@ -67,19 +67,21 @@ READ8_MEMBER( qtsbc_state::qtsbc_43_r )
return 0; // this controls where the new ram program gets built at. 0 = 0xE000.
}
-ADDRESS_MAP_START(qtsbc_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("ram") AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(qtsbc_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x43, 0x43) AM_READ(qtsbc_43_r)
-ADDRESS_MAP_END
+void qtsbc_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).ram().share("ram").region("maincpu", 0);
+}
+
+void qtsbc_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x06, 0x06).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x07, 0x07).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x43, 0x43).r(this, FUNC(qtsbc_state::qtsbc_43_r));
+}
/* Input ports */
static INPUT_PORTS_START( qtsbc )
diff --git a/src/mame/drivers/quakeat.cpp b/src/mame/drivers/quakeat.cpp
index f4e995b1bc5..e6a3b794f55 100644
--- a/src/mame/drivers/quakeat.cpp
+++ b/src/mame/drivers/quakeat.cpp
@@ -91,21 +91,23 @@ uint32_t quakeat_state::screen_update_quake(screen_device &screen, bitmap_ind16
return 0;
}
-ADDRESS_MAP_START(quakeat_state::quake_map)
- AM_RANGE(0x00000000, 0x0000ffff) AM_ROM AM_REGION("pc_bios", 0) /* BIOS */
-ADDRESS_MAP_END
+void quakeat_state::quake_map(address_map &map)
+{
+ map(0x00000000, 0x0000ffff).rom().region("pc_bios", 0); /* BIOS */
+}
-ADDRESS_MAP_START(quakeat_state::quake_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00eb) AM_NOP
+void quakeat_state::quake_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e8, 0x00eb).noprw();
// AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x0300, 0x03af) AM_NOP
- AM_RANGE(0x03b0, 0x03df) AM_NOP
+ map(0x0300, 0x03af).noprw();
+ map(0x03b0, 0x03df).noprw();
// AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w)
// AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
// AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w)
// AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
-ADDRESS_MAP_END
+}
/*************************************************************/
diff --git a/src/mame/drivers/quantum.cpp b/src/mame/drivers/quantum.cpp
index 976a737042a..0419bf3cd4b 100644
--- a/src/mame/drivers/quantum.cpp
+++ b/src/mame/drivers/quantum.cpp
@@ -147,22 +147,23 @@ WRITE16_MEMBER(quantum_state::led_w)
*
*************************************/
-ADDRESS_MAP_START(quantum_state::main_map)
- AM_RANGE(0x000000, 0x013fff) AM_ROM
- AM_RANGE(0x018000, 0x01cfff) AM_RAM
- AM_RANGE(0x800000, 0x801fff) AM_RAM AM_SHARE("vectorram")
- AM_RANGE(0x840000, 0x84001f) AM_DEVREADWRITE8("pokey1", pokey_device, read, write, 0x00ff)
- AM_RANGE(0x840020, 0x84003f) AM_DEVREADWRITE8("pokey2", pokey_device, read, write, 0x00ff)
- AM_RANGE(0x900000, 0x9001ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x940000, 0x940001) AM_READ(trackball_r) /* trackball */
- AM_RANGE(0x948000, 0x948001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x950000, 0x95001f) AM_WRITEONLY AM_SHARE("colorram")
- AM_RANGE(0x958000, 0x958001) AM_WRITE(led_w)
- AM_RANGE(0x960000, 0x960001) AM_WRITENOP
- AM_RANGE(0x968000, 0x968001) AM_DEVWRITE("avg", avg_quantum_device, reset_word_w)
- AM_RANGE(0x970000, 0x970001) AM_DEVWRITE("avg", avg_quantum_device, go_word_w)
- AM_RANGE(0x978000, 0x978001) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
-ADDRESS_MAP_END
+void quantum_state::main_map(address_map &map)
+{
+ map(0x000000, 0x013fff).rom();
+ map(0x018000, 0x01cfff).ram();
+ map(0x800000, 0x801fff).ram().share("vectorram");
+ map(0x840000, 0x84001f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
+ map(0x840020, 0x84003f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
+ map(0x900000, 0x9001ff).ram().share("nvram");
+ map(0x940000, 0x940001).r(this, FUNC(quantum_state::trackball_r)); /* trackball */
+ map(0x948000, 0x948001).portr("SYSTEM");
+ map(0x950000, 0x95001f).writeonly().share("colorram");
+ map(0x958000, 0x958001).w(this, FUNC(quantum_state::led_w));
+ map(0x960000, 0x960001).nopw();
+ map(0x968000, 0x968001).w(m_avg, FUNC(avg_quantum_device::reset_word_w));
+ map(0x970000, 0x970001).w(m_avg, FUNC(avg_quantum_device::go_word_w));
+ map(0x978000, 0x978001).nopr().w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+}
/*************************************
diff --git a/src/mame/drivers/quasar.cpp b/src/mame/drivers/quasar.cpp
index 11d091150a7..9e878e50a12 100644
--- a/src/mame/drivers/quasar.cpp
+++ b/src/mame/drivers/quasar.cpp
@@ -110,28 +110,31 @@ READ_LINE_MEMBER(quasar_state::audio_t1_r)
// memory map taken from the manual
-ADDRESS_MAP_START(quasar_state::quasar)
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READ(cvs_bullet_ram_or_palette_r) AM_WRITE(quasar_bullet_w) AM_SHARE("bullet_ram")
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_0_or_character_ram_r, cvs_s2636_0_or_character_ram_w)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_1_or_character_ram_r, cvs_s2636_1_or_character_ram_w)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_2_or_character_ram_r, cvs_s2636_2_or_character_ram_w)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(quasar_video_w) AM_SHARE("video_ram")
- AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x2000, 0x33ff) AM_ROM
- AM_RANGE(0x4000, 0x53ff) AM_ROM
- AM_RANGE(0x6000, 0x73ff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quasar_state::quasar_io)
- AM_RANGE(0x00, 0x03) AM_READWRITE(quasar_IO_r, video_page_select_w)
- AM_RANGE(0x08, 0x0b) AM_WRITE(io_page_select_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quasar_state::quasar_data)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READ(cvs_collision_r) AM_WRITENOP
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(cvs_collision_clear, quasar_sh_command_w)
-ADDRESS_MAP_END
+void quasar_state::quasar(address_map &map)
+{
+ map(0x0000, 0x13ff).rom();
+ map(0x1400, 0x14ff).mirror(0x6000).r(this, FUNC(quasar_state::cvs_bullet_ram_or_palette_r)).w(this, FUNC(quasar_state::quasar_bullet_w)).share("bullet_ram");
+ map(0x1500, 0x15ff).mirror(0x6000).rw(this, FUNC(quasar_state::cvs_s2636_0_or_character_ram_r), FUNC(quasar_state::cvs_s2636_0_or_character_ram_w));
+ map(0x1600, 0x16ff).mirror(0x6000).rw(this, FUNC(quasar_state::cvs_s2636_1_or_character_ram_r), FUNC(quasar_state::cvs_s2636_1_or_character_ram_w));
+ map(0x1700, 0x17ff).mirror(0x6000).rw(this, FUNC(quasar_state::cvs_s2636_2_or_character_ram_r), FUNC(quasar_state::cvs_s2636_2_or_character_ram_w));
+ map(0x1800, 0x1bff).mirror(0x6000).r(this, FUNC(quasar_state::cvs_video_or_color_ram_r)).w(this, FUNC(quasar_state::quasar_video_w)).share("video_ram");
+ map(0x1c00, 0x1fff).mirror(0x6000).ram();
+ map(0x2000, 0x33ff).rom();
+ map(0x4000, 0x53ff).rom();
+ map(0x6000, 0x73ff).rom();
+}
+
+void quasar_state::quasar_io(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(quasar_state::quasar_IO_r), FUNC(quasar_state::video_page_select_w));
+ map(0x08, 0x0b).w(this, FUNC(quasar_state::io_page_select_w));
+}
+
+void quasar_state::quasar_data(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).r(this, FUNC(quasar_state::cvs_collision_r)).nopw();
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(quasar_state::cvs_collision_clear), FUNC(quasar_state::quasar_sh_command_w));
+}
/*************************************
*
@@ -139,14 +142,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(quasar_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
-ADDRESS_MAP_END
+void quasar_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+}
-ADDRESS_MAP_START(quasar_state::sound_portmap)
- AM_RANGE(0x00, 0x7f) AM_RAM
- AM_RANGE(0x80, 0x80) AM_READ(quasar_sh_command_r)
-ADDRESS_MAP_END
+void quasar_state::sound_portmap(address_map &map)
+{
+ map(0x00, 0x7f).ram();
+ map(0x80, 0x80).r(this, FUNC(quasar_state::quasar_sh_command_r));
+}
/************************************************************************
diff --git a/src/mame/drivers/queen.cpp b/src/mame/drivers/queen.cpp
index 8cc009e39ab..1731e143ed5 100644
--- a/src/mame/drivers/queen.cpp
+++ b/src/mame/drivers/queen.cpp
@@ -238,29 +238,31 @@ WRITE32_MEMBER(queen_state::bios_ram_w)
}
}
-ADDRESS_MAP_START(queen_state::queen_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000e0000, 0x000effff) AM_ROMBANK("bios_ext") AM_WRITE(bios_ext_ram_w)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x01ffffff) AM_RAM
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(queen_state::queen_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
-
- AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
-
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+void queen_state::queen_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000e0000, 0x000effff).bankr("bios_ext").w(this, FUNC(queen_state::bios_ext_ram_w));
+ map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(queen_state::bios_ram_w));
+ map(0x00100000, 0x01ffffff).ram();
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void queen_state::queen_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x00e8, 0x00ef).noprw();
+
+ map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
void queen_state::machine_start()
{
diff --git a/src/mame/drivers/quickpick5.cpp b/src/mame/drivers/quickpick5.cpp
index 17c762e6fa5..7ff5737986b 100644
--- a/src/mame/drivers/quickpick5.cpp
+++ b/src/mame/drivers/quickpick5.cpp
@@ -264,26 +264,27 @@ TIMER_DEVICE_CALLBACK_MEMBER(quickpick5_state::scanline)
}
}
-ADDRESS_MAP_START(quickpick5_state::quickpick5_main)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdbff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xdc00, 0xdc0f) AM_DEVREADWRITE("k053252", k053252_device, read, write)
- AM_RANGE(0xdc40, 0xdc4f) AM_READWRITE(k244_r, k244_w)
- AM_RANGE(0xdc80, 0xdc80) AM_READ_PORT("DSW3")
- AM_RANGE(0xdc81, 0xdc81) AM_READ_PORT("DSW4")
- AM_RANGE(0xdcc0, 0xdcc0) AM_READ_PORT("DSW1")
- AM_RANGE(0xdcc1, 0xdcc1) AM_READ_PORT("DSW2")
- AM_RANGE(0xdd00, 0xdd00) AM_WRITENOP
- AM_RANGE(0xdd40, 0xdd40) AM_NOP
- AM_RANGE(0xdd80, 0xdd80) AM_READWRITE(control_r, control_w)
- AM_RANGE(0xddc0, 0xddc0) AM_WRITENOP
- AM_RANGE(0xde00, 0xde00) AM_WRITENOP
- AM_RANGE(0xde40, 0xde40) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(k245_r, k245_w)
-ADDRESS_MAP_END
+void quickpick5_state::quickpick5_main(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdbff).ram().share("nvram");
+ map(0xdc00, 0xdc0f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write));
+ map(0xdc40, 0xdc4f).rw(this, FUNC(quickpick5_state::k244_r), FUNC(quickpick5_state::k244_w));
+ map(0xdc80, 0xdc80).portr("DSW3");
+ map(0xdc81, 0xdc81).portr("DSW4");
+ map(0xdcc0, 0xdcc0).portr("DSW1");
+ map(0xdcc1, 0xdcc1).portr("DSW2");
+ map(0xdd00, 0xdd00).nopw();
+ map(0xdd40, 0xdd40).noprw();
+ map(0xdd80, 0xdd80).rw(this, FUNC(quickpick5_state::control_r), FUNC(quickpick5_state::control_w));
+ map(0xddc0, 0xddc0).nopw();
+ map(0xde00, 0xde00).nopw();
+ map(0xde40, 0xde40).w(m_oki, FUNC(okim6295_device::write));
+ map(0xe000, 0xefff).rw(this, FUNC(quickpick5_state::vram_r), FUNC(quickpick5_state::vram_w));
+ map(0xf000, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xffff).rw(this, FUNC(quickpick5_state::k245_r), FUNC(quickpick5_state::k245_w));
+}
static INPUT_PORTS_START( quickpick5 )
PORT_START("DSW1")
diff --git a/src/mame/drivers/quizdna.cpp b/src/mame/drivers/quizdna.cpp
index 13c9ef6cf10..8d428738b55 100644
--- a/src/mame/drivers/quizdna.cpp
+++ b/src/mame/drivers/quizdna.cpp
@@ -33,72 +33,77 @@ WRITE8_MEMBER(quizdna_state::gekiretu_rombank_w)
/****************************************************************************/
-ADDRESS_MAP_START(quizdna_state::quizdna_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0x9fff) AM_WRITE(fg_ram_w)
- AM_RANGE(0xa000, 0xbfff) AM_WRITE(bg_ram_w)
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe200, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizdna_state::gekiretu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0x9fff) AM_WRITE(fg_ram_w)
- AM_RANGE(0xa000, 0xbfff) AM_WRITE(bg_ram_w)
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_SHARE("paletteram")
- AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf200, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizdna_state::quizdna_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x03) AM_WRITE(bg_xscroll_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(bg_yscroll_w)
- AM_RANGE(0x05, 0x06) AM_WRITENOP /* unknown */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(screen_ctrl_w)
- AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizdna_state::gakupara_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(bg_xscroll_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(bg_yscroll_w)
- AM_RANGE(0x03, 0x04) AM_WRITENOP /* unknown */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(screen_ctrl_w)
- AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizdna_state::gekiretu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x03) AM_WRITE(bg_xscroll_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(bg_yscroll_w)
- AM_RANGE(0x05, 0x06) AM_WRITENOP /* unknown */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc0, 0xc0) AM_WRITE(gekiretu_rombank_w)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(screen_ctrl_w)
- AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+void quizdna_state::quizdna_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0x8000, 0x9fff).w(this, FUNC(quizdna_state::fg_ram_w));
+ map(0xa000, 0xbfff).w(this, FUNC(quizdna_state::bg_ram_w));
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe1ff).ram().share("spriteram");
+ map(0xe200, 0xefff).ram();
+ map(0xf000, 0xffff).ram().w(this, FUNC(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)).share("paletteram");
+}
+
+void quizdna_state::gekiretu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0x8000, 0x9fff).w(this, FUNC(quizdna_state::fg_ram_w));
+ map(0xa000, 0xbfff).w(this, FUNC(quizdna_state::bg_ram_w));
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().w(this, FUNC(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)).share("paletteram");
+ map(0xf000, 0xf1ff).ram().share("spriteram");
+ map(0xf200, 0xffff).ram();
+}
+
+void quizdna_state::quizdna_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).w(this, FUNC(quizdna_state::bg_xscroll_w));
+ map(0x04, 0x04).w(this, FUNC(quizdna_state::bg_yscroll_w));
+ map(0x05, 0x06).nopw(); /* unknown */
+ map(0x80, 0x80).portr("P1");
+ map(0x81, 0x81).portr("P2");
+ map(0x90, 0x90).portr("SYSTEM");
+ map(0x91, 0x91).portr("SERVICE");
+ map(0xc0, 0xc0).w(this, FUNC(quizdna_state::rombank_w));
+ map(0xd0, 0xd0).w(this, FUNC(quizdna_state::screen_ctrl_w));
+ map(0xe0, 0xe1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf0, 0xf0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void quizdna_state::gakupara_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(quizdna_state::bg_xscroll_w));
+ map(0x02, 0x02).w(this, FUNC(quizdna_state::bg_yscroll_w));
+ map(0x03, 0x04).nopw(); /* unknown */
+ map(0x80, 0x80).portr("P1");
+ map(0x81, 0x81).portr("P2");
+ map(0x90, 0x90).portr("SYSTEM");
+ map(0x91, 0x91).portr("SERVICE");
+ map(0xc0, 0xc0).w(this, FUNC(quizdna_state::rombank_w));
+ map(0xd0, 0xd0).w(this, FUNC(quizdna_state::screen_ctrl_w));
+ map(0xe0, 0xe1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf0, 0xf0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void quizdna_state::gekiretu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).w(this, FUNC(quizdna_state::bg_xscroll_w));
+ map(0x04, 0x04).w(this, FUNC(quizdna_state::bg_yscroll_w));
+ map(0x05, 0x06).nopw(); /* unknown */
+ map(0x80, 0x80).portr("P1");
+ map(0x81, 0x81).portr("P2");
+ map(0x90, 0x90).portr("SYSTEM");
+ map(0x91, 0x91).portr("SERVICE");
+ map(0xc0, 0xc0).w(this, FUNC(quizdna_state::gekiretu_rombank_w));
+ map(0xd0, 0xd0).w(this, FUNC(quizdna_state::screen_ctrl_w));
+ map(0xe0, 0xe1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf0, 0xf0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/****************************************************************************/
diff --git a/src/mame/drivers/quizo.cpp b/src/mame/drivers/quizo.cpp
index 07abf04e9d9..bec3cf377ed 100644
--- a/src/mame/drivers/quizo.cpp
+++ b/src/mame/drivers/quizo.cpp
@@ -145,23 +145,25 @@ WRITE8_MEMBER(quizo_state::port60_w)
membank("bank1")->set_entry(rombankLookup[data]);
}
-ADDRESS_MAP_START(quizo_state::memmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_WRITE(vram_w)
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizo_state::portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN1")
- AM_RANGE(0x40, 0x40) AM_READ_PORT("IN2")
- AM_RANGE(0x50, 0x51) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(port60_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(port70_w)
-ADDRESS_MAP_END
+void quizo_state::memmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).w(this, FUNC(quizo_state::vram_w));
+
+}
+
+void quizo_state::portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x10, 0x10).portr("IN1");
+ map(0x40, 0x40).portr("IN2");
+ map(0x50, 0x51).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x60, 0x60).w(this, FUNC(quizo_state::port60_w));
+ map(0x70, 0x70).w(this, FUNC(quizo_state::port70_w));
+}
static INPUT_PORTS_START( quizo )
PORT_START("IN0")
diff --git a/src/mame/drivers/quizpani.cpp b/src/mame/drivers/quizpani.cpp
index 074c2bf1256..f3a88acea1e 100644
--- a/src/mame/drivers/quizpani.cpp
+++ b/src/mame/drivers/quizpani.cpp
@@ -56,26 +56,27 @@ Stephh's notes (based on the games M68000 code and some tests) :
#include "speaker.h"
-ADDRESS_MAP_START(quizpani_state::quizpani_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
- AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x100014, 0x100015) AM_WRITENOP /* screen flipping? */
- AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable? */
- AM_RANGE(0x100018, 0x100019) AM_WRITE(tilesbank_w)
- AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x104020, 0x104027) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff)
- AM_RANGE(0x108000, 0x1083ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP
- AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_SHARE("scrollreg")
- AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP
- AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(txt_videoram_w) AM_SHARE("txt_videoram")
- AM_RANGE(0x180000, 0x18ffff) AM_RAM
- AM_RANGE(0x200000, 0x33ffff) AM_ROM
-ADDRESS_MAP_END
+void quizpani_state::quizpani_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).portr("SYSTEM");
+ map(0x100002, 0x100003).portr("P1_P2");
+ map(0x100008, 0x100009).portr("DSW1");
+ map(0x10000a, 0x10000b).portr("DSW2");
+ map(0x100014, 0x100015).nopw(); /* screen flipping? */
+ map(0x100016, 0x100017).nopw(); /* IRQ enable? */
+ map(0x100018, 0x100019).w(this, FUNC(quizpani_state::tilesbank_w));
+ map(0x104001, 0x104001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x104020, 0x104027).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff);
+ map(0x108000, 0x1083ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x108400, 0x1085ff).nopw();
+ map(0x10c000, 0x10c007).ram().share("scrollreg");
+ map(0x10c008, 0x10c403).nopw();
+ map(0x110000, 0x113fff).ram().w(this, FUNC(quizpani_state::bg_videoram_w)).share("bg_videoram");
+ map(0x11c000, 0x11ffff).ram().w(this, FUNC(quizpani_state::txt_videoram_w)).share("txt_videoram");
+ map(0x180000, 0x18ffff).ram();
+ map(0x200000, 0x33ffff).rom();
+}
/* verified from M68000 code */
diff --git a/src/mame/drivers/quizpun2.cpp b/src/mame/drivers/quizpun2.cpp
index 1a3f322e2a2..86e6f0d9f5a 100644
--- a/src/mame/drivers/quizpun2.cpp
+++ b/src/mame/drivers/quizpun2.cpp
@@ -323,32 +323,35 @@ WRITE8_MEMBER(quizpun2_state::soundlatch_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(quizpun2_state::quizpun2_map)
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0x9fff ) AM_ROMBANK("bank1")
-
- AM_RANGE( 0xa000, 0xbfff ) AM_RAM_WRITE(fg_ram_w) AM_SHARE("fg_ram")
- AM_RANGE( 0xc000, 0xcfff ) AM_RAM_WRITE(bg_ram_w) AM_SHARE("bg_ram")
-
- AM_RANGE( 0xd000, 0xd3ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE( 0xe000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizpun2_state::quizpun2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x40, 0x40 ) AM_WRITE(irq_ack)
- AM_RANGE( 0x50, 0x50 ) AM_WRITE(soundlatch_w)
- AM_RANGE( 0x60, 0x60 ) AM_WRITE(rombank_w)
- AM_RANGE( 0x70, 0x70 ) AM_WRITE(scroll_w)
- AM_RANGE( 0x80, 0x80 ) AM_READ_PORT( "DSW" )
- AM_RANGE( 0x90, 0x90 ) AM_READ_PORT( "IN0" )
- AM_RANGE( 0xa0, 0xa0 ) AM_READ_PORT( "IN1" )
- AM_RANGE( 0xe0, 0xe0 ) AM_READWRITE(quizpun_protection_r, quizpun_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizpun2_state::quizpun2_cop_map)
- AM_RANGE( 0x000, 0x3ff ) AM_ROM AM_REGION("cop", 0)
-ADDRESS_MAP_END
+void quizpun2_state::quizpun2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+
+ map(0xa000, 0xbfff).ram().w(this, FUNC(quizpun2_state::fg_ram_w)).share("fg_ram");
+ map(0xc000, 0xcfff).ram().w(this, FUNC(quizpun2_state::bg_ram_w)).share("bg_ram");
+
+ map(0xd000, 0xd3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe000, 0xffff).ram();
+}
+
+void quizpun2_state::quizpun2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).w(this, FUNC(quizpun2_state::irq_ack));
+ map(0x50, 0x50).w(this, FUNC(quizpun2_state::soundlatch_w));
+ map(0x60, 0x60).w(this, FUNC(quizpun2_state::rombank_w));
+ map(0x70, 0x70).w(this, FUNC(quizpun2_state::scroll_w));
+ map(0x80, 0x80).portr("DSW");
+ map(0x90, 0x90).portr("IN0");
+ map(0xa0, 0xa0).portr("IN1");
+ map(0xe0, 0xe0).rw(this, FUNC(quizpun2_state::quizpun_protection_r), FUNC(quizpun2_state::quizpun_protection_w));
+}
+
+void quizpun2_state::quizpun2_cop_map(address_map &map)
+{
+ map(0x000, 0x3ff).rom().region("cop", 0);
+}
// quizpun
@@ -471,18 +474,20 @@ WRITE8_MEMBER(quizpun2_state::quizpun_68705_port_c_w)
Memory Maps - Sound CPU
***************************************************************************/
-ADDRESS_MAP_START(quizpun2_state::quizpun2_sound_map)
- AM_RANGE( 0x0000, 0xf7ff ) AM_ROM
- AM_RANGE( 0xf800, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(quizpun2_state::quizpun2_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_WRITENOP // IRQ end
- AM_RANGE( 0x20, 0x20 ) AM_WRITENOP // NMI end
- AM_RANGE( 0x40, 0x40 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE( 0x60, 0x61 ) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void quizpun2_state::quizpun2_sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void quizpun2_state::quizpun2_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); // IRQ end
+ map(0x20, 0x20).nopw(); // NMI end
+ map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x60, 0x61).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/***************************************************************************
Input Ports
diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp
index 9dbd87ecdd1..fd6774718e2 100644
--- a/src/mame/drivers/quizshow.cpp
+++ b/src/mame/drivers/quizshow.cpp
@@ -232,22 +232,23 @@ WRITE8_MEMBER(quizshow_state::main_ram_w)
}
-ADDRESS_MAP_START(quizshow_state::mem_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x1802, 0x1802) AM_WRITE(audio_w)
- AM_RANGE(0x1804, 0x1804) AM_WRITE(lamps1_w)
- AM_RANGE(0x1808, 0x1808) AM_WRITE(lamps2_w)
- AM_RANGE(0x1810, 0x1810) AM_WRITE(lamps3_w)
- AM_RANGE(0x1820, 0x1820) AM_WRITE(tape_control_w)
- AM_RANGE(0x1840, 0x1840) AM_WRITE(video_disable_w)
- AM_RANGE(0x1881, 0x1881) AM_READ_PORT("IN0")
- AM_RANGE(0x1882, 0x1882) AM_READ_PORT("IN1")
- AM_RANGE(0x1884, 0x1884) AM_READ_PORT("IN2")
- AM_RANGE(0x1888, 0x1888) AM_READ_PORT("IN3")
- AM_RANGE(0x1900, 0x1900) AM_READ(timing_r)
- AM_RANGE(0x1e00, 0x1fff) AM_RAM_WRITE(main_ram_w) AM_SHARE("main_ram")
-ADDRESS_MAP_END
+void quizshow_state::mem_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x0bff).rom();
+ map(0x1802, 0x1802).w(this, FUNC(quizshow_state::audio_w));
+ map(0x1804, 0x1804).w(this, FUNC(quizshow_state::lamps1_w));
+ map(0x1808, 0x1808).w(this, FUNC(quizshow_state::lamps2_w));
+ map(0x1810, 0x1810).w(this, FUNC(quizshow_state::lamps3_w));
+ map(0x1820, 0x1820).w(this, FUNC(quizshow_state::tape_control_w));
+ map(0x1840, 0x1840).w(this, FUNC(quizshow_state::video_disable_w));
+ map(0x1881, 0x1881).portr("IN0");
+ map(0x1882, 0x1882).portr("IN1");
+ map(0x1884, 0x1884).portr("IN2");
+ map(0x1888, 0x1888).portr("IN3");
+ map(0x1900, 0x1900).r(this, FUNC(quizshow_state::timing_r));
+ map(0x1e00, 0x1fff).ram().w(this, FUNC(quizshow_state::main_ram_w)).share("main_ram");
+}
/***************************************************************************
diff --git a/src/mame/drivers/qvt103.cpp b/src/mame/drivers/qvt103.cpp
index 30368f877fc..3ff060680bc 100644
--- a/src/mame/drivers/qvt103.cpp
+++ b/src/mame/drivers/qvt103.cpp
@@ -39,19 +39,21 @@ u32 qvt103_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con
return 0;
}
-ADDRESS_MAP_START(qvt103_state::mem_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("kbdmcu", i8741_device, upi41_master_r, upi41_master_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
+void qvt103_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().region("maincpu", 0);
+ map(0x6000, 0x6001).rw("kbdmcu", FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w));
+ map(0x8000, 0x87ff).ram();
//AM_RANGE(0xa000, 0xa03f) AM_DEVREADWRITE("vpac", crt9007_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_RAM // not entirely contiguous?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(qvt103_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+ map(0xc000, 0xffff).ram(); // not entirely contiguous?
+}
+
+void qvt103_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x14, 0x17).rw("dart", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x18, 0x1b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
static INPUT_PORTS_START( qvt103 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/qvt201.cpp b/src/mame/drivers/qvt201.cpp
index 47e20088cfa..d5c0f862780 100644
--- a/src/mame/drivers/qvt201.cpp
+++ b/src/mame/drivers/qvt201.cpp
@@ -43,14 +43,15 @@ u32 qvt201_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con
return 0;
}
-ADDRESS_MAP_START(qvt201_state::mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("nvram")
+void qvt201_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8800, 0x8fff).ram().share("nvram");
//AM_RANGE(0x9000, 0x9007) AM_DEVREADWRITE("crtc", scn2672_device, read, write)
- AM_RANGE(0x9800, 0x980f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("dataram")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("attram")
-ADDRESS_MAP_END
+ map(0x9800, 0x980f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0xc000, 0xdfff).ram().share("dataram");
+ map(0xe000, 0xffff).ram().share("attram");
+}
static INPUT_PORTS_START( qvt201 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/qvt6800.cpp b/src/mame/drivers/qvt6800.cpp
index 6d6b3618dad..dc15a18e126 100644
--- a/src/mame/drivers/qvt6800.cpp
+++ b/src/mame/drivers/qvt6800.cpp
@@ -42,25 +42,27 @@ MC6845_UPDATE_ROW(qvt6800_state::update_row)
{
}
-ADDRESS_MAP_START(qvt6800_state::qvt102_mem_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2800, 0x2803) AM_DEVWRITE("ctc", z80ctc_device, write)
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x9800, 0x9801) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(qvt6800_state::qvt190_mem_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2500, 0x2501) AM_DEVREADWRITE("acia1", acia6850_device, read, write)
- AM_RANGE(0x2600, 0x2601) AM_DEVREADWRITE("acia2", acia6850_device, read, write)
- AM_RANGE(0x2800, 0x2800) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x2801, 0x2801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void qvt6800_state::qvt102_mem_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("nvram");
+ map(0x2800, 0x2803).w("ctc", FUNC(z80ctc_device::write));
+ map(0x4000, 0x47ff).ram().share("videoram");
+ map(0x8000, 0x8000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x8001, 0x8001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x9800, 0x9801).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe000, 0xffff).rom().region("maincpu", 0);
+}
+
+void qvt6800_state::qvt190_mem_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x2500, 0x2501).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x2600, 0x2601).rw("acia2", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x2800, 0x2800).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x4000, 0x47ff).ram().share("videoram");
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( qvt6800 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp
index 21f26226829..e52a0bfc346 100644
--- a/src/mame/drivers/qx10.cpp
+++ b/src/mame/drivers/qx10.cpp
@@ -492,36 +492,38 @@ WRITE8_MEMBER( qx10_state::vram_bank_w )
}
}
-ADDRESS_MAP_START(qx10_state::qx10_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x8000, 0xdfff ) AM_RAMBANK("bank2")
- AM_RANGE( 0xe000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(qx10_state::qx10_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit8253_1", pit8253_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pit8253_2", pit8253_device, read, write)
- AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("pic8259_master", pic8259_device, read, write)
- AM_RANGE(0x0c, 0x0d) AM_DEVREADWRITE("pic8259_slave", pic8259_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("upd7201", z80dart_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("i8255", i8255_device, read, write)
- AM_RANGE(0x18, 0x1b) AM_READ_PORT("DSW") AM_WRITE(qx10_18_w)
- AM_RANGE(0x1c, 0x1f) AM_WRITE(prom_sel_w)
- AM_RANGE(0x20, 0x23) AM_WRITE(cmos_sel_w)
- AM_RANGE(0x2c, 0x2c) AM_READ_PORT("CONFIG")
- AM_RANGE(0x2d, 0x2d) AM_READWRITE(vram_bank_r,vram_bank_w)
- AM_RANGE(0x30, 0x33) AM_READWRITE(qx10_30_r, fdd_motor_w)
- AM_RANGE(0x34, 0x35) AM_DEVICE("upd765", upd765a_device, map)
- AM_RANGE(0x38, 0x39) AM_DEVREADWRITE("upd7220", upd7220_device, read, write)
+void qx10_state::qx10_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankrw("bank1");
+ map(0x8000, 0xdfff).bankrw("bank2");
+ map(0xe000, 0xffff).ram();
+}
+
+void qx10_state::qx10_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_pit_1, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x04, 0x07).rw(m_pit_2, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x08, 0x09).rw(m_pic_m, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0c, 0x0d).rw(m_pic_s, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x10, 0x13).rw(m_scc, FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w));
+ map(0x14, 0x17).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x18, 0x1b).portr("DSW").w(this, FUNC(qx10_state::qx10_18_w));
+ map(0x1c, 0x1f).w(this, FUNC(qx10_state::prom_sel_w));
+ map(0x20, 0x23).w(this, FUNC(qx10_state::cmos_sel_w));
+ map(0x2c, 0x2c).portr("CONFIG");
+ map(0x2d, 0x2d).rw(this, FUNC(qx10_state::vram_bank_r), FUNC(qx10_state::vram_bank_w));
+ map(0x30, 0x33).rw(this, FUNC(qx10_state::qx10_30_r), FUNC(qx10_state::fdd_motor_w));
+ map(0x34, 0x35).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x38, 0x39).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write));
// AM_RANGE(0x3a, 0x3a) GDC zoom
// AM_RANGE(0x3b, 0x3b) GDC light pen req
- AM_RANGE(0x3c, 0x3d) AM_READWRITE(mc146818_r, mc146818_w)
- AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("8237dma_1", am9517a_device, read, write)
- AM_RANGE(0x50, 0x5f) AM_DEVREADWRITE("8237dma_2", am9517a_device, read, write)
+ map(0x3c, 0x3d).rw(this, FUNC(qx10_state::mc146818_r), FUNC(qx10_state::mc146818_w));
+ map(0x40, 0x4f).rw(m_dma_1, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x50, 0x5f).rw(m_dma_2, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
// AM_RANGE(0xfc, 0xfd) Multi-Font comms
-ADDRESS_MAP_END
+}
/* Input ports */
/* TODO: shift break */
@@ -663,9 +665,10 @@ WRITE16_MEMBER( qx10_state::vram_w )
COMBINE_DATA(&m_video_ram[offset + (0x20000 * bank)]);
}
-ADDRESS_MAP_START(qx10_state::upd7220_map)
- AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r,vram_w)
-ADDRESS_MAP_END
+void qx10_state::upd7220_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rw(this, FUNC(qx10_state::vram_r), FUNC(qx10_state::vram_w));
+}
static SLOT_INTERFACE_START(keyboard)
SLOT_INTERFACE("qx10", QX10_KEYBOARD)
diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp
index 16e2f4265d5..922bd6ad413 100644
--- a/src/mame/drivers/r2dtank.cpp
+++ b/src/mame/drivers/r2dtank.cpp
@@ -326,26 +326,28 @@ WRITE8_MEMBER(r2dtank_state::pia_comp_w)
}
-ADDRESS_MAP_START(r2dtank_state::r2dtank_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x8003) AM_DEVREAD("pia_main", pia6821_device, read) AM_WRITE(pia_comp_w)
- AM_RANGE(0x8004, 0x8004) AM_READWRITE(audio_answer_r, audio_command_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xb001, 0xb001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xc000, 0xc007) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(r2dtank_state::r2dtank_audio_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE("pia_audio", pia6821_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_READWRITE(audio_command_r, audio_answer_w)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void r2dtank_state::r2dtank_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x3fff).ram();
+ map(0x4000, 0x5fff).ram().share("colorram");
+ map(0x6000, 0x7fff).ram();
+ map(0x8000, 0x8003).r("pia_main", FUNC(pia6821_device::read)).w(this, FUNC(r2dtank_state::pia_comp_w));
+ map(0x8004, 0x8004).rw(this, FUNC(r2dtank_state::audio_answer_r), FUNC(r2dtank_state::audio_command_w));
+ map(0xb000, 0xb000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xb001, 0xb001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xc000, 0xc007).ram().share("nvram");
+ map(0xc800, 0xffff).rom();
+}
+
+
+void r2dtank_state::r2dtank_audio_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0xd000, 0xd003).rw("pia_audio", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf000, 0xf000).rw(this, FUNC(r2dtank_state::audio_command_r), FUNC(r2dtank_state::audio_answer_w));
+ map(0xf800, 0xffff).rom();
+}
diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp
index e828666cc7f..ac511fb55ea 100644
--- a/src/mame/drivers/r2dx_v33.cpp
+++ b/src/mame/drivers/r2dx_v33.cpp
@@ -383,134 +383,143 @@ READ16_MEMBER(r2dx_v33_state::r2dx_debug_r)
return 0xffff;
}
-ADDRESS_MAP_START(r2dx_v33_state::rdx_v33_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM // vectors copied here
+void r2dx_v33_state::rdx_v33_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); // vectors copied here
- AM_RANGE(0x00400, 0x00401) AM_WRITE(r2dx_tilemapdma_w) // tilemaps to private buffer
- AM_RANGE(0x00402, 0x00403) AM_WRITE(r2dx_paldma_w) // palettes to private buffer
+ map(0x00400, 0x00401).w(this, FUNC(r2dx_v33_state::r2dx_tilemapdma_w)); // tilemaps to private buffer
+ map(0x00402, 0x00403).w(this, FUNC(r2dx_v33_state::r2dx_paldma_w)); // palettes to private buffer
- AM_RANGE(0x00404, 0x00405) AM_WRITE(r2dx_rom_bank_w)
- AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w)
+ map(0x00404, 0x00405).w(this, FUNC(r2dx_v33_state::r2dx_rom_bank_w));
+ map(0x00406, 0x00407).w(this, FUNC(r2dx_v33_state::tile_bank_w));
- AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_dx_w)
- AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_dy_w)
- AM_RANGE(0x00424, 0x00425) AM_WRITE(r2dx_sdistl_w)
- AM_RANGE(0x00426, 0x00427) AM_WRITE(r2dx_sdisth_w)
- AM_RANGE(0x00428, 0x00429) AM_WRITE(r2dx_angle_w)
+ map(0x00420, 0x00421).w(this, FUNC(r2dx_v33_state::r2dx_dx_w));
+ map(0x00422, 0x00423).w(this, FUNC(r2dx_v33_state::r2dx_dy_w));
+ map(0x00424, 0x00425).w(this, FUNC(r2dx_v33_state::r2dx_sdistl_w));
+ map(0x00426, 0x00427).w(this, FUNC(r2dx_v33_state::r2dx_sdisth_w));
+ map(0x00428, 0x00429).w(this, FUNC(r2dx_v33_state::r2dx_angle_w));
- AM_RANGE(0x00430, 0x00431) AM_READ(r2dx_angle_r)
- AM_RANGE(0x00432, 0x00433) AM_READ(r2dx_dist_r)
- AM_RANGE(0x00434, 0x00435) AM_READ(r2dx_sin_r)
- AM_RANGE(0x00436, 0x00437) AM_READ(r2dx_cos_r)
+ map(0x00430, 0x00431).r(this, FUNC(r2dx_v33_state::r2dx_angle_r));
+ map(0x00432, 0x00433).r(this, FUNC(r2dx_v33_state::r2dx_dist_r));
+ map(0x00434, 0x00435).r(this, FUNC(r2dx_v33_state::r2dx_sin_r));
+ map(0x00436, 0x00437).r(this, FUNC(r2dx_v33_state::r2dx_cos_r));
- AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
+ map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
//AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write)
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // sprite buffering
- AM_RANGE(0x006b0, 0x006b1) AM_WRITE(mcu_prog_w) // could be encryption key uploads just like raiden2.cpp ?
- AM_RANGE(0x006b2, 0x006b3) AM_WRITE(mcu_prog_w2)
+ map(0x0068e, 0x0068f).nopw(); // sprite buffering
+ map(0x006b0, 0x006b1).w(this, FUNC(r2dx_v33_state::mcu_prog_w)); // could be encryption key uploads just like raiden2.cpp ?
+ map(0x006b2, 0x006b3).w(this, FUNC(r2dx_v33_state::mcu_prog_w2));
// AM_RANGE(0x006b4, 0x006b5) AM_WRITENOP
// AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP
- AM_RANGE(0x006bc, 0x006bd) AM_WRITE(mcu_prog_offs_w)
+ map(0x006bc, 0x006bd).w(this, FUNC(r2dx_v33_state::mcu_prog_offs_w));
// AM_RANGE(0x006be, 0x006bf) AM_WRITENOP
// sprite protection not 100% verified as the same
- AM_RANGE(0x006c0, 0x006c1) AM_READWRITE(sprite_prot_off_r, sprite_prot_off_w)
- AM_RANGE(0x006c2, 0x006c3) AM_READWRITE(sprite_prot_src_seg_r, sprite_prot_src_seg_w)
- AM_RANGE(0x006c6, 0x006c7) AM_WRITE(sprite_prot_dst1_w)
-
- AM_RANGE(0x006d8, 0x006d9) AM_WRITE(sprite_prot_x_w)
- AM_RANGE(0x006da, 0x006db) AM_WRITE(sprite_prot_y_w)
- AM_RANGE(0x006dc, 0x006dd) AM_READWRITE(sprite_prot_maxx_r, sprite_prot_maxx_w)
- AM_RANGE(0x006de, 0x006df) AM_WRITE(sprite_prot_src_w)
-
-
- AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w)
- AM_RANGE(0x00740, 0x00741) AM_READ(r2dx_debug_r)
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x00762, 0x00763) AM_READ(sprite_prot_dst1_r)
-
- AM_RANGE(0x00780, 0x00781) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // single OKI chip on this version
-
- AM_RANGE(0x00800, 0x00fff) AM_RAM // copies eeprom here?
- AM_RANGE(0x01000, 0x0bfff) AM_RAM
-
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM
- AM_RANGE(0x0d000, 0x0d7ff) AM_RAM //_WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0d800, 0x0dfff) AM_RAM //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM //_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM //_WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
- AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
-
- AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0x30000, 0xfffff) AM_ROMBANK("bank3") AM_WRITENOP
-ADDRESS_MAP_END
+ map(0x006c0, 0x006c1).rw(this, FUNC(r2dx_v33_state::sprite_prot_off_r), FUNC(r2dx_v33_state::sprite_prot_off_w));
+ map(0x006c2, 0x006c3).rw(this, FUNC(r2dx_v33_state::sprite_prot_src_seg_r), FUNC(r2dx_v33_state::sprite_prot_src_seg_w));
+ map(0x006c6, 0x006c7).w(this, FUNC(r2dx_v33_state::sprite_prot_dst1_w));
+
+ map(0x006d8, 0x006d9).w(this, FUNC(r2dx_v33_state::sprite_prot_x_w));
+ map(0x006da, 0x006db).w(this, FUNC(r2dx_v33_state::sprite_prot_y_w));
+ map(0x006dc, 0x006dd).rw(this, FUNC(r2dx_v33_state::sprite_prot_maxx_r), FUNC(r2dx_v33_state::sprite_prot_maxx_w));
+ map(0x006de, 0x006df).w(this, FUNC(r2dx_v33_state::sprite_prot_src_w));
+
+
+ map(0x00700, 0x00701).w(this, FUNC(r2dx_v33_state::rdx_v33_eeprom_w));
+ map(0x00740, 0x00741).r(this, FUNC(r2dx_v33_state::r2dx_debug_r));
+ map(0x00744, 0x00745).portr("INPUT");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+ map(0x00762, 0x00763).r(this, FUNC(r2dx_v33_state::sprite_prot_dst1_r));
+
+ map(0x00780, 0x00780).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // single OKI chip on this version
+
+ map(0x00800, 0x00fff).ram(); // copies eeprom here?
+ map(0x01000, 0x0bfff).ram();
+
+ map(0x0c000, 0x0c7ff).ram().share("sprites");
+ map(0x0c800, 0x0cfff).ram();
+ map(0x0d000, 0x0d7ff).ram(); //_WRITE(raiden2_background_w) AM_SHARE("back_data")
+ map(0x0d800, 0x0dfff).ram(); //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
+ map(0x0e000, 0x0e7ff).ram(); //_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
+ map(0x0e800, 0x0f7ff).ram(); //_WRITE(raiden2_text_w) AM_SHARE("text_data")
+ map(0x0f800, 0x0ffff).ram(); /* Stack area */
+ map(0x10000, 0x1efff).ram();
+ map(0x1f000, 0x1ffff).ram(); //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+
+ map(0x20000, 0x2ffff).bankr("bank1").nopw();
+ map(0x30000, 0xfffff).bankr("bank3").nopw();
+}
-ADDRESS_MAP_START(r2dx_v33_state::nzeroteam_base_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM //stack area
+void r2dx_v33_state::nzeroteam_base_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); //stack area
- AM_RANGE(0x00400, 0x00401) AM_WRITE(r2dx_tilemapdma_w) // tilemaps to private buffer
- AM_RANGE(0x00402, 0x00403) AM_WRITE(r2dx_paldma_w) // palettes to private buffer
+ map(0x00400, 0x00401).w(this, FUNC(r2dx_v33_state::r2dx_tilemapdma_w)); // tilemaps to private buffer
+ map(0x00402, 0x00403).w(this, FUNC(r2dx_v33_state::r2dx_paldma_w)); // palettes to private buffer
// 0x404 is bank on r2dx, this doesn't need it
// AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w) // not the same?
- AM_RANGE(0x00406, 0x00407) AM_NOP // always 6022, supposed to be the tile bank but ignores the actual value???
-
- AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_dx_w)
- AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_dy_w)
- AM_RANGE(0x00424, 0x00425) AM_WRITE(r2dx_sdistl_w)
- AM_RANGE(0x00426, 0x00427) AM_WRITE(r2dx_sdisth_w)
- AM_RANGE(0x00428, 0x00429) AM_WRITE(r2dx_angle_w)
-
- AM_RANGE(0x00430, 0x00431) AM_READ(r2dx_angle_r)
- AM_RANGE(0x00432, 0x00433) AM_READ(r2dx_dist_r)
- AM_RANGE(0x00434, 0x00435) AM_READ(r2dx_sin_r)
- AM_RANGE(0x00436, 0x00437) AM_READ(r2dx_cos_r)
+ map(0x00406, 0x00407).noprw(); // always 6022, supposed to be the tile bank but ignores the actual value???
+
+ map(0x00420, 0x00421).w(this, FUNC(r2dx_v33_state::r2dx_dx_w));
+ map(0x00422, 0x00423).w(this, FUNC(r2dx_v33_state::r2dx_dy_w));
+ map(0x00424, 0x00425).w(this, FUNC(r2dx_v33_state::r2dx_sdistl_w));
+ map(0x00426, 0x00427).w(this, FUNC(r2dx_v33_state::r2dx_sdisth_w));
+ map(0x00428, 0x00429).w(this, FUNC(r2dx_v33_state::r2dx_angle_w));
+
+ map(0x00430, 0x00431).r(this, FUNC(r2dx_v33_state::r2dx_angle_r));
+ map(0x00432, 0x00433).r(this, FUNC(r2dx_v33_state::r2dx_dist_r));
+ map(0x00434, 0x00435).r(this, FUNC(r2dx_v33_state::r2dx_sin_r));
+ map(0x00436, 0x00437).r(this, FUNC(r2dx_v33_state::r2dx_cos_r));
+
+ map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ //map(0x00640, 0x006bf)rw("obj", FUNC(seibu_encrypted_sprite_device::read), FUNC(seibu_encrypted_sprite_device::write));
+ map(0x0068e, 0x0068f).nopw(); // sprite buffering
+ map(0x006b0, 0x006b1).w(this, FUNC(r2dx_v33_state::mcu_prog_w));
+ map(0x006b2, 0x006b3).w(this, FUNC(r2dx_v33_state::mcu_prog_w2));
+// map(0x006b4, 0x006b5).nopw();
+// map(0x006b6, 0x006b7).nopw();
+ map(0x006bc, 0x006bd).w(this, FUNC(r2dx_v33_state::mcu_prog_offs_w));
+// map(0x006d8, 0x006d9).w(this, FUNC(r2dx_v33_state::bbbbll_w)); // scroll?
+// map(0x006dc, 0x006dd).r(this, FUNC(r2dx_v33_state::nzerotea_unknown_r));
+// map(0x006de, 0x006df).w(this, FUNC(r2dx_v33_state::mcu_unkaa_w)); // mcu command related?
+// map(0x00700, 0x00701).w(this, FUNC(r2dx_v33_state::rdx_v33_eeprom_w));
+
+// map(0x00762, 0x00763).r(this, FUNC(r2dx_v33_state::nzerotea_unknown_r));
+
+ map(0x00780, 0x0079f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+
+ map(0x00800, 0x00fff).ram();
+ map(0x01000, 0x0bfff).ram();
+
+ map(0x0c000, 0x0c7ff).ram().share("sprites");
+ map(0x0c800, 0x0cfff).ram();
+ map(0x0d000, 0x0d7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_background_w)).share("back_data");
+ map(0x0d800, 0x0dfff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_foreground_w)).share("fore_data");
+ map(0x0e000, 0x0e7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_midground_w)).share("mid_data");
+ map(0x0e800, 0x0f7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_text_w)).share("text_data");
+ map(0x0f800, 0x0ffff).ram(); /* Stack area */
+ map(0x10000, 0x1efff).ram();
+ map(0x1f000, 0x1ffff).ram(); //.w("palette", FUNC(palette_device::write)).share("palette");
+
+ map(0x20000, 0xfffff).rom().region("maincpu", 0x20000);
+}
- AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- //AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write)
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // sprite buffering
- AM_RANGE(0x006b0, 0x006b1) AM_WRITE(mcu_prog_w)
- AM_RANGE(0x006b2, 0x006b3) AM_WRITE(mcu_prog_w2)
-// AM_RANGE(0x006b4, 0x006b5) AM_WRITENOP
-// AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP
- AM_RANGE(0x006bc, 0x006bd) AM_WRITE(mcu_prog_offs_w)
-// AM_RANGE(0x006d8, 0x006d9) AM_WRITE(bbbbll_w) // scroll?
-// AM_RANGE(0x006dc, 0x006dd) AM_READ(nzerotea_unknown_r)
-// AM_RANGE(0x006de, 0x006df) AM_WRITE(mcu_unkaa_w) // mcu command related?
- //AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w)
-
-// AM_RANGE(0x00762, 0x00763) AM_READ(nzerotea_unknown_r)
-
- ;map(0x00780, 0x0079f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
-
- AM_RANGE(0x00800, 0x00fff) AM_RAM
- AM_RANGE(0x01000, 0x0bfff) AM_RAM
-
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM
- AM_RANGE(0x0d000, 0x0d7ff) AM_RAM //_WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0d800, 0x0dfff) AM_RAM //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM //_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM //_WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
- AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
-
- AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x20000 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(r2dx_v33_state::nzerotea_map)
- AM_IMPORT_FROM( nzeroteam_base_map )
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void r2dx_v33_state::nzerotea_map(address_map &map)
+{
+ nzeroteam_base_map(map);
+ map(0x00740, 0x00741).portr("DSW");
+ map(0x00744, 0x00745).portr("INPUT");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+}
WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w)
{
@@ -521,13 +530,14 @@ WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w)
m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
}
-ADDRESS_MAP_START(r2dx_v33_state::zerotm2k_map)
- AM_IMPORT_FROM( nzeroteam_base_map )
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("P3_P4")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x00748, 0x00749) AM_WRITE(zerotm2k_eeprom_w)
-ADDRESS_MAP_END
+void r2dx_v33_state::zerotm2k_map(address_map &map)
+{
+ nzeroteam_base_map(map);
+ map(0x00740, 0x00741).portr("P3_P4");
+ map(0x00744, 0x00745).portr("INPUT");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+ map(0x00748, 0x00749).w(this, FUNC(r2dx_v33_state::zerotm2k_eeprom_w));
+}
@@ -769,9 +779,10 @@ MACHINE_RESET_MEMBER(r2dx_v33_state,nzeroteam)
mid_bank = 1;
}
-ADDRESS_MAP_START(r2dx_v33_state::r2dx_oki_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void r2dx_v33_state::r2dx_oki_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).bankr("okibank");
+}
MACHINE_CONFIG_START(r2dx_v33_state::rdx_v33)
diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp
index cf6850d71a7..864790add63 100644
--- a/src/mame/drivers/r9751.cpp
+++ b/src/mame/drivers/r9751.cpp
@@ -619,16 +619,17 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(r9751_state::r9751_mem)
+void r9751_state::r9751_mem(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000,0x00ffffff) AM_RAM AM_SHARE("main_ram") // 16MB
- AM_RANGE(0x08000000,0x0800ffff) AM_ROM AM_REGION("prom", 0)
- AM_RANGE(0x5FF00000,0x5FFFFFFF) AM_READWRITE(r9751_mmio_5ff_r, r9751_mmio_5ff_w)
- AM_RANGE(0xFF010000,0xFF01FFFF) AM_READWRITE(r9751_mmio_ff01_r, r9751_mmio_ff01_w)
- AM_RANGE(0xFF050000,0xFF06FFFF) AM_READWRITE(r9751_mmio_ff05_r, r9751_mmio_ff05_w)
- AM_RANGE(0xFFF80000,0xFFF8FFFF) AM_READWRITE(r9751_mmio_fff8_r, r9751_mmio_fff8_w)
+ map(0x00000000, 0x00ffffff).ram().share("main_ram"); // 16MB
+ map(0x08000000, 0x0800ffff).rom().region("prom", 0);
+ map(0x5FF00000, 0x5FFFFFFF).rw(this, FUNC(r9751_state::r9751_mmio_5ff_r), FUNC(r9751_state::r9751_mmio_5ff_w));
+ map(0xFF010000, 0xFF01FFFF).rw(this, FUNC(r9751_state::r9751_mmio_ff01_r), FUNC(r9751_state::r9751_mmio_ff01_w));
+ map(0xFF050000, 0xFF06FFFF).rw(this, FUNC(r9751_state::r9751_mmio_ff05_r), FUNC(r9751_state::r9751_mmio_ff05_w));
+ map(0xFFF80000, 0xFFF8FFFF).rw(this, FUNC(r9751_state::r9751_mmio_fff8_r), FUNC(r9751_state::r9751_mmio_fff8_w));
//AM_RANGE(0xffffff00,0xffffffff) AM_RAM // Unknown area
-ADDRESS_MAP_END
+}
/******************************************************************************
Input Ports
diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp
index 1604313fed1..7018c4b95ab 100644
--- a/src/mame/drivers/rabbit.cpp
+++ b/src/mame/drivers/rabbit.cpp
@@ -713,40 +713,41 @@ WRITE32_MEMBER(rabbit_state::eeprom_write)
}
}
-ADDRESS_MAP_START(rabbit_state::rabbit_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x000000, 0x000003) AM_WRITENOP // bug in code / emulation?
- AM_RANGE(0x000010, 0x000013) AM_WRITENOP // bug in code / emulation?
- AM_RANGE(0x000024, 0x000027) AM_WRITENOP // bug in code / emulation?
- AM_RANGE(0x00719c, 0x00719f) AM_WRITENOP // bug in code / emulation?
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS") AM_WRITE(eeprom_write)
- AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status?
+void rabbit_state::rabbit_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x000000, 0x000003).nopw(); // bug in code / emulation?
+ map(0x000010, 0x000013).nopw(); // bug in code / emulation?
+ map(0x000024, 0x000027).nopw(); // bug in code / emulation?
+ map(0x00719c, 0x00719f).nopw(); // bug in code / emulation?
+ map(0x200000, 0x200003).portr("INPUTS").w(this, FUNC(rabbit_state::eeprom_write));
+ map(0x400010, 0x400013).r(this, FUNC(rabbit_state::randomrabbits)); // gfx chip status?
/* this lot are probably gfxchip/blitter etc. related */
- AM_RANGE(0x400010, 0x400013) AM_WRITEONLY AM_SHARE("viewregs0" )
- AM_RANGE(0x400100, 0x400117) AM_WRITEONLY AM_SHARE("tilemap_regs.0" ) // tilemap regs1
- AM_RANGE(0x400120, 0x400137) AM_WRITEONLY AM_SHARE("tilemap_regs.1" ) // tilemap regs2
- AM_RANGE(0x400140, 0x400157) AM_WRITEONLY AM_SHARE("tilemap_regs.2" ) // tilemap regs3
- AM_RANGE(0x400160, 0x400177) AM_WRITEONLY AM_SHARE("tilemap_regs.3" ) // tilemap regs4
- AM_RANGE(0x400200, 0x40021b) AM_WRITEONLY AM_SHARE("spriteregs" ) // sprregs?
- AM_RANGE(0x400300, 0x400303) AM_WRITE(rombank_w) // used during rom testing, rombank/area select + something else?
- AM_RANGE(0x400400, 0x400413) AM_WRITEONLY AM_SHARE("viewregs6" ) // some global controls? (brightness etc.?)
- AM_RANGE(0x400500, 0x400503) AM_WRITEONLY AM_SHARE("viewregs7" )
- AM_RANGE(0x400700, 0x40070f) AM_WRITE(blitter_w) AM_SHARE("blitterregs" )
- AM_RANGE(0x400800, 0x40080f) AM_WRITEONLY AM_SHARE("viewregs9" ) // never changes?
- AM_RANGE(0x400900, 0x4009ff) AM_DEVREADWRITE16("i5000snd", i5000snd_device, read, write, 0xffffffff)
+ map(0x400010, 0x400013).writeonly().share("viewregs0");
+ map(0x400100, 0x400117).writeonly().share("tilemap_regs.0"); // tilemap regs1
+ map(0x400120, 0x400137).writeonly().share("tilemap_regs.1"); // tilemap regs2
+ map(0x400140, 0x400157).writeonly().share("tilemap_regs.2"); // tilemap regs3
+ map(0x400160, 0x400177).writeonly().share("tilemap_regs.3"); // tilemap regs4
+ map(0x400200, 0x40021b).writeonly().share("spriteregs"); // sprregs?
+ map(0x400300, 0x400303).w(this, FUNC(rabbit_state::rombank_w)); // used during rom testing, rombank/area select + something else?
+ map(0x400400, 0x400413).writeonly().share("viewregs6"); // some global controls? (brightness etc.?)
+ map(0x400500, 0x400503).writeonly().share("viewregs7");
+ map(0x400700, 0x40070f).w(this, FUNC(rabbit_state::blitter_w)).share("blitterregs");
+ map(0x400800, 0x40080f).writeonly().share("viewregs9"); // never changes?
+ map(0x400900, 0x4009ff).rw("i5000snd", FUNC(i5000snd_device::read), FUNC(i5000snd_device::write));
/* hmm */
- AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("viewregs10" )
+ map(0x479700, 0x479713).writeonly().share("viewregs10");
- AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK("bank1") // data (gfx / sound) rom readback for ROM testing
+ map(0x440000, 0x47ffff).bankr("bank1"); // data (gfx / sound) rom readback for ROM testing
/* tilemaps */
- AM_RANGE(0x480000, 0x483fff) AM_READWRITE(tilemap0_r,tilemap0_w)
- AM_RANGE(0x484000, 0x487fff) AM_READWRITE(tilemap1_r,tilemap1_w)
- AM_RANGE(0x488000, 0x48bfff) AM_READWRITE(tilemap2_r,tilemap2_w)
- AM_RANGE(0x48c000, 0x48ffff) AM_READWRITE(tilemap3_r,tilemap3_w)
- AM_RANGE(0x494000, 0x497fff) AM_RAM AM_SHARE("spriteram") // sprites?
- AM_RANGE(0x4a0000, 0x4affff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x480000, 0x483fff).rw(this, FUNC(rabbit_state::tilemap0_r), FUNC(rabbit_state::tilemap0_w));
+ map(0x484000, 0x487fff).rw(this, FUNC(rabbit_state::tilemap1_r), FUNC(rabbit_state::tilemap1_w));
+ map(0x488000, 0x48bfff).rw(this, FUNC(rabbit_state::tilemap2_r), FUNC(rabbit_state::tilemap2_w));
+ map(0x48c000, 0x48ffff).rw(this, FUNC(rabbit_state::tilemap3_r), FUNC(rabbit_state::tilemap3_w));
+ map(0x494000, 0x497fff).ram().share("spriteram"); // sprites?
+ map(0x4a0000, 0x4affff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xff0000, 0xffffff).ram();
+}
static INPUT_PORTS_START( rabbit )
diff --git a/src/mame/drivers/rad_eu3a05.cpp b/src/mame/drivers/rad_eu3a05.cpp
index 1236e3bf988..93fd0efbe01 100644
--- a/src/mame/drivers/rad_eu3a05.cpp
+++ b/src/mame/drivers/rad_eu3a05.cpp
@@ -903,79 +903,81 @@ READ8_MEMBER(radica_eu3a05_state::read_full_space)
return fullbankspace.read_byte(offset);
}
-ADDRESS_MAP_START(radica_eu3a05_state::radicasi_map)
+void radica_eu3a05_state::radicasi_map(address_map &map)
+{
// can the addresses move around?
- AM_RANGE(0x0000, 0x05ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x0600, 0x3dff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x3e00, 0x3fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4800, 0x49ff) AM_RAM AM_SHARE("palram")
+ map(0x0000, 0x05ff).ram().share("ram");
+ map(0x0600, 0x3dff).ram().share("vram");
+ map(0x3e00, 0x3fff).ram().share("spriteram");
+ map(0x4800, 0x49ff).ram().share("palram");
// 500x system regs?
- AM_RANGE(0x5003, 0x5003) AM_READ(radicasi_5003_r)
- AM_RANGE(0x500b, 0x500b) AM_READ(radicasi_pal_ntsc_r) // PAL / NTSC flag at least
- AM_RANGE(0x500c, 0x500c) AM_WRITE(radicasi_rombank_hi_w)
- AM_RANGE(0x500d, 0x500d) AM_READWRITE(radicasi_rombank_lo_r, radicasi_rombank_lo_w)
+ map(0x5003, 0x5003).r(this, FUNC(radica_eu3a05_state::radicasi_5003_r));
+ map(0x500b, 0x500b).r(this, FUNC(radica_eu3a05_state::radicasi_pal_ntsc_r)); // PAL / NTSC flag at least
+ map(0x500c, 0x500c).w(this, FUNC(radica_eu3a05_state::radicasi_rombank_hi_w));
+ map(0x500d, 0x500d).rw(this, FUNC(radica_eu3a05_state::radicasi_rombank_lo_r), FUNC(radica_eu3a05_state::radicasi_rombank_lo_w));
// 501x DMA controller
- AM_RANGE(0x500F, 0x500F) AM_READWRITE(radicasi_dmasrc_lo_r, radicasi_dmasrc_lo_w)
- AM_RANGE(0x5010, 0x5010) AM_READWRITE(radicasi_dmasrc_md_r, radicasi_dmasrc_md_w)
- AM_RANGE(0x5011, 0x5011) AM_READWRITE(radicasi_dmasrc_hi_r, radicasi_dmasrc_hi_w)
+ map(0x500F, 0x500F).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasrc_lo_r), FUNC(radica_eu3a05_state::radicasi_dmasrc_lo_w));
+ map(0x5010, 0x5010).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasrc_md_r), FUNC(radica_eu3a05_state::radicasi_dmasrc_md_w));
+ map(0x5011, 0x5011).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasrc_hi_r), FUNC(radica_eu3a05_state::radicasi_dmasrc_hi_w));
- AM_RANGE(0x5012, 0x5012) AM_READWRITE(radicasi_dmadst_lo_r, radicasi_dmadst_lo_w)
- AM_RANGE(0x5013, 0x5013) AM_READWRITE(radicasi_dmadst_hi_r, radicasi_dmadst_hi_w)
+ map(0x5012, 0x5012).rw(this, FUNC(radica_eu3a05_state::radicasi_dmadst_lo_r), FUNC(radica_eu3a05_state::radicasi_dmadst_lo_w));
+ map(0x5013, 0x5013).rw(this, FUNC(radica_eu3a05_state::radicasi_dmadst_hi_r), FUNC(radica_eu3a05_state::radicasi_dmadst_hi_w));
- AM_RANGE(0x5014, 0x5014) AM_READWRITE(radicasi_dmasize_lo_r, radicasi_dmasize_lo_w)
- AM_RANGE(0x5015, 0x5015) AM_READWRITE(radicasi_dmasize_hi_r, radicasi_dmasize_hi_w)
+ map(0x5014, 0x5014).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasize_lo_r), FUNC(radica_eu3a05_state::radicasi_dmasize_lo_w));
+ map(0x5015, 0x5015).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasize_hi_r), FUNC(radica_eu3a05_state::radicasi_dmasize_hi_w));
- AM_RANGE(0x5016, 0x5016) AM_READWRITE(radicasi_dmatrg_r, radicasi_dmatrg_w)
+ map(0x5016, 0x5016).rw(this, FUNC(radica_eu3a05_state::radicasi_dmatrg_r), FUNC(radica_eu3a05_state::radicasi_dmatrg_w));
// 502x - 503x video regs area?
- AM_RANGE(0x5020, 0x5026) AM_RAM // unknown, space invaders sets these to fixed values, tetris has them as 00
- AM_RANGE(0x5027, 0x5027) AM_WRITE(radicasi_vidctrl_w)
+ map(0x5020, 0x5026).ram(); // unknown, space invaders sets these to fixed values, tetris has them as 00
+ map(0x5027, 0x5027).w(this, FUNC(radica_eu3a05_state::radicasi_vidctrl_w));
- AM_RANGE(0x5029, 0x5029) AM_READWRITE(radicasi_tile_gfxbase_lo_r, radicasi_tile_gfxbase_lo_w) // tilebase
- AM_RANGE(0x502a, 0x502a) AM_READWRITE(radicasi_tile_gfxbase_hi_r, radicasi_tile_gfxbase_hi_w) // tilebase
+ map(0x5029, 0x5029).rw(this, FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_lo_r), FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_lo_w)); // tilebase
+ map(0x502a, 0x502a).rw(this, FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_hi_r), FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_hi_w)); // tilebase
- AM_RANGE(0x502b, 0x502b) AM_READWRITE(radicasi_sprite_gfxbase_lo_r, radicasi_sprite_gfxbase_lo_w) // tilebase (spr?)
- AM_RANGE(0x502c, 0x502c) AM_READWRITE(radicasi_sprite_gfxbase_hi_r, radicasi_sprite_gfxbase_hi_w) // tilebase (spr?)
+ map(0x502b, 0x502b).rw(this, FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_lo_r), FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_lo_w)); // tilebase (spr?)
+ map(0x502c, 0x502c).rw(this, FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_hi_r), FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_hi_w)); // tilebase (spr?)
- AM_RANGE(0x5031, 0x5032) AM_READWRITE(radicasi_sprite_bg_scroll_r, radicasi_sprite_bg_scroll_w)
+ map(0x5031, 0x5032).rw(this, FUNC(radica_eu3a05_state::radicasi_sprite_bg_scroll_r), FUNC(radica_eu3a05_state::radicasi_sprite_bg_scroll_w));
// 504x GPIO area?
- AM_RANGE(0x5040, 0x5046) AM_DEVREADWRITE("gpio", radica6502_gpio_device, gpio_r, gpio_w)
- AM_RANGE(0x5048, 0x504a) AM_DEVWRITE("gpio", radica6502_gpio_device, gpio_unk_w)
+ map(0x5040, 0x5046).rw("gpio", FUNC(radica6502_gpio_device::gpio_r), FUNC(radica6502_gpio_device::gpio_w));
+ map(0x5048, 0x504a).w("gpio", FUNC(radica6502_gpio_device::gpio_unk_w));
// 506x unknown
- AM_RANGE(0x5060, 0x506d) AM_RAM // read/written by tetris
+ map(0x5060, 0x506d).ram(); // read/written by tetris
// 508x sound
- AM_RANGE(0x5080, 0x5091) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_addr_r, radicasi_sound_addr_w)
- AM_RANGE(0x5092, 0x50a3) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_size_r, radicasi_sound_size_w)
- AM_RANGE(0x50a4, 0x50a4) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_unk_r, radicasi_sound_unk_w)
- AM_RANGE(0x50a5, 0x50a5) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_trigger_r, radicasi_sound_trigger_w)
+ 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));
+ map(0x50a4, 0x50a4).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_unk_r), FUNC(radica6502_sound_device::radicasi_sound_unk_w));
+ map(0x50a5, 0x50a5).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_trigger_r), FUNC(radica6502_sound_device::radicasi_sound_trigger_w));
- AM_RANGE(0x50a8, 0x50a8) AM_DEVREAD("6ch_sound", radica6502_sound_device, radicasi_50a8_r) // possible 'stopped' status of above channels, waits for it to be 0x3f in places
+ map(0x50a8, 0x50a8).r("6ch_sound", FUNC(radica6502_sound_device::radicasi_50a8_r)); // possible 'stopped' status of above channels, waits for it to be 0x3f in places
- AM_RANGE(0x50a9, 0x50a9) AM_READWRITE(radicasi_50a9_r, radicasi_50a9_w)
+ map(0x50a9, 0x50a9).rw(this, FUNC(radica_eu3a05_state::radicasi_50a9_r), FUNC(radica_eu3a05_state::radicasi_50a9_w));
//AM_RANGE(0x5000, 0x50ff) AM_RAM
- AM_RANGE(0x6000, 0xdfff) AM_DEVICE("bank", address_map_bank_device, amap8)
+ map(0x6000, 0xdfff).m(m_bank, FUNC(address_map_bank_device::amap8));
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f8000)
+ map(0xe000, 0xffff).rom().region("maincpu", 0x3f8000);
// not sure how these work, might be a modified 6502 core instead.
- AM_RANGE(0xfffa, 0xfffb) AM_READ(radicasi_nmi_vector_r)
- AM_RANGE(0xfffe, 0xffff) AM_READ(radicasi_irq_vector_r)
-ADDRESS_MAP_END
+ map(0xfffa, 0xfffb).r(this, FUNC(radica_eu3a05_state::radicasi_nmi_vector_r));
+ map(0xfffe, 0xffff).r(this, FUNC(radica_eu3a05_state::radicasi_irq_vector_r));
+}
-ADDRESS_MAP_START(radica_eu3a05_state::radicasi_bank_map)
- AM_RANGE(0x000000, 0xffffff) AM_NOP // shut up any logging when video params are invalid
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x400000, 0x40ffff) AM_RAM // ?? only ever cleared maybe a mirror of below?
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("pixram") // Qix writes here and sets the tile base here instead of ROM so it can have a pixel layer
-ADDRESS_MAP_END
+void radica_eu3a05_state::radicasi_bank_map(address_map &map)
+{
+ map(0x000000, 0xffffff).noprw(); // shut up any logging when video params are invalid
+ map(0x000000, 0x3fffff).rom().region("maincpu", 0);
+ map(0x400000, 0x40ffff).ram(); // ?? only ever cleared maybe a mirror of below?
+ map(0x800000, 0x80ffff).ram().share("pixram"); // Qix writes here and sets the tile base here instead of ROM so it can have a pixel layer
+}
static INPUT_PORTS_START( rad_sinv )
PORT_START("IN0")
diff --git a/src/mame/drivers/rad_eu3a14.cpp b/src/mame/drivers/rad_eu3a14.cpp
index 6af2e96a04a..af8808bd8a9 100644
--- a/src/mame/drivers/rad_eu3a14.cpp
+++ b/src/mame/drivers/rad_eu3a14.cpp
@@ -462,71 +462,73 @@ READ8_MEMBER(radica_eu3a14_state::radicasi_pal_ntsc_r)
//return 0x00; // PAL
}
-ADDRESS_MAP_START(radica_eu3a14_state::bank_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void radica_eu3a14_state::bank_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(radica_eu3a14_state::radica_eu3a14_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x1fff) AM_RAM AM_SHARE("mainram") // 200-9ff is sprites? a00 - ??? is tilemap?
+void radica_eu3a14_state::radica_eu3a14_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x1fff).ram().share("mainram"); // 200-9ff is sprites? a00 - ??? is tilemap?
- AM_RANGE(0x3000, 0x3fff) AM_RAM // runs code from here
+ map(0x3000, 0x3fff).ram(); // runs code from here
- AM_RANGE(0x4800, 0x4bff) AM_RAM AM_SHARE("palram")
+ map(0x4800, 0x4bff).ram().share("palram");
// similar to eu3a05, at least for pal flags and rom banking
- AM_RANGE(0x5007, 0x5007) AM_NOP
- AM_RANGE(0x5008, 0x5008) AM_WRITENOP // startup
- AM_RANGE(0x5009, 0x5009) AM_NOP
- AM_RANGE(0x500a, 0x500a) AM_WRITENOP // startup
- AM_RANGE(0x500b, 0x500b) AM_READ(radicasi_pal_ntsc_r) AM_WRITENOP // PAL / NTSC flag at least
- AM_RANGE(0x500c, 0x500c) AM_WRITE(radicasi_rombank_hi_w)
- AM_RANGE(0x500d, 0x500d) AM_READWRITE(radicasi_rombank_lo_r, radicasi_rombank_lo_w)
+ map(0x5007, 0x5007).noprw();
+ map(0x5008, 0x5008).nopw(); // startup
+ map(0x5009, 0x5009).noprw();
+ map(0x500a, 0x500a).nopw(); // startup
+ map(0x500b, 0x500b).r(this, FUNC(radica_eu3a14_state::radicasi_pal_ntsc_r)).nopw(); // PAL / NTSC flag at least
+ map(0x500c, 0x500c).w(this, FUNC(radica_eu3a14_state::radicasi_rombank_hi_w));
+ map(0x500d, 0x500d).rw(this, FUNC(radica_eu3a14_state::radicasi_rombank_lo_r), FUNC(radica_eu3a14_state::radicasi_rombank_lo_w));
// DMA is similar to, but not the same as eu3a05
- AM_RANGE(0x500f, 0x5017) AM_RAM AM_SHARE("dmaparams")
- AM_RANGE(0x5018, 0x5018) AM_READWRITE(dma_trigger_r, dma_trigger_w)
+ map(0x500f, 0x5017).ram().share("dmaparams");
+ map(0x5018, 0x5018).rw(this, FUNC(radica_eu3a14_state::dma_trigger_r), FUNC(radica_eu3a14_state::dma_trigger_w));
// probably GPIO like eu3a05, although it access 47/48 as unknown instead of 48/49/4a
- AM_RANGE(0x5040, 0x5040) AM_WRITENOP
- AM_RANGE(0x5041, 0x5041) AM_READ_PORT("IN0")
- AM_RANGE(0x5042, 0x5042) AM_WRITENOP
- AM_RANGE(0x5043, 0x5043) AM_NOP
- AM_RANGE(0x5044, 0x5044) AM_WRITENOP
- AM_RANGE(0x5045, 0x5045) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x5046, 0x5046) AM_WRITENOP
- AM_RANGE(0x5047, 0x5047) AM_WRITENOP
- AM_RANGE(0x5048, 0x5048) AM_WRITENOP
+ 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();
// sound appears to be the same as eu3a05
- AM_RANGE(0x5080, 0x5091) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_addr_r, radicasi_sound_addr_w)
- AM_RANGE(0x5092, 0x50a3) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_size_r, radicasi_sound_size_w)
- AM_RANGE(0x50a4, 0x50a4) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_unk_r, radicasi_sound_unk_w) // read frequently on this
- AM_RANGE(0x50a5, 0x50a5) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_trigger_r, radicasi_sound_trigger_w)
- AM_RANGE(0x50a6, 0x50a6) AM_WRITENOP // startup
- AM_RANGE(0x50a7, 0x50a7) AM_WRITENOP // startup
- AM_RANGE(0x50a8, 0x50a8) AM_DEVREAD("6ch_sound", radica6502_sound_device, radicasi_50a8_r)
- AM_RANGE(0x50a9, 0x50a9) AM_WRITENOP // startup
+ 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));
+ map(0x50a4, 0x50a4).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_unk_r), FUNC(radica6502_sound_device::radicasi_sound_unk_w)); // read frequently on this
+ map(0x50a5, 0x50a5).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_trigger_r), FUNC(radica6502_sound_device::radicasi_sound_trigger_w));
+ 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
// video regs are here this time
- AM_RANGE(0x5100, 0x5100) AM_RAM
- AM_RANGE(0x5103, 0x5106) AM_RAM
- AM_RANGE(0x5107, 0x5107) AM_RAM // on transitions, maybe layer disables?
+ map(0x5100, 0x5100).ram();
+ map(0x5103, 0x5106).ram();
+ map(0x5107, 0x5107).ram(); // on transitions, maybe layer disables?
- AM_RANGE(0x5110, 0x5112) AM_RAM // startup
- AM_RANGE(0x5113, 0x5113) AM_RAM // written with tilebase?
- AM_RANGE(0x5114, 0x5115) AM_RAM AM_SHARE("tilebase")
- AM_RANGE(0x5116, 0x5117) AM_RAM
- AM_RANGE(0x5121, 0x5124) AM_RAM AM_SHARE("scrollregs")
- AM_RANGE(0x5150, 0x5150) AM_RAM // startup
- AM_RANGE(0x5151, 0x5153) AM_RAM // startup
+ map(0x5110, 0x5112).ram(); // startup
+ map(0x5113, 0x5113).ram(); // written with tilebase?
+ map(0x5114, 0x5115).ram().share("tilebase");
+ map(0x5116, 0x5117).ram();
+ map(0x5121, 0x5124).ram().share("scrollregs");
+ map(0x5150, 0x5150).ram(); // startup
+ map(0x5151, 0x5153).ram(); // startup
- AM_RANGE(0x6000, 0xdfff) AM_DEVICE("bank", address_map_bank_device, amap8)
+ map(0x6000, 0xdfff).m(m_bank, FUNC(address_map_bank_device::amap8));
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000)
+ map(0xe000, 0xffff).rom().region("maincpu", 0x0000);
- AM_RANGE(0xfffe, 0xffff) AM_READ(irq_vector_r)
-ADDRESS_MAP_END
+ map(0xfffe, 0xffff).r(this, FUNC(radica_eu3a14_state::irq_vector_r));
+}
READ8_MEMBER(radica_eu3a14_state::dma_trigger_r)
{
diff --git a/src/mame/drivers/radio86.cpp b/src/mame/drivers/radio86.cpp
index 245edc71c29..41c4a6fb843 100644
--- a/src/mame/drivers/radio86.cpp
+++ b/src/mame/drivers/radio86.cpp
@@ -25,81 +25,89 @@
/* Address maps */
-ADDRESS_MAP_START(radio86_state::radio86_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc)
+void radio86_state::radio86_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0x7fff).ram(); // RAM
+ map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc);
//AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video
- AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(radio86_state::radio86_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x00, 0xff ) AM_READWRITE(radio_io_r,radio_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(radio86_state::rk7007_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x80, 0x83 ) AM_DEVREADWRITE("ms7007", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(radio86_state::radio86rom_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video
- AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(radio86_state::radio86ram_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0xdfff ) AM_RAM // RAM
- AM_RANGE( 0xe000, 0xe7ff ) AM_ROM // System ROM page 2
- AM_RANGE( 0xe800, 0xf5ff ) AM_RAM // RAM
- AM_RANGE( 0xf700, 0xf703 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE( 0xf780, 0xf7bf ) AM_DEVREADWRITE("i8275", i8275_device, read, write) // video
- AM_RANGE( 0xf684, 0xf687 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
- AM_RANGE( 0xf688, 0xf688 ) AM_WRITE(radio86_pagesel )
- AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM page 1
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(radio86_state::radio86_16_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0x3fff ) AM_RAM // RAM
- AM_RANGE( 0x4000, 0x7fff ) AM_READ(radio_cpu_state_r)
- AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc)
+ map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video
+ map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf000, 0xffff).rom(); // System ROM
+}
+
+void radio86_state::radio86_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0xff).rw(this, FUNC(radio86_state::radio_io_r), FUNC(radio86_state::radio_io_w));
+}
+
+void radio86_state::rk7007_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x80, 0x83).rw("ms7007", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void radio86_state::radio86rom_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0x7fff).ram(); // RAM
+ map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc);
+ map(0xa000, 0xa003).rw(m_ppi8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc);
+ map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video
+ map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf000, 0xffff).rom(); // System ROM
+}
+
+void radio86_state::radio86ram_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0xdfff).ram(); // RAM
+ map(0xe000, 0xe7ff).rom(); // System ROM page 2
+ map(0xe800, 0xf5ff).ram(); // RAM
+ map(0xf700, 0xf703).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf780, 0xf7bf).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)); // video
+ map(0xf684, 0xf687).rw(m_ppi8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf688, 0xf688).w(this, FUNC(radio86_state::radio86_pagesel));
+ map(0xf800, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf800, 0xffff).rom(); // System ROM page 1
+}
+
+void radio86_state::radio86_16_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0x3fff).ram(); // RAM
+ map(0x4000, 0x7fff).r(this, FUNC(radio86_state::radio_cpu_state_r));
+ map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc);
//AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video
- AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
+ map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video
+ map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf000, 0xffff).rom(); // System ROM
+}
-ADDRESS_MAP_START(radio86_state::mikron2_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0xc000, 0xc003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x00fc)
+void radio86_state::mikron2_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0x7fff).ram(); // RAM
+ map(0xc000, 0xc003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x00fc);
//AM_RANGE( 0xc100, 0xc103 ) AM_DEVREADWRITE_LEGACY("ppi8255_2", i8255a_r, i8255a_w) AM_MIRROR(0x00fc)
- AM_RANGE( 0xc200, 0xc201 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x00fe) // video
- AM_RANGE( 0xc300, 0xc3ff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(radio86_state::impuls03_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc)
- AM_RANGE( 0xa000, 0xbfff ) AM_ROM // Basic ROM
- AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video
- AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
+ map(0xc200, 0xc201).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x00fe); // video
+ map(0xc300, 0xc3ff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf000, 0xffff).rom(); // System ROM
+}
+
+void radio86_state::impuls03_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).bankrw("bank1"); // First bank
+ map(0x1000, 0x7fff).ram(); // RAM
+ map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc);
+ map(0xa000, 0xbfff).rom(); // Basic ROM
+ map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video
+ map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA
+ map(0xf000, 0xffff).rom(); // System ROM
+}
/* Input ports */
INPUT_PORTS_START( radio86 )
diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp
index 0d1984df510..a3beac779b7 100644
--- a/src/mame/drivers/raiden.cpp
+++ b/src/mame/drivers/raiden.cpp
@@ -87,105 +87,113 @@
/******************************************************************************/
-ADDRESS_MAP_START(raiden_state::main_map)
- AM_RANGE(0x00000, 0x06fff) AM_RAM
- AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x0a000, 0x0a00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_SHARE("videoram")
- AM_RANGE(0x0e000, 0x0e001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0e002, 0x0e003) AM_READ_PORT("DSW")
- AM_RANGE(0x0e004, 0x0e005) AM_WRITENOP // watchdog?
- AM_RANGE(0x0e006, 0x0e007) AM_WRITE8(raiden_control_w, 0x00ff)
- AM_RANGE(0x0f000, 0x0f03f) AM_WRITEONLY AM_SHARE("scroll_ram")
- AM_RANGE(0xa0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden_state::sub_map)
- AM_RANGE(0x00000, 0x01fff) AM_RAM
- AM_RANGE(0x02000, 0x027ff) AM_RAM_WRITE(raiden_background_w) AM_SHARE("back_data")
- AM_RANGE(0x02800, 0x02fff) AM_RAM_WRITE(raiden_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x03000, 0x03fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x07ffe, 0x07fff) AM_WRITENOP // ?
- AM_RANGE(0x08000, 0x08001) AM_WRITENOP // watchdog?
- AM_RANGE(0x0a000, 0x0a001) AM_WRITENOP // ?
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void raiden_state::main_map(address_map &map)
+{
+ map(0x00000, 0x06fff).ram();
+ map(0x07000, 0x07fff).ram().share("spriteram");
+ map(0x08000, 0x08fff).ram().share("shared_ram");
+ map(0x0a000, 0x0a00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0x0c000, 0x0c7ff).w(this, FUNC(raiden_state::raiden_text_w)).share("videoram");
+ map(0x0e000, 0x0e001).portr("P1_P2");
+ map(0x0e002, 0x0e003).portr("DSW");
+ map(0x0e004, 0x0e005).nopw(); // watchdog?
+ map(0x0e006, 0x0e006).w(this, FUNC(raiden_state::raiden_control_w));
+ map(0x0f000, 0x0f03f).writeonly().share("scroll_ram");
+ map(0xa0000, 0xfffff).rom();
+}
+
+void raiden_state::sub_map(address_map &map)
+{
+ map(0x00000, 0x01fff).ram();
+ map(0x02000, 0x027ff).ram().w(this, FUNC(raiden_state::raiden_background_w)).share("back_data");
+ map(0x02800, 0x02fff).ram().w(this, FUNC(raiden_state::raiden_foreground_w)).share("fore_data");
+ map(0x03000, 0x03fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x04000, 0x04fff).ram().share("shared_ram");
+ map(0x07ffe, 0x07fff).nopw(); // ?
+ map(0x08000, 0x08001).nopw(); // watchdog?
+ map(0x0a000, 0x0a001).nopw(); // ?
+ map(0xc0000, 0xfffff).rom();
+}
/******************************************************************************/
-ADDRESS_MAP_START(raiden_state::raidenu_main_map)
- AM_RANGE(0x00000, 0x06fff) AM_RAM
- AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x08000, 0x0803f) AM_WRITEONLY AM_SHARE("scroll_ram")
- AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW")
- AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP // watchdog?
- AM_RANGE(0x0b006, 0x0b007) AM_WRITE8(raiden_control_w, 0x00ff)
- AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_SHARE("videoram")
- AM_RANGE(0x0d000, 0x0d00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0xa0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden_state::raidenu_sub_map)
- AM_RANGE(0x00000, 0x05fff) AM_RAM
- AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(raiden_background_w) AM_SHARE("back_data")
- AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(raiden_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x07000, 0x07fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x0a000, 0x0a001) AM_WRITENOP // ?
- AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP // watchdog?
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void raiden_state::raidenu_main_map(address_map &map)
+{
+ map(0x00000, 0x06fff).ram();
+ map(0x07000, 0x07fff).ram().share("spriteram");
+ map(0x08000, 0x0803f).writeonly().share("scroll_ram");
+ map(0x0a000, 0x0afff).ram().share("shared_ram");
+ map(0x0b000, 0x0b001).portr("P1_P2");
+ map(0x0b002, 0x0b003).portr("DSW");
+ map(0x0b004, 0x0b005).nopw(); // watchdog?
+ map(0x0b006, 0x0b006).w(this, FUNC(raiden_state::raiden_control_w));
+ map(0x0c000, 0x0c7ff).w(this, FUNC(raiden_state::raiden_text_w)).share("videoram");
+ map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0xa0000, 0xfffff).rom();
+}
+
+void raiden_state::raidenu_sub_map(address_map &map)
+{
+ map(0x00000, 0x05fff).ram();
+ map(0x06000, 0x067ff).ram().w(this, FUNC(raiden_state::raiden_background_w)).share("back_data");
+ map(0x06800, 0x06fff).ram().w(this, FUNC(raiden_state::raiden_foreground_w)).share("fore_data");
+ map(0x07000, 0x07fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08000, 0x08fff).ram().share("shared_ram");
+ map(0x0a000, 0x0a001).nopw(); // ?
+ map(0x0c000, 0x0c001).nopw(); // watchdog?
+ map(0xc0000, 0xfffff).rom();
+}
/******************************************************************************/
-ADDRESS_MAP_START(raiden_state::raidenb_main_map)
- AM_RANGE(0x00000, 0x06fff) AM_RAM
- AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW")
- AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP // watchdog?
- AM_RANGE(0x0b006, 0x0b007) AM_WRITE8(raidenb_control_w, 0x00ff)
- AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_SHARE("videoram")
- AM_RANGE(0x0d000, 0x0d00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0x0d040, 0x0d08f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- AM_RANGE(0xa0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void raiden_state::raidenb_main_map(address_map &map)
+{
+ map(0x00000, 0x06fff).ram();
+ map(0x07000, 0x07fff).ram().share("spriteram");
+ map(0x0a000, 0x0afff).ram().share("shared_ram");
+ map(0x0b000, 0x0b001).portr("P1_P2");
+ map(0x0b002, 0x0b003).portr("DSW");
+ map(0x0b004, 0x0b005).nopw(); // watchdog?
+ map(0x0b006, 0x0b006).w(this, FUNC(raiden_state::raidenb_control_w));
+ map(0x0c000, 0x0c7ff).w(this, FUNC(raiden_state::raiden_text_w)).share("videoram");
+ map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0x0d040, 0x0d08f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0xa0000, 0xfffff).rom();
+}
/*****************************************************************************/
-ADDRESS_MAP_START(raiden_state::raiden_sound_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden_state::raiden_sound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden_state::sei80bu_encrypted_full_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
+void raiden_state::raiden_sound_map(address_map &map)
+{
+ map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void raiden_state::raiden_sound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+}
+
+void raiden_state::sei80bu_encrypted_full_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audiocpu", 0);
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/raiden2.cpp b/src/mame/drivers/raiden2.cpp
index cf4032284d6..5cbd0b3fa31 100644
--- a/src/mame/drivers/raiden2.cpp
+++ b/src/mame/drivers/raiden2.cpp
@@ -224,10 +224,10 @@ int cnt=0, ccol = -1;
WRITE16_MEMBER(raiden2_state::m_videoram_private_w)
{
- //AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(raiden2_background_w) AM_SHARE("back_data")
- //AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- //AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- //AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_SHARE("text_data")
+ // map(0x0d000, 0x0d7ff).ram().w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data");
+ // map(0x0d800, 0x0dfff).ram().w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data");
+ // map(0x0e000, 0x0e7ff).ram().w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data");
+ // map(0x0e800, 0x0f7ff).ram().w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data");
if (offset < 0x800 / 2)
{
@@ -889,213 +889,238 @@ WRITE16_MEMBER(raiden2_state::sprite_prot_off_w)
}
/* MEMORY MAPS */
-ADDRESS_MAP_START(raiden2_state::raiden2_cop_mem)
- AM_RANGE(0x0041c, 0x0041d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_target_w) // angle target (for 0x6200 COP macro)
- AM_RANGE(0x0041e, 0x0041f) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_step_w) // angle step (for 0x6200 COP macro)
- AM_RANGE(0x00420, 0x00421) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_low_w)
- AM_RANGE(0x00422, 0x00423) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_high_w)
- AM_RANGE(0x00424, 0x00425) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_mode_w)
- AM_RANGE(0x00428, 0x00429) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v1_w)
- AM_RANGE(0x0042a, 0x0042b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v2_w)
- AM_RANGE(0x0042c, 0x0042d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_prng_maxvalue_w)
- AM_RANGE(0x00432, 0x00433) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_data_w)
- AM_RANGE(0x00434, 0x00435) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_addr_w)
- AM_RANGE(0x00436, 0x00437) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_hitbox_baseadr_w)
- AM_RANGE(0x00438, 0x00439) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_value_w)
- AM_RANGE(0x0043a, 0x0043b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_mask_w)
- AM_RANGE(0x0043c, 0x0043d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_trigger_w)
- AM_RANGE(0x00444, 0x00445) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_scale_w)
- AM_RANGE(0x00450, 0x00451) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_hi_w)
- AM_RANGE(0x00452, 0x00453) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_lo_w)
- AM_RANGE(0x00454, 0x00455) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_hi_w)
- AM_RANGE(0x00456, 0x00457) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_lo_w)
- AM_RANGE(0x00458, 0x00459) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_param_w)
- AM_RANGE(0x0045a, 0x0045b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_val_w) //palette DMA brightness val, used by X Se Dae / Zero Team
- AM_RANGE(0x0045c, 0x0045d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_mode_w) //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5)
- AM_RANGE(0x00470, 0x00471) AM_READWRITE(cop_tile_bank_2_r,cop_tile_bank_2_w) // implementaton of this varies between games, external hookup?
-
- AM_RANGE(0x00476, 0x00477) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_adr_rel_w)
- AM_RANGE(0x00478, 0x00479) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_src_w)
- AM_RANGE(0x0047a, 0x0047b) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_size_w)
- AM_RANGE(0x0047c, 0x0047d) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_dst_w)
- AM_RANGE(0x0047e, 0x0047f) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_dma_mode_r, cop_dma_mode_w)
- AM_RANGE(0x004a0, 0x004ad) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_high_r, cop_reg_high_w)
- AM_RANGE(0x004c0, 0x004cd) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_low_r, cop_reg_low_w)
- AM_RANGE(0x00500, 0x00505) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_cmd_w)
- AM_RANGE(0x00580, 0x00581) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_r)
- AM_RANGE(0x00582, 0x00587) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_val_r)
- AM_RANGE(0x00588, 0x00589) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_stat_r)
- AM_RANGE(0x00590, 0x00599) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_itoa_digits_r)
- AM_RANGE(0x005a0, 0x005a7) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_prng_r) // zeroteam reads from 5a4
- AM_RANGE(0x005b0, 0x005b1) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_status_r)
- AM_RANGE(0x005b2, 0x005b3) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_dist_r)
- AM_RANGE(0x005b4, 0x005b5) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_angle_r)
-
- AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- //AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write)
- AM_RANGE(0x006a0, 0x006a3) AM_WRITE(sprcpt_val_1_w)
- AM_RANGE(0x006a4, 0x006a7) AM_WRITE(sprcpt_data_3_w)
- AM_RANGE(0x006a8, 0x006ab) AM_WRITE(sprcpt_data_4_w)
- AM_RANGE(0x006ac, 0x006af) AM_WRITE(sprcpt_flags_1_w)
- AM_RANGE(0x006b0, 0x006b3) AM_WRITE(sprcpt_data_1_w)
- AM_RANGE(0x006b4, 0x006b7) AM_WRITE(sprcpt_data_2_w)
- AM_RANGE(0x006b8, 0x006bb) AM_WRITE(sprcpt_val_2_w)
- AM_RANGE(0x006bc, 0x006bf) AM_WRITE(sprcpt_adr_w)
- AM_RANGE(0x006c0, 0x006c1) AM_READWRITE(sprite_prot_off_r, sprite_prot_off_w)
- AM_RANGE(0x006c2, 0x006c3) AM_READWRITE(sprite_prot_src_seg_r, sprite_prot_src_seg_w)
- AM_RANGE(0x006c4, 0x006c5) AM_WRITENOP // constant value written along with 0x6c0
- AM_RANGE(0x006c6, 0x006c7) AM_WRITE(sprite_prot_dst1_w)
- AM_RANGE(0x006ca, 0x006cb) AM_WRITE(raiden2_bank_w)
- AM_RANGE(0x006cc, 0x006cd) AM_WRITE(tile_bank_01_w)
- AM_RANGE(0x006ce, 0x006cf) AM_WRITE(sprcpt_flags_2_w)
- AM_RANGE(0x006d8, 0x006d9) AM_WRITE(sprite_prot_x_w)
- AM_RANGE(0x006da, 0x006db) AM_WRITE(sprite_prot_y_w)
- AM_RANGE(0x006dc, 0x006dd) AM_READWRITE(sprite_prot_maxx_r, sprite_prot_maxx_w)
- AM_RANGE(0x006de, 0x006df) AM_WRITE(sprite_prot_src_w)
+void raiden2_state::raiden2_cop_mem(address_map &map)
+{
+ map(0x0041c, 0x0041d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_target_w)); // angle target (for 0x6200 COP macro)
+ map(0x0041e, 0x0041f).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_step_w)); // angle step (for 0x6200 COP macro)
+ map(0x00420, 0x00421).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_low_w));
+ map(0x00422, 0x00423).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_high_w));
+ map(0x00424, 0x00425).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_mode_w));
+ map(0x00428, 0x00429).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v1_w));
+ map(0x0042a, 0x0042b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v2_w));
+ map(0x0042c, 0x0042d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_maxvalue_w));
+ map(0x00432, 0x00433).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_data_w));
+ map(0x00434, 0x00435).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_addr_w));
+ map(0x00436, 0x00437).w(m_raiden2cop, FUNC(raiden2cop_device::cop_hitbox_baseadr_w));
+ map(0x00438, 0x00439).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_value_w));
+ map(0x0043a, 0x0043b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_mask_w));
+ map(0x0043c, 0x0043d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_trigger_w));
+ map(0x00444, 0x00445).w(m_raiden2cop, FUNC(raiden2cop_device::cop_scale_w));
+ map(0x00450, 0x00451).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_hi_w));
+ map(0x00452, 0x00453).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_lo_w));
+ map(0x00454, 0x00455).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_hi_w));
+ map(0x00456, 0x00457).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_lo_w));
+ map(0x00458, 0x00459).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_param_w));
+ map(0x0045a, 0x0045b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_val_w)); //palette DMA brightness val, used by X Se Dae / Zero Team
+ map(0x0045c, 0x0045d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_mode_w)); //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5)
+ map(0x00470, 0x00471).rw(this, FUNC(raiden2_state::cop_tile_bank_2_r), FUNC(raiden2_state::cop_tile_bank_2_w)); // implementaton of this varies between games, external hookup?
+
+ map(0x00476, 0x00477).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_adr_rel_w));
+ map(0x00478, 0x00479).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_src_w));
+ map(0x0047a, 0x0047b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_size_w));
+ map(0x0047c, 0x0047d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_dst_w));
+ map(0x0047e, 0x0047f).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_mode_r), FUNC(raiden2cop_device::cop_dma_mode_w));
+ map(0x004a0, 0x004ad).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_high_r), FUNC(raiden2cop_device::cop_reg_high_w));
+ map(0x004c0, 0x004cd).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_low_r), FUNC(raiden2cop_device::cop_reg_low_w));
+ map(0x00500, 0x00505).w(m_raiden2cop, FUNC(raiden2cop_device::cop_cmd_w));
+ map(0x00580, 0x00581).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_r));
+ map(0x00582, 0x00587).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_val_r));
+ map(0x00588, 0x00589).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_stat_r));
+ map(0x00590, 0x00599).r(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_digits_r));
+ map(0x005a0, 0x005a7).r(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_r)); // zeroteam reads from 5a4
+ map(0x005b0, 0x005b1).r(m_raiden2cop, FUNC(raiden2cop_device::cop_status_r));
+ map(0x005b2, 0x005b3).r(m_raiden2cop, FUNC(raiden2cop_device::cop_dist_r));
+ map(0x005b4, 0x005b5).r(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_r));
+
+ map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ //map(0x00640, 0x006bf).rw("obj", FUNC(seibu_encrypted_sprite_device::read), FUNC(seibu_encrypted_sprite_device::write));
+ map(0x006a0, 0x006a3).w(this, FUNC(raiden2_state::sprcpt_val_1_w));
+ map(0x006a4, 0x006a7).w(this, FUNC(raiden2_state::sprcpt_data_3_w));
+ map(0x006a8, 0x006ab).w(this, FUNC(raiden2_state::sprcpt_data_4_w));
+ map(0x006ac, 0x006af).w(this, FUNC(raiden2_state::sprcpt_flags_1_w));
+ map(0x006b0, 0x006b3).w(this, FUNC(raiden2_state::sprcpt_data_1_w));
+ map(0x006b4, 0x006b7).w(this, FUNC(raiden2_state::sprcpt_data_2_w));
+ map(0x006b8, 0x006bb).w(this, FUNC(raiden2_state::sprcpt_val_2_w));
+ map(0x006bc, 0x006bf).w(this, FUNC(raiden2_state::sprcpt_adr_w));
+ map(0x006c0, 0x006c1).rw(this, FUNC(raiden2_state::sprite_prot_off_r), FUNC(raiden2_state::sprite_prot_off_w));
+ map(0x006c2, 0x006c3).rw(this, FUNC(raiden2_state::sprite_prot_src_seg_r), FUNC(raiden2_state::sprite_prot_src_seg_w));
+ map(0x006c4, 0x006c5).nopw(); // constant value written along with 0x6c0
+ map(0x006c6, 0x006c7).w(this, FUNC(raiden2_state::sprite_prot_dst1_w));
+ map(0x006ca, 0x006cb).w(this, FUNC(raiden2_state::raiden2_bank_w));
+ map(0x006cc, 0x006cd).w(this, FUNC(raiden2_state::tile_bank_01_w));
+ map(0x006ce, 0x006cf).w(this, FUNC(raiden2_state::sprcpt_flags_2_w));
+ map(0x006d8, 0x006d9).w(this, FUNC(raiden2_state::sprite_prot_x_w));
+ map(0x006da, 0x006db).w(this, FUNC(raiden2_state::sprite_prot_y_w));
+ map(0x006dc, 0x006dd).rw(this, FUNC(raiden2_state::sprite_prot_maxx_r), FUNC(raiden2_state::sprite_prot_maxx_w));
+ map(0x006de, 0x006df).w(this, FUNC(raiden2_state::sprite_prot_src_w));
/* end video block */
- AM_RANGE(0x006fc, 0x006fd) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_trigger_w)
- AM_RANGE(0x006fe, 0x006ff) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_dma_trig_w) // sort-DMA trigger
+ map(0x006fc, 0x006fd).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_trigger_w));
+ map(0x006fe, 0x006ff).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_dma_trig_w)); // sort-DMA trigger
+
+ map(0x00762, 0x00763).r(this, FUNC(raiden2_state::sprite_prot_dst1_r));
+}
+
+void raiden2_state::raiden2_mem(address_map &map)
+{
+ map(0x00000, 0x003ff).ram();
+
+ raiden2_cop_mem(map);
- AM_RANGE(0x00762, 0x00763) AM_READ(sprite_prot_dst1_r)
-ADDRESS_MAP_END
+ map(0x0068e, 0x0068f).nopw(); //irq ack / sprite buffering?
-ADDRESS_MAP_START(raiden2_state::raiden2_mem)
- AM_RANGE(0x00000, 0x003ff) AM_RAM
+ map(0x00700, 0x0071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
- AM_IMPORT_FROM( raiden2_cop_mem )
+ map(0x00740, 0x00741).portr("DSW");
+ map(0x00744, 0x00745).portr("P1_P2");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP //irq ack / sprite buffering?
+ map(0x00800, 0x0bfff).ram();
- ;map(0x00700, 0x0071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
+ map(0x0c000, 0x0cfff).ram().share("sprites");
+ map(0x0d000, 0x0d7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data");
+ map(0x0d800, 0x0dfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data");
+ map(0x0e000, 0x0e7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data");
+ map(0x0e800, 0x0f7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data");
+ map(0x0f800, 0x0ffff).ram(); /* Stack area */
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
+ map(0x10000, 0x1efff).ram();
+ map(0x1f000, 0x1ffff).ram(); //.w("palette", palette_device, write).share("palette");
+
+ map(0x20000, 0x2ffff).bankr("mainbank1");
+ map(0x30000, 0x3ffff).bankr("mainbank2");
+ map(0x40000, 0xfffff).rom().region("maincpu", 0x40000);
+}
- AM_RANGE(0x00800, 0x0bfff) AM_RAM
+void raiden2_state::raidendx_mem(address_map &map)
+{
+ raiden2_mem(map);
+ map(0x00470, 0x00471).rw(this, FUNC(raiden2_state::cop_tile_bank_2_r), FUNC(raiden2_state::raidendx_cop_bank_2_w));
+ map(0x004d0, 0x004d7).ram(); //???
+ map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read_alt), FUNC(seibu_crtc_device::write_alt));
+// map(0x006ca, 0x006cb).nopw();
+}
+
+void raiden2_state::zeroteam_mem(address_map &map)
+{
+ map(0x00000, 0x003ff).ram();
+
+ raiden2_cop_mem(map);
+
+ map(0x00470, 0x00471).nopw();
+ map(0x006cc, 0x006cd).nopw();
+
+ map(0x0068e, 0x0068f).nopw(); // irq ack / sprite buffering?
+
+ map(0x00700, 0x0071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+
+ map(0x00740, 0x00741).portr("DSW");
+ map(0x00744, 0x00745).portr("P1_P2");
+ map(0x00748, 0x00749).portr("P3_P4");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+
+ map(0x00800, 0x0b7ff).ram();
+ map(0x0b800, 0x0bfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data");
+ map(0x0c000, 0x0c7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data");
+ map(0x0c800, 0x0cfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data");
+ map(0x0d000, 0x0dfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data");
+ map(0x0e000, 0x0efff).ram(); // .w("palette", palette_device, write).share("palette");
+ map(0x0f000, 0x0ffff).ram().share("sprites");
+ map(0x10000, 0x1ffff).ram();
+
+ map(0x20000, 0x2ffff).bankr("mainbank1");
+ map(0x30000, 0x3ffff).bankr("mainbank2");
+ map(0x40000, 0xfffff).rom().region("maincpu", 0x40000);
+}
+
+void raiden2_state::xsedae_mem(address_map &map)
+{
+ map(0x00000, 0x003ff).ram();
- AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x0d000, 0x0d7ff) AM_RAM // _WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0d800, 0x0dfff) AM_RAM // _WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM // _WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM // _WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
-
- AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
-
- AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("mainbank1")
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("mainbank2")
- AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x40000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden2_state::raidendx_mem)
- AM_IMPORT_FROM( raiden2_mem )
- AM_RANGE(0x00470, 0x00471) AM_READWRITE(cop_tile_bank_2_r,raidendx_cop_bank_2_w)
- AM_RANGE(0x004d0, 0x004d7) AM_RAM //???
- AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read_alt, write_alt)
-// AM_RANGE(0x006ca, 0x006cb) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden2_state::zeroteam_mem)
- AM_RANGE(0x00000, 0x003ff) AM_RAM
-
- AM_IMPORT_FROM( raiden2_cop_mem )
-
- AM_RANGE(0x00470, 0x00471) AM_WRITENOP
- AM_RANGE(0x006cc, 0x006cd) AM_WRITENOP
-
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // irq ack / sprite buffering?
-
- ;map(0x00700, 0x0071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
-
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2")
- AM_RANGE(0x00748, 0x00749) AM_READ_PORT("P3_P4")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
-
- AM_RANGE(0x00800, 0x0b7ff) AM_RAM
- AM_RANGE(0x0b800, 0x0bfff) AM_RAM // _WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM // _WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM // _WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0d000, 0x0dfff) AM_RAM // _WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0e000, 0x0efff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x10000, 0x1ffff) AM_RAM
-
- AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("mainbank1")
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("mainbank2")
- AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x40000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden2_state::xsedae_mem)
- AM_RANGE(0x00000, 0x003ff) AM_RAM
-
- AM_IMPORT_FROM( raiden2_cop_mem )
-
- AM_RANGE(0x00470, 0x00471) AM_WRITENOP
- AM_RANGE(0x006cc, 0x006cd) AM_WRITENOP
-
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP //irq ack / sprite buffering?
-
- ;map(0x00700, 0x0071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
-
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2")
- AM_RANGE(0x00748, 0x00749) AM_READ_PORT("P3_P4")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
-
- AM_RANGE(0x00800, 0x0b7ff) AM_RAM
- AM_RANGE(0x0b800, 0x0bfff) AM_RAM // _WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM // _WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM // _WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0d000, 0x0dfff) AM_RAM // _WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0e000, 0x0efff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_SHARE("sprites")
-
- AM_RANGE(0x10000, 0x1ffff) AM_RAM
-
- AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x20000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden2_state::raiden2_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4004, 0x4004) AM_NOP
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x6002, 0x6002) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(raiden2_state::zeroteam_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
+ raiden2_cop_mem(map);
+
+ map(0x00470, 0x00471).nopw();
+ map(0x006cc, 0x006cd).nopw();
+
+ map(0x0068e, 0x0068f).nopw(); //irq ack / sprite buffering?
+
+ map(0x00700, 0x0071f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+
+ map(0x00740, 0x00741).portr("DSW");
+ map(0x00744, 0x00745).portr("P1_P2");
+ map(0x00748, 0x00749).portr("P3_P4");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+
+ map(0x00800, 0x0b7ff).ram();
+ map(0x0b800, 0x0bfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data");
+ map(0x0c000, 0x0c7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data");
+ map(0x0c800, 0x0cfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data");
+ map(0x0d000, 0x0dfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data");
+ map(0x0e000, 0x0efff).ram(); // .w("palette", palette_device, write).share("palette");
+ map(0x0f000, 0x0ffff).ram().share("sprites");
+
+ map(0x10000, 0x1ffff).ram();
+
+ map(0x20000, 0xfffff).rom().region("maincpu", 0x20000);
+}
+
+void raiden2_state::raiden2_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4004, 0x4004).noprw();
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401a, 0x401a).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6000, 0x6000).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x6002, 0x6002).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
+
+void raiden2_state::zeroteam_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401a, 0x401a).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
/* INPUT PORTS */
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index 19ff393fb15..c1669039fd3 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -904,10 +904,11 @@ void rainbow_state::machine_start()
#endif
}
-ADDRESS_MAP_START(rainbow_state::rainbow8088_map)
-ADDRESS_MAP_UNMAP_HIGH
-AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("sh_ram")
-AM_RANGE(0x10000, END_OF_RAM) AM_RAM AM_SHARE("ext_ram") AM_WRITE(ext_ram_w)
+void rainbow_state::rainbow8088_map(address_map &map)
+{
+map.unmap_value_high();
+map(0x00000, 0x0ffff).ram().share("sh_ram");
+map(0x10000, END_OF_RAM).ram().share("ext_ram").w(this, FUNC(rainbow_state::ext_ram_w));
// There is a 2212 (256 x 4 bit) NVRAM from 0xed000 to 0xed0ff (*)
// shadowed at $ec000 - $ecfff and from $ed100 - $edfff.
@@ -919,30 +920,31 @@ AM_RANGE(0x10000, END_OF_RAM) AM_RAM AM_SHARE("ext_ram") AM_WRITE(ext_ram_w)
// 'diagnostic_w' handler (similar to real hardware).
// - Address bits 8-12 are ignored (-> AM_MIRROR).
-AM_RANGE(0xed000, 0xed0ff) AM_RAM AM_SHARE("vol_ram") //AM_MIRROR(0x1f00)
-AM_RANGE(0xed100, 0xed1ff) AM_RAM AM_SHARE("nvram")
+map(0xed000, 0xed0ff).ram().share("vol_ram"); //AM_MIRROR(0x1f00)
+map(0xed100, 0xed1ff).ram().share("nvram");
-AM_RANGE(0xee000, 0xeffff) AM_RAM AM_SHARE("p_ram")
-AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+map(0xee000, 0xeffff).ram().share("p_ram");
+map(0xf0000, 0xfffff).rom();
+}
-ADDRESS_MAP_START(rainbow_state::rainbow8088_io)
-ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_GLOBAL_MASK(0x1ff)
-AM_RANGE(0x00, 0x00) AM_READWRITE(i8088_latch_r, i8088_latch_w)
-AM_RANGE(0x02, 0x02) AM_READWRITE(comm_control_r, comm_control_w) // Communication status / control register (8088)
-AM_RANGE(0x04, 0x04) AM_DEVWRITE("vt100_video", rainbow_video_device, dc011_w)
+void rainbow_state::rainbow8088_io(address_map &map)
+{
+map.unmap_value_high();
+map.global_mask(0x1ff);
+map(0x00, 0x00).rw(this, FUNC(rainbow_state::i8088_latch_r), FUNC(rainbow_state::i8088_latch_w));
+map(0x02, 0x02).rw(this, FUNC(rainbow_state::comm_control_r), FUNC(rainbow_state::comm_control_w)); // Communication status / control register (8088)
+map(0x04, 0x04).w(m_crtc, FUNC(rainbow_video_device::dc011_w));
-AM_RANGE(0x06, 0x06) AM_WRITE(comm_bitrate_w)
+map(0x06, 0x06).w(this, FUNC(rainbow_state::comm_bitrate_w));
-AM_RANGE(0x08, 0x08) AM_READ(system_parameter_r)
-AM_RANGE(0x0a, 0x0a) AM_READWRITE(diagnostic_r, diagnostic_w)
-AM_RANGE(0x0c, 0x0c) AM_SELECT(0x100) AM_DEVWRITE("vt100_video", rainbow_video_device, dc012_w)
+map(0x08, 0x08).r(this, FUNC(rainbow_state::system_parameter_r));
+map(0x0a, 0x0a).rw(this, FUNC(rainbow_state::diagnostic_r), FUNC(rainbow_state::diagnostic_w));
+map(0x0c, 0x0c).select(0x100).w(m_crtc, FUNC(rainbow_video_device::dc012_w));
-AM_RANGE(0x0e, 0x0e) AM_WRITE(printer_bitrate_w)
+map(0x0e, 0x0e).w(this, FUNC(rainbow_state::printer_bitrate_w));
-AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("kbdser", i8251_device, data_r, data_w)
-AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("kbdser", i8251_device, status_r, control_w)
+map(0x10, 0x10).rw(m_kbd8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+map(0x11, 0x11).rw(m_kbd8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// ===========================================================
// There are 4 select lines for Option Select 1 to 4
@@ -955,8 +957,8 @@ AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("kbdser", i8251_device, status_r, control_w
// See boot rom @1EA6: 0x27 (<- RESET EXTENDED COMM OPTION )
// Corvus B/H harddisk controller (incompatible with EXT.COMM OPTION):
-AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("corvus", corvus_hdc_device, read, write)
-AM_RANGE(0x21, 0x21) AM_READ(corvus_status_r)
+map(0x20, 0x20).rw(m_corvus_hdc, FUNC(corvus_hdc_device::read), FUNC(corvus_hdc_device::write));
+map(0x21, 0x21).r(this, FUNC(rainbow_state::corvus_status_r));
// ===========================================================
// 0x30 -> 0x3f ***** Option Select 3
@@ -971,16 +973,16 @@ AM_RANGE(0x21, 0x21) AM_READ(corvus_status_r)
// * Color graphics option (NEC upd7220 GDC plus external hw.). See Programmer's Reference AA-AE36A-TV.
// Either 384 x 240 x 16 or 800 x 240 x 4 colors (out of 4096). 8 x 64 K video RAM.
// (Write Buffer, Pattern Register/Multiplier, ALU/PS, Color Map, readback and offset/scroll hardware):
-AM_RANGE(0x50, 0x55) AM_READWRITE(GDC_EXTRA_REGISTER_r, GDC_EXTRA_REGISTER_w)
-AM_RANGE(0x56, 0x57) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) // 56 param, 57 command
+map(0x50, 0x55).rw(this, FUNC(rainbow_state::GDC_EXTRA_REGISTER_r), FUNC(rainbow_state::GDC_EXTRA_REGISTER_w));
+map(0x56, 0x57).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); // 56 param, 57 command
// ===========================================================
// 0x60 -> 0x6f ***** EXTENDED COMM. OPTION / Option Select 2.
// ===========================================================
// 0x60 -> 0x6f ***** RD51 HD. CONTROLLER / Option Select 2.
-AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("hdc", wd2010_device, read, write) AM_MIRROR(0x100)
-AM_RANGE(0x68, 0x68) AM_READWRITE(hd_status_68_r, hd_status_68_w)
-AM_RANGE(0x69, 0x69) AM_READ(hd_status_69_r)
+map(0x60, 0x67).rw(m_hdc, FUNC(wd2010_device::read), FUNC(wd2010_device::write)).mirror(0x100);
+map(0x68, 0x68).rw(this, FUNC(rainbow_state::hd_status_68_r), FUNC(rainbow_state::hd_status_68_w));
+map(0x69, 0x69).r(this, FUNC(rainbow_state::hd_status_69_r));
// ===========================================================
// THE RD51 CONTROLLER: WD1010AL - 00 (WDC '83)
// + 2 K x 8 SRAM (SY2128-4 or Japan 8328) 21-17872-01
@@ -1016,29 +1018,31 @@ AM_RANGE(0x69, 0x69) AM_READ(hd_status_69_r)
// 0x70 -> 0x7f ***** Option Select 4
// ===========================================================
// 0x10c -> (MHFU disable register handled by 0x0c + AM_SELECT)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rainbow_state::rainbowz80_mem)
-ADDRESS_MAP_UNMAP_HIGH
-AM_RANGE(0x0000, 0xffff) AM_READWRITE(share_z80_r, share_z80_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rainbow_state::rainbowz80_io)
-ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_GLOBAL_MASK(0xff)
-AM_RANGE(0x00, 0x00) AM_READWRITE(z80_latch_r, z80_latch_w)
-AM_RANGE(0x20, 0x20) AM_READWRITE(z80_generalstat_r, z80_diskdiag_read_w) // read to port 0x20 used by MS-DOS 2.x diskette loader.
-AM_RANGE(0x21, 0x21) AM_READWRITE(z80_generalstat_r, z80_diskdiag_write_w)
-AM_RANGE(0x40, 0x40) AM_READWRITE(z80_diskstatus_r, z80_diskcontrol_w)
-AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(FD1793_TAG, fd1793_device, read, write)
+}
+
+void rainbow_state::rainbowz80_mem(address_map &map)
+{
+map.unmap_value_high();
+map(0x0000, 0xffff).rw(this, FUNC(rainbow_state::share_z80_r), FUNC(rainbow_state::share_z80_w));
+}
+
+void rainbow_state::rainbowz80_io(address_map &map)
+{
+map.unmap_value_high();
+map.global_mask(0xff);
+map(0x00, 0x00).rw(this, FUNC(rainbow_state::z80_latch_r), FUNC(rainbow_state::z80_latch_w));
+map(0x20, 0x20).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_read_w)); // read to port 0x20 used by MS-DOS 2.x diskette loader.
+map(0x21, 0x21).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_write_w));
+map(0x40, 0x40).rw(this, FUNC(rainbow_state::z80_diskstatus_r), FUNC(rainbow_state::z80_diskcontrol_w));
+map(0x60, 0x63).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
// Z80 I/O shadow area > $80
-AM_RANGE(0x80, 0x80) AM_READWRITE(z80_latch_r, z80_latch_w)
-AM_RANGE(0xA0, 0xA0) AM_READWRITE(z80_generalstat_r, z80_diskdiag_read_w) // read to port 0x20 used by MS-DOS 2.x diskette loader.
-AM_RANGE(0xA1, 0xA1) AM_READWRITE(z80_generalstat_r, z80_diskdiag_write_w)
-AM_RANGE(0xC0, 0xC0) AM_READWRITE(z80_diskstatus_r, z80_diskcontrol_w)
-AM_RANGE(0xE0, 0xE3) AM_DEVREADWRITE(FD1793_TAG, fd1793_device, read, write)
-ADDRESS_MAP_END
+map(0x80, 0x80).rw(this, FUNC(rainbow_state::z80_latch_r), FUNC(rainbow_state::z80_latch_w));
+map(0xA0, 0xA0).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_read_w)); // read to port 0x20 used by MS-DOS 2.x diskette loader.
+map(0xA1, 0xA1).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_write_w));
+map(0xC0, 0xC0).rw(this, FUNC(rainbow_state::z80_diskstatus_r), FUNC(rainbow_state::z80_diskcontrol_w));
+map(0xE0, 0xE3).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+}
/* Input ports */
@@ -3179,9 +3183,10 @@ GFXDECODE_ENTRY("chargen", 0x0000, rainbow_charlayout, 0, 1)
GFXDECODE_END
// Allocate 512 K (4 x 64 K x 16 bit) of memory (GDC-NEW):
-ADDRESS_MAP_START(rainbow_state::upd7220_map)
- AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram")
-ADDRESS_MAP_END
+void rainbow_state::upd7220_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rw(this, FUNC(rainbow_state::vram_r), FUNC(rainbow_state::vram_w)).share("vram");
+}
MACHINE_CONFIG_START(rainbow_state::rainbow)
MCFG_DEFAULT_LAYOUT(layout_rainbow)
diff --git a/src/mame/drivers/rallyx.cpp b/src/mame/drivers/rallyx.cpp
index b2f4c929312..b430f91495f 100644
--- a/src/mame/drivers/rallyx.cpp
+++ b/src/mame/drivers/rallyx.cpp
@@ -283,43 +283,46 @@ WRITE_LINE_MEMBER(rallyx_state::coin_counter_2_w)
*
*************************************/
-ADDRESS_MAP_START(rallyx_state::rallyx_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(rallyx_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2")
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW")
- AM_RANGE(0xa000, 0xa00f) AM_WRITEONLY AM_SHARE("radarattr")
- AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xa100, 0xa11f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
- AM_RANGE(0xa130, 0xa130) AM_WRITE(rallyx_scrollx_w)
- AM_RANGE(0xa140, 0xa140) AM_WRITE(rallyx_scrolly_w)
- AM_RANGE(0xa170, 0xa170) AM_WRITENOP /* ? */
- AM_RANGE(0xa180, 0xa187) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rallyx_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0, 0) AM_WRITE(rallyx_interrupt_vector_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(rallyx_state::jungler_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(rallyx_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2")
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW1")
- AM_RANGE(0xa180, 0xa180) AM_READ_PORT("DSW2")
- AM_RANGE(0xa000, 0xa00f) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("radarattr") // jungler writes to a03x
- AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xa100, 0xa100) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w)
- AM_RANGE(0xa130, 0xa130) AM_WRITE(rallyx_scrollx_w) /* only jungler and tactcian */
- AM_RANGE(0xa140, 0xa140) AM_WRITE(rallyx_scrolly_w) /* only jungler and tactcian */
- AM_RANGE(0xa180, 0xa187) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void rallyx_state::rallyx_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(rallyx_state::rallyx_videoram_w)).share("videoram");
+ map(0x9800, 0x9fff).ram();
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa080, 0xa080).portr("P2");
+ map(0xa100, 0xa100).portr("DSW");
+ map(0xa000, 0xa00f).writeonly().share("radarattr");
+ map(0xa080, 0xa080).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xa100, 0xa11f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
+ map(0xa130, 0xa130).w(this, FUNC(rallyx_state::rallyx_scrollx_w));
+ map(0xa140, 0xa140).w(this, FUNC(rallyx_state::rallyx_scrolly_w));
+ map(0xa170, 0xa170).nopw(); /* ? */
+ map(0xa180, 0xa187).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void rallyx_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0, 0).w(this, FUNC(rallyx_state::rallyx_interrupt_vector_w));
+}
+
+
+void rallyx_state::jungler_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(rallyx_state::rallyx_videoram_w)).share("videoram");
+ map(0x9800, 0x9fff).ram();
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa080, 0xa080).portr("P2");
+ map(0xa100, 0xa100).portr("DSW1");
+ map(0xa180, 0xa180).portr("DSW2");
+ map(0xa000, 0xa00f).mirror(0x00f0).writeonly().share("radarattr"); // jungler writes to a03x
+ map(0xa080, 0xa080).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xa100, 0xa100).w(m_timeplt_audio, FUNC(timeplt_audio_device::sound_data_w));
+ map(0xa130, 0xa130).w(this, FUNC(rallyx_state::rallyx_scrollx_w)); /* only jungler and tactcian */
+ map(0xa140, 0xa140).w(this, FUNC(rallyx_state::rallyx_scrolly_w)); /* only jungler and tactcian */
+ map(0xa180, 0xa187).w("mainlatch", FUNC(ls259_device::write_d0));
+}
/*************************************
diff --git a/src/mame/drivers/rambo.cpp b/src/mame/drivers/rambo.cpp
index efb46d3b872..406eeac48d0 100644
--- a/src/mame/drivers/rambo.cpp
+++ b/src/mame/drivers/rambo.cpp
@@ -107,17 +107,20 @@ WRITE8_MEMBER(rambo_state::port_w)
* Address maps *
\****************************************************/
-ADDRESS_MAP_START(rambo_state::rambo_prg_map)
- AM_RANGE(0x0000, 0x1FFFF) AM_ROM
-ADDRESS_MAP_END
+void rambo_state::rambo_prg_map(address_map &map)
+{
+ map(0x0000, 0x1FFFF).rom();
+}
-ADDRESS_MAP_START(rambo_state::rambo_data_map)
- AM_RANGE(0x0200, 0x21FF) AM_RAM /* ATMEGA2560 Internal SRAM */
-ADDRESS_MAP_END
+void rambo_state::rambo_data_map(address_map &map)
+{
+ map(0x0200, 0x21FF).ram(); /* ATMEGA2560 Internal SRAM */
+}
-ADDRESS_MAP_START(rambo_state::rambo_io_map)
- AM_RANGE(AVR8_IO_PORTA, AVR8_IO_PORTL) AM_READWRITE( port_r, port_w )
-ADDRESS_MAP_END
+void rambo_state::rambo_io_map(address_map &map)
+{
+ map(AVR8_IO_PORTA, AVR8_IO_PORTL).rw(this, FUNC(rambo_state::port_r), FUNC(rambo_state::port_w));
+}
/****************************************************\
* Machine definition *
diff --git a/src/mame/drivers/rampart.cpp b/src/mame/drivers/rampart.cpp
index 9ffb6401fd6..bce638b62d0 100644
--- a/src/mame/drivers/rampart.cpp
+++ b/src/mame/drivers/rampart.cpp
@@ -127,31 +127,32 @@ WRITE16_MEMBER(rampart_state::latch_w)
*************************************/
/* full memory map deduced from schematics and GALs */
-ADDRESS_MAP_START(rampart_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fffff)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x140000, 0x147fff) AM_MIRROR(0x438000) AM_ROM /* slapstic goes here */
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("bitmap")
- AM_RANGE(0x220000, 0x3bffff) AM_WRITENOP /* the code blasts right through this when initializing */
- AM_RANGE(0x3c0000, 0x3c07ff) AM_MIRROR(0x019800) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette")
- AM_RANGE(0x3e0000, 0x3e07ff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x3e0800, 0x3e3f3f) AM_MIRROR(0x010000) AM_RAM
- AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x3e3f80, 0x3effff) AM_MIRROR(0x010000) AM_RAM
- AM_RANGE(0x460000, 0x460001) AM_MIRROR(0x019ffe) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
- AM_RANGE(0x480000, 0x480003) AM_MIRROR(0x019ffc) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00)
- AM_RANGE(0x500000, 0x500fff) AM_MIRROR(0x019000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x5a6000, 0x5a6001) AM_MIRROR(0x019ffe) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffe) AM_WRITE(latch_w)
- AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffc) AM_READ_PORT("IN0")
- AM_RANGE(0x640002, 0x640003) AM_MIRROR(0x019ffc) AM_READ_PORT("IN1")
- AM_RANGE(0x6c0000, 0x6c0001) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK0")
- AM_RANGE(0x6c0002, 0x6c0003) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK1")
- AM_RANGE(0x6c0004, 0x6c0005) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK2")
- AM_RANGE(0x6c0006, 0x6c0007) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK3")
- AM_RANGE(0x726000, 0x726001) AM_MIRROR(0x019ffe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x7e6000, 0x7e6001) AM_MIRROR(0x019ffe) AM_WRITE(scanline_int_ack_w)
-ADDRESS_MAP_END
+void rampart_state::main_map(address_map &map)
+{
+ map.global_mask(0x7fffff);
+ map(0x000000, 0x0fffff).rom();
+ map(0x140000, 0x147fff).mirror(0x438000).rom(); /* slapstic goes here */
+ map(0x200000, 0x21ffff).ram().share("bitmap");
+ map(0x220000, 0x3bffff).nopw(); /* the code blasts right through this when initializing */
+ map(0x3c0000, 0x3c07ff).mirror(0x019800).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette");
+ map(0x3e0000, 0x3e07ff).mirror(0x010000).ram().share("mob");
+ map(0x3e0800, 0x3e3f3f).mirror(0x010000).ram();
+ map(0x3e3f40, 0x3e3f7f).mirror(0x010000).ram().share("mob:slip");
+ map(0x3e3f80, 0x3effff).mirror(0x010000).ram();
+ map(0x460000, 0x460000).mirror(0x019ffe).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x480000, 0x480003).mirror(0x019ffc).w(m_ym2413, FUNC(ym2413_device::write)).umask16(0xff00);
+ map(0x500000, 0x500fff).mirror(0x019000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x5a6000, 0x5a6001).mirror(0x019ffe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x640000, 0x640001).mirror(0x019ffe).w(this, FUNC(rampart_state::latch_w));
+ map(0x640000, 0x640001).mirror(0x019ffc).portr("IN0");
+ map(0x640002, 0x640003).mirror(0x019ffc).portr("IN1");
+ map(0x6c0000, 0x6c0001).mirror(0x019ff8).portr("TRACK0");
+ map(0x6c0002, 0x6c0003).mirror(0x019ff8).portr("TRACK1");
+ map(0x6c0004, 0x6c0005).mirror(0x019ff8).portr("TRACK2");
+ map(0x6c0006, 0x6c0007).mirror(0x019ff8).portr("TRACK3");
+ map(0x726000, 0x726001).mirror(0x019ffe).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x7e6000, 0x7e6001).mirror(0x019ffe).w(this, FUNC(rampart_state::scanline_int_ack_w));
+}
diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp
index 1eb9c45d895..a7d6a45aa1f 100644
--- a/src/mame/drivers/rastan.cpp
+++ b/src/mame/drivers/rastan.cpp
@@ -208,40 +208,43 @@ WRITE8_MEMBER(rastan_state::rastan_msm5205_stop_w)
-ADDRESS_MAP_START(rastan_state::rastan_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x350008, 0x350009) AM_WRITENOP /* 0 only (often) ? */
- AM_RANGE(0x380000, 0x380001) AM_WRITE(rastan_spritectrl_w) /* sprite palette bank, coin counters & lockout */
- AM_RANGE(0x390000, 0x390001) AM_READ_PORT("P1")
- AM_RANGE(0x390002, 0x390003) AM_READ_PORT("P2")
- AM_RANGE(0x390004, 0x390005) AM_READ_PORT("SPECIAL")
- AM_RANGE(0x390006, 0x390007) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x390008, 0x390009) AM_READ_PORT("DSWA")
- AM_RANGE(0x39000a, 0x39000b) AM_READ_PORT("DSWB")
- AM_RANGE(0x3c0000, 0x3c0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w)
- AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(rastan_state::rastan_s_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(rastan_msm5205_address_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(rastan_msm5205_start_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(rastan_msm5205_stop_w)
-ADDRESS_MAP_END
+void rastan_state::rastan_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x10c000, 0x10ffff).ram();
+ map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x350008, 0x350009).nopw(); /* 0 only (often) ? */
+ map(0x380000, 0x380001).w(this, FUNC(rastan_state::rastan_spritectrl_w)); /* sprite palette bank, coin counters & lockout */
+ map(0x390000, 0x390001).portr("P1");
+ map(0x390002, 0x390003).portr("P2");
+ map(0x390004, 0x390005).portr("SPECIAL");
+ map(0x390006, 0x390007).portr("SYSTEM");
+ map(0x390008, 0x390009).portr("DSWA");
+ map(0x39000a, 0x39000b).portr("DSWB");
+ map(0x3c0000, 0x3c0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x3e0000, 0x3e0001).nopr();
+ map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
+}
+
+
+void rastan_state::rastan_s_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb000).w(this, FUNC(rastan_state::rastan_msm5205_address_w));
+ map(0xc000, 0xc000).w(this, FUNC(rastan_state::rastan_msm5205_start_w));
+ map(0xd000, 0xd000).w(this, FUNC(rastan_state::rastan_msm5205_stop_w));
+}
diff --git a/src/mame/drivers/rastersp.cpp b/src/mame/drivers/rastersp.cpp
index 1b2110ad582..32362424b42 100644
--- a/src/mame/drivers/rastersp.cpp
+++ b/src/mame/drivers/rastersp.cpp
@@ -673,40 +673,43 @@ READ32_MEMBER( rastersp_state::dsp_speedup_r )
*
*************************************/
-ADDRESS_MAP_START(rastersp_state::cpu_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("dram")
- AM_RANGE(0x01000000, 0x010bffff) AM_NOP // External ROM
- AM_RANGE(0x010c0000, 0x010cffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0x02200000, 0x022fffff) AM_READWRITE8(nvram_r, nvram_w, 0x000000ff)
- AM_RANGE(0x02200800, 0x02200803) AM_WRITENOP // ?
- AM_RANGE(0x02208000, 0x02208fff) AM_DEVREADWRITE("scsibus:7:ncr53c700", ncr53c7xx_device, read, write)
- AM_RANGE(0x0220e000, 0x0220e003) AM_WRITE(dpylist_w)
- AM_RANGE(0xfff00000, 0xffffffff) AM_RAMBANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rastersp_state::io_map)
- AM_RANGE(0x0020, 0x0023) AM_WRITE(cyrix_cache_w)
- AM_RANGE(0x1000, 0x1003) AM_READ_PORT("P1") AM_WRITE(port1_w)
- AM_RANGE(0x1004, 0x1007) AM_READ_PORT("P2") AM_WRITE(port2_w)
- AM_RANGE(0x1008, 0x100b) AM_READ_PORT("COMMON") AM_WRITE(port3_w)
- AM_RANGE(0x100c, 0x100f) AM_READ_PORT("DSW2")
- AM_RANGE(0x1010, 0x1013) AM_READ_PORT("DSW1")
- AM_RANGE(0x1014, 0x1017) AM_READ_PORT("EXTRA")
- AM_RANGE(0x4000, 0x4007) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0x000000ff)
- AM_RANGE(0x6008, 0x600b) AM_READNOP AM_WRITENOP // RS232
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(rastersp_state::dsp_map)
- AM_RANGE(0x000000, 0x0fffff) AM_RAMBANK("bank1")
- AM_RANGE(0x400000, 0x40ffff) AM_ROM AM_REGION("dspboot", 0)
- AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w)
- AM_RANGE(0x880402, 0x880402) AM_WRITE(dsp_unk_w)
- AM_RANGE(0x883c00, 0x883c00) AM_WRITE(dsp_486_int_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_RAMBANK("bank2")
- AM_RANGE(0xc80000, 0xc80000) AM_WRITE(dsp_ctrl_w)
- AM_RANGE(0xfc0000, 0xffffff) AM_RAMBANK("bank3")
-ADDRESS_MAP_END
+void rastersp_state::cpu_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("dram");
+ map(0x01000000, 0x010bffff).noprw(); // External ROM
+ map(0x010c0000, 0x010cffff).rom().region("bios", 0);
+ map(0x02200000, 0x022fffff).rw(this, FUNC(rastersp_state::nvram_r), FUNC(rastersp_state::nvram_w)).umask32(0x000000ff);
+ map(0x02200800, 0x02200803).nopw(); // ?
+ map(0x02208000, 0x02208fff).rw("scsibus:7:ncr53c700", FUNC(ncr53c7xx_device::read), FUNC(ncr53c7xx_device::write));
+ map(0x0220e000, 0x0220e003).w(this, FUNC(rastersp_state::dpylist_w));
+ map(0xfff00000, 0xffffffff).bankrw("bank3");
+}
+
+void rastersp_state::io_map(address_map &map)
+{
+ map(0x0020, 0x0023).w(this, FUNC(rastersp_state::cyrix_cache_w));
+ map(0x1000, 0x1003).portr("P1").w(this, FUNC(rastersp_state::port1_w));
+ map(0x1004, 0x1007).portr("P2").w(this, FUNC(rastersp_state::port2_w));
+ map(0x1008, 0x100b).portr("COMMON").w(this, FUNC(rastersp_state::port3_w));
+ map(0x100c, 0x100f).portr("DSW2");
+ map(0x1010, 0x1013).portr("DSW1");
+ map(0x1014, 0x1017).portr("EXTRA");
+ map(0x4000, 0x4007).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)).umask32(0x000000ff);
+ map(0x6008, 0x600b).nopr().nopw(); // RS232
+}
+
+
+void rastersp_state::dsp_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).bankrw("bank1");
+ map(0x400000, 0x40ffff).rom().region("dspboot", 0);
+ map(0x808000, 0x80807f).rw(this, FUNC(rastersp_state::tms32031_control_r), FUNC(rastersp_state::tms32031_control_w));
+ map(0x880402, 0x880402).w(this, FUNC(rastersp_state::dsp_unk_w));
+ map(0x883c00, 0x883c00).w(this, FUNC(rastersp_state::dsp_486_int_w));
+ map(0xc00000, 0xc03fff).bankrw("bank2");
+ map(0xc80000, 0xc80000).w(this, FUNC(rastersp_state::dsp_ctrl_w));
+ map(0xfc0000, 0xffffff).bankrw("bank3");
+}
diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp
index ced2772ae4a..e2fac7c49ad 100644
--- a/src/mame/drivers/ravens.cpp
+++ b/src/mame/drivers/ravens.cpp
@@ -206,26 +206,29 @@ MACHINE_RESET_MEMBER( ravens_state, ravens2 )
}
-ADDRESS_MAP_START(ravens_state::ravens_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff) AM_ROM
- AM_RANGE( 0x0800, 0x1fff) AM_RAM
- AM_RANGE( 0x2000, 0x7FFF) AM_RAM // for quickload, optional
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ravens_state::ravens_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x09, 0x09) AM_WRITE(leds_w) // LED output port
- AM_RANGE(0x10, 0x15) AM_WRITE(display_w) // 6-led display
- AM_RANGE(0x17, 0x17) AM_READ(port17_r) // pushbuttons
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ravens_state::ravens2_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x07, 0x07) AM_READ(port07_r)
- AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w)
- AM_RANGE(0x1c, 0x1c) AM_WRITE(port1c_w)
-ADDRESS_MAP_END
+void ravens_state::ravens_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x1fff).ram();
+ map(0x2000, 0x7FFF).ram(); // for quickload, optional
+}
+
+void ravens_state::ravens_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x09, 0x09).w(this, FUNC(ravens_state::leds_w)); // LED output port
+ map(0x10, 0x15).w(this, FUNC(ravens_state::display_w)); // 6-led display
+ map(0x17, 0x17).r(this, FUNC(ravens_state::port17_r)); // pushbuttons
+}
+
+void ravens_state::ravens2_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x07, 0x07).r(this, FUNC(ravens_state::port07_r));
+ map(0x1b, 0x1b).w(this, FUNC(ravens_state::port1b_w));
+ map(0x1c, 0x1c).w(this, FUNC(ravens_state::port1c_w));
+}
/* Input ports */
static INPUT_PORTS_START( ravens )
diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp
index d4e6bc4345e..2fef560b835 100644
--- a/src/mame/drivers/rbisland.cpp
+++ b/src/mame/drivers/rbisland.cpp
@@ -346,48 +346,51 @@ WRITE16_MEMBER(rbisland_state::jumping_sound_w)
MEMORY STRUCTURES
***************************************************************************/
-ADDRESS_MAP_START(rbisland_state::rbisland_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */
- AM_RANGE(0x390000, 0x390003) AM_READ_PORT("DSWA")
- AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(rbisland_spritectrl_w)
- AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("DSWB")
- AM_RANGE(0x3c0000, 0x3c0003) AM_WRITENOP /* written very often, watchdog? */
- AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x800000, 0x8007ff) AM_READWRITE(rbisland_cchip_ram_r,rbisland_cchip_ram_w)
- AM_RANGE(0x800802, 0x800803) AM_READWRITE(rbisland_cchip_ctrl_r,rbisland_cchip_ctrl_w)
- AM_RANGE(0x800c00, 0x800c01) AM_WRITE(rbisland_cchip_bank_w)
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w)
- AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram + other stuff */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rbisland_state::jumping_map)
- AM_RANGE(0x000000, 0x09ffff) AM_ROM
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("DSWA")
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSWB")
- AM_RANGE(0x401000, 0x401001) AM_READ_PORT("401001")
- AM_RANGE(0x401002, 0x401003) AM_READ_PORT("401003")
- AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(jumping_spritectrl_w)
- AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog? */
- AM_RANGE(0x400006, 0x400007) AM_WRITE(jumping_sound_w)
- AM_RANGE(0x420000, 0x420001) AM_READNOP /* read, but result not used */
- AM_RANGE(0x430000, 0x430003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
- AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x800000, 0x80ffff) AM_WRITENOP /* original c-chip location (not used) */
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w)
- AM_RANGE(0xc20000, 0xc20003) AM_WRITENOP /* seems it is a leftover from rbisland: scroll y written here too */
- AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xd00000, 0xd01fff) AM_RAM /* original spriteram location, needed for Attract Mode */
-ADDRESS_MAP_END
+void rbisland_state::rbisland_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x10c000, 0x10ffff).ram(); /* main RAM */
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x201000, 0x203fff).ram(); /* r/w in initial checks */
+ map(0x390000, 0x390003).portr("DSWA");
+ map(0x3a0000, 0x3a0001).w(this, FUNC(rbisland_state::rbisland_spritectrl_w));
+ map(0x3b0000, 0x3b0003).portr("DSWB");
+ map(0x3c0000, 0x3c0003).nopw(); /* written very often, watchdog? */
+ map(0x3e0000, 0x3e0001).nopr();
+ map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x800000, 0x8007ff).rw(this, FUNC(rbisland_state::rbisland_cchip_ram_r), FUNC(rbisland_state::rbisland_cchip_ram_w));
+ map(0x800802, 0x800803).rw(this, FUNC(rbisland_state::rbisland_cchip_ctrl_r), FUNC(rbisland_state::rbisland_cchip_ctrl_w));
+ map(0x800c00, 0x800c01).w(this, FUNC(rbisland_state::rbisland_cchip_bank_w));
+ map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram + other stuff */
+}
+
+void rbisland_state::jumping_map(address_map &map)
+{
+ map(0x000000, 0x09ffff).rom();
+ map(0x10c000, 0x10ffff).ram(); /* main RAM */
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x201000, 0x203fff).ram(); /* r/w in initial checks */
+ map(0x400000, 0x400001).portr("DSWA");
+ map(0x400002, 0x400003).portr("DSWB");
+ map(0x401000, 0x401001).portr("401001");
+ map(0x401002, 0x401003).portr("401003");
+ map(0x3a0000, 0x3a0001).w(this, FUNC(rbisland_state::jumping_spritectrl_w));
+ map(0x3c0000, 0x3c0001).nopw(); /* watchdog? */
+ map(0x400006, 0x400007).w(this, FUNC(rbisland_state::jumping_sound_w));
+ map(0x420000, 0x420001).nopr(); /* read, but result not used */
+ map(0x430000, 0x430003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w));
+ map(0x440000, 0x4407ff).ram().share("spriteram");
+ map(0x800000, 0x80ffff).nopw(); /* original c-chip location (not used) */
+ map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xc20000, 0xc20003).nopw(); /* seems it is a leftover from rbisland: scroll y written here too */
+ map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xd00000, 0xd01fff).ram(); /* original spriteram location, needed for Attract Mode */
+}
/**********************************************************
@@ -408,25 +411,27 @@ READ8_MEMBER(rbisland_state::jumping_latch_r)
}
-ADDRESS_MAP_START(rbisland_state::rbisland_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x9002, 0x9100) AM_READNOP
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rbisland_state::jumping_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xb400, 0xb401) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xb800, 0xb800) AM_READ(jumping_latch_r)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP /* looks like a bankswitch, but sound works with or without it */
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void rbisland_state::rbisland_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9002, 0x9100).nopr();
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+}
+
+void rbisland_state::jumping_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0xb000, 0xb001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb400, 0xb401).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb800, 0xb800).r(this, FUNC(rbisland_state::jumping_latch_r));
+ map(0xbc00, 0xbc00).nopw(); /* looks like a bankswitch, but sound works with or without it */
+ map(0xc000, 0xffff).rom();
+}
/***********************************************************
diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp
index a2d7b9fbfa9..c28d8b78fcd 100644
--- a/src/mame/drivers/rbmk.cpp
+++ b/src/mame/drivers/rbmk.cpp
@@ -166,42 +166,45 @@ WRITE16_MEMBER(rbmk_state::eeprom_w)
}
-ADDRESS_MAP_START(rbmk_state::rbmk_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_WRITENOP
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM
- AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("vidram2")
- AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access
- AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("vidram")
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(eeprom_w)
- AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(dip_mux_r, dip_mux_w)
- AM_RANGE(0xc08000, 0xc08001) AM_READ_PORT("IN1") AM_WRITE(tilebank_w)
- AM_RANGE(0xc10000, 0xc10001) AM_READ_PORT("IN2")
- AM_RANGE(0xc18080, 0xc18081) AM_READ(unk_r)
- AM_RANGE(0xc20000, 0xc20001) AM_READ_PORT("IN3")
- AM_RANGE(0xc28000, 0xc28001) AM_WRITE(unk_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rbmk_state::rbspm_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_WRITE(eeprom_w) // wrong
- AM_RANGE(0x300000, 0x300001) AM_READWRITE(dip_mux_r, dip_mux_w)
- AM_RANGE(0x308000, 0x308001) AM_READ_PORT("IN1") AM_WRITE(tilebank_w) // ok
- AM_RANGE(0x310000, 0x310001) AM_READ_PORT("IN2")
- AM_RANGE(0x318080, 0x318081) AM_READ(unk_r)
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN3")
- AM_RANGE(0x328000, 0x328001) AM_WRITE(unk_w)
- AM_RANGE(0x500000, 0x50ffff) AM_RAM
- AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // if removed fails gfx test?
- AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("vidram2") // if removed fails palette test?
- AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access, u25 and u26 according to test mode
- AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("vidram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rbmk_state::mcu_mem)
+void rbmk_state::rbmk_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().nopw();
+ map(0x100000, 0x10ffff).ram();
+ map(0x500000, 0x50ffff).ram();
+ map(0x940000, 0x940fff).ram().share("vidram2");
+ map(0x980300, 0x983fff).ram(); // 0x2048 words ???, byte access
+ map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x9c0000, 0x9c0fff).ram().share("vidram");
+ map(0xb00000, 0xb00001).w(this, FUNC(rbmk_state::eeprom_w));
+ map(0xc00000, 0xc00001).rw(this, FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w));
+ map(0xc08000, 0xc08001).portr("IN1").w(this, FUNC(rbmk_state::tilebank_w));
+ map(0xc10000, 0xc10001).portr("IN2");
+ map(0xc18080, 0xc18081).r(this, FUNC(rbmk_state::unk_r));
+ map(0xc20000, 0xc20001).portr("IN3");
+ map(0xc28000, 0xc28001).w(this, FUNC(rbmk_state::unk_w));
+}
+
+void rbmk_state::rbspm_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200001).w(this, FUNC(rbmk_state::eeprom_w)); // wrong
+ map(0x300000, 0x300001).rw(this, FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w));
+ map(0x308000, 0x308001).portr("IN1").w(this, FUNC(rbmk_state::tilebank_w)); // ok
+ map(0x310000, 0x310001).portr("IN2");
+ map(0x318080, 0x318081).r(this, FUNC(rbmk_state::unk_r));
+ map(0x320000, 0x320001).portr("IN3");
+ map(0x328000, 0x328001).w(this, FUNC(rbmk_state::unk_w));
+ map(0x500000, 0x50ffff).ram();
+ map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // if removed fails gfx test?
+ map(0x940000, 0x940fff).ram().share("vidram2"); // if removed fails palette test?
+ map(0x980300, 0x983fff).ram(); // 0x2048 words ???, byte access, u25 and u26 according to test mode
+ map(0x9c0000, 0x9c0fff).ram().share("vidram");
+}
+
+void rbmk_state::mcu_mem(address_map &map)
+{
// AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+}
READ8_MEMBER(rbmk_state::mcu_io_r)
{
@@ -238,9 +241,10 @@ WRITE8_MEMBER(rbmk_state::mcu_io_mux_w)
m_mux_data = ~data;
}
-ADDRESS_MAP_START(rbmk_state::mcu_io)
- AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE(mcu_io_r, mcu_io_w )
-ADDRESS_MAP_END
+void rbmk_state::mcu_io(address_map &map)
+{
+ map(0x0ff00, 0x0ffff).rw(this, FUNC(rbmk_state::mcu_io_r), FUNC(rbmk_state::mcu_io_w));
+}
static INPUT_PORTS_START( rbmk )
PORT_START("IN1") /* 16bit */
diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp
index dc16ac159f1..d2ea326a5c3 100644
--- a/src/mame/drivers/rc702.cpp
+++ b/src/mame/drivers/rc702.cpp
@@ -97,24 +97,26 @@ private:
};
-ADDRESS_MAP_START(rc702_state::rc702_mem)
- AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rc702_state::rc702_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("crtc", i8275_device, read, write)
- AM_RANGE(0x04, 0x05) AM_DEVICE("fdc", upd765a_device, map)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("sio1", z80dart_device, cd_ba_r, cd_ba_w) // boot sequence doesn't program this
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio", z80pio_device, read, write)
- AM_RANGE(0x14, 0x17) AM_READ_PORT("DSW") AM_WRITE(port14_w) // motors
- AM_RANGE(0x18, 0x1b) AM_WRITE(port18_w) // memory banking
- AM_RANGE(0x1c, 0x1f) AM_WRITE(port1c_w) // sound
- AM_RANGE(0xf0, 0xff) AM_DEVREADWRITE("dma", am9517a_device, read, write)
-ADDRESS_MAP_END
+void rc702_state::rc702_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0");
+ map(0x0800, 0xffff).ram();
+}
+
+void rc702_state::rc702_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x01).rw("crtc", FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0x04, 0x05).m(m_fdc, FUNC(upd765a_device::map));
+ map(0x08, 0x0b).rw("sio1", FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); // boot sequence doesn't program this
+ map(0x0c, 0x0f).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x10, 0x13).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x14, 0x17).portr("DSW").w(this, FUNC(rc702_state::port14_w)); // motors
+ map(0x18, 0x1b).w(this, FUNC(rc702_state::port18_w)); // memory banking
+ map(0x1c, 0x1f).w(this, FUNC(rc702_state::port1c_w)); // sound
+ map(0xf0, 0xff).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( rc702 )
diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp
index 0c3768700e2..0fa535c20ea 100644
--- a/src/mame/drivers/rc759.cpp
+++ b/src/mame/drivers/rc759.cpp
@@ -467,41 +467,43 @@ void rc759_state::machine_reset()
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(rc759_state::rc759_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
- AM_RANGE(0xd0000, 0xd7fff) AM_MIRROR(0x08000) AM_RAM AM_SHARE("vram")
- AM_RANGE(0xe8000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rc759_state::rc759_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000, 0x003) AM_MIRROR(0x0c) AM_DEVREADWRITE8("pic", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x020, 0x021) AM_READ8(keyboard_r, 0x00ff)
- AM_RANGE(0x056, 0x057) AM_NOP // in reality, access to sound and rtc is a bit more involved
- AM_RANGE(0x05a, 0x05b) AM_DEVWRITE8("snd", sn76489a_device, write, 0x00ff)
- AM_RANGE(0x05c, 0x05d) AM_READWRITE8(rtc_r, rtc_w, 0x00ff)
+void rc759_state::rc759_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+ map(0xd0000, 0xd7fff).mirror(0x08000).ram().share("vram");
+ map(0xe8000, 0xeffff).mirror(0x10000).rom().region("bios", 0);
+}
+
+void rc759_state::rc759_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000, 0x003).mirror(0x0c).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x020, 0x020).r(this, 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(0x05c, 0x05c).rw(this, FUNC(rc759_state::rtc_r), FUNC(rc759_state::rtc_w));
// AM_RANGE(0x060, 0x06f) AM_WRITE8(crt_control_w, 0x00ff)
- AM_RANGE(0x070, 0x077) AM_MIRROR(0x08) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x080, 0x0ff) AM_READWRITE8(nvram_r, nvram_w, 0x00ff)
+ map(0x070, 0x077).mirror(0x08).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x080, 0x0ff).rw(this, FUNC(rc759_state::nvram_r), FUNC(rc759_state::nvram_w)).umask16(0x00ff);
// AM_RANGE(0x100, 0x101) net
- AM_RANGE(0x180, 0x1bf) AM_READWRITE8(palette_r, palette_w, 0x00ff)
- AM_RANGE(0x230, 0x231) AM_WRITE(txt_irst_w)
- AM_RANGE(0x240, 0x241) AM_WRITE(txt_ca_w)
- AM_RANGE(0x250, 0x251) AM_READWRITE8(centronics_data_r, centronics_data_w, 0x00ff)
- AM_RANGE(0x260, 0x261) AM_READWRITE8(centronics_control_r, centronics_control_w, 0x00ff)
- AM_RANGE(0x280, 0x287) AM_DEVREADWRITE8("fdc", wd2797_device, read, write, 0x00ff)
- AM_RANGE(0x288, 0x289) AM_WRITE8(floppy_control_w, 0x00ff)
+ map(0x180, 0x1bf).rw(this, FUNC(rc759_state::palette_r), FUNC(rc759_state::palette_w)).umask16(0x00ff);
+ map(0x230, 0x231).w(this, FUNC(rc759_state::txt_irst_w));
+ map(0x240, 0x241).w(this, FUNC(rc759_state::txt_ca_w));
+ map(0x250, 0x250).rw(this, FUNC(rc759_state::centronics_data_r), FUNC(rc759_state::centronics_data_w));
+ map(0x260, 0x260).rw(this, FUNC(rc759_state::centronics_control_r), FUNC(rc759_state::centronics_control_w));
+ map(0x280, 0x287).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff);
+ map(0x288, 0x288).w(this, FUNC(rc759_state::floppy_control_w));
// AM_RANGE(0x28a, 0x28b) external printer data
// AM_RANGE(0x28d, 0x28d) external printer control
- AM_RANGE(0x28e, 0x28f) AM_READWRITE8(floppy_ack_r, floppy_reserve_w, 0x00ff)
- AM_RANGE(0x290, 0x291) AM_WRITE8(floppy_release_w, 0x00ff)
+ map(0x28e, 0x28e).rw(this, FUNC(rc759_state::floppy_ack_r), FUNC(rc759_state::floppy_reserve_w));
+ map(0x290, 0x290).w(this, FUNC(rc759_state::floppy_release_w));
// AM_RANGE(0x292, 0x293) AM_READWRITE8(printer_ack_r, printer_reserve_w, 0x00ff)
// AM_RANGE(0x294, 0x295) AM_WRITE8(printer_release_w, 0x00ff)
- AM_RANGE(0x300, 0x30f) AM_DEVREADWRITE8("isbx", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff)
- AM_RANGE(0x310, 0x31f) AM_DEVREADWRITE8("isbx", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff)
+ map(0x300, 0x30f).rw(m_isbx, FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff);
+ map(0x310, 0x31f).rw(m_isbx, FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff);
// AM_RANGE(0x320, 0x321) isbx dma ack
// AM_RANGE(0x330, 0x331) isbx tc
-ADDRESS_MAP_END
+}
//**************************************************************************
diff --git a/src/mame/drivers/rcorsair.cpp b/src/mame/drivers/rcorsair.cpp
index 2b91ce5df1e..a7c821641f1 100644
--- a/src/mame/drivers/rcorsair.cpp
+++ b/src/mame/drivers/rcorsair.cpp
@@ -87,17 +87,20 @@ protected:
};
-ADDRESS_MAP_START(rcorsair_state::rcorsair_main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0xa000, 0xa03f) AM_RAM
-ADDRESS_MAP_END
+void rcorsair_state::rcorsair_main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0xa000, 0xa03f).ram();
+}
-ADDRESS_MAP_START(rcorsair_state::rcorsair_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void rcorsair_state::rcorsair_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
-ADDRESS_MAP_START(rcorsair_state::rcorsair_sub_io_map)
-ADDRESS_MAP_END
+void rcorsair_state::rcorsair_sub_io_map(address_map &map)
+{
+}
static INPUT_PORTS_START( inports )
PORT_START("IN0")
diff --git a/src/mame/drivers/rd100.cpp b/src/mame/drivers/rd100.cpp
index 21ad378c454..234ea08fcf7 100644
--- a/src/mame/drivers/rd100.cpp
+++ b/src/mame/drivers/rd100.cpp
@@ -43,15 +43,16 @@ private:
};
-ADDRESS_MAP_START(rd100_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_RAM
+void rd100_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram();
//AM_RANGE(0x8608, 0x860f) AM_DEVREADWRITE("timer", ptm6840_device, read, write)
- AM_RANGE(0x8640, 0x8643) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x8680, 0x8683) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
+ map(0x8640, 0x8643).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8680, 0x8683).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
//AM_RANGE(0x8700, 0x8700) // device
- AM_RANGE(0x8800, 0xffff) AM_ROM AM_REGION("roms", 0x800)
-ADDRESS_MAP_END
+ map(0x8800, 0xffff).rom().region("roms", 0x800);
+}
/* Input ports */
static INPUT_PORTS_START( rd100 )
diff --git a/src/mame/drivers/rd110.cpp b/src/mame/drivers/rd110.cpp
index 19171596eff..193585907db 100644
--- a/src/mame/drivers/rd110.cpp
+++ b/src/mame/drivers/rd110.cpp
@@ -216,22 +216,24 @@ PALETTE_INIT_MEMBER(d110_state, d110)
palette.set_pen_color(1, rgb_t(0, 0, 0));
}
-ADDRESS_MAP_START(d110_state::d110_map)
- AM_RANGE(0x0100, 0x0100) AM_WRITE(bank_w)
- AM_RANGE(0x0200, 0x0200) AM_WRITE(so_w)
- AM_RANGE(0x021a, 0x021a) AM_READ_PORT("SC0") AM_WRITENOP
- AM_RANGE(0x021c, 0x021c) AM_READ_PORT("SC1")
- AM_RANGE(0x0300, 0x0300) AM_WRITE(lcd_data_w)
- AM_RANGE(0x0380, 0x0380) AM_READWRITE(lcd_ctrl_r, lcd_ctrl_w)
- AM_RANGE(0x1000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x1000)
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("fixed")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(d110_state::d110_io)
- AM_RANGE(i8x9x_device::SERIAL, i8x9x_device::SERIAL) AM_WRITE(midi_w)
- AM_RANGE(i8x9x_device::P0, i8x9x_device::P0) AM_READ(port0_r)
-ADDRESS_MAP_END
+void d110_state::d110_map(address_map &map)
+{
+ map(0x0100, 0x0100).w(this, FUNC(d110_state::bank_w));
+ map(0x0200, 0x0200).w(this, FUNC(d110_state::so_w));
+ map(0x021a, 0x021a).portr("SC0").nopw();
+ map(0x021c, 0x021c).portr("SC1");
+ map(0x0300, 0x0300).w(this, FUNC(d110_state::lcd_data_w));
+ map(0x0380, 0x0380).rw(this, FUNC(d110_state::lcd_ctrl_r), FUNC(d110_state::lcd_ctrl_w));
+ map(0x1000, 0x7fff).rom().region("maincpu", 0x1000);
+ map(0x8000, 0xbfff).bankrw("bank");
+ map(0xc000, 0xffff).bankrw("fixed");
+}
+
+void d110_state::d110_io(address_map &map)
+{
+ map(i8x9x_device::SERIAL, i8x9x_device::SERIAL).w(this, FUNC(d110_state::midi_w));
+ map(i8x9x_device::P0, i8x9x_device::P0).r(this, FUNC(d110_state::port0_r));
+}
MACHINE_CONFIG_START(d110_state::d110)
MCFG_CPU_ADD( "maincpu", P8098, XTAL(12'000'000) )
diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp
index 7a7e9a87c8d..38917c27891 100644
--- a/src/mame/drivers/re900.cpp
+++ b/src/mame/drivers/re900.cpp
@@ -246,19 +246,21 @@ WRITE8_MEMBER(re900_state::watchdog_reset_w)
* Memory Map Information *
*******************************/
-ADDRESS_MAP_START(re900_state::mem_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("rom")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(re900_state::mem_io)
- AM_RANGE(0x0000, 0xbfff) AM_READ(rom_r)
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xefff) AM_WRITE(watchdog_reset_w)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("tms9128", tms9928a_device, vram_write)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("tms9128", tms9928a_device, register_write)
- AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ay_re900", ay8910_device, address_data_w)
- AM_RANGE(0xe802, 0xe802) AM_DEVREAD("ay_re900", ay8910_device, data_r)
-ADDRESS_MAP_END
+void re900_state::mem_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom().share("rom");
+}
+
+void re900_state::mem_io(address_map &map)
+{
+ map(0x0000, 0xbfff).r(this, FUNC(re900_state::rom_r));
+ map(0xc000, 0xdfff).ram().share("nvram");
+ map(0xe000, 0xefff).w(this, FUNC(re900_state::watchdog_reset_w));
+ map(0xe000, 0xe000).w("tms9128", FUNC(tms9928a_device::vram_write));
+ map(0xe001, 0xe001).w("tms9128", FUNC(tms9928a_device::register_write));
+ 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 969953f3be2..033e2d41088 100644
--- a/src/mame/drivers/realbrk.cpp
+++ b/src/mame/drivers/realbrk.cpp
@@ -155,59 +155,64 @@ WRITE16_MEMBER(realbrk_state::backup_ram_w)
***************************************************************************/
/*Basic memory map for this HW*/
-ADDRESS_MAP_START(realbrk_state::base_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Background (0)
- AM_RANGE(0x602000, 0x603fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Background (1)
- AM_RANGE(0x604000, 0x604fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2") // Text (2)
- AM_RANGE(0x605000, 0x61ffff) AM_RAM //
- AM_RANGE(0x606000, 0x60600f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // Scroll + Video Regs
- AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00) // YMZ280
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // RAM
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void realbrk_state::base_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x203fff).ram().share("spriteram"); // Sprites
+ map(0x400000, 0x40ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x600000, 0x601fff).ram().w(this, FUNC(realbrk_state::vram_0_w)).share("vram_0"); // Background (0)
+ map(0x602000, 0x603fff).ram().w(this, FUNC(realbrk_state::vram_1_w)).share("vram_1"); // Background (1)
+ map(0x604000, 0x604fff).ram().w(this, FUNC(realbrk_state::vram_2_w)).share("vram_2"); // Text (2)
+ map(0x605000, 0x61ffff).ram(); //
+ map(0x606000, 0x60600f).ram().w(this, 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*/
-ADDRESS_MAP_START(realbrk_state::realbrk_mem)
- AM_IMPORT_FROM(base_mem)
- AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) //
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // P1 & P2 (Inputs)
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins
- AM_RANGE(0xc00004, 0xc00005) AM_RAM_READ(realbrk_dsw_r) AM_SHARE("dsw_select") // DSW select
- AM_RANGE(0xff0000, 0xfffbff) AM_RAM // RAM
-ADDRESS_MAP_END
+void realbrk_state::realbrk_mem(address_map &map)
+{
+ base_mem(map);
+ map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); //
+ map(0xc00000, 0xc00001).portr("IN0"); // P1 & P2 (Inputs)
+ map(0xc00002, 0xc00003).portr("IN1"); // Coins
+ map(0xc00004, 0xc00005).ram().r(this, FUNC(realbrk_state::realbrk_dsw_r)).share("dsw_select"); // DSW select
+ map(0xff0000, 0xfffbff).ram(); // RAM
+}
/*pkgnsh specific memory map*/
-ADDRESS_MAP_START(realbrk_state::pkgnsh_mem)
- AM_IMPORT_FROM(base_mem)
- AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) // YM2413
- AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnsh_input_r ) // P1 & P2 (Inputs)
- AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_r,backup_ram_w) AM_SHARE("backup_ram") // RAM
-ADDRESS_MAP_END
+void realbrk_state::pkgnsh_mem(address_map &map)
+{
+ base_mem(map);
+ map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00); // YM2413
+ map(0xc00000, 0xc00013).r(this, FUNC(realbrk_state::pkgnsh_input_r)); // P1 & P2 (Inputs)
+ map(0xff0000, 0xfffbff).rw(this, FUNC(realbrk_state::backup_ram_r), FUNC(realbrk_state::backup_ram_w)).share("backup_ram"); // RAM
+}
/*pkgnshdx specific memory map*/
-ADDRESS_MAP_START(realbrk_state::pkgnshdx_mem)
- AM_IMPORT_FROM(base_mem)
- AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) //
- AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnshdx_input_r ) // P1 & P2 (Inputs)
- AM_RANGE(0xc00004, 0xc00005) AM_WRITEONLY AM_SHARE("dsw_select") // DSW select
- AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_dx_r,backup_ram_w) AM_SHARE("backup_ram") // RAM
-ADDRESS_MAP_END
+void realbrk_state::pkgnshdx_mem(address_map &map)
+{
+ base_mem(map);
+ map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); //
+ map(0xc00000, 0xc00013).r(this, FUNC(realbrk_state::pkgnshdx_input_r)); // P1 & P2 (Inputs)
+ map(0xc00004, 0xc00005).writeonly().share("dsw_select"); // DSW select
+ map(0xff0000, 0xfffbff).rw(this, FUNC(realbrk_state::backup_ram_dx_r), FUNC(realbrk_state::backup_ram_w)).share("backup_ram"); // RAM
+}
/*dai2kaku specific memory map*/
-ADDRESS_MAP_START(realbrk_state::dai2kaku_mem)
- AM_IMPORT_FROM(base_mem)
- AM_RANGE(0x605000, 0x6053ff) AM_RAM AM_SHARE("vram_0ras") // rasterinfo (0)
- AM_RANGE(0x605400, 0x6057ff) AM_RAM AM_SHARE("vram_1ras") // rasterinfo (1)
- AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) //
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // P1 & P2 (Inputs)
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins
- AM_RANGE(0xc00004, 0xc00005) AM_RAM_READ(realbrk_dsw_r) AM_SHARE("dsw_select") // DSW select
- AM_RANGE(0xff0000, 0xfffbff) AM_RAM // RAM
- AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(dai2kaku_flipscreen_w ) // Hack! Parallel port data register
-ADDRESS_MAP_END
+void realbrk_state::dai2kaku_mem(address_map &map)
+{
+ base_mem(map);
+ map(0x605000, 0x6053ff).ram().share("vram_0ras"); // rasterinfo (0)
+ map(0x605400, 0x6057ff).ram().share("vram_1ras"); // rasterinfo (1)
+ map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); //
+ map(0xc00000, 0xc00001).portr("IN0"); // P1 & P2 (Inputs)
+ map(0xc00002, 0xc00003).portr("IN1"); // Coins
+ map(0xc00004, 0xc00005).ram().r(this, FUNC(realbrk_state::realbrk_dsw_r)).share("dsw_select"); // DSW select
+ map(0xff0000, 0xfffbff).ram(); // RAM
+ map(0xfffd0a, 0xfffd0b).w(this, FUNC(realbrk_state::dai2kaku_flipscreen_w)); // Hack! Parallel port data register
+}
/***************************************************************************
diff --git a/src/mame/drivers/redalert.cpp b/src/mame/drivers/redalert.cpp
index 6595613c786..e14c8f494d6 100644
--- a/src/mame/drivers/redalert.cpp
+++ b/src/mame/drivers/redalert.cpp
@@ -152,69 +152,73 @@ READ8_MEMBER(redalert_state::panther_unk_r)
*
*************************************/
-ADDRESS_MAP_START(redalert_state::redalert_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram")
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("charram")
- AM_RANGE(0x5000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ_PORT("C020") AM_WRITENOP
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_audio_command_w)
- AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control")
- AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color")
- AM_RANGE(0xc060, 0xc060) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_voice_command_w)
- AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(redalert_interrupt_clear_r, redalert_interrupt_clear_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(redalert_state::ww3_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram")
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("charram")
- AM_RANGE(0x5000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ_PORT("C020") AM_WRITENOP
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_audio_command_w)
- AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control")
- AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color")
- AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(redalert_interrupt_clear_r, redalert_interrupt_clear_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(redalert_state::panther_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram")
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("charram")
- AM_RANGE(0x5000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ(panther_unk_r) /* vblank? */
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_audio_command_w)
- AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control")
- AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color")
- AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(panther_interrupt_clear_r, redalert_interrupt_clear_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(redalert_state::demoneye_main_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram")
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("charram")
- AM_RANGE(0x6000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP
- AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP
- AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ_PORT("C020") AM_WRITENOP
- AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(demoneye_audio_command_w)
- AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control")
- AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color")
- AM_RANGE(0xc060, 0xc060) AM_MIRROR(0x0f80) AM_NOP /* unknown */
- AM_RANGE(0xc061, 0xc061) AM_MIRROR(0x0f80) AM_NOP /* unknown */
- AM_RANGE(0xc062, 0xc062) AM_MIRROR(0x0f80) AM_NOP /* unknown */
- AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(redalert_interrupt_clear_r, redalert_interrupt_clear_w) /* probably not correct */
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
+void redalert_state::redalert_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram");
+ map(0x4000, 0x4fff).ram().share("charram");
+ map(0x5000, 0xbfff).rom();
+ map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw();
+ map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw();
+ map(0xc020, 0xc020).mirror(0x0f8f).portr("C020").nopw();
+ map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_audio_command_w));
+ map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control");
+ map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color");
+ map(0xc060, 0xc060).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_voice_command_w));
+ map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::redalert_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w));
+ map(0xf000, 0xffff).rom().region("maincpu", 0x8000);
+}
+
+void redalert_state::ww3_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram");
+ map(0x4000, 0x4fff).ram().share("charram");
+ map(0x5000, 0xbfff).rom();
+ map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw();
+ map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw();
+ map(0xc020, 0xc020).mirror(0x0f8f).portr("C020").nopw();
+ map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_audio_command_w));
+ map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control");
+ map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color");
+ map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::redalert_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w));
+ map(0xf000, 0xffff).rom().region("maincpu", 0x8000);
+}
+
+void redalert_state::panther_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram");
+ map(0x4000, 0x4fff).ram().share("charram");
+ map(0x5000, 0xbfff).rom();
+ map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw();
+ map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw();
+ map(0xc020, 0xc020).mirror(0x0f8f).r(this, FUNC(redalert_state::panther_unk_r)); /* vblank? */
+ map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_audio_command_w));
+ map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control");
+ map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color");
+ map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::panther_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w));
+ map(0xf000, 0xffff).rom().region("maincpu", 0x8000);
+}
+
+void redalert_state::demoneye_main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram");
+ map(0x4000, 0x5fff).ram().share("charram");
+ map(0x6000, 0xbfff).rom();
+ map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw();
+ map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw();
+ map(0xc020, 0xc020).mirror(0x0f8f).portr("C020").nopw();
+ map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::demoneye_audio_command_w));
+ map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control");
+ map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color");
+ map(0xc060, 0xc060).mirror(0x0f80).noprw(); /* unknown */
+ map(0xc061, 0xc061).mirror(0x0f80).noprw(); /* unknown */
+ map(0xc062, 0xc062).mirror(0x0f80).noprw(); /* unknown */
+ map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::redalert_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w)); /* probably not correct */
+ map(0xf000, 0xffff).rom().region("maincpu", 0x8000);
+}
diff --git a/src/mame/drivers/redclash.cpp b/src/mame/drivers/redclash.cpp
index 79fd4051f83..31901d38c80 100644
--- a/src/mame/drivers/redclash.cpp
+++ b/src/mame/drivers/redclash.cpp
@@ -41,45 +41,47 @@ template <unsigned B> WRITE8_MEMBER(redclash_state::redclash_star_w)
m_stars->set_speed(BIT(data, 0) << B, 1U << B);
}
-ADDRESS_MAP_START(redclash_state::zerohour_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */
- AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */
- AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */
- AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star_w<0>)
- AM_RANGE(0x5801, 0x5804) AM_WRITENOP /* to sound board */
- AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star_w<1>)
- AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star_w<2>)
- AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w)
- AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w)
- AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(redclash_state::redclash_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
+void redclash_state::zerohour_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x37ff).ram();
+ map(0x3800, 0x3bff).ram().share("spriteram");
+ map(0x4000, 0x43ff).ram().w(this, 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(this, FUNC(redclash_state::redclash_star_w<0>));
+ map(0x5801, 0x5804).nopw(); /* to sound board */
+ map(0x5805, 0x5805).w(this, FUNC(redclash_state::redclash_star_w<1>));
+ map(0x5806, 0x5806).w(this, FUNC(redclash_state::redclash_star_w<2>));
+ map(0x5807, 0x5807).w(this, FUNC(redclash_state::redclash_flipscreen_w));
+ map(0x7000, 0x7000).w(this, FUNC(redclash_state::redclash_star_reset_w));
+ map(0x7800, 0x7800).w(this, FUNC(redclash_state::irqack_w));
+}
+
+void redclash_state::redclash_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
// AM_RANGE(0x3000, 0x3000) AM_WRITENOP
// AM_RANGE(0x3800, 0x3800) AM_WRITENOP
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */
- AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */
- AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */
- AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star_w<0>)
- AM_RANGE(0x5801, 0x5801) AM_WRITE(redclash_gfxbank_w)
- AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star_w<1>)
- AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star_w<2>)
- AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w)
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x6800, 0x6bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w)
- AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w)
-ADDRESS_MAP_END
+ map(0x4000, 0x43ff).ram().w(this, 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(this, FUNC(redclash_state::redclash_star_w<0>));
+ map(0x5801, 0x5801).w(this, FUNC(redclash_state::redclash_gfxbank_w));
+ map(0x5805, 0x5805).w(this, FUNC(redclash_state::redclash_star_w<1>));
+ map(0x5806, 0x5806).w(this, FUNC(redclash_state::redclash_star_w<2>));
+ map(0x5807, 0x5807).w(this, FUNC(redclash_state::redclash_flipscreen_w));
+ map(0x6000, 0x67ff).ram();
+ map(0x6800, 0x6bff).ram().share("spriteram");
+ map(0x7000, 0x7000).w(this, FUNC(redclash_state::redclash_star_reset_w));
+ map(0x7800, 0x7800).w(this, FUNC(redclash_state::irqack_w));
+}
/*
This game doesn't have VBlank interrupts.
diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp
index fee92c40211..f2a4b5c439c 100644
--- a/src/mame/drivers/relief.cpp
+++ b/src/mame/drivers/relief.cpp
@@ -107,10 +107,11 @@ WRITE16_MEMBER(relief_state::audio_volume_w)
}
}
-ADDRESS_MAP_START(relief_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("okibank")
- AM_RANGE(0x20000, 0x3ffff) AM_ROM
-ADDRESS_MAP_END
+void relief_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).bankr("okibank");
+ map(0x20000, 0x3ffff).rom();
+}
/*************************************
@@ -119,32 +120,33 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(relief_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x140000, 0x140003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
- AM_RANGE(0x140010, 0x140011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x140020, 0x140021) AM_WRITE(audio_volume_w)
- AM_RANGE(0x140030, 0x140031) AM_WRITE(audio_control_w)
- AM_RANGE(0x180000, 0x180fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00)
- AM_RANGE(0x1c0030, 0x1c0031) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x260001) AM_READ_PORT("260000")
- AM_RANGE(0x260002, 0x260003) AM_READ_PORT("260002")
- AM_RANGE(0x260010, 0x260011) AM_READ(special_port2_r)
- AM_RANGE(0x260012, 0x260013) AM_READ_PORT("260012")
- AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write)
- AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2")
- AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield")
- AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext")
- AM_RANGE(0x3f6000, 0x3f67ff) AM_RAM AM_SHARE("vad:mob")
- AM_RANGE(0x3f6800, 0x3f8eff) AM_RAM
- AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_SHARE("vad:eof")
- AM_RANGE(0x3f8f80, 0x3f8fff) AM_SHARE("vad:mob:slip")
- AM_RANGE(0x3f9000, 0x3fffff) AM_RAM
-ADDRESS_MAP_END
+void relief_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x140000, 0x140003).w(m_ym2413, FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x140011, 0x140011).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140020, 0x140021).w(this, FUNC(relief_state::audio_volume_w));
+ map(0x140030, 0x140031).w(this, FUNC(relief_state::audio_control_w));
+ map(0x180000, 0x180fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0xff00);
+ map(0x1c0030, 0x1c0031).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x260001).portr("260000");
+ map(0x260002, 0x260003).portr("260002");
+ map(0x260010, 0x260011).r(this, FUNC(relief_state::special_port2_r));
+ map(0x260012, 0x260013).portr("260012");
+ map(0x2a0000, 0x2a0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write));
+ map(0x3f0000, 0x3f1fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2");
+ map(0x3f2000, 0x3f3fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield");
+ map(0x3f4000, 0x3f5fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext");
+ map(0x3f6000, 0x3f67ff).ram().share("vad:mob");
+ map(0x3f6800, 0x3f8eff).ram();
+ map(0x3f8f00, 0x3f8f7f).ram().share("vad:eof");
+ map(0x3f8f80, 0x3f8fff).share("vad:mob:slip");
+ map(0x3f9000, 0x3fffff).ram();
+}
diff --git a/src/mame/drivers/renegade.cpp b/src/mame/drivers/renegade.cpp
index b18e375465f..9d98125cc23 100644
--- a/src/mame/drivers/renegade.cpp
+++ b/src/mame/drivers/renegade.cpp
@@ -230,39 +230,42 @@ WRITE8_MEMBER(renegade_state::coincounter_w)
/********************************************************************************************/
-ADDRESS_MAP_START(renegade_state::renegade_nomcu_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x3000, 0x30ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3100, 0x31ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") AM_WRITE(scroll_lsb_w) /* Player#1 controls, P1,P2 start */
- AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") AM_WRITE(scroll_msb_w) /* Player#2 controls, coin triggers */
- AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* DIP2 various IO ports */
- AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) /* DIP1 */
- AM_RANGE(0x3805, 0x3805) AM_READNOP AM_WRITE(bankswitch_w)
- AM_RANGE(0x3806, 0x3806) AM_WRITENOP // ?? watchdog
- AM_RANGE(0x3807, 0x3807) AM_WRITE(coincounter_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(renegade_state::renegade_map)
- AM_IMPORT_FROM(renegade_nomcu_map)
- AM_RANGE(0x3804, 0x3804) AM_DEVREADWRITE("mcu", taito68705_mcu_device, data_r, data_w)
- AM_RANGE(0x3805, 0x3805) AM_READ(mcu_reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(renegade_state::renegade_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_start_w)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_addr_w)
- AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(adpcm_stop_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void renegade_state::renegade_nomcu_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram();
+ map(0x1800, 0x1fff).ram().w(this, FUNC(renegade_state::fg_videoram_w)).share("fg_videoram");
+ map(0x2000, 0x27ff).ram().share("spriteram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(renegade_state::bg_videoram_w)).share("bg_videoram");
+ map(0x3000, 0x30ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x3100, 0x31ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x3800, 0x3800).portr("IN0").w(this, FUNC(renegade_state::scroll_lsb_w)); /* Player#1 controls, P1,P2 start */
+ map(0x3801, 0x3801).portr("IN1").w(this, FUNC(renegade_state::scroll_msb_w)); /* Player#2 controls, coin triggers */
+ map(0x3802, 0x3802).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* DIP2 various IO ports */
+ map(0x3803, 0x3803).portr("DSW1").w(this, FUNC(renegade_state::flipscreen_w)); /* DIP1 */
+ map(0x3805, 0x3805).nopr().w(this, FUNC(renegade_state::bankswitch_w));
+ map(0x3806, 0x3806).nopw(); // ?? watchdog
+ map(0x3807, 0x3807).w(this, FUNC(renegade_state::coincounter_w));
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom();
+}
+
+void renegade_state::renegade_map(address_map &map)
+{
+ renegade_nomcu_map(map);
+ map(0x3804, 0x3804).rw(m_mcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+ map(0x3805, 0x3805).r(this, FUNC(renegade_state::mcu_reset_r));
+}
+
+void renegade_state::renegade_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1800, 0x1800).w(this, FUNC(renegade_state::adpcm_start_w));
+ map(0x2000, 0x2000).w(this, FUNC(renegade_state::adpcm_addr_w));
+ map(0x2800, 0x2801).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
+ map(0x3000, 0x3000).w(this, FUNC(renegade_state::adpcm_stop_w));
+ map(0x8000, 0xffff).rom();
+}
static INPUT_PORTS_START( renegade )
diff --git a/src/mame/drivers/replicator.cpp b/src/mame/drivers/replicator.cpp
index 3d488f3a951..6ddba3655d5 100644
--- a/src/mame/drivers/replicator.cpp
+++ b/src/mame/drivers/replicator.cpp
@@ -532,17 +532,20 @@ WRITE8_MEMBER(replicator_state::port_w)
* Address maps *
\****************************************************/
-ADDRESS_MAP_START(replicator_state::replicator_prg_map)
- AM_RANGE(0x0000, 0x1FFFF) AM_ROM
-ADDRESS_MAP_END
+void replicator_state::replicator_prg_map(address_map &map)
+{
+ map(0x0000, 0x1FFFF).rom();
+}
-ADDRESS_MAP_START(replicator_state::replicator_data_map)
- AM_RANGE(0x0200, 0x21FF) AM_RAM /* ATMEGA1280 Internal SRAM */
-ADDRESS_MAP_END
+void replicator_state::replicator_data_map(address_map &map)
+{
+ map(0x0200, 0x21FF).ram(); /* ATMEGA1280 Internal SRAM */
+}
-ADDRESS_MAP_START(replicator_state::replicator_io_map)
- AM_RANGE(AVR8_IO_PORTA, AVR8_IO_PORTL) AM_READWRITE( port_r, port_w )
-ADDRESS_MAP_END
+void replicator_state::replicator_io_map(address_map &map)
+{
+ map(AVR8_IO_PORTA, AVR8_IO_PORTL).rw(this, FUNC(replicator_state::port_r), FUNC(replicator_state::port_w));
+}
/****************************************************\
* Input ports *
diff --git a/src/mame/drivers/retofinv.cpp b/src/mame/drivers/retofinv.cpp
index 752e25e1fc3..975dc1cd150 100644
--- a/src/mame/drivers/retofinv.cpp
+++ b/src/mame/drivers/retofinv.cpp
@@ -177,50 +177,54 @@ READ8_MEMBER(retofinv_state::mcu_status_r)
empty socket at IC73 from 6000-7fff) and if it finds a particular
string there, it jumps to that area, presumably for diagnostic use */
-ADDRESS_MAP_START(retofinv_state::bootleg_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x7fff, 0x7fff) AM_WRITE(coincounter_w)
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x8800, 0x9fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xb800, 0xb802) AM_WRITE(gfx_ctrl_w)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2")
- AM_RANGE(0xc002, 0xc002) AM_READNOP /* bit 7 must be 0, otherwise game resets */
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc005, 0xc005) AM_READ_PORT("DSW1")
- AM_RANGE(0xc006, 0xc006) AM_READ_PORT("DSW2")
- AM_RANGE(0xc007, 0xc007) AM_READ_PORT("DSW3")
- AM_RANGE(0xc800, 0xc807) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xd800, 0xd800) AM_WRITE(soundcommand_w)
- AM_RANGE(0xf800, 0xf800) AM_READ(cpu0_mf800_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(retofinv_state::main_map)
- AM_IMPORT_FROM(bootleg_map)
- AM_RANGE(0xc003, 0xc003) AM_READ(mcu_status_r)
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("68705", taito68705_mcu_device, data_r)
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("68705", taito68705_mcu_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(retofinv_state::sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x8800, 0x9fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xc800, 0xc807) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(retofinv_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM /* 6116 sram at IC28 */
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(cpu2_m6000_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM /* space for diagnostic ROM */
-ADDRESS_MAP_END
+void retofinv_state::bootleg_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x7fff, 0x7fff).w(this, FUNC(retofinv_state::coincounter_w));
+ map(0x8000, 0x87ff).ram().w(this, FUNC(retofinv_state::fg_videoram_w)).share("fg_videoram");
+ map(0x8800, 0x9fff).ram().share("sharedram");
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(retofinv_state::bg_videoram_w)).share("bg_videoram");
+ map(0xb800, 0xb802).w(this, FUNC(retofinv_state::gfx_ctrl_w));
+ map(0xc000, 0xc000).portr("P1");
+ map(0xc001, 0xc001).portr("P2");
+ map(0xc002, 0xc002).nopr(); /* bit 7 must be 0, otherwise game resets */
+ map(0xc004, 0xc004).portr("SYSTEM");
+ map(0xc005, 0xc005).portr("DSW1");
+ map(0xc006, 0xc006).portr("DSW2");
+ map(0xc007, 0xc007).portr("DSW3");
+ map(0xc800, 0xc807).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xd000, 0xd000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xd800, 0xd800).w(this, FUNC(retofinv_state::soundcommand_w));
+ map(0xf800, 0xf800).r(this, FUNC(retofinv_state::cpu0_mf800_r));
+}
+
+void retofinv_state::main_map(address_map &map)
+{
+ bootleg_map(map);
+ map(0xc003, 0xc003).r(this, FUNC(retofinv_state::mcu_status_r));
+ map(0xe000, 0xe000).r(m_68705, FUNC(taito68705_mcu_device::data_r));
+ map(0xe800, 0xe800).w(m_68705, FUNC(taito68705_mcu_device::data_w));
+}
+
+void retofinv_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(retofinv_state::fg_videoram_w)).share("fg_videoram");
+ map(0x8800, 0x9fff).ram().share("sharedram");
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(retofinv_state::bg_videoram_w)).share("bg_videoram");
+ map(0xc800, 0xc807).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void retofinv_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram(); /* 6116 sram at IC28 */
+ map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x6000, 0x6000).w(this, 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(0xe000, 0xffff).rom(); /* space for diagnostic ROM */
+}
diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp
index d1631f2e5e8..18f12240bd1 100644
--- a/src/mame/drivers/rex6000.cpp
+++ b/src/mame/drivers/rex6000.cpp
@@ -370,59 +370,64 @@ WRITE8_MEMBER( oz750_state::kb_mask_w )
m_kb_mask = (m_kb_mask & 0xff00) | data;
}
-ADDRESS_MAP_START(rex6000_state::rex6000_banked_map)
- AM_RANGE( 0x0000000, 0x00fffff ) AM_DEVREADWRITE("flash0a", intelfsh8_device, read, write)
- AM_RANGE( 0x0100000, 0x01fffff ) AM_DEVREADWRITE("flash0b", intelfsh8_device, read, write)
- AM_RANGE( 0x0c00000, 0x0cfffff ) AM_DEVREADWRITE("flash1a", intelfsh8_device, read, write)
- AM_RANGE( 0x0d00000, 0x0dfffff ) AM_DEVREADWRITE("flash1b", intelfsh8_device, read, write)
- AM_RANGE( 0x1600000, 0x16fffff ) AM_DEVREADWRITE("flash1a", intelfsh8_device, read, write)
- AM_RANGE( 0x1700000, 0x17fffff ) AM_DEVREADWRITE("flash1b", intelfsh8_device, read, write)
- AM_RANGE( 0x2000000, 0x2007fff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(oz750_state::oz750_banked_map)
- AM_RANGE( 0x0000000, 0x01fffff ) AM_DEVREADWRITE("flash0a", intelfsh8_device, read, write)
- AM_RANGE( 0x0200000, 0x02fffff ) AM_MIRROR(0x100000) AM_DEVREADWRITE("flash1a", intelfsh8_device, read, write)
- AM_RANGE( 0x0600000, 0x07fffff ) AM_READWRITE(lcd_io_r, lcd_io_w)
- AM_RANGE( 0x0800000, 0x083ffff ) AM_MIRROR(0x1c0000) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x0a00000, 0x0a3ffff ) AM_MIRROR(0x1c0000) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(rex6000_state::rex6000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("flash0a", intelfsh8_device, read, write)
- AM_RANGE( 0x8000, 0x9fff ) AM_DEVREADWRITE("bank0", address_map_bank_device, read8, write8)
- AM_RANGE( 0xa000, 0xbfff ) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8)
- AM_RANGE( 0xc000, 0xffff ) AM_RAMBANK("ram") //system RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rex6000_state::rex6000_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x04 ) AM_READWRITE(bankswitch_r, bankswitch_w)
- AM_RANGE( 0x05, 0x07 ) AM_READWRITE(irq_r, irq_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("INPUT")
- AM_RANGE( 0x15, 0x19 ) AM_READWRITE(beep_r, beep_w)
- AM_RANGE( 0x22, 0x23 ) AM_READWRITE(lcd_base_r, lcd_base_w)
- AM_RANGE( 0x30, 0x3f ) AM_DEVREADWRITE(TC8521_TAG, tc8521_device, read, write)
- AM_RANGE( 0x40, 0x47 ) AM_MIRROR(0x08) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w )
- AM_RANGE( 0x50, 0x51 ) AM_READWRITE(lcd_io_r, lcd_io_w)
- AM_RANGE( 0x60, 0x6f ) AM_READWRITE(touchscreen_r, touchscreen_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(oz750_state::oz750_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x04 ) AM_READWRITE(bankswitch_r, bankswitch_w)
- AM_RANGE( 0x05, 0x08 ) AM_READWRITE(irq_r, irq_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ(kb_data_r)
- AM_RANGE( 0x11, 0x12 ) AM_READWRITE(kb_status_r, kb_mask_w)
- AM_RANGE( 0x15, 0x19 ) AM_READWRITE(beep_r, beep_w)
- AM_RANGE( 0x22, 0x23 ) AM_READWRITE(lcd_base_r, lcd_base_w)
- AM_RANGE( 0x30, 0x3f ) AM_DEVREADWRITE(TC8521_TAG, tc8521_device, read, write)
- AM_RANGE( 0x40, 0x47 ) AM_MIRROR(0x08) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w )
-ADDRESS_MAP_END
+void rex6000_state::rex6000_banked_map(address_map &map)
+{
+ map(0x0000000, 0x00fffff).rw("flash0a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0100000, 0x01fffff).rw(m_flash0b, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0c00000, 0x0cfffff).rw("flash1a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0d00000, 0x0dfffff).rw("flash1b", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x1600000, 0x16fffff).rw("flash1a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x1700000, 0x17fffff).rw("flash1b", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x2000000, 0x2007fff).ram().share("nvram");
+}
+
+void oz750_state::oz750_banked_map(address_map &map)
+{
+ map(0x0000000, 0x01fffff).rw("flash0a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0200000, 0x02fffff).mirror(0x100000).rw("flash1a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x0600000, 0x07fffff).rw(this, FUNC(oz750_state::lcd_io_r), FUNC(oz750_state::lcd_io_w));
+ map(0x0800000, 0x083ffff).mirror(0x1c0000).ram().share("nvram");
+ map(0x0a00000, 0x0a3ffff).mirror(0x1c0000).ram();
+}
+
+
+void rex6000_state::rex6000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rw("flash0a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x8000, 0x9fff).rw(m_bankdev0, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xa000, 0xbfff).rw(m_bankdev1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xc000, 0xffff).bankrw("ram"); //system RAM
+}
+
+void rex6000_state::rex6000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x01, 0x04).rw(this, FUNC(rex6000_state::bankswitch_r), FUNC(rex6000_state::bankswitch_w));
+ map(0x05, 0x07).rw(this, FUNC(rex6000_state::irq_r), FUNC(rex6000_state::irq_w));
+ map(0x10, 0x10).portr("INPUT");
+ map(0x15, 0x19).rw(this, FUNC(rex6000_state::beep_r), FUNC(rex6000_state::beep_w));
+ map(0x22, 0x23).rw(this, FUNC(rex6000_state::lcd_base_r), FUNC(rex6000_state::lcd_base_w));
+ map(0x30, 0x3f).rw(TC8521_TAG, FUNC(tc8521_device::read), FUNC(tc8521_device::write));
+ map(0x40, 0x47).mirror(0x08).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+ map(0x50, 0x51).rw(this, FUNC(rex6000_state::lcd_io_r), FUNC(rex6000_state::lcd_io_w));
+ map(0x60, 0x6f).rw(this, FUNC(rex6000_state::touchscreen_r), FUNC(rex6000_state::touchscreen_w));
+}
+
+void oz750_state::oz750_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x01, 0x04).rw(this, FUNC(oz750_state::bankswitch_r), FUNC(oz750_state::bankswitch_w));
+ map(0x05, 0x08).rw(this, FUNC(oz750_state::irq_r), FUNC(oz750_state::irq_w));
+ map(0x10, 0x10).r(this, FUNC(oz750_state::kb_data_r));
+ map(0x11, 0x12).rw(this, FUNC(oz750_state::kb_status_r), FUNC(oz750_state::kb_mask_w));
+ map(0x15, 0x19).rw(this, FUNC(oz750_state::beep_r), FUNC(oz750_state::beep_w));
+ map(0x22, 0x23).rw(this, FUNC(oz750_state::lcd_base_r), FUNC(oz750_state::lcd_base_w));
+ map(0x30, 0x3f).rw(TC8521_TAG, FUNC(tc8521_device::read), FUNC(tc8521_device::write));
+ map(0x40, 0x47).mirror(0x08).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
+}
INPUT_CHANGED_MEMBER(rex6000_state::trigger_irq)
{
diff --git a/src/mame/drivers/rgum.cpp b/src/mame/drivers/rgum.cpp
index 1caa6888f71..48113282c73 100644
--- a/src/mame/drivers/rgum.cpp
+++ b/src/mame/drivers/rgum.cpp
@@ -74,25 +74,26 @@ uint32_t rgum_state::screen_update_royalgum(screen_device &screen, bitmap_ind16
return 0;
}
-ADDRESS_MAP_START(rgum_state::rgum_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM //not all of it?
+void rgum_state::rgum_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); //not all of it?
- AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x2002, 0x2002) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_w)
+ map(0x2000, 0x2000).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x2002, 0x2002).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
- AM_RANGE(0x2801, 0x2801) AM_READNOP //read but value discarded?
- AM_RANGE(0x2803, 0x2803) AM_READNOP
+ map(0x2801, 0x2801).nopr(); //read but value discarded?
+ map(0x2803, 0x2803).nopr();
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ map(0x3000, 0x3003).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("cram")
+ map(0x4000, 0x47ff).ram().share("vram");
+ map(0x5000, 0x57ff).ram().share("cram");
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom();
+}
CUSTOM_INPUT_MEMBER(rgum_state::rgum_heartbeat_r)
diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp
index 153354fd54c..ac1a4119fd3 100644
--- a/src/mame/drivers/risc2500.cpp
+++ b/src/mame/drivers/risc2500.cpp
@@ -302,12 +302,13 @@ void risc2500_state::machine_reset()
install_boot_rom();
}
-ADDRESS_MAP_START(risc2500_state::risc2500_mem)
- AM_RANGE( 0x00000000, 0x0001ffff ) AM_RAM
- AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(disable_boot_rom)
- AM_RANGE( 0x01000000, 0x01000003 ) AM_READWRITE(p1000_r, p1000_w)
- AM_RANGE( 0x02000000, 0x0203ffff ) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void risc2500_state::risc2500_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram();
+ map(0x01800000, 0x01800003).r(this, FUNC(risc2500_state::disable_boot_rom));
+ map(0x01000000, 0x01000003).rw(this, FUNC(risc2500_state::p1000_r), FUNC(risc2500_state::p1000_w));
+ map(0x02000000, 0x0203ffff).rom().region("maincpu", 0);
+}
MACHINE_CONFIG_START(risc2500_state::risc2500)
diff --git a/src/mame/drivers/riscpc.cpp b/src/mame/drivers/riscpc.cpp
index 819570cf9b8..e56656a7969 100644
--- a/src/mame/drivers/riscpc.cpp
+++ b/src/mame/drivers/riscpc.cpp
@@ -760,8 +760,9 @@ WRITE32_MEMBER( riscpc_state::a7000_iomd_w )
}
}
-ADDRESS_MAP_START(riscpc_state::a7000_mem)
- AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0x00800000) AM_ROM AM_REGION("user1", 0)
+void riscpc_state::a7000_mem(address_map &map)
+{
+ map(0x00000000, 0x003fffff).mirror(0x00800000).rom().region("user1", 0);
// AM_RANGE(0x01000000, 0x01ffffff) AM_NOP //expansion ROM
// AM_RANGE(0x02000000, 0x02ffffff) AM_RAM //VRAM
// I/O 03000000 - 033fffff
@@ -770,16 +771,16 @@ ADDRESS_MAP_START(riscpc_state::a7000_mem)
// AM_RANGE(0x0302b000, 0x0302bfff) //Network podule
// AM_RANGE(0x03040000, 0x0304ffff) //podule space 0,1,2,3
// AM_RANGE(0x03070000, 0x0307ffff) //podule space 4,5,6,7
- AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(a7000_iomd_r,a7000_iomd_w) //IOMD Registers //mirrored at 0x03000000-0x1ff?
+ map(0x03200000, 0x032001ff).rw(this, FUNC(riscpc_state::a7000_iomd_r), FUNC(riscpc_state::a7000_iomd_w)); //IOMD Registers //mirrored at 0x03000000-0x1ff?
// AM_RANGE(0x03310000, 0x03310003) //Mouse Buttons
- AM_RANGE(0x03400000, 0x037fffff) AM_WRITE(a7000_vidc20_w)
+ map(0x03400000, 0x037fffff).w(this, FUNC(riscpc_state::a7000_vidc20_w));
// AM_RANGE(0x08000000, 0x08ffffff) AM_MIRROR(0x07000000) //EASI space
- AM_RANGE(0x10000000, 0x13ffffff) AM_RAM //SIMM 0 bank 0
- AM_RANGE(0x14000000, 0x17ffffff) AM_RAM //SIMM 0 bank 1
+ map(0x10000000, 0x13ffffff).ram(); //SIMM 0 bank 0
+ map(0x14000000, 0x17ffffff).ram(); //SIMM 0 bank 1
// AM_RANGE(0x18000000, 0x18ffffff) AM_MIRROR(0x03000000) AM_RAM //SIMM 1 bank 0
// AM_RANGE(0x1c000000, 0x1cffffff) AM_MIRROR(0x03000000) AM_RAM //SIMM 1 bank 1
-ADDRESS_MAP_END
+}
/* Input ports */
diff --git a/src/mame/drivers/rltennis.cpp b/src/mame/drivers/rltennis.cpp
index 201a4b16816..23c3b98e031 100644
--- a/src/mame/drivers/rltennis.cpp
+++ b/src/mame/drivers/rltennis.cpp
@@ -91,21 +91,22 @@ WRITE16_MEMBER(rltennis_state::snd2_w)
COMBINE_DATA(&m_data740000);
}
-ADDRESS_MAP_START(rltennis_state::rltennis_main)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x700000, 0x70000f) AM_WRITE(blitter_w)
- AM_RANGE(0x720000, 0x720001) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff)
- AM_RANGE(0x720002, 0x720003) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff)
- AM_RANGE(0x720006, 0x720007) AM_DEVWRITE8("ramdac",ramdac_device,index_r_w,0x00ff)
- AM_RANGE(0x740000, 0x740001) AM_WRITE(snd1_w)
- AM_RANGE(0x760000, 0x760001) AM_WRITE(snd2_w)
- AM_RANGE(0x780000, 0x780001) AM_WRITENOP /* sound control, unknown, usually = 0x0044 */
- AM_RANGE(0x7a0000, 0x7a0003) AM_READNOP /* unknown, read only at boot time*/
- AM_RANGE(0x7e0000, 0x7e0001) AM_READ(io_r)
- AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2")
-ADDRESS_MAP_END
+void rltennis_state::rltennis_main(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram().share("nvram");
+ map(0x200000, 0x20ffff).ram();
+ map(0x700000, 0x70000f).w(this, FUNC(rltennis_state::blitter_w));
+ map(0x720001, 0x720001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x720003, 0x720003).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w));
+ map(0x720007, 0x720007).w("ramdac", FUNC(ramdac_device::index_r_w));
+ map(0x740000, 0x740001).w(this, FUNC(rltennis_state::snd1_w));
+ map(0x760000, 0x760001).w(this, FUNC(rltennis_state::snd2_w));
+ map(0x780000, 0x780001).nopw(); /* sound control, unknown, usually = 0x0044 */
+ map(0x7a0000, 0x7a0003).nopr(); /* unknown, read only at boot time*/
+ map(0x7e0000, 0x7e0001).r(this, FUNC(rltennis_state::io_r));
+ map(0x7e0002, 0x7e0003).portr("P2");
+}
static INPUT_PORTS_START( rltennis )
PORT_START("P1")
@@ -179,9 +180,10 @@ void rltennis_state::machine_reset()
m_timer->adjust(attotime::from_hz(RLT_TIMER_FREQ));
}
-ADDRESS_MAP_START(rltennis_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w)
-ADDRESS_MAP_END
+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));
+}
MACHINE_CONFIG_START(rltennis_state::rltennis)
diff --git a/src/mame/drivers/rm380z.cpp b/src/mame/drivers/rm380z.cpp
index b12d6d1ccb9..7e20c7081d4 100644
--- a/src/mame/drivers/rm380z.cpp
+++ b/src/mame/drivers/rm380z.cpp
@@ -171,30 +171,34 @@ Module timer tag static_vblank_timer name m_expire.seconds
#include "screen.h"
-ADDRESS_MAP_START(rm380z_state::rm380z_mem)
- AM_RANGE( 0xe000, 0xefff ) AM_ROM AM_REGION(RM380Z_MAINCPU_TAG, 0)
- AM_RANGE( 0xf000, 0xf5ff ) AM_READWRITE(videoram_read,videoram_write)
- AM_RANGE( 0xf600, 0xf9ff ) AM_ROM AM_REGION(RM380Z_MAINCPU_TAG, 0x1000) /* Extra ROM space for COS4.0 */
- AM_RANGE( 0xfa00, 0xfaff ) AM_RAM
- AM_RANGE( 0xfb00, 0xfbff ) AM_READWRITE( port_read, port_write )
- AM_RANGE( 0xfc00, 0xffff ) AM_READWRITE(hiram_read,hiram_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rm380z_state::rm380z_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xbf) AM_READWRITE(rm380z_portlow_r, rm380z_portlow_w)
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("wd1771", fd1771_device, read, write)
- AM_RANGE(0xc4, 0xc4) AM_WRITE(disk_0_control)
- AM_RANGE(0xc5, 0xff) AM_READWRITE(rm380z_porthi_r, rm380z_porthi_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rm380z_state::rm480z_mem)
- AM_RANGE( 0x0000, 0xe7ff ) AM_RAM
- AM_RANGE( 0xe800, 0xf7ff ) AM_ROM AM_REGION(RM380Z_MAINCPU_TAG, 0)
- AM_RANGE( 0xf800, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rm380z_state::rm480z_io)
+void rm380z_state::rm380z_mem(address_map &map)
+{
+ map(0xe000, 0xefff).rom().region(RM380Z_MAINCPU_TAG, 0);
+ map(0xf000, 0xf5ff).rw(this, FUNC(rm380z_state::videoram_read), FUNC(rm380z_state::videoram_write));
+ map(0xf600, 0xf9ff).rom().region(RM380Z_MAINCPU_TAG, 0x1000); /* Extra ROM space for COS4.0 */
+ map(0xfa00, 0xfaff).ram();
+ map(0xfb00, 0xfbff).rw(this, FUNC(rm380z_state::port_read), FUNC(rm380z_state::port_write));
+ map(0xfc00, 0xffff).rw(this, FUNC(rm380z_state::hiram_read), FUNC(rm380z_state::hiram_write));
+}
+
+void rm380z_state::rm380z_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xbf).rw(this, FUNC(rm380z_state::rm380z_portlow_r), FUNC(rm380z_state::rm380z_portlow_w));
+ map(0xc0, 0xc3).rw(m_fdc, FUNC(fd1771_device::read), FUNC(fd1771_device::write));
+ map(0xc4, 0xc4).w(this, FUNC(rm380z_state::disk_0_control));
+ map(0xc5, 0xff).rw(this, FUNC(rm380z_state::rm380z_porthi_r), FUNC(rm380z_state::rm380z_porthi_w));
+}
+
+void rm380z_state::rm480z_mem(address_map &map)
+{
+ map(0x0000, 0xe7ff).ram();
+ map(0xe800, 0xf7ff).rom().region(RM380Z_MAINCPU_TAG, 0);
+ map(0xf800, 0xffff).ram();
+}
+
+void rm380z_state::rm480z_io(address_map &map)
+{
//AM_RANGE(0x00, 0x17) AM_RAM // videoram
//AM_RANGE(0x18, 0x18) AM_MIRROR(0xff00) // control port 0
//AM_RANGE(0x19, 0x19) AM_MIRROR(0xff00) // control port 1
@@ -207,7 +211,7 @@ ADDRESS_MAP_START(rm380z_state::rm480z_io)
//AM_RANGE(0x2c, 0x2f) AM_MIRROR(0xff00) // z80ctc IEEE int, Maths int, RTC, RTC // option
//AM_RANGE(0x30, 0x37) AM_MIRROR(0xff00) // IEEE chip // option
//AM_RANGE(0x38, 0x3b) AM_MIRROR(0xff00) // Hi-res graphics option
-ADDRESS_MAP_END
+}
INPUT_PORTS_START( rm380z )
// PORT_START("additional_chars")
diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp
index 45bb8e1865c..0ad7b06d25d 100644
--- a/src/mame/drivers/rmhaihai.cpp
+++ b/src/mame/drivers/rmhaihai.cpp
@@ -251,53 +251,57 @@ void themj_state::machine_reset()
-ADDRESS_MAP_START(rmhaihai_state::rmhaihai_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb83c, 0xb83c) AM_WRITENOP // ??
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // ??
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM /* rmhaisei only */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rmhaihai_state::rmhaihai_io_map)
- AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
- AM_RANGE(0x8000, 0x8000) AM_READ(keyboard_r) AM_WRITENOP // ??
- AM_RANGE(0x8001, 0x8001) AM_READNOP AM_WRITE(keyboard_w) // ??
- AM_RANGE(0x8020, 0x8020) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x8040, 0x8040) AM_WRITE(adpcm_w)
- AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w)
- AM_RANGE(0x8080, 0x8080) AM_WRITENOP // ??
- AM_RANGE(0xbc04, 0xbc04) AM_WRITENOP // ??
- AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ??
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(themj_state::themj_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank2")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(themj_state::themj_io_map)
- AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
- AM_RANGE(0x8000, 0x8000) AM_READ(keyboard_r) AM_WRITENOP // ??
- AM_RANGE(0x8001, 0x8001) AM_READNOP AM_WRITE(keyboard_w) // ??
- AM_RANGE(0x8020, 0x8020) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x8040, 0x8040) AM_WRITE(adpcm_w)
- AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w)
- AM_RANGE(0x8080, 0x8080) AM_WRITENOP // ??
- AM_RANGE(0x80a0, 0x80a0) AM_WRITE(themj_rombank_w)
- AM_RANGE(0xbc04, 0xbc04) AM_WRITENOP // ??
- AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ??
-ADDRESS_MAP_END
+void rmhaihai_state::rmhaihai_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).ram().share("nvram");
+ map(0xa800, 0xafff).ram().w(this, FUNC(rmhaihai_state::colorram_w)).share("colorram");
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(rmhaihai_state::videoram_w)).share("videoram");
+ map(0xb83c, 0xb83c).nopw(); // ??
+ map(0xbc00, 0xbc00).nopw(); // ??
+ map(0xc000, 0xdfff).rom();
+ map(0xe000, 0xffff).rom(); /* rmhaisei only */
+}
+
+void rmhaihai_state::rmhaihai_io_map(address_map &map)
+{
+ map(0x0000, 0x7fff).r(this, FUNC(rmhaihai_state::samples_r));
+ map(0x8000, 0x8000).r(this, FUNC(rmhaihai_state::keyboard_r)).nopw(); // ??
+ map(0x8001, 0x8001).nopr().w(this, FUNC(rmhaihai_state::keyboard_w)); // ??
+ map(0x8020, 0x8020).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x8020, 0x8021).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x8040, 0x8040).w(this, FUNC(rmhaihai_state::adpcm_w));
+ map(0x8060, 0x8060).w(this, FUNC(rmhaihai_state::ctrl_w));
+ map(0x8080, 0x8080).nopw(); // ??
+ map(0xbc04, 0xbc04).nopw(); // ??
+ map(0xbc0c, 0xbc0c).nopw(); // ??
+}
+
+void themj_state::themj_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xa7ff).ram();
+ map(0xa800, 0xafff).ram().w(this, FUNC(themj_state::colorram_w)).share("colorram");
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(themj_state::videoram_w)).share("videoram");
+ map(0xc000, 0xdfff).bankr("bank2");
+ map(0xe000, 0xffff).rom();
+}
+
+void themj_state::themj_io_map(address_map &map)
+{
+ map(0x0000, 0x7fff).r(this, FUNC(themj_state::samples_r));
+ map(0x8000, 0x8000).r(this, FUNC(themj_state::keyboard_r)).nopw(); // ??
+ map(0x8001, 0x8001).nopr().w(this, FUNC(themj_state::keyboard_w)); // ??
+ map(0x8020, 0x8020).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x8020, 0x8021).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x8040, 0x8040).w(this, FUNC(themj_state::adpcm_w));
+ map(0x8060, 0x8060).w(this, FUNC(themj_state::ctrl_w));
+ map(0x8080, 0x8080).nopw(); // ??
+ map(0x80a0, 0x80a0).w(this, FUNC(themj_state::themj_rombank_w));
+ map(0xbc04, 0xbc04).nopw(); // ??
+ map(0xbc0c, 0xbc0c).nopw(); // ??
+}
static INPUT_PORTS_START( mjctrl )
diff --git a/src/mame/drivers/rmnimbus.cpp b/src/mame/drivers/rmnimbus.cpp
index f977ab7de47..e7855be4868 100644
--- a/src/mame/drivers/rmnimbus.cpp
+++ b/src/mame/drivers/rmnimbus.cpp
@@ -36,31 +36,33 @@ static SLOT_INTERFACE_START(keyboard)
SLOT_INTERFACE("rmnkbd", RMNIMBUS_KEYBOARD)
SLOT_INTERFACE_END
-ADDRESS_MAP_START(rmnimbus_state::nimbus_mem)
- AM_RANGE( 0x00000, 0x1FFFF ) AM_RAMBANK(RAM_BANK00_TAG)
- AM_RANGE( 0x20000, 0x3FFFF ) AM_RAMBANK(RAM_BANK01_TAG)
- AM_RANGE( 0x40000, 0x5FFFF ) AM_RAMBANK(RAM_BANK02_TAG)
- AM_RANGE( 0x60000, 0x7FFFF ) AM_RAMBANK(RAM_BANK03_TAG)
- AM_RANGE( 0x80000, 0x9FFFF ) AM_RAMBANK(RAM_BANK04_TAG)
- AM_RANGE( 0xA0000, 0xBFFFF ) AM_RAMBANK(RAM_BANK05_TAG)
- AM_RANGE( 0xC0000, 0xDFFFF ) AM_RAMBANK(RAM_BANK06_TAG)
- AM_RANGE( 0xE0000, 0xEFFFF ) AM_RAMBANK(RAM_BANK07_TAG)
- AM_RANGE( 0xF0000, 0xFFFFF ) AM_ROM AM_REGION(MAINCPU_TAG, 0x0f0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rmnimbus_state::nimbus_io)
- AM_RANGE( 0x0000, 0x0031) AM_READWRITE(nimbus_video_io_r, nimbus_video_io_w)
- AM_RANGE( 0x0080, 0x0081) AM_READWRITE8(nimbus_mcu_r, nimbus_mcu_w, 0x00FF)
- AM_RANGE( 0x0092, 0x0093) AM_READWRITE8(nimbus_iou_r, nimbus_iou_w, 0x00FF)
- AM_RANGE( 0x00A4, 0x00A5) AM_READWRITE8(nimbus_mouse_js_r, nimbus_mouse_js_w, 0x00FF)
- AM_RANGE( 0x00c0, 0x00cf) AM_READWRITE8(nimbus_pc8031_r, nimbus_pc8031_w, 0x00FF)
- AM_RANGE( 0x00e0, 0x00ef) AM_DEVREADWRITE8(AY8910_TAG, ay8910_device, data_r, address_data_w, 0x00FF)
- AM_RANGE( 0x00f0, 0x00f7) AM_DEVREADWRITE8(Z80SIO_TAG, z80sio2_device, cd_ba_r, cd_ba_w, 0x00ff)
- AM_RANGE( 0x0400, 0x0401) AM_WRITE8(fdc_ctl_w, 0x00ff)
- AM_RANGE( 0x0408, 0x040f) AM_DEVREADWRITE8(FDC_TAG, wd2793_device, read, write, 0x00ff)
- AM_RANGE( 0x0410, 0x041f) AM_READWRITE8(scsi_r, scsi_w, 0x00ff)
- AM_RANGE( 0x0480, 0x049f) AM_DEVREADWRITE8(VIA_TAG, via6522_device, read, write, 0x00FF)
-ADDRESS_MAP_END
+void rmnimbus_state::nimbus_mem(address_map &map)
+{
+ map(0x00000, 0x1FFFF).bankrw(RAM_BANK00_TAG);
+ map(0x20000, 0x3FFFF).bankrw(RAM_BANK01_TAG);
+ map(0x40000, 0x5FFFF).bankrw(RAM_BANK02_TAG);
+ map(0x60000, 0x7FFFF).bankrw(RAM_BANK03_TAG);
+ map(0x80000, 0x9FFFF).bankrw(RAM_BANK04_TAG);
+ map(0xA0000, 0xBFFFF).bankrw(RAM_BANK05_TAG);
+ map(0xC0000, 0xDFFFF).bankrw(RAM_BANK06_TAG);
+ map(0xE0000, 0xEFFFF).bankrw(RAM_BANK07_TAG);
+ map(0xF0000, 0xFFFFF).rom().region(MAINCPU_TAG, 0x0f0000);
+}
+
+void rmnimbus_state::nimbus_io(address_map &map)
+{
+ map(0x0000, 0x0031).rw(this, FUNC(rmnimbus_state::nimbus_video_io_r), FUNC(rmnimbus_state::nimbus_video_io_w));
+ map(0x0080, 0x0080).rw(this, FUNC(rmnimbus_state::nimbus_mcu_r), FUNC(rmnimbus_state::nimbus_mcu_w));
+ map(0x0092, 0x0092).rw(this, FUNC(rmnimbus_state::nimbus_iou_r), FUNC(rmnimbus_state::nimbus_iou_w));
+ map(0x00a4, 0x00a4).rw(this, FUNC(rmnimbus_state::nimbus_mouse_js_r), FUNC(rmnimbus_state::nimbus_mouse_js_w));
+ map(0x00c0, 0x00cf).rw(this, FUNC(rmnimbus_state::nimbus_pc8031_r), FUNC(rmnimbus_state::nimbus_pc8031_w)).umask16(0x00ff);
+ map(0x00e0, 0x00ef).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x00f0, 0x00f7).rw(m_z80sio, FUNC(z80sio2_device::cd_ba_r), FUNC(z80sio2_device::cd_ba_w)).umask16(0x00ff);
+ map(0x0400, 0x0400).w(this, FUNC(rmnimbus_state::fdc_ctl_w));
+ map(0x0408, 0x040f).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)).umask16(0x00ff);
+ map(0x0410, 0x041f).rw(this, FUNC(rmnimbus_state::scsi_r), FUNC(rmnimbus_state::scsi_w)).umask16(0x00ff);
+ map(0x0480, 0x049f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0x00ff);
+}
static INPUT_PORTS_START( nimbus )
@@ -89,15 +91,17 @@ static INPUT_PORTS_START( nimbus )
INPUT_PORTS_END
-ADDRESS_MAP_START(rmnimbus_state::nimbus_iocpu_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rmnimbus_state::nimbus_iocpu_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x000FF) AM_READWRITE(nimbus_pc8031_iou_r, nimbus_pc8031_iou_w)
-ADDRESS_MAP_END
+void rmnimbus_state::nimbus_iocpu_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+}
+
+void rmnimbus_state::nimbus_iocpu_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x000FF).rw(this, FUNC(rmnimbus_state::nimbus_pc8031_iou_r), FUNC(rmnimbus_state::nimbus_pc8031_iou_w));
+}
MACHINE_CONFIG_START(rmnimbus_state::nimbus)
/* basic machine hardware */
diff --git a/src/mame/drivers/rmt32.cpp b/src/mame/drivers/rmt32.cpp
index 1b88a8516fd..9c8fd506a9d 100644
--- a/src/mame/drivers/rmt32.cpp
+++ b/src/mame/drivers/rmt32.cpp
@@ -332,23 +332,25 @@ PALETTE_INIT_MEMBER(mt32_state, mt32)
palette.set_pen_color(1, rgb_t(0, 255, 0));
}
-ADDRESS_MAP_START(mt32_state::mt32_map)
- AM_RANGE(0x0100, 0x0100) AM_WRITE(bank_w)
- AM_RANGE(0x0200, 0x0200) AM_WRITE(so_w)
- AM_RANGE(0x021a, 0x021a) AM_READ_PORT("SC0")
- AM_RANGE(0x021c, 0x021c) AM_READ_PORT("SC1")
- AM_RANGE(0x0300, 0x0300) AM_WRITE(lcd_data_w)
- AM_RANGE(0x0380, 0x0380) AM_READWRITE(lcd_ctrl_r, lcd_ctrl_w)
- AM_RANGE(0x1000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x1000)
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("fixed")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mt32_state::mt32_io)
- AM_RANGE(i8x9x_device::A7, i8x9x_device::A7) AM_READ_PORT("A7")
- AM_RANGE(i8x9x_device::SERIAL, i8x9x_device::SERIAL) AM_WRITE(midi_w)
- AM_RANGE(i8x9x_device::P0, i8x9x_device::P0) AM_READ(port0_r)
-ADDRESS_MAP_END
+void mt32_state::mt32_map(address_map &map)
+{
+ map(0x0100, 0x0100).w(this, FUNC(mt32_state::bank_w));
+ map(0x0200, 0x0200).w(this, FUNC(mt32_state::so_w));
+ map(0x021a, 0x021a).portr("SC0");
+ map(0x021c, 0x021c).portr("SC1");
+ map(0x0300, 0x0300).w(this, FUNC(mt32_state::lcd_data_w));
+ map(0x0380, 0x0380).rw(this, FUNC(mt32_state::lcd_ctrl_r), FUNC(mt32_state::lcd_ctrl_w));
+ map(0x1000, 0x7fff).rom().region("maincpu", 0x1000);
+ map(0x8000, 0xbfff).bankrw("bank");
+ map(0xc000, 0xffff).bankrw("fixed");
+}
+
+void mt32_state::mt32_io(address_map &map)
+{
+ map(i8x9x_device::A7, i8x9x_device::A7).portr("A7");
+ map(i8x9x_device::SERIAL, i8x9x_device::SERIAL).w(this, FUNC(mt32_state::midi_w));
+ map(i8x9x_device::P0, i8x9x_device::P0).r(this, FUNC(mt32_state::port0_r));
+}
MACHINE_CONFIG_START(mt32_state::mt32)
MCFG_CPU_ADD( "maincpu", P8098, XTAL(12'000'000) )
diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp
index 548ea2db785..fac614158cd 100644
--- a/src/mame/drivers/rockrage.cpp
+++ b/src/mame/drivers/rockrage.cpp
@@ -97,40 +97,43 @@ WRITE8_MEMBER(rockrage_state::rockrage_speech_w)
m_vlm->st((data >> 0) & 0x01);
}
-ADDRESS_MAP_START(rockrage_state::rockrage_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */
- AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */
- AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */
- AM_RANGE(0x2400, 0x247f) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
- AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */
- AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1")
- AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2")
- AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2")
- AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1")
- AM_RANGE(0x2e80, 0x2e80) AM_WRITE(rockrage_sh_irqtrigger_w) /* cause interrupt on audio CPU */
- AM_RANGE(0x2ec0, 0x2ec0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2f00, 0x2f00) AM_WRITE(rockrage_vreg_w) /* ??? */
- AM_RANGE(0x2f40, 0x2f40) AM_WRITE(rockrage_bankswitch_w) /* bankswitch control */
- AM_RANGE(0x4000, 0x5fff) AM_RAM /* RAM */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rockrage_state::rockrage_sound_map)
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* VLM5030 */
- AM_RANGE(0x3000, 0x3000) AM_READ(rockrage_VLM5030_busy_r) /* VLM5030 */
- AM_RANGE(0x4000, 0x4000) AM_WRITE(rockrage_speech_w) /* VLM5030 */
- AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) /* YM 2151 */
- AM_RANGE(0x7000, 0x77ff) AM_RAM /* RAM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rockrage_state::rockrage_vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void rockrage_state::rockrage_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(m_k007342, FUNC(k007342_device::read), FUNC(k007342_device::write)); /* Color RAM + Video RAM */
+ map(0x2000, 0x21ff).rw(m_k007420, FUNC(k007420_device::read), FUNC(k007420_device::write)); /* Sprite RAM */
+ map(0x2200, 0x23ff).rw(m_k007342, FUNC(k007342_device::scroll_r), FUNC(k007342_device::scroll_w)); /* Scroll RAM */
+ map(0x2400, 0x247f).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+ map(0x2600, 0x2607).w(m_k007342, FUNC(k007342_device::vreg_w)); /* Video Registers */
+ map(0x2e00, 0x2e00).portr("SYSTEM");
+ map(0x2e01, 0x2e01).portr("P1");
+ map(0x2e02, 0x2e02).portr("P2");
+ map(0x2e03, 0x2e03).portr("DSW2");
+ map(0x2e40, 0x2e40).portr("DSW1");
+ map(0x2e80, 0x2e80).w(this, FUNC(rockrage_state::rockrage_sh_irqtrigger_w)); /* cause interrupt on audio CPU */
+ map(0x2ec0, 0x2ec0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2f00, 0x2f00).w(this, FUNC(rockrage_state::rockrage_vreg_w)); /* ??? */
+ map(0x2f40, 0x2f40).w(this, FUNC(rockrage_state::rockrage_bankswitch_w)); /* bankswitch control */
+ map(0x4000, 0x5fff).ram(); /* RAM */
+ map(0x6000, 0x7fff).bankr("rombank"); /* banked ROM */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void rockrage_state::rockrage_sound_map(address_map &map)
+{
+ map(0x2000, 0x2000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* VLM5030 */
+ map(0x3000, 0x3000).r(this, FUNC(rockrage_state::rockrage_VLM5030_busy_r)); /* VLM5030 */
+ map(0x4000, 0x4000).w(this, FUNC(rockrage_state::rockrage_speech_w)); /* VLM5030 */
+ map(0x5000, 0x5000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x6000, 0x6001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM 2151 */
+ map(0x7000, 0x77ff).ram(); /* RAM */
+ map(0x8000, 0xffff).rom(); /* ROM */
+}
+
+void rockrage_state::rockrage_vlm_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x7fff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/rocnrope.cpp b/src/mame/drivers/rocnrope.cpp
index 724df7fb41e..a67c0aefebe 100644
--- a/src/mame/drivers/rocnrope.cpp
+++ b/src/mame/drivers/rocnrope.cpp
@@ -60,25 +60,26 @@ WRITE_LINE_MEMBER(rocnrope_state::coin_counter_2_w)
*
*************************************/
-ADDRESS_MAP_START(rocnrope_state::rocnrope_map)
- AM_RANGE(0x3080, 0x3080) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3081, 0x3081) AM_READ_PORT("P1")
- AM_RANGE(0x3082, 0x3082) AM_READ_PORT("P2")
- AM_RANGE(0x3083, 0x3083) AM_READ_PORT("DSW1")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2")
- AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW3")
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4000, 0x402f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x4400, 0x442f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(rocnrope_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4c00, 0x4fff) AM_RAM_WRITE(rocnrope_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8080, 0x8087) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w)
- AM_RANGE(0x8182, 0x818d) AM_WRITE(rocnrope_interrupt_vector_w)
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void rocnrope_state::rocnrope_map(address_map &map)
+{
+ map(0x3080, 0x3080).portr("SYSTEM");
+ map(0x3081, 0x3081).portr("P1");
+ map(0x3082, 0x3082).portr("P2");
+ map(0x3083, 0x3083).portr("DSW1");
+ map(0x3000, 0x3000).portr("DSW2");
+ map(0x3100, 0x3100).portr("DSW3");
+ map(0x4000, 0x47ff).ram();
+ map(0x4000, 0x402f).ram().share("spriteram2");
+ map(0x4400, 0x442f).ram().share("spriteram");
+ map(0x4800, 0x4bff).ram().w(this, FUNC(rocnrope_state::rocnrope_colorram_w)).share("colorram");
+ map(0x4c00, 0x4fff).ram().w(this, FUNC(rocnrope_state::rocnrope_videoram_w)).share("videoram");
+ map(0x5000, 0x5fff).ram();
+ map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x8080, 0x8087).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x8100, 0x8100).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w));
+ map(0x8182, 0x818d).w(this, FUNC(rocnrope_state::rocnrope_interrupt_vector_w));
+ map(0x6000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp
index 0fcdbbaba6b..55d220d32b3 100644
--- a/src/mame/drivers/rohga.cpp
+++ b/src/mame/drivers/rohga.cpp
@@ -118,7 +118,6 @@
#include "includes/rohga.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "machine/decocrpt.h"
#include "sound/ym2151.h"
#include "screen.h"
@@ -160,157 +159,164 @@ WRITE16_MEMBER( rohga_state::ioprot_w )
}
-ADDRESS_MAP_START(rohga_state::rohga_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
-
- AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
-
- AM_RANGE(0x280000, 0x283fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */
+void rohga_state::rohga_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
- AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3")
+ map(0x200000, 0x20000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w));
+ map(0x240000, 0x24000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w));
- AM_RANGE(0x300000, 0x300001) AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */
- AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */
- AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w) /* Write 1111 for dma? (Or any value?) */
- AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* ? */
- AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_common", decocomn_device, priority_w)
- AM_RANGE(0x321100, 0x321101) AM_READ(rohga_irq_ack_r) /* Irq ack? Value not used */
+ map(0x280000, 0x283fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */
- AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
+ map(0x2c0000, 0x2c0001).portr("DSW3");
- AM_RANGE(0x3c8000, 0x3c9fff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf4_rowscroll")
+ map(0x300000, 0x300001).w(this, FUNC(rohga_state::rohga_buffer_spriteram16_w)); /* write 1 for sprite dma */
+ map(0x310000, 0x310009).nopw(); /* Palette control? */
+ map(0x31000a, 0x31000b).w(m_decocomn, FUNC(decocomn_device::palette_dma_w)); /* Write 1111 for dma? (Or any value?) */
+ map(0x320000, 0x320001).nopw(); /* ? */
+ map(0x322000, 0x322001).w(m_decocomn, FUNC(decocomn_device::priority_w));
+ map(0x321100, 0x321101).r(this, FUNC(rohga_state::rohga_irq_ack_r)); /* Irq ack? Value not used */
- AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x3e0000, 0x3e1fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */
-ADDRESS_MAP_END
+ map(0x3c0000, 0x3c1fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x3c2000, 0x3c2fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x3c4000, 0x3c4fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x3c6000, 0x3c6fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x3c8000, 0x3c9fff).ram().share("pf1_rowscroll");
+ map(0x3ca000, 0x3cafff).mirror(0x1000).ram().share("pf2_rowscroll");
+ map(0x3cc000, 0x3ccfff).mirror(0x1000).ram().share("pf3_rowscroll");
+ map(0x3ce000, 0x3cefff).mirror(0x1000).ram().share("pf4_rowscroll");
-ADDRESS_MAP_START(rohga_state::wizdfire_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+ map(0x3d0000, 0x3d07ff).ram().share("spriteram1");
+ map(0x3e0000, 0x3e1fff).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram");
+ map(0x3f0000, 0x3f3fff).ram(); /* Main ram */
+}
- AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x202fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x208000, 0x208fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x20a000, 0x20afff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x20b000, 0x20b3ff) AM_WRITEONLY /* ? Always 0 written */
- AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
+void rohga_state::wizdfire_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
+ map(0x200000, 0x200fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x202fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x208000, 0x208fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x20a000, 0x20afff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE("deco_common", decocomn_device, priority_w) /* Priority */
- AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */
- AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */
+ map(0x20b000, 0x20b3ff).writeonly(); /* ? Always 0 written */
+ map(0x20c000, 0x20c7ff).ram().share("pf3_rowscroll");
+ map(0x20e000, 0x20e7ff).ram().share("pf4_rowscroll");
- AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x350000, 0x350001) AM_DEVWRITE("spriteram1", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */
- AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x370000, 0x370001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */
+ map(0x300000, 0x30000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w));
+ map(0x310000, 0x31000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w));
- AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w)
+ map(0x320000, 0x320001).w(m_decocomn, FUNC(decocomn_device::priority_w)); /* Priority */
+ map(0x320002, 0x320003).nopw(); /* ? */
+ map(0x320004, 0x320005).w(this, FUNC(rohga_state::wizdfire_irq_ack_w)); /* VBL IRQ ack */
- AM_RANGE(0xfdc000, 0xffffff) AM_RAM
- AM_RANGE(0xfe4000, 0xfe7fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */
-ADDRESS_MAP_END
+ map(0x340000, 0x3407ff).ram().share("spriteram1");
+ map(0x350000, 0x350001).w("spriteram1", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */
+ map(0x360000, 0x3607ff).ram().share("spriteram2");
+ map(0x370000, 0x370001).w("spriteram2", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */
+ map(0x380000, 0x381fff).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram");
+ map(0x390008, 0x390009).w(m_decocomn, FUNC(decocomn_device::palette_dma_w));
-ADDRESS_MAP_START(rohga_state::nitrobal_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+ map(0xfdc000, 0xffffff).ram();
+ map(0xfe4000, 0xfe7fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */
+}
- AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x1000) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x2027ff) AM_MIRROR(0x800) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
+void rohga_state::nitrobal_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
+ map(0x200000, 0x200fff).mirror(0x1000).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x2027ff).mirror(0x800).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x208000, 0x2087ff).mirror(0x800).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x20a000, 0x20a7ff).mirror(0x800).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3") AM_DEVWRITE("deco_common", decocomn_device, priority_w) /* Priority */
- AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */
- AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */
+ map(0x204000, 0x2047ff).ram().share("pf1_rowscroll");
+ map(0x206000, 0x2067ff).ram().share("pf2_rowscroll");
+ map(0x20c000, 0x20c7ff).ram().share("pf3_rowscroll");
+ map(0x20e000, 0x20e7ff).ram().share("pf4_rowscroll");
- AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x350000, 0x350001) AM_DEVWRITE("spriteram1", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */
- AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x370000, 0x370001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */
+ map(0x300000, 0x30000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w));
+ map(0x310000, 0x31000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w));
- AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w)
+ map(0x320000, 0x320001).portr("DSW3").w(m_decocomn, FUNC(decocomn_device::priority_w)); /* Priority */
+ map(0x320002, 0x320003).nopw(); /* ? */
+ map(0x320004, 0x320005).w(this, FUNC(rohga_state::wizdfire_irq_ack_w)); /* VBL IRQ ack */
- AM_RANGE(0xfec000, 0xff3fff) AM_RAM
- AM_RANGE(0xff4000, 0xff7fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */
+ map(0x340000, 0x3407ff).ram().share("spriteram1");
+ map(0x350000, 0x350001).w("spriteram1", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */
+ map(0x360000, 0x3607ff).ram().share("spriteram2");
+ map(0x370000, 0x370001).w("spriteram2", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */
- AM_RANGE(0xff8000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x380000, 0x381fff).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram");
+ map(0x390008, 0x390009).w(m_decocomn, FUNC(decocomn_device::palette_dma_w));
+ map(0xfec000, 0xff3fff).ram();
+ map(0xff4000, 0xff7fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */
-ADDRESS_MAP_START(rohga_state::hotb_base_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
- AM_RANGE(0x280000, 0x283fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */
+ map(0xff8000, 0xffffff).ram();
+}
- AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3")
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW3") AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */
- AM_RANGE(0x310002, 0x310003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */
- AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w) /* Write 1111 for dma? (Or any value?) */
- AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* bit 4: cleared on irq routine start, set on end */
- AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_common", decocomn_device, priority_w)
- AM_RANGE(0x321100, 0x321101) AM_WRITE(wizdfire_irq_ack_w) /* Irq ack? Value not used */
-
- AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x3c8000, 0x3c9fff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf3_rowscroll")
- AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf4_rowscroll")
- AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
+void rohga_state::hotb_base_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w));
+ map(0x240000, 0x24000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w));
+ map(0x280000, 0x283fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */
+
+ map(0x2c0000, 0x2c0001).portr("DSW3");
+ map(0x300000, 0x300001).portr("DSW3").w(this, FUNC(rohga_state::rohga_buffer_spriteram16_w)); /* write 1 for sprite dma */
+ map(0x310002, 0x310003).portr("SYSTEM");
+ map(0x310000, 0x310009).nopw(); /* Palette control? */
+ map(0x31000a, 0x31000b).w(m_decocomn, FUNC(decocomn_device::palette_dma_w)); /* Write 1111 for dma? (Or any value?) */
+ map(0x320000, 0x320001).nopw(); /* bit 4: cleared on irq routine start, set on end */
+ map(0x322000, 0x322001).w(m_decocomn, FUNC(decocomn_device::priority_w));
+ map(0x321100, 0x321101).w(this, FUNC(rohga_state::wizdfire_irq_ack_w)); /* Irq ack? Value not used */
+
+ map(0x3c0000, 0x3c1fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x3c2000, 0x3c2fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x3c4000, 0x3c4fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x3c6000, 0x3c6fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x3c8000, 0x3c9fff).ram().share("pf1_rowscroll");
+ map(0x3ca000, 0x3cafff).mirror(0x1000).ram().share("pf2_rowscroll");
+ map(0x3cc000, 0x3ccfff).mirror(0x1000).ram().share("pf3_rowscroll");
+ map(0x3ce000, 0x3cefff).mirror(0x1000).ram().share("pf4_rowscroll");
+
+ map(0x3d0000, 0x3d07ff).ram().share("spriteram1");
+ map(0x3e0000, 0x3e1fff).mirror(0x2000).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram");
+}
-ADDRESS_MAP_START(rohga_state::schmeisr_map)
- AM_IMPORT_FROM(hotb_base_map)
- AM_RANGE(0xff0000, 0xff7fff) AM_RAM /* Main ram */
-ADDRESS_MAP_END
+void rohga_state::schmeisr_map(address_map &map)
+{
+ hotb_base_map(map);
+ map(0xff0000, 0xff7fff).ram(); /* Main ram */
+}
-ADDRESS_MAP_START(rohga_state::hangzo_map)
- AM_IMPORT_FROM(hotb_base_map)
- AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */
-ADDRESS_MAP_END
+void rohga_state::hangzo_map(address_map &map)
+{
+ hotb_base_map(map);
+ map(0x3f0000, 0x3f3fff).ram(); /* Main ram */
+}
/******************************************************************************/
-ADDRESS_MAP_START(rohga_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_NOP
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void rohga_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).noprw();
+ map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r));
+ map(0x1f0000, 0x1f1fff).ram();
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/**********************************************************************************/
diff --git a/src/mame/drivers/rollerg.cpp b/src/mame/drivers/rollerg.cpp
index 980abd2a129..231dd47e2a1 100644
--- a/src/mame/drivers/rollerg.cpp
+++ b/src/mame/drivers/rollerg.cpp
@@ -77,35 +77,37 @@ READ8_MEMBER(rollerg_state::pip_r)
return 0x7f;
}
-ADDRESS_MAP_START(rollerg_state::rollerg_map)
- AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
- AM_RANGE(0x0020, 0x0020) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w)
- AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write)
- AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
- AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1")
- AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2")
- AM_RANGE(0x0052, 0x0052) AM_READ_PORT("DSW3")
- AM_RANGE(0x0053, 0x0053) AM_READ_PORT("DSW1")
- AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSW2")
- AM_RANGE(0x0061, 0x0061) AM_READ(pip_r) /* ????? */
- AM_RANGE(0x0100, 0x010f) AM_DEVREADWRITE("k053252", k053252_device, read, write) /* 053252? */
- AM_RANGE(0x0200, 0x020f) AM_DEVWRITE("k051316", k051316_device, ctrl_w)
- AM_RANGE(0x0300, 0x030f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w)
- AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_k051316_r) AM_DEVWRITE("k051316", k051316_device, write)
- AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w)
- AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2000, 0x3aff) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rollerg_state::rollerg_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
-ADDRESS_MAP_END
+void rollerg_state::rollerg_map(address_map &map)
+{
+ map(0x0010, 0x0010).w(this, FUNC(rollerg_state::rollerg_0010_w));
+ map(0x0020, 0x0020).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w));
+ map(0x0030, 0x0031).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write));
+ map(0x0040, 0x0040).w(this, FUNC(rollerg_state::soundirq_w));
+ map(0x0050, 0x0050).portr("P1");
+ map(0x0051, 0x0051).portr("P2");
+ map(0x0052, 0x0052).portr("DSW3");
+ map(0x0053, 0x0053).portr("DSW1");
+ map(0x0060, 0x0060).portr("DSW2");
+ map(0x0061, 0x0061).r(this, FUNC(rollerg_state::pip_r)); /* ????? */
+ map(0x0100, 0x010f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); /* 053252? */
+ map(0x0200, 0x020f).w(m_k051316, FUNC(k051316_device::ctrl_w));
+ map(0x0300, 0x030f).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w));
+ map(0x0800, 0x0fff).r(this, FUNC(rollerg_state::rollerg_k051316_r)).w(m_k051316, FUNC(k051316_device::write));
+ map(0x1000, 0x17ff).rw(m_k053244, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w));
+ map(0x1800, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0x2000, 0x3aff).ram();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+void rollerg_state::rollerg_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa02f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xfc00, 0xfc00).w(this, FUNC(rollerg_state::sound_arm_nmi_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/rollext.cpp b/src/mame/drivers/rollext.cpp
index 584c35e486c..98b8a732516 100644
--- a/src/mame/drivers/rollext.cpp
+++ b/src/mame/drivers/rollext.cpp
@@ -509,16 +509,17 @@ WRITE32_MEMBER(rollext_state::cmd_callback)
// Master Processor memory map
-ADDRESS_MAP_START(rollext_state::memmap)
- AM_RANGE(0x40000000, 0x40ffffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x60000000, 0x600fffff) AM_RAM AM_SHARE("disp_ram")
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM AM_SHARE("palette_ram")
- AM_RANGE(0x90000000, 0x9007ffff) AM_RAM AM_SHARE("texture_mask")
- AM_RANGE(0xa0000000, 0xa00000ff) AM_READWRITE(a0000000_r, a0000000_w)
- AM_RANGE(0xb0000000, 0xb0000007) AM_READ(b0000000_r)
- AM_RANGE(0xc0000000, 0xc03fffff) AM_ROM AM_REGION("rom1", 0)
- AM_RANGE(0xff000000, 0xffffffff) AM_RAM AM_REGION("rom0", 0)
-ADDRESS_MAP_END
+void rollext_state::memmap(address_map &map)
+{
+ map(0x40000000, 0x40ffffff).ram().share("main_ram");
+ map(0x60000000, 0x600fffff).ram().share("disp_ram");
+ map(0x80000000, 0x8000ffff).ram().share("palette_ram");
+ map(0x90000000, 0x9007ffff).ram().share("texture_mask");
+ map(0xa0000000, 0xa00000ff).rw(this, FUNC(rollext_state::a0000000_r), FUNC(rollext_state::a0000000_w));
+ map(0xb0000000, 0xb0000007).r(this, FUNC(rollext_state::b0000000_r));
+ map(0xc0000000, 0xc03fffff).rom().region("rom1", 0);
+ map(0xff000000, 0xffffffff).ram().region("rom0", 0);
+}
static INPUT_PORTS_START(rollext)
diff --git a/src/mame/drivers/rollrace.cpp b/src/mame/drivers/rollrace.cpp
index d008efa9219..63796fa993b 100644
--- a/src/mame/drivers/rollrace.cpp
+++ b/src/mame/drivers/rollrace.cpp
@@ -64,36 +64,38 @@ WRITE_LINE_MEMBER(rollrace_state::coin_counter_2_w)
machine().bookkeeping().coin_counter_w(1, state);
}
-ADDRESS_MAP_START(rollrace_state::rollrace_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROM /* only rollace2 */
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/
- AM_RANGE(0xd900, 0xd900) AM_READWRITE(fake_d800_r,fake_d800_w) /* protection ??*/
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe47f) AM_RAM_WRITE(cram_w) AM_SHARE("colorram")
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/
- AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf400, 0xf400) AM_WRITE(backgroundcolor_w)
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bkgpen_w)
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(backgroundpage_w)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(flipy_w)
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(rollrace_state::rollrace_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_nmi_mask_w)
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void rollrace_state::rollrace_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).rom(); /* only rollace2 */
+ map(0xc000, 0xcfff).ram();
+ map(0xd806, 0xd806).nopr(); /* looks like a watchdog, bit4 checked*/
+ map(0xd900, 0xd900).rw(this, FUNC(rollrace_state::fake_d800_r), FUNC(rollrace_state::fake_d800_w)); /* protection ??*/
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(rollrace_state::vram_w)).share("videoram");
+ map(0xe400, 0xe47f).ram().w(this, FUNC(rollrace_state::cram_w)).share("colorram");
+ map(0xe800, 0xe800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xec00, 0xec0f).noprw(); /* Analog sound effects ?? ec00 sound enable ?*/
+ map(0xf000, 0xf0ff).ram().share("spriteram");
+ map(0xf400, 0xf400).w(this, FUNC(rollrace_state::backgroundcolor_w));
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2").w(this, FUNC(rollrace_state::bkgpen_w));
+ map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(rollrace_state::backgroundpage_w));
+ map(0xf803, 0xf803).w(this, FUNC(rollrace_state::flipy_w));
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+
+void rollrace_state::rollrace_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x2fff).ram();
+ map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(rollrace_state::sound_nmi_mask_w));
+ map(0x4000, 0x4001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x5000, 0x5001).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).w("ay3", FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( rollrace )
diff --git a/src/mame/drivers/ron.cpp b/src/mame/drivers/ron.cpp
index 257c4a5d733..082cb239050 100644
--- a/src/mame/drivers/ron.cpp
+++ b/src/mame/drivers/ron.cpp
@@ -195,31 +195,35 @@ WRITE8_MEMBER(ron_state::sound_cmd_w)
m_audiocpu->set_input_line(INPUT_LINE_RESET, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
}
-ADDRESS_MAP_START(ron_state::ron_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x8400, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("cram")
- AM_RANGE(0x8c00, 0x8fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ron_state::ron_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x01) AM_READ(p1_mux_r)
- AM_RANGE(0x02, 0x03) AM_READ(p2_mux_r)
- AM_RANGE(0x03, 0x03) AM_WRITE(mux_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(sound_cmd_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(output_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ron_state::ron_audio_map)
- AM_RANGE(0x0000,0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ron_state::ron_audio_io)
-
-ADDRESS_MAP_END
+void ron_state::ron_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x8000, 0x83ff).ram().share("vram");
+ map(0x8400, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().share("cram");
+ map(0x8c00, 0x8fff).ram();
+}
+
+void ron_state::ron_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x01).r(this, FUNC(ron_state::p1_mux_r));
+ map(0x02, 0x03).r(this, FUNC(ron_state::p2_mux_r));
+ map(0x03, 0x03).w(this, FUNC(ron_state::mux_w));
+ map(0x07, 0x07).w(this, FUNC(ron_state::sound_cmd_w));
+ map(0x0a, 0x0a).w(this, FUNC(ron_state::output_w));
+}
+
+void ron_state::ron_audio_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void ron_state::ron_audio_io(address_map &map)
+{
+
+}
static INPUT_PORTS_START( ron )
PORT_START("IN0")
diff --git a/src/mame/drivers/rotaryf.cpp b/src/mame/drivers/rotaryf.cpp
index 193a932c1bb..810290d9e67 100644
--- a/src/mame/drivers/rotaryf.cpp
+++ b/src/mame/drivers/rotaryf.cpp
@@ -194,23 +194,25 @@ uint32_t rotaryf_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
}
-ADDRESS_MAP_START(rotaryf_state::rotaryf_map)
- AM_RANGE(0x0000, 0x17ff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x7000, 0x73ff) AM_MIRROR(0x0c00) AM_RAM
- AM_RANGE(0x8000, 0x9fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM /* writes 00, 18, 27, 3C, 7E, FE to A019, A039, A059... A179 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rotaryf_state::rotaryf_io_map)
- AM_RANGE(0x02, 0x02) AM_WRITENOP
- AM_RANGE(0x04, 0x04) AM_WRITENOP
- AM_RANGE(0x07, 0x07) AM_WRITENOP
- AM_RANGE(0x20, 0x20) AM_WRITENOP
- AM_RANGE(0x21, 0x21) AM_READ_PORT("COIN") AM_WRITENOP
- AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW")
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x30, 0x30) AM_WRITE(port30_w)
-ADDRESS_MAP_END
+void rotaryf_state::rotaryf_map(address_map &map)
+{
+ map(0x0000, 0x17ff).mirror(0x4000).rom();
+ map(0x7000, 0x73ff).mirror(0x0c00).ram();
+ map(0x8000, 0x9fff).mirror(0x4000).ram().share("videoram");
+ map(0xa000, 0xa1ff).ram(); /* writes 00, 18, 27, 3C, 7E, FE to A019, A039, A059... A179 */
+}
+
+void rotaryf_state::rotaryf_io_map(address_map &map)
+{
+ map(0x02, 0x02).nopw();
+ map(0x04, 0x04).nopw();
+ map(0x07, 0x07).nopw();
+ map(0x20, 0x20).nopw();
+ map(0x21, 0x21).portr("COIN").nopw();
+ map(0x26, 0x26).portr("DSW");
+ map(0x28, 0x2b).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x30, 0x30).w(this, FUNC(rotaryf_state::port30_w));
+}
static INPUT_PORTS_START( rotaryf )
diff --git a/src/mame/drivers/roul.cpp b/src/mame/drivers/roul.cpp
index 963d4246ec6..5f6d031b23b 100644
--- a/src/mame/drivers/roul.cpp
+++ b/src/mame/drivers/roul.cpp
@@ -204,32 +204,36 @@ WRITE8_MEMBER(roul_state::ball_w)
m_lamp_old = lamp;
}
-ADDRESS_MAP_START(roul_state::roul_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(roul_state::roul_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf4) AM_WRITE(blitter_cmd_w)
- AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r)
- AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW")
- AM_RANGE(0xf9, 0xf9) AM_WRITE(ball_w)
- AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN0")
- AM_RANGE(0xfd, 0xfd) AM_READ_PORT("IN1")
- AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(roul_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(roul_state::sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void roul_state::roul_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().share("nvram");
+}
+
+void roul_state::roul_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf4).w(this, FUNC(roul_state::blitter_cmd_w));
+ map(0xf5, 0xf5).r(this, FUNC(roul_state::blitter_status_r));
+ map(0xf8, 0xf8).portr("DSW");
+ map(0xf9, 0xf9).w(this, FUNC(roul_state::ball_w));
+ map(0xfa, 0xfa).portr("IN0");
+ map(0xfd, 0xfd).portr("IN1");
+ map(0xfe, 0xfe).w(this, FUNC(roul_state::sound_latch_w));
+}
+
+void roul_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram();
+}
+
+void roul_state::sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
void roul_state::video_start()
{
diff --git a/src/mame/drivers/route16.cpp b/src/mame/drivers/route16.cpp
index 6d4d5a02cdb..d7abaa945ed 100644
--- a/src/mame/drivers/route16.cpp
+++ b/src/mame/drivers/route16.cpp
@@ -217,81 +217,89 @@ WRITE8_MEMBER(route16_state::speakres_out2_w)
*
*************************************/
-ADDRESS_MAP_START(route16_state::route16_cpu1_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3001) AM_READ(route16_prot_read)
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(route16_sharedram_w<true>) AM_SHARE("sharedram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w)
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2")
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::routex_cpu1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(route16_sharedram_w<true>) AM_SHARE("sharedram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w)
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2")
- AM_RANGE(0x6400, 0x6400) AM_READ(routex_prot_read)
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::stratvox_cpu1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w)
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2")
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::speakres_cpu1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w)
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w)
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE(speakres_out2_w)
- AM_RANGE(0x6000, 0x6000) AM_READ(speakres_in3_r)
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::ttmahjng_cpu1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w)
- AM_RANGE(0x5000, 0x5000) AM_READ(ttmahjng_p2_matrix_r) AM_WRITE(out1_w)
- AM_RANGE(0x5800, 0x5800) AM_READWRITE(ttmahjng_p1_matrix_r, ttmahjng_input_port_matrix_w)
- AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0x6900, 0x6900) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::route16_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(route16_sharedram_w<false>) AM_SHARE("sharedram")
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::stratvox_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(route16_state::cpu1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1ff)
- AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x00ff) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0x0100, 0x0100) AM_MIRROR(0x00ff) AM_DEVWRITE("ay8910", ay8910_device, address_w)
-ADDRESS_MAP_END
+void route16_state::route16_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x3000, 0x3001).r(this, FUNC(route16_state::route16_prot_read));
+ map(0x4000, 0x43ff).ram().w(this, FUNC(route16_state::route16_sharedram_w<true>)).share("sharedram");
+ map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w));
+ map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w));
+ map(0x5800, 0x5800).portr("P2");
+ map(0x8000, 0xbfff).ram().share("videoram1");
+}
+
+
+void route16_state::routex_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().w(this, FUNC(route16_state::route16_sharedram_w<true>)).share("sharedram");
+ map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w));
+ map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w));
+ map(0x5800, 0x5800).portr("P2");
+ map(0x6400, 0x6400).r(this, FUNC(route16_state::routex_prot_read));
+ map(0x8000, 0xbfff).ram().share("videoram1");
+}
+
+
+void route16_state::stratvox_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().share("sharedram");
+ map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w));
+ map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w));
+ map(0x5800, 0x5800).portr("P2");
+ map(0x8000, 0xbfff).ram().share("videoram1");
+}
+
+
+void route16_state::speakres_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().share("sharedram");
+ map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w));
+ map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w));
+ map(0x5800, 0x5800).portr("P2").w(this, FUNC(route16_state::speakres_out2_w));
+ map(0x6000, 0x6000).r(this, FUNC(route16_state::speakres_in3_r));
+ map(0x8000, 0xbfff).ram().share("videoram1");
+}
+
+
+void route16_state::ttmahjng_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().share("sharedram");
+ map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w));
+ map(0x5000, 0x5000).r(this, FUNC(route16_state::ttmahjng_p2_matrix_r)).w(this, FUNC(route16_state::out1_w));
+ map(0x5800, 0x5800).rw(this, FUNC(route16_state::ttmahjng_p1_matrix_r), FUNC(route16_state::ttmahjng_input_port_matrix_w));
+ map(0x6800, 0x6800).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0x6900, 0x6900).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0x8000, 0xbfff).ram().share("videoram1");
+}
+
+
+void route16_state::route16_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram().w(this, FUNC(route16_state::route16_sharedram_w<false>)).share("sharedram");
+ map(0x8000, 0xbfff).ram().share("videoram2");
+}
+
+
+void route16_state::stratvox_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2800, 0x2800).w("dac", FUNC(dac_byte_interface::write));
+ map(0x4000, 0x43ff).ram().share("sharedram");
+ map(0x8000, 0xbfff).ram().share("videoram2");
+}
+
+
+void route16_state::cpu1_io_map(address_map &map)
+{
+ map.global_mask(0x1ff);
+ map(0x0000, 0x0000).mirror(0x00ff).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0x0100, 0x0100).mirror(0x00ff).w("ay8910", FUNC(ay8910_device::address_w));
+}
diff --git a/src/mame/drivers/rowamet.cpp b/src/mame/drivers/rowamet.cpp
index e0b4685700a..11f5834cee2 100644
--- a/src/mame/drivers/rowamet.cpp
+++ b/src/mame/drivers/rowamet.cpp
@@ -64,33 +64,36 @@ private:
};
-ADDRESS_MAP_START(rowamet_state::rowamet_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x2800, 0x2800) AM_READ_PORT("X0")
- AM_RANGE(0x2801, 0x2801) AM_READ_PORT("X1")
- AM_RANGE(0x2802, 0x2802) AM_READ_PORT("X2")
- AM_RANGE(0x2803, 0x2803) AM_READ_PORT("X3")
- AM_RANGE(0x2804, 0x2804) AM_READ_PORT("X4")
- AM_RANGE(0x2805, 0x2805) AM_READ_PORT("X5")
- AM_RANGE(0x2806, 0x2806) AM_READ_PORT("X6")
- AM_RANGE(0x2807, 0x2807) AM_READ_PORT("X7")
- AM_RANGE(0x2808, 0x2808) AM_READ_PORT("X8")
- AM_RANGE(0x4000, 0x407f) AM_RAM
- AM_RANGE(0x4080, 0x408f) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x4090, 0x409f) AM_READWRITE(io_r,io_w)
- AM_RANGE(0x40a0, 0x40ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rowamet_state::rowamet_sub_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x2000)
- AM_RANGE(0x1000, 0x17ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rowamet_state::rowamet_sub_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(sound_r,mute_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void rowamet_state::rowamet_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("roms", 0);
+ map(0x2800, 0x2800).portr("X0");
+ map(0x2801, 0x2801).portr("X1");
+ map(0x2802, 0x2802).portr("X2");
+ map(0x2803, 0x2803).portr("X3");
+ map(0x2804, 0x2804).portr("X4");
+ map(0x2805, 0x2805).portr("X5");
+ map(0x2806, 0x2806).portr("X6");
+ map(0x2807, 0x2807).portr("X7");
+ map(0x2808, 0x2808).portr("X8");
+ map(0x4000, 0x407f).ram();
+ map(0x4080, 0x408f).ram().share("ram");
+ map(0x4090, 0x409f).rw(this, FUNC(rowamet_state::io_r), FUNC(rowamet_state::io_w));
+ map(0x40a0, 0x40ff).ram();
+}
+
+void rowamet_state::rowamet_sub_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("roms", 0x2000);
+ map(0x1000, 0x17ff).ram();
+}
+
+void rowamet_state::rowamet_sub_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(rowamet_state::sound_r), FUNC(rowamet_state::mute_w));
+ map(0x01, 0x01).w("dac", FUNC(dac_byte_interface::write));
+}
static INPUT_PORTS_START( rowamet )
PORT_START("X0")
diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index c36bdcc9de3..54dddb28642 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -606,217 +606,240 @@ WRITE8_MEMBER(royalmah_state::mjclub_bank_w)
}
-ADDRESS_MAP_START(royalmah_state::royalmah_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITENOP
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) // banked ROMs not present in royalmah
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::mjapinky_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITENOP
- AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x7800, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" )
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
- AM_RANGE( 0x8000, 0x8000 ) AM_READ(mjapinky_dsw_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::tahjong_map)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_WRITENOP
- AM_RANGE( 0x4000, 0x6fff ) AM_ROMBANK("mainbank")
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-
-
-
-ADDRESS_MAP_START(royalmah_state::royalmah_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::ippatsu_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2")
- AM_RANGE( 0x13, 0x13 ) AM_READ_PORT("DSW3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::janyoup2_iomap)
- AM_IMPORT_FROM( ippatsu_iomap )
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x21, 0x21) AM_DEVWRITE("crtc", mc6845_device, register_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::seljan_map)
- AM_RANGE( 0x0000, 0x8fff ) AM_ROM AM_WRITENOP
- AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::seljan_iomap)
- AM_RANGE( 0x0001, 0x0001 ) AM_MIRROR(0x7f00) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x0002, 0x0003 ) AM_MIRROR(0x7f00) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x0010, 0x0010 ) AM_MIRROR(0x7f00) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x0011, 0x0011 ) AM_MIRROR(0x7f00) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x0012, 0x0012 ) AM_MIRROR(0x7f00) AM_READ_PORT("DSW2") AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE( 0x0013, 0x0013 ) AM_MIRROR(0x7f00) AM_READ_PORT("DSW3") AM_DEVWRITE("crtc", mc6845_device, register_w)
+void royalmah_state::royalmah_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom().nopw();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).bankr("mainbank"); // banked ROMs not present in royalmah
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
+
+void royalmah_state::mjapinky_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom().nopw();
+ map(0x7000, 0x77ff).ram().share("nvram");
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("mainbank");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+ map(0x8000, 0x8000).r(this, FUNC(royalmah_state::mjapinky_dsw_r));
+}
+
+void royalmah_state::tahjong_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw();
+ map(0x4000, 0x6fff).bankr("mainbank");
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
+
+
+
+
+void royalmah_state::royalmah_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+}
+
+void royalmah_state::ippatsu_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x12, 0x12).portr("DSW2");
+ map(0x13, 0x13).portr("DSW3");
+}
+
+void royalmah_state::janyoup2_iomap(address_map &map)
+{
+ ippatsu_iomap(map);
+ map(0x20, 0x20).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x21, 0x21).w("crtc", FUNC(mc6845_device::register_w));
+}
+
+void royalmah_state::seljan_map(address_map &map)
+{
+ map(0x0000, 0x8fff).rom().nopw();
+ map(0xe000, 0xefff).ram().share("nvram");
+}
+
+void royalmah_state::seljan_iomap(address_map &map)
+{
+ map(0x0001, 0x0001).mirror(0x7f00).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x0002, 0x0003).mirror(0x7f00).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x0010, 0x0010).mirror(0x7f00).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x0011, 0x0011).mirror(0x7f00).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x0012, 0x0012).mirror(0x7f00).portr("DSW2").w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0013, 0x0013).mirror(0x7f00).portr("DSW3").w("crtc", FUNC(mc6845_device::register_w));
// TODO: following actually starts at 0x8000, needs custom 6845 routine because it uses start address register.
- AM_RANGE( 0x7e00, 0xffff ) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::tahjong_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x12, 0x12 ) AM_WRITE(tahjong_bank_w)
- AM_RANGE( 0x13, 0x13 ) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::suzume_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x80, 0x80 ) AM_READ(suzume_dsw_r )
- AM_RANGE( 0x81, 0x81 ) AM_WRITE(suzume_bank_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::mjyarou_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::dondenmj_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW2") // DSW2
- AM_RANGE( 0x86, 0x86 ) AM_READ_PORT("DSW3") // DSW3
- AM_RANGE( 0x87, 0x87 ) AM_WRITE(dynax_bank_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::makaijan_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("DSW2") // DSW2
- AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW3") // DSW3
- AM_RANGE( 0x86, 0x86 ) AM_WRITE(dynax_bank_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::daisyari_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0xc0, 0xc0 ) AM_READWRITE(daisyari_dsw_r, daisyari_bank_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::mjclub_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_READWRITE(mjclub_dsw_r, mjclub_bank_w )
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::mjdiplob_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x61, 0x61 ) AM_WRITE(tontonb_bank_w)
- AM_RANGE( 0x62, 0x62 ) AM_READ_PORT("DSW2") // DSW2
- AM_RANGE( 0x63, 0x63 ) AM_READ_PORT("DSW3") // DSW3
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::tontonb_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x44, 0x44 ) AM_WRITE(tontonb_bank_w )
- AM_RANGE( 0x46, 0x46 ) AM_READ_PORT("DSW2") // DSW2
- AM_RANGE( 0x47, 0x47 ) AM_READ_PORT("DSW3") // DSW3
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::majs101b_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x00, 0x00 ) AM_READWRITE(majs101b_dsw_r, dynax_bank_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::mjderngr_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
+ map(0x7e00, 0xffff).ram().share("videoram");
+}
+
+void royalmah_state::tahjong_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x12, 0x12).w(this, FUNC(royalmah_state::tahjong_bank_w));
+ map(0x13, 0x13).portr("DSW2");
+}
+
+void royalmah_state::suzume_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x80, 0x80).r(this, FUNC(royalmah_state::suzume_dsw_r));
+ map(0x81, 0x81).w(this, FUNC(royalmah_state::suzume_bank_w));
+}
+
+void royalmah_state::mjyarou_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x12, 0x12).portr("DSW2");
+}
+
+void royalmah_state::dondenmj_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x85, 0x85).portr("DSW2"); // DSW2
+ map(0x86, 0x86).portr("DSW3"); // DSW3
+ map(0x87, 0x87).w(this, FUNC(royalmah_state::dynax_bank_w));
+}
+
+void royalmah_state::makaijan_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x84, 0x84).portr("DSW2"); // DSW2
+ map(0x85, 0x85).portr("DSW3"); // DSW3
+ map(0x86, 0x86).w(this, FUNC(royalmah_state::dynax_bank_w));
+}
+
+void royalmah_state::daisyari_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0xc0, 0xc0).rw(this, FUNC(royalmah_state::daisyari_dsw_r), FUNC(royalmah_state::daisyari_bank_w));
+}
+
+void royalmah_state::mjclub_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(royalmah_state::mjclub_dsw_r), FUNC(royalmah_state::mjclub_bank_w));
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+}
+
+void royalmah_state::mjdiplob_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x61, 0x61).w(this, FUNC(royalmah_state::tontonb_bank_w));
+ map(0x62, 0x62).portr("DSW2"); // DSW2
+ map(0x63, 0x63).portr("DSW3"); // DSW3
+}
+
+void royalmah_state::tontonb_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x44, 0x44).w(this, FUNC(royalmah_state::tontonb_bank_w));
+ map(0x46, 0x46).portr("DSW2"); // DSW2
+ map(0x47, 0x47).portr("DSW3"); // DSW3
+}
+
+void royalmah_state::majs101b_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x00, 0x00).rw(this, FUNC(royalmah_state::majs101b_dsw_r), FUNC(royalmah_state::dynax_bank_w));
+}
+
+void royalmah_state::mjderngr_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
// AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1")
- AM_RANGE( 0x10, 0x10 ) AM_WRITE(mjderngr_coin_w ) // palette bank is set separately
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(dynax_bank_w )
- AM_RANGE( 0x40, 0x40 ) AM_READ_PORT("DSW2")
- AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT("DSW1")
- AM_RANGE( 0x60, 0x60 ) AM_WRITE(mjderngr_palbank_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::mjapinky_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_WRITE(mjapinky_bank_w )
- AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x04, 0x04 ) AM_READ_PORT("DSW2")
- AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(mjapinky_palbank_w )
- AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::janoh_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITENOP
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
+ map(0x10, 0x10).w(this, FUNC(royalmah_state::mjderngr_coin_w)); // palette bank is set separately
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x20, 0x20).w(this, FUNC(royalmah_state::dynax_bank_w));
+ map(0x40, 0x40).portr("DSW2");
+ map(0x4c, 0x4c).portr("DSW1");
+ map(0x60, 0x60).w(this, FUNC(royalmah_state::mjderngr_palbank_w));
+}
+
+void royalmah_state::mjapinky_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(royalmah_state::mjapinky_bank_w));
+ map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x04, 0x04).portr("DSW2");
+ map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::mjapinky_palbank_w));
+ map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+}
+
+void royalmah_state::janoh_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom().nopw();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
/* this CPU makes little sense - what is it for? why so many addresses accessed?
-- it puts a value in shared ram to allow the main CPU to boot, then.. ?
*/
-ADDRESS_MAP_START(royalmah_state::janoh_sub_map)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4100, 0x413f ) AM_RAM
- AM_RANGE( 0x6000, 0x607f ) AM_RAM
- AM_RANGE( 0x7000, 0x7000 ) AM_READNOP
- AM_RANGE( 0x7200, 0x7200 ) AM_WRITENOP
- AM_RANGE( 0xf000, 0xffff ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(royalmah_state::janoh_sub_iomap)
-ADDRESS_MAP_END
+void royalmah_state::janoh_sub_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4100, 0x413f).ram();
+ map(0x6000, 0x607f).ram();
+ map(0x7000, 0x7000).nopr();
+ map(0x7200, 0x7200).nopw();
+ map(0xf000, 0xffff).ram().share("nvram");
+}
+
+void royalmah_state::janoh_sub_iomap(address_map &map)
+{
+}
/****************************************************************************
Jansou
@@ -900,46 +923,50 @@ WRITE8_MEMBER(royalmah_state::jansou_sound_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(royalmah_state::jansou_map)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_WRITENOP
-
- AM_RANGE( 0x6000, 0x600f ) AM_WRITE(jansou_colortable_w)
- AM_RANGE( 0x6400, 0x6400 ) AM_WRITE(jansou_6400_w)
- AM_RANGE( 0x6401, 0x6401 ) AM_WRITE(jansou_6401_w)
- AM_RANGE( 0x6402, 0x6402 ) AM_WRITE(jansou_6402_w)
- AM_RANGE( 0x6403, 0x6403 ) AM_READ(jansou_6403_r)
- AM_RANGE( 0x6404, 0x6404 ) AM_READ(jansou_6404_r)
- AM_RANGE( 0x6405, 0x6405 ) AM_READ(jansou_6405_r)
- AM_RANGE( 0x6406, 0x6406 ) AM_WRITE(jansou_dsw_sel_w)
- AM_RANGE( 0x6407, 0x6407 ) AM_READ(jansou_dsw_r)
- AM_RANGE( 0x6800, 0x6800 ) AM_WRITE(jansou_sound_w)
-
- AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
+void royalmah_state::jansou_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().nopw();
+
+ map(0x6000, 0x600f).w(this, FUNC(royalmah_state::jansou_colortable_w));
+ map(0x6400, 0x6400).w(this, FUNC(royalmah_state::jansou_6400_w));
+ map(0x6401, 0x6401).w(this, FUNC(royalmah_state::jansou_6401_w));
+ map(0x6402, 0x6402).w(this, FUNC(royalmah_state::jansou_6402_w));
+ map(0x6403, 0x6403).r(this, FUNC(royalmah_state::jansou_6403_r));
+ map(0x6404, 0x6404).r(this, FUNC(royalmah_state::jansou_6404_r));
+ map(0x6405, 0x6405).r(this, FUNC(royalmah_state::jansou_6405_r));
+ map(0x6406, 0x6406).w(this, FUNC(royalmah_state::jansou_dsw_sel_w));
+ map(0x6407, 0x6407).r(this, FUNC(royalmah_state::jansou_dsw_r));
+ map(0x6800, 0x6800).w(this, FUNC(royalmah_state::jansou_sound_w));
+
+ map(0x7000, 0x77ff).ram().share("nvram");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
-ADDRESS_MAP_START(royalmah_state::jansou_sub_map)
- AM_RANGE( 0x0000, 0xffff ) AM_ROM AM_WRITENOP // tries to write to the stack at irq generation
-ADDRESS_MAP_END
+void royalmah_state::jansou_sub_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().nopw(); // tries to write to the stack at irq generation
+}
-ADDRESS_MAP_START(royalmah_state::jansou_sub_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void royalmah_state::jansou_sub_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac", FUNC(dac_byte_interface::write));
+}
/****************************************************************************
Janputer '96
****************************************************************************/
-ADDRESS_MAP_START(royalmah_state::janptr96_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") AM_SHARE("nvram") // nvram
- AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("rambank") // banked nvram
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("mainbank")
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
+void royalmah_state::janptr96_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).bankrw("bank3").share("nvram"); // nvram
+ map(0x7000, 0x7fff).bankrw("rambank"); // banked nvram
+ map(0x8000, 0xffff).bankr("mainbank");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
WRITE8_MEMBER(royalmah_state::janptr96_dswsel_w)
{
@@ -981,17 +1008,18 @@ WRITE8_MEMBER(royalmah_state::janptr96_coin_counter_w)
machine().bookkeeping().coin_counter_w(1,data & 1); // out
}
-ADDRESS_MAP_START(royalmah_state::janptr96_iomap)
- AM_RANGE( 0x00, 0x00 ) AM_MIRROR(0xff00) AM_WRITE(janptr96_rombank_w ) // BANK ROM Select
- AM_RANGE( 0x20, 0x20 ) AM_MIRROR(0xff00) AM_READWRITE(janptr96_unknown_r, janptr96_rambank_w )
- AM_RANGE( 0x50, 0x50 ) AM_MIRROR(0xff00) AM_WRITE(mjderngr_palbank_w )
- AM_RANGE( 0x60, 0x6f ) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0x81, 0x81 ) AM_MIRROR(0xff00) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x82, 0x83 ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x93, 0x93 ) AM_MIRROR(0xff00) AM_WRITE(input_port_select_w )
- AM_RANGE( 0xd8, 0xd8 ) AM_MIRROR(0xff00) AM_WRITE(janptr96_coin_counter_w )
- AM_RANGE( 0xd9, 0xd9 ) AM_MIRROR(0xff00) AM_READ_PORT("SYSTEM") AM_WRITENOP // second input select?
-ADDRESS_MAP_END
+void royalmah_state::janptr96_iomap(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff00).w(this, FUNC(royalmah_state::janptr96_rombank_w)); // BANK ROM Select
+ map(0x20, 0x20).mirror(0xff00).rw(this, FUNC(royalmah_state::janptr96_unknown_r), FUNC(royalmah_state::janptr96_rambank_w));
+ map(0x50, 0x50).mirror(0xff00).w(this, FUNC(royalmah_state::mjderngr_palbank_w));
+ map(0x60, 0x6f).mirror(0xff00).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x81, 0x81).mirror(0xff00).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x82, 0x83).mirror(0xff00).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x93, 0x93).mirror(0xff00).w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0xd8, 0xd8).mirror(0xff00).w(this, FUNC(royalmah_state::janptr96_coin_counter_w));
+ map(0xd9, 0xd9).mirror(0xff00).portr("SYSTEM").nopw(); // second input select?
+}
/****************************************************************************
Mahjong If
@@ -1056,13 +1084,14 @@ WRITE8_MEMBER(royalmah_state::mjifb_videoram_w)
m_videoram[offset + 0x4000] = data;
}
-ADDRESS_MAP_START(royalmah_state::mjifb_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjifb_rom_io_r, mjifb_rom_io_w) AM_SHARE("videoram")
- AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w)
+void royalmah_state::mjifb_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xbfff).rw(this, FUNC(royalmah_state::mjifb_rom_io_r), FUNC(royalmah_state::mjifb_rom_io_w)).share("videoram");
+ map(0xc000, 0xffff).rom().w(this, FUNC(royalmah_state::mjifb_videoram_w));
// AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITEONLY This should, but doesn't work
-ADDRESS_MAP_END
+}
READ8_MEMBER(royalmah_state::mjifb_p3_r)
{
@@ -1146,12 +1175,13 @@ WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w)
logerror("%04X: unmapped input write at %04X = %02X\n", m_maincpu->pc(), offset,data);
}
-ADDRESS_MAP_START(royalmah_state::mjdejavu_map)
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_SHARE("videoram")
- AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w)
-ADDRESS_MAP_END
+void royalmah_state::mjdejavu_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xbfff).rw(this, FUNC(royalmah_state::mjdejavu_rom_io_r), FUNC(royalmah_state::mjdejavu_rom_io_w)).share("videoram");
+ map(0xc000, 0xffff).rom().w(this, FUNC(royalmah_state::mjifb_videoram_w));
+}
/****************************************************************************
@@ -1178,21 +1208,22 @@ WRITE8_MEMBER(royalmah_state::mjtensin_6ff3_w)
mjtensin_update_rombank();
}
-ADDRESS_MAP_START(royalmah_state::mjtensin_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x6fbf ) AM_RAM
- AM_RANGE( 0x6fc1, 0x6fc1 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x6fc2, 0x6fc3 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x6fd0, 0x6fd0 ) AM_WRITE(janptr96_coin_counter_w )
- AM_RANGE( 0x6fd1, 0x6fd1 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x6fe0, 0x6fef ) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0x6ff0, 0x6ff0 ) AM_READWRITE(janptr96_dsw_r, janptr96_dswsel_w )
- AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE(mjderngr_palbank_w )
- AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE(mjtensin_6ff3_w )
- AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" )
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
+void royalmah_state::mjtensin_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fbf).ram();
+ map(0x6fc1, 0x6fc1).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x6fc2, 0x6fc3).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x6fd0, 0x6fd0).w(this, FUNC(royalmah_state::janptr96_coin_counter_w));
+ map(0x6fd1, 0x6fd1).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x6fe0, 0x6fef).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x6ff0, 0x6ff0).rw(this, FUNC(royalmah_state::janptr96_dsw_r), FUNC(royalmah_state::janptr96_dswsel_w));
+ map(0x6ff1, 0x6ff1).w(this, FUNC(royalmah_state::mjderngr_palbank_w));
+ map(0x6ff3, 0x6ff3).w(this, FUNC(royalmah_state::mjtensin_6ff3_w));
+ map(0x7000, 0x7fff).ram().share("nvram");
+ map(0x8000, 0xffff).bankr("mainbank");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
/****************************************************************************
@@ -1241,23 +1272,24 @@ WRITE8_MEMBER(royalmah_state::cafetime_7fe3_w)
// popmessage("%02x",data);
}
-ADDRESS_MAP_START(royalmah_state::cafetime_map)
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM
- AM_RANGE( 0x6000, 0x7eff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x7fc1, 0x7fc1 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x7fc2, 0x7fc3 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE(janptr96_coin_counter_w )
- AM_RANGE( 0x7fd1, 0x7fd1 ) AM_READ_PORT("SYSTEM") AM_WRITENOP
- AM_RANGE( 0x7fd3, 0x7fd3 ) AM_WRITE(input_port_select_w )
- AM_RANGE( 0x7fe0, 0x7fe0 ) AM_READ(cafetime_dsw_r )
- AM_RANGE( 0x7fe1, 0x7fe1 ) AM_WRITE(cafetime_dsw_w )
- AM_RANGE( 0x7fe2, 0x7fe2 ) AM_WRITE(mjderngr_palbank_w )
- AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE(cafetime_7fe3_w )
- AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ(cafetime_7fe4_r )
- AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" )
- AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram")
-ADDRESS_MAP_END
+void royalmah_state::cafetime_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7eff).ram().share("nvram");
+ map(0x7fc1, 0x7fc1).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x7fc2, 0x7fc3).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x7fd0, 0x7fd0).w(this, FUNC(royalmah_state::janptr96_coin_counter_w));
+ map(0x7fd1, 0x7fd1).portr("SYSTEM").nopw();
+ map(0x7fd3, 0x7fd3).w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x7fe0, 0x7fe0).r(this, FUNC(royalmah_state::cafetime_dsw_r));
+ map(0x7fe1, 0x7fe1).w(this, FUNC(royalmah_state::cafetime_dsw_w));
+ map(0x7fe2, 0x7fe2).w(this, FUNC(royalmah_state::mjderngr_palbank_w));
+ map(0x7fe3, 0x7fe3).w(this, FUNC(royalmah_state::cafetime_7fe3_w));
+ map(0x7fe4, 0x7fe4).r(this, FUNC(royalmah_state::cafetime_7fe4_r));
+ map(0x7ff0, 0x7fff).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x8000, 0xffff).bankr("mainbank");
+ map(0x8000, 0xffff).writeonly().share("videoram");
+}
/****************************************************************************
@@ -1331,26 +1363,27 @@ READ8_MEMBER(royalmah_state::mjvegasa_12500_r)
return 0xff;
}
-ADDRESS_MAP_START(royalmah_state::mjvegasa_map)
+void royalmah_state::mjvegasa_map(address_map &map)
+{
- AM_RANGE( 0x00000, 0x05fff ) AM_ROM
- AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_SHARE("videoram")
+ map(0x00000, 0x05fff).rom();
+ map(0x06000, 0x07fff).ram().share("nvram");
+ map(0x08000, 0x0ffff).rw(this, FUNC(royalmah_state::mjvegasa_rom_io_r), FUNC(royalmah_state::mjvegasa_rom_io_w)).share("videoram");
- AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE( 0x10002, 0x10003 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE( 0x10010, 0x10010 ) AM_WRITE(mjvegasa_coin_counter_w )
- AM_RANGE( 0x10011, 0x10011 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w )
- AM_RANGE( 0x10013, 0x10013 ) AM_WRITE(input_port_select_w )
+ map(0x10001, 0x10001).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x10002, 0x10003).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x10010, 0x10010).w(this, FUNC(royalmah_state::mjvegasa_coin_counter_w));
+ map(0x10011, 0x10011).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w));
+ map(0x10013, 0x10013).w(this, FUNC(royalmah_state::input_port_select_w));
- AM_RANGE( 0x12000, 0x12000 ) AM_WRITE(mjvegasa_rombank_w )
- AM_RANGE( 0x12100, 0x12100 ) AM_READ(cafetime_dsw_r )
- AM_RANGE( 0x12200, 0x12200 ) AM_WRITE(cafetime_dsw_w )
- AM_RANGE( 0x12300, 0x12300 ) AM_WRITE(mjderngr_palbank_w )
- AM_RANGE( 0x12400, 0x12400 ) AM_WRITE(mjvegasa_12400_w )
- AM_RANGE( 0x12500, 0x12500 ) AM_READ(mjvegasa_12500_r )
+ map(0x12000, 0x12000).w(this, FUNC(royalmah_state::mjvegasa_rombank_w));
+ map(0x12100, 0x12100).r(this, FUNC(royalmah_state::cafetime_dsw_r));
+ map(0x12200, 0x12200).w(this, FUNC(royalmah_state::cafetime_dsw_w));
+ map(0x12300, 0x12300).w(this, FUNC(royalmah_state::mjderngr_palbank_w));
+ map(0x12400, 0x12400).w(this, FUNC(royalmah_state::mjvegasa_12400_w));
+ map(0x12500, 0x12500).r(this, FUNC(royalmah_state::mjvegasa_12500_r));
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/rpunch.cpp b/src/mame/drivers/rpunch.cpp
index e2de8364767..9a812c4c08b 100644
--- a/src/mame/drivers/rpunch.cpp
+++ b/src/mame/drivers/rpunch.cpp
@@ -202,24 +202,25 @@ WRITE8_MEMBER(rpunch_state::upd_data_w)
*
*************************************/
-ADDRESS_MAP_START(rpunch_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("bitmapram")
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(rpunch_scrollreg_w)
- AM_RANGE(0x0c0008, 0x0c0009) AM_SELECT(0x20) AM_WRITE8(rpunch_gga_w, 0x00ff)
- AM_RANGE(0x0c000c, 0x0c000d) AM_WRITE(rpunch_videoreg_w)
- AM_RANGE(0x0c000e, 0x0c000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0010, 0x0c0013) AM_WRITE(rpunch_ins_w)
- AM_RANGE(0x0c0018, 0x0c0019) AM_READ_PORT("P1")
- AM_RANGE(0x0c001a, 0x0c001b) AM_READ_PORT("P2")
- AM_RANGE(0x0c001c, 0x0c001d) AM_READ_PORT("DSW")
- AM_RANGE(0x0c001e, 0x0c001f) AM_READ(sound_busy_r)
- AM_RANGE(0x0fc000, 0x0fffff) AM_RAM
-ADDRESS_MAP_END
+void rpunch_state::main_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram().share("bitmapram");
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x080000, 0x083fff).ram().w(this, FUNC(rpunch_state::rpunch_videoram_w)).share("videoram");
+ map(0x0a0000, 0x0a07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0c0000, 0x0c0007).w(this, FUNC(rpunch_state::rpunch_scrollreg_w));
+ map(0x0c0009, 0x0c0009).select(0x20).w(this, FUNC(rpunch_state::rpunch_gga_w));
+ map(0x0c000c, 0x0c000d).w(this, FUNC(rpunch_state::rpunch_videoreg_w));
+ map(0x0c000f, 0x0c000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0c0010, 0x0c0013).w(this, FUNC(rpunch_state::rpunch_ins_w));
+ map(0x0c0018, 0x0c0019).portr("P1");
+ map(0x0c001a, 0x0c001b).portr("P2");
+ map(0x0c001c, 0x0c001d).portr("DSW");
+ map(0x0c001e, 0x0c001f).r(this, FUNC(rpunch_state::sound_busy_r));
+ map(0x0fc000, 0x0fffff).ram();
+}
@@ -229,14 +230,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(rpunch_state::sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf200, 0xf200) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf400, 0xf400) AM_WRITE(upd_control_w)
- AM_RANGE(0xf600, 0xf600) AM_WRITE(upd_data_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void rpunch_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf200, 0xf200).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf400, 0xf400).w(this, FUNC(rpunch_state::upd_control_w));
+ map(0xf600, 0xf600).w(this, FUNC(rpunch_state::upd_data_w));
+ map(0xf800, 0xffff).ram();
+}
diff --git a/src/mame/drivers/rsc55.cpp b/src/mame/drivers/rsc55.cpp
index 30717f254b0..ed1c71cc578 100644
--- a/src/mame/drivers/rsc55.cpp
+++ b/src/mame/drivers/rsc55.cpp
@@ -60,12 +60,14 @@ sc55_state::sc55_state(const machine_config &mconfig, device_type type, const ch
{
}
-ADDRESS_MAP_START(sc55_state::sc55_map)
- AM_RANGE(0x1000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x1000)
-ADDRESS_MAP_END
+void sc55_state::sc55_map(address_map &map)
+{
+ map(0x1000, 0x3fff).rom().region("maincpu", 0x1000);
+}
-ADDRESS_MAP_START(sc55_state::sc55_io)
-ADDRESS_MAP_END
+void sc55_state::sc55_io(address_map &map)
+{
+}
MACHINE_CONFIG_START(sc55_state::sc55)
MCFG_CPU_ADD( "maincpu", P8098, XTAL(20'000'000) ) // probably not?
diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp
index 54a72522247..db52bb8bf06 100644
--- a/src/mame/drivers/rt1715.cpp
+++ b/src/mame/drivers/rt1715.cpp
@@ -189,33 +189,37 @@ PALETTE_INIT_MEMBER(rt1715_state, rt1715)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(rt1715_state::rt1715_mem)
- AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank3")
- AM_RANGE(0x0800, 0xffff) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rt1715_state::rt1715_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("a71", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("a72", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("a30", z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("a29", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x18, 0x19) AM_DEVREADWRITE("a26", i8275_device, read, write)
- AM_RANGE(0x20, 0x20) AM_WRITE(rt1715_floppy_enable)
- AM_RANGE(0x28, 0x28) AM_WRITE(rt1715_rom_disable)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rt1715_state::k7658_mem)
- AM_RANGE(0x0000, 0xffff) AM_WRITE(k7658_data_w)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0xf800) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rt1715_state::k7658_io)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x8000) AM_READ(k7658_led1_r)
- AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x8000) AM_READ(k7658_led2_r)
- AM_RANGE(0x8000, 0x9fff) AM_READ(k7658_data_r)
-ADDRESS_MAP_END
+void rt1715_state::rt1715_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankr("bank1").bankw("bank3");
+ map(0x0800, 0xffff).bankrw("bank2");
+}
+
+void rt1715_state::rt1715_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ 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(this, FUNC(rt1715_state::rt1715_floppy_enable));
+ map(0x28, 0x28).w(this, FUNC(rt1715_state::rt1715_rom_disable));
+}
+
+void rt1715_state::k7658_mem(address_map &map)
+{
+ map(0x0000, 0xffff).w(this, FUNC(rt1715_state::k7658_data_w));
+ map(0x0000, 0x07ff).mirror(0xf800).rom();
+}
+
+void rt1715_state::k7658_io(address_map &map)
+{
+ map(0x2000, 0x2000).mirror(0x8000).r(this, FUNC(rt1715_state::k7658_led1_r));
+ map(0x4000, 0x4000).mirror(0x8000).r(this, FUNC(rt1715_state::k7658_led2_r));
+ map(0x8000, 0x9fff).r(this, FUNC(rt1715_state::k7658_data_r));
+}
/***************************************************************************
diff --git a/src/mame/drivers/runaway.cpp b/src/mame/drivers/runaway.cpp
index 714704aa235..329561dbc6e 100644
--- a/src/mame/drivers/runaway.cpp
+++ b/src/mame/drivers/runaway.cpp
@@ -82,27 +82,28 @@ WRITE8_MEMBER(runaway_state::runaway_irq_ack_w)
}
-ADDRESS_MAP_START(runaway_state::runaway_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(runaway_video_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0x1000, 0x1000) AM_WRITE(runaway_irq_ack_w)
- AM_RANGE(0x1400, 0x143f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(runaway_paletteram_w)
- AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* coin counter? */
- AM_RANGE(0x2001, 0x2001) AM_WRITENOP /* coin counter? */
- AM_RANGE(0x2003, 0x2004) AM_WRITE(runaway_led_w)
- AM_RANGE(0x2005, 0x2005) AM_WRITE(runaway_tile_bank_w)
-
- AM_RANGE(0x3000, 0x3007) AM_READ(runaway_input_r)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("4000")
- AM_RANGE(0x5000, 0x5000) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x7000, 0x700f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x8000, 0xcfff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM /* for the interrupt vectors */
-ADDRESS_MAP_END
+void runaway_state::runaway_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07bf).ram().w(this, FUNC(runaway_state::runaway_video_ram_w)).share("video_ram");
+ map(0x07c0, 0x07ff).ram().share("sprite_ram");
+ map(0x1000, 0x1000).w(this, FUNC(runaway_state::runaway_irq_ack_w));
+ map(0x1400, 0x143f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x1800, 0x1800).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x1c00, 0x1c0f).w(this, FUNC(runaway_state::runaway_paletteram_w));
+ map(0x2000, 0x2000).nopw(); /* coin counter? */
+ map(0x2001, 0x2001).nopw(); /* coin counter? */
+ map(0x2003, 0x2004).w(this, FUNC(runaway_state::runaway_led_w));
+ map(0x2005, 0x2005).w(this, FUNC(runaway_state::runaway_tile_bank_w));
+
+ map(0x3000, 0x3007).r(this, FUNC(runaway_state::runaway_input_r));
+ map(0x4000, 0x4000).portr("4000");
+ map(0x5000, 0x5000).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x6000, 0x600f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x7000, 0x700f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x8000, 0xcfff).rom();
+ map(0xf000, 0xffff).rom(); /* for the interrupt vectors */
+}
static INPUT_PORTS_START( qwak )
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index 400fae0b805..3d1f031db85 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -176,25 +176,26 @@ WRITE16_MEMBER(rungun_state::palette_write)
cur_paldevice.set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b));
}
-ADDRESS_MAP_START(rungun_state::rungun_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program + data
- AM_RANGE(0x300000, 0x3007ff) AM_READWRITE(palette_read,palette_write)
- AM_RANGE(0x380000, 0x39ffff) AM_RAM // work RAM
- AM_RANGE(0x400000, 0x43ffff) AM_READ8(rng_53936_rom_r,0x00ff) // '936 ROM readback window
- AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r, rng_sysregs_w) AM_SHARE("sysreg")
- AM_RANGE(0x4c0000, 0x4c001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU (for scanline and vblank polling)
- AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x580000, 0x58001f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00)
- AM_RANGE(0x5c0000, 0x5c000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // 246A ROM readback window
- AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w)
- AM_RANGE(0x600000, 0x601fff) AM_RAMBANK("spriteram_bank") // OBJ RAM
- AM_RANGE(0x640000, 0x640007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // '246A registers
- AM_RANGE(0x680000, 0x68001f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) // '936 registers
- AM_RANGE(0x6c0000, 0x6cffff) AM_READWRITE(rng_psac2_videoram_r,rng_psac2_videoram_w) // PSAC2 ('936) RAM (34v + 35v)
- AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) // PSAC "Line RAM"
- AM_RANGE(0x740000, 0x741fff) AM_READWRITE(rng_ttl_ram_r, rng_ttl_ram_w) // text plane RAM
- AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP // watchdog
-ADDRESS_MAP_END
+void rungun_state::rungun_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom(); // main program + data
+ map(0x300000, 0x3007ff).rw(this, FUNC(rungun_state::palette_read), FUNC(rungun_state::palette_write));
+ map(0x380000, 0x39ffff).ram(); // work RAM
+ map(0x400000, 0x43ffff).r(this, FUNC(rungun_state::rng_53936_rom_r)).umask16(0x00ff); // '936 ROM readback window
+ map(0x480000, 0x48001f).rw(this, FUNC(rungun_state::rng_sysregs_r), FUNC(rungun_state::rng_sysregs_w)).share("sysreg");
+ map(0x4c0000, 0x4c001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU (for scanline and vblank polling)
+ map(0x540000, 0x540001).w(this, FUNC(rungun_state::sound_irq_w));
+ map(0x580000, 0x58001f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00);
+ map(0x5c0000, 0x5c000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // 246A ROM readback window
+ map(0x5c0010, 0x5c001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w));
+ map(0x600000, 0x601fff).bankrw("spriteram_bank"); // OBJ RAM
+ map(0x640000, 0x640007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // '246A registers
+ map(0x680000, 0x68001f).w(m_k053936, FUNC(k053936_device::ctrl_w)); // '936 registers
+ map(0x6c0000, 0x6cffff).rw(this, FUNC(rungun_state::rng_psac2_videoram_r), FUNC(rungun_state::rng_psac2_videoram_w)); // PSAC2 ('936) RAM (34v + 35v)
+ map(0x700000, 0x7007ff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); // PSAC "Line RAM"
+ map(0x740000, 0x741fff).rw(this, FUNC(rungun_state::rng_ttl_ram_r), FUNC(rungun_state::rng_ttl_ram_w)); // text plane RAM
+ map(0x7c0000, 0x7c0001).nopw(); // watchdog
+}
/**********************************************************************************/
@@ -236,23 +237,25 @@ WRITE_LINE_MEMBER(rungun_state::k054539_nmi_gen)
/* sound (this should be split into audio/xexex.c or pregx.c or so someday) */
-ADDRESS_MAP_START(rungun_state::rungun_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539_1", k054539_device, read, write)
- AM_RANGE(0xe230, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write)
- AM_RANGE(0xe630, 0xe7ff) AM_RAM
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w)
- AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(rungun_state::rungun_k054539_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("k054539", 0)
-ADDRESS_MAP_END
+void rungun_state::rungun_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank2");
+ 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(this, FUNC(rungun_state::sound_ctrl_w));
+ map(0xfff0, 0xfff3).nopw();
+}
+
+
+void rungun_state::rungun_k054539_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("k054539", 0);
+}
static INPUT_PORTS_START( rng )
diff --git a/src/mame/drivers/rvoice.cpp b/src/mame/drivers/rvoice.cpp
index 0b21d8708c9..d24cb0b61ab 100644
--- a/src/mame/drivers/rvoice.cpp
+++ b/src/mame/drivers/rvoice.cpp
@@ -334,19 +334,21 @@ WRITE8_MEMBER(rvoice_state::main_hd63701_internal_registers_w)
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(rvoice_state::hd63701_main_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0027) AM_READWRITE(main_hd63701_internal_registers_r, main_hd63701_internal_registers_w) // INTERNAL REGS
- AM_RANGE(0x0040, 0x005f) AM_RAM // INTERNAL RAM (overlaps acia)
- AM_RANGE(0x0060, 0x007f) AM_DEVREADWRITE("acia65c51", mos6551_device, read, write) // ACIA 65C51
- AM_RANGE(0x0080, 0x013f) AM_RAM // INTERNAL RAM (overlaps acia)
- AM_RANGE(0x2000, 0x7fff) AM_RAM // EXTERNAL SRAM
- AM_RANGE(0x8000, 0xffff) AM_ROM // 27512 EPROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rvoice_state::hd63701_main_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void rvoice_state::hd63701_main_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0027).rw(this, FUNC(rvoice_state::main_hd63701_internal_registers_r), FUNC(rvoice_state::main_hd63701_internal_registers_w)); // INTERNAL REGS
+ map(0x0040, 0x005f).ram(); // INTERNAL RAM (overlaps acia)
+ map(0x0060, 0x007f).rw("acia65c51", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); // ACIA 65C51
+ map(0x0080, 0x013f).ram(); // INTERNAL RAM (overlaps acia)
+ map(0x2000, 0x7fff).ram(); // EXTERNAL SRAM
+ map(0x8000, 0xffff).rom(); // 27512 EPROM
+}
+
+void rvoice_state::hd63701_main_io(address_map &map)
+{
+ map.unmap_value_high();
+}
/******************************************************************************
diff --git a/src/mame/drivers/rx78.cpp b/src/mame/drivers/rx78.cpp
index 05d806feb06..ee68fb8589c 100644
--- a/src/mame/drivers/rx78.cpp
+++ b/src/mame/drivers/rx78.cpp
@@ -275,29 +275,31 @@ WRITE8_MEMBER( rx78_state::vdp_pri_mask_w )
}
-ADDRESS_MAP_START(rx78_state::rx78_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
+void rx78_state::rx78_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom().region("roms", 0);
//AM_RANGE(0x2000, 0x5fff) // mapped by the cartslot
- AM_RANGE(0x6000, 0xafff) AM_RAM //ext RAM
- AM_RANGE(0xb000, 0xebff) AM_RAM
- AM_RANGE(0xec00, 0xffff) AM_READWRITE(vram_r, vram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rx78_state::rx78_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+ map(0x6000, 0xafff).ram(); //ext RAM
+ map(0xb000, 0xebff).ram();
+ map(0xec00, 0xffff).rw(this, FUNC(rx78_state::vram_r), FUNC(rx78_state::vram_w));
+}
+
+void rx78_state::rx78_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// AM_RANGE(0xe2, 0xe2) AM_READNOP AM_WRITENOP //printer
// AM_RANGE(0xe3, 0xe3) AM_WRITENOP //printer
- AM_RANGE(0xf0, 0xf0) AM_READWRITE(cass_r, cass_w) //cmt
- AM_RANGE(0xf1, 0xf1) AM_WRITE(vram_read_bank_w)
- AM_RANGE(0xf2, 0xf2) AM_WRITE(vram_write_bank_w)
- AM_RANGE(0xf4, 0xf4) AM_READWRITE(key_r, key_w) //keyboard
- AM_RANGE(0xf5, 0xfb) AM_WRITE(vdp_reg_w) //vdp
- AM_RANGE(0xfc, 0xfc) AM_WRITE(vdp_bg_reg_w) //vdp
- AM_RANGE(0xfe, 0xfe) AM_WRITE(vdp_pri_mask_w)
- AM_RANGE(0xff, 0xff) AM_DEVWRITE("sn1", sn76489a_device, write) //psg
-ADDRESS_MAP_END
+ map(0xf0, 0xf0).rw(this, FUNC(rx78_state::cass_r), FUNC(rx78_state::cass_w)); //cmt
+ map(0xf1, 0xf1).w(this, FUNC(rx78_state::vram_read_bank_w));
+ map(0xf2, 0xf2).w(this, FUNC(rx78_state::vram_write_bank_w));
+ map(0xf4, 0xf4).rw(this, FUNC(rx78_state::key_r), FUNC(rx78_state::key_w)); //keyboard
+ map(0xf5, 0xfb).w(this, FUNC(rx78_state::vdp_reg_w)); //vdp
+ map(0xfc, 0xfc).w(this, FUNC(rx78_state::vdp_bg_reg_w)); //vdp
+ map(0xfe, 0xfe).w(this, FUNC(rx78_state::vdp_pri_mask_w));
+ map(0xff, 0xff).w("sn1", FUNC(sn76489a_device::write)); //psg
+}
/* Input ports */
static INPUT_PORTS_START( rx78 )
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index 51b3150083a..c503b2e20a2 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -28,32 +28,35 @@ ToDo:
#include "s11.lh"
-ADDRESS_MAP_START(s11_state::s11_main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s11_state::s11_audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s11_state::s11_bg_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void s11_state::s11_main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).w(this, FUNC(s11_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x2c00, 0x2c03).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x3400, 0x3403).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget
+ map(0x4000, 0xffff).rom();
+}
+
+void s11_state::s11_audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x0800).ram();
+ map(0x1000, 0x1fff).w(this, FUNC(s11_state::bank_w));
+ map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xbfff).bankr("bank0");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+void s11_state::s11_bg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xffff).rom();
+}
static INPUT_PORTS_START( s11 )
PORT_START("X0")
diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp
index 1cd95825d81..a2c30090dc9 100644
--- a/src/mame/drivers/s11a.cpp
+++ b/src/mame/drivers/s11a.cpp
@@ -31,33 +31,36 @@ Note: To start a game, certain switches need to be activated. You must first pr
#include "s11a.lh"
-ADDRESS_MAP_START(s11a_state::s11a_main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_MIRROR(0x00fc) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_MIRROR(0x01ff) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x2c00, 0x2c03) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
- AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x3400, 0x3403) AM_MIRROR(0x0bfc) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s11a_state::s11a_audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s11a_state::s11a_bg_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write)
- AM_RANGE(0x7800, 0x7fff) AM_WRITE(bgbank_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bgbank")
-ADDRESS_MAP_END
+void s11a_state::s11a_main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x2100, 0x2103).mirror(0x00fc).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).mirror(0x01ff).w(this, FUNC(s11a_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).mirror(0x03fc).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).mirror(0x03fc).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x2c00, 0x2c03).mirror(0x03fc).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display
+ map(0x3000, 0x3003).mirror(0x03fc).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x3400, 0x3403).mirror(0x0bfc).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget
+ map(0x4000, 0xffff).rom();
+}
+
+void s11a_state::s11a_audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x0800).ram();
+ map(0x1000, 0x1fff).w(this, FUNC(s11a_state::bank_w));
+ map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xbfff).bankr("bank0");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+void s11a_state::s11a_bg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x7800, 0x7fff).w(this, FUNC(s11a_state::bgbank_w));
+ map(0x8000, 0xffff).bankr("bgbank");
+}
static INPUT_PORTS_START( s11a )
PORT_START("X0")
diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp
index bda57333aad..93706a7d51a 100644
--- a/src/mame/drivers/s11b.cpp
+++ b/src/mame/drivers/s11b.cpp
@@ -32,35 +32,38 @@
#include "s11b.lh"
-ADDRESS_MAP_START(s11b_state::s11b_main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_MIRROR(0x00fc) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_MIRROR(0x01ff) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x2c00, 0x2c03) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
- AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x3400, 0x3403) AM_MIRROR(0x0bfc) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s11b_state::s11b_audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s11b_state::s11b_bg_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write)
- AM_RANGE(0x6000, 0x67ff) AM_WRITE(bg_speech_digit_w)
- AM_RANGE(0x6800, 0x6fff) AM_WRITE(bg_speech_clock_w)
- AM_RANGE(0x7800, 0x7fff) AM_WRITE(bgbank_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bgbank")
-ADDRESS_MAP_END
+void s11b_state::s11b_main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x2100, 0x2103).mirror(0x00fc).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).mirror(0x01ff).w(this, FUNC(s11b_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).mirror(0x03fc).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).mirror(0x03fc).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x2c00, 0x2c03).mirror(0x03fc).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display
+ map(0x3000, 0x3003).mirror(0x03fc).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x3400, 0x3403).mirror(0x0bfc).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget
+ map(0x4000, 0xffff).rom();
+}
+
+void s11b_state::s11b_audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x0800).ram();
+ map(0x1000, 0x1fff).w(this, FUNC(s11b_state::bank_w));
+ map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xbfff).bankr("bank0");
+ map(0xc000, 0xffff).bankr("bank1");
+}
+
+void s11b_state::s11b_bg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x6000, 0x67ff).w(this, FUNC(s11b_state::bg_speech_digit_w));
+ map(0x6800, 0x6fff).w(this, FUNC(s11b_state::bg_speech_clock_w));
+ map(0x7800, 0x7fff).w(this, FUNC(s11b_state::bgbank_w));
+ map(0x8000, 0xffff).bankr("bgbank");
+}
static INPUT_PORTS_START( s11b )
PORT_START("X0")
diff --git a/src/mame/drivers/s11c.cpp b/src/mame/drivers/s11c.cpp
index 9a8212aac29..dd6dda2def1 100644
--- a/src/mame/drivers/s11c.cpp
+++ b/src/mame/drivers/s11c.cpp
@@ -14,17 +14,18 @@
#include "s11c.lh"
-ADDRESS_MAP_START(s11c_state::s11c_main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_MIRROR(0x00fc) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_MIRROR(0x01ff) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x2c00, 0x2c03) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
- AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x3400, 0x3403) AM_MIRROR(0x0bfc) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void s11c_state::s11c_main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("nvram");
+ map(0x2100, 0x2103).mirror(0x00fc).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).mirror(0x01ff).w(this, FUNC(s11c_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).mirror(0x03fc).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).mirror(0x03fc).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x2c00, 0x2c03).mirror(0x03fc).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display
+ map(0x3000, 0x3003).mirror(0x03fc).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x3400, 0x3403).mirror(0x0bfc).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget
+ map(0x4000, 0xffff).rom();
+}
ADDRESS_MAP_START(s11c_state::s11c_audio_map)
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp
index 4649dc0ad0b..1f04000f9d0 100644
--- a/src/mame/drivers/s3.cpp
+++ b/src/mame/drivers/s3.cpp
@@ -109,23 +109,25 @@ private:
optional_device<pia6821_device> m_pias;
};
-ADDRESS_MAP_START(s3_state::s3_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s3_state::s3_audio_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) // sounds
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s3_state::s3_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("nvram");
+ map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x6000, 0x7fff).rom().region("roms", 0);
+}
+
+void s3_state::s3_audio_map(address_map &map)
+{
+ map.global_mask(0xfff);
+ map(0x0000, 0x007f).ram();
+ map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds
+ map(0x0800, 0x0fff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s3 )
PORT_START("X0")
diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp
index bb29669084c..235f69e5804 100644
--- a/src/mame/drivers/s4.cpp
+++ b/src/mame/drivers/s4.cpp
@@ -103,23 +103,25 @@ private:
optional_device<pia6821_device> m_pias;
};
-ADDRESS_MAP_START(s4_state::s4_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s4_state::s4_audio_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) // sounds
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s4_state::s4_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("nvram");
+ map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x6000, 0x7fff).rom().region("roms", 0);
+}
+
+void s4_state::s4_audio_map(address_map &map)
+{
+ map.global_mask(0x0fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds
+ map(0x0800, 0x0fff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s4 )
PORT_START("X0")
diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp
index 28544ec7a39..78033f97bdf 100644
--- a/src/mame/drivers/s6.cpp
+++ b/src/mame/drivers/s6.cpp
@@ -118,23 +118,25 @@ private:
required_device<pia6821_device> m_pia30;
};
-ADDRESS_MAP_START(s6_state::s6_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s6_state::s6_audio_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0x3000, 0x7fff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s6_state::s6_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("nvram");
+ map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x6000, 0x7fff).rom().region("roms", 0);
+}
+
+void s6_state::s6_audio_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x3000, 0x7fff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s6 )
PORT_START("X0")
diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp
index 1544e458460..8156bc09781 100644
--- a/src/mame/drivers/s6a.cpp
+++ b/src/mame/drivers/s6a.cpp
@@ -111,22 +111,24 @@ private:
required_device<pia6821_device> m_pia30;
};
-ADDRESS_MAP_START(s6a_state::s6a_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s6a_state::s6a_audio_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s6a_state::s6a_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram().share("nvram");
+ map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x6000, 0x7fff).rom().region("roms", 0);
+}
+
+void s6a_state::s6a_audio_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x0400, 0x0403).mirror(0x8000).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xb000, 0xffff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s6a )
PORT_START("X0")
diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp
index 12d8933729d..a5f08031851 100644
--- a/src/mame/drivers/s7.cpp
+++ b/src/mame/drivers/s7.cpp
@@ -141,25 +141,27 @@ private:
required_device<pia6821_device> m_pia30;
};
-ADDRESS_MAP_START(s7_state::s7_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x1000)
- AM_RANGE(0x0100, 0x01ff) AM_READWRITE(nvram_r,nvram_w)
- AM_RANGE(0x0200, 0x03ff) AM_RAM AM_MIRROR(0x1000)
- AM_RANGE(0x1100, 0x11ff) AM_RAM
- AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s7_state::s7_audio_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s7_state::s7_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram().mirror(0x1000);
+ map(0x0100, 0x01ff).rw(this, FUNC(s7_state::nvram_r), FUNC(s7_state::nvram_w));
+ map(0x0200, 0x03ff).ram().mirror(0x1000);
+ map(0x1100, 0x11ff).ram();
+ map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x5000, 0x7fff).rom().region("roms", 0);
+}
+
+void s7_state::s7_audio_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x0400, 0x0403).mirror(0x8000).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xb000, 0xffff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s7 )
PORT_START("X0")
diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp
index 4470d77577f..99b89e267f0 100644
--- a/src/mame/drivers/s8.cpp
+++ b/src/mame/drivers/s8.cpp
@@ -111,22 +111,24 @@ private:
required_device<pia6821_device> m_pia30;
};
-ADDRESS_MAP_START(s8_state::s8_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s8_state::s8_audio_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s8_state::s8_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).w(this, FUNC(s8_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x5000, 0x7fff).rom().region("roms", 0);
+}
+
+void s8_state::s8_audio_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x4000, 0x4003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc000, 0xffff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s8 )
PORT_START("X0")
diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp
index e9b63e8cefc..6fbad88c913 100644
--- a/src/mame/drivers/s8a.cpp
+++ b/src/mame/drivers/s8a.cpp
@@ -87,22 +87,24 @@ private:
required_device<pia6821_device> m_pia30;
};
-ADDRESS_MAP_START(s8a_state::s8a_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s8a_state::s8a_audio_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s8a_state::s8a_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).w(this, FUNC(s8a_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x6000, 0x7fff).rom().region("roms", 0);
+}
+
+void s8a_state::s8a_audio_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x2000, 0x2003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc000, 0xffff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s8a )
PORT_START("X0")
diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp
index f66ef8357bd..ad737254251 100644
--- a/src/mame/drivers/s9.cpp
+++ b/src/mame/drivers/s9.cpp
@@ -99,22 +99,24 @@ private:
required_device<pia6821_device> m_pia30;
};
-ADDRESS_MAP_START(s9_state::s9_main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
- AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
- AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
- AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
- AM_RANGE(0x4000, 0x7fff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(s9_state::s9_audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pias", pia6821_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audioroms", 0)
-ADDRESS_MAP_END
+void s9_state::s9_main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram");
+ map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids
+ map(0x2200, 0x2200).w(this, FUNC(s9_state::sol3_w)); // solenoids
+ map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
+ map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
+ map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
+ map(0x4000, 0x7fff).rom().region("roms", 0);
+}
+
+void s9_state::s9_audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x2003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8000, 0xffff).rom().region("audioroms", 0);
+}
static INPUT_PORTS_START( s9 )
PORT_START("X0")
diff --git a/src/mame/drivers/sacstate.cpp b/src/mame/drivers/sacstate.cpp
index 100acf5290a..8bb546412de 100644
--- a/src/mame/drivers/sacstate.cpp
+++ b/src/mame/drivers/sacstate.cpp
@@ -94,22 +94,24 @@ WRITE8_MEMBER( sacstate_state::port08_w )
m_val = 0;
}
-ADDRESS_MAP_START(sacstate_state::sacstate_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000,0x7ff) AM_ROM
- AM_RANGE(0x800,0xfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sacstate_state::sacstate_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00,0x00) AM_READ(port00_r)
- AM_RANGE(0x01,0x01) AM_READ(port01_r)
- AM_RANGE(0x04,0x04) AM_READ(port04_r)
- AM_RANGE(0x08,0x08) AM_WRITE(port08_w)
- AM_RANGE(0x16,0x16) AM_DEVWRITE("terminal", generic_terminal_device, write)
- AM_RANGE(0x17,0x1f) AM_WRITENOP
-ADDRESS_MAP_END
+void sacstate_state::sacstate_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000, 0x7ff).rom();
+ map(0x800, 0xfff).ram();
+}
+
+void sacstate_state::sacstate_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(sacstate_state::port00_r));
+ map(0x01, 0x01).r(this, FUNC(sacstate_state::port01_r));
+ map(0x04, 0x04).r(this, FUNC(sacstate_state::port04_r));
+ map(0x08, 0x08).w(this, FUNC(sacstate_state::port08_w));
+ map(0x16, 0x16).w(m_terminal, FUNC(generic_terminal_device::write));
+ map(0x17, 0x1f).nopw();
+}
/* Input ports */
static INPUT_PORTS_START( sacstate )
diff --git a/src/mame/drivers/safarir.cpp b/src/mame/drivers/safarir.cpp
index 327f14273a5..694b7561946 100644
--- a/src/mame/drivers/safarir.cpp
+++ b/src/mame/drivers/safarir.cpp
@@ -342,16 +342,17 @@ void safarir_state::machine_start()
*
*************************************/
-ADDRESS_MAP_START(safarir_state::main_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_READWRITE(ram_r, ram_w) AM_SHARE("ram")
- AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READNOP AM_WRITE(ram_bank_w)
- AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READNOP AM_WRITEONLY AM_SHARE("bg_scroll")
- AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_WRITE(safarir_audio_w) /* goes to SN76477 */
- AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_WRITENOP /* cleared at the beginning */
- AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ_PORT("INPUTS") AM_WRITENOP
- AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x03ff) AM_READ_PORT("DSW") AM_WRITENOP
-ADDRESS_MAP_END
+void safarir_state::main_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x2000, 0x27ff).rw(this, FUNC(safarir_state::ram_r), FUNC(safarir_state::ram_w)).share("ram");
+ map(0x2800, 0x2800).mirror(0x03ff).nopr().w(this, FUNC(safarir_state::ram_bank_w));
+ map(0x2c00, 0x2c00).mirror(0x03ff).nopr().writeonly().share("bg_scroll");
+ map(0x3000, 0x3000).mirror(0x03ff).w(this, FUNC(safarir_state::safarir_audio_w)); /* goes to SN76477 */
+ map(0x3400, 0x3400).mirror(0x03ff).nopw(); /* cleared at the beginning */
+ map(0x3800, 0x3800).mirror(0x03ff).portr("INPUTS").nopw();
+ map(0x3c00, 0x3c00).mirror(0x03ff).portr("DSW").nopw();
+}
diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp
index 474f467f889..f6871a05c5c 100644
--- a/src/mame/drivers/sage2.cpp
+++ b/src/mame/drivers/sage2.cpp
@@ -36,25 +36,26 @@
// ADDRESS_MAP( sage2_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(sage2_state::sage2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xffc000, 0xffc007) AM_DEVREADWRITE8(I8253_1_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0xffc010, 0xffc01f) AM_NOP //AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff)
- AM_RANGE(0xffc020, 0xffc027) AM_DEVREADWRITE8(I8255A_0_TAG, i8255_device, read, write, 0x00ff) // i8255, DIPs + Floppy ctrl port
- AM_RANGE(0xffc030, 0xffc031) AM_DEVREADWRITE8(I8251_1_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xffc032, 0xffc033) AM_DEVREADWRITE8(I8251_1_TAG, i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xffc040, 0xffc043) AM_DEVREADWRITE8(I8259_TAG, pic8259_device, read, write, 0x00ff)
- AM_RANGE(0xffc050, 0xffc053) AM_DEVICE8(UPD765_TAG, upd765a_device, map, 0x00ff)
- AM_RANGE(0xffc060, 0xffc067) AM_DEVREADWRITE8(I8255A_1_TAG, i8255_device, read, write, 0x00ff) // i8255, Printer
- AM_RANGE(0xffc070, 0xffc071) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xffc072, 0xffc073) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE(0xffc080, 0xffc087) AM_MIRROR(0x78) AM_DEVREADWRITE8(I8253_0_TAG, pit8253_device, read, write, 0x00ff)
+void sage2_state::sage2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xffc000, 0xffc007).rw(I8253_1_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0xffc010, 0xffc01f).noprw(); //AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff)
+ map(0xffc020, 0xffc027).rw(I8255A_0_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255, DIPs + Floppy ctrl port
+ map(0xffc031, 0xffc031).rw(m_usart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xffc033, 0xffc033).rw(m_usart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xffc040, 0xffc043).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0xffc050, 0xffc053).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0xffc060, 0xffc067).rw(I8255A_1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255, Printer
+ map(0xffc071, 0xffc071).rw(m_usart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xffc073, 0xffc073).rw(m_usart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xffc080, 0xffc087).mirror(0x78).rw(I8253_0_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
// AM_RANGE(0xffc400, 0xffc407) AM_DEVREADWRITE8(S2651_0_TAG, s2651_device, read, write, 0x00ff)
// AM_RANGE(0xffc440, 0xffc447) AM_DEVREADWRITE8(S2651_1_TAG, s2651_device, read, write, 0x00ff)
// AM_RANGE(0xffc480, 0xffc487) AM_DEVREADWRITE8(S2651_2_TAG, s2651_device, read, write, 0x00ff)
// AM_RANGE(0xffc4c0, 0xffc4c7) AM_DEVREADWRITE8(S2651_3_TAG, s2651_device, read, write, 0x00ff)
// AM_RANGE(0xffc500, 0xffc7ff) // Winchester drive ports
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/sam.cpp b/src/mame/drivers/sam.cpp
index 48e09eec99e..98dd1b406f7 100644
--- a/src/mame/drivers/sam.cpp
+++ b/src/mame/drivers/sam.cpp
@@ -14,10 +14,11 @@ public:
void sam_map(address_map &map);
};
-ADDRESS_MAP_START(sam_state::sam_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("boot",0)
- AM_RANGE(0x00300000, 0x003fffff) AM_RAM
-ADDRESS_MAP_END
+void sam_state::sam_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom().region("boot", 0);
+ map(0x00300000, 0x003fffff).ram();
+}
static INPUT_PORTS_START( sam )
INPUT_PORTS_END
diff --git a/src/mame/drivers/samcoupe.cpp b/src/mame/drivers/samcoupe.cpp
index a639ffb80b8..93089dd351b 100644
--- a/src/mame/drivers/samcoupe.cpp
+++ b/src/mame/drivers/samcoupe.cpp
@@ -303,31 +303,33 @@ WRITE8_MEMBER(samcoupe_state::samcoupe_lpt2_strobe_w)
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(samcoupe_state::samcoupe_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_READWRITE(sam_bank1_r, sam_bank1_w) // AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_READWRITE(sam_bank2_r, sam_bank2_w) // AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_READWRITE(sam_bank3_r, sam_bank3_w) // AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_READWRITE(sam_bank4_r, sam_bank4_w) // AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(samcoupe_state::samcoupe_io)
- AM_RANGE(0x0080, 0x0081) AM_SELECT(0xff00) AM_WRITE(samcoupe_ext_mem_w)
- AM_RANGE(0x00e0, 0x00e7) AM_SELECT(0xff10) AM_READWRITE(samcoupe_disk_r, samcoupe_disk_w)
- AM_RANGE(0x00e8, 0x00e8) AM_SELECT(0xff00) AM_DEVWRITE("lpt1_data_out", output_latch_device, write)
- AM_RANGE(0x00e9, 0x00e9) AM_SELECT(0xff00) AM_READWRITE(samcoupe_lpt1_busy_r, samcoupe_lpt1_strobe_w)
- AM_RANGE(0x00ea, 0x00ea) AM_SELECT(0xff00) AM_DEVWRITE("lpt2_data_out", output_latch_device, write)
- AM_RANGE(0x00eb, 0x00eb) AM_SELECT(0xff00) AM_READWRITE(samcoupe_lpt2_busy_r, samcoupe_lpt2_strobe_w)
- AM_RANGE(0x00f8, 0x00f8) AM_SELECT(0xff00) AM_READWRITE(samcoupe_pen_r, samcoupe_clut_w)
- AM_RANGE(0x00f9, 0x00f9) AM_SELECT(0xff00) AM_READWRITE(samcoupe_status_r, samcoupe_line_int_w)
- AM_RANGE(0x00fa, 0x00fa) AM_SELECT(0xff00) AM_READWRITE(samcoupe_lmpr_r, samcoupe_lmpr_w)
- AM_RANGE(0x00fb, 0x00fb) AM_SELECT(0xff00) AM_READWRITE(samcoupe_hmpr_r, samcoupe_hmpr_w)
- AM_RANGE(0x00fc, 0x00fc) AM_SELECT(0xff00) AM_READWRITE(samcoupe_vmpr_r, samcoupe_vmpr_w)
- AM_RANGE(0x00fd, 0x00fd) AM_SELECT(0xff00) AM_READWRITE(samcoupe_midi_r, samcoupe_midi_w)
- AM_RANGE(0x00fe, 0x00fe) AM_SELECT(0xff00) AM_READWRITE(samcoupe_keyboard_r, samcoupe_border_w)
- AM_RANGE(0x00ff, 0x00ff) AM_SELECT(0xff00) AM_READ(samcoupe_attributes_r)
- AM_RANGE(0x00ff, 0x00ff) AM_SELECT(0xfe00) AM_DEVWRITE("saa1099", saa1099_device, data_w)
- AM_RANGE(0x01ff, 0x01ff) AM_SELECT(0xfe00) AM_DEVWRITE("saa1099", saa1099_device, control_w)
-ADDRESS_MAP_END
+void samcoupe_state::samcoupe_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().rw(this, FUNC(samcoupe_state::sam_bank1_r), FUNC(samcoupe_state::sam_bank1_w)); // AM_RAMBANK("bank1")
+ map(0x4000, 0x7fff).ram().rw(this, FUNC(samcoupe_state::sam_bank2_r), FUNC(samcoupe_state::sam_bank2_w)); // AM_RAMBANK("bank2")
+ map(0x8000, 0xbfff).ram().rw(this, FUNC(samcoupe_state::sam_bank3_r), FUNC(samcoupe_state::sam_bank3_w)); // AM_RAMBANK("bank3")
+ map(0xc000, 0xffff).ram().rw(this, FUNC(samcoupe_state::sam_bank4_r), FUNC(samcoupe_state::sam_bank4_w)); // AM_RAMBANK("bank4")
+}
+
+void samcoupe_state::samcoupe_io(address_map &map)
+{
+ map(0x0080, 0x0081).select(0xff00).w(this, FUNC(samcoupe_state::samcoupe_ext_mem_w));
+ map(0x00e0, 0x00e7).select(0xff10).rw(this, FUNC(samcoupe_state::samcoupe_disk_r), FUNC(samcoupe_state::samcoupe_disk_w));
+ map(0x00e8, 0x00e8).select(0xff00).w("lpt1_data_out", FUNC(output_latch_device::write));
+ map(0x00e9, 0x00e9).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_lpt1_busy_r), FUNC(samcoupe_state::samcoupe_lpt1_strobe_w));
+ map(0x00ea, 0x00ea).select(0xff00).w("lpt2_data_out", FUNC(output_latch_device::write));
+ map(0x00eb, 0x00eb).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_lpt2_busy_r), FUNC(samcoupe_state::samcoupe_lpt2_strobe_w));
+ map(0x00f8, 0x00f8).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_pen_r), FUNC(samcoupe_state::samcoupe_clut_w));
+ map(0x00f9, 0x00f9).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_status_r), FUNC(samcoupe_state::samcoupe_line_int_w));
+ map(0x00fa, 0x00fa).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_lmpr_r), FUNC(samcoupe_state::samcoupe_lmpr_w));
+ map(0x00fb, 0x00fb).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_hmpr_r), FUNC(samcoupe_state::samcoupe_hmpr_w));
+ map(0x00fc, 0x00fc).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_vmpr_r), FUNC(samcoupe_state::samcoupe_vmpr_w));
+ map(0x00fd, 0x00fd).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_midi_r), FUNC(samcoupe_state::samcoupe_midi_w));
+ map(0x00fe, 0x00fe).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_keyboard_r), FUNC(samcoupe_state::samcoupe_border_w));
+ map(0x00ff, 0x00ff).select(0xff00).r(this, FUNC(samcoupe_state::samcoupe_attributes_r));
+ map(0x00ff, 0x00ff).select(0xfe00).w("saa1099", FUNC(saa1099_device::data_w));
+ map(0x01ff, 0x01ff).select(0xfe00).w("saa1099", FUNC(saa1099_device::control_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/sandscrp.cpp b/src/mame/drivers/sandscrp.cpp
index d7e0d2529d8..3e70d4d2316 100644
--- a/src/mame/drivers/sandscrp.cpp
+++ b/src/mame/drivers/sandscrp.cpp
@@ -275,26 +275,27 @@ WRITE8_MEMBER(sandscrp_state::soundlatch_w)
m_soundlatch[Latch]->write(space,0,data);
}
-ADDRESS_MAP_START(sandscrp_state::sandscrp)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x100001) AM_WRITE(irq_cause_w) // IRQ Ack
-
- AM_RANGE(0x700000, 0x70ffff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w)
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
- AM_RANGE(0x400000, 0x403fff) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
- AM_RANGE(0x500000, 0x501fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w ) // sprites
- AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(coincounter_w) // Coin Counters (Lockout unused)
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK")
- AM_RANGE(0xec0000, 0xec0001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x800000, 0x800001) AM_READ(irq_cause_r) // IRQ Cause
- AM_RANGE(0xe00000, 0xe00001) AM_READWRITE8(soundlatch_r<1>, soundlatch_w<0>, 0x00ff) // From/To Sound CPU
- AM_RANGE(0xe40000, 0xe40001) AM_READWRITE(latchstatus_word_r, latchstatus_word_w) //
-ADDRESS_MAP_END
+void sandscrp_state::sandscrp(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x100001).w(this, FUNC(sandscrp_state::irq_cause_w)); // IRQ Ack
+
+ map(0x700000, 0x70ffff).ram(); // RAM
+ map(0x200000, 0x20001f).rw("calc1_mcu", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w));
+ map(0x300000, 0x30001f).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w));
+ map(0x400000, 0x403fff).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w));
+ map(0x500000, 0x501fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); // sprites
+ map(0x600000, 0x600fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xa00000, 0xa00001).w(this, FUNC(sandscrp_state::coincounter_w)); // Coin Counters (Lockout unused)
+ map(0xb00000, 0xb00001).portr("P1");
+ map(0xb00002, 0xb00003).portr("P2");
+ map(0xb00004, 0xb00005).portr("SYSTEM");
+ map(0xb00006, 0xb00007).portr("UNK");
+ map(0xec0000, 0xec0001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x800000, 0x800001).r(this, FUNC(sandscrp_state::irq_cause_r)); // IRQ Cause
+ map(0xe00001, 0xe00001).rw(this, FUNC(sandscrp_state::soundlatch_r<1>), FUNC(sandscrp_state::soundlatch_w<0>)); // From/To Sound CPU
+ map(0xe40000, 0xe40001).rw(this, FUNC(sandscrp_state::latchstatus_word_r), FUNC(sandscrp_state::latchstatus_word_w)); //
+}
@@ -313,21 +314,23 @@ READ8_MEMBER(sandscrp_state::latchstatus_r)
(m_latch_full[0] ? 0x40 : 0) ;
}
-ADDRESS_MAP_START(sandscrp_state::sandscrp_soundmem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") // Banked ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sandscrp_state::sandscrp_soundport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(bankswitch_w) // ROM Bank
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) // PORTA/B read
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("oki", okim6295_device, write) // OKIM6295
- AM_RANGE(0x06, 0x06) AM_WRITE(soundlatch_w<1>) //
- AM_RANGE(0x07, 0x07) AM_READ(soundlatch_r<0>) //
- AM_RANGE(0x08, 0x08) AM_READ(latchstatus_r) //
-ADDRESS_MAP_END
+void sandscrp_state::sandscrp_soundmem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("audiobank"); // Banked ROM
+ map(0xc000, 0xdfff).ram(); // RAM
+}
+
+void sandscrp_state::sandscrp_soundport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(sandscrp_state::bankswitch_w)); // ROM Bank
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // PORTA/B read
+ map(0x04, 0x04).w("oki", FUNC(okim6295_device::write)); // OKIM6295
+ map(0x06, 0x06).w(this, FUNC(sandscrp_state::soundlatch_w<1>)); //
+ map(0x07, 0x07).r(this, FUNC(sandscrp_state::soundlatch_r<0>)); //
+ map(0x08, 0x08).r(this, FUNC(sandscrp_state::latchstatus_r)); //
+}
/***************************************************************************
diff --git a/src/mame/drivers/sangho.cpp b/src/mame/drivers/sangho.cpp
index 98850b7c39f..e5183ef40ba 100644
--- a/src/mame/drivers/sangho.cpp
+++ b/src/mame/drivers/sangho.cpp
@@ -285,37 +285,40 @@ WRITE8_MEMBER(sangho_state::sec_slot_w)
}
-ADDRESS_MAP_START(sangho_state::sangho_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5")
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6")
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7")
- AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8")
-ADDRESS_MAP_END
+void sangho_state::sangho_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1").bankw("bank5");
+ map(0x4000, 0x7fff).bankr("bank2").bankw("bank6");
+ map(0x8000, 0xbfff).bankr("bank3").bankw("bank7");
+ map(0xc000, 0xffff).bankr("bank4").bankw("bank8");
+}
/* Puzzle Star Ports */
-ADDRESS_MAP_START(sangho_state::pzlestar_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE( 0x91, 0x91) AM_WRITE(pzlestar_bank_w )
- AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9958", v9958_device, read, write )
- AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1")
- AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2")
- AM_RANGE( 0xa8, 0xa8) AM_READWRITE(pzlestar_mem_bank_r, pzlestar_mem_bank_w )
- AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW")
-ADDRESS_MAP_END
+void sangho_state::pzlestar_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7c, 0x7d).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x91, 0x91).w(this, FUNC(sangho_state::pzlestar_bank_w));
+ map(0x98, 0x9b).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write));
+ map(0xa0, 0xa0).portr("P1");
+ map(0xa1, 0xa1).portr("P2");
+ map(0xa8, 0xa8).rw(this, FUNC(sangho_state::pzlestar_mem_bank_r), FUNC(sangho_state::pzlestar_mem_bank_w));
+ map(0xf7, 0xf7).portr("DSW");
+}
/* Sexy Boom Ports */
-ADDRESS_MAP_START(sangho_state::sexyboom_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1")
- AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2")
- AM_RANGE( 0xf0, 0xf3) AM_DEVREADWRITE("v9958", v9958_device, read, write )
- AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW")
- AM_RANGE( 0xf8, 0xff) AM_WRITE(sexyboom_bank_w )
-ADDRESS_MAP_END
+void sangho_state::sexyboom_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7c, 0x7d).w("ymsnd", FUNC(ym2413_device::write));
+ map(0xa0, 0xa0).portr("P1");
+ map(0xa1, 0xa1).portr("P2");
+ map(0xf0, 0xf3).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write));
+ map(0xf7, 0xf7).portr("DSW");
+ map(0xf8, 0xff).w(this, FUNC(sangho_state::sexyboom_bank_w));
+}
static INPUT_PORTS_START( sexyboom )
PORT_START("P1")
diff --git a/src/mame/drivers/sanremmg.cpp b/src/mame/drivers/sanremmg.cpp
index d803f7da54d..45710e0a10d 100644
--- a/src/mame/drivers/sanremmg.cpp
+++ b/src/mame/drivers/sanremmg.cpp
@@ -42,10 +42,11 @@ uint32_t sanremmg_state::screen_update_sanremmg(screen_device &screen, bitmap_in
-ADDRESS_MAP_START(sanremmg_state::sanremmg_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_ROM
+void sanremmg_state::sanremmg_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rom();
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( sanremmg )
diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp
index ef6ac655ed3..ff888591191 100644
--- a/src/mame/drivers/sanremo.cpp
+++ b/src/mame/drivers/sanremo.cpp
@@ -224,24 +224,26 @@ WRITE8_MEMBER(sanremo_state::banksel_w)
* Memory map information *
*********************************************/
-ADDRESS_MAP_START(sanremo_state::sanremo_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(sanremo_videoram_w) AM_SHARE("videoram") // 2x 76C28 (1x accessed directly, latched bank written to other like subsino etc.)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") // battery backed UM6116
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sanremo_state::sanremo_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(lamps_w)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x17, 0x17) AM_DEVWRITE("ay8910", ay8910_device, data_w)
- AM_RANGE(0x24, 0x24) AM_WRITE(banksel_w)
- AM_RANGE(0x27, 0x27) AM_DEVREAD("ay8910", ay8910_device, data_r)
- AM_RANGE(0x37, 0x37) AM_DEVWRITE("ay8910", ay8910_device, address_w)
-ADDRESS_MAP_END
+void sanremo_state::sanremo_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(this, FUNC(sanremo_state::sanremo_videoram_w)).share("videoram"); // 2x 76C28 (1x accessed directly, latched bank written to other like subsino etc.)
+ map(0xc000, 0xc7ff).ram().share("nvram"); // battery backed UM6116
+}
+
+void sanremo_state::sanremo_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).portr("IN0");
+ map(0x02, 0x02).portr("IN1");
+ map(0x04, 0x04).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x05, 0x05).w(this, FUNC(sanremo_state::lamps_w));
+ map(0x14, 0x14).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x17, 0x17).w("ay8910", FUNC(ay8910_device::data_w));
+ map(0x24, 0x24).w(this, FUNC(sanremo_state::banksel_w));
+ map(0x27, 0x27).r("ay8910", FUNC(ay8910_device::data_r));
+ map(0x37, 0x37).w("ay8910", FUNC(ay8910_device::address_w));
+}
/*
diff --git a/src/mame/drivers/sansa_fuze.cpp b/src/mame/drivers/sansa_fuze.cpp
index 05a4cc23082..c8c4132d774 100644
--- a/src/mame/drivers/sansa_fuze.cpp
+++ b/src/mame/drivers/sansa_fuze.cpp
@@ -28,12 +28,13 @@ public:
-ADDRESS_MAP_START(sansa_fuze_state::sansa_fuze_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM
+void sansa_fuze_state::sansa_fuze_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom();
- AM_RANGE(0x80000000, 0x8001ffff) AM_ROM AM_REGION("maincpu", 0x00000)
- AM_RANGE(0x81000000, 0x81ffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x80000000, 0x8001ffff).rom().region("maincpu", 0x00000);
+ map(0x81000000, 0x81ffffff).ram();
+}
static INPUT_PORTS_START( sansa_fuze )
diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp
index 8195fa28f94..f8bc4272e19 100644
--- a/src/mame/drivers/sapi1.cpp
+++ b/src/mame/drivers/sapi1.cpp
@@ -189,80 +189,88 @@ static const uint8_t MHB2501[] = {
/* Address maps */
-ADDRESS_MAP_START(sapi1_state::sapi1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x1fff) AM_ROM // Extension ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x2400, 0x27ff) AM_READWRITE(sapi1_keyboard_r, sapi1_keyboard_w) // PORT 0 - keyboard
+void sapi1_state::sapi1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x1fff).rom(); // Extension ROM
+ map(0x2000, 0x23ff).ram();
+ map(0x2400, 0x27ff).rw(this, FUNC(sapi1_state::sapi1_keyboard_r), FUNC(sapi1_state::sapi1_keyboard_w)); // PORT 0 - keyboard
//AM_RANGE(0x2800, 0x2bff) AM_NOP // PORT 1
//AM_RANGE(0x2c00, 0x2fff) AM_NOP // PORT 2
//AM_RANGE(0x3000, 0x33ff) AM_NOP // 3214
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("videoram") // AND-1 (video RAM)
- AM_RANGE(0x4000, 0x7fff) AM_RAM // REM-1
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x1fff) AM_ROM // Extension ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x2400, 0x27ff) AM_READ(sapi2_keyboard_status_r)
- AM_RANGE(0x2800, 0x28ff) AM_READ(sapi2_keyboard_data_r)
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("videoram") // AND-1 (video RAM)
- AM_RANGE(0x4000, 0x7fff) AM_RAM // REM-1
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi3_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RAMBANK("bank1")
- AM_RANGE(0x0800, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi3a_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RAMBANK("bank1")
- AM_RANGE(0x0800, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfdff) AM_ROM
- AM_RANGE(0xfe00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi3b_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RAMBANK("bank1")
- AM_RANGE(0x0800, 0xafff) AM_RAM
- AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xb800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi3_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w)
- AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi3a_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w)
- AM_RANGE(0x10, 0x10) AM_READWRITE(uart_status_r, modem_control_w)
- AM_RANGE(0x11, 0x11) AM_READWRITE(uart_ready_r, uart_mode_w)
- AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("uart", ay51013_device, receive, transmit)
- AM_RANGE(0x13, 0x13) AM_WRITE(uart_reset_w)
- AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sapi1_state::sapi3b_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w)
- AM_RANGE(0x0c, 0x0c) AM_READ(sapi3_0c_r)
- AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w)
- AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0xe1, 0xe1) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+ map(0x3800, 0x3fff).ram().share("videoram"); // AND-1 (video RAM)
+ map(0x4000, 0x7fff).ram(); // REM-1
+}
+
+void sapi1_state::sapi2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x1fff).rom(); // Extension ROM
+ map(0x2000, 0x23ff).ram();
+ map(0x2400, 0x27ff).r(this, FUNC(sapi1_state::sapi2_keyboard_status_r));
+ map(0x2800, 0x28ff).r(this, FUNC(sapi1_state::sapi2_keyboard_data_r));
+ map(0x3800, 0x3fff).ram().share("videoram"); // AND-1 (video RAM)
+ map(0x4000, 0x7fff).ram(); // REM-1
+}
+
+void sapi1_state::sapi3_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).ram().bankrw("bank1");
+ map(0x0800, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("videoram");
+}
+
+void sapi1_state::sapi3a_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).ram().bankrw("bank1");
+ map(0x0800, 0xf7ff).ram();
+ map(0xf800, 0xfdff).rom();
+ map(0xfe00, 0xffff).ram();
+}
+
+void sapi1_state::sapi3b_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).ram().bankrw("bank1");
+ map(0x0800, 0xafff).ram();
+ map(0xb000, 0xb7ff).ram().share("videoram");
+ map(0xb800, 0xffff).ram();
+}
+
+void sapi1_state::sapi3_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(sapi1_state::sapi3_00_w));
+ map(0x25, 0x25).rw(this, FUNC(sapi1_state::sapi3_25_r), FUNC(sapi1_state::sapi3_25_w));
+}
+
+void sapi1_state::sapi3a_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(sapi1_state::sapi3_00_w));
+ map(0x10, 0x10).rw(this, FUNC(sapi1_state::uart_status_r), FUNC(sapi1_state::modem_control_w));
+ map(0x11, 0x11).rw(this, FUNC(sapi1_state::uart_ready_r), FUNC(sapi1_state::uart_mode_w));
+ map(0x12, 0x12).rw(m_uart, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit));
+ map(0x13, 0x13).w(this, FUNC(sapi1_state::uart_reset_w));
+ map(0x25, 0x25).rw(this, FUNC(sapi1_state::sapi3_25_r), FUNC(sapi1_state::sapi3_25_w));
+}
+
+void sapi1_state::sapi3b_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(sapi1_state::sapi3_00_w));
+ map(0x0c, 0x0c).r(this, FUNC(sapi1_state::sapi3_0c_r));
+ map(0x25, 0x25).rw(this, FUNC(sapi1_state::sapi3_25_r), FUNC(sapi1_state::sapi3_25_w));
+ map(0xe0, 0xe0).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xe1, 0xe1).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
/* Input ports */
static INPUT_PORTS_START( sapi1 )
diff --git a/src/mame/drivers/sartorius.cpp b/src/mame/drivers/sartorius.cpp
index e7a53ee6110..61bb6d53661 100644
--- a/src/mame/drivers/sartorius.cpp
+++ b/src/mame/drivers/sartorius.cpp
@@ -69,17 +69,20 @@ public:
};
- ADDRESS_MAP_START(sart3733_state::sart3733_rom)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("maincpu", 0x0000)
-ADDRESS_MAP_END
+ void sart3733_state::sart3733_rom(address_map &map)
+{
+ map(0x0000, 0x07ff).rom().region("maincpu", 0x0000);
+}
- ADDRESS_MAP_START(sart3733_state::sart3733_memory)
- AM_RANGE(0x0000, 0x007f) AM_RAM // 2 * 4002
-ADDRESS_MAP_END
+ void sart3733_state::sart3733_memory(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); // 2 * 4002
+}
- ADDRESS_MAP_START(sart3733_state::sart3733_status)
- AM_RANGE(0x0000, 0x001f) AM_RAM // 2 * 4002
-ADDRESS_MAP_END
+ void sart3733_state::sart3733_status(address_map &map)
+{
+ map(0x0000, 0x001f).ram(); // 2 * 4002
+}
MACHINE_CONFIG_START(sart3733_state::sart3733)
diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp
index d27f87e553a..d605e67d2ea 100644
--- a/src/mame/drivers/saturn.cpp
+++ b/src/mame/drivers/saturn.cpp
@@ -518,40 +518,42 @@ READ32_MEMBER( sat_console_state::abus_dummy_r )
return -1;
}
-ADDRESS_MAP_START(sat_console_state::saturn_mem)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_MIRROR(0x20000000) AM_REGION("bios", 0) AM_WRITENOP // bios
- AM_RANGE(0x00100000, 0x0010007f) AM_DEVREADWRITE8("smpc", smpc_hle_device, read, write, 0xffffffff)
- AM_RANGE(0x00180000, 0x0018ffff) AM_READWRITE8(saturn_backupram_r, saturn_backupram_w,0xffffffff) AM_SHARE("share1")
- AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_MIRROR(0x20100000) AM_SHARE("workram_l")
- AM_RANGE(0x01000000, 0x017fffff) AM_WRITE(saturn_minit_w)
- AM_RANGE(0x01800000, 0x01ffffff) AM_WRITE(saturn_sinit_w)
+void sat_console_state::saturn_mem(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().mirror(0x20000000).region("bios", 0).nopw(); // bios
+ map(0x00100000, 0x0010007f).rw(m_smpc_hle, FUNC(smpc_hle_device::read), FUNC(smpc_hle_device::write));
+ map(0x00180000, 0x0018ffff).rw(this, FUNC(sat_console_state::saturn_backupram_r), FUNC(sat_console_state::saturn_backupram_w)).share("share1");
+ map(0x00200000, 0x002fffff).ram().mirror(0x20100000).share("workram_l");
+ map(0x01000000, 0x017fffff).w(this, FUNC(sat_console_state::saturn_minit_w));
+ map(0x01800000, 0x01ffffff).w(this, FUNC(sat_console_state::saturn_sinit_w));
// AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_MIRROR(0x20000000) // Cartridge area
// AM_RANGE(0x02400000, 0x027fffff) AM_RAM // External Data RAM area
// AM_RANGE(0x04000000, 0x047fffff) AM_RAM // External Battery RAM area
- AM_RANGE(0x04fffffc, 0x04ffffff) AM_READ8(saturn_cart_type_r,0x000000ff)
- AM_RANGE(0x05000000, 0x057fffff) AM_READ(abus_dummy_r)
- AM_RANGE(0x05800000, 0x0589ffff) AM_DEVREADWRITE("stvcd", stvcd_device, stvcd_r, stvcd_w)
+ map(0x04ffffff, 0x04ffffff).r(this, FUNC(sat_console_state::saturn_cart_type_r));
+ map(0x05000000, 0x057fffff).r(this, FUNC(sat_console_state::abus_dummy_r));
+ map(0x05800000, 0x0589ffff).rw(m_stvcd, FUNC(stvcd_device::stvcd_r), FUNC(stvcd_device::stvcd_w));
/* Sound */
- AM_RANGE(0x05a00000, 0x05a7ffff) AM_READWRITE16(saturn_soundram_r, saturn_soundram_w,0xffffffff)
- AM_RANGE(0x05b00000, 0x05b00fff) AM_DEVREADWRITE16("scsp", scsp_device, read, write, 0xffffffff)
+ map(0x05a00000, 0x05a7ffff).rw(this, FUNC(sat_console_state::saturn_soundram_r), FUNC(sat_console_state::saturn_soundram_w));
+ map(0x05b00000, 0x05b00fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write));
/* VDP1 */
- AM_RANGE(0x05c00000, 0x05c7ffff) AM_READWRITE(saturn_vdp1_vram_r, saturn_vdp1_vram_w)
- AM_RANGE(0x05c80000, 0x05cbffff) AM_READWRITE(saturn_vdp1_framebuffer0_r, saturn_vdp1_framebuffer0_w)
- AM_RANGE(0x05d00000, 0x05d0001f) AM_READWRITE16(saturn_vdp1_regs_r, saturn_vdp1_regs_w,0xffffffff)
- AM_RANGE(0x05e00000, 0x05e7ffff) AM_MIRROR(0x80000) AM_READWRITE(saturn_vdp2_vram_r, saturn_vdp2_vram_w)
- AM_RANGE(0x05f00000, 0x05f7ffff) AM_READWRITE(saturn_vdp2_cram_r, saturn_vdp2_cram_w)
- AM_RANGE(0x05f80000, 0x05fbffff) AM_READWRITE16(saturn_vdp2_regs_r, saturn_vdp2_regs_w,0xffffffff)
- AM_RANGE(0x05fe0000, 0x05fe00cf) AM_DEVICE("scu", sega_scu_device, regs_map ) //AM_READWRITE(saturn_scu_r, saturn_scu_w)
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h")
- AM_RANGE(0x45000000, 0x46ffffff) AM_WRITENOP
- AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP // cache address array
- AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM // cache data array, Dragon Ball Z sprites relies on this
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sat_console_state::sound_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("sound_ram")
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp", scsp_device, read, write)
-ADDRESS_MAP_END
+ map(0x05c00000, 0x05c7ffff).rw(this, FUNC(sat_console_state::saturn_vdp1_vram_r), FUNC(sat_console_state::saturn_vdp1_vram_w));
+ map(0x05c80000, 0x05cbffff).rw(this, FUNC(sat_console_state::saturn_vdp1_framebuffer0_r), FUNC(sat_console_state::saturn_vdp1_framebuffer0_w));
+ map(0x05d00000, 0x05d0001f).rw(this, FUNC(sat_console_state::saturn_vdp1_regs_r), FUNC(sat_console_state::saturn_vdp1_regs_w));
+ map(0x05e00000, 0x05e7ffff).mirror(0x80000).rw(this, FUNC(sat_console_state::saturn_vdp2_vram_r), FUNC(sat_console_state::saturn_vdp2_vram_w));
+ map(0x05f00000, 0x05f7ffff).rw(this, FUNC(sat_console_state::saturn_vdp2_cram_r), FUNC(sat_console_state::saturn_vdp2_cram_w));
+ map(0x05f80000, 0x05fbffff).rw(this, FUNC(sat_console_state::saturn_vdp2_regs_r), FUNC(sat_console_state::saturn_vdp2_regs_w));
+ map(0x05fe0000, 0x05fe00cf).m(m_scu, FUNC(sega_scu_device::regs_map)); //AM_READWRITE(saturn_scu_r, saturn_scu_w)
+ map(0x06000000, 0x060fffff).ram().mirror(0x21f00000).share("workram_h");
+ map(0x45000000, 0x46ffffff).nopw();
+ map(0x60000000, 0x600003ff).nopw(); // cache address array
+ map(0xc0000000, 0xc0000fff).ram(); // cache data array, Dragon Ball Z sprites relies on this
+}
+
+void sat_console_state::sound_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).ram().share("sound_ram");
+ map(0x100000, 0x100fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write));
+}
INPUT_CHANGED_MEMBER(sat_console_state::tray_open)
diff --git a/src/mame/drivers/sauro.cpp b/src/mame/drivers/sauro.cpp
index a2531dfadd1..69c8913ec10 100644
--- a/src/mame/drivers/sauro.cpp
+++ b/src/mame/drivers/sauro.cpp
@@ -185,66 +185,71 @@ WRITE8_MEMBER(sauro_state::adpcm_w)
m_sp0256->ald_w(space, 0, data);
}
-ADDRESS_MAP_START(sauro_state::sauro_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sauro_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(sauro_colorram2_w) AM_SHARE("colorram2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sauro_state::sauro_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW2")
- AM_RANGE(0x40, 0x40) AM_READ_PORT("P1")
- AM_RANGE(0x60, 0x60) AM_READ_PORT("P2")
- AM_RANGE(0x80, 0x80) AM_WRITE(sauro_sound_command_w)
- AM_RANGE(0xa0, 0xa0) AM_WRITE(scroll_bg_w)
- AM_RANGE(0xa1, 0xa1) AM_WRITE(sauro_scroll_fg_w)
- AM_RANGE(0xc0, 0xcf) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sauro_state::sauro_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xa000, 0xa000) AM_WRITE(adpcm_w)
- AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
- AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */
- AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sauro_state::saurob_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP
- AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
- AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */
- AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sauro_state::trckydoc_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1")
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2")
- AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1")
- AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2")
- AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xf828, 0xf828) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xf830, 0xf830) AM_WRITE(scroll_bg_w)
- AM_RANGE(0xf838, 0xf83f) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void sauro_state::sauro_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xe800, 0xebff).ram().share("spriteram");
+ map(0xf000, 0xf3ff).ram().w(this, FUNC(sauro_state::videoram_w)).share("videoram");
+ map(0xf400, 0xf7ff).ram().w(this, FUNC(sauro_state::colorram_w)).share("colorram");
+ map(0xf800, 0xfbff).ram().w(this, FUNC(sauro_state::sauro_videoram2_w)).share("videoram2");
+ map(0xfc00, 0xffff).ram().w(this, FUNC(sauro_state::sauro_colorram2_w)).share("colorram2");
+}
+
+void sauro_state::sauro_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1");
+ map(0x20, 0x20).portr("DSW2");
+ map(0x40, 0x40).portr("P1");
+ map(0x60, 0x60).portr("P2");
+ map(0x80, 0x80).w(this, FUNC(sauro_state::sauro_sound_command_w));
+ map(0xa0, 0xa0).w(this, FUNC(sauro_state::scroll_bg_w));
+ map(0xa1, 0xa1).w(this, FUNC(sauro_state::sauro_scroll_fg_w));
+ map(0xc0, 0xcf).w("mainlatch", FUNC(ls259_device::write_a0));
+ map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
+
+void sauro_state::sauro_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xc001).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xa000, 0xa000).w(this, FUNC(sauro_state::adpcm_w));
+ map(0xe000, 0xe000).r(this, FUNC(sauro_state::sauro_sound_command_r));
+ map(0xe000, 0xe006).nopw(); /* echo from write to e0000 */
+ map(0xe00e, 0xe00f).nopw();
+}
+
+
+void sauro_state::saurob_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xc000, 0xc001).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xa000, 0xa000).nopw();
+ map(0xe000, 0xe000).r(this, FUNC(sauro_state::sauro_sound_command_r));
+ map(0xe000, 0xe006).nopw(); /* echo from write to e0000 */
+ map(0xe00e, 0xe00f).nopw();
+}
+
+
+void sauro_state::trckydoc_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().share("nvram");
+ map(0xe800, 0xebff).ram().mirror(0x400).share("spriteram");
+ map(0xf000, 0xf3ff).ram().w(this, FUNC(sauro_state::videoram_w)).share("videoram");
+ map(0xf400, 0xf7ff).ram().w(this, FUNC(sauro_state::colorram_w)).share("colorram");
+ map(0xf800, 0xf800).portr("DSW1");
+ map(0xf808, 0xf808).portr("DSW2");
+ map(0xf810, 0xf810).portr("P1");
+ map(0xf818, 0xf818).portr("P2");
+ map(0xf820, 0xf821).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xf828, 0xf828).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xf830, 0xf830).w(this, FUNC(sauro_state::scroll_bg_w));
+ map(0xf838, 0xf83f).w("mainlatch", FUNC(ls259_device::write_d0));
+}
/* verified from Z80 code */
diff --git a/src/mame/drivers/savia84.cpp b/src/mame/drivers/savia84.cpp
index 0e8b20cad4c..5635086aea2 100644
--- a/src/mame/drivers/savia84.cpp
+++ b/src/mame/drivers/savia84.cpp
@@ -61,18 +61,20 @@ private:
required_device<i8255_device> m_ppi8255;
};
-ADDRESS_MAP_START(savia84_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 not connected at the CPU
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x1800, 0x1fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(savia84_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // ports F8-FB
-ADDRESS_MAP_END
+void savia84_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x7fff); // A15 not connected at the CPU
+ map(0x0000, 0x07ff).rom();
+ map(0x1800, 0x1fff).ram();
+}
+
+void savia84_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x07);
+ map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); // ports F8-FB
+}
/* Input ports */
static INPUT_PORTS_START( savia84 )
diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp
index 51c6eb62029..6414f74ac33 100644
--- a/src/mame/drivers/savquest.cpp
+++ b/src/mame/drivers/savquest.cpp
@@ -736,40 +736,42 @@ WRITE8_MEMBER(savquest_state::smram_w)
}
-ADDRESS_MAP_START(savquest_state::savquest_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_READWRITE8(smram_r,smram_w,0xffffffff) //AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_f0000") AM_WRITE(bios_f0000_ram_w)
- AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_e0000") AM_WRITE(bios_e0000_ram_w)
- AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_e4000") AM_WRITE(bios_e4000_ram_w)
- AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_e8000") AM_WRITE(bios_e8000_ram_w)
- AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ec000") AM_WRITE(bios_ec000_ram_w)
- AM_RANGE(0x00100000, 0x07ffffff) AM_RAM // 128MB RAM
- AM_RANGE(0xe0000000, 0xe0fbffff) AM_DEVREADWRITE("voodoo", voodoo_device, voodoo_r, voodoo_w)
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(savquest_state::savquest_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("rtc", ds12885_device, read, write, 0xffffffff)
-
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
-
- AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0)
- AM_RANGE(0x0378, 0x037b) AM_READWRITE8(parallel_port_r, parallel_port_w, 0xffffffff)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1)
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1)
-
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
+void savquest_state::savquest_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw(this, FUNC(savquest_state::smram_r), FUNC(savquest_state::smram_w)); //AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
+ map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0);
+ map(0x000f0000, 0x000fffff).bankr("bios_f0000").w(this, FUNC(savquest_state::bios_f0000_ram_w));
+ map(0x000e0000, 0x000e3fff).bankr("bios_e0000").w(this, FUNC(savquest_state::bios_e0000_ram_w));
+ map(0x000e4000, 0x000e7fff).bankr("bios_e4000").w(this, FUNC(savquest_state::bios_e4000_ram_w));
+ map(0x000e8000, 0x000ebfff).bankr("bios_e8000").w(this, FUNC(savquest_state::bios_e8000_ram_w));
+ map(0x000ec000, 0x000effff).bankr("bios_ec000").w(this, FUNC(savquest_state::bios_ec000_ram_w));
+ map(0x00100000, 0x07ffffff).ram(); // 128MB RAM
+ map(0xe0000000, 0xe0fbffff).rw(m_voodoo, FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w));
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void savquest_state::savquest_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x0070, 0x007f).rw(m_mc146818, FUNC(ds12885_device::read), FUNC(ds12885_device::write));
+
+ map(0x00e8, 0x00ef).noprw();
+
+ map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0));
+ map(0x0378, 0x037b).rw(this, FUNC(savquest_state::parallel_port_r), FUNC(savquest_state::parallel_port_w));
+ map(0x03b0, 0x03bf).rw(m_vga, FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw(m_vga, FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw(m_vga, FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+ map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1));
+
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
// AM_RANGE(0x5000, 0x5007) // routes to port $eb
-ADDRESS_MAP_END
+}
#define AT_KEYB_HELPER(bit, text, key1) \
PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1)
diff --git a/src/mame/drivers/sbasketb.cpp b/src/mame/drivers/sbasketb.cpp
index 384904a9d01..093cb702865 100644
--- a/src/mame/drivers/sbasketb.cpp
+++ b/src/mame/drivers/sbasketb.cpp
@@ -79,39 +79,41 @@ WRITE_LINE_MEMBER(sbasketb_state::irq_mask_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(sbasketb_state::sbasketb_map)
- AM_RANGE(0x2000, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(sbasketb_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(sbasketb_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3a00, 0x3bff) AM_RAM /* Probably unused, but initialized */
- AM_RANGE(0x3c00, 0x3c00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3c10, 0x3c10) AM_READNOP /* ???? */
- AM_RANGE(0x3c20, 0x3c20) AM_WRITEONLY AM_SHARE("palettebank")
- AM_RANGE(0x3c80, 0x3c87) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x3d00, 0x3d00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w)
- AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3e01, 0x3e01) AM_READ_PORT("P1")
- AM_RANGE(0x3e02, 0x3e02) AM_READ_PORT("P2")
- AM_RANGE(0x3e03, 0x3e03) AM_READNOP
- AM_RANGE(0x3e80, 0x3e80) AM_READ_PORT("DSW2")
- AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("DSW1")
- AM_RANGE(0x3f80, 0x3f80) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbasketb_state::sbasketb_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */
- AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, hyperspt_sound_w) /* speech and output control */
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w) /* Loads the snd command into the snd latch */
- AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w) /* This address triggers the SN chip to read the data port. */
-ADDRESS_MAP_END
+void sbasketb_state::sbasketb_map(address_map &map)
+{
+ map(0x2000, 0x2fff).ram();
+ map(0x3000, 0x33ff).ram().w(this, FUNC(sbasketb_state::sbasketb_colorram_w)).share("colorram");
+ map(0x3400, 0x37ff).ram().w(this, FUNC(sbasketb_state::sbasketb_videoram_w)).share("videoram");
+ map(0x3800, 0x39ff).ram().share("spriteram");
+ map(0x3a00, 0x3bff).ram(); /* Probably unused, but initialized */
+ map(0x3c00, 0x3c00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3c10, 0x3c10).nopr(); /* ???? */
+ map(0x3c20, 0x3c20).writeonly().share("palettebank");
+ map(0x3c80, 0x3c87).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x3d00, 0x3d00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3d80, 0x3d80).w(this, FUNC(sbasketb_state::sbasketb_sh_irqtrigger_w));
+ map(0x3e00, 0x3e00).portr("SYSTEM");
+ map(0x3e01, 0x3e01).portr("P1");
+ map(0x3e02, 0x3e02).portr("P2");
+ map(0x3e03, 0x3e03).nopr();
+ map(0x3e80, 0x3e80).portr("DSW2");
+ map(0x3f00, 0x3f00).portr("DSW1");
+ map(0x3f80, 0x3f80).writeonly().share("scroll");
+ map(0x6000, 0xffff).rom();
+}
+
+void sbasketb_state::sbasketb_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8000).r("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sh_timer_r));
+ map(0xa000, 0xa000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* speech data */
+ map(0xc000, 0xdfff).w("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sound_w)); /* speech and output control */
+ map(0xe000, 0xe000).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe001, 0xe001).w(this, FUNC(sbasketb_state::konami_SN76496_latch_w)); /* Loads the snd command into the snd latch */
+ map(0xe002, 0xe002).w(this, FUNC(sbasketb_state::konami_SN76496_w)); /* This address triggers the SN chip to read the data port. */
+}
static INPUT_PORTS_START( sbasketb )
diff --git a/src/mame/drivers/sbc6510.cpp b/src/mame/drivers/sbc6510.cpp
index cb289ea97c7..178b6d3429f 100644
--- a/src/mame/drivers/sbc6510.cpp
+++ b/src/mame/drivers/sbc6510.cpp
@@ -94,27 +94,31 @@ private:
};
-ADDRESS_MAP_START(sbc6510_state::sbc6510_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0001) AM_RAM
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(a2_r,a2_w)
- AM_RANGE(0x0003, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe00f) AM_MIRROR(0x1f0) AM_DEVREADWRITE("cia6526", mos6526_device, read, write)
- AM_RANGE(0xe800, 0xe800) AM_MIRROR(0x1ff) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0xea00, 0xea00) AM_MIRROR(0x1ff) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbc6510_state::sbc6510_video_mem)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbc6510_state::sbc6510_video_data)
- AM_RANGE(0x0100, 0x04ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbc6510_state::sbc6510_video_io)
-ADDRESS_MAP_END
+void sbc6510_state::sbc6510_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0001).ram();
+ map(0x0002, 0x0002).rw(this, FUNC(sbc6510_state::a2_r), FUNC(sbc6510_state::a2_w));
+ map(0x0003, 0xdfff).ram();
+ map(0xe000, 0xe00f).mirror(0x1f0).rw("cia6526", FUNC(mos6526_device::read), FUNC(mos6526_device::write));
+ map(0xe800, 0xe800).mirror(0x1ff).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0xea00, 0xea00).mirror(0x1ff).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xf000, 0xffff).rom();
+}
+
+void sbc6510_state::sbc6510_video_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
+
+void sbc6510_state::sbc6510_video_data(address_map &map)
+{
+ map(0x0100, 0x04ff).ram();
+}
+
+void sbc6510_state::sbc6510_video_io(address_map &map)
+{
+}
/* Input ports */
static INPUT_PORTS_START( sbc6510 ) // cbm keyboard
diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp
index 08222af30d2..1fa1e23283d 100644
--- a/src/mame/drivers/sbowling.cpp
+++ b/src/mame/drivers/sbowling.cpp
@@ -247,23 +247,25 @@ READ8_MEMBER(sbowling_state::controls_r)
return ioport("TRACKX")->read();
}
-ADDRESS_MAP_START(sbowling_state::main_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xf801, 0xf801) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sbowling_state::port_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(controls_r, pix_data_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(pix_data_r, pix_shift_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW0") AM_WRITE(system_w)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW1") AM_WRITE(graph_control_w)
-ADDRESS_MAP_END
+void sbowling_state::main_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x8000, 0xbfff).ram().w(this, FUNC(sbowling_state::videoram_w)).share("videoram");
+ map(0xf800, 0xf801).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xf801, 0xf801).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xfc00, 0xffff).ram();
+}
+
+
+void sbowling_state::port_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x01, 0x01).rw(this, FUNC(sbowling_state::controls_r), FUNC(sbowling_state::pix_data_w));
+ map(0x02, 0x02).rw(this, FUNC(sbowling_state::pix_data_r), FUNC(sbowling_state::pix_shift_w));
+ map(0x03, 0x03).portr("IN1").nopw();
+ map(0x04, 0x04).portr("DSW0").w(this, FUNC(sbowling_state::system_w));
+ map(0x05, 0x05).portr("DSW1").w(this, FUNC(sbowling_state::graph_control_w));
+}
diff --git a/src/mame/drivers/sbrain.cpp b/src/mame/drivers/sbrain.cpp
index 1fefb4466d7..75eef4bc7b2 100644
--- a/src/mame/drivers/sbrain.cpp
+++ b/src/mame/drivers/sbrain.cpp
@@ -123,36 +123,40 @@ private:
required_ioport_array<10> m_keyboard;
};
-ADDRESS_MAP_START(sbrain_state::sbrain_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xbfff ) AM_RAMBANK("bank2")
- AM_RANGE( 0xc000, 0xf7ff ) AM_RAM
- AM_RANGE( 0xf800, 0xffff ) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbrain_state::sbrain_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_MIRROR(6) AM_DEVREADWRITE("uart0", i8251_device, data_r, data_w)
- AM_RANGE(0x41, 0x41) AM_MIRROR(6) AM_DEVREADWRITE("uart0", i8251_device, status_r, control_w)
- AM_RANGE(0x48, 0x4f) AM_READ(port48_r) //chr_int_latch
- AM_RANGE(0x50, 0x57) AM_READ(port50_r)
- AM_RANGE(0x58, 0x58) AM_MIRROR(6) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x59, 0x59) AM_MIRROR(6) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0x60, 0x67) AM_WRITE(baud_w)
- AM_RANGE(0x68, 0x6b) AM_MIRROR(4) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbrain_state::sbrain_submem)
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM
- AM_RANGE( 0x8800, 0x8bff ) AM_RAM AM_REGION("subcpu", 0x8800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbrain_state::sbrain_subio)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("fdc", fd1791_device, read, write)
- AM_RANGE(0x10, 0x10) AM_READWRITE(port10_r,port10_w)
-ADDRESS_MAP_END
+void sbrain_state::sbrain_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0");
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0xbfff).bankrw("bank2");
+ map(0xc000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("videoram");
+}
+
+void sbrain_state::sbrain_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).mirror(6).rw(m_u0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x41, 0x41).mirror(6).rw(m_u0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x48, 0x4f).r(this, FUNC(sbrain_state::port48_r)); //chr_int_latch
+ map(0x50, 0x57).r(this, FUNC(sbrain_state::port50_r));
+ map(0x58, 0x58).mirror(6).rw(m_u1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x59, 0x59).mirror(6).rw(m_u1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x60, 0x67).w(this, FUNC(sbrain_state::baud_w));
+ map(0x68, 0x6b).mirror(4).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void sbrain_state::sbrain_submem(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x8800, 0x8bff).ram().region("subcpu", 0x8800);
+}
+
+void sbrain_state::sbrain_subio(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x0b).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write));
+ map(0x10, 0x10).rw(this, FUNC(sbrain_state::port10_r), FUNC(sbrain_state::port10_w));
+}
READ8_MEMBER( sbrain_state::port48_r )
diff --git a/src/mame/drivers/sbrkout.cpp b/src/mame/drivers/sbrkout.cpp
index 17d265220f6..6deb92b69ad 100644
--- a/src/mame/drivers/sbrkout.cpp
+++ b/src/mame/drivers/sbrkout.cpp
@@ -418,21 +418,22 @@ uint32_t sbrkout_state::screen_update_sbrkout(screen_device &screen, bitmap_ind1
*************************************/
/* full memory map derived from schematics */
-ADDRESS_MAP_START(sbrkout_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x380) AM_RAMBANK("bank1")
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0800, 0x083f) AM_READ(switches_r)
- AM_RANGE(0x0840, 0x0840) AM_MIRROR(0x003f) AM_READ_PORT("COIN")
- AM_RANGE(0x0880, 0x0880) AM_MIRROR(0x003f) AM_READ_PORT("START")
- AM_RANGE(0x08c0, 0x08c0) AM_MIRROR(0x003f) AM_READ_PORT("SERVICE")
- AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_READ(sync_r)
- AM_RANGE(0x0c00, 0x0c7f) AM_WRITE(output_latch_w)
- AM_RANGE(0x0c80, 0x0c80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0e00, 0x0e00) AM_MIRROR(0x007f) AM_WRITE(irq_ack_w)
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03ff) AM_READ(sync2_r)
- AM_RANGE(0x2800, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void sbrkout_state::main_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x007f).mirror(0x380).bankrw("bank1");
+ map(0x0400, 0x07ff).ram().w(this, FUNC(sbrkout_state::sbrkout_videoram_w)).share("videoram");
+ map(0x0800, 0x083f).r(this, FUNC(sbrkout_state::switches_r));
+ map(0x0840, 0x0840).mirror(0x003f).portr("COIN");
+ map(0x0880, 0x0880).mirror(0x003f).portr("START");
+ map(0x08c0, 0x08c0).mirror(0x003f).portr("SERVICE");
+ map(0x0c00, 0x0c00).mirror(0x03ff).r(this, FUNC(sbrkout_state::sync_r));
+ map(0x0c00, 0x0c7f).w(this, FUNC(sbrkout_state::output_latch_w));
+ map(0x0c80, 0x0c80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x0e00, 0x0e00).mirror(0x007f).w(this, FUNC(sbrkout_state::irq_ack_w));
+ map(0x1000, 0x1000).mirror(0x03ff).r(this, FUNC(sbrkout_state::sync2_r));
+ map(0x2800, 0x3fff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/sbugger.cpp b/src/mame/drivers/sbugger.cpp
index 00f92ab6aa9..96e34727edc 100644
--- a/src/mame/drivers/sbugger.cpp
+++ b/src/mame/drivers/sbugger.cpp
@@ -111,19 +111,21 @@ Sound PCB
/* memory maps */
-ADDRESS_MAP_START(sbugger_state::sbugger_map)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(videoram_attr_w) AM_SHARE("videoram_attr")
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("i8156", i8155_device, memory_r, memory_w) /* sp is set to e0ff */
- AM_RANGE(0xf400, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sbugger_state::sbugger_io_map)
- AM_RANGE(0xe0, 0xe7) AM_DEVREADWRITE("i8156", i8155_device, io_r, io_w)
- AM_RANGE(0xe8, 0xe8) AM_DEVWRITE("sn76489.1", sn76489_device, write)
- AM_RANGE(0xe9, 0xe9) AM_DEVWRITE("sn76489.2", sn76489_device, write)
-ADDRESS_MAP_END
+void sbugger_state::sbugger_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0xc800, 0xcbff).ram().w(this, FUNC(sbugger_state::videoram_attr_w)).share("videoram_attr");
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(sbugger_state::videoram_w)).share("videoram");
+ map(0xe000, 0xe0ff).rw("i8156", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); /* sp is set to e0ff */
+ map(0xf400, 0xffff).ram();
+}
+
+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));
+}
/* gfx decode */
diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp
index 02272745947..edf6d7dc7c8 100644
--- a/src/mame/drivers/sc1.cpp
+++ b/src/mame/drivers/sc1.cpp
@@ -124,18 +124,20 @@ READ8_MEMBER( sc1_state::pio_port_b_r )
}
-ADDRESS_MAP_START(sc1_state::sc1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_ROM
- AM_RANGE( 0x4000, 0x43ff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sc1_state::sc1_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0xfc, 0xfc) AM_WRITE(matrix_w)
-ADDRESS_MAP_END
+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(this, FUNC(sc1_state::matrix_w));
+}
/* Input ports */
static INPUT_PORTS_START( sc1 )
diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp
index fb452c6f635..1260e0d0b48 100644
--- a/src/mame/drivers/sc2.cpp
+++ b/src/mame/drivers/sc2.cpp
@@ -60,19 +60,21 @@ READ8_MEMBER( sc2_state::sc2_beep )
return 0xff;
}
-ADDRESS_MAP_START(sc2_state::sc2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0fff ) AM_ROM
- AM_RANGE( 0x1000, 0x13ff ) AM_RAM
- AM_RANGE( 0x2000, 0x33ff ) AM_ROM
- AM_RANGE( 0x3c00, 0x3c00 ) AM_READ(sc2_beep)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sc2_state::sc2_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0xfc) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
-ADDRESS_MAP_END
+void sc2_state::sc2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram();
+ map(0x2000, 0x33ff).rom();
+ map(0x3c00, 0x3c00).r(this, 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("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( sc2 )
diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp
index cc44dc18617..70e7150c328 100644
--- a/src/mame/drivers/scobra.cpp
+++ b/src/mame/drivers/scobra.cpp
@@ -138,182 +138,190 @@ READ8_MEMBER(scobra_state::hustler_ppi8255_1_r){ return m_ppi8255_1->read(space,
WRITE8_MEMBER(scobra_state::hustler_ppi8255_0_w){ m_ppi8255_0->write(space, offset >> 3, data); }
WRITE8_MEMBER(scobra_state::hustler_ppi8255_1_w){ m_ppi8255_1->write(space, offset >> 3, data); }
-ADDRESS_MAP_START(scobra_state::type1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400)
- AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9080, 0x90ff) AM_RAM
- AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xa802, 0xa802) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xa804, 0xa804) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::type2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x8880, 0x88ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400)
- AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xa000, 0xa00f) AM_READWRITE(scobra_type2_ppi8255_0_r, scobra_type2_ppi8255_0_w)
- AM_RANGE(0xa800, 0xa80f) AM_READWRITE(scobra_type2_ppi8255_1_r, scobra_type2_ppi8255_1_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0xb008, 0xb008) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0xb00c, 0xb00c) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb00e, 0xb00e) AM_WRITE(galaxold_flip_screen_x_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::tazmani3_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x8880, 0x88ff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400)
- AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0xb008, 0xb008) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0xb00c, 0xb00c) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb00e, 0xb00e) AM_WRITE(galaxold_flip_screen_x_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::hustler_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9080, 0x90ff) AM_RAM
- AM_RANGE(0xa802, 0xa802) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xa804, 0xa804) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xa80e, 0xa80e) AM_WRITENOP /* coin counters */
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xd000, 0xd01f) AM_READWRITE(hustler_ppi8255_0_r, hustler_ppi8255_0_w)
- AM_RANGE(0xe000, 0xe01f) AM_READWRITE(hustler_ppi8255_1_r, hustler_ppi8255_1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::hustlerb_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9080, 0x90ff) AM_RAM
- AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xa802, 0xa802) AM_WRITENOP /* coin counters */
- AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc100, 0xc103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xc200, 0xc203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scobra_state::mimonkey_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400)
- AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9080, 0x90ff) AM_RAM
- AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xa800, 0xa802) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void scobra_state::type1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400);
+ map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9040, 0x905f).ram().share("spriteram");
+ map(0x9060, 0x907f).ram().share("bulletsram");
+ map(0x9080, 0x90ff).ram();
+ map(0x9800, 0x9803).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa000, 0xa003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa801, 0xa801).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xa802, 0xa802).w(this, FUNC(scobra_state::galaxold_coin_counter_w));
+ map(0xa804, 0xa804).w(this, FUNC(scobra_state::galaxold_stars_enable_w));
+ map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+ map(0xa807, 0xa807).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
+ map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void scobra_state::type2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x883f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x8840, 0x885f).ram().share("spriteram");
+ map(0x8860, 0x887f).ram().share("bulletsram");
+ map(0x8880, 0x88ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400);
+ map(0x9800, 0x9800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xa000, 0xa00f).rw(this, FUNC(scobra_state::scobra_type2_ppi8255_0_r), FUNC(scobra_state::scobra_type2_ppi8255_0_w));
+ map(0xa800, 0xa80f).rw(this, FUNC(scobra_state::scobra_type2_ppi8255_1_r), FUNC(scobra_state::scobra_type2_ppi8255_1_w));
+ map(0xb000, 0xb000).w(this, FUNC(scobra_state::galaxold_stars_enable_w));
+ map(0xb004, 0xb004).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(scobra_state::galaxold_coin_counter_0_w));
+ map(0xb008, 0xb008).w(this, FUNC(scobra_state::galaxold_coin_counter_1_w));
+ map(0xb00c, 0xb00c).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
+ map(0xb00e, 0xb00e).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+}
+
+void scobra_state::tazmani3_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x883f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x8840, 0x885f).ram().share("spriteram");
+ map(0x8860, 0x887f).ram().share("bulletsram");
+ map(0x8880, 0x88ff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400);
+ map(0x9800, 0x9800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xa000, 0xa003).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa800, 0xa803).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb000, 0xb000).w(this, FUNC(scobra_state::galaxold_stars_enable_w));
+ map(0xb001, 0xb001).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xb006, 0xb006).w(this, FUNC(scobra_state::galaxold_coin_counter_0_w));
+ map(0xb008, 0xb008).w(this, FUNC(scobra_state::galaxold_coin_counter_1_w));
+ map(0xb00c, 0xb00c).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
+ map(0xb00e, 0xb00e).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+}
+
+void scobra_state::hustler_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram");
+ map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9040, 0x905f).ram().share("spriteram");
+ map(0x9060, 0x907f).ram().share("bulletsram");
+ map(0x9080, 0x90ff).ram();
+ map(0xa802, 0xa802).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+ map(0xa804, 0xa804).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
+ map(0xa80e, 0xa80e).nopw(); /* coin counters */
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xd000, 0xd01f).rw(this, FUNC(scobra_state::hustler_ppi8255_0_r), FUNC(scobra_state::hustler_ppi8255_0_w));
+ map(0xe000, 0xe01f).rw(this, FUNC(scobra_state::hustler_ppi8255_1_r), FUNC(scobra_state::hustler_ppi8255_1_w));
+}
+
+void scobra_state::hustlerb_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram");
+ map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9040, 0x905f).ram().share("spriteram");
+ map(0x9060, 0x907f).ram().share("bulletsram");
+ map(0x9080, 0x90ff).ram();
+ map(0xa801, 0xa801).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xa802, 0xa802).nopw(); /* coin counters */
+ map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
+ map(0xa807, 0xa807).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+ map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc100, 0xc103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc200, 0xc203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+
+void scobra_state::mimonkey_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400);
+ map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9040, 0x905f).ram().share("spriteram");
+ map(0x9060, 0x907f).ram().share("bulletsram");
+ map(0x9080, 0x90ff).ram();
+ map(0x9800, 0x9803).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa000, 0xa003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa800, 0xa802).w(this, FUNC(scobra_state::galaxold_gfxbank_w));
+ map(0xa801, 0xa801).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+ map(0xa807, 0xa807).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
+ map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc000, 0xffff).rom();
+}
// weird address map like anteateruk in galaxian.c (also a free enterprise set)
-ADDRESS_MAP_START(scobra_state::rescuefe_map)
- AM_RANGE(0x0000, 0x05ff) AM_ROM
- AM_RANGE(0x0600, 0x0fff) AM_RAM // sets stack here
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x143f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x1440, 0x145f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1460, 0x147f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x1480, 0x14ff) AM_RAM
+void scobra_state::rescuefe_map(address_map &map)
+{
+ map(0x0000, 0x05ff).rom();
+ map(0x0600, 0x0fff).ram(); // sets stack here
+ map(0x1000, 0x13ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram");
+ map(0x1400, 0x143f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x1440, 0x145f).ram().share("spriteram");
+ map(0x1460, 0x147f).ram().share("bulletsram");
+ map(0x1480, 0x14ff).ram();
- AM_RANGE(0x4400, 0x5dff) AM_ROM
- AM_RANGE(0x5e00, 0x6bff) AM_ROM // some right?
+ map(0x4400, 0x5dff).rom();
+ map(0x5e00, 0x6bff).rom(); // some right?
- AM_RANGE(0x8200, 0x93ff) AM_ROM // wrong? (maybe some correct?)
+ map(0x8200, 0x93ff).rom(); // wrong? (maybe some correct?)
- AM_RANGE(0xa600, 0xa6ff) AM_ROM // wrong (taunt string) jumps to around a600 so something must map in this area?
+ map(0xa600, 0xa6ff).rom(); // wrong (taunt string) jumps to around a600 so something must map in this area?
- AM_RANGE(0xEA01, 0xEA01) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xEA93, 0xEA93) AM_WRITE(scrambold_background_enable_w)
- AM_RANGE(0xEA86, 0xEA86) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xEA87, 0xEA87) AM_WRITE(galaxold_flip_screen_y_w)
+ map(0xEA01, 0xEA01).w(this, FUNC(scobra_state::galaxold_nmi_enable_w));
+ map(0xEA93, 0xEA93).w(this, FUNC(scobra_state::scrambold_background_enable_w));
+ map(0xEA86, 0xEA86).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w));
+ map(0xEA87, 0xEA87).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w));
// does it have a real ppi8255?
- AM_RANGE(0xC190, 0xC193) AM_DEVREAD("ppi8255_0", i8255_device, read) // ?
- AM_RANGE(0xC160, 0xC163) AM_DEVREAD("ppi8255_0", i8255_device, read) // ?
+ map(0xC190, 0xC193).r(m_ppi8255_0, FUNC(i8255_device::read)); // ?
+ map(0xC160, 0xC163).r(m_ppi8255_0, FUNC(i8255_device::read)); // ?
- AM_RANGE(0xC4Ac, 0xC4AF) AM_DEVREAD("ppi8255_1", i8255_device, read) // ?
+ map(0xC4Ac, 0xC4AF).r(m_ppi8255_1, FUNC(i8255_device::read)); // ?
- AM_RANGE(0xc180, 0xc183) AM_DEVWRITE("ppi8255_0", i8255_device, write) // correct based on main set?
- AM_RANGE(0xc220, 0xc223) AM_DEVWRITE("ppi8255_1", i8255_device, write) // ^
+ map(0xc180, 0xc183).w(m_ppi8255_0, FUNC(i8255_device::write)); // correct based on main set?
+ map(0xc220, 0xc223).w(m_ppi8255_1, FUNC(i8255_device::write)); // ^
// addresses below are WRONG, just moved to keep things out the way while the rom mapping is figured out
// AM_RANGE(0xf802, 0xf802) AM_WRITE(galaxold_coin_counter_w)
// AM_RANGE(0xf000, 0xf000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(scobra_state::minefldfe_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM // ok
- AM_RANGE(0x0c00, 0x0c3f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") // ok
- AM_RANGE(0x0c40, 0x0c5f) AM_RAM AM_SHARE("spriteram") // ok
- AM_RANGE(0x0c60, 0x0c7f) AM_RAM AM_SHARE("bulletsram") // ok
- AM_RANGE(0x0c80, 0x17ff) AM_RAM
+void scobra_state::minefldfe_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom(); // ok
+ map(0x0c00, 0x0c3f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); // ok
+ map(0x0c40, 0x0c5f).ram().share("spriteram"); // ok
+ map(0x0c60, 0x0c7f).ram().share("bulletsram"); // ok
+ map(0x0c80, 0x17ff).ram();
- AM_RANGE(0x2200, 0x3fff) AM_ROM // ok
- AM_RANGE(0x5800, 0x6dff) AM_ROM
- AM_RANGE(0x8a00, 0x91ff) AM_ROM
+ map(0x2200, 0x3fff).rom(); // ok
+ map(0x5800, 0x6dff).rom();
+ map(0x8a00, 0x91ff).rom();
- AM_RANGE(0x4200, 0x45ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") // ok
+ map(0x4200, 0x45ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram"); // ok
- AM_RANGE(0x7621, 0x7621) AM_WRITE(galaxold_nmi_enable_w) // a801
- AM_RANGE(0x7673, 0x7673) AM_WRITE(scrambold_background_enable_w) // a083
- AM_RANGE(0x7704, 0x7704) AM_WRITE(galaxold_stars_enable_w) // a804
- AM_RANGE(0x7616, 0x7616) AM_WRITE(galaxold_flip_screen_x_w) // a806
- AM_RANGE(0x7617, 0x7617) AM_WRITE(galaxold_flip_screen_y_w) // a807
+ map(0x7621, 0x7621).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); // a801
+ map(0x7673, 0x7673).w(this, FUNC(scobra_state::scrambold_background_enable_w)); // a083
+ map(0x7704, 0x7704).w(this, FUNC(scobra_state::galaxold_stars_enable_w)); // a804
+ map(0x7616, 0x7616).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); // a806
+ map(0x7617, 0x7617).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); // a807
- AM_RANGE(0x4C00, 0x4C03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x4B00, 0x4B03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ map(0x4C00, 0x4C03).mirror(0x00fc).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x4B00, 0x4B03).mirror(0x00fc).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
- AM_RANGE(0x1D98, 0x1D98) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) // 0xb000
+ map(0x1D98, 0x1D98).r("watchdog", FUNC(watchdog_timer_device::reset_r)); // 0xb000
// addresses below are WRONG, just moved to keep things out the way while the rom mapping is figured out
- AM_RANGE(0xf802, 0xf802) AM_WRITE(galaxold_coin_counter_w)
-ADDRESS_MAP_END
+ map(0xf802, 0xf802).w(this, FUNC(scobra_state::galaxold_coin_counter_w));
+}
READ8_MEMBER(scobra_state::scobra_soundram_r)
@@ -326,45 +334,51 @@ WRITE8_MEMBER(scobra_state::scobra_soundram_w)
m_soundram[offset & 0x03ff] = data;
}
-ADDRESS_MAP_START(scobra_state::scobra_sound_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(scobra_soundram_r, scobra_soundram_w) AM_SHARE("soundram")
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(scramble_filter_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scobra_state::scobra_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::hustler_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(frogger_filter_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::hustler_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scobra_state::hustlerb_sound_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(frogger_filter_w)
- AM_RANGE(0x8000, 0x8fff) AM_RAM_READ(scobra_soundram_r) AM_SHARE("soundram") /* only here to initialize pointer */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scobra_state::hustlerb_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
+void scobra_state::scobra_sound_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x8000, 0x8fff).rw(this, FUNC(scobra_state::scobra_soundram_r), FUNC(scobra_state::scobra_soundram_w)).share("soundram");
+ map(0x9000, 0x9fff).w(this, FUNC(scobra_state::scramble_filter_w));
+}
+
+
+void scobra_state::scobra_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x20, 0x20).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x40, 0x40).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x80, 0x80).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
+
+void scobra_state::hustler_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6fff).w(this, FUNC(scobra_state::frogger_filter_w));
+}
+
+void scobra_state::hustler_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w));
+}
+
+
+void scobra_state::hustlerb_sound_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x6000, 0x6fff).w(this, FUNC(scobra_state::frogger_filter_w));
+ map(0x8000, 0x8fff).ram().r(this, FUNC(scobra_state::scobra_soundram_r)).share("soundram"); /* only here to initialize pointer */
+}
+
+void scobra_state::hustlerb_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x80, 0x80).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
/* stratgyx coinage DIPs are spread across two input ports */
diff --git a/src/mame/drivers/scopus.cpp b/src/mame/drivers/scopus.cpp
index e14a9010f6e..395d45e99cf 100644
--- a/src/mame/drivers/scopus.cpp
+++ b/src/mame/drivers/scopus.cpp
@@ -117,21 +117,23 @@ void sagitta180_state::machine_reset()
{
}
-ADDRESS_MAP_START(sagitta180_state::maincpu_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
+void sagitta180_state::maincpu_map(address_map &map)
+{
+ map.global_mask(0xffff);
+ map(0x0000, 0x07ff).rom();
// AM_RANGE(0x0800, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x1800, 0xffff).ram();
+}
-ADDRESS_MAP_START(sagitta180_state::maincpu_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW")
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("crtc", i8275_device, read, write)
- AM_RANGE(0x40, 0x48) AM_DEVREADWRITE("dma", i8257_device, read, write)
-ADDRESS_MAP_END
+void sagitta180_state::maincpu_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("DSW");
+ map(0x20, 0x20).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x30, 0x31).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0x40, 0x48).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write));
+}
static INPUT_PORTS_START( sagitta180 )
diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp
index fe8b40070da..99399b1e196 100644
--- a/src/mame/drivers/scorpion.cpp
+++ b/src/mame/drivers/scorpion.cpp
@@ -176,32 +176,35 @@ READ8_MEMBER(scorpion_state::beta_disable_r)
return m_program->read_byte(offset + 0x4000);
}
-ADDRESS_MAP_START(scorpion_state::scorpion_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") AM_WRITE(scorpion_0000_w)
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scorpion_state::scorpion_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00)
- AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00)
- AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00)
- AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00)
- AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xff00)
- AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00)
- AM_RANGE(0x4021, 0x4021) AM_WRITE(scorpion_port_7ffd_w) AM_MIRROR(0x3fdc)
- AM_RANGE(0x8021, 0x8021) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3fdc)
- AM_RANGE(0xc021, 0xc021) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3fdc)
- AM_RANGE(0x0021, 0x0021) AM_WRITE(scorpion_port_1ffd_w) AM_MIRROR(0x3fdc)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scorpion_state::scorpion_switch)
- AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range
- AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r)
- AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r)
-ADDRESS_MAP_END
+void scorpion_state::scorpion_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(scorpion_state::scorpion_0000_w));
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void scorpion_state::scorpion_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x001f, 0x001f).rw(m_beta, FUNC(beta_disk_device::status_r), FUNC(beta_disk_device::command_w)).mirror(0xff00);
+ map(0x003f, 0x003f).rw(m_beta, FUNC(beta_disk_device::track_r), FUNC(beta_disk_device::track_w)).mirror(0xff00);
+ map(0x005f, 0x005f).rw(m_beta, FUNC(beta_disk_device::sector_r), FUNC(beta_disk_device::sector_w)).mirror(0xff00);
+ map(0x007f, 0x007f).rw(m_beta, FUNC(beta_disk_device::data_r), FUNC(beta_disk_device::data_w)).mirror(0xff00);
+ map(0x00fe, 0x00fe).rw(this, FUNC(scorpion_state::spectrum_port_fe_r), FUNC(scorpion_state::spectrum_port_fe_w)).select(0xff00);
+ map(0x00ff, 0x00ff).rw(m_beta, FUNC(beta_disk_device::state_r), FUNC(beta_disk_device::param_w)).mirror(0xff00);
+ map(0x4021, 0x4021).w(this, FUNC(scorpion_state::scorpion_port_7ffd_w)).mirror(0x3fdc);
+ map(0x8021, 0x8021).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3fdc);
+ map(0xc021, 0xc021).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3fdc);
+ map(0x0021, 0x0021).w(this, FUNC(scorpion_state::scorpion_port_1ffd_w)).mirror(0x3fdc);
+}
+
+void scorpion_state::scorpion_switch(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(scorpion_state::beta_neutral_r)); // Overlap with previous because we want real addresses on the 3e00-3fff range
+ map(0x3d00, 0x3dff).r(this, FUNC(scorpion_state::beta_enable_r));
+ map(0x4000, 0xffff).r(this, FUNC(scorpion_state::beta_disable_r));
+}
MACHINE_RESET_MEMBER(scorpion_state,scorpion)
{
diff --git a/src/mame/drivers/scotrsht.cpp b/src/mame/drivers/scotrsht.cpp
index d56c8ab8bce..291e8fb83d5 100644
--- a/src/mame/drivers/scotrsht.cpp
+++ b/src/mame/drivers/scotrsht.cpp
@@ -64,40 +64,43 @@ WRITE8_MEMBER(scotrsht_state::soundlatch_w)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(scotrsht_state::scotrsht_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram") /* sprites */
- AM_RANGE(0x10c0, 0x1fff) AM_RAM /* work ram */
- AM_RANGE(0x2000, 0x201f) AM_RAM AM_SHARE("scroll") /* scroll registers */
- AM_RANGE(0x2040, 0x2040) AM_WRITENOP
- AM_RANGE(0x2041, 0x2041) AM_WRITENOP
- AM_RANGE(0x2042, 0x2042) AM_WRITENOP /* it should be -> bit 2 = scroll direction like in jailbrek, but it's not used */
- AM_RANGE(0x2043, 0x2043) AM_WRITE(charbank_w)
- AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(palettebank_w)
- AM_RANGE(0x3100, 0x3100) AM_WRITE(soundlatch_w)
- AM_RANGE(0x3200, 0x3200) AM_WRITENOP /* it writes 0, 1 */
- AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2")
- AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3")
- AM_RANGE(0x3300, 0x3300) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3301, 0x3301) AM_READ_PORT("P1")
- AM_RANGE(0x3302, 0x3302) AM_READ_PORT("P2")
- AM_RANGE(0x3303, 0x3303) AM_READ_PORT("DSW1")
- AM_RANGE(0x3300, 0x3300) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scotrsht_state::scotrsht_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scotrsht_state::scotrsht_sound_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void scotrsht_state::scotrsht_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(this, FUNC(scotrsht_state::colorram_w)).share("colorram");
+ map(0x0800, 0x0fff).ram().w(this, FUNC(scotrsht_state::videoram_w)).share("videoram");
+ map(0x1000, 0x10bf).ram().share("spriteram"); /* sprites */
+ map(0x10c0, 0x1fff).ram(); /* work ram */
+ map(0x2000, 0x201f).ram().share("scroll"); /* scroll registers */
+ map(0x2040, 0x2040).nopw();
+ map(0x2041, 0x2041).nopw();
+ map(0x2042, 0x2042).nopw(); /* it should be -> bit 2 = scroll direction like in jailbrek, but it's not used */
+ map(0x2043, 0x2043).w(this, FUNC(scotrsht_state::charbank_w));
+ map(0x2044, 0x2044).w(this, FUNC(scotrsht_state::ctrl_w));
+ map(0x3000, 0x3000).w(this, FUNC(scotrsht_state::palettebank_w));
+ map(0x3100, 0x3100).w(this, FUNC(scotrsht_state::soundlatch_w));
+ map(0x3200, 0x3200).nopw(); /* it writes 0, 1 */
+ map(0x3100, 0x3100).portr("DSW2");
+ map(0x3200, 0x3200).portr("DSW3");
+ map(0x3300, 0x3300).portr("SYSTEM");
+ map(0x3301, 0x3301).portr("P1");
+ map(0x3302, 0x3302).portr("P2");
+ map(0x3303, 0x3303).portr("DSW1");
+ map(0x3300, 0x3300).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void scotrsht_state::scotrsht_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void scotrsht_state::scotrsht_sound_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
static INPUT_PORTS_START( scotrsht )
diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp
index e6bc6278f8c..5a8c67f496a 100644
--- a/src/mame/drivers/scramble.cpp
+++ b/src/mame/drivers/scramble.cpp
@@ -40,26 +40,27 @@ Notes:
#include "speaker.h"
-ADDRESS_MAP_START(scramble_state::scramble_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror address */
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8100, 0x8103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x8110, 0x8113) AM_DEVREAD("ppi8255_0", i8255_device, read) /* mirror for Frog */
- AM_RANGE(0x8200, 0x8203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
-ADDRESS_MAP_END
+void scramble_state::scramble_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_coin_counter_w));
+ map(0x6804, 0x6804).w(this, FUNC(scramble_state::galaxold_stars_enable_w));
+ map(0x6806, 0x6806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x6807, 0x6807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x8110, 0x8113).r(m_ppi8255_0, FUNC(i8255_device::read)); /* mirror for Frog */
+ map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
READ8_MEMBER(scramble_state::scramble_soundram_r)
{
@@ -71,37 +72,40 @@ WRITE8_MEMBER(scramble_state::scramble_soundram_w)
m_soundram[offset & 0x03ff] = data;
}
-ADDRESS_MAP_START(scramble_state::scramble_sound_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(scramble_soundram_r, scramble_soundram_w) AM_SHARE("soundram")
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(scramble_filter_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scramble_state::scramble_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("8910.1", ay8910_device, address_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("8910.1", ay8910_device, data_r, data_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("8910.2", ay8910_device, address_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8910.2", ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scramble_state::ckongs_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x7800, 0x7803) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9880, 0x98ff) AM_RAM
- AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0xa802, 0xa802) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+void scramble_state::scramble_sound_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x8000, 0x8fff).rw(this, FUNC(scramble_state::scramble_soundram_r), FUNC(scramble_state::scramble_soundram_w)).share("soundram");
+ map(0x9000, 0x9fff).w(this, FUNC(scramble_state::scramble_filter_w));
+}
+
+void scramble_state::scramble_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w));
+ map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x40, 0x40).w("8910.2", FUNC(ay8910_device::address_w));
+ map(0x80, 0x80).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
+
+
+void scramble_state::ckongs_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram();
+ map(0x7000, 0x7003).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7800, 0x7803).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x9000, 0x93ff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x9800, 0x983f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x987f).ram().share("bulletsram");
+ map(0x9880, 0x98ff).ram();
+ map(0xa801, 0xa801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0xa802, 0xa802).w(this, FUNC(scramble_state::galaxold_coin_counter_w));
+ map(0xa806, 0xa806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0xa807, 0xa807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
@@ -125,205 +129,215 @@ WRITE8_MEMBER(scramble_state::mars_ppi8255_1_w)
m_ppi8255_1->write(space, ((offset >> 2) & 0x02) | ((offset >> 1) & 0x01), data);
}
-ADDRESS_MAP_START(scramble_state::mars_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6808, 0x6808) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0x6809, 0x6809) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x680b, 0x680b) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x7000, 0x7000) AM_READNOP
- AM_RANGE(0x8100, 0x810f) AM_READWRITE(mars_ppi8255_0_r, mars_ppi8255_0_w)
- AM_RANGE(0x8200, 0x820f) AM_READWRITE(mars_ppi8255_1_r, mars_ppi8255_1_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::newsin7_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_stars_enable_w)
+void scramble_state::mars_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).r(this, FUNC(scramble_state::galaxold_videoram_r));
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w));
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_stars_enable_w));
+ map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x6808, 0x6808).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w));
+ map(0x6809, 0x6809).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x680b, 0x680b).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x7000, 0x7000).nopr();
+ map(0x8100, 0x810f).rw(this, FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w));
+ map(0x8200, 0x820f).rw(this, FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w));
+}
+
+
+
+void scramble_state::newsin7_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).r(this, FUNC(scramble_state::galaxold_videoram_r));
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w));
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_stars_enable_w));
//AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6808, 0x6808) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0x6809, 0x6809) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x680b, 0x680b) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8200, 0x820f) AM_READWRITE(mars_ppi8255_1_r, mars_ppi8255_1_w)
- AM_RANGE(0xa000, 0xafff) AM_ROM
- AM_RANGE(0xc100, 0xc10f) AM_READWRITE(mars_ppi8255_0_r, mars_ppi8255_0_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::mrkougar_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w)
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6808, 0x6808) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0x6809, 0x6809) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x680b, 0x680b) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8100, 0x810f) AM_READWRITE(mars_ppi8255_0_r, mars_ppi8255_0_w)
- AM_RANGE(0x8200, 0x820f) AM_READWRITE(mars_ppi8255_1_r, mars_ppi8255_1_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::hotshock_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READ(galaxold_videoram_r)
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_WRITE(galaxold_coin_counter_2_w)
- AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0x6004, 0x6004) AM_WRITE(hotshock_flip_screen_w)
- AM_RANGE(0x6005, 0x6005) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0x6006, 0x6006) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2")
- AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3")
- AM_RANGE(0x9000, 0x9000) AM_WRITE(hotshock_sh_irqtrigger_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::hunchbks_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1210, 0x1213) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x1400, 0x143f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x1440, 0x145f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1460, 0x147f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x1480, 0x14ff) AM_RAM
- AM_RANGE(0x1500, 0x1503) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x1606, 0x1606) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x1607, 0x1607) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x1680, 0x1680) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x1780, 0x1780) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE(hunchbks_mirror_r, hunchbks_mirror_w)
- AM_RANGE(0x4000, 0x4fff) AM_ROM
- AM_RANGE(0x5000, 0x5fff) AM_READWRITE(hunchbks_mirror_r, hunchbks_mirror_w)
- AM_RANGE(0x6000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7fff) AM_READWRITE(hunchbks_mirror_r, hunchbks_mirror_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::mimonscr_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror address?, probably not */
- AM_RANGE(0x4400, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x6800, 0x6802) AM_WRITE(galaxold_gfxbank_w)
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8100, 0x8103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x8200, 0x8203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::ad2083_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x6004, 0x6004) AM_WRITE(hotshock_flip_screen_w)
- AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_2_w)
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_0_w)
- AM_RANGE(0x6803, 0x6803) AM_WRITE(scrambold_background_blue_w)
- AM_RANGE(0x6805, 0x6805) AM_WRITE(galaxold_coin_counter_1_w)
- AM_RANGE(0x6806, 0x6806) AM_WRITE(scrambold_background_red_w)
- AM_RANGE(0x6807, 0x6807) AM_WRITE(scrambold_background_green_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x9000, 0x9000) AM_WRITE(hotshock_sh_irqtrigger_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2")
- AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3")
- AM_RANGE(0xa000, 0xdfff) AM_ROM
- AM_RANGE(0xe800, 0xebff) AM_RAM
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(scramble_state::triplep_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror address */
- AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x5080, 0x50ff) AM_RAM
- AM_RANGE(0x5800, 0x67ff) AM_ROM
- AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
- AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w)
- AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w)
- AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8100, 0x8103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scramble_state::triplep_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("8910.1", ay8910_device, data_address_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("8910.1", ay8910_device, data_r)
- AM_RANGE(0x02, 0x02) AM_READ(triplep_pip_r)
- AM_RANGE(0x03, 0x03) AM_READ(triplep_pap_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(scramble_state::hotshock_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("8910.1", ay8910_device, address_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("8910.1", ay8910_device, data_r, data_w)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("8910.2", ay8910_device, data_r, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("8910.2", ay8910_device, address_w)
-ADDRESS_MAP_END
+ map(0x6808, 0x6808).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w));
+ map(0x6809, 0x6809).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x680b, 0x680b).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8200, 0x820f).rw(this, FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w));
+ map(0xa000, 0xafff).rom();
+ map(0xc100, 0xc10f).rw(this, FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w));
+}
+
+
+
+void scramble_state::mrkougar_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w));
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w));
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x6808, 0x6808).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w));
+ map(0x6809, 0x6809).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x680b, 0x680b).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8100, 0x810f).rw(this, FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w));
+ map(0x8200, 0x820f).rw(this, FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w));
+}
+
+
+
+void scramble_state::hotshock_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).r(this, FUNC(scramble_state::galaxold_videoram_r));
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6000, 0x6000).w(this, FUNC(scramble_state::galaxold_coin_counter_2_w));
+ map(0x6002, 0x6002).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w));
+ map(0x6004, 0x6004).w(this, FUNC(scramble_state::hotshock_flip_screen_w));
+ map(0x6005, 0x6005).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w));
+ map(0x6006, 0x6006).w(this, FUNC(scramble_state::galaxold_gfxbank_w));
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0x8000).portr("IN0").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x8001, 0x8001).portr("IN1");
+ map(0x8002, 0x8002).portr("IN2");
+ map(0x8003, 0x8003).portr("IN3");
+ map(0x9000, 0x9000).w(this, FUNC(scramble_state::hotshock_sh_irqtrigger_w));
+}
+
+
+
+void scramble_state::hunchbks_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1210, 0x1213).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1400, 0x143f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x1440, 0x145f).ram().share("spriteram");
+ map(0x1460, 0x147f).ram().share("bulletsram");
+ map(0x1480, 0x14ff).ram();
+ map(0x1500, 0x1503).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1606, 0x1606).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x1607, 0x1607).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x1680, 0x1680).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x1780, 0x1780).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x1800, 0x1bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x1c00, 0x1fff).ram();
+ map(0x2000, 0x2fff).rom();
+ map(0x3000, 0x3fff).rw(this, FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w));
+ map(0x4000, 0x4fff).rom();
+ map(0x5000, 0x5fff).rw(this, FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w));
+ map(0x6000, 0x6fff).rom();
+ map(0x7000, 0x7fff).rw(this, FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w));
+}
+
+
+
+void scramble_state::mimonscr_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address?, probably not */
+ map(0x4400, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x6800, 0x6802).w(this, FUNC(scramble_state::galaxold_gfxbank_w));
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x6806, 0x6806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x6807, 0x6807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc000, 0xffff).rom();
+}
+
+
+
+void scramble_state::ad2083_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x6004, 0x6004).w(this, FUNC(scramble_state::hotshock_flip_screen_w));
+ map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_2_w));
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w));
+ map(0x6803, 0x6803).w(this, FUNC(scramble_state::scrambold_background_blue_w));
+ map(0x6805, 0x6805).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w));
+ map(0x6806, 0x6806).w(this, FUNC(scramble_state::scrambold_background_red_w));
+ map(0x6807, 0x6807).w(this, FUNC(scramble_state::scrambold_background_green_w));
+ map(0x8000, 0x8000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x9000, 0x9000).w(this, FUNC(scramble_state::hotshock_sh_irqtrigger_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8001, 0x8001).portr("IN1");
+ map(0x8002, 0x8002).portr("IN2");
+ map(0x8003, 0x8003).portr("IN3");
+ map(0xa000, 0xdfff).rom();
+ map(0xe800, 0xebff).ram();
+}
+
+
+
+void scramble_state::triplep_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */
+ map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x5040, 0x505f).ram().share("spriteram");
+ map(0x5060, 0x507f).ram().share("bulletsram");
+ map(0x5080, 0x50ff).ram();
+ map(0x5800, 0x67ff).rom();
+ map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
+ map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_coin_counter_w));
+ map(0x6804, 0x6804).w(this, FUNC(scramble_state::galaxold_stars_enable_w));
+ map(0x6806, 0x6806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w));
+ map(0x6807, 0x6807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w));
+ map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void scramble_state::triplep_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("8910.1", FUNC(ay8910_device::data_address_w));
+ map(0x01, 0x01).r("8910.1", FUNC(ay8910_device::data_r));
+ map(0x02, 0x02).r(this, FUNC(scramble_state::triplep_pip_r));
+ map(0x03, 0x03).r(this, FUNC(scramble_state::triplep_pap_r));
+}
+
+void scramble_state::hotshock_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w));
+ map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x40, 0x40).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w("8910.2", FUNC(ay8910_device::address_w));
+}
@@ -335,68 +349,73 @@ READ8_MEMBER(scramble_state::hncholms_prot_r)
return 0;
}
-ADDRESS_MAP_START(scramble_state::hunchbks_readport)
- AM_RANGE(0x00, 0x00) AM_READ(hncholms_prot_r)
-ADDRESS_MAP_END
+void scramble_state::hunchbks_readport(address_map &map)
+{
+ map(0x00, 0x00).r(this, FUNC(scramble_state::hncholms_prot_r));
+}
// Harem
-ADDRESS_MAP_START(scramble_state::harem_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
+void scramble_state::harem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
- AM_RANGE(0x2000, 0x27ff) AM_RAM
+ map(0x2000, 0x27ff).ram();
- AM_RANGE(0x4000, 0x403f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
- AM_RANGE(0x4040, 0x405f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4060, 0x407f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x4080, 0x47ff) AM_RAM
+ map(0x4000, 0x403f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
+ map(0x4040, 0x405f).ram().share("spriteram");
+ map(0x4060, 0x407f).ram().share("bulletsram");
+ map(0x4080, 0x47ff).ram();
- AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) // mirror address
+ map(0x4800, 0x4bff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); // mirror address
- AM_RANGE(0x5000, 0x5000) AM_RAM_WRITE(racknrol_tiles_bank_w) AM_SHARE("racknrol_tbank") // high bits of tiles, 1 bit every 4 columns
- AM_RANGE(0x5800, 0x5800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(galaxold_nmi_enable_w)
+ map(0x5000, 0x5000).ram().w(this, FUNC(scramble_state::racknrol_tiles_bank_w)).share("racknrol_tbank"); // high bits of tiles, 1 bit every 4 columns
+ map(0x5800, 0x5800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(scramble_state::galaxold_nmi_enable_w));
- AM_RANGE(0x5801, 0x5801) AM_WRITE(harem_decrypt_clk_w) // run-time bitswap selection
- AM_RANGE(0x5802, 0x5802) AM_WRITE(harem_decrypt_bit_w)
- AM_RANGE(0x5803, 0x5803) AM_WRITE(harem_decrypt_rst_w)
+ map(0x5801, 0x5801).w(this, FUNC(scramble_state::harem_decrypt_clk_w)); // run-time bitswap selection
+ map(0x5802, 0x5802).w(this, FUNC(scramble_state::harem_decrypt_bit_w));
+ map(0x5803, 0x5803).w(this, FUNC(scramble_state::harem_decrypt_rst_w));
- AM_RANGE(0x5804, 0x5804) AM_WRITE(galaxold_coin_counter_w)
- AM_RANGE(0x5805, 0x5805) AM_WRITE(galaxold_gfxbank_w) // bit 0 = sprite tiles high bit
- AM_RANGE(0x5806, 0x5806) AM_WRITE(galaxold_flip_screen_x_w) // maybe (0 at boot)
- AM_RANGE(0x5807, 0x5807) AM_WRITE(galaxold_flip_screen_y_w) // ""
+ map(0x5804, 0x5804).w(this, FUNC(scramble_state::galaxold_coin_counter_w));
+ map(0x5805, 0x5805).w(this, FUNC(scramble_state::galaxold_gfxbank_w)); // bit 0 = sprite tiles high bit
+ map(0x5806, 0x5806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); // maybe (0 at boot)
+ map(0x5807, 0x5807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); // ""
- AM_RANGE(0x6100, 0x6103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x6200, 0x6203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ map(0x6100, 0x6103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6200, 0x6203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rombank") // bitswapped rom
-ADDRESS_MAP_END
+ map(0x8000, 0x9fff).bankr("rombank"); // bitswapped rom
+}
-ADDRESS_MAP_START(scramble_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rombank_decrypted")
-ADDRESS_MAP_END
+void scramble_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("maincpu", 0);
+ map(0x8000, 0x9fff).bankr("rombank_decrypted");
+}
-ADDRESS_MAP_START(scramble_state::harem_sound_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_READ(harem_digitalker_intr_r)
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0xa000, 0xafff) AM_WRITE(scramble_filter_w)
-ADDRESS_MAP_END
+void scramble_state::harem_sound_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x6000, 0x6000).r(this, FUNC(scramble_state::harem_digitalker_intr_r));
+ map(0x8000, 0x83ff).ram();
+ map(0xa000, 0xafff).w(this, FUNC(scramble_state::scramble_filter_w));
+}
-ADDRESS_MAP_START(scramble_state::harem_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void scramble_state::harem_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// ports->speech:
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("8910.3", ay8910_device, address_w)
- AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("8910.3", ay8910_device, data_r, data_w)
+ map(0x04, 0x04).w("8910.3", FUNC(ay8910_device::address_w));
+ map(0x08, 0x08).rw("8910.3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
// same as scramble:
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("8910.1", ay8910_device, address_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("8910.1", ay8910_device, data_r, data_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("8910.2", ay8910_device, address_w)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8910.2", ay8910_device, data_r, data_w) // read soundlatch
-ADDRESS_MAP_END
+ map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w));
+ map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x40, 0x40).w("8910.2", FUNC(ay8910_device::address_w));
+ map(0x80, 0x80).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // read soundlatch
+}
diff --git a/src/mame/drivers/scregg.cpp b/src/mame/drivers/scregg.cpp
index 730e2c9b438..7611e7c11cc 100644
--- a/src/mame/drivers/scregg.cpp
+++ b/src/mame/drivers/scregg.cpp
@@ -99,36 +99,38 @@ READ8_MEMBER(scregg_state::scregg_irqack_r)
}
-ADDRESS_MAP_START(scregg_state::dommy_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x2800, 0x2bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") AM_WRITE(scregg_irqack_w)
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") AM_WRITE(btime_video_control_w)
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("P1")
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("P2")
- AM_RANGE(0x4004, 0x4005) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_READ(scregg_irqack_r)
- AM_RANGE(0x4006, 0x4007) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scregg_state::eggs_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w)
- AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r,btime_mirrorcolorram_w)
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") AM_WRITE(btime_video_control_w)
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("DSW2") AM_WRITE(scregg_irqack_w)
- AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P1")
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P2")
- AM_RANGE(0x2004, 0x2005) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_READ(scregg_irqack_r)
- AM_RANGE(0x2006, 0x2007) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x3000, 0x7fff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM /* reset/interrupt vectors */
-ADDRESS_MAP_END
+void scregg_state::dommy_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x23ff).ram().share("videoram");
+ map(0x2400, 0x27ff).ram().share("colorram");
+ map(0x2800, 0x2bff).rw(this, FUNC(scregg_state::btime_mirrorvideoram_r), FUNC(scregg_state::btime_mirrorvideoram_w));
+ map(0x4000, 0x4000).portr("DSW1").w(this, FUNC(scregg_state::scregg_irqack_w));
+ map(0x4001, 0x4001).portr("DSW2").w(this, FUNC(scregg_state::btime_video_control_w));
+ map(0x4002, 0x4002).portr("P1");
+ map(0x4003, 0x4003).portr("P2");
+ map(0x4004, 0x4005).w("ay1", FUNC(ay8910_device::address_data_w)).r(this, FUNC(scregg_state::scregg_irqack_r));
+ map(0x4006, 0x4007).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xa000, 0xffff).rom();
+}
+
+
+void scregg_state::eggs_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x13ff).ram().share("videoram");
+ map(0x1400, 0x17ff).ram().share("colorram");
+ map(0x1800, 0x1bff).rw(this, FUNC(scregg_state::btime_mirrorvideoram_r), FUNC(scregg_state::btime_mirrorvideoram_w));
+ map(0x1c00, 0x1fff).rw(this, FUNC(scregg_state::btime_mirrorcolorram_r), FUNC(scregg_state::btime_mirrorcolorram_w));
+ map(0x2000, 0x2000).portr("DSW1").w(this, FUNC(scregg_state::btime_video_control_w));
+ map(0x2001, 0x2001).portr("DSW2").w(this, FUNC(scregg_state::scregg_irqack_w));
+ map(0x2002, 0x2002).portr("P1");
+ map(0x2003, 0x2003).portr("P2");
+ map(0x2004, 0x2005).w("ay1", FUNC(ay8910_device::address_data_w)).r(this, FUNC(scregg_state::scregg_irqack_r));
+ map(0x2006, 0x2007).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x3000, 0x7fff).rom();
+ map(0xf000, 0xffff).rom(); /* reset/interrupt vectors */
+}
static INPUT_PORTS_START( scregg )
diff --git a/src/mame/drivers/scv.cpp b/src/mame/drivers/scv.cpp
index 8d993f071d9..c70900c4ea9 100644
--- a/src/mame/drivers/scv.cpp
+++ b/src/mame/drivers/scv.cpp
@@ -72,15 +72,16 @@ protected:
};
-ADDRESS_MAP_START(scv_state::scv_mem)
- AM_RANGE( 0x0000, 0x0fff ) AM_ROM // BIOS
+void scv_state::scv_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); // BIOS
- AM_RANGE( 0x2000, 0x3403 ) AM_RAM AM_SHARE("videoram") // VRAM + 4 registers
- AM_RANGE( 0x3600, 0x3600 ) AM_DEVWRITE("upd1771c", upd1771c_device, write)
+ map(0x2000, 0x3403).ram().share("videoram"); // VRAM + 4 registers
+ map(0x3600, 0x3600).w(m_upd1771c, FUNC(upd1771c_device::write));
- AM_RANGE( 0x8000, 0xff7f ) AM_DEVREADWRITE("cartslot", scv_cart_slot_device, read_cart, write_cart) // cartridge
- AM_RANGE( 0xff80, 0xffff ) AM_RAM // upd7801 internal RAM
-ADDRESS_MAP_END
+ map(0x8000, 0xff7f).rw(m_cart, FUNC(scv_cart_slot_device::read_cart), FUNC(scv_cart_slot_device::write_cart)); // cartridge
+ map(0xff80, 0xffff).ram(); // upd7801 internal RAM
+}
static INPUT_PORTS_START( scv )
diff --git a/src/mame/drivers/scyclone.cpp b/src/mame/drivers/scyclone.cpp
index e88d11e53ff..6f505d30462 100644
--- a/src/mame/drivers/scyclone.cpp
+++ b/src/mame/drivers/scyclone.cpp
@@ -299,48 +299,52 @@ uint32_t scyclone_state::screen_update_scyclone(screen_device &screen, bitmap_rg
-ADDRESS_MAP_START(scyclone_state::scyclone_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4400, 0x5fff) AM_READWRITE(vram_r,vram_w)
- AM_RANGE(0x6000, 0x60ff) AM_NOP // this just seems to be overflow from the VRAM writes, probably goes nowhere
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scyclone_state::scyclone_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(vidctrl_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(sprite_xpos_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(sprite_ypos_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // possible watchdog, unlikely to be twinkle related.
- AM_RANGE(0x08, 0x08) AM_WRITE(sprite_colour_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(sprite_tile_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(starscroll_w)
- AM_RANGE(0x0e, 0x0e) AM_WRITE(port0e_w)
- AM_RANGE(0x0f, 0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x40, 0x40) AM_WRITE(videomask1_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(videomask2_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(scyclone_state::scyclone_sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
-
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac", dac_byte_interface, write) // music
- AM_RANGE(0x3001, 0x3001) AM_WRITE(snd_3001_w) // written at the same time, with the same data as 0x3005
- AM_RANGE(0x3002, 0x3002) AM_DEVWRITE("dac2", dac_byte_interface, write) // speech
+void scyclone_state::scyclone_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x4400, 0x5fff).rw(this, FUNC(scyclone_state::vram_r), FUNC(scyclone_state::vram_w));
+ map(0x6000, 0x60ff).noprw(); // this just seems to be overflow from the VRAM writes, probably goes nowhere
+}
+
+
+void scyclone_state::scyclone_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("mb14241", FUNC(mb14241_device::shift_result_r)).w("mb14241", FUNC(mb14241_device::shift_count_w));
+ map(0x01, 0x01).portr("IN0").w("mb14241", FUNC(mb14241_device::shift_data_w));
+ map(0x02, 0x02).portr("IN1");
+ map(0x03, 0x03).portr("DSW0").w(this, FUNC(scyclone_state::vidctrl_w));
+ map(0x04, 0x04).w(this, FUNC(scyclone_state::sprite_xpos_w));
+ map(0x05, 0x05).w(this, FUNC(scyclone_state::sprite_ypos_w));
+ map(0x06, 0x06).w(this, FUNC(scyclone_state::port06_w)); // possible watchdog, unlikely to be twinkle related.
+ map(0x08, 0x08).w(this, FUNC(scyclone_state::sprite_colour_w));
+ map(0x09, 0x09).w(this, FUNC(scyclone_state::sprite_tile_w));
+ map(0x0a, 0x0a).w(this, FUNC(scyclone_state::starscroll_w));
+ map(0x0e, 0x0e).w(this, FUNC(scyclone_state::port0e_w));
+ map(0x0f, 0x0f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x40, 0x40).w(this, FUNC(scyclone_state::videomask1_w));
+ map(0x80, 0x80).w(this, FUNC(scyclone_state::videomask2_w));
+}
+
+
+void scyclone_state::scyclone_sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac", FUNC(dac_byte_interface::write)); // music
+ map(0x3001, 0x3001).w(this, FUNC(scyclone_state::snd_3001_w)); // written at the same time, with the same data as 0x3005
+ map(0x3002, 0x3002).w("dac2", FUNC(dac_byte_interface::write)); // speech
// AM_RANGE(0x3003, 0x3003) AM_WRITE(snd_3003_w) // writes 02 or 00
// AM_RANGE(0x3004, 0x3004) AM_WRITE(snd_3004_w) // always writes 00?
- AM_RANGE(0x3005, 0x3005) AM_WRITE(snd_3005_w) // written at the same time, with the same data as 0x3001
-ADDRESS_MAP_END
+ map(0x3005, 0x3005).w(this, FUNC(scyclone_state::snd_3005_w)); // written at the same time, with the same data as 0x3001
+}
-ADDRESS_MAP_START(scyclone_state::scyclone_sub_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void scyclone_state::scyclone_sub_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+}
// appears to be when a white bitmap pixel (col 0x7) collides with a large sprite?
diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp
index bfe91bc9957..656af0ebc45 100644
--- a/src/mame/drivers/sderby.cpp
+++ b/src/mame/drivers/sderby.cpp
@@ -296,121 +296,127 @@ WRITE16_MEMBER(sderby_state::roulette_out_w)
* Memory Maps *
***************************/
-ADDRESS_MAP_START(sderby_state::sderby_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */
- AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w)
- AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */
- AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
- AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */
- AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
- AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sderby_state::sderbya_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */
- AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w)
- AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */
- AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x308000, 0x30800d) AM_READ(sderbya_input_r)
- AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */
- AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD
- AM_RANGE(0xcf0000, 0xcf07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xcfc000, 0xcfffff) AM_RAM //MOD
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sderby_state::luckboom_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */
- AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w)
- AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */
- AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
- AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */
- AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
- AM_RANGE(0xe00000, 0xe007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sderby_state::spacewin_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */
- AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */
- AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */
- AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */
- AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
- AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
- AM_RANGE(0x308008, 0x308009) AM_WRITE(scmatto_out_w) /* output port */
- AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd00000, 0xd001ff) AM_RAM
- AM_RANGE(0x800000, 0x800fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x801000, 0x80100d) AM_WRITENOP /* unknown */
- AM_RANGE(0x8f0000, 0x8f07ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */
- AM_RANGE(0x8fc000, 0x8fffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sderby_state::shinygld_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */
- AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */
- AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */
- AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */
- AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */
- AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
- AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
- AM_RANGE(0x308008, 0x308009) AM_WRITENOP /* output port */
- AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x401000, 0x40100d) AM_WRITENOP /* unknown */
- AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */
- AM_RANGE(0x7f0000, 0x7fffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sderby_state::roulette_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x440000, 0x440fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */
- AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */
- AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */
- AM_RANGE(0x504000, 0x50400b) AM_RAM_WRITE(sderby_scroll_w)
- AM_RANGE(0x50400e, 0x50400f) AM_WRITENOP
-
- AM_RANGE(0x708000, 0x708009) AM_READ(roulette_input_r)
- AM_RANGE(0x708006, 0x708007) AM_WRITE(roulette_out_w)
- AM_RANGE(0x70800a, 0x70800b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x70800c, 0x70800d) AM_WRITENOP /* watchdog?? (0x0003) */
- AM_RANGE(0x70800e, 0x70800f) AM_READWRITE(rprot_r, rprot_w) /* MCU communication */
- AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-
- AM_RANGE(0xff0000, 0xff07ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void sderby_state::sderby_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
+ map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w));
+ map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */
+ map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r));
+ map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */
+ map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
+ map(0xd00000, 0xd007ff).ram().share("nvram");
+ map(0xffc000, 0xffffff).ram();
+}
+
+void sderby_state::sderbya_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
+ map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w));
+ map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */
+ map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderbya_input_r));
+ map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */
+ map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD
+ map(0xcf0000, 0xcf07ff).ram().share("nvram");
+ map(0xcfc000, 0xcfffff).ram(); //MOD
+}
+
+
+void sderby_state::luckboom_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
+ map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w));
+ map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */
+ map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */
+ map(0x200000, 0x200fff).ram().share("spriteram");
+ map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r));
+ map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */
+ map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
+ map(0xe00000, 0xe007ff).ram().share("nvram");
+ map(0xff0000, 0xffffff).ram();
+}
+
+void sderby_state::spacewin_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
+ map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */
+ map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */
+ map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */
+ map(0x104010, 0x105fff).nopw(); /* unknown */
+ map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
+ map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r));
+ map(0x308008, 0x308009).w(this, FUNC(sderby_state::scmatto_out_w)); /* output port */
+ map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd00000, 0xd001ff).ram();
+ map(0x800000, 0x800fff).ram().share("spriteram");
+ map(0x801000, 0x80100d).nopw(); /* unknown */
+ map(0x8f0000, 0x8f07ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */
+ map(0x8fc000, 0x8fffff).ram();
+}
+
+void sderby_state::shinygld_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
+ map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
+ map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */
+ map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */
+ map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */
+ map(0x104010, 0x105fff).nopw(); /* unknown */
+ map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
+ map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r));
+ map(0x308008, 0x308009).nopw(); /* output port */
+ map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400fff).ram().share("spriteram");
+ map(0x401000, 0x40100d).nopw(); /* unknown */
+ map(0x700000, 0x7007ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */
+ map(0x7f0000, 0x7fffff).ram();
+}
+
+void sderby_state::roulette_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x440000, 0x440fff).writeonly().share("spriteram");
+ map(0x500000, 0x500fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
+ map(0x501000, 0x501fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
+ map(0x502000, 0x503fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
+ map(0x504000, 0x50400b).ram().w(this, FUNC(sderby_state::sderby_scroll_w));
+ map(0x50400e, 0x50400f).nopw();
+
+ map(0x708000, 0x708009).r(this, FUNC(sderby_state::roulette_input_r));
+ map(0x708006, 0x708007).w(this, FUNC(sderby_state::roulette_out_w));
+ map(0x70800b, 0x70800b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x70800c, 0x70800d).nopw(); /* watchdog?? (0x0003) */
+ map(0x70800e, 0x70800f).rw(this, FUNC(sderby_state::rprot_r), FUNC(sderby_state::rprot_w)); /* MCU communication */
+ map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+
+ map(0xff0000, 0xff07ff).ram().share("nvram");
+ map(0xffc000, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/sderby2.cpp b/src/mame/drivers/sderby2.cpp
index 40f907dfd3d..ff64eb9cf42 100644
--- a/src/mame/drivers/sderby2.cpp
+++ b/src/mame/drivers/sderby2.cpp
@@ -182,25 +182,27 @@ READ8_MEMBER(sderby2_state::sub_io_0_r)
2KB of palette per screen? (0x7FF)
*/
-ADDRESS_MAP_START(sderby2_state::main_program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM
- AM_RANGE(0xe400, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xebff) AM_RAM
- AM_RANGE(0xec00, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM // Is this banked?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sderby2_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ(host_r)
- AM_RANGE(0x20, 0x20) AM_WRITE(sub_nmi)
- AM_RANGE(0x30, 0x30) AM_WRITENOP // Written with 0x12 byte sequence at start
- AM_RANGE(0x40, 0x40) AM_WRITE(host_io_40_w) // Occasionally written
-ADDRESS_MAP_END
+void sderby2_state::main_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe3ff).ram();
+ map(0xe400, 0xe7ff).ram();
+ map(0xe800, 0xebff).ram();
+ map(0xec00, 0xefff).ram();
+ map(0xf000, 0xffff).ram(); // Is this banked?
+}
+
+void sderby2_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).r(this, FUNC(sderby2_state::host_r));
+ map(0x20, 0x20).w(this, FUNC(sderby2_state::sub_nmi));
+ map(0x30, 0x30).nopw(); // Written with 0x12 byte sequence at start
+ map(0x40, 0x40).w(this, FUNC(sderby2_state::host_io_40_w)); // Occasionally written
+}
/*
@@ -210,25 +212,27 @@ ADDRESS_MAP_END
18 x 2148 (1024x4) Side
4 x 2148 (1024x4) Near 316-5012 and 316-5011
*/
-ADDRESS_MAP_START(sderby2_state::sub_program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-
- AM_RANGE(0xc000, 0xcfff) AM_RAM // Tested at FFF, 1016, 102D
- AM_RANGE(0xd000, 0xd3ff) AM_RAM // 2KB Tested
- AM_RANGE(0xd400, 0xd7ff) AM_RAM // 2KB Tested at 105B
- AM_RANGE(0xd800, 0xdbff) AM_RAM // 2KB Tested at 105B
- AM_RANGE(0xdc00, 0xdfff) AM_RAM // 2KB Tested at 10B7
-
- AM_RANGE(0xe000, 0xffff) AM_RAM // Tested at FE8
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sderby2_state::sub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sub_io_0_r)
- AM_RANGE(0x20, 0x20) AM_READ(sub_r)
- AM_RANGE(0x40, 0x40) AM_WRITE(main_nmi)
- AM_RANGE(0x60, 0x60) AM_WRITENOP // Written with 0x12 byte sequence at start
-ADDRESS_MAP_END
+void sderby2_state::sub_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+
+ map(0xc000, 0xcfff).ram(); // Tested at FFF, 1016, 102D
+ map(0xd000, 0xd3ff).ram(); // 2KB Tested
+ map(0xd400, 0xd7ff).ram(); // 2KB Tested at 105B
+ map(0xd800, 0xdbff).ram(); // 2KB Tested at 105B
+ map(0xdc00, 0xdfff).ram(); // 2KB Tested at 10B7
+
+ map(0xe000, 0xffff).ram(); // Tested at FE8
+}
+
+void sderby2_state::sub_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(sderby2_state::sub_io_0_r));
+ map(0x20, 0x20).r(this, FUNC(sderby2_state::sub_r));
+ map(0x40, 0x40).w(this, FUNC(sderby2_state::main_nmi));
+ map(0x60, 0x60).nopw(); // Written with 0x12 byte sequence at start
+}
/*************************************
diff --git a/src/mame/drivers/sdk80.cpp b/src/mame/drivers/sdk80.cpp
index 9c10cc73505..e58b57ab3c1 100644
--- a/src/mame/drivers/sdk80.cpp
+++ b/src/mame/drivers/sdk80.cpp
@@ -68,20 +68,22 @@ private:
uint8_t m_usart_clock_state;
};
-ADDRESS_MAP_START(sdk80_state::sdk80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x13ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sdk80_state::sdk80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xec, 0xef) AM_DEVREADWRITE(I8255A_1_TAG, i8255_device, read, write)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE(I8255A_0_TAG, i8255_device, read, write)
- AM_RANGE(0xfa, 0xfa) AM_DEVREADWRITE(I8251A_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE(I8251A_TAG, i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void sdk80_state::sdk80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x13ff).ram();
+}
+
+void sdk80_state::sdk80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xec, 0xef).rw(m_ppi_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf4, 0xf7).rw(m_ppi_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfa, 0xfa).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xfb, 0xfb).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
static INPUT_PORTS_START( sdk80 )
PORT_START(I8251A_BAUD_TAG)
diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp
index c0da59579b1..e567e0324f7 100644
--- a/src/mame/drivers/sdk85.cpp
+++ b/src/mame/drivers/sdk85.cpp
@@ -77,23 +77,25 @@ void sdk85_state::machine_reset()
m_maincpu->reset();
}
-ADDRESS_MAP_START(sdk85_state::sdk85_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_DEVREAD("romio", i8355_device, memory_r)
- AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("expromio", i8355_device, memory_r)
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x06ff) AM_DEVREADWRITE("kdc", i8279_device, data_r, data_w)
- AM_RANGE(0x1900, 0x1900) AM_MIRROR(0x06ff) AM_DEVREADWRITE("kdc", i8279_device, status_r, cmd_w)
- AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("ramio", i8155_device, memory_r, memory_w)
- AM_RANGE(0x2800, 0x28ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("expramio", i8155_device, memory_r, memory_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sdk85_state::sdk85_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x04) AM_DEVREADWRITE("romio", i8355_device, io_r, io_w)
- AM_RANGE(0x08, 0x0b) AM_MIRROR(0x04) AM_DEVREADWRITE("expromio", i8355_device, io_r, io_w)
- AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("ramio", i8155_device, io_r, io_w)
- AM_RANGE(0x28, 0x2f) AM_DEVREADWRITE("expramio", i8155_device, io_r, io_w)
-ADDRESS_MAP_END
+void sdk85_state::sdk85_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).r("romio", FUNC(i8355_device::memory_r));
+ map(0x0800, 0x0fff).r("expromio", FUNC(i8355_device::memory_r));
+ map(0x1800, 0x1800).mirror(0x06ff).rw("kdc", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w));
+ map(0x1900, 0x1900).mirror(0x06ff).rw("kdc", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w));
+ map(0x2000, 0x20ff).mirror(0x0700).rw("ramio", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x2800, 0x28ff).mirror(0x0700).rw("expramio", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+}
+
+void sdk85_state::sdk85_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x03).mirror(0x04).rw("romio", FUNC(i8355_device::io_r), FUNC(i8355_device::io_w));
+ map(0x08, 0x0b).mirror(0x04).rw("expromio", FUNC(i8355_device::io_r), FUNC(i8355_device::io_w));
+ map(0x20, 0x27).rw("ramio", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0x28, 0x2f).rw("expramio", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+}
/* Input ports */
static INPUT_PORTS_START( sdk85 )
diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp
index d214e156650..97ed529cf16 100644
--- a/src/mame/drivers/sdk86.cpp
+++ b/src/mame/drivers/sdk86.cpp
@@ -59,19 +59,21 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(sdk86_state::sdk86_mem)
- AM_RANGE(0x00000, 0x00fff) AM_RAM //2K standard, or 4k (board fully populated)
- AM_RANGE(0xfe000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sdk86_state::sdk86_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xfff0, 0xfff1) AM_MIRROR(4) AM_DEVREADWRITE8(I8251_TAG, i8251_device, data_r, data_w, 0xff)
- AM_RANGE(0xfff2, 0xfff3) AM_MIRROR(4) AM_DEVREADWRITE8(I8251_TAG, i8251_device, status_r, control_w, 0xff)
- AM_RANGE(0xffe8, 0xffeb) AM_MIRROR(4) AM_DEVREADWRITE8("i8279", i8279_device, read, write, 0xff)
- AM_RANGE(0xfff8, 0xffff) AM_DEVREADWRITE8("port1", i8255_device, read, write, 0xff00)
- AM_RANGE(0xfff8, 0xffff) AM_DEVREADWRITE8("port2", i8255_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void sdk86_state::sdk86_mem(address_map &map)
+{
+ map(0x00000, 0x00fff).ram(); //2K standard, or 4k (board fully populated)
+ map(0xfe000, 0xfffff).rom();
+}
+
+void sdk86_state::sdk86_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xfff0, 0xfff0).mirror(4).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xfff2, 0xfff2).mirror(4).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xffe8, 0xffeb).mirror(4).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)).umask16(0x00ff);
+ map(0xfff8, 0xffff).rw("port1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00);
+ map(0xfff8, 0xffff).rw("port2", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+}
/* Input ports */
static INPUT_PORTS_START( sdk86 )
diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp
index b062c859a81..03e1e4eed2a 100644
--- a/src/mame/drivers/seabattl.cpp
+++ b/src/mame/drivers/seabattl.cpp
@@ -252,28 +252,30 @@ void seabattl_state::video_start()
***************************************************************************/
-ADDRESS_MAP_START(seabattl_state::seabattl_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x2000, 0x33ff) AM_ROM
- AM_RANGE(0x1400, 0x17ff) AM_MIRROR(0x2000) AM_RAM_WRITE(seabattl_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x2000) AM_RAM_WRITE(seabattl_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1cff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x1d00, 0x1dff) AM_MIRROR(0x2000) AM_RAM AM_SHARE("objram")
- AM_RANGE(0x1e00, 0x1e00) AM_MIRROR(0x20f0) AM_WRITE(time_display_w)
- AM_RANGE(0x1e01, 0x1e01) AM_MIRROR(0x20f0) AM_WRITE(score_display_w)
- AM_RANGE(0x1e02, 0x1e02) AM_MIRROR(0x20f0) AM_READ_PORT("IN0") AM_WRITE(score2_display_w)
- AM_RANGE(0x1e05, 0x1e05) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS2")
- AM_RANGE(0x1e06, 0x1e06) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS1") AM_WRITE(sound_w)
- AM_RANGE(0x1e07, 0x1e07) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS0") AM_WRITE(sound2_w)
- AM_RANGE(0x1f00, 0x1fff) AM_MIRROR(0x2000) AM_DEVREADWRITE("s2636", s2636_device, read_data, write_data)
- AM_RANGE(0x1fcc, 0x1fcc) AM_MIRROR(0x2000) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seabattl_state::seabattl_data_map)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE( seabattl_collision_r, seabattl_control_w )
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE( seabattl_collision_clear_r, seabattl_collision_clear_w )
-ADDRESS_MAP_END
+void seabattl_state::seabattl_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x13ff).rom();
+ map(0x2000, 0x33ff).rom();
+ map(0x1400, 0x17ff).mirror(0x2000).ram().w(this, FUNC(seabattl_state::seabattl_colorram_w)).share("colorram");
+ map(0x1800, 0x1bff).mirror(0x2000).ram().w(this, FUNC(seabattl_state::seabattl_videoram_w)).share("videoram");
+ map(0x1c00, 0x1cff).mirror(0x2000).ram();
+ map(0x1d00, 0x1dff).mirror(0x2000).ram().share("objram");
+ map(0x1e00, 0x1e00).mirror(0x20f0).w(this, FUNC(seabattl_state::time_display_w));
+ map(0x1e01, 0x1e01).mirror(0x20f0).w(this, FUNC(seabattl_state::score_display_w));
+ map(0x1e02, 0x1e02).mirror(0x20f0).portr("IN0").w(this, FUNC(seabattl_state::score2_display_w));
+ map(0x1e05, 0x1e05).mirror(0x20f0).portr("DIPS2");
+ map(0x1e06, 0x1e06).mirror(0x20f0).portr("DIPS1").w(this, FUNC(seabattl_state::sound_w));
+ map(0x1e07, 0x1e07).mirror(0x20f0).portr("DIPS0").w(this, FUNC(seabattl_state::sound2_w));
+ map(0x1f00, 0x1fff).mirror(0x2000).rw(m_s2636, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data));
+ map(0x1fcc, 0x1fcc).mirror(0x2000).portr("IN1");
+}
+
+void seabattl_state::seabattl_data_map(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(seabattl_state::seabattl_collision_r), FUNC(seabattl_state::seabattl_control_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(seabattl_state::seabattl_collision_clear_r), FUNC(seabattl_state::seabattl_collision_clear_w));
+}
READ8_MEMBER(seabattl_state::seabattl_collision_r)
{
diff --git a/src/mame/drivers/sealy.cpp b/src/mame/drivers/sealy.cpp
index 25bdb8250ec..b521a3d3765 100644
--- a/src/mame/drivers/sealy.cpp
+++ b/src/mame/drivers/sealy.cpp
@@ -70,9 +70,10 @@ uint32_t sealy_state::screen_update_sealy(screen_device &screen, bitmap_rgb32 &b
}
-ADDRESS_MAP_START(sealy_state::sealy_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
-ADDRESS_MAP_END
+void sealy_state::sealy_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+}
static INPUT_PORTS_START( sealy )
diff --git a/src/mame/drivers/seattlecmp.cpp b/src/mame/drivers/seattlecmp.cpp
index 07a2a513e28..8ec37dac3fd 100644
--- a/src/mame/drivers/seattlecmp.cpp
+++ b/src/mame/drivers/seattlecmp.cpp
@@ -67,23 +67,25 @@ READ8_MEMBER(seattle_comp_state::pic_slave_ack)
}
-ADDRESS_MAP_START(seattle_comp_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0xff7ff) AM_RAM
- AM_RANGE(0xff800,0xfffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void seattle_comp_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0xff7ff).ram();
+ map(0xff800, 0xfffff).rom().region("user1", 0);
+}
-ADDRESS_MAP_START(seattle_comp_state::io_map)
+void seattle_comp_state::io_map(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf1) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf2, 0xf3) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf4, 0xf5) AM_DEVREADWRITE8("stc", am9513_device, read8, write8, 0xffff)
- AM_RANGE(0xf6, 0xf7) AM_DEVREADWRITE8("uart", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0xf6, 0xf7) AM_DEVREADWRITE8("uart", i8251_device, status_r, control_w, 0xff00)
+ map.global_mask(0xff);
+ map(0xf0, 0xf1).rw("pic1", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf2, 0xf3).rw("pic2", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf4, 0xf5).rw("stc", FUNC(am9513_device::read8), FUNC(am9513_device::write8));
+ map(0xf6, 0xf6).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xf7, 0xf7).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
//AM_RANGE(0xfc, 0xfd) Parallel data, status, serial DCD
//AM_RANGE(0xfe, 0xff) Eprom disable bit, read sense switches (bank of 8 dipswitches)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( seattle )
diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp
index 5c50584375b..92076b872ca 100644
--- a/src/mame/drivers/segac2.cpp
+++ b/src/mame/drivers/segac2.cpp
@@ -639,17 +639,18 @@ WRITE16_MEMBER(segac2_state::print_club_camera_w)
******************************************************************************/
-ADDRESS_MAP_START(segac2_state::main_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x13fdfe) AM_READWRITE8(prot_r, prot_w, 0x00ff)
- AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x13fdfe) AM_WRITE8(control_w, 0x00ff)
- AM_RANGE(0x840000, 0x84001f) AM_MIRROR(0x13fee0) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0x840100, 0x840107) AM_MIRROR(0x13fef8) AM_DEVREADWRITE8("ymsnd", ym3438_device, read, write, 0x00ff)
- AM_RANGE(0x880100, 0x880101) AM_MIRROR(0x13fefe) AM_WRITE8(counter_timer_w, 0x00ff)
- AM_RANGE(0x8c0000, 0x8c0fff) AM_MIRROR(0x13f000) AM_READWRITE(palette_r, palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
- AM_RANGE(0xe00000, 0xe0ffff) AM_MIRROR(0x1f0000) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void segac2_state::main_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x800001, 0x800001).mirror(0x13fdfe).rw(this, FUNC(segac2_state::prot_r), FUNC(segac2_state::prot_w));
+ map(0x800201, 0x800201).mirror(0x13fdfe).w(this, FUNC(segac2_state::control_w));
+ map(0x840000, 0x84001f).mirror(0x13fee0).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
+ map(0x840100, 0x840107).mirror(0x13fef8).rw(m_ymsnd, FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask16(0x00ff);
+ map(0x880101, 0x880101).mirror(0x13fefe).w(this, FUNC(segac2_state::counter_timer_w));
+ map(0x8c0000, 0x8c0fff).mirror(0x13f000).rw(this, FUNC(segac2_state::palette_r), FUNC(segac2_state::palette_w)).share("paletteram");
+ map(0xc00000, 0xc0001f).mirror(0x18ff00).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
+ map(0xe00000, 0xe0ffff).mirror(0x1f0000).ram().share("nvram");
+}
/******************************************************************************
diff --git a/src/mame/drivers/segacoin.cpp b/src/mame/drivers/segacoin.cpp
index 03c727c7721..26c264b49a2 100644
--- a/src/mame/drivers/segacoin.cpp
+++ b/src/mame/drivers/segacoin.cpp
@@ -49,26 +49,30 @@ public:
/* Memory maps */
-ADDRESS_MAP_START(segacoin_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segacoin_state::main_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(segacoin_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segacoin_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void segacoin_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void segacoin_state::main_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
+
+
+void segacoin_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void segacoin_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
diff --git a/src/mame/drivers/segae.cpp b/src/mame/drivers/segae.cpp
index e0206d1565b..03f073573de 100644
--- a/src/mame/drivers/segae.cpp
+++ b/src/mame/drivers/segae.cpp
@@ -378,53 +378,59 @@ private:
****************************************************************************************/
/* we have to fill in the ROM addresses for systeme due to the encrypted games */
-ADDRESS_MAP_START(systeme_state::systeme_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* Fixed ROM */
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank1") AM_WRITE_BANK("vram_write") /* Banked ROM */
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(systeme_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(systeme_state::banked_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(systeme_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-
- AM_RANGE(0x7b, 0x7b) AM_DEVWRITE("sn1", segapsg_device, write)
- AM_RANGE(0x7e, 0x7f) AM_DEVWRITE("sn2", segapsg_device, write)
- AM_RANGE(0x7e, 0x7e) AM_DEVREAD("vdp1", sega315_5124_device, vcount_read)
- AM_RANGE(0xba, 0xba) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0xbb, 0xbb) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("vdp2", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("vdp2", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xe0, 0xe0) AM_READ_PORT("e0")
- AM_RANGE(0xe1, 0xe1) AM_READ_PORT("e1")
- AM_RANGE(0xe2, 0xe2) AM_READ_PORT("e2")
- AM_RANGE(0xf2, 0xf2) AM_READ_PORT("f2")
- AM_RANGE(0xf3, 0xf3) AM_READ_PORT("f3")
- AM_RANGE(0xf7, 0xf7) AM_WRITE(bank_write)
- AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(systeme_state::vdp1_map)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("vdp1_bank")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(systeme_state::vdp2_map)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("vdp2_bank")
-ADDRESS_MAP_END
+void systeme_state::systeme_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* Fixed ROM */
+ map(0x8000, 0xbfff).bankr("bank1").bankw("vram_write"); /* Banked ROM */
+ map(0xc000, 0xffff).ram().share("mainram");
+}
+
+void systeme_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).ram().share("mainram");
+}
+
+void systeme_state::banked_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+ map(0xc000, 0xffff).ram().share("mainram");
+}
+
+
+void systeme_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+
+ map(0x7b, 0x7b).w("sn1", FUNC(segapsg_device::write));
+ map(0x7e, 0x7f).w("sn2", FUNC(segapsg_device::write));
+ map(0x7e, 0x7e).r(m_vdp1, FUNC(sega315_5124_device::vcount_read));
+ map(0xba, 0xba).rw(m_vdp1, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0xbb, 0xbb).rw(m_vdp1, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xbe, 0xbe).rw(m_vdp2, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0xbf, 0xbf).rw(m_vdp2, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xe0, 0xe0).portr("e0");
+ map(0xe1, 0xe1).portr("e1");
+ map(0xe2, 0xe2).portr("e2");
+ map(0xf2, 0xf2).portr("f2");
+ map(0xf3, 0xf3).portr("f3");
+ map(0xf7, 0xf7).w(this, FUNC(systeme_state::bank_write));
+ map(0xf8, 0xfb).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+
+void systeme_state::vdp1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("vdp1_bank");
+}
+
+
+void systeme_state::vdp2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("vdp2_bank");
+}
WRITE8_MEMBER(systeme_state::bank_write)
diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp
index b0263aa4028..5114de3366a 100644
--- a/src/mame/drivers/segag80r.cpp
+++ b/src/mame/drivers/segag80r.cpp
@@ -332,52 +332,58 @@ WRITE8_MEMBER(segag80r_state::sindbadm_sn2_SN76496_w)
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(segag80r_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM /* CPU board ROM */
- AM_RANGE(0x0800, 0x7fff) AM_ROM /* PROM board ROM area */
- AM_RANGE(0x8000, 0xbfff) AM_ROM /* PROM board ROM area */
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram")
- AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segag80r_state::g80r_opcodes_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(g80r_opcode_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segag80r_state::sega_315_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000)
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram")
- AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void segag80r_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom(); /* CPU board ROM */
+ map(0x0800, 0x7fff).rom(); /* PROM board ROM area */
+ map(0x8000, 0xbfff).rom(); /* PROM board ROM area */
+ map(0xc800, 0xcfff).ram().w(this, FUNC(segag80r_state::mainram_w)).share("mainram");
+ map(0xe000, 0xffff).ram().w(this, FUNC(segag80r_state::vidram_w)).share("videoram");
+}
+
+void segag80r_state::g80r_opcodes_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(segag80r_state::g80r_opcode_r));
+}
+
+void segag80r_state::sega_315_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).rom().region("maincpu", 0x8000);
+ map(0xc800, 0xcfff).ram().w(this, FUNC(segag80r_state::mainram_w)).share("mainram");
+ map(0xe000, 0xffff).ram().w(this, FUNC(segag80r_state::vidram_w)).share("videoram");
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(segag80r_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xbe, 0xbf) AM_READWRITE(segag80r_video_port_r, segag80r_video_port_w)
- AM_RANGE(0xf9, 0xf9) AM_MIRROR(0x04) AM_WRITE(coin_count_w)
- AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r)
- AM_RANGE(0xfc, 0xfc) AM_READ_PORT("FC")
-ADDRESS_MAP_END
+void segag80r_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xbe, 0xbf).rw(this, FUNC(segag80r_state::segag80r_video_port_r), FUNC(segag80r_state::segag80r_video_port_w));
+ map(0xf9, 0xf9).mirror(0x04).w(this, FUNC(segag80r_state::coin_count_w));
+ map(0xf8, 0xfb).r(this, FUNC(segag80r_state::mangled_ports_r));
+ map(0xfc, 0xfc).portr("FC");
+}
-ADDRESS_MAP_START(segag80r_state::main_ppi8255_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0xbe, 0xbf) AM_READWRITE(segag80r_video_port_r, segag80r_video_port_w)
- AM_RANGE(0xf9, 0xf9) AM_MIRROR(0x04) AM_WRITE(coin_count_w)
- AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r)
- AM_RANGE(0xfc, 0xfc) AM_READ_PORT("FC")
-ADDRESS_MAP_END
+void segag80r_state::main_ppi8255_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0c, 0x0f).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xbe, 0xbf).rw(this, FUNC(segag80r_state::segag80r_video_port_r), FUNC(segag80r_state::segag80r_video_port_w));
+ map(0xf9, 0xf9).mirror(0x04).w(this, FUNC(segag80r_state::coin_count_w));
+ map(0xf8, 0xfb).r(this, FUNC(segag80r_state::mangled_ports_r));
+ map(0xfc, 0xfc).portr("FC");
+}
-ADDRESS_MAP_START(segag80r_state::sindbadm_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x42, 0x43) AM_READWRITE(segag80r_video_port_r, segag80r_video_port_w)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r)
-ADDRESS_MAP_END
+void segag80r_state::sindbadm_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x42, 0x43).rw(this, FUNC(segag80r_state::segag80r_video_port_r), FUNC(segag80r_state::segag80r_video_port_w));
+ map(0x80, 0x83).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf8, 0xfb).r(this, FUNC(segag80r_state::mangled_ports_r));
+}
@@ -388,13 +394,14 @@ ADDRESS_MAP_END
*************************************/
/* complete memory map derived from System 1 schematics */
-ADDRESS_MAP_START(segag80r_state::sindbadm_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1ffc) AM_WRITE(sindbadm_sn1_SN76496_w)
- AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1ffc) AM_WRITE(sindbadm_sn2_SN76496_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segag80r_state::sindbadm_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x87ff).mirror(0x1800).ram();
+ map(0xa000, 0xa003).mirror(0x1ffc).w(this, FUNC(segag80r_state::sindbadm_sn1_SN76496_w));
+ map(0xc000, 0xc003).mirror(0x1ffc).w(this, FUNC(segag80r_state::sindbadm_sn2_SN76496_w));
+ map(0xe000, 0xe000).mirror(0x1fff).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp
index cb08ef60beb..57ed7667a42 100644
--- a/src/mame/drivers/segag80v.cpp
+++ b/src/mame/drivers/segag80v.cpp
@@ -389,30 +389,33 @@ WRITE8_MEMBER(segag80v_state::unknown_w)
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(segag80v_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM /* CPU board ROM */
- AM_RANGE(0x0800, 0xbfff) AM_ROM /* PROM board ROM area */
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram")
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(vectorram_w) AM_SHARE("vectorram")
-ADDRESS_MAP_END
+void segag80v_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom(); /* CPU board ROM */
+ map(0x0800, 0xbfff).rom(); /* PROM board ROM area */
+ map(0xc800, 0xcfff).ram().w(this, FUNC(segag80v_state::mainram_w)).share("mainram");
+ map(0xe000, 0xefff).ram().w(this, FUNC(segag80v_state::vectorram_w)).share("vectorram");
+}
-ADDRESS_MAP_START(segag80v_state::opcodes_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(g80v_opcode_r)
-ADDRESS_MAP_END
+void segag80v_state::opcodes_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(segag80v_state::g80v_opcode_r));
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(segag80v_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xbc, 0xbc) /* AM_READ ??? */
- AM_RANGE(0xbd, 0xbe) AM_WRITE(multiply_w)
- AM_RANGE(0xbe, 0xbe) AM_READ(multiply_r)
- AM_RANGE(0xbf, 0xbf) AM_WRITE(unknown_w)
-
- AM_RANGE(0xf9, 0xf9) AM_MIRROR(0x04) AM_WRITE(coin_count_w)
- AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r)
- AM_RANGE(0xfc, 0xfc) AM_READ_PORT("FC")
-ADDRESS_MAP_END
+void segag80v_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xbc, 0xbc); /* AM_READ ??? */
+ map(0xbd, 0xbe).w(this, FUNC(segag80v_state::multiply_w));
+ map(0xbe, 0xbe).r(this, FUNC(segag80v_state::multiply_r));
+ map(0xbf, 0xbf).w(this, FUNC(segag80v_state::unknown_w));
+
+ map(0xf9, 0xf9).mirror(0x04).w(this, FUNC(segag80v_state::coin_count_w));
+ map(0xf8, 0xfb).r(this, FUNC(segag80v_state::mangled_ports_r));
+ map(0xfc, 0xfc).portr("FC");
+}
diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp
index 53b6426d4eb..ce94844d413 100644
--- a/src/mame/drivers/segahang.cpp
+++ b/src/mame/drivers/segahang.cpp
@@ -396,37 +396,40 @@ void segahang_state::sharrier_i8751_sim()
// MAIN CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segahang_state::hangon_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x20c000, 0x20ffff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0x400000, 0x403fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x600000, 0x6007ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0xa00000, 0xa00fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("subcpu", 0)
- AM_RANGE(0xc68000, 0xc68fff) AM_RAM AM_SHARE("roadram")
- AM_RANGE(0xc7c000, 0xc7ffff) AM_RAM AM_SHARE("subram")
- AM_RANGE(0xe00000, 0xffffff) AM_READWRITE(hangon_io_r, hangon_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::decrypted_opcodes_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::sharrier_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0x100000, 0x107fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x108000, 0x108fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x124000, 0x127fff) AM_RAM AM_SHARE("subram")
- AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x140000, 0x14ffff) AM_READWRITE(sharrier_io_r, sharrier_io_w)
- AM_RANGE(0xc68000, 0xc68fff) AM_RAM AM_SHARE("roadram")
-ADDRESS_MAP_END
+void segahang_state::hangon_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom();
+ map(0x20c000, 0x20ffff).ram().share("workram");
+ map(0x400000, 0x403fff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x600000, 0x6007ff).ram().share("sprites");
+ map(0xa00000, 0xa00fff).ram().w(this, FUNC(segahang_state::paletteram_w)).share("paletteram");
+ map(0xc00000, 0xc3ffff).rom().region("subcpu", 0);
+ map(0xc68000, 0xc68fff).ram().share("roadram");
+ map(0xc7c000, 0xc7ffff).ram().share("subram");
+ map(0xe00000, 0xffffff).rw(this, FUNC(segahang_state::hangon_io_r), FUNC(segahang_state::hangon_io_w));
+}
+
+void segahang_state::decrypted_opcodes_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom().share("decrypted_opcodes");
+}
+
+void segahang_state::sharrier_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram().share("workram");
+ map(0x100000, 0x107fff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x108000, 0x108fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x110000, 0x110fff).ram().w(this, FUNC(segahang_state::paletteram_w)).share("paletteram");
+ map(0x124000, 0x127fff).ram().share("subram");
+ map(0x130000, 0x130fff).ram().share("sprites");
+ map(0x140000, 0x14ffff).rw(this, FUNC(segahang_state::sharrier_io_r), FUNC(segahang_state::sharrier_io_w));
+ map(0xc68000, 0xc68fff).ram().share("roadram");
+}
@@ -435,57 +438,64 @@ ADDRESS_MAP_END
//**************************************************************************
// On Super Hang On there is a memory mapper, like the System16 one, todo: emulate it!
-ADDRESS_MAP_START(segahang_state::sub_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x7ffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x068000, 0x068fff) AM_RAM AM_SHARE("roadram")
- AM_RANGE(0x07c000, 0x07ffff) AM_RAM AM_SHARE("subram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::fd1094_decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segahang_state::sub_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x7ffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x068000, 0x068fff).ram().share("roadram");
+ map(0x07c000, 0x07ffff).ram().share("subram");
+}
+
+void segahang_state::fd1094_decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
//**************************************************************************
// SOUND CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segahang_state::sound_map_2203)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x0800) AM_RAM
- AM_RANGE(0xd000, 0xd001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xe000, 0xe0ff) AM_MIRROR(0x0f00) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::sound_portmap_2203)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::sound_map_2151)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::sound_portmap_2151)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segahang_state::sound_portmap_2203x2)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void segahang_state::sound_map_2203(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).mirror(0x0800).ram();
+ map(0xd000, 0xd001).mirror(0x0ffe).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xe000, 0xe0ff).mirror(0x0f00).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+}
+
+void segahang_state::sound_portmap_2203(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segahang_state::sound_data_r));
+}
+
+void segahang_state::sound_map_2151(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0xf000, 0xf0ff).mirror(0x700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void segahang_state::sound_portmap_2151(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segahang_state::sound_data_r));
+}
+
+void segahang_state::sound_portmap_2203x2(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segahang_state::sound_data_r));
+ map(0xc0, 0xc1).mirror(0x3e).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
@@ -493,8 +503,9 @@ ADDRESS_MAP_END
// I8751 MCU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segahang_state::mcu_io_map)
-ADDRESS_MAP_END
+void segahang_state::mcu_io_map(address_map &map)
+{
+}
diff --git a/src/mame/drivers/segajw.cpp b/src/mame/drivers/segajw.cpp
index 806453aba83..5bd1813d457 100644
--- a/src/mame/drivers/segajw.cpp
+++ b/src/mame/drivers/segajw.cpp
@@ -174,44 +174,48 @@ CUSTOM_INPUT_MEMBER( segajw_state::coin_sensors_r )
return data;
}
-ADDRESS_MAP_START(segajw_state::segajw_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void segajw_state::segajw_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
- AM_RANGE(0x080000, 0x080001) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x080002, 0x080003) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w)
+ map(0x080000, 0x080001).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x080002, 0x080003).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW0")
- AM_RANGE(0x180004, 0x180005) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW1")
- AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("DSW3")
- AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("DSW2")
+ map(0x180000, 0x180001).portr("DSW0");
+ map(0x180005, 0x180005).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0x180008, 0x180009).portr("DSW1");
+ map(0x18000a, 0x18000b).portr("DSW3");
+ map(0x18000c, 0x18000d).portr("DSW2");
- AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE8("io1a", sega_315_5296_device, read, write, 0x00ff)
+ map(0x1a0000, 0x1a001f).rw("io1a", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
- AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE8("io1c", sega_315_5296_device, read, write, 0x00ff)
+ map(0x1c0000, 0x1c001f).rw("io1c", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
- AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x280002, 0x280003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x280004, 0x280005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
+ map(0x280001, 0x280001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x280003, 0x280003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x280005, 0x280005).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+ map(0xff0000, 0xffffff).ram().share("nvram");
+}
-ADDRESS_MAP_START(segajw_state::segajw_audiocpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segajw_state::segajw_audiocpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xffff).ram();
+}
-ADDRESS_MAP_START(segajw_state::segajw_audiocpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void segajw_state::segajw_audiocpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
-ADDRESS_MAP_START(segajw_state::segajw_hd63484_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
- AM_RANGE(0x80000, 0xbffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
+void segajw_state::segajw_hd63484_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+ map(0x80000, 0xbffff).rom().region("gfx1", 0);
+}
static INPUT_PORTS_START( segajw )
@@ -362,9 +366,10 @@ void segajw_state::machine_reset()
m_coin_counter = 0xff;
}
-ADDRESS_MAP_START(segajw_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void segajw_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(segajw_state::segajw)
/* basic machine hardware */
diff --git a/src/mame/drivers/segald.cpp b/src/mame/drivers/segald.cpp
index c6ab36ebf23..9cfd3e6ef59 100644
--- a/src/mame/drivers/segald.cpp
+++ b/src/mame/drivers/segald.cpp
@@ -253,28 +253,30 @@ WRITE8_MEMBER(segald_state::astron_io_bankswitch_w)
/* PROGRAM MAP */
-ADDRESS_MAP_START(segald_state::mainmem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
-
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(astron_OBJ_read, astron_OBJ_write) AM_SHARE("obj_ram") /* OBJ according to the schematics (sprite) */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(astron_DISC_read, astron_DISC_write) /* DISC interface according to schematics */
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("DSWA") /* SW bank 2 (DIPs) */
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("DSWB") /* SW bank 3 (DIPs) */
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN0") /* SW bank 0 (IO) */
- AM_RANGE(0xd003, 0xd003) AM_READ_PORT("IN1") /* SW bank 1 (IO) */
- AM_RANGE(0xd800, 0xd803) AM_READWRITE(astron_OUT_read, astron_OUT_write) AM_SHARE("out_ram") /* OUT according to schematics (output port) */
- AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(astron_COLOR_read, astron_COLOR_write) AM_SHARE("color_ram") /* COLOR according to the schematics */
- AM_RANGE(0xf000, 0xf7ff) AM_WRITE(astron_FIX_write) AM_SHARE("fix_ram") /* FIX according to schematics (characters) */
- AM_RANGE(0xf800, 0xffff) AM_RAM /* RAM according to schematics */
-ADDRESS_MAP_END
+void segald_state::mainmem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+
+ map(0xc000, 0xc7ff).rw(this, FUNC(segald_state::astron_OBJ_read), FUNC(segald_state::astron_OBJ_write)).share("obj_ram"); /* OBJ according to the schematics (sprite) */
+ map(0xc800, 0xcfff).rw(this, FUNC(segald_state::astron_DISC_read), FUNC(segald_state::astron_DISC_write)); /* DISC interface according to schematics */
+ map(0xd000, 0xd000).portr("DSWA"); /* SW bank 2 (DIPs) */
+ map(0xd001, 0xd001).portr("DSWB"); /* SW bank 3 (DIPs) */
+ map(0xd002, 0xd002).portr("IN0"); /* SW bank 0 (IO) */
+ map(0xd003, 0xd003).portr("IN1"); /* SW bank 1 (IO) */
+ map(0xd800, 0xd803).rw(this, FUNC(segald_state::astron_OUT_read), FUNC(segald_state::astron_OUT_write)).share("out_ram"); /* OUT according to schematics (output port) */
+ map(0xe000, 0xe1ff).rw(this, FUNC(segald_state::astron_COLOR_read), FUNC(segald_state::astron_COLOR_write)).share("color_ram"); /* COLOR according to the schematics */
+ map(0xf000, 0xf7ff).w(this, FUNC(segald_state::astron_FIX_write)).share("fix_ram"); /* FIX according to schematics (characters) */
+ map(0xf800, 0xffff).ram(); /* RAM according to schematics */
+}
/* I/O MAP */
-ADDRESS_MAP_START(segald_state::mainport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(astron_io_bankswitch_w)
-ADDRESS_MAP_END
+void segald_state::mainport(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(segald_state::astron_io_bankswitch_w));
+}
/* PORTS */
diff --git a/src/mame/drivers/segam1.cpp b/src/mame/drivers/segam1.cpp
index 8cf5828c790..6e2a40b7f1c 100644
--- a/src/mame/drivers/segam1.cpp
+++ b/src/mame/drivers/segam1.cpp
@@ -184,53 +184,58 @@ uint32_t segam1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
-ADDRESS_MAP_START(segam1_state::segam1_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x340000, 0x340fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff)
- AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w)
- AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP /* Horizontal split position (ABSEL) */
- AM_RANGE(0xb40000, 0xb40001) AM_WRITENOP /* Scanline trigger position (XHOUT) */
- AM_RANGE(0xb60000, 0xb60001) AM_WRITENOP /* Frame trigger position (XVOUT) */
- AM_RANGE(0xb70000, 0xb70001) AM_WRITENOP /* Synchronization mode */
- AM_RANGE(0xb80000, 0xbfffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc04000, 0xc0401f) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write)
- AM_RANGE(0xe00000, 0xe0001f) AM_DEVREADWRITE8("io1", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("INX")
- AM_RANGE(0xe40002, 0xe40003) AM_READ_PORT("INY")
- AM_RANGE(0xe40004, 0xe40005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xe40006, 0xe40007) AM_WRITENOP
- AM_RANGE(0xe40008, 0xe40009) AM_READ_PORT("INZ")
- AM_RANGE(0xe80000, 0xe8001f) AM_DEVREADWRITE8("io2", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0xf00000, 0xf03fff) AM_MIRROR(0x0fc000) AM_RAM // NVRAM?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segam1_state::segam1_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segam1_state::unkm1_sound_map)
- AM_IMPORT_FROM(segam1_sound_map)
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segam1_state::segam1_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_WRITE(sound_a0_bank_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segam1_state::segam1_comms_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0xe003, 0xe003) AM_WRITENOP // ???
-ADDRESS_MAP_END
+void segam1_state::segam1_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x340000, 0x340fff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)).umask16(0x00ff);
+ map(0xb00000, 0xb0ffff).rw(m_tile, FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w));
+ map(0xb20000, 0xb20001).nopw(); /* Horizontal split position (ABSEL) */
+ map(0xb40000, 0xb40001).nopw(); /* Scanline trigger position (XHOUT) */
+ map(0xb60000, 0xb60001).nopw(); /* Frame trigger position (XVOUT) */
+ map(0xb70000, 0xb70001).nopw(); /* Synchronization mode */
+ map(0xb80000, 0xbfffff).rw(m_tile, FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w));
+ map(0xc00000, 0xc03fff).ram().w(this, FUNC(segam1_state::paletteram_w)).share("paletteram");
+ map(0xc04000, 0xc0401f).rw(m_mixer, FUNC(segas24_mixer_device::read), FUNC(segas24_mixer_device::write));
+ map(0xe00000, 0xe0001f).rw("io1", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
+ map(0xe40000, 0xe40001).portr("INX");
+ map(0xe40002, 0xe40003).portr("INY");
+ map(0xe40005, 0xe40005).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xe40006, 0xe40007).nopw();
+ map(0xe40008, 0xe40009).portr("INZ");
+ map(0xe80000, 0xe8001f).rw("io2", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
+ map(0xf00000, 0xf03fff).mirror(0x0fc000).ram(); // NVRAM?
+}
+
+void segam1_state::segam1_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xbfff).bankr("soundbank");
+ map(0xf000, 0xffff).ram();
+}
+
+void segam1_state::unkm1_sound_map(address_map &map)
+{
+ segam1_sound_map(map);
+ map(0xe000, 0xefff).ram();
+}
+
+void segam1_state::segam1_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw(m_ymsnd, FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xa0, 0xa0).w(this, FUNC(segam1_state::sound_a0_bank_w));
+ map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read)).nopw();
+}
+
+void segam1_state::segam1_comms_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xc000, 0xc000).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xc001, 0xc001).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xe003, 0xe003).nopw(); // ???
+}
static INPUT_PORTS_START( segam1 )
diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp
index 33536e51c3a..0f7741bd6e4 100644
--- a/src/mame/drivers/segaorun.cpp
+++ b/src/mame/drivers/segaorun.cpp
@@ -839,35 +839,38 @@ WRITE_LINE_MEMBER(segaorun_state::m68k_reset_callback)
// MAIN CPU MEMORY MAP
//**************************************************************************
-ADDRESS_MAP_START(segaorun_state::outrun_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff)
+void segaorun_state::outrun_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff);
// these get overwritten by the memory mapper above, but we put them here
// so they are properly allocated and tracked for saving
- AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x200000, 0x201fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram")
- AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x500000, 0x507fff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
+ map(0x100000, 0x100fff).ram().share("sprites");
+ map(0x200000, 0x201fff).ram().share("paletteram");
+ map(0x300000, 0x30ffff).ram().share("tileram");
+ map(0x400000, 0x400fff).ram().share("textram");
+ map(0x500000, 0x507fff).ram().share("workram");
+}
-ADDRESS_MAP_START(segaorun_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segaorun_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
//**************************************************************************
// SECOND CPU MEMORY MAP
//**************************************************************************
-ADDRESS_MAP_START(segaorun_state::sub_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM AM_SHARE("cpu1rom")
- AM_RANGE(0x060000, 0x067fff) AM_MIRROR(0x018000) AM_RAM AM_SHARE("cpu1ram")
- AM_RANGE(0x080000, 0x080fff) AM_MIRROR(0x00f000) AM_RAM AM_SHARE("roadram")
- AM_RANGE(0x090000, 0x09ffff) AM_DEVREADWRITE("segaic16road", segaic16_road_device, segaic16_road_control_0_r, segaic16_road_control_0_w)
-ADDRESS_MAP_END
+void segaorun_state::sub_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xfffff);
+ map(0x000000, 0x05ffff).rom().share("cpu1rom");
+ map(0x060000, 0x067fff).mirror(0x018000).ram().share("cpu1ram");
+ map(0x080000, 0x080fff).mirror(0x00f000).ram().share("roadram");
+ map(0x090000, 0x09ffff).rw(m_segaic16road, FUNC(segaic16_road_device::segaic16_road_control_0_r), FUNC(segaic16_road_device::segaic16_road_control_0_w));
+}
@@ -875,19 +878,21 @@ ADDRESS_MAP_END
// SOUND CPU MEMORY MAP
//**************************************************************************
-ADDRESS_MAP_START(segaorun_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segaorun_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVREAD("mapper", sega_315_5195_mapper_device, pread)
-ADDRESS_MAP_END
+void segaorun_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void segaorun_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).mirror(0x3f).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread));
+}
diff --git a/src/mame/drivers/segapico.cpp b/src/mame/drivers/segapico.cpp
index 0b1117f90f3..7e5a5c2d2ab 100644
--- a/src/mame/drivers/segapico.cpp
+++ b/src/mame/drivers/segapico.cpp
@@ -570,15 +570,16 @@ public:
-ADDRESS_MAP_START(copera_state::copera_mem)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
+void copera_state::copera_mem(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
- AM_RANGE(0x800000, 0x80001f) AM_READWRITE(pico_68k_io_read, pico_68k_io_write)
+ map(0x800000, 0x80001f).rw(this, FUNC(copera_state::pico_68k_io_read), FUNC(copera_state::pico_68k_io_write));
- AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
+ map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
-ADDRESS_MAP_END
+ map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000);
+}
diff --git a/src/mame/drivers/segapm.cpp b/src/mame/drivers/segapm.cpp
index 573a1872366..0448e9a3776 100644
--- a/src/mame/drivers/segapm.cpp
+++ b/src/mame/drivers/segapm.cpp
@@ -39,14 +39,15 @@ uint32_t segapm_state::screen_update_segapm(screen_device &screen, bitmap_ind16
-ADDRESS_MAP_START(segapm_state::segapm_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void segapm_state::segapm_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
// A15100
- AM_RANGE(0xe00000, 0xe7ffff) AM_RAM
+ map(0xe00000, 0xe7ffff).ram();
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( segapm )
INPUT_PORTS_END
diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp
index ffca7c35de1..54e66094390 100644
--- a/src/mame/drivers/segas16a.cpp
+++ b/src/mame/drivers/segas16a.cpp
@@ -960,52 +960,58 @@ void segas16a_state::sjryuko_lamp_changed_w(uint8_t changed, uint8_t newval)
// MAIN CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segas16a_state::system16a_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x380000) AM_ROM
- AM_RANGE(0x400000, 0x407fff) AM_MIRROR(0xb88000) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_MIRROR(0xb8f000) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_MIRROR(0x3bf800) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_MIRROR(0x3bf000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc43fff) AM_MIRROR(0x39c000) AM_READWRITE(misc_io_r, misc_io_w)
- AM_RANGE(0xc60000, 0xc6ffff) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0xc70000, 0xc73fff) AM_MIRROR(0x38c000) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16a_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segas16a_state::system16a_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).mirror(0x380000).rom();
+ map(0x400000, 0x407fff).mirror(0xb88000).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).mirror(0xb8f000).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x440000, 0x4407ff).mirror(0x3bf800).ram().share("sprites");
+ map(0x840000, 0x840fff).mirror(0x3bf000).ram().w(this, FUNC(segas16a_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc43fff).mirror(0x39c000).rw(this, FUNC(segas16a_state::misc_io_r), FUNC(segas16a_state::misc_io_w));
+ map(0xc60000, 0xc6ffff).r(m_watchdog, FUNC(watchdog_timer_device::reset16_r));
+ map(0xc70000, 0xc73fff).mirror(0x38c000).ram().share("nvram");
+}
+
+void segas16a_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
//**************************************************************************
// SOUND CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segas16a_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe800, 0xe800) AM_READ(sound_data_r)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas16a_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0xe800, 0xe800).r(this, FUNC(segas16a_state::sound_data_r));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segas16a_state::sound_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("sound_decrypted_opcodes")
-ADDRESS_MAP_END
+void segas16a_state::sound_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("sound_decrypted_opcodes");
+}
-ADDRESS_MAP_START(segas16a_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(n7751_command_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
+void segas16a_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).mirror(0x3f).w(this, FUNC(segas16a_state::n7751_command_w));
+ map(0xc0, 0xc0).mirror(0x3f).r(this, FUNC(segas16a_state::sound_data_r));
+}
-ADDRESS_MAP_START(segas16a_state::sound_no7751_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_NOP
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
+void segas16a_state::sound_no7751_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).mirror(0x3f).noprw();
+ map(0xc0, 0xc0).mirror(0x3f).r(this, FUNC(segas16a_state::sound_data_r));
+}
@@ -1013,9 +1019,10 @@ ADDRESS_MAP_END
// I8751 MCU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segas16a_state::mcu_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mcu_io_r, mcu_io_w)
-ADDRESS_MAP_END
+void segas16a_state::mcu_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(segas16a_state::mcu_io_r), FUNC(segas16a_state::mcu_io_w));
+}
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index a86d6a93f3f..d1b8c9b468c 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -1686,131 +1686,141 @@ WRITE16_MEMBER( segas16b_state::sjryuko_custom_io_w )
// MAIN CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segas16b_state::system16b_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff)
+void segas16b_state::system16b_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff);
// these get overwritten by the memory mapper above, but we put them here
// so they are properly allocated and tracked for saving
- AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram")
- AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
+ map(0x100000, 0x1007ff).ram().share("sprites");
+ map(0x200000, 0x200fff).ram().share("paletteram");
+ map(0x300000, 0x30ffff).ram().share("tileram");
+ map(0x400000, 0x400fff).ram().share("textram");
+ map(0x500000, 0x503fff).ram().share("workram");
+}
-ADDRESS_MAP_START(segas16b_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segas16b_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
-ADDRESS_MAP_START(segas16b_state::system16c_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff)
+void segas16b_state::system16c_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff);
// these get overwritten by the memory mapper above, but we put them here
// so they are properly allocated and tracked for saving
- AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram")
- AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("workram") // only change from system16b_map
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::system16b_bootleg_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x23ffff) AM_RAM // used during startup for decompression
- AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(rom_5704_bank_w)
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc43fff) AM_READWRITE(bootleg_custom_io_r, bootleg_custom_io_w)
- AM_RANGE(0x123406, 0x123407) AM_WRITE(sound_w16)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::map_fpointbla)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x02000e, 0x02000f) AM_READ_PORT("P2")
- AM_RANGE(0x0a0000, 0x0a001f) AM_RAM AM_SHARE("bootleg_scroll")
- AM_RANGE(0x0a0020, 0x0a0027) AM_RAM AM_SHARE("bootleg_page")
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x443002, 0x443003) AM_READ_PORT("SERVICE")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x843018, 0x843019) AM_READ_PORT("DSW1")
- AM_RANGE(0xfe0004, 0xfe0005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfe000c, 0xfe000d) AM_READ_PORT("P1")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::decrypted_opcodes_map_x)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::decrypted_opcodes_map_fpointbla)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::lockonph_map)
+ map(0x100000, 0x1007ff).ram().share("sprites");
+ map(0x200000, 0x200fff).ram().share("paletteram");
+ map(0x300000, 0x30ffff).ram().share("tileram");
+ map(0x400000, 0x400fff).ram().share("textram");
+ map(0x500000, 0x53ffff).ram().share("workram"); // only change from system16b_map
+}
+
+void segas16b_state::system16b_bootleg_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x23ffff).ram(); // used during startup for decompression
+ map(0x3f0000, 0x3fffff).w(this, FUNC(segas16b_state::rom_5704_bank_w));
+ map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x440000, 0x4407ff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas16b_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc43fff).rw(this, FUNC(segas16b_state::bootleg_custom_io_r), FUNC(segas16b_state::bootleg_custom_io_w));
+ map(0x123406, 0x123407).w(this, FUNC(segas16b_state::sound_w16));
+ map(0xffc000, 0xffffff).ram().share("workram");
+}
+
+void segas16b_state::map_fpointbla(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x02000e, 0x02000f).portr("P2");
+ map(0x0a0000, 0x0a001f).ram().share("bootleg_scroll");
+ map(0x0a0020, 0x0a0027).ram().share("bootleg_page");
+ map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x440000, 0x4407ff).ram().share("sprites");
+ map(0x443002, 0x443003).portr("SERVICE");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas16b_state::paletteram_w)).share("paletteram");
+ map(0x843018, 0x843019).portr("DSW1");
+ map(0xfe0005, 0xfe0005).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xfe000c, 0xfe000d).portr("P1");
+ map(0xffc000, 0xffffff).ram().share("workram");
+}
+
+void segas16b_state::decrypted_opcodes_map_x(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom().share("decrypted_opcodes");
+}
+
+void segas16b_state::decrypted_opcodes_map_fpointbla(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x01ffff).rom().share("decrypted_opcodes");
+}
+
+void segas16b_state::lockonph_map(address_map &map)
+{
// this still appears to have a mapper device, does the hardware use it? should we move this to all be configured by it?
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(rom_5704_bank_w)
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x841fff) AM_RAM_WRITE(philko_paletteram_w) AM_SHARE("paletteram")
+ map(0x000000, 0x0bffff).rom();
+ map(0x3f0000, 0x3fffff).w(this, FUNC(segas16b_state::rom_5704_bank_w));
+ map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x440000, 0x4407ff).ram().share("sprites");
+ map(0x840000, 0x841fff).ram().w(this, FUNC(segas16b_state::philko_paletteram_w)).share("paletteram");
- AM_RANGE(0xC40000, 0xC40001) AM_WRITENOP // coin counters etc.?
+ map(0xC40000, 0xC40001).nopw(); // coin counters etc.?
- AM_RANGE(0xC41000, 0xC41001) AM_READ_PORT("P1")
- AM_RANGE(0xC41002, 0xC41003) AM_READ_PORT("P2")
- AM_RANGE(0xC41004, 0xC41005) AM_READ_PORT("SERVICE")
+ map(0xC41000, 0xC41001).portr("P1");
+ map(0xC41002, 0xC41003).portr("P2");
+ map(0xC41004, 0xC41005).portr("SERVICE");
- AM_RANGE(0xC42000, 0xC42001) AM_READ_PORT("DSW1")
- AM_RANGE(0xC42002, 0xC42003) AM_READ_PORT("DSW2")
+ map(0xC42000, 0xC42001).portr("DSW1");
+ map(0xC42002, 0xC42003).portr("DSW2");
- AM_RANGE(0x777706, 0x777707) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
+ map(0x777707, 0x777707).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
+ map(0xff0000, 0xffffff).ram().share("workram");
+}
-ADDRESS_MAP_START(segas16b_state::fpointbl_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
+void segas16b_state::fpointbl_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
+ map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
- AM_RANGE(0x600006, 0x600007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE")
- AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1")
- AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2")
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2")
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1")
+ map(0x600007, 0x600007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x601000, 0x601001).portr("SERVICE");
+ map(0x601002, 0x601003).portr("P1");
+ map(0x601004, 0x601005).portr("P2");
+ map(0x600000, 0x600001).portr("DSW2");
+ map(0x600002, 0x600003).portr("DSW1");
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x843000, 0x843001) AM_WRITENOP
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas16b_state::paletteram_w)).share("paletteram");
+ map(0x843000, 0x843001).nopw();
- AM_RANGE(0xC46000, 0xC4601f) AM_RAM AM_SHARE("bootleg_scroll")
- AM_RANGE(0xC46020, 0xC46027) AM_RAM AM_SHARE("bootleg_page")
+ map(0xC46000, 0xC4601f).ram().share("bootleg_scroll");
+ map(0xC46020, 0xC46027).ram().share("bootleg_page");
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
+ map(0xffc000, 0xffffff).ram().share("workram");
+}
/*
Flash Point (Datsu bootlegs = fpointbl, fpointbj)
Has sound latch at $E000 instead of I/O ports $C0-FF
*/
-ADDRESS_MAP_START(segas16b_state::fpointbl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas16b_state::fpointbl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf800, 0xffff).ram();
+}
READ16_MEMBER(segas16b_state::bootleg_custom_io_r)
@@ -1828,60 +1838,67 @@ WRITE16_MEMBER(segas16b_state::bootleg_custom_io_w)
// SOUND CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segas16b_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("mapper", sega_315_5195_mapper_device, pread)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::sound_decrypted_opcodes_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("sound_decrypted_opcodes")
- AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE("upd", upd7759_device, port_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("mapper", sega_315_5195_mapper_device, pread)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::bootleg_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas16b_state::bootleg_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE("upd", upd7759_device, port_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segas16b_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xdfff).bankr("soundbank");
+ map(0xe800, 0xe800).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread));
+ map(0xf800, 0xffff).ram();
+}
+
+void segas16b_state::sound_decrypted_opcodes_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom().share("sound_decrypted_opcodes");
+ map(0x8000, 0xdfff).bankr("soundbank");
+}
+
+void segas16b_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).mirror(0x3f).w(this, FUNC(segas16b_state::upd7759_control_w));
+ map(0x80, 0x80).mirror(0x3f).r(this, FUNC(segas16b_state::upd7759_status_r)).w(m_upd7759, FUNC(upd7759_device::port_w));
+ map(0xc0, 0xc0).mirror(0x3f).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread));
+}
+
+void segas16b_state::bootleg_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xdfff).bankr("soundbank");
+ map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf800, 0xffff).ram();
+}
+
+void segas16b_state::bootleg_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).mirror(0x3f).w(this, FUNC(segas16b_state::upd7759_control_w));
+ map(0x80, 0x80).mirror(0x3f).r(this, FUNC(segas16b_state::upd7759_status_r)).w(m_upd7759, FUNC(upd7759_device::port_w));
+ map(0xc0, 0xc0).mirror(0x3f).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
// similar to whizz / other philko games in sidearms.cpp, but with the m6295
-ADDRESS_MAP_START(segas16b_state::lockonph_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas16b_state::lockonph_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segas16b_state::lockonph_sound_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITENOP // ??
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segas16b_state::lockonph_sound_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).nopw(); // ??
+ map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
//**************************************************************************
@@ -1896,11 +1913,12 @@ WRITE8_MEMBER(segas16b_state::spin_68k_w)
m_maincpu->spin_until_time(m_maincpu->cycles_to_attotime(20000));
}
-ADDRESS_MAP_START(segas16b_state::mcu_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_DEVREADWRITE("mapper", sega_315_5195_mapper_device, read, write)
-ADDRESS_MAP_END
+void segas16b_state::mcu_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write));
+}
@@ -9588,36 +9606,37 @@ WRITE16_MEMBER( isgsm_state::main_bank_change_w )
membank(ISGSM_MAIN_BANK)->set_base(memregion("maincpu")->base());
}
-ADDRESS_MAP_START(isgsm_state::isgsm_map)
-
- AM_RANGE(0x000000, 0x0fffff) AM_ROMBANK(ISGSM_MAIN_BANK) AM_REGION("bios", 0) // this area is ALWAYS read-only, even when the game is banked in
- AM_RANGE(0x200000, 0x23ffff) AM_RAM // used during startup for decompression
- AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(rom_5704_bank_w)
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc43fff) AM_READWRITE(standard_io_r, standard_io_w)
-
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(data_w) // writes decompressed data here (copied from RAM..)
- AM_RANGE(0xe00002, 0xe00003) AM_WRITE(datatype_w) // selects which 'type' of data we're writing
- AM_RANGE(0xe00004, 0xe00005) AM_WRITE(addr_high_w) // high address, and some mode bits
- AM_RANGE(0xe00006, 0xe00007) AM_WRITE(addr_low_w) // low address
-
- AM_RANGE(0xe80000, 0xe80001) AM_READ(cart_data_r) // 8-bit port that the entire cart can be read from
- AM_RANGE(0xe80002, 0xe80003) AM_READ_PORT("CARDDSW")
- AM_RANGE(0xe80004, 0xe80005) AM_WRITE(cart_addr_high_w)
- AM_RANGE(0xe80006, 0xe80007) AM_WRITE(cart_addr_low_w)
- AM_RANGE(0xe80008, 0xe80009) AM_READWRITE(cart_security_high_r, cart_security_high_w) // 32-bit bitswap device..
- AM_RANGE(0xe8000a, 0xe8000b) AM_READWRITE(cart_security_low_r, cart_security_low_w)
-
- AM_RANGE(0xee0000, 0xefffff) AM_ROM AM_REGION("gamecart_rgn", 0) // only the first 0x20000 bytes of the cart are visible here..
-
- AM_RANGE(0xfe0006, 0xfe0007) AM_WRITE(sound_w16)
- AM_RANGE(0xfe0008, 0xfe0009) AM_WRITE(sound_reset_w)
- AM_RANGE(0xfe000a, 0xfe000b) AM_WRITE(main_bank_change_w)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
+void isgsm_state::isgsm_map(address_map &map)
+{
+
+ map(0x000000, 0x0fffff).bankr(ISGSM_MAIN_BANK).region("bios", 0); // this area is ALWAYS read-only, even when the game is banked in
+ map(0x200000, 0x23ffff).ram(); // used during startup for decompression
+ map(0x3f0000, 0x3fffff).w(this, FUNC(isgsm_state::rom_5704_bank_w));
+ map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x440000, 0x4407ff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(isgsm_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc43fff).rw(this, FUNC(isgsm_state::standard_io_r), FUNC(isgsm_state::standard_io_w));
+
+ map(0xe00000, 0xe00001).w(this, FUNC(isgsm_state::data_w)); // writes decompressed data here (copied from RAM..)
+ map(0xe00002, 0xe00003).w(this, FUNC(isgsm_state::datatype_w)); // selects which 'type' of data we're writing
+ map(0xe00004, 0xe00005).w(this, FUNC(isgsm_state::addr_high_w)); // high address, and some mode bits
+ map(0xe00006, 0xe00007).w(this, FUNC(isgsm_state::addr_low_w)); // low address
+
+ map(0xe80000, 0xe80001).r(this, FUNC(isgsm_state::cart_data_r)); // 8-bit port that the entire cart can be read from
+ map(0xe80002, 0xe80003).portr("CARDDSW");
+ map(0xe80004, 0xe80005).w(this, FUNC(isgsm_state::cart_addr_high_w));
+ map(0xe80006, 0xe80007).w(this, FUNC(isgsm_state::cart_addr_low_w));
+ map(0xe80008, 0xe80009).rw(this, FUNC(isgsm_state::cart_security_high_r), FUNC(isgsm_state::cart_security_high_w)); // 32-bit bitswap device..
+ map(0xe8000a, 0xe8000b).rw(this, FUNC(isgsm_state::cart_security_low_r), FUNC(isgsm_state::cart_security_low_w));
+
+ map(0xee0000, 0xefffff).rom().region("gamecart_rgn", 0); // only the first 0x20000 bytes of the cart are visible here..
+
+ map(0xfe0006, 0xfe0007).w(this, FUNC(isgsm_state::sound_w16));
+ map(0xfe0008, 0xfe0009).w(this, FUNC(isgsm_state::sound_reset_w));
+ map(0xfe000a, 0xfe000b).w(this, FUNC(isgsm_state::main_bank_change_w));
+ map(0xffc000, 0xffffff).ram().share("workram");
+}
diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp
index 6d6faf7efd8..0a6605a0b7c 100644
--- a/src/mame/drivers/segas18.cpp
+++ b/src/mame/drivers/segas18.cpp
@@ -613,22 +613,24 @@ WRITE8_MEMBER( segas18_state::soundbank_w )
*
*************************************/
-ADDRESS_MAP_START(segas18_state::system18_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff)
+void segas18_state::system18_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff);
// these get overwritten by the memory mapper above, but we put them here
// so they are properly allocated and tracked for saving
- AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram")
- AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
+ map(0x100000, 0x1007ff).ram().share("sprites");
+ map(0x200000, 0x200fff).ram().share("paletteram");
+ map(0x300000, 0x30ffff).ram().share("tileram");
+ map(0x400000, 0x400fff).ram().share("textram");
+ map(0x500000, 0x503fff).ram().share("workram");
+}
-ADDRESS_MAP_START(segas18_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segas18_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
/*************************************
*
@@ -636,23 +638,25 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas18_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x10000)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_device, rf5c68_w)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas18_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x9fff).rom().region("soundcpu", 0x10000);
+ map(0xa000, 0xbfff).bankr("soundbank");
+ map(0xc000, 0xc00f).mirror(0x0ff0).w("rfsnd", FUNC(rf5c68_device::rf5c68_w));
+ map(0xd000, 0xdfff).rw("rfsnd", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w));
+ map(0xe000, 0xffff).ram();
+}
-ADDRESS_MAP_START(segas18_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym1", ym3438_device, read, write)
- AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym2", ym3438_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1f) AM_WRITE(soundbank_w)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_DEVREADWRITE("mapper", sega_315_5195_mapper_device, pread, pwrite)
-ADDRESS_MAP_END
+void segas18_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).mirror(0x0c).rw("ym1", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x90, 0x93).mirror(0x0c).rw("ym2", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xa0, 0xa0).mirror(0x1f).w(this, FUNC(segas18_state::soundbank_w));
+ map(0xc0, 0xc0).mirror(0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::pread), FUNC(sega_315_5195_mapper_device::pwrite));
+}
@@ -662,11 +666,12 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas18_state::mcu_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff) // port 2 not used for high order address byte
- AM_RANGE(0x00, 0x1f) AM_DEVREADWRITE("mapper", sega_315_5195_mapper_device, read, write)
-ADDRESS_MAP_END
+void segas18_state::mcu_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff); // port 2 not used for high order address byte
+ map(0x00, 0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write));
+}
diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp
index 4f4fed049fb..62db06b7ee1 100644
--- a/src/mame/drivers/segas24.cpp
+++ b/src/mame/drivers/segas24.cpp
@@ -1064,51 +1064,54 @@ fc-ff ramhi
*/
-ADDRESS_MAP_START(segas24_state::system24_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x040000) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x080000, 0x0bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x100000, 0x13ffff) AM_MIRROR(0x0c0000) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w)
- AM_RANGE(0x220000, 0x220001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Horizontal split position (ABSEL) */
- AM_RANGE(0x240000, 0x240001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Scanline trigger position (XHOUT) */
- AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Frame trigger position (XVOUT) */
- AM_RANGE(0x270000, 0x270001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Synchronization mode */
- AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w)
- AM_RANGE(0x400000, 0x403fff) AM_MIRROR(0x1f8000) AM_READWRITE(sys16_paletteram_r, sys16_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write)
- AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite_device, read, write)
- AM_RANGE(0x800000, 0x80003f) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0x800040, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(iod_r, iod_w)
- AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w)
- AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w)
- AM_RANGE(0xb80000, 0xbbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xbc0000, 0xbc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w)
- AM_RANGE(0xbc0002, 0xbc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff)
- AM_RANGE(0xbc0004, 0xbc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff)
- AM_RANGE(0xbc0006, 0xbc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w)
- AM_RANGE(0xc80000, 0xcbffff) AM_ROMBANK("bank2")
- AM_RANGE(0xcc0000, 0xcc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w)
- AM_RANGE(0xcc0002, 0xcc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff)
- AM_RANGE(0xcc0004, 0xcc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff)
- AM_RANGE(0xcc0006, 0xcc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w)
- AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu")
- AM_RANGE(0xf80000, 0xfbffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas24_state::roughrac_cpu1_map)
- AM_IMPORT_FROM(system24_cpu1_map)
- AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas24_state::hotrod_cpu1_map)
- AM_IMPORT_FROM(system24_cpu1_map)
- AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xc00008, 0xc0000f) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc1", msm6253_device, d7_r, select_w, 0x00ff)
- AM_RANGE(0xc00012, 0xc00013) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc2", msm6253_device, d7_r, select_w, 0x00ff)
-ADDRESS_MAP_END
+void segas24_state::system24_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).mirror(0x040000).rom().region("maincpu", 0);
+ map(0x080000, 0x0bffff).mirror(0x040000).ram().share("share1");
+ map(0x100000, 0x13ffff).mirror(0x0c0000).rom().region("maincpu", 0);
+ map(0x200000, 0x20ffff).mirror(0x110000).rw("tile", FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w));
+ map(0x220000, 0x220001).mirror(0x11fffe).nopw(); /* Horizontal split position (ABSEL) */
+ map(0x240000, 0x240001).mirror(0x11fffe).nopw(); /* Scanline trigger position (XHOUT) */
+ map(0x260000, 0x260001).mirror(0x10fffe).nopw(); /* Frame trigger position (XVOUT) */
+ map(0x270000, 0x270001).mirror(0x10fffe).nopw(); /* Synchronization mode */
+ map(0x280000, 0x29ffff).mirror(0x160000).rw("tile", FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w));
+ map(0x400000, 0x403fff).mirror(0x1f8000).rw(this, FUNC(segas24_state::sys16_paletteram_r), FUNC(segas24_state::sys16_paletteram_w)).share("paletteram");
+ map(0x404000, 0x40401f).mirror(0x1fbfe0).rw("mixer", FUNC(segas24_mixer_device::read), FUNC(segas24_mixer_device::write));
+ map(0x600000, 0x63ffff).mirror(0x180000).rw("sprite", FUNC(segas24_sprite_device::read), FUNC(segas24_sprite_device::write));
+ map(0x800000, 0x80003f).mirror(0x1ffe00).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
+ map(0x800040, 0x80007f).mirror(0x1ffe00).rw(this, FUNC(segas24_state::iod_r), FUNC(segas24_state::iod_w));
+ map(0x800100, 0x800103).mirror(0x1ffe00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0xa00000, 0xa00007).mirror(0x0ffff8).rw(this, FUNC(segas24_state::irq_r), FUNC(segas24_state::irq_w));
+ map(0xb00000, 0xb00007).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_r), FUNC(segas24_state::fdc_w));
+ map(0xb00008, 0xb0000f).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_status_r), FUNC(segas24_state::fdc_ctrl_w));
+ map(0xb80000, 0xbbffff).bankr("bank1");
+ map(0xbc0000, 0xbc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w));
+ map(0xbc0003, 0xbc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w));
+ map(0xbc0005, 0xbc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w));
+ map(0xbc0006, 0xbc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w));
+ map(0xc80000, 0xcbffff).bankr("bank2");
+ map(0xcc0000, 0xcc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w));
+ map(0xcc0003, 0xcc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w));
+ map(0xcc0005, 0xcc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w));
+ map(0xcc0006, 0xcc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w));
+ map(0xf00000, 0xf3ffff).mirror(0x040000).ram().share("subcpu");
+ map(0xf80000, 0xfbffff).mirror(0x040000).ram().share("share1");
+}
+
+void segas24_state::roughrac_cpu1_map(address_map &map)
+{
+ system24_cpu1_map(map);
+ map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd4701", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+}
+
+void segas24_state::hotrod_cpu1_map(address_map &map)
+{
+ system24_cpu1_map(map);
+ map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xc00008, 0xc0000f).mirror(0x07ffe0).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xc00011, 0xc00011).mirror(0x07ffec).rw("adc1", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w));
+ map(0xc00013, 0xc00013).mirror(0x07ffec).rw("adc2", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w));
+}
@@ -1118,55 +1121,59 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas24_state::system24_cpu2_map)
- AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu")
- AM_RANGE(0x080000, 0x0bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x100000, 0x13ffff) AM_MIRROR(0x0c0000) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w)
- AM_RANGE(0x220000, 0x220001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Horizontal split position (ABSEL) */
- AM_RANGE(0x240000, 0x240001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Scanline trigger position (XHOUT) */
- AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Frame trigger position (XVOUT) */
- AM_RANGE(0x270000, 0x270001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Synchronization mode */
- AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w)
- AM_RANGE(0x400000, 0x403fff) AM_MIRROR(0x1f8000) AM_READWRITE(sys16_paletteram_r, sys16_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write)
- AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite_device, read, write)
- AM_RANGE(0x800000, 0x80003f) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0x800040, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(iod_r, iod_w)
- AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w)
- AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w)
- AM_RANGE(0xb80000, 0xbbffff) AM_ROMBANK("bank1")
- AM_RANGE(0xbc0000, 0xbc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w)
- AM_RANGE(0xbc0002, 0xbc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff)
- AM_RANGE(0xbc0004, 0xbc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff)
- AM_RANGE(0xbc0006, 0xbc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w)
- AM_RANGE(0xc80000, 0xcbffff) AM_ROMBANK("bank2")
- AM_RANGE(0xcc0000, 0xcc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w)
- AM_RANGE(0xcc0002, 0xcc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff)
- AM_RANGE(0xcc0004, 0xcc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff)
- AM_RANGE(0xcc0006, 0xcc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w)
- AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu")
- AM_RANGE(0xf80000, 0xfbffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas24_state::roughrac_cpu2_map)
- AM_IMPORT_FROM(system24_cpu2_map)
- AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas24_state::hotrod_cpu2_map)
- AM_IMPORT_FROM(system24_cpu2_map)
- AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xc00008, 0xc0000f) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc1", msm6253_device, d7_r, select_w, 0x00ff)
- AM_RANGE(0xc00012, 0xc00013) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc2", msm6253_device, d7_r, select_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas24_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segas24_state::system24_cpu2_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).mirror(0x040000).ram().share("subcpu");
+ map(0x080000, 0x0bffff).mirror(0x040000).ram().share("share1");
+ map(0x100000, 0x13ffff).mirror(0x0c0000).rom().region("maincpu", 0);
+ map(0x200000, 0x20ffff).mirror(0x110000).rw("tile", FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w));
+ map(0x220000, 0x220001).mirror(0x11fffe).nopw(); /* Horizontal split position (ABSEL) */
+ map(0x240000, 0x240001).mirror(0x11fffe).nopw(); /* Scanline trigger position (XHOUT) */
+ map(0x260000, 0x260001).mirror(0x10fffe).nopw(); /* Frame trigger position (XVOUT) */
+ map(0x270000, 0x270001).mirror(0x10fffe).nopw(); /* Synchronization mode */
+ map(0x280000, 0x29ffff).mirror(0x160000).rw("tile", FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w));
+ map(0x400000, 0x403fff).mirror(0x1f8000).rw(this, FUNC(segas24_state::sys16_paletteram_r), FUNC(segas24_state::sys16_paletteram_w)).share("paletteram");
+ map(0x404000, 0x40401f).mirror(0x1fbfe0).rw("mixer", FUNC(segas24_mixer_device::read), FUNC(segas24_mixer_device::write));
+ map(0x600000, 0x63ffff).mirror(0x180000).rw("sprite", FUNC(segas24_sprite_device::read), FUNC(segas24_sprite_device::write));
+ map(0x800000, 0x80003f).mirror(0x1ffe00).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
+ map(0x800040, 0x80007f).mirror(0x1ffe00).rw(this, FUNC(segas24_state::iod_r), FUNC(segas24_state::iod_w));
+ map(0x800100, 0x800103).mirror(0x1ffe00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0xa00000, 0xa00007).mirror(0x0ffff8).rw(this, FUNC(segas24_state::irq_r), FUNC(segas24_state::irq_w));
+ map(0xb00000, 0xb00007).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_r), FUNC(segas24_state::fdc_w));
+ map(0xb00008, 0xb0000f).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_status_r), FUNC(segas24_state::fdc_ctrl_w));
+ map(0xb80000, 0xbbffff).bankr("bank1");
+ map(0xbc0000, 0xbc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w));
+ map(0xbc0003, 0xbc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w));
+ map(0xbc0005, 0xbc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w));
+ map(0xbc0006, 0xbc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w));
+ map(0xc80000, 0xcbffff).bankr("bank2");
+ map(0xcc0000, 0xcc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w));
+ map(0xcc0003, 0xcc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w));
+ map(0xcc0005, 0xcc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w));
+ map(0xcc0006, 0xcc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w));
+ map(0xf00000, 0xf3ffff).mirror(0x040000).ram().share("subcpu");
+ map(0xf80000, 0xfbffff).mirror(0x040000).ram().share("share1");
+}
+
+void segas24_state::roughrac_cpu2_map(address_map &map)
+{
+ system24_cpu2_map(map);
+ map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd4701", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+}
+
+void segas24_state::hotrod_cpu2_map(address_map &map)
+{
+ system24_cpu2_map(map);
+ map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xc00008, 0xc0000f).mirror(0x07ffe0).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xc00011, 0xc00011).mirror(0x07ffec).rw("adc1", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w));
+ map(0xc00013, 0xc00013).mirror(0x07ffec).rw("adc2", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w));
+}
+
+void segas24_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
/*************************************
*
diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp
index f54f96e912a..0ae765ae9a7 100644
--- a/src/mame/drivers/segas32.cpp
+++ b/src/mame/drivers/segas32.cpp
@@ -1050,51 +1050,53 @@ WRITE8_MEMBER(segas32_state::sound_dummy_w)
*
*************************************/
-ADDRESS_MAP_START(segas32_state::system32_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x0f0000) AM_RAM AM_SHARE("workram")
- AM_RANGE(0x300000, 0x31ffff) AM_MIRROR(0x0e0000) AM_READWRITE(system32_videoram_r, system32_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x0e0000) AM_READWRITE(system32_spriteram_r, system32_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x50000f) AM_MIRROR(0x0ffff0) AM_READWRITE8(sprite_control_r, sprite_control_w, 0x00ff)
- AM_RANGE(0x600000, 0x60ffff) AM_MIRROR(0x0e0000) AM_READWRITE(system32_paletteram_r, system32_paletteram_w) AM_SHARE("paletteram.0")
- AM_RANGE(0x610000, 0x61007f) AM_MIRROR(0x0eff80) AM_READWRITE(system32_mixer_r, system32_mixer_w)
- AM_RANGE(0x700000, 0x701fff) AM_MIRROR(0x0fe000) AM_READWRITE8(shared_ram_r, shared_ram_w, 0xffff)
- AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE8("s32comm", s32comm_device, share_r, share_w, 0x00ff)
- AM_RANGE(0x801000, 0x801001) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x00ff)
- AM_RANGE(0x801002, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("io_chip", sega_315_5296_device, read, write, 0x00ff)
+void segas32_state::system32_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x20ffff).mirror(0x0f0000).ram().share("workram");
+ map(0x300000, 0x31ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_videoram_r), FUNC(segas32_state::system32_videoram_w)).share("videoram");
+ map(0x400000, 0x41ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_spriteram_r), FUNC(segas32_state::system32_spriteram_w)).share("spriteram");
+ map(0x500000, 0x50000f).mirror(0x0ffff0).rw(this, FUNC(segas32_state::sprite_control_r), FUNC(segas32_state::sprite_control_w)).umask16(0x00ff);
+ map(0x600000, 0x60ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_paletteram_r), FUNC(segas32_state::system32_paletteram_w)).share("paletteram.0");
+ map(0x610000, 0x61007f).mirror(0x0eff80).rw(this, FUNC(segas32_state::system32_mixer_r), FUNC(segas32_state::system32_mixer_w));
+ map(0x700000, 0x701fff).mirror(0x0fe000).rw(this, FUNC(segas32_state::shared_ram_r), FUNC(segas32_state::shared_ram_w));
+ map(0x800000, 0x800fff).rw("s32comm", FUNC(s32comm_device::share_r), FUNC(s32comm_device::share_w)).umask16(0x00ff);
+ map(0x801000, 0x801000).rw("s32comm", FUNC(s32comm_device::cn_r), FUNC(s32comm_device::cn_w));
+ map(0x801002, 0x801002).rw("s32comm", FUNC(s32comm_device::fg_r), FUNC(s32comm_device::fg_w));
+ map(0xc00000, 0xc0001f).mirror(0x0fff80).rw("io_chip", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
// 0xc00040-0xc0007f - I/O expansion area
- AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE8(int_control_r, int_control_w, 0xffff)
- AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(random_number_r, random_number_w)
- AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0xd00000, 0xd0000f).mirror(0x07fff0).rw(this, FUNC(segas32_state::int_control_r), FUNC(segas32_state::int_control_w));
+ map(0xd80000, 0xdfffff).rw(this, FUNC(segas32_state::random_number_r), FUNC(segas32_state::random_number_w));
+ map(0xf00000, 0xffffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(segas32_state::multi32_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_MIRROR(0x0e0000) AM_RAM
- AM_RANGE(0x300000, 0x31ffff) AM_MIRROR(0x0e0000) AM_READWRITE16(system32_videoram_r, system32_videoram_w, 0xffffffff) AM_SHARE("videoram")
- AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x0e0000) AM_READWRITE(multi32_spriteram_r, multi32_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x50000f) AM_MIRROR(0x0ffff0) AM_READWRITE8(sprite_control_r, sprite_control_w, 0x00ff00ff)
- AM_RANGE(0x600000, 0x60ffff) AM_MIRROR(0x060000) AM_READWRITE(multi32_paletteram_0_r, multi32_paletteram_0_w) AM_SHARE("paletteram.0")
- AM_RANGE(0x610000, 0x61007f) AM_MIRROR(0x06ff80) AM_WRITE(multi32_mixer_0_w)
- AM_RANGE(0x680000, 0x68ffff) AM_MIRROR(0x060000) AM_READWRITE(multi32_paletteram_1_r, multi32_paletteram_1_w) AM_SHARE("paletteram.1")
- AM_RANGE(0x690000, 0x69007f) AM_MIRROR(0x06ff80) AM_WRITE(multi32_mixer_1_w)
- AM_RANGE(0x700000, 0x701fff) AM_MIRROR(0x0fe000) AM_READWRITE8(shared_ram_r, shared_ram_w, 0xffffffff)
- AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE8("s32comm", s32comm_device, share_r, share_w, 0x00ff00ff)
- AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x000000ff)
- AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff0000)
- AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("io_chip_0", sega_315_5296_device, read, write, 0x00ff00ff)
+void segas32_state::multi32_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x21ffff).mirror(0x0e0000).ram();
+ map(0x300000, 0x31ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_videoram_r), FUNC(segas32_state::system32_videoram_w)).share("videoram");
+ map(0x400000, 0x41ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::multi32_spriteram_r), FUNC(segas32_state::multi32_spriteram_w)).share("spriteram");
+ map(0x500000, 0x50000f).mirror(0x0ffff0).rw(this, FUNC(segas32_state::sprite_control_r), FUNC(segas32_state::sprite_control_w)).umask32(0x00ff00ff);
+ map(0x600000, 0x60ffff).mirror(0x060000).rw(this, FUNC(segas32_state::multi32_paletteram_0_r), FUNC(segas32_state::multi32_paletteram_0_w)).share("paletteram.0");
+ map(0x610000, 0x61007f).mirror(0x06ff80).w(this, FUNC(segas32_state::multi32_mixer_0_w));
+ map(0x680000, 0x68ffff).mirror(0x060000).rw(this, FUNC(segas32_state::multi32_paletteram_1_r), FUNC(segas32_state::multi32_paletteram_1_w)).share("paletteram.1");
+ map(0x690000, 0x69007f).mirror(0x06ff80).w(this, FUNC(segas32_state::multi32_mixer_1_w));
+ map(0x700000, 0x701fff).mirror(0x0fe000).rw(this, FUNC(segas32_state::shared_ram_r), FUNC(segas32_state::shared_ram_w));
+ map(0x800000, 0x800fff).rw("s32comm", FUNC(s32comm_device::share_r), FUNC(s32comm_device::share_w)).umask32(0x00ff00ff);
+ map(0x801000, 0x801000).rw("s32comm", FUNC(s32comm_device::cn_r), FUNC(s32comm_device::cn_w));
+ map(0x801002, 0x801002).rw("s32comm", FUNC(s32comm_device::fg_r), FUNC(s32comm_device::fg_w));
+ map(0xc00000, 0xc0001f).mirror(0x07ff80).rw("io_chip_0", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask32(0x00ff00ff);
// 0xc00040-0xc0007f - I/O expansion area 0
- AM_RANGE(0xc80000, 0xc8001f) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("io_chip_1", sega_315_5296_device, read, write, 0x00ff00ff)
+ map(0xc80000, 0xc8001f).mirror(0x07ff80).rw("io_chip_1", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask32(0x00ff00ff);
// 0xc80040-0xc8007f - I/O expansion area 1
- AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE8(int_control_r, int_control_w, 0xffffffff)
- AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE16(random_number_r, random_number_w, 0xffffffff)
- AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0xd00000, 0xd0000f).mirror(0x07fff0).rw(this, FUNC(segas32_state::int_control_r), FUNC(segas32_state::int_control_w));
+ map(0xd80000, 0xdfffff).rw(this, FUNC(segas32_state::random_number_r), FUNC(segas32_state::random_number_w));
+ map(0xf00000, 0xffffff).rom().region("maincpu", 0);
+}
@@ -1104,25 +1106,27 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas32_state::system32_sound_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_device, rf5c68_w)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("z80_shared_ram")
-ADDRESS_MAP_END
+void segas32_state::system32_sound_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom().region("soundcpu", 0);
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc00f).mirror(0x0ff0).w("rfsnd", FUNC(rf5c68_device::rf5c68_w));
+ map(0xd000, 0xdfff).rw("rfsnd", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w));
+ map(0xe000, 0xffff).ram().share("z80_shared_ram");
+}
-ADDRESS_MAP_START(segas32_state::system32_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym1", ym3438_device, read, write)
- AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym2", ym3438_device, read, write)
- AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w)
- AM_RANGE(0xb0, 0xbf) AM_WRITE(sound_bank_hi_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w)
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x04) AM_WRITE(sound_int_control_hi_w)
- AM_RANGE(0xf1, 0xf1) AM_READWRITE(sound_dummy_r, sound_dummy_w)
-ADDRESS_MAP_END
+void segas32_state::system32_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).mirror(0x0c).rw("ym1", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x90, 0x93).mirror(0x0c).rw("ym2", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xa0, 0xaf).w(this, FUNC(segas32_state::sound_bank_lo_w));
+ map(0xb0, 0xbf).w(this, FUNC(segas32_state::sound_bank_hi_w));
+ map(0xc0, 0xcf).w(this, FUNC(segas32_state::sound_int_control_lo_w));
+ map(0xd0, 0xd3).mirror(0x04).w(this, FUNC(segas32_state::sound_int_control_hi_w));
+ map(0xf1, 0xf1).rw(this, FUNC(segas32_state::sound_dummy_r), FUNC(segas32_state::sound_dummy_w));
+}
ADDRESS_MAP_START(segas32_state::multi32_sound_map)
@@ -2285,14 +2289,15 @@ segas32_analog_state::segas32_analog_state(const machine_config &mconfig, device
-ADDRESS_MAP_START(segas32_trackball_state::system32_trackball_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
+void segas32_trackball_state::system32_trackball_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
//AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_READWRITE8(sonic_custom_io_r, sonic_custom_io_w, 0x00ff)
- AM_RANGE(0xc00040, 0xc00047) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("upd1", upd4701_device, read_xy, reset_xy, 0x00ff)
- AM_RANGE(0xc00048, 0xc0004f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("upd2", upd4701_device, read_xy, reset_xy, 0x00ff)
- AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("upd3", upd4701_device, read_xy, reset_xy, 0x00ff)
-ADDRESS_MAP_END
+ map(0xc00040, 0xc00047).mirror(0x0fff80).rw("upd1", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy)).umask16(0x00ff);
+ map(0xc00048, 0xc0004f).mirror(0x0fff80).rw("upd2", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy)).umask16(0x00ff);
+ map(0xc00050, 0xc00057).mirror(0x0fff80).rw("upd3", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_trackball_state::device_add_mconfig)
segas32_state::device_add_mconfig(config);
@@ -2572,13 +2577,14 @@ sega_multi32_state::sega_multi32_state(const machine_config &mconfig, device_typ
}
-ADDRESS_MAP_START(sega_multi32_analog_state::multi32_analog_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_IMPORT_FROM(multi32_map)
- AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff00ff)
- AM_RANGE(0xc00060, 0xc00063) AM_MIRROR(0x07ff80) AM_WRITE8(analog_bank_w, 0x000000ff)
-ADDRESS_MAP_END
+void sega_multi32_analog_state::multi32_analog_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ multi32_map(map);
+ map(0xc00050, 0xc00057).mirror(0x07ff80).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask32(0x00ff00ff);
+ map(0xc00060, 0xc00060).mirror(0x07ff80).w(this, FUNC(sega_multi32_analog_state::analog_bank_w));
+}
MACHINE_CONFIG_START(sega_multi32_analog_state::device_add_mconfig)
sega_multi32_state::device_add_mconfig(config);
diff --git a/src/mame/drivers/segasp.cpp b/src/mame/drivers/segasp.cpp
index 29e62259442..afd12c50bef 100644
--- a/src/mame/drivers/segasp.cpp
+++ b/src/mame/drivers/segasp.cpp
@@ -178,49 +178,50 @@ READ64_MEMBER(segasp_state::sp_io_r)
}
// todo, base DC / Naomi stuff should be in it's own map, differences only here, same for Naomi 2 etc.
-ADDRESS_MAP_START(segasp_state::segasp_map)
+void segasp_state::segasp_map(address_map &map)
+{
/* Area 0 */
- AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) // BIOS
+ map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0); // BIOS
- AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w )
- AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, 0x0000ffff0000ffffU )
- AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU )
- AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w )
- AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU)
- AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU)
- AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w )
- AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU)
- AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU )
+ map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_sysctrl_r), FUNC(segasp_state::dc_sysctrl_w));
+ map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap));
+ map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff);
+ map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap));
+ map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_g2_ctrl_r), FUNC(segasp_state::dc_g2_ctrl_w));
+ map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map));
+ map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map));
+ map(0x00600000, 0x006007ff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_modem_r), FUNC(segasp_state::dc_modem_w));
+ map(0x00700000, 0x00707fff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_aica_reg_r), FUNC(segasp_state::dc_aica_reg_w));
+ map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff);
- AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w) // sound RAM (8 MB)
+ map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(this, FUNC(segasp_state::sh4_soundram_r), FUNC(segasp_state::sh4_soundram_w)); // sound RAM (8 MB)
/* External Device */
- AM_RANGE(0x01000000, 0x0100ffff) AM_RAM // banked access to ROM/NET board address space, mainly backup SRAM and ATA
- AM_RANGE(0x01010000, 0x01010007) AM_READWRITE(sp_bank_r, sp_bank_w )
+ map(0x01000000, 0x0100ffff).ram(); // banked access to ROM/NET board address space, mainly backup SRAM and ATA
+ map(0x01010000, 0x01010007).rw(this, FUNC(segasp_state::sp_bank_r), FUNC(segasp_state::sp_bank_w));
// AM_RANGE(0x01010080, 0x01010087) IRQ pending/reset, ATA control
- AM_RANGE(0x01010100, 0x01010127) AM_READ(sp_io_r)
- AM_RANGE(0x01010128, 0x0101012f) AM_READWRITE(sp_eeprom_r, sp_eeprom_w )
- AM_RANGE(0x01010150, 0x01010157) AM_READ(sp_rombdflg_r)
+ map(0x01010100, 0x01010127).r(this, FUNC(segasp_state::sp_io_r));
+ map(0x01010128, 0x0101012f).rw(this, FUNC(segasp_state::sp_eeprom_r), FUNC(segasp_state::sp_eeprom_w));
+ map(0x01010150, 0x01010157).r(this, FUNC(segasp_state::sp_rombdflg_r));
// AM_RANGE(0x01010180, 0x010101af) custom UART 1
// AM_RANGE(0x010101c0, 0x010101ef) custom UART 2
/* Area 1 */
- AM_RANGE(0x04000000, 0x04ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access
- AM_RANGE(0x05000000, 0x05ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
+ map(0x04000000, 0x04ffffff).mirror(0x02000000).ram().share("dc_texture_ram"); // texture memory 64 bit access
+ map(0x05000000, 0x05ffffff).mirror(0x02000000).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
/* Area 2*/
- AM_RANGE(0x08000000, 0x09ffffff) AM_MIRROR(0x02000000) AM_NOP // 'Unassigned'
+ map(0x08000000, 0x09ffffff).mirror(0x02000000).noprw(); // 'Unassigned'
/* Area 3 */
- AM_RANGE(0x0c000000, 0x0dffffff) AM_MIRROR(0xa2000000) AM_RAM AM_SHARE("dc_ram")
+ map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram");
/* Area 4 */
- AM_RANGE(0x10000000, 0x107fffff) AM_MIRROR(0x02000000) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w)
- AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU)
- AM_RANGE(0x11000000, 0x11ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
+ map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
+ map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
+ map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
/* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */
- AM_RANGE(0x13000000, 0x13ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
+ map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
/* Area 5 */
//AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext.
@@ -230,11 +231,12 @@ ADDRESS_MAP_START(segasp_state::segasp_map)
/* Area 7 */
//AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(segasp_state::onchip_port)
- AM_RANGE(0x00, 0x0f) AM_READWRITE(sn_93c46a_r, sn_93c46a_w)
-ADDRESS_MAP_END
+void segasp_state::onchip_port(address_map &map)
+{
+ map(0x00, 0x0f).rw(this, FUNC(segasp_state::sn_93c46a_r), FUNC(segasp_state::sn_93c46a_w));
+}
INPUT_PORTS_START( segasp )
diff --git a/src/mame/drivers/segaufo.cpp b/src/mame/drivers/segaufo.cpp
index 5a52497d5a2..6f9e1504163 100644
--- a/src/mame/drivers/segaufo.cpp
+++ b/src/mame/drivers/segaufo.cpp
@@ -461,35 +461,39 @@ READ8_MEMBER(ufo_state::ex_upd_busy_r)
/* Memory maps */
-ADDRESS_MAP_START(ufo_state::ufo_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ufo_state::ufo_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ym", ym3438_device, read, write)
- AM_RANGE(0x80, 0xbf) AM_DEVREADWRITE("io1", sega_315_5296_device, read, write)
- AM_RANGE(0xc0, 0xff) AM_DEVREADWRITE("io2", sega_315_5296_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ufo_state::ex_ufo21_portmap)
- AM_IMPORT_FROM( ufo_portmap )
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("upd", upd7759_device, port_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(ex_upd_start_w) AM_READNOP
- AM_RANGE(0x61, 0x61) AM_READ(ex_upd_busy_r)
- AM_RANGE(0x64, 0x65) AM_WRITE(ex_ufo21_lamps_w) AM_READNOP
+void ufo_state::ufo_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void ufo_state::ufo_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write));
+ map(0x40, 0x43).rw("ym", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x80, 0xbf).rw(m_io1, FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write));
+ map(0xc0, 0xff).rw(m_io2, FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write));
+}
+
+
+void ufo_state::ex_ufo21_portmap(address_map &map)
+{
+ ufo_portmap(map);
+ map(0x20, 0x20).w(m_upd, FUNC(upd7759_device::port_w));
+ map(0x60, 0x60).w(this, FUNC(ufo_state::ex_upd_start_w)).nopr();
+ map(0x61, 0x61).r(this, FUNC(ufo_state::ex_upd_busy_r));
+ map(0x64, 0x65).w(this, FUNC(ufo_state::ex_ufo21_lamps_w)).nopr();
// AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(ufo_state::ex_ufo800_portmap)
- AM_IMPORT_FROM( ufo_portmap )
+void ufo_state::ex_ufo800_portmap(address_map &map)
+{
+ ufo_portmap(map);
// AM_RANGE(0x60, 0x67) AM_NOP // unused?
// AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 0dc2fe89ba9..cd8b4ff4f1e 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -958,36 +958,37 @@ WRITE16_MEMBER( segaxbd_state::paletteram_w )
// MAIN CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segaxbd_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("backup1")
- AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("backup2")
- AM_RANGE(0x0c0000, 0x0cffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x0d0000, 0x0d0fff) AM_MIRROR(0x00f000) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
- AM_RANGE(0x0e0000, 0x0e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_main", sega_315_5248_multiplier_device, read, write)
- AM_RANGE(0x0e4000, 0x0e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_main", sega_315_5249_divider_device, read, write)
- AM_RANGE(0x0e8000, 0x0e801f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("cmptimer_main", sega_315_5250_compare_timer_device, read, write)
- AM_RANGE(0x100000, 0x100fff) AM_MIRROR(0x00f000) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x110000, 0x11ffff) AM_DEVWRITE("sprites", sega_xboard_sprite_device, draw_write)
- AM_RANGE(0x120000, 0x123fff) AM_MIRROR(0x00c000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x130000, 0x13ffff) AM_READWRITE(adc_r, adc_w)
- AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x00fff0) AM_DEVREADWRITE8("iochip_0", cxd1095_device, read, write, 0x00ff)
- AM_RANGE(0x150000, 0x15000f) AM_MIRROR(0x00fff0) AM_DEVREADWRITE8("iochip_1", cxd1095_device, read, write, 0x00ff)
- AM_RANGE(0x160000, 0x16ffff) AM_WRITE(iocontrol_w)
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("subcpu", 0x00000)
- AM_RANGE(0x280000, 0x283fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0")
- AM_RANGE(0x2a0000, 0x2a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram1")
- AM_RANGE(0x2e0000, 0x2e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write)
- AM_RANGE(0x2e4000, 0x2e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write)
- AM_RANGE(0x2e8000, 0x2e800f) AM_MIRROR(0x003ff0) AM_DEVREADWRITE("cmptimer_subx", sega_315_5250_compare_timer_device, read, write)
- AM_RANGE(0x2ec000, 0x2ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("roadram")
- AM_RANGE(0x2ee000, 0x2effff) AM_DEVREADWRITE("segaic16road", segaic16_road_device, segaic16_road_control_0_r, segaic16_road_control_0_w)
+void segaxbd_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).mirror(0x01c000).ram().share("backup1");
+ map(0x0a0000, 0x0a3fff).mirror(0x01c000).ram().share("backup2");
+ map(0x0c0000, 0x0cffff).rw("segaic16vid", FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
+ map(0x0d0000, 0x0d0fff).mirror(0x00f000).rw("segaic16vid", FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
+ map(0x0e0000, 0x0e0007).mirror(0x003ff8).rw("multiplier_main", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write));
+ map(0x0e4000, 0x0e401f).mirror(0x003fe0).rw("divider_main", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write));
+ map(0x0e8000, 0x0e801f).mirror(0x003fe0).rw("cmptimer_main", FUNC(sega_315_5250_compare_timer_device::read), FUNC(sega_315_5250_compare_timer_device::write));
+ map(0x100000, 0x100fff).mirror(0x00f000).ram().share("sprites");
+ map(0x110000, 0x11ffff).w("sprites", FUNC(sega_xboard_sprite_device::draw_write));
+ map(0x120000, 0x123fff).mirror(0x00c000).ram().w(this, FUNC(segaxbd_state::paletteram_w)).share("paletteram");
+ map(0x130000, 0x13ffff).rw(this, FUNC(segaxbd_state::adc_r), FUNC(segaxbd_state::adc_w));
+ map(0x140000, 0x14000f).mirror(0x00fff0).rw("iochip_0", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff);
+ map(0x150000, 0x15000f).mirror(0x00fff0).rw("iochip_1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff);
+ map(0x160000, 0x16ffff).w(this, FUNC(segaxbd_state::iocontrol_w));
+ map(0x200000, 0x27ffff).rom().region("subcpu", 0x00000);
+ map(0x280000, 0x283fff).mirror(0x01c000).ram().share("subram0");
+ map(0x2a0000, 0x2a3fff).mirror(0x01c000).ram().share("subram1");
+ map(0x2e0000, 0x2e0007).mirror(0x003ff8).rw("multiplier_subx", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write));
+ map(0x2e4000, 0x2e401f).mirror(0x003fe0).rw("divider_subx", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write));
+ map(0x2e8000, 0x2e800f).mirror(0x003ff0).rw("cmptimer_subx", FUNC(sega_315_5250_compare_timer_device::read), FUNC(sega_315_5250_compare_timer_device::write));
+ map(0x2ec000, 0x2ecfff).mirror(0x001000).ram().share("roadram");
+ map(0x2ee000, 0x2effff).rw("segaic16road", FUNC(segaic16_road_device::segaic16_road_control_0_r), FUNC(segaic16_road_device::segaic16_road_control_0_w));
// AM_RANGE(0x2f0000, 0x2f3fff) AM_READWRITE(excs_r, excs_w)
- AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("backup1")
- AM_RANGE(0x3fc000, 0x3fffff) AM_RAM AM_SHARE("backup2")
-ADDRESS_MAP_END
+ map(0x3f8000, 0x3fbfff).ram().share("backup1");
+ map(0x3fc000, 0x3fffff).ram().share("backup2");
+}
ADDRESS_MAP_START(segaxbd_state::decrypted_opcodes_map)
AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
@@ -997,19 +998,20 @@ ADDRESS_MAP_END
// SUB CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segaxbd_state::sub_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0")
- AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram1")
- AM_RANGE(0x0e0000, 0x0e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write)
- AM_RANGE(0x0e4000, 0x0e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write)
- AM_RANGE(0x0e8000, 0x0e800f) AM_MIRROR(0x003ff0) AM_DEVREADWRITE("cmptimer_subx", sega_315_5250_compare_timer_device, read, write)
- AM_RANGE(0x0ec000, 0x0ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("roadram")
- AM_RANGE(0x0ee000, 0x0effff) AM_DEVREADWRITE("segaic16road", segaic16_road_device, segaic16_road_control_0_r, segaic16_road_control_0_w)
+void segaxbd_state::sub_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xfffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).mirror(0x01c000).ram().share("subram0");
+ map(0x0a0000, 0x0a3fff).mirror(0x01c000).ram().share("subram1");
+ map(0x0e0000, 0x0e0007).mirror(0x003ff8).rw("multiplier_subx", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write));
+ map(0x0e4000, 0x0e401f).mirror(0x003fe0).rw("divider_subx", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write));
+ map(0x0e8000, 0x0e800f).mirror(0x003ff0).rw("cmptimer_subx", FUNC(sega_315_5250_compare_timer_device::read), FUNC(sega_315_5250_compare_timer_device::write));
+ map(0x0ec000, 0x0ecfff).mirror(0x001000).ram().share("roadram");
+ map(0x0ee000, 0x0effff).rw("segaic16road", FUNC(segaic16_road_device::segaic16_road_control_0_r), FUNC(segaic16_road_device::segaic16_road_control_0_w));
// AM_RANGE(0x0f0000, 0x0f3fff) AM_READWRITE(excs_r, excs_w)
-ADDRESS_MAP_END
+}
@@ -1017,19 +1019,21 @@ ADDRESS_MAP_END
// Z80 SOUND CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segaxbd_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segaxbd_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segaxbd_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
+void segaxbd_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segaxbd_state::sound_data_r));
+}
diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp
index 193ac31d233..a05b0d7ef73 100644
--- a/src/mame/drivers/segaybd.cpp
+++ b/src/mame/drivers/segaybd.cpp
@@ -583,69 +583,74 @@ void segaybd_state::update_irqs()
// MAIN CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segaybd_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080007) AM_MIRROR(0x001ff8) AM_DEVREADWRITE("multiplier_main", sega_315_5248_multiplier_device, read, write)
- AM_RANGE(0x082000, 0x082001) AM_MIRROR(0x001ffe) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_main", sega_315_5249_divider_device, read, write)
+void segaybd_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x080007).mirror(0x001ff8).rw("multiplier_main", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write));
+ map(0x082001, 0x082001).mirror(0x001ffe).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x084000, 0x08401f).mirror(0x001fe0).rw("divider_main", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write));
// AM_RANGE(0x086000, 0x087fff) /DEA0
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram")
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0x100040, 0x100047) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff)
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x0c0000, 0x0cffff).ram().share("shareram");
+ map(0x100000, 0x10001f).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff);
+ map(0x100040, 0x100047).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask16(0x00ff);
+ map(0x1f0000, 0x1fffff).ram();
+}
//**************************************************************************
// SUB CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segaybd_state::subx_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080007) AM_MIRROR(0x001ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write)
- AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write)
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram")
- AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("ysprites")
- AM_RANGE(0x1f8000, 0x1fbfff) AM_RAM
- AM_RANGE(0x1fc000, 0x1fffff) AM_RAM AM_SHARE("backupram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segaybd_state::suby_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080007) AM_MIRROR(0x001ff8) AM_DEVREADWRITE("multiplier_suby", sega_315_5248_multiplier_device, read, write)
- AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_suby", sega_315_5249_divider_device, read, write)
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram")
- AM_RANGE(0x180000, 0x1807ff) AM_MIRROR(0x007800) AM_RAM AM_SHARE("rotateram")
- AM_RANGE(0x188000, 0x188fff) AM_MIRROR(0x007000) AM_RAM AM_SHARE("bsprites")
- AM_RANGE(0x190000, 0x193fff) AM_MIRROR(0x004000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x198000, 0x19ffff) AM_DEVREAD("segaic16vid", segaic16_video_device, rotate_control_r)
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
-ADDRESS_MAP_END
+void segaybd_state::subx_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080007).mirror(0x001ff8).rw("multiplier_subx", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write));
+ map(0x084000, 0x08401f).mirror(0x001fe0).rw("divider_subx", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write));
+ map(0x0c0000, 0x0cffff).ram().share("shareram");
+ map(0x180000, 0x18ffff).ram().share("ysprites");
+ map(0x1f8000, 0x1fbfff).ram();
+ map(0x1fc000, 0x1fffff).ram().share("backupram");
+}
+
+void segaybd_state::suby_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080007).mirror(0x001ff8).rw("multiplier_suby", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write));
+ map(0x084000, 0x08401f).mirror(0x001fe0).rw("divider_suby", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write));
+ map(0x0c0000, 0x0cffff).ram().share("shareram");
+ map(0x180000, 0x1807ff).mirror(0x007800).ram().share("rotateram");
+ map(0x188000, 0x188fff).mirror(0x007000).ram().share("bsprites");
+ map(0x190000, 0x193fff).mirror(0x004000).ram().w(this, FUNC(segaybd_state::paletteram_w)).share("paletteram");
+ map(0x198000, 0x19ffff).r(m_segaic16vid, FUNC(segaic16_video_device::rotate_control_r));
+ map(0x1f0000, 0x1fffff).ram();
+}
//**************************************************************************
// Z80 SOUND CPU ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(segaybd_state::sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segaybd_state::sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segaybd_state::sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segaybd_state::sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).mirror(0x3f).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
//**************************************************************************
@@ -681,20 +686,22 @@ WRITE16_MEMBER(segaybd_state::link2_w)
logerror("link2_w %04x\n", data);
}
-ADDRESS_MAP_START(segaybd_state::main_map_link)
- AM_IMPORT_FROM(main_map)
- AM_RANGE(0x190000, 0x190fff) AM_DEVREADWRITE8("mb8421", mb8421_device, left_r, left_w, 0x00ff)
- AM_RANGE(0x191000, 0x191001) AM_READ(link_r)
- AM_RANGE(0x192000, 0x192001) AM_READWRITE(link2_r, link2_w)
-ADDRESS_MAP_END
+void segaybd_state::main_map_link(address_map &map)
+{
+ main_map(map);
+ map(0x190000, 0x190fff).rw("mb8421", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)).umask16(0x00ff);
+ map(0x191000, 0x191001).r(this, FUNC(segaybd_state::link_r));
+ map(0x192000, 0x192001).rw(this, FUNC(segaybd_state::link2_r), FUNC(segaybd_state::link2_w));
+}
-ADDRESS_MAP_START(segaybd_state::link_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM // 0x2000-0x2*** maybe shared with other boards?
- AM_RANGE(0x4000, 0x47ff) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w)
-ADDRESS_MAP_END
+void segaybd_state::link_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x3fff).ram(); // 0x2000-0x2*** maybe shared with other boards?
+ map(0x4000, 0x47ff).rw("mb8421", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+}
#if 0
READ8_MEMBER(segaybd_state::link_portc0_r)
@@ -703,20 +710,22 @@ READ8_MEMBER(segaybd_state::link_portc0_r)
}
#endif
-ADDRESS_MAP_START(segaybd_state::link_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void segaybd_state::link_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
- AM_RANGE(0x40, 0x40) AM_READ_PORT("LinkID_DSW1")
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("LinkID_DSW2")
-ADDRESS_MAP_END
+ map(0x40, 0x40).portr("LinkID_DSW1");
+ map(0xc0, 0xc0).portr("LinkID_DSW2");
+}
-ADDRESS_MAP_START(segaybd_state::motor_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segaybd_state::motor_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).ram();
+}
//**************************************************************************
// GENERIC PORT DEFINITIONS
diff --git a/src/mame/drivers/seibucats.cpp b/src/mame/drivers/seibucats.cpp
index 315b9dcfd90..a72692216ca 100644
--- a/src/mame/drivers/seibucats.cpp
+++ b/src/mame/drivers/seibucats.cpp
@@ -163,33 +163,34 @@ WRITE16_MEMBER(seibucats_state::aux_rtc_w)
{
}
-ADDRESS_MAP_START(seibucats_state::seibucats_map)
+void seibucats_state::seibucats_map(address_map &map)
+{
// TODO: map devices
- AM_RANGE(0x00000000, 0x0003ffff) AM_RAM AM_SHARE("mainram")
+ map(0x00000000, 0x0003ffff).ram().share("mainram");
- AM_RANGE(0x00000010, 0x00000013) AM_READ8(spi_status_r, 0x000000ff)
- AM_RANGE(0x00000400, 0x00000403) AM_WRITE16(input_select_w, 0x0000ffff)
- AM_RANGE(0x00000404, 0x00000407) AM_WRITE16(output_latch_w, 0x0000ffff)
- AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w)
- AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w)
- AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w)
- AM_RANGE(0x00000560, 0x00000563) AM_WRITE16(sprite_dma_start_w, 0xffff0000)
+ map(0x00000010, 0x00000010).r(this, FUNC(seibucats_state::spi_status_r));
+ map(0x00000400, 0x00000401).w(this, FUNC(seibucats_state::input_select_w));
+ map(0x00000404, 0x00000405).w(this, FUNC(seibucats_state::output_latch_w));
+ map(0x00000484, 0x00000487).w(this, FUNC(seibucats_state::palette_dma_start_w));
+ map(0x00000490, 0x00000493).w(this, FUNC(seibucats_state::video_dma_length_w));
+ map(0x00000494, 0x00000497).w(this, FUNC(seibucats_state::video_dma_address_w));
+ map(0x00000562, 0x00000563).w(this, FUNC(seibucats_state::sprite_dma_start_w));
- AM_RANGE(0x00000600, 0x00000607) AM_READ16(input_mux_r, 0x0000ffff)
+ map(0x00000600, 0x00000607).r(this, FUNC(seibucats_state::input_mux_r)).umask32(0x0000ffff);
- AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_REGION("ipl", 0) AM_WRITENOP // emjjoshi attempts to write there?
+ map(0x00200000, 0x003fffff).rom().region("ipl", 0).nopw(); // emjjoshi attempts to write there?
// following are likely to be Seibu CATS specific
- AM_RANGE(0x01200000, 0x01200007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x000000ff)
- AM_RANGE(0x01200100, 0x01200107) AM_WRITENOP // YMF721-S MIDI data
- AM_RANGE(0x01200104, 0x01200107) AM_READNOP // YMF721-S MIDI status
- AM_RANGE(0x01200200, 0x01200203) AM_DEVREADWRITE8("usart1", i8251_device, data_r, data_w, 0x000000ff)
- AM_RANGE(0x01200204, 0x01200207) AM_DEVREADWRITE8("usart1", i8251_device, status_r, control_w, 0x000000ff)
- AM_RANGE(0x01200300, 0x01200303) AM_DEVREADWRITE8("usart2", i8251_device, data_r, data_w, 0x000000ff)
- AM_RANGE(0x01200304, 0x01200307) AM_DEVREADWRITE8("usart2", i8251_device, status_r, control_w, 0x000000ff)
- AM_RANGE(0xa0000000, 0xa1ffffff) AM_NOP // NVRAM on ROM board
- AM_RANGE(0xa2000000, 0xa2000003) AM_WRITE16(aux_rtc_w, 0x0000ffff)
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+ map(0x01200000, 0x01200007).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x000000ff);
+ map(0x01200100, 0x01200107).nopw(); // YMF721-S MIDI data
+ map(0x01200104, 0x01200107).nopr(); // YMF721-S MIDI status
+ map(0x01200200, 0x01200200).rw("usart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01200204, 0x01200204).rw("usart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x01200300, 0x01200300).rw("usart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01200304, 0x01200304).rw("usart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xa0000000, 0xa1ffffff).noprw(); // NVRAM on ROM board
+ map(0xa2000000, 0xa2000001).w(this, FUNC(seibucats_state::aux_rtc_w));
+ map(0xffe00000, 0xffffffff).rom().region("ipl", 0);
+}
static INPUT_PORTS_START( spi_mahjong_keyboard )
PORT_START("KEY.0")
diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp
index 5c3f6e518ab..b42375b1697 100644
--- a/src/mame/drivers/seibuspi.cpp
+++ b/src/mame/drivers/seibuspi.cpp
@@ -993,124 +993,133 @@ WRITE32_MEMBER(seibuspi_state::ejsakura_input_select_w)
}
-ADDRESS_MAP_START(seibuspi_state::base_map)
- AM_RANGE(0x00000000, 0x0003ffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x00000400, 0x0000043f) AM_DEVREADWRITE16("crtc", seibu_crtc_device, read, write, 0xffffffff)
- AM_RANGE(0x00000480, 0x00000483) AM_WRITE(tilemap_dma_start_w)
- AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w)
- AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w)
- AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w)
- AM_RANGE(0x00000498, 0x0000049b) AM_WRITENOP // ? dma address high bits? (always writes 0)
- AM_RANGE(0x00000600, 0x00000603) AM_READ8(spi_status_r, 0x000000ff)
- AM_RANGE(0x00000604, 0x00000607) AM_READ_PORT("INPUTS")
- AM_RANGE(0x00000608, 0x0000060b) AM_READ_PORT("EXCH")
- AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1")
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::sei252_map)
+void seibuspi_state::base_map(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).ram().share("mainram");
+ map(0x00000400, 0x0000043f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ map(0x00000480, 0x00000483).w(this, FUNC(seibuspi_state::tilemap_dma_start_w));
+ map(0x00000484, 0x00000487).w(this, FUNC(seibuspi_state::palette_dma_start_w));
+ map(0x00000490, 0x00000493).w(this, FUNC(seibuspi_state::video_dma_length_w));
+ map(0x00000494, 0x00000497).w(this, FUNC(seibuspi_state::video_dma_address_w));
+ map(0x00000498, 0x0000049b).nopw(); // ? dma address high bits? (always writes 0)
+ map(0x00000600, 0x00000600).r(this, FUNC(seibuspi_state::spi_status_r));
+ map(0x00000604, 0x00000607).portr("INPUTS");
+ map(0x00000608, 0x0000060b).portr("EXCH");
+ map(0x0000060c, 0x0000060f).portr("SYSTEM");
+ map(0x00200000, 0x003fffff).rom().share("share1");
+ map(0xffe00000, 0xffffffff).rom().region("maincpu", 0).share("share1"); // ROM location in real-mode
+}
+
+void seibuspi_state::sei252_map(address_map &map)
+{
//AM_RANGE(0x00000500, 0x0000057f) AM_DEVREADWRITE16("obj", sei252_device, read_xor, write_xor, 0xffffffff)
- AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE16(sprite_dma_start_w, 0xffff0000)
- AM_RANGE(0x00000524, 0x00000527) AM_WRITENOP // SEI252 sprite decryption key, see machine/spisprit.c
- AM_RANGE(0x00000528, 0x0000052b) AM_WRITENOP // SEI252 sprite decryption unknown
- AM_RANGE(0x00000530, 0x00000533) AM_WRITENOP // SEI252 sprite decryption table key, see machine/spisprit.c
- AM_RANGE(0x00000534, 0x00000537) AM_WRITENOP // SEI252 sprite decryption unknown
- AM_RANGE(0x0000053c, 0x0000053f) AM_WRITENOP // SEI252 sprite decryption table index, see machine/spisprit.c
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::rise_map)
+ map(0x0000050e, 0x0000050f).w(this, FUNC(seibuspi_state::sprite_dma_start_w));
+ map(0x00000524, 0x00000527).nopw(); // SEI252 sprite decryption key, see machine/spisprit.c
+ map(0x00000528, 0x0000052b).nopw(); // SEI252 sprite decryption unknown
+ map(0x00000530, 0x00000533).nopw(); // SEI252 sprite decryption table key, see machine/spisprit.c
+ map(0x00000534, 0x00000537).nopw(); // SEI252 sprite decryption unknown
+ map(0x0000053c, 0x0000053f).nopw(); // SEI252 sprite decryption table index, see machine/spisprit.c
+}
+
+void seibuspi_state::rise_map(address_map &map)
+{
//AM_RANGE(0x00000500, 0x0000057f) AM_DEVREADWRITE16("obj", seibu_encrypted_sprite_device, read, write, 0xffffffff)
- AM_RANGE(0x0000054c, 0x0000054f) AM_WRITENOP // RISE10/11 sprite decryption key, see machine/seibuspi.c
- AM_RANGE(0x00000560, 0x00000563) AM_WRITE16(sprite_dma_start_w, 0xffff0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::spi_map)
- AM_IMPORT_FROM( base_map )
- AM_IMPORT_FROM( sei252_map )
- AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP // ?
- AM_RANGE(0x00000680, 0x00000683) AM_DEVREAD8("soundfifo2", fifo7200_device, data_byte_r, 0x000000ff)
- AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff)
- AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff)
- AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_transfer_w, 0x000000ff)
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(z80_enable_w, 0x000000ff)
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(rf2_layer_bank_w, 0x00ff0000)
- AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff)
- AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff)
- AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff)
- AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff)
- AM_RANGE(0x000006dc, 0x000006df) AM_READ8(spi_ds2404_unknown_r, 0x0000ff00)
- AM_RANGE(0x00a00000, 0x013fffff) AM_ROM AM_REGION("sound01", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::rdft2_map)
- AM_IMPORT_FROM( base_map )
- AM_IMPORT_FROM( rise_map )
- AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP // ?
- AM_RANGE(0x00000680, 0x00000683) AM_DEVREAD8("soundfifo2", fifo7200_device, data_byte_r, 0x000000ff)
- AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff)
- AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff)
- AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_transfer_w, 0x000000ff)
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(z80_enable_w, 0x000000ff)
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(rf2_layer_bank_w, 0x00ff0000)
- AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff)
- AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff)
- AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff)
- AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff)
- AM_RANGE(0x000006dc, 0x000006df) AM_READ8(spi_ds2404_unknown_r, 0x0000ff00)
- AM_RANGE(0x00a00000, 0x013fffff) AM_ROM AM_REGION("sound01", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::sxx2e_map)
- AM_IMPORT_FROM( base_map )
- AM_IMPORT_FROM( sei252_map )
- AM_RANGE(0x00000680, 0x00000683) AM_READ8(sb_coin_r, 0x000000ff)
- AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff)
- AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff)
- AM_RANGE(0x00000688, 0x0000068b) AM_NOP // ?
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITENOP
- AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff)
- AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff)
- AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff)
- AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff)
- AM_RANGE(0x000006dc, 0x000006df) AM_READ8(spi_ds2404_unknown_r, 0x0000ff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::sxx2f_map)
- AM_IMPORT_FROM( base_map )
- AM_IMPORT_FROM( rise_map )
- AM_RANGE(0x00000680, 0x00000683) AM_READ8(sb_coin_r, 0x000000ff)
- AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff)
- AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff)
- AM_RANGE(0x00000688, 0x0000068b) AM_NOP // ?
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000)
- AM_RANGE(0x00000690, 0x00000693) AM_WRITENOP // ?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::sys386i_map)
- AM_IMPORT_FROM( base_map )
- AM_IMPORT_FROM( rise_map )
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000)
- AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(oki_bank_w, 0xff000000)
- AM_RANGE(0x01200000, 0x01200003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x01200004, 0x01200007) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::sys386f_map)
- AM_RANGE(0x00000000, 0x0003ffff) AM_RAM AM_SHARE("mainram")
- AM_IMPORT_FROM( rise_map )
- AM_RANGE(0x00000010, 0x00000013) AM_READ8(spi_status_r, 0x000000ff)
- AM_RANGE(0x00000400, 0x00000403) AM_READ_PORT("SYSTEM") AM_WRITE(ejsakura_input_select_w)
- AM_RANGE(0x00000404, 0x00000407) AM_WRITE8(eeprom_w, 0x000000ff)
- AM_RANGE(0x00000408, 0x0000040f) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x000000ff)
- AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w)
- AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w)
- AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w)
- AM_RANGE(0x00000600, 0x00000607) AM_DEVREAD8("ymz", ymz280b_device, read, 0x000000ff)
- AM_RANGE(0x0000060c, 0x0000060f) AM_READ(ejsakura_keyboard_r)
- AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1")
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode
-ADDRESS_MAP_END
+ map(0x0000054c, 0x0000054f).nopw(); // RISE10/11 sprite decryption key, see machine/seibuspi.c
+ map(0x00000562, 0x00000563).w(this, FUNC(seibuspi_state::sprite_dma_start_w));
+}
+
+void seibuspi_state::spi_map(address_map &map)
+{
+ base_map(map);
+ sei252_map(map);
+ map(0x00000600, 0x00000603).nopw(); // ?
+ map(0x00000680, 0x00000680).r("soundfifo2", FUNC(fifo7200_device::data_byte_r));
+ map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w));
+ map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r));
+ map(0x00000688, 0x00000688).w(this, FUNC(seibuspi_state::z80_prg_transfer_w));
+ map(0x0000068c, 0x0000068c).w(this, FUNC(seibuspi_state::z80_enable_w));
+ map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::rf2_layer_bank_w));
+ map(0x000006d0, 0x000006d0).w("ds2404", FUNC(ds2404_device::ds2404_1w_reset_w));
+ map(0x000006d4, 0x000006d4).w("ds2404", FUNC(ds2404_device::ds2404_data_w));
+ map(0x000006d8, 0x000006d8).w("ds2404", FUNC(ds2404_device::ds2404_clk_w));
+ map(0x000006dc, 0x000006dc).r("ds2404", FUNC(ds2404_device::ds2404_data_r));
+ map(0x000006dd, 0x000006dd).r(this, FUNC(seibuspi_state::spi_ds2404_unknown_r));
+ map(0x00a00000, 0x013fffff).rom().region("sound01", 0);
+}
+
+void seibuspi_state::rdft2_map(address_map &map)
+{
+ base_map(map);
+ rise_map(map);
+ map(0x00000600, 0x00000603).nopw(); // ?
+ map(0x00000680, 0x00000680).r("soundfifo2", FUNC(fifo7200_device::data_byte_r));
+ map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w));
+ map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r));
+ map(0x00000688, 0x00000688).w(this, FUNC(seibuspi_state::z80_prg_transfer_w));
+ map(0x0000068c, 0x0000068c).w(this, FUNC(seibuspi_state::z80_enable_w));
+ map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::rf2_layer_bank_w));
+ map(0x000006d0, 0x000006d0).w("ds2404", FUNC(ds2404_device::ds2404_1w_reset_w));
+ map(0x000006d4, 0x000006d4).w("ds2404", FUNC(ds2404_device::ds2404_data_w));
+ map(0x000006d8, 0x000006d8).w("ds2404", FUNC(ds2404_device::ds2404_clk_w));
+ map(0x000006dc, 0x000006dc).r("ds2404", FUNC(ds2404_device::ds2404_data_r));
+ map(0x000006dd, 0x000006dd).r(this, FUNC(seibuspi_state::spi_ds2404_unknown_r));
+ map(0x00a00000, 0x013fffff).rom().region("sound01", 0);
+}
+
+void seibuspi_state::sxx2e_map(address_map &map)
+{
+ base_map(map);
+ sei252_map(map);
+ map(0x00000680, 0x00000680).r(this, FUNC(seibuspi_state::sb_coin_r));
+ map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w));
+ map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r));
+ map(0x00000688, 0x0000068b).noprw(); // ?
+ map(0x0000068c, 0x0000068f).nopw();
+ map(0x000006d0, 0x000006d0).w("ds2404", FUNC(ds2404_device::ds2404_1w_reset_w));
+ map(0x000006d4, 0x000006d4).w("ds2404", FUNC(ds2404_device::ds2404_data_w));
+ map(0x000006d8, 0x000006d8).w("ds2404", FUNC(ds2404_device::ds2404_clk_w));
+ map(0x000006dc, 0x000006dc).r("ds2404", FUNC(ds2404_device::ds2404_data_r));
+ map(0x000006dd, 0x000006dd).r(this, FUNC(seibuspi_state::spi_ds2404_unknown_r));
+}
+
+void seibuspi_state::sxx2f_map(address_map &map)
+{
+ base_map(map);
+ rise_map(map);
+ map(0x00000680, 0x00000680).r(this, FUNC(seibuspi_state::sb_coin_r));
+ map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w));
+ map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r));
+ map(0x00000688, 0x0000068b).noprw(); // ?
+ map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::spi_layerbanks_eeprom_w));
+ map(0x00000690, 0x00000693).nopw(); // ?
+}
+
+void seibuspi_state::sys386i_map(address_map &map)
+{
+ base_map(map);
+ rise_map(map);
+ map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::spi_layerbanks_eeprom_w));
+ map(0x0000068f, 0x0000068f).w(this, FUNC(seibuspi_state::oki_bank_w));
+ map(0x01200000, 0x01200000).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x01200004, 0x01200004).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void seibuspi_state::sys386f_map(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).ram().share("mainram");
+ rise_map(map);
+ map(0x00000010, 0x00000010).r(this, FUNC(seibuspi_state::spi_status_r));
+ map(0x00000400, 0x00000403).portr("SYSTEM").w(this, FUNC(seibuspi_state::ejsakura_input_select_w));
+ map(0x00000404, 0x00000404).w(this, FUNC(seibuspi_state::eeprom_w));
+ map(0x00000408, 0x0000040f).w("ymz", FUNC(ymz280b_device::write)).umask32(0x000000ff);
+ map(0x00000484, 0x00000487).w(this, FUNC(seibuspi_state::palette_dma_start_w));
+ map(0x00000490, 0x00000493).w(this, FUNC(seibuspi_state::video_dma_length_w));
+ map(0x00000494, 0x00000497).w(this, FUNC(seibuspi_state::video_dma_address_w));
+ map(0x00000600, 0x00000607).r("ymz", FUNC(ymz280b_device::read)).umask32(0x000000ff);
+ map(0x0000060c, 0x0000060f).r(this, FUNC(seibuspi_state::ejsakura_keyboard_r));
+ map(0x00200000, 0x003fffff).rom().share("share1");
+ map(0xffe00000, 0xffffffff).rom().region("maincpu", 0).share("share1"); // ROM location in real-mode
+}
/*****************************************************************************/
@@ -1151,33 +1160,36 @@ WRITE8_MEMBER(seibuspi_state::spi_coin_w)
}
-ADDRESS_MAP_START(seibuspi_state::sxx2e_soundmap)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4002, 0x4002) AM_WRITENOP // ?
- AM_RANGE(0x4003, 0x4003) AM_WRITENOP // ?
- AM_RANGE(0x4004, 0x4004) AM_WRITE(spi_coin_w)
- AM_RANGE(0x4008, 0x4008) AM_DEVREAD("soundfifo1", fifo7200_device, data_byte_r)
- AM_RANGE(0x4008, 0x4008) AM_WRITENOP // ?
- AM_RANGE(0x4009, 0x4009) AM_READ(z80_soundfifo_status_r)
- AM_RANGE(0x400b, 0x400b) AM_WRITENOP // ?
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w)
- AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("ymf", ymf271_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("z80_bank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::spi_soundmap)
- AM_IMPORT_FROM( sxx2e_soundmap )
- AM_RANGE(0x4008, 0x4008) AM_DEVWRITE("soundfifo2", fifo7200_device, data_byte_w)
- AM_RANGE(0x400a, 0x400a) AM_READ_PORT("JUMPERS") // TO DO: get these to actually work
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seibuspi_state::spi_ymf271_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x0fffff) AM_DEVREADWRITE("soundflash1", intel_e28f008sa_device, read, write)
- AM_RANGE(0x100000, 0x1fffff) AM_DEVREADWRITE("soundflash2", intel_e28f008sa_device, read, write)
-ADDRESS_MAP_END
+void seibuspi_state::sxx2e_soundmap(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram();
+ map(0x4002, 0x4002).nopw(); // ?
+ map(0x4003, 0x4003).nopw(); // ?
+ map(0x4004, 0x4004).w(this, FUNC(seibuspi_state::spi_coin_w));
+ map(0x4008, 0x4008).r("soundfifo1", FUNC(fifo7200_device::data_byte_r));
+ map(0x4008, 0x4008).nopw(); // ?
+ map(0x4009, 0x4009).r(this, FUNC(seibuspi_state::z80_soundfifo_status_r));
+ map(0x400b, 0x400b).nopw(); // ?
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x401b, 0x401b).w(this, FUNC(seibuspi_state::z80_bank_w));
+ map(0x6000, 0x600f).rw("ymf", FUNC(ymf271_device::read), FUNC(ymf271_device::write));
+ map(0x8000, 0xffff).bankr("z80_bank");
+}
+
+void seibuspi_state::spi_soundmap(address_map &map)
+{
+ sxx2e_soundmap(map);
+ map(0x4008, 0x4008).w("soundfifo2", FUNC(fifo7200_device::data_byte_w));
+ map(0x400a, 0x400a).portr("JUMPERS"); // TO DO: get these to actually work
+}
+
+void seibuspi_state::spi_ymf271_map(address_map &map)
+{
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x0fffff).rw("soundflash1", FUNC(intel_e28f008sa_device::read), FUNC(intel_e28f008sa_device::write));
+ map(0x100000, 0x1fffff).rw("soundflash2", FUNC(intel_e28f008sa_device::read), FUNC(intel_e28f008sa_device::write));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp
index daccdd167f0..8458d3eaf02 100644
--- a/src/mame/drivers/seicross.cpp
+++ b/src/mame/drivers/seicross.cpp
@@ -110,49 +110,54 @@ WRITE8_MEMBER(seicross_state::dac_w)
m_dac->write(data >> 4);
}
-ADDRESS_MAP_START(seicross_state::main_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8820, 0x887f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* video RAM */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("row_scroll")
- AM_RANGE(0x9880, 0x989f) AM_WRITEONLY AM_SHARE("spriteram2")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("TEST") /* test */
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seicross_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(seicross_state::mcu_nvram_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x2000) AM_WRITE(dac_w)
- AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seicross_state::mcu_no_nvram_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0x1005, 0x1005) AM_READ_PORT("DSW2") /* DSW2 */
- AM_RANGE(0x1006, 0x1006) AM_READ_PORT("DSW3") /* DSW3 */
- AM_RANGE(0x2000, 0x2000) AM_WRITE(dac_w)
- AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seicross_state::decrypted_opcodes_map)
- AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
+void seicross_state::main_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram().share("share1");
+ map(0x8820, 0x887f).ram().share("spriteram");
+ map(0x9000, 0x93ff).ram().w(this, FUNC(seicross_state::videoram_w)).share("videoram"); /* video RAM */
+ map(0x9800, 0x981f).ram().share("row_scroll");
+ map(0x9880, 0x989f).writeonly().share("spriteram2");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(seicross_state::colorram_w)).share("colorram");
+ map(0xa000, 0xa000).portr("IN0"); /* IN0 */
+ map(0xa800, 0xa800).portr("IN1"); /* IN1 */
+ map(0xb000, 0xb000).portr("TEST"); /* test */
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void seicross_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x08).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x04, 0x04).mirror(0x08).r("aysnd", FUNC(ay8910_device::data_r));
+}
+
+
+void seicross_state::mcu_nvram_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x1000, 0x10ff).ram().share("nvram");
+ map(0x2000, 0x2000).w(this, FUNC(seicross_state::dac_w));
+ map(0x8000, 0xf7ff).rom().region("maincpu", 0);
+ map(0xf800, 0xffff).ram().share("share1");
+}
+
+void seicross_state::mcu_no_nvram_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x1003, 0x1003).portr("DSW1"); /* DSW1 */
+ map(0x1005, 0x1005).portr("DSW2"); /* DSW2 */
+ map(0x1006, 0x1006).portr("DSW3"); /* DSW3 */
+ map(0x2000, 0x2000).w(this, FUNC(seicross_state::dac_w));
+ map(0x8000, 0xf7ff).rom().region("maincpu", 0);
+ map(0xf800, 0xffff).ram().share("share1");
+}
+
+void seicross_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x8000, 0xf7ff).rom().share("decrypted_opcodes");
+ map(0xf800, 0xffff).ram().share("share1");
+}
diff --git a/src/mame/drivers/seicupbl.cpp b/src/mame/drivers/seicupbl.cpp
index cebceb9e6c1..4fc9e274a23 100644
--- a/src/mame/drivers/seicupbl.cpp
+++ b/src/mame/drivers/seicupbl.cpp
@@ -321,27 +321,28 @@ WRITE16_MEMBER(seicupbl_state::vram_sc3_w)
m_sc_layer[3]->mark_tile_dirty(offset);
}
-ADDRESS_MAP_START(seicupbl_state::cupsocbl_mem)
+void seicupbl_state::cupsocbl_mem(address_map &map)
+{
// AM_IMPORT_FROM( legionna_cop_mem )
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100400, 0x1005ff) AM_DEVREADWRITE("seibucop_boot", seibu_cop_bootleg_device, copdxbl_0_r,copdxbl_0_w) AM_SHARE("cop_mcu_ram")
- AM_RANGE(0x100660, 0x10066f) AM_RAM AM_SHARE("vregs")
- AM_RANGE(0x100700, 0x100701) AM_READ_PORT("DSW1")
- AM_RANGE(0x100704, 0x100705) AM_READ_PORT("PLAYERS12")
- AM_RANGE(0x100708, 0x100709) AM_READ_PORT("PLAYERS34")
- AM_RANGE(0x10070c, 0x10070d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x10071c, 0x10071d) AM_READ_PORT("DSW2")
- AM_RANGE(0x100740, 0x100741) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(vram_sc0_w) AM_SHARE("back_data")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(vram_sc2_w) AM_SHARE("fore_data")
- AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(vram_sc1_w) AM_SHARE("mid_data")
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(vram_sc3_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x104000, 0x106fff) AM_RAM
- AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x107800, 0x107fff) AM_RAM
- AM_RANGE(0x108000, 0x11ffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x000000, 0x0fffff).rom();
+ map(0x100400, 0x1005ff).rw("seibucop_boot", FUNC(seibu_cop_bootleg_device::copdxbl_0_r), FUNC(seibu_cop_bootleg_device::copdxbl_0_w)).share("cop_mcu_ram");
+ map(0x100660, 0x10066f).ram().share("vregs");
+ map(0x100700, 0x100701).portr("DSW1");
+ map(0x100704, 0x100705).portr("PLAYERS12");
+ map(0x100708, 0x100709).portr("PLAYERS34");
+ map(0x10070c, 0x10070d).portr("SYSTEM");
+ map(0x10071c, 0x10071d).portr("DSW2");
+ map(0x100741, 0x100741).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x100800, 0x100fff).ram().w(this, FUNC(seicupbl_state::vram_sc0_w)).share("back_data");
+ map(0x101000, 0x1017ff).ram().w(this, FUNC(seicupbl_state::vram_sc2_w)).share("fore_data");
+ map(0x101800, 0x101fff).ram().w(this, FUNC(seicupbl_state::vram_sc1_w)).share("mid_data");
+ map(0x102000, 0x102fff).ram().w(this, FUNC(seicupbl_state::vram_sc3_w)).share("textram");
+ map(0x103000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x104000, 0x106fff).ram();
+ map(0x107000, 0x1077ff).ram().share("spriteram");
+ map(0x107800, 0x107fff).ram();
+ map(0x108000, 0x11ffff).ram();
+}
WRITE8_MEMBER(seicupbl_state::okim_rombank_w)
{
@@ -349,13 +350,14 @@ WRITE8_MEMBER(seicupbl_state::okim_rombank_w)
m_oki->set_rom_bank(data & 0x7);
}
-ADDRESS_MAP_START(seicupbl_state::cupsocbl_sound_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(okim_rombank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void seicupbl_state::cupsocbl_sound_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(seicupbl_state::okim_rombank_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( cupsoc )
diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp
index b50e7b1cfde..16971e83611 100644
--- a/src/mame/drivers/selz80.cpp
+++ b/src/mame/drivers/selz80.cpp
@@ -69,27 +69,30 @@ private:
required_device<clock_device> m_clock;
};
-ADDRESS_MAP_START(selz80_state::dagz80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(selz80_state::selz80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x27ff) AM_RAM // all 3 RAM sockets filled
+void selz80_state::dagz80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("ram");
+ map(0xe000, 0xffff).ram();
+}
+
+void selz80_state::selz80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x27ff).ram(); // all 3 RAM sockets filled
// AM_RANGE(0x3000, 0x37ff) AM_ROM // empty socket for ROM
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(selz80_state::selz80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("i8279", i8279_device, read, write)
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+ map(0xa000, 0xffff).rom();
+}
+
+void selz80_state::selz80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0x18, 0x18).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x19, 0x19).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( selz80 )
diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp
index 084c277021b..305a8b88fd3 100644
--- a/src/mame/drivers/sengokmj.cpp
+++ b/src/mame/drivers/sengokmj.cpp
@@ -390,32 +390,34 @@ READ16_MEMBER(sengokmj_state::system_r)
return (ioport("SYSTEM")->read() & 0xffbf) | m_hopper_io;
}
-ADDRESS_MAP_START(sengokmj_state::sengokmj_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM
- AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_SHARE("sc0_vram")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_SHARE("sc1_vram")
- AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_SHARE("sc2_vram")
- AM_RANGE(0x0d800, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_SHARE("sc3_vram")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sengokmj_state::sengokmj_io_map)
- AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
+void sengokmj_state::sengokmj_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x08000, 0x09fff).ram().share("nvram");
+ map(0x0c000, 0x0c7ff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc0vram_w)).share("sc0_vram");
+ map(0x0c800, 0x0cfff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc1vram_w)).share("sc1_vram");
+ map(0x0d000, 0x0d7ff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc2vram_w)).share("sc2_vram");
+ map(0x0d800, 0x0e7ff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc3vram_w)).share("sc3_vram");
+ map(0x0e800, 0x0f7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0f800, 0x0ffff).ram().share("sprite_ram");
+ map(0xc0000, 0xfffff).rom();
+}
+
+void sengokmj_state::sengokmj_io_map(address_map &map)
+{
+ map(0x4000, 0x400f).rw("seibu_sound", FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
/*Areas from 8000-804f are for the custom Seibu CRTC.*/
- AM_RANGE(0x8000, 0x804f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
+ map(0x8000, 0x804f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
// AM_RANGE(0x8080, 0x8081) CRTC extra register?
// AM_RANGE(0x80c0, 0x80c1) CRTC extra register?
// AM_RANGE(0x8100, 0x8101) AM_WRITENOP // always 0
- AM_RANGE(0x8180, 0x8181) AM_WRITE(out_w)
- AM_RANGE(0x8140, 0x8141) AM_WRITE(mahjong_panel_w)
- AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW")
- AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r)
- AM_RANGE(0xc004, 0xc005) AM_READ(system_r) //switches
-ADDRESS_MAP_END
+ map(0x8180, 0x8181).w(this, FUNC(sengokmj_state::out_w));
+ map(0x8140, 0x8141).w(this, FUNC(sengokmj_state::mahjong_panel_w));
+ map(0xc000, 0xc001).portr("DSW");
+ map(0xc002, 0xc003).r(this, FUNC(sengokmj_state::mahjong_panel_r));
+ map(0xc004, 0xc005).r(this, FUNC(sengokmj_state::system_r)); //switches
+}
static INPUT_PORTS_START( sengokmj )
diff --git a/src/mame/drivers/senjyo.cpp b/src/mame/drivers/senjyo.cpp
index b9793d60db1..a92e373c31c 100644
--- a/src/mame/drivers/senjyo.cpp
+++ b/src/mame/drivers/senjyo.cpp
@@ -123,57 +123,61 @@ WRITE8_MEMBER(senjyo_state::sound_cmd_w)
m_pio->strobe_a(1);
}
-ADDRESS_MAP_START(senjyo_state::senjyo_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
- AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9c00, 0x9dff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x9e00, 0x9e3f) AM_RAM
- AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_SHARE("fgscroll")
- AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
+void senjyo_state::senjyo_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(senjyo_state::fgvideoram_w)).share("fgvideoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(senjyo_state::fgcolorram_w)).share("fgcolorram");
+ map(0x9800, 0x987f).ram().share("spriteram");
+ map(0x9c00, 0x9dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x9e00, 0x9e3f).ram();
+ map(0x9e00, 0x9e1f).ram().share("fgscroll");
+ map(0x9e20, 0x9e21).ram().share("scrolly3");
/* AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */
- AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
- AM_RANGE(0x9e27, 0x9e27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */
- AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_SHARE("scrolly2")
+ map(0x9e25, 0x9e25).ram().share("scrollx3");
+ map(0x9e27, 0x9e27).ram().share("bgstripesram"); /* controls width of background stripes */
+ map(0x9e28, 0x9e29).ram().share("scrolly2");
/* AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */
- AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_SHARE("scrollx2")
- AM_RANGE(0x9e30, 0x9e31) AM_RAM AM_SHARE("scrolly1")
+ map(0x9e2d, 0x9e2d).ram().share("scrollx2");
+ map(0x9e30, 0x9e31).ram().share("scrolly1");
/* AM_RANGE(0x9e32, 0x9e33) height of the layer (Senjyo only, fixed at 0x100) */
- AM_RANGE(0x9e35, 0x9e35) AM_RAM AM_SHARE("scrollx1")
+ map(0x9e35, 0x9e35).ram().share("scrollx1");
/* AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */
/* AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM") AM_WRITE(irq_ctrl_w)
- AM_RANGE(0xd003, 0xd003) AM_READNOP // debug cheat port? (i.e. bit 0 in starforc: invincibility, bit 3-0 in senyjo: disables enemy fire)
- AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_WRITE(sound_cmd_w)
- AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(senjyo_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(senjyo_state::senjyo_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(senjyo_state::senjyo_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(senjyo_state::bg3videoram_w)).share("bg3videoram");
+ map(0xa800, 0xafff).ram().w(this, FUNC(senjyo_state::bg2videoram_w)).share("bg2videoram");
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(senjyo_state::bg1videoram_w)).share("bg1videoram");
+ map(0xb800, 0xbbff).ram().share("radarram");
+ map(0xd000, 0xd000).portr("P1").w(this, FUNC(senjyo_state::flip_screen_w));
+ map(0xd001, 0xd001).portr("P2");
+ map(0xd002, 0xd002).portr("SYSTEM").w(this, FUNC(senjyo_state::irq_ctrl_w));
+ map(0xd003, 0xd003).nopr(); // debug cheat port? (i.e. bit 0 in starforc: invincibility, bit 3-0 in senyjo: disables enemy fire)
+ map(0xd004, 0xd004).portr("DSW1").w(this, FUNC(senjyo_state::sound_cmd_w));
+ map(0xd005, 0xd005).portr("DSW2");
+}
+
+void senjyo_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+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(0xd000, 0xd000).w(this, FUNC(senjyo_state::volume_w));
+}
+
+void senjyo_state::senjyo_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x08, 0x0b).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/* For the bootleg */
@@ -190,47 +194,49 @@ WRITE8_MEMBER(senjyo_state::starforb_scrollx2)
m_scrollx1[offset] = data;
}
-ADDRESS_MAP_START(senjyo_state::starforb_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
- AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9c00, 0x9dff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+void senjyo_state::starforb_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(senjyo_state::fgvideoram_w)).share("fgvideoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(senjyo_state::fgcolorram_w)).share("fgcolorram");
+ map(0x9800, 0x987f).ram().share("spriteram");
+ map(0x9c00, 0x9dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
/* The format / use of the ram here is different on the bootleg */
- AM_RANGE(0x9e00, 0x9e3f) AM_RAM
- AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
- AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
- AM_RANGE(0x9e30, 0x9e31) AM_RAM_WRITE(starforb_scrolly2) AM_SHARE("scrolly2") // ok
- AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_SHARE("scrollx2") // ok
-
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM") AM_WRITE(irq_ctrl_w)
- AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_WRITE(sound_cmd_w)
- AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2")
+ map(0x9e00, 0x9e3f).ram();
+ map(0x9e20, 0x9e21).ram().share("scrolly3");
+ map(0x9e25, 0x9e25).ram().share("scrollx3");
+ map(0x9e30, 0x9e31).ram().w(this, FUNC(senjyo_state::starforb_scrolly2)).share("scrolly2"); // ok
+ map(0x9e35, 0x9e35).ram().w(this, FUNC(senjyo_state::starforb_scrollx2)).share("scrollx2"); // ok
+
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(senjyo_state::bg3videoram_w)).share("bg3videoram");
+ map(0xa800, 0xafff).ram().w(this, FUNC(senjyo_state::bg2videoram_w)).share("bg2videoram");
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(senjyo_state::bg1videoram_w)).share("bg1videoram");
+ map(0xb800, 0xbbff).ram().share("radarram");
+ map(0xd000, 0xd000).portr("P1").w(this, FUNC(senjyo_state::flip_screen_w));
+ map(0xd001, 0xd001).portr("P2");
+ map(0xd002, 0xd002).portr("SYSTEM").w(this, FUNC(senjyo_state::irq_ctrl_w));
+ map(0xd004, 0xd004).portr("DSW1").w(this, FUNC(senjyo_state::sound_cmd_w));
+ map(0xd005, 0xd005).portr("DSW2");
/* these aren't used / written, left here to make sure memory is allocated */
- AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_SHARE("fgscroll")
- AM_RANGE(0xfe27, 0xfe27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */
- AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_SHARE("scrolly1")
- AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_SHARE("scrollx1")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(senjyo_state::starforb_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xfe00, 0xfe1f).ram().share("fgscroll");
+ map(0xfe27, 0xfe27).ram().share("bgstripesram"); /* controls width of background stripes */
+ map(0xfe28, 0xfe29).ram().share("scrolly1");
+ map(0xfe2d, 0xfe2d).ram().share("scrollx1");
+}
+
+
+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(0xd000, 0xd000).w(this, FUNC(senjyo_state::volume_w));
+ map(0xf000, 0xffff).ram();
+}
static INPUT_PORTS_START( senjyo )
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index ee64888df9b..6a67682a3c6 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -1698,22 +1698,23 @@ WRITE16_MEMBER(seta_state::ipl2_ack_w)
writing to sharedram! */
-ADDRESS_MAP_START(seta_state::tndrcade_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x200001) AM_WRITE(ipl1_ack_w)
- AM_RANGE(0x280000, 0x280001) AM_WRITENOP // ? 0 / 1 (sub cpu related?)
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 / 1
- AM_RANGE(0x380000, 0x3803ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? $4000
- AM_RANGE(0x600000, 0x6005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0x600600, 0x600607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-
- AM_RANGE(0x800000, 0x800007) AM_WRITE(sub_ctrl_w) // Sub CPU Control?
- AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w) // Shared RAM
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE("share1") // RAM (Mirrored?)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("share1") // RAM (Mirrored?)
-ADDRESS_MAP_END
+void seta_state::tndrcade_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x200000, 0x200001).w(this, FUNC(seta_state::ipl1_ack_w));
+ map(0x280000, 0x280001).nopw(); // ? 0 / 1 (sub cpu related?)
+ map(0x300000, 0x300001).nopw(); // ? 0 / 1
+ map(0x380000, 0x3803ff).ram().share("paletteram1"); // Palette
+ map(0x400000, 0x400001).nopw(); // ? $4000
+ map(0x600000, 0x6005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0x600600, 0x600607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+
+ map(0x800000, 0x800007).w(this, FUNC(seta_state::sub_ctrl_w)); // Sub CPU Control?
+ map(0xa00000, 0xa00fff).rw(this, FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)); // Shared RAM
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xe00000, 0xe03fff).ram().share("share1"); // RAM (Mirrored?)
+ map(0xffc000, 0xffffff).ram().share("share1"); // RAM (Mirrored?)
+}
/***************************************************************************
@@ -1721,59 +1722,61 @@ ADDRESS_MAP_END
(with slight variations, and Meta Fox protection hooked in)
***************************************************************************/
-ADDRESS_MAP_START(seta_state::downtown_map)
- AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0x200000, 0x200001) AM_NOP // watchdog? (twineagl)
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // IRQ enable/acknowledge?
- AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w) // special tile banking to animate water in twineagl
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ?
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM Ctrl
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM
- AM_RANGE(0xa00000, 0xa00007) AM_WRITE(sub_ctrl_w) // Sub CPU Control?
- AM_RANGE(0xb00000, 0xb00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w) // Shared RAM
- AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // ? $4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xf00000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void seta_state::downtown_map(address_map &map)
+{
+ map(0x000000, 0x09ffff).rom(); // ROM
+ map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0x200000, 0x200001).noprw(); // watchdog? (twineagl)
+ map(0x300000, 0x300001).nopw(); // IRQ enable/acknowledge?
+ map(0x400000, 0x400007).w(this, FUNC(seta_state::twineagl_tilebank_w)); // special tile banking to animate water in twineagl
+ map(0x500000, 0x500001).nopw(); // ?
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl
+ map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
+ map(0xa00000, 0xa00007).w(this, FUNC(seta_state::sub_ctrl_w)); // Sub CPU Control?
+ map(0xb00000, 0xb00fff).rw(this, FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)); // Shared RAM
+ map(0xc00000, 0xc00001).nopw(); // ? $4000
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xf00000, 0xffffff).ram(); // RAM
+}
/***************************************************************************
Caliber 50
***************************************************************************/
-ADDRESS_MAP_START(seta_state::calibr50_map)
- AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x100001) AM_READ(ipl2_ack_r)
- AM_RANGE(0x200000, 0x200fff) AM_RAM // NVRAM
- AM_RANGE(0x300000, 0x300001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w)
- AM_RANGE(0x400000, 0x400001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ?
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM Ctrl
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM
-
- AM_RANGE(0x904000, 0x904fff) AM_RAM //
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("P1") // X1-004
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("P2") // X1-004
- AM_RANGE(0xa00008, 0xa00009) AM_READ_PORT("COINS") // X1-004
- AM_RANGE(0xa00010, 0xa00017) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xa00018, 0xa00019) AM_DEVREAD8("upd4701", upd4701_device, reset_xy, 0x00ff)
-
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // From Sub CPU
- AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) // To Sub CPU
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000
-
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void seta_state::calibr50_map(address_map &map)
+{
+ map(0x000000, 0x09ffff).rom(); // ROM
+ map(0x100000, 0x100001).r(this, FUNC(seta_state::ipl2_ack_r));
+ map(0x200000, 0x200fff).ram(); // NVRAM
+ map(0x300000, 0x300001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
+ map(0x400000, 0x400001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x500000, 0x500001).nopw(); // ?
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl
+ map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
+
+ map(0x904000, 0x904fff).ram(); //
+ map(0xa00000, 0xa00001).portr("P1"); // X1-004
+ map(0xa00002, 0xa00003).portr("P2"); // X1-004
+ map(0xa00008, 0xa00009).portr("COINS"); // X1-004
+ map(0xa00010, 0xa00017).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xa00019, 0xa00019).r(m_upd4701, FUNC(upd4701_device::reset_xy));
+
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xb00001, 0xb00001).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From Sub CPU
+ map(0xb00001, 0xb00001).w("soundlatch1", FUNC(generic_latch_8_device::write)); // To Sub CPU
+ map(0xc00000, 0xc00001).ram(); // ? $4000
+
+ map(0xff0000, 0xffffff).ram(); // RAM
+}
/***************************************************************************
@@ -1821,84 +1824,87 @@ WRITE8_MEMBER(seta_state::usclssic_lockout_w)
}
-ADDRESS_MAP_START(seta_state::usclssic_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
- AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0x900000, 0x900001) AM_RAM // ? $4000
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xb40000, 0xb40007) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff)
- AM_RANGE(0xb40000, 0xb40001) AM_WRITE8(usclssic_lockout_w, 0x00ff) // Coin Lockout + Tiles Banking
- AM_RANGE(0xb4000a, 0xb4000b) AM_WRITE(ipl1_ack_w)
- AM_RANGE(0xb40010, 0xb40011) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0xb40010, 0xb40011) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) // To Sub CPU
- AM_RANGE(0xb40018, 0xb4001f) AM_READ(usclssic_dsw_r) // 2 DSWs
- AM_RANGE(0xb40018, 0xb40019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xb80000, 0xb80001) AM_READ(ipl2_ack_r)
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM
- AM_RANGE(0xd04000, 0xd04fff) AM_RAM //
- AM_RANGE(0xe00000, 0xe00fff) AM_RAM // NVRAM? (odd bytes)
-ADDRESS_MAP_END
+void seta_state::usclssic_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0xff0000, 0xffffff).ram(); // RAM
+ map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0x900000, 0x900001).ram(); // ? $4000
+ map(0xa00000, 0xa00005).ram().share("vctrl_0"); // VRAM Ctrl
+ map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xb40000, 0xb40007).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff);
+ map(0xb40001, 0xb40001).w(this, FUNC(seta_state::usclssic_lockout_w)); // Coin Lockout + Tiles Banking
+ map(0xb4000a, 0xb4000b).w(this, FUNC(seta_state::ipl1_ack_w));
+ map(0xb40010, 0xb40011).portr("COINS"); // Coins
+ map(0xb40011, 0xb40011).w("soundlatch1", FUNC(generic_latch_8_device::write)); // To Sub CPU
+ map(0xb40018, 0xb4001f).r(this, FUNC(seta_state::usclssic_dsw_r)); // 2 DSWs
+ map(0xb40018, 0xb40019).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xb80000, 0xb80001).r(this, FUNC(seta_state::ipl2_ack_r));
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
+ map(0xd04000, 0xd04fff).ram(); //
+ map(0xe00000, 0xe00fff).ram(); // NVRAM? (odd bytes)
+}
/***************************************************************************
Athena no Hatena?
***************************************************************************/
-ADDRESS_MAP_START(seta_state::atehate_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x900000, 0x9fffff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? watchdog ?
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 (irq ack lev 2?)
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? (end of lev 1: bit 4 goes 1,0,1)
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
-ADDRESS_MAP_END
+void seta_state::atehate_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x900000, 0x9fffff).ram(); // RAM
+ map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0x200000, 0x200001).nopw(); // ? watchdog ?
+ map(0x300000, 0x300001).nopw(); // ? 0 (irq ack lev 2?)
+ map(0x500000, 0x500001).nopw(); // ? (end of lev 1: bit 4 goes 1,0,1)
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ 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(0xb00000, 0xb00001).portr("P1"); // P1
+ map(0xb00002, 0xb00003).portr("P2"); // P2
+ map(0xb00004, 0xb00005).portr("COINS"); // Coins
+ map(0xc00000, 0xc00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+}
/***************************************************************************
Blandia
***************************************************************************/
-ADDRESS_MAP_START(seta_state::blandia_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero and blandia only?)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x703c00, 0x7047ff) AM_RAM AM_SHARE("paletteram2") // 2nd Palette for the palette offset effect
- AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0x880000, 0x880001) AM_RAM // ? 0xc000
- AM_RANGE(0x900000, 0x903fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0xb04000, 0xb0ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0xb84000, 0xb8ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ?
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack
-ADDRESS_MAP_END
+void seta_state::blandia_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
+ map(0x200000, 0x20ffff).ram(); // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
+ map(0x210000, 0x21ffff).ram(); // RAM (gundhara)
+ map(0x300000, 0x30ffff).ram(); // RAM (wrofaero and blandia only?)
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk)
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the palette offset effect
+ map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0x880000, 0x880001).ram(); // ? 0xc000
+ map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xa00000, 0xa00005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
+ map(0xa80000, 0xa80005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
+ map(0xb00000, 0xb03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0xb04000, 0xb0ffff).ram(); // (jjsquawk)
+ map(0xb80000, 0xb83fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0xb84000, 0xb8ffff).ram(); // (jjsquawk)
+ map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xd00000, 0xd00007).nopw(); // ?
+ map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack
+ map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack
+}
/***************************************************************************
@@ -1906,34 +1912,35 @@ ADDRESS_MAP_END
(with slight variations)
***************************************************************************/
-ADDRESS_MAP_START(seta_state::blandiap_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x703c00, 0x7047ff) AM_RAM AM_SHARE("paletteram2") // 2nd Palette for the palette offset effect
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ?
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack
-ADDRESS_MAP_END
+void seta_state::blandiap_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
+ map(0x200000, 0x20ffff).ram(); // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
+ map(0x210000, 0x21ffff).ram(); // RAM (gundhara)
+ map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?)
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk)
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the palette offset effect
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x80ffff).ram(); // (jjsquawk)
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x88ffff).ram(); // (jjsquawk)
+ 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).nopw(); // ?
+ map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack
+ map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack
+}
/***************************************************************************
@@ -1974,149 +1981,154 @@ READ16_MEMBER(seta_state::extra_r)
return m_extra_port.read_safe(0xff);
}
-ADDRESS_MAP_START(seta_state::wrofaero_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
-
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers
- AM_RANGE(0x500006, 0x500007) AM_READ(extra_r) // Buttons 4,5,6 (Daioh only)
-
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+void seta_state::wrofaero_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x210000, 0x21ffff).ram(); // RAM (gundhara)
+ map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?)
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers
+ map(0x500006, 0x500007).r(this, FUNC(seta_state::extra_r)); // Buttons 4,5,6 (Daioh only)
+
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk)
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x701000, 0x70ffff).ram(); //
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x80ffff).ram(); // (jjsquawk)
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x88ffff).ram(); // (jjsquawk)
+ 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
#if __uPD71054_TIMER
- AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ?
+ map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ?
#else
- AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ?
+ map(0xd00000, 0xd00007).nopw(); // ?
#endif
- AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack
-ADDRESS_MAP_END
+ map(0xe00000, 0xe00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack
+}
-ADDRESS_MAP_START(seta_state::zombraid_map)
- AM_IMPORT_FROM( wrofaero_map )
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram") // actually 8K x8 SRAM
- AM_RANGE(0xf00000, 0xf00001) AM_WRITE(zombraid_gun_w)
- AM_RANGE(0xf00002, 0xf00003) AM_READ(zombraid_gun_r)
-ADDRESS_MAP_END
+void seta_state::zombraid_map(address_map &map)
+{
+ wrofaero_map(map);
+ map(0x300000, 0x30ffff).ram().share("nvram"); // actually 8K x8 SRAM
+ map(0xf00000, 0xf00001).w(this, FUNC(seta_state::zombraid_gun_w));
+ map(0xf00002, 0xf00003).r(this, FUNC(seta_state::zombraid_gun_r));
+}
READ16_MEMBER(seta_state::zingzipbl_unknown_r)
{
return 0x0000;
}
-ADDRESS_MAP_START(seta_state::zingzipbl_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("workram") // RAM (pointer for zombraid crosshair hack)
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?)
+void seta_state::zingzipbl_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
+ map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack)
+ map(0x210000, 0x21ffff).ram(); // RAM (gundhara)
+ map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?)
// AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
// AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400002, 0x400003) AM_READ(zingzipbl_unknown_r) // P2
+ map(0x400002, 0x400003).r(this, FUNC(seta_state::zingzipbl_unknown_r)); // P2
// AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers
//AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
-
- AM_RANGE(0x902010, 0x902013) AM_READ(zingzipbl_unknown_r )
-
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM // soundram on original
+ map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk)
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x701000, 0x70ffff).ram(); //
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x80ffff).ram(); // (jjsquawk)
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x88ffff).ram(); // (jjsquawk)
+ map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
+
+ map(0x902010, 0x902013).r(this, FUNC(seta_state::zingzipbl_unknown_r));
+
+ 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).ram(); // soundram on original
#if __uPD71054_TIMER
- AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ?
+ map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ?
#else
- AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ?
+ map(0xd00000, 0xd00007).nopw(); // ?
#endif
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seta_state::jjsquawb_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("workram") // RAM (pointer for zombraid crosshair hack)
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers
-
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x70b3ff) AM_RAM // RZ: (rezon,jjsquawk)
- AM_RANGE(0x70b400, 0x70bfff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x70c000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0
- AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2
- AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk)
- AM_RANGE(0x908000, 0x908005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x909000, 0x909005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa0a000, 0xa0a5ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // RZ: Sprites Y
- AM_RANGE(0xa0a600, 0xa0a607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
+ map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack
+ map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack
+}
+
+void seta_state::jjsquawb_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
+ map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack)
+ map(0x210000, 0x21ffff).ram(); // RAM (gundhara)
+ map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?)
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers
+
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x70b3ff).ram(); // RZ: (rezon,jjsquawk)
+ map(0x70b400, 0x70bfff).ram().share("paletteram1"); // Palette
+ map(0x70c000, 0x70ffff).ram(); //
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0
+ map(0x804000, 0x807fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2
+ map(0x884000, 0x88ffff).ram(); // (jjsquawk)
+ map(0x908000, 0x908005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
+ map(0x909000, 0x909005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
+ map(0xa0a000, 0xa0a5ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // RZ: Sprites Y
+ map(0xa0a600, 0xa0a607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
// AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // RZ: Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+ map(0xb0c000, 0xb0ffff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // RZ: Sprites Code + X + Attr
+ map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
#if __uPD71054_TIMER
- AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ?
+ map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ?
#else
- AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ?
+ map(0xd00000, 0xd00007).nopw(); // ?
#endif
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack
-ADDRESS_MAP_END
+ map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack
+ map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack
+}
/***************************************************************************
Orbs
***************************************************************************/
-ADDRESS_MAP_START(seta_state::orbs_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x100001) AM_READNOP // ?
- AM_RANGE(0x200000, 0x200001) AM_READNOP // ?
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ?
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
+void seta_state::orbs_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0xf00000, 0xf0ffff).ram(); // RAM
+ map(0x100000, 0x100001).nopr(); // ?
+ map(0x200000, 0x200001).nopr(); // ?
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).nopw(); // ?
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
//AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r ) // P1
- AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM
- AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-ADDRESS_MAP_END
+ map(0x8000f0, 0x8000f1).ram(); // NVRAM
+ map(0x800100, 0x8001ff).ram(); // NVRAM
+ map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+}
/***************************************************************************
Kero Kero Keroppi no Issyoni Asobou
@@ -2177,27 +2189,28 @@ WRITE16_MEMBER(seta_state::keroppi_prize_w)
}
}
-ADDRESS_MAP_START(seta_state::keroppi_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x100001) AM_READ(keroppi_protection_r) //
- AM_RANGE(0x200000, 0x200001) AM_READ(keroppi_protection_init_r) //
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ?
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ(keroppi_coin_r) // Coins
- AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM
- AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM
- AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ?
- AM_RANGE(0x900002, 0x900003) AM_WRITE(keroppi_prize_w) //
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-ADDRESS_MAP_END
+void seta_state::keroppi_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0xf00000, 0xf0ffff).ram(); // RAM
+ map(0x100000, 0x100001).r(this, FUNC(seta_state::keroppi_protection_r)); //
+ map(0x200000, 0x200001).r(this, FUNC(seta_state::keroppi_protection_init_r)); //
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).nopw(); // ?
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).r(this, FUNC(seta_state::keroppi_coin_r)); // Coins
+ map(0x8000f0, 0x8000f1).ram(); // NVRAM
+ map(0x800100, 0x8001ff).ram(); // NVRAM
+ map(0x900000, 0x900001).nopw(); // ?
+ map(0x900002, 0x900003).w(this, FUNC(seta_state::keroppi_prize_w)); //
+ map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+}
MACHINE_START_MEMBER(seta_state,keroppi)
{
@@ -2210,143 +2223,148 @@ MACHINE_START_MEMBER(seta_state,keroppi)
***************************************************************************/
/* similar to krzybowl */
-ADDRESS_MAP_START(seta_state::blockcar_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM // RAM
- AM_RANGE(0xf04000, 0xf041ff) AM_RAM // Backup RAM?
- AM_RANGE(0xf05000, 0xf050ff) AM_RAM // Backup RAM?
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?)
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?)
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seta_state::blockcarb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM // RAM
- AM_RANGE(0xf04000, 0xf041ff) AM_RAM // Backup RAM?
- AM_RANGE(0xf05000, 0xf050ff) AM_RAM // Backup RAM?
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?)
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?)
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500008, 0x500009) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff)
- //AM_RANGE(0x50000c, 0x50000d) // ??
- AM_RANGE(0xa00000, 0xa03fff) AM_NOP // Sound - not on this bootleg
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-ADDRESS_MAP_END
+void seta_state::blockcar_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0xf00000, 0xf03fff).ram(); // RAM
+ map(0xf04000, 0xf041ff).ram(); // Backup RAM?
+ map(0xf05000, 0xf050ff).ram(); // Backup RAM?
+ map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?)
+ map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?)
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?)
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
+ map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+}
+
+void seta_state::blockcarb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0xf00000, 0xf03fff).ram(); // RAM
+ map(0xf04000, 0xf041ff).ram(); // Backup RAM?
+ map(0xf05000, 0xf050ff).ram(); // Backup RAM?
+ map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?)
+ map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?)
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?)
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
+ map(0x500009, 0x500009).w("oki", FUNC(okim6295_device::write));
+ //map(0x50000c, 0x50000d); // ??
+ map(0xa00000, 0xa03fff).noprw(); // Sound - not on this bootleg
+ map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+}
/***************************************************************************
Daioh
***************************************************************************/
-ADDRESS_MAP_START(seta_state::daioh_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA") // Buttons 4,5,6
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r ) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x80ffff) AM_RAM //
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x88ffff) AM_RAM //
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xb04000, 0xb13fff) AM_RAM
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP //
-ADDRESS_MAP_END
+void seta_state::daioh_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x10ffff).ram(); // RAM
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x500006, 0x500007).portr("EXTRA"); // Buttons 4,5,6
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram();
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x701000, 0x70ffff).ram(); //
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x80ffff).ram(); //
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x88ffff).ram(); //
+ 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(0xb04000, 0xb13fff).ram();
+ map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xe00000, 0xe00001).nopw(); //
+}
/***************************************************************************
Daioh (location test version)
***************************************************************************/
-ADDRESS_MAP_START(seta_state::daiohp_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_MIRROR(0x080000) // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_MIRROR(0x080000) // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA") // Buttons 4,5,6
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r ) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x80ffff) AM_RAM //
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x88ffff) AM_RAM //
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xb04000, 0xb13fff) AM_RAM
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ?
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack
-ADDRESS_MAP_END
+void seta_state::daiohp_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().mirror(0x080000); // ROM
+ map(0x100000, 0x17ffff).rom().mirror(0x080000); // 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(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x500006, 0x500007).portr("EXTRA"); // Buttons 4,5,6
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram();
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x701000, 0x70ffff).ram(); //
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x80ffff).ram(); //
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x88ffff).ram(); //
+ 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(0xb04000, 0xb13fff).ram();
+ map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xd00000, 0xd00007).nopw(); // ?
+ map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack
+ map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack
+}
/***************************************************************************
Dragon Unit, Quiz Kokology, Quiz Kokology 2, Strike Gunner
***************************************************************************/
-ADDRESS_MAP_START(seta_state::drgnunit_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM // ROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM (qzkklogy)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM (drgnunit,stg)
- AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // Watchdog
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? IRQ Ack
- AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x800000, 0x800005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM
- AM_RANGE(0x904000, 0x90ffff) AM_WRITENOP // unused (qzkklogy)
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0xb00006, 0xb00007) AM_READNOP // unused (qzkklogy)
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
-ADDRESS_MAP_END
+void seta_state::drgnunit_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom(); // ROM
+ map(0xf00000, 0xf0ffff).ram(); // RAM (qzkklogy)
+ map(0xffc000, 0xffffff).ram(); // RAM (drgnunit,stg)
+ map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0x200000, 0x200001).nopw(); // Watchdog
+ map(0x300000, 0x300001).nopw(); // ? IRQ Ack
+ map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ map(0x800000, 0x800005).ram().share("vctrl_0"); // VRAM Ctrl
+ map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM
+ map(0x904000, 0x90ffff).nopw(); // unused (qzkklogy)
+ map(0xb00000, 0xb00001).portr("P1"); // P1
+ map(0xb00002, 0xb00003).portr("P2"); // P2
+ map(0xb00004, 0xb00005).portr("COINS"); // Coins
+ map(0xb00006, 0xb00007).nopr(); // unused (qzkklogy)
+ map(0xc00000, 0xc00001).ram(); // ? $4000
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+}
/***************************************************************************
The Roulette
@@ -2479,136 +2497,142 @@ WRITE8_MEMBER(setaroul_state::led_w)
show_outputs();
}
-ADDRESS_MAP_START(setaroul_state::setaroul_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
+void setaroul_state::setaroul_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
- AM_RANGE(0x800000, 0x800003) AM_NOP // RS232C Auto Time Set: r/w
+ map(0x800000, 0x800003).noprw(); // RS232C Auto Time Set: r/w
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("nvram")
+ map(0xc00000, 0xc03fff).ram().share("nvram");
- AM_RANGE(0xc40000, 0xc40001) AM_NOP // lev. 2/5 irq ack
- AM_RANGE(0xc80000, 0xc80001) AM_NOP // lev. 4 irq ack
+ map(0xc40000, 0xc40001).noprw(); // lev. 2/5 irq ack
+ map(0xc80000, 0xc80001).noprw(); // lev. 4 irq ack
- AM_RANGE(0xcc0000, 0xcc001f) AM_READWRITE(rtc_r, rtc_w)
+ map(0xcc0000, 0xcc001f).rw(this, FUNC(setaroul_state::rtc_r), FUNC(setaroul_state::rtc_w));
- AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+ map(0xd00000, 0xd00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
- AM_RANGE(0xd40000, 0xd40001) AM_READ_PORT("DSW1-A") AM_WRITE8(pay_w, 0x00ff)
- AM_RANGE(0xd40002, 0xd40003) AM_READ_PORT("DSW1-B")
+ map(0xd40000, 0xd40001).portr("DSW1-A");
+ map(0xd40001, 0xd40001).w(this, FUNC(setaroul_state::pay_w));
+ map(0xd40002, 0xd40003).portr("DSW1-B");
- AM_RANGE(0xd40004, 0xd40005) AM_READ_PORT("DSW2-A")
- AM_RANGE(0xd40006, 0xd40007) AM_READ_PORT("DSW2-B")
+ map(0xd40004, 0xd40005).portr("DSW2-A");
+ map(0xd40006, 0xd40007).portr("DSW2-B");
- AM_RANGE(0xd40008, 0xd40009) AM_READ_PORT("COIN") AM_WRITE8(led_w, 0x00ff)
- AM_RANGE(0xd4000a, 0xd4000b) AM_READ_PORT("DOOR")
+ map(0xd40008, 0xd40009).portr("COIN");
+ map(0xd40009, 0xd40009).w(this, FUNC(setaroul_state::led_w));
+ map(0xd4000a, 0xd4000b).portr("DOOR");
- AM_RANGE(0xd40010, 0xd40011) AM_READWRITE(inputs_r, mux_w)
+ map(0xd40010, 0xd40011).rw(this, FUNC(setaroul_state::inputs_r), FUNC(setaroul_state::mux_w));
- AM_RANGE(0xd40018, 0xd40019) AM_READ_PORT("DSW3")
+ map(0xd40018, 0xd40019).portr("DSW3");
- AM_RANGE(0xdc0000, 0xdc3fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+ map(0xdc0000, 0xdc3fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0")
- AM_RANGE(0xe40000, 0xe40005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl
- AM_RANGE(0xf00000, 0xf03fff) AM_READWRITE(spritecode_r, spritecode_w)
- AM_RANGE(0xf40000, 0xf40bff) AM_WRITE(spriteylow_w)
- AM_RANGE(0xf40c00, 0xf40c11) AM_WRITE(spritectrl_w)
+ map(0xe00000, 0xe03fff).ram().w(this, FUNC(setaroul_state::vram_w<0>)).share("vram_0");
+ map(0xe40000, 0xe40005).ram().share("vctrl_0"); // VRAM Ctrl
+ map(0xf00000, 0xf03fff).rw(this, FUNC(setaroul_state::spritecode_r), FUNC(setaroul_state::spritecode_w));
+ map(0xf40000, 0xf40bff).w(this, FUNC(setaroul_state::spriteylow_w));
+ map(0xf40c00, 0xf40c11).w(this, FUNC(setaroul_state::spritectrl_w));
// AM_RANGE(0xf80000, 0xf80001) AM_WRITE // $40 at boot
-ADDRESS_MAP_END
+}
/***************************************************************************
Extreme Downhill / Sokonuke
***************************************************************************/
-ADDRESS_MAP_START(seta_state::extdwnhl_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM
- AM_RANGE(0x220000, 0x23ffff) AM_RAM // RAM (sokonuke)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x400008, 0x40000b) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x40000c, 0x40000d) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF)
- AM_RANGE(0x500000, 0x500003) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x500004, 0x500007) AM_NOP // IRQ Ack (extdwnhl (R) & sokonuke (W))
- AM_RANGE(0x600400, 0x600fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x601000, 0x610bff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x80ffff) AM_RAM //
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x88ffff) AM_RAM //
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xb04000, 0xb13fff) AM_RAM //
- AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
-ADDRESS_MAP_END
+void seta_state::extdwnhl_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x210000, 0x21ffff).ram(); // RAM
+ map(0x220000, 0x23ffff).ram(); // RAM (sokonuke)
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x400008, 0x40000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x40000c, 0x40000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF)
+ map(0x500000, 0x500003).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x500004, 0x500007).noprw(); // IRQ Ack (extdwnhl (R) & sokonuke (W))
+ map(0x600400, 0x600fff).ram().share("paletteram1"); // Palette
+ map(0x601000, 0x610bff).ram(); //
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x80ffff).ram(); //
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x88ffff).ram(); //
+ 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(0xb04000, 0xb13fff).ram(); //
+ map(0xe00000, 0xe03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+}
/***************************************************************************
(Kamen) Masked Riders Club Battle Race / Mad Shark
***************************************************************************/
-ADDRESS_MAP_START(seta_state::kamenrid_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500007) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x500008, 0x500009) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x50000c, 0x50000d) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // xx Watchdog? (sokonuke)
- AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers
- AM_RANGE(0x600004, 0x600005) AM_WRITE(ipl1_ack_w)
- AM_RANGE(0x600006, 0x600007) AM_WRITE(ipl2_ack_w)
- AM_RANGE(0x700000, 0x7003ff) AM_RAM // Palette RAM (tested)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x807fff) AM_RAM // tested
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x887fff) AM_RAM // tested
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xb04000, 0xb07fff) AM_RAM // tested
- AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
-ADDRESS_MAP_END
+void seta_state::kamenrid_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500007).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x500008, 0x500009).portr("COINS"); // Coins
+ map(0x50000c, 0x50000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // xx Watchdog? (sokonuke)
+ map(0x600000, 0x600005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers
+ map(0x600004, 0x600005).w(this, FUNC(seta_state::ipl1_ack_w));
+ map(0x600006, 0x600007).w(this, FUNC(seta_state::ipl2_ack_w));
+ map(0x700000, 0x7003ff).ram(); // Palette RAM (tested)
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x701000, 0x703fff).ram(); // Palette
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x807fff).ram(); // tested
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x887fff).ram(); // tested
+ 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(); // ? $4000
+ map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xb04000, 0xb07fff).ram(); // tested
+ map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
+ map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+}
/* almost identical to kamenrid */
-ADDRESS_MAP_START(seta_state::madshark_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x50000c, 0x50000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers
- AM_RANGE(0x600004, 0x600005) AM_WRITE(ipl1_ack_w)
- AM_RANGE(0x600006, 0x600007) AM_WRITE(ipl2_ack_w)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
-
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
-ADDRESS_MAP_END
+void seta_state::madshark_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
+ map(0x500008, 0x50000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x600000, 0x600005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers
+ map(0x600004, 0x600005).w(this, FUNC(seta_state::ipl1_ack_w));
+ map(0x600006, 0x600007).w(this, FUNC(seta_state::ipl2_ack_w));
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x880000, 0x883fff).ram().w(this, 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(); // ? $4000
+ map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
+ map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+}
WRITE16_MEMBER(seta_state::magspeed_lights_w)
@@ -2622,63 +2646,65 @@ WRITE16_MEMBER(seta_state::magspeed_lights_w)
}
/* almost identical to kamenrid */
-ADDRESS_MAP_START(seta_state::magspeed_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x50000c, 0x50000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x500010, 0x500015) AM_RAM_WRITE(msgundam_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers
- AM_RANGE(0x500018, 0x500019) AM_WRITE(ipl1_ack_w) // lev 2 irq ack?
- AM_RANGE(0x50001c, 0x50001d) AM_WRITE(ipl2_ack_w) // lev 4 irq ack?
- AM_RANGE(0x600000, 0x600005) AM_WRITE(magspeed_lights_w) // Lights
- AM_RANGE(0x600006, 0x600007) AM_WRITENOP // ?
- AM_RANGE(0x700000, 0x7003ff) AM_RAM // Palette RAM (tested)
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette RAM (tested)
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x804000, 0x807fff) AM_RAM // tested
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x884000, 0x887fff) AM_RAM // tested
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xb04000, 0xb07fff) AM_RAM // tested
- AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
- AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
-ADDRESS_MAP_END
+void seta_state::magspeed_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
+ map(0x500008, 0x50000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x500010, 0x500015).ram().w(this, FUNC(seta_state::msgundam_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers
+ map(0x500018, 0x500019).w(this, FUNC(seta_state::ipl1_ack_w)); // lev 2 irq ack?
+ map(0x50001c, 0x50001d).w(this, FUNC(seta_state::ipl2_ack_w)); // lev 4 irq ack?
+ map(0x600000, 0x600005).w(this, FUNC(seta_state::magspeed_lights_w)); // Lights
+ map(0x600006, 0x600007).nopw(); // ?
+ map(0x700000, 0x7003ff).ram(); // Palette RAM (tested)
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x701000, 0x703fff).ram(); // Palette RAM (tested)
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x804000, 0x807fff).ram(); // tested
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x884000, 0x887fff).ram(); // tested
+ 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(); // ? $4000
+ map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xb04000, 0xb07fff).ram(); // tested
+ map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
+ map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+}
/***************************************************************************
Krazy Bowl
***************************************************************************/
-ADDRESS_MAP_START(seta_state::krzybowl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x100001) AM_READNOP // ?
- AM_RANGE(0x200000, 0x200001) AM_READNOP // ?
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ?
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x600000, 0x600007) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff) // P1 trackball
- AM_RANGE(0x600008, 0x60000f) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff) // P2 trackball
- AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM
- AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-ADDRESS_MAP_END
+void seta_state::krzybowl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0xf00000, 0xf0ffff).ram(); // RAM
+ map(0x100000, 0x100001).nopr(); // ?
+ map(0x200000, 0x200001).nopr(); // ?
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).nopw(); // ?
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
+ map(0x600000, 0x600007).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P1 trackball
+ map(0x600008, 0x60000f).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P2 trackball
+ map(0x8000f0, 0x8000f1).ram(); // NVRAM
+ map(0x800100, 0x8001ff).ram(); // NVRAM
+ map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+}
/***************************************************************************
@@ -2698,29 +2724,30 @@ WRITE16_MEMBER(seta_state::msgundam_vregs_w)
/* Mirror RAM is necessary or startup, to clear Work RAM after the test */
-ADDRESS_MAP_START(seta_state::msgundam_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_MIRROR(0x70000) // RAM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x400000, 0x400001) AM_WRITE(ipl1_ack_w) // Lev 2 IRQ Ack
- AM_RANGE(0x400004, 0x400005) AM_WRITE(ipl2_ack_w) // Lev 4 IRQ Ack
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(msgundam_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0x880000, 0x880001) AM_RAM // ? 0x4000
- AM_RANGE(0x900000, 0x903fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void seta_state::msgundam_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram().mirror(0x70000); // RAM
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x400000, 0x400001).w(this, FUNC(seta_state::ipl1_ack_w)); // Lev 2 IRQ Ack
+ map(0x400004, 0x400005).w(this, FUNC(seta_state::ipl2_ack_w)); // Lev 4 IRQ Ack
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::msgundam_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0x880000, 0x880001).ram(); // ? 0x4000
+ map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xa00000, 0xa03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0xa80000, 0xa83fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0xb00000, 0xb00005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
+ map(0xb80000, 0xb80005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
+ 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);
+}
/***************************************************************************
@@ -2728,27 +2755,28 @@ ADDRESS_MAP_END
***************************************************************************/
/* similar to wrofaero */
-ADDRESS_MAP_START(seta_state::oisipuzl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette
-ADDRESS_MAP_END
+void seta_state::oisipuzl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x17ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x400000, 0x400001).nopw(); // ? IRQ Ack
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x700000, 0x703fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x880000, 0x883fff).ram().w(this, 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(0xc00400, 0xc00fff).ram().share("paletteram1"); // Palette
+}
/***************************************************************************
@@ -2757,27 +2785,28 @@ ADDRESS_MAP_END
/* Same as oisipuzl but with the sound system replaced */
-ADDRESS_MAP_START(seta_state::triplfun_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x500006, 0x500007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // tfun sound
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette
-ADDRESS_MAP_END
+void seta_state::triplfun_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x100000, 0x17ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x400000, 0x400001).nopw(); // ? IRQ Ack
+ map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x500007, 0x500007).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // tfun sound
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x880000, 0x883fff).ram().w(this, 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(0xc00400, 0xc00fff).ram().share("paletteram1"); // Palette
+}
/***************************************************************************
@@ -2812,19 +2841,20 @@ READ16_MEMBER(seta_state::kiwame_input_r)
}
}
-ADDRESS_MAP_START(seta_state::kiwame_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram") // RAM
- AM_RANGE(0x800000, 0x803fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0x900000, 0x900001) AM_RAM // ? 0x4000
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r) // mahjong panel
- AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)
-ADDRESS_MAP_END
+void seta_state::kiwame_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram().share("nvram"); // RAM
+ map(0x800000, 0x803fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0x900000, 0x900001).ram(); // ? 0x4000
+ 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(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xd00000, 0xd00009).r(this, FUNC(seta_state::kiwame_input_r)); // mahjong panel
+ map(0xe00000, 0xe00003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
+}
/***************************************************************************
@@ -2843,111 +2873,117 @@ WRITE16_MEMBER(seta_state::thunderl_protection_w)
/* Similar to downtown etc. */
-ADDRESS_MAP_START(seta_state::thunderl_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w)
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ?
- AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits)
- AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r ) // Protection (not in wits)
- AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") // P3 (wits)
- AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits)
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(seta_state::thunderlbl_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM
-// AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w)
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ?
-// AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits)
- AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins
-// AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r ) // Protection (not in wits)
- AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0xff00) // P3 (wits)
- AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits)
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits)
-ADDRESS_MAP_END
+void seta_state::thunderl_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); // ROM
+ map(0xffc000, 0xffffff).ram(); // RAM
+ map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
+ map(0x300000, 0x300001).nopw(); // ?
+ map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits)
+ map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ map(0xb00000, 0xb00001).portr("P1"); // P1
+ map(0xb00002, 0xb00003).portr("P2"); // P2
+ map(0xb00004, 0xb00005).portr("COINS"); // Coins
+ map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits)
+ map(0xb00008, 0xb00009).portr("P3"); // P3 (wits)
+ map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits)
+ map(0xc00000, 0xc00001).ram(); // ? 0x4000
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xe04000, 0xe07fff).ram(); // (wits)
+}
+
+
+void seta_state::thunderlbl_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); // ROM
+ map(0xffc000, 0xffffff).ram(); // RAM
+// map(0x100000, 0x103fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
+ map(0x300000, 0x300001).nopw(); // ?
+// map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits)
+ map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ map(0xb00000, 0xb00001).portr("P1"); // P1
+ map(0xb00002, 0xb00003).portr("P2"); // P2
+ map(0xb00004, 0xb00005).portr("COINS"); // Coins
+// map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits)
+ map(0xb00008, 0xb00009).portr("P3"); // P3 (wits)
+ map(0xb00008, 0xb00008).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits)
+ map(0xc00000, 0xc00001).ram(); // ? 0x4000
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xe04000, 0xe07fff).ram(); // (wits)
+}
/***************************************************************************
Wiggie Waggie
***************************************************************************/
-ADDRESS_MAP_START(seta_state::wiggie_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM // ROM
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM
- AM_RANGE(0x100000, 0x103fff) AM_NOP // X1_010 is not used
- AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w)
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ?
- AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits)
- AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1
- AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2
- AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r) // Protection (not in wits)
- AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") // P3 (wits)
- AM_RANGE(0xb00008, 0xb00009) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits)
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seta_state::wiggie_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void seta_state::wiggie_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom(); // ROM
+ map(0xffc000, 0xffffff).ram(); // RAM
+ map(0x100000, 0x103fff).noprw(); // X1_010 is not used
+ map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w));
+ map(0x300000, 0x300001).nopw(); // ?
+ map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits)
+ map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette
+ map(0xb00000, 0xb00001).portr("P1"); // P1
+ map(0xb00002, 0xb00003).portr("P2"); // P2
+ map(0xb00004, 0xb00005).portr("COINS"); // Coins
+ map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits)
+ map(0xb00008, 0xb00009).portr("P3"); // P3 (wits)
+ map(0xb00008, 0xb00008).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits)
+ map(0xc00000, 0xc00001).ram(); // ? 0x4000
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xe04000, 0xe07fff).ram(); // (wits)
+}
+
+void seta_state::wiggie_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r("soundlatch1", FUNC(generic_latch_8_device::read));
+}
/***************************************************************************
Ultraman Club / SD Gundam Neo Battling
***************************************************************************/
-ADDRESS_MAP_START(seta_state::umanclub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x3003ff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x300400, 0x300fff) AM_RAM //
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? (end of lev 2)
- AM_RANGE(0x400004, 0x400005) AM_WRITENOP // ? (end of lev 2)
- AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
-ADDRESS_MAP_END
+void seta_state::umanclub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x3003ff).ram().share("paletteram1"); // Palette
+ map(0x300400, 0x300fff).ram(); //
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("P2"); // P2
+ map(0x400004, 0x400005).portr("COINS"); // Coins
+ map(0x400000, 0x400001).nopw(); // ? (end of lev 2)
+ map(0x400004, 0x400005).nopw(); // ? (end of lev 2)
+ map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ 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
+}
/***************************************************************************
@@ -2962,25 +2998,26 @@ WRITE8_MEMBER(seta_state::utoukond_sound_control_w)
// other bits used for banking? (low nibble seems to always be 2)
}
-ADDRESS_MAP_START(seta_state::utoukond_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers
- AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3
- AM_RANGE(0x900000, 0x900005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM 0&1 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_WRITEONLY AM_SHARE("vctrl_1")// VRAM 2&3 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? ack
-ADDRESS_MAP_END
+void seta_state::utoukond_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).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(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers
+ map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
+ map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
+ map(0x900000, 0x900005).writeonly().share("vctrl_0");// VRAM 0&1 Ctrl
+ map(0x980000, 0x980005).writeonly().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(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xc00001, 0xc00001).w("soundlatch1", FUNC(generic_latch_8_device::write));
+ map(0xe00000, 0xe00001).nopw(); // ? ack
+}
/***************************************************************************
Pairs Love
@@ -3003,52 +3040,54 @@ WRITE16_MEMBER(seta_state::pairlove_prot_w)
m_pairslove_protram[offset] = data;
}
-ADDRESS_MAP_START(seta_state::pairlove_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?)
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?)
- AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW
- AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x900000, 0x9001ff) AM_READWRITE(pairlove_prot_r,pairlove_prot_w)
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_SHARE("paletteram1") // Palette
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000
- AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void seta_state::pairlove_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM
+ map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?)
+ map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?)
+ map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW
+ map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?)
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).portr("COINS"); // Coins
+ map(0x900000, 0x9001ff).rw(this, FUNC(seta_state::pairlove_prot_r), FUNC(seta_state::pairlove_prot_w));
+ map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xb00000, 0xb00fff).ram().share("paletteram1"); // Palette
+ map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xd00000, 0xd00001).ram(); // ? 0x4000
+ map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xf00000, 0xf0ffff).ram(); // RAM
+}
/***************************************************************************
Crazy Fight
***************************************************************************/
-ADDRESS_MAP_START(seta_state::crazyfgt_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM
- AM_RANGE(0x610000, 0x610001) AM_READ_PORT("COINS")
- AM_RANGE(0x610002, 0x610003) AM_READ_PORT("UNK")
- AM_RANGE(0x610004, 0x610005) AM_READ_PORT("INPUT")
- AM_RANGE(0x610006, 0x610007) AM_WRITENOP
- AM_RANGE(0x620000, 0x620003) AM_WRITENOP // protection
- AM_RANGE(0x630000, 0x630003) AM_READ(seta_dsw_r)
- AM_RANGE(0x640400, 0x640fff) AM_WRITEONLY AM_SHARE("paletteram1") // Palette
- AM_RANGE(0x650000, 0x650003) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0x00ff)
- AM_RANGE(0x658000, 0x658001) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff)
- AM_RANGE(0x670000, 0x670001) AM_READNOP // watchdog?
- AM_RANGE(0x800000, 0x803fff) AM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2
- AM_RANGE(0x880000, 0x883fff) AM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl
- AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xa80000, 0xa80001) AM_WRITENOP // ? 0x4000
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
-ADDRESS_MAP_END
+void seta_state::crazyfgt_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x40ffff).ram();
+ map(0x610000, 0x610001).portr("COINS");
+ map(0x610002, 0x610003).portr("UNK");
+ map(0x610004, 0x610005).portr("INPUT");
+ map(0x610006, 0x610007).nopw();
+ map(0x620000, 0x620003).nopw(); // protection
+ map(0x630000, 0x630003).r(this, FUNC(seta_state::seta_dsw_r));
+ map(0x640400, 0x640fff).writeonly().share("paletteram1"); // Palette
+ map(0x650000, 0x650003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff);
+ map(0x658001, 0x658001).w("oki", FUNC(okim6295_device::write));
+ map(0x670000, 0x670001).nopr(); // watchdog?
+ map(0x800000, 0x803fff).w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2
+ map(0x880000, 0x883fff).w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0
+ map(0x900000, 0x900005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
+ map(0x980000, 0x980005).ram().share("vctrl_0"); // VRAM 0&1 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).nopw(); // ? 0x4000
+ map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+}
/***************************************************************************
@@ -3201,46 +3240,47 @@ READ16_MEMBER(jockeyc_state::trackball_r)
return 0;
}
-ADDRESS_MAP_START(jockeyc_state::jockeyc_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
+void jockeyc_state::jockeyc_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x200001) AM_READWRITE(mux_r, jockeyc_mux_w)
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("COIN")
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SERVICE") AM_WRITE(jockeyc_out_w)
+ map(0x200000, 0x200001).rw(this, FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::jockeyc_mux_w));
+ map(0x200002, 0x200003).portr("COIN");
+ map(0x200010, 0x200011).portr("SERVICE").w(this, FUNC(jockeyc_state::jockeyc_out_w));
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x300002, 0x300003) AM_NOP // clr.l $300000 (watchdog)
+ map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x300002, 0x300003).noprw(); // clr.l $300000 (watchdog)
- AM_RANGE(0x300010, 0x300011) AM_WRITENOP // lev1 ack
- AM_RANGE(0x300020, 0x300021) AM_WRITENOP // lev2 ack
- AM_RANGE(0x300040, 0x300041) AM_WRITENOP // lev4 ack
- AM_RANGE(0x300060, 0x300061) AM_WRITENOP // lev6 ack
+ map(0x300010, 0x300011).nopw(); // lev1 ack
+ map(0x300020, 0x300021).nopw(); // lev2 ack
+ map(0x300040, 0x300041).nopw(); // lev4 ack
+ map(0x300060, 0x300061).nopw(); // lev6 ack
#if JOCKEYC_HIDDEN_EDITOR
- AM_RANGE(0x400000, 0x400007) AM_READ(trackball_r)
+ map(0x400000, 0x400007).r(this, FUNC(jockeyc_state::trackball_r));
#endif
- AM_RANGE(0x500000, 0x500003) AM_READ(dsw_r) // DSW x 3
- AM_RANGE(0x600000, 0x600001) AM_READ(comm_r) // comm data
- AM_RANGE(0x600002, 0x600003) AM_READ(comm_r) // comm status (bits 0,4,5,6)
+ map(0x500000, 0x500003).r(this, FUNC(jockeyc_state::dsw_r)); // DSW x 3
+ map(0x600000, 0x600001).r(this, FUNC(jockeyc_state::comm_r)); // comm data
+ map(0x600002, 0x600003).r(this, FUNC(jockeyc_state::comm_r)); // comm status (bits 0,4,5,6)
- AM_RANGE(0x800000, 0x80001f) AM_READWRITE(rtc_r, rtc_w)
+ map(0x800000, 0x80001f).rw(this, FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w));
- AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+ map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0xb04000, 0xb0ffff) AM_WRITENOP // likely left-over
+ map(0xa00000, 0xa00005).writeonly().share("vctrl_0"); // VRAM 0&1 Ctrl
+ map(0xb00000, 0xb03fff).ram().w(this, FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
+ map(0xb04000, 0xb0ffff).nopw(); // likely left-over
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
+ map(0xc00000, 0xc00001).ram(); // ? 0x4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (battery backed)
-ADDRESS_MAP_END
+ map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed)
+}
/***************************************************************************
@@ -3288,40 +3328,41 @@ READ16_MEMBER(jockeyc_state::inttoote_700000_r)
return m_inttoote_700000[offset] & 0x3f;
}
-ADDRESS_MAP_START(jockeyc_state::inttoote_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB)
+void jockeyc_state::inttoote_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB)
- AM_RANGE(0x200000, 0x200001) AM_READWRITE(mux_r, inttoote_mux_w)
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("COIN")
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SERVICE") AM_WRITE(inttoote_out_w)
+ map(0x200000, 0x200001).rw(this, FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::inttoote_mux_w));
+ map(0x200002, 0x200003).portr("COIN");
+ map(0x200010, 0x200011).portr("SERVICE").w(this, FUNC(jockeyc_state::inttoote_out_w));
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+ map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
- AM_RANGE(0x300010, 0x300011) AM_WRITENOP // lev1 ack
- AM_RANGE(0x300020, 0x300021) AM_WRITENOP // lev2 ack
- AM_RANGE(0x300040, 0x300041) AM_WRITENOP // lev4 ack
- AM_RANGE(0x300060, 0x300061) AM_WRITENOP // lev6 ack
+ map(0x300010, 0x300011).nopw(); // lev1 ack
+ map(0x300020, 0x300021).nopw(); // lev2 ack
+ map(0x300040, 0x300041).nopw(); // lev4 ack
+ map(0x300060, 0x300061).nopw(); // lev6 ack
- AM_RANGE(0x500000, 0x500003) AM_READ(dsw_r) // DSW x 3
+ map(0x500000, 0x500003).r(this, FUNC(jockeyc_state::dsw_r)); // DSW x 3
- AM_RANGE(0x700000, 0x700101) AM_RAM_READ(inttoote_700000_r) AM_SHARE("inttoote_700000")
+ map(0x700000, 0x700101).ram().r(this, FUNC(jockeyc_state::inttoote_700000_r)).share("inttoote_700000");
- AM_RANGE(0x800000, 0x80001f) AM_READWRITE(rtc_r, rtc_w)
+ map(0x800000, 0x80001f).rw(this, FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w));
- AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+ map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
+ map(0xa00000, 0xa00005).writeonly().share("vctrl_0"); // VRAM 0&1 Ctrl
+ map(0xb00000, 0xb03fff).ram().w(this, FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
- AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
+ map(0xc00000, 0xc00001).ram(); // ? 0x4000
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (battery backed)
-ADDRESS_MAP_END
+ map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed)
+}
/***************************************************************************
@@ -3350,41 +3391,43 @@ WRITE8_MEMBER(seta_state::sub_bankswitch_lockout_w)
READ8_MEMBER(seta_state::ff_r){return 0xff;}
-ADDRESS_MAP_START(seta_state::tndrcade_sub_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_READ(ff_r) // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom)
+void seta_state::tndrcade_sub_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram(); // RAM
+ map(0x0800, 0x0800).r(this, FUNC(seta_state::ff_r)); // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom)
//AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) //
//AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1
- AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM
- AM_RANGE(0x6000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM // ROM
-ADDRESS_MAP_END
+ map(0x1000, 0x1000).portr("P1"); // P1
+ map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
+ map(0x1001, 0x1001).portr("P2"); // P2
+ map(0x1002, 0x1002).portr("COINS"); // Coins
+ map(0x2000, 0x2001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x3000, 0x3001).w("ym2", FUNC(ym3812_device::write));
+ map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM
+ map(0x6000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM
+ map(0xc000, 0xffff).rom(); // ROM
+}
/***************************************************************************
Twin Eagle
***************************************************************************/
-ADDRESS_MAP_START(seta_state::twineagl_sub_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) //
- AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1
- AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM
- AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM // ROM
-ADDRESS_MAP_END
+void seta_state::twineagl_sub_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram(); // RAM
+ map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); //
+ map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); //
+ map(0x1000, 0x1000).portr("P1"); // P1
+ map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
+ map(0x1001, 0x1001).portr("P2"); // P2
+ map(0x1002, 0x1002).portr("COINS"); // Coins
+ map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM
+ map(0x7000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM
+ map(0xc000, 0xffff).rom(); // ROM
+}
/***************************************************************************
@@ -3414,17 +3457,18 @@ READ8_MEMBER(seta_state::downtown_ip_r)
return 0;
}
-ADDRESS_MAP_START(seta_state::downtown_sub_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) //
- AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
- AM_RANGE(0x1000, 0x1007) AM_READ(downtown_ip_r) // Input Ports
- AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM
- AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM // ROM
-ADDRESS_MAP_END
+void seta_state::downtown_sub_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram(); // RAM
+ map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); //
+ map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); //
+ map(0x1000, 0x1007).r(this, FUNC(seta_state::downtown_ip_r)); // Input Ports
+ map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
+ map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM
+ map(0x7000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM
+ map(0xc000, 0xffff).rom(); // ROM
+}
/***************************************************************************
@@ -3459,52 +3503,56 @@ WRITE8_MEMBER(seta_state::calibr50_soundlatch2_w)
m_subcpu->spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply
}
-ADDRESS_MAP_START(seta_state::calibr50_sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1snd", x1_010_device, read ,write) // Sound
- AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // From Main CPU
- AM_RANGE(0x4000, 0x4000) AM_WRITE(calibr50_sub_bankswitch_w) // Bankswitching
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM // ROM
- AM_RANGE(0xc000, 0xc000) AM_WRITE(calibr50_soundlatch2_w) // To Main CPU
-ADDRESS_MAP_END
+void seta_state::calibr50_sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); // Sound
+ map(0x4000, 0x4000).r("soundlatch1", FUNC(generic_latch_8_device::read)); // From Main CPU
+ map(0x4000, 0x4000).w(this, FUNC(seta_state::calibr50_sub_bankswitch_w)); // Bankswitching
+ map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM
+ map(0xc000, 0xffff).rom(); // ROM
+ map(0xc000, 0xc000).w(this, FUNC(seta_state::calibr50_soundlatch2_w)); // To Main CPU
+}
/***************************************************************************
Meta Fox
***************************************************************************/
-ADDRESS_MAP_START(seta_state::metafox_sub_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) //
- AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("COINS") // Coins
- AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1") // P1
+void seta_state::metafox_sub_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram(); // RAM
+ map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); //
+ map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); //
+ map(0x1000, 0x1000).portr("COINS"); // Coins
+ map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout
+ map(0x1002, 0x1002).portr("P1"); // P1
//AM_RANGE(0x1004, 0x1004) AM_READNOP // ?
- AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P2") // P2
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM
- AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM
- AM_RANGE(0xc000, 0xffff) AM_ROM // ROM
-ADDRESS_MAP_END
+ map(0x1006, 0x1006).portr("P2"); // P2
+ map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM
+ map(0x7000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM
+ map(0xc000, 0xffff).rom(); // ROM
+}
/***************************************************************************
Ultra Toukon Densetsu
***************************************************************************/
-ADDRESS_MAP_START(seta_state::utoukond_sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1snd", x1_010_device, read, write)
-ADDRESS_MAP_END
+void seta_state::utoukond_sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write));
+}
-ADDRESS_MAP_START(seta_state::utoukond_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0x80, 0x80) AM_WRITE(utoukond_sound_control_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void seta_state::utoukond_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x80, 0x80).w(this, FUNC(seta_state::utoukond_sound_control_w));
+ map(0xc0, 0xc0).r("soundlatch1", FUNC(generic_latch_8_device::read));
+}
/***************************************************************************
@@ -8254,19 +8302,21 @@ MACHINE_CONFIG_START(seta_state::blockcar)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(seta_state::blockcarb_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xd000, 0xdfff) AM_RAM
+void seta_state::blockcarb_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0xd000, 0xdfff).ram();
//AM_RANGE(0xf001, 0xf001) ??
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(seta_state::blockcarb_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void seta_state::blockcarb_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
// AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
-ADDRESS_MAP_END
+}
MACHINE_CONFIG_START(seta_state::blockcarb)
blockcar(config);
@@ -9263,19 +9313,21 @@ MACHINE_CONFIG_START(seta_state::thunderl)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(seta_state::thunderlbl_sound_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xdfff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void seta_state::thunderlbl_sound_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xdfff).rom();
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(seta_state::thunderlbl_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void seta_state::thunderlbl_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc0, 0xc0).mirror(0x3f).r("soundlatch1", FUNC(generic_latch_8_device::read));
+}
MACHINE_CONFIG_START(seta_state::thunderlbl)
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index 92bced002e1..f5cc5a7e275 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -159,25 +159,26 @@ WRITE16_MEMBER(seta2_state::grdians_lockout_w)
// popmessage("%04X", data & 0xffff);
}
-ADDRESS_MAP_START(seta2_state::grdians_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x304000, 0x30ffff) AM_RAM // ? seems tile data
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
- AM_RANGE(0x70000c, 0x70000d) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::grdians_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x304000, 0x30ffff).ram(); // ? seems tile data
+ map(0x600000, 0x600001).portr("DSW1"); // DSW 1
+ map(0x600002, 0x600003).portr("DSW2"); // DSW 2
+ map(0x700000, 0x700001).portr("P1"); // P1
+ map(0x700002, 0x700003).portr("P2"); // P2
+ map(0x700004, 0x700005).portr("SYSTEM"); // Coins
+ map(0x70000c, 0x70000d).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x800000, 0x800001).w(this, FUNC(seta2_state::grdians_lockout_w));
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xc50000, 0xc5ffff).ram(); // cleared
+ map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xe00010, 0xe0001f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
/***************************************************************************
Mobile Suit Gundam EX Revue
@@ -195,27 +196,28 @@ WRITE16_MEMBER(seta2_state::gundamex_eeprom_w)
m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
}
-ADDRESS_MAP_START(seta2_state::gundamex_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x500000, 0x57ffff) AM_ROM // ROM
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN0") // P1
- AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1") // P2
- AM_RANGE(0x70000c, 0x70000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::gundamex_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x500000, 0x57ffff).rom(); // ROM
+ map(0x600000, 0x600001).portr("DSW1"); // DSW 1
+ map(0x600002, 0x600003).portr("DSW2"); // DSW 2
+ map(0x700000, 0x700001).portr("P1"); // P1
+ map(0x700002, 0x700003).portr("P2"); // P2
+ map(0x700004, 0x700005).portr("SYSTEM"); // Coins
+ map(0x700008, 0x700009).portr("IN0"); // P1
+ map(0x70000a, 0x70000b).portr("IN1"); // P2
+ map(0x70000c, 0x70000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x800000, 0x800001).w(this, FUNC(seta2_state::grdians_lockout_w));
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xc50000, 0xc5ffff).ram(); // cleared
+ map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xe00010, 0xe0001f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
/***************************************************************************
@@ -259,70 +261,73 @@ WRITE16_MEMBER(seta2_state::mj4simai_keyboard_w)
m_keyboard_row = data & 0xff;
}
-ADDRESS_MAP_START(seta2_state::mj4simai_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r) // P1
- AM_RANGE(0x600002, 0x600003) AM_READ(mj4simai_p2_r) // P2
- AM_RANGE(0x600004, 0x600005) AM_WRITE(mj4simai_keyboard_w) // select keyboard row to read
- AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x600100, 0x600101) AM_READ_PORT("SYSTEM") //
- AM_RANGE(0x600200, 0x600201) AM_WRITENOP // Leds? Coins?
- AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x600300, 0x60030f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::mj4simai_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x600000, 0x600001).r(this, FUNC(seta2_state::mj4simai_p1_r)); // P1
+ map(0x600002, 0x600003).r(this, FUNC(seta2_state::mj4simai_p2_r)); // P2
+ map(0x600004, 0x600005).w(this, FUNC(seta2_state::mj4simai_keyboard_w)); // select keyboard row to read
+ map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x600100, 0x600101).portr("SYSTEM"); //
+ map(0x600200, 0x600201).nopw(); // Leds? Coins?
+ map(0x600300, 0x600301).portr("DSW1"); // DSW 1
+ map(0x600302, 0x600303).portr("DSW2"); // DSW 2
+ map(0x600300, 0x60030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xc60000, 0xc6003f).w(this, 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
+}
/***************************************************************************
Kosodate Quiz My Angel
***************************************************************************/
-ADDRESS_MAP_START(seta2_state::myangel_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
- AM_RANGE(0x700006, 0x700007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x700200, 0x700201) AM_WRITENOP // Leds? Coins?
- AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x700310, 0x70031f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::myangel_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x700000, 0x700001).portr("P1"); // P1
+ map(0x700002, 0x700003).portr("P2"); // P2
+ map(0x700004, 0x700005).portr("SYSTEM"); // Coins
+ map(0x700006, 0x700007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x700200, 0x700201).nopw(); // Leds? Coins?
+ map(0x700300, 0x700301).portr("DSW1"); // DSW 1
+ map(0x700302, 0x700303).portr("DSW2"); // DSW 2
+ map(0x700310, 0x70031f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xc60000, 0xc6003f).w(this, 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
+}
/***************************************************************************
Kosodate Quiz My Angel 2
***************************************************************************/
-ADDRESS_MAP_START(seta2_state::myangel2_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") // Coins
- AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x600200, 0x600201) AM_WRITENOP // Leds? Coins?
- AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x600300, 0x60030f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::myangel2_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x600000, 0x600001).portr("P1"); // P1
+ map(0x600002, 0x600003).portr("P2"); // P2
+ map(0x600004, 0x600005).portr("SYSTEM"); // Coins
+ map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x600200, 0x600201).nopw(); // Leds? Coins?
+ map(0x600300, 0x600301).portr("DSW1"); // DSW 1
+ map(0x600302, 0x600303).portr("DSW2"); // DSW 2
+ map(0x600300, 0x60030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xd00000, 0xd3ffff).ram().share("spriteram"); // Sprites
+ map(0xd40000, 0xd4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xd60000, 0xd6003f).w(this, 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
+}
/***************************************************************************
@@ -351,61 +356,65 @@ WRITE16_MEMBER(seta2_state::pzlbowl_coin_counter_w)
}
}
-ADDRESS_MAP_START(seta2_state::pzlbowl_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x400300, 0x40030f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x500004, 0x500005) AM_READWRITE(pzlbowl_coins_r,pzlbowl_coin_counter_w) // Coins + Protection?
- AM_RANGE(0x500006, 0x500007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
- AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x840000, 0x84ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x860000, 0x86003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::pzlbowl_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x400300, 0x400301).portr("DSW1"); // DSW 1
+ map(0x400302, 0x400303).portr("DSW2"); // DSW 2
+ map(0x400300, 0x40030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0x500000, 0x500001).portr("P1"); // P1
+ map(0x500002, 0x500003).portr("P2"); // P2
+ map(0x500004, 0x500005).rw(this, FUNC(seta2_state::pzlbowl_coins_r), FUNC(seta2_state::pzlbowl_coin_counter_w)); // Coins + Protection?
+ map(0x500006, 0x500007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x700000, 0x700001).r(this, FUNC(seta2_state::pzlbowl_protection_r)); // Protection
+ map(0x800000, 0x83ffff).ram().share("spriteram"); // Sprites
+ map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x860000, 0x86003f).w(this, 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
+}
/***************************************************************************
Penguin Bros
***************************************************************************/
-ADDRESS_MAP_START(seta2_state::penbros_base_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM // zeroed at startup, then never written again on originals, used on the bootleg
- AM_RANGE(0x220000, 0x22ffff) AM_RAM // zeroed at startup, then never written again
- AM_RANGE(0x230000, 0x23ffff) AM_RAM // zeroed at startup, then never written again on originals, used on the bootleg
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1")
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2")
- AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w)
- AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w)
- AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seta2_state::penbros_map)
- AM_IMPORT_FROM(penbros_base_map)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
- AM_RANGE(0x500300, 0x500301) AM_READ_PORT("DSW1")
- AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2")
- AM_RANGE(0x500300, 0x50030f) AM_WRITE(sound_bank_w)
- AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs")
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seta2_state::ablastb_map)
- AM_IMPORT_FROM(penbros_base_map)
- AM_RANGE(0x508300, 0x508301) AM_READ_PORT("DSW1")
- AM_RANGE(0x508302, 0x508303) AM_READ_PORT("DSW2")
+void seta2_state::penbros_base_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x210000, 0x21ffff).ram(); // zeroed at startup, then never written again on originals, used on the bootleg
+ map(0x220000, 0x22ffff).ram(); // zeroed at startup, then never written again
+ map(0x230000, 0x23ffff).ram(); // zeroed at startup, then never written again on originals, used on the bootleg
+ map(0x600000, 0x600001).portr("P1");
+ map(0x600002, 0x600003).portr("P2");
+ map(0x600004, 0x600005).portr("SYSTEM");
+ map(0x600004, 0x600005).w(this, FUNC(seta2_state::pzlbowl_coin_counter_w));
+ map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0xa00000, 0xa03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));
+ map(0xb00000, 0xb3ffff).ram().share("spriteram");
+ map(0xb40000, 0xb4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void seta2_state::penbros_map(address_map &map)
+{
+ penbros_base_map(map);
+ map(0x300000, 0x30ffff).ram();
+ map(0x500300, 0x500301).portr("DSW1");
+ map(0x500302, 0x500303).portr("DSW2");
+ map(0x500300, 0x50030f).w(this, FUNC(seta2_state::sound_bank_w));
+ map(0xb60000, 0xb6003f).w(this, 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)
+{
+ penbros_base_map(map);
+ map(0x508300, 0x508301).portr("DSW1");
+ map(0x508302, 0x508303).portr("DSW2");
// TODO: Is there samples banking like in the original?
-ADDRESS_MAP_END
+}
/***************************************************************************
@@ -446,24 +455,25 @@ WRITE16_MEMBER(seta2_state::reelquak_coin_w)
// popmessage("COIN %04X", data & 0xffff);
}
-ADDRESS_MAP_START(seta2_state::reelquak_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram") // NVRAM (Battery Backed)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("TICKET") // Tickets
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("SYSTEM") // Coins
- AM_RANGE(0x400006, 0x400007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0x400200, 0x400201) AM_WRITE(reelquak_coin_w) // Coin Counters / IRQ Ack
- AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x400300, 0x40030f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::reelquak_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x303fff).ram().share("nvram"); // NVRAM (Battery Backed)
+ map(0x400000, 0x400001).portr("P1"); // P1
+ map(0x400002, 0x400003).portr("TICKET"); // Tickets
+ map(0x400004, 0x400005).portr("SYSTEM"); // Coins
+ map(0x400006, 0x400007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0x400200, 0x400201).w(this, FUNC(seta2_state::reelquak_coin_w)); // Coin Counters / IRQ Ack
+ map(0x400300, 0x400301).portr("DSW1"); // DSW 1
+ map(0x400302, 0x400303).portr("DSW2"); // DSW 2
+ map(0x400300, 0x40030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xc60000, 0xc6003f).w(this, 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
+}
/***************************************************************************
@@ -471,13 +481,14 @@ ADDRESS_MAP_END
***************************************************************************/
// To be done:
-ADDRESS_MAP_START(seta2_state::namcostr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+void seta2_state::namcostr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc60000, 0xc6003f).w(this, 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
+}
/***************************************************************************
@@ -497,32 +508,33 @@ WRITE16_MEMBER(seta2_state::samshoot_coin_w)
// popmessage("%04x",data);
}
-ADDRESS_MAP_START(seta2_state::samshoot_map)
- AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
- AM_RANGE( 0x200000, 0x20ffff ) AM_RAM
- AM_RANGE( 0x300000, 0x30ffff ) AM_RAM AM_SHARE("nvram")
+void seta2_state::samshoot_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x30ffff).ram().share("nvram");
- AM_RANGE( 0x400000, 0x400001 ) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE( 0x400002, 0x400003 ) AM_READ_PORT("BUTTONS") // Buttons
+ map(0x400000, 0x400001).portr("DSW1"); // DSW 1
+ map(0x400002, 0x400003).portr("BUTTONS"); // Buttons
- AM_RANGE( 0x400300, 0x40030f ) AM_WRITE(sound_bank_w ) // Samples Banks
+ map(0x400300, 0x40030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
- AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("GUN1") // P1
- AM_RANGE( 0x580000, 0x580001 ) AM_READ_PORT("GUN2") // P2
+ map(0x500000, 0x500001).portr("GUN1"); // P1
+ map(0x580000, 0x580001).portr("GUN2"); // P2
- AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT("TRIGGER") // Trigger
- AM_RANGE( 0x700002, 0x700003 ) AM_READ_PORT("PUMP") // Pump
- AM_RANGE( 0x700004, 0x700005 ) AM_READ_PORT("COIN") AM_WRITE(samshoot_coin_w ) // Coins
- AM_RANGE( 0x700006, 0x700007 ) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r ) // Watchdog?
+ map(0x700000, 0x700001).portr("TRIGGER"); // Trigger
+ map(0x700002, 0x700003).portr("PUMP"); // Pump
+ map(0x700004, 0x700005).portr("COIN").w(this, FUNC(seta2_state::samshoot_coin_w)); // Coins
+ map(0x700006, 0x700007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog?
- AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
+ map(0x800000, 0x83ffff).ram().share("spriteram"); // Sprites
+ map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x860000, 0x86003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
- AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+ map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- AM_RANGE( 0xfffc00, 0xffffff ) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
/***************************************************************************
@@ -592,39 +604,40 @@ WRITE16_MEMBER(staraudi_state::staraudi_tileram_w)
m_gfxdecode->gfx(i)->mark_dirty(tile);
}
-ADDRESS_MAP_START(staraudi_state::staraudi_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x23ffff) AM_RAM // RAM
+void staraudi_state::staraudi_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x23ffff).ram(); // RAM
- AM_RANGE(0x400000, 0x45ffff) AM_READWRITE(staraudi_tileram_r, staraudi_tileram_w) AM_SHARE("tileram") // Tile RAM
+ map(0x400000, 0x45ffff).rw(this, FUNC(staraudi_state::staraudi_tileram_r), FUNC(staraudi_state::staraudi_tileram_w)).share("tileram"); // Tile RAM
// AM_RANGE(0x500000, 0x53ffff) AM_RAM // Camera RAM (r8g8)
// AM_RANGE(0x540000, 0x57ffff) AM_RAM // Camera RAM (00b8)
- AM_RANGE(0x500000, 0x57ffff) AM_RAM AM_SHARE("rgbram")
-
- AM_RANGE(0x600000, 0x600001) AM_WRITE(staraudi_camera_w) // Camera Outputs
-
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
- AM_RANGE(0x700006, 0x700007) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
-
- AM_RANGE(0x700100, 0x700101) AM_WRITE(staraudi_lamps1_w) // Lamps 1
- AM_RANGE(0x700180, 0x70018f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff )
- AM_RANGE(0x700200, 0x700201) AM_WRITE(staraudi_lamps2_w) // Lamps 2
- AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x700300, 0x70030f) AM_WRITE(sound_bank_w) // Samples Banks
-
- AM_RANGE(0x800000, 0x9fffff) AM_DEVREADWRITE("flash", intelfsh16_device, read, write)
-
- AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
- AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0x500000, 0x57ffff).ram().share("rgbram");
+
+ map(0x600000, 0x600001).w(this, FUNC(staraudi_state::staraudi_camera_w)); // Camera Outputs
+
+ map(0x700000, 0x700001).portr("P1"); // P1
+ map(0x700002, 0x700003).portr("P2"); // P2
+ map(0x700004, 0x700005).portr("SYSTEM"); // Coins
+ map(0x700006, 0x700007).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+
+ map(0x700100, 0x700101).w(this, FUNC(staraudi_state::staraudi_lamps1_w)); // Lamps 1
+ map(0x700180, 0x70018f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
+ map(0x700200, 0x700201).w(this, FUNC(staraudi_state::staraudi_lamps2_w)); // Lamps 2
+ map(0x700300, 0x700301).portr("DSW1"); // DSW 1
+ map(0x700302, 0x700303).portr("DSW2"); // DSW 2
+ map(0x700300, 0x70030f).w(this, FUNC(staraudi_state::sound_bank_w)); // Samples Banks
+
+ map(0x800000, 0x9fffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+
+ map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites
+ map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xc50000, 0xc5ffff).ram(); // cleared
+ map(0xc60000, 0xc6003f).w(this, 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
+}
/***************************************************************************
@@ -676,28 +689,29 @@ WRITE16_MEMBER(seta2_state::telpacfl_lockout_w)
// popmessage("LOCK %04X", data);
}
-ADDRESS_MAP_START(seta2_state::telpacfl_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
- AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram") // NVRAM (Battery Backed)
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("COIN") // Coin
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1") // P1 + Dispenser
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SERVICE") // Service
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("UNKNOWN") // (unused?)
- AM_RANGE(0x700008, 0x700009) AM_WRITE(telpacfl_lamp1_w) // Lamps
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(telpacfl_lamp2_w) // ""
- AM_RANGE(0x800000, 0x800001) AM_WRITE(telpacfl_lockout_w) // Coin Blockers
- AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
- AM_RANGE(0xd00006, 0xd00007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void seta2_state::telpacfl_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x200000, 0x20ffff).ram(); // RAM
+ map(0x300000, 0x303fff).ram().share("nvram"); // NVRAM (Battery Backed)
+ map(0x600000, 0x600001).portr("DSW1"); // DSW 1
+ map(0x600002, 0x600003).portr("DSW2"); // DSW 2
+ map(0x700000, 0x700001).portr("COIN"); // Coin
+ map(0x700002, 0x700003).portr("P1"); // P1 + Dispenser
+ map(0x700004, 0x700005).portr("SERVICE"); // Service
+ map(0x700006, 0x700007).portr("UNKNOWN"); // (unused?)
+ map(0x700008, 0x700009).w(this, FUNC(seta2_state::telpacfl_lamp1_w)); // Lamps
+ map(0x70000c, 0x70000d).w(this, FUNC(seta2_state::telpacfl_lamp2_w)); // ""
+ map(0x800000, 0x800001).w(this, FUNC(seta2_state::telpacfl_lockout_w)); // Coin Blockers
+ map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
+ map(0xb00000, 0xb3ffff).ram().share("spriteram"); // Sprites
+ map(0xb40000, 0xb4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0xb60000, 0xb6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
+ map(0xd00006, 0xd00007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0xe00000, 0xe00001) AM_WRITE
- AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks
- AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
-ADDRESS_MAP_END
+ map(0xe00010, 0xe0001f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers
+}
/***************************************************************************
@@ -880,50 +894,53 @@ WRITE32_MEMBER(seta2_state::oki_write)
}
}
-ADDRESS_MAP_START(seta2_state::funcube_map)
- AM_RANGE( 0x00000000, 0x0007ffff ) AM_ROM
- AM_RANGE( 0x00200000, 0x0020ffff ) AM_RAM
+void seta2_state::funcube_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom();
+ map(0x00200000, 0x0020ffff).ram();
- AM_RANGE( 0x00400000, 0x00400003 ) AM_READ(funcube_debug_r)
- AM_RANGE( 0x00400004, 0x00400007 ) AM_DEVREAD("watchdog", watchdog_timer_device, reset32_r) AM_WRITENOP
+ map(0x00400000, 0x00400003).r(this, FUNC(seta2_state::funcube_debug_r));
+ map(0x00400004, 0x00400007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw();
- AM_RANGE( 0x00500000, 0x00500003 ) AM_READWRITE(oki_read, oki_write)
+ map(0x00500000, 0x00500003).rw(this, FUNC(seta2_state::oki_read), FUNC(seta2_state::oki_write));
- AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram")
- AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette
- AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(vregs_w, 0xffffffff ) AM_SHARE("vregs")
+ map(0x00800000, 0x0083ffff).rw(this, FUNC(seta2_state::spriteram16_word_r), FUNC(seta2_state::spriteram16_word_w)).share("spriteram");
+ map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
+ map(0x00860000, 0x0086003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs");
- AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w )
+ map(0x00c00000, 0x00c002ff).rw(this, FUNC(seta2_state::funcube_nvram_dword_r), FUNC(seta2_state::funcube_nvram_dword_w));
- AM_RANGE(0xf0000000, 0xf00001ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, seta2_coldfire_regs_r, seta2_coldfire_regs_w) // technically this can be moved with MBAR
- AM_RANGE(0xffffe000, 0xffffffff ) AM_RAM // SRAM
-ADDRESS_MAP_END
+ map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR
+ map(0xffffe000, 0xffffffff).ram(); // SRAM
+}
-ADDRESS_MAP_START(seta2_state::funcube2_map)
- AM_RANGE( 0x00000000, 0x0007ffff ) AM_ROM
- AM_RANGE( 0x00200000, 0x0020ffff ) AM_RAM
+void seta2_state::funcube2_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom();
+ map(0x00200000, 0x0020ffff).ram();
- AM_RANGE( 0x00500000, 0x00500003 ) AM_READ(funcube_debug_r )
- AM_RANGE( 0x00500004, 0x00500007 ) AM_DEVREAD("watchdog", watchdog_timer_device, reset32_r) AM_WRITENOP
+ map(0x00500000, 0x00500003).r(this, FUNC(seta2_state::funcube_debug_r));
+ map(0x00500004, 0x00500007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw();
- AM_RANGE( 0x00600000, 0x00600003 ) AM_READWRITE(oki_read, oki_write)
+ map(0x00600000, 0x00600003).rw(this, FUNC(seta2_state::oki_read), FUNC(seta2_state::oki_write));
- AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram")
- AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(vregs_w, 0xffffffff ) AM_SHARE("vregs")
+ map(0x00800000, 0x0083ffff).rw(this, FUNC(seta2_state::spriteram16_word_r), FUNC(seta2_state::spriteram16_word_w)).share("spriteram");
+ map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x00860000, 0x0086003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs");
- AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w )
+ map(0x00c00000, 0x00c002ff).rw(this, FUNC(seta2_state::funcube_nvram_dword_r), FUNC(seta2_state::funcube_nvram_dword_w));
- AM_RANGE(0xf0000000, 0xf00001ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, seta2_coldfire_regs_r, seta2_coldfire_regs_w) // technically this can be moved with MBAR
- AM_RANGE(0xffffe000, 0xffffffff ) AM_RAM // SRAM
-ADDRESS_MAP_END
+ map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR
+ map(0xffffe000, 0xffffffff).ram(); // SRAM
+}
// Sub CPU
-ADDRESS_MAP_START(seta2_state::funcube_sub_map)
- AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
- AM_RANGE( 0x200000, 0x20017f ) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void seta2_state::funcube_sub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x200000, 0x20017f).ram().share("nvram");
+}
@@ -1014,19 +1031,21 @@ READ16_MEMBER(seta2_state::funcube_battery_r)
}
// cabinet linking on sci0
-ADDRESS_MAP_START(seta2_state::funcube_sub_io)
- AM_RANGE( h8_device::PORT_7, h8_device::PORT_7 ) AM_READ(funcube_coins_r )
- AM_RANGE( h8_device::PORT_4, h8_device::PORT_4 ) AM_READ(funcube_battery_r )
- AM_RANGE( h8_device::PORT_A, h8_device::PORT_A ) AM_READWRITE(funcube_outputs_r, funcube_outputs_w ) AM_SHARE("funcube_outputs")
- AM_RANGE( h8_device::PORT_B, h8_device::PORT_B ) AM_WRITE(funcube_leds_w ) AM_SHARE("funcube_leds")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seta2_state::funcube2_sub_io)
- AM_RANGE( h8_device::PORT_7, h8_device::PORT_7 ) AM_READ(funcube_coins_r )
- AM_RANGE( h8_device::PORT_4, h8_device::PORT_4 ) AM_NOP // unused
- AM_RANGE( h8_device::PORT_A, h8_device::PORT_A ) AM_READWRITE(funcube_outputs_r, funcube_outputs_w ) AM_SHARE("funcube_outputs")
- AM_RANGE( h8_device::PORT_B, h8_device::PORT_B ) AM_WRITE(funcube_leds_w ) AM_SHARE("funcube_leds")
-ADDRESS_MAP_END
+void seta2_state::funcube_sub_io(address_map &map)
+{
+ map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(seta2_state::funcube_coins_r));
+ map(h8_device::PORT_4, h8_device::PORT_4).r(this, FUNC(seta2_state::funcube_battery_r));
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(seta2_state::funcube_outputs_r), FUNC(seta2_state::funcube_outputs_w)).share("funcube_outputs");
+ map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(seta2_state::funcube_leds_w)).share("funcube_leds");
+}
+
+void seta2_state::funcube2_sub_io(address_map &map)
+{
+ map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(seta2_state::funcube_coins_r));
+ map(h8_device::PORT_4, h8_device::PORT_4).noprw(); // unused
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(seta2_state::funcube_outputs_r), FUNC(seta2_state::funcube_outputs_w)).share("funcube_outputs");
+ map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(seta2_state::funcube_leds_w)).share("funcube_leds");
+}
diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp
index 376febf47f9..368756ec45f 100644
--- a/src/mame/drivers/sf.cpp
+++ b/src/mame/drivers/sf.cpp
@@ -161,96 +161,102 @@ WRITE8_MEMBER(sf_state::msm2_5205_w)
m_msm2->vclk_w(0);
}
-ADDRESS_MAP_START(sf_state::sfan_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x04ffff) AM_ROM
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("PUNCH")
- AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("KICK")
- AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("DSW1")
- AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2")
- AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc0000e, 0xc0000f) AM_READNOP
- AM_RANGE(0xc00010, 0xc00011) AM_WRITE8(coin_w, 0x00ff)
- AM_RANGE(0xc00014, 0xc00015) AM_WRITE(fg_scroll_w)
- AM_RANGE(0xc00018, 0xc00019) AM_WRITE(bg_scroll_w)
- AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(gfxctrl_w)
- AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE8(soundcmd_w, 0x00ff)
+void sf_state::sfan_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x04ffff).rom();
+ map(0x800000, 0x800fff).ram().w(this, FUNC(sf_state::videoram_w)).share("videoram");
+ map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc00001).portr("IN0");
+ map(0xc00002, 0xc00003).portr("IN1");
+ map(0xc00004, 0xc00005).portr("PUNCH");
+ map(0xc00006, 0xc00007).portr("KICK");
+ map(0xc00008, 0xc00009).portr("DSW1");
+ map(0xc0000a, 0xc0000b).portr("DSW2");
+ map(0xc0000c, 0xc0000d).portr("SYSTEM");
+ map(0xc0000e, 0xc0000f).nopr();
+ map(0xc00011, 0xc00011).w(this, FUNC(sf_state::coin_w));
+ map(0xc00014, 0xc00015).w(this, FUNC(sf_state::fg_scroll_w));
+ map(0xc00018, 0xc00019).w(this, FUNC(sf_state::bg_scroll_w));
+ map(0xc0001a, 0xc0001b).w(this, FUNC(sf_state::gfxctrl_w));
+ map(0xc0001d, 0xc0001d).w(this, FUNC(sf_state::soundcmd_w));
// AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w)
- AM_RANGE(0xff8000, 0xffdfff) AM_RAM
- AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_SHARE("objectram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sf_state::sfus_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x04ffff) AM_ROM
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
- AM_RANGE(0xc00004, 0xc00005) AM_READNOP
- AM_RANGE(0xc00006, 0xc00007) AM_READNOP
- AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("DSW1")
- AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2")
- AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc0000e, 0xc0000f) AM_READNOP
- AM_RANGE(0xc00010, 0xc00011) AM_WRITE8(coin_w, 0x00ff)
- AM_RANGE(0xc00014, 0xc00015) AM_WRITE(fg_scroll_w)
- AM_RANGE(0xc00018, 0xc00019) AM_WRITE(bg_scroll_w)
- AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(gfxctrl_w)
- AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE8(soundcmd_w, 0x00ff)
+ map(0xff8000, 0xffdfff).ram();
+ map(0xffe000, 0xffffff).ram().share("objectram");
+}
+
+void sf_state::sfus_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x04ffff).rom();
+ map(0x800000, 0x800fff).ram().w(this, FUNC(sf_state::videoram_w)).share("videoram");
+ map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc00001).portr("IN0");
+ map(0xc00002, 0xc00003).portr("IN1");
+ map(0xc00004, 0xc00005).nopr();
+ map(0xc00006, 0xc00007).nopr();
+ map(0xc00008, 0xc00009).portr("DSW1");
+ map(0xc0000a, 0xc0000b).portr("DSW2");
+ map(0xc0000c, 0xc0000d).portr("SYSTEM");
+ map(0xc0000e, 0xc0000f).nopr();
+ map(0xc00011, 0xc00011).w(this, FUNC(sf_state::coin_w));
+ map(0xc00014, 0xc00015).w(this, FUNC(sf_state::fg_scroll_w));
+ map(0xc00018, 0xc00019).w(this, FUNC(sf_state::bg_scroll_w));
+ map(0xc0001a, 0xc0001b).w(this, FUNC(sf_state::gfxctrl_w));
+ map(0xc0001d, 0xc0001d).w(this, FUNC(sf_state::soundcmd_w));
// AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w)
- AM_RANGE(0xff8000, 0xffdfff) AM_RAM
- AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_SHARE("objectram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sf_state::sfjp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x04ffff) AM_ROM
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN2")
- AM_RANGE(0xc00006, 0xc00007) AM_READNOP
- AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("DSW1")
- AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2")
- AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc0000e, 0xc0000f) AM_READNOP
- AM_RANGE(0xc00010, 0xc00011) AM_WRITE8(coin_w, 0x00ff)
- AM_RANGE(0xc00014, 0xc00015) AM_WRITE(fg_scroll_w)
- AM_RANGE(0xc00018, 0xc00019) AM_WRITE(bg_scroll_w)
- AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(gfxctrl_w)
- AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE8(soundcmd_w, 0x00ff)
- AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w)
- AM_RANGE(0xff8000, 0xffdfff) AM_RAM
- AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_SHARE("objectram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sf_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
-ADDRESS_MAP_END
+ map(0xff8000, 0xffdfff).ram();
+ map(0xffe000, 0xffffff).ram().share("objectram");
+}
+
+void sf_state::sfjp_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x04ffff).rom();
+ map(0x800000, 0x800fff).ram().w(this, FUNC(sf_state::videoram_w)).share("videoram");
+ map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc00001).portr("IN0");
+ map(0xc00002, 0xc00003).portr("IN1");
+ map(0xc00004, 0xc00005).portr("IN2");
+ map(0xc00006, 0xc00007).nopr();
+ map(0xc00008, 0xc00009).portr("DSW1");
+ map(0xc0000a, 0xc0000b).portr("DSW2");
+ map(0xc0000c, 0xc0000d).portr("SYSTEM");
+ map(0xc0000e, 0xc0000f).nopr();
+ map(0xc00011, 0xc00011).w(this, FUNC(sf_state::coin_w));
+ map(0xc00014, 0xc00015).w(this, FUNC(sf_state::fg_scroll_w));
+ map(0xc00018, 0xc00019).w(this, FUNC(sf_state::bg_scroll_w));
+ map(0xc0001a, 0xc0001b).w(this, FUNC(sf_state::gfxctrl_w));
+ map(0xc0001d, 0xc0001d).w(this, FUNC(sf_state::soundcmd_w));
+ map(0xc0001e, 0xc0001f).w(this, FUNC(sf_state::protection_w));
+ map(0xff8000, 0xffdfff).ram();
+ map(0xffe000, 0xffffff).ram().share("objectram");
+}
+
+void sf_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+}
/* Yes, _no_ ram */
-ADDRESS_MAP_START(sf_state::sound2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
- AM_RANGE(0x0000, 0xffff) AM_WRITENOP /* avoid cluttering up error.log */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sf_state::sound2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(msm1_5205_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm2_5205_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x02, 0x02) AM_WRITE(sound2_bank_w)
-ADDRESS_MAP_END
+void sf_state::sound2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).bankr("bank1");
+ map(0x0000, 0xffff).nopw(); /* avoid cluttering up error.log */
+}
+
+void sf_state::sound2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(sf_state::msm1_5205_w));
+ map(0x01, 0x01).w(this, FUNC(sf_state::msm2_5205_w));
+ map(0x01, 0x01).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x02, 0x02).w(this, FUNC(sf_state::sound2_bank_w));
+}
diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp
index d5e471a9b3b..f6d1521b08a 100644
--- a/src/mame/drivers/sfbonus.cpp
+++ b/src/mame/drivers/sfbonus.cpp
@@ -1212,10 +1212,11 @@ uint32_t sfbonus_state::screen_update_sfbonus(screen_device &screen, bitmap_ind1
-ADDRESS_MAP_START(sfbonus_state::sfbonus_map)
- AM_RANGE(0x0000, 0xefff) AM_ROMBANK("bank1") AM_WRITE(sfbonus_videoram_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void sfbonus_state::sfbonus_map(address_map &map)
+{
+ map(0x0000, 0xefff).bankr("bank1").w(this, FUNC(sfbonus_state::sfbonus_videoram_w));
+ map(0xf000, 0xffff).ram().share("nvram");
+}
WRITE8_MEMBER(sfbonus_state::sfbonus_bank_w)
{
@@ -1282,39 +1283,40 @@ WRITE8_MEMBER(sfbonus_state::sfbonus_2c01_w)
}
-ADDRESS_MAP_START(sfbonus_state::sfbonus_io)
- AM_RANGE(0x0400, 0x0400) AM_READ_PORT("KEY1")
- AM_RANGE(0x0408, 0x0408) AM_READ_PORT("KEY2")
- AM_RANGE(0x0410, 0x0410) AM_READ_PORT("KEY3")
+void sfbonus_state::sfbonus_io(address_map &map)
+{
+ map(0x0400, 0x0400).portr("KEY1");
+ map(0x0408, 0x0408).portr("KEY2");
+ map(0x0410, 0x0410).portr("KEY3");
- AM_RANGE(0x0418, 0x0418) AM_READ_PORT("SWITCH1")
- AM_RANGE(0x0420, 0x0420) AM_READ_PORT("SWITCH2")
- AM_RANGE(0x0428, 0x0428) AM_READ_PORT("SWITCH3")
- AM_RANGE(0x0430, 0x0430) AM_READ_PORT("SWITCH4")
- AM_RANGE(0x0438, 0x0438) AM_READ_PORT("SWITCH5")
+ map(0x0418, 0x0418).portr("SWITCH1");
+ map(0x0420, 0x0420).portr("SWITCH2");
+ map(0x0428, 0x0428).portr("SWITCH3");
+ map(0x0430, 0x0430).portr("SWITCH4");
+ map(0x0438, 0x0438).portr("SWITCH5");
- AM_RANGE(0x0800, 0x0800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0x0800, 0x0800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x0c00, 0x0c00) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0x0c01, 0x0c01) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE(0x0c02, 0x0c02) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x0c00, 0x0c00).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0c01, 0x0c01).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0c02, 0x0c02).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x1800, 0x1807) AM_WRITE(sfbonus_1800_w) AM_SHARE("1800_regs") // lamps and coin counters
+ map(0x1800, 0x1807).w(this, FUNC(sfbonus_state::sfbonus_1800_w)).share("1800_regs"); // lamps and coin counters
- AM_RANGE(0x2400, 0x241f) AM_RAM AM_SHARE("vregs")
+ map(0x2400, 0x241f).ram().share("vregs");
- AM_RANGE(0x2800, 0x2800) AM_READ(sfbonus_2800_r)
- AM_RANGE(0x2801, 0x2801) AM_READ(sfbonus_2801_r) AM_WRITE(sfbonus_2801_w) AM_SHARE("2801_regs")
+ map(0x2800, 0x2800).r(this, FUNC(sfbonus_state::sfbonus_2800_r));
+ map(0x2801, 0x2801).r(this, FUNC(sfbonus_state::sfbonus_2801_r)).w(this, FUNC(sfbonus_state::sfbonus_2801_w)).share("2801_regs");
- AM_RANGE(0x2c00, 0x2c00) AM_READ(sfbonus_2c00_r)
- AM_RANGE(0x2c01, 0x2c01) AM_READ(sfbonus_2c01_r) AM_WRITE(sfbonus_2c01_w) AM_SHARE("2c01_regs")
+ map(0x2c00, 0x2c00).r(this, FUNC(sfbonus_state::sfbonus_2c00_r));
+ map(0x2c01, 0x2c01).r(this, FUNC(sfbonus_state::sfbonus_2c01_r)).w(this, FUNC(sfbonus_state::sfbonus_2c01_w)).share("2c01_regs");
- AM_RANGE(0x3000, 0x3000) AM_WRITE(sfbonus_3000_w) AM_SHARE("3000_regs")
- AM_RANGE(0x3400, 0x3400) AM_WRITE(sfbonus_bank_w)
- AM_RANGE(0x3800, 0x3800) AM_READ(sfbonus_3800_r)
+ map(0x3000, 0x3000).w(this, FUNC(sfbonus_state::sfbonus_3000_w)).share("3000_regs");
+ map(0x3400, 0x3400).w(this, FUNC(sfbonus_state::sfbonus_bank_w));
+ map(0x3800, 0x3800).r(this, FUNC(sfbonus_state::sfbonus_3800_r));
- AM_RANGE(0x3800, 0x3807) AM_WRITE(sfbonus_3800_w) AM_SHARE("3800_regs")
-ADDRESS_MAP_END
+ map(0x3800, 0x3807).w(this, FUNC(sfbonus_state::sfbonus_3800_w)).share("3800_regs");
+}
static const gfx_layout sfbonus_layout =
@@ -1359,9 +1361,10 @@ void sfbonus_state::machine_reset()
}
-ADDRESS_MAP_START(sfbonus_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void sfbonus_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(sfbonus_state::sfbonus)
diff --git a/src/mame/drivers/sfcbox.cpp b/src/mame/drivers/sfcbox.cpp
index 9f131ec4635..270a051ebed 100644
--- a/src/mame/drivers/sfcbox.cpp
+++ b/src/mame/drivers/sfcbox.cpp
@@ -167,11 +167,12 @@ uint32_t sfcbox_state::screen_update( screen_device &screen, bitmap_rgb32 &bitma
return 0;
}
-ADDRESS_MAP_START(sfcbox_state::snes_map)
- AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes_r_bank1, snes_w_bank1)
- AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
- AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* Mirror and ROM */
-ADDRESS_MAP_END
+void sfcbox_state::snes_map(address_map &map)
+{
+ map(0x000000, 0x7dffff).rw(this, FUNC(sfcbox_state::snes_r_bank1), FUNC(sfcbox_state::snes_w_bank1));
+ map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
+ map(0x800000, 0xffffff).rw(this, FUNC(sfcbox_state::snes_r_bank2), FUNC(sfcbox_state::snes_w_bank2)); /* Mirror and ROM */
+}
READ8_MEMBER(sfcbox_state::spc_ram_100_r)
{
@@ -183,18 +184,20 @@ WRITE8_MEMBER(sfcbox_state::spc_ram_100_w)
m_spc700->spc_ram_w(space, offset + 0x100, data);
}
-ADDRESS_MAP_START(sfcbox_state::spc_mem)
- AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */
- AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */
- AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
-ADDRESS_MAP_END
+void sfcbox_state::spc_mem(address_map &map)
+{
+ map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */
+ map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */
+ map(0x0100, 0xffff).rw(this, FUNC(sfcbox_state::spc_ram_100_r), FUNC(sfcbox_state::spc_ram_100_w));
+}
-ADDRESS_MAP_START(sfcbox_state::sfcbox_map)
- AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("krom", 0)
- AM_RANGE(0x20000, 0x27fff) AM_RAM
- AM_RANGE(0x40000, 0x47fff) AM_ROM AM_REGION("grom1", 0)
- AM_RANGE(0x60000, 0x67fff) AM_ROM AM_REGION("grom2", 0)
-ADDRESS_MAP_END
+void sfcbox_state::sfcbox_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom().region("krom", 0);
+ map(0x20000, 0x27fff).ram();
+ map(0x40000, 0x47fff).rom().region("grom1", 0);
+ map(0x60000, 0x67fff).rom().region("grom2", 0);
+}
WRITE8_MEMBER( sfcbox_state::port_80_w )
@@ -283,21 +286,22 @@ WRITE8_MEMBER( sfcbox_state::snes_map_1_w )
printf("%s SRAM Size\n",sram_size[((data & 0xc0) >> 6)]);
}
-ADDRESS_MAP_START(sfcbox_state::sfcbox_io)
- AM_RANGE(0x00, 0x3f) AM_RAM // internal i/o
- AM_RANGE(0x0b, 0x0b) AM_DEVWRITE("mb90082",mb90082_device,write)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("KEY") AM_WRITE(port_80_w) // Keyswitch and Button Inputs / SNES Transfer and Misc Output
- AM_RANGE(0x81, 0x81) AM_READWRITE(port_81_r,port_81_w) // SNES Transfer and Misc Input / Misc Output
+void sfcbox_state::sfcbox_io(address_map &map)
+{
+ map(0x00, 0x3f).ram(); // internal i/o
+ map(0x0b, 0x0b).w(m_mb90082, FUNC(mb90082_device::write));
+ map(0x80, 0x80).portr("KEY").w(this, FUNC(sfcbox_state::port_80_w)); // Keyswitch and Button Inputs / SNES Transfer and Misc Output
+ map(0x81, 0x81).rw(this, FUNC(sfcbox_state::port_81_r), FUNC(sfcbox_state::port_81_w)); // SNES Transfer and Misc Input / Misc Output
// AM_RANGE(0x82, 0x82) // Unknown/unused
- AM_RANGE(0x83, 0x83) AM_READWRITE(port_83_r,port_83_w) // Joypad Input/Status / Joypad Output/Control
+ map(0x83, 0x83).rw(this, FUNC(sfcbox_state::port_83_r), FUNC(sfcbox_state::port_83_w)); // Joypad Input/Status / Joypad Output/Control
// AM_RANGE(0x84, 0x84) // Joypad 1, MSB (1st 8 bits) (eg. Bit7=ButtonB, 0=Low=Pressed)
// AM_RANGE(0x85, 0x85) // Joypad 1, LSB (2nd 8 bits) (eg. Bit0=LSB of ID, 0=Low=One)
// AM_RANGE(0x86, 0x86) // Joypad 2, MSB (1st 8 bits) (eg. Bit7=ButtonB, 0=Low=Pressed)
// AM_RANGE(0x87, 0x87) // Joypad 2, LSB (2nd 8 bits) (eg. Bit0=LSB of ID, 0=Low=One)
- AM_RANGE(0xa0, 0xa0) AM_READ_PORT("RTC_R") AM_WRITE_PORT("RTC_W") // Real Time Clock
- AM_RANGE(0xc0, 0xc0) AM_WRITE(snes_map_0_w) // SNES Mapping Register 0
- AM_RANGE(0xc1, 0xc1) AM_WRITE(snes_map_1_w) // SNES Mapping Register 1
-ADDRESS_MAP_END
+ map(0xa0, 0xa0).portr("RTC_R").portw("RTC_W"); // Real Time Clock
+ map(0xc0, 0xc0).w(this, FUNC(sfcbox_state::snes_map_0_w)); // SNES Mapping Register 0
+ map(0xc1, 0xc1).w(this, FUNC(sfcbox_state::snes_map_1_w)); // SNES Mapping Register 1
+}
static INPUT_PORTS_START( snes )
diff --git a/src/mame/drivers/sfkick.cpp b/src/mame/drivers/sfkick.cpp
index 547162c9e88..00aa18f8301 100644
--- a/src/mame/drivers/sfkick.cpp
+++ b/src/mame/drivers/sfkick.cpp
@@ -465,40 +465,44 @@ WRITE8_MEMBER(sfkick_state::page3_w)
-ADDRESS_MAP_START(sfkick_state::sfkick_map)
- AM_RANGE( 0x0000, 0x1fff) AM_ROMBANK("bank1")
- AM_RANGE( 0x2000, 0x3fff) AM_ROMBANK("bank2")
- AM_RANGE( 0x4000, 0x5fff) AM_ROMBANK("bank3")
- AM_RANGE( 0x6000, 0x7fff) AM_ROMBANK("bank4")
- AM_RANGE( 0x8000, 0x9fff) AM_ROMBANK("bank5")
- AM_RANGE( 0xa000, 0xbfff) AM_ROMBANK("bank6")
- AM_RANGE( 0xc000, 0xdfff) AM_ROMBANK("bank7")
- AM_RANGE( 0xe000, 0xffff) AM_ROMBANK("bank8")
- AM_RANGE( 0x0000, 0x3fff) AM_WRITE(page0_w )
- AM_RANGE( 0x4000, 0x7fff) AM_WRITE(page1_w )
- AM_RANGE( 0x8000, 0xbfff) AM_WRITE(page2_w )
- AM_RANGE( 0xc000, 0xffff) AM_WRITE(page3_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sfkick_state::sfkick_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0xa0, 0xa7) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE( "v9938", v9938_device, read, write)
- AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0xb4, 0xb5) AM_RAM /* loopback ? req by sfkicka (MSX Bios leftover)*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sfkick_state::sfkick_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sfkick_state::sfkick_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x05) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
-ADDRESS_MAP_END
+void sfkick_state::sfkick_map(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bank1");
+ map(0x2000, 0x3fff).bankr("bank2");
+ map(0x4000, 0x5fff).bankr("bank3");
+ map(0x6000, 0x7fff).bankr("bank4");
+ map(0x8000, 0x9fff).bankr("bank5");
+ map(0xa000, 0xbfff).bankr("bank6");
+ map(0xc000, 0xdfff).bankr("bank7");
+ map(0xe000, 0xffff).bankr("bank8");
+ map(0x0000, 0x3fff).w(this, FUNC(sfkick_state::page0_w));
+ map(0x4000, 0x7fff).w(this, FUNC(sfkick_state::page1_w));
+ map(0x8000, 0xbfff).w(this, FUNC(sfkick_state::page2_w));
+ map(0xc000, 0xffff).w(this, FUNC(sfkick_state::page3_w));
+}
+
+void sfkick_state::sfkick_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0xa0, 0xa7).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb4, 0xb5).ram(); /* loopback ? req by sfkicka (MSX Bios leftover)*/
+}
+
+void sfkick_state::sfkick_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+}
+
+void sfkick_state::sfkick_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x04, 0x05).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
WRITE8_MEMBER(sfkick_state::ppi_port_c_w)
{
diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp
index de01c6f7343..b4624a0666c 100644
--- a/src/mame/drivers/sg1000.cpp
+++ b/src/mame/drivers/sg1000.cpp
@@ -123,48 +123,52 @@ WRITE8_MEMBER( sg1000_state::peripheral_w )
ADDRESS_MAP( sg1000_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(sg1000_state::sg1000_map)
- AM_RANGE(0x0000, 0xbfff) AM_DEVREADWRITE(CARTSLOT_TAG, sega8_cart_slot_device, read_cart, write_cart)
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3c00) AM_RAM
-ADDRESS_MAP_END
+void sg1000_state::sg1000_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(m_cart, FUNC(sega8_cart_slot_device::read_cart), FUNC(sega8_cart_slot_device::write_cart));
+ map(0xc000, 0xc3ff).mirror(0x3c00).ram();
+}
/*-------------------------------------------------
ADDRESS_MAP( sg1000_io_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(sg1000_state::sg1000_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write)
- AM_RANGE(0xdc, 0xdf) AM_READWRITE(peripheral_r, peripheral_w)
-ADDRESS_MAP_END
+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, 0x80).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
+ map(0xdc, 0xdf).rw(this, FUNC(sg1000_state::peripheral_r), FUNC(sg1000_state::peripheral_w));
+}
/*-------------------------------------------------
ADDRESS_MAP( omv_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(sg1000_state::omv_map)
- AM_RANGE(0x0000, 0xbfff) AM_READWRITE(omv_r, omv_w)
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM
-ADDRESS_MAP_END
+void sg1000_state::omv_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(this, FUNC(sg1000_state::omv_r), FUNC(sg1000_state::omv_w));
+ map(0xc000, 0xc7ff).mirror(0x3800).ram();
+}
/*-------------------------------------------------
ADDRESS_MAP( omv_io_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(sg1000_state::omv_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x38) AM_READ_PORT("C0")
- AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x38) AM_READ_PORT("C1")
- AM_RANGE(0xc2, 0xc2) AM_MIRROR(0x38) AM_READ_PORT("C2")
- AM_RANGE(0xc3, 0xc3) AM_MIRROR(0x38) AM_READ_PORT("C3")
- AM_RANGE(0xc4, 0xc4) AM_MIRROR(0x3a) AM_READ_PORT("C4")
- AM_RANGE(0xc5, 0xc5) AM_MIRROR(0x3a) AM_READ_PORT("C5")
-ADDRESS_MAP_END
+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, 0x80).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
+ map(0xc0, 0xc0).mirror(0x38).portr("C0");
+ map(0xc1, 0xc1).mirror(0x38).portr("C1");
+ map(0xc2, 0xc2).mirror(0x38).portr("C2");
+ map(0xc3, 0xc3).mirror(0x38).portr("C3");
+ map(0xc4, 0xc4).mirror(0x3a).portr("C4");
+ map(0xc5, 0xc5).mirror(0x3a).portr("C5");
+}
/*-------------------------------------------------
ADDRESS_MAP( sc3000_map )
@@ -202,26 +206,28 @@ ADDRESS_MAP_END
ADDRESS_MAP( sf7000_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(sf7000_state::sf7000_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void sf7000_state::sf7000_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1").bankw("bank2");
+ map(0x4000, 0xffff).ram();
+}
/*-------------------------------------------------
ADDRESS_MAP( sf7000_io_map )
-------------------------------------------------*/
-ADDRESS_MAP_START(sf7000_state::sf7000_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write)
- AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write)
- AM_RANGE(0xdc, 0xdf) AM_READWRITE(peripheral_r, peripheral_w)
- AM_RANGE(0xe0, 0xe1) AM_DEVICE(UPD765_TAG, upd765a_device, map)
- AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE(UPD9255_1_TAG, i8255_device, read, write)
- AM_RANGE(0xe8, 0xe8) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0xe9, 0xe9) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+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, 0xbe).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
+ map(0xbf, 0xbf).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
+ map(0xdc, 0xdf).rw(this, 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));
+ map(0xe8, 0xe8).rw(UPD8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xe9, 0xe9).rw(UPD8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp
index e98326d7a26..22c6e16dae6 100644
--- a/src/mame/drivers/sg1000a.cpp
+++ b/src/mame/drivers/sg1000a.cpp
@@ -306,32 +306,36 @@ public:
*
*************************************/
-ADDRESS_MAP_START(sg1000a_state::program_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_MIRROR(0x400)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sg1000a_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sg1000a_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("snsnd", sn76489a_device, write)
- AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
- AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sg1000a_state::sderby2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("snsnd", sn76489a_device, write)
- AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
+void sg1000a_state::program_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram().mirror(0x400);
+}
+
+void sg1000a_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).rom().region("maincpu", 0x8000);
+}
+
+void sg1000a_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::write));
+ map(0xbe, 0xbe).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0xbf, 0xbf).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
+ map(0xdc, 0xdf).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void sg1000a_state::sderby2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::write));
+ map(0xbe, 0xbe).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write));
+ map(0xbf, 0xbf).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));
// AM_RANGE(0xc0, 0xc1) NEC D8251AC UART
- AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // NEC D8255AC-2
-ADDRESS_MAP_END
+ map(0xc8, 0xcb).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // NEC D8255AC-2
+}
/*************************************
*
diff --git a/src/mame/drivers/sh4robot.cpp b/src/mame/drivers/sh4robot.cpp
index 8d3776e4f8a..5664c49e4c6 100644
--- a/src/mame/drivers/sh4robot.cpp
+++ b/src/mame/drivers/sh4robot.cpp
@@ -49,17 +49,19 @@ private:
};
-ADDRESS_MAP_START(sh4robot_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x00000fff) AM_ROM
- AM_RANGE(0x08000000, 0x08ffffff) AM_RAM // SDRAM 1
- AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM // SDRAM 2
- AM_RANGE(0xa0000000, 0xa0000fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sh4robot_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void sh4robot_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x00000fff).rom();
+ map(0x08000000, 0x08ffffff).ram(); // SDRAM 1
+ map(0x0c000000, 0x0cffffff).ram(); // SDRAM 2
+ map(0xa0000000, 0xa0000fff).rom().region("maincpu", 0);
+}
+
+void sh4robot_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+}
static INPUT_PORTS_START( sh4robot )
INPUT_PORTS_END
diff --git a/src/mame/drivers/shadfrce.cpp b/src/mame/drivers/shadfrce.cpp
index 39be5021952..a07375e3083 100644
--- a/src/mame/drivers/shadfrce.cpp
+++ b/src/mame/drivers/shadfrce.cpp
@@ -349,34 +349,36 @@ TIMER_DEVICE_CALLBACK_MEMBER(shadfrce_state::scanline)
/* Memory Maps */
-ADDRESS_MAP_START(shadfrce_state::shadfrce_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(bg0videoram_w) AM_SHARE("bg0videoram") /* video */
- AM_RANGE(0x101000, 0x101fff) AM_RAM
- AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") /* bg 2 */
- AM_RANGE(0x102800, 0x103fff) AM_RAM
- AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x142000, 0x143fff) AM_RAM AM_SHARE("spvideoram") /* sprites */
- AM_RANGE(0x180000, 0x187fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(bg0scrollx_w) /* SCROLL X */
- AM_RANGE(0x1c0002, 0x1c0003) AM_WRITE(bg0scrolly_w) /* SCROLL Y */
- AM_RANGE(0x1c0004, 0x1c0005) AM_WRITE(bg1scrollx_w) /* SCROLL X */
- AM_RANGE(0x1c0006, 0x1c0007) AM_WRITE(bg1scrolly_w) /* SCROLL Y */
- AM_RANGE(0x1c0008, 0x1c0009) AM_WRITENOP /* ?? */
- AM_RANGE(0x1c000a, 0x1c000b) AM_READNOP AM_WRITE(flip_screen)
- AM_RANGE(0x1c000c, 0x1c000d) AM_WRITENOP /* ?? */
- AM_RANGE(0x1d0000, 0x1d0005) AM_WRITE(irq_ack_w)
- AM_RANGE(0x1d0006, 0x1d0007) AM_WRITE(irq_w)
- AM_RANGE(0x1d0008, 0x1d0009) AM_WRITE(scanline_w)
- AM_RANGE(0x1d000c, 0x1d000d) AM_READNOP AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x1d000c, 0x1d000d) AM_WRITE8(screen_brt_w, 0x00ff)
- AM_RANGE(0x1d0010, 0x1d0011) AM_WRITENOP /* ?? */
- AM_RANGE(0x1d0012, 0x1d0013) AM_WRITENOP /* ?? */
- AM_RANGE(0x1d0014, 0x1d0015) AM_WRITENOP /* ?? */
- AM_RANGE(0x1d0016, 0x1d0017) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x1d0020, 0x1d0027) AM_READ(input_ports_r)
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
-ADDRESS_MAP_END
+void shadfrce_state::shadfrce_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).ram().w(this, FUNC(shadfrce_state::bg0videoram_w)).share("bg0videoram"); /* video */
+ map(0x101000, 0x101fff).ram();
+ map(0x102000, 0x1027ff).ram().w(this, FUNC(shadfrce_state::bg1videoram_w)).share("bg1videoram"); /* bg 2 */
+ map(0x102800, 0x103fff).ram();
+ map(0x140000, 0x141fff).ram().w(this, FUNC(shadfrce_state::fgvideoram_w)).share("fgvideoram");
+ map(0x142000, 0x143fff).ram().share("spvideoram"); /* sprites */
+ map(0x180000, 0x187fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1c0000, 0x1c0001).w(this, FUNC(shadfrce_state::bg0scrollx_w)); /* SCROLL X */
+ map(0x1c0002, 0x1c0003).w(this, FUNC(shadfrce_state::bg0scrolly_w)); /* SCROLL Y */
+ map(0x1c0004, 0x1c0005).w(this, FUNC(shadfrce_state::bg1scrollx_w)); /* SCROLL X */
+ map(0x1c0006, 0x1c0007).w(this, FUNC(shadfrce_state::bg1scrolly_w)); /* SCROLL Y */
+ map(0x1c0008, 0x1c0009).nopw(); /* ?? */
+ map(0x1c000a, 0x1c000b).nopr().w(this, FUNC(shadfrce_state::flip_screen));
+ map(0x1c000c, 0x1c000d).nopw(); /* ?? */
+ map(0x1d0000, 0x1d0005).w(this, FUNC(shadfrce_state::irq_ack_w));
+ map(0x1d0006, 0x1d0007).w(this, FUNC(shadfrce_state::irq_w));
+ map(0x1d0008, 0x1d0009).w(this, FUNC(shadfrce_state::scanline_w));
+ map(0x1d000c, 0x1d000d).nopr();
+ map(0x1d000c, 0x1d000c).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1d000d, 0x1d000d).w(this, FUNC(shadfrce_state::screen_brt_w));
+ map(0x1d0010, 0x1d0011).nopw(); /* ?? */
+ map(0x1d0012, 0x1d0013).nopw(); /* ?? */
+ map(0x1d0014, 0x1d0015).nopw(); /* ?? */
+ map(0x1d0016, 0x1d0017).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x1d0020, 0x1d0027).r(this, FUNC(shadfrce_state::input_ports_r));
+ map(0x1f0000, 0x1fffff).ram();
+}
/* and the sound cpu */
@@ -385,15 +387,16 @@ WRITE8_MEMBER(shadfrce_state::oki_bankswitch_w)
m_oki->set_rom_bank(data & 1);
}
-ADDRESS_MAP_START(shadfrce_state::shadfrce_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void shadfrce_state::shadfrce_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd800, 0xd800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).w(this, FUNC(shadfrce_state::oki_bankswitch_w));
+ map(0xf000, 0xffff).ram();
+}
/* Input Ports */
diff --git a/src/mame/drivers/shangha3.cpp b/src/mame/drivers/shangha3.cpp
index 05a4d7f998d..87ca8d70ca2 100644
--- a/src/mame/drivers/shangha3.cpp
+++ b/src/mame/drivers/shangha3.cpp
@@ -115,68 +115,73 @@ WRITE16_MEMBER(shangha3_state::irq_ack_w)
m_maincpu->set_input_line(4, CLEAR_LINE);
}
-ADDRESS_MAP_START(shangha3_state::shangha3_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w)
- AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w)
- AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w)
- AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("aysnd", ym2149_device, data_r, 0x00ff)
- AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("aysnd", ym2149_device, data_w, 0x00ff)
- AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("aysnd", ym2149_device, address_w, 0x00ff)
- AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w)
- AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
- AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangha3_state::heberpop_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW")
- AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w)
- AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w)
- AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w)
- AM_RANGE(0x20000e, 0x20000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
- AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
- AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangha3_state::blocken_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") AM_WRITENOP // w -> unknown purpose
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
- AM_RANGE(0x100008, 0x100009) AM_WRITE(blitter_go_w)
- AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?)
- AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w)
- AM_RANGE(0x10000e, 0x10000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
- AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
- AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(shangha3_state::heberpop_sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangha3_state::heberpop_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void shangha3_state::shangha3_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x200001).portr("INPUTS");
+ map(0x200002, 0x200003).portr("SYSTEM");
+ map(0x200008, 0x200009).w(this, FUNC(shangha3_state::blitter_go_w));
+ map(0x20000a, 0x20000b).w(this, FUNC(shangha3_state::irq_ack_w));
+ map(0x20000c, 0x20000d).w(this, FUNC(shangha3_state::shangha3_coinctrl_w));
+ map(0x20001f, 0x20001f).r("aysnd", FUNC(ym2149_device::data_r));
+ map(0x20002f, 0x20002f).w("aysnd", FUNC(ym2149_device::data_w));
+ map(0x20003f, 0x20003f).w("aysnd", FUNC(ym2149_device::address_w));
+ map(0x20004e, 0x20004f).rw(this, FUNC(shangha3_state::shangha3_prot_r), FUNC(shangha3_state::shangha3_prot_w));
+ map(0x20006f, 0x20006f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */
+ map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w));
+ map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w));
+}
+
+void shangha3_state::heberpop_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x200001).portr("INPUTS");
+ map(0x200002, 0x200003).portr("SYSTEM");
+ map(0x200004, 0x200005).portr("DSW");
+ map(0x200008, 0x200009).w(this, FUNC(shangha3_state::blitter_go_w));
+ map(0x20000a, 0x20000b).w(this, FUNC(shangha3_state::irq_ack_w));
+ map(0x20000c, 0x20000d).w(this, FUNC(shangha3_state::heberpop_coinctrl_w));
+ map(0x20000f, 0x20000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */
+ map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w));
+ map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w));
+ map(0x800000, 0xb7ffff).rom().region("gfx1", 0);
+}
+
+void shangha3_state::blocken_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100001).portr("INPUTS");
+ map(0x100002, 0x100003).portr("SYSTEM").nopw(); // w -> unknown purpose
+ map(0x100004, 0x100005).portr("DSW");
+ map(0x100008, 0x100009).w(this, FUNC(shangha3_state::blitter_go_w));
+ map(0x10000a, 0x10000b).nopr().w(this, FUNC(shangha3_state::irq_ack_w)); // r -> unknown purpose (value doesn't matter, left-over?)
+ map(0x10000c, 0x10000d).w(this, FUNC(shangha3_state::blocken_coinctrl_w));
+ map(0x10000f, 0x10000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */
+ map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w));
+ map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w));
+ map(0x800000, 0xb7ffff).rom().region("gfx1", 0);
+}
+
+
+void shangha3_state::heberpop_sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void shangha3_state::heberpop_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x80, 0x80).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( shangha3 )
diff --git a/src/mame/drivers/shanghai.cpp b/src/mame/drivers/shanghai.cpp
index 1213adeb016..1ac41f51b5e 100644
--- a/src/mame/drivers/shanghai.cpp
+++ b/src/mame/drivers/shanghai.cpp
@@ -100,71 +100,77 @@ WRITE8_MEMBER(shanghai_state::shanghai_coin_w)
machine().bookkeeping().coin_counter_w(1,data & 2);
}
-ADDRESS_MAP_START(shanghai_state::shanghai_map)
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x80000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(shanghai_state::shangha2_map)
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x041ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x80000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(shanghai_state::shanghai_portmap)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
- AM_RANGE(0x40, 0x41) AM_READ_PORT("P1")
- AM_RANGE(0x44, 0x45) AM_READ_PORT("P2")
- AM_RANGE(0x48, 0x49) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x4c, 0x4d) AM_WRITE8(shanghai_coin_w,0x00ff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(shanghai_state::shangha2_portmap)
- AM_RANGE(0x00, 0x01) AM_READ_PORT("P1")
- AM_RANGE(0x10, 0x11) AM_READ_PORT("P2")
- AM_RANGE(0x20, 0x21) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x32, 0x33) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
- AM_RANGE(0x50, 0x51) AM_WRITE8(shanghai_coin_w,0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shanghai_state::kothello_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM
- AM_RANGE(0x08010, 0x08011) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x08012, 0x08013) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x09010, 0x09011) AM_READ_PORT("P1")
- AM_RANGE(0x09012, 0x09013) AM_READ_PORT("P2")
- AM_RANGE(0x09014, 0x09015) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x09016, 0x0901f) AM_WRITENOP // 0x9016 is set to 0 at the boot
- AM_RANGE(0x0a000, 0x0a1ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0b010, 0x0b01f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0x80000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shanghai_state::kothello_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm", seibu_adpcm_device, adr_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm", seibu_adpcm_device, ctl_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
+void shanghai_state::shanghai_map(address_map &map)
+{
+ map(0x00000, 0x03fff).ram();
+ map(0x80000, 0xfffff).rom();
+}
+
+
+void shanghai_state::shangha2_map(address_map &map)
+{
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x041ff).w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x80000, 0xfffff).rom();
+}
+
+
+void shanghai_state::shanghai_portmap(address_map &map)
+{
+ map(0x00, 0x01).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x02, 0x03).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x20, 0x23).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
+ map(0x40, 0x41).portr("P1");
+ map(0x44, 0x45).portr("P2");
+ map(0x48, 0x49).portr("SYSTEM");
+ map(0x4c, 0x4c).w(this, FUNC(shanghai_state::shanghai_coin_w));
+}
+
+
+void shanghai_state::shangha2_portmap(address_map &map)
+{
+ map(0x00, 0x01).portr("P1");
+ map(0x10, 0x11).portr("P2");
+ map(0x20, 0x21).portr("SYSTEM");
+ map(0x30, 0x31).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x32, 0x33).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x40, 0x43).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
+ map(0x50, 0x50).w(this, FUNC(shanghai_state::shanghai_coin_w));
+}
+
+void shanghai_state::kothello_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x08010, 0x08011).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x08012, 0x08013).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x09010, 0x09011).portr("P1");
+ map(0x09012, 0x09013).portr("P2");
+ map(0x09014, 0x09015).portr("SYSTEM");
+ map(0x09016, 0x0901f).nopw(); // 0x9016 is set to 0 at the boot
+ map(0x0a000, 0x0a1ff).w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x0b010, 0x0b01f).rw("seibu_sound", FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0x80000, 0xfffff).rom();
+}
+
+void shanghai_state::kothello_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w("seibu_sound", FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w("seibu_sound", FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w("seibu_sound", FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w("seibu_sound", FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4005, 0x4006).w("adpcm", FUNC(seibu_adpcm_device::adr_w));
+ map(0x4007, 0x4007).w("seibu_sound", FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw("seibu_sound", FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r("seibu_sound", FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r("seibu_sound", FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w("seibu_sound", FUNC(seibu_sound_device::main_data_w));
+ map(0x401a, 0x401a).w("adpcm", FUNC(seibu_adpcm_device::ctl_w));
+ map(0x401b, 0x401b).w("seibu_sound", FUNC(seibu_sound_device::coin_w));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
static INPUT_PORTS_START( kothello )
SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
@@ -384,9 +390,10 @@ static INPUT_PORTS_START( shangha2 )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
INPUT_PORTS_END
-ADDRESS_MAP_START(shanghai_state::hd63484_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void shanghai_state::hd63484_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
MACHINE_CONFIG_START(shanghai_state::shanghai)
diff --git a/src/mame/drivers/shangkid.cpp b/src/mame/drivers/shangkid.cpp
index 65e30df2195..16ba388275a 100644
--- a/src/mame/drivers/shangkid.cpp
+++ b/src/mame/drivers/shangkid.cpp
@@ -276,93 +276,102 @@ GFXDECODE_END
/***************************************************************************************/
-ADDRESS_MAP_START(shangkid_state::chinhero_main_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w)
- AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w)
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW")
- AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2")
- AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1")
- AM_RANGE(0xc000, 0xc002) AM_WRITEONLY AM_SHARE("videoreg")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangkid_state::shangkid_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w)
- AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w)
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW")
- AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2")
- AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1")
- AM_RANGE(0xc000, 0xc002) AM_WRITEONLY AM_SHARE("videoreg")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
+void shangkid_state::chinhero_main_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w));
+ map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w));
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).portr("DSW");
+ map(0xb801, 0xb801).portr("SYSTEM");
+ map(0xb802, 0xb802).portr("P2");
+ map(0xb803, 0xb803).portr("P1");
+ map(0xc000, 0xc002).writeonly().share("videoreg");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram");
+ map(0xe000, 0xfdff).ram().share("share2");
+ map(0xfe00, 0xffff).ram().share("spriteram");
+}
+
+void shangkid_state::shangkid_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w));
+ map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w));
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).portr("DSW");
+ map(0xb801, 0xb801).portr("SYSTEM");
+ map(0xb802, 0xb802).portr("P2");
+ map(0xb803, 0xb803).portr("P1");
+ map(0xc000, 0xc002).writeonly().share("videoreg");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram");
+ map(0xe000, 0xfdff).ram().share("share2");
+ map(0xfe00, 0xffff).ram().share("spriteram");
+}
/***************************************************************************************/
-ADDRESS_MAP_START(shangkid_state::chinhero_bbx_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w)
- AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w)
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW")
- AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2")
- AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangkid_state::shangkid_bbx_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w)
- AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w)
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW")
- AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2")
- AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangkid_state::chinhero_bbx_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangkid_state::shangkid_bbx_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void shangkid_state::chinhero_bbx_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w));
+ map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w));
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).portr("DSW");
+ map(0xb801, 0xb801).portr("SYSTEM");
+ map(0xb802, 0xb802).portr("P2");
+ map(0xb803, 0xb803).portr("P1");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram");
+ map(0xe000, 0xfdff).ram().share("share2");
+ map(0xfe00, 0xffff).ram().share("spriteram");
+}
+
+void shangkid_state::shangkid_bbx_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w));
+ map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w));
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).portr("DSW");
+ map(0xb801, 0xb801).portr("SYSTEM");
+ map(0xb802, 0xb802).portr("P2");
+ map(0xb803, 0xb803).portr("P1");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram");
+ map(0xe000, 0xfdff).ram().share("share2");
+ map(0xfe00, 0xffff).ram().share("spriteram");
+}
+
+void shangkid_state::chinhero_bbx_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::address_data_w));
+}
+
+void shangkid_state::shangkid_bbx_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::address_data_w));
+}
/***************************************************************************************/
-ADDRESS_MAP_START(shangkid_state::chinhero_sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_MIRROR(0x0800)
-ADDRESS_MAP_END
+void shangkid_state::chinhero_sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram().mirror(0x0800);
+}
-ADDRESS_MAP_START(shangkid_state::shangkid_sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank2") /* sample player writes to ROM area */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_MIRROR(0x0800)
-ADDRESS_MAP_END
+void shangkid_state::shangkid_sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).bankr("bank2"); /* sample player writes to ROM area */
+ map(0xe000, 0xe7ff).ram().mirror(0x0800);
+}
-ADDRESS_MAP_START(shangkid_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void shangkid_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(shangkid_state::soundlatch_r)).w("dac", FUNC(dac_byte_interface::write));
+}
/***************************************************************************************/
@@ -453,25 +462,27 @@ MACHINE_CONFIG_END
-ADDRESS_MAP_START(shangkid_state::dynamski_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("videoram") /* tilemap */
- AM_RANGE(0xc800, 0xcbff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM
- AM_RANGE(0xd800, 0xdbff) AM_RAM
- AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe801, 0xe801) AM_READ_PORT("P1")
- AM_RANGE(0xe802, 0xe802) AM_READ_PORT("P2")
- AM_RANGE(0xe803, 0xe803) AM_READ_PORT("DSW")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM /* work ram */
-ADDRESS_MAP_END
+void shangkid_state::dynamski_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().share("videoram"); /* tilemap */
+ map(0xc800, 0xcbff).ram();
+ map(0xd000, 0xd3ff).ram();
+ map(0xd800, 0xdbff).ram();
+ map(0xe000, 0xe007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xe800, 0xe800).portr("SYSTEM");
+ map(0xe801, 0xe801).portr("P1");
+ map(0xe802, 0xe802).portr("P2");
+ map(0xe803, 0xe803).portr("DSW");
+ map(0xf000, 0xf7ff).ram(); /* work ram */
+}
-ADDRESS_MAP_START(shangkid_state::dynamski_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void shangkid_state::dynamski_portmap(address_map &map)
+{
+ map.global_mask(0xff);
/* ports are reversed */
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+ map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::data_address_w));
+}
MACHINE_CONFIG_START(shangkid_state::dynamski)
diff --git a/src/mame/drivers/shaolins.cpp b/src/mame/drivers/shaolins.cpp
index 04b39935a8d..aa924427305 100644
--- a/src/mame/drivers/shaolins.cpp
+++ b/src/mame/drivers/shaolins.cpp
@@ -32,31 +32,32 @@ TIMER_DEVICE_CALLBACK_MEMBER(shaolins_state::interrupt)
-ADDRESS_MAP_START(shaolins_state::shaolins_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(nmi_w) /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */
+void shaolins_state::shaolins_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(shaolins_state::nmi_w)); /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */
/* bit 3, bit 4 = coin counters */
- AM_RANGE(0x0100, 0x0100) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0300, 0x0300) AM_DEVWRITE("sn1", sn76489a_device, write) /* trigger chip to read from latch. The program always */
- AM_RANGE(0x0400, 0x0400) AM_DEVWRITE("sn2", sn76489a_device, write) /* writes the same number as the latch, so we don't */
+ 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 */
/* bother emulating them. */
- AM_RANGE(0x0500, 0x0500) AM_READ_PORT("DSW1")
- AM_RANGE(0x0600, 0x0600) AM_READ_PORT("DSW2")
- AM_RANGE(0x0700, 0x0700) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0701, 0x0701) AM_READ_PORT("P1")
- AM_RANGE(0x0702, 0x0702) AM_READ_PORT("P2")
- AM_RANGE(0x0703, 0x0703) AM_READ_PORT("DSW3")
- AM_RANGE(0x0800, 0x0800) AM_WRITENOP /* latch for 76496 #0 */
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* latch for 76496 #1 */
- AM_RANGE(0x1800, 0x1800) AM_WRITE(palettebank_w)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(scroll_w)
- AM_RANGE(0x2800, 0x2bff) AM_RAM /* RAM BANK 2 */
- AM_RANGE(0x3000, 0x30ff) AM_RAM /* RAM BANK 1 */
- AM_RANGE(0x3100, 0x33ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x5fff) AM_ROM /* Machine checks for extra rom */
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0500, 0x0500).portr("DSW1");
+ map(0x0600, 0x0600).portr("DSW2");
+ map(0x0700, 0x0700).portr("SYSTEM");
+ map(0x0701, 0x0701).portr("P1");
+ map(0x0702, 0x0702).portr("P2");
+ map(0x0703, 0x0703).portr("DSW3");
+ map(0x0800, 0x0800).nopw(); /* latch for 76496 #0 */
+ map(0x1000, 0x1000).nopw(); /* latch for 76496 #1 */
+ map(0x1800, 0x1800).w(this, FUNC(shaolins_state::palettebank_w));
+ map(0x2000, 0x2000).w(this, FUNC(shaolins_state::scroll_w));
+ map(0x2800, 0x2bff).ram(); /* RAM BANK 2 */
+ map(0x3000, 0x30ff).ram(); /* RAM BANK 1 */
+ map(0x3100, 0x33ff).ram().share("spriteram");
+ map(0x3800, 0x3bff).ram().w(this, FUNC(shaolins_state::colorram_w)).share("colorram");
+ map(0x3c00, 0x3fff).ram().w(this, FUNC(shaolins_state::videoram_w)).share("videoram");
+ map(0x4000, 0x5fff).rom(); /* Machine checks for extra rom */
+ map(0x6000, 0xffff).rom();
+}
static INPUT_PORTS_START( shaolins )
diff --git a/src/mame/drivers/shisen.cpp b/src/mame/drivers/shisen.cpp
index ca0fc67b533..cb5ed7f4196 100644
--- a/src/mame/drivers/shisen.cpp
+++ b/src/mame/drivers/shisen.cpp
@@ -49,37 +49,41 @@ WRITE8_MEMBER(shisen_state::coin_w)
-ADDRESS_MAP_START(shisen_state::shisen_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shisen_state::shisen_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(dsw1_r, coin_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE(bankswitch_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("P2")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("COIN")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shisen_state::shisen_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xfd00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shisen_state::shisen_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, shisen_sample_addr_w)
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
-ADDRESS_MAP_END
+void shisen_state::shisen_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc800, 0xcaff).ram().w(this, FUNC(shisen_state::paletteram_w)).share("paletteram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(shisen_state::videoram_w)).share("videoram");
+ map(0xe000, 0xffff).ram();
+}
+
+void shisen_state::shisen_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(shisen_state::dsw1_r), FUNC(shisen_state::coin_w));
+ map(0x01, 0x01).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x02, 0x02).portr("P1").w(this, FUNC(shisen_state::bankswitch_w));
+ map(0x03, 0x03).portr("P2");
+ map(0x04, 0x04).portr("COIN");
+}
+
+void shisen_state::shisen_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xfd00, 0xffff).ram();
+}
+
+void shisen_state::shisen_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::shisen_sample_addr_w));
+ map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w));
+ map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r));
+}
static INPUT_PORTS_START( shisen )
diff --git a/src/mame/drivers/shootaway2.cpp b/src/mame/drivers/shootaway2.cpp
index dfde3bbb7b8..07e97042578 100644
--- a/src/mame/drivers/shootaway2.cpp
+++ b/src/mame/drivers/shootaway2.cpp
@@ -66,14 +66,16 @@ uint32_t m74_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
return 0;
}
-ADDRESS_MAP_START(m74_state::c68_map)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(m74_state::sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("subcpu", 0)
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void m74_state::c68_map(address_map &map)
+{
+ map(0x8000, 0xffff).rom().region("maincpu", 0x0000);
+}
+
+void m74_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("subcpu", 0);
+ map(0x8000, 0xffff).ram();
+}
static INPUT_PORTS_START( m74 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/shootout.cpp b/src/mame/drivers/shootout.cpp
index 1ab752e6496..a47202a5a47 100644
--- a/src/mame/drivers/shootout.cpp
+++ b/src/mame/drivers/shootout.cpp
@@ -103,46 +103,49 @@ WRITE8_MEMBER(shootout_state::coincounter_w)
/*******************************************************************************/
-ADDRESS_MAP_START(shootout_state::shootout_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1") AM_WRITE(bankswitch_w)
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1") AM_WRITE(flipscreen_w)
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2") AM_WRITE(coincounter_w)
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2") AM_WRITE(sound_cpu_command_w)
- AM_RANGE(0x1004, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x19ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(textram_w) AM_SHARE("textram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shootout_state::shootouj_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1")
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1")
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2")
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2")
- AM_RANGE(0x1004, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1800) AM_WRITE(coincounter_w)
- AM_RANGE(0x2000, 0x21ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(textram_w) AM_SHARE("textram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000)
-ADDRESS_MAP_END
+void shootout_state::shootout_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1000).portr("DSW1").w(this, FUNC(shootout_state::bankswitch_w));
+ map(0x1001, 0x1001).portr("P1").w(this, FUNC(shootout_state::flipscreen_w));
+ map(0x1002, 0x1002).portr("P2").w(this, FUNC(shootout_state::coincounter_w));
+ map(0x1003, 0x1003).portr("DSW2").w(this, FUNC(shootout_state::sound_cpu_command_w));
+ map(0x1004, 0x17ff).ram();
+ map(0x1800, 0x19ff).ram().share("spriteram");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(shootout_state::textram_w)).share("textram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(shootout_state::videoram_w)).share("videoram");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x0000);
+}
+
+void shootout_state::shootouj_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1000).portr("DSW1");
+ map(0x1001, 0x1001).portr("P1");
+ map(0x1002, 0x1002).portr("P2");
+ map(0x1003, 0x1003).portr("DSW2");
+ map(0x1004, 0x17ff).ram();
+ map(0x1800, 0x1800).w(this, FUNC(shootout_state::coincounter_w));
+ map(0x2000, 0x21ff).ram().share("spriteram");
+ map(0x2800, 0x2801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x3000, 0x37ff).ram().w(this, FUNC(shootout_state::textram_w)).share("textram");
+ map(0x3800, 0x3fff).ram().w(this, FUNC(shootout_state::videoram_w)).share("videoram");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x0000);
+}
/*******************************************************************************/
/* same as Tryout */
-ADDRESS_MAP_START(shootout_state::shootout_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READ(sound_cpu_command_r)
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x0000)
- AM_RANGE(0xd000, 0xd000) AM_WRITENOP // Unknown, NOT irq/nmi mask (Always 0x80 ???)
-ADDRESS_MAP_END
+void shootout_state::shootout_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).r(this, FUNC(shootout_state::sound_cpu_command_r));
+ map(0xc000, 0xffff).rom().region("audiocpu", 0x0000);
+ map(0xd000, 0xd000).nopw(); // Unknown, NOT irq/nmi mask (Always 0x80 ???)
+}
/*******************************************************************************/
diff --git a/src/mame/drivers/shougi.cpp b/src/mame/drivers/shougi.cpp
index ba0ed19d55c..337633c137b 100644
--- a/src/mame/drivers/shougi.cpp
+++ b/src/mame/drivers/shougi.cpp
@@ -247,19 +247,20 @@ WRITE_LINE_MEMBER(shougi_state::nmi_enable_w)
}
-ADDRESS_MAP_START(shougi_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM /* 2114 x 2 (0x400 x 4bit each) */
- AM_RANGE(0x4800, 0x480f) AM_DEVWRITE("mainlatch", ls259_device, write_a3)
- AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW")
- AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1")
- AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* game won't boot if watchdog doesn't work */
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("aysnd", ay8910_device, data_w)
- AM_RANGE(0x7000, 0x73ff) AM_DEVREADWRITE("alpha_8201", alpha_8201_device, ext_ram_r, ext_ram_w)
- AM_RANGE(0x7800, 0x7bff) AM_RAM AM_SHARE("sharedram") /* 2114 x 2 (0x400 x 4bit each) */
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") /* 4116 x 16 (32K) */
-ADDRESS_MAP_END
+void shougi_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram(); /* 2114 x 2 (0x400 x 4bit each) */
+ map(0x4800, 0x480f).w("mainlatch", FUNC(ls259_device::write_a3));
+ map(0x4800, 0x4800).portr("DSW");
+ map(0x5000, 0x5000).portr("P1");
+ map(0x5800, 0x5800).portr("P2").w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* game won't boot if watchdog doesn't work */
+ map(0x6000, 0x6000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x6800, 0x6800).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x7000, 0x73ff).rw(m_alpha_8201, FUNC(alpha_8201_device::ext_ram_r), FUNC(alpha_8201_device::ext_ram_w));
+ map(0x7800, 0x7bff).ram().share("sharedram"); /* 2114 x 2 (0x400 x 4bit each) */
+ map(0x8000, 0xffff).ram().share("videoram"); /* 4116 x 16 (32K) */
+}
// subcpu side
@@ -273,15 +274,17 @@ READ8_MEMBER(shougi_state::semaphore_r)
}
-ADDRESS_MAP_START(shougi_state::sub_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE("sharedram") /* 2114 x 2 (0x400 x 4bit each) */
-ADDRESS_MAP_END
+void shougi_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x63ff).ram().share("sharedram"); /* 2114 x 2 (0x400 x 4bit each) */
+}
-ADDRESS_MAP_START(shougi_state::readport_sub)
- ADDRESS_MAP_GLOBAL_MASK(0x00ff)
- AM_RANGE(0x00, 0x00) AM_READ(semaphore_r)
-ADDRESS_MAP_END
+void shougi_state::readport_sub(address_map &map)
+{
+ map.global_mask(0x00ff);
+ map(0x00, 0x00).r(this, FUNC(shougi_state::semaphore_r));
+}
diff --git a/src/mame/drivers/shtzone.cpp b/src/mame/drivers/shtzone.cpp
index a1a4ac09aa9..c798fdf6e8e 100644
--- a/src/mame/drivers/shtzone.cpp
+++ b/src/mame/drivers/shtzone.cpp
@@ -66,10 +66,11 @@ public:
void shtzone_map(address_map &map);
};
-ADDRESS_MAP_START(shtzone_state::shtzone_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM
-ADDRESS_MAP_END
+void shtzone_state::shtzone_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram();
+}
static INPUT_PORTS_START( shtzone )
diff --git a/src/mame/drivers/shuuz.cpp b/src/mame/drivers/shuuz.cpp
index c332b8a1f93..1013b97fec1 100644
--- a/src/mame/drivers/shuuz.cpp
+++ b/src/mame/drivers/shuuz.cpp
@@ -110,26 +110,27 @@ READ16_MEMBER(shuuz_state::special_port0_r)
*
*************************************/
-ADDRESS_MAP_START(shuuz_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x101000, 0x101fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x102000, 0x102001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x103000, 0x103003) AM_READ(leta_r)
- AM_RANGE(0x105000, 0x105001) AM_READWRITE(special_port0_r, latch_w)
- AM_RANGE(0x105002, 0x105003) AM_READ_PORT("BUTTONS")
- AM_RANGE(0x106000, 0x106001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x107000, 0x107007) AM_NOP
- AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write)
- AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_msb_w) AM_SHARE("vad:playfield")
- AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_SHARE("vad:eof")
- AM_RANGE(0x3f5f80, 0x3f5fff) AM_SHARE("vad:mob:slip")
- AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext")
- AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM
- AM_RANGE(0x3fd000, 0x3fd3ff) AM_RAM AM_SHARE("vad:mob")
- AM_RANGE(0x3fd400, 0x3fffff) AM_RAM
-ADDRESS_MAP_END
+void shuuz_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x101000, 0x101fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x102000, 0x102001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x103000, 0x103003).r(this, FUNC(shuuz_state::leta_r));
+ map(0x105000, 0x105001).rw(this, FUNC(shuuz_state::special_port0_r), FUNC(shuuz_state::latch_w));
+ map(0x105002, 0x105003).portr("BUTTONS");
+ map(0x106001, 0x106001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x107000, 0x107007).noprw();
+ map(0x3e0000, 0x3e07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write));
+ map(0x3f4000, 0x3f5eff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_msb_w)).share("vad:playfield");
+ map(0x3f5f00, 0x3f5f7f).ram().share("vad:eof");
+ map(0x3f5f80, 0x3f5fff).share("vad:mob:slip");
+ map(0x3f6000, 0x3f7fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext");
+ map(0x3f8000, 0x3fcfff).ram();
+ map(0x3fd000, 0x3fd3ff).ram().share("vad:mob");
+ map(0x3fd400, 0x3fffff).ram();
+}
diff --git a/src/mame/drivers/sidearms.cpp b/src/mame/drivers/sidearms.cpp
index 76d4eb8fcae..a4299e6f0f6 100644
--- a/src/mame/drivers/sidearms.cpp
+++ b/src/mame/drivers/sidearms.cpp
@@ -77,55 +77,58 @@ READ8_MEMBER(sidearms_state::turtship_ports_r)
}
-ADDRESS_MAP_START(sidearms_state::sidearms_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1") AM_WRITE(bankswitch_w)
- AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xc803, 0xc803) AM_READ_PORT("DSW0")
- AM_RANGE(0xc804, 0xc804) AM_READ_PORT("DSW1") AM_WRITE(c804_w)
- AM_RANGE(0xc805, 0xc805) AM_READ_PORT("DSW2") AM_WRITE(star_scrollx_w)
- AM_RANGE(0xc806, 0xc806) AM_WRITE(star_scrolly_w)
- AM_RANGE(0xc808, 0xc809) AM_WRITEONLY AM_SHARE("bg_scrollx")
- AM_RANGE(0xc80a, 0xc80b) AM_WRITEONLY AM_SHARE("bg_scrolly")
- AM_RANGE(0xc80c, 0xc80c) AM_WRITE(gfxctrl_w) /* background and sprite enable */
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sidearms_state::turtship_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xe800, 0xe807) AM_READ(turtship_ports_r)
- AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xe801, 0xe801) AM_WRITE(bankswitch_w)
- AM_RANGE(0xe802, 0xe802) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe804, 0xe804) AM_WRITE(c804_w)
- AM_RANGE(0xe805, 0xe805) AM_WRITE(star_scrollx_w)
- AM_RANGE(0xe806, 0xe806) AM_WRITE(star_scrolly_w)
- AM_RANGE(0xe808, 0xe809) AM_WRITEONLY AM_SHARE("bg_scrollx")
- AM_RANGE(0xe80a, 0xe80b) AM_WRITEONLY AM_SHARE("bg_scrolly")
- AM_RANGE(0xe80c, 0xe80c) AM_WRITE(gfxctrl_w) /* background and sprite enable */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sidearms_state::sidearms_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
-ADDRESS_MAP_END
+void sidearms_state::sidearms_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xc400, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xc800, 0xc800).portr("SYSTEM").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc801, 0xc801).portr("P1").w(this, FUNC(sidearms_state::bankswitch_w));
+ map(0xc802, 0xc802).portr("P2").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xc803, 0xc803).portr("DSW0");
+ map(0xc804, 0xc804).portr("DSW1").w(this, FUNC(sidearms_state::c804_w));
+ map(0xc805, 0xc805).portr("DSW2").w(this, FUNC(sidearms_state::star_scrollx_w));
+ map(0xc806, 0xc806).w(this, FUNC(sidearms_state::star_scrolly_w));
+ map(0xc808, 0xc809).writeonly().share("bg_scrollx");
+ map(0xc80a, 0xc80b).writeonly().share("bg_scrolly");
+ map(0xc80c, 0xc80c).w(this, FUNC(sidearms_state::gfxctrl_w)); /* background and sprite enable */
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(sidearms_state::videoram_w)).share("videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(sidearms_state::colorram_w)).share("colorram");
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xffff).ram().share("spriteram");
+}
+
+void sidearms_state::turtship_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xe3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe400, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xe800, 0xe807).r(this, FUNC(sidearms_state::turtship_ports_r));
+ map(0xe800, 0xe800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xe801, 0xe801).w(this, FUNC(sidearms_state::bankswitch_w));
+ map(0xe802, 0xe802).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe804, 0xe804).w(this, FUNC(sidearms_state::c804_w));
+ map(0xe805, 0xe805).w(this, FUNC(sidearms_state::star_scrollx_w));
+ map(0xe806, 0xe806).w(this, FUNC(sidearms_state::star_scrolly_w));
+ map(0xe808, 0xe809).writeonly().share("bg_scrollx");
+ map(0xe80a, 0xe80b).writeonly().share("bg_scrolly");
+ map(0xe80c, 0xe80c).w(this, FUNC(sidearms_state::gfxctrl_w)); /* background and sprite enable */
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(sidearms_state::videoram_w)).share("videoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(sidearms_state::colorram_w)).share("colorram");
+}
+
+void sidearms_state::sidearms_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/* Whizz */
@@ -142,41 +145,44 @@ WRITE8_MEMBER(sidearms_state::whizz_bankswitch_w)
membank("bank1")->set_entry(bank);
}
-ADDRESS_MAP_START(sidearms_state::whizz_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc801, 0xc801) AM_READ_PORT("DSW1") AM_WRITE(whizz_bankswitch_w)
- AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xc803, 0xc803) AM_READ_PORT("IN0") AM_WRITENOP
- AM_RANGE(0xc804, 0xc804) AM_READ_PORT("IN1") AM_WRITE(c804_w)
- AM_RANGE(0xc805, 0xc805) AM_READ_PORT("IN2") AM_WRITENOP
- AM_RANGE(0xc806, 0xc806) AM_READ_PORT("IN3")
- AM_RANGE(0xc807, 0xc807) AM_READ_PORT("IN4")
- AM_RANGE(0xc808, 0xc809) AM_WRITEONLY AM_SHARE("bg_scrollx")
- AM_RANGE(0xc80a, 0xc80b) AM_WRITEONLY AM_SHARE("bg_scrolly")
- AM_RANGE(0xc80c, 0xc80c) AM_WRITE(gfxctrl_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xe805, 0xe805) AM_WRITE(star_scrollx_w)
- AM_RANGE(0xe806, 0xe806) AM_WRITE(star_scrolly_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sidearms_state::whizz_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sidearms_state::whizz_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITENOP
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void sidearms_state::whizz_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xc400, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xc800, 0xc800).portr("DSW0").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc801, 0xc801).portr("DSW1").w(this, FUNC(sidearms_state::whizz_bankswitch_w));
+ map(0xc802, 0xc802).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xc803, 0xc803).portr("IN0").nopw();
+ map(0xc804, 0xc804).portr("IN1").w(this, FUNC(sidearms_state::c804_w));
+ map(0xc805, 0xc805).portr("IN2").nopw();
+ map(0xc806, 0xc806).portr("IN3");
+ map(0xc807, 0xc807).portr("IN4");
+ map(0xc808, 0xc809).writeonly().share("bg_scrollx");
+ map(0xc80a, 0xc80b).writeonly().share("bg_scrolly");
+ map(0xc80c, 0xc80c).w(this, FUNC(sidearms_state::gfxctrl_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(sidearms_state::videoram_w)).share("videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(sidearms_state::colorram_w)).share("colorram");
+ map(0xe000, 0xefff).ram();
+ map(0xe805, 0xe805).w(this, FUNC(sidearms_state::star_scrollx_w));
+ map(0xe806, 0xe806).w(this, FUNC(sidearms_state::star_scrolly_w));
+ map(0xf000, 0xffff).ram().share("spriteram");
+}
+
+void sidearms_state::whizz_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void sidearms_state::whizz_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).nopw();
+ map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( sidearms )
diff --git a/src/mame/drivers/sidepckt.cpp b/src/mame/drivers/sidepckt.cpp
index faa6c65315a..aa174661cc2 100644
--- a/src/mame/drivers/sidepckt.cpp
+++ b/src/mame/drivers/sidepckt.cpp
@@ -197,37 +197,40 @@ WRITE8_MEMBER(sidepckt_state::i8751_w)
/******************************************************************************/
-ADDRESS_MAP_START(sidepckt_state::sidepckt_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x400) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x400) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2100, 0x24ff) AM_WRITENOP // ??? (Unused spriteram? The game writes some values at boot, but never read)
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("P1")
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2")
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2")
- AM_RANGE(0x3004, 0x3004) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x300c, 0x300c) AM_READWRITE(scroll_y_r, scroll_y_w)
- AM_RANGE(0x3014, 0x3014) AM_READ(i8751_r)
- AM_RANGE(0x3018, 0x3018) AM_WRITE(i8751_w)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sidepckt_state::sidepcktb_map)
- AM_IMPORT_FROM( sidepckt_map )
- AM_RANGE(0x3014, 0x3014) AM_READNOP
- AM_RANGE(0x3018, 0x3018) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sidepckt_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym2", ym3526_device, write)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void sidepckt_state::sidepckt_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x13ff).mirror(0x400).ram().w(this, FUNC(sidepckt_state::videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).mirror(0x400).ram().w(this, FUNC(sidepckt_state::colorram_w)).share("colorram");
+ map(0x2000, 0x20ff).ram().share("spriteram");
+ map(0x2100, 0x24ff).nopw(); // ??? (Unused spriteram? The game writes some values at boot, but never read)
+ map(0x3000, 0x3000).portr("P1");
+ map(0x3001, 0x3001).portr("P2");
+ map(0x3002, 0x3002).portr("DSW1");
+ map(0x3003, 0x3003).portr("DSW2");
+ map(0x3004, 0x3004).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x300c, 0x300c).rw(this, FUNC(sidepckt_state::scroll_y_r), FUNC(sidepckt_state::scroll_y_w));
+ map(0x3014, 0x3014).r(this, FUNC(sidepckt_state::i8751_r));
+ map(0x3018, 0x3018).w(this, FUNC(sidepckt_state::i8751_w));
+ map(0x4000, 0xffff).rom();
+}
+
+void sidepckt_state::sidepcktb_map(address_map &map)
+{
+ sidepckt_map(map);
+ map(0x3014, 0x3014).nopr();
+ map(0x3018, 0x3018).nopw();
+}
+
+
+void sidepckt_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1001).w("ym1", FUNC(ym2203_device::write));
+ map(0x2000, 0x2001).w("ym2", FUNC(ym3526_device::write));
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0xffff).rom();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp
index 1ccacc7282e..fe592cd52e5 100644
--- a/src/mame/drivers/sigmab52.cpp
+++ b/src/mame/drivers/sigmab52.cpp
@@ -318,44 +318,45 @@ WRITE8_MEMBER(sigmab52_state::palette_bank_w)
* Memory Maps *
*************************/
-ADDRESS_MAP_START(sigmab52_state::jwildb52_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+void sigmab52_state::jwildb52_map(address_map &map)
+{
+ map(0x0000, 0x3fff).ram().share("nvram");
+ map(0x4000, 0x7fff).bankr("bank1");
- AM_RANGE(0x8000, 0xf6ff) AM_ROM
+ map(0x8000, 0xf6ff).rom();
- AM_RANGE(0xf700, 0xf700) AM_READ(unk_f700_r) // ACIA ???
- AM_RANGE(0xf710, 0xf710) AM_WRITE(bank1_w)
+ map(0xf700, 0xf700).r(this, FUNC(sigmab52_state::unk_f700_r)); // ACIA ???
+ map(0xf710, 0xf710).w(this, FUNC(sigmab52_state::bank1_w));
- AM_RANGE(0xf720, 0xf727) AM_DEVREADWRITE("6840ptm_1", ptm6840_device, read, write)
+ map(0xf720, 0xf727).rw("6840ptm_1", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
- AM_RANGE(0xf730, 0xf730) AM_DEVREADWRITE("hd63484", hd63484_device, status8_r, address8_w)
- AM_RANGE(0xf731, 0xf731) AM_DEVREADWRITE("hd63484", hd63484_device, data8_r, data8_w)
+ map(0xf730, 0xf730).rw("hd63484", FUNC(hd63484_device::status8_r), FUNC(hd63484_device::address8_w));
+ map(0xf731, 0xf731).rw("hd63484", FUNC(hd63484_device::data8_r), FUNC(hd63484_device::data8_w));
- AM_RANGE(0xf740, 0xf740) AM_READ(in0_r)
- AM_RANGE(0xf741, 0xf741) AM_READ_PORT("IN1")
- AM_RANGE(0xf742, 0xf742) AM_READ_PORT("IN2")
- AM_RANGE(0xf743, 0xf743) AM_READ_PORT("DSW1")
- AM_RANGE(0xf744, 0xf744) AM_READ_PORT("DSW2")
- AM_RANGE(0xf745, 0xf745) AM_READ_PORT("DSW3")
- AM_RANGE(0xf746, 0xf746) AM_READ_PORT("DSW4")
- AM_RANGE(0xf747, 0xf747) AM_READ_PORT("IN3")
- AM_RANGE(0xf750, 0xf750) AM_WRITE(palette_bank_w)
+ map(0xf740, 0xf740).r(this, FUNC(sigmab52_state::in0_r));
+ map(0xf741, 0xf741).portr("IN1");
+ map(0xf742, 0xf742).portr("IN2");
+ map(0xf743, 0xf743).portr("DSW1");
+ map(0xf744, 0xf744).portr("DSW2");
+ map(0xf745, 0xf745).portr("DSW3");
+ map(0xf746, 0xf746).portr("DSW4");
+ map(0xf747, 0xf747).portr("IN3");
+ map(0xf750, 0xf750).w(this, FUNC(sigmab52_state::palette_bank_w));
- AM_RANGE(0xf760, 0xf760) AM_READ(unk_f760_r)
+ map(0xf760, 0xf760).r(this, FUNC(sigmab52_state::unk_f760_r));
// AM_RANGE(0xf770, 0xf77f) Bill validator
- AM_RANGE(0xf780, 0xf780) AM_WRITE(audiocpu_cmd_irq_w)
- AM_RANGE(0xf790, 0xf790) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+ map(0xf780, 0xf780).w(this, FUNC(sigmab52_state::audiocpu_cmd_irq_w));
+ map(0xf790, 0xf790).w("soundlatch", FUNC(generic_latch_8_device::write));
- AM_RANGE(0xf7b0, 0xf7b0) AM_WRITE(coin_enable_w)
- AM_RANGE(0xf7d5, 0xf7d5) AM_WRITE(hopper_w)
- AM_RANGE(0xf7b2, 0xf7b7) AM_WRITE(lamps1_w)
- AM_RANGE(0xf7c0, 0xf7c3) AM_WRITE(lamps2_w)
- AM_RANGE(0xf7d6, 0xf7d7) AM_WRITE(tower_lamps_w)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xf7b0, 0xf7b0).w(this, FUNC(sigmab52_state::coin_enable_w));
+ map(0xf7d5, 0xf7d5).w(this, FUNC(sigmab52_state::hopper_w));
+ map(0xf7b2, 0xf7b7).w(this, FUNC(sigmab52_state::lamps1_w));
+ map(0xf7c0, 0xf7c3).w(this, FUNC(sigmab52_state::lamps2_w));
+ map(0xf7d6, 0xf7d7).w(this, FUNC(sigmab52_state::tower_lamps_w));
+ map(0xf800, 0xffff).rom();
+}
/* Unknown R/W:
@@ -369,24 +370,26 @@ ADDRESS_MAP_END
*/
-ADDRESS_MAP_START(sigmab52_state::sound_prog_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x6020, 0x6027) AM_DEVREADWRITE("6840ptm_2", ptm6840_device, read, write)
- AM_RANGE(0x6030, 0x6030) AM_WRITE(audiocpu_irq_ack_w)
- AM_RANGE(0x6050, 0x6050) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x6060, 0x6061) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
+void sigmab52_state::sound_prog_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x6020, 0x6027).rw(m_6840ptm_2, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0x6030, 0x6030).w(this, FUNC(sigmab52_state::audiocpu_irq_ack_w));
+ map(0x6050, 0x6050).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x6060, 0x6061).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x8000, 0xffff).rom().region("audiocpu", 0);
+}
/* Unknown R/W:
*/
-ADDRESS_MAP_START(sigmab52_state::jwildb52_hd63484_map)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
+void sigmab52_state::jwildb52_hd63484_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).ram();
+ map(0x20000, 0x3ffff).rom().region("gfx1", 0);
+}
INPUT_CHANGED_MEMBER( sigmab52_state::coin_drop_start )
{
diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp
index e704bb76c2e..997a0c0b8da 100644
--- a/src/mame/drivers/sigmab98.cpp
+++ b/src/mame/drivers/sigmab98.cpp
@@ -800,42 +800,44 @@ READ8_MEMBER(sigmab98_state::dodghero_regs2_r)
}
}
-ADDRESS_MAP_START(sigmab98_state::dodghero_mem_map)
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0xa7ff ) AM_ROMBANK("rombank")
+void sigmab98_state::dodghero_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xa7ff).bankr("rombank");
- AM_RANGE( 0xa800, 0xb7ff ) AM_RAM AM_SHARE("spriteram")
+ map(0xa800, 0xb7ff).ram().share("spriteram");
- AM_RANGE( 0xc800, 0xc9ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0xc800, 0xc9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE( 0xd001, 0xd07f ) AM_RAM AM_SHARE("vtable")
+ map(0xd001, 0xd07f).ram().share("vtable");
- AM_RANGE( 0xd800, 0xdfff ) AM_RAMBANK("rambank") // not used, where is it mapped?
+ map(0xd800, 0xdfff).bankrw("rambank"); // not used, where is it mapped?
- AM_RANGE( 0xd800, 0xd821 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs")
- AM_RANGE( 0xd813, 0xd813 ) AM_READ(d013_r)
- AM_RANGE( 0xd821, 0xd821 ) AM_READ(d021_r)
+ map(0xd800, 0xd821).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs");
+ map(0xd813, 0xd813).r(this, FUNC(sigmab98_state::d013_r));
+ map(0xd821, 0xd821).r(this, FUNC(sigmab98_state::d021_r));
- AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram") // battery backed RAM
+ map(0xe000, 0xefff).ram().share("nvram"); // battery backed RAM
- AM_RANGE( 0xf000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).ram();
+}
-ADDRESS_MAP_START(sigmab98_state::dodghero_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void sigmab98_state::dodghero_io_map(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE( 0x00, 0x01 ) AM_DEVREADWRITE("ymz", ymz280b_device, read, write )
+ map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
- AM_RANGE( 0xa0, 0xa1 ) AM_READWRITE(dodghero_regs_r, dodghero_regs_w )
+ map(0xa0, 0xa1).rw(this, FUNC(sigmab98_state::dodghero_regs_r), FUNC(sigmab98_state::dodghero_regs_w));
// AM_RANGE( 0xa2, 0xa3 )
- AM_RANGE( 0xa4, 0xa5 ) AM_READWRITE(dodghero_regs2_r, dodghero_regs2_w )
+ map(0xa4, 0xa5).rw(this, FUNC(sigmab98_state::dodghero_regs2_r), FUNC(sigmab98_state::dodghero_regs2_w));
- AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "EEPROM" ) AM_WRITE(eeprom_w)
- AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(c4_w )
- AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(c6_w )
- AM_RANGE( 0xc8, 0xc8 ) AM_WRITE(c8_w )
-ADDRESS_MAP_END
+ map(0xc0, 0xc0).portr("EEPROM").w(this, FUNC(sigmab98_state::eeprom_w));
+ map(0xc2, 0xc2).portr("BUTTON");
+ map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(sigmab98_state::c4_w));
+ map(0xc6, 0xc6).w(this, FUNC(sigmab98_state::c6_w));
+ map(0xc8, 0xc8).w(this, FUNC(sigmab98_state::c8_w));
+}
/***************************************************************************
GeGeGe no Kitarou Youkai Slot
@@ -996,44 +998,46 @@ WRITE8_MEMBER(sigmab98_state::c8_w)
show_outputs();
}
-ADDRESS_MAP_START(sigmab98_state::gegege_mem_map)
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0x9fff ) AM_ROMBANK("rombank")
+void sigmab98_state::gegege_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("rombank");
- AM_RANGE( 0xa000, 0xafff ) AM_RAM AM_SHARE("spriteram")
+ map(0xa000, 0xafff).ram().share("spriteram");
- AM_RANGE( 0xc000, 0xc1ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0xc000, 0xc1ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE( 0xc800, 0xc87f ) AM_RAM AM_SHARE("vtable")
+ map(0xc800, 0xc87f).ram().share("vtable");
- AM_RANGE( 0xd000, 0xd021 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs")
- AM_RANGE( 0xd013, 0xd013 ) AM_READ(d013_r)
- AM_RANGE( 0xd021, 0xd021 ) AM_READ(d021_r)
+ map(0xd000, 0xd021).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs");
+ map(0xd013, 0xd013).r(this, FUNC(sigmab98_state::d013_r));
+ map(0xd021, 0xd021).r(this, FUNC(sigmab98_state::d021_r));
- AM_RANGE( 0xd800, 0xdfff ) AM_RAMBANK("rambank")
+ map(0xd800, 0xdfff).bankrw("rambank");
- AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram") // battery backed RAM
+ map(0xe000, 0xefff).ram().share("nvram"); // battery backed RAM
- AM_RANGE( 0xf000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).ram();
+}
-ADDRESS_MAP_START(sigmab98_state::gegege_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void sigmab98_state::gegege_io_map(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE( 0x00, 0x01 ) AM_DEVREADWRITE("ymz", ymz280b_device, read, write )
+ map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
- AM_RANGE( 0xa0, 0xa1 ) AM_READWRITE(gegege_regs_r, gegege_regs_w )
+ map(0xa0, 0xa1).rw(this, FUNC(sigmab98_state::gegege_regs_r), FUNC(sigmab98_state::gegege_regs_w));
// AM_RANGE( 0xa2, 0xa3 )
- AM_RANGE( 0xa4, 0xa5 ) AM_READWRITE(gegege_regs2_r, gegege_regs2_w )
+ map(0xa4, 0xa5).rw(this, FUNC(sigmab98_state::gegege_regs2_r), FUNC(sigmab98_state::gegege_regs2_w));
- AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "EEPROM" ) AM_WRITE(eeprom_w)
- AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(c4_w )
- AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(c6_w )
- AM_RANGE( 0xc8, 0xc8 ) AM_WRITE(c8_w )
+ map(0xc0, 0xc0).portr("EEPROM").w(this, FUNC(sigmab98_state::eeprom_w));
+ map(0xc2, 0xc2).portr("BUTTON");
+ map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(sigmab98_state::c4_w));
+ map(0xc6, 0xc6).w(this, FUNC(sigmab98_state::c6_w));
+ map(0xc8, 0xc8).w(this, FUNC(sigmab98_state::c8_w));
- AM_RANGE( 0xe5, 0xe5 ) AM_READNOP // during irq
-ADDRESS_MAP_END
+ map(0xe5, 0xe5).nopr(); // during irq
+}
/***************************************************************************
Minna Ganbare! Dash Hero
@@ -1095,23 +1099,24 @@ READ8_MEMBER(sigmab98_state::dashhero_regs2_r)
}
}
-ADDRESS_MAP_START(sigmab98_state::dashhero_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void sigmab98_state::dashhero_io_map(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE( 0x00, 0x01 ) AM_DEVREADWRITE("ymz", ymz280b_device, read, write )
+ map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
- AM_RANGE( 0xa0, 0xa1 ) AM_READWRITE(gegege_regs_r, gegege_regs_w )
+ map(0xa0, 0xa1).rw(this, FUNC(sigmab98_state::gegege_regs_r), FUNC(sigmab98_state::gegege_regs_w));
// AM_RANGE( 0xa2, 0xa3 )
- AM_RANGE( 0xa4, 0xa5 ) AM_READWRITE(dashhero_regs2_r, dashhero_regs2_w )
+ map(0xa4, 0xa5).rw(this, FUNC(sigmab98_state::dashhero_regs2_r), FUNC(sigmab98_state::dashhero_regs2_w));
- AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "EEPROM" ) AM_WRITE(eeprom_w)
- AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(c4_w )
- AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(c6_w )
- AM_RANGE( 0xc8, 0xc8 ) AM_WRITE(c8_w )
+ map(0xc0, 0xc0).portr("EEPROM").w(this, FUNC(sigmab98_state::eeprom_w));
+ map(0xc2, 0xc2).portr("BUTTON");
+ map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(sigmab98_state::c4_w));
+ map(0xc6, 0xc6).w(this, FUNC(sigmab98_state::c6_w));
+ map(0xc8, 0xc8).w(this, FUNC(sigmab98_state::c8_w));
- AM_RANGE( 0xe5, 0xe5 ) AM_READNOP // during irq
-ADDRESS_MAP_END
+ map(0xe5, 0xe5).nopr(); // during irq
+}
/***************************************************************************
@@ -1227,36 +1232,38 @@ WRITE8_MEMBER(lufykzku_state::lufykzku_c8_w)
show_outputs();
}
-ADDRESS_MAP_START(lufykzku_state::lufykzku_mem_map)
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0xbfff ) AM_RAMBANK("romrambank") AM_SHARE("nvram") // ROM | NVRAM
+void lufykzku_state::lufykzku_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankrw("romrambank").share("nvram"); // ROM | NVRAM
- AM_RANGE( 0xc000, 0xcfff ) AM_RAM AM_SHARE("spriteram")
+ map(0xc000, 0xcfff).ram().share("spriteram");
- AM_RANGE( 0xd000, 0xefff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // more palette entries
+ map(0xd000, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // more palette entries
- AM_RANGE( 0xf000, 0xf021 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs")
- AM_RANGE( 0xf013, 0xf013 ) AM_READ(d013_r)
- AM_RANGE( 0xf021, 0xf021 ) AM_READ(d021_r)
+ map(0xf000, 0xf021).rw(this, FUNC(lufykzku_state::vregs_r), FUNC(lufykzku_state::vregs_w)).share("vregs");
+ map(0xf013, 0xf013).r(this, FUNC(lufykzku_state::d013_r));
+ map(0xf021, 0xf021).r(this, FUNC(lufykzku_state::d021_r));
- AM_RANGE( 0xf400, 0xf47f ) AM_RAM AM_SHARE("vtable")
+ map(0xf400, 0xf47f).ram().share("vtable");
- AM_RANGE( 0xfc00, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+ map(0xfc00, 0xffff).ram();
+}
-ADDRESS_MAP_START(lufykzku_state::lufykzku_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE("oki", okim9810_device, write )
- AM_RANGE( 0x01, 0x01 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register )
+void lufykzku_state::lufykzku_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("oki", FUNC(okim9810_device::write));
+ map(0x01, 0x01).w("oki", FUNC(okim9810_device::write_tmp_register));
- AM_RANGE( 0xa2, 0xa3 ) AM_READWRITE(lufykzku_regs_r, lufykzku_regs_w )
+ map(0xa2, 0xa3).rw(this, FUNC(lufykzku_state::lufykzku_regs_r), FUNC(lufykzku_state::lufykzku_regs_w));
- AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "COIN" ) AM_WRITE(lufykzku_watchdog_w ) // bit 7 -> watchdog
- AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(lufykzku_c4_w) // bit 7 = medal lock, bit 6 = coin3, bit 5 = yen
- AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(lufykzku_c6_w )
- AM_RANGE( 0xc8, 0xc8 ) AM_READWRITE(lufykzku_c8_r, lufykzku_c8_w ) // 0xc8 bit 6 read (eeprom?)
-ADDRESS_MAP_END
+ map(0xc0, 0xc0).portr("COIN").w(this, FUNC(lufykzku_state::lufykzku_watchdog_w)); // bit 7 -> watchdog
+ map(0xc2, 0xc2).portr("BUTTON");
+ map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(lufykzku_state::lufykzku_c4_w)); // bit 7 = medal lock, bit 6 = coin3, bit 5 = yen
+ map(0xc6, 0xc6).w(this, FUNC(lufykzku_state::lufykzku_c6_w));
+ map(0xc8, 0xc8).rw(this, FUNC(lufykzku_state::lufykzku_c8_r), FUNC(lufykzku_state::lufykzku_c8_w)); // 0xc8 bit 6 read (eeprom?)
+}
/***************************************************************************
@@ -1466,42 +1473,44 @@ READ8_MEMBER(sigmab98_state::sammymdl_coin_hopper_r)
return ret;
}
-ADDRESS_MAP_START(sigmab98_state::animalc_map)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0x7fff ) AM_ROMBANK( "rombank" )
- AM_RANGE( 0x8000, 0x8fff ) AM_RAMBANK( "rambank" ) AM_SHARE( "nvram" )
+void sigmab98_state::animalc_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0x8fff).bankrw("rambank").share("nvram");
- AM_RANGE( 0x9000, 0x9fff ) AM_RAM
- AM_RANGE( 0xa000, 0xafff ) AM_RAM
- AM_RANGE( 0xb000, 0xbfff ) AM_RAMBANK("sprbank")
+ map(0x9000, 0x9fff).ram();
+ map(0xa000, 0xafff).ram();
+ map(0xb000, 0xbfff).bankrw("sprbank");
- AM_RANGE( 0xd000, 0xd1ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE( 0xd800, 0xd87f ) AM_RAM AM_SHARE("vtable")
+ map(0xd000, 0xd1ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xd800, 0xd87f).ram().share("vtable");
- AM_RANGE( 0xe000, 0xe021 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs")
- AM_RANGE( 0xe011, 0xe011 ) AM_WRITENOP // IRQ Enable? Screen disable?
- AM_RANGE( 0xe013, 0xe013 ) AM_READWRITE(vblank_r, vblank_w ) // IRQ Ack?
+ map(0xe000, 0xe021).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs");
+ map(0xe011, 0xe011).nopw(); // IRQ Enable? Screen disable?
+ map(0xe013, 0xe013).rw(this, FUNC(sigmab98_state::vblank_r), FUNC(sigmab98_state::vblank_w)); // IRQ Ack?
- AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM
-ADDRESS_MAP_END
+ map(0xfe00, 0xffff).ram(); // High speed internal RAM
+}
-ADDRESS_MAP_START(sigmab98_state::animalc_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x02, 0x03 ) AM_READWRITE(animalc_rombank_r, animalc_rombank_w )
- AM_RANGE( 0x04, 0x05 ) AM_READWRITE(animalc_rambank_r, animalc_rambank_w )
+void sigmab98_state::animalc_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw(this, FUNC(sigmab98_state::animalc_rombank_r), FUNC(sigmab98_state::animalc_rombank_w));
+ map(0x04, 0x05).rw(this, FUNC(sigmab98_state::animalc_rambank_r), FUNC(sigmab98_state::animalc_rambank_w));
- AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w )
- AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r )
- AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w )
- AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, sammymdl_leds_w )
- AM_RANGE( 0x34, 0x34 ) AM_READ(unk_34_r )
- AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write )
- AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register )
- AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read )
- AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w )
- AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1
-ADDRESS_MAP_END
+ map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w));
+ map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r));
+ map(0x30, 0x30).portr("BUTTON");
+ map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w));
+ map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::sammymdl_leds_w));
+ map(0x34, 0x34).r(this, FUNC(sigmab98_state::unk_34_r));
+ map(0x90, 0x90).w("oki", FUNC(okim9810_device::write));
+ map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register));
+ map(0x92, 0x92).r("oki", FUNC(okim9810_device::read));
+ map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w));
+ map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1
+}
/***************************************************************************
Go Go Cowboy
@@ -1755,15 +1764,16 @@ WRITE8_MEMBER(sigmab98_state::gocowboy_dc00_w)
logerror("%s: unknown write to %02x = %02x with rambank = %02x\n", machine().describe_context(), offset + 0xdc00, data, m_rambank);
}
-ADDRESS_MAP_START(sigmab98_state::gocowboy_map)
- AM_RANGE(0x0000, 0x43ff) AM_ROM
+void sigmab98_state::gocowboy_map(address_map &map)
+{
+ map(0x0000, 0x43ff).rom();
- AM_RANGE( 0x4400, 0xdbff ) AM_READWRITE(gocowboy_4400_r, gocowboy_4400_w ) // SPRITERAM + PALETTERAM + VTABLE + VREGS | NVRAM
+ map(0x4400, 0xdbff).rw(this, FUNC(sigmab98_state::gocowboy_4400_r), FUNC(sigmab98_state::gocowboy_4400_w)); // SPRITERAM + PALETTERAM + VTABLE + VREGS | NVRAM
- AM_RANGE( 0xdc00, 0xfbff ) AM_READWRITE(gocowboy_dc00_r, gocowboy_dc00_w ) AM_SHARE("nvram") // PALETTERAM | NVRAM
+ map(0xdc00, 0xfbff).rw(this, FUNC(sigmab98_state::gocowboy_dc00_r), FUNC(sigmab98_state::gocowboy_dc00_w)).share("nvram"); // PALETTERAM | NVRAM
- AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM
-ADDRESS_MAP_END
+ map(0xfe00, 0xffff).ram(); // High speed internal RAM
+}
WRITE8_MEMBER(sigmab98_state::gocowboy_leds_w)
@@ -1782,22 +1792,23 @@ WRITE8_MEMBER(sigmab98_state::gocowboy_leds_w)
show_3_outputs();
}
-ADDRESS_MAP_START(sigmab98_state::gocowboy_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x02, 0x03 ) AM_READWRITE(gocowboy_rombank_r, gocowboy_rombank_w )
- AM_RANGE( 0x04, 0x05 ) AM_READWRITE(gocowboy_rambank_r, gocowboy_rambank_w )
+void sigmab98_state::gocowboy_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw(this, FUNC(sigmab98_state::gocowboy_rombank_r), FUNC(sigmab98_state::gocowboy_rombank_w));
+ map(0x04, 0x05).rw(this, FUNC(sigmab98_state::gocowboy_rambank_r), FUNC(sigmab98_state::gocowboy_rambank_w));
- AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w )
- AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r )
- AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w )
- AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, gocowboy_leds_w )
- AM_RANGE( 0x90, 0x90 ) AM_DEVREADWRITE("oki", okim9810_device, read, write )
- AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register )
- AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read )
- AM_RANGE( 0xb0, 0xb0 ) AM_WRITENOP
- AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1
-ADDRESS_MAP_END
+ map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w));
+ map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r));
+ map(0x30, 0x30).portr("BUTTON");
+ map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w));
+ map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::gocowboy_leds_w));
+ map(0x90, 0x90).rw("oki", FUNC(okim9810_device::read), FUNC(okim9810_device::write));
+ map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register));
+ map(0x92, 0x92).r("oki", FUNC(okim9810_device::read));
+ map(0xb0, 0xb0).nopw();
+ map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1
+}
/***************************************************************************
Hae Hae Ka Ka Ka
@@ -2019,29 +2030,31 @@ WRITE8_MEMBER(sigmab98_state::haekaka_coin_counter_w)
show_3_outputs();
}
-ADDRESS_MAP_START(sigmab98_state::haekaka_map)
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0xb000, 0xcfff ) AM_READWRITE(haekaka_b000_r, haekaka_b000_w )
- AM_RANGE( 0xd000, 0xefff ) AM_RAM AM_SHARE( "nvram" )
- AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sigmab98_state::haekaka_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x02, 0x03 ) AM_READWRITE(haekaka_rombank_r, haekaka_rombank_w )
- AM_RANGE( 0x04, 0x05 ) AM_READWRITE(haekaka_rambank_r, haekaka_rambank_w )
-
- AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w )
- AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r )
- AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, haekaka_coin_counter_w )
- AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, haekaka_leds_w )
- AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write )
- AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register )
- AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read )
- AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w )
- AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1
-ADDRESS_MAP_END
+void sigmab98_state::haekaka_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xb000, 0xcfff).rw(this, FUNC(sigmab98_state::haekaka_b000_r), FUNC(sigmab98_state::haekaka_b000_w));
+ map(0xd000, 0xefff).ram().share("nvram");
+ map(0xfe00, 0xffff).ram(); // High speed internal RAM
+}
+
+void sigmab98_state::haekaka_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw(this, FUNC(sigmab98_state::haekaka_rombank_r), FUNC(sigmab98_state::haekaka_rombank_w));
+ map(0x04, 0x05).rw(this, FUNC(sigmab98_state::haekaka_rambank_r), FUNC(sigmab98_state::haekaka_rambank_w));
+
+ map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w));
+ map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r));
+ map(0x30, 0x30).portr("BUTTON");
+ map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::haekaka_coin_counter_w));
+ map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::haekaka_leds_w));
+ map(0x90, 0x90).w("oki", FUNC(okim9810_device::write));
+ map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register));
+ map(0x92, 0x92).r("oki", FUNC(okim9810_device::read));
+ map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w));
+ map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1
+}
/***************************************************************************
Itazura Monkey
@@ -2257,47 +2270,50 @@ READ8_MEMBER(sigmab98_state::itazuram_palette_r)
return m_paletteram[offset];
}
-ADDRESS_MAP_START(sigmab98_state::itazuram_map)
- AM_RANGE( 0x0000, 0x37ff ) AM_ROM
- AM_RANGE( 0x3800, 0x47ff ) AM_READ_BANK( "rombank0" ) AM_WRITE_BANK( "sprbank0" )
- AM_RANGE( 0x4800, 0x57ff ) AM_READ_BANK( "rombank1" ) AM_WRITE_BANK( "sprbank1" )
+void sigmab98_state::itazuram_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0x3800, 0x47ff).bankr("rombank0").bankw("sprbank0");
+ map(0x4800, 0x57ff).bankr("rombank1").bankw("sprbank1");
- AM_RANGE( 0x5800, 0x59ff ) AM_READWRITE(itazuram_palette_r, itazuram_palette_w )
- AM_RANGE( 0x6000, 0x607f ) AM_RAM AM_SHARE("vtable")
+ map(0x5800, 0x59ff).rw(this, FUNC(sigmab98_state::itazuram_palette_r), FUNC(sigmab98_state::itazuram_palette_w));
+ map(0x6000, 0x607f).ram().share("vtable");
- AM_RANGE( 0x6800, 0x6821 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs")
- AM_RANGE( 0x6811, 0x6811 ) AM_WRITENOP // IRQ Enable? Screen disable?
- AM_RANGE( 0x6813, 0x6813 ) AM_WRITENOP // IRQ Ack?
- AM_RANGE( 0xdc00, 0xfdff ) AM_READ_BANK( "palbank" ) AM_WRITE(itazuram_nvram_palette_w ) AM_SHARE( "nvram" ) // nvram | paletteram
+ map(0x6800, 0x6821).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs");
+ map(0x6811, 0x6811).nopw(); // IRQ Enable? Screen disable?
+ map(0x6813, 0x6813).nopw(); // IRQ Ack?
+ map(0xdc00, 0xfdff).bankr("palbank").w(this, FUNC(sigmab98_state::itazuram_nvram_palette_w)).share("nvram"); // nvram | paletteram
- AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM
-ADDRESS_MAP_END
+ map(0xfe00, 0xffff).ram(); // High speed internal RAM
+}
-ADDRESS_MAP_START(sigmab98_state::itazuram_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x02, 0x03 ) AM_READWRITE(itazuram_rombank_r, itazuram_rombank_w )
- AM_RANGE( 0x04, 0x05 ) AM_READWRITE(itazuram_rambank_r, itazuram_rambank_w )
+void sigmab98_state::itazuram_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw(this, FUNC(sigmab98_state::itazuram_rombank_r), FUNC(sigmab98_state::itazuram_rombank_w));
+ map(0x04, 0x05).rw(this, FUNC(sigmab98_state::itazuram_rambank_r), FUNC(sigmab98_state::itazuram_rambank_w));
- AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w )
- AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r )
- AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w )
- AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, sammymdl_leds_w )
- AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write )
- AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register )
- AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read )
- AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w )
- AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1
-ADDRESS_MAP_END
+ map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w));
+ map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r));
+ map(0x30, 0x30).portr("BUTTON");
+ map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w));
+ map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::sammymdl_leds_w));
+ map(0x90, 0x90).w("oki", FUNC(okim9810_device::write));
+ map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register));
+ map(0x92, 0x92).r("oki", FUNC(okim9810_device::read));
+ map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w));
+ map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1
+}
/***************************************************************************
Pye-nage Taikai
***************************************************************************/
-ADDRESS_MAP_START(sigmab98_state::pyenaget_io)
- AM_IMPORT_FROM( haekaka_io )
- AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w )
-ADDRESS_MAP_END
+void sigmab98_state::pyenaget_io(address_map &map)
+{
+ haekaka_io(map);
+ map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w));
+}
/***************************************************************************
Taihou de Doboon
@@ -2495,29 +2511,31 @@ WRITE8_MEMBER(sigmab98_state::tdoboon_c000_w)
logerror("%s: unknown write to %02x = %02x with rombank = %02x\n", machine().describe_context(), offset+0xc000, data, m_rombank);
}
-ADDRESS_MAP_START(sigmab98_state::tdoboon_map)
- AM_RANGE( 0x0000, 0xbfff ) AM_ROM
- AM_RANGE( 0xc000, 0xcfff ) AM_READWRITE(tdoboon_c000_r, tdoboon_c000_w )
- AM_RANGE( 0xd000, 0xefff ) AM_RAM AM_SHARE( "nvram" )
- AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sigmab98_state::tdoboon_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x02, 0x03 ) AM_READWRITE(tdoboon_rombank_r, tdoboon_rombank_w )
- AM_RANGE( 0x04, 0x05 ) AM_READWRITE(tdoboon_rambank_r, tdoboon_rambank_w )
-
- AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w )
- AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r )
- AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" )
- AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w )
- AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, sammymdl_leds_w )
- AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write )
- AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register )
- AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read )
- AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w )
- AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1
-ADDRESS_MAP_END
+void sigmab98_state::tdoboon_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).rw(this, FUNC(sigmab98_state::tdoboon_c000_r), FUNC(sigmab98_state::tdoboon_c000_w));
+ map(0xd000, 0xefff).ram().share("nvram");
+ map(0xfe00, 0xffff).ram(); // High speed internal RAM
+}
+
+void sigmab98_state::tdoboon_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw(this, FUNC(sigmab98_state::tdoboon_rombank_r), FUNC(sigmab98_state::tdoboon_rombank_w));
+ map(0x04, 0x05).rw(this, FUNC(sigmab98_state::tdoboon_rambank_r), FUNC(sigmab98_state::tdoboon_rambank_w));
+
+ map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w));
+ map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r));
+ map(0x30, 0x30).portr("BUTTON");
+ map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w));
+ map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::sammymdl_leds_w));
+ map(0x90, 0x90).w("oki", FUNC(okim9810_device::write));
+ map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register));
+ map(0x92, 0x92).r("oki", FUNC(okim9810_device::read));
+ map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w));
+ map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1
+}
/***************************************************************************
diff --git a/src/mame/drivers/silkroad.cpp b/src/mame/drivers/silkroad.cpp
index 79519768e43..b7a459822e9 100644
--- a/src/mame/drivers/silkroad.cpp
+++ b/src/mame/drivers/silkroad.cpp
@@ -157,23 +157,24 @@ WRITE32_MEMBER(silkroad_state::silk_coin_counter_w)
}
}
-ADDRESS_MAP_START(silkroad_state::cpu_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x40c000, 0x40cfff) AM_RAM AM_SHARE("sprram") // sprites
- AM_RANGE(0x600000, 0x603fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_SHARE("paletteram") // palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(silkroad_fgram_w) AM_SHARE("vidram") // lower Layer
- AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(silkroad_fgram2_w) AM_SHARE("vidram2") // mid layer
- AM_RANGE(0x808000, 0x80bfff) AM_RAM_WRITE(silkroad_fgram3_w) AM_SHARE("vidram3") // higher layer
- AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS")
- AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("DSW")
- AM_RANGE(0xc00024, 0xc00027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000)
- AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000)
- AM_RANGE(0xc00030, 0xc00033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000)
- AM_RANGE(0xc00034, 0xc00037) AM_WRITE(silk_6295_bank_w)
- AM_RANGE(0xc00038, 0xc0003b) AM_WRITE(silk_coin_counter_w)
- AM_RANGE(0xc0010c, 0xc00123) AM_WRITEONLY AM_SHARE("regs")
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void silkroad_state::cpu_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x40c000, 0x40cfff).ram().share("sprram"); // sprites
+ map(0x600000, 0x603fff).ram().w(this, FUNC(silkroad_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w)).share("paletteram"); // palette
+ map(0x800000, 0x803fff).ram().w(this, FUNC(silkroad_state::silkroad_fgram_w)).share("vidram"); // lower Layer
+ map(0x804000, 0x807fff).ram().w(this, FUNC(silkroad_state::silkroad_fgram2_w)).share("vidram2"); // mid layer
+ map(0x808000, 0x80bfff).ram().w(this, FUNC(silkroad_state::silkroad_fgram3_w)).share("vidram3"); // higher layer
+ map(0xc00000, 0xc00003).portr("INPUTS");
+ map(0xc00004, 0xc00007).portr("DSW");
+ map(0xc00025, 0xc00025).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc00028, 0xc0002f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x00ff0000);
+ map(0xc00031, 0xc00031).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc00034, 0xc00037).w(this, FUNC(silkroad_state::silk_6295_bank_w));
+ map(0xc00038, 0xc0003b).w(this, FUNC(silkroad_state::silk_coin_counter_w));
+ map(0xc0010c, 0xc00123).writeonly().share("regs");
+ map(0xfe0000, 0xffffff).ram();
+}
static INPUT_PORTS_START( silkroad )
diff --git a/src/mame/drivers/silvmil.cpp b/src/mame/drivers/silvmil.cpp
index 613f539410d..4113782740e 100644
--- a/src/mame/drivers/silvmil.cpp
+++ b/src/mame/drivers/silvmil.cpp
@@ -183,26 +183,27 @@ uint32_t silvmil_state::screen_update_silvmil(screen_device &screen, bitmap_ind1
}
-ADDRESS_MAP_START(silvmil_state::silvmil_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
-
- AM_RANGE(0x100000, 0x100001) AM_WRITE(silvmil_tilebank1_w)
- AM_RANGE(0x100002, 0x100003) AM_WRITE(silvmil_fg_scrollx_w)
- AM_RANGE(0x100004, 0x100005) AM_WRITE(silvmil_fg_scrolly_w)
- AM_RANGE(0x100006, 0x100007) AM_WRITE(silvmil_bg_scrollx_w)
- AM_RANGE(0x100008, 0x100009) AM_WRITE(silvmil_bg_scrolly_w)
- AM_RANGE(0x10000e, 0x10000f) AM_WRITE(silvmil_tilebank_w)
-
- AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(silvmil_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(silvmil_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x270000, 0x270001) AM_WRITE(silvmil_soundcmd_w)
- AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN")
- AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
-ADDRESS_MAP_END
+void silvmil_state::silvmil_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+
+ map(0x100000, 0x100001).w(this, FUNC(silvmil_state::silvmil_tilebank1_w));
+ map(0x100002, 0x100003).w(this, FUNC(silvmil_state::silvmil_fg_scrollx_w));
+ map(0x100004, 0x100005).w(this, FUNC(silvmil_state::silvmil_fg_scrolly_w));
+ map(0x100006, 0x100007).w(this, FUNC(silvmil_state::silvmil_bg_scrollx_w));
+ map(0x100008, 0x100009).w(this, FUNC(silvmil_state::silvmil_bg_scrolly_w));
+ map(0x10000e, 0x10000f).w(this, FUNC(silvmil_state::silvmil_tilebank_w));
+
+ map(0x120000, 0x120fff).ram().w(this, FUNC(silvmil_state::silvmil_fg_videoram_w)).share("fg_videoram");
+ map(0x122000, 0x122fff).ram().w(this, 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(0x270000, 0x270001).w(this, FUNC(silvmil_state::silvmil_soundcmd_w));
+ map(0x280000, 0x280001).portr("P1_P2");
+ map(0x280002, 0x280003).portr("COIN");
+ map(0x280004, 0x280005).portr("DSW");
+ map(0x300000, 0x30ffff).ram();
+}
static INPUT_PORTS_START( silvmil )
@@ -390,14 +391,15 @@ void silvmil_state::machine_reset()
}
-ADDRESS_MAP_START(silvmil_state::silvmil_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1)
- AM_RANGE(0xc006, 0xc006) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc00f, 0xc00f) AM_WRITENOP // ??
-ADDRESS_MAP_END
+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(); // ??
+}
MACHINE_CONFIG_START(silvmil_state::silvmil)
diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp
index 0a1f09262a2..4f8e84503bc 100644
--- a/src/mame/drivers/simpl156.cpp
+++ b/src/mame/drivers/simpl156.cpp
@@ -221,113 +221,118 @@ WRITE32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_w)
/* Memory Map controled by PALs */
/* Joe and Mac Returns */
-ADDRESS_MAP_START(simpl156_state::joemacr_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x107fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram
- AM_RANGE(0x110000, 0x111fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
- AM_RANGE(0x120000, 0x120fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x130000, 0x130003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w)
- AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x150000, 0x151fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x152000, 0x153fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x154000, 0x155fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x160000, 0x161fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
- AM_RANGE(0x164000, 0x165fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
- AM_RANGE(0x170000, 0x170003) AM_READONLY AM_WRITENOP // ?
- AM_RANGE(0x180000, 0x180003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x1c0000, 0x1c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
-ADDRESS_MAP_END
+void simpl156_state::joemacr_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x107fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram
+ map(0x110000, 0x111fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w));
+ map(0x120000, 0x120fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x130000, 0x130003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w));
+ map(0x140000, 0x14001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x150000, 0x151fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x152000, 0x153fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x154000, 0x155fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x160000, 0x161fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w));
+ map(0x164000, 0x165fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w));
+ map(0x170000, 0x170003).readonly().nopw(); // ?
+ map(0x180000, 0x180000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x1c0000, 0x1c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x200000, 0x200003).portr("IN0");
+ map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit)
+}
/* Chain Reaction */
-ADDRESS_MAP_START(simpl156_state::chainrec_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // rom (32-bit)
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
- AM_RANGE(0x3c0000, 0x3c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x400000, 0x407fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram?
- AM_RANGE(0x410000, 0x411fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
- AM_RANGE(0x420000, 0x420fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x430000, 0x430003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w)
- AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x450000, 0x451fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x452000, 0x453fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x454000, 0x455fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x460000, 0x461fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
- AM_RANGE(0x464000, 0x465fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
- AM_RANGE(0x470000, 0x470003) AM_READONLY AM_WRITENOP // ??
- AM_RANGE(0x480000, 0x480003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
+void simpl156_state::chainrec_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom(); // rom (32-bit)
+ map(0x200000, 0x200003).portr("IN0");
+ map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit)
+ map(0x3c0000, 0x3c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x400000, 0x407fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram?
+ map(0x410000, 0x411fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w));
+ map(0x420000, 0x420fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x430000, 0x430003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w));
+ map(0x440000, 0x44001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x450000, 0x451fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x452000, 0x453fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x454000, 0x455fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x460000, 0x461fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w));
+ map(0x464000, 0x465fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w));
+ map(0x470000, 0x470003).readonly().nopw(); // ??
+ map(0x480000, 0x480000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* Magical Drop */
-ADDRESS_MAP_START(simpl156_state::magdrop_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
- AM_RANGE(0x340000, 0x340003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x380000, 0x387fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram?
- AM_RANGE(0x390000, 0x391fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
- AM_RANGE(0x3a0000, 0x3a0fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w)
- AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x3d0000, 0x3d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x3d2000, 0x3d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x3d4000, 0x3d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x3e0000, 0x3e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
- AM_RANGE(0x3e4000, 0x3e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
- AM_RANGE(0x3f0000, 0x3f0003) AM_READONLY AM_WRITENOP //?
- AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
+void simpl156_state::magdrop_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200003).portr("IN0");
+ map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit)
+ map(0x340000, 0x340000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x380000, 0x387fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram?
+ map(0x390000, 0x391fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w));
+ map(0x3a0000, 0x3a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x3b0000, 0x3b0003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w));
+ map(0x3c0000, 0x3c001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x3d0000, 0x3d1fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x3d2000, 0x3d3fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x3d4000, 0x3d5fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x3e0000, 0x3e1fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w));
+ map(0x3e4000, 0x3e5fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w));
+ map(0x3f0000, 0x3f0003).readonly().nopw(); //?
+ map(0x400000, 0x400000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* Magical Drop Plus 1 */
-ADDRESS_MAP_START(simpl156_state::magdropp_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
- AM_RANGE(0x4c0000, 0x4c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x680000, 0x687fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram?
- AM_RANGE(0x690000, 0x691fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
- AM_RANGE(0x6a0000, 0x6a0fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x6b0000, 0x6b0003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w)
- AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x6d0000, 0x6d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x6d2000, 0x6d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x6d4000, 0x6d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x6e0000, 0x6e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
- AM_RANGE(0x6e4000, 0x6e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
- AM_RANGE(0x6f0000, 0x6f0003) AM_READONLY AM_WRITENOP // ?
- AM_RANGE(0x780000, 0x780003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
-ADDRESS_MAP_END
+void simpl156_state::magdropp_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200003).portr("IN0");
+ map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit)
+ map(0x4c0000, 0x4c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x680000, 0x687fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram?
+ map(0x690000, 0x691fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w));
+ map(0x6a0000, 0x6a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x6b0000, 0x6b0003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w));
+ map(0x6c0000, 0x6c001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x6d0000, 0x6d1fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x6d2000, 0x6d3fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x6d4000, 0x6d5fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x6e0000, 0x6e1fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w));
+ map(0x6e4000, 0x6e5fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w));
+ map(0x6f0000, 0x6f0003).readonly().nopw(); // ?
+ map(0x780000, 0x780000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* Mitchell MT5601-0 PCB (prtytime, charlien, osman) */
-ADDRESS_MAP_START(simpl156_state::mitchell156_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
- AM_RANGE(0x180000, 0x187fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram
- AM_RANGE(0x190000, 0x191fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
- AM_RANGE(0x1a0000, 0x1a0fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0x1b0000, 0x1b0003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w)
- AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
- AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1d2000, 0x1d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
- AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
- AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
- AM_RANGE(0x1e4000, 0x1e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
- AM_RANGE(0x1f0000, 0x1f0003) AM_READONLY AM_WRITENOP // ?
- AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
-ADDRESS_MAP_END
+void simpl156_state::mitchell156_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x180000, 0x187fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram
+ map(0x190000, 0x191fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w));
+ map(0x1a0000, 0x1a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0x1b0000, 0x1b0003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w));
+ map(0x1c0000, 0x1c001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w));
+ map(0x1d0000, 0x1d1fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1d2000, 0x1d3fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w));
+ map(0x1d4000, 0x1d5fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w));
+ map(0x1e0000, 0x1e1fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w));
+ map(0x1e4000, 0x1e5fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w));
+ map(0x1f0000, 0x1f0003).readonly().nopw(); // ?
+ map(0x200000, 0x200003).portr("IN0");
+ map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit)
+}
static const gfx_layout tile_8x8_layout =
diff --git a/src/mame/drivers/simple_st0016.cpp b/src/mame/drivers/simple_st0016.cpp
index 6610ee49509..591d2585d7c 100644
--- a/src/mame/drivers/simple_st0016.cpp
+++ b/src/mame/drivers/simple_st0016.cpp
@@ -38,18 +38,20 @@ void st0016_state::machine_start()
m_mainbank->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
}
-ADDRESS_MAP_START(st0016_state::st0016_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xe87f) AM_RAM /* common ram */
- AM_RANGE(0xf000, 0xffff) AM_RAM /* work ram */
-ADDRESS_MAP_END
+void st0016_state::st0016_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xe87f).ram(); /* common ram */
+ map(0xf000, 0xffff).ram(); /* work ram */
+}
-ADDRESS_MAP_START(st0016_state::renju_mem)
- AM_IMPORT_FROM( st0016_mem )
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x200000 )
-ADDRESS_MAP_END
+void st0016_state::renju_mem(address_map &map)
+{
+ st0016_mem(map);
+ map(0x0000, 0x7fff).rom().region("maincpu", 0x200000);
+}
READ8_MEMBER(st0016_state::mux_r)
@@ -87,17 +89,18 @@ WRITE8_MEMBER(st0016_state::st0016_rom_bank_w)
// st0016_rom_bank = data;
}
-ADDRESS_MAP_START(st0016_state::st0016_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P1") AM_WRITE(mux_select_w)
- AM_RANGE(0xc1, 0xc1) AM_READ_PORT("P2") AM_WRITENOP
- AM_RANGE(0xc2, 0xc2) AM_READ(mux_r) AM_WRITENOP
- AM_RANGE(0xc3, 0xc3) AM_READ_PORT("P2") AM_WRITENOP
- AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* renju = $40, neratte = 0 */
- AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITENOP /* banking ? ram bank ? shared rambank ? */
- AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */
-ADDRESS_MAP_END
+void st0016_state::st0016_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xc0, 0xc0).portr("P1").w(this, FUNC(st0016_state::mux_select_w));
+ map(0xc1, 0xc1).portr("P2").nopw();
+ map(0xc2, 0xc2).r(this, FUNC(st0016_state::mux_r)).nopw();
+ map(0xc3, 0xc3).portr("P2").nopw();
+ map(0xe0, 0xe0).nopw(); /* renju = $40, neratte = 0 */
+ map(0xe1, 0xe1).w(this, FUNC(st0016_state::st0016_rom_bank_w));
+ map(0xe6, 0xe6).nopw(); /* banking ? ram bank ? shared rambank ? */
+ map(0xe7, 0xe7).nopw(); /* watchdog */
+}
/*************************************
@@ -138,26 +141,28 @@ WRITE8_MEMBER(st0016_state::latch8_w)
machine().scheduler().synchronize();
}
-ADDRESS_MAP_START(st0016_state::v810_mem)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM
- AM_RANGE(0x80000000, 0x8001ffff) AM_RAM
- AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM
- AM_RANGE(0x40000000, 0x4000000f) AM_READ(latch32_r) AM_WRITE(latch32_w)
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(st0016_state::st0016_m2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xc0, 0xc3) AM_READ(latch8_r) AM_WRITE(latch8_w)
- AM_RANGE(0xd0, 0xd0) AM_READ_PORT("P1") AM_WRITE(mux_select_w)
- AM_RANGE(0xd1, 0xd1) AM_READ_PORT("P2") AM_WRITENOP
- AM_RANGE(0xd2, 0xd2) AM_READ(mux_r) AM_WRITENOP
- AM_RANGE(0xd3, 0xd3) AM_READ_PORT("P2") AM_WRITENOP
- AM_RANGE(0xe0, 0xe0) AM_WRITENOP
- AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITENOP /* banking ? ram bank ? shared rambank ? */
- AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */
-ADDRESS_MAP_END
+void st0016_state::v810_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram();
+ map(0x80000000, 0x8001ffff).ram();
+ map(0xc0000000, 0xc001ffff).ram();
+ map(0x40000000, 0x4000000f).r(this, FUNC(st0016_state::latch32_r)).w(this, FUNC(st0016_state::latch32_w));
+ map(0xfff80000, 0xffffffff).bankr("bank2");
+}
+
+void st0016_state::st0016_m2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xc0, 0xc3).r(this, FUNC(st0016_state::latch8_r)).w(this, FUNC(st0016_state::latch8_w));
+ map(0xd0, 0xd0).portr("P1").w(this, FUNC(st0016_state::mux_select_w));
+ map(0xd1, 0xd1).portr("P2").nopw();
+ map(0xd2, 0xd2).r(this, FUNC(st0016_state::mux_r)).nopw();
+ map(0xd3, 0xd3).portr("P2").nopw();
+ map(0xe0, 0xe0).nopw();
+ map(0xe1, 0xe1).w(this, FUNC(st0016_state::st0016_rom_bank_w));
+ map(0xe6, 0xe6).nopw(); /* banking ? ram bank ? shared rambank ? */
+ map(0xe7, 0xe7).nopw(); /* watchdog */
+}
/*************************************
*
diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp
index 138a1f78967..99e338da0ed 100644
--- a/src/mame/drivers/simpsons.cpp
+++ b/src/mame/drivers/simpsons.cpp
@@ -115,39 +115,42 @@ Notes:
***************************************************************************/
-ADDRESS_MAP_START(simpsons_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x0000, 0x0fff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2000", address_map_bank_device, amap8)
- AM_RANGE(0x1f80, 0x1f80) AM_READ_PORT("COIN")
- AM_RANGE(0x1f81, 0x1f81) AM_READ_PORT("TEST")
- AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("P1")
- AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P2")
- AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P3")
- AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("P4")
- AM_RANGE(0x1fa0, 0x1fa7) AM_DEVWRITE("k053246", k053247_device, k053246_w)
- AM_RANGE(0x1fb0, 0x1fbf) AM_DEVWRITE("k053251", k053251_device, write)
- AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(simpsons_coin_counter_w)
- AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(simpsons_eeprom_w)
- AM_RANGE(0x1fc4, 0x1fc4) AM_READ(simpsons_sound_interrupt_r)
- AM_RANGE(0x1fc6, 0x1fc7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write)
- AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD("k053246", k053247_device, k053246_r)
- AM_RANGE(0x1fca, 0x1fca) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(simpsons_state::bank0000_map)
- AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(simpsons_state::bank2000_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(simpsons_k052109_r, simpsons_k052109_w)
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE(simpsons_k053247_r, simpsons_k053247_w)
- AM_RANGE(0x3000, 0x3fff) AM_RAM
-ADDRESS_MAP_END
+void simpsons_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x0000, 0x0fff).m(m_bank0000, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_bank2000, FUNC(address_map_bank_device::amap8));
+ map(0x1f80, 0x1f80).portr("COIN");
+ map(0x1f81, 0x1f81).portr("TEST");
+ map(0x1f90, 0x1f90).portr("P1");
+ map(0x1f91, 0x1f91).portr("P2");
+ map(0x1f92, 0x1f92).portr("P3");
+ map(0x1f93, 0x1f93).portr("P4");
+ map(0x1fa0, 0x1fa7).w(m_k053246, FUNC(k053247_device::k053246_w));
+ map(0x1fb0, 0x1fbf).w(m_k053251, FUNC(k053251_device::write));
+ map(0x1fc0, 0x1fc0).w(this, FUNC(simpsons_state::simpsons_coin_counter_w));
+ map(0x1fc2, 0x1fc2).w(this, FUNC(simpsons_state::simpsons_eeprom_w));
+ map(0x1fc4, 0x1fc4).r(this, FUNC(simpsons_state::simpsons_sound_interrupt_r));
+ map(0x1fc6, 0x1fc7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write));
+ map(0x1fc8, 0x1fc9).r(m_k053246, FUNC(k053247_device::k053246_r));
+ map(0x1fca, 0x1fca).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x78000);
+}
+
+void simpsons_state::bank0000_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x1000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void simpsons_state::bank2000_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(simpsons_state::simpsons_k052109_r), FUNC(simpsons_state::simpsons_k052109_w));
+ map(0x2000, 0x2fff).rw(this, FUNC(simpsons_state::simpsons_k053247_r), FUNC(simpsons_state::simpsons_k053247_w));
+ map(0x3000, 0x3fff).ram();
+}
WRITE8_MEMBER(simpsons_state::z80_bankswitch_w)
{
@@ -186,15 +189,16 @@ WRITE8_MEMBER(simpsons_state::z80_arm_nmi_w)
timer_set(attotime::from_usec(25), TIMER_NMI); /* kludge until the K053260 is emulated correctly */
}
-ADDRESS_MAP_START(simpsons_state::z80_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
- AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w)
-ADDRESS_MAP_END
+void simpsons_state::z80_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank2");
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(simpsons_state::z80_arm_nmi_w));
+ map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0xfe00, 0xfe00).w(this, FUNC(simpsons_state::z80_bankswitch_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/sitcom.cpp b/src/mame/drivers/sitcom.cpp
index 557d3f0402e..4ecd781b6e9 100644
--- a/src/mame/drivers/sitcom.cpp
+++ b/src/mame/drivers/sitcom.cpp
@@ -141,25 +141,28 @@ protected:
};
-ADDRESS_MAP_START(sitcom_state::sitcom_bank)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("bootstrap", 0)
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sitcom_state::sitcom_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_DEVICE("bank", address_map_bank_device, amap8)
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sitcom_state::sitcom_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x1c) AM_DEVREADWRITE("pia", i8255_device, read, write)
- AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x1c) AM_DEVWRITE("ds0", dl1414_device, bus_w)
- AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x1c) AM_DEVWRITE("ds1", dl1414_device, bus_w)
-ADDRESS_MAP_END
+void sitcom_state::sitcom_bank(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom().region("bootstrap", 0);
+ map(0x8000, 0xffff).ram().share("ram");
+}
+
+void sitcom_state::sitcom_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).m(m_bank, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xffff).ram().share("ram");
+}
+
+void sitcom_state::sitcom_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x1c).rw("pia", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc0, 0xc3).mirror(0x1c).w("ds0", FUNC(dl1414_device::bus_w));
+ map(0xe0, 0xe3).mirror(0x1c).w("ds1", FUNC(dl1414_device::bus_w));
+}
INPUT_PORTS_START( sitcom )
diff --git a/src/mame/drivers/sk1.cpp b/src/mame/drivers/sk1.cpp
index be04547e2c7..a5afdd08475 100644
--- a/src/mame/drivers/sk1.cpp
+++ b/src/mame/drivers/sk1.cpp
@@ -80,11 +80,12 @@ void sk1_state::driver_start()
}
-ADDRESS_MAP_START(sk1_state::sk1_memory)
+void sk1_state::sk1_memory(address_map &map)
+{
// chip selects are driven by decoding A13 and A15 with IC3 quad 2-input NOR gate
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("lsi2", 0x0000)
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x4000) AM_RAM
-ADDRESS_MAP_END
+ map(0x0000, 0x7fff).rom().region("lsi2", 0x0000);
+ map(0x8000, 0x83ff).mirror(0x4000).ram();
+}
MACHINE_CONFIG_START(sk1_state::sk1)
diff --git a/src/mame/drivers/skeetsht.cpp b/src/mame/drivers/skeetsht.cpp
index 94cf69c4cd2..b6bb4c1b0af 100644
--- a/src/mame/drivers/skeetsht.cpp
+++ b/src/mame/drivers/skeetsht.cpp
@@ -188,16 +188,18 @@ WRITE8_MEMBER(skeetsht_state::ay8910_w)
*
*************************************/
-ADDRESS_MAP_START(skeetsht_state::hc11_pgm_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("68hc11", 0)
- AM_RANGE(0x1800, 0x1800) AM_WRITE(ay8910_w)
- AM_RANGE(0x2800, 0x2807) AM_READWRITE(tms_r, tms_w)
- AM_RANGE(0xb600, 0xbdff) AM_RAM //internal EEPROM
-ADDRESS_MAP_END
+void skeetsht_state::hc11_pgm_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().region("68hc11", 0);
+ map(0x1800, 0x1800).w(this, FUNC(skeetsht_state::ay8910_w));
+ map(0x2800, 0x2807).rw(this, FUNC(skeetsht_state::tms_r), FUNC(skeetsht_state::tms_w));
+ map(0xb600, 0xbdff).ram(); //internal EEPROM
+}
-ADDRESS_MAP_START(skeetsht_state::hc11_io_map)
- AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE(hc11_porta_r, hc11_porta_w)
-ADDRESS_MAP_END
+void skeetsht_state::hc11_io_map(address_map &map)
+{
+ map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).rw(this, FUNC(skeetsht_state::hc11_porta_r), FUNC(skeetsht_state::hc11_porta_w));
+}
/*************************************
@@ -206,12 +208,13 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(skeetsht_state::tms_program_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("tms_vram")
- AM_RANGE(0x00440000, 0x004fffff) AM_READWRITE(ramdac_r, ramdac_w)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xff800000, 0xffbfffff) AM_ROM AM_MIRROR(0x00400000) AM_REGION("tms", 0)
-ADDRESS_MAP_END
+void skeetsht_state::tms_program_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("tms_vram");
+ map(0x00440000, 0x004fffff).rw(this, 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 40ee6ad62c0..af758ee0551 100644
--- a/src/mame/drivers/skimaxx.cpp
+++ b/src/mame/drivers/skimaxx.cpp
@@ -309,31 +309,32 @@ READ32_MEMBER(skimaxx_state::skimaxx_analog_r)
*
*************************************/
-ADDRESS_MAP_START(skimaxx_state::m68030_1_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM
- AM_RANGE(0x10000000, 0x10000003) AM_WRITE(skimaxx_sub_ctrl_w )
- AM_RANGE(0x10100000, 0x1010000f) AM_DEVREADWRITE16("tms", tms34010_device, host_r, host_w, 0x0000ffff)
+void skimaxx_state::m68030_1_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom();
+ map(0x10000000, 0x10000003).w(this, FUNC(skimaxx_state::skimaxx_sub_ctrl_w));
+ map(0x10100000, 0x1010000f).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)).umask32(0x0000ffff);
// AM_RANGE(0x10180000, 0x10187fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x10180000, 0x1018ffff) AM_RAM AM_SHARE("share1") // above 10188000 accessed at level end (game bug?)
- AM_RANGE(0x20000000, 0x20000003) AM_READNOP // watchdog_r?
+ map(0x10180000, 0x1018ffff).ram().share("share1"); // above 10188000 accessed at level end (game bug?)
+ map(0x20000000, 0x20000003).nopr(); // watchdog_r?
- AM_RANGE(0x20000010, 0x20000013) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // left
- AM_RANGE(0x20000014, 0x20000017) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) // left
- AM_RANGE(0x20000018, 0x2000001b) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x00ff) // right
- AM_RANGE(0x2000001c, 0x2000001f) AM_DEVREADWRITE8("oki4", okim6295_device, read, write, 0x00ff) // right
+ map(0x20000013, 0x20000013).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // left
+ map(0x20000017, 0x20000017).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // left
+ map(0x2000001b, 0x2000001b).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // right
+ map(0x2000001f, 0x2000001f).rw("oki4", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // right
- AM_RANGE(0x20000020, 0x20000023) AM_READ(skimaxx_unk1_r ) // units linking?
- AM_RANGE(0x20000024, 0x20000027) AM_WRITE(skimaxx_unk1_w ) // ""
+ map(0x20000020, 0x20000023).r(this, FUNC(skimaxx_state::skimaxx_unk1_r)); // units linking?
+ map(0x20000024, 0x20000027).w(this, FUNC(skimaxx_state::skimaxx_unk1_w)); // ""
- AM_RANGE(0x20000040, 0x20000043) AM_RAM // write
- AM_RANGE(0x20000044, 0x20000047) AM_READ_PORT( "DSW" )
- AM_RANGE(0x20000048, 0x2000004b) AM_READ_PORT( "COIN" )
- AM_RANGE(0x2000004c, 0x2000004f) AM_READ(unk_r) // bit 7, bit 0
+ map(0x20000040, 0x20000043).ram(); // write
+ map(0x20000044, 0x20000047).portr("DSW");
+ map(0x20000048, 0x2000004b).portr("COIN");
+ map(0x2000004c, 0x2000004f).r(this, FUNC(skimaxx_state::unk_r)); // bit 7, bit 0
- AM_RANGE(0x20000050, 0x20000057) AM_READ(skimaxx_analog_r ) AM_WRITENOP // read (0-1f), write motor?
+ map(0x20000050, 0x20000057).r(this, FUNC(skimaxx_state::skimaxx_analog_r)).nopw(); // read (0-1f), write motor?
- AM_RANGE(0xfffc0000, 0xfffdffff) AM_RAM AM_MIRROR(0x00020000)
-ADDRESS_MAP_END
+ map(0xfffc0000, 0xfffdffff).ram().mirror(0x00020000);
+}
/*************************************
@@ -342,22 +343,23 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(skimaxx_state::m68030_2_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_ROM
+void skimaxx_state::m68030_2_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).rom();
- AM_RANGE(0x20000000, 0x2007ffff) AM_READ(skimaxx_blitter_r ) // do blit
- AM_RANGE(0x30000000, 0x3000000f) AM_WRITE(skimaxx_blitter_w ) AM_SHARE("blitter_regs")
+ map(0x20000000, 0x2007ffff).r(this, FUNC(skimaxx_state::skimaxx_blitter_r)); // do blit
+ map(0x30000000, 0x3000000f).w(this, FUNC(skimaxx_state::skimaxx_blitter_w)).share("blitter_regs");
- AM_RANGE(0x40000000, 0x40000003) AM_WRITE(skimaxx_fpga_ctrl_w ) AM_SHARE("fpga_ctrl")
+ map(0x40000000, 0x40000003).w(this, FUNC(skimaxx_state::skimaxx_fpga_ctrl_w)).share("fpga_ctrl");
- AM_RANGE(0x50000000, 0x5007ffff) AM_RAMBANK("bank1") // background ram allocated here at video_start (skimaxx_bg_buffer_back/front)
+ map(0x50000000, 0x5007ffff).bankrw("bank1"); // background ram allocated here at video_start (skimaxx_bg_buffer_back/front)
// AM_RANGE(0xfffc0000, 0xfffc7fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xfffc0000, 0xfffcffff) AM_RAM AM_SHARE("share1")
+ map(0xfffc0000, 0xfffcffff).ram().share("share1");
// AM_RANGE(0xfffe0000, 0xffffffff) AM_RAM // I think this is banked with the shared RAM? (see CPU sync routines)
- AM_RANGE(0xfffe0000, 0xfffeffff) AM_RAM AM_SHARE("share1") // HACK
- AM_RANGE(0xfffe0010, 0xfffeffff) AM_RAM // HACK
- AM_RANGE(0xffff0000, 0xffffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xfffe0000, 0xfffeffff).ram().share("share1"); // HACK
+ map(0xfffe0010, 0xfffeffff).ram(); // HACK
+ map(0xffff0000, 0xffffffff).ram();
+}
/*************************************
@@ -366,16 +368,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(skimaxx_state::tms_program_map)
- AM_RANGE(0x00000000, 0x0003ffff) AM_RAM
- AM_RANGE(0x00050000, 0x0005ffff) AM_RAM
- AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_SHARE("fg_buffer")
- AM_RANGE(0x02000000, 0x0200000f) AM_RAM
- AM_RANGE(0x02100000, 0x0210000f) AM_RAM
- AM_RANGE(0x04000000, 0x047fffff) AM_ROM AM_REGION("tmsgfx", 0)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("tms", 0)
-ADDRESS_MAP_END
+void skimaxx_state::tms_program_map(address_map &map)
+{
+ map(0x00000000, 0x0003ffff).ram();
+ map(0x00050000, 0x0005ffff).ram();
+ map(0x00220000, 0x003fffff).ram().share("fg_buffer");
+ 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);
+}
/*************************************
diff --git a/src/mame/drivers/skullxbo.cpp b/src/mame/drivers/skullxbo.cpp
index 09f25f2e513..61ae035186b 100644
--- a/src/mame/drivers/skullxbo.cpp
+++ b/src/mame/drivers/skullxbo.cpp
@@ -99,36 +99,37 @@ WRITE16_MEMBER(skullxbo_state::skullxbo_mobwr_w)
*
*************************************/
-ADDRESS_MAP_START(skullxbo_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0xff0000, 0xff07ff) AM_WRITE(skullxbo_mobmsb_w)
- AM_RANGE(0xff0800, 0xff0bff) AM_WRITE(skullxbo_halt_until_hblank_0_w)
- AM_RANGE(0xff0c00, 0xff0fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0xff1000, 0xff13ff) AM_WRITE(video_int_ack_w)
- AM_RANGE(0xff1400, 0xff17ff) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff)
- AM_RANGE(0xff1800, 0xff1bff) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w)
- AM_RANGE(0xff1c00, 0xff1c7f) AM_WRITE(playfield_latch_w)
- AM_RANGE(0xff1c80, 0xff1cff) AM_WRITE(skullxbo_xscroll_w) AM_SHARE("xscroll")
- AM_RANGE(0xff1d00, 0xff1d7f) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0xff1d80, 0xff1dff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xff1e00, 0xff1e7f) AM_WRITE(playfield_latch_w)
- AM_RANGE(0xff1e80, 0xff1eff) AM_WRITE(skullxbo_xscroll_w)
- AM_RANGE(0xff1f00, 0xff1f7f) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0xff1f80, 0xff1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff4000, 0xff47ff) AM_WRITE(skullxbo_yscroll_w) AM_SHARE("yscroll")
- AM_RANGE(0xff4800, 0xff4fff) AM_WRITE(skullxbo_mobwr_w)
- AM_RANGE(0xff5000, 0xff5001) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff)
- AM_RANGE(0xff5800, 0xff5801) AM_READ_PORT("FF5800")
- AM_RANGE(0xff5802, 0xff5803) AM_READ_PORT("FF5802")
- AM_RANGE(0xff6000, 0xff6fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0xff8000, 0xff9fff) AM_RAM_WRITE(playfield_latched_w) AM_SHARE("playfield")
- AM_RANGE(0xffa000, 0xffbfff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext")
- AM_RANGE(0xffc000, 0xffcf7f) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xffcf80, 0xffcfff) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xffe000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void skullxbo_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0xff0000, 0xff07ff).w(this, FUNC(skullxbo_state::skullxbo_mobmsb_w));
+ map(0xff0800, 0xff0bff).w(this, FUNC(skullxbo_state::skullxbo_halt_until_hblank_0_w));
+ map(0xff0c00, 0xff0fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0xff1000, 0xff13ff).w(this, FUNC(skullxbo_state::video_int_ack_w));
+ map(0xff1400, 0xff17ff).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w)).umask16(0x00ff);
+ map(0xff1800, 0xff1bff).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w));
+ map(0xff1c00, 0xff1c7f).w(this, FUNC(skullxbo_state::playfield_latch_w));
+ map(0xff1c80, 0xff1cff).w(this, FUNC(skullxbo_state::skullxbo_xscroll_w)).share("xscroll");
+ map(0xff1d00, 0xff1d7f).w(this, FUNC(skullxbo_state::scanline_int_ack_w));
+ map(0xff1d80, 0xff1dff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xff1e00, 0xff1e7f).w(this, FUNC(skullxbo_state::playfield_latch_w));
+ map(0xff1e80, 0xff1eff).w(this, FUNC(skullxbo_state::skullxbo_xscroll_w));
+ map(0xff1f00, 0xff1f7f).w(this, FUNC(skullxbo_state::scanline_int_ack_w));
+ map(0xff1f80, 0xff1fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0xff2000, 0xff2fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xff4000, 0xff47ff).w(this, FUNC(skullxbo_state::skullxbo_yscroll_w)).share("yscroll");
+ map(0xff4800, 0xff4fff).w(this, FUNC(skullxbo_state::skullxbo_mobwr_w));
+ map(0xff5001, 0xff5001).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r));
+ map(0xff5800, 0xff5801).portr("FF5800");
+ map(0xff5802, 0xff5803).portr("FF5802");
+ map(0xff6000, 0xff6fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0xff8000, 0xff9fff).ram().w(this, FUNC(skullxbo_state::playfield_latched_w)).share("playfield");
+ map(0xffa000, 0xffbfff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext");
+ map(0xffc000, 0xffcf7f).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0xffcf80, 0xffcfff).ram().share("mob:slip");
+ map(0xffd000, 0xffdfff).ram().share("mob");
+ map(0xffe000, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/skyarmy.cpp b/src/mame/drivers/skyarmy.cpp
index 13d30a14387..4ec8c11f20c 100644
--- a/src/mame/drivers/skyarmy.cpp
+++ b/src/mame/drivers/skyarmy.cpp
@@ -210,27 +210,29 @@ WRITE_LINE_MEMBER(skyarmy_state::nmi_enable_w)
}
-ADDRESS_MAP_START(skyarmy_state::skyarmy_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* Color RAM */
- AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scrollram") /* Scroll RAM */
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P1")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2")
- AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("latch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(skyarmy_state::skyarmy_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay0", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ay0", ay8910_device, data_r)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("ay1", ay8910_device, data_r)
-ADDRESS_MAP_END
+void skyarmy_state::skyarmy_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8fff).ram().w(this, FUNC(skyarmy_state::videoram_w)).share("videoram"); /* Video RAM */
+ map(0x9000, 0x93ff).ram().w(this, 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");
+ map(0xa003, 0xa003).portr("SYSTEM");
+ map(0xa000, 0xa007).w("latch", FUNC(ls259_device::write_d0));
+}
+
+void skyarmy_state::skyarmy_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay0", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("ay0", FUNC(ay8910_device::data_r));
+ map(0x04, 0x05).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r("ay1", FUNC(ay8910_device::data_r));
+}
/* verified from Z80 code */
diff --git a/src/mame/drivers/skydiver.cpp b/src/mame/drivers/skydiver.cpp
index e78e160ec95..b29bf2ee3ff 100644
--- a/src/mame/drivers/skydiver.cpp
+++ b/src/mame/drivers/skydiver.cpp
@@ -172,33 +172,34 @@ INTERRUPT_GEN_MEMBER(skydiver_state::interrupt)
*
*************************************/
-ADDRESS_MAP_START(skydiver_state::skydiver_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(wram_r, wram_w)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x4000) AM_RAM /* RAM B1 */
- AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */
- AM_RANGE(0x0800, 0x080f) AM_MIRROR(0x47f0) AM_DEVWRITE("latch1", f9334_device, write_a0)
- AM_RANGE(0x1000, 0x100f) AM_MIRROR(0x47f0) AM_DEVWRITE("latch2", f9334_device, write_a0)
- AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x47e0) AM_READ_PORT("IN0")
- AM_RANGE(0x1801, 0x1801) AM_MIRROR(0x47e0) AM_READ_PORT("IN1")
- AM_RANGE(0x1802, 0x1802) AM_MIRROR(0x47e0) AM_READ_PORT("IN2")
- AM_RANGE(0x1803, 0x1803) AM_MIRROR(0x47e0) AM_READ_PORT("IN3")
- AM_RANGE(0x1804, 0x1804) AM_MIRROR(0x47e0) AM_READ_PORT("IN4")
- AM_RANGE(0x1805, 0x1805) AM_MIRROR(0x47e0) AM_READ_PORT("IN5")
- AM_RANGE(0x1806, 0x1806) AM_MIRROR(0x47e0) AM_READ_PORT("IN6")
- AM_RANGE(0x1807, 0x1807) AM_MIRROR(0x47e0) AM_READ_PORT("IN7")
- AM_RANGE(0x1808, 0x1808) AM_MIRROR(0x47e4) AM_READ_PORT("IN8")
- AM_RANGE(0x1809, 0x1809) AM_MIRROR(0x47e4) AM_READ_PORT("IN9")
- AM_RANGE(0x180a, 0x180a) AM_MIRROR(0x47e4) AM_READ_PORT("IN10")
- AM_RANGE(0x180b, 0x180b) AM_MIRROR(0x47e4) AM_READ_PORT("IN11")
- AM_RANGE(0x1810, 0x1810) AM_MIRROR(0x47e4) AM_READ_PORT("IN12")
- AM_RANGE(0x1811, 0x1811) AM_MIRROR(0x47e4) AM_READ_PORT("IN13")
- AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(latch3_watchdog_w)
- AM_RANGE(0x2800, 0x2fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x3800, 0x3fff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void skydiver_state::skydiver_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x007f).mirror(0x4300).rw(this, FUNC(skydiver_state::wram_r), FUNC(skydiver_state::wram_w));
+ map(0x0080, 0x00ff).mirror(0x4000).ram(); /* RAM B1 */
+ map(0x0400, 0x07ff).mirror(0x4000).ram().w(this, FUNC(skydiver_state::videoram_w)).share("videoram"); /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */
+ map(0x0800, 0x080f).mirror(0x47f0).w("latch1", FUNC(f9334_device::write_a0));
+ map(0x1000, 0x100f).mirror(0x47f0).w("latch2", FUNC(f9334_device::write_a0));
+ map(0x1800, 0x1800).mirror(0x47e0).portr("IN0");
+ map(0x1801, 0x1801).mirror(0x47e0).portr("IN1");
+ map(0x1802, 0x1802).mirror(0x47e0).portr("IN2");
+ map(0x1803, 0x1803).mirror(0x47e0).portr("IN3");
+ map(0x1804, 0x1804).mirror(0x47e0).portr("IN4");
+ map(0x1805, 0x1805).mirror(0x47e0).portr("IN5");
+ map(0x1806, 0x1806).mirror(0x47e0).portr("IN6");
+ map(0x1807, 0x1807).mirror(0x47e0).portr("IN7");
+ map(0x1808, 0x1808).mirror(0x47e4).portr("IN8");
+ map(0x1809, 0x1809).mirror(0x47e4).portr("IN9");
+ map(0x180a, 0x180a).mirror(0x47e4).portr("IN10");
+ map(0x180b, 0x180b).mirror(0x47e4).portr("IN11");
+ map(0x1810, 0x1810).mirror(0x47e4).portr("IN12");
+ map(0x1811, 0x1811).mirror(0x47e4).portr("IN13");
+ map(0x2000, 0x201f).mirror(0x47e0).r(m_watchdog, FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(skydiver_state::latch3_watchdog_w));
+ map(0x2800, 0x2fff).mirror(0x4000).rom();
+ map(0x3000, 0x37ff).mirror(0x4000).rom();
+ map(0x3800, 0x3fff).rom();
+ map(0x7800, 0x7fff).rom();
+}
diff --git a/src/mame/drivers/skyfox.cpp b/src/mame/drivers/skyfox.cpp
index 9e21acfa4a8..5d68ab440fb 100644
--- a/src/mame/drivers/skyfox.cpp
+++ b/src/mame/drivers/skyfox.cpp
@@ -50,17 +50,18 @@ WRITE8_MEMBER(skyfox_state::skyfox_vregs_w)
}
}
-ADDRESS_MAP_START(skyfox_state::skyfox_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd400, 0xdfff) AM_RAM // ?
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("INPUTS")
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW0")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW1")
- AM_RANGE(0xe008, 0xe00f) AM_WRITE(skyfox_vregs_w)
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+void skyfox_state::skyfox_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd3ff).ram().share("spriteram");
+ map(0xd400, 0xdfff).ram(); // ?
+ map(0xe000, 0xe000).portr("INPUTS");
+ map(0xe001, 0xe001).portr("DSW0");
+ map(0xe002, 0xe002).portr("DSW1");
+ map(0xe008, 0xe00f).w(this, FUNC(skyfox_state::skyfox_vregs_w));
+ map(0xf001, 0xf001).portr("DSW2");
+}
/***************************************************************************
@@ -69,15 +70,16 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(skyfox_state::skyfox_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
+void skyfox_state::skyfox_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
// AM_RANGE(0x9000, 0x9001) AM_WRITENOP // ??
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
+ map(0xa000, 0xa001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
// AM_RANGE(0xb000, 0xb001) AM_WRITENOP // ??
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0xc000, 0xc001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/***************************************************************************
diff --git a/src/mame/drivers/skykid.cpp b/src/mame/drivers/skykid.cpp
index 816c5e7292f..bd7d0f4a7a3 100644
--- a/src/mame/drivers/skykid.cpp
+++ b/src/mame/drivers/skykid.cpp
@@ -19,7 +19,6 @@ Notes:
#include "includes/skykid.h"
#include "cpu/m6809/m6809.h"
-#include "cpu/m6800/m6801.h"
#include "machine/watchdog.h"
#include "sound/namco.h"
#include "screen.h"
@@ -104,32 +103,34 @@ void skykid_state::machine_start()
-ADDRESS_MAP_START(skykid_state::skykid_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE(skykid_videoram_r,skykid_videoram_w) AM_SHARE("videoram")/* Video RAM (background) */
- AM_RANGE(0x4000, 0x47ff) AM_READWRITE(skykid_textram_r,skykid_textram_w) AM_SHARE("textram") /* video RAM (text layer) */
- AM_RANGE(0x4800, 0x5fff) AM_RAM AM_SHARE("spriteram") /* RAM + Sprite RAM */
- AM_RANGE(0x6000, 0x60ff) AM_WRITE(skykid_scroll_y_w) /* Y scroll register map */
- AM_RANGE(0x6200, 0x63ff) AM_WRITE(skykid_scroll_x_w) /* X scroll register map */
- AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
- AM_RANGE(0x7000, 0x7fff) AM_WRITE(skykid_irq_1_ctrl_w) /* IRQ control */
- AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
- AM_RANGE(0x8000, 0x8fff) AM_WRITE(skykid_subreset_w) /* MCU control */
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(skykid_bankswitch_w) /* Bankswitch control */
- AM_RANGE(0xa000, 0xa001) AM_WRITE(skykid_flipscreen_priority_w) /* flip screen & priority */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(skykid_state::mcu_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
- AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog? */
- AM_RANGE(0x4000, 0x7fff) AM_WRITE(skykid_irq_2_ctrl_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void skykid_state::skykid_map(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bank1"); /* banked ROM */
+ map(0x2000, 0x2fff).rw(this, FUNC(skykid_state::skykid_videoram_r), FUNC(skykid_state::skykid_videoram_w)).share("videoram");/* Video RAM (background) */
+ map(0x4000, 0x47ff).rw(this, FUNC(skykid_state::skykid_textram_r), FUNC(skykid_state::skykid_textram_w)).share("textram"); /* video RAM (text layer) */
+ map(0x4800, 0x5fff).ram().share("spriteram"); /* RAM + Sprite RAM */
+ map(0x6000, 0x60ff).w(this, FUNC(skykid_state::skykid_scroll_y_w)); /* Y scroll register map */
+ map(0x6200, 0x63ff).w(this, FUNC(skykid_state::skykid_scroll_x_w)); /* X scroll register map */
+ map(0x6800, 0x6bff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
+ map(0x7000, 0x7fff).w(this, FUNC(skykid_state::skykid_irq_1_ctrl_w)); /* IRQ control */
+ map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8000, 0xffff).rom(); /* ROM */
+ map(0x8000, 0x8fff).w(this, FUNC(skykid_state::skykid_subreset_w)); /* MCU control */
+ map(0x9000, 0x9fff).w(this, FUNC(skykid_state::skykid_bankswitch_w)); /* Bankswitch control */
+ map(0xa000, 0xa001).w(this, FUNC(skykid_state::skykid_flipscreen_priority_w)); /* flip screen & priority */
+}
+
+void skykid_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */
+ map(0x2000, 0x3fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog? */
+ map(0x4000, 0x7fff).w(this, FUNC(skykid_state::skykid_irq_2_ctrl_w));
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xf000, 0xffff).rom();
+}
READ8_MEMBER(skykid_state::readFF)
@@ -137,12 +138,13 @@ READ8_MEMBER(skykid_state::readFF)
return 0xff;
}
-ADDRESS_MAP_START(skykid_state::mcu_port_map)
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ(inputport_r) /* input ports read */
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(inputport_select_w) /* input port select */
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(skykid_led_w) /* lamps */
-ADDRESS_MAP_END
+void skykid_state::mcu_port_map(address_map &map)
+{
+ map(M6801_PORT1, M6801_PORT1).r(this, FUNC(skykid_state::inputport_r)); /* input ports read */
+ map(M6801_PORT1, M6801_PORT1).w(this, FUNC(skykid_state::inputport_select_w)); /* input port select */
+ map(M6801_PORT2, M6801_PORT2).r(this, FUNC(skykid_state::readFF)); /* leds won't work otherwise */
+ map(M6801_PORT2, M6801_PORT2).w(this, FUNC(skykid_state::skykid_led_w)); /* lamps */
+}
diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp
index 331e23b11ac..bc6bd8c6963 100644
--- a/src/mame/drivers/skylncr.cpp
+++ b/src/mame/drivers/skylncr.cpp
@@ -455,107 +455,113 @@ READ8_MEMBER(skylncr_state::bdream97_opcode_r)
* Memory Map *
**************************************/
-ADDRESS_MAP_START(skylncr_state::mem_map_skylncr)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
-
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skylncr_videoram_w ) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(skylncr_colorram_w ) AM_SHARE("colorram")
-
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(reeltiles_1_w ) AM_SHARE("reeltiles_1_ram")
- AM_RANGE(0x9a00, 0x9bff) AM_RAM_WRITE(reeltiles_2_w ) AM_SHARE("reeltiles_2_ram")
- AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(reeltiles_3_w ) AM_SHARE("reeltiles_3_ram")
- AM_RANGE(0x9e00, 0x9fff) AM_RAM_WRITE(reeltiles_4_w ) AM_SHARE("reeltiles_4_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(reeltileshigh_1_w ) AM_SHARE("rthigh_1_ram")
- AM_RANGE(0xa200, 0xa3ff) AM_RAM_WRITE(reeltileshigh_2_w ) AM_SHARE("rthigh_2_ram")
- AM_RANGE(0xa400, 0xa5ff) AM_RAM_WRITE(reeltileshigh_3_w ) AM_SHARE("rthigh_3_ram")
- AM_RANGE(0xa600, 0xa7ff) AM_RAM_WRITE(reeltileshigh_4_w ) AM_SHARE("rthigh_4_ram")
-
- AM_RANGE(0xaa55, 0xaa55) AM_READ(ret_ff )
-
- AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE(reelscroll1_w) AM_SHARE("reelscroll1")
- AM_RANGE(0xb040, 0xb07f) AM_RAM_WRITE(reelscroll1_w)
- AM_RANGE(0xb080, 0xb0bf) AM_RAM_WRITE(reelscroll1_w)
- AM_RANGE(0xb0c0, 0xb0ff) AM_RAM_WRITE(reelscroll1_w)
- AM_RANGE(0xb100, 0xb13f) AM_RAM_WRITE(reelscroll1_w)
- AM_RANGE(0xb140, 0xb17f) AM_RAM_WRITE(reelscroll1_w)
- AM_RANGE(0xb180, 0xb1bf) AM_RAM_WRITE(reelscroll1_w)
- AM_RANGE(0xb1c0, 0xb1ff) AM_RAM_WRITE(reelscroll1_w)
-
- AM_RANGE(0xb200, 0xb23f) AM_RAM_WRITE(reelscroll2_w) AM_SHARE("reelscroll2")
- AM_RANGE(0xb240, 0xb27f) AM_RAM_WRITE(reelscroll2_w)
- AM_RANGE(0xb280, 0xb2bf) AM_RAM_WRITE(reelscroll2_w)
- AM_RANGE(0xb2c0, 0xb2ff) AM_RAM_WRITE(reelscroll2_w)
- AM_RANGE(0xb300, 0xb33f) AM_RAM_WRITE(reelscroll2_w)
- AM_RANGE(0xb340, 0xb37f) AM_RAM_WRITE(reelscroll2_w)
- AM_RANGE(0xb380, 0xb3bf) AM_RAM_WRITE(reelscroll2_w)
- AM_RANGE(0xb3c0, 0xb3ff) AM_RAM_WRITE(reelscroll2_w)
-
- AM_RANGE(0xb400, 0xb43f) AM_RAM_WRITE(reelscroll3_w) AM_SHARE("reelscroll3")
- AM_RANGE(0xb440, 0xb47f) AM_RAM_WRITE(reelscroll3_w)
- AM_RANGE(0xb480, 0xb4bf) AM_RAM_WRITE(reelscroll3_w)
- AM_RANGE(0xb4c0, 0xb4ff) AM_RAM_WRITE(reelscroll3_w)
- AM_RANGE(0xb500, 0xb53f) AM_RAM_WRITE(reelscroll3_w)
- AM_RANGE(0xb540, 0xb57f) AM_RAM_WRITE(reelscroll3_w)
- AM_RANGE(0xb580, 0xb5bf) AM_RAM_WRITE(reelscroll3_w)
- AM_RANGE(0xb5c0, 0xb5ff) AM_RAM_WRITE(reelscroll3_w)
-
- AM_RANGE(0xb600, 0xb63f) AM_RAM_WRITE(reelscroll4_w) AM_SHARE("reelscroll4")
- AM_RANGE(0xb640, 0xb67f) AM_RAM_WRITE(reelscroll4_w)
- AM_RANGE(0xb680, 0xb6bf) AM_RAM_WRITE(reelscroll4_w)
- AM_RANGE(0xb6c0, 0xb6ff) AM_RAM_WRITE(reelscroll4_w)
- AM_RANGE(0xb700, 0xb73f) AM_RAM_WRITE(reelscroll4_w)
- AM_RANGE(0xb740, 0xb77f) AM_RAM_WRITE(reelscroll4_w)
- AM_RANGE(0xb780, 0xb7bf) AM_RAM_WRITE(reelscroll4_w)
- AM_RANGE(0xb7c0, 0xb7ff) AM_RAM_WRITE(reelscroll4_w)
-
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(skylncr_state::io_map_skylncr)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
-
- AM_RANGE(0x20, 0x20) AM_WRITE(skylncr_coin_w)
-
- AM_RANGE(0x30, 0x31) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x31, 0x31) AM_DEVREAD("aysnd", ay8910_device, data_r)
-
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0x41, 0x41) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE(0x42, 0x42) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
-
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("ramdac2", ramdac_device, index_w)
- AM_RANGE(0x51, 0x51) AM_DEVWRITE("ramdac2", ramdac_device, pal_w)
- AM_RANGE(0x52, 0x52) AM_DEVWRITE("ramdac2", ramdac_device, mask_w)
-
- AM_RANGE(0x70, 0x70) AM_WRITE(skylncr_nmi_enable_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(skylncr_state::io_map_mbutrfly)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_IMPORT_FROM(io_map_skylncr)
- AM_RANGE(0x60, 0x60) AM_WRITE(mbutrfly_prot_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(skylncr_state::bdream97_opcode_map)
- AM_RANGE(0x0000, 0xffff) AM_READ(bdream97_opcode_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(skylncr_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(skylncr_state::ramdac2_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac2", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void skylncr_state::mem_map_skylncr(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+
+ map(0x8800, 0x8fff).ram().w(this, FUNC(skylncr_state::skylncr_videoram_w)).share("videoram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(skylncr_state::skylncr_colorram_w)).share("colorram");
+
+ map(0x9800, 0x99ff).ram().w(this, FUNC(skylncr_state::reeltiles_1_w)).share("reeltiles_1_ram");
+ map(0x9a00, 0x9bff).ram().w(this, FUNC(skylncr_state::reeltiles_2_w)).share("reeltiles_2_ram");
+ map(0x9c00, 0x9dff).ram().w(this, FUNC(skylncr_state::reeltiles_3_w)).share("reeltiles_3_ram");
+ map(0x9e00, 0x9fff).ram().w(this, FUNC(skylncr_state::reeltiles_4_w)).share("reeltiles_4_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_1_w)).share("rthigh_1_ram");
+ map(0xa200, 0xa3ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_2_w)).share("rthigh_2_ram");
+ map(0xa400, 0xa5ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_3_w)).share("rthigh_3_ram");
+ map(0xa600, 0xa7ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_4_w)).share("rthigh_4_ram");
+
+ map(0xaa55, 0xaa55).r(this, FUNC(skylncr_state::ret_ff));
+
+ map(0xb000, 0xb03f).ram().w(this, FUNC(skylncr_state::reelscroll1_w)).share("reelscroll1");
+ map(0xb040, 0xb07f).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+ map(0xb080, 0xb0bf).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+ map(0xb0c0, 0xb0ff).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+ map(0xb100, 0xb13f).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+ map(0xb140, 0xb17f).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+ map(0xb180, 0xb1bf).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+ map(0xb1c0, 0xb1ff).ram().w(this, FUNC(skylncr_state::reelscroll1_w));
+
+ map(0xb200, 0xb23f).ram().w(this, FUNC(skylncr_state::reelscroll2_w)).share("reelscroll2");
+ map(0xb240, 0xb27f).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+ map(0xb280, 0xb2bf).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+ map(0xb2c0, 0xb2ff).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+ map(0xb300, 0xb33f).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+ map(0xb340, 0xb37f).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+ map(0xb380, 0xb3bf).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+ map(0xb3c0, 0xb3ff).ram().w(this, FUNC(skylncr_state::reelscroll2_w));
+
+ map(0xb400, 0xb43f).ram().w(this, FUNC(skylncr_state::reelscroll3_w)).share("reelscroll3");
+ map(0xb440, 0xb47f).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+ map(0xb480, 0xb4bf).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+ map(0xb4c0, 0xb4ff).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+ map(0xb500, 0xb53f).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+ map(0xb540, 0xb57f).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+ map(0xb580, 0xb5bf).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+ map(0xb5c0, 0xb5ff).ram().w(this, FUNC(skylncr_state::reelscroll3_w));
+
+ map(0xb600, 0xb63f).ram().w(this, FUNC(skylncr_state::reelscroll4_w)).share("reelscroll4");
+ map(0xb640, 0xb67f).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+ map(0xb680, 0xb6bf).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+ map(0xb6c0, 0xb6ff).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+ map(0xb700, 0xb73f).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+ map(0xb740, 0xb77f).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+ map(0xb780, 0xb7bf).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+ map(0xb7c0, 0xb7ff).ram().w(this, FUNC(skylncr_state::reelscroll4_w));
+
+ map(0xc000, 0xffff).rom();
+}
+
+
+void skylncr_state::io_map_skylncr(address_map &map)
+{
+ map.global_mask(0xff);
+
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+
+ map(0x20, 0x20).w(this, FUNC(skylncr_state::skylncr_coin_w));
+
+ map(0x30, 0x31).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x31, 0x31).r("aysnd", FUNC(ay8910_device::data_r));
+
+ map(0x40, 0x40).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x41, 0x41).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x42, 0x42).w("ramdac", FUNC(ramdac_device::mask_w));
+
+ map(0x50, 0x50).w("ramdac2", FUNC(ramdac_device::index_w));
+ map(0x51, 0x51).w("ramdac2", FUNC(ramdac_device::pal_w));
+ map(0x52, 0x52).w("ramdac2", FUNC(ramdac_device::mask_w));
+
+ map(0x70, 0x70).w(this, FUNC(skylncr_state::skylncr_nmi_enable_w));
+}
+
+
+void skylncr_state::io_map_mbutrfly(address_map &map)
+{
+ map.global_mask(0xff);
+ io_map_skylncr(map);
+ map(0x60, 0x60).w(this, FUNC(skylncr_state::mbutrfly_prot_w));
+}
+
+
+void skylncr_state::bdream97_opcode_map(address_map &map)
+{
+ map(0x0000, 0xffff).r(this, FUNC(skylncr_state::bdream97_opcode_r));
+}
+
+
+void skylncr_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
+
+
+void skylncr_state::ramdac2_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac2", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
diff --git a/src/mame/drivers/skyraid.cpp b/src/mame/drivers/skyraid.cpp
index 29674d78989..966de721782 100644
--- a/src/mame/drivers/skyraid.cpp
+++ b/src/mame/drivers/skyraid.cpp
@@ -71,23 +71,24 @@ WRITE8_MEMBER(skyraid_state::skyraid_scroll_w)
}
-ADDRESS_MAP_START(skyraid_state::skyraid_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x300)
- AM_RANGE(0x0400, 0x040f) AM_WRITEONLY AM_SHARE("pos_ram")
- AM_RANGE(0x0800, 0x087f) AM_RAM AM_MIRROR(0x480) AM_SHARE("alpha_num_ram")
- AM_RANGE(0x1000, 0x1000) AM_READ(skyraid_port_0_r)
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW")
- AM_RANGE(0x1400, 0x1400) AM_READ_PORT("COIN")
- AM_RANGE(0x1401, 0x1401) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("obj_ram")
- AM_RANGE(0x4000, 0x4000) AM_WRITE(skyraid_scroll_w)
- AM_RANGE(0x4400, 0x4400) AM_WRITE(skyraid_sound_w)
- AM_RANGE(0x4800, 0x4800) AM_WRITE(skyraid_range_w)
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5800, 0x5800) AM_WRITE(skyraid_offset_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void skyraid_state::skyraid_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().mirror(0x300);
+ map(0x0400, 0x040f).writeonly().share("pos_ram");
+ map(0x0800, 0x087f).ram().mirror(0x480).share("alpha_num_ram");
+ map(0x1000, 0x1000).r(this, FUNC(skyraid_state::skyraid_port_0_r));
+ map(0x1001, 0x1001).portr("DSW");
+ map(0x1400, 0x1400).portr("COIN");
+ map(0x1401, 0x1401).portr("SYSTEM");
+ map(0x1c00, 0x1c0f).writeonly().share("obj_ram");
+ map(0x4000, 0x4000).w(this, FUNC(skyraid_state::skyraid_scroll_w));
+ map(0x4400, 0x4400).w(this, FUNC(skyraid_state::skyraid_sound_w));
+ map(0x4800, 0x4800).w(this, FUNC(skyraid_state::skyraid_range_w));
+ map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5800, 0x5800).w(this, FUNC(skyraid_state::skyraid_offset_w));
+ map(0x7000, 0x7fff).rom();
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( skyraid )
PORT_START("LANGUAGE")
diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp
index 72a2b244d5b..067d6ee86f7 100644
--- a/src/mame/drivers/slapfght.cpp
+++ b/src/mame/drivers/slapfght.cpp
@@ -273,91 +273,101 @@ Stephh's notes (based on the games Z80 code and some tests) :
***************************************************************************/
-ADDRESS_MAP_START(slapfght_state::perfrman_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(slapfght_state::tigerh_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_lo_w)
- AM_RANGE(0xe801, 0xe801) AM_WRITE(scrollx_hi_w)
- AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::tigerh_map_mcu)
- AM_IMPORT_FROM( tigerh_map )
- AM_RANGE(0xe803, 0xe803) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::tigerhb1_map)
- AM_IMPORT_FROM( tigerh_map )
- AM_RANGE(0xe803, 0xe803) AM_READWRITE(tigerhb1_prot_r, tigerhb1_prot_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::tigerhb2_map)
- AM_IMPORT_FROM( tigerh_map )
- AM_RANGE(0xe803, 0xe803) AM_NOP // no MCU
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(slapfght_state::slapfigh_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_lo_w)
- AM_RANGE(0xe801, 0xe801) AM_WRITE(scrollx_hi_w)
- AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::slapfigh_map_mcu)
- AM_IMPORT_FROM( slapfigh_map )
- AM_RANGE(0xe803, 0xe803) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::slapfighb1_map)
- AM_IMPORT_FROM( slapfigh_map )
- AM_RANGE(0xe803, 0xe803) AM_NOP // no MCU
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::getstar_map)
- AM_IMPORT_FROM( slapfigh_map )
- AM_RANGE(0xe803, 0xe803) AM_READWRITE(getstar_mcusim_r, getstar_mcusim_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::slapfighb2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_hi_w)
- AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w)
- AM_RANGE(0xe803, 0xe803) AM_WRITE(scrollx_lo_w)
- AM_RANGE(0xec00, 0xefff) AM_ROM // it reads a copy of the logo from here!
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram")
-ADDRESS_MAP_END
+void slapfght_state::perfrman_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8fff).ram().share("share1");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram");
+ map(0x9800, 0x9fff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram");
+ map(0xa000, 0xa7ff).ram().share("spriteram");
+}
+
+
+void slapfght_state::tigerh_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram");
+ map(0xe000, 0xe7ff).ram().share("spriteram");
+ map(0xe800, 0xe800).w(this, FUNC(slapfght_state::scrollx_lo_w));
+ map(0xe801, 0xe801).w(this, FUNC(slapfght_state::scrollx_hi_w));
+ map(0xe802, 0xe802).w(this, FUNC(slapfght_state::scrolly_w));
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(slapfght_state::fixram_w)).share("fixvideoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(slapfght_state::fixcol_w)).share("fixcolorram");
+}
+
+void slapfght_state::tigerh_map_mcu(address_map &map)
+{
+ tigerh_map(map);
+ map(0xe803, 0xe803).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+}
+
+void slapfght_state::tigerhb1_map(address_map &map)
+{
+ tigerh_map(map);
+ map(0xe803, 0xe803).rw(this, FUNC(slapfght_state::tigerhb1_prot_r), FUNC(slapfght_state::tigerhb1_prot_w));
+}
+
+void slapfght_state::tigerhb2_map(address_map &map)
+{
+ tigerh_map(map);
+ map(0xe803, 0xe803).noprw(); // no MCU
+}
+
+
+void slapfght_state::slapfigh_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram");
+ map(0xe000, 0xe7ff).ram().share("spriteram");
+ map(0xe800, 0xe800).w(this, FUNC(slapfght_state::scrollx_lo_w));
+ map(0xe801, 0xe801).w(this, FUNC(slapfght_state::scrollx_hi_w));
+ map(0xe802, 0xe802).w(this, FUNC(slapfght_state::scrolly_w));
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(slapfght_state::fixram_w)).share("fixvideoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(slapfght_state::fixcol_w)).share("fixcolorram");
+}
+
+void slapfght_state::slapfigh_map_mcu(address_map &map)
+{
+ slapfigh_map(map);
+ map(0xe803, 0xe803).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
+}
+
+void slapfght_state::slapfighb1_map(address_map &map)
+{
+ slapfigh_map(map);
+ map(0xe803, 0xe803).noprw(); // no MCU
+}
+
+void slapfght_state::getstar_map(address_map &map)
+{
+ slapfigh_map(map);
+ map(0xe803, 0xe803).rw(this, FUNC(slapfght_state::getstar_mcusim_r), FUNC(slapfght_state::getstar_mcusim_w));
+}
+
+void slapfght_state::slapfighb2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram");
+ map(0xe000, 0xe7ff).ram().share("spriteram");
+ map(0xe800, 0xe800).w(this, FUNC(slapfght_state::scrollx_hi_w));
+ map(0xe802, 0xe802).w(this, FUNC(slapfght_state::scrolly_w));
+ map(0xe803, 0xe803).w(this, FUNC(slapfght_state::scrollx_lo_w));
+ map(0xec00, 0xefff).rom(); // it reads a copy of the logo from here!
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(slapfght_state::fixram_w)).share("fixvideoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(slapfght_state::fixcol_w)).share("fixcolorram");
+}
/**************************************************************************/
@@ -389,29 +399,33 @@ READ8_MEMBER(slapfght_state::vblank_r)
return m_screen->vblank() ? 1 : 0;
}
-ADDRESS_MAP_START(slapfght_state::io_map_nomcu)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(vblank_r)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
-ADDRESS_MAP_END
+void slapfght_state::io_map_nomcu(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(slapfght_state::vblank_r));
+ map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0));
+}
-ADDRESS_MAP_START(slapfght_state::io_map_mcu)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(tigerh_mcu_status_r)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
-ADDRESS_MAP_END
+void slapfght_state::io_map_mcu(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(slapfght_state::tigerh_mcu_status_r));
+ map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0));
+}
-ADDRESS_MAP_START(slapfght_state::getstarb1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(getstarb1_prot_r)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
-ADDRESS_MAP_END
+void slapfght_state::getstarb1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(slapfght_state::getstarb1_prot_r));
+ map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0));
+}
-ADDRESS_MAP_START(slapfght_state::getstarb2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(getstar_mcusim_status_r)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
-ADDRESS_MAP_END
+void slapfght_state::getstarb2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(slapfght_state::getstar_mcusim_status_r));
+ map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0));
+}
@@ -432,30 +446,32 @@ WRITE8_MEMBER(slapfght_state::sound_nmi_enable_w)
m_sound_nmi_enabled = offset ? false : true;
}
-ADDRESS_MAP_START(slapfght_state::perfrman_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xa082, 0xa082) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xa090, 0xa090) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa092, 0xa092) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0xa0e0, 0xa0e0) AM_SELECT(0x0010) AM_WRITE(sound_nmi_enable_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapfght_state::tigerh_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xa082, 0xa082) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xa090, 0xa090) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa092, 0xa092) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0xa0e0, 0xa0e0) AM_SELECT(0x0010) AM_WRITE(sound_nmi_enable_w)
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void slapfght_state::perfrman_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8800, 0x8fff).ram().share("share1");
+ map(0xa080, 0xa080).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xa081, 0xa081).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xa082, 0xa082).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xa090, 0xa090).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa091, 0xa091).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa092, 0xa092).w("ay2", FUNC(ay8910_device::data_w));
+ map(0xa0e0, 0xa0e0).select(0x0010).w(this, FUNC(slapfght_state::sound_nmi_enable_w));
+}
+
+void slapfght_state::tigerh_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0xa080, 0xa080).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xa081, 0xa081).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xa082, 0xa082).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xa090, 0xa090).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xa091, 0xa091).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa092, 0xa092).w("ay2", FUNC(ay8910_device::data_w));
+ map(0xa0e0, 0xa0e0).select(0x0010).w(this, FUNC(slapfght_state::sound_nmi_enable_w));
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xffff).ram();
+}
diff --git a/src/mame/drivers/slapshot.cpp b/src/mame/drivers/slapshot.cpp
index 0eb6e58dc62..3d5f6c91d63 100644
--- a/src/mame/drivers/slapshot.cpp
+++ b/src/mame/drivers/slapshot.cpp
@@ -262,53 +262,56 @@ READ16_MEMBER(slapshot_state::msb_sound_r)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(slapshot_state::slapshot_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM /* main RAM */
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteext") /* debugging */
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) /* priority chip */
- AM_RANGE(0xc00000, 0xc0000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w)
- AM_RANGE(0xc00020, 0xc0002f) AM_READ(service_input_r) /* service mirror */
- AM_RANGE(0xd00000, 0xd00003) AM_READWRITE(msb_sound_r, msb_sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slapshot_state::opwolf3_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM /* main RAM */
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteext") /* debugging */
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) /* priority chip */
- AM_RANGE(0xc00000, 0xc0000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w)
- AM_RANGE(0xc00020, 0xc0002f) AM_READ(service_input_r) /* service mirror */
- AM_RANGE(0xd00000, 0xd00003) AM_READWRITE(msb_sound_r, msb_sound_w)
- AM_RANGE(0xe00000, 0xe00007) AM_READWRITE(opwolf3_adc_r, opwolf3_adc_req_w)
-ADDRESS_MAP_END
+void slapshot_state::slapshot_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x500000, 0x50ffff).ram(); /* main RAM */
+ map(0x600000, 0x60ffff).ram().share("spriteram"); /* sprite ram */
+ map(0x700000, 0x701fff).ram().share("spriteext"); /* debugging */
+ map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
+ map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa00000, 0xa03fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); /* priority chip */
+ map(0xc00000, 0xc0000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w));
+ map(0xc00020, 0xc0002f).r(this, FUNC(slapshot_state::service_input_r)); /* service mirror */
+ map(0xd00000, 0xd00003).rw(this, FUNC(slapshot_state::msb_sound_r), FUNC(slapshot_state::msb_sound_w));
+}
+
+void slapshot_state::opwolf3_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x500000, 0x50ffff).ram(); /* main RAM */
+ map(0x600000, 0x60ffff).ram().share("spriteram"); /* sprite ram */
+ map(0x700000, 0x701fff).ram().share("spriteext"); /* debugging */
+ map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
+ map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa00000, 0xa03fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); /* priority chip */
+ map(0xc00000, 0xc0000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w));
+ map(0xc00020, 0xc0002f).r(this, FUNC(slapshot_state::service_input_r)); /* service mirror */
+ map(0xd00000, 0xd00003).rw(this, FUNC(slapshot_state::msb_sound_r), FUNC(slapshot_state::msb_sound_w));
+ map(0xe00000, 0xe00007).rw(this, FUNC(slapshot_state::opwolf3_adc_r), FUNC(slapshot_state::opwolf3_adc_req_w));
+}
/***************************************************************************/
-ADDRESS_MAP_START(slapshot_state::opwolf3_z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void slapshot_state::opwolf3_z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(slapshot_state::sound_bankswitch_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp
index 0ac469de829..ee7b30464b6 100644
--- a/src/mame/drivers/slc1.cpp
+++ b/src/mame/drivers/slc1.cpp
@@ -194,17 +194,19 @@ void slc1_state::machine_reset()
***************************************************************************/
-ADDRESS_MAP_START(slc1_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x4fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0xc00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slc1_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r,io_w)
-ADDRESS_MAP_END
+void slc1_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x4fff);
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x43ff).ram().mirror(0xc00);
+}
+
+void slc1_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(slc1_state::io_r), FUNC(slc1_state::io_w));
+}
/**************************************************************************
diff --git a/src/mame/drivers/sleic.cpp b/src/mame/drivers/sleic.cpp
index acb29cc37c1..09aa81bd0a5 100644
--- a/src/mame/drivers/sleic.cpp
+++ b/src/mame/drivers/sleic.cpp
@@ -50,10 +50,11 @@ public:
};
-ADDRESS_MAP_START(sleic_state::sleic_map)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0xe0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void sleic_state::sleic_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).ram();
+ map(0xe0000, 0xfffff).rom();
+}
static INPUT_PORTS_START( sleic )
INPUT_PORTS_END
diff --git a/src/mame/drivers/slicer.cpp b/src/mame/drivers/slicer.cpp
index 7f3d853d63b..c31450db245 100644
--- a/src/mame/drivers/slicer.cpp
+++ b/src/mame/drivers/slicer.cpp
@@ -64,22 +64,24 @@ WRITE_LINE_MEMBER(slicer_state::drive_sel_w)
m_fdc->set_floppy(floppy);
}
-ADDRESS_MAP_START(slicer_state::slicer_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(slicer_state::slicer_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_DEVREADWRITE8("fdc", fd1797_device, read, write, 0x00ff) //PCS0
- AM_RANGE(0x0080, 0x00ff) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0x00ff) //PCS1
- AM_RANGE(0x0100, 0x0107) AM_MIRROR(0x0078) AM_DEVWRITE8("drivelatch", ls259_device, write_d0, 0x00ff) //PCS2
+void slicer_state::slicer_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram(); // fixed 256k for now
+ map(0xf8000, 0xfffff).rom().region("bios", 0);
+}
+
+void slicer_state::slicer_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)).umask16(0x00ff); //PCS0
+ map(0x0080, 0x00ff).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); //PCS1
+ map(0x0100, 0x0107).mirror(0x0078).w("drivelatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); //PCS2
// TODO: 0x180 sets ack
- AM_RANGE(0x0180, 0x0181) AM_DEVREAD8("sasi_data_in", input_buffer_device, read, 0x00ff) AM_DEVWRITE8("sasi_data_out", output_latch_device, write, 0x00ff) //PCS3
- AM_RANGE(0x0180, 0x0181) AM_DEVREAD8("sasi_ctrl_in", input_buffer_device, read, 0xff00)
- AM_RANGE(0x0184, 0x0185) AM_DEVREAD8("sasi_data_in", input_buffer_device, read, 0x00ff) AM_DEVWRITE8("sasi_data_out", output_latch_device, write, 0x00ff)
- AM_RANGE(0x0184, 0x0185) AM_DEVREAD8("sasi_ctrl_in", input_buffer_device, read, 0xff00)
-ADDRESS_MAP_END
+ map(0x0180, 0x0180).r("sasi_data_in", FUNC(input_buffer_device::read)).w("sasi_data_out", FUNC(output_latch_device::write)).umask16(0x00ff); //PCS3
+ map(0x0181, 0x0181).r("sasi_ctrl_in", FUNC(input_buffer_device::read));
+ map(0x0184, 0x0184).r("sasi_data_in", FUNC(input_buffer_device::read)).w("sasi_data_out", FUNC(output_latch_device::write)).umask16(0x00ff);
+ map(0x0185, 0x0185).r("sasi_ctrl_in", FUNC(input_buffer_device::read));
+}
static SLOT_INTERFACE_START( slicer_floppies )
SLOT_INTERFACE("525dd", FLOPPY_525_DD)
diff --git a/src/mame/drivers/sliver.cpp b/src/mame/drivers/sliver.cpp
index b6306747be8..84cb7905203 100644
--- a/src/mame/drivers/sliver.cpp
+++ b/src/mame/drivers/sliver.cpp
@@ -352,33 +352,34 @@ WRITE16_MEMBER(sliver_state::sound_w)
m_audiocpu->set_input_line(MCS51_INT0_LINE, HOLD_LINE);
}
-ADDRESS_MAP_START(sliver_state::sliver_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
+void sliver_state::sliver_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
- AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0x100004, 0x100005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
+ map(0x100001, 0x100001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x100003, 0x100003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x100005, 0x100005).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x300002, 0x300003) AM_NOP // bit 0 tested, writes 0xe0 and 0xc0 - both r and w at the end of interrupt code
+ map(0x300002, 0x300003).noprw(); // bit 0 tested, writes 0xe0 and 0xc0 - both r and w at the end of interrupt code
- AM_RANGE(0x300004, 0x300005) AM_WRITE(io_offset_w) //unknown i/o device
- AM_RANGE(0x300006, 0x300007) AM_WRITE(io_data_w)
+ map(0x300004, 0x300005).w(this, FUNC(sliver_state::io_offset_w)); //unknown i/o device
+ map(0x300006, 0x300007).w(this, FUNC(sliver_state::io_data_w));
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1_P2")
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW")
- AM_RANGE(0x400006, 0x400007) AM_WRITE(fifo_data_w)
- AM_RANGE(0x400008, 0x400009) AM_WRITE(fifo_clear_w)
- AM_RANGE(0x40000a, 0x40000b) AM_WRITE(fifo_flush_w)
- AM_RANGE(0x40000c, 0x40000d) AM_WRITE(jpeg1_w)
- AM_RANGE(0x40000e, 0x40000f) AM_WRITE(jpeg2_w)
+ map(0x400000, 0x400001).portr("P1_P2");
+ map(0x400002, 0x400003).portr("SYSTEM");
+ map(0x400004, 0x400005).portr("DSW");
+ map(0x400006, 0x400007).w(this, FUNC(sliver_state::fifo_data_w));
+ map(0x400008, 0x400009).w(this, FUNC(sliver_state::fifo_clear_w));
+ map(0x40000a, 0x40000b).w(this, FUNC(sliver_state::fifo_flush_w));
+ map(0x40000c, 0x40000d).w(this, FUNC(sliver_state::jpeg1_w));
+ map(0x40000e, 0x40000f).w(this, FUNC(sliver_state::jpeg2_w));
- AM_RANGE(0x400010, 0x400015) AM_WRITENOP //unknown
- AM_RANGE(0x400016, 0x400017) AM_WRITE(sound_w)
- AM_RANGE(0x400018, 0x400019) AM_WRITENOP //unknown
+ map(0x400010, 0x400015).nopw(); //unknown
+ map(0x400016, 0x400017).w(this, FUNC(sliver_state::sound_w));
+ map(0x400018, 0x400019).nopw(); //unknown
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xff0000, 0xffffff).ram();
+}
// Sound CPU
@@ -388,19 +389,22 @@ WRITE8_MEMBER(sliver_state::oki_setbank)
membank("okibank")->set_entry(bank);
}
-ADDRESS_MAP_START(sliver_state::soundmem_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void sliver_state::soundmem_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
-ADDRESS_MAP_START(sliver_state::soundmem_io)
- AM_RANGE(0x0100, 0x0100) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x0101, 0x0101) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void sliver_state::soundmem_io(address_map &map)
+{
+ map(0x0100, 0x0100).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0101, 0x0101).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
-ADDRESS_MAP_START(sliver_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void sliver_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
void sliver_state::video_start()
{
@@ -499,9 +503,10 @@ static INPUT_PORTS_START( sliver )
PORT_DIPUNUSED_DIPLOC( 0x8000, 0x0000, "SW2:8" ) /* Listed as "UNUSED (MUST ON)" */
INPUT_PORTS_END
-ADDRESS_MAP_START(sliver_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("colorram")
-ADDRESS_MAP_END
+void sliver_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).ram().share("colorram");
+}
TIMER_DEVICE_CALLBACK_MEMBER ( sliver_state::obj_irq_cb )
{
diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp
index 6c701ad3c37..286798e6947 100644
--- a/src/mame/drivers/slotcarn.cpp
+++ b/src/mame/drivers/slotcarn.cpp
@@ -172,38 +172,40 @@ WRITE_LINE_MEMBER(slotcarn_state::hsync_changed)
* Memory Map *
*******************************/
-ADDRESS_MAP_START(slotcarn_state::slotcarn_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("backup_ram")
- AM_RANGE(0x6800, 0x6fff) AM_RAM // spielbud
- AM_RANGE(0x7000, 0xafff) AM_ROM // spielbud
+void slotcarn_state::slotcarn_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram().share("backup_ram");
+ map(0x6800, 0x6fff).ram(); // spielbud
+ map(0x7000, 0xafff).rom(); // spielbud
- AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xb100, 0xb100) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
+ map(0xb000, 0xb000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xb100, 0xb100).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xba00, 0xba03) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xbc00, 0xbc03) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xba00, 0xba03).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xbc00, 0xbc03).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW3")
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW4")
+ map(0xc000, 0xc000).portr("DSW3");
+ map(0xc400, 0xc400).portr("DSW4");
- AM_RANGE(0xd800, 0xd81f) AM_RAM // column scroll for reels?
+ map(0xd800, 0xd81f).ram(); // column scroll for reels?
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
+ map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w));
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
-ADDRESS_MAP_END
+ map(0xe800, 0xefff).ram().share("raattr");
+ map(0xf000, 0xf7ff).ram().share("ravideo");
+ map(0xf800, 0xfbff).rw(this, FUNC(slotcarn_state::palette_r), FUNC(slotcarn_state::palette_w));
+}
// spielbud - is the ay mirrored, or are there now 2?
-ADDRESS_MAP_START(slotcarn_state::spielbud_io_map)
- AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0xb100, 0xb100) AM_DEVWRITE("aysnd", ay8910_device, data_w)
-ADDRESS_MAP_END
+void slotcarn_state::spielbud_io_map(address_map &map)
+{
+ map(0xb000, 0xb000).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0xb100, 0xb100).w("aysnd", FUNC(ay8910_device::data_w));
+}
/********************************
* Input Ports *
diff --git a/src/mame/drivers/sm1800.cpp b/src/mame/drivers/sm1800.cpp
index 4bb3a5e595b..f2d48c5ae90 100644
--- a/src/mame/drivers/sm1800.cpp
+++ b/src/mame/drivers/sm1800.cpp
@@ -55,23 +55,25 @@ public:
void sm1800_mem(address_map &map);
};
-ADDRESS_MAP_START(sm1800_state::sm1800_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM
+void sm1800_state::sm1800_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
//AM_RANGE( 0x0fb0, 0x0fff ) AM_DEVWRITE("i8275", i8275_device, dack_w)
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM // videoram looks like 1080-17FF, normal ascii
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sm1800_state::sm1800_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x3c, 0x3d ) AM_DEVREADWRITE("i8275", i8275_device, read, write)
- AM_RANGE( 0x5c, 0x5c) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w)
- AM_RANGE( 0x5d, 0x5d) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w)
- AM_RANGE( 0x6c, 0x6f ) AM_DEVREADWRITE("i8255", i8255_device, read, write)
+ map(0x1000, 0x17ff).ram(); // videoram looks like 1080-17FF, normal ascii
+}
+
+void sm1800_state::sm1800_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x3c, 0x3d).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0x5c, 0x5c).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x5d, 0x5d).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x6c, 0x6f).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
//AM_RANGE( 0x74, 0x74 ) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
//AM_RANGE( 0x75, 0x75 ) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( sm1800 )
diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp
index fea756e2f2e..c08ec66df36 100644
--- a/src/mame/drivers/sm7238.cpp
+++ b/src/mame/drivers/sm7238.cpp
@@ -125,37 +125,40 @@ private:
required_device<screen_device> m_screen;
};
-ADDRESS_MAP_START(sm7238_state::sm7238_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0x0000, 0x9fff) AM_ROM
- AM_RANGE (0xa000, 0xa7ff) AM_RAM
- AM_RANGE (0xb000, 0xb3ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE (0xb800, 0xb800) AM_WRITE(text_control_w)
- AM_RANGE (0xbc00, 0xbc00) AM_WRITE(control_w)
- AM_RANGE (0xc000, 0xcfff) AM_RAM // chargen
- AM_RANGE (0xe000, 0xffff) AM_DEVICE("videobank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sm7238_state::videobank_map)
- AM_RANGE (0x0000, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE (0x2000, 0x2fff) AM_MIRROR(0x1000) AM_WRITE(vmem_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sm7238_state::sm7238_io)
- ADDRESS_MAP_UNMAP_HIGH
+void sm7238_state::sm7238_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).ram();
+ map(0xb000, 0xb3ff).ram().share("nvram");
+ map(0xb800, 0xb800).w(this, FUNC(sm7238_state::text_control_w));
+ map(0xbc00, 0xbc00).w(this, FUNC(sm7238_state::control_w));
+ map(0xc000, 0xcfff).ram(); // chargen
+ map(0xe000, 0xffff).m(m_videobank, FUNC(address_map_bank_device::amap8));
+}
+
+void sm7238_state::videobank_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x2fff).mirror(0x1000).w(this, FUNC(sm7238_state::vmem_w));
+}
+
+void sm7238_state::sm7238_io(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE (0x40, 0x4f) AM_RAM // LUT
- AM_RANGE (0xa0, 0xa0) AM_DEVREADWRITE("i8251line", i8251_device, data_r, data_w)
- AM_RANGE (0xa1, 0xa1) AM_DEVREADWRITE("i8251line", i8251_device, status_r, control_w)
- AM_RANGE (0xa4, 0xa4) AM_DEVREADWRITE("i8251kbd", i8251_device, data_r, data_w)
- AM_RANGE (0xa5, 0xa5) AM_DEVREADWRITE("i8251kbd", i8251_device, status_r, control_w)
- AM_RANGE (0xa8, 0xab) AM_DEVREADWRITE("t_color", pit8253_device, read, write)
- AM_RANGE (0xac, 0xad) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE (0xb0, 0xb3) AM_DEVREADWRITE("t_hblank", pit8253_device, read, write)
- AM_RANGE (0xb4, 0xb7) AM_DEVREADWRITE("t_vblank", pit8253_device, read, write)
- AM_RANGE (0xb8, 0xb8) AM_DEVREADWRITE("i8251prn", i8251_device, data_r, data_w)
- AM_RANGE (0xb9, 0xb9) AM_DEVREADWRITE("i8251prn", i8251_device, status_r, control_w)
- AM_RANGE (0xbc, 0xbf) AM_DEVREADWRITE("t_iface", pit8253_device, read, write)
-ADDRESS_MAP_END
+ map(0xa0, 0xa0).rw(m_i8251line, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xa1, 0xa1).rw(m_i8251line, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xa4, 0xa4).rw(m_i8251kbd, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xa5, 0xa5).rw(m_i8251kbd, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xa8, 0xab).rw(m_t_color, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xac, 0xad).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xb0, 0xb3).rw(m_t_hblank, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xb4, 0xb7).rw(m_t_vblank, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xb8, 0xb8).rw(m_i8251prn, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xb9, 0xb9).rw(m_i8251prn, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xbc, 0xbf).rw(m_t_iface, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+}
void sm7238_state::machine_reset()
{
diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp
index 42913947867..e33e68fa989 100644
--- a/src/mame/drivers/smc777.cpp
+++ b/src/mame/drivers/smc777.cpp
@@ -610,48 +610,50 @@ WRITE8_MEMBER(smc777_state::irq_mask_w)
m_irq_mask = data & 1;
}
-ADDRESS_MAP_START(smc777_state::smc777_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(smc777_mem_r, smc777_mem_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(smc777_state::smc777_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x07) AM_SELECT(0xff00) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0x08, 0x0f) AM_SELECT(0xff00) AM_READWRITE(attr_r, attr_w)
- AM_RANGE(0x10, 0x17) AM_SELECT(0xff00) AM_READWRITE(pcg_r, pcg_w)
- AM_RANGE(0x18, 0x19) AM_MIRROR(0xff00) AM_WRITE(mc6845_w)
- AM_RANGE(0x1a, 0x1b) AM_MIRROR(0xff00) AM_READWRITE(key_r, key_w)
- AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_READWRITE(system_input_r, system_output_w)
+void smc777_state::smc777_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(smc777_state::smc777_mem_r), FUNC(smc777_state::smc777_mem_w));
+}
+
+void smc777_state::smc777_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x07).select(0xff00).rw(this, FUNC(smc777_state::vram_r), FUNC(smc777_state::vram_w));
+ map(0x08, 0x0f).select(0xff00).rw(this, FUNC(smc777_state::attr_r), FUNC(smc777_state::attr_w));
+ map(0x10, 0x17).select(0xff00).rw(this, FUNC(smc777_state::pcg_r), FUNC(smc777_state::pcg_w));
+ map(0x18, 0x19).mirror(0xff00).w(this, FUNC(smc777_state::mc6845_w));
+ map(0x1a, 0x1b).mirror(0xff00).rw(this, FUNC(smc777_state::key_r), FUNC(smc777_state::key_w));
+ map(0x1c, 0x1c).mirror(0xff00).rw(this, 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
- AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_READWRITE(display_reg_r, display_reg_w)
- AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_READWRITE(irq_mask_r, irq_mask_w)
+ map(0x20, 0x20).mirror(0xff00).rw(this, FUNC(smc777_state::display_reg_r), FUNC(smc777_state::display_reg_w));
+ map(0x21, 0x21).mirror(0xff00).rw(this, FUNC(smc777_state::irq_mask_r), FUNC(smc777_state::irq_mask_w));
// AM_RANGE(0x22, 0x22) printer output data
- AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_WRITE(border_col_w)
+ map(0x23, 0x23).mirror(0xff00).w(this, FUNC(smc777_state::border_col_w));
// 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
- AM_RANGE(0x30, 0x33) AM_MIRROR(0xff00) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0x34, 0x34) AM_MIRROR(0xff00) AM_READWRITE(fdc_request_r, floppy_select_w)
+ map(0x30, 0x33).mirror(0xff00).rw(this, FUNC(smc777_state::fdc_r), FUNC(smc777_state::fdc_w));
+ map(0x34, 0x34).mirror(0xff00).rw(this, 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)
- AM_RANGE(0x51, 0x51) AM_MIRROR(0xff00) AM_READ_PORT("JOY_1P") AM_WRITE(color_mode_w)
- AM_RANGE(0x52, 0x52) AM_SELECT(0xff00) AM_WRITE(ramdac_w)
- AM_RANGE(0x53, 0x53) AM_MIRROR(0xff00) AM_DEVWRITE("sn1", sn76489a_device, write)
+ map(0x51, 0x51).mirror(0xff00).portr("JOY_1P").w(this, FUNC(smc777_state::color_mode_w));
+ map(0x52, 0x52).select(0xff00).w(this, FUNC(smc777_state::ramdac_w));
+ map(0x53, 0x53).mirror(0xff00).w("sn1", FUNC(sn76489a_device::write));
// 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
- AM_RANGE(0x80, 0xff) AM_SELECT(0xff00) AM_READWRITE(fbuf_r, fbuf_w)
-ADDRESS_MAP_END
+ map(0x80, 0xff).select(0xff00).rw(this, FUNC(smc777_state::fbuf_r), FUNC(smc777_state::fbuf_w));
+}
/* Input ports */
static INPUT_PORTS_START( smc777 )
diff --git a/src/mame/drivers/sms.cpp b/src/mame/drivers/sms.cpp
index c3a7c5f6661..4bb8bbcc9c9 100644
--- a/src/mame/drivers/sms.cpp
+++ b/src/mame/drivers/sms.cpp
@@ -264,114 +264,122 @@ DC00 - Selection buttons #2, 9-16 (R)
#define MASTER_CLOCK_PAL 53203425.0 /* 12 * subcarrier freq. (4.43361875MHz) */
-ADDRESS_MAP_START(sms_state::sms1_mem)
- AM_RANGE(0x0000, 0xbfff) AM_WRITE(write_cart)
- AM_RANGE(0x0000, 0x3fff) AM_READ(read_0000)
- AM_RANGE(0x4000, 0x7fff) AM_READ(read_4000)
- AM_RANGE(0x8000, 0xbfff) AM_READ(read_8000)
- AM_RANGE(0xc000, 0xfff7) AM_READWRITE(read_ram, write_ram)
- AM_RANGE(0xfff8, 0xfffb) AM_READWRITE(sms_sscope_r, sms_sscope_w) /* 3-D glasses */
- AM_RANGE(0xfffc, 0xffff) AM_READWRITE(sms_mapper_r, sms_mapper_w) /* Bankswitch control */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sms_state::sms_mem)
- AM_RANGE(0x0000, 0xbfff) AM_WRITE(write_cart)
- AM_RANGE(0x0000, 0x3fff) AM_READ(read_0000)
- AM_RANGE(0x4000, 0x7fff) AM_READ(read_4000)
- AM_RANGE(0x8000, 0xbfff) AM_READ(read_8000)
- AM_RANGE(0xc000, 0xfffb) AM_READWRITE(read_ram, write_ram)
- AM_RANGE(0xfffc, 0xffff) AM_READWRITE(sms_mapper_r, sms_mapper_w) /* Bankswitch control */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(smssdisp_state::sms_store_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* BIOS */
- AM_RANGE(0x4000, 0x47ff) AM_RAM /* RAM */
- AM_RANGE(0x6000, 0x7fff) AM_READ(store_cart_peek)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW") AM_WRITE(sms_store_control_w) /* Control */
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(sms_store_cart_select_r, sms_store_cart_select_w) /* cartridge/card slot selector */
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("GAMESEL1") /* Game selector port #1 */
- AM_RANGE(0xdc00, 0xdc00) AM_READ_PORT("GAMESEL2") /* Game selector port #2 */
-ADDRESS_MAP_END
+void sms_state::sms1_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).w(this, FUNC(sms_state::write_cart));
+ map(0x0000, 0x3fff).r(this, FUNC(sms_state::read_0000));
+ map(0x4000, 0x7fff).r(this, FUNC(sms_state::read_4000));
+ map(0x8000, 0xbfff).r(this, FUNC(sms_state::read_8000));
+ map(0xc000, 0xfff7).rw(this, FUNC(sms_state::read_ram), FUNC(sms_state::write_ram));
+ map(0xfff8, 0xfffb).rw(this, FUNC(sms_state::sms_sscope_r), FUNC(sms_state::sms_sscope_w)); /* 3-D glasses */
+ map(0xfffc, 0xffff).rw(this, FUNC(sms_state::sms_mapper_r), FUNC(sms_state::sms_mapper_w)); /* Bankswitch control */
+}
+
+void sms_state::sms_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).w(this, FUNC(sms_state::write_cart));
+ map(0x0000, 0x3fff).r(this, FUNC(sms_state::read_0000));
+ map(0x4000, 0x7fff).r(this, FUNC(sms_state::read_4000));
+ map(0x8000, 0xbfff).r(this, FUNC(sms_state::read_8000));
+ map(0xc000, 0xfffb).rw(this, FUNC(sms_state::read_ram), FUNC(sms_state::write_ram));
+ map(0xfffc, 0xffff).rw(this, FUNC(sms_state::sms_mapper_r), FUNC(sms_state::sms_mapper_w)); /* Bankswitch control */
+}
+
+void smssdisp_state::sms_store_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); /* BIOS */
+ map(0x4000, 0x47ff).ram(); /* RAM */
+ map(0x6000, 0x7fff).r(this, FUNC(smssdisp_state::store_cart_peek));
+ map(0x8000, 0x8000).portr("DSW").w(this, FUNC(smssdisp_state::sms_store_control_w)); /* Control */
+ map(0xc000, 0xc000).rw(this, FUNC(smssdisp_state::sms_store_cart_select_r), FUNC(smssdisp_state::sms_store_cart_select_w)); /* cartridge/card slot selector */
+ map(0xd800, 0xd800).portr("GAMESEL1"); /* Game selector port #1 */
+ map(0xdc00, 0xdc00).portr("GAMESEL2"); /* Game selector port #2 */
+}
// I/O ports $3E and $3F do not exist on Mark III
-ADDRESS_MAP_START(sms_state::sg1000m3_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc7) AM_MIRROR(0x38) AM_READWRITE(sg1000m3_peripheral_r, sg1000m3_peripheral_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sms_state::sms_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x3e) AM_WRITE(sms_mem_control_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x3e) AM_WRITE(sms_io_control_w)
- AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3e) AM_READ(sms_input_port_dc_r)
- AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3e) AM_READ(sms_input_port_dd_r)
-ADDRESS_MAP_END
+void sms_state::sg1000m3_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xc0, 0xc7).mirror(0x38).rw(this, FUNC(sms_state::sg1000m3_peripheral_r), FUNC(sms_state::sg1000m3_peripheral_w));
+}
+
+
+void sms_state::sms_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x00).mirror(0x3e).w(this, FUNC(sms_state::sms_mem_control_w));
+ map(0x01, 0x01).mirror(0x3e).w(this, FUNC(sms_state::sms_io_control_w));
+ map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xc0, 0xc0).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dc_r));
+ map(0xc1, 0xc1).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dd_r));
+}
// It seems the Korean versions do some more strict decoding on the I/O
// addresses.
// At least the mirrors for I/O ports $3E/$3F don't seem to exist there.
// Leaving the mirrors breaks the Korean cartridge bublboky.
-ADDRESS_MAP_START(sms_state::smskr_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x3e, 0x3e) AM_WRITE(sms_mem_control_w)
- AM_RANGE(0x3f, 0x3f) AM_WRITE(sms_io_control_w)
- AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3e) AM_READ(sms_input_port_dc_r)
- AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3e) AM_READ(sms_input_port_dd_r)
-ADDRESS_MAP_END
+void sms_state::smskr_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x3e, 0x3e).w(this, FUNC(sms_state::sms_mem_control_w));
+ map(0x3f, 0x3f).w(this, FUNC(sms_state::sms_io_control_w));
+ map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xc0, 0xc0).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dc_r));
+ map(0xc1, 0xc1).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dd_r));
+}
// Mirrors for I/O ports $3E/$3F don't exist on the Japanese SMS.
// Also, $C0/$C1 are the only mirrors for I/O ports $DC/$DD.
-ADDRESS_MAP_START(sms_state::smsj_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x3e, 0x3e) AM_WRITE(sms_mem_control_w)
- AM_RANGE(0x3f, 0x3f) AM_WRITE(sms_io_control_w)
- AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc0) AM_READ(sms_input_port_dc_r)
- AM_RANGE(0xc1, 0xc1) AM_READ(sms_input_port_dd_r)
- AM_RANGE(0xdc, 0xdc) AM_READ(sms_input_port_dc_r)
- AM_RANGE(0xdd, 0xdd) AM_READ(sms_input_port_dd_r)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(smsj_ym2413_register_port_w)
- AM_RANGE(0xf1, 0xf1) AM_WRITE(smsj_ym2413_data_port_w)
- AM_RANGE(0xf2, 0xf2) AM_READWRITE(smsj_audio_control_r, smsj_audio_control_w)
-ADDRESS_MAP_END
+void sms_state::smsj_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x3e, 0x3e).w(this, FUNC(sms_state::sms_mem_control_w));
+ map(0x3f, 0x3f).w(this, FUNC(sms_state::sms_io_control_w));
+ map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xc0, 0xc0).r(this, FUNC(sms_state::sms_input_port_dc_r));
+ map(0xc1, 0xc1).r(this, FUNC(sms_state::sms_input_port_dd_r));
+ map(0xdc, 0xdc).r(this, FUNC(sms_state::sms_input_port_dc_r));
+ map(0xdd, 0xdd).r(this, FUNC(sms_state::sms_input_port_dd_r));
+ map(0xf0, 0xf0).w(this, FUNC(sms_state::smsj_ym2413_register_port_w));
+ map(0xf1, 0xf1).w(this, FUNC(sms_state::smsj_ym2413_data_port_w));
+ map(0xf2, 0xf2).rw(this, FUNC(sms_state::smsj_audio_control_r), FUNC(sms_state::smsj_audio_control_w));
+}
// It seems the mirrors for I/O ports $3E/$3F also don't seem to exist on the
// Game Gear. Leaving the mirrors breaks 'gloc' (it freezes after 1st stage).
-ADDRESS_MAP_START(sms_state::gg_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x00) AM_READ(gg_input_port_00_r)
- AM_RANGE(0x01, 0x05) AM_READWRITE(gg_sio_r, gg_sio_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(gg_psg_stereo_w)
- AM_RANGE(0x3e, 0x3e) AM_WRITE(sms_mem_control_w)
- AM_RANGE(0x3f, 0x3f) AM_WRITE(sms_io_control_w)
- AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, gg_psg_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write)
- AM_RANGE(0xc0, 0xc0) AM_READ(sms_input_port_dc_r)
- AM_RANGE(0xc1, 0xc1) AM_READ(sms_input_port_dd_r)
- AM_RANGE(0xdc, 0xdc) AM_READ(sms_input_port_dc_r)
- AM_RANGE(0xdd, 0xdd) AM_READ(sms_input_port_dd_r)
-ADDRESS_MAP_END
+void sms_state::gg_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x00).r(this, FUNC(sms_state::gg_input_port_00_r));
+ map(0x01, 0x05).rw(this, FUNC(sms_state::gg_sio_r), FUNC(sms_state::gg_sio_w));
+ map(0x06, 0x06).w(this, FUNC(sms_state::gg_psg_stereo_w));
+ map(0x3e, 0x3e).w(this, FUNC(sms_state::sms_mem_control_w));
+ map(0x3f, 0x3f).w(this, FUNC(sms_state::sms_io_control_w));
+ map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::gg_psg_w));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
+ map(0xc0, 0xc0).r(this, FUNC(sms_state::sms_input_port_dc_r));
+ map(0xc1, 0xc1).r(this, FUNC(sms_state::sms_input_port_dd_r));
+ map(0xdc, 0xdc).r(this, FUNC(sms_state::sms_input_port_dc_r));
+ map(0xdd, 0xdd).r(this, FUNC(sms_state::sms_input_port_dd_r));
+}
static INPUT_PORTS_START( sms )
diff --git a/src/mame/drivers/sms_bootleg.cpp b/src/mame/drivers/sms_bootleg.cpp
index eb058e4f2fc..01faa78cbf2 100644
--- a/src/mame/drivers/sms_bootleg.cpp
+++ b/src/mame/drivers/sms_bootleg.cpp
@@ -236,11 +236,12 @@ A Korean version has been seen too (unless this can be switched?)
-ADDRESS_MAP_START(smsbootleg_state::sms_supergame_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xfff7) AM_RAM
+void smsbootleg_state::sms_supergame_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xfff7).ram();
// AM_RANGE(0xfffc, 0xffff) AM_READWRITE(sms_mapper_r, sms_mapper_w) /* Bankswitch control */
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(smsbootleg_state::port08_w)
{
@@ -253,21 +254,22 @@ WRITE8_MEMBER(smsbootleg_state::port18_w)
}
-ADDRESS_MAP_START(smsbootleg_state::sms_supergame_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
+void smsbootleg_state::sms_supergame_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
- AM_RANGE(0x04, 0x04) AM_READNOP //AM_READ_PORT("IN0") // these
- AM_RANGE(0x08, 0x08) AM_WRITE(port08_w)
- AM_RANGE(0x14, 0x14) AM_READNOP //AM_READ_PORT("IN1") // seem to be from a coinage / timer MCU, changing them directly changes the credits / time value
- AM_RANGE(0x18, 0x18) AM_WRITE(port18_w)
+ map(0x04, 0x04).nopr(); //AM_READ_PORT("IN0") // these
+ map(0x08, 0x08).w(this, FUNC(smsbootleg_state::port08_w));
+ 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(this, FUNC(smsbootleg_state::port18_w));
- AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write)
- AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write)
+ map(0x40, 0x7f).rw(this, FUNC(smsbootleg_state::sms_count_r), FUNC(smsbootleg_state::sms_psg_w));
+ map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write));
+ map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write));
- AM_RANGE(0xdc, 0xdc) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
+ map(0xdc, 0xdc).portr("IN2");
+}
diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp
index f6beb935e8e..e922a6e922a 100644
--- a/src/mame/drivers/smsmcorp.cpp
+++ b/src/mame/drivers/smsmcorp.cpp
@@ -484,34 +484,37 @@ uint32_t smsmfg_state::screen_update_sms(screen_device &screen, bitmap_ind16 &bi
*
*************************************/
-ADDRESS_MAP_START(smsmfg_state::sms_map)
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x00800, 0x00803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x01000, 0x01007) AM_WRITE(video_w)
- AM_RANGE(0x01800, 0x01803) AM_READWRITE(link_r, link_w)
- AM_RANGE(0x04000, 0x07fff) AM_ROMBANK("bank1")
- AM_RANGE(0x04000, 0x04000) AM_WRITE(bankswitch_w)
- AM_RANGE(0x08000, 0x0ffff) AM_ROM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(smsmfg_state::sureshot_map)
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x02000, 0x02007) AM_WRITE(video_w)
- AM_RANGE(0x03000, 0x03003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x03800, 0x03803) AM_READWRITE(link_r, link_w)
- AM_RANGE(0x08000, 0x0ffff) AM_ROM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(smsmfg_state::sub_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x3100, 0x3103) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x3381, 0x3382) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x3400, 0x3400) AM_READ(z80_8088_r)
- AM_RANGE(0x3500, 0x3501) AM_READWRITE(p03_r, p03_w)
-ADDRESS_MAP_END
+void smsmfg_state::sms_map(address_map &map)
+{
+ map(0x00000, 0x007ff).ram().share("nvram");
+ map(0x00800, 0x00803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x01000, 0x01007).w(this, FUNC(smsmfg_state::video_w));
+ map(0x01800, 0x01803).rw(this, FUNC(smsmfg_state::link_r), FUNC(smsmfg_state::link_w));
+ map(0x04000, 0x07fff).bankr("bank1");
+ map(0x04000, 0x04000).w(this, FUNC(smsmfg_state::bankswitch_w));
+ map(0x08000, 0x0ffff).rom();
+ map(0xf8000, 0xfffff).rom(); // mirror for vectors
+}
+
+void smsmfg_state::sureshot_map(address_map &map)
+{
+ map(0x00000, 0x007ff).ram().share("nvram");
+ map(0x02000, 0x02007).w(this, FUNC(smsmfg_state::video_w));
+ map(0x03000, 0x03003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x03800, 0x03803).rw(this, FUNC(smsmfg_state::link_r), FUNC(smsmfg_state::link_w));
+ map(0x08000, 0x0ffff).rom();
+ map(0xf8000, 0xfffff).rom(); // mirror for vectors
+}
+
+void smsmfg_state::sub_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x27ff).ram();
+ map(0x3100, 0x3103).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x3381, 0x3382).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x3400, 0x3400).r(this, FUNC(smsmfg_state::z80_8088_r));
+ map(0x3500, 0x3501).rw(this, FUNC(smsmfg_state::p03_r), FUNC(smsmfg_state::p03_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp
index 604d131f2c9..e84729717f0 100644
--- a/src/mame/drivers/snes.cpp
+++ b/src/mame/drivers/snes.cpp
@@ -1012,17 +1012,19 @@ WRITE8_MEMBER( snes_console_state::pfest94_lo_w )
*
*************************************/
-ADDRESS_MAP_START(snes_console_state::snes_map)
+void snes_console_state::snes_map(address_map &map)
+{
// AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes20_lo_r, snes20_lo_w)
- AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
+ map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
// AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes20_hi_r, snes20_hi_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(snes_console_state::spc_map)
- AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */
- AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */
- AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
-ADDRESS_MAP_END
+void snes_console_state::spc_map(address_map &map)
+{
+ map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */
+ map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */
+ map(0x0100, 0xffff).rw(this, FUNC(snes_console_state::spc_ram_100_r), FUNC(snes_console_state::spc_ram_100_w));
+}
/*************************************
diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp
index fdf2c424bef..884375fdbb4 100644
--- a/src/mame/drivers/snesb.cpp
+++ b/src/mame/drivers/snesb.cpp
@@ -297,11 +297,12 @@ READ8_MEMBER(snesb_state::snesb_coin_r)
}
-ADDRESS_MAP_START(snesb_state::snesb_map)
- AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes_r_bank1, snes_w_bank1)
- AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
- AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* Mirror and ROM */
-ADDRESS_MAP_END
+void snesb_state::snesb_map(address_map &map)
+{
+ map(0x000000, 0x7dffff).rw(this, FUNC(snesb_state::snes_r_bank1), FUNC(snesb_state::snes_w_bank1));
+ map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
+ map(0x800000, 0xffffff).rw(this, FUNC(snesb_state::snes_r_bank2), FUNC(snesb_state::snes_w_bank2)); /* Mirror and ROM */
+}
READ8_MEMBER(snesb_state::spc_ram_100_r)
{
@@ -313,11 +314,12 @@ WRITE8_MEMBER(snesb_state::spc_ram_100_w)
m_spc700->spc_ram_w(space, offset + 0x100, data);
}
-ADDRESS_MAP_START(snesb_state::spc_mem)
- AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */
- AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */
- AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
-ADDRESS_MAP_END
+void snesb_state::spc_mem(address_map &map)
+{
+ map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */
+ map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */
+ map(0x0100, 0xffff).rw(this, FUNC(snesb_state::spc_ram_100_r), FUNC(snesb_state::spc_ram_100_w));
+}
static INPUT_PORTS_START( snes_common )
@@ -721,8 +723,9 @@ MACHINE_CONFIG_START(snesb_state::kinstb)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(snesb_state::mcu_io_map)
-ADDRESS_MAP_END
+void snesb_state::mcu_io_map(address_map &map)
+{
+}
MACHINE_CONFIG_START(snesb_state::mk3snes)
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp
index 92f0a7dcbf4..2efcde926b7 100644
--- a/src/mame/drivers/snk.cpp
+++ b/src/mame/drivers/snk.cpp
@@ -819,667 +819,706 @@ CUSTOM_INPUT_MEMBER(snk_state::snk_bonus_r)
/************************************************************************/
-ADDRESS_MAP_START(snk_state::marvins_cpuA_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_WRITE(marvins_palette_bank_w)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1")
- AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2")
- AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w)
- AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1")
- AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2")
- AM_RANGE(0x8600, 0x8600) AM_WRITE(marvins_flipscreen_w)
- AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share5")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
- AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w)
- AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::marvins_cpuB_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share5")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w)
- AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w)
-ADDRESS_MAP_END
+void snk_state::marvins_cpuA_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6000).w(this, FUNC(snk_state::marvins_palette_bank_w));
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8100, 0x8100).portr("IN1");
+ map(0x8200, 0x8200).portr("IN2");
+ map(0x8300, 0x8300).w(this, FUNC(snk_state::marvins_soundlatch_w));
+ map(0x8400, 0x8400).portr("DSW1");
+ map(0x8500, 0x8500).portr("DSW2");
+ map(0x8600, 0x8600).w(this, FUNC(snk_state::marvins_flipscreen_w));
+ map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc000, 0xcfff).ram().share("spriteram"); // + work ram
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram");
+ map(0xd800, 0xdfff).ram().share("share3");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram().share("share5");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+ map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w));
+ map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w));
+ map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w));
+}
+
+void snk_state::marvins_cpuB_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc000, 0xcfff).ram().share("spriteram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram");
+ map(0xd800, 0xdfff).ram().share("share3");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram().share("share5");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+ map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w));
+ map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w));
+ map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w));
+}
// vangrd2 accesses video registers at xxF1 instead of xx00
-ADDRESS_MAP_START(snk_state::madcrash_cpuA_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1")
- AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2")
- AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w)
- AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1")
- AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2")
- AM_RANGE(0x8600, 0x8600) AM_MIRROR(0xff) AM_WRITE(marvins_flipscreen_w)
- AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share5")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
- AM_RANGE(0xf800, 0xf800) AM_MIRROR(0xff) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xf900, 0xf900) AM_MIRROR(0xff) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0xff) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0xff) AM_WRITE(marvins_scroll_msb_w)
- AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0xff) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xfd00, 0xfd00) AM_MIRROR(0xff) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0xff) AM_WRITE(snk_fg_scrolly_w)
- AM_RANGE(0xff00, 0xff00) AM_MIRROR(0xff) AM_WRITE(snk_fg_scrollx_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::madcrash_cpuB_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0x8700, 0x8700) AM_WRITE(snk_cpuB_nmi_ack_w) // vangrd2
- AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w) // madcrash
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share5")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0xd800, 0xd800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xd900, 0xd900) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xda00, 0xda00) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xdb00, 0xdb00) AM_WRITE(marvins_scroll_msb_w)
- AM_RANGE(0xdc00, 0xdc00) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xdd00, 0xdd00) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xde00, 0xde00) AM_WRITE(snk_fg_scrolly_w)
- AM_RANGE(0xdf00, 0xdf00) AM_WRITE(snk_fg_scrollx_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::madcrush_cpuA_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1")
- AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2")
- AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w)
- AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1")
- AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2")
- AM_RANGE(0x8600, 0x8600) AM_MIRROR(0xff) AM_WRITE(marvins_flipscreen_w)
- AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w)
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share5")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w)
- AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::madcrush_cpuB_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share5")
- AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") // ??
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w)
- AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::jcross_cpuA_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN1")
- AM_RANGE(0xa200, 0xa200) AM_READ_PORT("IN2")
- AM_RANGE(0xa300, 0xa300) AM_WRITE(sgladiat_soundlatch_w)
- AM_RANGE(0xa400, 0xa400) AM_READ_PORT("DSW1")
- AM_RANGE(0xa500, 0xa500) AM_READ_PORT("DSW2")
- AM_RANGE(0xa600, 0xa600) AM_WRITE(sgladiat_flipscreen_w) // flip screen, bg palette bank
- AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xd300, 0xd300) AM_WRITE(jcross_scroll_msb_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xd500, 0xd500) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xd600, 0xd600) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xd700, 0xd700) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
- AM_RANGE(0xffff, 0xffff) AM_WRITENOP // simply a program patch to not write to two not existing video registers?
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::jcross_cpuB_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xd7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::sgladiat_cpuA_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN1")
- AM_RANGE(0xa200, 0xa200) AM_READ_PORT("IN2")
- AM_RANGE(0xa300, 0xa300) AM_WRITE(sgladiat_soundlatch_w)
- AM_RANGE(0xa400, 0xa400) AM_READ_PORT("DSW1")
- AM_RANGE(0xa500, 0xa500) AM_READ_PORT("DSW2")
- AM_RANGE(0xa600, 0xa600) AM_WRITE(sgladiat_flipscreen_w) // flip screen, bg palette bank
- AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xd200, 0xd200) AM_WRITENOP // unknown
- AM_RANGE(0xd300, 0xd300) AM_WRITE(sgladiat_scroll_msb_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xd500, 0xd500) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xd600, 0xd600) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xd700, 0xd700) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::sgladiat_cpuB_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xa600, 0xa600) AM_WRITE(sgladiat_flipscreen_w) // flip screen, bg palette bank
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xda00, 0xda00) AM_WRITENOP // unknown
- AM_RANGE(0xdb00, 0xdb00) AM_WRITE(sgladiat_scroll_msb_w)
- AM_RANGE(0xdc00, 0xdc00) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xdd00, 0xdd00) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xde00, 0xde00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xdf00, 0xdf00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::hal21_cpuA_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc300, 0xc300) AM_WRITE(sgladiat_soundlatch_w)
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW1")
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW2")
- AM_RANGE(0xc600, 0xc600) AM_WRITE(hal21_flipscreen_w) // flip screen, bg tile and palette bank
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xd300, 0xd300) AM_WRITE(jcross_scroll_msb_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xd500, 0xd500) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xd600, 0xd600) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xd700, 0xd700) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xe800, 0xf7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::hal21_cpuB_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::aso_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(aso_videoattrs_w) // flip screen, scroll msb
- AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xca00, 0xca00) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xcb00, 0xcb00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xce00, 0xce00) AM_WRITENOP // always 05?
- AM_RANGE(0xcf00, 0xcf00) AM_WRITE(aso_bg_bank_w) // tile and palette bank
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xe800, 0xf7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::aso_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::tnk3_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
+void snk_state::madcrash_cpuA_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8100, 0x8100).portr("IN1");
+ map(0x8200, 0x8200).portr("IN2");
+ map(0x8300, 0x8300).w(this, FUNC(snk_state::marvins_soundlatch_w));
+ map(0x8400, 0x8400).portr("DSW1");
+ map(0x8500, 0x8500).portr("DSW2");
+ map(0x8600, 0x8600).mirror(0xff).w(this, FUNC(snk_state::marvins_flipscreen_w));
+ map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc000, 0xc7ff).ram().share("spriteram"); // + work ram
+ map(0xc800, 0xc800).mirror(0xff).w(this, FUNC(snk_state::marvins_palette_bank_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share3");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram");
+ map(0xe800, 0xefff).ram().share("share5");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+ map(0xf800, 0xf800).mirror(0xff).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xf900, 0xf900).mirror(0xff).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xfa00, 0xfa00).mirror(0xff).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xfb00, 0xfb00).mirror(0xff).w(this, FUNC(snk_state::marvins_scroll_msb_w));
+ map(0xfc00, 0xfc00).mirror(0xff).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xfd00, 0xfd00).mirror(0xff).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xfe00, 0xfe00).mirror(0xff).w(this, FUNC(snk_state::snk_fg_scrolly_w));
+ map(0xff00, 0xff00).mirror(0xff).w(this, FUNC(snk_state::snk_fg_scrollx_w));
+}
+
+void snk_state::madcrash_cpuB_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0x8700, 0x8700).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w)); // vangrd2
+ map(0xa000, 0xa000).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w)); // madcrash
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).ram().share("share5");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+ map(0xd800, 0xd800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xd900, 0xd900).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xda00, 0xda00).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xdb00, 0xdb00).w(this, FUNC(snk_state::marvins_scroll_msb_w));
+ map(0xdc00, 0xdc00).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xdd00, 0xdd00).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xde00, 0xde00).w(this, FUNC(snk_state::snk_fg_scrolly_w));
+ map(0xdf00, 0xdf00).w(this, FUNC(snk_state::snk_fg_scrollx_w));
+ map(0xe000, 0xe7ff).ram().share("spriteram");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xf800, 0xffff).ram().share("share3");
+}
+
+void snk_state::madcrush_cpuA_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8000).portr("IN0");
+ map(0x8100, 0x8100).portr("IN1");
+ map(0x8200, 0x8200).portr("IN2");
+ map(0x8300, 0x8300).w(this, FUNC(snk_state::marvins_soundlatch_w));
+ map(0x8400, 0x8400).portr("DSW1");
+ map(0x8500, 0x8500).portr("DSW2");
+ map(0x8600, 0x8600).mirror(0xff).w(this, FUNC(snk_state::marvins_flipscreen_w));
+ map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc000, 0xc7ff).ram().share("spriteram"); // + work ram
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xc800).mirror(0xff).w(this, FUNC(snk_state::marvins_palette_bank_w));
+ map(0xd800, 0xdfff).ram().share("share5");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram().share("share3");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+ map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w));
+ map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w));
+ map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w));
+}
+
+void snk_state::madcrush_cpuB_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc000, 0xc7ff).ram().share("spriteram"); // + work ram
+ map(0xc800, 0xcfff).ram().share("share5");
+ map(0xc800, 0xc800).mirror(0xff).w(this, FUNC(snk_state::marvins_palette_bank_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); // ??
+ map(0xe800, 0xefff).ram().share("share3");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+ map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w));
+ map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w));
+ map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w));
+}
+
+
+void snk_state::jcross_cpuA_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa100, 0xa100).portr("IN1");
+ map(0xa200, 0xa200).portr("IN2");
+ map(0xa300, 0xa300).w(this, FUNC(snk_state::sgladiat_soundlatch_w));
+ map(0xa400, 0xa400).portr("DSW1");
+ map(0xa500, 0xa500).portr("DSW2");
+ map(0xa600, 0xa600).w(this, FUNC(snk_state::sgladiat_flipscreen_w)); // flip screen, bg palette bank
+ map(0xa700, 0xa700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xd300, 0xd300).w(this, FUNC(snk_state::jcross_scroll_msb_w));
+ map(0xd400, 0xd400).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xd500, 0xd500).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xd600, 0xd600).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xd700, 0xd700).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xd800, 0xdfff).ram().share("spriteram"); // + work ram
+ map(0xe000, 0xefff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+ map(0xffff, 0xffff).nopw(); // simply a program patch to not write to two not existing video registers?
+}
+
+void snk_state::jcross_cpuB_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa700, 0xa700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc000, 0xc7ff).ram().share("spriteram");
+ map(0xc800, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::sgladiat_cpuA_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa100, 0xa100).portr("IN1");
+ map(0xa200, 0xa200).portr("IN2");
+ map(0xa300, 0xa300).w(this, FUNC(snk_state::sgladiat_soundlatch_w));
+ map(0xa400, 0xa400).portr("DSW1");
+ map(0xa500, 0xa500).portr("DSW2");
+ map(0xa600, 0xa600).w(this, FUNC(snk_state::sgladiat_flipscreen_w)); // flip screen, bg palette bank
+ map(0xa700, 0xa700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xd200, 0xd200).nopw(); // unknown
+ map(0xd300, 0xd300).w(this, FUNC(snk_state::sgladiat_scroll_msb_w));
+ map(0xd400, 0xd400).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xd500, 0xd500).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xd600, 0xd600).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xd700, 0xd700).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xd800, 0xdfff).ram().share("spriteram"); // + work ram
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram();
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::sgladiat_cpuB_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xa600, 0xa600).w(this, FUNC(snk_state::sgladiat_flipscreen_w)); // flip screen, bg palette bank
+ map(0xc000, 0xc7ff).ram().share("spriteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xda00, 0xda00).nopw(); // unknown
+ map(0xdb00, 0xdb00).w(this, FUNC(snk_state::sgladiat_scroll_msb_w));
+ map(0xdc00, 0xdc00).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xdd00, 0xdd00).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xde00, 0xde00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xdf00, 0xdf00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::hal21_cpuA_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc300, 0xc300).w(this, FUNC(snk_state::sgladiat_soundlatch_w));
+ map(0xc400, 0xc400).portr("DSW1");
+ map(0xc500, 0xc500).portr("DSW2");
+ map(0xc600, 0xc600).w(this, FUNC(snk_state::hal21_flipscreen_w)); // flip screen, bg tile and palette bank
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xd300, 0xd300).w(this, FUNC(snk_state::jcross_scroll_msb_w));
+ map(0xd400, 0xd400).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xd500, 0xd500).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xd600, 0xd600).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xd700, 0xd700).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xe000, 0xe7ff).ram().share("spriteram"); // + work ram
+ map(0xe800, 0xf7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::hal21_cpuB_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc000, 0xc7ff).ram().share("spriteram");
+ map(0xd000, 0xdfff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::aso_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc500, 0xc500).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::aso_videoattrs_w)); // flip screen, scroll msb
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xca00, 0xca00).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xcb00, 0xcb00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xcc00, 0xcc00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xce00, 0xce00).nopw(); // always 05?
+ map(0xcf00, 0xcf00).w(this, FUNC(snk_state::aso_bg_bank_w)); // tile and palette bank
+ map(0xd800, 0xdfff).ram().share("share1");
+ map(0xe000, 0xe7ff).ram().share("spriteram"); // + work ram
+ map(0xe800, 0xf7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::aso_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::tnk3_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
// c300 is an input in tnk3, output in athena/fitegolf (coin counter)
// and in countryc (trackball select) (see DRIVER_INIT).
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(athena_coin_counter_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(tnk3_videoattrs_w) // flip screen, char bank, scroll msb
- AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xca00, 0xca00) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xcb00, 0xcb00) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xcf00, 0xcf00) AM_WRITENOP // fitegolf/countryc only. Either 0 or 1. Video related?
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xd800, 0xf7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::tnk3_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // tnk3, athena
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // fitegolf
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xefff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::ikari_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w) // ikarijp doesn't use the coin counter
- AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xc880, 0xc880) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xc900, 0xc900) AM_WRITE(ikari_bg_scroll_msb_w)
- AM_RANGE(0xc980, 0xc980) AM_WRITE(ikari_unknown_video_w)
- AM_RANGE(0xca00, 0xca00) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xca80, 0xca80) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xcb00, 0xcb00) AM_WRITE(snk_sp32_scrolly_w)
- AM_RANGE(0xcb80, 0xcb80) AM_WRITE(snk_sp32_scrollx_w)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(hardflags_scrolly_w)
- AM_RANGE(0xcc80, 0xcc80) AM_WRITE(hardflags_scrollx_w)
- AM_RANGE(0xcd00, 0xcd00) AM_WRITE(ikari_sp_scroll_msb_w)
- AM_RANGE(0xcd80, 0xcd80) AM_WRITE(hardflags_scroll_msb_w)
- AM_RANGE(0xce00, 0xce00) AM_READ(hardflags1_r)
- AM_RANGE(0xce20, 0xce20) AM_READ(hardflags2_r)
- AM_RANGE(0xce40, 0xce40) AM_READ(hardflags3_r)
- AM_RANGE(0xce60, 0xce60) AM_READ(hardflags4_r)
- AM_RANGE(0xce80, 0xce80) AM_READ(hardflags5_r)
- AM_RANGE(0xcea0, 0xcea0) AM_READ(hardflags6_r)
- AM_RANGE(0xcee0, 0xcee0) AM_READ(hardflags7_r)
+ map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::athena_coin_counter_w));
+ map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc500, 0xc500).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::tnk3_videoattrs_w)); // flip screen, char bank, scroll msb
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xca00, 0xca00).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xcb00, 0xcb00).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xcc00, 0xcc00).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xcf00, 0xcf00).nopw(); // fitegolf/countryc only. Either 0 or 1. Video related?
+ map(0xd000, 0xd7ff).ram().share("spriteram"); // + work ram
+ map(0xd800, 0xf7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::tnk3_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // tnk3, athena
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // fitegolf
+ map(0xc800, 0xcfff).ram().share("spriteram");
+ map(0xd000, 0xefff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::ikari_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w)); // ikarijp doesn't use the coin counter
+ map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc500, 0xc500).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xc880, 0xc880).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::ikari_bg_scroll_msb_w));
+ map(0xc980, 0xc980).w(this, FUNC(snk_state::ikari_unknown_video_w));
+ map(0xca00, 0xca00).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xca80, 0xca80).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xcb00, 0xcb00).w(this, FUNC(snk_state::snk_sp32_scrolly_w));
+ map(0xcb80, 0xcb80).w(this, FUNC(snk_state::snk_sp32_scrollx_w));
+ map(0xcc00, 0xcc00).w(this, FUNC(snk_state::hardflags_scrolly_w));
+ map(0xcc80, 0xcc80).w(this, FUNC(snk_state::hardflags_scrollx_w));
+ map(0xcd00, 0xcd00).w(this, FUNC(snk_state::ikari_sp_scroll_msb_w));
+ map(0xcd80, 0xcd80).w(this, FUNC(snk_state::hardflags_scroll_msb_w));
+ map(0xce00, 0xce00).r(this, FUNC(snk_state::hardflags1_r));
+ map(0xce20, 0xce20).r(this, FUNC(snk_state::hardflags2_r));
+ map(0xce40, 0xce40).r(this, FUNC(snk_state::hardflags3_r));
+ map(0xce60, 0xce60).r(this, FUNC(snk_state::hardflags4_r));
+ map(0xce80, 0xce80).r(this, FUNC(snk_state::hardflags5_r));
+ map(0xcea0, 0xcea0).r(this, FUNC(snk_state::hardflags6_r));
+ map(0xcee0, 0xcee0).r(this, FUNC(snk_state::hardflags7_r));
// note the mirror. ikari and victroad use d800, ikarijp uses d000
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_MIRROR(0x0800) AM_SHARE("bg_videoram")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::ikari_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc980, 0xc980) AM_WRITE(ikari_unknown_video_w)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(hardflags_scrolly_w)
- AM_RANGE(0xcc80, 0xcc80) AM_WRITE(hardflags_scrollx_w)
- AM_RANGE(0xcd80, 0xcd80) AM_WRITE(hardflags_scroll_msb_w)
- AM_RANGE(0xce00, 0xce00) AM_READ(hardflags1_r)
- AM_RANGE(0xce20, 0xce20) AM_READ(hardflags2_r)
- AM_RANGE(0xce40, 0xce40) AM_READ(hardflags3_r)
- AM_RANGE(0xce60, 0xce60) AM_READ(hardflags4_r)
- AM_RANGE(0xce80, 0xce80) AM_READ(hardflags5_r)
- AM_RANGE(0xcea0, 0xcea0) AM_READ(hardflags6_r)
- AM_RANGE(0xcee0, 0xcee0) AM_READ(hardflags7_r)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_MIRROR(0x0800) AM_SHARE("bg_videoram")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::bermudat_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xc880, 0xc880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb
- AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xc940, 0xc940) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w)
- AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w)
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).mirror(0x0800).share("bg_videoram");
+ map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::ikari_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc980, 0xc980).w(this, FUNC(snk_state::ikari_unknown_video_w));
+ map(0xcc00, 0xcc00).w(this, FUNC(snk_state::hardflags_scrolly_w));
+ map(0xcc80, 0xcc80).w(this, FUNC(snk_state::hardflags_scrollx_w));
+ map(0xcd80, 0xcd80).w(this, FUNC(snk_state::hardflags_scroll_msb_w));
+ map(0xce00, 0xce00).r(this, FUNC(snk_state::hardflags1_r));
+ map(0xce20, 0xce20).r(this, FUNC(snk_state::hardflags2_r));
+ map(0xce40, 0xce40).r(this, FUNC(snk_state::hardflags3_r));
+ map(0xce60, 0xce60).r(this, FUNC(snk_state::hardflags4_r));
+ map(0xce80, 0xce80).r(this, FUNC(snk_state::hardflags5_r));
+ map(0xcea0, 0xcea0).r(this, FUNC(snk_state::hardflags6_r));
+ map(0xcee0, 0xcee0).r(this, FUNC(snk_state::hardflags7_r));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).mirror(0x0800).share("bg_videoram");
+ map(0xe000, 0xf7ff).ram().share("spriteram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::bermudat_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w));
+ map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc500, 0xc500).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xc880, 0xc880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb
+ map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xc940, 0xc940).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w));
+ map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w));
// the "turbo check" addresses are only used by bermudat/bermudaj, not bermudaa/worldwar or the other games
- AM_RANGE(0xca00, 0xca00) AM_WRITE(turbocheck16_1_w)
- AM_RANGE(0xca40, 0xca40) AM_WRITE(turbocheck16_2_w)
- AM_RANGE(0xca80, 0xca80) AM_WRITE(gwara_sp_scroll_msb_w)
- AM_RANGE(0xcac0, 0xcac0) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xcb00, 0xcb00) AM_READ(turbocheck16_1_r)
- AM_RANGE(0xcb10, 0xcb10) AM_READ(turbocheck16_2_r)
- AM_RANGE(0xcb20, 0xcb20) AM_READ(turbocheck16_3_r)
- AM_RANGE(0xcb30, 0xcb30) AM_READ(turbocheck16_4_r)
- AM_RANGE(0xcb40, 0xcb40) AM_READ(turbocheck16_5_r)
- AM_RANGE(0xcb50, 0xcb50) AM_READ(turbocheck16_6_r)
- AM_RANGE(0xcb60, 0xcb60) AM_READ(turbocheck16_7_r)
- AM_RANGE(0xcb70, 0xcb70) AM_READ(turbocheck16_8_r)
- AM_RANGE(0xcc00, 0xcc00) AM_WRITE(turbocheck32_1_w)
- AM_RANGE(0xcc40, 0xcc40) AM_WRITE(turbocheck32_2_w)
- AM_RANGE(0xcc80, 0xcc80) AM_WRITE(turbocheck_msb_w)
- AM_RANGE(0xccc0, 0xccc0) AM_READ(turbocheck32_1_r)
- AM_RANGE(0xccd0, 0xccd0) AM_READ(turbocheck32_2_r)
- AM_RANGE(0xcce0, 0xcce0) AM_READ(turbocheck32_3_r)
- AM_RANGE(0xccf0, 0xccf0) AM_READ(turbocheck32_4_r)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::bermudat_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xc880, 0xc880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb
- AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xc940, 0xc940) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w)
- AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w)
- AM_RANGE(0xca80, 0xca80) AM_WRITE(gwara_sp_scroll_msb_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::gwar_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xc880, 0xc880) AM_WRITE(gwar_videoattrs_w) // flip screen, scroll msb
- AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xc940, 0xc940) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w)
- AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w)
- AM_RANGE(0xca00, 0xca00) AM_WRITENOP // always 0?
- AM_RANGE(0xca40, 0xca40) AM_WRITENOP // always 0?
- AM_RANGE(0xcac0, 0xcac0) AM_WRITE(snk_sprite_split_point_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::gwar_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::gwara_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2")
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xf840, 0xf840) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xf880, 0xf880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb
- AM_RANGE(0xf8c0, 0xf8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrolly_w)
- AM_RANGE(0xf940, 0xf940) AM_WRITE(snk_sp16_scrollx_w)
- AM_RANGE(0xf980, 0xf980) AM_WRITE(snk_sp32_scrolly_w)
- AM_RANGE(0xf9c0, 0xf9c0) AM_WRITE(snk_sp32_scrollx_w)
- AM_RANGE(0xfa80, 0xfa80) AM_WRITE(gwara_sp_scroll_msb_w)
- AM_RANGE(0xfac0, 0xfac0) AM_WRITE(snk_sprite_split_point_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::gwara_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xf8c0, 0xf8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::tdfever_cpuA_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("IN1")
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN2")
- AM_RANGE(0xc180, 0xc180) AM_READ_PORT("IN3")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN4")
- AM_RANGE(0xc280, 0xc280) AM_READ_PORT("IN5")
- AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN6")
- AM_RANGE(0xc380, 0xc380) AM_READ_PORT("IN7")
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("IN8")
- AM_RANGE(0xc480, 0xc480) AM_READ_PORT("IN9")
- AM_RANGE(0xc500, 0xc500) AM_WRITE(snk_soundlatch_w)
- AM_RANGE(0xc580, 0xc580) AM_READ_PORT("DSW1")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2")
- AM_RANGE(0xc680, 0xc680) AM_WRITE(tdfever_coin_counter_w)
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w)
- AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w)
- AM_RANGE(0xc880, 0xc880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb
- AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xc900, 0xc900) AM_WRITE(tdfever_sp_scroll_msb_w)
- AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w)
- AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(tdfever_spriteram_w) AM_SHARE("spriteram") // + work ram
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::tdfever_cpuB_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // tdfever, tdfever2
- AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // fsoccer
- AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(tdfever_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram")
-ADDRESS_MAP_END
+ map(0xca00, 0xca00).w(this, FUNC(snk_state::turbocheck16_1_w));
+ map(0xca40, 0xca40).w(this, FUNC(snk_state::turbocheck16_2_w));
+ map(0xca80, 0xca80).w(this, FUNC(snk_state::gwara_sp_scroll_msb_w));
+ map(0xcac0, 0xcac0).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xcb00, 0xcb00).r(this, FUNC(snk_state::turbocheck16_1_r));
+ map(0xcb10, 0xcb10).r(this, FUNC(snk_state::turbocheck16_2_r));
+ map(0xcb20, 0xcb20).r(this, FUNC(snk_state::turbocheck16_3_r));
+ map(0xcb30, 0xcb30).r(this, FUNC(snk_state::turbocheck16_4_r));
+ map(0xcb40, 0xcb40).r(this, FUNC(snk_state::turbocheck16_5_r));
+ map(0xcb50, 0xcb50).r(this, FUNC(snk_state::turbocheck16_6_r));
+ map(0xcb60, 0xcb60).r(this, FUNC(snk_state::turbocheck16_7_r));
+ map(0xcb70, 0xcb70).r(this, FUNC(snk_state::turbocheck16_8_r));
+ map(0xcc00, 0xcc00).w(this, FUNC(snk_state::turbocheck32_1_w));
+ map(0xcc40, 0xcc40).w(this, FUNC(snk_state::turbocheck32_2_w));
+ map(0xcc80, 0xcc80).w(this, FUNC(snk_state::turbocheck_msb_w));
+ map(0xccc0, 0xccc0).r(this, FUNC(snk_state::turbocheck32_1_r));
+ map(0xccd0, 0xccd0).r(this, FUNC(snk_state::turbocheck32_2_r));
+ map(0xcce0, 0xcce0).r(this, FUNC(snk_state::turbocheck32_3_r));
+ map(0xccf0, 0xccf0).r(this, FUNC(snk_state::turbocheck32_4_r));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share2");
+ map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::bermudat_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xc880, 0xc880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb
+ map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xc940, 0xc940).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w));
+ map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w));
+ map(0xca80, 0xca80).w(this, FUNC(snk_state::gwara_sp_scroll_msb_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share2");
+ map(0xe000, 0xf7ff).ram().share("spriteram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::gwar_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w));
+ map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc500, 0xc500).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xc880, 0xc880).w(this, FUNC(snk_state::gwar_videoattrs_w)); // flip screen, scroll msb
+ map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xc940, 0xc940).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w));
+ map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w));
+ map(0xca00, 0xca00).nopw(); // always 0?
+ map(0xca40, 0xca40).nopw(); // always 0?
+ map(0xcac0, 0xcac0).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share2");
+ map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::gwar_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share2");
+ map(0xe000, 0xf7ff).ram().share("spriteram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
+
+
+void snk_state::gwara_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc100, 0xc100).portr("IN1");
+ map(0xc200, 0xc200).portr("IN2");
+ map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w));
+ map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc500, 0xc500).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xcfff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share3");
+ map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram
+ map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xf840, 0xf840).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xf880, 0xf880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb
+ map(0xf8c0, 0xf8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrolly_w));
+ map(0xf940, 0xf940).w(this, FUNC(snk_state::snk_sp16_scrollx_w));
+ map(0xf980, 0xf980).w(this, FUNC(snk_state::snk_sp32_scrolly_w));
+ map(0xf9c0, 0xf9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w));
+ map(0xfa80, 0xfa80).w(this, FUNC(snk_state::gwara_sp_scroll_msb_w));
+ map(0xfac0, 0xfac0).w(this, FUNC(snk_state::snk_sprite_split_point_w));
+}
+
+void snk_state::gwara_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w));
+ map(0xc800, 0xcfff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share3");
+ map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram
+ map(0xf8c0, 0xf8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+}
+
+
+void snk_state::tdfever_cpuA_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc080, 0xc080).portr("IN1");
+ map(0xc100, 0xc100).portr("IN2");
+ map(0xc180, 0xc180).portr("IN3");
+ map(0xc200, 0xc200).portr("IN4");
+ map(0xc280, 0xc280).portr("IN5");
+ map(0xc300, 0xc300).portr("IN6");
+ map(0xc380, 0xc380).portr("IN7");
+ map(0xc400, 0xc400).portr("IN8");
+ map(0xc480, 0xc480).portr("IN9");
+ map(0xc500, 0xc500).w(this, FUNC(snk_state::snk_soundlatch_w));
+ map(0xc580, 0xc580).portr("DSW1");
+ map(0xc600, 0xc600).portr("DSW2");
+ map(0xc680, 0xc680).w(this, FUNC(snk_state::tdfever_coin_counter_w));
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w));
+ map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w));
+ map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w));
+ map(0xc880, 0xc880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb
+ map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xc900, 0xc900).w(this, FUNC(snk_state::tdfever_sp_scroll_msb_w));
+ map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w));
+ map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w));
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share2");
+ map(0xe000, 0xf7ff).ram().w(this, FUNC(snk_state::tdfever_spriteram_w)).share("spriteram"); // + work ram
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM
+}
+
+void snk_state::tdfever_cpuB_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // tdfever, tdfever2
+ map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // fsoccer
+ map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram");
+ map(0xd800, 0xdfff).ram().share("share2");
+ map(0xe000, 0xf7ff).ram().w(this, FUNC(snk_state::tdfever_spriteram_w)).share("spriteram");
+ map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram");
+}
/***********************************************************************/
-ADDRESS_MAP_START(snk_state::marvins_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_READ(marvins_soundlatch_r)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8002, 0x8007) AM_DEVWRITE("wave", snkwave_device, snkwave_w)
- AM_RANGE(0x8008, 0x8009) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xa000, 0xa000) AM_READ(marvins_sound_nmi_ack_r)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::marvins_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READNOP // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::jcross_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ(sgladiat_soundlatch_r)
- AM_RANGE(0xc000, 0xc000) AM_READ(sgladiat_sound_nmi_ack_r)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xe002, 0xe003) AM_WRITENOP // ? always FFFF, snkwave leftover?
- AM_RANGE(0xe004, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::jcross_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(sgladiat_sound_irq_ack_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::hal21_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ(sgladiat_soundlatch_r)
- AM_RANGE(0xc000, 0xc000) AM_READ(sgladiat_sound_nmi_ack_r)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
+void snk_state::marvins_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4000).r(this, FUNC(snk_state::marvins_soundlatch_r));
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8002, 0x8007).w("wave", FUNC(snkwave_device::snkwave_w));
+ map(0x8008, 0x8009).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xa000, 0xa000).r(this, FUNC(snk_state::marvins_sound_nmi_ack_r));
+ map(0xe000, 0xe7ff).ram();
+}
+
+void snk_state::marvins_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopr(); // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq
+}
+
+
+void snk_state::jcross_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r(this, FUNC(snk_state::sgladiat_soundlatch_r));
+ map(0xc000, 0xc000).r(this, FUNC(snk_state::sgladiat_sound_nmi_ack_r));
+ map(0xe000, 0xe001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xe002, 0xe003).nopw(); // ? always FFFF, snkwave leftover?
+ map(0xe004, 0xe005).w("ay2", FUNC(ay8910_device::address_data_w));
+}
+
+void snk_state::jcross_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(snk_state::sgladiat_sound_irq_ack_r));
+}
+
+
+void snk_state::hal21_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r(this, FUNC(snk_state::sgladiat_soundlatch_r));
+ map(0xc000, 0xc000).r(this, FUNC(snk_state::sgladiat_sound_nmi_ack_r));
+ map(0xe000, 0xe001).w("ay1", FUNC(ay8910_device::address_data_w));
// AM_RANGE(0xe002, 0xe002) AM_WRITENOP // bitfielded(0-5) details unknown. Filter enable?
- AM_RANGE(0xe008, 0xe009) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::hal21_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READNOP // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(snk_state::tnk3_YM3526_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc000) AM_READ(tnk3_busy_clear_r)
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym3526_device, read, write)
- AM_RANGE(0xe004, 0xe004) AM_READ(tnk3_cmdirq_ack_r)
- AM_RANGE(0xe006, 0xe006) AM_READ(tnk3_ymirq_ack_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::aso_YM3526_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe000) AM_READ(tnk3_busy_clear_r)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym3526_device, read, write)
+ map(0xe008, 0xe009).w("ay2", FUNC(ay8910_device::address_data_w));
+}
+
+void snk_state::hal21_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopr(); // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq
+}
+
+
+void snk_state::tnk3_YM3526_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc000).r(this, FUNC(snk_state::tnk3_busy_clear_r));
+ map(0xe000, 0xe001).rw("ym1", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
+ map(0xe004, 0xe004).r(this, FUNC(snk_state::tnk3_cmdirq_ack_r));
+ map(0xe006, 0xe006).r(this, FUNC(snk_state::tnk3_ymirq_ack_r));
+}
+
+void snk_state::aso_YM3526_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe000).r(this, FUNC(snk_state::tnk3_busy_clear_r));
+ map(0xf000, 0xf001).rw("ym1", FUNC(ym3526_device::read), FUNC(ym3526_device::write));
// AM_RANGE(0xf002, 0xf002) AM_READNOP unknown
- AM_RANGE(0xf004, 0xf004) AM_READ(tnk3_cmdirq_ack_r)
- AM_RANGE(0xf006, 0xf006) AM_READ(tnk3_ymirq_ack_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::YM3526_YM3526_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3526_device, status_port_r, control_port_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3526_device, write_port_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", ym3526_device, status_port_r, control_port_w)
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", ym3526_device, write_port_w)
- AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::YM3812_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3812_device, write_port_w)
- AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::YM3526_Y8950_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3526_device, status_port_r, control_port_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3526_device, write_port_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w)
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w)
- AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::YM3812_Y8950_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3812_device, write_port_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w)
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w)
- AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk_state::Y8950_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w)
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w)
- AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
-ADDRESS_MAP_END
+ map(0xf004, 0xf004).r(this, FUNC(snk_state::tnk3_cmdirq_ack_r));
+ map(0xf006, 0xf006).r(this, FUNC(snk_state::tnk3_ymirq_ack_r));
+}
+
+void snk_state::YM3526_YM3526_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).rw("ym1", FUNC(ym3526_device::status_port_r), FUNC(ym3526_device::control_port_w));
+ map(0xec00, 0xec00).w("ym1", FUNC(ym3526_device::write_port_w));
+ map(0xf000, 0xf000).rw("ym2", FUNC(ym3526_device::status_port_r), FUNC(ym3526_device::control_port_w));
+ map(0xf400, 0xf400).w("ym2", FUNC(ym3526_device::write_port_w));
+ map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w));
+}
+
+void snk_state::YM3812_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).rw("ym1", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0xec00, 0xec00).w("ym1", FUNC(ym3812_device::write_port_w));
+ map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w));
+}
+
+void snk_state::YM3526_Y8950_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).rw("ym1", FUNC(ym3526_device::status_port_r), FUNC(ym3526_device::control_port_w));
+ map(0xec00, 0xec00).w("ym1", FUNC(ym3526_device::write_port_w));
+ map(0xf000, 0xf000).rw("ym2", FUNC(y8950_device::status_port_r), FUNC(y8950_device::control_port_w));
+ map(0xf400, 0xf400).w("ym2", FUNC(y8950_device::write_port_w));
+ map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w));
+}
+
+void snk_state::YM3812_Y8950_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe800, 0xe800).rw("ym1", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0xec00, 0xec00).w("ym1", FUNC(ym3812_device::write_port_w));
+ map(0xf000, 0xf000).rw("ym2", FUNC(y8950_device::status_port_r), FUNC(y8950_device::control_port_w));
+ map(0xf400, 0xf400).w("ym2", FUNC(y8950_device::write_port_w));
+ map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w));
+}
+
+void snk_state::Y8950_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).rw("ym2", FUNC(y8950_device::status_port_r), FUNC(y8950_device::control_port_w));
+ map(0xf400, 0xf400).w("ym2", FUNC(y8950_device::write_port_w));
+ map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w));
+}
/*********************************************************************/
diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp
index 56070575241..f8a552f0ba2 100644
--- a/src/mame/drivers/snk6502.cpp
+++ b/src/mame/drivers/snk6502.cpp
@@ -347,105 +347,110 @@ CUSTOM_INPUT_MEMBER(snk6502_state::sasuke_count_r)
*
*************************************/
-ADDRESS_MAP_START(snk6502_state::sasuke_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x4000, 0x8fff) AM_ROM
- AM_RANGE(0xb000, 0xb001) AM_DEVWRITE("snk6502", snk6502_sound_device, sasuke_sound_w)
- AM_RANGE(0xb002, 0xb002) AM_WRITE(satansat_b002_w) /* flip screen & irq enable */
- AM_RANGE(0xb003, 0xb003) AM_WRITE(satansat_backcolor_w)
- AM_RANGE(0xb004, 0xb004) AM_READ_PORT("IN0")
- AM_RANGE(0xb005, 0xb005) AM_READ_PORT("IN1")
- AM_RANGE(0xb006, 0xb006) AM_READ_PORT("DSW")
- AM_RANGE(0xb007, 0xb007) AM_READ_PORT("IN2")
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk6502_state::satansat_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x4000, 0x9fff) AM_ROM
- AM_RANGE(0xb000, 0xb001) AM_DEVWRITE("snk6502", snk6502_sound_device, satansat_sound_w)
- AM_RANGE(0xb002, 0xb002) AM_WRITE(satansat_b002_w) /* flip screen & irq enable */
- AM_RANGE(0xb003, 0xb003) AM_WRITE(satansat_backcolor_w)
- AM_RANGE(0xb004, 0xb004) AM_READ_PORT("IN0")
- AM_RANGE(0xb005, 0xb005) AM_READ_PORT("IN1")
- AM_RANGE(0xb006, 0xb006) AM_READ_PORT("DSW")
- AM_RANGE(0xb007, 0xb007) AM_READ_PORT("IN2")
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk6502_state::vanguard_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x3100, 0x3102) AM_DEVWRITE("snk6502", snk6502_sound_device, vanguard_sound_w)
- AM_RANGE(0x3103, 0x3103) AM_WRITE(flipscreen_w)
- AM_RANGE(0x3104, 0x3104) AM_READ_PORT("IN0")
- AM_RANGE(0x3105, 0x3105) AM_READ_PORT("IN1")
- AM_RANGE(0x3106, 0x3106) AM_READ_PORT("DSW")
- AM_RANGE(0x3107, 0x3107) AM_READ_PORT("IN2")
- AM_RANGE(0x3200, 0x3200) AM_WRITE(scrollx_w)
- AM_RANGE(0x3300, 0x3300) AM_WRITE(scrolly_w)
- AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("snk6502", snk6502_sound_device, vanguard_speech_w) // speech
- AM_RANGE(0x4000, 0xbfff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM /* for the reset / interrupt vectors */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk6502_state::fantasy_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x2100, 0x2102) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w)
- AM_RANGE(0x2103, 0x2103) AM_WRITE(fantasy_flipscreen_w) // affects both video and sound
- AM_RANGE(0x2104, 0x2104) AM_READ_PORT("IN0")
- AM_RANGE(0x2105, 0x2105) AM_READ_PORT("IN1")
- AM_RANGE(0x2106, 0x2106) AM_READ_PORT("DSW")
- AM_RANGE(0x2107, 0x2107) AM_READ_PORT("IN2")
- AM_RANGE(0x2200, 0x2200) AM_WRITE(scrollx_w)
- AM_RANGE(0x2300, 0x2300) AM_WRITE(scrolly_w)
- AM_RANGE(0x2400, 0x2400) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_speech_w) // speech
- AM_RANGE(0x3000, 0xbfff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk6502_state::pballoon_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x3000, 0x9fff) AM_ROM
- AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xb001, 0xb001) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0xb100, 0xb102) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w)
- AM_RANGE(0xb103, 0xb103) AM_WRITE(fantasy_flipscreen_w) // affects both video and sound
- AM_RANGE(0xb104, 0xb104) AM_READ_PORT("IN0")
- AM_RANGE(0xb105, 0xb105) AM_READ_PORT("IN1")
- AM_RANGE(0xb106, 0xb106) AM_READ_PORT("DSW")
- AM_RANGE(0xb107, 0xb107) AM_READ_PORT("IN2")
- AM_RANGE(0xb200, 0xb200) AM_WRITE(scrollx_w)
- AM_RANGE(0xb300, 0xb300) AM_WRITE(scrolly_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void snk6502_state::sasuke_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram");
+ map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x4000, 0x8fff).rom();
+ map(0xb000, 0xb001).w(m_sound, FUNC(snk6502_sound_device::sasuke_sound_w));
+ map(0xb002, 0xb002).w(this, FUNC(snk6502_state::satansat_b002_w)); /* flip screen & irq enable */
+ map(0xb003, 0xb003).w(this, FUNC(snk6502_state::satansat_backcolor_w));
+ map(0xb004, 0xb004).portr("IN0");
+ map(0xb005, 0xb005).portr("IN1");
+ map(0xb006, 0xb006).portr("DSW");
+ map(0xb007, 0xb007).portr("IN2");
+ map(0xf800, 0xffff).rom();
+}
+
+void snk6502_state::satansat_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram");
+ map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x4000, 0x9fff).rom();
+ map(0xb000, 0xb001).w(m_sound, FUNC(snk6502_sound_device::satansat_sound_w));
+ map(0xb002, 0xb002).w(this, FUNC(snk6502_state::satansat_b002_w)); /* flip screen & irq enable */
+ map(0xb003, 0xb003).w(this, FUNC(snk6502_state::satansat_backcolor_w));
+ map(0xb004, 0xb004).portr("IN0");
+ map(0xb005, 0xb005).portr("IN1");
+ map(0xb006, 0xb006).portr("DSW");
+ map(0xb007, 0xb007).portr("IN2");
+ map(0xf800, 0xffff).rom();
+}
+
+void snk6502_state::vanguard_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram");
+ map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x3100, 0x3102).w(m_sound, FUNC(snk6502_sound_device::vanguard_sound_w));
+ map(0x3103, 0x3103).w(this, FUNC(snk6502_state::flipscreen_w));
+ map(0x3104, 0x3104).portr("IN0");
+ map(0x3105, 0x3105).portr("IN1");
+ map(0x3106, 0x3106).portr("DSW");
+ map(0x3107, 0x3107).portr("IN2");
+ map(0x3200, 0x3200).w(this, FUNC(snk6502_state::scrollx_w));
+ map(0x3300, 0x3300).w(this, FUNC(snk6502_state::scrolly_w));
+ map(0x3400, 0x3400).w(m_sound, FUNC(snk6502_sound_device::vanguard_speech_w)); // speech
+ map(0x4000, 0xbfff).rom();
+ map(0xf000, 0xffff).rom(); /* for the reset / interrupt vectors */
+}
+
+void snk6502_state::fantasy_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram");
+ map(0x2000, 0x2000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2001, 0x2001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x2100, 0x2102).w(m_sound, FUNC(snk6502_sound_device::fantasy_sound_w));
+ map(0x2103, 0x2103).w(this, FUNC(snk6502_state::fantasy_flipscreen_w)); // affects both video and sound
+ map(0x2104, 0x2104).portr("IN0");
+ map(0x2105, 0x2105).portr("IN1");
+ map(0x2106, 0x2106).portr("DSW");
+ map(0x2107, 0x2107).portr("IN2");
+ map(0x2200, 0x2200).w(this, FUNC(snk6502_state::scrollx_w));
+ map(0x2300, 0x2300).w(this, FUNC(snk6502_state::scrolly_w));
+ map(0x2400, 0x2400).w(m_sound, FUNC(snk6502_sound_device::fantasy_speech_w)); // speech
+ map(0x3000, 0xbfff).rom();
+ map(0xf000, 0xffff).rom();
+}
+
+void snk6502_state::pballoon_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2");
+ map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram");
+ map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram");
+ map(0x3000, 0x9fff).rom();
+ map(0xb000, 0xb000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xb001, 0xb001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0xb100, 0xb102).w(m_sound, FUNC(snk6502_sound_device::fantasy_sound_w));
+ map(0xb103, 0xb103).w(this, FUNC(snk6502_state::fantasy_flipscreen_w)); // affects both video and sound
+ map(0xb104, 0xb104).portr("IN0");
+ map(0xb105, 0xb105).portr("IN1");
+ map(0xb106, 0xb106).portr("DSW");
+ map(0xb107, 0xb107).portr("IN2");
+ map(0xb200, 0xb200).w(this, FUNC(snk6502_state::scrollx_w));
+ map(0xb300, 0xb300).w(this, FUNC(snk6502_state::scrolly_w));
+ map(0xf000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/snk68.cpp b/src/mame/drivers/snk68.cpp
index 488ec234ef0..c312f5386ca 100644
--- a/src/mame/drivers/snk68.cpp
+++ b/src/mame/drivers/snk68.cpp
@@ -104,52 +104,55 @@ WRITE8_MEMBER(snk68_state::sound_w)
/*******************************************************************************/
-ADDRESS_MAP_START(snk68_state::pow_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM
- AM_RANGE(0x080000, 0x080001) AM_READ(control_1_r)
- AM_RANGE(0x080000, 0x080001) AM_WRITE8(sound_w, 0xff00)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(pow_flipscreen_w) // + char bank
- AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* Watchdog or IRQ ack */
- AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* Watchdog or IRQ ack */
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
- AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2")
+void snk68_state::pow_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram();
+ map(0x080000, 0x080001).r(this, FUNC(snk68_state::control_1_r));
+ map(0x080000, 0x080000).w(this, FUNC(snk68_state::sound_w));
+ map(0x0c0000, 0x0c0001).portr("SYSTEM");
+ map(0x0c0000, 0x0c0001).w(this, FUNC(snk68_state::pow_flipscreen_w)); // + char bank
+ map(0x0e0000, 0x0e0001).nopr(); /* Watchdog or IRQ ack */
+ map(0x0e8000, 0x0e8001).nopr(); /* Watchdog or IRQ ack */
+ map(0x0f0000, 0x0f0001).portr("DSW1");
+ map(0x0f0008, 0x0f0009).portr("DSW2");
// AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP /* ?? */
- AM_RANGE(0x100000, 0x100fff) AM_READWRITE(pow_fg_videoram_r, pow_fg_videoram_w) AM_MIRROR(0x1000) AM_SHARE("pow_fg_videoram") // 8-bit
- AM_RANGE(0x200000, 0x207fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snk68_state::searchar_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM
- AM_RANGE(0x080000, 0x080005) AM_READ(protcontrols_r) /* Player 1 & 2 */
- AM_RANGE(0x080000, 0x080001) AM_WRITE8(sound_w, 0xff00)
- AM_RANGE(0x080006, 0x080007) AM_WRITE(protection_w) /* top byte unknown, bottom is protection in ikari3 and streetsm */
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(searchar_flipscreen_w)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ(rotary_1_r) /* Player 1 rotary */
- AM_RANGE(0x0c8000, 0x0c8001) AM_READ(rotary_2_r) /* Player 2 rotary */
- AM_RANGE(0x0d0000, 0x0d0001) AM_READ(rotary_lsb_r) /* Extra rotary bits */
- AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* Watchdog or IRQ ack */
- AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* Watchdog or IRQ ack */
+ map(0x100000, 0x100fff).rw(this, FUNC(snk68_state::pow_fg_videoram_r), FUNC(snk68_state::pow_fg_videoram_w)).mirror(0x1000).share("pow_fg_videoram"); // 8-bit
+ map(0x200000, 0x207fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram"); // only partially populated
+ map(0x400000, 0x400fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+}
+
+void snk68_state::searchar_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram();
+ map(0x080000, 0x080005).r(this, FUNC(snk68_state::protcontrols_r)); /* Player 1 & 2 */
+ map(0x080000, 0x080000).w(this, FUNC(snk68_state::sound_w));
+ map(0x080006, 0x080007).w(this, FUNC(snk68_state::protection_w)); /* top byte unknown, bottom is protection in ikari3 and streetsm */
+ map(0x0c0000, 0x0c0001).w(this, FUNC(snk68_state::searchar_flipscreen_w));
+ map(0x0c0000, 0x0c0001).r(this, FUNC(snk68_state::rotary_1_r)); /* Player 1 rotary */
+ map(0x0c8000, 0x0c8001).r(this, FUNC(snk68_state::rotary_2_r)); /* Player 2 rotary */
+ map(0x0d0000, 0x0d0001).r(this, FUNC(snk68_state::rotary_lsb_r)); /* Extra rotary bits */
+ map(0x0e0000, 0x0e0001).nopr(); /* Watchdog or IRQ ack */
+ map(0x0e8000, 0x0e8001).nopr(); /* Watchdog or IRQ ack */
// AM_RANGE(0x0f0000, 0x0f0001) AM_WRITENOP /* ?? */
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
- AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0xff00)
- AM_RANGE(0x100000, 0x107fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(searchar_fg_videoram_w) AM_MIRROR(0x1000) AM_SHARE("pow_fg_videoram") /* Mirror is used by Ikari 3 */
- AM_RANGE(0x300000, 0x33ffff) AM_ROM AM_REGION("user1", 0) /* Extra code bank */
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+ map(0x0f0000, 0x0f0001).portr("DSW1");
+ map(0x0f0008, 0x0f0009).portr("DSW2");
+ map(0x0f8000, 0x0f8000).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x100000, 0x107fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram"); // only partially populated
+ map(0x200000, 0x200fff).ram().w(this, FUNC(snk68_state::searchar_fg_videoram_w)).mirror(0x1000).share("pow_fg_videoram"); /* Mirror is used by Ikari 3 */
+ map(0x300000, 0x33ffff).rom().region("user1", 0); /* Extra code bank */
+ map(0x400000, 0x400fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+}
/******************************************************************************/
-ADDRESS_MAP_START(snk68_state::sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void snk68_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
WRITE8_MEMBER(snk68_state::D7759_write_port_0_w)
{
@@ -163,13 +166,14 @@ WRITE8_MEMBER(snk68_state::D7759_upd_reset_w)
m_upd7759->reset_w(data & 0x80);
}
-ADDRESS_MAP_START(snk68_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(D7759_write_port_0_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(D7759_upd_reset_w)
-ADDRESS_MAP_END
+void snk68_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).w(this, FUNC(snk68_state::D7759_write_port_0_w));
+ map(0x80, 0x80).w(this, FUNC(snk68_state::D7759_upd_reset_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/snookr10.cpp b/src/mame/drivers/snookr10.cpp
index a9742820d4e..098d979dfa1 100644
--- a/src/mame/drivers/snookr10.cpp
+++ b/src/mame/drivers/snookr10.cpp
@@ -764,49 +764,52 @@ READ8_MEMBER(snookr10_state::port2000_8_r)
* Memory map information *
*************************/
-ADDRESS_MAP_START(snookr10_state::snookr10_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */
- AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("IN2") /* IN2 */
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("SW1") /* DS1 */
- AM_RANGE(0x3004, 0x3004) AM_READ(dsw_port_1_r) /* complement of DS1, bit 7 */
- AM_RANGE(0x5000, 0x5000) AM_WRITE(output_port_0_w) /* OUT0 */
- AM_RANGE(0x5001, 0x5001) AM_WRITE(output_port_1_w) /* OUT1 */
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snookr10_state::tenballs_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */
- AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT("IN2") /* IN2 */
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT("SW1") /* DS1 */
- AM_RANGE(0x5000, 0x5000) AM_WRITE(output_port_0_w) /* OUT0 */
- AM_RANGE(0x5001, 0x5001) AM_WRITE(output_port_1_w) /* OUT1 */
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snookr10_state::crystalc_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */
- AM_RANGE(0x1000, 0x1000) AM_WRITE(output_port_0_w) /* OUT0 */
- AM_RANGE(0x1001, 0x1001) AM_WRITE(output_port_1_w) /* OUT1 */
- AM_RANGE(0x2000, 0x2008) AM_READ(port2000_8_r) /* unknown... protection or data channels? */
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("IN2") /* IN2 */
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("SW1") /* DS1 */
- AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void snookr10_state::snookr10_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed 6116 */
+ map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x3000, 0x3000).portr("IN0"); /* IN0 */
+ map(0x3001, 0x3001).portr("IN1"); /* IN1 */
+ map(0x3002, 0x3002).portr("IN2"); /* IN2 */
+ map(0x3003, 0x3003).portr("SW1"); /* DS1 */
+ map(0x3004, 0x3004).r(this, FUNC(snookr10_state::dsw_port_1_r)); /* complement of DS1, bit 7 */
+ map(0x5000, 0x5000).w(this, FUNC(snookr10_state::output_port_0_w)); /* OUT0 */
+ map(0x5001, 0x5001).w(this, FUNC(snookr10_state::output_port_1_w)); /* OUT1 */
+ map(0x6000, 0x6fff).ram().w(this, FUNC(snookr10_state::snookr10_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(snookr10_state::snookr10_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
+
+void snookr10_state::tenballs_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed 6116 */
+ map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x4000, 0x4000).portr("IN0"); /* IN0 */
+ map(0x4001, 0x4001).portr("IN1"); /* IN1 */
+ map(0x4002, 0x4002).portr("IN2"); /* IN2 */
+ map(0x4003, 0x4003).portr("SW1"); /* DS1 */
+ map(0x5000, 0x5000).w(this, FUNC(snookr10_state::output_port_0_w)); /* OUT0 */
+ map(0x5001, 0x5001).w(this, FUNC(snookr10_state::output_port_1_w)); /* OUT1 */
+ map(0x6000, 0x6fff).ram().w(this, FUNC(snookr10_state::snookr10_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(snookr10_state::snookr10_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
+
+void snookr10_state::crystalc_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed 6116 */
+ map(0x1000, 0x1000).w(this, FUNC(snookr10_state::output_port_0_w)); /* OUT0 */
+ map(0x1001, 0x1001).w(this, FUNC(snookr10_state::output_port_1_w)); /* OUT1 */
+ map(0x2000, 0x2008).r(this, FUNC(snookr10_state::port2000_8_r)); /* unknown... protection or data channels? */
+ map(0x3000, 0x3000).portr("IN0"); /* IN0 */
+ map(0x3001, 0x3001).portr("IN1"); /* IN1 */
+ map(0x3002, 0x3002).portr("IN2"); /* IN2 */
+ map(0x3003, 0x3003).portr("SW1"); /* DS1 */
+ map(0x5000, 0x5000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x6000, 0x6fff).ram().w(this, FUNC(snookr10_state::snookr10_videoram_w)).share("videoram");
+ map(0x7000, 0x7fff).ram().w(this, FUNC(snookr10_state::snookr10_colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
/*************************
diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp
index b515d838e51..9a26b59ba45 100644
--- a/src/mame/drivers/snowbros.cpp
+++ b/src/mame/drivers/snowbros.cpp
@@ -191,34 +191,37 @@ READ16_MEMBER(snowbros_state::toto_read)
/* Snow Bros Memory Map */
-ADDRESS_MAP_START(snowbros_state::snowbros_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x400000, 0x400001) AM_WRITE8(snowbros_flipscreen_w, 0xff00)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snowbros_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snowbros_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // goes back to the main CPU, checked during boot
-ADDRESS_MAP_END
+void snowbros_state::snowbros_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x300001, 0x300001).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x400000, 0x400000).w(this, FUNC(snowbros_state::snowbros_flipscreen_w));
+ map(0x500000, 0x500001).portr("DSW1");
+ map(0x500002, 0x500003).portr("DSW2");
+ map(0x500004, 0x500005).portr("SYSTEM");
+ map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w));
+ map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
+
+void snowbros_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+}
+
+void snowbros_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x04).w("soundlatch2", FUNC(generic_latch_8_device::write)); // goes back to the main CPU, checked during boot
+}
/* Semicom AT89C52 MCU */
@@ -247,73 +250,78 @@ WRITE8_MEMBER(snowbros_state::prot_p2_w)
/* Winter Bobble - bootleg GFX chip */
-ADDRESS_MAP_START(snowbros_state::wintbob_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram16b")
- AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
+void snowbros_state::wintbob_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x300001, 0x300001).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x400000, 0x400000).w(this, FUNC(snowbros_state::bootleg_flipscreen_w));
+ map(0x500000, 0x500001).portr("DSW1");
+ map(0x500002, 0x500003).portr("DSW2");
+ map(0x500004, 0x500005).portr("SYSTEM");
+ map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x701fff).ram().share("spriteram16b");
+ map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
/* Honey Dolls */
-ADDRESS_MAP_START(snowbros_state::honeydol_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram")
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP /* ? */
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x500000, 0x500001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0x600000, 0x600001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
- AM_RANGE(0x800000, 0x800001) AM_WRITENOP /* ? */
- AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1")
- AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2")
- AM_RANGE(0x900004, 0x900005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa00000, 0xa007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb01fff) AM_RAM AM_SHARE("spriteram16b")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snowbros_state::honeydol_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snowbros_state::honeydol_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) // not connected?
- AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x04) AM_WRITENOP // still written but never actually read by the main CPU
-ADDRESS_MAP_END
+void snowbros_state::honeydol_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram().share("hyperpac_ram");
+ map(0x200000, 0x200001).nopw(); /* ? */
+ map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x400000, 0x400001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x500000, 0x500001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0x600000, 0x600001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+ map(0x800000, 0x800001).nopw(); /* ? */
+ map(0x900000, 0x900001).portr("DSW1");
+ map(0x900002, 0x900003).portr("DSW2");
+ map(0x900004, 0x900005).portr("SYSTEM");
+ map(0xa00000, 0xa007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xb00000, 0xb01fff).ram().share("spriteram16b");
+}
+
+void snowbros_state::honeydol_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xe010, 0xe010).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void snowbros_state::honeydol_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); // not connected?
+ map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x04).nopw(); // still written but never actually read by the main CPU
+}
/* Twin Adventure */
-ADDRESS_MAP_START(snowbros_state::twinadv_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00)
-
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram16b")
- AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
+void snowbros_state::twinadv_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x300001, 0x300001).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x400000, 0x400000).w(this, FUNC(snowbros_state::bootleg_flipscreen_w));
+
+ map(0x500000, 0x500001).portr("DSW1");
+ map(0x500002, 0x500003).portr("DSW2");
+ map(0x500004, 0x500005).portr("SYSTEM");
+ map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x701fff).ram().share("spriteram16b");
+ map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
WRITE8_MEMBER(snowbros_state::twinadv_oki_bank_w)
{
@@ -324,13 +332,14 @@ WRITE8_MEMBER(snowbros_state::twinadv_oki_bank_w)
m_oki->set_rom_bank(bank);
}
-ADDRESS_MAP_START(snowbros_state::twinadv_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // back to 68k?
- AM_RANGE(0x04, 0x04) AM_WRITE(twinadv_oki_bank_w) // oki bank?
- AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+void snowbros_state::twinadv_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x02, 0x02).w("soundlatch2", FUNC(generic_latch_8_device::write)); // back to 68k?
+ map(0x04, 0x04).w(this, FUNC(snowbros_state::twinadv_oki_bank_w)); // oki bank?
+ map(0x06, 0x06).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* SemiCom Memory Map
@@ -340,29 +349,31 @@ sound hardware is also different
*/
-ADDRESS_MAP_START(snowbros_state::hyperpac_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram")
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
+void snowbros_state::hyperpac_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram().share("hyperpac_ram");
+ map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
// AM_RANGE(0x400000, 0x400001) ???
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
-
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(snowbros_state::hyperpac_sound_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
- AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x500000, 0x500001).portr("DSW1");
+ map(0x500002, 0x500003).portr("DSW2");
+ map(0x500004, 0x500005).portr("SYSTEM");
+
+ map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w));
+ map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
+
+void snowbros_state::hyperpac_sound_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom();
+ map(0xd000, 0xd7ff).ram();
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/* Same volume used for all samples at the Moment, could be right, we have no
way of knowing .. */
@@ -471,71 +482,74 @@ WRITE16_MEMBER(snowbros_state::sb3_sound_w)
-ADDRESS_MAP_START(snowbros_state::snowbros3_map)
- AM_RANGE( 0x000000, 0x03ffff) AM_ROM
- AM_RANGE( 0x100000, 0x103fff) AM_RAM
- AM_RANGE( 0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE( 0x300000, 0x300001) AM_READ(sb3_sound_r) // ?
- AM_RANGE( 0x300000, 0x300001) AM_WRITE(sb3_sound_w) // ?
- AM_RANGE( 0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00)
- AM_RANGE( 0x500000, 0x500001) AM_READ_PORT("DSW1")
- AM_RANGE( 0x500002, 0x500003) AM_READ_PORT("DSW2")
- AM_RANGE( 0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE( 0x600000, 0x6003ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE( 0x700000, 0x7021ff) AM_RAM AM_SHARE("spriteram16b")
- AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
+void snowbros_state::snowbros3_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x300000, 0x300001).r(this, FUNC(snowbros_state::sb3_sound_r)); // ?
+ map(0x300000, 0x300001).w(this, FUNC(snowbros_state::sb3_sound_w)); // ?
+ map(0x400000, 0x400000).w(this, FUNC(snowbros_state::bootleg_flipscreen_w));
+ map(0x500000, 0x500001).portr("DSW1");
+ map(0x500002, 0x500003).portr("DSW2");
+ map(0x500004, 0x500005).portr("SYSTEM");
+ map(0x600000, 0x6003ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x7021ff).ram().share("spriteram16b");
+ map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
/* Final Tetris */
-ADDRESS_MAP_START(snowbros_state::finalttr_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("hyperpac_ram")
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
+void snowbros_state::finalttr_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x103fff).ram().share("hyperpac_ram");
+ map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
// AM_RANGE(0x400000, 0x400001) ???
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
+ map(0x500000, 0x500001).portr("DSW1");
+ map(0x500002, 0x500003).portr("DSW2");
+ map(0x500004, 0x500005).portr("SYSTEM");
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
+ map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w));
+ map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
-ADDRESS_MAP_START(snowbros_state::yutnori_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+void snowbros_state::yutnori_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
// 0x100000 clr.w on startup
// 0x200000 could be the protection device, it makes several writes, then executes an entire subroutine of NOPs..
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW1")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSW2")
- AM_RANGE(0x300004, 0x300005) AM_READ_PORT("SYSTEM")
+ map(0x300000, 0x300001).portr("DSW1");
+ map(0x300002, 0x300003).portr("DSW2");
+ map(0x300004, 0x300005).portr("SYSTEM");
// could be one of the OKIs? but gets value to write from RAM, always seems to be 0?
- AM_RANGE(0x30000c, 0x30000d) AM_WRITENOP
- AM_RANGE(0x30000e, 0x30000f) AM_READNOP //AM_READ( yutnori_unk_r ) // ??
+ map(0x30000c, 0x30000d).nopw();
+ map(0x30000e, 0x30000f).nopr(); //AM_READ( yutnori_unk_r ) // ??
// AM_RANGE(0x400000, 0x400001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // maybe?
- AM_RANGE(0x400000, 0x400001) AM_NOP
+ map(0x400000, 0x400001).noprw();
- AM_RANGE(0x500000, 0x5001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x500000, 0x5001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
+ map(0x600000, 0x601fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w));
- AM_RANGE(0x700000, 0x70ffff) AM_RAM
+ map(0x700000, 0x70ffff).ram();
- AM_RANGE(0x800000, 0x800001) AM_READNOP AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
- AM_RANGE(0x900000, 0x900001) AM_READNOP AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
- AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
-ADDRESS_MAP_END
+ map(0x800000, 0x800001).nopr().w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */
+ map(0x900000, 0x900001).nopr().w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */
+ map(0xa00000, 0xa00001).nopr().w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */
+}
static INPUT_PORTS_START( snowbros )
PORT_START("DSW1") /* 500001 */
diff --git a/src/mame/drivers/socrates.cpp b/src/mame/drivers/socrates.cpp
index 0c18333a0aa..70d57681b05 100644
--- a/src/mame/drivers/socrates.cpp
+++ b/src/mame/drivers/socrates.cpp
@@ -977,32 +977,36 @@ INPUT_CHANGED_MEMBER( iqunlimz_state::send_input )
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(socrates_state::z80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* system rom, bank 0 (fixed) */
- AM_RANGE(0x4000, 0x7fff) AM_DEVICE("rombank1", address_map_bank_device, amap8) /* banked rom space; system rom is banks 0 through F, cartridge rom is banks 10 onward, usually banks 10 through 17. area past the end of the cartridge, and the whole 10-ff area when no cartridge is inserted, reads as 0xF3 */
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("rambank1", address_map_bank_device, amap8) /* banked ram 'window' 0 */
- AM_RANGE(0xc000, 0xffff) AM_DEVICE("rambank2", address_map_bank_device, amap8) /* banked ram 'window' 1 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(socrates_state::socrates_rombank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) AM_MIRROR(0xF00000) // xxxx 00** **** **** **** ****
- AM_RANGE(0x040000, 0x07ffff) AM_READ(socrates_cart_r) AM_SELECT(0xF80000) // **** *1** **** **** **** ****
- AM_RANGE(0x080000, 0x0bffff) AM_READ(read_f3) // xxxx 10** **** **** **** ****
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(socrates_state::socrates_rambank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("vram", 0) AM_MIRROR(0x30000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(socrates_state::z80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(common_rom_bank_r, common_rom_bank_w) AM_MIRROR(0x7) /* rom bank select - RW - 8 bits */
- AM_RANGE(0x08, 0x08) AM_READWRITE(common_ram_bank_r, common_ram_bank_w) AM_MIRROR(0x7) /* ram banks select - RW - 4 low bits; Format: 0b****HHLL where LL controls whether window 0 points at ram area: 0b00: 0x0000-0x3fff; 0b01: 0x4000-0x7fff; 0b10: 0x8000-0xbfff; 0b11: 0xc000-0xffff. HH controls the same thing for window 1 */
- AM_RANGE(0x10, 0x17) AM_READWRITE(read_f3, socrates_sound_w) AM_MIRROR (0x8) /* sound section:
+void socrates_state::z80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom(); /* system rom, bank 0 (fixed) */
+ map(0x4000, 0x7fff).m(m_rombank1, FUNC(address_map_bank_device::amap8)); /* banked rom space; system rom is banks 0 through F, cartridge rom is banks 10 onward, usually banks 10 through 17. area past the end of the cartridge, and the whole 10-ff area when no cartridge is inserted, reads as 0xF3 */
+ map(0x8000, 0xbfff).m(m_rambank1, FUNC(address_map_bank_device::amap8)); /* banked ram 'window' 0 */
+ map(0xc000, 0xffff).m(m_rambank2, FUNC(address_map_bank_device::amap8)); /* banked ram 'window' 1 */
+}
+
+void socrates_state::socrates_rombank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom().region("maincpu", 0).mirror(0xF00000); // xxxx 00** **** **** **** ****
+ map(0x040000, 0x07ffff).r(this, FUNC(socrates_state::socrates_cart_r)).select(0xF80000); // **** *1** **** **** **** ****
+ map(0x080000, 0x0bffff).r(this, FUNC(socrates_state::read_f3)); // xxxx 10** **** **** **** ****
+}
+
+void socrates_state::socrates_rambank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).ram().region("vram", 0).mirror(0x30000);
+}
+
+void socrates_state::z80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(this, FUNC(socrates_state::common_rom_bank_r), FUNC(socrates_state::common_rom_bank_w)).mirror(0x7); /* rom bank select - RW - 8 bits */
+ map(0x08, 0x08).rw(this, FUNC(socrates_state::common_ram_bank_r), FUNC(socrates_state::common_ram_bank_w)).mirror(0x7); /* ram banks select - RW - 4 low bits; Format: 0b****HHLL where LL controls whether window 0 points at ram area: 0b00: 0x0000-0x3fff; 0b01: 0x4000-0x7fff; 0b10: 0x8000-0xbfff; 0b11: 0xc000-0xffff. HH controls the same thing for window 1 */
+ map(0x10, 0x17).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::socrates_sound_w)).mirror(0x8); /* sound section:
0x10 - W - frequency control for channel 1 (louder channel) - 01=high pitch, ff=low; time between 1->0/0->1 transitions = (XTAL(21'477'272)/(512+256) / (freq_reg+1)) (note that this is double the actual frequency since each full low and high squarewave pulse is two transitions)
0x11 - W - frequency control for channel 2 (softer channel) - 01=high pitch, ff=low; same equation as above
0x12 - W - 0b***EVVVV enable, volume control for channel 1
@@ -1014,51 +1018,55 @@ ADDRESS_MAP_START(socrates_state::z80_io)
0xC0 produces a DMC wave read from an unknown address at around 342hz
<todo: test the others, maybe take samples?>
*/
- AM_RANGE(0x20, 0x21) AM_READWRITE(read_f3, socrates_scroll_w) AM_MIRROR(0xE)
- AM_RANGE(0x30, 0x30) AM_READWRITE(read_f3, kbmcu_reset) AM_MIRROR(0xF) /* resets the keyboard IR decoder MCU */
- AM_RANGE(0x40, 0x40) AM_READWRITE(status_and_speech, speech_command ) AM_MIRROR(0xF) /* reads status register for vblank/hblank/speech, also reads and writes speech module */
- AM_RANGE(0x50, 0x51) AM_READWRITE(keyboard_buffer_read, keyboard_buffer_update) AM_MIRROR(0xE) /* Keyboard fifo read, pop fifo on write */
- AM_RANGE(0x60, 0x60) AM_READWRITE(read_f3, reset_speech) AM_MIRROR(0xF) /* reset the speech module, or perhaps fire an NMI? */
- AM_RANGE(0x70, 0xFF) AM_READ(read_f3) // nothing mapped here afaik
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(iqunlimz_state::iqunlimz_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_DEVICE("rombank2", address_map_bank_device, amap8)
- AM_RANGE(0x4000, 0x7fff) AM_DEVICE("rombank1", address_map_bank_device, amap8)
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("rambank1", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xffff) AM_DEVICE("rambank2", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(iqunlimz_state::iqunlimz_rombank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) AM_MIRROR(0xF00000) // xxxx 00** **** **** **** ****
- AM_RANGE(0x040000, 0x07ffff) AM_READ(socrates_cart_r) AM_SELECT(0xF80000) // **** *1** **** **** **** ****
- AM_RANGE(0x080000, 0x0bffff) AM_ROM AM_REGION("maincpu", 0x40000) AM_MIRROR(0xF00000)// xxxx 10** **** **** **** ****
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(iqunlimz_state::iqunlimz_rambank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3ffff) AM_RAM AM_REGION("vram", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(iqunlimz_state::iqunlimz_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_READWRITE(common_rom_bank_r, common_rom_bank_w) AM_MIRROR(0x06)
- AM_RANGE(0x08, 0x08) AM_READWRITE(common_ram_bank_r, common_ram_bank_w) AM_MIRROR(0x07)
- AM_RANGE(0x10, 0x17) AM_WRITE(socrates_sound_w) AM_MIRROR(0x08)
- AM_RANGE(0x20, 0x21) AM_WRITE(socrates_scroll_w) AM_MIRROR(0x0E)
+ map(0x20, 0x21).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::socrates_scroll_w)).mirror(0xE);
+ map(0x30, 0x30).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::kbmcu_reset)).mirror(0xF); /* resets the keyboard IR decoder MCU */
+ map(0x40, 0x40).rw(this, FUNC(socrates_state::status_and_speech), FUNC(socrates_state::speech_command)).mirror(0xF); /* reads status register for vblank/hblank/speech, also reads and writes speech module */
+ map(0x50, 0x51).rw(this, FUNC(socrates_state::keyboard_buffer_read), FUNC(socrates_state::keyboard_buffer_update)).mirror(0xE); /* Keyboard fifo read, pop fifo on write */
+ map(0x60, 0x60).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::reset_speech)).mirror(0xF); /* reset the speech module, or perhaps fire an NMI? */
+ map(0x70, 0xFF).r(this, FUNC(socrates_state::read_f3)); // nothing mapped here afaik
+}
+
+void iqunlimz_state::iqunlimz_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).m(m_rombank2, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0x7fff).m(m_rombank1, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xbfff).m(m_rambank1, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xffff).m(m_rambank2, FUNC(address_map_bank_device::amap8));
+}
+
+void iqunlimz_state::iqunlimz_rombank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x03ffff).rom().region("maincpu", 0).mirror(0xF00000); // xxxx 00** **** **** **** ****
+ map(0x040000, 0x07ffff).r(this, FUNC(iqunlimz_state::socrates_cart_r)).select(0xF80000); // **** *1** **** **** **** ****
+ map(0x080000, 0x0bffff).rom().region("maincpu", 0x40000).mirror(0xF00000);// xxxx 10** **** **** **** ****
+}
+
+void iqunlimz_state::iqunlimz_rambank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3ffff).ram().region("vram", 0);
+}
+
+void iqunlimz_state::iqunlimz_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw(this, FUNC(iqunlimz_state::common_rom_bank_r), FUNC(iqunlimz_state::common_rom_bank_w)).mirror(0x06);
+ map(0x08, 0x08).rw(this, FUNC(iqunlimz_state::common_ram_bank_r), FUNC(iqunlimz_state::common_ram_bank_w)).mirror(0x07);
+ map(0x10, 0x17).w(this, FUNC(iqunlimz_state::socrates_sound_w)).mirror(0x08);
+ map(0x20, 0x21).w(this, FUNC(iqunlimz_state::socrates_scroll_w)).mirror(0x0E);
// 30: writes an incrementing value here, once per keypress?
// 40: some sort of serial select/reset or enable, related to 0x60
- AM_RANGE(0x50, 0x51) AM_READWRITE(keyboard_buffer_read, keyboard_buffer_update) AM_MIRROR(0xE)
+ map(0x50, 0x51).rw(this, FUNC(iqunlimz_state::keyboard_buffer_read), FUNC(iqunlimz_state::keyboard_buffer_update)).mirror(0xE);
// 60: some sort of serial read/write port, related to 0x40
- AM_RANGE(0x70, 0x73) AM_READWRITE(video_regs_r, video_regs_w) AM_MIRROR(0x0C)
- AM_RANGE(0x80, 0x81) AM_WRITENOP // LCD
- AM_RANGE(0xb1, 0xb1) AM_WRITENOP
- AM_RANGE(0xa0, 0xa0) AM_READ(status_r) AM_MIRROR(0x0F)
- AM_RANGE(0xe0, 0xe7) AM_WRITE(colors_w) AM_MIRROR(0x08)
-ADDRESS_MAP_END
+ map(0x70, 0x73).rw(this, FUNC(iqunlimz_state::video_regs_r), FUNC(iqunlimz_state::video_regs_w)).mirror(0x0C);
+ map(0x80, 0x81).nopw(); // LCD
+ map(0xb1, 0xb1).nopw();
+ map(0xa0, 0xa0).r(this, FUNC(iqunlimz_state::status_r)).mirror(0x0F);
+ map(0xe0, 0xe7).w(this, FUNC(iqunlimz_state::colors_w)).mirror(0x08);
+}
diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp
index 4ec2dc79c40..6b5b7970931 100644
--- a/src/mame/drivers/softbox.cpp
+++ b/src/mame/drivers/softbox.cpp
@@ -123,25 +123,27 @@ WRITE8_MEMBER( softbox_state::dbrg_w )
// ADDRESS_MAP( softbox_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(softbox_state::softbox_mem)
- AM_RANGE(0x0000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(Z80_TAG, 0)
-ADDRESS_MAP_END
+void softbox_state::softbox_mem(address_map &map)
+{
+ map(0x0000, 0xefff).ram();
+ map(0xf000, 0xffff).rom().region(Z80_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( softbox_io )
//-------------------------------------------------
-ADDRESS_MAP_START(softbox_state::softbox_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x08) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x09, 0x09) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(dbrg_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8255_0_TAG, i8255_device, read, write)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(I8255_1_TAG, i8255_device, read, write)
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_device, read, write)
-ADDRESS_MAP_END
+void softbox_state::softbox_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x08).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x09, 0x09).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x0c, 0x0c).w(this, FUNC(softbox_state::dbrg_w));
+ map(0x10, 0x13).rw(I8255_0_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x14, 0x17).rw(I8255_1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x18, 0x18).rw(m_hdc, FUNC(corvus_hdc_device::read), FUNC(corvus_hdc_device::write));
+}
diff --git a/src/mame/drivers/solomon.cpp b/src/mame/drivers/solomon.cpp
index 63a4c4d275c..0a87bf46148 100644
--- a/src/mame/drivers/solomon.cpp
+++ b/src/mame/drivers/solomon.cpp
@@ -49,41 +49,44 @@ WRITE8_MEMBER(solomon_state::nmi_mask_w)
m_nmi_mask = data & 1;
}
-ADDRESS_MAP_START(solomon_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(solomon_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(solomon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(solomon_colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(solomon_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xe000, 0xe07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe400, 0xe5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1")
- AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2")
- AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe603, 0xe603) AM_READ(solomon_0xe603_r)
- AM_RANGE(0xe604, 0xe604) AM_READ_PORT("DSW1")
- AM_RANGE(0xe605, 0xe605) AM_READ_PORT("DSW2")
- AM_RANGE(0xe606, 0xe606) AM_READNOP /* watchdog? */
- AM_RANGE(0xe600, 0xe600) AM_WRITE(nmi_mask_w)
- AM_RANGE(0xe604, 0xe604) AM_WRITE(solomon_flipscreen_w)
- AM_RANGE(0xe800, 0xe800) AM_WRITE(solomon_sh_command_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(solomon_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(solomon_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x30, 0x31) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void solomon_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(solomon_state::solomon_colorram_w)).share("colorram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(solomon_state::solomon_videoram_w)).share("videoram");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(solomon_state::solomon_colorram2_w)).share("colorram2");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(solomon_state::solomon_videoram2_w)).share("videoram2");
+ map(0xe000, 0xe07f).ram().share("spriteram");
+ map(0xe400, 0xe5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe600, 0xe600).portr("P1");
+ map(0xe601, 0xe601).portr("P2");
+ map(0xe602, 0xe602).portr("SYSTEM");
+ map(0xe603, 0xe603).r(this, FUNC(solomon_state::solomon_0xe603_r));
+ map(0xe604, 0xe604).portr("DSW1");
+ map(0xe605, 0xe605).portr("DSW2");
+ map(0xe606, 0xe606).nopr(); /* watchdog? */
+ map(0xe600, 0xe600).w(this, FUNC(solomon_state::nmi_mask_w));
+ map(0xe604, 0xe604).w(this, FUNC(solomon_state::solomon_flipscreen_w));
+ map(0xe800, 0xe800).w(this, FUNC(solomon_state::solomon_sh_command_w));
+ map(0xf000, 0xffff).rom();
+}
+
+void solomon_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xffff, 0xffff).nopw(); /* watchdog? */
+}
+
+void solomon_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x20, 0x21).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x30, 0x31).w("ay3", FUNC(ay8910_device::address_data_w));
+}
diff --git a/src/mame/drivers/sonson.cpp b/src/mame/drivers/sonson.cpp
index 126d7fb8fd2..eb416d6d168 100644
--- a/src/mame/drivers/sonson.cpp
+++ b/src/mame/drivers/sonson.cpp
@@ -78,30 +78,32 @@ WRITE_LINE_MEMBER(sonson_state::coin2_counter_w)
machine().bookkeeping().coin_counter_w(1, state);
}
-ADDRESS_MAP_START(sonson_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(sonson_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(sonson_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x2020, 0x207f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x3000) AM_WRITE(sonson_scrollx_w)
- AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1")
- AM_RANGE(0x3003, 0x3003) AM_READ_PORT("P2")
- AM_RANGE(0x3004, 0x3004) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3005, 0x3005) AM_READ_PORT("DSW1")
- AM_RANGE(0x3006, 0x3006) AM_READ_PORT("DSW2")
- AM_RANGE(0x3008, 0x3008) AM_WRITENOP // might be Y scroll, but the game always sets it to 0
- AM_RANGE(0x3010, 0x3010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3018, 0x301f) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sonson_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void sonson_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x13ff).ram().w(this, FUNC(sonson_state::sonson_videoram_w)).share("videoram");
+ map(0x1400, 0x17ff).ram().w(this, FUNC(sonson_state::sonson_colorram_w)).share("colorram");
+ map(0x2020, 0x207f).ram().share("spriteram");
+ map(0x3000, 0x3000).w(this, FUNC(sonson_state::sonson_scrollx_w));
+ map(0x3002, 0x3002).portr("P1");
+ map(0x3003, 0x3003).portr("P2");
+ map(0x3004, 0x3004).portr("SYSTEM");
+ map(0x3005, 0x3005).portr("DSW1");
+ map(0x3006, 0x3006).portr("DSW2");
+ map(0x3008, 0x3008).nopw(); // might be Y scroll, but the game always sets it to 0
+ map(0x3010, 0x3010).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3018, 0x301f).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x4000, 0xffff).rom();
+}
+
+void sonson_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x4000, 0x4001).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/sorcerer.cpp b/src/mame/drivers/sorcerer.cpp
index f1dfa212191..f3e8da751dd 100644
--- a/src/mame/drivers/sorcerer.cpp
+++ b/src/mame/drivers/sorcerer.cpp
@@ -168,39 +168,42 @@ NOTES (2016-06-06)
#include "speaker.h"
-ADDRESS_MAP_START(sorcerer_state::sorcerer_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
- AM_RANGE(0x0800, 0xbfff) AM_RAM
+void sorcerer_state::sorcerer_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0xbfff).ram();
//AM_RANGE(0xc000, 0xdfff) // mapped by the cartslot
- AM_RANGE(0xe000, 0xefff) AM_ROM /* rom pac and bios */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_REGION("maincpu", 0xf000) /* screen ram */
- AM_RANGE(0xf800, 0xfbff) AM_ROM /* char rom */
- AM_RANGE(0xfc00, 0xffff) AM_RAM AM_REGION("maincpu", 0xfc00) /* programmable chars */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sorcerer_state::sorcererd_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
- AM_RANGE(0x0800, 0xbbff) AM_RAM
- AM_RANGE(0xbc00, 0xbcff) AM_ROM
- AM_RANGE(0xbe00, 0xbe03) AM_DEVREADWRITE("fdc", micropolis_device, read, write)
+ map(0xe000, 0xefff).rom(); /* rom pac and bios */
+ map(0xf000, 0xf7ff).ram().region("maincpu", 0xf000); /* screen ram */
+ map(0xf800, 0xfbff).rom(); /* char rom */
+ map(0xfc00, 0xffff).ram().region("maincpu", 0xfc00); /* programmable chars */
+}
+
+void sorcerer_state::sorcererd_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0xbbff).ram();
+ map(0xbc00, 0xbcff).rom();
+ map(0xbe00, 0xbe03).rw("fdc", FUNC(micropolis_device::read), FUNC(micropolis_device::write));
//AM_RANGE(0xc000, 0xdfff) // mapped by the cartslot
- AM_RANGE(0xe000, 0xefff) AM_ROM /* rom pac and bios */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_REGION("maincpu", 0xf000) /* screen ram */
- AM_RANGE(0xf800, 0xfbff) AM_ROM /* char rom */
- AM_RANGE(0xfc00, 0xffff) AM_RAM AM_REGION("maincpu", 0xfc00) /* programmable chars */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sorcerer_state::sorcerer_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xfc, 0xfc) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xfd, 0xfd) AM_READWRITE( sorcerer_fd_r, sorcerer_fd_w )
- AM_RANGE(0xfe, 0xfe) AM_READWRITE( sorcerer_fe_r, sorcerer_fe_w )
- AM_RANGE(0xff, 0xff) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0xff, 0xff) AM_WRITE( sorcerer_ff_w )
-ADDRESS_MAP_END
+ map(0xe000, 0xefff).rom(); /* rom pac and bios */
+ map(0xf000, 0xf7ff).ram().region("maincpu", 0xf000); /* screen ram */
+ map(0xf800, 0xfbff).rom(); /* char rom */
+ map(0xfc00, 0xffff).ram().region("maincpu", 0xfc00); /* programmable chars */
+}
+
+void sorcerer_state::sorcerer_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xfc, 0xfc).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xfd, 0xfd).rw(this, FUNC(sorcerer_state::sorcerer_fd_r), FUNC(sorcerer_state::sorcerer_fd_w));
+ map(0xfe, 0xfe).rw(this, FUNC(sorcerer_state::sorcerer_fe_r), FUNC(sorcerer_state::sorcerer_fe_w));
+ map(0xff, 0xff).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0xff, 0xff).w(this, FUNC(sorcerer_state::sorcerer_ff_w));
+}
static INPUT_PORTS_START(sorcerer)
PORT_START("VS")
diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp
index 76f111bdb52..18d11a2c99a 100644
--- a/src/mame/drivers/sothello.cpp
+++ b/src/mame/drivers/sothello.cpp
@@ -166,28 +166,30 @@ READ8_MEMBER(sothello_state::soundcpu_status_r)
return m_soundcpu_busy;
}
-ADDRESS_MAP_START(sothello_state::maincpu_mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_MIRROR(0x1800) AM_SHARE("mainsub")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sothello_state::maincpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x0f) AM_READ_PORT("INPUT1")
- AM_RANGE( 0x10, 0x1f) AM_READ_PORT("INPUT2")
- AM_RANGE( 0x20, 0x2f) AM_READ_PORT("SYSTEM")
- AM_RANGE( 0x30, 0x30) AM_READ(subcpu_halt_set)
- AM_RANGE( 0x31, 0x31) AM_READ(subcpu_halt_clear)
- AM_RANGE( 0x32, 0x32) AM_READ(subcpu_comm_status)
- AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r)
- AM_RANGE( 0x40, 0x4f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w)
- AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
+void sothello_state::maincpu_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+ map(0x8000, 0xbfff).bankr("mainbank");
+ map(0xc000, 0xc7ff).ram().mirror(0x1800).share("mainsub");
+ map(0xe000, 0xffff).ram();
+}
+
+void sothello_state::maincpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).portr("INPUT1");
+ map(0x10, 0x1f).portr("INPUT2");
+ map(0x20, 0x2f).portr("SYSTEM");
+ map(0x30, 0x30).r(this, FUNC(sothello_state::subcpu_halt_set));
+ map(0x31, 0x31).r(this, FUNC(sothello_state::subcpu_halt_clear));
+ map(0x32, 0x32).r(this, FUNC(sothello_state::subcpu_comm_status));
+ map(0x33, 0x33).r(this, FUNC(sothello_state::soundcpu_status_r));
+ map(0x40, 0x4f).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x50, 0x50).w(this, FUNC(sothello_state::bank_w));
+ map(0x60, 0x61).mirror(0x02).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
/* not sure, but the A1 line is ignored, code @ $8b8 */
- AM_RANGE( 0x70, 0x73) AM_DEVREADWRITE( "v9938", v9938_device, read, write )
-ADDRESS_MAP_END
+ map(0x70, 0x73).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+}
/* sound Z80 */
@@ -223,20 +225,22 @@ WRITE8_MEMBER(sothello_state::soundcpu_int_clear_w)
m_soundcpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(sothello_state::soundcpu_mem_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM AM_REGION("soundcpu", 0)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sothello_state::soundcpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm_data_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(msm_cfg_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(soundcpu_busyflag_set_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(soundcpu_busyflag_reset_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(soundcpu_int_clear_w)
-ADDRESS_MAP_END
+void sothello_state::soundcpu_mem_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom().region("soundcpu", 0);
+ map(0xf800, 0xffff).ram();
+}
+
+void sothello_state::soundcpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w(this, FUNC(sothello_state::msm_data_w));
+ map(0x02, 0x02).w(this, FUNC(sothello_state::msm_cfg_w));
+ map(0x03, 0x03).w(this, FUNC(sothello_state::soundcpu_busyflag_set_w));
+ map(0x04, 0x04).w(this, FUNC(sothello_state::soundcpu_busyflag_reset_w));
+ map(0x05, 0x05).w(this, FUNC(sothello_state::soundcpu_int_clear_w));
+}
/* sub 6809 */
@@ -263,12 +267,13 @@ READ8_MEMBER(sothello_state::subcpu_status_r)
return 0;
}
-ADDRESS_MAP_START(sothello_state::subcpu_mem_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(subcpu_status_r, subcpu_status_w)
- AM_RANGE(0x2000, 0x77ff) AM_RAM
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("mainsub") /* upper 0x800 of 6264 is shared with main cpu */
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("subcpu", 0)
-ADDRESS_MAP_END
+void sothello_state::subcpu_mem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(sothello_state::subcpu_status_r), FUNC(sothello_state::subcpu_status_w));
+ map(0x2000, 0x77ff).ram();
+ map(0x7800, 0x7fff).ram().share("mainsub"); /* upper 0x800 of 6264 is shared with main cpu */
+ map(0x8000, 0xffff).rom().region("subcpu", 0);
+}
static INPUT_PORTS_START( sothello )
PORT_START("INPUT1")
diff --git a/src/mame/drivers/spacefb.cpp b/src/mame/drivers/spacefb.cpp
index 6e632704d01..785814b93aa 100644
--- a/src/mame/drivers/spacefb.cpp
+++ b/src/mame/drivers/spacefb.cpp
@@ -206,19 +206,21 @@ void spacefb_state::machine_reset()
*
*************************************/
-ADDRESS_MAP_START(spacefb_state::spacefb_main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x3c00) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_NOP
-ADDRESS_MAP_END
+void spacefb_state::spacefb_main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).noprw();
+ map(0x8000, 0x83ff).mirror(0x3c00).ram().share("videoram");
+ map(0xc000, 0xc7ff).mirror(0x3000).ram();
+ map(0xc800, 0xcfff).mirror(0x3000).noprw();
+}
-ADDRESS_MAP_START(spacefb_state::spacefb_audio_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3ff)
- AM_RANGE(0x0000, 0x03ff) AM_ROM
-ADDRESS_MAP_END
+void spacefb_state::spacefb_audio_map(address_map &map)
+{
+ map.global_mask(0x3ff);
+ map(0x0000, 0x03ff).rom();
+}
@@ -228,19 +230,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(spacefb_state::spacefb_main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW")
- AM_RANGE(0x04, 0x07) AM_READNOP /* yes, this is correct (1-of-8 decoder) */
-
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_WRITE(port_0_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_WRITE(port_1_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_WRITE(port_2_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_WRITENOP
-ADDRESS_MAP_END
+void spacefb_state::spacefb_main_io_map(address_map &map)
+{
+ map.global_mask(0x7);
+ map(0x00, 0x00).portr("P1");
+ map(0x01, 0x01).portr("P2");
+ map(0x02, 0x02).portr("SYSTEM");
+ map(0x03, 0x03).portr("DSW");
+ map(0x04, 0x07).nopr(); /* yes, this is correct (1-of-8 decoder) */
+
+ map(0x00, 0x00).mirror(0x04).w(this, FUNC(spacefb_state::port_0_w));
+ map(0x01, 0x01).mirror(0x04).w(this, FUNC(spacefb_state::port_1_w));
+ map(0x02, 0x02).mirror(0x04).w(this, FUNC(spacefb_state::port_2_w));
+ map(0x03, 0x03).mirror(0x04).nopw();
+}
diff --git a/src/mame/drivers/spaceg.cpp b/src/mame/drivers/spaceg.cpp
index 75415c13ac5..fe2d5cf6f59 100644
--- a/src/mame/drivers/spaceg.cpp
+++ b/src/mame/drivers/spaceg.cpp
@@ -424,33 +424,34 @@ WRITE8_MEMBER(spaceg_state::sound3_w)
*
*************************************/
-ADDRESS_MAP_START(spaceg_state::spaceg_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3000, 0x3fff) AM_ROM
- AM_RANGE(0x7000, 0x77ff) AM_RAM
+void spaceg_state::spaceg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x3fff).rom();
+ map(0x7000, 0x77ff).ram();
- AM_RANGE(0xa000, 0xbfff) AM_RAM_READ(colorram_r) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(zvideoram_w) AM_SHARE("videoram")
+ map(0xa000, 0xbfff).ram().r(this, FUNC(spaceg_state::colorram_r)).share("colorram");
+ map(0xc000, 0xdfff).ram().w(this, FUNC(spaceg_state::zvideoram_w)).share("videoram");
- AM_RANGE(0x9400, 0x9400) AM_WRITEONLY AM_SHARE("io9400") /* gfx ctrl */
- AM_RANGE(0x9401, 0x9401) AM_WRITEONLY AM_SHARE("io9401") /* gfx ctrl */
+ map(0x9400, 0x9400).writeonly().share("io9400"); /* gfx ctrl */
+ map(0x9401, 0x9401).writeonly().share("io9401"); /* gfx ctrl */
/* 9402 -
bits 0 and 1 probably control the lamps under the player 1 and player 2 start buttons
bit 2 - unknown -
bit 3 is probably a flip screen
bit 7 - unknown - set to 1 during the gameplay (coinlock ?)
*/
- AM_RANGE(0x9402, 0x9402) AM_WRITENOP
- AM_RANGE(0x9405, 0x9405) AM_WRITE(sound1_w)
- AM_RANGE(0x9406, 0x9406) AM_WRITE(sound2_w)
- AM_RANGE(0x9407, 0x9407) AM_WRITE(sound3_w)
-
- AM_RANGE(0x9800, 0x9800) AM_READ_PORT("9800")
- AM_RANGE(0x9801, 0x9801) AM_READ_PORT("9801")
- AM_RANGE(0x9802, 0x9802) AM_READ_PORT("9802")
- AM_RANGE(0x9805, 0x9805) AM_READ_PORT("9805")
- AM_RANGE(0x9806, 0x9806) AM_READ_PORT("9806")
-ADDRESS_MAP_END
+ map(0x9402, 0x9402).nopw();
+ map(0x9405, 0x9405).w(this, FUNC(spaceg_state::sound1_w));
+ map(0x9406, 0x9406).w(this, FUNC(spaceg_state::sound2_w));
+ map(0x9407, 0x9407).w(this, FUNC(spaceg_state::sound3_w));
+
+ map(0x9800, 0x9800).portr("9800");
+ map(0x9801, 0x9801).portr("9801");
+ map(0x9802, 0x9802).portr("9802");
+ map(0x9805, 0x9805).portr("9805");
+ map(0x9806, 0x9806).portr("9806");
+}
diff --git a/src/mame/drivers/spartanxtec.cpp b/src/mame/drivers/spartanxtec.cpp
index c5915a83259..d8f3af2b7f4 100644
--- a/src/mame/drivers/spartanxtec.cpp
+++ b/src/mame/drivers/spartanxtec.cpp
@@ -177,29 +177,30 @@ WRITE8_MEMBER(spartanxtec_state::irq_ack)
}
-ADDRESS_MAP_START(spartanxtec_state::spartanxtec_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("spriteram")
+void spartanxtec_state::spartanxtec_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc400, 0xc7ff).ram().share("spriteram");
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+ map(0x8000, 0x8000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0x8100, 0x8100) AM_READ_PORT("DSW1")
- AM_RANGE(0x8101, 0x8101) AM_READ_PORT("DSW2")
- AM_RANGE(0x8102, 0x8102) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x8103, 0x8103) AM_READ_PORT("P1")
+ map(0x8100, 0x8100).portr("DSW1");
+ map(0x8101, 0x8101).portr("DSW2");
+ map(0x8102, 0x8102).portr("SYSTEM");
+ map(0x8103, 0x8103).portr("P1");
- AM_RANGE(0x8200, 0x8200) AM_WRITE(irq_ack)
+ map(0x8200, 0x8200).w(this, FUNC(spartanxtec_state::irq_ack));
- AM_RANGE(0xA801, 0xA801) AM_WRITE(a801_w)
+ map(0xA801, 0xA801).w(this, FUNC(spartanxtec_state::a801_w));
- AM_RANGE(0xa900, 0xa903) AM_RAM AM_SHARE("scroll_lo")
- AM_RANGE(0xa980, 0xa983) AM_RAM AM_SHARE("scroll_hi")
+ map(0xa900, 0xa903).ram().share("scroll_lo");
+ map(0xa980, 0xa983).ram().share("scroll_hi");
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_SHARE("m62_tileram")
+ map(0xd000, 0xdfff).ram().w(this, FUNC(spartanxtec_state::kungfum_tileram_w)).share("m62_tileram");
- AM_RANGE(0xe000, 0xefff) AM_RAM
+ map(0xe000, 0xefff).ram();
-ADDRESS_MAP_END
+}
@@ -209,27 +210,29 @@ WRITE8_MEMBER(spartanxtec_state::sound_irq_ack)
}
-ADDRESS_MAP_START(spartanxtec_state::spartanxtec_sound_map)
+void spartanxtec_state::spartanxtec_sound_map(address_map &map)
+{
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
+ map(0x0000, 0x0fff).rom();
+ map(0x8000, 0x83ff).ram();
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
-ADDRESS_MAP_START(spartanxtec_state::spartanxtec_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_WRITE( sound_irq_ack )
+void spartanxtec_state::spartanxtec_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).w(this, FUNC(spartanxtec_state::sound_irq_ack));
- AM_RANGE(0x0012, 0x0013) AM_DEVWRITE("ay3", ay8912_device, address_data_w)
- AM_RANGE(0x0012, 0x0012) AM_DEVREAD("ay3", ay8912_device, data_r)
+ map(0x0012, 0x0013).w("ay3", FUNC(ay8912_device::address_data_w));
+ map(0x0012, 0x0012).r("ay3", FUNC(ay8912_device::data_r));
- AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8912_device, address_data_w)
- AM_RANGE(0x0014, 0x0014) AM_DEVREAD("ay1", ay8912_device, data_r)
+ map(0x0014, 0x0015).w("ay1", FUNC(ay8912_device::address_data_w));
+ map(0x0014, 0x0014).r("ay1", FUNC(ay8912_device::data_r));
- AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8912_device, address_data_w)
- AM_RANGE(0x0018, 0x0018) AM_DEVREAD("ay2", ay8912_device, data_r)
-ADDRESS_MAP_END
+ map(0x0018, 0x0019).w("ay2", FUNC(ay8912_device::address_data_w));
+ map(0x0018, 0x0018).r("ay2", FUNC(ay8912_device::data_r));
+}
diff --git a/src/mame/drivers/spbactn.cpp b/src/mame/drivers/spbactn.cpp
index ae22ada2c5f..dd9df6c5603 100644
--- a/src/mame/drivers/spbactn.cpp
+++ b/src/mame/drivers/spbactn.cpp
@@ -146,97 +146,101 @@ WRITE16_MEMBER(spbactn_state::main_irq_ack_w)
m_maincpu->set_input_line(M68K_IRQ_3, CLEAR_LINE);
}
-ADDRESS_MAP_START(spbactn_state::spbactn_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram
- AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
- AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x80000, 0x827ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0")
- AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1")
- AM_RANGE(0x90020, 0x90021) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x90030, 0x90031) AM_READ_PORT("DSW1")
- AM_RANGE(0x90040, 0x90041) AM_READ_PORT("DSW2")
+void spbactn_state::spbactn_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x40000, 0x43fff).ram(); // main ram
+ map(0x50000, 0x50fff).ram().share("spvideoram");
+ map(0x60000, 0x67fff).ram().w(this, FUNC(spbactn_state::fg_videoram_w)).share("fgvideoram");
+ map(0x70000, 0x77fff).ram().w(this, FUNC(spbactn_state::bg_videoram_w)).share("bgvideoram");
+ map(0x80000, 0x827ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x90000, 0x90001).portr("IN0");
+ map(0x90010, 0x90011).portr("IN1");
+ map(0x90020, 0x90021).portr("SYSTEM");
+ map(0x90030, 0x90031).portr("DSW1");
+ map(0x90040, 0x90041).portr("DSW2");
/* this are an awful lot of unknowns */
- AM_RANGE(0x90000, 0x90001) AM_WRITENOP
- AM_RANGE(0x90010, 0x90011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x90020, 0x90021) AM_WRITE(main_irq_ack_w)
- AM_RANGE(0x90030, 0x90031) AM_WRITENOP
- AM_RANGE(0x90050, 0x90051) AM_WRITENOP
-
- AM_RANGE(0x90080, 0x90081) AM_WRITENOP
- AM_RANGE(0x90090, 0x90091) AM_WRITENOP
- AM_RANGE(0x900a0, 0x900a1) AM_WRITENOP
- AM_RANGE(0x900b0, 0x900b1) AM_WRITENOP
- AM_RANGE(0x900c0, 0x900c1) AM_WRITENOP
- AM_RANGE(0x900d0, 0x900d1) AM_WRITENOP
- AM_RANGE(0x900e0, 0x900e1) AM_WRITENOP
- AM_RANGE(0x900f0, 0x900f1) AM_WRITENOP
-
- AM_RANGE(0xa0000, 0xa0001) AM_WRITENOP
- AM_RANGE(0xa0004, 0xa0005) AM_WRITENOP
- AM_RANGE(0xa0008, 0xa0009) AM_WRITENOP
- AM_RANGE(0xa000c, 0xa000d) AM_WRITENOP
- AM_RANGE(0xa0010, 0xa0011) AM_WRITENOP
-
- AM_RANGE(0xa0100, 0xa0101) AM_WRITENOP
- AM_RANGE(0xa0104, 0xa0105) AM_WRITENOP
- AM_RANGE(0xa0108, 0xa0109) AM_WRITENOP
- AM_RANGE(0xa010c, 0xa010d) AM_WRITENOP
- AM_RANGE(0xa0110, 0xa0111) AM_WRITENOP
-
- AM_RANGE(0xa0200, 0xa0201) AM_WRITENOP
- AM_RANGE(0xa0202, 0xa0203) AM_WRITENOP
- AM_RANGE(0xa0204, 0xa0205) AM_WRITENOP
- AM_RANGE(0xa0206, 0xa0207) AM_WRITENOP
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(spbactn_state::spbactnp_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram
- AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
- AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x80000, 0x827ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // yes R and G are swapped vs. the released version
-
- AM_RANGE(0x90002, 0x90003) AM_WRITE(main_irq_ack_w)
- AM_RANGE(0x90006, 0x90007) AM_WRITE(spbatnp_90006_w)
- AM_RANGE(0x9000a, 0x9000b) AM_WRITE(spbatnp_9000a_w)
- AM_RANGE(0x9000c, 0x9000d) AM_WRITE(spbatnp_9000c_w)
- AM_RANGE(0x9000e, 0x9000f) AM_WRITE(spbatnp_9000e_w)
-
- AM_RANGE(0x90124, 0x90125) AM_WRITE(spbatnp_90124_w) // bg scroll
- AM_RANGE(0x9012c, 0x9012d) AM_WRITE(spbatnp_9012c_w) // bg scroll
-
-
-
- AM_RANGE(0x90000, 0x900ff) AM_READ(temp_read_handler_r) // temp
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spbactn_state::spbactn_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
-
- AM_RANGE(0xfc00, 0xfc00) AM_READNOP AM_WRITENOP /* irq ack ?? */
- AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(spbactn_state::spbactnp_extra_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("extraram2")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE( extraram_w ) AM_SHARE("extraram")
- AM_RANGE(0xd200, 0xd200) AM_RAM
-ADDRESS_MAP_END
+ map(0x90000, 0x90001).nopw();
+ map(0x90011, 0x90011).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x90020, 0x90021).w(this, FUNC(spbactn_state::main_irq_ack_w));
+ map(0x90030, 0x90031).nopw();
+ map(0x90050, 0x90051).nopw();
+
+ map(0x90080, 0x90081).nopw();
+ map(0x90090, 0x90091).nopw();
+ map(0x900a0, 0x900a1).nopw();
+ map(0x900b0, 0x900b1).nopw();
+ map(0x900c0, 0x900c1).nopw();
+ map(0x900d0, 0x900d1).nopw();
+ map(0x900e0, 0x900e1).nopw();
+ map(0x900f0, 0x900f1).nopw();
+
+ map(0xa0000, 0xa0001).nopw();
+ map(0xa0004, 0xa0005).nopw();
+ map(0xa0008, 0xa0009).nopw();
+ map(0xa000c, 0xa000d).nopw();
+ map(0xa0010, 0xa0011).nopw();
+
+ map(0xa0100, 0xa0101).nopw();
+ map(0xa0104, 0xa0105).nopw();
+ map(0xa0108, 0xa0109).nopw();
+ map(0xa010c, 0xa010d).nopw();
+ map(0xa0110, 0xa0111).nopw();
+
+ map(0xa0200, 0xa0201).nopw();
+ map(0xa0202, 0xa0203).nopw();
+ map(0xa0204, 0xa0205).nopw();
+ map(0xa0206, 0xa0207).nopw();
+}
+
+
+
+void spbactn_state::spbactnp_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rom();
+ map(0x40000, 0x43fff).ram(); // main ram
+ map(0x50000, 0x50fff).ram().share("spvideoram");
+ map(0x60000, 0x67fff).ram().w(this, FUNC(spbactn_state::fg_videoram_w)).share("fgvideoram");
+ map(0x70000, 0x77fff).ram().w(this, FUNC(spbactn_state::bg_videoram_w)).share("bgvideoram");
+ map(0x80000, 0x827ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // yes R and G are swapped vs. the released version
+
+ map(0x90002, 0x90003).w(this, FUNC(spbactn_state::main_irq_ack_w));
+ map(0x90006, 0x90007).w(this, FUNC(spbactn_state::spbatnp_90006_w));
+ map(0x9000a, 0x9000b).w(this, FUNC(spbactn_state::spbatnp_9000a_w));
+ map(0x9000c, 0x9000d).w(this, FUNC(spbactn_state::spbatnp_9000c_w));
+ map(0x9000e, 0x9000f).w(this, FUNC(spbactn_state::spbatnp_9000e_w));
+
+ map(0x90124, 0x90125).w(this, FUNC(spbactn_state::spbatnp_90124_w)); // bg scroll
+ map(0x9012c, 0x9012d).w(this, FUNC(spbactn_state::spbatnp_9012c_w)); // bg scroll
+
+
+
+ map(0x90000, 0x900ff).r(this, FUNC(spbactn_state::temp_read_handler_r)); // temp
+
+}
+
+void spbactn_state::spbactn_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write));
+
+ map(0xfc00, 0xfc00).nopr().nopw(); /* irq ack ?? */
+ map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+
+
+void spbactn_state::spbactnp_extra_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram().share("extraram2");
+ map(0xe000, 0xefff).ram();
+ map(0xd000, 0xd1ff).ram().w(this, FUNC(spbactn_state::extraram_w)).share("extraram");
+ map(0xd200, 0xd200).ram();
+}
diff --git a/src/mame/drivers/spc1000.cpp b/src/mame/drivers/spc1000.cpp
index 0949b141643..4a064b6de32 100644
--- a/src/mame/drivers/spc1000.cpp
+++ b/src/mame/drivers/spc1000.cpp
@@ -200,11 +200,12 @@ private:
required_device<centronics_device> m_centronics;
};
-ADDRESS_MAP_START(spc1000_state::spc1000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank4")
-ADDRESS_MAP_END
+void spc1000_state::spc1000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankr("bank1").bankw("bank2");
+ map(0x8000, 0xffff).bankr("bank3").bankw("bank4");
+}
WRITE8_MEMBER(spc1000_state::iplk_w)
{
@@ -264,17 +265,18 @@ READ8_MEMBER( spc1000_state::keyboard_r )
}
-ADDRESS_MAP_START(spc1000_state::spc1000_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(gmode_r, gmode_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay8910", ay8910_device, address_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(cass_w)
- AM_RANGE(0x8000, 0x9fff) AM_READ(keyboard_r)
- AM_RANGE(0xa000, 0xa000) AM_READWRITE(iplk_r, iplk_w)
- AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("ext1", spc1000_exp_device, read, write)
-ADDRESS_MAP_END
+void spc1000_state::spc1000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x3fff).rw(this, FUNC(spc1000_state::gmode_r), FUNC(spc1000_state::gmode_w));
+ map(0x4000, 0x4000).w("ay8910", FUNC(ay8910_device::address_w));
+ map(0x4001, 0x4001).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x6000, 0x6000).w(this, FUNC(spc1000_state::cass_w));
+ map(0x8000, 0x9fff).r(this, FUNC(spc1000_state::keyboard_r));
+ map(0xa000, 0xa000).rw(this, FUNC(spc1000_state::iplk_r), FUNC(spc1000_state::iplk_w));
+ map(0xc000, 0xdfff).rw("ext1", FUNC(spc1000_exp_device::read), FUNC(spc1000_exp_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( spc1000 )
diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp
index 39d7a66077e..13ffd5659c9 100644
--- a/src/mame/drivers/spc1500.cpp
+++ b/src/mame/drivers/spc1500.cpp
@@ -679,12 +679,13 @@ READ8_MEMBER( spc1500_state::io_r)
return 0xff;
}
-ADDRESS_MAP_START(spc1500_state::spc1500_double_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x2000, 0xffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0000, 0x17ff) AM_RAM AM_SHARE("pcgram")
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, double_w)
-ADDRESS_MAP_END
+void spc1500_state::spc1500_double_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x2000, 0xffff).ram().share("videoram");
+ map(0x0000, 0x17ff).ram().share("pcgram");
+ map(0x0000, 0xffff).rw(this, FUNC(spc1500_state::io_r), FUNC(spc1500_state::double_w));
+}
/* Input ports */
static INPUT_PORTS_START( spc1500 )
@@ -814,11 +815,12 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x80, IP_ACTIVE_HIGH,IPT_UNUSED) // DIP SW3 for 200/400 line
INPUT_PORTS_END
-ADDRESS_MAP_START(spc1500_state::spc1500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_READWRITE_BANK("bank4")
-ADDRESS_MAP_END
+void spc1500_state::spc1500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).bankr("bank1").bankw("bank2");
+ map(0x8000, 0xffff).bankrw("bank4");
+}
void spc1500_state::machine_start()
{
diff --git a/src/mame/drivers/spcforce.cpp b/src/mame/drivers/spcforce.cpp
index 2bce652320d..36c28564b0c 100644
--- a/src/mame/drivers/spcforce.cpp
+++ b/src/mame/drivers/spcforce.cpp
@@ -124,21 +124,23 @@ WRITE_LINE_MEMBER(spcforce_state::unknown_w)
// written very frequently
}
-ADDRESS_MAP_START(spcforce_state::spcforce_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x7001, 0x7001) AM_READ_PORT("P1") AM_WRITE(soundtrigger_w)
- AM_RANGE(0x7002, 0x7002) AM_READ_PORT("P2") AM_WRITE(misc_outputs_w)
- AM_RANGE(0x7008, 0x700f) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("scrollram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spcforce_state::spcforce_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
-ADDRESS_MAP_END
+void spcforce_state::spcforce_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x7000, 0x7000).portr("DSW").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x7001, 0x7001).portr("P1").w(this, FUNC(spcforce_state::soundtrigger_w));
+ map(0x7002, 0x7002).portr("P2").w(this, FUNC(spcforce_state::misc_outputs_w));
+ map(0x7008, 0x700f).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x8000, 0x83ff).ram().share("videoram");
+ map(0x9000, 0x93ff).ram().share("colorram");
+ map(0xa000, 0xa3ff).ram().share("scrollram");
+}
+
+void spcforce_state::spcforce_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+}
static INPUT_PORTS_START( spcforce )
diff --git a/src/mame/drivers/spdodgeb.cpp b/src/mame/drivers/spdodgeb.cpp
index bb091f32371..3dcbe6bd7b7 100644
--- a/src/mame/drivers/spdodgeb.cpp
+++ b/src/mame/drivers/spdodgeb.cpp
@@ -236,30 +236,32 @@ WRITE8_MEMBER(spdodgeb_state::mcu63701_w)
-ADDRESS_MAP_START(spdodgeb_state::spdodgeb_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x10ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") //AM_WRITENOP
- AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW") //AM_WRITENOP
- AM_RANGE(0x3002, 0x3002) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+void spdodgeb_state::spdodgeb_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x10ff).writeonly().share("spriteram");
+ map(0x2000, 0x2fff).ram().w(this, FUNC(spdodgeb_state::videoram_w)).share("videoram");
+ map(0x3000, 0x3000).portr("IN0"); //AM_WRITENOP
+ map(0x3001, 0x3001).portr("DSW"); //AM_WRITENOP
+ map(0x3002, 0x3002).w(m_soundlatch, FUNC(generic_latch_8_device::write));
// AM_RANGE(0x3003, 0x3003) AM_WRITENOP
- AM_RANGE(0x3004, 0x3004) AM_WRITE(scrollx_lo_w)
+ map(0x3004, 0x3004).w(this, FUNC(spdodgeb_state::scrollx_lo_w));
// AM_RANGE(0x3005, 0x3005) AM_WRITENOP /* mcu63701_output_w */
- AM_RANGE(0x3006, 0x3006) AM_WRITE(ctrl_w) /* scroll hi, flip screen, bank switch, palette select */
- AM_RANGE(0x3800, 0x3800) AM_WRITE(mcu63701_w)
- AM_RANGE(0x3801, 0x3805) AM_READ(mcu63701_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spdodgeb_state::spdodgeb_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
+ map(0x3006, 0x3006).w(this, FUNC(spdodgeb_state::ctrl_w)); /* scroll hi, flip screen, bank switch, palette select */
+ map(0x3800, 0x3800).w(this, FUNC(spdodgeb_state::mcu63701_w));
+ map(0x3801, 0x3805).r(this, FUNC(spdodgeb_state::mcu63701_r));
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void spdodgeb_state::spdodgeb_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x2800, 0x2801).w("ymsnd", FUNC(ym3812_device::write));
+ map(0x3800, 0x3807).w(this, FUNC(spdodgeb_state::spd_adpcm_w));
+ map(0x8000, 0xffff).rom().region("audiocpu", 0);
+}
CUSTOM_INPUT_MEMBER(spdodgeb_state::mcu63705_busy_r)
diff --git a/src/mame/drivers/spec128.cpp b/src/mame/drivers/spec128.cpp
index 4c0d9c1f1a5..9e9a28de101 100644
--- a/src/mame/drivers/spec128.cpp
+++ b/src/mame/drivers/spec128.cpp
@@ -233,20 +233,22 @@ READ8_MEMBER( spectrum_state::spectrum_128_ula_r )
return vpos<193 ? m_screen_location[0x1800|(vpos&0xf8)<<2]:0xff;
}
-ADDRESS_MAP_START(spectrum_state::spectrum_128_io)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xfffe)
- AM_RANGE(0x0001, 0x0001) AM_WRITE(spectrum_128_port_7ffd_w) AM_MIRROR(0x7ffc) // (A15 | A1) == 0, note: reading from this port does write to it by value from data bus
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0x0001, 0x0001) AM_READ(spectrum_128_ula_r) AM_MIRROR(0xfffe)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spectrum_state::spectrum_128_mem)
- AM_RANGE( 0x0000, 0x3fff) AM_READWRITE(spectrum_128_bank1_r, spectrum_128_bank1_w)
- AM_RANGE( 0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE( 0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE( 0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
+void spectrum_state::spectrum_128_io(address_map &map)
+{
+ map(0x0000, 0x0000).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
+ map(0x0001, 0x0001).w(this, 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(this, FUNC(spectrum_state::spectrum_128_ula_r)).mirror(0xfffe);
+}
+
+void spectrum_state::spectrum_128_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(spectrum_state::spectrum_128_bank1_r), FUNC(spectrum_state::spectrum_128_bank1_w));
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
MACHINE_RESET_MEMBER(spectrum_state,spectrum_128)
{
diff --git a/src/mame/drivers/special.cpp b/src/mame/drivers/special.cpp
index 84afade68c7..b66dfcc44bb 100644
--- a/src/mame/drivers/special.cpp
+++ b/src/mame/drivers/special.cpp
@@ -19,53 +19,58 @@
/* Address maps */
-ADDRESS_MAP_START(special_state::specialist_mem)
- AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x3000, 0x8fff ) AM_RAM // RAM
- AM_RANGE( 0x9000, 0xbfff ) AM_RAM AM_SHARE("videoram") // Video RAM
- AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM
- AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(special_state::specialp_mem)
- AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x3000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0x8000, 0xbfff ) AM_RAM AM_SHARE("videoram") // Video RAM
- AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM
- AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(special_state::erik_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x4000, 0x8fff ) AM_RAMBANK("bank2")
- AM_RANGE( 0x9000, 0xbfff ) AM_RAMBANK("bank3")
- AM_RANGE( 0xc000, 0xefff ) AM_RAMBANK("bank4")
- AM_RANGE( 0xf000, 0xf7ff ) AM_RAMBANK("bank5")
- AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank6")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(special_state::erik_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf1, 0xf1) AM_READWRITE(erik_rr_reg_r, erik_rr_reg_w)
- AM_RANGE(0xf2, 0xf2) AM_READWRITE(erik_rc_reg_r, erik_rc_reg_w)
- AM_RANGE(0xf3, 0xf3) AM_READWRITE(erik_disk_reg_r, erik_disk_reg_w)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("fd1793", fd1793_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(special_state::specimx_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x8fff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x9000, 0xbfff ) AM_RAMBANK("bank2")
- AM_RANGE( 0xc000, 0xffbf ) AM_RAMBANK("bank3")
- AM_RANGE( 0xffc0, 0xffdf ) AM_RAMBANK("bank4")
- AM_RANGE( 0xffe0, 0xffe3 ) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE( 0xffe4, 0xffe7 ) AM_RAM //external 8255
- AM_RANGE( 0xffe8, 0xffeb ) AM_DEVREADWRITE("fd1793", fd1793_device, read, write)
- AM_RANGE( 0xffec, 0xffef ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE( 0xfff0, 0xfff3 ) AM_READWRITE(specimx_disk_ctrl_r, specimx_disk_ctrl_w)
- AM_RANGE( 0xfff8, 0xfffb ) AM_READWRITE(specimx_video_color_r,specimx_video_color_w)
- AM_RANGE( 0xfffc, 0xffff ) AM_WRITE(specimx_select_bank)
-ADDRESS_MAP_END
+void special_state::specialist_mem(address_map &map)
+{
+ map(0x0000, 0x2fff).bankrw("bank1"); // First bank
+ map(0x3000, 0x8fff).ram(); // RAM
+ map(0x9000, 0xbfff).ram().share("videoram"); // Video RAM
+ map(0xc000, 0xefff).rom(); // System ROM
+ map(0xf800, 0xf803).mirror(0x7fc).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void special_state::specialp_mem(address_map &map)
+{
+ map(0x0000, 0x2fff).bankrw("bank1"); // First bank
+ map(0x3000, 0x7fff).ram(); // RAM
+ map(0x8000, 0xbfff).ram().share("videoram"); // Video RAM
+ map(0xc000, 0xefff).rom(); // System ROM
+ map(0xf800, 0xf803).mirror(0x7fc).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void special_state::erik_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x8fff).bankrw("bank2");
+ map(0x9000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xefff).bankrw("bank4");
+ map(0xf000, 0xf7ff).bankrw("bank5");
+ map(0xf800, 0xffff).bankrw("bank6");
+}
+
+void special_state::erik_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf1, 0xf1).rw(this, FUNC(special_state::erik_rr_reg_r), FUNC(special_state::erik_rr_reg_w));
+ map(0xf2, 0xf2).rw(this, FUNC(special_state::erik_rc_reg_r), FUNC(special_state::erik_rc_reg_w));
+ map(0xf3, 0xf3).rw(this, FUNC(special_state::erik_disk_reg_r), FUNC(special_state::erik_disk_reg_w));
+ map(0xf4, 0xf7).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+}
+
+void special_state::specimx_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x8fff).bankrw("bank1");
+ map(0x9000, 0xbfff).bankrw("bank2");
+ map(0xc000, 0xffbf).bankrw("bank3");
+ map(0xffc0, 0xffdf).bankrw("bank4");
+ map(0xffe0, 0xffe3).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xffe4, 0xffe7).ram(); //external 8255
+ map(0xffe8, 0xffeb).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0xffec, 0xffef).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xfff0, 0xfff3).rw(this, FUNC(special_state::specimx_disk_ctrl_r), FUNC(special_state::specimx_disk_ctrl_w));
+ map(0xfff8, 0xfffb).rw(this, FUNC(special_state::specimx_video_color_r), FUNC(special_state::specimx_video_color_w));
+ map(0xfffc, 0xffff).w(this, FUNC(special_state::specimx_select_bank));
+}
/* Input ports */
diff --git a/src/mame/drivers/specpls3.cpp b/src/mame/drivers/specpls3.cpp
index 02363858cdd..139cecad237 100644
--- a/src/mame/drivers/specpls3.cpp
+++ b/src/mame/drivers/specpls3.cpp
@@ -305,23 +305,25 @@ WRITE8_MEMBER( spectrum_state::spectrum_plus3_port_1ffd_w )
/* ports are not decoded full.
The function decodes the ports appropriately */
-ADDRESS_MAP_START(spectrum_state::spectrum_plus3_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xfffe)
- AM_RANGE(0x4000, 0x4000) AM_WRITE(spectrum_plus3_port_7ffd_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
- AM_RANGE(0x1000, 0x1000) AM_WRITE(spectrum_plus3_port_1ffd_w) AM_MIRROR(0x0ffd)
- AM_RANGE(0x2000, 0x2000) AM_READ(spectrum_plus3_port_2ffd_r) AM_MIRROR(0x0ffd)
- AM_RANGE(0x3000, 0x3000) AM_READWRITE(spectrum_plus3_port_3ffd_r,spectrum_plus3_port_3ffd_w) AM_MIRROR(0x0ffd)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spectrum_state::spectrum_plus3_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
+void spectrum_state::spectrum_plus3_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0000).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
+ map(0x4000, 0x4000).w(this, FUNC(spectrum_state::spectrum_plus3_port_7ffd_w)).mirror(0x3ffd);
+ 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(0x1000, 0x1000).w(this, FUNC(spectrum_state::spectrum_plus3_port_1ffd_w)).mirror(0x0ffd);
+ map(0x2000, 0x2000).r(this, FUNC(spectrum_state::spectrum_plus3_port_2ffd_r)).mirror(0x0ffd);
+ map(0x3000, 0x3000).rw(this, FUNC(spectrum_state::spectrum_plus3_port_3ffd_r), FUNC(spectrum_state::spectrum_plus3_port_3ffd_w)).mirror(0x0ffd);
+}
+
+void spectrum_state::spectrum_plus3_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
MACHINE_RESET_MEMBER(spectrum_state,spectrum_plus3)
{
diff --git a/src/mame/drivers/spectra.cpp b/src/mame/drivers/spectra.cpp
index c03d07ba614..7564577c9da 100644
--- a/src/mame/drivers/spectra.cpp
+++ b/src/mame/drivers/spectra.cpp
@@ -77,14 +77,15 @@ private:
};
-ADDRESS_MAP_START(spectra_state::spectra_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xfff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("nvram") // battery backed, 2x 5101L
- AM_RANGE(0x0100, 0x017f) AM_RAM // RIOT RAM
- AM_RANGE(0x0180, 0x019f) AM_DEVREADWRITE("riot", riot6532_device, read, write)
- AM_RANGE(0x0400, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void spectra_state::spectra_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xfff);
+ map(0x0000, 0x00ff).ram().share("nvram"); // battery backed, 2x 5101L
+ map(0x0100, 0x017f).ram(); // RIOT RAM
+ map(0x0180, 0x019f).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0400, 0x0fff).rom();
+}
static INPUT_PORTS_START( spectra )
PORT_START("SWITCH.0")
diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp
index b88fcbcb47c..1dcc4337880 100644
--- a/src/mame/drivers/spectrum.cpp
+++ b/src/mame/drivers/spectrum.cpp
@@ -431,19 +431,21 @@ READ8_MEMBER(spectrum_state::spectrum_port_ula_r)
/* Memory Maps */
-ADDRESS_MAP_START(spectrum_state::spectrum_mem)
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(spectrum_rom_r, spectrum_rom_w)
- AM_RANGE(0x4000, 0x5aff) AM_RAM AM_SHARE("video_ram")
+void spectrum_state::spectrum_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(spectrum_state::spectrum_rom_r), FUNC(spectrum_state::spectrum_rom_w));
+ map(0x4000, 0x5aff).ram().share("video_ram");
// AM_RANGE(0x5b00, 0x7fff) AM_RAM
// AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+}
/* ports are not decoded full.
The function decodes the ports appropriately */
-ADDRESS_MAP_START(spectrum_state::spectrum_io)
- AM_RANGE(0x00, 0x00) AM_READWRITE(spectrum_port_fe_r, spectrum_port_fe_w) AM_SELECT(0xfffe)
- AM_RANGE(0x01, 0x01) AM_READ(spectrum_port_ula_r) AM_MIRROR(0xfffe)
-ADDRESS_MAP_END
+void spectrum_state::spectrum_io(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
+ map(0x01, 0x01).r(this, FUNC(spectrum_state::spectrum_port_ula_r)).mirror(0xfffe);
+}
/* Input ports */
diff --git a/src/mame/drivers/speedatk.cpp b/src/mame/drivers/speedatk.cpp
index 7355b410ad3..d2ae9ee912f 100644
--- a/src/mame/drivers/speedatk.cpp
+++ b/src/mame/drivers/speedatk.cpp
@@ -181,24 +181,26 @@ WRITE8_MEMBER(speedatk_state::key_matrix_status_w)
m_coin_settings = m_km_status & 0xf;
}
-ADDRESS_MAP_START(speedatk_state::speedatk_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_READWRITE(key_matrix_r,key_matrix_w)
- AM_RANGE(0x8001, 0x8001) AM_READWRITE(key_matrix_status_r,key_matrix_status_w)
- AM_RANGE(0x8800, 0x8fff) AM_RAM
- AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xb000, 0xb3ff) AM_RAM AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(speedatk_state::speedatk_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_WRITE(m6845_w) //h46505 address / data routing
- AM_RANGE(0x24, 0x24) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
+void speedatk_state::speedatk_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8000).rw(this, FUNC(speedatk_state::key_matrix_r), FUNC(speedatk_state::key_matrix_w));
+ map(0x8001, 0x8001).rw(this, FUNC(speedatk_state::key_matrix_status_r), FUNC(speedatk_state::key_matrix_status_w));
+ map(0x8800, 0x8fff).ram();
+ map(0xa000, 0xa3ff).ram().share("videoram");
+ map(0xb000, 0xb3ff).ram().share("colorram");
+}
+
+
+void speedatk_state::speedatk_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w(this, FUNC(speedatk_state::m6845_w)); //h46505 address / data routing
+ map(0x24, 0x24).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w));
//what's 60-6f for? Seems used only in attract mode and read back when a 2p play ends ...
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( speedatk )
PORT_START("DSW")
diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp
index b6c8f4081b2..e4ff4986169 100644
--- a/src/mame/drivers/speedbal.cpp
+++ b/src/mame/drivers/speedbal.cpp
@@ -54,36 +54,39 @@ WRITE8_MEMBER(speedbal_state::coincounter_w)
/* unknown: (data & 0x10) and (data & 4) */
}
-ADDRESS_MAP_START(speedbal_state::main_cpu_map)
- AM_RANGE(0x0000, 0xdbff) AM_ROM
- AM_RANGE(0xdc00, 0xdfff) AM_RAM AM_SHARE("share1") // shared with SOUND
- AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(foreground_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xf000, 0xf5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf600, 0xfeff) AM_RAM
- AM_RANGE(0xff00, 0xffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
+void speedbal_state::main_cpu_map(address_map &map)
+{
+ map(0x0000, 0xdbff).rom();
+ map(0xdc00, 0xdfff).ram().share("share1"); // shared with SOUND
+ map(0xe000, 0xe1ff).ram().w(this, FUNC(speedbal_state::background_videoram_w)).share("bg_videoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(speedbal_state::foreground_videoram_w)).share("fg_videoram");
+ map(0xf000, 0xf5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf600, 0xfeff).ram();
+ map(0xff00, 0xffff).ram().share("spriteram");
+}
WRITE8_MEMBER(speedbal_state::maincpu_50_w)
{
//logerror("%s: maincpu_50_w %02x\n", this->machine().describe_context(), data);
}
-ADDRESS_MAP_START(speedbal_state::main_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW2")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("P1")
- AM_RANGE(0x30, 0x30) AM_READ_PORT("P2")
- AM_RANGE(0x40, 0x40) AM_WRITE(coincounter_w)
- AM_RANGE(0x50, 0x50) AM_WRITE(maincpu_50_w)
-ADDRESS_MAP_END
+void speedbal_state::main_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW2");
+ map(0x10, 0x10).portr("DSW1");
+ map(0x20, 0x20).portr("P1");
+ map(0x30, 0x30).portr("P2");
+ map(0x40, 0x40).w(this, FUNC(speedbal_state::coincounter_w));
+ map(0x50, 0x50).w(this, FUNC(speedbal_state::maincpu_50_w));
+}
-ADDRESS_MAP_START(speedbal_state::sound_cpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xd800, 0xdbff) AM_RAM
- AM_RANGE(0xdc00, 0xdfff) AM_RAM AM_SHARE("share1") // shared with MAIN CPU
-ADDRESS_MAP_END
+void speedbal_state::sound_cpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xd800, 0xdbff).ram();
+ map(0xdc00, 0xdfff).ram().share("share1"); // shared with MAIN CPU
+}
@@ -117,14 +120,15 @@ WRITE8_MEMBER(speedbal_state::leds_shift_bit)
-ADDRESS_MAP_START(speedbal_state::sound_cpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITE(leds_output_block)
- AM_RANGE(0x80, 0x80) AM_WRITE(leds_start_block)
- AM_RANGE(0x82, 0x82) AM_WRITENOP // ?
- AM_RANGE(0xc1, 0xc1) AM_WRITE(leds_shift_bit)
-ADDRESS_MAP_END
+void speedbal_state::sound_cpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x40, 0x40).w(this, FUNC(speedbal_state::leds_output_block));
+ map(0x80, 0x80).w(this, FUNC(speedbal_state::leds_start_block));
+ map(0x82, 0x82).nopw(); // ?
+ map(0xc1, 0xc1).w(this, FUNC(speedbal_state::leds_shift_bit));
+}
static INPUT_PORTS_START( speedbal )
diff --git a/src/mame/drivers/speedspn.cpp b/src/mame/drivers/speedspn.cpp
index 7801e7cca14..c1a21af7df7 100644
--- a/src/mame/drivers/speedspn.cpp
+++ b/src/mame/drivers/speedspn.cpp
@@ -93,43 +93,47 @@ WRITE8_MEMBER(speedspn_state::okibank_w)
/* main cpu */
-ADDRESS_MAP_START(speedspn_state::program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") /* RAM COLOUR */
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(attram_w) AM_SHARE("attram")
- AM_RANGE(0x9000, 0x9fff) AM_READWRITE(vidram_r, vidram_w) /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xa800, 0xafff) AM_RAM
- AM_RANGE(0xb000, 0xbfff) AM_RAM /* RAM PROGRAM */
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("prgbank") /* banked ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(speedspn_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x07, 0x07) AM_WRITE(display_disable_w)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x11, 0x11) AM_READ_PORT("P1")
- AM_RANGE(0x12, 0x12) AM_READ_PORT("P2") AM_WRITE(rombank_w)
- AM_RANGE(0x13, 0x13) AM_READ_PORT("DSW1") AM_WRITE(sound_w)
- AM_RANGE(0x14, 0x14) AM_READ_PORT("DSW2")
- AM_RANGE(0x16, 0x16) AM_READ(irq_ack_r) // @@@ could be watchdog, value is discarded
- AM_RANGE(0x17, 0x17) AM_WRITE(vidram_bank_w)
-ADDRESS_MAP_END
+void speedspn_state::program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); /* RAM COLOUR */
+ map(0x8800, 0x8fff).ram().w(this, FUNC(speedspn_state::attram_w)).share("attram");
+ map(0x9000, 0x9fff).rw(this, FUNC(speedspn_state::vidram_r), FUNC(speedspn_state::vidram_w)); /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */
+ map(0xa000, 0xa7ff).ram();
+ map(0xa800, 0xafff).ram();
+ map(0xb000, 0xbfff).ram(); /* RAM PROGRAM */
+ map(0xc000, 0xffff).bankr("prgbank"); /* banked ROM */
+}
+
+void speedspn_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x07, 0x07).w(this, FUNC(speedspn_state::display_disable_w));
+ map(0x10, 0x10).portr("SYSTEM");
+ map(0x11, 0x11).portr("P1");
+ map(0x12, 0x12).portr("P2").w(this, FUNC(speedspn_state::rombank_w));
+ map(0x13, 0x13).portr("DSW1").w(this, FUNC(speedspn_state::sound_w));
+ map(0x14, 0x14).portr("DSW2");
+ map(0x16, 0x16).r(this, FUNC(speedspn_state::irq_ack_r)); // @@@ could be watchdog, value is discarded
+ map(0x17, 0x17).w(this, FUNC(speedspn_state::vidram_bank_w));
+}
/* sound cpu */
-ADDRESS_MAP_START(speedspn_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(speedspn_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void speedspn_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(speedspn_state::okibank_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void speedspn_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
/*** INPUT PORT **************************************************************/
diff --git a/src/mame/drivers/speglsht.cpp b/src/mame/drivers/speglsht.cpp
index 3dfebfe094a..6656f0ba033 100644
--- a/src/mame/drivers/speglsht.cpp
+++ b/src/mame/drivers/speglsht.cpp
@@ -157,18 +157,19 @@ public:
};
-ADDRESS_MAP_START(speglsht_state::st0016_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("st0016_bank")
+void speglsht_state::st0016_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("st0016_bank");
//AM_RANGE(0xc000, 0xcfff) AM_READ(st0016_sprite_ram_r) AM_WRITE(st0016_sprite_ram_w)
//AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xe87f) AM_RAM
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xe87f).ram();
//AM_RANGE(0xe900, 0xe9ff) // sound - internal
//AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w)
//AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("shared")
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).ram().share("shared");
+}
void speglsht_state::machine_start()
{
@@ -182,17 +183,18 @@ WRITE8_MEMBER(speglsht_state::st0016_rom_bank_w)
}
-ADDRESS_MAP_START(speglsht_state::st0016_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void speglsht_state::st0016_io(address_map &map)
+{
+ map.global_mask(0xff);
//AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w)
- AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w)
+ map(0xe1, 0xe1).w(this, FUNC(speglsht_state::st0016_rom_bank_w));
//AM_RANGE(0xe2, 0xe2) AM_WRITE(st0016_sprite_bank_w)
//AM_RANGE(0xe3, 0xe4) AM_WRITE(st0016_character_bank_w)
//AM_RANGE(0xe5, 0xe5) AM_WRITE(st0016_palette_bank_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITENOP
- AM_RANGE(0xe7, 0xe7) AM_WRITENOP
+ map(0xe6, 0xe6).nopw();
+ map(0xe7, 0xe7).nopw();
//AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r)
-ADDRESS_MAP_END
+}
READ32_MEMBER(speglsht_state::shared_r)
{
@@ -261,21 +263,22 @@ READ32_MEMBER(speglsht_state::irq_ack_clear)
return 0;
}
-ADDRESS_MAP_START(speglsht_state::speglsht_mem)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM
- AM_RANGE(0x01000000, 0x01007fff) AM_RAM //tested - STATIC RAM
- AM_RANGE(0x01600000, 0x0160004f) AM_READWRITE(cop_r, cop_w) AM_SHARE("cop_ram")
- AM_RANGE(0x01800200, 0x01800203) AM_WRITE(videoreg_w)
- AM_RANGE(0x01800300, 0x01800303) AM_READ_PORT("IN0")
- AM_RANGE(0x01800400, 0x01800403) AM_READ_PORT("IN1")
- AM_RANGE(0x01a00000, 0x01afffff) AM_RAM AM_SHARE("framebuffer")
- AM_RANGE(0x01b00000, 0x01b07fff) AM_RAM //cleared ... video related ?
- AM_RANGE(0x01c00000, 0x01dfffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE(shared_r, shared_w)
- AM_RANGE(0x0fc00000, 0x0fdfffff) AM_ROM AM_MIRROR(0x10000000) AM_REGION("user1", 0)
- AM_RANGE(0x1eff0000, 0x1eff001f) AM_RAM
- AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear)
-ADDRESS_MAP_END
+void speglsht_state::speglsht_mem(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram();
+ map(0x01000000, 0x01007fff).ram(); //tested - STATIC RAM
+ map(0x01600000, 0x0160004f).rw(this, FUNC(speglsht_state::cop_r), FUNC(speglsht_state::cop_w)).share("cop_ram");
+ map(0x01800200, 0x01800203).w(this, FUNC(speglsht_state::videoreg_w));
+ map(0x01800300, 0x01800303).portr("IN0");
+ map(0x01800400, 0x01800403).portr("IN1");
+ map(0x01a00000, 0x01afffff).ram().share("framebuffer");
+ map(0x01b00000, 0x01b07fff).ram(); //cleared ... video related ?
+ map(0x01c00000, 0x01dfffff).rom().region("user2", 0);
+ map(0x0a000000, 0x0a003fff).rw(this, FUNC(speglsht_state::shared_r), FUNC(speglsht_state::shared_w));
+ map(0x0fc00000, 0x0fdfffff).rom().mirror(0x10000000).region("user1", 0);
+ map(0x1eff0000, 0x1eff001f).ram();
+ map(0x1eff003c, 0x1eff003f).r(this, FUNC(speglsht_state::irq_ack_clear));
+}
static INPUT_PORTS_START( speglsht )
PORT_START("IN0")
diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp
index 2f4bcbe0ece..eb0b9d92e98 100644
--- a/src/mame/drivers/spiders.cpp
+++ b/src/mame/drivers/spiders.cpp
@@ -415,26 +415,28 @@ READ8_MEMBER(spiders_state::gfx_rom_r)
*
*************************************/
-ADDRESS_MAP_START(spiders_state::spiders_main_map)
- AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0xc020, 0xc027) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc044, 0xc047) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0xc048, 0xc04b) AM_DEVREADWRITE("pia2", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xc050, 0xc053) AM_DEVREADWRITE("pia3", pia6821_device, read, write)
- AM_RANGE(0xc060, 0xc060) AM_READ_PORT("DSW1")
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("DSW2")
- AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("DSW3")
- AM_RANGE(0xc100, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(spiders_state::spiders_audio_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("pia4", pia6821_device, read, write)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void spiders_state::spiders_main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).ram().share("ram");
+ map(0xc000, 0xc000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xc001, 0xc001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xc020, 0xc027).ram().share("nvram");
+ map(0xc044, 0xc047).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc048, 0xc04b).rw("pia2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xc050, 0xc053).rw("pia3", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc060, 0xc060).portr("DSW1");
+ map(0xc080, 0xc080).portr("DSW2");
+ map(0xc0a0, 0xc0a0).portr("DSW3");
+ map(0xc100, 0xffff).rom();
+}
+
+
+void spiders_state::spiders_audio_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x0080, 0x0083).rw("pia4", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf800, 0xffff).rom();
+}
diff --git a/src/mame/drivers/spinb.cpp b/src/mame/drivers/spinb.cpp
index 17af5c2bc53..99c8746cae3 100644
--- a/src/mame/drivers/spinb.cpp
+++ b/src/mame/drivers/spinb.cpp
@@ -141,57 +141,63 @@ private:
required_ioport_array<11> m_switches;
};
-ADDRESS_MAP_START(spinb_state::spinb_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("nvram") // 6164, battery-backed
- AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write)
- AM_RANGE(0x6400, 0x6403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write)
- AM_RANGE(0x6800, 0x6803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write)
- AM_RANGE(0x6c00, 0x6c03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write)
- AM_RANGE(0x6c20, 0x6c3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w)
- AM_RANGE(0x6c40, 0x6c45) AM_MIRROR(0x1300) AM_WRITE(lamp1_w)
- AM_RANGE(0x6c60, 0x6c60) AM_MIRROR(0x1300) AM_WRITE(disp_w)
- AM_RANGE(0x6ce0, 0x6ce0) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spinb_state::vrnwrld_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram") // 6164, battery-backed
- AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write)
- AM_RANGE(0xc400, 0xc403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write)
- AM_RANGE(0xc800, 0xc803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write)
- AM_RANGE(0xcc00, 0xcc03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write)
- AM_RANGE(0xcc20, 0xcc3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w)
- AM_RANGE(0xcc40, 0xcc45) AM_MIRROR(0x1300) AM_WRITE(lamp1_w)
- AM_RANGE(0xcc60, 0xcc60) AM_MIRROR(0x1300) AM_WRITE(disp_w)
- AM_RANGE(0xcce0, 0xcce0) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spinb_state::spinb_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM // 6164
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppia", i8255_device, read, write)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_a_w)
- AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spinb_state::spinb_music_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM // 6164
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppim", i8255_device, read, write)
- AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_m_w)
- AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r)
- AM_RANGE(0xA000, 0xA000) AM_WRITE(volume_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spinb_state::dmd_mem)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spinb_state::dmd_io)
- AM_RANGE(0x0000, 0x1fff) AM_WRITE(dmdram_w)
- AM_RANGE(0x0000, 0xffff) AM_READ(dmdram_r)
-ADDRESS_MAP_END
+void spinb_state::spinb_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram().share("nvram"); // 6164, battery-backed
+ map(0x6000, 0x6003).mirror(0x13fc).rw("ppi60", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6400, 0x6403).mirror(0x13fc).rw("ppi64", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6800, 0x6803).mirror(0x13fc).rw("ppi68", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6c00, 0x6c03).mirror(0x131c).rw("ppi6c", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6c20, 0x6c3f).mirror(0x1300).w(this, FUNC(spinb_state::sndcmd_w));
+ map(0x6c40, 0x6c45).mirror(0x1300).w(this, FUNC(spinb_state::lamp1_w));
+ map(0x6c60, 0x6c60).mirror(0x1300).w(this, FUNC(spinb_state::disp_w));
+ map(0x6ce0, 0x6ce0).nopw();
+}
+
+void spinb_state::vrnwrld_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram().share("nvram"); // 6164, battery-backed
+ map(0xc000, 0xc003).mirror(0x13fc).rw("ppi60", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc400, 0xc403).mirror(0x13fc).rw("ppi64", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc800, 0xc803).mirror(0x13fc).rw("ppi68", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xcc00, 0xcc03).mirror(0x131c).rw("ppi6c", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xcc20, 0xcc3f).mirror(0x1300).w(this, FUNC(spinb_state::sndcmd_w));
+ map(0xcc40, 0xcc45).mirror(0x1300).w(this, FUNC(spinb_state::lamp1_w));
+ map(0xcc60, 0xcc60).mirror(0x1300).w(this, FUNC(spinb_state::disp_w));
+ map(0xcce0, 0xcce0).nopw();
+}
+
+void spinb_state::spinb_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram(); // 6164
+ map(0x4000, 0x4003).mirror(0x1ffc).rw("ppia", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6000, 0x6000).w(this, FUNC(spinb_state::sndbank_a_w));
+ map(0x8000, 0x8000).r(this, FUNC(spinb_state::sndcmd_r));
+}
+
+void spinb_state::spinb_music_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram(); // 6164
+ map(0x4000, 0x4003).mirror(0x1ffc).rw("ppim", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6000, 0x6000).w(this, FUNC(spinb_state::sndbank_m_w));
+ map(0x8000, 0x8000).r(this, FUNC(spinb_state::sndcmd_r));
+ map(0xA000, 0xA000).w(this, FUNC(spinb_state::volume_w));
+}
+
+void spinb_state::dmd_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
+
+void spinb_state::dmd_io(address_map &map)
+{
+ map(0x0000, 0x1fff).w(this, FUNC(spinb_state::dmdram_w));
+ map(0x0000, 0xffff).r(this, FUNC(spinb_state::dmdram_r));
+}
static INPUT_PORTS_START( spinb )
PORT_START("SW.0")
diff --git a/src/mame/drivers/spirit76.cpp b/src/mame/drivers/spirit76.cpp
index e306884a2f5..642cec9f6d8 100644
--- a/src/mame/drivers/spirit76.cpp
+++ b/src/mame/drivers/spirit76.cpp
@@ -48,16 +48,17 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(spirit76_state::maincpu_map)
- ADDRESS_MAP_UNMAP_HIGH
+void spirit76_state::maincpu_map(address_map &map)
+{
+ map.unmap_value_high();
// ADDRESS_MAP_GLOBAL_MASK(0xfff) // this could most likely go in once the memory map is sorted
- AM_RANGE(0x0000, 0x00ff) AM_RAM // 2x 2112
- AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia", pia6821_device, read, write) // 6820
- AM_RANGE(0x2400, 0x2400) AM_READ(unk_r)
- AM_RANGE(0x2401, 0x2401) AM_WRITE(unk_w)
- AM_RANGE(0x0600, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xfe00, 0xffff) AM_ROM AM_REGION("roms", 0x800)
-ADDRESS_MAP_END
+ map(0x0000, 0x00ff).ram(); // 2x 2112
+ map(0x2200, 0x2203).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // 6820
+ map(0x2400, 0x2400).r(this, FUNC(spirit76_state::unk_r));
+ map(0x2401, 0x2401).w(this, FUNC(spirit76_state::unk_w));
+ map(0x0600, 0x0fff).rom().region("roms", 0);
+ map(0xfe00, 0xffff).rom().region("roms", 0x800);
+}
static INPUT_PORTS_START( spirit76 )
diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp
index 852d40b9d09..3697ba43891 100644
--- a/src/mame/drivers/splash.cpp
+++ b/src/mame/drivers/splash.cpp
@@ -73,22 +73,26 @@ WRITE_LINE_MEMBER(splash_state::coin2_counter_w)
machine().bookkeeping().coin_counter_w(1, state);
}
-ADDRESS_MAP_START(splash_state::splash_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM /* ROM */
- AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */
- AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
- AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
- AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
- AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
- ;map(0x84000a, 0x84000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0xff00);
- AM_RANGE(0x84000e, 0x84000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
- AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */
- AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
- AM_RANGE(0x900000, 0x900fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
+void splash_state::splash_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom(); /* ROM */
+ map(0x800000, 0x83ffff).ram().share("pixelram"); /* Pixel Layer */
+ map(0x840000, 0x840001).portr("DSW1");
+ map(0x840002, 0x840003).portr("DSW2");
+ map(0x840004, 0x840005).portr("P1");
+ map(0x840006, 0x840007).portr("P2");
+ map(0x84000a, 0x84000a).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x84000f, 0x84000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x880000, 0x8817ff).ram().w(this, FUNC(splash_state::vram_w)).share("videoram"); /* Video RAM */
+ map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */
+ map(0x881804, 0x881fff).ram(); /* Work RAM */
+ map(0x8c0000, 0x8c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette is xRRRRxGGGGxBBBBx */
+ map(0x900000, 0x900fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0xffc000, 0xffffff).ram(); /* Work RAM */
+}
WRITE8_MEMBER(splash_state::splash_adpcm_data_w)
{
@@ -106,14 +110,15 @@ WRITE_LINE_MEMBER(splash_state::splash_msm5205_int)
m_adpcm_data = (m_adpcm_data << 4) & 0xf0;
}
-ADDRESS_MAP_START(splash_state::splash_sound_map)
- AM_RANGE(0x0000, 0xd7ff) AM_ROM /* ROM */
- AM_RANGE(0xd800, 0xd800) AM_WRITE(splash_adpcm_data_w) /* ADPCM data for the MSM5205 chip */
- AM_RANGE(0xe000, 0xe000) AM_WRITE(splash_adpcm_control_w)
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound latch */
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) /* YM3812 */
- AM_RANGE(0xf800, 0xffff) AM_RAM /* RAM */
-ADDRESS_MAP_END
+void splash_state::splash_sound_map(address_map &map)
+{
+ map(0x0000, 0xd7ff).rom(); /* ROM */
+ map(0xd800, 0xd800).w(this, FUNC(splash_state::splash_adpcm_data_w)); /* ADPCM data for the MSM5205 chip */
+ map(0xe000, 0xe000).w(this, FUNC(splash_state::splash_adpcm_control_w));
+ map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound latch */
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 */
+ map(0xf800, 0xffff).ram(); /* RAM */
+}
/* Return of Lady Frog Maps */
/* note, sprite ram has moved, extra protection ram, and extra write for the pixel layer */
@@ -149,32 +154,37 @@ WRITE_LINE_MEMBER(splash_state::ym_irq)
roldfrog_update_irq();
}
-ADDRESS_MAP_START(splash_state::roldfrog_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM /* ROM */
- AM_RANGE(0x400000, 0x407fff) AM_ROM AM_SHARE("protdata") /* Protection Data */
- AM_RANGE(0x408000, 0x4087ff) AM_RAM /* Extra Ram */
- AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */
- AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
- AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
- AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
- AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
- ;map(0x84000a, 0x84000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0xff00);
- AM_RANGE(0x84000e, 0x84000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
- AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */
- AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
- AM_RANGE(0xa00000, 0xa00001) AM_READ(roldfrog_bombs_r)
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0xe00000, 0xe00001) AM_WRITEONLY AM_SHARE("bitmap_mode") /* Bitmap Mode? */
- AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */
-ADDRESS_MAP_END
+void splash_state::roldfrog_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom(); /* ROM */
+ map(0x400000, 0x407fff).rom().share("protdata"); /* Protection Data */
+ map(0x408000, 0x4087ff).ram(); /* Extra Ram */
+ map(0x800000, 0x83ffff).ram().share("pixelram"); /* Pixel Layer */
+ map(0x840000, 0x840001).portr("DSW1");
+ map(0x840002, 0x840003).portr("DSW2");
+ map(0x840004, 0x840005).portr("P1");
+ map(0x840006, 0x840007).portr("P2");
+ map(0x84000a, 0x84000a).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x84000f, 0x84000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x880000, 0x8817ff).ram().w(this, FUNC(splash_state::vram_w)).share("videoram"); /* Video RAM */
+ map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */
+ map(0x881804, 0x881fff).ram(); /* Work RAM */
+ map(0x8c0000, 0x8c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette is xRRRRxGGGGxBBBBx */
+ map(0xa00000, 0xa00001).r(this, FUNC(splash_state::roldfrog_bombs_r));
+ map(0xd00000, 0xd00fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0xe00000, 0xe00001).writeonly().share("bitmap_mode"); /* Bitmap Mode? */
+ map(0xffc000, 0xffffff).ram(); /* Work RAM */
+}
-ADDRESS_MAP_START(splash_state::roldfrog_sound_map)
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_ROMBANK("sound_bank")
-ADDRESS_MAP_END
+void splash_state::roldfrog_sound_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0xffff).rom().bankr("sound_bank");
+}
READ8_MEMBER(splash_state::roldfrog_unk_r)
{
@@ -182,16 +192,17 @@ READ8_MEMBER(splash_state::roldfrog_unk_r)
return 0xff;
}
-ADDRESS_MAP_START(splash_state::roldfrog_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x31, 0x31) AM_WRITE(sound_bank_w)
- AM_RANGE(0x37, 0x37) AM_WRITE(roldfrog_vblank_ack_w )
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x70, 0x70) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-
- AM_RANGE(0x20, 0x23) AM_READ(roldfrog_unk_r)
-ADDRESS_MAP_END
+void splash_state::roldfrog_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x31, 0x31).w(this, FUNC(splash_state::sound_bank_w));
+ map(0x37, 0x37).w(this, FUNC(splash_state::roldfrog_vblank_ack_w));
+ map(0x40, 0x40).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x70, 0x70).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+
+ map(0x20, 0x23).r(this, FUNC(splash_state::roldfrog_unk_r));
+}
READ16_MEMBER(funystrp_state::spr_read)
{
@@ -211,24 +222,26 @@ WRITE8_MEMBER(funystrp_state::eeprom_w)
m_eeprom->clk_write(BIT(data, 5));
}
-ADDRESS_MAP_START(funystrp_state::funystrp_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x1fffff) AM_RAM /* protection? RAM */
- AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */
- AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
- AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
- AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
- AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
- AM_RANGE(0x840008, 0x840009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x84000a, 0x84000b) AM_WRITE8(eeprom_w, 0xff00) AM_READNOP
- AM_RANGE(0x84000e, 0x84000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
- AM_RANGE(0x881804, 0x881fff) AM_RAM
- AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(spr_read, spr_write) AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_MIRROR(0x10000) /* there's fe0000 <-> ff0000 compare */ /* Work RAM */
-ADDRESS_MAP_END
+void funystrp_state::funystrp_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); /* ROM */
+ map(0x100000, 0x1fffff).ram(); /* protection? RAM */
+ map(0x800000, 0x83ffff).ram().share("pixelram"); /* Pixel Layer */
+ map(0x840000, 0x840001).portr("DSW1");
+ map(0x840002, 0x840003).portr("DSW2");
+ map(0x840004, 0x840005).portr("P1");
+ map(0x840006, 0x840007).portr("P2");
+ map(0x840008, 0x840009).portr("SYSTEM");
+ map(0x84000a, 0x84000b).nopr();
+ map(0x84000a, 0x84000a).w(this, FUNC(funystrp_state::eeprom_w));
+ map(0x84000e, 0x84000e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x880000, 0x8817ff).ram().w(this, FUNC(funystrp_state::vram_w)).share("videoram"); /* Video RAM */
+ map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */
+ map(0x881804, 0x881fff).ram();
+ map(0x8c0000, 0x8c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette is xRRRRxGGGGxBBBBx */
+ map(0xd00000, 0xd01fff).rw(this, FUNC(funystrp_state::spr_read), FUNC(funystrp_state::spr_write)).share("spriteram"); /* Sprite RAM */
+ map(0xfe0000, 0xfeffff).ram().mirror(0x10000); /* there's fe0000 <-> ff0000 compare */ /* Work RAM */
+}
ADDRESS_MAP_START(splash_state::funystrp_sound_map)
AM_RANGE(0x0000, 0x6fff) AM_ROM
@@ -265,16 +278,17 @@ WRITE8_MEMBER(funystrp_state::msm2_data_w)
m_msm_toggle2=0;
}
-ADDRESS_MAP_START(funystrp_state::funystrp_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(msm1_data_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm2_data_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(sound_bank_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x04, 0x04) AM_READ(int_source_r)
- AM_RANGE(0x06, 0x06) AM_WRITE(msm1_interrupt_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(msm2_interrupt_w)
-ADDRESS_MAP_END
+void funystrp_state::funystrp_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(funystrp_state::msm1_data_w));
+ map(0x01, 0x01).w(this, FUNC(funystrp_state::msm2_data_w));
+ map(0x02, 0x02).w(this, FUNC(funystrp_state::sound_bank_w));
+ map(0x03, 0x03).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x04, 0x04).r(this, FUNC(funystrp_state::int_source_r));
+ map(0x06, 0x06).w(this, FUNC(funystrp_state::msm1_interrupt_w));
+ map(0x07, 0x07).w(this, FUNC(funystrp_state::msm2_interrupt_w));
+}
static INPUT_PORTS_START( splash )
diff --git a/src/mame/drivers/splus.cpp b/src/mame/drivers/splus.cpp
index 18cbba91ea7..19fbeba80d8 100644
--- a/src/mame/drivers/splus.cpp
+++ b/src/mame/drivers/splus.cpp
@@ -589,39 +589,41 @@ DRIVER_INIT_MEMBER(splus_state,splus)
* Memory map information *
*************************/
-ADDRESS_MAP_START(splus_state::splus_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("prograram")
-ADDRESS_MAP_END
+void splus_state::splus_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().share("prograram");
+}
-ADDRESS_MAP_START(splus_state::splus_iomap)
+void splus_state::splus_iomap(address_map &map)
+{
// Serial I/O
- AM_RANGE(0x0000, 0x0000) AM_READ(splus_serial_r) AM_WRITE(splus_serial_w)
+ map(0x0000, 0x0000).r(this, FUNC(splus_state::splus_serial_r)).w(this, FUNC(splus_state::splus_serial_w));
// Battery-backed RAM (Lower 4K) 0x1500-0x16ff eeprom staging area
- AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("cmosl")
+ map(0x1000, 0x1fff).ram().share("cmosl");
// Watchdog, 7-segment Display
- AM_RANGE(0x2000, 0x2000) AM_READWRITE(splus_watchdog_r, splus_7seg_w)
+ map(0x2000, 0x2000).rw(this, FUNC(splus_state::splus_watchdog_r), FUNC(splus_state::splus_7seg_w));
// DUART
- AM_RANGE(0x3000, 0x300f) AM_READWRITE(splus_duart_r, splus_duart_w)
+ map(0x3000, 0x300f).rw(this, FUNC(splus_state::splus_duart_r), FUNC(splus_state::splus_duart_w));
// Dip Switches, Sound
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("SW1") AM_DEVWRITE("aysnd", ay8910_device, address_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("aysnd", ay8910_device, data_w)
+ map(0x4000, 0x4000).portr("SW1").w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x4001, 0x4001).w("aysnd", FUNC(ay8910_device::data_w));
// Reel Optics, EEPROM
- AM_RANGE(0x5000, 0x5000) AM_READ(splus_reel_optics_r) AM_WRITE(i2c_nvram_w)
+ map(0x5000, 0x5000).r(this, FUNC(splus_state::splus_reel_optics_r)).w(this, FUNC(splus_state::i2c_nvram_w));
// Reset Registers in Realtime Clock, Serial I/O Load Pulse
- AM_RANGE(0x6000, 0x6000) AM_READWRITE(splus_registers_r, splus_load_pulse_w)
+ map(0x6000, 0x6000).rw(this, FUNC(splus_state::splus_registers_r), FUNC(splus_state::splus_load_pulse_w));
// Battery-backed RAM (Upper 4K)
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("cmosh")
+ map(0x7000, 0x7fff).ram().share("cmosh");
// SSxxxx Reel Chip
- AM_RANGE(0x8000, 0x9fff) AM_READ(splus_m_reel_ram_r) AM_SHARE("reel_ram")
-ADDRESS_MAP_END
+ map(0x8000, 0x9fff).r(this, FUNC(splus_state::splus_m_reel_ram_r)).share("reel_ram");
+}
/*************************
* Input ports *
diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp
index 7e1ee0a91bc..359251a343a 100644
--- a/src/mame/drivers/spoker.cpp
+++ b/src/mame/drivers/spoker.cpp
@@ -263,52 +263,55 @@ READ8_MEMBER(spoker_state::magic_r)
Memory Maps
***************************************************************************/
-ADDRESS_MAP_START(spoker_state::spoker_map)
- AM_RANGE(0x00000, 0x0f3ff) AM_ROM
- AM_RANGE(0x0f400, 0x0ffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spoker_state::spoker_portmap)
- AM_RANGE(0x0000, 0x003f) AM_RAM // Z180 internal regs
- AM_RANGE(0x2000, 0x23ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
- AM_RANGE(0x6480, 0x6483) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* NMI and coins (w), service (r), coins (r) */
- AM_RANGE(0x6490, 0x6493) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* buttons 1 (r), video and leds (w), leds (w) */
- AM_RANGE(0x64a0, 0x64a0) AM_READ_PORT( "BUTTONS2" )
- AM_RANGE(0x64b0, 0x64b1) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0x64c0, 0x64c0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x64d0, 0x64d1) AM_READWRITE(magic_r, magic_w ) // DSW1-5
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spoker_state::_3super8_portmap)
+void spoker_state::spoker_map(address_map &map)
+{
+ map(0x00000, 0x0f3ff).rom();
+ map(0x0f400, 0x0ffff).ram().share("nvram");
+}
+
+void spoker_state::spoker_portmap(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // Z180 internal regs
+ map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x3000, 0x33ff).ram().w(this, FUNC(spoker_state::bg_tile_w)).share("bg_tile_ram");
+ map(0x5000, 0x5fff).ram().w(this, FUNC(spoker_state::fg_tile_w)).share("fg_tile_ram");
+ map(0x6480, 0x6483).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* NMI and coins (w), service (r), coins (r) */
+ map(0x6490, 0x6493).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* buttons 1 (r), video and leds (w), leds (w) */
+ map(0x64a0, 0x64a0).portr("BUTTONS2");
+ map(0x64b0, 0x64b1).w("ymsnd", FUNC(ym2413_device::write));
+ map(0x64c0, 0x64c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x64d0, 0x64d1).rw(this, FUNC(spoker_state::magic_r), FUNC(spoker_state::magic_w)); // DSW1-5
+ map(0x7000, 0x7fff).ram().w(this, FUNC(spoker_state::fg_color_w)).share("fg_color_ram");
+}
+
+void spoker_state::_3super8_portmap(address_map &map)
+{
// AM_RANGE(0x1000, 0x1fff) AM_WRITENOP
- AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram")
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT( "DSW1" )
- AM_RANGE(0x4001, 0x4001) AM_READ_PORT( "DSW2" )
- AM_RANGE(0x4002, 0x4002) AM_READ_PORT( "DSW3" )
- AM_RANGE(0x4003, 0x4003) AM_READ_PORT( "DSW4" )
- AM_RANGE(0x4004, 0x4004) AM_READ_PORT( "DSW5" )
+ map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x3000, 0x33ff).ram().w(this, FUNC(spoker_state::bg_tile_w)).share("bg_tile_ram");
+ map(0x4000, 0x4000).portr("DSW1");
+ map(0x4001, 0x4001).portr("DSW2");
+ map(0x4002, 0x4002).portr("DSW3");
+ map(0x4003, 0x4003).portr("DSW4");
+ map(0x4004, 0x4004).portr("DSW5");
// AM_RANGE(0x4000, 0x40ff) AM_WRITENOP
- AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
+ map(0x5000, 0x5fff).ram().w(this, FUNC(spoker_state::fg_tile_w)).share("fg_tile_ram");
// The following one (0x6480) should be output. At beginning of code, there is a PPI initialization
// setting O-I-I for ports ABC. Except these routines are just a leftover from the original game,
// and now the I/O is handled by a CPLD or FPGA (as seen in goldstar and gp98).
- AM_RANGE(0x6480, 0x6480) AM_READ_PORT( "IN0" )
- AM_RANGE(0x6490, 0x6490) AM_READ_PORT( "IN1" )
-
- AM_RANGE(0x6491, 0x6491) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x64a0, 0x64a0) AM_READ_PORT( "IN2" )
- AM_RANGE(0x64b0, 0x64b0) AM_WRITE(leds_w )
- AM_RANGE(0x64c0, 0x64c0) AM_READNOP //irq ack?
- AM_RANGE(0x64f0, 0x64f0) AM_WRITE(nmi_and_coins_w )
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
-ADDRESS_MAP_END
+ map(0x6480, 0x6480).portr("IN0");
+ map(0x6490, 0x6490).portr("IN1");
+
+ map(0x6491, 0x6491).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x64a0, 0x64a0).portr("IN2");
+ map(0x64b0, 0x64b0).w(this, FUNC(spoker_state::leds_w));
+ map(0x64c0, 0x64c0).nopr(); //irq ack?
+ map(0x64f0, 0x64f0).w(this, FUNC(spoker_state::nmi_and_coins_w));
+ map(0x7000, 0x7fff).ram().w(this, FUNC(spoker_state::fg_color_w)).share("fg_color_ram");
+}
/***************************************************************************
diff --git a/src/mame/drivers/spool99.cpp b/src/mame/drivers/spool99.cpp
index 63b8161e697..27693209015 100644
--- a/src/mame/drivers/spool99.cpp
+++ b/src/mame/drivers/spool99.cpp
@@ -229,21 +229,22 @@ WRITE8_MEMBER(spool99_state::eeprom_dataline_w)
m_eeprom->di_write(data & 0x01);
}
-ADDRESS_MAP_START(spool99_state::spool99_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0100, 0xaeff) AM_ROM AM_REGION("maincpu", 0x100) AM_WRITENOP
- AM_RANGE(0xaf00, 0xafff) AM_READ(spool99_io_r)
- AM_RANGE(0xafed, 0xafed) AM_WRITE(eeprom_resetline_w )
- AM_RANGE(0xafee, 0xafee) AM_WRITE(eeprom_clockline_w )
- AM_RANGE(0xafef, 0xafef) AM_WRITE(eeprom_dataline_w )
- AM_RANGE(0xaff8, 0xaff8) AM_DEVWRITE("oki", okim6295_device, write)
-
- AM_RANGE(0xb000, 0xb3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xb800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(cram_w) AM_SHARE("cram")
-ADDRESS_MAP_END
+void spool99_state::spool99_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().share("mainram");
+ map(0x0100, 0xaeff).rom().region("maincpu", 0x100).nopw();
+ map(0xaf00, 0xafff).r(this, FUNC(spool99_state::spool99_io_r));
+ map(0xafed, 0xafed).w(this, FUNC(spool99_state::eeprom_resetline_w));
+ map(0xafee, 0xafee).w(this, FUNC(spool99_state::eeprom_clockline_w));
+ map(0xafef, 0xafef).w(this, FUNC(spool99_state::eeprom_dataline_w));
+ map(0xaff8, 0xaff8).w(m_oki, FUNC(okim6295_device::write));
+
+ map(0xb000, 0xb3ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+
+ map(0xb800, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().w(this, FUNC(spool99_state::vram_w)).share("vram");
+ map(0xf000, 0xffff).ram().w(this, FUNC(spool99_state::cram_w)).share("cram");
+}
READ8_MEMBER(spool99_state::vcarn_io_r)
{
@@ -275,22 +276,23 @@ READ8_MEMBER(spool99_state::vcarn_io_r)
return ROM[0xa700+offset];
}
-ADDRESS_MAP_START(spool99_state::vcarn_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x0100, 0xa6ff) AM_ROM AM_REGION("maincpu", 0x100) AM_WRITENOP
- AM_RANGE(0xa700, 0xa7ff) AM_READ(vcarn_io_r)
- AM_RANGE(0xa745, 0xa745) AM_WRITE(eeprom_resetline_w )
- AM_RANGE(0xa746, 0xa746) AM_WRITE(eeprom_clockline_w )
- AM_RANGE(0xa747, 0xa747) AM_WRITE(eeprom_dataline_w )
- AM_RANGE(0xa780, 0xa780) AM_DEVWRITE("oki", okim6295_device, write)
+void spool99_state::vcarn_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().share("mainram");
+ map(0x0100, 0xa6ff).rom().region("maincpu", 0x100).nopw();
+ map(0xa700, 0xa7ff).r(this, FUNC(spool99_state::vcarn_io_r));
+ map(0xa745, 0xa745).w(this, FUNC(spool99_state::eeprom_resetline_w));
+ map(0xa746, 0xa746).w(this, FUNC(spool99_state::eeprom_clockline_w));
+ map(0xa747, 0xa747).w(this, FUNC(spool99_state::eeprom_dataline_w));
+ map(0xa780, 0xa780).w(m_oki, FUNC(okim6295_device::write));
- AM_RANGE(0xa800, 0xabff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0xa800, 0xabff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
- AM_RANGE(0xb000, 0xdfff) AM_RAM
+ map(0xb000, 0xdfff).ram();
// AM_RANGE(0xdf00, 0xdfff) AM_READWRITE(vcarn_io_r,vcarn_io_w) AM_SHARE("vcarn_io")
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(cram_w) AM_SHARE("cram")
-ADDRESS_MAP_END
+ map(0xe000, 0xefff).ram().w(this, FUNC(spool99_state::vram_w)).share("vram");
+ map(0xf000, 0xffff).ram().w(this, FUNC(spool99_state::cram_w)).share("cram");
+}
diff --git a/src/mame/drivers/sprcros2.cpp b/src/mame/drivers/sprcros2.cpp
index fb27551ef6d..d0c969e53df 100644
--- a/src/mame/drivers/sprcros2.cpp
+++ b/src/mame/drivers/sprcros2.cpp
@@ -243,41 +243,45 @@ WRITE8_MEMBER(sprcros2_state::bg_scrolly_w)
m_bg_scrolly = data;
}
-ADDRESS_MAP_START(sprcros2_state::master_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("master", 0)
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("master_rombank")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("fgvram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("fgattr")
- AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("sprram")
- AM_RANGE(0xe840, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sprcros2_state::master_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("EXTRA") AM_DEVWRITE("sn3", sn76489_device, write)
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW2")
- AM_RANGE(0x07, 0x07) AM_WRITE(master_output_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sprcros2_state::slave_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("slave", 0)
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("slave_rombank")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("bgvram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("bgattr")
- AM_RANGE(0xe800, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sprcros2_state::slave_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(bg_scrollx_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(bg_scrolly_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(slave_output_w)
-ADDRESS_MAP_END
+void sprcros2_state::master_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom().region("master", 0);
+ map(0xc000, 0xdfff).bankr("master_rombank");
+ map(0xe000, 0xe3ff).ram().share("fgvram");
+ map(0xe400, 0xe7ff).ram().share("fgattr");
+ map(0xe800, 0xe83f).ram().share("sprram");
+ map(0xe840, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("shared_ram");
+}
+
+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(0x04, 0x04).portr("DSW1");
+ map(0x05, 0x05).portr("DSW2");
+ map(0x07, 0x07).w(this, FUNC(sprcros2_state::master_output_w));
+}
+
+void sprcros2_state::slave_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom().region("slave", 0);
+ map(0xc000, 0xdfff).bankr("slave_rombank");
+ map(0xe000, 0xe3ff).ram().share("bgvram");
+ map(0xe400, 0xe7ff).ram().share("bgattr");
+ map(0xe800, 0xf7ff).ram();
+ map(0xf800, 0xffff).ram().share("shared_ram");
+}
+
+void sprcros2_state::slave_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(sprcros2_state::bg_scrollx_w));
+ map(0x01, 0x01).w(this, FUNC(sprcros2_state::bg_scrolly_w));
+ map(0x03, 0x03).w(this, FUNC(sprcros2_state::slave_output_w));
+}
static INPUT_PORTS_START( sprcros2 )
PORT_START("P1")
diff --git a/src/mame/drivers/sprint2.cpp b/src/mame/drivers/sprint2.cpp
index 8975ab3704e..ff365b8639c 100644
--- a/src/mame/drivers/sprint2.cpp
+++ b/src/mame/drivers/sprint2.cpp
@@ -242,29 +242,30 @@ WRITE_LINE_MEMBER(sprint2_state::lamp4_w)
output().set_led_value(3, state);
}
-ADDRESS_MAP_START(sprint2_state::sprint2_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x03ff) AM_READWRITE(sprint2_wram_r,sprint2_wram_w)
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sprint2_video_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0x0818, 0x081f) AM_READ(sprint2_input_A_r)
- AM_RANGE(0x0828, 0x082f) AM_READ(sprint2_input_B_r)
- AM_RANGE(0x0830, 0x0837) AM_READ(sprint2_dip_r)
- AM_RANGE(0x0840, 0x087f) AM_READ_PORT("COIN")
- AM_RANGE(0x0880, 0x08bf) AM_READ(sprint2_steering1_r)
- AM_RANGE(0x08c0, 0x08ff) AM_READ(sprint2_steering2_r)
- AM_RANGE(0x0c00, 0x0fff) AM_READ(sprint2_sync_r)
- AM_RANGE(0x0c00, 0x0c7f) AM_WRITE(output_latch_w)
- AM_RANGE(0x0c80, 0x0cff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0d00, 0x0d7f) AM_WRITE(sprint2_collision_reset1_w)
- AM_RANGE(0x0d80, 0x0dff) AM_WRITE(sprint2_collision_reset2_w)
- AM_RANGE(0x0e00, 0x0e7f) AM_WRITE(sprint2_steering_reset1_w)
- AM_RANGE(0x0e80, 0x0eff) AM_WRITE(sprint2_steering_reset2_w)
- AM_RANGE(0x0f00, 0x0f7f) AM_WRITE(sprint2_noise_reset_w)
- AM_RANGE(0x1000, 0x13ff) AM_READ(sprint2_collision1_r)
- AM_RANGE(0x1400, 0x17ff) AM_READ(sprint2_collision2_r)
- AM_RANGE(0x1800, 0x1800) AM_READNOP /* debugger ROM location? */
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void sprint2_state::sprint2_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x03ff).rw(this, FUNC(sprint2_state::sprint2_wram_r), FUNC(sprint2_state::sprint2_wram_w));
+ map(0x0400, 0x07ff).ram().w(this, FUNC(sprint2_state::sprint2_video_ram_w)).share("video_ram");
+ map(0x0818, 0x081f).r(this, FUNC(sprint2_state::sprint2_input_A_r));
+ map(0x0828, 0x082f).r(this, FUNC(sprint2_state::sprint2_input_B_r));
+ map(0x0830, 0x0837).r(this, FUNC(sprint2_state::sprint2_dip_r));
+ map(0x0840, 0x087f).portr("COIN");
+ map(0x0880, 0x08bf).r(this, FUNC(sprint2_state::sprint2_steering1_r));
+ map(0x08c0, 0x08ff).r(this, FUNC(sprint2_state::sprint2_steering2_r));
+ map(0x0c00, 0x0fff).r(this, FUNC(sprint2_state::sprint2_sync_r));
+ map(0x0c00, 0x0c7f).w(this, FUNC(sprint2_state::output_latch_w));
+ map(0x0c80, 0x0cff).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x0d00, 0x0d7f).w(this, FUNC(sprint2_state::sprint2_collision_reset1_w));
+ map(0x0d80, 0x0dff).w(this, FUNC(sprint2_state::sprint2_collision_reset2_w));
+ map(0x0e00, 0x0e7f).w(this, FUNC(sprint2_state::sprint2_steering_reset1_w));
+ map(0x0e80, 0x0eff).w(this, FUNC(sprint2_state::sprint2_steering_reset2_w));
+ map(0x0f00, 0x0f7f).w(this, FUNC(sprint2_state::sprint2_noise_reset_w));
+ map(0x1000, 0x13ff).r(this, FUNC(sprint2_state::sprint2_collision1_r));
+ map(0x1400, 0x17ff).r(this, FUNC(sprint2_state::sprint2_collision2_r));
+ map(0x1800, 0x1800).nopr(); /* debugger ROM location? */
+ map(0x2000, 0x3fff).rom();
+}
static INPUT_PORTS_START( sprint2 )
diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp
index 72dda617441..df5f5a3da90 100644
--- a/src/mame/drivers/sprint4.cpp
+++ b/src/mame/drivers/sprint4.cpp
@@ -237,32 +237,33 @@ WRITE8_MEMBER(sprint4_state::attract_w)
}
-ADDRESS_MAP_START(sprint4_state::sprint4_cpu_map)
+void sprint4_state::sprint4_cpu_map(address_map &map)
+{
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ map.global_mask(0x3fff);
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w)
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram")
+ map(0x0080, 0x00ff).mirror(0x700).rw(this, FUNC(sprint4_state::wram_r), FUNC(sprint4_state::wram_w));
+ map(0x0800, 0x0bff).mirror(0x400).ram().w(this, FUNC(sprint4_state::video_ram_w)).share("videoram");
- AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(analog_r)
- AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(coin_r)
- AM_RANGE(0x0040, 0x0047) AM_MIRROR(0x718) AM_READ(collision_r)
- AM_RANGE(0x0060, 0x0063) AM_MIRROR(0x71c) AM_READ(options_r)
+ map(0x0000, 0x0007).mirror(0x718).r(this, FUNC(sprint4_state::analog_r));
+ map(0x0020, 0x0027).mirror(0x718).r(this, FUNC(sprint4_state::coin_r));
+ map(0x0040, 0x0047).mirror(0x718).r(this, FUNC(sprint4_state::collision_r));
+ map(0x0060, 0x0063).mirror(0x71c).r(this, FUNC(sprint4_state::options_r));
- AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0")
- AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1")
+ map(0x1000, 0x17ff).portr("IN0");
+ map(0x1800, 0x1fff).portr("IN1");
- AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x71f) AM_WRITE(attract_w)
- AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w)
- AM_RANGE(0x0040, 0x0041) AM_MIRROR(0x718) AM_WRITE(da_latch_w)
- AM_RANGE(0x0042, 0x0043) AM_MIRROR(0x718) AM_WRITE(bang_w)
- AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0060, 0x006f) AM_MIRROR(0x710) AM_DEVWRITE("latch", f9334_device, write_a0)
+ map(0x0000, 0x0000).mirror(0x71f).w(this, FUNC(sprint4_state::attract_w));
+ map(0x0020, 0x0027).mirror(0x718).w(this, FUNC(sprint4_state::collision_reset_w));
+ map(0x0040, 0x0041).mirror(0x718).w(this, FUNC(sprint4_state::da_latch_w));
+ map(0x0042, 0x0043).mirror(0x718).w(this, FUNC(sprint4_state::bang_w));
+ map(0x0044, 0x0045).mirror(0x718).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x0060, 0x006f).mirror(0x710).w("latch", FUNC(f9334_device::write_a0));
- AM_RANGE(0x2000, 0x27ff) AM_NOP /* diagnostic ROM */
- AM_RANGE(0x2800, 0x3fff) AM_ROM
+ map(0x2000, 0x27ff).noprw(); /* diagnostic ROM */
+ map(0x2800, 0x3fff).rom();
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( sprint4 )
diff --git a/src/mame/drivers/sprint8.cpp b/src/mame/drivers/sprint8.cpp
index e7f4b07ff9a..06dfb123d5c 100644
--- a/src/mame/drivers/sprint8.cpp
+++ b/src/mame/drivers/sprint8.cpp
@@ -109,24 +109,25 @@ WRITE_LINE_MEMBER(sprint8_state::team_w)
}
-ADDRESS_MAP_START(sprint8_state::sprint8_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0x1c00, 0x1c00) AM_READ(collision_r)
- AM_RANGE(0x1c01, 0x1c08) AM_READ(input_r)
- AM_RANGE(0x1c09, 0x1c09) AM_READ_PORT("IN0")
- AM_RANGE(0x1c0a, 0x1c0a) AM_READ_PORT("IN1")
- AM_RANGE(0x1c0f, 0x1c0f) AM_READ_PORT("VBLANK")
- AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("pos_h_ram")
- AM_RANGE(0x1c10, 0x1c1f) AM_WRITEONLY AM_SHARE("pos_v_ram")
- AM_RANGE(0x1c20, 0x1c2f) AM_WRITEONLY AM_SHARE("pos_d_ram")
- AM_RANGE(0x1c30, 0x1c37) AM_WRITE(lockout_w)
- AM_RANGE(0x1d00, 0x1d07) AM_DEVWRITE("latch", f9334_device, write_d0)
- AM_RANGE(0x1e00, 0x1e07) AM_DEVWRITE("motor", f9334_device, write_d0)
- AM_RANGE(0x1f00, 0x1f00) AM_WRITENOP /* probably a watchdog, disabled in service mode */
- AM_RANGE(0x2000, 0x3fff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void sprint8_state::sprint8_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x1800, 0x1bff).ram().w(this, FUNC(sprint8_state::video_ram_w)).share("video_ram");
+ map(0x1c00, 0x1c00).r(this, FUNC(sprint8_state::collision_r));
+ map(0x1c01, 0x1c08).r(this, FUNC(sprint8_state::input_r));
+ map(0x1c09, 0x1c09).portr("IN0");
+ map(0x1c0a, 0x1c0a).portr("IN1");
+ map(0x1c0f, 0x1c0f).portr("VBLANK");
+ map(0x1c00, 0x1c0f).writeonly().share("pos_h_ram");
+ map(0x1c10, 0x1c1f).writeonly().share("pos_v_ram");
+ map(0x1c20, 0x1c2f).writeonly().share("pos_d_ram");
+ map(0x1c30, 0x1c37).w(this, FUNC(sprint8_state::lockout_w));
+ map(0x1d00, 0x1d07).w("latch", FUNC(f9334_device::write_d0));
+ map(0x1e00, 0x1e07).w("motor", FUNC(f9334_device::write_d0));
+ map(0x1f00, 0x1f00).nopw(); /* probably a watchdog, disabled in service mode */
+ map(0x2000, 0x3fff).rom();
+ map(0xf800, 0xffff).rom();
+}
static INPUT_PORTS_START( sprint8 )
diff --git a/src/mame/drivers/spy.cpp b/src/mame/drivers/spy.cpp
index 0c074740bcf..496bb3af325 100644
--- a/src/mame/drivers/spy.cpp
+++ b/src/mame/drivers/spy.cpp
@@ -374,33 +374,35 @@ WRITE8_MEMBER(spy_state::k052109_051960_w)
m_k051960->k051960_w(space, offset - 0x3c00, data);
}
-ADDRESS_MAP_START(spy_state::spy_map)
- AM_RANGE(0x0000, 0x07ff) AM_READWRITE(spy_bankedram1_r, spy_bankedram1_w) AM_SHARE("ram")
- AM_RANGE(0x0800, 0x1aff) AM_RAM
- AM_RANGE(0x2000, 0x5fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
- AM_RANGE(0x3f80, 0x3f80) AM_WRITE(bankswitch_w)
- AM_RANGE(0x3f90, 0x3f90) AM_WRITE(spy_3f90_w)
- AM_RANGE(0x3fa0, 0x3fa0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x3fb0, 0x3fb0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3fc0, 0x3fc0) AM_WRITE(spy_sh_irqtrigger_w)
- AM_RANGE(0x3fd0, 0x3fd0) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3fd1, 0x3fd1) AM_READ_PORT("P1")
- AM_RANGE(0x3fd2, 0x3fd2) AM_READ_PORT("P2")
- AM_RANGE(0x3fd3, 0x3fd3) AM_READ_PORT("DSW1")
- AM_RANGE(0x3fe0, 0x3fe0) AM_READ_PORT("DSW2")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spy_state::spy_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
- AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void spy_state::spy_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rw(this, FUNC(spy_state::spy_bankedram1_r), FUNC(spy_state::spy_bankedram1_w)).share("ram");
+ map(0x0800, 0x1aff).ram();
+ map(0x2000, 0x5fff).rw(this, FUNC(spy_state::k052109_051960_r), FUNC(spy_state::k052109_051960_w));
+ map(0x3f80, 0x3f80).w(this, FUNC(spy_state::bankswitch_w));
+ map(0x3f90, 0x3f90).w(this, FUNC(spy_state::spy_3f90_w));
+ map(0x3fa0, 0x3fa0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x3fb0, 0x3fb0).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3fc0, 0x3fc0).w(this, FUNC(spy_state::spy_sh_irqtrigger_w));
+ map(0x3fd0, 0x3fd0).portr("SYSTEM");
+ map(0x3fd1, 0x3fd1).portr("P1");
+ map(0x3fd2, 0x3fd2).portr("P2");
+ map(0x3fd3, 0x3fd3).portr("DSW1");
+ map(0x3fe0, 0x3fe0).portr("DSW2");
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+void spy_state::spy_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(spy_state::sound_bank_w));
+ map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( spy )
diff --git a/src/mame/drivers/spyhuntertec.cpp b/src/mame/drivers/spyhuntertec.cpp
index 3b1f0753645..0c8a2c42266 100644
--- a/src/mame/drivers/spyhuntertec.cpp
+++ b/src/mame/drivers/spyhuntertec.cpp
@@ -424,28 +424,29 @@ READ8_MEMBER(spyhuntertec_state::spyhuntertec_in3_r)
return ret;
}
-ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_ROM
+void spyhuntertec_state::spyhuntertec_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).rom();
- AM_RANGE(0xa800, 0xa8ff) AM_RAM // the ROM is a solid fill in these areas, and they get tested as RAM, I think they moved the 'real' scroll regs here
- AM_RANGE(0xa900, 0xa9ff) AM_RAM
+ map(0xa800, 0xa8ff).ram(); // the ROM is a solid fill in these areas, and they get tested as RAM, I think they moved the 'real' scroll regs here
+ map(0xa900, 0xa9ff).ram();
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xebff) AM_MIRROR(0x0400) AM_RAM_WRITE(spyhunt_alpharam_w) AM_SHARE("spyhunt_alpha")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM //AM_SHARE("nvram")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_SHARE("spriteram") // origional spriteram
- AM_RANGE(0xfa00, 0xfa7f) AM_MIRROR(0x0180) AM_RAM_WRITE(spyhuntertec_paletteram_w) AM_SHARE("paletteram")
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(spyhuntertec_state::spyhunt_videoram_w)).share("videoram");
+ map(0xe800, 0xebff).mirror(0x0400).ram().w(this, FUNC(spyhuntertec_state::spyhunt_alpharam_w)).share("spyhunt_alpha");
+ map(0xf000, 0xf7ff).ram(); //AM_SHARE("nvram")
+ map(0xf800, 0xf9ff).ram().share("spriteram"); // origional spriteram
+ map(0xfa00, 0xfa7f).mirror(0x0180).ram().w(this, FUNC(spyhuntertec_state::spyhuntertec_paletteram_w)).share("paletteram");
- AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("DSW0")
- AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc02, 0xfc02) AM_READ(spyhuntertec_in2_r)
- AM_RANGE(0xfc03, 0xfc03) AM_READ(spyhuntertec_in3_r)
+ map(0xfc00, 0xfc00).portr("DSW0");
+ map(0xfc01, 0xfc01).portr("DSW1");
+ map(0xfc02, 0xfc02).r(this, FUNC(spyhuntertec_state::spyhuntertec_in2_r));
+ map(0xfc03, 0xfc03).r(this, FUNC(spyhuntertec_state::spyhuntertec_in3_r));
- AM_RANGE(0xfd00, 0xfd00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+ map(0xfd00, 0xfd00).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram2") // actual spriteram for this hw??
-ADDRESS_MAP_END
+ map(0xfe00, 0xffff).ram().share("spriteram2"); // actual spriteram for this hw??
+}
WRITE8_MEMBER(spyhuntertec_state::spyhuntertec_port04_w)
{
@@ -457,23 +458,25 @@ WRITE8_MEMBER(spyhuntertec_state::spyhuntertec_portf0_w)
if ((data != 0x03) && (data != 0x08)) printf("spyhuntertec_portf0_w %02x\n", data);
}
-ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x04) AM_WRITE(spyhuntertec_port04_w)
- AM_RANGE(0x84, 0x86) AM_WRITE(spyhunt_scroll_value_w)
- AM_RANGE(0xe0, 0xe0) AM_WRITENOP // was watchdog
+void spyhuntertec_state::spyhuntertec_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x04, 0x04).w(this, FUNC(spyhuntertec_state::spyhuntertec_port04_w));
+ map(0x84, 0x86).w(this, FUNC(spyhuntertec_state::spyhunt_scroll_value_w));
+ map(0xe0, 0xe0).nopw(); // was watchdog
// AM_RANGE(0xe8, 0xe8) AM_WRITENOP
- AM_RANGE(0xf0, 0xf0) AM_WRITE( spyhuntertec_portf0_w )
-ADDRESS_MAP_END
+ map(0xf0, 0xf0).w(this, FUNC(spyhuntertec_state::spyhuntertec_portf0_w));
+}
-ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
+void spyhuntertec_state::spyhuntertec_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x83ff).ram();
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
WRITE8_MEMBER(spyhuntertec_state::sound_irq_ack)
@@ -481,22 +484,23 @@ WRITE8_MEMBER(spyhuntertec_state::sound_irq_ack)
m_audiocpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
}
-ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void spyhuntertec_state::spyhuntertec_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
- AM_RANGE(0x00, 0x00) AM_WRITE(sound_irq_ack)
+ map(0x00, 0x00).w(this, FUNC(spyhuntertec_state::sound_irq_ack));
- AM_RANGE(0x0012, 0x0013) AM_DEVWRITE("ay3", ay8912_device, address_data_w)
- AM_RANGE(0x0012, 0x0012) AM_DEVREAD("ay3", ay8912_device, data_r)
+ map(0x0012, 0x0013).w("ay3", FUNC(ay8912_device::address_data_w));
+ map(0x0012, 0x0012).r("ay3", FUNC(ay8912_device::data_r));
- AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8912_device, address_data_w)
- AM_RANGE(0x0014, 0x0014) AM_DEVREAD("ay1", ay8912_device, data_r)
+ map(0x0014, 0x0015).w("ay1", FUNC(ay8912_device::address_data_w));
+ map(0x0014, 0x0014).r("ay1", FUNC(ay8912_device::data_r));
- AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8912_device, address_data_w) // data written to port a
- AM_RANGE(0x0018, 0x0018) AM_DEVREAD("ay2", ay8912_device, data_r) // actually read
+ map(0x0018, 0x0019).w("ay2", FUNC(ay8912_device::address_data_w)); // data written to port a
+ map(0x0018, 0x0018).r("ay2", FUNC(ay8912_device::data_r)); // actually read
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp
index 380cad09962..8b84f145420 100644
--- a/src/mame/drivers/squale.cpp
+++ b/src/mame/drivers/squale.cpp
@@ -617,23 +617,24 @@ TIMER_DEVICE_CALLBACK_MEMBER( squale_state::squale_scanline )
m_ef9365->update_scanline((uint16_t)param);
}
-ADDRESS_MAP_START(squale_state::squale_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0xefff) AM_RAM
- AM_RANGE(0xf000,0xf00f) AM_DEVREADWRITE("ef9365", ef9365_device, data_r, data_w)
- AM_RANGE(0xf010,0xf01f) AM_WRITE( ctrl_w )
- AM_RANGE(0xf020,0xf02f) AM_READ( video_ram_read_reg1 )
- AM_RANGE(0xf030,0xf03f) AM_READ( video_ram_read_reg2 )
- AM_RANGE(0xf044,0xf047) AM_DEVREADWRITE("pia_u75", pia6821_device, read, write)
- AM_RANGE(0xf048,0xf04b) AM_DEVREADWRITE("pia_u72", pia6821_device, read, write)
- AM_RANGE(0xf050,0xf05f) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xf060,0xf06f) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w)
- AM_RANGE(0xf080,0xf083) AM_DEVREADWRITE("wd1770", wd1770_device, read, write)
- AM_RANGE(0xf08a,0xf08a) AM_READWRITE( fdc_sel0_r, fdc_sel0_w )
- AM_RANGE(0xf08b,0xf08b) AM_READWRITE( fdc_sel1_r, fdc_sel1_w )
- AM_RANGE(0xf100,0xffff) AM_ROMBANK("rom_bank");
-
-ADDRESS_MAP_END
+void squale_state::squale_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).ram();
+ map(0xf000, 0xf00f).rw(m_ef9365, FUNC(ef9365_device::data_r), FUNC(ef9365_device::data_w));
+ map(0xf010, 0xf01f).w(this, FUNC(squale_state::ctrl_w));
+ map(0xf020, 0xf02f).r(this, FUNC(squale_state::video_ram_read_reg1));
+ map(0xf030, 0xf03f).r(this, FUNC(squale_state::video_ram_read_reg2));
+ map(0xf044, 0xf047).rw(m_pia_u75, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf048, 0xf04b).rw(m_pia_u72, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf050, 0xf05f).rw(m_acia, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w));
+ map(0xf060, 0xf06f).rw(m_ay8910, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0xf080, 0xf083).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write));
+ map(0xf08a, 0xf08a).rw(this, FUNC(squale_state::fdc_sel0_r), FUNC(squale_state::fdc_sel0_w));
+ map(0xf08b, 0xf08b).rw(this, FUNC(squale_state::fdc_sel1_r), FUNC(squale_state::fdc_sel1_w));
+ map(0xf100, 0xffff).bankr("rom_bank");
+
+}
/* Input ports */
static INPUT_PORTS_START( squale )
diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp
index 6018b9538c2..d6a2d8bcdde 100644
--- a/src/mame/drivers/srmp2.cpp
+++ b/src/mame/drivers/srmp2.cpp
@@ -392,26 +392,27 @@ WRITE8_MEMBER(srmp2_state::srmp2_irq4_ack_w)
}
-ADDRESS_MAP_START(srmp2_state::srmp2_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x140000, 0x143fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) /* Sprites Code + X + Attr */
- AM_RANGE(0x180000, 0x1805ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) /* Sprites Y */
- AM_RANGE(0x180600, 0x180607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */
- AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w) /* ADPCM bank, Color bank, etc. */
- AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM") /* Coinage */
- AM_RANGE(0x900000, 0x900001) AM_WRITENOP /* ??? */
- AM_RANGE(0xa00000, 0xa00001) AM_READWRITE8(iox_mux_r, iox_command_w,0x00ff) /* key matrix | I/O */
- AM_RANGE(0xa00002, 0xa00003) AM_READWRITE8(iox_status_r,iox_data_w,0x00ff)
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE8(adpcm_code_w,0x00ff) /* ADPCM number */
- AM_RANGE(0xb00002, 0xb00003) AM_READ8(vox_status_r,0x00ff) /* ADPCM voice status */
- AM_RANGE(0xc00000, 0xc00001) AM_WRITE8(srmp2_irq2_ack_w,0x00ff) /* irq ack lv 2 */
- AM_RANGE(0xd00000, 0xd00001) AM_WRITE8(srmp2_irq4_ack_w,0x00ff) /* irq ack lv 4 */
- AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP /* watchdog */
- AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
-ADDRESS_MAP_END
+void srmp2_state::srmp2_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0c0000, 0x0c3fff).ram().share("nvram");
+ map(0x140000, 0x143fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); /* Sprites Code + X + Attr */
+ map(0x180000, 0x1805ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); /* Sprites Y */
+ map(0x180600, 0x180607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0x1c0000, 0x1c0001).nopw(); /* ??? */
+ map(0x800000, 0x800001).w(this, FUNC(srmp2_state::srmp2_flags_w)); /* ADPCM bank, Color bank, etc. */
+ map(0x900000, 0x900001).portr("SYSTEM"); /* Coinage */
+ map(0x900000, 0x900001).nopw(); /* ??? */
+ map(0xa00001, 0xa00001).rw(this, FUNC(srmp2_state::iox_mux_r), FUNC(srmp2_state::iox_command_w)); /* key matrix | I/O */
+ map(0xa00003, 0xa00003).rw(this, FUNC(srmp2_state::iox_status_r), FUNC(srmp2_state::iox_data_w));
+ map(0xb00001, 0xb00001).w(this, FUNC(srmp2_state::adpcm_code_w)); /* ADPCM number */
+ map(0xb00003, 0xb00003).r(this, FUNC(srmp2_state::vox_status_r)); /* ADPCM voice status */
+ map(0xc00001, 0xc00001).w(this, FUNC(srmp2_state::srmp2_irq2_ack_w)); /* irq ack lv 2 */
+ map(0xd00001, 0xd00001).w(this, FUNC(srmp2_state::srmp2_irq4_ack_w)); /* irq ack lv 4 */
+ map(0xe00000, 0xe00001).nopw(); /* watchdog */
+ map(0xf00001, 0xf00001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xf00000, 0xf00003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+}
READ8_MEMBER(srmp2_state::mjyuugi_irq2_ack_r)
{
@@ -425,32 +426,33 @@ READ8_MEMBER(srmp2_state::mjyuugi_irq4_ack_r)
return 0xff; // value returned doesn't matter
}
-ADDRESS_MAP_START(srmp2_state::mjyuugi_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") /* Coinage */
- AM_RANGE(0x100000, 0x100001) AM_WRITE(mjyuugi_flags_w) /* Coin Counter */
- AM_RANGE(0x100010, 0x100011) AM_READNOP /* ??? */
- AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w) /* ADPCM bank, GFX bank */
- AM_RANGE(0x200000, 0x200001) AM_READ8(mjyuugi_irq2_ack_r,0x00ff) /* irq ack lv 2? */
- AM_RANGE(0x300000, 0x300001) AM_READ8(mjyuugi_irq4_ack_r,0x00ff) /* irq ack lv 4? */
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1") /* DSW 3-1 */
- AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2") /* DSW 3-2 */
- AM_RANGE(0x700000, 0x7003ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x800001) AM_READNOP /* ??? */
- AM_RANGE(0x900000, 0x900001) AM_READWRITE8(iox_mux_r, iox_command_w,0x00ff) /* key matrix | I/O */
- AM_RANGE(0x900002, 0x900003) AM_READWRITE8(iox_status_r,iox_data_w,0x00ff)
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE8(adpcm_code_w,0x00ff) /* ADPCM number */
- AM_RANGE(0xb00002, 0xb00003) AM_READ8(vox_status_r,0x00ff) /* ADPCM voice status */
- AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) /* Sprites Y */
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
-
- AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) /* Sprites Code + X + Attr */
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
+void srmp2_state::mjyuugi_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).portr("SYSTEM"); /* Coinage */
+ map(0x100000, 0x100001).w(this, FUNC(srmp2_state::mjyuugi_flags_w)); /* Coin Counter */
+ map(0x100010, 0x100011).nopr(); /* ??? */
+ map(0x100010, 0x100011).w(this, FUNC(srmp2_state::mjyuugi_adpcm_bank_w)); /* ADPCM bank, GFX bank */
+ map(0x200001, 0x200001).r(this, FUNC(srmp2_state::mjyuugi_irq2_ack_r)); /* irq ack lv 2? */
+ map(0x300001, 0x300001).r(this, FUNC(srmp2_state::mjyuugi_irq4_ack_r)); /* irq ack lv 4? */
+ map(0x500000, 0x500001).portr("DSW3-1"); /* DSW 3-1 */
+ map(0x500010, 0x500011).portr("DSW3-2"); /* DSW 3-2 */
+ map(0x700000, 0x7003ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x800001).nopr(); /* ??? */
+ map(0x900001, 0x900001).rw(this, FUNC(srmp2_state::iox_mux_r), FUNC(srmp2_state::iox_command_w)); /* key matrix | I/O */
+ map(0x900003, 0x900003).rw(this, FUNC(srmp2_state::iox_status_r), FUNC(srmp2_state::iox_data_w));
+ map(0xa00001, 0xa00001).w(this, FUNC(srmp2_state::adpcm_code_w)); /* ADPCM number */
+ map(0xb00003, 0xb00003).r(this, FUNC(srmp2_state::vox_status_r)); /* ADPCM voice status */
+ map(0xb00001, 0xb00001).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xb00000, 0xb00003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0xc00000, 0xc00001).nopw(); /* ??? */
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); /* Sprites Y */
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+
+ map(0xd02000, 0xd023ff).ram(); /* ??? only writes $00fa */
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); /* Sprites Code + X + Attr */
+ map(0xffc000, 0xffffff).ram().share("nvram");
+}
WRITE8_MEMBER(srmp2_state::srmp3_flags_w)
{
@@ -471,41 +473,44 @@ WRITE8_MEMBER(srmp2_state::srmp3_irq_ack_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(srmp2_state::srmp3_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* rom bank */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram") /* work ram */
- AM_RANGE(0xa800, 0xa800) AM_WRITENOP /* flag ? */
- AM_RANGE(0xb000, 0xb2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xb300, 0xb303) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r8, spritectrl_w8)
- AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) /* Sprites Code + X + Attr */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(srmp2_state::srmp3_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x20) AM_WRITE(srmp3_irq_ack_w) /* interrupt acknowledge */
- AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM") AM_WRITE(srmp3_flags_w) /* coin, service | GFX bank, counter, lockout */
- AM_RANGE(0x60, 0x60) AM_WRITE(srmp3_rombank_w) /* ROM bank select */
- AM_RANGE(0xa0, 0xa0) AM_WRITE(adpcm_code_w) /* ADPCM number */
- AM_RANGE(0xa1, 0xa1) AM_READ(vox_status_r) /* ADPCM voice status */
- AM_RANGE(0xc0, 0xc0) AM_READWRITE(iox_mux_r, iox_command_w) /* key matrix | I/O */
- AM_RANGE(0xc1, 0xc1) AM_READWRITE(iox_status_r,iox_data_w)
- AM_RANGE(0xe0, 0xe1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xe2, 0xe2) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(srmp2_state::rmgoldyh_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* rom bank */
- AM_RANGE(0xa000, 0xafff) AM_RAM AM_SHARE("nvram") /* work ram */
- AM_RANGE(0xb000, 0xb2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xb300, 0xb303) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r8, spritectrl_w8)
- AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) /* Sprites Code + X + Attr */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
-ADDRESS_MAP_END
+void srmp2_state::srmp3_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1"); /* rom bank */
+ map(0xa000, 0xa7ff).ram().share("nvram"); /* work ram */
+ map(0xa800, 0xa800).nopw(); /* flag ? */
+ map(0xb000, 0xb2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xb300, 0xb303).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r8), FUNC(seta001_device::spritectrl_w8));
+ map(0xb800, 0xb800).nopw(); /* flag ? */
+ map(0xc000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); /* Sprites Code + X + Attr */
+ map(0xe000, 0xffff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+}
+
+void srmp2_state::srmp3_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x20, 0x20).w(this, FUNC(srmp2_state::srmp3_irq_ack_w)); /* interrupt acknowledge */
+ map(0x40, 0x40).portr("SYSTEM").w(this, FUNC(srmp2_state::srmp3_flags_w)); /* coin, service | GFX bank, counter, lockout */
+ map(0x60, 0x60).w(this, FUNC(srmp2_state::srmp3_rombank_w)); /* ROM bank select */
+ map(0xa0, 0xa0).w(this, FUNC(srmp2_state::adpcm_code_w)); /* ADPCM number */
+ map(0xa1, 0xa1).r(this, FUNC(srmp2_state::vox_status_r)); /* ADPCM voice status */
+ map(0xc0, 0xc0).rw(this, FUNC(srmp2_state::iox_mux_r), FUNC(srmp2_state::iox_command_w)); /* key matrix | I/O */
+ map(0xc1, 0xc1).rw(this, FUNC(srmp2_state::iox_status_r), FUNC(srmp2_state::iox_data_w));
+ map(0xe0, 0xe1).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xe2, 0xe2).r("aysnd", FUNC(ay8910_device::data_r));
+}
+
+void srmp2_state::rmgoldyh_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("bank1"); /* rom bank */
+ map(0xa000, 0xafff).ram().share("nvram"); /* work ram */
+ map(0xb000, 0xb2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xb300, 0xb303).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r8), FUNC(seta001_device::spritectrl_w8));
+ map(0xb800, 0xb800).nopw(); /* flag ? */
+ map(0xc000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); /* Sprites Code + X + Attr */
+ map(0xe000, 0xffff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+}
WRITE8_MEMBER(srmp2_state::rmgoldyh_rombank_w)
{
@@ -518,14 +523,15 @@ WRITE8_MEMBER(srmp2_state::rmgoldyh_rombank_w)
membank("bank1")->set_entry(data & 0x1f);
}
-ADDRESS_MAP_START(srmp2_state::rmgoldyh_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_IMPORT_FROM(srmp3_io_map)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */
- AM_RANGE(0x60, 0x60) AM_WRITE(rmgoldyh_rombank_w) /* ROM bank select */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW4")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("DSW3")
-ADDRESS_MAP_END
+void srmp2_state::rmgoldyh_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ srmp3_io_map(map);
+ map(0x00, 0x00).nopw(); /* watchdog */
+ map(0x60, 0x60).w(this, FUNC(srmp2_state::rmgoldyh_rombank_w)); /* ROM bank select */
+ map(0x80, 0x80).portr("DSW4");
+ map(0x81, 0x81).portr("DSW3");
+}
/***************************************************************************
diff --git a/src/mame/drivers/srmp5.cpp b/src/mame/drivers/srmp5.cpp
index cb67c18dd8a..5ca7aa3db9a 100644
--- a/src/mame/drivers/srmp5.cpp
+++ b/src/mame/drivers/srmp5.cpp
@@ -362,43 +362,45 @@ READ32_MEMBER(srmp5_state::irq_ack_clear)
return 0;
}
-ADDRESS_MAP_START(srmp5_state::srmp5_mem)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM //maybe 0 - 2fffff ?
- AM_RANGE(0x002f0000, 0x002f7fff) AM_RAM
- AM_RANGE(0x01000000, 0x01000003) AM_WRITEONLY // 0xaa .. watchdog ?
- AM_RANGE(0x01800000, 0x01800003) AM_RAM //?1
- AM_RANGE(0x01800004, 0x01800007) AM_READ_PORT("DSW1")
- AM_RANGE(0x01800008, 0x0180000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x0180000c, 0x0180000f) AM_WRITE(bank_w)
- AM_RANGE(0x01800010, 0x01800013) AM_READ(srmp5_inputs_r) //multiplexed controls (selected by writes to 1c)
- AM_RANGE(0x01800014, 0x01800017) AM_READ_PORT("TEST")
- AM_RANGE(0x0180001c, 0x0180001f) AM_WRITE(input_select_w)//c1 c2 c4 c8 => mahjong inputs (at $10) - bits 0-3
- AM_RANGE(0x01800200, 0x01800203) AM_RAM //sound related ? only few writes after boot
- AM_RANGE(0x01802000, 0x01802003) AM_WRITE(cmd1_w)
- AM_RANGE(0x01802004, 0x01802007) AM_WRITE(cmd2_w)
- AM_RANGE(0x01802008, 0x0180200b) AM_READ(cmd_stat32_r)
- AM_RANGE(0x01a00000, 0x01bfffff) AM_READ(chrrom_r)
- AM_RANGE(0x01c00000, 0x01c00003) AM_READNOP // debug? 'Toru'
-
- AM_RANGE(0x0a000000, 0x0a0fffff) AM_READWRITE(spr_r, spr_w)
- AM_RANGE(0x0a100000, 0x0a17ffff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
+void srmp5_state::srmp5_mem(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram(); //maybe 0 - 2fffff ?
+ map(0x002f0000, 0x002f7fff).ram();
+ map(0x01000000, 0x01000003).writeonly(); // 0xaa .. watchdog ?
+ map(0x01800000, 0x01800003).ram(); //?1
+ map(0x01800004, 0x01800007).portr("DSW1");
+ map(0x01800008, 0x0180000b).portr("DSW2");
+ map(0x0180000c, 0x0180000f).w(this, FUNC(srmp5_state::bank_w));
+ map(0x01800010, 0x01800013).r(this, FUNC(srmp5_state::srmp5_inputs_r)); //multiplexed controls (selected by writes to 1c)
+ map(0x01800014, 0x01800017).portr("TEST");
+ map(0x0180001c, 0x0180001f).w(this, FUNC(srmp5_state::input_select_w));//c1 c2 c4 c8 => mahjong inputs (at $10) - bits 0-3
+ map(0x01800200, 0x01800203).ram(); //sound related ? only few writes after boot
+ map(0x01802000, 0x01802003).w(this, FUNC(srmp5_state::cmd1_w));
+ map(0x01802004, 0x01802007).w(this, FUNC(srmp5_state::cmd2_w));
+ map(0x01802008, 0x0180200b).r(this, FUNC(srmp5_state::cmd_stat32_r));
+ map(0x01a00000, 0x01bfffff).r(this, FUNC(srmp5_state::chrrom_r));
+ map(0x01c00000, 0x01c00003).nopr(); // debug? 'Toru'
+
+ map(0x0a000000, 0x0a0fffff).rw(this, FUNC(srmp5_state::spr_r), FUNC(srmp5_state::spr_w));
+ map(0x0a100000, 0x0a17ffff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
//0?N???A?????????i??????????
- AM_RANGE(0x0a180000, 0x0a18011f) AM_READWRITE(srmp5_vidregs_r, srmp5_vidregs_w)
- AM_RANGE(0x0a180000, 0x0a180003) AM_READNOP // write 0x00000400
- AM_RANGE(0x0a200000, 0x0a3fffff) AM_READWRITE(tileram_r, tileram_w)
- AM_RANGE(0x0fc00000, 0x0fdfffff) AM_MIRROR(0x10000000) AM_ROM AM_REGION("maincpu", 0)
-
- AM_RANGE(0x1eff0000, 0x1eff001f) AM_WRITEONLY
- AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(srmp5_state::st0016_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
+ map(0x0a180000, 0x0a18011f).rw(this, FUNC(srmp5_state::srmp5_vidregs_r), FUNC(srmp5_state::srmp5_vidregs_w));
+ map(0x0a180000, 0x0a180003).nopr(); // write 0x00000400
+ map(0x0a200000, 0x0a3fffff).rw(this, FUNC(srmp5_state::tileram_r), FUNC(srmp5_state::tileram_w));
+ map(0x0fc00000, 0x0fdfffff).mirror(0x10000000).rom().region("maincpu", 0);
+
+ map(0x1eff0000, 0x1eff001f).writeonly();
+ map(0x1eff003c, 0x1eff003f).r(this, FUNC(srmp5_state::irq_ack_clear));
+}
+
+void srmp5_state::st0016_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
//AM_RANGE(0xe900, 0xe9ff) // sound - internal
//AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf000, 0xffff).ram();
+}
READ8_MEMBER(srmp5_state::cmd1_r)
{
@@ -423,16 +425,17 @@ WRITE8_MEMBER(srmp5_state::st0016_rom_bank_w)
}
-ADDRESS_MAP_START(srmp5_state::st0016_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void srmp5_state::st0016_io(address_map &map)
+{
+ map.global_mask(0xff);
//AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w)
- AM_RANGE(0xc0, 0xc0) AM_READ(cmd1_r)
- AM_RANGE(0xc1, 0xc1) AM_READ(cmd2_r)
- AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat8_r)
- AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w)
- AM_RANGE(0xe7, 0xe7) AM_WRITE(st0016_rom_bank_w)
+ map(0xc0, 0xc0).r(this, FUNC(srmp5_state::cmd1_r));
+ map(0xc1, 0xc1).r(this, FUNC(srmp5_state::cmd2_r));
+ map(0xc2, 0xc2).r(this, FUNC(srmp5_state::cmd_stat8_r));
+ map(0xe1, 0xe1).w(this, FUNC(srmp5_state::st0016_rom_bank_w));
+ map(0xe7, 0xe7).w(this, FUNC(srmp5_state::st0016_rom_bank_w));
//AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( srmp5 )
diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp
index f1e44dbc2ca..186c26db0ff 100644
--- a/src/mame/drivers/srmp6.cpp
+++ b/src/mame/drivers/srmp6.cpp
@@ -553,33 +553,34 @@ READ16_MEMBER(srmp6_state::srmp6_irq_ack_r)
return 0; // value read doesn't matter
}
-ADDRESS_MAP_START(srmp6_state::srmp6_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x23ffff) AM_RAM // work RAM
- AM_RANGE(0x600000, 0x7fffff) AM_ROMBANK("bank1") // banked ROM (used by ROM check)
- AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("user1", 0)
+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);
- AM_RANGE(0x300000, 0x300005) AM_READWRITE(srmp6_inputs_r, srmp6_input_select_w) // inputs
- AM_RANGE(0x480000, 0x480fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("palette")
- AM_RANGE(0x4d0000, 0x4d0001) AM_READ(srmp6_irq_ack_r)
+ map(0x300000, 0x300005).rw(this, FUNC(srmp6_state::srmp6_inputs_r), FUNC(srmp6_state::srmp6_input_select_w)); // inputs
+ map(0x480000, 0x480fff).ram().w(this, FUNC(srmp6_state::paletteram_w)).share("palette");
+ map(0x4d0000, 0x4d0001).r(this, FUNC(srmp6_state::srmp6_irq_ack_r));
// OBJ RAM: checked [$400000-$47dfff]
- AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_SHARE("sprram")
+ map(0x400000, 0x47ffff).ram().share("sprram");
// CHR RAM: checked [$500000-$5fffff]
- AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(tileram_r,tileram_w) AM_SHARE("chrram")
+ map(0x500000, 0x5fffff).rw(this, FUNC(srmp6_state::tileram_r), FUNC(srmp6_state::tileram_w)).share("chrram");
//AM_RANGE(0x5fff00, 0x5fffff) AM_WRITE(dma_w) AM_SHARE("dmaram")
- AM_RANGE(0x4c0000, 0x4c006f) AM_READWRITE(video_regs_r, video_regs_w) AM_SHARE("video_regs") // ? gfx regs ST-0026 NiLe
- AM_RANGE(0x4e0000, 0x4e00ff) AM_DEVREADWRITE("nile", nile_device, nile_snd_r, nile_snd_w)
- AM_RANGE(0x4e0100, 0x4e0101) AM_DEVREADWRITE("nile", nile_device, nile_sndctrl_r, nile_sndctrl_w)
+ map(0x4c0000, 0x4c006f).rw(this, FUNC(srmp6_state::video_regs_r), FUNC(srmp6_state::video_regs_w)).share("video_regs"); // ? gfx regs ST-0026 NiLe
+ 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)
//AM_RANGE(0x5fff00, 0x5fff1f) AM_RAM // ? see routine $5ca8, video_regs related ???
//AM_RANGE(0xf00004, 0xf00005) AM_RAM // ?
//AM_RANGE(0xf00006, 0xf00007) AM_RAM // ?
-ADDRESS_MAP_END
+}
/***************************************************************************
diff --git a/src/mame/drivers/srumbler.cpp b/src/mame/drivers/srumbler.cpp
index b92b611254e..58717afdd1c 100644
--- a/src/mame/drivers/srumbler.cpp
+++ b/src/mame/drivers/srumbler.cpp
@@ -81,39 +81,41 @@ to the page register.
Ignore the warnings about writing to unmapped memory.
*/
-ADDRESS_MAP_START(srumbler_state::srumbler_map)
- AM_RANGE(0x0000, 0x1dff) AM_RAM /* RAM (of 1 sort or another) */
- AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(background_w) AM_SHARE("backgroundram")
- AM_RANGE(0x4008, 0x4008) AM_READ_PORT("SYSTEM") AM_WRITE(bankswitch_w)
- AM_RANGE(0x4009, 0x4009) AM_READ_PORT("P1") AM_WRITE(_4009_w)
- AM_RANGE(0x400a, 0x400a) AM_READ_PORT("P2")
- AM_RANGE(0x400b, 0x400b) AM_READ_PORT("DSW1")
- AM_RANGE(0x400c, 0x400c) AM_READ_PORT("DSW2")
- AM_RANGE(0x400a, 0x400d) AM_WRITE(scroll_w)
- AM_RANGE(0x400e, 0x400e) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x5000, 0x5fff) AM_ROMBANK("5000") AM_WRITE(foreground_w) AM_SHARE("foregroundram") /* Banked ROM */
- AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("6000") /* Banked ROM */
- AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* Video RAM 2 ??? (not used) */
- AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("7000") /* Banked ROM */
- AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("8000") /* Banked ROM */
- AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("9000") /* Banked ROM */
- AM_RANGE(0xa000, 0xafff) AM_ROMBANK("a000") /* Banked ROM */
- AM_RANGE(0xb000, 0xbfff) AM_ROMBANK("b000") /* Banked ROM */
- AM_RANGE(0xc000, 0xcfff) AM_ROMBANK("c000") /* Banked ROM */
- AM_RANGE(0xd000, 0xdfff) AM_ROMBANK("d000") /* Banked ROM */
- AM_RANGE(0xe000, 0xefff) AM_ROMBANK("e000") /* Banked ROM */
- AM_RANGE(0xf000, 0xffff) AM_ROMBANK("f000") /* Banked ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(srumbler_state::srumbler_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym2", ym2203_device, write)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void srumbler_state::srumbler_map(address_map &map)
+{
+ map(0x0000, 0x1dff).ram(); /* RAM (of 1 sort or another) */
+ map(0x1e00, 0x1fff).ram().share("spriteram");
+ map(0x2000, 0x3fff).ram().w(this, FUNC(srumbler_state::background_w)).share("backgroundram");
+ map(0x4008, 0x4008).portr("SYSTEM").w(this, FUNC(srumbler_state::bankswitch_w));
+ map(0x4009, 0x4009).portr("P1").w(this, FUNC(srumbler_state::_4009_w));
+ map(0x400a, 0x400a).portr("P2");
+ map(0x400b, 0x400b).portr("DSW1");
+ map(0x400c, 0x400c).portr("DSW2");
+ map(0x400a, 0x400d).w(this, FUNC(srumbler_state::scroll_w));
+ map(0x400e, 0x400e).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x5000, 0x5fff).bankr("5000").w(this, FUNC(srumbler_state::foreground_w)).share("foregroundram"); /* Banked ROM */
+ map(0x6000, 0x6fff).bankr("6000"); /* Banked ROM */
+ map(0x6000, 0x6fff).nopw(); /* Video RAM 2 ??? (not used) */
+ map(0x7000, 0x7fff).bankr("7000"); /* Banked ROM */
+ map(0x7000, 0x73ff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x8000, 0x8fff).bankr("8000"); /* Banked ROM */
+ map(0x9000, 0x9fff).bankr("9000"); /* Banked ROM */
+ map(0xa000, 0xafff).bankr("a000"); /* Banked ROM */
+ map(0xb000, 0xbfff).bankr("b000"); /* Banked ROM */
+ map(0xc000, 0xcfff).bankr("c000"); /* Banked ROM */
+ map(0xd000, 0xdfff).bankr("d000"); /* Banked ROM */
+ map(0xe000, 0xefff).bankr("e000"); /* Banked ROM */
+ map(0xf000, 0xffff).bankr("f000"); /* Banked ROM */
+}
+
+void srumbler_state::srumbler_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8001).w("ym1", FUNC(ym2203_device::write));
+ map(0xa000, 0xa001).w("ym2", FUNC(ym2203_device::write));
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( srumbler )
diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp
index 3886d2cdafa..8e1ee311638 100644
--- a/src/mame/drivers/ssem.cpp
+++ b/src/mame/drivers/ssem.cpp
@@ -77,9 +77,10 @@ inline uint32_t ssem_state::reverse(uint32_t v)
* Address map *
\****************************************************/
-ADDRESS_MAP_START(ssem_state::ssem_map)
- AM_RANGE(0x00, 0x7f) AM_RAM AM_SHARE("store")// Primary store
-ADDRESS_MAP_END
+void ssem_state::ssem_map(address_map &map)
+{
+ map(0x00, 0x7f).ram().share("store");// Primary store
+}
/****************************************************\
* Input ports and front panel handling *
diff --git a/src/mame/drivers/ssfindo.cpp b/src/mame/drivers/ssfindo.cpp
index 89fffd54122..57f7ba3529a 100644
--- a/src/mame/drivers/ssfindo.cpp
+++ b/src/mame/drivers/ssfindo.cpp
@@ -601,38 +601,40 @@ READ32_MEMBER(ssfindo_state::randomized_r)
return machine().rand();
}
-ADDRESS_MAP_START(ssfindo_state::ssfindo_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
- AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w)
- AM_RANGE(0x03012e60, 0x03012e67) AM_NOP
- AM_RANGE(0x03012fe0, 0x03012fe3) AM_WRITE(debug_w)
- AM_RANGE(0x03012ff0, 0x03012ff3) AM_NOP
- AM_RANGE(0x03012ff4, 0x03012ff7) AM_WRITENOP AM_READ(ff4_r) //status flag ?
- AM_RANGE(0x03012ff8, 0x03012fff) AM_NOP
- AM_RANGE(0x03240000, 0x03240003) AM_READ_PORT("IN0") AM_WRITENOP
- AM_RANGE(0x03241000, 0x03241003) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x03242000, 0x03242003) AM_READ(io_r) AM_WRITE(io_w)
- AM_RANGE(0x03243000, 0x03243003) AM_READ_PORT("DSW") AM_WRITENOP
- AM_RANGE(0x0324f000, 0x0324f003) AM_READ(SIMPLEIO_r)
- AM_RANGE(0x03245000, 0x03245003) AM_WRITENOP /* sound ? */
- AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w)
- AM_RANGE(0x10000000, 0x11ffffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ssfindo_state::ppcar_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
- AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w)
- AM_RANGE(0x03012b00, 0x03012bff) AM_READ(randomized_r) AM_WRITENOP
- AM_RANGE(0x03012e60, 0x03012e67) AM_WRITENOP
- AM_RANGE(0x03012ff8, 0x03012ffb) AM_READ_PORT("IN0") AM_WRITENOP
- AM_RANGE(0x032c0000, 0x032c0003) AM_READ_PORT("IN1") AM_WRITENOP
- AM_RANGE(0x03340000, 0x03340007) AM_WRITENOP
- AM_RANGE(0x03341000, 0x0334101f) AM_WRITENOP
- AM_RANGE(0x033c0000, 0x033c0003) AM_READ(io_r) AM_WRITE(io_w)
- AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w)
- AM_RANGE(0x08000000, 0x08ffffff) AM_RAM
- AM_RANGE(0x10000000, 0x10ffffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
+void ssfindo_state::ssfindo_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom();
+ map(0x03200000, 0x032001ff).rw(this, FUNC(ssfindo_state::PS7500_IO_r), FUNC(ssfindo_state::PS7500_IO_w));
+ map(0x03012e60, 0x03012e67).noprw();
+ map(0x03012fe0, 0x03012fe3).w(this, FUNC(ssfindo_state::debug_w));
+ map(0x03012ff0, 0x03012ff3).noprw();
+ map(0x03012ff4, 0x03012ff7).nopw().r(this, FUNC(ssfindo_state::ff4_r)); //status flag ?
+ map(0x03012ff8, 0x03012fff).noprw();
+ map(0x03240000, 0x03240003).portr("IN0").nopw();
+ map(0x03241000, 0x03241003).portr("IN1").nopw();
+ map(0x03242000, 0x03242003).r(this, FUNC(ssfindo_state::io_r)).w(this, FUNC(ssfindo_state::io_w));
+ map(0x03243000, 0x03243003).portr("DSW").nopw();
+ map(0x0324f000, 0x0324f003).r(this, FUNC(ssfindo_state::SIMPLEIO_r));
+ map(0x03245000, 0x03245003).nopw(); /* sound ? */
+ map(0x03400000, 0x03400003).w(this, FUNC(ssfindo_state::FIFO_w));
+ map(0x10000000, 0x11ffffff).ram().share("vram");
+}
+
+void ssfindo_state::ppcar_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom();
+ map(0x03200000, 0x032001ff).rw(this, FUNC(ssfindo_state::PS7500_IO_r), FUNC(ssfindo_state::PS7500_IO_w));
+ map(0x03012b00, 0x03012bff).r(this, FUNC(ssfindo_state::randomized_r)).nopw();
+ map(0x03012e60, 0x03012e67).nopw();
+ map(0x03012ff8, 0x03012ffb).portr("IN0").nopw();
+ map(0x032c0000, 0x032c0003).portr("IN1").nopw();
+ map(0x03340000, 0x03340007).nopw();
+ map(0x03341000, 0x0334101f).nopw();
+ map(0x033c0000, 0x033c0003).r(this, FUNC(ssfindo_state::io_r)).w(this, FUNC(ssfindo_state::io_w));
+ map(0x03400000, 0x03400003).w(this, FUNC(ssfindo_state::FIFO_w));
+ map(0x08000000, 0x08ffffff).ram();
+ map(0x10000000, 0x10ffffff).ram().share("vram");
+}
READ32_MEMBER(ssfindo_state::tetfight_unk_r)
{
@@ -645,16 +647,17 @@ WRITE32_MEMBER(ssfindo_state::tetfight_unk_w)
//sound latch ?
}
-ADDRESS_MAP_START(ssfindo_state::tetfight_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM
- AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w)
- AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w)
- AM_RANGE(0x03240000, 0x03240003) AM_READ_PORT("IN0")
- AM_RANGE(0x03240004, 0x03240007) AM_READ_PORT("IN1")
- AM_RANGE(0x03240008, 0x0324000b) AM_READ_PORT("DSW2")
- AM_RANGE(0x03240020, 0x03240023) AM_READWRITE(tetfight_unk_r, tetfight_unk_w)
- AM_RANGE(0x10000000, 0x14ffffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
+void ssfindo_state::tetfight_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom();
+ map(0x03200000, 0x032001ff).rw(this, FUNC(ssfindo_state::PS7500_IO_r), FUNC(ssfindo_state::PS7500_IO_w));
+ map(0x03400000, 0x03400003).w(this, FUNC(ssfindo_state::FIFO_w));
+ map(0x03240000, 0x03240003).portr("IN0");
+ map(0x03240004, 0x03240007).portr("IN1");
+ map(0x03240008, 0x0324000b).portr("DSW2");
+ map(0x03240020, 0x03240023).rw(this, FUNC(ssfindo_state::tetfight_unk_r), FUNC(ssfindo_state::tetfight_unk_w));
+ map(0x10000000, 0x14ffffff).ram().share("vram");
+}
void ssfindo_state::machine_reset()
{
diff --git a/src/mame/drivers/sshangha.cpp b/src/mame/drivers/sshangha.cpp
index abc8e48d36a..7e1e99c8aa4 100644
--- a/src/mame/drivers/sshangha.cpp
+++ b/src/mame/drivers/sshangha.cpp
@@ -168,65 +168,67 @@ WRITE16_MEMBER( sshangha_state::sshangha_protection_region_8_146_w )
}
-ADDRESS_MAP_START(sshangha_state::sshangha_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10000f) AM_RAM AM_SHARE("sound_shared")
-
- AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x206800, 0x207fff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x320000, 0x320001) AM_WRITE(sshangha_video_w)
- AM_RANGE(0x320002, 0x320005) AM_WRITENOP
- AM_RANGE(0x320006, 0x320007) AM_READNOP //irq ack
-
- AM_RANGE(0x340000, 0x340fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x350000, 0x350001) AM_READ(deco_71_r)
- AM_RANGE(0x350000, 0x350007) AM_WRITENOP
- AM_RANGE(0x360000, 0x360fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x370000, 0x370001) AM_READ(deco_71_r)
- AM_RANGE(0x370000, 0x370007) AM_WRITENOP
-
- AM_RANGE(0x380000, 0x3803ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites_w) AM_SHARE("sprite_palram")
- AM_RANGE(0x380400, 0x3807ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilehigh_w) AM_SHARE("tile_palram2")
- AM_RANGE(0x380800, 0x380bff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites2_w) AM_SHARE("sprite_palram2")
- AM_RANGE(0x380c00, 0x380fff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilelow_w) AM_SHARE("tile_palram1")
- AM_RANGE(0x381000, 0x383fff) AM_RAM // unused palette area
- AM_RANGE(0x3e0000, 0x3e3fff) AM_READWRITE(sshangha_protection_region_8_146_r,sshangha_protection_region_8_146_w)
- AM_RANGE(0x3ec000, 0x3f3fff) AM_RAM
- AM_RANGE(0x3f4000, 0x3f7fff) AM_READWRITE(sshangha_protection_region_d_146_r,sshangha_protection_region_d_146_w) AM_SHARE("prot_data")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sshangha_state::sshanghb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x084000, 0x0847ff) AM_READ(sshanghb_protection16_r)
- AM_RANGE(0x101000, 0x10100f) AM_RAM AM_SHARE("sound_shared") /* the bootleg writes here */
-
- AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_SHARE("pf2_rowscroll")
- AM_RANGE(0x206800, 0x207fff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x320000, 0x320001) AM_WRITE(sshangha_video_w)
- AM_RANGE(0x320002, 0x320005) AM_WRITENOP
- AM_RANGE(0x320006, 0x320007) AM_READNOP //irq ack
-
- AM_RANGE(0x340000, 0x340fff) AM_RAM // original spriteram
-
- AM_RANGE(0x380000, 0x3803ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites_w) AM_SHARE("sprite_palram")
- AM_RANGE(0x380400, 0x3807ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilehigh_w) AM_SHARE("tile_palram2")
- AM_RANGE(0x380800, 0x380bff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites2_w) AM_SHARE("sprite_palram2")
- AM_RANGE(0x380c00, 0x380fff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilelow_w) AM_SHARE("tile_palram1")
- AM_RANGE(0x381000, 0x383fff) AM_RAM // unused palette area
-
- AM_RANGE(0x3c0000, 0x3c0fff) AM_RAM AM_SHARE("spriteram") // bootleg spriteram
- AM_RANGE(0xfec000, 0xff3fff) AM_RAM
- AM_RANGE(0xff4000, 0xff47ff) AM_RAM
-ADDRESS_MAP_END
+void sshangha_state::sshangha_map(address_map &map)
+{
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10000f).ram().share("sound_shared");
+
+ map(0x200000, 0x201fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x203fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x204000, 0x2047ff).ram().share("pf1_rowscroll");
+ map(0x206000, 0x2067ff).ram().share("pf2_rowscroll");
+ map(0x206800, 0x207fff).ram();
+ map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x320000, 0x320001).w(this, FUNC(sshangha_state::sshangha_video_w));
+ map(0x320002, 0x320005).nopw();
+ map(0x320006, 0x320007).nopr(); //irq ack
+
+ map(0x340000, 0x340fff).ram().share("spriteram2");
+ map(0x350000, 0x350001).r(this, FUNC(sshangha_state::deco_71_r));
+ map(0x350000, 0x350007).nopw();
+ map(0x360000, 0x360fff).ram().share("spriteram");
+ map(0x370000, 0x370001).r(this, FUNC(sshangha_state::deco_71_r));
+ map(0x370000, 0x370007).nopw();
+
+ map(0x380000, 0x3803ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites_w)).share("sprite_palram");
+ map(0x380400, 0x3807ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilehigh_w)).share("tile_palram2");
+ map(0x380800, 0x380bff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites2_w)).share("sprite_palram2");
+ map(0x380c00, 0x380fff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilelow_w)).share("tile_palram1");
+ map(0x381000, 0x383fff).ram(); // unused palette area
+ map(0x3e0000, 0x3e3fff).rw(this, FUNC(sshangha_state::sshangha_protection_region_8_146_r), FUNC(sshangha_state::sshangha_protection_region_8_146_w));
+ map(0x3ec000, 0x3f3fff).ram();
+ map(0x3f4000, 0x3f7fff).rw(this, FUNC(sshangha_state::sshangha_protection_region_d_146_r), FUNC(sshangha_state::sshangha_protection_region_d_146_w)).share("prot_data");
+}
+
+void sshangha_state::sshanghb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x084000, 0x0847ff).r(this, FUNC(sshangha_state::sshanghb_protection16_r));
+ map(0x101000, 0x10100f).ram().share("sound_shared"); /* the bootleg writes here */
+
+ map(0x200000, 0x201fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x203fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x204000, 0x2047ff).ram().share("pf1_rowscroll");
+ map(0x206000, 0x2067ff).ram().share("pf2_rowscroll");
+ map(0x206800, 0x207fff).ram();
+ map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x320000, 0x320001).w(this, FUNC(sshangha_state::sshangha_video_w));
+ map(0x320002, 0x320005).nopw();
+ map(0x320006, 0x320007).nopr(); //irq ack
+
+ map(0x340000, 0x340fff).ram(); // original spriteram
+
+ map(0x380000, 0x3803ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites_w)).share("sprite_palram");
+ map(0x380400, 0x3807ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilehigh_w)).share("tile_palram2");
+ map(0x380800, 0x380bff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites2_w)).share("sprite_palram2");
+ map(0x380c00, 0x380fff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilelow_w)).share("tile_palram1");
+ map(0x381000, 0x383fff).ram(); // unused palette area
+
+ map(0x3c0000, 0x3c0fff).ram().share("spriteram"); // bootleg spriteram
+ map(0xfec000, 0xff3fff).ram();
+ map(0xff4000, 0xff47ff).ram();
+}
/******************************************************************************/
@@ -243,13 +245,14 @@ WRITE8_MEMBER(sshangha_state::sshangha_sound_shared_w)
}
/* Note: there's rom data after 0x8000 but the game never seem to call a rom bank, left-over? */
-ADDRESS_MAP_START(sshangha_state::sshangha_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xc200, 0xc201) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf800, 0xf807) AM_READWRITE(sshangha_sound_shared_r,sshangha_sound_shared_w)
- AM_RANGE(0xf808, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void sshangha_state::sshangha_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc200, 0xc201).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf800, 0xf807).rw(this, FUNC(sshangha_state::sshangha_sound_shared_r), FUNC(sshangha_state::sshangha_sound_shared_w));
+ map(0xf808, 0xffff).ram();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/sshot.cpp b/src/mame/drivers/sshot.cpp
index 12c6112fad2..2836f7cd0ae 100644
--- a/src/mame/drivers/sshot.cpp
+++ b/src/mame/drivers/sshot.cpp
@@ -268,17 +268,18 @@ WRITE8_MEMBER(supershot_state::supershot_output1_w)
*
*************************************/
-ADDRESS_MAP_START(supershot_state::supershot_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(supershot_vidram_w ) AM_SHARE("videoram")
- AM_RANGE(0x4100, 0x41ff) AM_RAM
- AM_RANGE(0x4200, 0x4200) AM_READ_PORT("GUNX")
- AM_RANGE(0x4201, 0x4201) AM_READ_PORT("GUNY")
- AM_RANGE(0x4202, 0x4202) AM_READ_PORT("IN0")
- AM_RANGE(0x4203, 0x4203) AM_READ_PORT("DSW")
- AM_RANGE(0x4206, 0x4206) AM_WRITE(supershot_output0_w)
- AM_RANGE(0x4207, 0x4207) AM_WRITE(supershot_output1_w)
-ADDRESS_MAP_END
+void supershot_state::supershot_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram().w(this, FUNC(supershot_state::supershot_vidram_w)).share("videoram");
+ map(0x4100, 0x41ff).ram();
+ map(0x4200, 0x4200).portr("GUNX");
+ map(0x4201, 0x4201).portr("GUNY");
+ map(0x4202, 0x4202).portr("IN0");
+ map(0x4203, 0x4203).portr("DSW");
+ map(0x4206, 0x4206).w(this, FUNC(supershot_state::supershot_output0_w));
+ map(0x4207, 0x4207).w(this, FUNC(supershot_state::supershot_output1_w));
+}
/*************************************
diff --git a/src/mame/drivers/ssingles.cpp b/src/mame/drivers/ssingles.cpp
index 24389a8d1c2..1198a5a7da8 100644
--- a/src/mame/drivers/ssingles.cpp
+++ b/src/mame/drivers/ssingles.cpp
@@ -337,15 +337,16 @@ CUSTOM_INPUT_MEMBER(ssingles_state::controls_r)
return data;
}
-ADDRESS_MAP_START(ssingles_state::ssingles_map)
- AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w)
- AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(c000_r )
- AM_RANGE(0xc001, 0xc001) AM_READWRITE(c001_r, c001_w )
- AM_RANGE(0x6000, 0xbfff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void ssingles_state::ssingles_map(address_map &map)
+{
+ map(0x0000, 0x00ff).w(this, FUNC(ssingles_state::ssingles_videoram_w));
+ map(0x0800, 0x08ff).w(this, FUNC(ssingles_state::ssingles_colorram_w));
+ map(0x0000, 0x1fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(ssingles_state::c000_r));
+ map(0xc001, 0xc001).rw(this, FUNC(ssingles_state::c001_r), FUNC(ssingles_state::c001_w));
+ map(0x6000, 0xbfff).rom();
+ map(0xf800, 0xffff).ram();
+}
READ8_MEMBER(ssingles_state::atamanot_prot_r)
@@ -375,48 +376,51 @@ WRITE8_MEMBER(ssingles_state::atamanot_prot_w)
}
-ADDRESS_MAP_START(ssingles_state::atamanot_map)
- AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w)
- AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x60ff) AM_RAM //kanji tilemap?
+void ssingles_state::atamanot_map(address_map &map)
+{
+ map(0x0000, 0x00ff).w(this, FUNC(ssingles_state::ssingles_videoram_w));
+ map(0x0800, 0x08ff).w(this, FUNC(ssingles_state::ssingles_colorram_w));
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x60ff).ram(); //kanji tilemap?
// AM_RANGE(0x6000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_READ(atamanot_prot_r)
+ map(0x8000, 0x83ff).r(this, FUNC(ssingles_state::atamanot_prot_r));
// AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("question",0x10000)
// AM_RANGE(0xc000, 0xc000) AM_READ(c000_r )
// AM_RANGE(0xc001, 0xc001) AM_READWRITE(c001_r, c001_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ssingles_state::ssingles_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x08, 0x08) AM_READNOP
- AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x16, 0x16) AM_READ_PORT("DSW0")
- AM_RANGE(0x18, 0x18) AM_READ_PORT("DSW1")
- AM_RANGE(0x1c, 0x1c) AM_READ_PORT("INPUTS")
+}
+
+void ssingles_state::ssingles_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x04, 0x04).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x06, 0x06).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x08, 0x08).nopr();
+ map(0x0a, 0x0a).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x16, 0x16).portr("DSW0");
+ map(0x18, 0x18).portr("DSW1");
+ map(0x1c, 0x1c).portr("INPUTS");
// AM_RANGE(0x1a, 0x1a) AM_WRITENOP //video/crt related
- AM_RANGE(0xfe, 0xfe) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xff, 0xff) AM_DEVWRITE("crtc", mc6845_device, register_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ssingles_state::atamanot_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x08, 0x08) AM_READNOP
- AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x16, 0x16) AM_READ_PORT("DSW0")
- AM_RANGE(0x18, 0x18) AM_READ_PORT("DSW1") AM_WRITE(atamanot_prot_w)
- AM_RANGE(0x1c, 0x1c) AM_READ_PORT("INPUTS")
+ map(0xfe, 0xfe).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xff, 0xff).w("crtc", FUNC(mc6845_device::register_w));
+}
+
+void ssingles_state::atamanot_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x04, 0x04).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x06, 0x06).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x08, 0x08).nopr();
+ map(0x0a, 0x0a).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x16, 0x16).portr("DSW0");
+ map(0x18, 0x18).portr("DSW1").w(this, FUNC(ssingles_state::atamanot_prot_w));
+ map(0x1c, 0x1c).portr("INPUTS");
// AM_RANGE(0x1a, 0x1a) AM_WRITENOP //video/crt related
- AM_RANGE(0xfe, 0xfe) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0xff, 0xff) AM_DEVWRITE("crtc", mc6845_device, register_w)
-ADDRESS_MAP_END
+ map(0xfe, 0xfe).w("crtc", FUNC(mc6845_device::address_w));
+ map(0xff, 0xff).w("crtc", FUNC(mc6845_device::register_w));
+}
static INPUT_PORTS_START( ssingles )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/sslam.cpp b/src/mame/drivers/sslam.cpp
index 812403152c9..a7492a9b242 100644
--- a/src/mame/drivers/sslam.cpp
+++ b/src/mame/drivers/sslam.cpp
@@ -375,46 +375,48 @@ WRITE16_MEMBER(sslam_state::powerbls_sound_w)
/* these will need verifying .. the game writes all over the place ... */
-ADDRESS_MAP_START(sslam_state::sslam_program_map)
- AM_RANGE(0x000000, 0xffffff) AM_ROM /* I don't honestly know where the rom is mirrored .. so all unmapped reads / writes go to rom */
-
- AM_RANGE(0x000400, 0x07ffff) AM_RAM
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(sslam_bg_tileram_w) AM_SHARE("bg_tileram")
- AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(sslam_md_tileram_w) AM_SHARE("md_tileram")
- AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(sslam_tx_tileram_w) AM_SHARE("tx_tileram")
- AM_RANGE(0x110000, 0x11000d) AM_RAM AM_SHARE("regs")
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP
- AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("IN0")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("IN1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("IN2")
- AM_RANGE(0x300016, 0x300017) AM_READ_PORT("IN3")
- AM_RANGE(0x300018, 0x300019) AM_READ_PORT("IN4")
- AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2")
- AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1")
- AM_RANGE(0x30001e, 0x30001f) AM_WRITE8(sslam_snd_w, 0x00ff)
- AM_RANGE(0xf00000, 0xffffff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sslam_state::powerbls_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(powerbls_bg_tileram_w) AM_SHARE("bg_tileram")
- AM_RANGE(0x104000, 0x107fff) AM_RAM // not used
- AM_RANGE(0x110000, 0x11000d) AM_RAM AM_SHARE("regs")
- AM_RANGE(0x200000, 0x200001) AM_WRITENOP
- AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x280000, 0x2803ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300010, 0x300011) AM_READ_PORT("IN0")
- AM_RANGE(0x300012, 0x300013) AM_READ_PORT("IN1")
- AM_RANGE(0x300014, 0x300015) AM_READ_PORT("IN2")
- AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW1")
- AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW2")
- AM_RANGE(0x30001e, 0x30001f) AM_WRITE(powerbls_sound_w)
- AM_RANGE(0x304000, 0x304001) AM_WRITENOP
- AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
+void sslam_state::sslam_program_map(address_map &map)
+{
+ map(0x000000, 0xffffff).rom(); /* I don't honestly know where the rom is mirrored .. so all unmapped reads / writes go to rom */
+
+ map(0x000400, 0x07ffff).ram();
+ map(0x100000, 0x103fff).ram().w(this, FUNC(sslam_state::sslam_bg_tileram_w)).share("bg_tileram");
+ map(0x104000, 0x107fff).ram().w(this, FUNC(sslam_state::sslam_md_tileram_w)).share("md_tileram");
+ map(0x108000, 0x10ffff).ram().w(this, FUNC(sslam_state::sslam_tx_tileram_w)).share("tx_tileram");
+ map(0x110000, 0x11000d).ram().share("regs");
+ map(0x200000, 0x200001).nopw();
+ map(0x280000, 0x280fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x201000, 0x201fff).ram().share("spriteram");
+ map(0x304000, 0x304001).nopw();
+ map(0x300010, 0x300011).portr("IN0");
+ map(0x300012, 0x300013).portr("IN1");
+ map(0x300014, 0x300015).portr("IN2");
+ map(0x300016, 0x300017).portr("IN3");
+ map(0x300018, 0x300019).portr("IN4");
+ map(0x30001a, 0x30001b).portr("DSW2");
+ map(0x30001c, 0x30001d).portr("DSW1");
+ map(0x30001f, 0x30001f).w(this, FUNC(sslam_state::sslam_snd_w));
+ map(0xf00000, 0xffffff).ram(); /* Main RAM */
+}
+
+void sslam_state::powerbls_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().w(this, FUNC(sslam_state::powerbls_bg_tileram_w)).share("bg_tileram");
+ map(0x104000, 0x107fff).ram(); // not used
+ map(0x110000, 0x11000d).ram().share("regs");
+ map(0x200000, 0x200001).nopw();
+ map(0x201000, 0x201fff).ram().share("spriteram");
+ map(0x280000, 0x2803ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300010, 0x300011).portr("IN0");
+ map(0x300012, 0x300013).portr("IN1");
+ map(0x300014, 0x300015).portr("IN2");
+ map(0x30001a, 0x30001b).portr("DSW1");
+ map(0x30001c, 0x30001d).portr("DSW2");
+ map(0x30001e, 0x30001f).w(this, FUNC(sslam_state::powerbls_sound_w));
+ map(0x304000, 0x304001).nopw();
+ map(0xff0000, 0xffffff).ram(); /* Main RAM */
+}
/*
diff --git a/src/mame/drivers/ssozumo.cpp b/src/mame/drivers/ssozumo.cpp
index 2c8a2f32d42..45b4593c789 100644
--- a/src/mame/drivers/ssozumo.cpp
+++ b/src/mame/drivers/ssozumo.cpp
@@ -28,23 +28,24 @@ void ssozumo_state::machine_start()
}
-ADDRESS_MAP_START(ssozumo_state::ssozumo_map)
- AM_RANGE(0x0000, 0x077f) AM_RAM
- AM_RANGE(0x0780, 0x07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3400, 0x35ff) AM_RAM
- AM_RANGE(0x3600, 0x37ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(flipscreen_w)
- AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(scroll_w)
- AM_RANGE(0x4030, 0x4030) AM_READ_PORT("DSW1")
+void ssozumo_state::ssozumo_map(address_map &map)
+{
+ map(0x0000, 0x077f).ram();
+ map(0x0780, 0x07ff).ram().share("spriteram");
+ map(0x2000, 0x23ff).ram().w(this, FUNC(ssozumo_state::videoram2_w)).share("videoram2");
+ map(0x2400, 0x27ff).ram().w(this, FUNC(ssozumo_state::colorram2_w)).share("colorram2");
+ map(0x3000, 0x31ff).ram().w(this, FUNC(ssozumo_state::videoram_w)).share("videoram");
+ map(0x3200, 0x33ff).ram().w(this, FUNC(ssozumo_state::colorram_w)).share("colorram");
+ map(0x3400, 0x35ff).ram();
+ map(0x3600, 0x37ff).ram();
+ map(0x4000, 0x4000).portr("P1").w(this, FUNC(ssozumo_state::flipscreen_w));
+ map(0x4010, 0x4010).portr("P2").w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x4020, 0x4020).portr("DSW2").w(this, FUNC(ssozumo_state::scroll_w));
+ map(0x4030, 0x4030).portr("DSW1");
// AM_RANGE(0x4030, 0x4030) AM_WRITEONLY
- AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x4050, 0x407f).ram().w(this, FUNC(ssozumo_state::paletteram_w)).share("paletteram");
+ map(0x6000, 0xffff).rom();
+}
WRITE8_MEMBER(ssozumo_state::sound_nmi_mask_w)
@@ -53,15 +54,16 @@ WRITE8_MEMBER(ssozumo_state::sound_nmi_mask_w)
}
/* Same as Tag Team */
-ADDRESS_MAP_START(ssozumo_state::ssozumo_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w)
- AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ssozumo_state::ssozumo_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x2002, 0x2003).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x2004, 0x2004).w("dac", FUNC(dac_byte_interface::write));
+ map(0x2005, 0x2005).w(this, FUNC(ssozumo_state::sound_nmi_mask_w));
+ map(0x2007, 0x2007).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x4000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(ssozumo_state::coin_inserted)
{
diff --git a/src/mame/drivers/sspeedr.cpp b/src/mame/drivers/sspeedr.cpp
index e3b9bca1138..56f7db48da8 100644
--- a/src/mame/drivers/sspeedr.cpp
+++ b/src/mame/drivers/sspeedr.cpp
@@ -81,37 +81,39 @@ WRITE8_MEMBER(sspeedr_state::sspeedr_sound_w)
}
-ADDRESS_MAP_START(sspeedr_state::sspeedr_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x21ff) AM_RAM
- AM_RANGE(0x7f00, 0x7f17) AM_WRITE(sspeedr_score_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sspeedr_state::sspeedr_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x00, 0x01) AM_WRITE(sspeedr_sound_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(sspeedr_lamp_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2")
- AM_RANGE(0x04, 0x05) AM_WRITE(sspeedr_time_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(sspeedr_driver_horz_w)
- AM_RANGE(0x11, 0x11) AM_WRITE(sspeedr_driver_pic_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(sspeedr_driver_horz_2_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(sspeedr_drones_horz_w)
- AM_RANGE(0x14, 0x14) AM_WRITE(sspeedr_drones_horz_2_w)
- AM_RANGE(0x15, 0x15) AM_WRITE(sspeedr_drones_mask_w)
- AM_RANGE(0x16, 0x16) AM_WRITE(sspeedr_driver_vert_w)
- AM_RANGE(0x17, 0x18) AM_WRITE(sspeedr_track_vert_w)
- AM_RANGE(0x19, 0x19) AM_WRITE(sspeedr_track_horz_w)
- AM_RANGE(0x1a, 0x1a) AM_WRITE(sspeedr_track_horz_2_w)
- AM_RANGE(0x1b, 0x1b) AM_WRITE(sspeedr_track_ice_w)
- AM_RANGE(0x1c, 0x1e) AM_WRITE(sspeedr_drones_vert_w)
- AM_RANGE(0x1f, 0x1f) AM_WRITE(sspeedr_int_ack_w)
-ADDRESS_MAP_END
+void sspeedr_state::sspeedr_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x21ff).ram();
+ map(0x7f00, 0x7f17).w(this, FUNC(sspeedr_state::sspeedr_score_w));
+}
+
+
+void sspeedr_state::sspeedr_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x00, 0x01).w(this, FUNC(sspeedr_state::sspeedr_sound_w));
+ map(0x02, 0x02).w(this, FUNC(sspeedr_state::sspeedr_lamp_w));
+ map(0x03, 0x03).portr("DSW");
+ map(0x04, 0x04).portr("IN2");
+ map(0x04, 0x05).w(this, FUNC(sspeedr_state::sspeedr_time_w));
+ map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x10, 0x10).w(this, FUNC(sspeedr_state::sspeedr_driver_horz_w));
+ map(0x11, 0x11).w(this, FUNC(sspeedr_state::sspeedr_driver_pic_w));
+ map(0x12, 0x12).w(this, FUNC(sspeedr_state::sspeedr_driver_horz_2_w));
+ map(0x13, 0x13).w(this, FUNC(sspeedr_state::sspeedr_drones_horz_w));
+ map(0x14, 0x14).w(this, FUNC(sspeedr_state::sspeedr_drones_horz_2_w));
+ map(0x15, 0x15).w(this, FUNC(sspeedr_state::sspeedr_drones_mask_w));
+ map(0x16, 0x16).w(this, FUNC(sspeedr_state::sspeedr_driver_vert_w));
+ map(0x17, 0x18).w(this, FUNC(sspeedr_state::sspeedr_track_vert_w));
+ map(0x19, 0x19).w(this, FUNC(sspeedr_state::sspeedr_track_horz_w));
+ map(0x1a, 0x1a).w(this, FUNC(sspeedr_state::sspeedr_track_horz_2_w));
+ map(0x1b, 0x1b).w(this, FUNC(sspeedr_state::sspeedr_track_ice_w));
+ map(0x1c, 0x1e).w(this, FUNC(sspeedr_state::sspeedr_drones_vert_w));
+ map(0x1f, 0x1f).w(this, FUNC(sspeedr_state::sspeedr_int_ack_w));
+}
static const ioport_value sspeedr_controller_table[] =
diff --git a/src/mame/drivers/ssrj.cpp b/src/mame/drivers/ssrj.cpp
index 2d84d16d97d..e11bce158b8 100644
--- a/src/mame/drivers/ssrj.cpp
+++ b/src/mame/drivers/ssrj.cpp
@@ -62,23 +62,24 @@ READ8_MEMBER(ssrj_state::wheel_r)
return retval;
}
-ADDRESS_MAP_START(ssrj_state::ssrj_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("vram3")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(vram4_w) AM_SHARE("vram4")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("scrollram")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN0")
- AM_RANGE(0xf001, 0xf001) AM_READ(wheel_r)
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN2")
- AM_RANGE(0xf003, 0xf003) AM_WRITENOP /* unknown */
- AM_RANGE(0xf401, 0xf401) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xf400, 0xf401) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP /* wheel ? */
- AM_RANGE(0xfc00, 0xfc00) AM_WRITENOP /* unknown */
-ADDRESS_MAP_END
+void ssrj_state::ssrj_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(ssrj_state::vram1_w)).share("vram1");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(ssrj_state::vram2_w)).share("vram2");
+ map(0xd000, 0xd7ff).ram().share("vram3");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(ssrj_state::vram4_w)).share("vram4");
+ map(0xe000, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().share("scrollram");
+ map(0xf000, 0xf000).portr("IN0");
+ map(0xf001, 0xf001).r(this, FUNC(ssrj_state::wheel_r));
+ map(0xf002, 0xf002).portr("IN2");
+ map(0xf003, 0xf003).nopw(); /* unknown */
+ map(0xf401, 0xf401).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0xf400, 0xf401).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xf800, 0xf800).nopw(); /* wheel ? */
+ map(0xfc00, 0xfc00).nopw(); /* unknown */
+}
static INPUT_PORTS_START( ssrj )
PORT_START("IN0")
diff --git a/src/mame/drivers/sstrangr.cpp b/src/mame/drivers/sstrangr.cpp
index 9d482bcd53a..f638ab66d02 100644
--- a/src/mame/drivers/sstrangr.cpp
+++ b/src/mame/drivers/sstrangr.cpp
@@ -136,19 +136,21 @@ WRITE8_MEMBER(sstrangr_state::port_w)
-ADDRESS_MAP_START(sstrangr_state::sstrangr_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x6000, 0x63ff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sstrangr_state::sstrangr_io_map)
- AM_RANGE(0x41, 0x41) AM_READ_PORT("DSW")
- AM_RANGE(0x42, 0x42) AM_READ_PORT("INPUTS")
- AM_RANGE(0x44, 0x44) AM_READ_PORT("EXT") AM_WRITE(port_w)
-ADDRESS_MAP_END
+void sstrangr_state::sstrangr_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram().share("ram");
+ map(0x6000, 0x63ff).rom();
+}
+
+
+void sstrangr_state::sstrangr_io_map(address_map &map)
+{
+ map(0x41, 0x41).portr("DSW");
+ map(0x42, 0x42).portr("INPUTS");
+ map(0x44, 0x44).portr("EXT").w(this, FUNC(sstrangr_state::port_w));
+}
diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp
index 7bac230bb38..c540671c408 100644
--- a/src/mame/drivers/ssv.cpp
+++ b/src/mame/drivers/ssv.cpp
@@ -332,13 +332,15 @@ void ssv_state::machine_reset()
***************************************************************************/
-ADDRESS_MAP_START(ssv_state::dsp_prg_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("dspprg", 0)
-ADDRESS_MAP_END
+void ssv_state::dsp_prg_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("dspprg", 0);
+}
-ADDRESS_MAP_START(ssv_state::dsp_data_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspdata", 0)
-ADDRESS_MAP_END
+void ssv_state::dsp_data_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom().region("dspdata", 0);
+}
READ16_MEMBER(ssv_state::dsp_dr_r)
{
@@ -397,26 +399,28 @@ WRITE16_MEMBER(ssv_state::dsp_w)
READ16_MEMBER(ssv_state::fake_r){ return ssv_scroll[offset]; }
#endif
-#define SSV_MAP( _ROM ) \
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram") /* RAM */ \
- AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_SHARE("spriteram") /* Sprites */ \
- AM_RANGE(0x140000, 0x15ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */\
- AM_RANGE(0x160000, 0x17ffff) AM_RAM /* */ \
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ(vblank_r ) /* Vblank? */ \
-/**/AM_RANGE(0x1c0002, 0x1c007f) AM_READONLY /* Scroll */ \
- AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(scroll_w) AM_SHARE("scroll") /* Scroll */ \
- AM_RANGE(0x210002, 0x210003) AM_READ_PORT("DSW1") \
- AM_RANGE(0x210004, 0x210005) AM_READ_PORT("DSW2") \
- AM_RANGE(0x210008, 0x210009) AM_READ_PORT("P1") \
- AM_RANGE(0x21000a, 0x21000b) AM_READ_PORT("P2") \
- AM_RANGE(0x21000c, 0x21000d) AM_READ_PORT("SYSTEM") \
- AM_RANGE(0x21000e, 0x21000f) AM_READNOP AM_WRITE(lockout_w) /* Lockout */ \
- AM_RANGE(0x210010, 0x210011) AM_WRITENOP \
- AM_RANGE(0x230000, 0x230071) AM_WRITEONLY AM_SHARE("irq_vectors") /* IRQ Vec */ \
- AM_RANGE(0x240000, 0x240071) AM_WRITE(irq_ack_w ) /* IRQ Ack */ \
- AM_RANGE(0x260000, 0x260001) AM_WRITE(irq_enable_w) /* IRQ En */ \
- AM_RANGE(0x300000, 0x30007f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0x00ff) /* Sound */ \
- AM_RANGE(_ROM, 0xffffff) AM_ROM AM_REGION("maincpu", 0) /* ROM */
+void ssv_state::ssv_map(address_map &map, u32 rom)
+{
+ map(0x000000, 0x00ffff).ram().share("mainram"); /* RAM */
+ map(0x100000, 0x13ffff).ram().share("spriteram"); /* Sprites */
+ map(0x140000, 0x15ffff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x160000, 0x17ffff).ram(); /* */
+ map(0x1c0000, 0x1c0001).r(this, FUNC(ssv_state::vblank_r)); /* Vblank? */
+/**/map(0x1c0002, 0x1c007f).readonly(); /* Scroll */
+ map(0x1c0000, 0x1c007f).w(this, FUNC(ssv_state::scroll_w)).share("scroll"); /* Scroll */
+ map(0x210002, 0x210003).portr("DSW1");
+ map(0x210004, 0x210005).portr("DSW2");
+ map(0x210008, 0x210009).portr("P1");
+ map(0x21000a, 0x21000b).portr("P2");
+ map(0x21000c, 0x21000d).portr("SYSTEM");
+ map(0x21000e, 0x21000f).nopr().w(this, FUNC(ssv_state::lockout_w)); /* Lockout */
+ map(0x210010, 0x210011).nopw();
+ map(0x230000, 0x230071).writeonly().share("irq_vectors"); /* IRQ Vec */
+ map(0x240000, 0x240071).w(this, FUNC(ssv_state::irq_ack_w)); /* IRQ Ack */
+ map(0x260000, 0x260001).w(this, FUNC(ssv_state::irq_enable_w)); /* IRQ En */
+ map(0x300000, 0x30007f).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)).umask16(0x00ff); /* Sound */
+ map(rom, 0xffffff).rom().region("maincpu", 0); /* ROM */
+}
/***************************************************************************
Drift Out '94
@@ -427,18 +431,19 @@ READ16_MEMBER(ssv_state::drifto94_unknown_r)
return machine().rand() & 0xffff;
}
-ADDRESS_MAP_START(ssv_state::drifto94_map)
- SSV_MAP( 0xc00000 )
+void ssv_state::drifto94_map(address_map &map)
+{
+ ssv_map(map, 0xc00000);
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
- AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ?
- AM_RANGE(0x480000, 0x480001) AM_READWRITE(dsp_dr_r, dsp_dr_w)
- AM_RANGE(0x482000, 0x482fff) AM_READWRITE(dsp_r, dsp_w)
- AM_RANGE(0x483000, 0x485fff) AM_WRITENOP // ?
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ??
- AM_RANGE(0x510000, 0x510001) AM_READ(drifto94_unknown_r) // ??
- AM_RANGE(0x520000, 0x520001) AM_READ(drifto94_unknown_r) // ??
- AM_RANGE(0x580000, 0x5807ff) AM_RAM AM_SHARE("nvram") // NVRAM
-ADDRESS_MAP_END
+ map(0x400000, 0x47ffff).writeonly(); // ?
+ map(0x480000, 0x480001).rw(this, FUNC(ssv_state::dsp_dr_r), FUNC(ssv_state::dsp_dr_w));
+ map(0x482000, 0x482fff).rw(this, FUNC(ssv_state::dsp_r), FUNC(ssv_state::dsp_w));
+ map(0x483000, 0x485fff).nopw(); // ?
+ map(0x500000, 0x500001).nopw(); // ??
+ map(0x510000, 0x510001).r(this, FUNC(ssv_state::drifto94_unknown_r)); // ??
+ map(0x520000, 0x520001).r(this, FUNC(ssv_state::drifto94_unknown_r)); // ??
+ map(0x580000, 0x5807ff).ram().share("nvram"); // NVRAM
+}
/***************************************************************************
@@ -477,18 +482,19 @@ WRITE16_MEMBER(ssv_state::gdfs_eeprom_w)
}
-ADDRESS_MAP_START(ssv_state::gdfs_map)
- SSV_MAP( 0xc00000 )
- AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(gdfs_tmapram_w) AM_SHARE("gdfs_tmapram")
- AM_RANGE(0x420000, 0x43ffff) AM_RAM
- AM_RANGE(0x440000, 0x44003f) AM_RAM AM_SHARE("gdfs_tmapscroll")
- AM_RANGE(0x500000, 0x500001) AM_WRITE(gdfs_eeprom_w)
- AM_RANGE(0x540000, 0x540001) AM_READ(gdfs_eeprom_r)
- AM_RANGE(0x600000, 0x600fff) AM_RAM
- AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, sprram_r, sprram_w );
- AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE( "st0020_spr", st0020_device, regs_r, regs_w );
- AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, gfxram_r, gfxram_w );
-ADDRESS_MAP_END
+void ssv_state::gdfs_map(address_map &map)
+{
+ ssv_map(map, 0xc00000);
+ map(0x400000, 0x41ffff).ram().w(this, FUNC(ssv_state::gdfs_tmapram_w)).share("gdfs_tmapram");
+ map(0x420000, 0x43ffff).ram();
+ map(0x440000, 0x44003f).ram().share("gdfs_tmapscroll");
+ map(0x500000, 0x500001).w(this, FUNC(ssv_state::gdfs_eeprom_w));
+ map(0x540000, 0x540001).r(this, FUNC(ssv_state::gdfs_eeprom_r));
+ map(0x600000, 0x600fff).ram();
+ map(0x800000, 0x87ffff).rw(m_gdfs_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w));
+ map(0x8c0000, 0x8c00ff).rw(m_gdfs_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w));
+ map(0x900000, 0x9fffff).rw(m_gdfs_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w));
+}
/***************************************************************************
@@ -515,33 +521,35 @@ READ16_MEMBER(ssv_state::hypreact_input_r)
return 0xffff;
}
-ADDRESS_MAP_START(ssv_state::hypreact_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void ssv_state::hypreact_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start
- AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines
+ map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
// AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used
- AM_RANGE(0xc00000, 0xc00001) AM_READ(hypreact_input_r) // Inputs
- AM_RANGE(0xc00006, 0xc00007) AM_RAM AM_SHARE("input_sel") //
- AM_RANGE(0xc00008, 0xc00009) AM_NOP //
-ADDRESS_MAP_END
+ map(0xc00000, 0xc00001).r(this, FUNC(ssv_state::hypreact_input_r)); // Inputs
+ map(0xc00006, 0xc00007).ram().share("input_sel"); //
+ map(0xc00008, 0xc00009).noprw(); //
+}
/***************************************************************************
Hyper Reaction 2
***************************************************************************/
-ADDRESS_MAP_START(ssv_state::hypreac2_map)
- SSV_MAP( 0xe00000 )
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void ssv_state::hypreac2_map(address_map &map)
+{
+ ssv_map(map, 0xe00000);
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start
- AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines
+ map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
// AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used
- AM_RANGE(0x500000, 0x500001) AM_READ(hypreact_input_r) // Inputs
- AM_RANGE(0x500002, 0x500003) AM_READ(hypreact_input_r) // (again?)
- AM_RANGE(0x520000, 0x520001) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
+ map(0x500000, 0x500001).r(this, FUNC(ssv_state::hypreact_input_r)); // Inputs
+ map(0x500002, 0x500003).r(this, FUNC(ssv_state::hypreact_input_r)); // (again?)
+ map(0x520000, 0x520001).writeonly().share("input_sel"); // Inputs
// 0x540000, 0x540003 communication with other units
-ADDRESS_MAP_END
+}
/***************************************************************************
@@ -550,41 +558,44 @@ ADDRESS_MAP_END
-ADDRESS_MAP_START(ssv_state::janjans1_map)
- SSV_MAP( 0xc00000 )
- AM_RANGE(0x210000, 0x210001) AM_WRITENOP // koikois2 but not janjans1
+void ssv_state::janjans1_map(address_map &map)
+{
+ ssv_map(map, 0xc00000);
+ map(0x210000, 0x210001).nopw(); // koikois2 but not janjans1
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
- AM_RANGE(0x210006, 0x210007) AM_READNOP
- AM_RANGE(0x800000, 0x800001) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
- AM_RANGE(0x800002, 0x800003) AM_READ(srmp4_input_r) // Inputs
-ADDRESS_MAP_END
+ map(0x210006, 0x210007).nopr();
+ map(0x800000, 0x800001).writeonly().share("input_sel"); // Inputs
+ map(0x800002, 0x800003).r(this, FUNC(ssv_state::srmp4_input_r)); // Inputs
+}
/***************************************************************************
Keith & Lucy
***************************************************************************/
-ADDRESS_MAP_START(ssv_state::keithlcy_map)
- SSV_MAP( 0xe00000 )
+void ssv_state::keithlcy_map(address_map &map)
+{
+ ssv_map(map, 0xe00000);
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
- AM_RANGE(0x210010, 0x210011) AM_WRITENOP //
- AM_RANGE(0x21000e, 0x21000f) AM_READNOP //
- AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ?
-ADDRESS_MAP_END
+ map(0x210010, 0x210011).nopw(); //
+ map(0x21000e, 0x21000f).nopr(); //
+ map(0x400000, 0x47ffff).writeonly(); // ?
+}
/***************************************************************************
Meosis Magic
***************************************************************************/
-ADDRESS_MAP_START(ssv_state::meosism_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void ssv_state::meosism_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start
// AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read once, value not used
// AM_RANGE(0x500004, 0x500005) AM_WRITENOP // ? 0,58,18
- AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_SHARE("nvram") // NVRAM
-ADDRESS_MAP_END
+ map(0x580000, 0x58ffff).ram().share("nvram"); // NVRAM
+}
/***************************************************************************
Monster Slider
@@ -602,24 +613,26 @@ WRITE16_MEMBER(ssv_state::mainram_w)
COMBINE_DATA(&m_mainram[offset]);
}
-ADDRESS_MAP_START(ssv_state::mslider_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x010000, 0x01ffff) AM_READWRITE(mainram_r, mainram_w) // RAM Mirror
+void ssv_state::mslider_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x010000, 0x01ffff).rw(this, FUNC(ssv_state::mainram_r), FUNC(ssv_state::mainram_w)); // RAM Mirror
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
- AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ?
+ map(0x400000, 0x47ffff).writeonly(); // ?
// AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? ff at the start
-ADDRESS_MAP_END
+}
/***************************************************************************
Gourmet Battle Quiz Ryohrioh CooKing
***************************************************************************/
-ADDRESS_MAP_START(ssv_state::ryorioh_map)
- SSV_MAP( 0xc00000 )
- AM_RANGE(0x210000, 0x210001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+void ssv_state::ryorioh_map(address_map &map)
+{
+ ssv_map(map, 0xc00000);
+ map(0x210000, 0x210001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
-ADDRESS_MAP_END
+}
/***************************************************************************
@@ -638,14 +651,15 @@ READ16_MEMBER(ssv_state::srmp4_input_r)
return 0xffff;
}
-ADDRESS_MAP_START(ssv_state::srmp4_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void ssv_state::srmp4_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1,5 at the start
- AM_RANGE(0xc0000a, 0xc0000b) AM_READ(srmp4_input_r) // Inputs
- AM_RANGE(0xc0000e, 0xc0000f) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
- AM_RANGE(0xc00010, 0xc00011) AM_WRITENOP //
-ADDRESS_MAP_END
+ map(0xc0000a, 0xc0000b).r(this, FUNC(ssv_state::srmp4_input_r)); // Inputs
+ map(0xc0000e, 0xc0000f).writeonly().share("input_sel"); // Inputs
+ map(0xc00010, 0xc00011).nopw(); //
+}
/***************************************************************************
@@ -685,35 +699,37 @@ READ16_MEMBER(ssv_state::srmp7_input_r)
return 0xffff;
}
-ADDRESS_MAP_START(ssv_state::srmp7_map)
- SSV_MAP( 0xc00000 )
- AM_RANGE(0x010000, 0x050faf) AM_RAM // More RAM
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void ssv_state::srmp7_map(address_map &map)
+{
+ ssv_map(map, 0xc00000);
+ map(0x010000, 0x050faf).ram(); // More RAM
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
- AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Coin Counters / Lockouts
- AM_RANGE(0x300076, 0x300077) AM_READ(srmp7_irqv_r) // Sound
+ map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Coin Counters / Lockouts
+ map(0x300076, 0x300077).r(this, FUNC(ssv_state::srmp7_irqv_r)); // Sound
// 0x540000, 0x540003, related to lev 5 irq?
- AM_RANGE(0x580000, 0x580001) AM_WRITE(srmp7_sound_bank_w) // Sound Bank
- AM_RANGE(0x600000, 0x600001) AM_READ(srmp7_input_r) // Inputs
- AM_RANGE(0x680000, 0x680001) AM_WRITEONLY AM_SHARE("input_sel") // Inputs
-ADDRESS_MAP_END
+ map(0x580000, 0x580001).w(this, FUNC(ssv_state::srmp7_sound_bank_w)); // Sound Bank
+ map(0x600000, 0x600001).r(this, FUNC(ssv_state::srmp7_input_r)); // Inputs
+ map(0x680000, 0x680001).writeonly().share("input_sel"); // Inputs
+}
/***************************************************************************
Survival Arts
***************************************************************************/
-ADDRESS_MAP_START(ssv_state::survarts_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+void ssv_state::survarts_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
// AM_RANGE(0x290000, 0x290001) AM_READNOP // ?
// AM_RANGE(0x2a0000, 0x2a0001) AM_READNOP // ?
- AM_RANGE(0x400000, 0x43ffff) AM_RAM // dyna
+ map(0x400000, 0x43ffff).ram(); // dyna
- AM_RANGE(0x500008, 0x500009) AM_READ_PORT("ADD_BUTTONS") // Extra Buttons
-ADDRESS_MAP_END
+ map(0x500008, 0x500009).portr("ADD_BUTTONS"); // Extra Buttons
+}
/***************************************************************************
@@ -751,17 +767,18 @@ WRITE16_MEMBER(ssv_state::sxyreact_motor_w)
// popmessage("%04X",data); // 8 = motor on; 0 = motor off
}
-ADDRESS_MAP_START(ssv_state::sxyreact_map)
- SSV_MAP( 0xe00000 )
+void ssv_state::sxyreact_map(address_map &map)
+{
+ ssv_map(map, 0xe00000);
// AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(mainram_r, mainram_w) // sxyreac2 reads / writes here, why?
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
- AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines
- AM_RANGE(0x500002, 0x500003) AM_READ(sxyreact_ballswitch_r) // ?
- AM_RANGE(0x500004, 0x500005) AM_READWRITE(sxyreact_dial_r, sxyreact_motor_w) // Dial Value (serial)
- AM_RANGE(0x520000, 0x520001) AM_WRITE(sxyreact_dial_w) // Dial Value (advance 1 bit)
- AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_SHARE("nvram") // NVRAM
-ADDRESS_MAP_END
+ map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
+ map(0x500002, 0x500003).r(this, FUNC(ssv_state::sxyreact_ballswitch_r)); // ?
+ map(0x500004, 0x500005).rw(this, FUNC(ssv_state::sxyreact_dial_r), FUNC(ssv_state::sxyreact_motor_w)); // Dial Value (serial)
+ map(0x520000, 0x520001).w(this, FUNC(ssv_state::sxyreact_dial_w)); // Dial Value (advance 1 bit)
+ map(0x580000, 0x58ffff).ram().share("nvram"); // NVRAM
+}
/***************************************************************************
@@ -770,13 +787,14 @@ ADDRESS_MAP_END
/* comes as either a standalone board or a standard SSV rom board (verified) */
-ADDRESS_MAP_START(ssv_state::twineag2_map)
- SSV_MAP( 0xe00000 )
- AM_RANGE(0x010000, 0x03ffff) AM_RAM // More RAM
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog (also value is cmp.b with mem 8)
- AM_RANGE(0x480000, 0x480001) AM_READWRITE(dsp_dr_r, dsp_dr_w)
- AM_RANGE(0x482000, 0x482fff) AM_READWRITE(dsp_r, dsp_w)
-ADDRESS_MAP_END
+void ssv_state::twineag2_map(address_map &map)
+{
+ ssv_map(map, 0xe00000);
+ map(0x010000, 0x03ffff).ram(); // More RAM
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog (also value is cmp.b with mem 8)
+ map(0x480000, 0x480001).rw(this, FUNC(ssv_state::dsp_dr_r), FUNC(ssv_state::dsp_dr_w));
+ map(0x482000, 0x482fff).rw(this, FUNC(ssv_state::dsp_r), FUNC(ssv_state::dsp_w));
+}
/***************************************************************************
@@ -785,12 +803,13 @@ ADDRESS_MAP_END
/* standalone board based on SSV hardware */
-ADDRESS_MAP_START(ssv_state::ultrax_map)
- SSV_MAP( 0xe00000 )
- AM_RANGE(0x010000, 0x03ffff) AM_RAM // More RAM
- AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog (also value is cmp.b with memory address 8)
+void ssv_state::ultrax_map(address_map &map)
+{
+ ssv_map(map, 0xe00000);
+ map(0x010000, 0x03ffff).ram(); // More RAM
+ map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog (also value is cmp.b with memory address 8)
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 2,6 at the start
-ADDRESS_MAP_END
+}
/***************************************************************************
Joryuu Syougi Kyoushitsu
@@ -828,22 +847,24 @@ WRITE16_MEMBER(ssv_state::latch16_w)
machine().scheduler().synchronize();
}
-ADDRESS_MAP_START(ssv_state::jsk_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x050000, 0x05ffff) AM_READWRITE(mainram_r, mainram_w) // RAM Mirror?
- AM_RANGE(0x210000, 0x210001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x400000, 0x47ffff) AM_RAM // RAM?
- AM_RANGE(0x900000, 0x900007) AM_READWRITE(latch16_r, latch16_w)
-ADDRESS_MAP_END
+void ssv_state::jsk_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x050000, 0x05ffff).rw(this, FUNC(ssv_state::mainram_r), FUNC(ssv_state::mainram_w)); // RAM Mirror?
+ map(0x210000, 0x210001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x400000, 0x47ffff).ram(); // RAM?
+ map(0x900000, 0x900007).rw(this, FUNC(ssv_state::latch16_r), FUNC(ssv_state::latch16_w));
+}
-ADDRESS_MAP_START(ssv_state::jsk_v810_mem)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM
- AM_RANGE(0x80000000, 0x8001ffff) AM_RAM
- AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM
- AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(latch32_r, latch32_w)
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("sub", 0)
-ADDRESS_MAP_END
+void ssv_state::jsk_v810_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram();
+ map(0x80000000, 0x8001ffff).ram();
+ map(0xc0000000, 0xc001ffff).ram();
+ map(0x40000000, 0x4000000f).rw(this, FUNC(ssv_state::latch32_r), FUNC(ssv_state::latch32_w));
+ map(0xfff80000, 0xffffffff).rom().region("sub", 0);
+}
/***************************************************************************
@@ -881,18 +902,19 @@ WRITE16_MEMBER(ssv_state::eaglshot_gfxram_w)
}
-ADDRESS_MAP_START(ssv_state::eaglshot_map)
- SSV_MAP( 0xf00000 )
- AM_RANGE(0x180000, 0x1bffff) AM_READWRITE(eaglshot_gfxram_r, eaglshot_gfxram_w)
- AM_RANGE(0x210000, 0x210001) AM_READNOP /*AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)*/ // Watchdog
+void ssv_state::eaglshot_map(address_map &map)
+{
+ ssv_map(map, 0xf00000);
+ map(0x180000, 0x1bffff).rw(this, FUNC(ssv_state::eaglshot_gfxram_r), FUNC(ssv_state::eaglshot_gfxram_w));
+ map(0x210000, 0x210001).nopr(); /*AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)*/ // Watchdog
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
- AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines
- AM_RANGE(0x800000, 0x800001) AM_WRITE8(eaglshot_gfxrom_bank_w, 0x00ff)
- AM_RANGE(0x900000, 0x900001) AM_WRITE8(eaglshot_trackball_w, 0x00ff)
- AM_RANGE(0xa00000, 0xbfffff) AM_ROMBANK("gfxrom")
- AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("nvram") // NVRAM
- AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD8("upd4701", upd4701_device, d_r, 0x00ff)
-ADDRESS_MAP_END
+ map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
+ map(0x800000, 0x800000).w(this, FUNC(ssv_state::eaglshot_gfxrom_bank_w));
+ map(0x900000, 0x900000).w(this, FUNC(ssv_state::eaglshot_trackball_w));
+ map(0xa00000, 0xbfffff).bankr("gfxrom");
+ map(0xc00000, 0xc007ff).ram().share("nvram"); // NVRAM
+ map(0xd00000, 0xd00000).r(m_upd4701, FUNC(upd4701_device::d_r));
+}
diff --git a/src/mame/drivers/ssystem3.cpp b/src/mame/drivers/ssystem3.cpp
index 7371e9dbc21..934d30a618b 100644
--- a/src/mame/drivers/ssystem3.cpp
+++ b/src/mame/drivers/ssystem3.cpp
@@ -219,8 +219,9 @@ DRIVER_INIT_MEMBER(ssystem3_state,ssystem3)
ssystem3_lcd_reset();
}
-ADDRESS_MAP_START(ssystem3_state::ssystem3_map)
- AM_RANGE( 0x0000, 0x03ff) AM_RAM
+void ssystem3_state::ssystem3_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
/*
67-de playfield ($40 means white, $80 black)
*/
@@ -229,10 +230,10 @@ ADDRESS_MAP_START(ssystem3_state::ssystem3_map)
probably zusatzger??t memory (battery powered ram 256x4? at 0x4000)
$40ff low nibble ram if playfield module (else init with normal playfield)
*/
- AM_RANGE( 0x6000, 0x600f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
- AM_RANGE( 0xc000, 0xdfff) AM_ROM
- AM_RANGE( 0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x6000, 0x600f).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xc000, 0xdfff).rom();
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( ssystem3 )
/*
diff --git a/src/mame/drivers/st17xx.cpp b/src/mame/drivers/st17xx.cpp
index 1ad605a823c..043a49cc512 100644
--- a/src/mame/drivers/st17xx.cpp
+++ b/src/mame/drivers/st17xx.cpp
@@ -59,9 +59,10 @@ public:
/* Memory Maps */
-ADDRESS_MAP_START(st17xx_state::cpu_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
-ADDRESS_MAP_END
+void st17xx_state::cpu_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).rom();
+}
/* Input Ports */
diff --git a/src/mame/drivers/st_mp100.cpp b/src/mame/drivers/st_mp100.cpp
index bae2b6a0eb0..bdef37e1c69 100644
--- a/src/mame/drivers/st_mp100.cpp
+++ b/src/mame/drivers/st_mp100.cpp
@@ -90,16 +90,17 @@ private:
};
-ADDRESS_MAP_START(st_mp100_state::st_mp100_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
- AM_RANGE(0x00a0, 0x00a7) AM_WRITENOP // to sound board
- AM_RANGE(0x00c0, 0x00c7) // to sound board
- AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0 )
-ADDRESS_MAP_END
+void st_mp100_state::st_mp100_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x00a0, 0x00a7).nopw(); // to sound board
+ map(0x00c0, 0x00c7); // to sound board
+ map(0x0200, 0x02ff).ram().share("nvram");
+ map(0x1000, 0x1fff).rom().region("roms", 0);
+}
static INPUT_PORTS_START( mp100 )
PORT_START("TEST")
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index da0a7c3f231..281920d61af 100644
--- a/src/mame/drivers/st_mp200.cpp
+++ b/src/mame/drivers/st_mp200.cpp
@@ -104,16 +104,17 @@ private:
};
-ADDRESS_MAP_START(st_mp200_state::st_mp200_map)
+void st_mp200_state::st_mp200_map(address_map &map)
+{
//ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
- AM_RANGE(0x00a0, 0x00a7) AM_WRITENOP // to sound board
- AM_RANGE(0x00c0, 0x00c7) // to sound board
- AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1000, 0xffff) AM_ROM //AM_REGION("roms", 0 )
-ADDRESS_MAP_END
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x00a0, 0x00a7).nopw(); // to sound board
+ map(0x00c0, 0x00c7); // to sound board
+ map(0x0200, 0x02ff).ram().share("nvram");
+ map(0x1000, 0xffff).rom(); //AM_REGION("roms", 0 )
+}
static INPUT_PORTS_START( mp200 )
PORT_START("TEST")
diff --git a/src/mame/drivers/stactics.cpp b/src/mame/drivers/stactics.cpp
index b377d514878..b8e94d5e5b7 100644
--- a/src/mame/drivers/stactics.cpp
+++ b/src/mame/drivers/stactics.cpp
@@ -178,32 +178,33 @@ INTERRUPT_GEN_MEMBER(stactics_state::interrupt)
*
*************************************/
-ADDRESS_MAP_START(stactics_state::main_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x40ff) AM_MIRROR(0x0700) AM_RAM
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x0fff) AM_READ_PORT("IN0")
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_READ_PORT("IN1")
- AM_RANGE(0x6000, 0x6007) AM_MIRROR(0x0f08) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0x6010, 0x6017) AM_MIRROR(0x0f08) AM_DEVWRITE("audiolatch", ls259_device, write_d0)
- AM_RANGE(0x6020, 0x6027) AM_MIRROR(0x0f08) AM_DEVWRITE("lamplatch", ls259_device, write_d0)
- AM_RANGE(0x6030, 0x6030) AM_MIRROR(0x0f0f) AM_WRITE(speed_latch_w)
- AM_RANGE(0x6040, 0x6040) AM_MIRROR(0x0f0f) AM_WRITE(shot_trigger_w)
- AM_RANGE(0x6050, 0x6050) AM_MIRROR(0x0f0f) AM_WRITE(shot_flag_clear_w)
- AM_RANGE(0x6060, 0x606f) AM_MIRROR(0x0f00) AM_WRITEONLY AM_SHARE("display_buffer")
- AM_RANGE(0x6070, 0x609f) AM_MIRROR(0x0f00) AM_WRITENOP
+void stactics_state::main_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom();
+ map(0x4000, 0x40ff).mirror(0x0700).ram();
+ map(0x5000, 0x5000).mirror(0x0fff).portr("IN0");
+ map(0x6000, 0x6000).mirror(0x0fff).portr("IN1");
+ map(0x6000, 0x6007).mirror(0x0f08).w(m_outlatch, FUNC(ls259_device::write_d0));
+ map(0x6010, 0x6017).mirror(0x0f08).w("audiolatch", FUNC(ls259_device::write_d0));
+ map(0x6020, 0x6027).mirror(0x0f08).w("lamplatch", FUNC(ls259_device::write_d0));
+ map(0x6030, 0x6030).mirror(0x0f0f).w(this, FUNC(stactics_state::speed_latch_w));
+ map(0x6040, 0x6040).mirror(0x0f0f).w(this, FUNC(stactics_state::shot_trigger_w));
+ map(0x6050, 0x6050).mirror(0x0f0f).w(this, FUNC(stactics_state::shot_flag_clear_w));
+ map(0x6060, 0x606f).mirror(0x0f00).writeonly().share("display_buffer");
+ map(0x6070, 0x609f).mirror(0x0f00).nopw();
/* AM_RANGE(0x60a0, 0x60ef) AM_MIRROR(0x0f00) AM_WRITE(sound2_w) */
- AM_RANGE(0x60f0, 0x60ff) AM_MIRROR(0x0f00) AM_WRITENOP
- AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_READ_PORT("IN2")
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_READ_PORT("IN3")
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_WRITE(scroll_ram_w)
- AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0fff) AM_READ(vert_pos_r)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x0fff) AM_READ(horiz_pos_r)
- AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("videoram_b")
- AM_RANGE(0xc000, 0xcfff) AM_NOP
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram_d")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("videoram_e")
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("videoram_f")
-ADDRESS_MAP_END
+ map(0x60f0, 0x60ff).mirror(0x0f00).nopw();
+ map(0x7000, 0x7000).mirror(0x0fff).portr("IN2");
+ map(0x8000, 0x8000).mirror(0x0fff).portr("IN3");
+ map(0x8000, 0x87ff).mirror(0x0800).w(this, FUNC(stactics_state::scroll_ram_w));
+ map(0x9000, 0x9000).mirror(0x0fff).r(this, FUNC(stactics_state::vert_pos_r));
+ map(0xa000, 0xa000).mirror(0x0fff).r(this, FUNC(stactics_state::horiz_pos_r));
+ map(0xb000, 0xbfff).ram().share("videoram_b");
+ map(0xc000, 0xcfff).noprw();
+ map(0xd000, 0xdfff).ram().share("videoram_d");
+ map(0xe000, 0xefff).ram().share("videoram_e");
+ map(0xf000, 0xffff).ram().share("videoram_f");
+}
diff --git a/src/mame/drivers/stadhero.cpp b/src/mame/drivers/stadhero.cpp
index 9be53c637e2..2a21ae5e1d4 100644
--- a/src/mame/drivers/stadhero.cpp
+++ b/src/mame/drivers/stadhero.cpp
@@ -53,31 +53,33 @@ WRITE16_MEMBER(stadhero_state::stadhero_control_w)
/******************************************************************************/
-ADDRESS_MAP_START(stadhero_state::main_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(stadhero_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */
- AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
- AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
- AM_RANGE(0x30c000, 0x30c001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x30c002, 0x30c003) AM_READ_PORT("COIN")
- AM_RANGE(0x30c004, 0x30c005) AM_READ_PORT("DSW")
- AM_RANGE(0x30c000, 0x30c00b) AM_WRITE(stadhero_control_w)
- AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* Main ram */
- AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x000800) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
+void stadhero_state::main_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x200000, 0x2007ff).ram().w(this, FUNC(stadhero_state::stadhero_pf1_data_w)).share("pf1_data");
+ map(0x240000, 0x240007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */
+ map(0x240010, 0x240017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w));
+ map(0x260000, 0x261fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w));
+ map(0x30c000, 0x30c001).portr("INPUTS");
+ map(0x30c002, 0x30c003).portr("COIN");
+ map(0x30c004, 0x30c005).portr("DSW");
+ map(0x30c000, 0x30c00b).w(this, FUNC(stadhero_state::stadhero_control_w));
+ map(0x310000, 0x3107ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xff8000, 0xffbfff).ram(); /* Main ram */
+ map(0xffc000, 0xffc7ff).mirror(0x000800).ram().share("spriteram");
+}
/******************************************************************************/
-ADDRESS_MAP_START(stadhero_state::audio_map)
- AM_RANGE(0x0000, 0x05ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void stadhero_state::audio_map(address_map &map)
+{
+ 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();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/starcrus.cpp b/src/mame/drivers/starcrus.cpp
index eea560a28f5..b61ac8c6972 100644
--- a/src/mame/drivers/starcrus.cpp
+++ b/src/mame/drivers/starcrus.cpp
@@ -20,25 +20,27 @@ palazzol@home.com
#include "speaker.h"
-ADDRESS_MAP_START(starcrus_state::starcrus_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0x10ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(starcrus_state::starcrus_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_WRITE(s1_x_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_WRITE(s1_y_w)
- AM_RANGE(0x02, 0x02) AM_READWRITE(coll_det_r, s2_x_w)
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(s2_y_w)
- AM_RANGE(0x04, 0x04) AM_WRITE(p1_x_w)
- AM_RANGE(0x05, 0x05) AM_WRITE(p1_y_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(p2_x_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(p2_y_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(ship_parm_1_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(ship_parm_2_w)
- AM_RANGE(0x0a, 0x0a) AM_WRITE(proj_parm_1_w)
- AM_RANGE(0x0b, 0x0b) AM_WRITE(proj_parm_2_w)
-ADDRESS_MAP_END
+void starcrus_state::starcrus_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1000, 0x10ff).ram();
+}
+
+void starcrus_state::starcrus_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("P1").w(this, FUNC(starcrus_state::s1_x_w));
+ map(0x01, 0x01).portr("P2").w(this, FUNC(starcrus_state::s1_y_w));
+ map(0x02, 0x02).rw(this, FUNC(starcrus_state::coll_det_r), FUNC(starcrus_state::s2_x_w));
+ map(0x03, 0x03).portr("DSW").w(this, FUNC(starcrus_state::s2_y_w));
+ map(0x04, 0x04).w(this, FUNC(starcrus_state::p1_x_w));
+ map(0x05, 0x05).w(this, FUNC(starcrus_state::p1_y_w));
+ map(0x06, 0x06).w(this, FUNC(starcrus_state::p2_x_w));
+ map(0x07, 0x07).w(this, FUNC(starcrus_state::p2_y_w));
+ map(0x08, 0x08).w(this, FUNC(starcrus_state::ship_parm_1_w));
+ map(0x09, 0x09).w(this, FUNC(starcrus_state::ship_parm_2_w));
+ map(0x0a, 0x0a).w(this, FUNC(starcrus_state::proj_parm_1_w));
+ map(0x0b, 0x0b).w(this, FUNC(starcrus_state::proj_parm_2_w));
+}
static INPUT_PORTS_START( starcrus )
diff --git a/src/mame/drivers/starfire.cpp b/src/mame/drivers/starfire.cpp
index b8f42454e77..4aac999675a 100644
--- a/src/mame/drivers/starfire.cpp
+++ b/src/mame/drivers/starfire.cpp
@@ -190,12 +190,13 @@ READ8_MEMBER(starfire_state::fireone_input_r)
*
*************************************/
-ADDRESS_MAP_START(starfire_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_READWRITE(starfire_scratch_r, starfire_scratch_w)
- AM_RANGE(0xa000, 0xbfff) AM_READWRITE(starfire_colorram_r, starfire_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xffff) AM_READWRITE(starfire_videoram_r, starfire_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void starfire_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).rw(this, FUNC(starfire_state::starfire_scratch_r), FUNC(starfire_state::starfire_scratch_w));
+ map(0xa000, 0xbfff).rw(this, FUNC(starfire_state::starfire_colorram_r), FUNC(starfire_state::starfire_colorram_w)).share("colorram");
+ map(0xc000, 0xffff).rw(this, FUNC(starfire_state::starfire_videoram_r), FUNC(starfire_state::starfire_videoram_w)).share("videoram");
+}
diff --git a/src/mame/drivers/stargame.cpp b/src/mame/drivers/stargame.cpp
index 46a2ebd0f46..274540a2c82 100644
--- a/src/mame/drivers/stargame.cpp
+++ b/src/mame/drivers/stargame.cpp
@@ -43,39 +43,43 @@ private:
required_device<z80ctc_device> m_ctc;
};
-ADDRESS_MAP_START(stargame_state::maincpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x7800) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stargame_state::maincpu_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x09) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // CSON - command to the sound cpu - NMI to sound cpu
- AM_RANGE(0x10, 0x1f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x20, 0x2f) // CSW2 - input lines: P0 to D4; P1 to D5; DAPRI to D6; TEST to D7
- AM_RANGE(0x30, 0x3f) // CSW1 - input lines
- AM_RANGE(0x40, 0x4f) // CDIG - score display
- AM_RANGE(0x50, 0x5f) // CDRIV
- AM_RANGE(0x60, 0x67) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // CPOR
- AM_RANGE(0x68, 0x69) AM_MIRROR(0x06) // CPOR : 68=CKPRI; 69=CKDIS
- AM_RANGE(0x70, 0x73) AM_MIRROR(0x0c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stargame_state::audiocpu_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x3ffe) AM_DEVREADWRITE("mea8000", mea8000_device, read, write)
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_WRITE(rint_w) // RINT - turn off interrupt of the audiocpu
- AM_RANGE(0xe000, 0xffff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) // COMAND - acknowledge NMI and read the sound command
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stargame_state::audiocpu_io)
- ADDRESS_MAP_GLOBAL_MASK(0x01)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("ay", ay8910_device, data_r)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void stargame_state::maincpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0x87ff).mirror(0x7800).ram();
+}
+
+void stargame_state::maincpu_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x09).w("soundlatch", FUNC(generic_latch_8_device::write)); // CSON - command to the sound cpu - NMI to sound cpu
+ map(0x10, 0x1f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x20, 0x2f); // CSW2 - input lines: P0 to D4; P1 to D5; DAPRI to D6; TEST to D7
+ map(0x30, 0x3f); // CSW1 - input lines
+ map(0x40, 0x4f); // CDIG - score display
+ map(0x50, 0x5f); // CDRIV
+ map(0x60, 0x67).w("mainlatch", FUNC(ls259_device::write_d0)); // CPOR
+ map(0x68, 0x69).mirror(0x06); // CPOR : 68=CKPRI; 69=CKDIS
+ map(0x70, 0x73).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
+
+void stargame_state::audiocpu_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x4001).mirror(0x3ffe).rw("mea8000", FUNC(mea8000_device::read), FUNC(mea8000_device::write));
+ map(0x8000, 0x87ff).mirror(0x3800).ram();
+ map(0xc000, 0xdfff).w(this, FUNC(stargame_state::rint_w)); // RINT - turn off interrupt of the audiocpu
+ map(0xe000, 0xffff).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); // COMAND - acknowledge NMI and read the sound command
+}
+
+void stargame_state::audiocpu_io(address_map &map)
+{
+ map.global_mask(0x01);
+ map(0x00, 0x00).r("ay", FUNC(ay8910_device::data_r));
+ map(0x01, 0x01).w("ay", FUNC(ay8910_device::data_address_w));
+}
static INPUT_PORTS_START( stargame )
INPUT_PORTS_END
diff --git a/src/mame/drivers/starshp1.cpp b/src/mame/drivers/starshp1.cpp
index 29b2fc5cd15..31072896202 100644
--- a/src/mame/drivers/starshp1.cpp
+++ b/src/mame/drivers/starshp1.cpp
@@ -155,26 +155,27 @@ WRITE_LINE_MEMBER(starshp1_state::led_w)
}
-ADDRESS_MAP_START(starshp1_state::starshp1_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100)
- AM_RANGE(0x2c00, 0x3fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("VBLANK")
- AM_RANGE(0xc300, 0xc3ff) AM_WRITE(starshp1_sspic_w) /* spaceship picture */
- AM_RANGE(0xc400, 0xc400) AM_READ_PORT("COINAGE")
- AM_RANGE(0xc400, 0xc4ff) AM_WRITE(starshp1_ssadd_w) /* spaceship address */
- AM_RANGE(0xc800, 0xc9ff) AM_RAM_WRITE(starshp1_playfield_w) AM_SHARE("playfield_ram")
- AM_RANGE(0xcc00, 0xcc0f) AM_WRITEONLY AM_SHARE("hpos_ram")
- AM_RANGE(0xd000, 0xd00f) AM_WRITEONLY AM_SHARE("vpos_ram")
- AM_RANGE(0xd400, 0xd40f) AM_WRITEONLY AM_SHARE("obj_ram")
- AM_RANGE(0xd800, 0xd800) AM_READ(starshp1_rng_r)
- AM_RANGE(0xd800, 0xd80f) AM_WRITE(starshp1_collision_reset_w)
- AM_RANGE(0xdc00, 0xdc07) AM_MIRROR(0x0008) AM_DEVWRITE("misclatch", f9334_device, write_d0)
- AM_RANGE(0xdd00, 0xdd0f) AM_WRITE(starshp1_analog_in_w)
- AM_RANGE(0xde00, 0xde07) AM_MIRROR(0x0008) AM_DEVWRITE("audiolatch", f9334_device, write_d0)
- AM_RANGE(0xdf00, 0xdf0f) AM_WRITE(starshp1_analog_out_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void starshp1_state::starshp1_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().mirror(0x100);
+ map(0x2c00, 0x3fff).rom();
+ map(0xa000, 0xa000).portr("SYSTEM");
+ map(0xb000, 0xb000).portr("VBLANK");
+ map(0xc300, 0xc3ff).w(this, FUNC(starshp1_state::starshp1_sspic_w)); /* spaceship picture */
+ map(0xc400, 0xc400).portr("COINAGE");
+ map(0xc400, 0xc4ff).w(this, FUNC(starshp1_state::starshp1_ssadd_w)); /* spaceship address */
+ map(0xc800, 0xc9ff).ram().w(this, FUNC(starshp1_state::starshp1_playfield_w)).share("playfield_ram");
+ map(0xcc00, 0xcc0f).writeonly().share("hpos_ram");
+ map(0xd000, 0xd00f).writeonly().share("vpos_ram");
+ map(0xd400, 0xd40f).writeonly().share("obj_ram");
+ map(0xd800, 0xd800).r(this, FUNC(starshp1_state::starshp1_rng_r));
+ map(0xd800, 0xd80f).w(this, FUNC(starshp1_state::starshp1_collision_reset_w));
+ map(0xdc00, 0xdc07).mirror(0x0008).w("misclatch", FUNC(f9334_device::write_d0));
+ map(0xdd00, 0xdd0f).w(this, FUNC(starshp1_state::starshp1_analog_in_w));
+ map(0xde00, 0xde07).mirror(0x0008).w("audiolatch", FUNC(f9334_device::write_d0));
+ map(0xdf00, 0xdf0f).w(this, FUNC(starshp1_state::starshp1_analog_out_w));
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( starshp1 )
diff --git a/src/mame/drivers/starwars.cpp b/src/mame/drivers/starwars.cpp
index f1c0330dc5f..4588de69707 100644
--- a/src/mame/drivers/starwars.cpp
+++ b/src/mame/drivers/starwars.cpp
@@ -130,41 +130,43 @@ WRITE8_MEMBER(starwars_state::esb_slapstic_w)
*
*************************************/
-ADDRESS_MAP_START(starwars_state::main_map)
- AM_RANGE(0x0000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0)
- AM_RANGE(0x3000, 0x3fff) AM_ROM /* vector_rom */
- AM_RANGE(0x4300, 0x431f) AM_READ_PORT("IN0")
- AM_RANGE(0x4320, 0x433f) AM_READ_PORT("IN1")
- AM_RANGE(0x4340, 0x435f) AM_READ_PORT("DSW0")
- AM_RANGE(0x4360, 0x437f) AM_READ_PORT("DSW1")
- AM_RANGE(0x4380, 0x439f) AM_READ(starwars_adc_r) /* a-d control result */
- AM_RANGE(0x4400, 0x4400) AM_DEVREAD("mainlatch", generic_latch_8_device, read)
- AM_RANGE(0x4400, 0x4400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x4401, 0x4401) AM_READ(starwars_main_ready_flag_r)
- AM_RANGE(0x4500, 0x45ff) AM_DEVREADWRITE("x2212", x2212_device, read, write)
- AM_RANGE(0x4600, 0x461f) AM_DEVWRITE("avg", avg_starwars_device, go_w)
- AM_RANGE(0x4620, 0x463f) AM_DEVWRITE("avg", avg_starwars_device, reset_w)
- AM_RANGE(0x4640, 0x465f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x4660, 0x467f) AM_WRITE(irq_ack_w)
- AM_RANGE(0x4680, 0x4687) AM_READNOP AM_MIRROR(0x0018) AM_DEVWRITE("outlatch", ls259_device, write_d7)
- AM_RANGE(0x46a0, 0x46bf) AM_WRITE(starwars_nstore_w)
- AM_RANGE(0x46c0, 0x46c2) AM_WRITE(starwars_adc_select_w)
- AM_RANGE(0x46e0, 0x46e0) AM_WRITE(starwars_soundrst_w)
- AM_RANGE(0x4700, 0x4707) AM_WRITE(starwars_math_w)
- AM_RANGE(0x4700, 0x4700) AM_READ(starwars_div_reh_r)
- AM_RANGE(0x4701, 0x4701) AM_READ(starwars_div_rel_r)
- AM_RANGE(0x4703, 0x4703) AM_READ(starwars_prng_r) /* pseudo random number generator */
- AM_RANGE(0x4800, 0x4fff) AM_RAM /* CPU and Math RAM */
- AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("mathram") /* CPU and Math RAM */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* rest of main_rom */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(starwars_state::esb_main_map)
- AM_IMPORT_FROM(main_map)
- AM_RANGE(0x8000, 0x9fff) AM_READWRITE(esb_slapstic_r, esb_slapstic_w)
- AM_RANGE(0xa000, 0xffff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
+void starwars_state::main_map(address_map &map)
+{
+ map(0x0000, 0x2fff).ram().share("vectorram").region("maincpu", 0);
+ map(0x3000, 0x3fff).rom(); /* vector_rom */
+ map(0x4300, 0x431f).portr("IN0");
+ map(0x4320, 0x433f).portr("IN1");
+ map(0x4340, 0x435f).portr("DSW0");
+ map(0x4360, 0x437f).portr("DSW1");
+ map(0x4380, 0x439f).r(this, FUNC(starwars_state::starwars_adc_r)); /* a-d control result */
+ map(0x4400, 0x4400).r(m_mainlatch, FUNC(generic_latch_8_device::read));
+ map(0x4400, 0x4400).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x4401, 0x4401).r(this, FUNC(starwars_state::starwars_main_ready_flag_r));
+ map(0x4500, 0x45ff).rw("x2212", FUNC(x2212_device::read), FUNC(x2212_device::write));
+ map(0x4600, 0x461f).w("avg", FUNC(avg_starwars_device::go_w));
+ map(0x4620, 0x463f).w("avg", FUNC(avg_starwars_device::reset_w));
+ map(0x4640, 0x465f).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x4660, 0x467f).w(this, FUNC(starwars_state::irq_ack_w));
+ map(0x4680, 0x4687).nopr().mirror(0x0018).w("outlatch", FUNC(ls259_device::write_d7));
+ map(0x46a0, 0x46bf).w(this, FUNC(starwars_state::starwars_nstore_w));
+ map(0x46c0, 0x46c2).w(this, FUNC(starwars_state::starwars_adc_select_w));
+ map(0x46e0, 0x46e0).w(this, FUNC(starwars_state::starwars_soundrst_w));
+ map(0x4700, 0x4707).w(this, FUNC(starwars_state::starwars_math_w));
+ map(0x4700, 0x4700).r(this, FUNC(starwars_state::starwars_div_reh_r));
+ map(0x4701, 0x4701).r(this, FUNC(starwars_state::starwars_div_rel_r));
+ map(0x4703, 0x4703).r(this, FUNC(starwars_state::starwars_prng_r)); /* pseudo random number generator */
+ map(0x4800, 0x4fff).ram(); /* CPU and Math RAM */
+ map(0x5000, 0x5fff).ram().share("mathram"); /* CPU and Math RAM */
+ map(0x6000, 0x7fff).bankr("bank1"); /* banked ROM */
+ map(0x8000, 0xffff).rom(); /* rest of main_rom */
+}
+
+void starwars_state::esb_main_map(address_map &map)
+{
+ main_map(map);
+ map(0x8000, 0x9fff).rw(this, FUNC(starwars_state::esb_slapstic_r), FUNC(starwars_state::esb_slapstic_w));
+ map(0xa000, 0xffff).bankr("bank2");
+}
/*************************************
@@ -173,16 +175,17 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(starwars_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_DEVWRITE("mainlatch", generic_latch_8_device, write)
- AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* SIN Read */
- AM_RANGE(0x1000, 0x107f) AM_RAM /* 6532 ram */
- AM_RANGE(0x1080, 0x109f) AM_DEVREADWRITE("riot", riot6532_device, read, write)
- AM_RANGE(0x1800, 0x183f) AM_WRITE(quad_pokeyn_w)
- AM_RANGE(0x2000, 0x27ff) AM_RAM /* program RAM */
- AM_RANGE(0x4000, 0x7fff) AM_ROM /* sound roms */
- AM_RANGE(0xb000, 0xffff) AM_ROM /* more sound roms */
-ADDRESS_MAP_END
+void starwars_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).w(m_mainlatch, FUNC(generic_latch_8_device::write));
+ map(0x0800, 0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* SIN Read */
+ map(0x1000, 0x107f).ram(); /* 6532 ram */
+ map(0x1080, 0x109f).rw(m_riot, FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x1800, 0x183f).w(this, FUNC(starwars_state::quad_pokeyn_w));
+ map(0x2000, 0x27ff).ram(); /* program RAM */
+ map(0x4000, 0x7fff).rom(); /* sound roms */
+ map(0xb000, 0xffff).rom(); /* more sound roms */
+}
diff --git a/src/mame/drivers/statriv2.cpp b/src/mame/drivers/statriv2.cpp
index 29ea50afef1..4a0e82357a3 100644
--- a/src/mame/drivers/statriv2.cpp
+++ b/src/mame/drivers/statriv2.cpp
@@ -286,20 +286,22 @@ WRITE8_MEMBER(statriv2_state::ppi_portc_hi_w)
*
*************************************/
-ADDRESS_MAP_START(statriv2_state::statriv2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x48ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(statriv2_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(statriv2_state::statriv2_io_map)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x28, 0x2b) AM_READ(question_data_r) AM_WRITEONLY AM_SHARE("question_offset")
- AM_RANGE(0xb0, 0xb1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xb1, 0xb1) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("tms", tms9927_device, read, write)
-ADDRESS_MAP_END
+void statriv2_state::statriv2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x4800, 0x48ff).ram().share("nvram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(statriv2_state::statriv2_videoram_w)).share("videoram");
+}
+
+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(this, 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));
+}
/*************************************
diff --git a/src/mame/drivers/stellafr.cpp b/src/mame/drivers/stellafr.cpp
index eda4cf49085..a5f05579b16 100644
--- a/src/mame/drivers/stellafr.cpp
+++ b/src/mame/drivers/stellafr.cpp
@@ -73,15 +73,16 @@ WRITE8_MEMBER(stellafr_state::ay8910_portb_w)
-ADDRESS_MAP_START(stellafr_state::stellafr_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x8000c0, 0x8000c1) AM_WRITE8(write_8000c1, 0x00ff)
- AM_RANGE(0x800100, 0x800101) AM_READWRITE8(read_800101, write_800101, 0x00ff)
- AM_RANGE(0x800140, 0x800141) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_w, 0x00ff)
- AM_RANGE(0x800142, 0x800143) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff)
- AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void stellafr_state::stellafr_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x8000c1, 0x8000c1).w(this, FUNC(stellafr_state::write_8000c1));
+ map(0x800101, 0x800101).rw(this, FUNC(stellafr_state::read_800101), FUNC(stellafr_state::write_800101));
+ map(0x800141, 0x800141).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0x800143, 0x800143).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0xff0000, 0xffffff).ram();
+}
static INPUT_PORTS_START( stellafr )
diff --git a/src/mame/drivers/stfight.cpp b/src/mame/drivers/stfight.cpp
index 9a345552474..a1fea31addc 100644
--- a/src/mame/drivers/stfight.cpp
+++ b/src/mame/drivers/stfight.cpp
@@ -267,60 +267,65 @@ TODO:
#include "speaker.h"
-ADDRESS_MAP_START(stfight_state::cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") /* sf02.bin */
- AM_RANGE(0xc000, 0xc0ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xc100, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xc200, 0xc200) AM_READ_PORT("P1")
- AM_RANGE(0xc201, 0xc201) AM_READ_PORT("P2")
- AM_RANGE(0xc202, 0xc202) AM_READ_PORT("START")
- AM_RANGE(0xc203, 0xc203) AM_READ_PORT("DSW0")
- AM_RANGE(0xc204, 0xc204) AM_READ_PORT("DSW1")
- AM_RANGE(0xc205, 0xc205) AM_READ(stfight_coin_r)
- AM_RANGE(0xc500, 0xc500) AM_WRITE(stfight_fm_w)
- AM_RANGE(0xc600, 0xc600) AM_WRITE(stfight_mcu_w)
- AM_RANGE(0xc700, 0xc700) AM_WRITE(stfight_coin_w)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(stfight_io_w)
- AM_RANGE(0xc806, 0xc806) AM_WRITENOP /* TBD */
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stfight_state::stfight_cpu1_map)
- AM_IMPORT_FROM(cpu1_map)
- AM_RANGE(0xc807, 0xc807) AM_DEVWRITE("stfight_vid", stfight_video_device, stfight_sprite_bank_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("stfight_vid", stfight_video_device, stfight_text_char_w) AM_SHARE("txram")
- AM_RANGE(0xd800, 0xd808) AM_RAM_DEVWRITE("stfight_vid", stfight_video_device, stfight_vh_latch_w) AM_SHARE("vregs")
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sprite_ram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(stfight_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(stfight_state::cshooter_cpu1_map)
- AM_IMPORT_FROM(cpu1_map)
- AM_RANGE(0xc801, 0xc801) AM_WRITE(stfight_bank_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, txram_w) AM_SHARE("txram")
- AM_RANGE(0xd800, 0xd80f) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, vregs_w) AM_SHARE("vregs") // wrong?
- AM_RANGE(0xe000, 0xfdff) AM_RAM
- AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(stfight_state::cpu2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_READNOP
- AM_RANGE(0xd800, 0xd800) AM_WRITENOP
- AM_RANGE(0xe800, 0xe800) AM_WRITENOP
- AM_RANGE(0xf000, 0xf000) AM_READ(stfight_fm_r)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void stfight_state::cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("mainbank"); /* sf02.bin */
+ map(0xc000, 0xc0ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+ map(0xc100, 0xc1ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xc200, 0xc200).portr("P1");
+ map(0xc201, 0xc201).portr("P2");
+ map(0xc202, 0xc202).portr("START");
+ map(0xc203, 0xc203).portr("DSW0");
+ map(0xc204, 0xc204).portr("DSW1");
+ map(0xc205, 0xc205).r(this, FUNC(stfight_state::stfight_coin_r));
+ map(0xc500, 0xc500).w(this, FUNC(stfight_state::stfight_fm_w));
+ map(0xc600, 0xc600).w(this, FUNC(stfight_state::stfight_mcu_w));
+ map(0xc700, 0xc700).w(this, FUNC(stfight_state::stfight_coin_w));
+ map(0xc804, 0xc804).w(this, FUNC(stfight_state::stfight_io_w));
+ map(0xc806, 0xc806).nopw(); /* TBD */
+ map(0xe000, 0xefff).ram();
+}
+
+void stfight_state::stfight_cpu1_map(address_map &map)
+{
+ cpu1_map(map);
+ map(0xc807, 0xc807).w("stfight_vid", FUNC(stfight_video_device::stfight_sprite_bank_w));
+ map(0xd000, 0xd7ff).ram().w("stfight_vid", FUNC(stfight_video_device::stfight_text_char_w)).share("txram");
+ map(0xd800, 0xd808).ram().w("stfight_vid", FUNC(stfight_video_device::stfight_vh_latch_w)).share("vregs");
+ map(0xf000, 0xffff).ram().share("sprite_ram");
+}
+
+
+void stfight_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+
+void stfight_state::cshooter_cpu1_map(address_map &map)
+{
+ cpu1_map(map);
+ map(0xc801, 0xc801).w(this, FUNC(stfight_state::stfight_bank_w));
+ map(0xd000, 0xd7ff).ram().w("airraid_vid", FUNC(airraid_video_device::txram_w)).share("txram");
+ map(0xd800, 0xd80f).ram().w("airraid_vid", FUNC(airraid_video_device::vregs_w)).share("vregs"); // wrong?
+ map(0xe000, 0xfdff).ram();
+ map(0xfe00, 0xffff).ram().share("sprite_ram");
+}
+
+
+
+void stfight_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc800, 0xc801).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xd000, 0xd000).nopr();
+ map(0xd800, 0xd800).nopw();
+ map(0xe800, 0xe800).nopw();
+ map(0xf000, 0xf000).r(this, FUNC(stfight_state::stfight_fm_r));
+ map(0xf800, 0xffff).ram();
+}
static INPUT_PORTS_START( stfight )
diff --git a/src/mame/drivers/stlforce.cpp b/src/mame/drivers/stlforce.cpp
index 81d5c26d02a..16ab4391e3d 100644
--- a/src/mame/drivers/stlforce.cpp
+++ b/src/mame/drivers/stlforce.cpp
@@ -92,33 +92,35 @@ WRITE8_MEMBER(stlforce_state::oki_bank_w)
}
}
-ADDRESS_MAP_START(stlforce_state::stlforce_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(mlow_videoram_w) AM_SHARE("mlow_videoram")
- AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(mhigh_videoram_w) AM_SHARE("mhigh_videoram")
- AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x102800, 0x102fff) AM_RAM /* unknown / ram */
- AM_RANGE(0x103000, 0x1033ff) AM_RAM AM_SHARE("bg_scrollram")
- AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram")
- AM_RANGE(0x103800, 0x103bff) AM_RAM AM_SHARE("mhigh_scrollram")
- AM_RANGE(0x103c00, 0x103fff) AM_RAM AM_SHARE("vidattrram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x105000, 0x107fff) AM_RAM /* unknown / ram */
- AM_RANGE(0x108000, 0x108fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x109000, 0x11ffff) AM_RAM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUT")
- AM_RANGE(0x400002, 0x400003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x400010, 0x400011) AM_WRITE8(eeprom_w, 0x00ff)
- AM_RANGE(0x400012, 0x400013) AM_WRITE8(oki_bank_w, 0xff00)
- AM_RANGE(0x40001e, 0x40001f) AM_WRITENOP // sprites buffer commands
- AM_RANGE(0x410000, 0x410001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stlforce_state::twinbrat_oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void stlforce_state::stlforce_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x1007ff).ram().w(this, FUNC(stlforce_state::bg_videoram_w)).share("bg_videoram");
+ map(0x100800, 0x100fff).ram().w(this, FUNC(stlforce_state::mlow_videoram_w)).share("mlow_videoram");
+ map(0x101000, 0x1017ff).ram().w(this, FUNC(stlforce_state::mhigh_videoram_w)).share("mhigh_videoram");
+ map(0x101800, 0x1027ff).ram().w(this, FUNC(stlforce_state::tx_videoram_w)).share("tx_videoram");
+ map(0x102800, 0x102fff).ram(); /* unknown / ram */
+ map(0x103000, 0x1033ff).ram().share("bg_scrollram");
+ map(0x103400, 0x1037ff).ram().share("mlow_scrollram");
+ map(0x103800, 0x103bff).ram().share("mhigh_scrollram");
+ map(0x103c00, 0x103fff).ram().share("vidattrram");
+ map(0x104000, 0x104fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x105000, 0x107fff).ram(); /* unknown / ram */
+ map(0x108000, 0x108fff).ram().share("spriteram");
+ map(0x109000, 0x11ffff).ram();
+ map(0x400000, 0x400001).portr("INPUT");
+ map(0x400002, 0x400003).portr("SYSTEM");
+ map(0x400011, 0x400011).w(this, FUNC(stlforce_state::eeprom_w));
+ map(0x400012, 0x400012).w(this, FUNC(stlforce_state::oki_bank_w));
+ map(0x40001e, 0x40001f).nopw(); // sprites buffer commands
+ map(0x410001, 0x410001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void stlforce_state::twinbrat_oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( stlforce )
PORT_START("INPUT")
diff --git a/src/mame/drivers/stratos.cpp b/src/mame/drivers/stratos.cpp
index 35dc8d9896a..ca23a2f360c 100644
--- a/src/mame/drivers/stratos.cpp
+++ b/src/mame/drivers/stratos.cpp
@@ -330,17 +330,18 @@ WRITE8_MEMBER(stratos_state::lcd_w)
}
}
-ADDRESS_MAP_START(stratos_state::stratos_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_WRITE(p2000_w)
- AM_RANGE(0x2200, 0x2200) AM_READWRITE(p2200_r, p2200_w)
- AM_RANGE(0x2400, 0x2400) AM_WRITE(p2400_w)
- AM_RANGE(0x2600, 0x2600) AM_READWRITE(control_r, control_w)
- AM_RANGE(0x2800, 0x37ff) AM_RAMBANK("nvram_bank")
- AM_RANGE(0x3800, 0x3800) AM_READWRITE(lcd_r, lcd_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank_4000")
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank_8000")
-ADDRESS_MAP_END
+void stratos_state::stratos_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2000).w(this, FUNC(stratos_state::p2000_w));
+ map(0x2200, 0x2200).rw(this, FUNC(stratos_state::p2200_r), FUNC(stratos_state::p2200_w));
+ map(0x2400, 0x2400).w(this, FUNC(stratos_state::p2400_w));
+ map(0x2600, 0x2600).rw(this, FUNC(stratos_state::control_r), FUNC(stratos_state::control_w));
+ map(0x2800, 0x37ff).bankrw("nvram_bank");
+ map(0x3800, 0x3800).rw(this, FUNC(stratos_state::lcd_r), FUNC(stratos_state::lcd_w));
+ map(0x4000, 0x7fff).bankr("bank_4000");
+ map(0x8000, 0xffff).bankr("bank_8000");
+}
static INPUT_PORTS_START( stratos )
INPUT_PORTS_END
diff --git a/src/mame/drivers/strkzn.cpp b/src/mame/drivers/strkzn.cpp
index e9ae2c19fe1..59de3603653 100644
--- a/src/mame/drivers/strkzn.cpp
+++ b/src/mame/drivers/strkzn.cpp
@@ -32,23 +32,27 @@ private:
required_device<cpu_device> m_lightcpu;
};
-ADDRESS_MAP_START(strkzn_state::main_mem)
- AM_RANGE(0x0000, 0xdfff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(strkzn_state::main_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(strkzn_state::light_mem)
- AM_RANGE(0x00000, 0x00fff) AM_RAM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("lightcpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(strkzn_state::light_io)
- AM_RANGE(0x0007, 0x0007) AM_READNOP
-ADDRESS_MAP_END
+void strkzn_state::main_mem(address_map &map)
+{
+ map(0x0000, 0xdfff).rom().region("maincpu", 0);
+ map(0xe000, 0xffff).ram();
+}
+
+void strkzn_state::main_io(address_map &map)
+{
+ map.global_mask(0xff);
+}
+
+void strkzn_state::light_mem(address_map &map)
+{
+ map(0x00000, 0x00fff).ram();
+ map(0xf0000, 0xfffff).rom().region("lightcpu", 0);
+}
+
+void strkzn_state::light_io(address_map &map)
+{
+ map(0x0007, 0x0007).nopr();
+}
MACHINE_CONFIG_START(strkzn_state::strkzn)
MCFG_CPU_ADD("maincpu", Z80, 4000000)
diff --git a/src/mame/drivers/strnskil.cpp b/src/mame/drivers/strnskil.cpp
index ae38b0c6726..85e2a11252c 100644
--- a/src/mame/drivers/strnskil.cpp
+++ b/src/mame/drivers/strnskil.cpp
@@ -98,33 +98,35 @@ WRITE8_MEMBER(strnskil_state::protection_w)
/****************************************************************************/
-ADDRESS_MAP_START(strnskil_state::strnskil_map1)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
-
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(strnskil_videoram_w) AM_SHARE("videoram")
-
- AM_RANGE(0xd800, 0xd800) AM_READ(strnskil_d800_r)
- AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
- AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
- AM_RANGE(0xd803, 0xd803) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd804, 0xd804) AM_READ_PORT("P1")
- AM_RANGE(0xd805, 0xd805) AM_READ_PORT("P2")
-
- AM_RANGE(0xd808, 0xd808) AM_WRITE(strnskil_scrl_ctrl_w)
- AM_RANGE(0xd809, 0xd809) AM_WRITENOP /* coin counter? */
- AM_RANGE(0xd80a, 0xd80b) AM_WRITEONLY AM_SHARE("xscroll")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(strnskil_state::strnskil_map2)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
-
- AM_RANGE(0xd801, 0xd801) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0xd802, 0xd802) AM_DEVWRITE("sn2", sn76496_device, write)
-ADDRESS_MAP_END
+void strnskil_state::strnskil_map1(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(strnskil_state::strnskil_videoram_w)).share("videoram");
+
+ map(0xd800, 0xd800).r(this, FUNC(strnskil_state::strnskil_d800_r));
+ map(0xd801, 0xd801).portr("DSW1");
+ map(0xd802, 0xd802).portr("DSW2");
+ map(0xd803, 0xd803).portr("SYSTEM");
+ map(0xd804, 0xd804).portr("P1");
+ map(0xd805, 0xd805).portr("P2");
+
+ map(0xd808, 0xd808).w(this, FUNC(strnskil_state::strnskil_scrl_ctrl_w));
+ map(0xd809, 0xd809).nopw(); /* coin counter? */
+ map(0xd80a, 0xd80b).writeonly().share("xscroll");
+}
+
+void strnskil_state::strnskil_map2(address_map &map)
+{
+ map(0x0000, 0x5fff).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));
+}
/****************************************************************************/
diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp
index 5dceae1ad50..44c3e52292b 100644
--- a/src/mame/drivers/studio2.cpp
+++ b/src/mame/drivers/studio2.cpp
@@ -334,43 +334,49 @@ WRITE8_MEMBER( studio2_state::dispon_w )
/* Memory Maps */
-ADDRESS_MAP_START(studio2_state::studio2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x09ff) AM_MIRROR(0xf400) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(studio2_state::studio2_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x01, 0x01) AM_READ(dispon_r)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(visicom_state::visicom_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("cartslot", generic_slot_device, read_rom)
- AM_RANGE(0x1000, 0x10ff) AM_RAM
- AM_RANGE(0x1100, 0x11ff) AM_RAM AM_SHARE("color0_ram")
- AM_RANGE(0x1300, 0x13ff) AM_RAM AM_SHARE("color1_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(visicom_state::visicom_io_map)
- AM_RANGE(0x01, 0x01) AM_WRITE(dispon_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpt02_state::mpt02_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x09ff) AM_RAM
- AM_RANGE(0x0b00, 0x0b3f) AM_RAM AM_SHARE("color_ram")
- AM_RANGE(0x0c00, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mpt02_state::mpt02_io_map)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispoff_r, tone_latch_w)
-ADDRESS_MAP_END
+void studio2_state::studio2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x09ff).mirror(0xf400).ram();
+}
+
+void studio2_state::studio2_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x01, 0x01).r(this, FUNC(studio2_state::dispon_r));
+ map(0x02, 0x02).w(this, FUNC(studio2_state::keylatch_w));
+}
+
+void visicom_state::visicom_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x0fff).r(m_cart, FUNC(generic_slot_device::read_rom));
+ map(0x1000, 0x10ff).ram();
+ map(0x1100, 0x11ff).ram().share("color0_ram");
+ map(0x1300, 0x13ff).ram().share("color1_ram");
+}
+
+void visicom_state::visicom_io_map(address_map &map)
+{
+ map(0x01, 0x01).w(this, FUNC(visicom_state::dispon_w));
+ map(0x02, 0x02).w(this, FUNC(visicom_state::keylatch_w));
+}
+
+void mpt02_state::mpt02_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x09ff).ram();
+ map(0x0b00, 0x0b3f).ram().share("color_ram");
+ map(0x0c00, 0x0fff).rom();
+}
+
+void mpt02_state::mpt02_io_map(address_map &map)
+{
+ map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w));
+ map(0x02, 0x02).w(this, FUNC(mpt02_state::keylatch_w));
+ map(0x04, 0x04).rw(m_cti, FUNC(cdp1864_device::dispoff_r), FUNC(cdp1864_device::tone_latch_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp
index df3a34bf4f9..01655667c8c 100644
--- a/src/mame/drivers/stuntair.cpp
+++ b/src/mame/drivers/stuntair.cpp
@@ -320,34 +320,37 @@ WRITE8_MEMBER(stuntair_state::stuntair_sound_w)
}
// main Z80
-ADDRESS_MAP_START(stuntair_state::stuntair_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(stuntair_bgattrram_w) AM_SHARE("bgattrram")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(stuntair_bgram_w) AM_SHARE("bgram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("sprram")
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSWB") AM_WRITE(stuntair_coin_w)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA") AM_WRITE(stuntair_bgxscroll_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN2")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN3")
- AM_RANGE(0xf003, 0xf003) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xf000, 0xf007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(stuntair_fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xfc03, 0xfc03) AM_WRITE(stuntair_sound_w)
-ADDRESS_MAP_END
+void stuntair_state::stuntair_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc7ff).ram().share("nvram");
+ map(0xc800, 0xcbff).ram().w(this, FUNC(stuntair_state::stuntair_bgattrram_w)).share("bgattrram");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(stuntair_state::stuntair_bgram_w)).share("bgram");
+ map(0xd800, 0xdfff).ram().share("sprram");
+ map(0xe000, 0xe000).portr("DSWB").w(this, FUNC(stuntair_state::stuntair_coin_w));
+ map(0xe800, 0xe800).portr("DSWA").w(this, FUNC(stuntair_state::stuntair_bgxscroll_w));
+ map(0xf000, 0xf000).portr("IN2");
+ map(0xf002, 0xf002).portr("IN3");
+ map(0xf003, 0xf003).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xf000, 0xf007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xf800, 0xfbff).ram().w(this, FUNC(stuntair_state::stuntair_fgram_w)).share("fgram");
+ map(0xfc03, 0xfc03).w(this, FUNC(stuntair_state::stuntair_sound_w));
+}
// sound Z80
-ADDRESS_MAP_START(stuntair_state::stuntair_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stuntair_state::stuntair_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x07, 0x07) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x0c, 0x0d) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
-ADDRESS_MAP_END
+void stuntair_state::stuntair_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+}
+
+void stuntair_state::stuntair_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x03, 0x03).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x07, 0x07).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x0c, 0x0d).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+}
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index e183c0743fc..f09a57259c4 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -972,40 +972,43 @@ DRIVER_INIT_MEMBER(stv_state, hopper)
m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::hop_ioga_w32),this));
}
-ADDRESS_MAP_START(stv_state::stv_mem)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_MIRROR(0x20000000) AM_REGION("bios", 0) // bios
- AM_RANGE(0x00100000, 0x0010007f) AM_DEVREADWRITE8("smpc", smpc_hle_device, read, write, 0xffffffff)
- AM_RANGE(0x00180000, 0x0018ffff) AM_READWRITE8(saturn_backupram_r,saturn_backupram_w,0xffffffff) AM_SHARE("share1")
- AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_MIRROR(0x20100000) AM_SHARE("workram_l")
+void stv_state::stv_mem(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom().mirror(0x20000000).region("bios", 0); // bios
+ map(0x00100000, 0x0010007f).rw(m_smpc_hle, FUNC(smpc_hle_device::read), FUNC(smpc_hle_device::write));
+ map(0x00180000, 0x0018ffff).rw(this, FUNC(stv_state::saturn_backupram_r), FUNC(stv_state::saturn_backupram_w)).share("share1");
+ map(0x00200000, 0x002fffff).ram().mirror(0x20100000).share("workram_l");
// AM_RANGE(0x00400000, 0x0040001f) AM_READWRITE(stv_ioga_r32, stv_io_w32) AM_SHARE("ioga") AM_MIRROR(0x20) /* installed with per-game specific */
- AM_RANGE(0x01000000, 0x017fffff) AM_WRITE(minit_w)
- AM_RANGE(0x01800000, 0x01ffffff) AM_WRITE(sinit_w)
- AM_RANGE(0x02000000, 0x04ffffff) AM_ROM AM_MIRROR(0x20000000) AM_REGION("abus", 0) // cartridge
+ map(0x01000000, 0x017fffff).w(this, FUNC(stv_state::minit_w));
+ map(0x01800000, 0x01ffffff).w(this, FUNC(stv_state::sinit_w));
+ map(0x02000000, 0x04ffffff).rom().mirror(0x20000000).region("abus", 0); // cartridge
/* Sound */
- AM_RANGE(0x05a00000, 0x05afffff) AM_READWRITE16(saturn_soundram_r, saturn_soundram_w,0xffffffff)
- AM_RANGE(0x05b00000, 0x05b00fff) AM_DEVREADWRITE16("scsp", scsp_device, read, write, 0xffffffff)
+ map(0x05a00000, 0x05afffff).rw(this, FUNC(stv_state::saturn_soundram_r), FUNC(stv_state::saturn_soundram_w));
+ map(0x05b00000, 0x05b00fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write));
/* VDP1 */
- AM_RANGE(0x05c00000, 0x05c7ffff) AM_READWRITE(saturn_vdp1_vram_r, saturn_vdp1_vram_w)
- AM_RANGE(0x05c80000, 0x05cbffff) AM_READWRITE(saturn_vdp1_framebuffer0_r, saturn_vdp1_framebuffer0_w)
- AM_RANGE(0x05d00000, 0x05d0001f) AM_READWRITE16(saturn_vdp1_regs_r, saturn_vdp1_regs_w,0xffffffff)
- AM_RANGE(0x05e00000, 0x05e7ffff) AM_MIRROR(0x80000) AM_READWRITE(saturn_vdp2_vram_r, saturn_vdp2_vram_w)
- AM_RANGE(0x05f00000, 0x05f7ffff) AM_READWRITE(saturn_vdp2_cram_r, saturn_vdp2_cram_w)
- AM_RANGE(0x05f80000, 0x05fbffff) AM_READWRITE16(saturn_vdp2_regs_r, saturn_vdp2_regs_w,0xffffffff)
- AM_RANGE(0x05fe0000, 0x05fe00cf) AM_DEVICE("scu", sega_scu_device, regs_map ) //AM_READWRITE(saturn_scu_r, saturn_scu_w)
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h")
- AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP
- AM_RANGE(0xc0000000, 0xc00007ff) AM_RAM // cache RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stv_state::stvcd_mem)
- AM_IMPORT_FROM(stv_mem)
- AM_RANGE(0x05800000, 0x0589ffff) AM_DEVREADWRITE("stvcd", stvcd_device, stvcd_r, stvcd_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(stv_state::sound_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("sound_ram")
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp", scsp_device, read, write)
-ADDRESS_MAP_END
+ map(0x05c00000, 0x05c7ffff).rw(this, FUNC(stv_state::saturn_vdp1_vram_r), FUNC(stv_state::saturn_vdp1_vram_w));
+ map(0x05c80000, 0x05cbffff).rw(this, FUNC(stv_state::saturn_vdp1_framebuffer0_r), FUNC(stv_state::saturn_vdp1_framebuffer0_w));
+ map(0x05d00000, 0x05d0001f).rw(this, FUNC(stv_state::saturn_vdp1_regs_r), FUNC(stv_state::saturn_vdp1_regs_w));
+ map(0x05e00000, 0x05e7ffff).mirror(0x80000).rw(this, FUNC(stv_state::saturn_vdp2_vram_r), FUNC(stv_state::saturn_vdp2_vram_w));
+ map(0x05f00000, 0x05f7ffff).rw(this, FUNC(stv_state::saturn_vdp2_cram_r), FUNC(stv_state::saturn_vdp2_cram_w));
+ map(0x05f80000, 0x05fbffff).rw(this, FUNC(stv_state::saturn_vdp2_regs_r), FUNC(stv_state::saturn_vdp2_regs_w));
+ map(0x05fe0000, 0x05fe00cf).m(m_scu, FUNC(sega_scu_device::regs_map)); //AM_READWRITE(saturn_scu_r, saturn_scu_w)
+ map(0x06000000, 0x060fffff).ram().mirror(0x21f00000).share("workram_h");
+ map(0x60000000, 0x600003ff).nopw();
+ map(0xc0000000, 0xc00007ff).ram(); // cache RAM
+}
+
+void stv_state::stvcd_mem(address_map &map)
+{
+ stv_mem(map);
+ map(0x05800000, 0x0589ffff).rw("stvcd", FUNC(stvcd_device::stvcd_r), FUNC(stvcd_device::stvcd_w));
+}
+
+void stv_state::sound_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).ram().share("sound_ram");
+ map(0x100000, 0x100fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write));
+}
diff --git a/src/mame/drivers/su2000.cpp b/src/mame/drivers/su2000.cpp
index 1b47f574587..1f8da514422 100644
--- a/src/mame/drivers/su2000.cpp
+++ b/src/mame/drivers/su2000.cpp
@@ -77,21 +77,23 @@ public:
*
*************************************/
-ADDRESS_MAP_START(su2000_state::pcat_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROM
- AM_RANGE(0x00100000, 0x003fffff) AM_RAM
- AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0x0f0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(su2000_state::pcat_io)
- AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
-ADDRESS_MAP_END
+void su2000_state::pcat_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000c0000, 0x000c7fff).rom();
+ map(0x000f0000, 0x000fffff).rom();
+ map(0x00100000, 0x003fffff).ram();
+ map(0xffff0000, 0xffffffff).rom().region("maincpu", 0x0f0000);
+}
+
+void su2000_state::pcat_io(address_map &map)
+{
+ pcat32_io_common(map);
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+}
/*************************************
diff --git a/src/mame/drivers/sub.cpp b/src/mame/drivers/sub.cpp
index e4136cb5c0c..7f98040e5a8 100644
--- a/src/mame/drivers/sub.cpp
+++ b/src/mame/drivers/sub.cpp
@@ -261,23 +261,24 @@ WRITE_LINE_MEMBER(sub_state::int_mask_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(sub_state::subm_map)
- AM_RANGE(0x0000, 0xafff) AM_ROM
- AM_RANGE(0xb000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("attr")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("vid")
- AM_RANGE(0xd000, 0xd03f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("scrolly")
-
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xe800, 0xe807) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW0") // DSW0?
- AM_RANGE(0xf020, 0xf020) AM_READ_PORT("DSW1") // DSW1?
- AM_RANGE(0xf040, 0xf040) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf060, 0xf060) AM_READ_PORT("IN0")
-ADDRESS_MAP_END
+void sub_state::subm_map(address_map &map)
+{
+ map(0x0000, 0xafff).rom();
+ map(0xb000, 0xbfff).ram();
+ map(0xc000, 0xc3ff).ram().share("attr");
+ map(0xc400, 0xc7ff).ram().share("vid");
+ map(0xd000, 0xd03f).ram().share("spriteram");
+ map(0xd800, 0xd83f).ram().share("spriteram2");
+ map(0xd840, 0xd85f).ram().share("scrolly");
+
+ map(0xe000, 0xe000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xe800, 0xe807).w("mainlatch", FUNC(ls259_device::write_d0));
+
+ map(0xf000, 0xf000).portr("DSW0"); // DSW0?
+ map(0xf020, 0xf020).portr("DSW1"); // DSW1?
+ map(0xf040, 0xf040).portr("SYSTEM");
+ map(0xf060, 0xf060).portr("IN0");
+}
WRITE8_MEMBER(sub_state::nmi_mask_w)
{
@@ -286,23 +287,26 @@ WRITE8_MEMBER(sub_state::nmi_mask_w)
m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
-ADDRESS_MAP_START(sub_state::subm_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // to/from sound CPU
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sub_state::subm_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_WRITE(nmi_mask_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sub_state::subm_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // to/from main CPU
- AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
-ADDRESS_MAP_END
+void sub_state::subm_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // to/from sound CPU
+}
+
+void sub_state::subm_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x6000).w(this, FUNC(sub_state::nmi_mask_w));
+}
+
+void sub_state::subm_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // to/from main CPU
+ map(0x40, 0x41).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x80, 0x81).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( sub )
diff --git a/src/mame/drivers/subhuntr.cpp b/src/mame/drivers/subhuntr.cpp
index a59f426dd98..a3d08c043c9 100644
--- a/src/mame/drivers/subhuntr.cpp
+++ b/src/mame/drivers/subhuntr.cpp
@@ -76,18 +76,21 @@ void subhuntr_state::video_start()
***************************************************************************/
-ADDRESS_MAP_START(subhuntr_state::subhuntr_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1c00, 0x1fff) AM_RAM
-ADDRESS_MAP_END
+void subhuntr_state::subhuntr_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x1c00, 0x1fff).ram();
+}
-ADDRESS_MAP_START(subhuntr_state::subhuntr_io_map)
-ADDRESS_MAP_END
+void subhuntr_state::subhuntr_io_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(subhuntr_state::subhuntr_data_map)
+void subhuntr_state::subhuntr_data_map(address_map &map)
+{
// AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE( , )
// AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE( , )
-ADDRESS_MAP_END
+}
/***************************************************************************
diff --git a/src/mame/drivers/subs.cpp b/src/mame/drivers/subs.cpp
index 1d8374a3b20..32f8f98053c 100644
--- a/src/mame/drivers/subs.cpp
+++ b/src/mame/drivers/subs.cpp
@@ -51,20 +51,21 @@ PALETTE_INIT_MEMBER(subs_state, subs)
*
*************************************/
-ADDRESS_MAP_START(subs_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0000, 0x0000) AM_WRITE(noise_reset_w)
- AM_RANGE(0x0000, 0x0007) AM_READ(control_r)
- AM_RANGE(0x0020, 0x0020) AM_WRITE(steer_reset_w)
- AM_RANGE(0x0020, 0x0027) AM_READ(coin_r)
+void subs_state::main_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x01ff).ram();
+ map(0x0000, 0x0000).w(this, FUNC(subs_state::noise_reset_w));
+ map(0x0000, 0x0007).r(this, FUNC(subs_state::control_r));
+ map(0x0020, 0x0020).w(this, FUNC(subs_state::steer_reset_w));
+ map(0x0020, 0x0027).r(this, FUNC(subs_state::coin_r));
// AM_RANGE(0x0040, 0x0040) AM_WRITE(timer_reset_w)
- AM_RANGE(0x0060, 0x0063) AM_READ(options_r)
- AM_RANGE(0x0060, 0x006f) AM_DEVWRITE("latch", ls259_device, write_a0)
- AM_RANGE(0x0090, 0x009f) AM_SHARE("spriteram")
- AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+ map(0x0060, 0x0063).r(this, FUNC(subs_state::options_r));
+ map(0x0060, 0x006f).w("latch", FUNC(ls259_device::write_a0));
+ map(0x0090, 0x009f).share("spriteram");
+ map(0x0800, 0x0bff).ram().share("videoram");
+ map(0x2000, 0x3fff).rom();
+}
diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp
index 26d0f5b4299..7deb141c386 100644
--- a/src/mame/drivers/subsino.cpp
+++ b/src/mame/drivers/subsino.cpp
@@ -843,52 +843,54 @@ WRITE8_MEMBER(subsino_state::subsino_out_b_w)
* Memory Maps *
***************************************************************************/
-ADDRESS_MAP_START(subsino_state::srider_map)
- AM_RANGE( 0x00000, 0x0bfff ) AM_ROM
+void subsino_state::srider_map(address_map &map)
+{
+ map(0x00000, 0x0bfff).rom();
- AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM
+ map(0x0c000, 0x0cfff).ram();
- AM_RANGE( 0x0d000, 0x0d002 ) AM_DEVREAD("ppi1", i8255_device, read)
- AM_RANGE( 0x0d004, 0x0d006 ) AM_DEVREAD("ppi2", i8255_device, read)
+ map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read));
+ map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read));
- AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE(subsino_out_b_w )
- AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE(subsino_out_a_w )
+ map(0x0d009, 0x0d009).w(this, FUNC(subsino_state::subsino_out_b_w));
+ map(0x0d00a, 0x0d00a).w(this, FUNC(subsino_state::subsino_out_a_w));
- AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" )
+ map(0x0d00c, 0x0d00c).portr("INC");
- AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE("ymsnd", ym3812_device, write)
+ map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write));
- AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVWRITE("oki", okim6295_device, write)
+ map(0x0d018, 0x0d018).w("oki", FUNC(okim6295_device::write));
- AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE(subsino_tiles_offset_w )
+ map(0x0d01b, 0x0d01b).w(this, FUNC(subsino_state::subsino_tiles_offset_w));
- AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
- AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
-ADDRESS_MAP_END
+ map(0x0e000, 0x0e7ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
+ map(0x0e800, 0x0efff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
+}
-ADDRESS_MAP_START(subsino_state::sharkpy_map)
- AM_RANGE( 0x00000, 0x13fff ) AM_ROM //overlap unmapped regions
- AM_RANGE( 0x09800, 0x09fff ) AM_RAM
+void subsino_state::sharkpy_map(address_map &map)
+{
+ map(0x00000, 0x13fff).rom(); //overlap unmapped regions
+ map(0x09800, 0x09fff).ram();
- AM_RANGE( 0x09000, 0x09002 ) AM_DEVREAD("ppi1", i8255_device, read)
- AM_RANGE( 0x09004, 0x09006 ) AM_DEVREAD("ppi2", i8255_device, read)
+ map(0x09000, 0x09002).r("ppi1", FUNC(i8255_device::read));
+ map(0x09004, 0x09006).r("ppi2", FUNC(i8255_device::read));
- AM_RANGE( 0x09009, 0x09009 ) AM_WRITE(subsino_out_b_w )
- AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE(subsino_out_a_w )
+ map(0x09009, 0x09009).w(this, FUNC(subsino_state::subsino_out_b_w));
+ map(0x0900a, 0x0900a).w(this, FUNC(subsino_state::subsino_out_a_w));
- AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" )
+ map(0x0900c, 0x0900c).portr("INC");
- AM_RANGE( 0x09016, 0x09017 ) AM_DEVWRITE("ymsnd", ym3812_device, write)
+ map(0x09016, 0x09017).w("ymsnd", FUNC(ym3812_device::write));
- AM_RANGE( 0x09018, 0x09018 ) AM_DEVWRITE("oki", okim6295_device, write)
+ map(0x09018, 0x09018).w("oki", FUNC(okim6295_device::write));
- AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE(subsino_tiles_offset_w )
+ map(0x0901b, 0x0901b).w(this, FUNC(subsino_state::subsino_tiles_offset_w));
- AM_RANGE( 0x07800, 0x07fff ) AM_RAM
- AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
- AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
-ADDRESS_MAP_END
+ map(0x07800, 0x07fff).ram();
+ map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
+ map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
+}
/*
Victor 21 protection is absolutely trivial. At every number of presetted hands, there's an animation
@@ -896,32 +898,33 @@ that announces to the player that the card deck changes. If the protection check
this event makes the game to reset without any money in the bank.
*/
-ADDRESS_MAP_START(subsino_state::victor21_map)
- AM_RANGE( 0x00000, 0x08fff ) AM_ROM //overlap unmapped regions
+void subsino_state::victor21_map(address_map &map)
+{
+ map(0x00000, 0x08fff).rom(); //overlap unmapped regions
- AM_RANGE( 0x09800, 0x09fff ) AM_RAM
+ map(0x09800, 0x09fff).ram();
- AM_RANGE( 0x09000, 0x09003 ) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INA" )
- AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INB" )
- AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "SW1" )
- AM_RANGE( 0x09007, 0x09007 ) AM_READ_PORT( "SW2" )
- AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW3" )
+ map(0x09000, 0x09003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x09004, 0x09004).portr("INA");
+ map(0x09005, 0x09005).portr("INB");
+ map(0x09006, 0x09006).portr("SW1");
+ map(0x09007, 0x09007).portr("SW2");
+ map(0x09008, 0x09008).portr("SW3");
- AM_RANGE( 0x0900b, 0x0900b ) AM_RAM //protection
+ map(0x0900b, 0x0900b).ram(); //protection
// AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE( 0x0900e, 0x0900f ) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ map(0x0900e, 0x0900f).w("ymsnd", FUNC(ym2413_device::write));
- AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE(subsino_tiles_offset_w )
+ map(0x0900d, 0x0900d).w(this, FUNC(subsino_state::subsino_tiles_offset_w));
- AM_RANGE( 0x07800, 0x07fff ) AM_RAM
- AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
- AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
+ map(0x07800, 0x07fff).ram();
+ map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
+ map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
- AM_RANGE( 0x10000, 0x13fff ) AM_ROM
-ADDRESS_MAP_END
+ map(0x10000, 0x13fff).rom();
+}
/*
@@ -975,11 +978,12 @@ WRITE8_MEMBER(subsino_state::flash_w)
}
}
-ADDRESS_MAP_START(subsino_state::victor5_map)
- AM_IMPORT_FROM( victor21_map )
- AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE(flash_r, flash_w )
- AM_RANGE( 0x0900b, 0x0900b ) AM_READNOP //"flash" status, bit 0
-ADDRESS_MAP_END
+void subsino_state::victor5_map(address_map &map)
+{
+ victor21_map(map);
+ map(0x0900a, 0x0900a).rw(this, FUNC(subsino_state::flash_r), FUNC(subsino_state::flash_w));
+ map(0x0900b, 0x0900b).nopr(); //"flash" status, bit 0
+}
READ8_MEMBER(subsino_state::hwcheck_r)
@@ -988,38 +992,39 @@ READ8_MEMBER(subsino_state::hwcheck_r)
return 0x55;
}
-ADDRESS_MAP_START(subsino_state::crsbingo_map)
- AM_RANGE( 0x00000, 0x8fff ) AM_ROM //overlap unmapped regions
+void subsino_state::crsbingo_map(address_map &map)
+{
+ map(0x00000, 0x8fff).rom(); //overlap unmapped regions
- AM_RANGE( 0x09800, 0x09fff ) AM_RAM
+ map(0x09800, 0x09fff).ram();
- AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "SW1" )
- AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "SW2" )
- AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "INA" )
- AM_RANGE( 0x09003, 0x09003 ) AM_READ_PORT( "INB" )
- AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INC" )
- AM_RANGE( 0x09005, 0x09005 ) AM_WRITE(subsino_out_a_w )
+ map(0x09000, 0x09000).portr("SW1");
+ map(0x09001, 0x09001).portr("SW2");
+ map(0x09002, 0x09002).portr("INA");
+ map(0x09003, 0x09003).portr("INB");
+ map(0x09004, 0x09004).portr("INC");
+ map(0x09005, 0x09005).w(this, FUNC(subsino_state::subsino_out_a_w));
- AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW4" )
- AM_RANGE( 0x09009, 0x09009 ) AM_READ_PORT( "SW3" ) // AM_WRITE(subsino_out_a_w )
- AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE(hwcheck_r, subsino_out_b_w )
+ map(0x09008, 0x09008).portr("SW4");
+ map(0x09009, 0x09009).portr("SW3"); // AM_WRITE(subsino_out_a_w )
+ map(0x0900a, 0x0900a).rw(this, FUNC(subsino_state::hwcheck_r), FUNC(subsino_state::subsino_out_b_w));
- AM_RANGE( 0x09010, 0x09010 ) AM_READWRITE(flash_r, flash_w )
+ map(0x09010, 0x09010).rw(this, FUNC(subsino_state::flash_r), FUNC(subsino_state::flash_w));
// AM_RANGE( 0x09011, 0x09011 ) //"flash" status, bit 0
// AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" )
- AM_RANGE( 0x0900c, 0x0900d ) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ map(0x0900c, 0x0900d).w("ymsnd", FUNC(ym2413_device::write));
// AM_RANGE( 0x09018, 0x09018 ) AM_DEVWRITE("oki", okim6295_device, write)
// AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE(subsino_tiles_offset_w )
- AM_RANGE( 0x07800, 0x07fff ) AM_RAM
- AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
- AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
+ map(0x07800, 0x07fff).ram();
+ map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
+ map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
- AM_RANGE( 0x10000, 0x13fff ) AM_ROM //overlap unmapped regions
+ map(0x10000, 0x13fff).rom(); //overlap unmapped regions
-ADDRESS_MAP_END
+}
WRITE8_MEMBER(subsino_state::subsino_out_c_w)
{
@@ -1036,45 +1041,47 @@ WRITE8_MEMBER(subsino_state::subsino_out_c_w)
// popmessage("data %02x\n",data);
}
-ADDRESS_MAP_START(subsino_state::tisub_map)
- AM_RANGE( 0x00000, 0x0bfff ) AM_ROM // overlap unmapped regions
- AM_RANGE( 0x09800, 0x09fff ) AM_RAM
+void subsino_state::tisub_map(address_map &map)
+{
+ map(0x00000, 0x0bfff).rom(); // overlap unmapped regions
+ map(0x09800, 0x09fff).ram();
- AM_RANGE( 0x09000, 0x09002 ) AM_DEVREAD("ppi1", i8255_device, read)
- AM_RANGE( 0x09004, 0x09006 ) AM_DEVREAD("ppi2", i8255_device, read)
+ map(0x09000, 0x09002).r("ppi1", FUNC(i8255_device::read));
+ map(0x09004, 0x09006).r("ppi2", FUNC(i8255_device::read));
/* 0x09008: is marked as OUTPUT C in the test mode. */
- AM_RANGE( 0x09008, 0x09008 ) AM_WRITE(subsino_out_c_w )
- AM_RANGE( 0x09009, 0x09009 ) AM_WRITE(subsino_out_b_w )
- AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE(subsino_out_a_w )
+ map(0x09008, 0x09008).w(this, FUNC(subsino_state::subsino_out_c_w));
+ map(0x09009, 0x09009).w(this, FUNC(subsino_state::subsino_out_b_w));
+ map(0x0900a, 0x0900a).w(this, FUNC(subsino_state::subsino_out_a_w));
- AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" )
+ map(0x0900c, 0x0900c).portr("INC");
- AM_RANGE( 0x09016, 0x09017 ) AM_DEVWRITE("ymsnd", ym3812_device, write)
+ map(0x09016, 0x09017).w("ymsnd", FUNC(ym3812_device::write));
// AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE(subsino_tiles_offset_w )
+ map(0x0901b, 0x0901b).w(this, FUNC(subsino_state::subsino_tiles_offset_w));
- AM_RANGE( 0x07800, 0x07fff ) AM_RAM
- AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
- AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
+ map(0x07800, 0x07fff).ram();
+ map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
+ map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
- AM_RANGE( 0x10000, 0x13fff ) AM_ROM
- AM_RANGE( 0x14000, 0x14fff ) AM_ROM // reads the card face data here (see rom copy in rom loading)
+ map(0x10000, 0x13fff).rom();
+ map(0x14000, 0x14fff).rom(); // reads the card face data here (see rom copy in rom loading)
- AM_RANGE( 0x150c0, 0x150ff ) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE( 0x15140, 0x1517f ) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE( 0x15180, 0x151bf ) AM_RAM AM_SHARE("reel1_scroll")
+ map(0x150c0, 0x150ff).ram().share("reel3_scroll");
+ map(0x15140, 0x1517f).ram().share("reel2_scroll");
+ map(0x15180, 0x151bf).ram().share("reel1_scroll");
- AM_RANGE( 0x15800, 0x159ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE( 0x15a00, 0x15bff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE( 0x15c00, 0x15dff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram")
-ADDRESS_MAP_END
+ map(0x15800, 0x159ff).ram().w(this, FUNC(subsino_state::subsino_reel1_ram_w)).share("reel1_ram");
+ map(0x15a00, 0x15bff).ram().w(this, FUNC(subsino_state::subsino_reel2_ram_w)).share("reel2_ram");
+ map(0x15c00, 0x15dff).ram().w(this, FUNC(subsino_state::subsino_reel3_ram_w)).share("reel3_ram");
+}
-ADDRESS_MAP_START(subsino_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void subsino_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
// this stuff is banked..
// not 100% sure on the bank bits.. other bits are also set
@@ -1127,82 +1134,85 @@ READ8_MEMBER(subsino_state::reel_scrollattr_r)
return m_reel1_attr[offset];
}
-ADDRESS_MAP_START(subsino_state::stbsub_map)
- AM_RANGE( 0x00000, 0x0bfff ) AM_ROM
+void subsino_state::stbsub_map(address_map &map)
+{
+ map(0x00000, 0x0bfff).rom();
- AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM
+ map(0x0c000, 0x0cfff).ram();
- AM_RANGE( 0x0d000, 0x0d002 ) AM_DEVREAD("ppi1", i8255_device, read)
- AM_RANGE( 0x0d004, 0x0d006 ) AM_DEVREAD("ppi2", i8255_device, read)
+ map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read));
+ map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read));
- AM_RANGE( 0x0d008, 0x0d008 ) AM_RAM AM_SHARE("stbsub_out_c")
+ map(0x0d008, 0x0d008).ram().share("stbsub_out_c");
- AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE(subsino_out_b_w )
- AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE(subsino_out_a_w )
+ map(0x0d009, 0x0d009).w(this, FUNC(subsino_state::subsino_out_b_w));
+ map(0x0d00a, 0x0d00a).w(this, FUNC(subsino_state::subsino_out_a_w));
- AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" )
+ map(0x0d00c, 0x0d00c).portr("INC");
- AM_RANGE( 0x0d010, 0x0d010 ) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE( 0x0d011, 0x0d011 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE( 0x0d012, 0x0d012 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x0d010, 0x0d010).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0d011, 0x0d011).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0d012, 0x0d012).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE("ymsnd", ym3812_device, write)
+ map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write));
// AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE(subsino_tiles_offset_w )
- AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
- AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
+ map(0x0e000, 0x0e7ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
+ map(0x0e800, 0x0efff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
- AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(reel_scrollattr_r, reel_scrollattr_w)
+ map(0xf000, 0xf7ff).rw(this, FUNC(subsino_state::reel_scrollattr_r), FUNC(subsino_state::reel_scrollattr_w));
- AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram")
-ADDRESS_MAP_END
+ map(0xf800, 0xf9ff).ram().w(this, FUNC(subsino_state::subsino_reel1_ram_w)).share("reel1_ram");
+ map(0xfa00, 0xfbff).ram().w(this, FUNC(subsino_state::subsino_reel2_ram_w)).share("reel2_ram");
+ map(0xfc00, 0xfdff).ram().w(this, FUNC(subsino_state::subsino_reel3_ram_w)).share("reel3_ram");
+}
/***************************************************************************
Magic Train (Clear NVRAM ROM?)
***************************************************************************/
-ADDRESS_MAP_START(subsino_state::mtrainnv_map)
- AM_RANGE( 0x00000, 0x0bfff ) AM_ROM
+void subsino_state::mtrainnv_map(address_map &map)
+{
+ map(0x00000, 0x0bfff).rom();
- AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM
+ map(0x0c000, 0x0cfff).ram();
- AM_RANGE( 0x0d000, 0x0d002 ) AM_DEVREAD("ppi1", i8255_device, read)
- AM_RANGE( 0x0d004, 0x0d006 ) AM_DEVREAD("ppi2", i8255_device, read)
+ map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read));
+ map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read));
- AM_RANGE( 0x0d008, 0x0d008 ) AM_RAM AM_SHARE("stbsub_out_c")
+ map(0x0d008, 0x0d008).ram().share("stbsub_out_c");
// AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE
// AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE
// AM_RANGE( 0x0d00b, 0x0d00b ) AM_WRITE
- AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" )
+ map(0x0d00c, 0x0d00c).portr("INC");
- AM_RANGE( 0x0d010, 0x0d010 ) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE( 0x0d011, 0x0d011 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE( 0x0d012, 0x0d012 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x0d010, 0x0d010).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0d011, 0x0d011).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0d012, 0x0d012).w("ramdac", FUNC(ramdac_device::mask_w));
// AM_RANGE( 0x0d012, 0x0d012 ) AM_WRITE
- AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE("ymsnd", ym3812_device, write)
+ map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write));
// AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram")
- AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram")
+ map(0x0e000, 0x0e7ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram");
+ map(0x0e800, 0x0efff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram");
- AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(reel_scrollattr_r, reel_scrollattr_w)
+ map(0xf000, 0xf7ff).rw(this, FUNC(subsino_state::reel_scrollattr_r), FUNC(subsino_state::reel_scrollattr_w));
- AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram")
-ADDRESS_MAP_END
+ map(0xf800, 0xf9ff).ram().w(this, FUNC(subsino_state::subsino_reel1_ram_w)).share("reel1_ram");
+ map(0xfa00, 0xfbff).ram().w(this, FUNC(subsino_state::subsino_reel2_ram_w)).share("reel2_ram");
+ map(0xfc00, 0xfdff).ram().w(this, FUNC(subsino_state::subsino_reel3_ram_w)).share("reel3_ram");
+}
-ADDRESS_MAP_START(subsino_state::subsino_iomap)
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
-ADDRESS_MAP_END
+void subsino_state::subsino_iomap(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // internal regs
+}
/***************************************************************************
diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp
index 4cc39439f0e..e0822897695 100644
--- a/src/mame/drivers/subsino2.cpp
+++ b/src/mame/drivers/subsino2.cpp
@@ -920,58 +920,60 @@ WRITE16_MEMBER(subsino2_state::bishjan_outputs_w)
}
-ADDRESS_MAP_START(subsino2_state::bishjan_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
+void subsino2_state::bishjan_map(address_map &map)
+{
+ map.global_mask(0xffffff);
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0)
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x080000, 0x0fffff).rom().region("maincpu", 0);
- AM_RANGE( 0x200000, 0x207fff ) AM_RAM AM_SHARE("nvram") // battery
+ map(0x200000, 0x207fff).ram().share("nvram"); // battery
// read lo (L1) (only half tilemap?)
- AM_RANGE( 0x412000, 0x412fff ) AM_READ8(ss9601_videoram_1_lo_r, 0xffff )
- AM_RANGE( 0x413000, 0x4131ff ) AM_READWRITE8(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w, 0xffff )
+ map(0x412000, 0x412fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r));
+ map(0x413000, 0x4131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w));
// read lo (REEL)
- AM_RANGE( 0x416000, 0x416fff ) AM_READ8(ss9601_reelram_lo_r, 0xffff )
- AM_RANGE( 0x417000, 0x4171ff ) AM_READWRITE8(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w, 0xffff )
+ map(0x416000, 0x416fff).r(this, FUNC(subsino2_state::ss9601_reelram_lo_r));
+ map(0x417000, 0x4171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w));
// read hi (L1)
- AM_RANGE( 0x422000, 0x422fff ) AM_READ8(ss9601_videoram_1_hi_r, 0xffff )
- AM_RANGE( 0x423000, 0x4231ff ) AM_READWRITE8(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w, 0xffff )
+ map(0x422000, 0x422fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r));
+ map(0x423000, 0x4231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w));
// read hi (REEL)
- AM_RANGE( 0x426000, 0x426fff ) AM_READ8(ss9601_reelram_hi_r, 0xffff )
- AM_RANGE( 0x427000, 0x4271ff ) AM_READWRITE8(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w, 0xffff )
+ map(0x426000, 0x426fff).r(this, FUNC(subsino2_state::ss9601_reelram_hi_r));
+ map(0x427000, 0x4271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w));
// write both (L1)
- AM_RANGE( 0x430000, 0x431fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff )
- AM_RANGE( 0x432000, 0x432fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff )
- AM_RANGE( 0x433000, 0x4331ff ) AM_WRITE8(ss9601_scrollram_1_hi_lo_w, 0xffff )
+ map(0x430000, 0x431fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
+ map(0x432000, 0x432fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
+ map(0x433000, 0x4331ff).w(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_lo_w));
// write both (L0 & REEL)
- AM_RANGE( 0x434000, 0x435fff ) AM_WRITE8(ss9601_videoram_0_hi_lo_w, 0xffff )
- AM_RANGE( 0x436000, 0x436fff ) AM_WRITE8(ss9601_reelram_hi_lo_w, 0xffff )
- AM_RANGE( 0x437000, 0x4371ff ) AM_WRITE8(ss9601_scrollram_0_hi_lo_w, 0xffff )
-
- AM_RANGE( 0x600000, 0x600001 ) AM_READNOP AM_WRITE(bishjan_sound_w )
- AM_RANGE( 0x600040, 0x600041 ) AM_WRITE8(ss9601_scrollctrl_w, 0xff00 )
- AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00)
- AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE( 0x600062, 0x600063 ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
- AM_RANGE( 0x600080, 0x600081 ) AM_WRITE8(ss9601_tilesize_w, 0xff00 )
- AM_RANGE( 0x6000a0, 0x6000a1 ) AM_WRITE8(ss9601_byte_lo_w, 0xff00 )
-
- AM_RANGE( 0xa0001e, 0xa0001f ) AM_WRITE8(ss9601_disable_w, 0x00ff )
- AM_RANGE( 0xa00020, 0xa00025 ) AM_WRITE8(ss9601_scroll_w, 0xffff )
-
- AM_RANGE( 0xc00000, 0xc00001 ) AM_READ_PORT("DSW") // SW1
- AM_RANGE( 0xc00002, 0xc00003 ) AM_READ_PORT("JOY") AM_WRITE(bishjan_input_w ) // IN C
- AM_RANGE( 0xc00004, 0xc00005 ) AM_READ(bishjan_input_r ) // IN A & B
- AM_RANGE( 0xc00006, 0xc00007 ) AM_READ(bishjan_serial_r ) // IN D
- AM_RANGE( 0xc00008, 0xc00009 ) AM_READ_PORT("RESET") AM_WRITE(bishjan_outputs_w ) AM_SHARE("outputs16")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(subsino2_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+ map(0x434000, 0x435fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w));
+ map(0x436000, 0x436fff).w(this, FUNC(subsino2_state::ss9601_reelram_hi_lo_w));
+ map(0x437000, 0x4371ff).w(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_lo_w));
+
+ map(0x600000, 0x600001).nopr().w(this, FUNC(subsino2_state::bishjan_sound_w));
+ map(0x600040, 0x600040).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w));
+ map(0x600060, 0x600060).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x600061, 0x600061).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x600062, 0x600062).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x600080, 0x600080).w(this, FUNC(subsino2_state::ss9601_tilesize_w));
+ map(0x6000a0, 0x6000a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w));
+
+ map(0xa0001f, 0xa0001f).w(this, FUNC(subsino2_state::ss9601_disable_w));
+ map(0xa00020, 0xa00025).w(this, FUNC(subsino2_state::ss9601_scroll_w));
+
+ map(0xc00000, 0xc00001).portr("DSW"); // SW1
+ map(0xc00002, 0xc00003).portr("JOY").w(this, FUNC(subsino2_state::bishjan_input_w)); // IN C
+ map(0xc00004, 0xc00005).r(this, FUNC(subsino2_state::bishjan_input_r)); // IN A & B
+ map(0xc00006, 0xc00007).r(this, FUNC(subsino2_state::bishjan_serial_r)); // IN D
+ map(0xc00008, 0xc00009).portr("RESET").w(this, FUNC(subsino2_state::bishjan_outputs_w)).share("outputs16");
+}
+
+void subsino2_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
/***************************************************************************
New 2001
@@ -1008,63 +1010,65 @@ WRITE16_MEMBER(subsino2_state::new2001_outputs_w)
}
// Same as bishjan (except for i/o and lo2 usage like xplan)
-ADDRESS_MAP_START(subsino2_state::new2001_base_map)
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
+void subsino2_state::new2001_base_map(address_map &map)
+{
+ map.global_mask(0xffffff);
- AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0)
+ map(0x000000, 0x07ffff).rom().region("maincpu", 0);
+ map(0x080000, 0x0fffff).rom().region("maincpu", 0);
- AM_RANGE( 0x200000, 0x207fff ) AM_RAM AM_SHARE("nvram") // battery
+ map(0x200000, 0x207fff).ram().share("nvram"); // battery
// write both (L1, byte_lo2)
- AM_RANGE( 0x410000, 0x411fff ) AM_WRITE8(ss9601_videoram_1_hi_lo2_w, 0xffff )
+ map(0x410000, 0x411fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo2_w));
// read lo (L1) (only half tilemap?)
- AM_RANGE( 0x412000, 0x412fff ) AM_READ8(ss9601_videoram_1_lo_r, 0xffff )
- AM_RANGE( 0x413000, 0x4131ff ) AM_READWRITE8(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w, 0xffff )
+ map(0x412000, 0x412fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r));
+ map(0x413000, 0x4131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w));
// write both (L0 & REEL, byte_lo2)
- AM_RANGE( 0x414000, 0x415fff ) AM_WRITE8(ss9601_videoram_0_hi_lo2_w, 0xffff )
+ map(0x414000, 0x415fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo2_w));
// read lo (REEL)
- AM_RANGE( 0x416000, 0x416fff ) AM_READ8(ss9601_reelram_lo_r, 0xffff )
- AM_RANGE( 0x417000, 0x4171ff ) AM_READWRITE8(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w, 0xffff )
+ map(0x416000, 0x416fff).r(this, FUNC(subsino2_state::ss9601_reelram_lo_r));
+ map(0x417000, 0x4171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w));
// read hi (L1)
- AM_RANGE( 0x422000, 0x422fff ) AM_READ8(ss9601_videoram_1_hi_r, 0xffff )
- AM_RANGE( 0x423000, 0x4231ff ) AM_READWRITE8(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w, 0xffff )
+ map(0x422000, 0x422fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r));
+ map(0x423000, 0x4231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w));
// read hi (REEL)
- AM_RANGE( 0x426000, 0x426fff ) AM_READ8(ss9601_reelram_hi_r, 0xffff )
- AM_RANGE( 0x427000, 0x4271ff ) AM_READWRITE8(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w, 0xffff )
+ map(0x426000, 0x426fff).r(this, FUNC(subsino2_state::ss9601_reelram_hi_r));
+ map(0x427000, 0x4271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w));
// write both (L1, byte_lo)
- AM_RANGE( 0x430000, 0x431fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff )
- AM_RANGE( 0x432000, 0x432fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff )
- AM_RANGE( 0x433000, 0x4331ff ) AM_WRITE8(ss9601_scrollram_1_hi_lo_w, 0xffff )
+ map(0x430000, 0x431fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
+ map(0x432000, 0x432fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
+ map(0x433000, 0x4331ff).w(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_lo_w));
// write both (L0 & REEL, byte_lo)
- AM_RANGE( 0x434000, 0x435fff ) AM_WRITE8(ss9601_videoram_0_hi_lo_w, 0xffff )
- AM_RANGE( 0x436000, 0x436fff ) AM_WRITE8(ss9601_reelram_hi_lo_w, 0xffff )
- AM_RANGE( 0x437000, 0x4371ff ) AM_WRITE8(ss9601_scrollram_0_hi_lo_w, 0xffff )
-
- AM_RANGE( 0x600000, 0x600001 ) AM_READNOP AM_WRITE(bishjan_sound_w )
- AM_RANGE( 0x600020, 0x600021 ) AM_WRITE8(ss9601_byte_lo2_w, 0xff00 )
- AM_RANGE( 0x600040, 0x600041 ) AM_WRITE8(ss9601_scrollctrl_w, 0xff00 )
- AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00)
- AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE( 0x600062, 0x600063 ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
- AM_RANGE( 0x600080, 0x600081 ) AM_WRITE8(ss9601_tilesize_w, 0xff00 )
- AM_RANGE( 0x6000a0, 0x6000a1 ) AM_WRITE8(ss9601_byte_lo_w, 0xff00 )
-
- AM_RANGE( 0xa0001e, 0xa0001f ) AM_WRITE8(ss9601_disable_w, 0x00ff )
- AM_RANGE( 0xa00020, 0xa00025 ) AM_WRITE8(ss9601_scroll_w, 0xffff )
-
- AM_RANGE( 0xc00000, 0xc00001 ) AM_READ_PORT("DSW")
- AM_RANGE( 0xc00002, 0xc00003 ) AM_READ_PORT("IN C")
- AM_RANGE( 0xc00004, 0xc00005 ) AM_READ_PORT("IN A & B")
- AM_RANGE( 0xc00006, 0xc00007 ) AM_READ(bishjan_serial_r )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(subsino2_state::new2001_map)
- AM_IMPORT_FROM(new2001_base_map)
- AM_RANGE( 0xc00008, 0xc00009 ) AM_WRITE(new2001_outputs_w ) AM_SHARE("outputs16")
-ADDRESS_MAP_END
+ map(0x434000, 0x435fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w));
+ map(0x436000, 0x436fff).w(this, FUNC(subsino2_state::ss9601_reelram_hi_lo_w));
+ map(0x437000, 0x4371ff).w(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_lo_w));
+
+ map(0x600000, 0x600001).nopr().w(this, FUNC(subsino2_state::bishjan_sound_w));
+ map(0x600020, 0x600020).w(this, FUNC(subsino2_state::ss9601_byte_lo2_w));
+ map(0x600040, 0x600040).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w));
+ map(0x600060, 0x600060).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x600061, 0x600061).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x600062, 0x600062).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x600080, 0x600080).w(this, FUNC(subsino2_state::ss9601_tilesize_w));
+ map(0x6000a0, 0x6000a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w));
+
+ map(0xa0001f, 0xa0001f).w(this, FUNC(subsino2_state::ss9601_disable_w));
+ map(0xa00020, 0xa00025).w(this, FUNC(subsino2_state::ss9601_scroll_w));
+
+ map(0xc00000, 0xc00001).portr("DSW");
+ map(0xc00002, 0xc00003).portr("IN C");
+ map(0xc00004, 0xc00005).portr("IN A & B");
+ map(0xc00006, 0xc00007).r(this, FUNC(subsino2_state::bishjan_serial_r));
+}
+
+void subsino2_state::new2001_map(address_map &map)
+{
+ new2001_base_map(map);
+ map(0xc00008, 0xc00009).w(this, FUNC(subsino2_state::new2001_outputs_w)).share("outputs16");
+}
/***************************************************************************
Humlan's Lyckohjul
@@ -1097,10 +1101,11 @@ WRITE16_MEMBER(subsino2_state::humlan_outputs_w)
// popmessage("0: %04x", m_outputs16[0]);
}
-ADDRESS_MAP_START(subsino2_state::humlan_map)
- AM_IMPORT_FROM(new2001_base_map)
- AM_RANGE( 0xc00008, 0xc00009 ) AM_WRITE(humlan_outputs_w ) AM_SHARE("outputs16")
-ADDRESS_MAP_END
+void subsino2_state::humlan_map(address_map &map)
+{
+ new2001_base_map(map);
+ map(0xc00008, 0xc00009).w(this, FUNC(subsino2_state::humlan_outputs_w)).share("outputs16");
+}
/***************************************************************************
Express Card / Top Card
@@ -1231,44 +1236,46 @@ READ8_MEMBER(subsino2_state::mtrain_prot_r)
return "SUBSION"[offset];
}
-ADDRESS_MAP_START(subsino2_state::mtrain_map)
- AM_RANGE( 0x00000, 0x06fff ) AM_ROM
+void subsino2_state::mtrain_map(address_map &map)
+{
+ map(0x00000, 0x06fff).rom();
- AM_RANGE( 0x07800, 0x07fff ) AM_RAM AM_SHARE("nvram") // battery
+ map(0x07800, 0x07fff).ram().share("nvram"); // battery
- AM_RANGE( 0x08000, 0x08fff ) AM_WRITE(mtrain_videoram_w )
+ map(0x08000, 0x08fff).w(this, FUNC(subsino2_state::mtrain_videoram_w));
- AM_RANGE( 0x0911f, 0x0911f ) AM_WRITE(ss9601_disable_w )
- AM_RANGE( 0x09120, 0x09125 ) AM_WRITE(ss9601_scroll_w )
+ map(0x0911f, 0x0911f).w(this, FUNC(subsino2_state::ss9601_disable_w));
+ map(0x09120, 0x09125).w(this, FUNC(subsino2_state::ss9601_scroll_w));
- AM_RANGE( 0x0912f, 0x0912f ) AM_WRITE(ss9601_byte_lo_w )
+ map(0x0912f, 0x0912f).w(this, FUNC(subsino2_state::ss9601_byte_lo_w));
- AM_RANGE( 0x09140, 0x09142 ) AM_WRITE(mtrain_outputs_w ) AM_SHARE("outputs")
- AM_RANGE( 0x09143, 0x09143 ) AM_READ_PORT( "IN D" ) // (not shown in system test) 0x40 serial out, 0x80 serial in
- AM_RANGE( 0x09144, 0x09144 ) AM_READ_PORT( "IN A" ) // A
- AM_RANGE( 0x09145, 0x09145 ) AM_READ_PORT( "IN B" ) // B
- AM_RANGE( 0x09146, 0x09146 ) AM_READ_PORT( "IN C" ) // C
- AM_RANGE( 0x09147, 0x09147 ) AM_READ(dsw_r )
- AM_RANGE( 0x09148, 0x09148 ) AM_WRITE(dsw_mask_w )
+ map(0x09140, 0x09142).w(this, FUNC(subsino2_state::mtrain_outputs_w)).share("outputs");
+ map(0x09143, 0x09143).portr("IN D"); // (not shown in system test) 0x40 serial out, 0x80 serial in
+ map(0x09144, 0x09144).portr("IN A"); // A
+ map(0x09145, 0x09145).portr("IN B"); // B
+ map(0x09146, 0x09146).portr("IN C"); // C
+ map(0x09147, 0x09147).r(this, FUNC(subsino2_state::dsw_r));
+ map(0x09148, 0x09148).w(this, FUNC(subsino2_state::dsw_mask_w));
- AM_RANGE( 0x09152, 0x09152 ) AM_READ(vblank_bit2_r ) AM_WRITE(oki_bank_bit0_w )
+ map(0x09152, 0x09152).r(this, FUNC(subsino2_state::vblank_bit2_r)).w(this, FUNC(subsino2_state::oki_bank_bit0_w));
- AM_RANGE( 0x09158, 0x0915e ) AM_READ(mtrain_prot_r )
+ map(0x09158, 0x0915e).r(this, FUNC(subsino2_state::mtrain_prot_r));
- AM_RANGE( 0x09160, 0x09160 ) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE( 0x09161, 0x09161 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE( 0x09162, 0x09162 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
- AM_RANGE( 0x09164, 0x09164 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE( 0x09168, 0x09168 ) AM_WRITE(mtrain_tilesize_w )
+ map(0x09160, 0x09160).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x09161, 0x09161).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x09162, 0x09162).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x09164, 0x09164).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x09168, 0x09168).w(this, FUNC(subsino2_state::mtrain_tilesize_w));
- AM_RANGE( 0x09800, 0x09fff ) AM_RAM
+ map(0x09800, 0x09fff).ram();
- AM_RANGE( 0x0a000, 0x0ffff ) AM_ROM
-ADDRESS_MAP_END
+ map(0x0a000, 0x0ffff).rom();
+}
-ADDRESS_MAP_START(subsino2_state::mtrain_io)
- AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
-ADDRESS_MAP_END
+void subsino2_state::mtrain_io(address_map &map)
+{
+ map(0x0000, 0x003f).ram(); // internal regs
+}
/***************************************************************************
Sakura Love - Ying Hua Lian
@@ -1299,58 +1306,60 @@ WRITE8_MEMBER(subsino2_state::saklove_outputs_w)
// popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", m_outputs[0], m_outputs[1], m_outputs[2], m_outputs[3]);
}
-ADDRESS_MAP_START(subsino2_state::saklove_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("nvram") // battery
+void subsino2_state::saklove_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram().share("nvram"); // battery
// read lo (L1) (only half tilemap?)
- AM_RANGE(0x12000, 0x12fff) AM_READWRITE(ss9601_videoram_1_lo_r, ss9601_videoram_1_lo_w )
- AM_RANGE(0x13000, 0x131ff) AM_READWRITE(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w )
+ map(0x12000, 0x12fff).rw(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r), FUNC(subsino2_state::ss9601_videoram_1_lo_w));
+ map(0x13000, 0x131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w));
// read lo (L0)
- AM_RANGE(0x16000, 0x16fff) AM_READWRITE(ss9601_videoram_0_lo_r, ss9601_videoram_0_lo_w )
- AM_RANGE(0x17000, 0x171ff) AM_READWRITE(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w )
+ map(0x16000, 0x16fff).rw(this, FUNC(subsino2_state::ss9601_videoram_0_lo_r), FUNC(subsino2_state::ss9601_videoram_0_lo_w));
+ map(0x17000, 0x171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w));
// read hi (L1)
- AM_RANGE(0x22000, 0x22fff) AM_READWRITE(ss9601_videoram_1_hi_r, ss9601_videoram_1_hi_w )
- AM_RANGE(0x23000, 0x231ff) AM_READWRITE(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w )
+ map(0x22000, 0x22fff).rw(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r), FUNC(subsino2_state::ss9601_videoram_1_hi_w));
+ map(0x23000, 0x231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w));
// read hi (L0)
- AM_RANGE(0x26000, 0x26fff) AM_READWRITE(ss9601_videoram_0_hi_r, ss9601_videoram_0_hi_w )
- AM_RANGE(0x27000, 0x271ff) AM_READWRITE(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w )
+ map(0x26000, 0x26fff).rw(this, FUNC(subsino2_state::ss9601_videoram_0_hi_r), FUNC(subsino2_state::ss9601_videoram_0_hi_w));
+ map(0x27000, 0x271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w));
// write both (L1)
- AM_RANGE(0x30000, 0x31fff) AM_READWRITE(ss9601_videoram_1_hi_r, ss9601_videoram_1_hi_lo_w )
+ map(0x30000, 0x31fff).rw(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r), FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
// write both (L0)
- AM_RANGE(0x34000, 0x35fff) AM_READWRITE(ss9601_videoram_0_hi_r, ss9601_videoram_0_hi_lo_w )
+ map(0x34000, 0x35fff).rw(this, FUNC(subsino2_state::ss9601_videoram_0_hi_r), FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w));
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
+ map(0xe0000, 0xfffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(subsino2_state::saklove_io)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(ss9601_scrollctrl_w )
+void subsino2_state::saklove_io(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w));
- AM_RANGE(0x0020, 0x0020) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x0040, 0x0041) AM_DEVWRITE("ymsnd", ym3812_device, write)
+ map(0x0020, 0x0020).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0040, 0x0041).w("ymsnd", FUNC(ym3812_device::write));
- AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0x0061, 0x0061) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE(0x0062, 0x0062) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x0060, 0x0060).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0061, 0x0061).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0062, 0x0062).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x0080, 0x0080) AM_WRITE(ss9601_tilesize_w )
- AM_RANGE(0x00a0, 0x00a0) AM_WRITE(ss9601_byte_lo_w )
- AM_RANGE(0x021f, 0x021f) AM_WRITE(ss9601_disable_w )
- AM_RANGE(0x0220, 0x0225) AM_WRITE(ss9601_scroll_w )
+ map(0x0080, 0x0080).w(this, FUNC(subsino2_state::ss9601_tilesize_w));
+ map(0x00a0, 0x00a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w));
+ map(0x021f, 0x021f).w(this, FUNC(subsino2_state::ss9601_disable_w));
+ map(0x0220, 0x0225).w(this, FUNC(subsino2_state::ss9601_scroll_w));
- AM_RANGE(0x0300, 0x0303) AM_WRITE(saklove_outputs_w ) AM_SHARE("outputs")
- AM_RANGE(0x0303, 0x0303) AM_READ_PORT( "IN D" ) // 0x40 serial out, 0x80 serial in
- AM_RANGE(0x0304, 0x0304) AM_READ_PORT( "IN A" )
- AM_RANGE(0x0305, 0x0305) AM_READ_PORT( "IN B" )
- AM_RANGE(0x0306, 0x0306) AM_READ_PORT( "IN C" )
+ map(0x0300, 0x0303).w(this, FUNC(subsino2_state::saklove_outputs_w)).share("outputs");
+ map(0x0303, 0x0303).portr("IN D"); // 0x40 serial out, 0x80 serial in
+ map(0x0304, 0x0304).portr("IN A");
+ map(0x0305, 0x0305).portr("IN B");
+ map(0x0306, 0x0306).portr("IN C");
- AM_RANGE(0x0307, 0x0307) AM_READ(dsw_r )
- AM_RANGE(0x0308, 0x0308) AM_WRITE(dsw_mask_w )
+ map(0x0307, 0x0307).r(this, FUNC(subsino2_state::dsw_r));
+ map(0x0308, 0x0308).w(this, FUNC(subsino2_state::dsw_mask_w));
- AM_RANGE(0x0312, 0x0312) AM_READ(vblank_bit2_r ) AM_WRITE(oki_bank_bit0_w )
+ map(0x0312, 0x0312).r(this, FUNC(subsino2_state::vblank_bit2_r)).w(this, FUNC(subsino2_state::oki_bank_bit0_w));
-ADDRESS_MAP_END
+}
/***************************************************************************
X-Plan
@@ -1389,70 +1398,72 @@ WRITE8_MEMBER(subsino2_state::xplan_outputs_w)
// popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", m_outputs[0], m_outputs[1], m_outputs[2], m_outputs[3]);
}
-ADDRESS_MAP_START(subsino2_state::xplan_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("nvram") // battery
+void subsino2_state::xplan_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram().share("nvram"); // battery
// write both (L1, byte_lo2)
- AM_RANGE( 0x10000, 0x11fff ) AM_WRITE(ss9601_videoram_1_hi_lo2_w )
+ map(0x10000, 0x11fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo2_w));
// read lo (L1) (only half tilemap?)
- AM_RANGE( 0x12000, 0x12fff ) AM_READ(ss9601_videoram_1_lo_r )
- AM_RANGE( 0x13000, 0x131ff ) AM_READWRITE(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w )
+ map(0x12000, 0x12fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r));
+ map(0x13000, 0x131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w));
// write both (L0, byte_lo2)
- AM_RANGE( 0x14000, 0x15fff ) AM_WRITE(ss9601_videoram_0_hi_lo2_w )
+ map(0x14000, 0x15fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo2_w));
// read lo (REEL)
- AM_RANGE( 0x16000, 0x16fff ) AM_READ(ss9601_reelram_lo_r )
- AM_RANGE( 0x17000, 0x171ff ) AM_READWRITE(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w )
+ map(0x16000, 0x16fff).r(this, FUNC(subsino2_state::ss9601_reelram_lo_r));
+ map(0x17000, 0x171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w));
// read hi (L1)
- AM_RANGE( 0x22000, 0x22fff ) AM_READ(ss9601_videoram_1_hi_r )
- AM_RANGE( 0x23000, 0x231ff ) AM_READWRITE(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w )
+ map(0x22000, 0x22fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r));
+ map(0x23000, 0x231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w));
// read hi (REEL)
- AM_RANGE( 0x26000, 0x26fff ) AM_READ(ss9601_reelram_hi_r )
- AM_RANGE( 0x27000, 0x271ff ) AM_READWRITE(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w )
+ map(0x26000, 0x26fff).r(this, FUNC(subsino2_state::ss9601_reelram_hi_r));
+ map(0x27000, 0x271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w));
// write both (L1, byte_lo)
- AM_RANGE( 0x30000, 0x31fff ) AM_WRITE(ss9601_videoram_1_hi_lo_w )
- AM_RANGE( 0x32000, 0x32fff ) AM_WRITE(ss9601_videoram_1_hi_lo_w )
- AM_RANGE( 0x33000, 0x331ff ) AM_WRITE(ss9601_scrollram_1_hi_lo_w )
+ map(0x30000, 0x31fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
+ map(0x32000, 0x32fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w));
+ map(0x33000, 0x331ff).w(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_lo_w));
// write both (L0 & REEL, byte_lo)
- AM_RANGE( 0x34000, 0x35fff ) AM_WRITE(ss9601_videoram_0_hi_lo_w )
- AM_RANGE( 0x36000, 0x36fff ) AM_WRITE(ss9601_reelram_hi_lo_w )
- AM_RANGE( 0x37000, 0x371ff ) AM_WRITE(ss9601_scrollram_0_hi_lo_w )
+ map(0x34000, 0x35fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w));
+ map(0x36000, 0x36fff).w(this, FUNC(subsino2_state::ss9601_reelram_hi_lo_w));
+ map(0x37000, 0x371ff).w(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_lo_w));
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
+ map(0xc0000, 0xfffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(subsino2_state::xplan_io)
- AM_RANGE(0x0000, 0x0000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+void subsino2_state::xplan_io(address_map &map)
+{
+ map(0x0000, 0x0000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x0020, 0x0020) AM_WRITE(ss9601_byte_lo2_w )
+ map(0x0020, 0x0020).w(this, FUNC(subsino2_state::ss9601_byte_lo2_w));
- AM_RANGE(0x0040, 0x0040) AM_WRITE(ss9601_scrollctrl_w )
+ map(0x0040, 0x0040).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w));
- AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("ramdac", ramdac_device, index_w)
- AM_RANGE(0x0061, 0x0061) AM_DEVWRITE("ramdac", ramdac_device, pal_w)
- AM_RANGE(0x0062, 0x0062) AM_DEVWRITE("ramdac", ramdac_device, mask_w)
+ map(0x0060, 0x0060).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0061, 0x0061).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x0062, 0x0062).w("ramdac", FUNC(ramdac_device::mask_w));
- AM_RANGE(0x0080, 0x0080) AM_WRITE(ss9601_tilesize_w )
- AM_RANGE(0x00a0, 0x00a0) AM_WRITE(ss9601_byte_lo_w )
+ map(0x0080, 0x0080).w(this, FUNC(subsino2_state::ss9601_tilesize_w));
+ map(0x00a0, 0x00a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w));
- AM_RANGE(0x021f, 0x021f) AM_WRITE(ss9601_disable_w )
- AM_RANGE(0x0220, 0x0225) AM_WRITE(ss9601_scroll_w )
+ map(0x021f, 0x021f).w(this, FUNC(subsino2_state::ss9601_disable_w));
+ map(0x0220, 0x0225).w(this, FUNC(subsino2_state::ss9601_scroll_w));
- AM_RANGE(0x0235, 0x0235) AM_NOP // INT0 Ack.?
+ map(0x0235, 0x0235).noprw(); // INT0 Ack.?
- AM_RANGE(0x0300, 0x0300) AM_READ(vblank_bit6_r ) AM_WRITE(oki_bank_bit4_w )
- AM_RANGE(0x0301, 0x0301) AM_WRITE(dsw_mask_w )
- AM_RANGE(0x0302, 0x0302) AM_READ(dsw_r )
- AM_RANGE(0x0303, 0x0303) AM_READ_PORT( "IN C" )
- AM_RANGE(0x0304, 0x0304) AM_READ_PORT( "IN B" )
- AM_RANGE(0x0305, 0x0305) AM_READ_PORT( "IN A" )
- AM_RANGE(0x0306, 0x0306) AM_READ_PORT( "IN D" ) // 0x40 serial out, 0x80 serial in
+ map(0x0300, 0x0300).r(this, FUNC(subsino2_state::vblank_bit6_r)).w(this, FUNC(subsino2_state::oki_bank_bit4_w));
+ map(0x0301, 0x0301).w(this, FUNC(subsino2_state::dsw_mask_w));
+ map(0x0302, 0x0302).r(this, FUNC(subsino2_state::dsw_r));
+ map(0x0303, 0x0303).portr("IN C");
+ map(0x0304, 0x0304).portr("IN B");
+ map(0x0305, 0x0305).portr("IN A");
+ map(0x0306, 0x0306).portr("IN D"); // 0x40 serial out, 0x80 serial in
// 306 = d, 307 = c, 308 = b, 309 = a
- AM_RANGE(0x0306, 0x0309) AM_WRITE(xplan_outputs_w ) AM_SHARE("outputs")
-ADDRESS_MAP_END
+ map(0x0306, 0x0309).w(this, FUNC(subsino2_state::xplan_outputs_w)).share("outputs");
+}
/***************************************************************************
X-Train
@@ -1492,19 +1503,21 @@ WRITE8_MEMBER(subsino2_state::xtrain_outputs_w)
// popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", m_outputs[0], m_outputs[1], m_outputs[2], m_outputs[3]);
}
-ADDRESS_MAP_START(subsino2_state::expcard_io)
- AM_IMPORT_FROM( xplan_io )
+void subsino2_state::expcard_io(address_map &map)
+{
+ xplan_io(map);
// 306 = d, 307 = c, 308 = b, 309 = a
- AM_RANGE(0x0306, 0x0309) AM_WRITE(expcard_outputs_w ) AM_SHARE("outputs")
-ADDRESS_MAP_END
+ map(0x0306, 0x0309).w(this, FUNC(subsino2_state::expcard_outputs_w)).share("outputs");
+}
-ADDRESS_MAP_START(subsino2_state::xtrain_io)
- AM_IMPORT_FROM( xplan_io )
+void subsino2_state::xtrain_io(address_map &map)
+{
+ xplan_io(map);
// 306 = d, 307 = c, 308 = b, 309 = a
- AM_RANGE(0x0306, 0x0309) AM_WRITE(xtrain_outputs_w ) AM_SHARE("outputs")
-ADDRESS_MAP_END
+ map(0x0306, 0x0309).w(this, FUNC(subsino2_state::xtrain_outputs_w)).share("outputs");
+}
/***************************************************************************
diff --git a/src/mame/drivers/summit.cpp b/src/mame/drivers/summit.cpp
index e8c20d92425..102a58bcee6 100644
--- a/src/mame/drivers/summit.cpp
+++ b/src/mame/drivers/summit.cpp
@@ -77,21 +77,22 @@ WRITE8_MEMBER(summit_state::out_w)
}
-ADDRESS_MAP_START(summit_state::mainmap)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
+void summit_state::mainmap(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
- AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("attr")
- AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("vram")
+ map(0x2000, 0x23ff).ram().share("attr");
+ map(0x2800, 0x2bff).ram().share("vram");
- AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")
+ map(0x3800, 0x3800).portr("IN0");
// AM_RANGE(0x3880, 0x3880) AM_WRITE(out_w)
- AM_RANGE(0x3900, 0x3900) AM_READ_PORT("IN1") AM_WRITE(out_w) // lamps
+ map(0x3900, 0x3900).portr("IN1").w(this, FUNC(summit_state::out_w)); // lamps
// AM_RANGE(0x3980, 0x3980) AM_WRITE(out_w)
- AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") //AM_WRITE(out_w)
- AM_RANGE(0x3b00, 0x3b00) AM_READ_PORT("IN3")
+ map(0x3a00, 0x3a00).portr("IN2"); //AM_WRITE(out_w)
+ map(0x3b00, 0x3b00).portr("IN3");
- AM_RANGE(0x7000, 0x71ff) AM_RAM
-ADDRESS_MAP_END
+ map(0x7000, 0x71ff).ram();
+}
diff --git a/src/mame/drivers/sumt8035.cpp b/src/mame/drivers/sumt8035.cpp
index 2f37c88a623..347b513eff4 100644
--- a/src/mame/drivers/sumt8035.cpp
+++ b/src/mame/drivers/sumt8035.cpp
@@ -34,13 +34,15 @@ protected:
};
-ADDRESS_MAP_START(sumt8035_state::sumt_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+void sumt8035_state::sumt_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
-ADDRESS_MAP_START(sumt8035_state::sumt_portmap)
-ADDRESS_MAP_END
+void sumt8035_state::sumt_portmap(address_map &map)
+{
+}
static INPUT_PORTS_START( summit )
diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp
index 2a167d8f6a0..3afc405d084 100644
--- a/src/mame/drivers/sun1.cpp
+++ b/src/mame/drivers/sun1.cpp
@@ -86,16 +86,17 @@ protected:
};
-ADDRESS_MAP_START(sun1_state::sun1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot
- AM_RANGE(0x00200000, 0x00203fff) AM_ROM AM_REGION("user1",0)
- AM_RANGE(0x00600000, 0x00600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("iouart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00)
- AM_RANGE(0x00800000, 0x00800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("timer", am9513_device, read16, write16)
- AM_RANGE(0x00a00000, 0x00bfffff) AM_UNMAP // page map
- AM_RANGE(0x00c00000, 0x00dfffff) AM_UNMAP // segment map
- AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // context register
-ADDRESS_MAP_END
+void sun1_state::sun1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x001fffff).ram().share("p_ram"); // 512 KB RAM / ROM at boot
+ map(0x00200000, 0x00203fff).rom().region("user1", 0);
+ map(0x00600000, 0x00600007).mirror(0x1ffff8).rw(m_iouart, FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0xff00);
+ map(0x00800000, 0x00800003).mirror(0x1ffffc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
+ map(0x00a00000, 0x00bfffff).unmaprw(); // page map
+ map(0x00c00000, 0x00dfffff).unmaprw(); // segment map
+ map(0x00e00000, 0x00ffffff).unmaprw(); // context register
+}
/* Input ports */
static INPUT_PORTS_START( sun1 )
diff --git a/src/mame/drivers/sun2.cpp b/src/mame/drivers/sun2.cpp
index 912a8bdc8c0..e47dbc82237 100644
--- a/src/mame/drivers/sun2.cpp
+++ b/src/mame/drivers/sun2.cpp
@@ -479,69 +479,78 @@ WRITE16_MEMBER( sun2_state::video_ctrl_w )
COMBINE_DATA(&m_bw2_ctrl);
}
-ADDRESS_MAP_START(sun2_state::sun2_mem)
- AM_RANGE(0x000000, 0xffffff) AM_READWRITE( tl_mmu_r, tl_mmu_w )
-ADDRESS_MAP_END
+void sun2_state::sun2_mem(address_map &map)
+{
+ map(0x000000, 0xffffff).rw(this, FUNC(sun2_state::tl_mmu_r), FUNC(sun2_state::tl_mmu_w));
+}
// VME memory spaces
// type 0 device space
-ADDRESS_MAP_START(sun2_state::vmetype0space_map)
- AM_RANGE(0x000000, 0x7fffff) AM_READWRITE(ram_r, ram_w)
-ADDRESS_MAP_END
+void sun2_state::vmetype0space_map(address_map &map)
+{
+ map(0x000000, 0x7fffff).rw(this, FUNC(sun2_state::ram_r), FUNC(sun2_state::ram_w));
+}
// type 1 device space
-ADDRESS_MAP_START(sun2_state::vmetype1space_map)
- AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("bw2_vram")
- AM_RANGE(0x020000, 0x020001) AM_READWRITE( video_ctrl_r, video_ctrl_w )
- AM_RANGE(0x7f0000, 0x7f07ff) AM_ROM AM_REGION("bootprom", 0) // uses MMU loophole to read 32k from a 2k window
+void sun2_state::vmetype1space_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).ram().share("bw2_vram");
+ map(0x020000, 0x020001).rw(this, FUNC(sun2_state::video_ctrl_r), FUNC(sun2_state::video_ctrl_w));
+ map(0x7f0000, 0x7f07ff).rom().region("bootprom", 0); // uses MMU loophole to read 32k from a 2k window
// 7f0800-7f0fff: Ethernet interface
// 7f1000-7f17ff: AM9518 encryption processor
//AM_RANGE(0x7f1800, 0x7f1801) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, cb_r, cb_w, 0xff00)
//AM_RANGE(0x7f1802, 0x7f1803) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, db_r, db_w, 0xff00)
//AM_RANGE(0x7f1804, 0x7f1805) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ca_r, ca_w, 0xff00)
//AM_RANGE(0x7f1806, 0x7f1807) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, da_r, da_w, 0xff00)
- AM_RANGE(0x7f2000, 0x7f2001) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, cb_r, cb_w, 0xff00)
- AM_RANGE(0x7f2002, 0x7f2003) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, db_r, db_w, 0xff00)
- AM_RANGE(0x7f2004, 0x7f2005) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ca_r, ca_w, 0xff00)
- AM_RANGE(0x7f2006, 0x7f2007) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, da_r, da_w, 0xff00)
- AM_RANGE(0x7f2800, 0x7f2803) AM_MIRROR(0x7fc) AM_DEVREADWRITE("timer", am9513_device, read16, write16)
-ADDRESS_MAP_END
+ map(0x7f2000, 0x7f2000).rw(SCC2_TAG, FUNC(z80scc_device::cb_r), FUNC(z80scc_device::cb_w));
+ map(0x7f2002, 0x7f2002).rw(SCC2_TAG, FUNC(z80scc_device::db_r), FUNC(z80scc_device::db_w));
+ map(0x7f2004, 0x7f2004).rw(SCC2_TAG, FUNC(z80scc_device::ca_r), FUNC(z80scc_device::ca_w));
+ map(0x7f2006, 0x7f2006).rw(SCC2_TAG, FUNC(z80scc_device::da_r), FUNC(z80scc_device::da_w));
+ map(0x7f2800, 0x7f2803).mirror(0x7fc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
+}
// type 2 device space
-ADDRESS_MAP_START(sun2_state::vmetype2space_map)
-ADDRESS_MAP_END
+void sun2_state::vmetype2space_map(address_map &map)
+{
+}
// type 3 device space
-ADDRESS_MAP_START(sun2_state::vmetype3space_map)
-ADDRESS_MAP_END
+void sun2_state::vmetype3space_map(address_map &map)
+{
+}
// Multibus memory spaces
// type 0 device space
-ADDRESS_MAP_START(sun2_state::mbustype0space_map)
- AM_RANGE(0x000000, 0x3fffff) AM_READWRITE(ram_r, ram_w)
+void sun2_state::mbustype0space_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rw(this, FUNC(sun2_state::ram_r), FUNC(sun2_state::ram_w));
// 7f80000-7f807ff: Keyboard/mouse SCC8530
//AM_RANGE(0x7f8000, 0x7f8007) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00)
- AM_RANGE(0x700000, 0x71ffff) AM_RAM AM_SHARE("bw2_vram")
- AM_RANGE(0x781800, 0x781801) AM_READWRITE( video_ctrl_r, video_ctrl_w )
-ADDRESS_MAP_END
+ map(0x700000, 0x71ffff).ram().share("bw2_vram");
+ map(0x781800, 0x781801).rw(this, FUNC(sun2_state::video_ctrl_r), FUNC(sun2_state::video_ctrl_w));
+}
// type 1 device space
-ADDRESS_MAP_START(sun2_state::mbustype1space_map)
- AM_RANGE(0x000000, 0x0007ff) AM_ROM AM_REGION("bootprom", 0) // uses MMU loophole to read 32k from a 2k window
+void sun2_state::mbustype1space_map(address_map &map)
+{
+ map(0x000000, 0x0007ff).rom().region("bootprom", 0); // uses MMU loophole to read 32k from a 2k window
// 001000-0017ff: AM9518 encryption processor
// 001800-001fff: Parallel port
- AM_RANGE(0x002000, 0x0027ff) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00)
- AM_RANGE(0x002800, 0x002803) AM_MIRROR(0x7fc) AM_DEVREADWRITE("timer", am9513_device, read16, write16)
- AM_RANGE(0x003800, 0x00383f) AM_MIRROR(0x7c0) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0xff00) // 12 wait states generated by PAL16R6 (U415)
-ADDRESS_MAP_END
+ map(0x002000, 0x0027ff).rw(SCC2_TAG, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask16(0xff00);
+ map(0x002800, 0x002803).mirror(0x7fc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
+ map(0x003800, 0x00383f).mirror(0x7c0).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0xff00); // 12 wait states generated by PAL16R6 (U415)
+}
// type 2 device space (Multibus memory space)
-ADDRESS_MAP_START(sun2_state::mbustype2space_map)
-ADDRESS_MAP_END
+void sun2_state::mbustype2space_map(address_map &map)
+{
+}
// type 3 device space (Multibus I/O space)
-ADDRESS_MAP_START(sun2_state::mbustype3space_map)
-ADDRESS_MAP_END
+void sun2_state::mbustype3space_map(address_map &map)
+{
+}
uint32_t sun2_state::bw2_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp
index 62dc2214ea4..b5d0216763b 100644
--- a/src/mame/drivers/sun3.cpp
+++ b/src/mame/drivers/sun3.cpp
@@ -719,41 +719,47 @@ WRITE32_MEMBER(sun3_state::parity_w)
}
}
-ADDRESS_MAP_START(sun3_state::sun3_mem)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE( tl_mmu_r, tl_mmu_w )
-ADDRESS_MAP_END
+void sun3_state::sun3_mem(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(sun3_state::tl_mmu_r), FUNC(sun3_state::tl_mmu_w));
+}
// type 0 device space
-ADDRESS_MAP_START(sun3_state::vmetype0space_map)
- AM_RANGE(0x00000000, 0x08ffffff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM // not sure what's going on here (3/110)
- AM_RANGE(0xff000000, 0xff03ffff) AM_RAM AM_SHARE("bw2_vram")
-ADDRESS_MAP_END
+void sun3_state::vmetype0space_map(address_map &map)
+{
+ map(0x00000000, 0x08ffffff).rw(this, FUNC(sun3_state::ram_r), FUNC(sun3_state::ram_w));
+ map(0xfe400000, 0xfe41ffff).ram(); // not sure what's going on here (3/110)
+ map(0xff000000, 0xff03ffff).ram().share("bw2_vram");
+}
// type 0 without VRAM (3/50)
-ADDRESS_MAP_START(sun3_state::vmetype0space_novram_map)
- AM_RANGE(0x00000000, 0x08ffffff) AM_READWRITE(ram_r, ram_w)
-ADDRESS_MAP_END
+void sun3_state::vmetype0space_novram_map(address_map &map)
+{
+ map(0x00000000, 0x08ffffff).rw(this, FUNC(sun3_state::ram_r), FUNC(sun3_state::ram_w));
+}
// type 1 device space
-ADDRESS_MAP_START(sun3_state::vmetype1space_map)
- AM_RANGE(0x00000000, 0x0000000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x00020000, 0x0002000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x00040000, 0x000407ff) AM_RAM AM_SHARE("nvram") // type 2816 parallel EEPROM
- AM_RANGE(0x00060000, 0x0006ffff) AM_READWRITE8(rtc7170_r, rtc7170_w, 0xffffffff)
- AM_RANGE(0x00080000, 0x0008000f) AM_READWRITE(parity_r, parity_w)
- AM_RANGE(0x000a0000, 0x000a0003) AM_READWRITE(irqctrl_r, irqctrl_w)
- AM_RANGE(0x00100000, 0x0010ffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x001e0000, 0x001e00ff) AM_READWRITE(ecc_r, ecc_w)
-ADDRESS_MAP_END
+void sun3_state::vmetype1space_map(address_map &map)
+{
+ map(0x00000000, 0x0000000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x00020000, 0x0002000f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x00040000, 0x000407ff).ram().share("nvram"); // type 2816 parallel EEPROM
+ map(0x00060000, 0x0006ffff).rw(this, FUNC(sun3_state::rtc7170_r), FUNC(sun3_state::rtc7170_w));
+ map(0x00080000, 0x0008000f).rw(this, FUNC(sun3_state::parity_r), FUNC(sun3_state::parity_w));
+ map(0x000a0000, 0x000a0003).rw(this, FUNC(sun3_state::irqctrl_r), FUNC(sun3_state::irqctrl_w));
+ map(0x00100000, 0x0010ffff).rom().region("user1", 0);
+ map(0x001e0000, 0x001e00ff).rw(this, FUNC(sun3_state::ecc_r), FUNC(sun3_state::ecc_w));
+}
// type 2 device space
-ADDRESS_MAP_START(sun3_state::vmetype2space_map)
-ADDRESS_MAP_END
+void sun3_state::vmetype2space_map(address_map &map)
+{
+}
// type 3 device space
-ADDRESS_MAP_START(sun3_state::vmetype3space_map)
-ADDRESS_MAP_END
+void sun3_state::vmetype3space_map(address_map &map)
+{
+}
READ32_MEMBER(sun3_state::irqctrl_r)
{
diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp
index 29c594bfc8a..95ed03e46fa 100644
--- a/src/mame/drivers/sun3x.cpp
+++ b/src/mame/drivers/sun3x.cpp
@@ -218,49 +218,51 @@ private:
bool m_bInBusErr;
};
-ADDRESS_MAP_START(sun3x_state::sun3_80_mem)
- AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("p_ram") AM_WRITE(ramwrite_w)
- AM_RANGE(0x40000000, 0x40000003) AM_READWRITE(cause_buserr_r, cause_buserr_w)
- AM_RANGE(0x50300000, 0x50300003) AM_READ(p4id_r)
- AM_RANGE(0x50400000, 0x504fffff) AM_RAM AM_SHARE("bw2_vram")
- AM_RANGE(0x60000000, 0x60001fff) AM_READWRITE(iommu_r, iommu_w)
- AM_RANGE(0x61000000, 0x61000003) AM_READWRITE(enable_r, enable_w)
- AM_RANGE(0x61000400, 0x61000403) AM_READWRITE(buserr_r, buserr_w)
- AM_RANGE(0x61000800, 0x61000803) AM_READWRITE(diag_r, diag_w)
- AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w)
- AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w)
- AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w)
- AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0)
- AM_RANGE(0x64000000, 0x640007ff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0xffffffff)
- AM_RANGE(0x66000000, 0x6600003f) AM_DEVREADWRITE8(ESP_TAG, ncr539x_device, read, write, 0xff000000)
- AM_RANGE(0x6e000000, 0x6e000007) AM_DEVICE8(FDC_TAG, n82077aa_device, map, 0xffffffff)
- AM_RANGE(0x6e000400, 0x6e000403) AM_READWRITE(fdc_control_r, fdc_control_w)
- AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w)
- AM_RANGE(0xfefe0000, 0xfefeffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sun3x_state::sun3_460_mem)
- AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("p_ram") AM_WRITE(ramwrite_w)
- AM_RANGE(0x09000000, 0x09000003) AM_READWRITE(cause_buserr_r, cause_buserr_w)
- AM_RANGE(0x50300000, 0x50300003) AM_READ(p4id_r)
- AM_RANGE(0x50400000, 0x504fffff) AM_RAM AM_SHARE("bw2_vram")
- AM_RANGE(0x5c000f14, 0x5c000f17) AM_READ(fpa_r)
- AM_RANGE(0x60000000, 0x60001fff) AM_READWRITE(iommu_r, iommu_w)
- AM_RANGE(0x61000000, 0x61000003) AM_READWRITE(enable_r, enable_w)
- AM_RANGE(0x61000400, 0x61000403) AM_READWRITE(buserr_r, buserr_w)
- AM_RANGE(0x61000800, 0x61000803) AM_READWRITE(diag_r, diag_w)
- AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w)
- AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w)
- AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w)
- AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0)
-
- AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w)
- AM_RANGE(0xfefe0000, 0xfefeffff) AM_ROM AM_REGION("user1",0)
-ADDRESS_MAP_END
+void sun3x_state::sun3_80_mem(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).ram().share("p_ram").w(this, FUNC(sun3x_state::ramwrite_w));
+ map(0x40000000, 0x40000003).rw(this, FUNC(sun3x_state::cause_buserr_r), FUNC(sun3x_state::cause_buserr_w));
+ map(0x50300000, 0x50300003).r(this, FUNC(sun3x_state::p4id_r));
+ map(0x50400000, 0x504fffff).ram().share("bw2_vram");
+ map(0x60000000, 0x60001fff).rw(this, FUNC(sun3x_state::iommu_r), FUNC(sun3x_state::iommu_w));
+ map(0x61000000, 0x61000003).rw(this, FUNC(sun3x_state::enable_r), FUNC(sun3x_state::enable_w));
+ map(0x61000400, 0x61000403).rw(this, FUNC(sun3x_state::buserr_r), FUNC(sun3x_state::buserr_w));
+ map(0x61000800, 0x61000803).rw(this, FUNC(sun3x_state::diag_r), FUNC(sun3x_state::diag_w));
+ map(0x61001000, 0x61001003).rw(this, FUNC(sun3x_state::memreg_r), FUNC(sun3x_state::memreg_w));
+ map(0x61001004, 0x61001007).rw(this, FUNC(sun3x_state::memrerraddr_r), FUNC(sun3x_state::memrerraddr_w));
+ map(0x61001400, 0x61001403).rw(this, FUNC(sun3x_state::irqctrl_r), FUNC(sun3x_state::irqctrl_w));
+ map(0x62000000, 0x6200000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x62002000, 0x6200200f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x63000000, 0x6301ffff).rom().region("user1", 0);
+ map(0x64000000, 0x640007ff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
+ map(0x66000000, 0x6600003f).rw(ESP_TAG, FUNC(ncr539x_device::read), FUNC(ncr539x_device::write)).umask32(0xff000000);
+ map(0x6e000000, 0x6e000007).m(m_fdc, FUNC(n82077aa_device::map));
+ map(0x6e000400, 0x6e000403).rw(this, FUNC(sun3x_state::fdc_control_r), FUNC(sun3x_state::fdc_control_w));
+ map(0x6f00003c, 0x6f00003f).rw(this, FUNC(sun3x_state::printer_r), FUNC(sun3x_state::printer_w));
+ map(0xfefe0000, 0xfefeffff).rom().region("user1", 0);
+}
+
+void sun3x_state::sun3_460_mem(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).ram().share("p_ram").w(this, FUNC(sun3x_state::ramwrite_w));
+ map(0x09000000, 0x09000003).rw(this, FUNC(sun3x_state::cause_buserr_r), FUNC(sun3x_state::cause_buserr_w));
+ map(0x50300000, 0x50300003).r(this, FUNC(sun3x_state::p4id_r));
+ map(0x50400000, 0x504fffff).ram().share("bw2_vram");
+ map(0x5c000f14, 0x5c000f17).r(this, FUNC(sun3x_state::fpa_r));
+ map(0x60000000, 0x60001fff).rw(this, FUNC(sun3x_state::iommu_r), FUNC(sun3x_state::iommu_w));
+ map(0x61000000, 0x61000003).rw(this, FUNC(sun3x_state::enable_r), FUNC(sun3x_state::enable_w));
+ map(0x61000400, 0x61000403).rw(this, FUNC(sun3x_state::buserr_r), FUNC(sun3x_state::buserr_w));
+ map(0x61000800, 0x61000803).rw(this, FUNC(sun3x_state::diag_r), FUNC(sun3x_state::diag_w));
+ map(0x61001000, 0x61001003).rw(this, FUNC(sun3x_state::memreg_r), FUNC(sun3x_state::memreg_w));
+ map(0x61001004, 0x61001007).rw(this, FUNC(sun3x_state::memrerraddr_r), FUNC(sun3x_state::memrerraddr_w));
+ map(0x61001400, 0x61001403).rw(this, FUNC(sun3x_state::irqctrl_r), FUNC(sun3x_state::irqctrl_w));
+ map(0x62000000, 0x6200000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x62002000, 0x6200200f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x63000000, 0x6301ffff).rom().region("user1", 0);
+
+ map(0x6f00003c, 0x6f00003f).rw(this, FUNC(sun3x_state::printer_r), FUNC(sun3x_state::printer_w));
+ map(0xfefe0000, 0xfefeffff).rom().region("user1", 0);
+}
READ32_MEMBER( sun3x_state::p4id_r )
{
diff --git a/src/mame/drivers/sun4.cpp b/src/mame/drivers/sun4.cpp
index 837af9187cd..71e8fb492c5 100644
--- a/src/mame/drivers/sun4.cpp
+++ b/src/mame/drivers/sun4.cpp
@@ -1331,13 +1331,15 @@ void sun4_state::fcodes_command(int ref, const std::vector<std::string> &params)
#endif
}
-ADDRESS_MAP_START(sun4_state::sun4_mem)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE( sun4_mmu_r, sun4_mmu_w )
-ADDRESS_MAP_END
+void sun4_state::sun4_mem(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(sun4_state::sun4_mmu_r), FUNC(sun4_state::sun4_mmu_w));
+}
-ADDRESS_MAP_START(sun4_state::sun4c_mem)
- AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE( sun4c_mmu_r, sun4c_mmu_w )
-ADDRESS_MAP_END
+void sun4_state::sun4c_mem(address_map &map)
+{
+ map(0x00000000, 0xffffffff).rw(this, FUNC(sun4_state::sun4c_mmu_r), FUNC(sun4_state::sun4c_mmu_w));
+}
/* Input ports */
static INPUT_PORTS_START( sun4 )
@@ -1460,29 +1462,32 @@ WRITE32_MEMBER( sun4_state::ram_w )
}
}
-ADDRESS_MAP_START(sun4_state::type0space_map)
- AM_RANGE(0x00000000, 0x03ffffff) AM_READWRITE(ram_r, ram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sun4_state::type1space_map)
- AM_RANGE(0x00000000, 0x0000000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x02000000, 0x020007ff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0xffffffff)
- AM_RANGE(0x03000000, 0x0300000f) AM_READWRITE(timer_r, timer_w) AM_MIRROR(0xfffff0)
- AM_RANGE(0x05000000, 0x05000003) AM_READWRITE8(irq_r, irq_w, 0xffffffff)
- AM_RANGE(0x06000000, 0x0607ffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x07200000, 0x07200003) AM_READWRITE8(fdc_r, fdc_w, 0xffffffff)
- AM_RANGE(0x08000000, 0x08000003) AM_READ(ss1_sl0_id) // slot 0 contains SCSI/DMA/Ethernet
- AM_RANGE(0x08400000, 0x0840000f) AM_READWRITE(dma_r, dma_w)
- AM_RANGE(0x08800000, 0x0880001f) AM_DEVICE8("scsibus:7:ncr5390", ncr5390_device, map, 0xff000000)
- AM_RANGE(0x0e000000, 0x0e000003) AM_READ(ss1_sl3_id) // slot 3 contains video board
- AM_RANGE(0x0e800000, 0x0e8fffff) AM_RAM AM_SHARE("bw2_vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sun4_state::type1space_s4_map)
- AM_RANGE(0x00000000, 0x0000000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
- AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
-ADDRESS_MAP_END
+void sun4_state::type0space_map(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).rw(this, FUNC(sun4_state::ram_r), FUNC(sun4_state::ram_w));
+}
+
+void sun4_state::type1space_map(address_map &map)
+{
+ map(0x00000000, 0x0000000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x01000000, 0x0100000f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x02000000, 0x020007ff).rw(m_timekpr, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
+ map(0x03000000, 0x0300000f).rw(this, FUNC(sun4_state::timer_r), FUNC(sun4_state::timer_w)).mirror(0xfffff0);
+ map(0x05000000, 0x05000003).rw(this, FUNC(sun4_state::irq_r), FUNC(sun4_state::irq_w));
+ map(0x06000000, 0x0607ffff).rom().region("user1", 0);
+ map(0x07200000, 0x07200003).rw(this, FUNC(sun4_state::fdc_r), FUNC(sun4_state::fdc_w));
+ map(0x08000000, 0x08000003).r(this, FUNC(sun4_state::ss1_sl0_id)); // slot 0 contains SCSI/DMA/Ethernet
+ map(0x08400000, 0x0840000f).rw(this, FUNC(sun4_state::dma_r), FUNC(sun4_state::dma_w));
+ map(0x08800000, 0x0880001f).m(m_scsi, FUNC(ncr5390_device::map)).umask32(0xff000000);
+ map(0x0e000000, 0x0e000003).r(this, FUNC(sun4_state::ss1_sl3_id)); // slot 3 contains video board
+ map(0x0e800000, 0x0e8fffff).ram().share("bw2_vram");
+}
+
+void sun4_state::type1space_s4_map(address_map &map)
+{
+ map(0x00000000, 0x0000000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+ map(0x01000000, 0x0100000f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00);
+}
READ8_MEMBER( sun4_state::fdc_r )
{
diff --git a/src/mame/drivers/suna16.cpp b/src/mame/drivers/suna16.cpp
index 121c6d0da25..eb125547a6c 100644
--- a/src/mame/drivers/suna16.cpp
+++ b/src/mame/drivers/suna16.cpp
@@ -95,19 +95,20 @@ WRITE16_MEMBER(suna16_state::bestbest_coin_w)
Back Street Soccer
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::bssoccer_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM // RAM
- AM_RANGE(0x400000, 0x4001ff) AM_READWRITE(paletteram_r, paletteram_w) // Banked Palette
- AM_RANGE(0x400200, 0x400fff) AM_RAM //
- AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("P2") AM_WRITE(flipscreen_w) // Flip Screen
- AM_RANGE(0xa00004, 0xa00005) AM_READ_PORT("P3") AM_WRITE(bssoccer_leds_w) // Leds
- AM_RANGE(0xa00006, 0xa00007) AM_READ_PORT("P4") AM_WRITENOP // ? IRQ 1 Ack
- AM_RANGE(0xa00008, 0xa00009) AM_READ_PORT("DSW1") AM_WRITENOP // ? IRQ 2 Ack
- AM_RANGE(0xa0000a, 0xa0000b) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+void suna16_state::bssoccer_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x200000, 0x203fff).ram(); // RAM
+ map(0x400000, 0x4001ff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); // Banked Palette
+ map(0x400200, 0x400fff).ram(); //
+ map(0x600000, 0x61ffff).ram().share("spriteram"); // Sprites
+ map(0xa00000, 0xa00001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU
+ map(0xa00002, 0xa00003).portr("P2").w(this, FUNC(suna16_state::flipscreen_w)); // Flip Screen
+ map(0xa00004, 0xa00005).portr("P3").w(this, FUNC(suna16_state::bssoccer_leds_w)); // Leds
+ map(0xa00006, 0xa00007).portr("P4").nopw(); // ? IRQ 1 Ack
+ map(0xa00008, 0xa00009).portr("DSW1").nopw(); // ? IRQ 2 Ack
+ map(0xa0000a, 0xa0000b).portr("DSW2");
+}
/***************************************************************************
@@ -151,38 +152,40 @@ WRITE8_MEMBER(suna16_state::uballoon_prot_w)
}
}
-ADDRESS_MAP_START(suna16_state::uballoon_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x800000, 0x803fff) AM_RAM // RAM
- AM_RANGE(0x200000, 0x2001ff) AM_READWRITE(paletteram_r, paletteram_w) // Banked Palette
- AM_RANGE(0x200200, 0x200fff) AM_RAM //
- AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x1e0000) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2")
- AM_RANGE(0x600004, 0x600005) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) // Flip Screen
- AM_RANGE(0x600006, 0x600007) AM_READ_PORT("DSW2")
- AM_RANGE(0x600008, 0x600009) AM_WRITE(uballoon_leds_w) // Leds
- AM_RANGE(0x60000c, 0x60000d) AM_WRITENOP // ? IRQ 1 Ack
- AM_RANGE(0x600010, 0x600011) AM_WRITENOP // ? IRQ 1 Ack
- AM_RANGE(0xa00000, 0xa0ffff) AM_READWRITE8(uballoon_prot_r, uballoon_prot_w, 0x00ff) // Protection
-ADDRESS_MAP_END
+void suna16_state::uballoon_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x800000, 0x803fff).ram(); // RAM
+ map(0x200000, 0x2001ff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); // Banked Palette
+ map(0x200200, 0x200fff).ram(); //
+ map(0x400000, 0x41ffff).mirror(0x1e0000).ram().share("spriteram"); // Sprites
+ map(0x600000, 0x600001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU
+ map(0x600002, 0x600003).portr("P2");
+ map(0x600004, 0x600005).portr("DSW1").w(this, FUNC(suna16_state::flipscreen_w)); // Flip Screen
+ map(0x600006, 0x600007).portr("DSW2");
+ map(0x600008, 0x600009).w(this, FUNC(suna16_state::uballoon_leds_w)); // Leds
+ map(0x60000c, 0x60000d).nopw(); // ? IRQ 1 Ack
+ map(0x600010, 0x600011).nopw(); // ? IRQ 1 Ack
+ map(0xa00000, 0xa0ffff).rw(this, FUNC(suna16_state::uballoon_prot_r), FUNC(suna16_state::uballoon_prot_w)).umask16(0x00ff); // Protection
+}
/***************************************************************************
Suna Quiz 6000 Academy
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::sunaq_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") AM_WRITE(flipscreen_w) // Flip Screen
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW1")
- AM_RANGE(0x500006, 0x500007) AM_READ_PORT("DSW2") // (unused?)
- AM_RANGE(0x540000, 0x5401ff) AM_READWRITE(paletteram_r, paletteram_w)
- AM_RANGE(0x540200, 0x540fff) AM_RAM // RAM
- AM_RANGE(0x580000, 0x583fff) AM_RAM // RAM
- AM_RANGE(0x5c0000, 0x5dffff) AM_RAM AM_SHARE("spriteram") // Sprites
-ADDRESS_MAP_END
+void suna16_state::sunaq_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x500000, 0x500001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU
+ map(0x500002, 0x500003).portr("P2").w(this, FUNC(suna16_state::flipscreen_w)); // Flip Screen
+ map(0x500004, 0x500005).portr("DSW1");
+ map(0x500006, 0x500007).portr("DSW2"); // (unused?)
+ map(0x540000, 0x5401ff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w));
+ map(0x540200, 0x540fff).ram(); // RAM
+ map(0x580000, 0x583fff).ram(); // RAM
+ map(0x5c0000, 0x5dffff).ram().share("spriteram"); // Sprites
+}
/***************************************************************************
@@ -205,20 +208,21 @@ WRITE8_MEMBER(suna16_state::bestbest_prot_w)
}
}
-ADDRESS_MAP_START(suna16_state::bestbest_map)
- AM_RANGE( 0x000000, 0x03ffff ) AM_ROM AM_MIRROR(0xc0000) // ROM
- AM_RANGE( 0x200000, 0x2fffff ) AM_ROM AM_REGION("user1", 0) // ROM
- AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU
- AM_RANGE( 0x500002, 0x500003 ) AM_READ_PORT("P2") AM_WRITE(bestbest_flipscreen_w) // P2 + Coins, Flip Screen
- AM_RANGE( 0x500004, 0x500005 ) AM_READ_PORT("DSW") AM_WRITE(bestbest_coin_w) // Coin Counter
- AM_RANGE( 0x500008, 0x500009 ) AM_WRITE8(bestbest_prot_w, 0x00ff) // Protection
- AM_RANGE( 0x500018, 0x500019 ) AM_READ8(bestbest_prot_r, 0x00ff) // "
- AM_RANGE( 0x540000, 0x540fff ) AM_READWRITE(paletteram_r, paletteram_w ) // Banked(?) Palette
- AM_RANGE( 0x541000, 0x54ffff ) AM_RAM //
- AM_RANGE( 0x580000, 0x58ffff ) AM_RAM // RAM
- AM_RANGE( 0x5c0000, 0x5dffff ) AM_RAM AM_SHARE("spriteram") // Sprites (Chip 1)
- AM_RANGE( 0x5e0000, 0x5fffff ) AM_RAM AM_SHARE("spriteram2") // Sprites (Chip 2)
-ADDRESS_MAP_END
+void suna16_state::bestbest_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().mirror(0xc0000); // ROM
+ map(0x200000, 0x2fffff).rom().region("user1", 0); // ROM
+ map(0x500000, 0x500001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU
+ map(0x500002, 0x500003).portr("P2").w(this, FUNC(suna16_state::bestbest_flipscreen_w)); // P2 + Coins, Flip Screen
+ map(0x500004, 0x500005).portr("DSW").w(this, FUNC(suna16_state::bestbest_coin_w)); // Coin Counter
+ map(0x500009, 0x500009).w(this, FUNC(suna16_state::bestbest_prot_w)); // Protection
+ map(0x500019, 0x500019).r(this, FUNC(suna16_state::bestbest_prot_r)); // "
+ map(0x540000, 0x540fff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); // Banked(?) Palette
+ map(0x541000, 0x54ffff).ram(); //
+ map(0x580000, 0x58ffff).ram(); // RAM
+ map(0x5c0000, 0x5dffff).ram().share("spriteram"); // Sprites (Chip 1)
+ map(0x5e0000, 0x5fffff).ram().share("spriteram2"); // Sprites (Chip 2)
+}
MACHINE_START_MEMBER(suna16_state,bestbest)
{
@@ -241,49 +245,53 @@ MACHINE_START_MEMBER(suna16_state,bestbest)
Back Street Soccer
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::bssoccer_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
- AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
- AM_RANGE(0xfd00, 0xfd00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80 #1
- AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) // To PCM Z80 #2
-ADDRESS_MAP_END
+void suna16_state::bssoccer_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0xf000, 0xf7ff).ram(); // RAM
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0xfc00, 0xfc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+ map(0xfd00, 0xfd00).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80 #1
+ map(0xfe00, 0xfe00).w("soundlatch3", FUNC(generic_latch_8_device::write)); // To PCM Z80 #2
+}
/***************************************************************************
Ultra Balloon
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::uballoon_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM // ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
- AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80
-ADDRESS_MAP_END
+void suna16_state::uballoon_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom(); // ROM
+ map(0xf000, 0xf7ff).ram(); // RAM
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0xfc00, 0xfc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80
+}
/***************************************************************************
Suna Quiz 6000 Academy
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::sunaq_sound_map)
- AM_RANGE(0x0000, 0xe82f) AM_ROM // ROM
- AM_RANGE(0xe830, 0xf7ff) AM_RAM // RAM (writes to efxx, could be a program bug tho)
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
- AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80
-ADDRESS_MAP_END
+void suna16_state::sunaq_sound_map(address_map &map)
+{
+ map(0x0000, 0xe82f).rom(); // ROM
+ map(0xe830, 0xf7ff).ram(); // RAM (writes to efxx, could be a program bug tho)
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151
+ map(0xfc00, 0xfc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80
+}
/***************************************************************************
Best Of Best
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::bestbest_sound_map)
- AM_RANGE( 0x0000, 0xbfff ) AM_ROM // ROM
- AM_RANGE( 0xc000, 0xc001 ) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE( 0xc002, 0xc003 ) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) // AY8910
- AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // RAM
- AM_RANGE( 0xf000, 0xf000 ) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80
- AM_RANGE( 0xf800, 0xf800 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void suna16_state::bestbest_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom(); // ROM
+ map(0xc000, 0xc001).w("ymsnd", FUNC(ym3526_device::write));
+ map(0xc002, 0xc003).w("aysnd", FUNC(ay8910_device::address_data_w)); // AY8910
+ map(0xe000, 0xe7ff).ram(); // RAM
+ map(0xf000, 0xf000).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+}
/***************************************************************************
@@ -325,33 +333,37 @@ WRITE8_MEMBER(suna16_state::bssoccer_pcm_2_bankswitch_w)
/* Memory maps: Yes, *no* RAM */
-ADDRESS_MAP_START(suna16_state::bssoccer_pcm_1_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM // ROM
- AM_RANGE(0x1000, 0xffff) AM_ROMBANK("bank1") // Banked ROM
-ADDRESS_MAP_END
+void suna16_state::bssoccer_pcm_1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); // ROM
+ map(0x1000, 0xffff).bankr("bank1"); // Banked ROM
+}
-ADDRESS_MAP_START(suna16_state::bssoccer_pcm_2_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM // ROM
- AM_RANGE(0x1000, 0xffff) AM_ROMBANK("bank2") // Banked ROM
-ADDRESS_MAP_END
+void suna16_state::bssoccer_pcm_2_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom(); // ROM
+ map(0x1000, 0xffff).bankr("bank2"); // Banked ROM
+}
-ADDRESS_MAP_START(suna16_state::bssoccer_pcm_1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_WRITE(bssoccer_pcm_1_bankswitch_w) // Rom Bank
-ADDRESS_MAP_END
+void suna16_state::bssoccer_pcm_1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From The Sound Z80
+ map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write));
+ map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w(this, FUNC(suna16_state::bssoccer_pcm_1_bankswitch_w)); // Rom Bank
+}
-ADDRESS_MAP_START(suna16_state::bssoccer_pcm_2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) // From The Sound Z80
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac2", dac_byte_interface, write)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac2", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_WRITE(bssoccer_pcm_2_bankswitch_w) // Rom Bank
-ADDRESS_MAP_END
+void suna16_state::bssoccer_pcm_2_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch3", FUNC(generic_latch_8_device::read)); // From The Sound Z80
+ map(0x00, 0x00).w("ldac2", FUNC(dac_byte_interface::write));
+ map(0x01, 0x01).w("rdac2", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w(this, FUNC(suna16_state::bssoccer_pcm_2_bankswitch_w)); // Rom Bank
+}
/***************************************************************************
@@ -369,18 +381,20 @@ WRITE8_MEMBER(suna16_state::uballoon_pcm_1_bankswitch_w)
/* Memory maps: Yes, *no* RAM */
-ADDRESS_MAP_START(suna16_state::uballoon_pcm_1_map)
- AM_RANGE(0x0000, 0x03ff) AM_ROM // ROM
- AM_RANGE(0x0400, 0xffff) AM_ROMBANK("bank1") // Banked ROM
-ADDRESS_MAP_END
+void suna16_state::uballoon_pcm_1_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rom(); // ROM
+ map(0x0400, 0xffff).bankr("bank1"); // Banked ROM
+}
-ADDRESS_MAP_START(suna16_state::uballoon_pcm_1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_WRITE(uballoon_pcm_1_bankswitch_w) // Rom Bank
-ADDRESS_MAP_END
+void suna16_state::uballoon_pcm_1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From The Sound Z80
+ map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write));
+ map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w(this, FUNC(suna16_state::uballoon_pcm_1_bankswitch_w)); // Rom Bank
+}
MACHINE_START_MEMBER(suna16_state,uballoon)
{
@@ -400,18 +414,20 @@ MACHINE_RESET_MEMBER(suna16_state,uballoon)
Best Of Best
***************************************************************************/
-ADDRESS_MAP_START(suna16_state::bestbest_pcm_1_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suna16_state::bestbest_pcm_1_iomap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("ldac2", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("rdac2", dac_byte_interface, write)
-ADDRESS_MAP_END
+void suna16_state::bestbest_pcm_1_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
+
+void suna16_state::bestbest_pcm_1_iomap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From The Sound Z80
+ map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write));
+ map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write));
+ map(0x02, 0x02).w("ldac2", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w("rdac2", FUNC(dac_byte_interface::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp
index 153bbb7d4b2..cc3792ec72a 100644
--- a/src/mame/drivers/suna8.cpp
+++ b/src/mame/drivers/suna8.cpp
@@ -558,26 +558,28 @@ WRITE8_MEMBER(suna8_state::hardhead_flipscreen_w)
machine().bookkeeping().coin_lockout_w(1, data & 0x10);
}
-ADDRESS_MAP_START(suna8_state::hardhead_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
- AM_RANGE(0xc000, 0xd7ff) AM_RAM // RAM
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette
- AM_RANGE(0xda00, 0xda00) AM_RAM_READ(hardhead_ip_r) AM_SHARE("hardhead_ip") // Input Port Select
- AM_RANGE(0xda80, 0xda80) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(hardhead_bankswitch_w ) // ROM Banking
- AM_RANGE(0xdb00, 0xdb00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE(0xdb80, 0xdb80) AM_WRITE(hardhead_flipscreen_w ) // Flip Screen + Coin Lockout
- AM_RANGE(0xdc00, 0xdc00) AM_NOP // <- R (after bank select)
- AM_RANGE(0xdc80, 0xdc80) AM_NOP // <- R (after bank select)
- AM_RANGE(0xdd00, 0xdd00) AM_NOP // <- R (after ip select)
- AM_RANGE(0xdd80, 0xddff) AM_READWRITE(hardhead_protection_r, hardhead_protection_w ) // Protection
- AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(suna8_spriteram_w) AM_SHARE("spriteram") // Sprites
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suna8_state::hardhead_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READNOP // ? IRQ Ack
-ADDRESS_MAP_END
+void suna8_state::hardhead_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+ map(0xc000, 0xd7ff).ram(); // RAM
+ map(0xd800, 0xd9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette
+ map(0xda00, 0xda00).ram().r(this, FUNC(suna8_state::hardhead_ip_r)).share("hardhead_ip"); // Input Port Select
+ map(0xda80, 0xda80).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(this, FUNC(suna8_state::hardhead_bankswitch_w)); // ROM Banking
+ map(0xdb00, 0xdb00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0xdb80, 0xdb80).w(this, FUNC(suna8_state::hardhead_flipscreen_w)); // Flip Screen + Coin Lockout
+ map(0xdc00, 0xdc00).noprw(); // <- R (after bank select)
+ map(0xdc80, 0xdc80).noprw(); // <- R (after bank select)
+ map(0xdd00, 0xdd00).noprw(); // <- R (after ip select)
+ map(0xdd80, 0xddff).rw(this, FUNC(suna8_state::hardhead_protection_r), FUNC(suna8_state::hardhead_protection_w)); // Protection
+ map(0xe000, 0xffff).ram().w(this, FUNC(suna8_state::suna8_spriteram_w)).share("spriteram"); // Sprites
+}
+
+void suna8_state::hardhead_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopr(); // ? IRQ Ack
+}
/***************************************************************************
Rough Ranger
@@ -625,28 +627,30 @@ WRITE8_MEMBER(suna8_state::sranger_prot_w)
m_maincpu->space(AS_PROGRAM).write_byte(0xcd99,0xff);
}
-ADDRESS_MAP_START(suna8_state::rranger_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE(0xc002, 0xc002) AM_WRITE(rranger_bankswitch_w ) // ROM Banking
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1") // P1 (Inputs)
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2") // P2
- AM_RANGE(0xc004, 0xc004) AM_READ(rranger_soundstatus_r ) // Latch Status?
- AM_RANGE(0xc200, 0xc200) AM_READNOP AM_WRITE(sranger_prot_w)// Protection?
- AM_RANGE(0xc280, 0xc280) AM_WRITENOP // ? NMI Ack
- AM_RANGE(0xc280, 0xc280) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0xc2c0, 0xc2c0) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette
- AM_RANGE(0xc800, 0xdfff) AM_RAM // Work RAM
- AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(suna8_spriteram_w) AM_SHARE("spriteram") // Sprites
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(suna8_state::rranger_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READNOP // ? IRQ Ack
-ADDRESS_MAP_END
+void suna8_state::rranger_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+ map(0xc000, 0xc000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0xc002, 0xc002).w(this, FUNC(suna8_state::rranger_bankswitch_w)); // ROM Banking
+ map(0xc002, 0xc002).portr("P1"); // P1 (Inputs)
+ map(0xc003, 0xc003).portr("P2"); // P2
+ map(0xc004, 0xc004).r(this, FUNC(suna8_state::rranger_soundstatus_r)); // Latch Status?
+ map(0xc200, 0xc200).nopr().w(this, FUNC(suna8_state::sranger_prot_w));// Protection?
+ map(0xc280, 0xc280).nopw(); // ? NMI Ack
+ map(0xc280, 0xc280).portr("DSW1"); // DSW 1
+ map(0xc2c0, 0xc2c0).portr("DSW2"); // DSW 2
+ map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette
+ map(0xc800, 0xdfff).ram(); // Work RAM
+ map(0xe000, 0xffff).ram().w(this, FUNC(suna8_state::suna8_spriteram_w)).share("spriteram"); // Sprites
+}
+
+
+void suna8_state::rranger_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopr(); // ? IRQ Ack
+}
/***************************************************************************
Brick Zone
@@ -732,30 +736,31 @@ WRITE8_MEMBER(suna8_state::brickzn_palbank_w)
if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown palettebank bits: %02X\n",m_maincpu->pc(),data);
}
-ADDRESS_MAP_START(suna8_state::brickzn11_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
-
- AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE(0xc040, 0xc040) AM_WRITE(brickzn_sprbank_w ) // Sprite RAM Bank + Flip Screen + Protection
- AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_rombank_w ) // ROM Bank
- AM_RANGE(0xc080, 0xc080) AM_WRITE(brickzn_leds_w ) // Leds
- AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE(brickzn_palbank_w ) // Palette RAM Bank
+void suna8_state::brickzn11_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+
+ map(0xc000, 0xc000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0xc040, 0xc040).w(this, FUNC(suna8_state::brickzn_sprbank_w)); // Sprite RAM Bank + Flip Screen + Protection
+ map(0xc060, 0xc060).w(this, FUNC(suna8_state::brickzn_rombank_w)); // ROM Bank
+ map(0xc080, 0xc080).w(this, FUNC(suna8_state::brickzn_leds_w)); // Leds
+ map(0xc0a0, 0xc0a0).w(this, FUNC(suna8_state::brickzn_palbank_w)); // Palette RAM Bank
// AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_prot2_w ) // Protection 2
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("P1") // P1 (Buttons)
- AM_RANGE(0xc101, 0xc101) AM_READ_PORT("P2") // P2 (Buttons)
- AM_RANGE(0xc102, 0xc102) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0xc103, 0xc103) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc108, 0xc108) AM_READ_PORT("SPIN1") // P1 (Spinner)
- AM_RANGE(0xc10c, 0xc10c) AM_READ_PORT("SPIN2") // P2 (Spinner)
+ map(0xc100, 0xc100).portr("P1"); // P1 (Buttons)
+ map(0xc101, 0xc101).portr("P2"); // P2 (Buttons)
+ map(0xc102, 0xc102).portr("DSW1"); // DSW 1
+ map(0xc103, 0xc103).portr("DSW2"); // DSW 2
+ map(0xc108, 0xc108).portr("SPIN1"); // P1 (Spinner)
+ map(0xc10c, 0xc10c).portr("SPIN2"); // P2 (Spinner)
- AM_RANGE(0xc140, 0xc140) AM_READ(brickzn_cheats_r) // Cheats / Debugging Inputs
+ map(0xc140, 0xc140).r(this, FUNC(suna8_state::brickzn_cheats_r)); // Cheats / Debugging Inputs
- AM_RANGE(0xc600, 0xc7ff) AM_READWRITE(banked_paletteram_r, brickzn_banked_paletteram_w) AM_SHARE("paletteram") // Palette (Banked)
- AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("wram") // Work RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
-ADDRESS_MAP_END
+ map(0xc600, 0xc7ff).rw(this, FUNC(suna8_state::banked_paletteram_r), FUNC(suna8_state::brickzn_banked_paletteram_w)).share("paletteram"); // Palette (Banked)
+ map(0xc800, 0xdfff).ram().share("wram"); // Work RAM
+ map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked)
+}
/*
(newer sets only)
@@ -860,44 +865,47 @@ WRITE8_MEMBER(suna8_state::brickzn_disab_palram_w)
m_paletteram_enab = 0;
}
-ADDRESS_MAP_START(suna8_state::brickzn_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
+void suna8_state::brickzn_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
// c000 writes before reading buttons
// c010 writes?
- AM_RANGE(0xc040, 0xc040) AM_WRITE(brickzn_rombank_w ) // ROM Bank
- AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_sprbank_w ) // Sprite RAM Bank + Flip Screen + Protection
+ map(0xc040, 0xc040).w(this, FUNC(suna8_state::brickzn_rombank_w)); // ROM Bank
+ map(0xc060, 0xc060).w(this, FUNC(suna8_state::brickzn_sprbank_w)); // Sprite RAM Bank + Flip Screen + Protection
// c080 writes?
// c090 writes?
- AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE(brickzn_multi_w ) // Palette RAM Bank / Sound Latch / ...
- AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_prot2_w ) // Protection 2
+ map(0xc0a0, 0xc0a0).w(this, FUNC(suna8_state::brickzn_multi_w)); // Palette RAM Bank / Sound Latch / ...
+ map(0xc0c0, 0xc0c0).w(this, FUNC(suna8_state::brickzn_prot2_w)); // Protection 2
- AM_RANGE(0xc100, 0xc100) AM_READ_PORT("P1") // P1 (Buttons)
- AM_RANGE(0xc101, 0xc101) AM_READ_PORT("P2") // P2 (Buttons)
- AM_RANGE(0xc102, 0xc102) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0xc103, 0xc103) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc108, 0xc108) AM_READ_PORT("SPIN1") // P1 (Spinner)
- AM_RANGE(0xc10c, 0xc10c) AM_READ_PORT("SPIN2") // P2 (Spinner)
+ map(0xc100, 0xc100).portr("P1"); // P1 (Buttons)
+ map(0xc101, 0xc101).portr("P2"); // P2 (Buttons)
+ map(0xc102, 0xc102).portr("DSW1"); // DSW 1
+ map(0xc103, 0xc103).portr("DSW2"); // DSW 2
+ map(0xc108, 0xc108).portr("SPIN1"); // P1 (Spinner)
+ map(0xc10c, 0xc10c).portr("SPIN2"); // P2 (Spinner)
- AM_RANGE(0xc140, 0xc140) AM_READ(brickzn_cheats_r) // Cheats / Debugging Inputs
+ map(0xc140, 0xc140).r(this, FUNC(suna8_state::brickzn_cheats_r)); // Cheats / Debugging Inputs
// c144 reads?
// c14a reads?
- AM_RANGE(0xc600, 0xc7ff) AM_READWRITE(banked_paletteram_r, brickzn_banked_paletteram_w) AM_SHARE("paletteram") // Palette (Banked)
- AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("wram") // Work RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
-ADDRESS_MAP_END
+ map(0xc600, 0xc7ff).rw(this, FUNC(suna8_state::banked_paletteram_r), FUNC(suna8_state::brickzn_banked_paletteram_w)).share("paletteram"); // Palette (Banked)
+ map(0xc800, 0xdfff).ram().share("wram"); // Work RAM
+ map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked)
+}
-ADDRESS_MAP_START(suna8_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
-ADDRESS_MAP_END
+void suna8_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+}
-ADDRESS_MAP_START(suna8_state::brickzn_io_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(brickzn_disab_palram_w ) // Disable Palette RAM
- AM_RANGE(0x00a1, 0x00a1) AM_WRITE(brickzn_enab_palram_w ) // Enable Palette RAM
-ADDRESS_MAP_END
+void suna8_state::brickzn_io_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(suna8_state::brickzn_disab_palram_w)); // Disable Palette RAM
+ map(0x00a1, 0x00a1).w(this, FUNC(suna8_state::brickzn_enab_palram_w)); // Enable Palette RAM
+}
/***************************************************************************
Hard Head 2
@@ -974,45 +982,46 @@ WRITE8_MEMBER(suna8_state::hardhea2_rambank_1_w)
}
-ADDRESS_MAP_START(suna8_state::hardhea2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") // P1 (Inputs)
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("BUTTONS") // vblank?
- AM_RANGE(0xc200, 0xc200) AM_WRITE(hardhea2_spritebank_w ) // Sprite RAM Bank
- AM_RANGE(0xc280, 0xc280) AM_WRITE(hardhea2_rombank_w ) // ROM Bank (?mirrored up to c2ff?)
+void suna8_state::hardhea2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+ map(0xc000, 0xc000).portr("P1"); // P1 (Inputs)
+ map(0xc001, 0xc001).portr("P2"); // P2
+ map(0xc002, 0xc002).portr("DSW1"); // DSW 1
+ map(0xc003, 0xc003).portr("DSW2"); // DSW 2
+ map(0xc080, 0xc080).portr("BUTTONS"); // vblank?
+ map(0xc200, 0xc200).w(this, FUNC(suna8_state::hardhea2_spritebank_w)); // Sprite RAM Bank
+ map(0xc280, 0xc280).w(this, FUNC(suna8_state::hardhea2_rombank_w)); // ROM Bank (?mirrored up to c2ff?)
// *** Protection
- AM_RANGE(0xc28c, 0xc28c) AM_WRITE(hardhea2_rombank_w )
+ map(0xc28c, 0xc28c).w(this, FUNC(suna8_state::hardhea2_rombank_w));
// Protection ***
- AM_RANGE(0xc300, 0xc300) AM_WRITE(hardhea2_flipscreen_w ) // Flip Screen
- AM_RANGE(0xc380, 0xc380) AM_WRITE(hardhea2_nmi_w ) // ? NMI related ?
- AM_RANGE(0xc400, 0xc400) AM_WRITE(hardhea2_leds_w ) // Leds + Coin Counter
- AM_RANGE(0xc480, 0xc480) AM_WRITENOP // ~ROM Bank
- AM_RANGE(0xc500, 0xc500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
+ map(0xc300, 0xc300).w(this, FUNC(suna8_state::hardhea2_flipscreen_w)); // Flip Screen
+ map(0xc380, 0xc380).w(this, FUNC(suna8_state::hardhea2_nmi_w)); // ? NMI related ?
+ map(0xc400, 0xc400).w(this, FUNC(suna8_state::hardhea2_leds_w)); // Leds + Coin Counter
+ map(0xc480, 0xc480).nopw(); // ~ROM Bank
+ map(0xc500, 0xc500).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
// *** Protection
- AM_RANGE(0xc50f, 0xc50f) AM_WRITE(hardhea2_spritebank_1_w )
- AM_RANGE(0xc508, 0xc508) AM_WRITE(hardhea2_spritebank_0_w )
+ map(0xc50f, 0xc50f).w(this, FUNC(suna8_state::hardhea2_spritebank_1_w));
+ map(0xc508, 0xc508).w(this, FUNC(suna8_state::hardhea2_spritebank_0_w));
- AM_RANGE(0xc507, 0xc507) AM_WRITE(hardhea2_rambank_1_w )
- AM_RANGE(0xc522, 0xc522) AM_WRITE(hardhea2_rambank_0_w )
+ map(0xc507, 0xc507).w(this, FUNC(suna8_state::hardhea2_rambank_1_w));
+ map(0xc522, 0xc522).w(this, FUNC(suna8_state::hardhea2_rambank_0_w));
- AM_RANGE(0xc556, 0xc556) AM_WRITE(hardhea2_rambank_1_w )
- AM_RANGE(0xc528, 0xc528) AM_WRITE(hardhea2_rambank_0_w )
+ map(0xc556, 0xc556).w(this, FUNC(suna8_state::hardhea2_rambank_1_w));
+ map(0xc528, 0xc528).w(this, FUNC(suna8_state::hardhea2_rambank_0_w));
- AM_RANGE(0xc560, 0xc560) AM_WRITE(hardhea2_rambank_1_w )
- AM_RANGE(0xc533, 0xc533) AM_WRITE(hardhea2_rambank_0_w )
+ map(0xc560, 0xc560).w(this, FUNC(suna8_state::hardhea2_rambank_1_w));
+ map(0xc533, 0xc533).w(this, FUNC(suna8_state::hardhea2_rambank_0_w));
// Protection ***
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette
- AM_RANGE(0xc800, 0xdfff) AM_RAMBANK("bank2") // Work RAM (Banked)
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
-ADDRESS_MAP_END
+ map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette
+ map(0xc800, 0xdfff).bankrw("bank2"); // Work RAM (Banked)
+ map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked)
+}
/***************************************************************************
@@ -1094,29 +1103,30 @@ WRITE8_MEMBER(suna8_state::starfigh_leds_w)
logerror("CPU #0 - PC %04X: rom bank = %02X\n",m_maincpu->pc(), m_rombank);
}
-ADDRESS_MAP_START(suna8_state::starfigh_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
-
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") // P1 (Inputs)
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc080, 0xc080) AM_READ(starfigh_cheats_r ) // Cheats?
-
- AM_RANGE(0xc200, 0xc200) AM_WRITE(starfigh_spritebank_w ) // Sprite RAM Bank
- AM_RANGE(0xc280, 0xc2ff) AM_WRITE(starfigh_rombank_latch_w ) // ROM Bank Latch (?mirrored up to c2ff?)
- AM_RANGE(0xc300, 0xc300) AM_WRITE(hardhea2_flipscreen_w ) // Flip Screen
- AM_RANGE(0xc380, 0xc3ff) AM_WRITE(starfigh_spritebank_latch_w ) // Sprite RAM Bank Latch
- AM_RANGE(0xc400, 0xc47f) AM_WRITE(starfigh_leds_w ) // Leds + Coin Counter + ROM Bank
+void suna8_state::starfigh_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+
+ map(0xc000, 0xc000).portr("P1"); // P1 (Inputs)
+ map(0xc001, 0xc001).portr("P2"); // P2
+ map(0xc002, 0xc002).portr("DSW1"); // DSW 1
+ map(0xc003, 0xc003).portr("DSW2"); // DSW 2
+ map(0xc080, 0xc080).r(this, FUNC(suna8_state::starfigh_cheats_r)); // Cheats?
+
+ map(0xc200, 0xc200).w(this, FUNC(suna8_state::starfigh_spritebank_w)); // Sprite RAM Bank
+ map(0xc280, 0xc2ff).w(this, FUNC(suna8_state::starfigh_rombank_latch_w)); // ROM Bank Latch (?mirrored up to c2ff?)
+ map(0xc300, 0xc300).w(this, FUNC(suna8_state::hardhea2_flipscreen_w)); // Flip Screen
+ map(0xc380, 0xc3ff).w(this, FUNC(suna8_state::starfigh_spritebank_latch_w)); // Sprite RAM Bank Latch
+ map(0xc400, 0xc47f).w(this, FUNC(suna8_state::starfigh_leds_w)); // Leds + Coin Counter + ROM Bank
// c480 write?
- AM_RANGE(0xc500, 0xc500) AM_WRITE(starfigh_sound_latch_w ) // To Sound CPU (can be disabled)
+ map(0xc500, 0xc500).w(this, FUNC(suna8_state::starfigh_sound_latch_w)); // To Sound CPU (can be disabled)
// (c522 + R & 0x1f) write?
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette
- AM_RANGE(0xc800, 0xdfff) AM_RAM // Work RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
-ADDRESS_MAP_END
+ map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette
+ map(0xc800, 0xdfff).ram(); // Work RAM
+ map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked)
+}
/***************************************************************************
@@ -1222,29 +1232,30 @@ READ8_MEMBER(suna8_state::sparkman_c0a3_r)
return (m_screen->frame_number() & 1) ? 0x80 : 0;
}
-ADDRESS_MAP_START(suna8_state::sparkman_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
-
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") // P1 (Inputs)
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc080, 0xc080) AM_READ_PORT("BUTTONS") // Buttons
- AM_RANGE(0xc0a3, 0xc0a3) AM_READ(sparkman_c0a3_r ) // ???
-
- AM_RANGE(0xc200, 0xc27f) AM_WRITE(sparkman_spritebank_w ) // Sprite RAM Bank
- AM_RANGE(0xc280, 0xc2ff) AM_WRITE(sparkman_rombank_latch_w ) // ROM Bank Latch
- AM_RANGE(0xc300, 0xc37f) AM_WRITE(sparkman_spritebank_latch_w ) // Sprite RAM Bank Latch (Invert) + Flip Screen
- AM_RANGE(0xc380, 0xc3ff) AM_WRITE(sparkman_write_disable_w ) // Work RAM Writes Disable + NMI Enable
- AM_RANGE(0xc400, 0xc47f) AM_WRITE(sparkman_rombank_w ) // ROM Bank + Leds
- AM_RANGE(0xc480, 0xc480) AM_WRITE(sparkman_coin_counter_w ) // Coin Counter
- AM_RANGE(0xc500, 0xc57f) AM_WRITE(starfigh_sound_latch_w ) // To Sound CPU (can be disabled)
-
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette
- AM_RANGE(0xc800, 0xdfff) AM_RAM_WRITE(suna8_wram_w) AM_SHARE("wram") // RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
-ADDRESS_MAP_END
+void suna8_state::sparkman_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM
+
+ map(0xc000, 0xc000).portr("P1"); // P1 (Inputs)
+ map(0xc001, 0xc001).portr("P2"); // P2
+ map(0xc002, 0xc002).portr("DSW1"); // DSW 1
+ map(0xc003, 0xc003).portr("DSW2"); // DSW 2
+ map(0xc080, 0xc080).portr("BUTTONS"); // Buttons
+ map(0xc0a3, 0xc0a3).r(this, FUNC(suna8_state::sparkman_c0a3_r)); // ???
+
+ map(0xc200, 0xc27f).w(this, FUNC(suna8_state::sparkman_spritebank_w)); // Sprite RAM Bank
+ map(0xc280, 0xc2ff).w(this, FUNC(suna8_state::sparkman_rombank_latch_w)); // ROM Bank Latch
+ map(0xc300, 0xc37f).w(this, FUNC(suna8_state::sparkman_spritebank_latch_w)); // Sprite RAM Bank Latch (Invert) + Flip Screen
+ map(0xc380, 0xc3ff).w(this, FUNC(suna8_state::sparkman_write_disable_w)); // Work RAM Writes Disable + NMI Enable
+ map(0xc400, 0xc47f).w(this, FUNC(suna8_state::sparkman_rombank_w)); // ROM Bank + Leds
+ map(0xc480, 0xc480).w(this, FUNC(suna8_state::sparkman_coin_counter_w)); // Coin Counter
+ map(0xc500, 0xc57f).w(this, FUNC(suna8_state::starfigh_sound_latch_w)); // To Sound CPU (can be disabled)
+
+ map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette
+ map(0xc800, 0xdfff).ram().w(this, FUNC(suna8_state::suna8_wram_w)).share("wram"); // RAM
+ map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked)
+}
/***************************************************************************
@@ -1259,66 +1270,72 @@ ADDRESS_MAP_END
Hard Head
***************************************************************************/
-ADDRESS_MAP_START(suna8_state::hardhead_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("ymsnd", ym3812_device, status_port_r) // ? unsure
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) //
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void suna8_state::hardhead_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xa002, 0xa003).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xc000, 0xc7ff).ram(); // RAM
+ map(0xc800, 0xc800).r("ymsnd", FUNC(ym3812_device::status_port_r)); // ? unsure
+ map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); //
+ map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+}
-ADDRESS_MAP_START(suna8_state::hardhead_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_READNOP // ? IRQ Ack
-ADDRESS_MAP_END
+void suna8_state::hardhead_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x01, 0x01).nopr(); // ? IRQ Ack
+}
/***************************************************************************
Rough Ranger
***************************************************************************/
-ADDRESS_MAP_START(suna8_state::rranger_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym1", ym2203_device, write) // Samples + Music
- AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ym2", ym2203_device, write) // Music + FX
- AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void suna8_state::rranger_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // ROM
+ map(0xa000, 0xa001).w("ym1", FUNC(ym2203_device::write)); // Samples + Music
+ map(0xa002, 0xa003).w("ym2", FUNC(ym2203_device::write)); // Music + FX
+ map(0xc000, 0xc7ff).ram(); // RAM
+ map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+}
/***************************************************************************
Brick Zone
***************************************************************************/
-ADDRESS_MAP_START(suna8_state::brickzn_sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM // ROM
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM // RAM
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM CPU
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void suna8_state::brickzn_sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom(); // ROM
+ map(0xc000, 0xc001).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xc002, 0xc003).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xe000, 0xe7ff).ram(); // RAM
+ map(0xf000, 0xf000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); // To PCM CPU
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+}
/* PCM Z80, 4 DACs (4 bits per sample), NO RAM !! */
-ADDRESS_MAP_START(suna8_state::brickzn_pcm_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM // ROM
-ADDRESS_MAP_END
+void suna8_state::brickzn_pcm_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom(); // ROM
+}
-ADDRESS_MAP_START(suna8_state::brickzn_pcm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From Sound CPU
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("ldac2", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("rdac2", dac_byte_interface, write)
-ADDRESS_MAP_END
+void suna8_state::brickzn_pcm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); // From Sound CPU
+ map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write));
+ map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write));
+ map(0x02, 0x02).w("ldac2", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w("rdac2", FUNC(dac_byte_interface::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/supbtime.cpp b/src/mame/drivers/supbtime.cpp
index dc2e688aaae..f80b715df58 100644
--- a/src/mame/drivers/supbtime.cpp
+++ b/src/mame/drivers/supbtime.cpp
@@ -116,78 +116,82 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(supbtime_state::supbtime_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x11ffff) AM_WRITENOP // Nothing there
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x120800, 0x13ffff) AM_WRITENOP // Nothing there
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW")
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x18000a, 0x18000b) AM_READ(vblank_ack_r)
- AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP // ?
- AM_RANGE(0x1a0000, 0x1a0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_r, pf_control_w)
- AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("pf1_rowscroll")
- AM_RANGE(0x342000, 0x3427ff) AM_RAM AM_SHARE("pf2_rowscroll")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supbtime_state::chinatwn_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW")
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x18000a, 0x18000b) AM_READ(vblank_ack_r)
- AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP // ?
- AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_r, pf_control_w)
- AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("pf1_rowscroll") // unused
- AM_RANGE(0x342000, 0x3427ff) AM_RAM AM_SHARE("pf2_rowscroll") // unused
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supbtime_state::tumblep_map)
+void supbtime_state::supbtime_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x11ffff).nopw(); // Nothing there
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x120800, 0x13ffff).nopw(); // Nothing there
+ map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x180001).portr("INPUTS");
+ map(0x180002, 0x180003).portr("DSW");
+ map(0x180008, 0x180009).portr("SYSTEM");
+ map(0x18000a, 0x18000b).r(this, FUNC(supbtime_state::vblank_ack_r));
+ map(0x18000a, 0x18000d).nopw(); // ?
+ map(0x1a0001, 0x1a0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x300000, 0x30000f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_r), FUNC(deco16ic_device::pf_control_w));
+ map(0x320000, 0x321fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x322000, 0x323fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x340000, 0x3407ff).ram().share("pf1_rowscroll");
+ map(0x342000, 0x3427ff).ram().share("pf2_rowscroll");
+}
+
+void supbtime_state::chinatwn_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x120000, 0x1207ff).ram().share("spriteram");
+ map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x180001).portr("INPUTS");
+ map(0x180002, 0x180003).portr("DSW");
+ map(0x180008, 0x180009).portr("SYSTEM");
+ map(0x18000a, 0x18000b).r(this, FUNC(supbtime_state::vblank_ack_r));
+ map(0x18000a, 0x18000d).nopw(); // ?
+ map(0x1a0000, 0x1a3fff).ram();
+ map(0x300000, 0x30000f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_r), FUNC(deco16ic_device::pf_control_w));
+ map(0x320000, 0x321fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x322000, 0x323fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x340000, 0x3407ff).ram().share("pf1_rowscroll"); // unused
+ map(0x342000, 0x3427ff).ram().share("pf2_rowscroll"); // unused
+}
+
+void supbtime_state::tumblep_map(address_map &map)
+{
#if TUMBLEP_HACK
- AM_RANGE(0x000000, 0x07ffff) AM_WRITEONLY // To write levels modifications
+ map(0x000000, 0x07ffff).writeonly(); // To write levels modifications
#endif
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x120000, 0x123fff) AM_RAM
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW")
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x18000a, 0x18000b) AM_READ(vblank_ack_r)
- AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP // ?
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x320000, 0x320fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x322000, 0x322fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x340000, 0x3407ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll") // unused
- AM_RANGE(0x342000, 0x3427ff) AM_WRITEONLY AM_SHARE("pf2_rowscroll") // unused
-ADDRESS_MAP_END
+ map(0x000000, 0x07ffff).rom();
+ map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x120000, 0x123fff).ram();
+ map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x180001).portr("INPUTS");
+ map(0x180002, 0x180003).portr("DSW");
+ map(0x180008, 0x180009).portr("SYSTEM");
+ map(0x18000a, 0x18000b).r(this, FUNC(supbtime_state::vblank_ack_r));
+ map(0x18000a, 0x18000d).nopw(); // ?
+ map(0x1a0000, 0x1a07ff).ram().share("spriteram");
+ map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x320000, 0x320fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x322000, 0x322fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x340000, 0x3407ff).writeonly().share("pf1_rowscroll"); // unused
+ map(0x342000, 0x3427ff).writeonly().share("pf2_rowscroll"); // unused
+}
// Physical memory map (21 bits)
-ADDRESS_MAP_START(supbtime_state::sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_NOP // YM2203 - this board doesn't have one
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_NOP // This board only has 1 oki chip
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void supbtime_state::sound_map(address_map &map)
+{
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).noprw(); // YM2203 - this board doesn't have one
+ map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).noprw(); // This board only has 1 oki chip
+ map(0x140000, 0x140001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8");
+ map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w));
+}
//**************************************************************************
diff --git a/src/mame/drivers/supdrapo.cpp b/src/mame/drivers/supdrapo.cpp
index 1dafe649ce0..bd2d7458c61 100644
--- a/src/mame/drivers/supdrapo.cpp
+++ b/src/mame/drivers/supdrapo.cpp
@@ -277,27 +277,28 @@ void supdrapo_state::machine_reset()
Memory Map
**********************************************************************/
-ADDRESS_MAP_START(supdrapo_state::sdpoker_mem)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x5000, 0x50ff) AM_RAM AM_SHARE("col_line")
- AM_RANGE(0x57ff, 0x57ff) AM_RAM AM_SHARE("col_line")
- AM_RANGE(0x5800, 0x58ff) AM_RAM AM_SHARE("col_line")
- AM_RANGE(0x6000, 0x67ff) AM_RAM //work ram
- AM_RANGE(0x6800, 0x6bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6c00, 0x6fff) AM_RAM AM_SHARE("char_bank")
- AM_RANGE(0x7000, 0x7bff) AM_RAM //$7600 seems watchdog
- AM_RANGE(0x7c00, 0x7c00) AM_WRITE(debug7c00_w)
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN4") AM_WRITE(wdog8000_w)
- AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN0")
- AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1") AM_WRITE(payout_w)
- AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2") AM_WRITE(coinin_w)
- AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN3") AM_WRITE(debug8004_w)
- AM_RANGE(0x8005, 0x8005) AM_READ_PORT("SW1")
- AM_RANGE(0x8006, 0x8006) AM_READ_PORT("SW2")
- AM_RANGE(0x9000, 0x90ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9400, 0x9400) AM_READ(rng_r)
- AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void supdrapo_state::sdpoker_mem(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x5000, 0x50ff).ram().share("col_line");
+ map(0x57ff, 0x57ff).ram().share("col_line");
+ map(0x5800, 0x58ff).ram().share("col_line");
+ map(0x6000, 0x67ff).ram(); //work ram
+ map(0x6800, 0x6bff).ram().share("videoram");
+ map(0x6c00, 0x6fff).ram().share("char_bank");
+ map(0x7000, 0x7bff).ram(); //$7600 seems watchdog
+ map(0x7c00, 0x7c00).w(this, FUNC(supdrapo_state::debug7c00_w));
+ map(0x8000, 0x8000).portr("IN4").w(this, FUNC(supdrapo_state::wdog8000_w));
+ map(0x8001, 0x8001).portr("IN0");
+ map(0x8002, 0x8002).portr("IN1").w(this, FUNC(supdrapo_state::payout_w));
+ map(0x8003, 0x8003).portr("IN2").w(this, FUNC(supdrapo_state::coinin_w));
+ map(0x8004, 0x8004).portr("IN3").w(this, FUNC(supdrapo_state::debug8004_w));
+ map(0x8005, 0x8005).portr("SW1");
+ map(0x8006, 0x8006).portr("SW2");
+ map(0x9000, 0x90ff).ram().share("nvram");
+ map(0x9400, 0x9400).r(this, FUNC(supdrapo_state::rng_r));
+ map(0x9800, 0x9801).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
/*********************************************************************
diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp
index 03ccc19aa87..e416315a1d3 100644
--- a/src/mame/drivers/supduck.cpp
+++ b/src/mame/drivers/supduck.cpp
@@ -246,36 +246,39 @@ WRITE16_MEMBER(supduck_state::supduck_scroll_w)
-ADDRESS_MAP_START(supduck_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_WRITENOP
- AM_RANGE(0xfe0000, 0xfe1fff) AM_RAM AM_SHARE("spriteram")
-
- AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE( supduck_4000_w )
- AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE( supduck_4002_w )
- AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW")
-
- AM_RANGE(0xfe8000, 0xfe8007) AM_WRITE(supduck_scroll_w)
- AM_RANGE(0xfe800e, 0xfe800f) AM_WRITENOP // watchdog or irqack
-
- AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("textvideoram")
- AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(back_videoram_w) AM_SHARE("backvideoram")
- AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(fore_videoram_w) AM_SHARE("forevideoram")
- AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM /* working RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supduck_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supduck_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void supduck_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().nopw();
+ map(0xfe0000, 0xfe1fff).ram().share("spriteram");
+
+ map(0xfe4000, 0xfe4001).portr("P1_P2").w(this, FUNC(supduck_state::supduck_4000_w));
+ map(0xfe4002, 0xfe4003).portr("SYSTEM").w(this, FUNC(supduck_state::supduck_4002_w));
+ map(0xfe4004, 0xfe4005).portr("DSW");
+
+ map(0xfe8000, 0xfe8007).w(this, FUNC(supduck_state::supduck_scroll_w));
+ map(0xfe800e, 0xfe800f).nopw(); // watchdog or irqack
+
+ map(0xfec000, 0xfecfff).ram().w(this, FUNC(supduck_state::text_videoram_w)).share("textvideoram");
+ map(0xff0000, 0xff3fff).ram().w(this, FUNC(supduck_state::back_videoram_w)).share("backvideoram");
+ map(0xff4000, 0xff7fff).ram().w(this, FUNC(supduck_state::fore_videoram_w)).share("forevideoram");
+ map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffc000, 0xffffff).ram(); /* working RAM */
+}
+
+void supduck_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(supduck_state::okibank_w));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void supduck_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
WRITE8_MEMBER(supduck_state::okibank_w)
{
diff --git a/src/mame/drivers/super6.cpp b/src/mame/drivers/super6.cpp
index d51dd258589..75cbec4648e 100644
--- a/src/mame/drivers/super6.cpp
+++ b/src/mame/drivers/super6.cpp
@@ -277,29 +277,31 @@ WRITE8_MEMBER( super6_state::baud_w )
// ADDRESS_MAP( super6_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(super6_state::super6_mem)
-ADDRESS_MAP_END
+void super6_state::super6_mem(address_map &map)
+{
+}
//-------------------------------------------------
// ADDRESS_MAP( super6_io )
//-------------------------------------------------
-ADDRESS_MAP_START(super6_state::super6_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(WD2793_TAG, wd2793_device, read, write)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write)
- AM_RANGE(0x14, 0x14) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0x15, 0x15) AM_READ_PORT("J7") AM_WRITE(s100_w)
- AM_RANGE(0x16, 0x16) AM_WRITE(bank0_w)
- AM_RANGE(0x17, 0x17) AM_WRITE(bank1_w)
- AM_RANGE(0x18, 0x18) AM_MIRROR(0x03) AM_WRITE(baud_w)
+void super6_state::super6_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x04, 0x07).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x0c, 0x0f).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+ map(0x10, 0x10).mirror(0x03).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x14, 0x14).rw(this, FUNC(super6_state::fdc_r), FUNC(super6_state::fdc_w));
+ map(0x15, 0x15).portr("J7").w(this, FUNC(super6_state::s100_w));
+ map(0x16, 0x16).w(this, FUNC(super6_state::bank0_w));
+ map(0x17, 0x17).w(this, FUNC(super6_state::bank1_w));
+ map(0x18, 0x18).mirror(0x03).w(this, FUNC(super6_state::baud_w));
// AM_RANGE(0x40, 0x40) ?
// AM_RANGE(0xe0, 0xe7) HDC?
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp
index 079fb187547..0d6e58fa42a 100644
--- a/src/mame/drivers/super80.cpp
+++ b/src/mame/drivers/super80.cpp
@@ -246,79 +246,86 @@ ToDo:
This makes the H and E monitor commands show FF */
READ8_MEMBER( super80_state::super80_read_ff ) { return 0xff; }
-ADDRESS_MAP_START(super80_state::super80_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("boot") AM_REGION("maincpu", 0x0000)
- AM_RANGE(0x4000, 0xbfff) AM_RAM AM_REGION("maincpu", 0x4000)
- AM_RANGE(0xc000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_READ(super80_read_ff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(super80_state::super80m_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("boot") AM_REGION("maincpu", 0x0000)
- AM_RANGE(0x4000, 0xbfff) AM_RAM AM_REGION("maincpu", 0x4000)
- AM_RANGE(0xc000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_REGION("maincpu", 0xf000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(super80_state::super80v_map)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("boot")
- AM_RANGE(0x4000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(super80v_low_r, super80v_low_w)
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(super80v_high_r, super80v_high_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(super80_state::super80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0xdc, 0xdc) AM_WRITE(super80_dc_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80_f0_w)
- AM_RANGE(0xe1, 0xe1) AM_MIRROR(0x14) AM_WRITE(super80_f1_w)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r)
- AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(super80_state::super80e_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xbc, 0xbc) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0xbc, 0xbc) AM_WRITE(super80_dc_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80_f0_w)
- AM_RANGE(0xe1, 0xe1) AM_MIRROR(0x14) AM_WRITE(super80_f1_w)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r)
- AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(super80_state::super80r_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x10, 0x10) AM_WRITE(super80v_10_w)
- AM_RANGE(0x11, 0x11) AM_DEVREAD("crtc", mc6845_device, register_r)
- AM_RANGE(0x11, 0x11) AM_WRITE(super80v_11_w)
- AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("fdc", wd2793_device, read, write)
- AM_RANGE(0x3e, 0x3e) AM_READ(port3e_r)
- AM_RANGE(0x3f, 0x3f) AM_WRITE(port3f_w)
- AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0xdc, 0xdc) AM_WRITE(super80_dc_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80r_f0_w)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r)
- AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(super80_state::super80v_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x10, 0x10) AM_WRITE(super80v_10_w)
- AM_RANGE(0x11, 0x11) AM_DEVREAD("crtc", mc6845_device, register_r)
- AM_RANGE(0x11, 0x11) AM_WRITE(super80v_11_w)
- AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read)
- AM_RANGE(0xdc, 0xdc) AM_WRITE(super80_dc_w)
- AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80_f0_w)
- AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r)
- AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
+void super80_state::super80_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("boot").region("maincpu", 0x0000);
+ map(0x4000, 0xbfff).ram().region("maincpu", 0x4000);
+ map(0xc000, 0xefff).rom();
+ map(0xf000, 0xffff).r(this, FUNC(super80_state::super80_read_ff)).nopw();
+}
+
+void super80_state::super80m_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("boot").region("maincpu", 0x0000);
+ map(0x4000, 0xbfff).ram().region("maincpu", 0x4000);
+ map(0xc000, 0xefff).rom();
+ map(0xf000, 0xffff).ram().region("maincpu", 0xf000);
+}
+
+void super80_state::super80v_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("boot");
+ map(0x4000, 0xbfff).ram();
+ map(0xc000, 0xefff).rom();
+ map(0xf000, 0xf7ff).rw(this, FUNC(super80_state::super80v_low_r), FUNC(super80_state::super80v_low_w));
+ map(0xf800, 0xffff).rw(this, FUNC(super80_state::super80v_high_r), FUNC(super80_state::super80v_high_w));
+}
+
+void super80_state::super80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xdc, 0xdc).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0xdc, 0xdc).w(this, FUNC(super80_state::super80_dc_w));
+ map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80_f0_w));
+ map(0xe1, 0xe1).mirror(0x14).w(this, FUNC(super80_state::super80_f1_w));
+ map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r));
+ map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
+
+void super80_state::super80e_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xbc, 0xbc).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0xbc, 0xbc).w(this, FUNC(super80_state::super80_dc_w));
+ map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80_f0_w));
+ map(0xe1, 0xe1).mirror(0x14).w(this, FUNC(super80_state::super80_f1_w));
+ map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r));
+ map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
+
+void super80_state::super80r_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x10, 0x10).w(this, FUNC(super80_state::super80v_10_w));
+ map(0x11, 0x11).r(m_crtc, FUNC(mc6845_device::register_r));
+ map(0x11, 0x11).w(this, FUNC(super80_state::super80v_11_w));
+ map(0x30, 0x30).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x38, 0x3b).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+ map(0x3e, 0x3e).r(this, FUNC(super80_state::port3e_r));
+ map(0x3f, 0x3f).w(this, FUNC(super80_state::port3f_w));
+ map(0xdc, 0xdc).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0xdc, 0xdc).w(this, FUNC(super80_state::super80_dc_w));
+ map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80r_f0_w));
+ map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r));
+ map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
+
+void super80_state::super80v_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x10, 0x10).w(this, FUNC(super80_state::super80v_10_w));
+ map(0x11, 0x11).r(m_crtc, FUNC(mc6845_device::register_r));
+ map(0x11, 0x11).w(this, FUNC(super80_state::super80v_11_w));
+ map(0xdc, 0xdc).r("cent_status_in", FUNC(input_buffer_device::read));
+ map(0xdc, 0xdc).w(this, FUNC(super80_state::super80_dc_w));
+ map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80_f0_w));
+ map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r));
+ map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
/**************************** DIPSWITCHES, KEYBOARD, HARDWARE CONFIGURATION ****************************************/
diff --git a/src/mame/drivers/superchs.cpp b/src/mame/drivers/superchs.cpp
index 4e80d9a643e..cbc6b5939e2 100644
--- a/src/mame/drivers/superchs.cpp
+++ b/src/mame/drivers/superchs.cpp
@@ -130,36 +130,39 @@ WRITE32_MEMBER(superchs_state::superchs_stick_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(superchs_state::superchs_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x180000, 0x18ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w)
- AM_RANGE(0x1b0000, 0x1b002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x240000, 0x240003) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x280000, 0x287fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x2c0000, 0x2c07ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff)
- AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff)
- AM_RANGE(0x340000, 0x340003) AM_READWRITE(superchs_stick_r, superchs_stick_w) /* stick int request */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(superchs_state::superchs_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */
- AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w)
- AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(superchs_state::chase3_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM
- AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */
- AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w)
- AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */
-ADDRESS_MAP_END
+void superchs_state::superchs_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x11ffff).ram().share("ram");
+ map(0x140000, 0x141fff).ram().share("spriteram");
+ map(0x180000, 0x18ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w));
+ map(0x1b0000, 0x1b002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w));
+ map(0x200000, 0x20ffff).ram().share("shared_ram");
+ map(0x240000, 0x240003).w(this, FUNC(superchs_state::cpua_ctrl_w));
+ map(0x280000, 0x287fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x2c0000, 0x2c07ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0x300000, 0x300007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+ map(0x340000, 0x340003).rw(this, FUNC(superchs_state::superchs_stick_r), FUNC(superchs_state::superchs_stick_w)); /* stick int request */
+}
+
+void superchs_state::superchs_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x600000, 0x60ffff).w(m_tc0480scp, FUNC(tc0480scp_device::word_w)); /* Only written upon errors */
+ map(0x800000, 0x80ffff).rw(this, FUNC(superchs_state::shared_ram_r), FUNC(superchs_state::shared_ram_w));
+ map(0xa00000, 0xa001ff).ram(); /* Extra road control?? */
+}
+
+void superchs_state::chase3_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x400000, 0x40ffff).ram();
+ map(0x600000, 0x60ffff).w(m_tc0480scp, FUNC(tc0480scp_device::word_w)); /* Only written upon errors */
+ map(0x800000, 0x80ffff).rw(this, FUNC(superchs_state::shared_ram_r), FUNC(superchs_state::shared_ram_w));
+ map(0xa00000, 0xa001ff).ram(); /* Extra road control?? */
+}
/***********************************************************/
diff --git a/src/mame/drivers/supercrd.cpp b/src/mame/drivers/supercrd.cpp
index d4319884f5c..7ece5415fed 100644
--- a/src/mame/drivers/supercrd.cpp
+++ b/src/mame/drivers/supercrd.cpp
@@ -287,14 +287,15 @@ uint32_t supercrd_state::screen_update_supercrd(screen_device &screen, bitmap_in
* Memory map information *
*****************************/
-ADDRESS_MAP_START(supercrd_state::supercrd_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(supercrd_videoram_w) AM_SHARE("videoram") // wrong
- AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(supercrd_colorram_w) AM_SHARE("colorram") // wrong
+void supercrd_state::supercrd_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram().w(this, FUNC(supercrd_state::supercrd_videoram_w)).share("videoram"); // wrong
+ map(0xd000, 0xdfff).ram().w(this, FUNC(supercrd_state::supercrd_colorram_w)).share("colorram"); // wrong
// AM_RANGE(0x0000, 0x0000) AM_RAM AM_SHARE("nvram")
// AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
// AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+}
/*****************************
diff --git a/src/mame/drivers/superdq.cpp b/src/mame/drivers/superdq.cpp
index b3ac6070ecc..a5a1b1228b0 100644
--- a/src/mame/drivers/superdq.cpp
+++ b/src/mame/drivers/superdq.cpp
@@ -208,22 +208,24 @@ WRITE8_MEMBER(superdq_state::superdq_ld_w)
*
*************************************/
-ADDRESS_MAP_START(superdq_state::superdq_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x5c00, 0x5fff) AM_RAM_WRITE(superdq_videoram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(superdq_state::superdq_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(superdq_ld_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2")
- AM_RANGE(0x04, 0x04) AM_READ(superdq_ld_r) AM_DEVWRITE("snsnd", sn76496_device, write)
- AM_RANGE(0x08, 0x08) AM_WRITE(superdq_io_w)
- AM_RANGE(0x0c, 0x0d) AM_NOP /* HD46505S */
-ADDRESS_MAP_END
+void superdq_state::superdq_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x5c00, 0x5fff).ram().w(this, FUNC(superdq_state::superdq_videoram_w)).share("videoram");
+}
+
+void superdq_state::superdq_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(superdq_state::superdq_ld_w));
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("DSW1");
+ map(0x03, 0x03).portr("DSW2");
+ map(0x04, 0x04).r(this, FUNC(superdq_state::superdq_ld_r)).w("snsnd", FUNC(sn76496_device::write));
+ map(0x08, 0x08).w(this, FUNC(superdq_state::superdq_io_w));
+ map(0x0c, 0x0d).noprw(); /* HD46505S */
+}
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index de465ca2d2b..ee0e14b9ced 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -989,38 +989,41 @@ ADDRESS_MAP_START(superqix_state_base::main_map)
AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END
-ADDRESS_MAP_START(hotsmash_state::pbillian_port_map) // used by both pbillian and hotsmash
- AM_RANGE(0x0000, 0x01ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // 6116 sram near the jamma connector, "COLOR RAM" during POST
+void hotsmash_state::pbillian_port_map(address_map &map)
+{ // used by both pbillian and hotsmash
+ map(0x0000, 0x01ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // 6116 sram near the jamma connector, "COLOR RAM" during POST
//AM_RANGE(0x0200, 0x03ff) AM_RAM // looks like leftover crap from a dev board which had double the color ram? zeroes written here, never read.
- AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay1", ay8910_device, data_r) // ay i/o ports connect to "SYSTEM" and "BUTTONS" inputs which includes mcu semaphore flags
- AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x0408, 0x0408) AM_READWRITE(hotsmash_Z80_mcu_r, hotsmash_Z80_mcu_w)
- AM_RANGE(0x0410, 0x0410) AM_WRITE(pbillian_0410_w) /* Coin Counters, ROM bank, NMI enable, Flipscreen */
- AM_RANGE(0x0418, 0x0418) AM_READ(nmi_ack_r)
- AM_RANGE(0x0419, 0x0419) AM_WRITENOP // ??? is this a watchdog, or something else? manual reset of mcu semaphores? manual nmi TRIGGER? used by prebillian
- AM_RANGE(0x041a, 0x041a) AM_WRITE(pbillian_sample_trigger_w)
- AM_RANGE(0x041b, 0x041b) AM_READNOP // input related? but probably not used, may be 'sample has stopped playing' flag? used by prebillian
-ADDRESS_MAP_END
+ map(0x0401, 0x0401).r(m_ay1, FUNC(ay8910_device::data_r)); // ay i/o ports connect to "SYSTEM" and "BUTTONS" inputs which includes mcu semaphore flags
+ map(0x0402, 0x0403).w(m_ay1, FUNC(ay8910_device::data_address_w));
+ map(0x0408, 0x0408).rw(this, FUNC(hotsmash_state::hotsmash_Z80_mcu_r), FUNC(hotsmash_state::hotsmash_Z80_mcu_w));
+ map(0x0410, 0x0410).w(this, FUNC(hotsmash_state::pbillian_0410_w)); /* Coin Counters, ROM bank, NMI enable, Flipscreen */
+ map(0x0418, 0x0418).r(this, FUNC(hotsmash_state::nmi_ack_r));
+ map(0x0419, 0x0419).nopw(); // ??? is this a watchdog, or something else? manual reset of mcu semaphores? manual nmi TRIGGER? used by prebillian
+ map(0x041a, 0x041a).w(this, FUNC(hotsmash_state::pbillian_sample_trigger_w));
+ map(0x041b, 0x041b).nopr(); // input related? but probably not used, may be 'sample has stopped playing' flag? used by prebillian
+}
-ADDRESS_MAP_START(superqix_state::sqix_port_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x0402, 0x0402) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x0403, 0x0403) AM_WRITE(z80_ay1_sync_address_w) // sync on address write, so semaphores are accurately read
- AM_RANGE(0x0405, 0x0405) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x0406, 0x0407) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x0408, 0x0408) AM_READ(z80_semaphore_assert_r)
- AM_RANGE(0x0410, 0x0410) AM_WRITE(superqix_0410_w) /* ROM bank, NMI enable, tile bank, bitmap bank */
- AM_RANGE(0x0418, 0x0418) AM_READ(nmi_ack_r)
+void superqix_state::sqix_port_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x0401, 0x0401).r(m_ay1, FUNC(ay8910_device::data_r));
+ map(0x0402, 0x0402).w(m_ay1, FUNC(ay8910_device::data_w));
+ map(0x0403, 0x0403).w(this, FUNC(superqix_state::z80_ay1_sync_address_w)); // sync on address write, so semaphores are accurately read
+ map(0x0405, 0x0405).r(m_ay2, FUNC(ay8910_device::data_r));
+ map(0x0406, 0x0407).w(m_ay2, FUNC(ay8910_device::data_address_w));
+ map(0x0408, 0x0408).r(this, FUNC(superqix_state::z80_semaphore_assert_r));
+ map(0x0410, 0x0410).w(this, FUNC(superqix_state::superqix_0410_w)); /* ROM bank, NMI enable, tile bank, bitmap bank */
+ map(0x0418, 0x0418).r(this, FUNC(superqix_state::nmi_ack_r));
// following two ranges are made of two 64kx4 4464 DRAM chips at 9L and 9M, "GRAPHICS RAM" or "GRP BIT" if there is an error in POST
- AM_RANGE(0x0800, 0x77ff) AM_RAM_WRITE(superqix_bitmapram_w) AM_SHARE("bitmapram")
- AM_RANGE(0x8800, 0xf7ff) AM_RAM_WRITE(superqix_bitmapram2_w) AM_SHARE("bitmapram2")
+ map(0x0800, 0x77ff).ram().w(this, FUNC(superqix_state::superqix_bitmapram_w)).share("bitmapram");
+ map(0x8800, 0xf7ff).ram().w(this, FUNC(superqix_state::superqix_bitmapram2_w)).share("bitmapram2");
//AM_RANGE(0xf970, 0xfa6f) AM_RAM // this is probably a portion of the remainder of the chips at 9L and 9M which isn't used or tested for graphics ram
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(superqix_state::sqix_8031_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("mcu", 0) // external program ROM
-ADDRESS_MAP_END
+void superqix_state::sqix_8031_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("mcu", 0); // external program ROM
+}
diff --git a/src/mame/drivers/superslave.cpp b/src/mame/drivers/superslave.cpp
index e14ac8286f9..b2e39d51012 100644
--- a/src/mame/drivers/superslave.cpp
+++ b/src/mame/drivers/superslave.cpp
@@ -257,27 +257,29 @@ WRITE8_MEMBER( superslave_state::cmd_w )
// ADDRESS_MAP( superslave_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(superslave_state::superslave_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void superslave_state::superslave_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(superslave_state::read), FUNC(superslave_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( superslave_io )
//-------------------------------------------------
-ADDRESS_MAP_START(superslave_state::superslave_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_0_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80DART_1_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_WRITE(baud_w)
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x18, 0x18) AM_MIRROR(0x02) AM_DEVREADWRITE(AM9519_TAG, am9519_device, data_r, data_w)
- AM_RANGE(0x19, 0x19) AM_MIRROR(0x02) AM_DEVREADWRITE(AM9519_TAG, am9519_device, stat_r, cmd_w)
- AM_RANGE(0x1d, 0x1d) AM_WRITE(memctrl_w)
- AM_RANGE(0x1e, 0x1e) AM_NOP // master communications
- AM_RANGE(0x1f, 0x1f) AM_READWRITE(status_r, cmd_w)
-ADDRESS_MAP_END
+void superslave_state::superslave_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw(Z80DART_0_TAG, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x0c, 0x0f).rw(Z80DART_1_TAG, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x10, 0x10).mirror(0x03).w(this, FUNC(superslave_state::baud_w));
+ map(0x14, 0x17).rw(Z80PIO_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x18, 0x18).mirror(0x02).rw(AM9519_TAG, FUNC(am9519_device::data_r), FUNC(am9519_device::data_w));
+ map(0x19, 0x19).mirror(0x02).rw(AM9519_TAG, FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w));
+ map(0x1d, 0x1d).w(this, FUNC(superslave_state::memctrl_w));
+ map(0x1e, 0x1e).noprw(); // master communications
+ map(0x1f, 0x1f).rw(this, FUNC(superslave_state::status_r), FUNC(superslave_state::cmd_w));
+}
diff --git a/src/mame/drivers/supertnk.cpp b/src/mame/drivers/supertnk.cpp
index 77216c33162..5914ab7c3f4 100644
--- a/src/mame/drivers/supertnk.cpp
+++ b/src/mame/drivers/supertnk.cpp
@@ -312,17 +312,18 @@ void supertnk_state::machine_reset()
*
*************************************/
-ADDRESS_MAP_START(supertnk_state::supertnk_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x17ff) AM_ROMBANK("bank1")
- AM_RANGE(0x1800, 0x1bff) AM_RAM
- AM_RANGE(0x1efc, 0x1efc) AM_READ_PORT("JOYS")
- AM_RANGE(0x1efd, 0x1efd) AM_READ_PORT("INPUTS")
- AM_RANGE(0x1efe, 0x1eff) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x1efe, 0x1efe) AM_READ_PORT("DSW")
- AM_RANGE(0x1eff, 0x1eff) AM_READ_PORT("UNK")
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(supertnk_videoram_r, supertnk_videoram_w)
-ADDRESS_MAP_END
+void supertnk_state::supertnk_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x17ff).bankr("bank1");
+ map(0x1800, 0x1bff).ram();
+ map(0x1efc, 0x1efc).portr("JOYS");
+ map(0x1efd, 0x1efd).portr("INPUTS");
+ map(0x1efe, 0x1eff).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x1efe, 0x1efe).portr("DSW");
+ map(0x1eff, 0x1eff).portr("UNK");
+ map(0x2000, 0x3fff).rw(this, FUNC(supertnk_state::supertnk_videoram_r), FUNC(supertnk_state::supertnk_videoram_w));
+}
@@ -332,15 +333,16 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(supertnk_state::supertnk_io_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITENOP
- AM_RANGE(0x0400, 0x0400) AM_WRITE(supertnk_bitplane_select_0_w)
- AM_RANGE(0x0401, 0x0401) AM_WRITE(supertnk_bitplane_select_1_w)
- AM_RANGE(0x0402, 0x0402) AM_WRITE(supertnk_bankswitch_0_w)
- AM_RANGE(0x0404, 0x0404) AM_WRITE(supertnk_bankswitch_1_w)
- AM_RANGE(0x0406, 0x0406) AM_WRITE(supertnk_interrupt_ack_w)
- AM_RANGE(0x0407, 0x0407) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
+void supertnk_state::supertnk_io_map(address_map &map)
+{
+ map(0x0000, 0x0000).nopw();
+ map(0x0400, 0x0400).w(this, FUNC(supertnk_state::supertnk_bitplane_select_0_w));
+ map(0x0401, 0x0401).w(this, FUNC(supertnk_state::supertnk_bitplane_select_1_w));
+ map(0x0402, 0x0402).w(this, FUNC(supertnk_state::supertnk_bankswitch_0_w));
+ map(0x0404, 0x0404).w(this, FUNC(supertnk_state::supertnk_bankswitch_1_w));
+ map(0x0406, 0x0406).w(this, FUNC(supertnk_state::supertnk_interrupt_ack_w));
+ map(0x0407, 0x0407).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
diff --git a/src/mame/drivers/superwng.cpp b/src/mame/drivers/superwng.cpp
index 4a088d12157..3c7957be802 100644
--- a/src/mame/drivers/superwng.cpp
+++ b/src/mame/drivers/superwng.cpp
@@ -320,40 +320,42 @@ WRITE8_MEMBER(superwng_state::superwng_hopper_w)
{
}
-ADDRESS_MAP_START(superwng_state::superwng_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x6fff) AM_ROMBANK("bank1")
- AM_RANGE(0x7000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(superwng_bg_vram_w) AM_SHARE("videorabg")
- AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(superwng_fg_vram_w) AM_SHARE("videorafg")
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(superwng_bg_cram_w) AM_SHARE("colorrabg")
- AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(superwng_fg_cram_w) AM_SHARE("colorrafg")
- AM_RANGE(0x9800, 0x99ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(superwng_hopper_w)
- AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2")
- AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW1")
- AM_RANGE(0xa100, 0xa100) AM_WRITE(superwng_sound_interrupt_w)
- AM_RANGE(0xa180, 0xa180) AM_READ_PORT("DSW2")
- AM_RANGE(0xa180, 0xa180) AM_WRITENOP // watchdog? int ack?
- AM_RANGE(0xa181, 0xa181) AM_WRITE(superwng_nmi_enable_w)
- AM_RANGE(0xa182, 0xa182) AM_WRITE(superwng_tilebank_w)
- AM_RANGE(0xa183, 0xa183) AM_WRITE(superwng_flip_screen_w)
- AM_RANGE(0xa184, 0xa184) AM_WRITE(superwng_cointcnt1_w)
- AM_RANGE(0xa185, 0xa185) AM_WRITE(superwng_unk_a185_w) // unknown, always(?) 0
- AM_RANGE(0xa186, 0xa186) AM_WRITE(superwng_cointcnt2_w)
- AM_RANGE(0xa187, 0xa187) AM_WRITE(superwng_unk_a187_w) // unknown, always(?) 0
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(superwng_state::superwng_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_WRITE(superwng_sound_nmi_clear_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("ay2", ay8910_device, address_w)
-ADDRESS_MAP_END
+void superwng_state::superwng_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x6fff).bankr("bank1");
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(superwng_state::superwng_bg_vram_w)).share("videorabg");
+ map(0x8400, 0x87ff).ram().w(this, FUNC(superwng_state::superwng_fg_vram_w)).share("videorafg");
+ map(0x8800, 0x8bff).ram().w(this, FUNC(superwng_state::superwng_bg_cram_w)).share("colorrabg");
+ map(0x8c00, 0x8fff).ram().w(this, FUNC(superwng_state::superwng_fg_cram_w)).share("colorrafg");
+ map(0x9800, 0x99ff).ram();
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa000, 0xa000).w(this, FUNC(superwng_state::superwng_hopper_w));
+ map(0xa080, 0xa080).portr("P2");
+ map(0xa100, 0xa100).portr("DSW1");
+ map(0xa100, 0xa100).w(this, FUNC(superwng_state::superwng_sound_interrupt_w));
+ map(0xa180, 0xa180).portr("DSW2");
+ map(0xa180, 0xa180).nopw(); // watchdog? int ack?
+ map(0xa181, 0xa181).w(this, FUNC(superwng_state::superwng_nmi_enable_w));
+ map(0xa182, 0xa182).w(this, FUNC(superwng_state::superwng_tilebank_w));
+ map(0xa183, 0xa183).w(this, FUNC(superwng_state::superwng_flip_screen_w));
+ map(0xa184, 0xa184).w(this, FUNC(superwng_state::superwng_cointcnt1_w));
+ map(0xa185, 0xa185).w(this, FUNC(superwng_state::superwng_unk_a185_w)); // unknown, always(?) 0
+ map(0xa186, 0xa186).w(this, FUNC(superwng_state::superwng_cointcnt2_w));
+ map(0xa187, 0xa187).w(this, FUNC(superwng_state::superwng_unk_a187_w)); // unknown, always(?) 0
+}
+
+void superwng_state::superwng_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).w(this, FUNC(superwng_state::superwng_sound_nmi_clear_w));
+ map(0x4000, 0x4000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x5000, 0x5000).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x6000, 0x6000).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x7000, 0x7000).w("ay2", FUNC(ay8910_device::address_w));
+}
static INPUT_PORTS_START( superwng )
PORT_START("P1")
diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp
index 1425fde2e2d..32595bd6e50 100644
--- a/src/mame/drivers/supracan.cpp
+++ b/src/mame/drivers/supracan.cpp
@@ -1122,22 +1122,23 @@ WRITE16_MEMBER( supracan_state::vram_w )
}
-ADDRESS_MAP_START(supracan_state::supracan_mem)
+void supracan_state::supracan_mem(address_map &map)
+{
//AM_RANGE( 0x000000, 0x3fffff ) // mapped by the cartslot
- AM_RANGE( 0xe80000, 0xe8ffff ) AM_READWRITE(_68k_soundram_r, _68k_soundram_w)
- AM_RANGE( 0xe80200, 0xe80201 ) AM_READ_PORT("P1")
- AM_RANGE( 0xe80202, 0xe80203 ) AM_READ_PORT("P2")
- AM_RANGE( 0xe80208, 0xe80209 ) AM_READ_PORT("P3")
- AM_RANGE( 0xe8020c, 0xe8020d ) AM_READ_PORT("P4")
- AM_RANGE( 0xe90000, 0xe9001f ) AM_READWRITE(sound_r, sound_w)
- AM_RANGE( 0xe90020, 0xe9002f ) AM_WRITE(dma_channel0_w)
- AM_RANGE( 0xe90030, 0xe9003f ) AM_WRITE(dma_channel1_w)
-
- AM_RANGE( 0xf00000, 0xf001ff ) AM_READWRITE(video_r, video_w)
- AM_RANGE( 0xf00200, 0xf003ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE( 0xf40000, 0xf5ffff ) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE( 0xfc0000, 0xfcffff ) AM_MIRROR(0x30000) AM_RAM /* System work ram */
-ADDRESS_MAP_END
+ map(0xe80000, 0xe8ffff).rw(this, FUNC(supracan_state::_68k_soundram_r), FUNC(supracan_state::_68k_soundram_w));
+ map(0xe80200, 0xe80201).portr("P1");
+ map(0xe80202, 0xe80203).portr("P2");
+ map(0xe80208, 0xe80209).portr("P3");
+ map(0xe8020c, 0xe8020d).portr("P4");
+ map(0xe90000, 0xe9001f).rw(this, FUNC(supracan_state::sound_r), FUNC(supracan_state::sound_w));
+ map(0xe90020, 0xe9002f).w(this, FUNC(supracan_state::dma_channel0_w));
+ map(0xe90030, 0xe9003f).w(this, FUNC(supracan_state::dma_channel1_w));
+
+ map(0xf00000, 0xf001ff).rw(this, FUNC(supracan_state::video_r), FUNC(supracan_state::video_w));
+ map(0xf00200, 0xf003ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xf40000, 0xf5ffff).ram().w(this, FUNC(supracan_state::vram_w)).share("vram");
+ map(0xfc0000, 0xfcffff).mirror(0x30000).ram(); /* System work ram */
+}
READ8_MEMBER( supracan_state::_6502_soundmem_r )
{
@@ -1233,9 +1234,10 @@ WRITE8_MEMBER( supracan_state::_6502_soundmem_w )
}
}
-ADDRESS_MAP_START(supracan_state::supracan_sound_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(_6502_soundmem_r, _6502_soundmem_w) AM_SHARE("soundram")
-ADDRESS_MAP_END
+void supracan_state::supracan_sound_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(supracan_state::_6502_soundmem_r), FUNC(supracan_state::_6502_soundmem_w)).share("soundram");
+}
static INPUT_PORTS_START( supracan )
PORT_START("P1")
diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp
index d24845eef1c..5c139dea41e 100644
--- a/src/mame/drivers/suprgolf.cpp
+++ b/src/mame/drivers/suprgolf.cpp
@@ -338,24 +338,26 @@ READ8_MEMBER(suprgolf_state::p2_r)
return (ioport("P2")->read() & 0xf0) | ((ioport("P2_ANALOG")->read() & 0xf));
}
-ADDRESS_MAP_START(suprgolf_state::suprgolf_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x4000) AM_WRITE(rom2_bank_select_w )
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(bg_vram_r, bg_vram_w ) // banked background vram
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(videoram_r, videoram_w ) AM_SHARE("videoram") //foreground vram + paletteram
- AM_RANGE(0xf000, 0xf000) AM_WRITE(pen_w )
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suprgolf_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x0c, 0x0c) AM_WRITE(adpcm_data_w)
- ADDRESS_MAP_END
+void suprgolf_state::suprgolf_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x4000, 0x4000).w(this, FUNC(suprgolf_state::rom2_bank_select_w));
+ map(0x8000, 0xbfff).bankr("bank2");
+ map(0xc000, 0xdfff).rw(this, FUNC(suprgolf_state::bg_vram_r), FUNC(suprgolf_state::bg_vram_w)); // banked background vram
+ map(0xe000, 0xefff).rw(this, FUNC(suprgolf_state::videoram_r), FUNC(suprgolf_state::videoram_w)).share("videoram"); //foreground vram + paletteram
+ map(0xf000, 0xf000).w(this, FUNC(suprgolf_state::pen_w));
+ map(0xf800, 0xffff).ram();
+}
+
+void suprgolf_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x04, 0x07).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x09).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x0c, 0x0c).w(this, FUNC(suprgolf_state::adpcm_data_w));
+ }
static INPUT_PORTS_START( suprgolf )
PORT_START("P1")
diff --git a/src/mame/drivers/suprloco.cpp b/src/mame/drivers/suprloco.cpp
index c626495f7a7..6d4bbf0bc15 100644
--- a/src/mame/drivers/suprloco.cpp
+++ b/src/mame/drivers/suprloco.cpp
@@ -44,34 +44,37 @@ WRITE_LINE_MEMBER(suprloco_state::pc0_w)
machine().output().set_lamp_value(0, state); // ???
}
-ADDRESS_MAP_START(suprloco_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc200, 0xc7ff) AM_WRITENOP
- AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1")
- AM_RANGE(0xd800, 0xd800) AM_READ_PORT("P2")
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1")
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2")
- AM_RANGE(0xe800, 0xe803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xf000, 0xf6ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf700, 0xf7df) AM_RAM /* unused */
- AM_RANGE(0xf7e0, 0xf7ff) AM_RAM_WRITE(scrollram_w) AM_SHARE("scrollram")
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suprloco_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suprloco_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVWRITE("sn1", sn76496_device, write)
- AM_RANGE(0xc000, 0xc003) AM_DEVWRITE("sn2", sn76496_device, write)
- AM_RANGE(0xe000, 0xe000) AM_READ(soundport_r)
-ADDRESS_MAP_END
+void suprloco_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc1ff).ram().share("spriteram");
+ map(0xc200, 0xc7ff).nopw();
+ map(0xc800, 0xc800).portr("SYSTEM");
+ map(0xd000, 0xd000).portr("P1");
+ map(0xd800, 0xd800).portr("P2");
+ map(0xe000, 0xe000).portr("DSW1");
+ map(0xe001, 0xe001).portr("DSW2");
+ map(0xe800, 0xe803).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf000, 0xf6ff).ram().w(this, FUNC(suprloco_state::videoram_w)).share("videoram");
+ map(0xf700, 0xf7df).ram(); /* unused */
+ map(0xf7e0, 0xf7ff).ram().w(this, FUNC(suprloco_state::scrollram_w)).share("scrollram");
+ map(0xf800, 0xffff).ram();
+}
+
+void suprloco_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).rom().region("maincpu", 0x8000);
+}
+
+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(0xe000, 0xe000).r(this, FUNC(suprloco_state::soundport_r));
+}
diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp
index 763487a4659..473aa744a47 100644
--- a/src/mame/drivers/suprnova.cpp
+++ b/src/mame/drivers/suprnova.cpp
@@ -722,31 +722,32 @@ WRITE32_MEMBER(skns_state::v3t_w)
m_btiles[offset*4+3] = (data & 0x000000ff) >> 0;
}
-ADDRESS_MAP_START(skns_state::skns_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM /* BIOS ROM */
- AM_RANGE(0x00400000, 0x0040000f) AM_WRITE(io_w) /* I/O Write */
- AM_RANGE(0x00400000, 0x00400003) AM_READ_PORT("400000")
- AM_RANGE(0x00400004, 0x00400007) AM_READ_PORT("400004")
+void skns_state::skns_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom(); /* BIOS ROM */
+ map(0x00400000, 0x0040000f).w(this, FUNC(skns_state::io_w)); /* I/O Write */
+ map(0x00400000, 0x00400003).portr("400000");
+ map(0x00400004, 0x00400007).portr("400004");
/* In between is write only */
- AM_RANGE(0x0040000c, 0x0040000f) AM_READ_PORT("40000c")
- AM_RANGE(0x00800000, 0x00801fff) AM_RAM AM_SHARE("nvram") /* 'backup' RAM */
- AM_RANGE(0x00c00000, 0x00c00003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff0000) /* ymz280_w (sound) */
- AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0xffffffff)
- AM_RANGE(0x01800000, 0x01800003) AM_WRITE(hit2_w)
- AM_RANGE(0x02000000, 0x02003fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0x02100000, 0x0210003f) AM_RAM AM_SHARE("spc_regs") /* sprite registers */
- AM_RANGE(0x02400000, 0x0240007f) AM_RAM_WRITE(v3_regs_w) AM_SHARE("v3_regs") /* tilemap registers */
- AM_RANGE(0x02500000, 0x02503fff) AM_RAM_WRITE(tilemapA_w) AM_SHARE("tilemapa_ram") /* tilemap A */
- AM_RANGE(0x02504000, 0x02507fff) AM_RAM_WRITE(tilemapB_w) AM_SHARE("tilemapb_ram") /* tilemap B */
- AM_RANGE(0x02600000, 0x02607fff) AM_RAM AM_SHARE("v3slc_ram") /* tilemap linescroll */
- AM_RANGE(0x02a00000, 0x02a0001f) AM_RAM_WRITE(pal_regs_w) AM_SHARE("pal_regs")
- AM_RANGE(0x02a40000, 0x02a5ffff) AM_RAM_WRITE(palette_ram_w) AM_SHARE("palette_ram")
- AM_RANGE(0x02f00000, 0x02f000ff) AM_READWRITE(hit_r, hit_w)
- AM_RANGE(0x04000000, 0x041fffff) AM_ROMBANK("bank1") /* GAME ROM */
- AM_RANGE(0x04800000, 0x0483ffff) AM_RAM_WRITE(v3t_w) AM_SHARE("v3t_ram") /* tilemap b ram based tiles */
- AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM AM_SHARE("cache_ram") /* 'cache' RAM */
-ADDRESS_MAP_END
+ map(0x0040000c, 0x0040000f).portr("40000c");
+ map(0x00800000, 0x00801fff).ram().share("nvram"); /* 'backup' RAM */
+ map(0x00c00000, 0x00c00001).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); /* ymz280_w (sound) */
+ map(0x01000000, 0x0100000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ map(0x01800000, 0x01800003).w(this, FUNC(skns_state::hit2_w));
+ map(0x02000000, 0x02003fff).ram().share("spriteram"); /* sprite ram */
+ map(0x02100000, 0x0210003f).ram().share("spc_regs"); /* sprite registers */
+ map(0x02400000, 0x0240007f).ram().w(this, FUNC(skns_state::v3_regs_w)).share("v3_regs"); /* tilemap registers */
+ map(0x02500000, 0x02503fff).ram().w(this, FUNC(skns_state::tilemapA_w)).share("tilemapa_ram"); /* tilemap A */
+ map(0x02504000, 0x02507fff).ram().w(this, FUNC(skns_state::tilemapB_w)).share("tilemapb_ram"); /* tilemap B */
+ map(0x02600000, 0x02607fff).ram().share("v3slc_ram"); /* tilemap linescroll */
+ map(0x02a00000, 0x02a0001f).ram().w(this, FUNC(skns_state::pal_regs_w)).share("pal_regs");
+ map(0x02a40000, 0x02a5ffff).ram().w(this, FUNC(skns_state::palette_ram_w)).share("palette_ram");
+ map(0x02f00000, 0x02f000ff).rw(this, FUNC(skns_state::hit_r), FUNC(skns_state::hit_w));
+ map(0x04000000, 0x041fffff).bankr("bank1"); /* GAME ROM */
+ map(0x04800000, 0x0483ffff).ram().w(this, FUNC(skns_state::v3t_w)).share("v3t_ram"); /* tilemap b ram based tiles */
+ map(0x06000000, 0x060fffff).ram().share("main_ram");
+ map(0xc0000000, 0xc0000fff).ram().share("cache_ram"); /* 'cache' RAM */
+}
/***** GFX DECODE *****/
diff --git a/src/mame/drivers/suprridr.cpp b/src/mame/drivers/suprridr.cpp
index 27df0975849..26fced5b668 100644
--- a/src/mame/drivers/suprridr.cpp
+++ b/src/mame/drivers/suprridr.cpp
@@ -143,32 +143,34 @@ WRITE8_MEMBER(suprridr_state::coin_lock_w)
*
*************************************/
-ADDRESS_MAP_START(suprridr_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
- AM_RANGE(0x9800, 0x983f) AM_RAM
- AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9880, 0x9bff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w)
- AM_RANGE(0xb002, 0xb003) AM_WRITE(coin_lock_w)
- AM_RANGE(0xb006, 0xb006) AM_WRITE(flipx_w)
- AM_RANGE(0xb007, 0xb007) AM_WRITE(flipy_w)
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc801, 0xc801) AM_WRITE(fgdisable_w)
- AM_RANGE(0xc802, 0xc802) AM_WRITE(fgscrolly_w)
- AM_RANGE(0xc804, 0xc804) AM_WRITE(bgscrolly_w)
- AM_RANGE(0xc000, 0xefff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(suprridr_state::main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
+void suprridr_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).ram().w(this, FUNC(suprridr_state::bgram_w)).share("bgram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(suprridr_state::fgram_w)).share("fgram");
+ map(0x9800, 0x983f).ram();
+ map(0x9840, 0x987f).ram().share("spriteram");
+ map(0x9880, 0x9bff).ram();
+ map(0xa000, 0xa000).portr("INPUTS");
+ map(0xa800, 0xa800).portr("SYSTEM");
+ map(0xb000, 0xb000).portr("DSW").w(this, FUNC(suprridr_state::nmi_enable_w));
+ map(0xb002, 0xb003).w(this, FUNC(suprridr_state::coin_lock_w));
+ map(0xb006, 0xb006).w(this, FUNC(suprridr_state::flipx_w));
+ map(0xb007, 0xb007).w(this, FUNC(suprridr_state::flipy_w));
+ map(0xb800, 0xb800).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc801, 0xc801).w(this, FUNC(suprridr_state::fgdisable_w));
+ map(0xc802, 0xc802).w(this, FUNC(suprridr_state::fgscrolly_w));
+ map(0xc804, 0xc804).w(this, FUNC(suprridr_state::bgscrolly_w));
+ map(0xc000, 0xefff).rom();
+}
+
+
+void suprridr_state::main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
@@ -178,20 +180,22 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(suprridr_state::sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x3800, 0x3bff) AM_RAM
-ADDRESS_MAP_END
+void suprridr_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x3800, 0x3bff).ram();
+}
-ADDRESS_MAP_START(suprridr_state::sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8d, 0x8d) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay2", ay8910_device, data_r)
-ADDRESS_MAP_END
+void suprridr_state::sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x8c, 0x8d).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8d, 0x8d).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8e, 0x8f).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8f, 0x8f).r("ay2", FUNC(ay8910_device::data_r));
+}
diff --git a/src/mame/drivers/suprslam.cpp b/src/mame/drivers/suprslam.cpp
index 78081a6573b..007490e278e 100644
--- a/src/mame/drivers/suprslam.cpp
+++ b/src/mame/drivers/suprslam.cpp
@@ -102,35 +102,38 @@ WRITE8_MEMBER(suprslam_state::suprslam_sh_bankswitch_w)
/*** MEMORY MAPS *************************************************************/
-ADDRESS_MAP_START(suprslam_state::suprslam_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0xfb0000, 0xfb1fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfc0000, 0xfcffff) AM_RAM AM_SHARE("sp_videoram")
- AM_RANGE(0xfd0000, 0xfdffff) AM_RAM
- AM_RANGE(0xfe0000, 0xfe0fff) AM_RAM_WRITE(suprslam_screen_videoram_w) AM_SHARE("screen_videoram")
- AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(suprslam_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xff2000, 0xff203f) AM_RAM AM_SHARE("screen_vregs")
- AM_RANGE(0xff3000, 0xff3001) AM_WRITENOP // sprite buffer trigger?
- AM_RANGE(0xff8000, 0xff8fff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w)
- AM_RANGE(0xff9000, 0xff9001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xffa000, 0xffafff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffd000, 0xffd01f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0xffe000, 0xffe001) AM_WRITE(suprslam_bank_w)
- AM_RANGE(0xfff000, 0xfff01f) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suprslam_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(suprslam_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+void suprslam_state::suprslam_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0xfb0000, 0xfb1fff).ram().share("spriteram");
+ map(0xfc0000, 0xfcffff).ram().share("sp_videoram");
+ map(0xfd0000, 0xfdffff).ram();
+ map(0xfe0000, 0xfe0fff).ram().w(this, FUNC(suprslam_state::suprslam_screen_videoram_w)).share("screen_videoram");
+ map(0xff0000, 0xff1fff).ram().w(this, FUNC(suprslam_state::suprslam_bg_videoram_w)).share("bg_videoram");
+ map(0xff2000, 0xff203f).ram().share("screen_vregs");
+ map(0xff3000, 0xff3001).nopw(); // sprite buffer trigger?
+ map(0xff8000, 0xff8fff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w));
+ map(0xff9001, 0xff9001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xffa000, 0xffafff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffd000, 0xffd01f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0xffe000, 0xffe001).w(this, FUNC(suprslam_state::suprslam_bank_w));
+ map(0xfff000, 0xfff01f).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff);
+}
+
+void suprslam_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void suprslam_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(suprslam_state::suprslam_sh_bankswitch_w));
+ map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
/*** INPUT PORTS *************************************************************/
diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp
index f89f99f5240..c9384e1fbc0 100644
--- a/src/mame/drivers/supstarf.cpp
+++ b/src/mame/drivers/supstarf.cpp
@@ -57,24 +57,28 @@ private:
bool m_latch_select;
};
-ADDRESS_MAP_START(supstarf_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch1", i8212_device, read) AM_DEVWRITE("soundlatch2", i8212_device, strobe)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM // 5517 (2Kx8) at IC11
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supstarf_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_WRITE(driver_clk_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supstarf_state::sound_map)
- AM_RANGE(0x000, 0xfff) AM_ROM // external EPROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(supstarf_state::sound_io_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(psg_latch_r, psg_latch_w)
-ADDRESS_MAP_END
+void supstarf_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x8000).r("soundlatch1", FUNC(i8212_device::read)).w("soundlatch2", FUNC(i8212_device::strobe));
+ map(0xc000, 0xc7ff).ram(); // 5517 (2Kx8) at IC11
+}
+
+void supstarf_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).w(this, FUNC(supstarf_state::driver_clk_w));
+}
+
+void supstarf_state::sound_map(address_map &map)
+{
+ map(0x000, 0xfff).rom(); // external EPROM
+}
+
+void supstarf_state::sound_io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(supstarf_state::psg_latch_r), FUNC(supstarf_state::psg_latch_w));
+}
READ8_MEMBER(supstarf_state::psg_latch_r)
{
diff --git a/src/mame/drivers/surpratk.cpp b/src/mame/drivers/surpratk.cpp
index d2221d3c425..e2f223970bb 100644
--- a/src/mame/drivers/surpratk.cpp
+++ b/src/mame/drivers/surpratk.cpp
@@ -58,29 +58,31 @@ WRITE8_MEMBER(surpratk_state::surpratk_5fc0_w)
/********************************************/
-ADDRESS_MAP_START(surpratk_state::surpratk_map)
- AM_RANGE(0x0000, 0x07ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
- AM_RANGE(0x0800, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") /* banked ROM */
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x5f8c, 0x5f8c) AM_READ_PORT("P1")
- AM_RANGE(0x5f8d, 0x5f8d) AM_READ_PORT("P2")
- AM_RANGE(0x5f8e, 0x5f8e) AM_READ_PORT("DSW3")
- AM_RANGE(0x5f8f, 0x5f8f) AM_READ_PORT("DSW1")
- AM_RANGE(0x5f90, 0x5f90) AM_READ_PORT("DSW2")
- AM_RANGE(0x5fa0, 0x5faf) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w)
- AM_RANGE(0x5fb0, 0x5fbf) AM_DEVWRITE("k053251", k053251_device, write)
- AM_RANGE(0x5fc0, 0x5fc0) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(surpratk_5fc0_w)
- AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ymsnd", ym2151_device, write)
- AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(surpratk_state::bank0000_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w)
- AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
+void surpratk_state::surpratk_map(address_map &map)
+{
+ map(0x0000, 0x07ff).m(m_bank0000, FUNC(address_map_bank_device::amap8));
+ map(0x0800, 0x1fff).ram();
+ map(0x2000, 0x3fff).bankr("bank1"); /* banked ROM */
+ map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x5f8c, 0x5f8c).portr("P1");
+ map(0x5f8d, 0x5f8d).portr("P2");
+ map(0x5f8e, 0x5f8e).portr("DSW3");
+ map(0x5f8f, 0x5f8f).portr("DSW1");
+ map(0x5f90, 0x5f90).portr("DSW2");
+ map(0x5fa0, 0x5faf).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w));
+ map(0x5fb0, 0x5fbf).w(m_k053251, FUNC(k053251_device::write));
+ map(0x5fc0, 0x5fc0).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(surpratk_state::surpratk_5fc0_w));
+ map(0x5fd0, 0x5fd1).w("ymsnd", FUNC(ym2151_device::write));
+ map(0x5fc4, 0x5fc4).w(this, FUNC(surpratk_state::surpratk_videobank_w));
+ map(0x8000, 0xffff).rom().region("maincpu", 0x38000);
+}
+
+void surpratk_state::bank0000_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0fff).rw(m_k053244, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w));
+ map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
/***************************************************************************
diff --git a/src/mame/drivers/sv8000.cpp b/src/mame/drivers/sv8000.cpp
index df31e3143c5..aeaa8614df3 100644
--- a/src/mame/drivers/sv8000.cpp
+++ b/src/mame/drivers/sv8000.cpp
@@ -99,21 +99,23 @@ private:
};
-ADDRESS_MAP_START(sv8000_state::sv8000_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void sv8000_state::sv8000_mem(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x0000, 0x0fff) // mapped by the cartslot
- AM_RANGE( 0x8000, 0x83ff ) AM_RAM // Work RAM??
- AM_RANGE( 0xc000, 0xcbff ) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(sv8000_state::sv8000_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("i8255", i8255_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("ay8910", ay8910_device, data_w) // Not sure yet
- AM_RANGE(0xc1, 0xc1) AM_DEVWRITE("ay8910", ay8910_device, address_w) // Not sure yet
-ADDRESS_MAP_END
+ map(0x8000, 0x83ff).ram(); // Work RAM??
+ map(0xc000, 0xcbff).ram().share("videoram");
+}
+
+
+void sv8000_state::sv8000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xc0, 0xc0).w("ay8910", FUNC(ay8910_device::data_w)); // Not sure yet
+ map(0xc1, 0xc1).w("ay8910", FUNC(ay8910_device::address_w)); // Not sure yet
+}
/* Input ports */
diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp
index e067658a9ad..fabdb21f088 100644
--- a/src/mame/drivers/svi318.cpp
+++ b/src/mame/drivers/svi318.cpp
@@ -133,29 +133,32 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(svi3x8_state::svi3x8_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(svi3x8_state::svi3x8_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_DEVICE("io", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(svi3x8_state::svi3x8_io_bank)
- AM_RANGE(0x000, 0x0ff) AM_DEVREADWRITE("exp", svi_expander_device, iorq_r, iorq_w)
- AM_RANGE(0x100, 0x17f) AM_DEVREADWRITE("exp", svi_expander_device, iorq_r, iorq_w)
- AM_RANGE(0x180, 0x180) AM_MIRROR(0x22) AM_DEVWRITE("vdp", tms9928a_device, vram_write)
- AM_RANGE(0x181, 0x181) AM_MIRROR(0x22) AM_DEVWRITE("vdp", tms9928a_device, register_write)
- AM_RANGE(0x184, 0x184) AM_MIRROR(0x22) AM_DEVREAD("vdp", tms9928a_device, vram_read)
- AM_RANGE(0x185, 0x185) AM_MIRROR(0x22) AM_DEVREAD("vdp", tms9928a_device, register_read)
- AM_RANGE(0x188, 0x188) AM_MIRROR(0x23) AM_DEVWRITE("psg", ay8910_device, address_w)
- AM_RANGE(0x18c, 0x18c) AM_MIRROR(0x23) AM_DEVWRITE("psg", ay8910_device, data_w)
- AM_RANGE(0x190, 0x190) AM_MIRROR(0x23) AM_DEVREAD("psg", ay8910_device, data_r)
- AM_RANGE(0x194, 0x197) AM_DEVWRITE("ppi", i8255_device, write)
- AM_RANGE(0x198, 0x19a) AM_DEVREAD("ppi", i8255_device, read)
-ADDRESS_MAP_END
+void svi3x8_state::svi3x8_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(svi3x8_state::mreq_r), FUNC(svi3x8_state::mreq_w));
+}
+
+void svi3x8_state::svi3x8_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).m(m_io, FUNC(address_map_bank_device::amap8));
+}
+
+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, 0x180).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::vram_write));
+ map(0x181, 0x181).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::register_write));
+ map(0x184, 0x184).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::vram_read));
+ map(0x185, 0x185).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::register_read));
+ 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));
+ map(0x194, 0x197).w("ppi", FUNC(i8255_device::write));
+ map(0x198, 0x19a).r("ppi", FUNC(i8255_device::read));
+}
//**************************************************************************
diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp
index 00c1b8eb4a7..7b84b8d96e6 100644
--- a/src/mame/drivers/svision.cpp
+++ b/src/mame/drivers/svision.cpp
@@ -259,23 +259,25 @@ WRITE8_MEMBER(svision_state::tvlink_w)
}
}
-ADDRESS_MAP_START(svision_state::svision_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(svision_r, svision_w) AM_SHARE("reg")
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(svision_state::tvlink_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE(tvlink_r, tvlink_w) AM_SHARE("reg")
- AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2")
-ADDRESS_MAP_END
+void svision_state::svision_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).rw(this, FUNC(svision_state::svision_r), FUNC(svision_state::svision_w)).share("reg");
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x7fff).noprw();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).bankr("bank2");
+}
+
+void svision_state::tvlink_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x3fff).rw(this, FUNC(svision_state::tvlink_r), FUNC(svision_state::tvlink_w)).share("reg");
+ map(0x4000, 0x5fff).ram().share("videoram");
+ map(0x6000, 0x7fff).noprw();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xffff).bankr("bank2");
+}
static INPUT_PORTS_START( svision )
PORT_START("JOY")
diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp
index 3ace27fdbbe..c5bc7402c06 100644
--- a/src/mame/drivers/svmu.cpp
+++ b/src/mame/drivers/svmu.cpp
@@ -125,15 +125,17 @@ READ8_MEMBER(svmu_state::p7_r)
}
-ADDRESS_MAP_START(svmu_state::svmu_mem)
- AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(prog_r, prog_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(svmu_state::svmu_io_mem)
- AM_RANGE( LC8670_PORT1, LC8670_PORT1 ) AM_READWRITE(p1_r, p1_w)
- AM_RANGE( LC8670_PORT3, LC8670_PORT3 ) AM_READ_PORT("P3")
- AM_RANGE( LC8670_PORT7, LC8670_PORT7 ) AM_READ(p7_r)
-ADDRESS_MAP_END
+void svmu_state::svmu_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(svmu_state::prog_r), FUNC(svmu_state::prog_w));
+}
+
+void svmu_state::svmu_io_mem(address_map &map)
+{
+ map(LC8670_PORT1, LC8670_PORT1).rw(this, FUNC(svmu_state::p1_r), FUNC(svmu_state::p1_w));
+ map(LC8670_PORT3, LC8670_PORT3).portr("P3");
+ map(LC8670_PORT7, LC8670_PORT7).r(this, FUNC(svmu_state::p7_r));
+}
/* Input ports */
static INPUT_PORTS_START( svmu )
diff --git a/src/mame/drivers/swtpc.cpp b/src/mame/drivers/swtpc.cpp
index b007b51b3ae..529280062f4 100644
--- a/src/mame/drivers/swtpc.cpp
+++ b/src/mame/drivers/swtpc.cpp
@@ -67,19 +67,20 @@ private:
required_device<mc14411_device> m_brg;
};
-ADDRESS_MAP_START(swtpc_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io0", ss50_interface_port_device, read, write)
- AM_RANGE(0x8004, 0x8007) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io1", ss50_interface_port_device, read, write)
- AM_RANGE(0x8008, 0x800b) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io2", ss50_interface_port_device, read, write)
- AM_RANGE(0x800c, 0x800f) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io3", ss50_interface_port_device, read, write)
- AM_RANGE(0x8010, 0x8013) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io4", ss50_interface_port_device, read, write)
- AM_RANGE(0x8014, 0x8017) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io5", ss50_interface_port_device, read, write)
- AM_RANGE(0x8018, 0x801b) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io6", ss50_interface_port_device, read, write)
- AM_RANGE(0x801c, 0x801f) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io7", ss50_interface_port_device, read, write)
- AM_RANGE(0xa000, 0xa07f) AM_RAM // MCM6810
- AM_RANGE(0xe000, 0xe3ff) AM_MIRROR(0x1c00) AM_ROM AM_REGION("mcm6830", 0)
-ADDRESS_MAP_END
+void swtpc_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x8000, 0x8003).mirror(0x1fc0).rw("io0", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x8004, 0x8007).mirror(0x1fc0).rw("io1", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x8008, 0x800b).mirror(0x1fc0).rw("io2", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x800c, 0x800f).mirror(0x1fc0).rw("io3", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x8010, 0x8013).mirror(0x1fc0).rw("io4", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x8014, 0x8017).mirror(0x1fc0).rw("io5", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x8018, 0x801b).mirror(0x1fc0).rw("io6", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0x801c, 0x801f).mirror(0x1fc0).rw("io7", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write));
+ map(0xa000, 0xa07f).ram(); // MCM6810
+ map(0xe000, 0xe3ff).mirror(0x1c00).rom().region("mcm6830", 0);
+}
/* Input ports */
static INPUT_PORTS_START( swtpc )
diff --git a/src/mame/drivers/swtpc09.cpp b/src/mame/drivers/swtpc09.cpp
index 40a4946b743..fb7db1e60f8 100644
--- a/src/mame/drivers/swtpc09.cpp
+++ b/src/mame/drivers/swtpc09.cpp
@@ -60,77 +60,82 @@
/* Address map is dynamically setup when DAT memory is written to */
/* only ROM from FF00-FFFF and DAT memory at FFF0-FFFF (write only) is guaranteed always*/
-ADDRESS_MAP_START(swtpc09_state::mp09_mem)
- AM_RANGE(0x0000, 0xfeff) AM_READWRITE(main_r, main_w)
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0xff00)
- AM_RANGE(0xff00, 0xff0f) AM_MIRROR(0xf0) AM_WRITEONLY AM_SHARE("dat")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(swtpc09_state::flex_dmf2_mem)
- AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated
- AM_RANGE(0xe000, 0xe003) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe004, 0xe005) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xe0a0, 0xefff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w)
- AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0xf024, 0xf03f) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_control_reg_r, dmf2_control_reg_w)
+void swtpc09_state::mp09_mem(address_map &map)
+{
+ map(0x0000, 0xfeff).rw(this, FUNC(swtpc09_state::main_r), FUNC(swtpc09_state::main_w));
+ map(0xff00, 0xffff).rom().region("maincpu", 0xff00);
+ map(0xff00, 0xff0f).mirror(0xf0).writeonly().share("dat");
+}
+
+void swtpc09_state::flex_dmf2_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated
+ map(0xe000, 0xe003).mirror(0xf0000).noprw();
+ map(0xe004, 0xe005).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xe0a0, 0xefff).mirror(0xf0000).noprw();
+ map(0xf000, 0xf01f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::m6844_r), FUNC(swtpc09_state::m6844_w));
+ map(0xf020, 0xf023).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0xf024, 0xf03f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf2_control_reg_r), FUNC(swtpc09_state::dmf2_control_reg_w));
//AM_RANGE(0xf042, 0xf7ff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(swtpc09_state::flex_dc4_piaide_mem)
- AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated
- AM_RANGE(0xe000, 0xe003) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe004, 0xe005) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xe014, 0xe014) AM_MIRROR(0xf0000) AM_WRITE(dc4_control_reg_w)
- AM_RANGE(0xe018, 0xe01b) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
+ map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800);
+}
+
+void swtpc09_state::flex_dc4_piaide_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated
+ map(0xe000, 0xe003).mirror(0xf0000).noprw();
+ map(0xe004, 0xe005).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe014, 0xe014).mirror(0xf0000).w(this, FUNC(swtpc09_state::dc4_control_reg_w));
+ map(0xe018, 0xe01b).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
//AM_RANGE(0xe01c, 0xe05f) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe060, 0xe063) AM_MIRROR(0xf000c) AM_DEVREADWRITE("piaide", pia6821_device, read, write)
+ map(0xe060, 0xe063).mirror(0xf000c).rw(m_piaide, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
//AM_RANGE(0xe070, 0xe07f) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
+ map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
//AM_RANGE(0xe0a0, 0xe7ff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe800, 0xefff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xe800) //piaide rom
+ map(0xe800, 0xefff).mirror(0xf0000).rom().region("maincpu", 0xe800); //piaide rom
//AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w)
//AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
//AM_RANGE(0xf024, 0xf03f) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_control_reg_r, dmf2_control_reg_w)
//AM_RANGE(0xf040, 0xf041) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_dma_address_reg_r, dmf2_dma_address_reg_w)
- AM_RANGE(0xf000, 0xf7ff) AM_MIRROR(0xf0000) AM_RAM AM_SHARE("s09ram") // 2k ram for piaide on s09 board
- AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(swtpc09_state::uniflex_dmf2_mem)
- AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated
- AM_RANGE(0xe000, 0xe001) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xe002, 0xe07f) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xe0a0, 0xefff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w)
- AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0xf024, 0xf03f) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_control_reg_r, dmf2_control_reg_w)
+ map(0xf000, 0xf7ff).mirror(0xf0000).ram().share("s09ram"); // 2k ram for piaide on s09 board
+ map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800);
+}
+
+void swtpc09_state::uniflex_dmf2_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated
+ map(0xe000, 0xe001).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe002, 0xe07f).mirror(0xf0000).noprw();
+ map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xe0a0, 0xefff).mirror(0xf0000).noprw();
+ map(0xf000, 0xf01f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::m6844_r), FUNC(swtpc09_state::m6844_w));
+ map(0xf020, 0xf023).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0xf024, 0xf03f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf2_control_reg_r), FUNC(swtpc09_state::dmf2_control_reg_w));
//AM_RANGE(0xf042, 0xf7ff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(swtpc09_state::uniflex_dmf3_mem)
- AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated
- AM_RANGE(0xe000, 0xe001) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xe002, 0xe07f) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xe0a0, 0xefff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w)
- AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0xf024, 0xf024) AM_MIRROR(0xf0000) AM_READWRITE(dmf3_control_reg_r, dmf3_control_reg_w)
- AM_RANGE(0xf025, 0xf025) AM_MIRROR(0xf0000) AM_READWRITE(dmf3_dma_address_reg_r, dmf3_dma_address_reg_w)
+ map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800);
+}
+
+void swtpc09_state::uniflex_dmf3_mem(address_map &map)
+{
+ map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated
+ map(0xe000, 0xe001).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xe002, 0xe07f).mirror(0xf0000).noprw();
+ map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xe0a0, 0xefff).mirror(0xf0000).noprw();
+ map(0xf000, 0xf01f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::m6844_r), FUNC(swtpc09_state::m6844_w));
+ map(0xf020, 0xf023).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0xf024, 0xf024).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf3_control_reg_r), FUNC(swtpc09_state::dmf3_control_reg_w));
+ map(0xf025, 0xf025).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf3_dma_address_reg_r), FUNC(swtpc09_state::dmf3_dma_address_reg_w));
//AM_RANGE(0xf030, 0xf03f) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf040, 0xf04f) AM_MIRROR(0xf0000) AM_DEVREADWRITE("via", via6522_device, read, write)
+ map(0xf040, 0xf04f).mirror(0xf0000).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
//AM_RANGE(0xf050, 0xf7ff) AM_MIRROR(0xf0000) AM_NOP
- AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800)
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800);
+}
/* Input ports */
diff --git a/src/mame/drivers/swyft.cpp b/src/mame/drivers/swyft.cpp
index 78605d70189..be50c5138bc 100644
--- a/src/mame/drivers/swyft.cpp
+++ b/src/mame/drivers/swyft.cpp
@@ -570,16 +570,17 @@ x x x x 1 1 ?1? ?0? ? 1 0 0 x x * * * * x x
*/
-ADDRESS_MAP_START(swyft_state::swyft_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM // 64 KB ROM
- AM_RANGE(0x040000, 0x07ffff) AM_RAM AM_SHARE("p_swyft_vram") // 256 KB RAM
- AM_RANGE(0x0d0000, 0x0d000f) AM_READ(swyft_d0000) // status of something? reads from d0000, d0004, d0008, d000a, d000e
- AM_RANGE(0x0e1000, 0x0e1000) AM_DEVWRITE("acia6850", acia6850_device, control_w) // 6850 ACIA lives here
- AM_RANGE(0x0e2000, 0x0e2fff) AM_READWRITE(swyft_via0_r, swyft_via0_w) // io area with selector on a9 a8 a7 a6?
- AM_RANGE(0x0e4000, 0x0e4fff) AM_READWRITE(swyft_via1_r, swyft_via1_w)
-ADDRESS_MAP_END
+void swyft_state::swyft_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xfffff);
+ map(0x000000, 0x00ffff).rom(); // 64 KB ROM
+ map(0x040000, 0x07ffff).ram().share("p_swyft_vram"); // 256 KB RAM
+ map(0x0d0000, 0x0d000f).r(this, FUNC(swyft_state::swyft_d0000)); // status of something? reads from d0000, d0004, d0008, d000a, d000e
+ map(0x0e1000, 0x0e1000).w(m_acia6850, FUNC(acia6850_device::control_w)); // 6850 ACIA lives here
+ map(0x0e2000, 0x0e2fff).rw(this, FUNC(swyft_state::swyft_via0_r), FUNC(swyft_state::swyft_via0_w)); // io area with selector on a9 a8 a7 a6?
+ map(0x0e4000, 0x0e4fff).rw(this, FUNC(swyft_state::swyft_via1_r), FUNC(swyft_state::swyft_via1_w));
+}
MACHINE_START_MEMBER(swyft_state,swyft)
{
diff --git a/src/mame/drivers/sym1.cpp b/src/mame/drivers/sym1.cpp
index 5dd82d2e97a..48c79549919 100644
--- a/src/mame/drivers/sym1.cpp
+++ b/src/mame/drivers/sym1.cpp
@@ -300,19 +300,20 @@ void sym1_state::machine_reset()
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(sym1_state::sym1_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM // U12/U13 RAM
- AM_RANGE(0x0400, 0x07ff) AM_RAMBANK("bank2") AM_SHARE("ram_1k")
- AM_RANGE(0x0800, 0x0bff) AM_RAMBANK("bank3") AM_SHARE("ram_2k")
- AM_RANGE(0x0c00, 0x0fff) AM_RAMBANK("bank4") AM_SHARE("ram_3k")
- AM_RANGE(0x8000, 0x8fff) AM_ROM AM_SHARE("monitor") // U20 Monitor ROM
- AM_RANGE(0xa000, 0xa00f) AM_DEVREADWRITE("via1", via6522_device, read, write) // U25 VIA #1
- AM_RANGE(0xa400, 0xa41f) AM_DEVICE("riot", mos6532_new_device, io_map) // U27 RIOT
- AM_RANGE(0xa600, 0xa67f) AM_RAMBANK("bank5") AM_SHARE("riot_ram") // U27 RIOT RAM
- AM_RANGE(0xa800, 0xa80f) AM_DEVREADWRITE("via2", via6522_device, read, write) // U28 VIA #2
- AM_RANGE(0xac00, 0xac0f) AM_DEVREADWRITE("via3", via6522_device, read, write) // U29 VIA #3
- AM_RANGE(0xb000, 0xefff) AM_ROM
-ADDRESS_MAP_END
+void sym1_state::sym1_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram(); // U12/U13 RAM
+ map(0x0400, 0x07ff).bankrw("bank2").share("ram_1k");
+ map(0x0800, 0x0bff).bankrw("bank3").share("ram_2k");
+ map(0x0c00, 0x0fff).bankrw("bank4").share("ram_3k");
+ map(0x8000, 0x8fff).rom().share("monitor"); // U20 Monitor ROM
+ map(0xa000, 0xa00f).rw("via1", FUNC(via6522_device::read), FUNC(via6522_device::write)); // U25 VIA #1
+ map(0xa400, 0xa41f).m("riot", FUNC(mos6532_new_device::io_map)); // U27 RIOT
+ map(0xa600, 0xa67f).bankrw("bank5").share("riot_ram"); // U27 RIOT RAM
+ map(0xa800, 0xa80f).rw("via2", FUNC(via6522_device::read), FUNC(via6522_device::write)); // U28 VIA #2
+ map(0xac00, 0xac0f).rw("via3", FUNC(via6522_device::read), FUNC(via6522_device::write)); // U29 VIA #3
+ map(0xb000, 0xefff).rom();
+}
//**************************************************************************
diff --git a/src/mame/drivers/symbolics.cpp b/src/mame/drivers/symbolics.cpp
index 524b2b19915..f1109759638 100644
--- a/src/mame/drivers/symbolics.cpp
+++ b/src/mame/drivers/symbolics.cpp
@@ -245,14 +245,15 @@ currently dies at context switch code loaded to ram around 38EE0, see patent 488
*/
-ADDRESS_MAP_START(symbolics_state::m68k_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void symbolics_state::m68k_mem(address_map &map)
+{
+ map.unmap_value_high();
//AM_RANGE(0x000000, 0x01ffff) AM_ROM /* ROM lives here */
- AM_RANGE(0x000000, 0x00bfff) AM_ROM
+ map(0x000000, 0x00bfff).rom();
// 0x00c000-0x00ffff is open bus but decoded/auto-DTACKed, does not cause bus error
- AM_RANGE(0x010000, 0x01bfff) AM_ROM
+ map(0x010000, 0x01bfff).rom();
// 0x01c000-0x01ffff is open bus but decoded/auto-DTACKed, does not cause bus error
- AM_RANGE(0x020000, 0x03ffff) AM_RAM AM_REGION("fepdram", 0) /* Local FEP ram seems to be here? there are 18 mcm4164s on the pcb which probably map here, plus 2 parity bits? */
+ map(0x020000, 0x03ffff).ram().region("fepdram", 0); /* Local FEP ram seems to be here? there are 18 mcm4164s on the pcb which probably map here, plus 2 parity bits? */
//AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(ram_parity_hack_r, ram_parity_hack_w)
//AM_RANGE(0x020002, 0x03ffff) AM_RAM AM_REGION("fepdram", 0) /* Local FEP ram seems to be here? there are 18 mcm4164s on the pcb which probably map here, plus 2 parity bits? */
// 2x AM9128-10PC 2048x8 SRAMs @F7 and @G7 map somewhere
@@ -260,12 +261,12 @@ ADDRESS_MAP_START(symbolics_state::m68k_mem)
//AM_RANGE(0x040000, 0xffffff) AM_READ(buserror_r);
//AM_RANGE(0x800000, 0xffffff) AM_RAM /* paged access to lispm ram? */
//FF00B0 is readable, may be to read the MC/SQ/DP/AU continuity lines?
- AM_RANGE(0xff00b0, 0xff00b1) AM_READ(fep_paddle_id_prom_r)
+ map(0xff00b0, 0xff00b1).r(this, FUNC(symbolics_state::fep_paddle_id_prom_r));
//FF00E1 is writable, may control the LBUS_POWER_RESET line, see http://bitsavers.trailing-edge.com/pdf/symbolics/3600_series/Lisp_Machine_Hardware_Memos.pdf page 90
// or may be writing to FEP-LBUS-CONTROL bit 0x02 DOORBELL INT ENABLE ?
// or may actually be setting LBUS_ID_REQ as the patent map shows
//FF018A is writable, gets 0x5555 written to it
-ADDRESS_MAP_END
+}
/******************************************************************************
Input Ports
diff --git a/src/mame/drivers/sys2900.cpp b/src/mame/drivers/sys2900.cpp
index 25049ac5321..cb18a3d8f7c 100644
--- a/src/mame/drivers/sys2900.cpp
+++ b/src/mame/drivers/sys2900.cpp
@@ -77,25 +77,27 @@ protected:
};
-ADDRESS_MAP_START(sys2900_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("boot")
- AM_RANGE( 0x0800, 0xefff ) AM_RAM
- AM_RANGE( 0xf000, 0xf7ff ) AM_ROM
- AM_RANGE( 0xf800, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sys2900_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio2", z80sio_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x80, 0x83) // unknown device, disk related?
- AM_RANGE(0xa0, 0xaf) // unknown device
- AM_RANGE(0xc0, 0xc3) // unknown device
-ADDRESS_MAP_END
+void sys2900_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).bankrw("boot");
+ map(0x0800, 0xefff).ram();
+ map(0xf000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void sys2900_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x20, 0x23).rw("sio1", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x24, 0x27).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x28, 0x2b).rw("sio2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w));
+ map(0x2c, 0x2f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x80, 0x83); // unknown device, disk related?
+ map(0xa0, 0xaf); // unknown device
+ map(0xc0, 0xc3); // unknown device
+}
/* Input ports */
static INPUT_PORTS_START( sys2900 )
diff --git a/src/mame/drivers/sys9002.cpp b/src/mame/drivers/sys9002.cpp
index 6c30d8296e5..d90851fe426 100644
--- a/src/mame/drivers/sys9002.cpp
+++ b/src/mame/drivers/sys9002.cpp
@@ -48,25 +48,27 @@ private:
};
-ADDRESS_MAP_START(sys9002_state::sys9002_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM // 4 * 4K ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM // 4 * 2k RAM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("videoram") // 2k RAM
- AM_RANGE(0xc000, 0xc07f) AM_RAM // ??
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(sys9002_state::sys9002_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void sys9002_state::sys9002_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom(); // 4 * 4K ROM
+ map(0x8000, 0x9fff).ram(); // 4 * 2k RAM
+ map(0xa000, 0xa7ff).ram().share("videoram"); // 2k RAM
+ map(0xc000, 0xc07f).ram(); // ??
+}
+
+void sys9002_state::sys9002_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
//AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // left commented out as mame freezes after about 2 seconds
//AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x09, 0x09) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) // 7 bits even parity, x64
- AM_RANGE(0x11, 0x11) AM_READNOP // continuous read
- AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0x1d, 0x1d) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) // enabled for transmit only, 8 bits odd parity, x64
-ADDRESS_MAP_END
+ map(0x08, 0x08).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x09, 0x09).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 7 bits even parity, x64
+ map(0x11, 0x11).nopr(); // continuous read
+ map(0x1c, 0x1c).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x1d, 0x1d).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // enabled for transmit only, 8 bits odd parity, x64
+}
/* Input ports */
static INPUT_PORTS_START( sys9002 )
diff --git a/src/mame/drivers/systec.cpp b/src/mame/drivers/systec.cpp
index ce1eb5e1bdd..c27ba6c8ae3 100644
--- a/src/mame/drivers/systec.cpp
+++ b/src/mame/drivers/systec.cpp
@@ -56,17 +56,19 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(systec_state::systec_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(systec_state::systec_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x68, 0x6b) // fdc?
- AM_RANGE(0x6c, 0x6c) // motor control?
- AM_RANGE(0xc4, 0xc7) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w)
-ADDRESS_MAP_END
+void systec_state::systec_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).ram().region("maincpu", 0);
+}
+
+void systec_state::systec_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x68, 0x6b); // fdc?
+ map(0x6c, 0x6c); // motor control?
+ map(0xc4, 0xc7).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+}
/* Input ports */
static INPUT_PORTS_START( systec )
diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp
index e49c27adcf1..f95684e8d29 100644
--- a/src/mame/drivers/system1.cpp
+++ b/src/mame/drivers/system1.cpp
@@ -758,72 +758,78 @@ WRITE8_MEMBER(system1_state::nobb_outport24_w)
*************************************/
/* main memory map */
-ADDRESS_MAP_START(system1_state::system1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(system1_videoram_r, system1_videoram_w)
- AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(system1_mixer_collision_r, system1_mixer_collision_w)
- AM_RANGE(0xf400, 0xf7ff) AM_WRITE(system1_mixer_collision_reset_w)
- AM_RANGE(0xf800, 0xfbff) AM_READWRITE(system1_sprite_collision_r, system1_sprite_collision_w)
- AM_RANGE(0xfc00, 0xffff) AM_WRITE(system1_sprite_collision_reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(system1_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(system1_state::banked_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette")
-ADDRESS_MAP_END
+void system1_state::system1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().share("ram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette");
+ map(0xe000, 0xefff).rw(this, FUNC(system1_state::system1_videoram_r), FUNC(system1_state::system1_videoram_w));
+ map(0xf000, 0xf3ff).rw(this, FUNC(system1_state::system1_mixer_collision_r), FUNC(system1_state::system1_mixer_collision_w));
+ map(0xf400, 0xf7ff).w(this, FUNC(system1_state::system1_mixer_collision_reset_w));
+ map(0xf800, 0xfbff).rw(this, FUNC(system1_state::system1_sprite_collision_r), FUNC(system1_state::system1_sprite_collision_w));
+ map(0xfc00, 0xffff).w(this, FUNC(system1_state::system1_sprite_collision_reset_w));
+}
+
+void system1_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xcfff).ram().share("ram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette");
+}
+
+void system1_state::banked_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+ map(0xc000, 0xcfff).ram().share("ram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette");
+}
/* same as normal System 1 except address map is shuffled (RAM/collision are swapped) */
-ADDRESS_MAP_START(system1_state::nobo_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc3ff) AM_READWRITE(system1_mixer_collision_r, system1_mixer_collision_w)
- AM_RANGE(0xc400, 0xc7ff) AM_WRITE(system1_mixer_collision_reset_w)
- AM_RANGE(0xc800, 0xcbff) AM_READWRITE(system1_sprite_collision_r, system1_sprite_collision_w)
- AM_RANGE(0xcc00, 0xcfff) AM_WRITE(system1_sprite_collision_reset_w)
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xefff) AM_READWRITE(system1_videoram_r, system1_videoram_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+void system1_state::nobo_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc3ff).rw(this, FUNC(system1_state::system1_mixer_collision_r), FUNC(system1_state::system1_mixer_collision_w));
+ map(0xc400, 0xc7ff).w(this, FUNC(system1_state::system1_mixer_collision_reset_w));
+ map(0xc800, 0xcbff).rw(this, FUNC(system1_state::system1_sprite_collision_r), FUNC(system1_state::system1_sprite_collision_w));
+ map(0xcc00, 0xcfff).w(this, FUNC(system1_state::system1_sprite_collision_reset_w));
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette");
+ map(0xe000, 0xefff).rw(this, FUNC(system1_state::system1_videoram_r), FUNC(system1_state::system1_videoram_w));
+ map(0xf000, 0xffff).ram().share("ram");
+}
/* I/O map for systems with an 8255 PPI */
-ADDRESS_MAP_START(system1_state::system1_ppi_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("P1")
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("P2")
- AM_RANGE(0x08, 0x08) AM_MIRROR(0x03) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x02) AM_READ_PORT("SWA") /* DIP2 */
- AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x02) AM_READ_PORT("SWB") /* DIP1 some games read it from here... */
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_READ_PORT("SWB") /* DIP1 ... and some others from here but there are games which check BOTH! */
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+void system1_state::system1_ppi_io_map(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x00).mirror(0x03).portr("P1");
+ map(0x04, 0x04).mirror(0x03).portr("P2");
+ map(0x08, 0x08).mirror(0x03).portr("SYSTEM");
+ map(0x0c, 0x0c).mirror(0x02).portr("SWA"); /* DIP2 */
+ map(0x0d, 0x0d).mirror(0x02).portr("SWB"); /* DIP1 some games read it from here... */
+ map(0x10, 0x10).mirror(0x03).portr("SWB"); /* DIP1 ... and some others from here but there are games which check BOTH! */
+ map(0x14, 0x17).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* I/O map for systems with a Z80 PIO chip */
-ADDRESS_MAP_START(system1_state::system1_pio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("P1")
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("P2")
- AM_RANGE(0x08, 0x08) AM_MIRROR(0x03) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x02) AM_READ_PORT("SWA") /* DIP2 */
- AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x02) AM_READ_PORT("SWB") /* DIP1 some games read it from here... */
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_READ_PORT("SWB") /* DIP1 ... and some others from here but there are games which check BOTH! */
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pio", z80pio_device, read, write)
-ADDRESS_MAP_END
+void system1_state::system1_pio_io_map(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x00).mirror(0x03).portr("P1");
+ map(0x04, 0x04).mirror(0x03).portr("P2");
+ map(0x08, 0x08).mirror(0x03).portr("SYSTEM");
+ map(0x0c, 0x0c).mirror(0x02).portr("SWA"); /* DIP2 */
+ map(0x0d, 0x0d).mirror(0x02).portr("SWB"); /* DIP1 some games read it from here... */
+ map(0x10, 0x10).mirror(0x03).portr("SWB"); /* DIP1 ... and some others from here but there are games which check BOTH! */
+ map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
@@ -833,13 +839,14 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(system1_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn2", sn76489a_device, write)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_READ(sound_data_r)
-ADDRESS_MAP_END
+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(0xe000, 0xe000).mirror(0x1fff).r(this, FUNC(system1_state::sound_data_r));
+}
@@ -849,9 +856,10 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(system1_state::mcu_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mcu_io_r, mcu_io_w)
-ADDRESS_MAP_END
+void system1_state::mcu_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(system1_state::mcu_io_r), FUNC(system1_state::mcu_io_w));
+}
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index b7128791afc..3ee6a1bbc98 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -138,32 +138,33 @@ WRITE8_MEMBER(segas1x_bootleg_state::soundbank_msm_w)
}
-ADDRESS_MAP_START(segas1x_bootleg_state::shinobib_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM // tilemap ram on the original, used as a buffer on the bootlegs
- AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x411000, 0x411fff) AM_RAM AM_SHARE("bg0_tileram")
- AM_RANGE(0x412000, 0x412fff) AM_RAM AM_SHARE("bg1_tileram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+void segas1x_bootleg_state::shinobib_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x40ffff).ram(); // tilemap ram on the original, used as a buffer on the bootlegs
+ map(0x410000, 0x410fff).ram().share("textram");
+ map(0x411000, 0x411fff).ram().share("bg0_tileram");
+ map(0x412000, 0x412fff).ram().share("bg1_tileram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
// AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc43000, 0xc43001) AM_WRITENOP
- AM_RANGE(0xc44000, 0xc44001) AM_NOP
- AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w)
- AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w)
- AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w)
- AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w)
- AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w)
- AM_RANGE(0xc60000, 0xc60001) AM_READNOP
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41006, 0xc41007).portr("P2");
+ map(0xc42000, 0xc42001).portr("DSW1");
+ map(0xc42002, 0xc42003).portr("DSW2");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc43000, 0xc43001).nopw();
+ map(0xc44000, 0xc44001).noprw();
+ map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w));
+ map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w));
+ map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w));
+ map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w));
+ map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w));
+ map(0xc60000, 0xc60001).nopr();
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
/***************************************************************************/
@@ -183,31 +184,32 @@ WRITE16_MEMBER(segas1x_bootleg_state::sys16_coinctrl_w)
}
}
-ADDRESS_MAP_START(segas1x_bootleg_state::passshtb_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
-
- AM_RANGE(0x400000, 0x407fff) AM_RAM // tilemap ram on original, buffer on bootleg
- AM_RANGE(0x409000, 0x409fff) AM_RAM AM_SHARE("bg0_tileram")
- AM_RANGE(0x40a000, 0x40afff) AM_RAM AM_SHARE("bg1_tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram")
-
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w)
- AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w)
- AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w)
- AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w)
- AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w)
-
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::passshtb_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+
+ map(0x400000, 0x407fff).ram(); // tilemap ram on original, buffer on bootleg
+ map(0x409000, 0x409fff).ram().share("bg0_tileram");
+ map(0x40a000, 0x40afff).ram().share("bg1_tileram");
+ map(0x410000, 0x410fff).ram().share("textram");
+
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42000, 0xc42001).portr("DSW2");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w));
+ map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w));
+ map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w));
+ map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w));
+ map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w));
+
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
/***************************************************************************/
@@ -263,34 +265,35 @@ READ16_MEMBER(segas1x_bootleg_state::passht4b_io3_r)
return m_passht4b_io3_val;
}
-ADDRESS_MAP_START(segas1x_bootleg_state::passht4b_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x400000, 0x407fff) AM_RAM // tilemap ram on original, buffer on bootleg
- AM_RANGE(0x409000, 0x409fff) AM_RAM AM_SHARE("bg0_tileram")
- AM_RANGE(0x40a000, 0x40afff) AM_RAM AM_SHARE("bg1_tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc41000, 0xc41001) AM_READ(passht4b_service_r)
- AM_RANGE(0xc41002, 0xc41003) AM_READ(passht4b_io1_r)
- AM_RANGE(0xc41004, 0xc41005) AM_READ(passht4b_io2_r)
- AM_RANGE(0xc41006, 0xc41007) AM_READ(passht4b_io3_r)
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc43000, 0xc43001) AM_READ_PORT("P1") // test mode only
- AM_RANGE(0xc43002, 0xc43003) AM_READ_PORT("P2")
- AM_RANGE(0xc43004, 0xc43005) AM_READ_PORT("P3")
- AM_RANGE(0xc43006, 0xc43007) AM_READ_PORT("P4")
- AM_RANGE(0xc4600a, 0xc4600b) AM_WRITE(sys16_coinctrl_w) /* coin counter doesn't work */
- AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w)
- AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w)
- AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w)
- AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w)
- AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w)
-
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::passht4b_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x400000, 0x407fff).ram(); // tilemap ram on original, buffer on bootleg
+ map(0x409000, 0x409fff).ram().share("bg0_tileram");
+ map(0x40a000, 0x40afff).ram().share("bg1_tileram");
+ map(0x410000, 0x410fff).ram().share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc41000, 0xc41001).r(this, FUNC(segas1x_bootleg_state::passht4b_service_r));
+ map(0xc41002, 0xc41003).r(this, FUNC(segas1x_bootleg_state::passht4b_io1_r));
+ map(0xc41004, 0xc41005).r(this, FUNC(segas1x_bootleg_state::passht4b_io2_r));
+ map(0xc41006, 0xc41007).r(this, FUNC(segas1x_bootleg_state::passht4b_io3_r));
+ map(0xc42000, 0xc42001).portr("DSW2");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc43000, 0xc43001).portr("P1"); // test mode only
+ map(0xc43002, 0xc43003).portr("P2");
+ map(0xc43004, 0xc43005).portr("P3");
+ map(0xc43006, 0xc43007).portr("P4");
+ map(0xc4600a, 0xc4600b).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); /* coin counter doesn't work */
+ map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w));
+ map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w));
+ map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w));
+ map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w));
+ map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w));
+
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
/***************************************************************************/
@@ -310,30 +313,31 @@ WRITE16_MEMBER(segas1x_bootleg_state::sys16_tilebank_w)
}
}
-ADDRESS_MAP_START(segas1x_bootleg_state::wb3bbl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(sys16_tilebank_w)
- AM_RANGE(0x400000, 0x407fff) AM_RAM // tilemap ram on the original, used as a buffer on the bootlegs
- AM_RANGE(0x409000, 0x409fff) AM_RAM AM_SHARE("bg0_tileram")
- AM_RANGE(0x40a000, 0x40afff) AM_RAM AM_SHARE("bg1_tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc44000, 0xc44001) AM_WRITENOP
- AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w)
- AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w)
- AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w)
- AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w)
- AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w)
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::wb3bbl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x3f0000, 0x3fffff).w(this, FUNC(segas1x_bootleg_state::sys16_tilebank_w));
+ map(0x400000, 0x407fff).ram(); // tilemap ram on the original, used as a buffer on the bootlegs
+ map(0x409000, 0x409fff).ram().share("bg0_tileram");
+ map(0x40a000, 0x40afff).ram().share("bg1_tileram");
+ map(0x410000, 0x410fff).ram().share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc42000, 0xc42001).portr("DSW2");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc44000, 0xc44001).nopw();
+ map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w));
+ map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w));
+ map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w));
+ map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w));
+ map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w));
+ map(0xff0000, 0xffffff).ram(); // work ram
+}
/***************************************************************************
@@ -418,34 +422,37 @@ WRITE8_MEMBER(segas1x_bootleg_state::tturfbl_soundbank_w)
}
}
-ADDRESS_MAP_START(segas1x_bootleg_state::tturfbl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_READ(tturfbl_soundbank_r)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(tturfbl_soundbank_w)
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(tturfbl_msm5205_data_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas1x_bootleg_state::tturfbl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::tturfbl_soundbank_r));
+ map(0xe000, 0xe000).w(this, FUNC(segas1x_bootleg_state::tturfbl_soundbank_w));
+ map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).w(this, FUNC(segas1x_bootleg_state::tturfbl_msm5205_data_w));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segas1x_bootleg_state::tturfbl_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITENOP
- AM_RANGE(0x80, 0x80) AM_NOP
-ADDRESS_MAP_END
+void segas1x_bootleg_state::tturfbl_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).nopw();
+ map(0x80, 0x80).noprw();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(segas1x_bootleg_state::shinobi_datsu_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xe400, 0xe401) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xe800, 0xe800) AM_READ(sound_command_irq_r)
- AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(soundbank_msm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas1x_bootleg_state::shinobi_datsu_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xe000, 0xe001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xe400, 0xe401).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xe800, 0xe800).r(this, FUNC(segas1x_bootleg_state::sound_command_irq_r));
+ map(0xec00, 0xec00).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xf000, 0xf000).w(this, FUNC(segas1x_bootleg_state::soundbank_msm_w));
+ map(0xf800, 0xffff).ram();
+}
WRITE_LINE_MEMBER(segas1x_bootleg_state::datsu_msm5205_callback)
{
@@ -459,26 +466,29 @@ WRITE_LINE_MEMBER(segas1x_bootleg_state::datsu_msm5205_callback)
/*******************************************************************************/
-ADDRESS_MAP_START(segas1x_bootleg_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segas1x_bootleg_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
// 7759
-ADDRESS_MAP_START(segas1x_bootleg_state::sound_7759_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sound_7759_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xdfff).bankr("bank1");
+ map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf800, 0xffff).ram();
+}
WRITE8_MEMBER(segas1x_bootleg_state::upd7759_bank_w)//*
@@ -491,13 +501,14 @@ WRITE8_MEMBER(segas1x_bootleg_state::upd7759_bank_w)//*
}
-ADDRESS_MAP_START(segas1x_bootleg_state::sound_7759_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x40, 0x40) AM_WRITE(upd7759_bank_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("7759", upd7759_device, port_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sound_7759_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x40, 0x40).w(this, FUNC(segas1x_bootleg_state::upd7759_bank_w));
+ map(0x80, 0x80).w(m_upd7759, FUNC(upd7759_device::port_w));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/***************************************************************************/
@@ -584,55 +595,58 @@ WRITE16_MEMBER(segas1x_bootleg_state::s16bl_bgscrolly_w)
}
-ADDRESS_MAP_START(segas1x_bootleg_state::goldnaxeb1_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x118000, 0x118001) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0x118008, 0x118009) AM_WRITE(s16bl_fgscrollx_bank_w) // and tile bank
- AM_RANGE(0x118010, 0x118011) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0x118018, 0x118019) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0x118020, 0x118021) AM_WRITE(s16bl_fgpage_w)
- AM_RANGE(0x118028, 0x118029) AM_WRITE(s16bl_bgpage_w)
- AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2")
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc43000, 0xc43001) AM_WRITENOP
- AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP
- AM_RANGE(0xc80000, 0xc80001) AM_WRITENOP
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas1x_bootleg_state::bayrouteb1_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x500000, 0x503fff) AM_RAM // work ram
- AM_RANGE(0x600000, 0x600fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x710000, 0x710fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x718000, 0x718001) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0x718008, 0x718009) AM_WRITE(s16bl_fgscrollx_bank_w) // and tile bank
- AM_RANGE(0x718010, 0x718011) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0x718018, 0x718019) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0x718020, 0x718021) AM_WRITE(s16bl_fgpage_w)
- AM_RANGE(0x718028, 0x718029) AM_WRITE(s16bl_bgpage_w)
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x901000, 0x901001) AM_READ_PORT("SERVICE") AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0x901002, 0x901003) AM_READ_PORT("P1")
- AM_RANGE(0x901006, 0x901007) AM_READ_PORT("P2")
- AM_RANGE(0x902000, 0x902001) AM_READ_PORT("DSW2")
- AM_RANGE(0x902002, 0x902003) AM_READ_PORT("DSW1")
- AM_RANGE(0x902006, 0x902007) AM_WRITE(sound_command_irq_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas1x_bootleg_state::decrypted_opcodes_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
+void segas1x_bootleg_state::goldnaxeb1_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x100000, 0x10ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x110000, 0x110fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x118000, 0x118001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0x118008, 0x118009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); // and tile bank
+ map(0x118010, 0x118011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0x118018, 0x118019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0x118020, 0x118021).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w));
+ map(0x118028, 0x118029).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w));
+ map(0x140000, 0x143fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0x200000, 0x200fff).ram().share("sprites");
+ map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41006, 0xc41007).portr("P2");
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42000, 0xc42001).portr("DSW2");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc43000, 0xc43001).nopw();
+ map(0xc43034, 0xc43035).nopw();
+ map(0xc80000, 0xc80001).nopw();
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
+
+void segas1x_bootleg_state::bayrouteb1_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x500000, 0x503fff).ram(); // work ram
+ map(0x600000, 0x600fff).ram().share("sprites");
+ map(0x700000, 0x70ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x710000, 0x710fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x718000, 0x718001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0x718008, 0x718009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); // and tile bank
+ map(0x718010, 0x718011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0x718018, 0x718019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0x718020, 0x718021).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w));
+ map(0x718028, 0x718029).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w));
+ map(0x800000, 0x800fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0x901000, 0x901001).portr("SERVICE").w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0x901002, 0x901003).portr("P1");
+ map(0x901006, 0x901007).portr("P2");
+ map(0x902000, 0x902001).portr("DSW2");
+ map(0x902002, 0x902003).portr("DSW1");
+ map(0x902006, 0x902007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+}
+
+void segas1x_bootleg_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom().share("decrypted_opcodes");
+}
void segas1x_bootleg_state::datsu_set_pages( )
{
@@ -678,56 +692,58 @@ WRITE16_MEMBER(segas1x_bootleg_state::datsu_page3_w)
datsu_set_pages();
}
-ADDRESS_MAP_START(segas1x_bootleg_state::bayrouteb2_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x500000, 0x503fff) AM_RAM // work ram
- AM_RANGE(0x600000, 0x600fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x710000, 0x710fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x718000, 0x718001) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0x718008, 0x718009) AM_WRITE(s16bl_fgscrollx_bank_w) // and tile bank
- AM_RANGE(0x718010, 0x718011) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0x718018, 0x718019) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0x718020, 0x718021) AM_WRITE(datsu_page0_w)
- AM_RANGE(0x718022, 0x718023) AM_WRITE(datsu_page1_w)
- AM_RANGE(0x718024, 0x718025) AM_WRITE(datsu_page2_w)
- AM_RANGE(0x718026, 0x718027) AM_WRITE(datsu_page3_w)
-
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1")
- AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2")
- AM_RANGE(0x900006, 0x900007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0x901000, 0x901001) AM_READ_PORT("SERVICE") AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0x901002, 0x901003) AM_READ_PORT("P1")
- AM_RANGE(0x901006, 0x901007) AM_READ_PORT("P2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas1x_bootleg_state::dduxbl_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(sys16_tilebank_w)
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xC46000, 0xC46001) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0xC46008, 0xC46009) AM_WRITE(s16bl_fgscrollx_w)
- AM_RANGE(0xC46010, 0xC46011) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0xC46018, 0xC46019) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0xC46020, 0xC46021) AM_WRITE(datsu_page0_w)
- AM_RANGE(0xC46022, 0xC46023) AM_WRITE(datsu_page1_w)
- AM_RANGE(0xC46024, 0xC46025) AM_WRITE(datsu_page2_w)
- AM_RANGE(0xC46026, 0xC46027) AM_WRITE(datsu_page3_w)
-
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::bayrouteb2_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x500000, 0x503fff).ram(); // work ram
+ map(0x600000, 0x600fff).ram().share("sprites");
+ map(0x700000, 0x70ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x710000, 0x710fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x718000, 0x718001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0x718008, 0x718009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); // and tile bank
+ map(0x718010, 0x718011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0x718018, 0x718019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0x718020, 0x718021).w(this, FUNC(segas1x_bootleg_state::datsu_page0_w));
+ map(0x718022, 0x718023).w(this, FUNC(segas1x_bootleg_state::datsu_page1_w));
+ map(0x718024, 0x718025).w(this, FUNC(segas1x_bootleg_state::datsu_page2_w));
+ map(0x718026, 0x718027).w(this, FUNC(segas1x_bootleg_state::datsu_page3_w));
+
+ map(0x800000, 0x800fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0x900000, 0x900001).portr("DSW1");
+ map(0x900002, 0x900003).portr("DSW2");
+ map(0x900006, 0x900007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0x901000, 0x901001).portr("SERVICE").w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0x901002, 0x901003).portr("P1");
+ map(0x901006, 0x901007).portr("P2");
+}
+
+void segas1x_bootleg_state::dduxbl_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x3f0000, 0x3fffff).w(this, FUNC(segas1x_bootleg_state::sys16_tilebank_w));
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc40006, 0xc40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42000, 0xc42001).portr("DSW2");
+
+ map(0xC46000, 0xC46001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0xC46008, 0xC46009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w));
+ map(0xC46010, 0xC46011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0xC46018, 0xC46019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0xC46020, 0xC46021).w(this, FUNC(segas1x_bootleg_state::datsu_page0_w));
+ map(0xC46022, 0xC46023).w(this, FUNC(segas1x_bootleg_state::datsu_page1_w));
+ map(0xC46024, 0xC46025).w(this, FUNC(segas1x_bootleg_state::datsu_page2_w));
+ map(0xC46026, 0xC46027).w(this, FUNC(segas1x_bootleg_state::datsu_page3_w));
+
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
WRITE16_MEMBER(segas1x_bootleg_state::goldnaxeb2_fgscrollx_w)
{
@@ -795,29 +811,30 @@ WRITE16_MEMBER(segas1x_bootleg_state::goldnaxeb2_bgpage_w)
set_bg_page(page ^ 0xffff);
}
-ADDRESS_MAP_START(segas1x_bootleg_state::goldnaxeb2_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("DSW2") AM_WRITENOP
- AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc43000, 0xc43001) AM_WRITENOP
- AM_RANGE(0xc44000, 0xc44001) AM_WRITE(goldnaxeb2_fgscrolly_w)
- AM_RANGE(0xc44008, 0xc44009) AM_WRITE(goldnaxeb2_fgscrollx_w) // and tile bank
- AM_RANGE(0xc44010, 0xc44011) AM_WRITE(goldnaxeb2_bgscrolly_w)
- AM_RANGE(0xc44018, 0xc44019) AM_WRITE(goldnaxeb2_bgscrollx_w)
- AM_RANGE(0xc44020, 0xc44027) AM_WRITE(goldnaxeb2_bgpage_w) AM_SHARE("gab2_bgpage")
- AM_RANGE(0xc44060, 0xc44067) AM_WRITE(goldnaxeb2_fgpage_w) AM_SHARE("gab2_fgpage")
- AM_RANGE(0xc46000, 0xc46001) AM_WRITENOP
- AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP
- AM_RANGE(0xfe0006, 0xfe0007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::goldnaxeb2_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x100000, 0x10ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x110000, 0x110fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x140000, 0x143fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0x200000, 0x200fff).ram().share("sprites");
+ map(0xc40000, 0xc40001).portr("DSW2").nopw();
+ map(0xc40002, 0xc40003).portr("DSW1");
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc43000, 0xc43001).nopw();
+ map(0xc44000, 0xc44001).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrolly_w));
+ map(0xc44008, 0xc44009).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrollx_w)); // and tile bank
+ map(0xc44010, 0xc44011).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrolly_w));
+ map(0xc44018, 0xc44019).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrollx_w));
+ map(0xc44020, 0xc44027).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgpage_w)).share("gab2_bgpage");
+ map(0xc44060, 0xc44067).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgpage_w)).share("gab2_fgpage");
+ map(0xc46000, 0xc46001).nopw();
+ map(0xc43034, 0xc43035).nopw();
+ map(0xfe0006, 0xfe0007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
/***************************************************************************/
@@ -831,88 +848,91 @@ WRITE16_MEMBER(segas1x_bootleg_state::eswat_tilebank0_w)
}
}
-ADDRESS_MAP_START(segas1x_bootleg_state::eswatbl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
-
- AM_RANGE(0x3e2000, 0x3e2001) AM_WRITE(eswat_tilebank0_w) // external tile bank ( > 0x4000 tiles )
-
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x418000, 0x418001) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0x418008, 0x418009) AM_WRITE(s16bl_bgscrollx_w) // and tile bank
- AM_RANGE(0x418010, 0x418011) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0x418018, 0x418019) AM_WRITE(s16bl_fgscrollx_bank_w)
- AM_RANGE(0x418020, 0x418021) AM_WRITE(s16bl_bgpage_w)
- AM_RANGE(0x418028, 0x418029) AM_WRITE(s16bl_fgpage_w)
-
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2")
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc80000, 0xc80001) AM_WRITENOP
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas1x_bootleg_state::eswatbl2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x123420, 0x12343f) AM_WRITENOP // written on boot only
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x4407ff) AM_WRITENOP // 0xffff, possibly old sprites ram location
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("DSW2") AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") // test mode still reads them from here
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") // test mode still reads them from here
- AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP
- AM_RANGE(0xc44000, 0xc44001) AM_WRITE(goldnaxeb2_fgscrolly_w)
- AM_RANGE(0xc44008, 0xc44009) AM_WRITE(goldnaxeb2_fgscrollx_w) // and tile bank
- AM_RANGE(0xc44010, 0xc44011) AM_WRITE(goldnaxeb2_bgscrolly_w)
- AM_RANGE(0xc44018, 0xc44019) AM_WRITE(goldnaxeb2_bgscrollx_w)
- AM_RANGE(0xc44020, 0xc44027) AM_WRITE(goldnaxeb2_bgpage_w) AM_SHARE("gab2_bgpage")
- AM_RANGE(0xc44028, 0xc44029) AM_WRITENOP
- AM_RANGE(0xc44060, 0xc44067) AM_WRITE(goldnaxeb2_fgpage_w) AM_SHARE("gab2_fgpage")
- AM_RANGE(0xc46000, 0xc46001) AM_NOP
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::eswatbl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+
+ map(0x3e2000, 0x3e2001).w(this, FUNC(segas1x_bootleg_state::eswat_tilebank0_w)); // external tile bank ( > 0x4000 tiles )
+
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x418000, 0x418001).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0x418008, 0x418009).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); // and tile bank
+ map(0x418010, 0x418011).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0x418018, 0x418019).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w));
+ map(0x418020, 0x418021).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w));
+ map(0x418028, 0x418029).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w));
+
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41006, 0xc41007).portr("P2");
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42000, 0xc42001).portr("DSW2");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc80000, 0xc80001).nopw();
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
+
+void segas1x_bootleg_state::eswatbl2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x123420, 0x12343f).nopw(); // written on boot only
+ map(0x200000, 0x200fff).ram().share("sprites");
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x440000, 0x4407ff).nopw(); // 0xffff, possibly old sprites ram location
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc40001).portr("DSW2").w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc40002, 0xc40003).portr("DSW1");
+ map(0xc40006, 0xc40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc42000, 0xc42001).portr("DSW2"); // test mode still reads them from here
+ map(0xc42002, 0xc42003).portr("DSW1"); // test mode still reads them from here
+ map(0xc43034, 0xc43035).nopw();
+ map(0xc44000, 0xc44001).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrolly_w));
+ map(0xc44008, 0xc44009).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrollx_w)); // and tile bank
+ map(0xc44010, 0xc44011).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrolly_w));
+ map(0xc44018, 0xc44019).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrollx_w));
+ map(0xc44020, 0xc44027).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgpage_w)).share("gab2_bgpage");
+ map(0xc44028, 0xc44029).nopw();
+ map(0xc44060, 0xc44067).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgpage_w)).share("gab2_fgpage");
+ map(0xc46000, 0xc46001).noprw();
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
/***************************************************************************/
-ADDRESS_MAP_START(segas1x_bootleg_state::tetrisbl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
-
- AM_RANGE(0x418000, 0x418001) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0x418008, 0x418009) AM_WRITE(s16bl_fgscrollx_w)
- AM_RANGE(0x418010, 0x418011) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0x418018, 0x418019) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0x418020, 0x418021) AM_WRITE(s16bl_fgpage_w)
- AM_RANGE(0x418028, 0x418029) AM_WRITE(s16bl_bgpage_w)
-
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2")
- AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
- AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP
- AM_RANGE(0xc80000, 0xc80001) AM_NOP
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+void segas1x_bootleg_state::tetrisbl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+
+ map(0x418000, 0x418001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0x418008, 0x418009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w));
+ map(0x418010, 0x418011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0x418018, 0x418019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0x418020, 0x418021).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w));
+ map(0x418028, 0x418029).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w));
+
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41006, 0xc41007).portr("P2");
+ map(0xc42000, 0xc42001).portr("DSW2");
+ map(0xc42002, 0xc42003).portr("DSW1");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc43034, 0xc43035).nopw();
+ map(0xc80000, 0xc80001).noprw();
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
READ16_MEMBER(segas1x_bootleg_state::beautyb_unkx_r)
@@ -922,67 +942,69 @@ READ16_MEMBER(segas1x_bootleg_state::beautyb_unkx_r)
return m_beautyb_unkx;
}
-ADDRESS_MAP_START(segas1x_bootleg_state::beautyb_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_WRITENOP
- AM_RANGE(0x010000, 0x03ffff) AM_WRITENOP
+void segas1x_bootleg_state::beautyb_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom().nopw();
+ map(0x010000, 0x03ffff).nopw();
- AM_RANGE(0x0280D6, 0x0280D7) AM_READ(beautyb_unkx_r)
- AM_RANGE(0x0280D8, 0x0280D9) AM_READ(beautyb_unkx_r)
+ map(0x0280D6, 0x0280D7).r(this, FUNC(segas1x_bootleg_state::beautyb_unkx_r));
+ map(0x0280D8, 0x0280D9).r(this, FUNC(segas1x_bootleg_state::beautyb_unkx_r));
- AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(sys16_tilebank_w)
+ map(0x3f0000, 0x3fffff).w(this, FUNC(segas1x_bootleg_state::sys16_tilebank_w));
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x413fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x413fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
- AM_RANGE(0x418000, 0x418001) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0x418008, 0x418009) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0x418010, 0x418011) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0x418018, 0x418019) AM_WRITE(s16bl_fgscrollx_w)
- AM_RANGE(0x418020, 0x418021) AM_WRITE(s16bl_bgpage_w)
- AM_RANGE(0x418028, 0x418029) AM_WRITE(s16bl_fgpage_w)
+ map(0x418000, 0x418001).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0x418008, 0x418009).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0x418010, 0x418011).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0x418018, 0x418019).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w));
+ map(0x418020, 0x418021).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w));
+ map(0x418028, 0x418029).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w));
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
- AM_RANGE(0xc40000, 0xc40001) AM_WRITENOP
- AM_RANGE(0xc80000, 0xc80001) AM_NOP // vblank irq ack
+ map(0xc40000, 0xc40001).nopw();
+ map(0xc80000, 0xc80001).noprw(); // vblank irq ack
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
-ADDRESS_MAP_END
+ map(0xffc000, 0xffffff).ram(); // work ram
+}
/***************************************************************************/
-ADDRESS_MAP_START(segas1x_bootleg_state::tturfbl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM // work ram
- AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x600000, 0x600001) AM_WRITE(sys16_coinctrl_w)
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2")
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1")
- AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE")
- AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1")
- AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2")
- AM_RANGE(0x602000, 0x602001) AM_READ_PORT("DSW2")
- AM_RANGE(0x602002, 0x602003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc44000, 0xc44001) AM_WRITENOP
-
- AM_RANGE(0xC46000, 0xC46001) AM_WRITE(s16bl_fgscrolly_w)
- AM_RANGE(0xC46008, 0xC46009) AM_WRITE(s16bl_fgscrollx_w)
- AM_RANGE(0xC46010, 0xC46011) AM_WRITE(s16bl_bgscrolly_w)
- AM_RANGE(0xC46018, 0xC46019) AM_WRITE(s16bl_bgscrollx_w)
- AM_RANGE(0xC46020, 0xC46021) AM_WRITE(datsu_page0_w)
- AM_RANGE(0xc46022, 0xc46023) AM_WRITE(datsu_page1_w)
- AM_RANGE(0xC46024, 0xC46025) AM_WRITE(datsu_page2_w)
- AM_RANGE(0xC46026, 0xC46027) AM_WRITE(datsu_page3_w)
-ADDRESS_MAP_END
+void segas1x_bootleg_state::tturfbl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x203fff).ram(); // work ram
+ map(0x300000, 0x300fff).ram().share("sprites");
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x500000, 0x500fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0x600000, 0x600001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w));
+ map(0x600000, 0x600001).portr("DSW2");
+ map(0x600002, 0x600003).portr("DSW1");
+ map(0x600006, 0x600007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0x601000, 0x601001).portr("SERVICE");
+ map(0x601002, 0x601003).portr("P1");
+ map(0x601004, 0x601005).portr("P2");
+ map(0x602000, 0x602001).portr("DSW2");
+ map(0x602002, 0x602003).portr("DSW1");
+ map(0xc44000, 0xc44001).nopw();
+
+ map(0xC46000, 0xC46001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w));
+ map(0xC46008, 0xC46009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w));
+ map(0xC46010, 0xC46011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w));
+ map(0xC46018, 0xC46019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w));
+ map(0xC46020, 0xC46021).w(this, FUNC(segas1x_bootleg_state::datsu_page0_w));
+ map(0xc46022, 0xc46023).w(this, FUNC(segas1x_bootleg_state::datsu_page1_w));
+ map(0xC46024, 0xC46025).w(this, FUNC(segas1x_bootleg_state::datsu_page2_w));
+ map(0xC46026, 0xC46027).w(this, FUNC(segas1x_bootleg_state::datsu_page3_w));
+}
/***************************************************************************/
@@ -1011,14 +1033,15 @@ READ8_MEMBER(segas1x_bootleg_state::system18_bank_r)
return 0xff;
}
-ADDRESS_MAP_START(segas1x_bootleg_state::sound_18_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xbfff) AM_READ(system18_bank_r)
+void segas1x_bootleg_state::sound_18_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::system18_bank_r));
/**** D/A register ****/
- AM_RANGE(0xc000, 0xc008) AM_DEVWRITE("5c68", rf5c68_device, rf5c68_w)
- AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("5c68", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w)
- AM_RANGE(0xe000, 0xffff) AM_RAM //??
-ADDRESS_MAP_END
+ map(0xc000, 0xc008).w("5c68", FUNC(rf5c68_device::rf5c68_w));
+ map(0xd000, 0xdfff).rw("5c68", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w));
+ map(0xe000, 0xffff).ram(); //??
+}
WRITE8_MEMBER(segas1x_bootleg_state::sys18_soundbank_w)
@@ -1035,13 +1058,14 @@ WRITE8_MEMBER(segas1x_bootleg_state::sys18_soundbank_w)
m_sound_bank = nullptr;
}
-ADDRESS_MAP_START(segas1x_bootleg_state::sound_18_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("3438.0", ym3438_device, read, write)
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("3438.1", ym3438_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_WRITE(sys18_soundbank_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sound_18_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x83).rw("3438.0", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x90, 0x93).rw("3438.1", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xa0, 0xa0).w(this, FUNC(segas1x_bootleg_state::sys18_soundbank_w));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/***************************************************************************
@@ -1087,44 +1111,46 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(segas1x_bootleg_state::shdancbl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc00000, 0xc0ffff) AM_NOP
- AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("COINAGE")
- AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc44000, 0xc44001) AM_WRITENOP // only used via clr.w after tilebank set
-
- AM_RANGE(0xe40000, 0xe4ffff) AM_NOP
- AM_RANGE(0xfe0020, 0xfe003f) AM_WRITENOP // config regs
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas1x_bootleg_state::shdancbla_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+void segas1x_bootleg_state::shdancbl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0xc00000, 0xc0ffff).noprw();
+ map(0xc40000, 0xc40001).portr("COINAGE");
+ map(0xc40002, 0xc40003).portr("DSW1");
+ map(0xc40006, 0xc40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc44000, 0xc44001).nopw(); // only used via clr.w after tilebank set
+
+ map(0xe40000, 0xe4ffff).noprw();
+ map(0xfe0020, 0xfe003f).nopw(); // config regs
+ map(0xffc000, 0xffffff).ram();
+}
+
+void segas1x_bootleg_state::shdancbla_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
// moved from C4xxxx to E4xxxx
- AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("COINAGE")
- AM_RANGE(0xe40002, 0xe40003) AM_READ_PORT("DSW1")
- AM_RANGE(0xe40006, 0xe40007) AM_WRITE(sound_command_irq_w)
- AM_RANGE(0xe41000, 0xe41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xe41002, 0xe41003) AM_READ_PORT("P1")
- AM_RANGE(0xe41004, 0xe41005) AM_READ_PORT("P2")
+ map(0xe40000, 0xe40001).portr("COINAGE");
+ map(0xe40002, 0xe40003).portr("DSW1");
+ map(0xe40006, 0xe40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w));
+ map(0xe41000, 0xe41001).portr("SERVICE");
+ map(0xe41002, 0xe41003).portr("P1");
+ map(0xe41004, 0xe41005).portr("P2");
//AM_RANGE(0xff8038, 0xff8039) AM_READ(shdancbla_ff8038_r)
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xffc000, 0xffffff).ram();
+}
/***************************************************************************
Sound hardware for Shadow Dancer (Datsu bootleg)
@@ -1208,43 +1234,46 @@ WRITE8_MEMBER(segas1x_bootleg_state::shdancbl_bankctrl_w)
}
}
-ADDRESS_MAP_START(segas1x_bootleg_state::shdancbl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_READ(shdancbl_soundbank_r)
- AM_RANGE(0xc000, 0xc00f) AM_WRITENOP
- AM_RANGE(0xc400, 0xc400) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(shdancbl_msm5205_data_w)
- AM_RANGE(0xcc00, 0xcc03) AM_DEVREADWRITE("3438.0", ym3438_device, read, write)
- AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE("3438.1", ym3438_device, read, write)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(shdancbl_bankctrl_w)
- AM_RANGE(0xdf00, 0xdfff) AM_NOP
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segas1x_bootleg_state::shdancbl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::shdancbl_soundbank_r));
+ map(0xc000, 0xc00f).nopw();
+ map(0xc400, 0xc400).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc800, 0xc800).w(this, FUNC(segas1x_bootleg_state::shdancbl_msm5205_data_w));
+ map(0xcc00, 0xcc03).rw("3438.0", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xd000, 0xd003).rw("3438.1", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xd400, 0xd400).w(this, FUNC(segas1x_bootleg_state::shdancbl_bankctrl_w));
+ map(0xdf00, 0xdfff).noprw();
+ map(0xe000, 0xffff).ram();
+}
-ADDRESS_MAP_START(segas1x_bootleg_state::shdancbl_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xa0, 0xbf) AM_WRITENOP
- AM_RANGE(0xc0, 0xdf) AM_READNOP
-ADDRESS_MAP_END
+void segas1x_bootleg_state::shdancbl_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xa0, 0xbf).nopw();
+ map(0xc0, 0xdf).nopr();
+}
// shdancbla
-ADDRESS_MAP_START(segas1x_bootleg_state::shdancbla_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_READ(shdancbl_soundbank_r)
+void segas1x_bootleg_state::shdancbla_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::shdancbl_soundbank_r));
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("3438.0", ym3438_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc400, 0xc403) AM_DEVREADWRITE("3438.1", ym3438_device, read, write)
+ map(0xc000, 0xc003).rw("3438.0", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc400, 0xc403).rw("3438.1", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
- AM_RANGE(0xd400, 0xd400) AM_WRITENOP
- AM_RANGE(0xd800, 0xd800) AM_WRITENOP
+ map(0xd400, 0xd400).nopw();
+ map(0xd800, 0xd800).nopw();
- AM_RANGE(0xdc00, 0xdc00) AM_WRITENOP
+ map(0xdc00, 0xdc00).nopw();
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe000, 0xffff).ram();
+}
/***************************************************************************
@@ -1252,12 +1281,13 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(segas1x_bootleg_state::mwalkbl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+void segas1x_bootleg_state::mwalkbl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites");
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
/* bootleg video regs */
/*AM_RANGE(0xc00000, 0xc00001) AM_NOP
@@ -1271,20 +1301,20 @@ ADDRESS_MAP_START(segas1x_bootleg_state::mwalkbl_map)
AM_RANGE(0xc46500, 0xc465ff) AM_NOP // scroll?
*/
- AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("COINAGE")
- AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc40006, 0xc40007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
- AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P3")
- AM_RANGE(0xc41008, 0xc41009) AM_READNOP // figure this out, extra input for 3p?
- AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w)
- AM_RANGE(0xc46800, 0xc46801) AM_WRITE(sys18_tilebank_w)
+ map(0xc40000, 0xc40001).portr("COINAGE");
+ map(0xc40002, 0xc40003).portr("DSW1");
+ map(0xc40007, 0xc40007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("P1");
+ map(0xc41004, 0xc41005).portr("P2");
+ map(0xc41006, 0xc41007).portr("P3");
+ map(0xc41008, 0xc41009).nopr(); // figure this out, extra input for 3p?
+ map(0xc46600, 0xc46601).w(this, FUNC(segas1x_bootleg_state::sys18_refreshenable_w));
+ map(0xc46800, 0xc46801).w(this, FUNC(segas1x_bootleg_state::sys18_tilebank_w));
- AM_RANGE(0xfe0020, 0xfe003f) AM_WRITENOP // config regs
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xfe0020, 0xfe003f).nopw(); // config regs
+ map(0xffc000, 0xffffff).ram();
+}
/***************************************************************************
@@ -1300,52 +1330,55 @@ WRITE8_MEMBER(segas1x_bootleg_state::sys18bl_okibank_w) // TODO: verify correctn
}
/* bootleg doesn't have real vdp or i/o */
-ADDRESS_MAP_START(segas1x_bootleg_state::astormbl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("COINAGE")
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW1")
- AM_RANGE(0xa00006, 0xa00007) AM_WRITE(sound_command_nmi_w)
- AM_RANGE(0xa0000e, 0xa0000f) AM_WRITE(sys18_tilebank_w)
- AM_RANGE(0xa01000, 0xa01001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xa01002, 0xa01003) AM_READ_PORT("P1")
- AM_RANGE(0xa01004, 0xa01005) AM_READ_PORT("P2")
- AM_RANGE(0xa01006, 0xa01007) AM_READ_PORT("P3")
- AM_RANGE(0xa02100, 0xa02101) AM_NOP
- AM_RANGE(0xa03000, 0xa03001) AM_NOP
- AM_RANGE(0xa03034, 0xa03035) AM_NOP
+void segas1x_bootleg_state::astormbl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x110000, 0x110fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x140000, 0x140fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram");
+ map(0x200000, 0x200fff).ram().share("sprites");
+ map(0xa00000, 0xa00001).portr("COINAGE");
+ map(0xa00002, 0xa00003).portr("DSW1");
+ map(0xa00006, 0xa00007).w(this, FUNC(segas1x_bootleg_state::sound_command_nmi_w));
+ map(0xa0000e, 0xa0000f).w(this, FUNC(segas1x_bootleg_state::sys18_tilebank_w));
+ map(0xa01000, 0xa01001).portr("SERVICE");
+ map(0xa01002, 0xa01003).portr("P1");
+ map(0xa01004, 0xa01005).portr("P2");
+ map(0xa01006, 0xa01007).portr("P3");
+ map(0xa02100, 0xa02101).noprw();
+ map(0xa03000, 0xa03001).noprw();
+ map(0xa03034, 0xa03035).noprw();
/* bootleg video regs */
- AM_RANGE(0xc00000, 0xc00001) AM_NOP
- AM_RANGE(0xc00002, 0xc00003) AM_NOP
- AM_RANGE(0xc00004, 0xc00005) AM_NOP // tile bank?
- AM_RANGE(0xc00006, 0xc00007) AM_NOP
- AM_RANGE(0xc44000, 0xc44001) AM_NOP
- AM_RANGE(0xc46000, 0xc46001) AM_NOP
- AM_RANGE(0xc46200, 0xc46201) AM_NOP
- AM_RANGE(0xc46400, 0xc464ff) AM_NOP // scroll?
- AM_RANGE(0xc46500, 0xc465ff) AM_NOP // scroll?
+ map(0xc00000, 0xc00001).noprw();
+ map(0xc00002, 0xc00003).noprw();
+ map(0xc00004, 0xc00005).noprw(); // tile bank?
+ map(0xc00006, 0xc00007).noprw();
+ map(0xc44000, 0xc44001).noprw();
+ map(0xc46000, 0xc46001).noprw();
+ map(0xc46200, 0xc46201).noprw();
+ map(0xc46400, 0xc464ff).noprw(); // scroll?
+ map(0xc46500, 0xc465ff).noprw(); // scroll?
- AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w)
- AM_RANGE(0xfe0020, 0xfe003f) AM_WRITENOP
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xc46600, 0xc46601).w(this, FUNC(segas1x_bootleg_state::sys18_refreshenable_w));
+ map(0xfe0020, 0xfe003f).nopw();
+ map(0xffc000, 0xffffff).ram();
+}
-ADDRESS_MAP_START(segas1x_bootleg_state::sys18bl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(sys18bl_okibank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sys18bl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x9000, 0x9000).w(this, FUNC(segas1x_bootleg_state::sys18bl_okibank_w));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x87ff).ram();
+}
-ADDRESS_MAP_START(segas1x_bootleg_state::sys18bl_oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void segas1x_bootleg_state::sys18bl_oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
WRITE16_MEMBER(segas1x_bootleg_state::ddcrewbl_spritebank_w)
{
@@ -1364,48 +1397,49 @@ WRITE16_MEMBER(segas1x_bootleg_state::ddcrewbl_spritebank_w)
// todo: this
-ADDRESS_MAP_START(segas1x_bootleg_state::ddcrewbl_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ok
- AM_RANGE(0x200000, 0x27ffff) AM_ROM // ok
+void segas1x_bootleg_state::ddcrewbl_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom(); // ok
+ map(0x200000, 0x27ffff).rom(); // ok
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") // ok
+ map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram");
+ map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram");
+ map(0x440000, 0x440fff).ram().share("sprites"); // ok
- AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") // ok
+ map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); // ok
- AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // vdp leftovers maybe?
- AM_RANGE(0xc00004, 0xc00005) AM_WRITENOP
- AM_RANGE(0xc00006, 0xc00007) AM_WRITENOP
+ map(0xc00000, 0xc00001).nopw(); // vdp leftovers maybe?
+ map(0xc00004, 0xc00005).nopw();
+ map(0xc00006, 0xc00007).nopw();
- AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("P1")
- AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("P2")
- AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
- AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("COINAGE")
- AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("DSW1")
- AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P3")
+ map(0xc40000, 0xc40001).portr("P1");
+ map(0xc40002, 0xc40003).portr("P2");
+ map(0xc41000, 0xc41001).portr("SERVICE");
+ map(0xc41002, 0xc41003).portr("COINAGE");
+ map(0xc41004, 0xc41005).portr("DSW1");
+ map(0xc41006, 0xc41007).portr("P3");
- AM_RANGE(0xc44000, 0xc44001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0xc44001, 0xc44001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w)
+ map(0xc46600, 0xc46601).w(this, FUNC(segas1x_bootleg_state::sys18_refreshenable_w));
- AM_RANGE(0xc46038, 0xc4603f) AM_WRITE(ddcrewbl_spritebank_w) // ok
+ map(0xc46038, 0xc4603f).w(this, FUNC(segas1x_bootleg_state::ddcrewbl_spritebank_w)); // ok
- AM_RANGE(0xc46000, 0xc46001) AM_WRITENOP
- AM_RANGE(0xc46010, 0xc46011) AM_WRITENOP
- AM_RANGE(0xc46020, 0xc46021) AM_WRITENOP
+ map(0xc46000, 0xc46001).nopw();
+ map(0xc46010, 0xc46011).nopw();
+ map(0xc46020, 0xc46021).nopw();
- AM_RANGE(0xc46040, 0xc46041) AM_WRITENOP
- AM_RANGE(0xc46050, 0xc46051) AM_WRITENOP
+ map(0xc46040, 0xc46041).nopw();
+ map(0xc46050, 0xc46051).nopw();
- AM_RANGE(0xc46060, 0xc46061) AM_WRITENOP
- AM_RANGE(0xc46062, 0xc46063) AM_WRITENOP
- AM_RANGE(0xc46064, 0xc46065) AM_WRITENOP
+ map(0xc46060, 0xc46061).nopw();
+ map(0xc46062, 0xc46063).nopw();
+ map(0xc46064, 0xc46065).nopw();
- AM_RANGE(0xc46070, 0xc46071) AM_WRITENOP
+ map(0xc46070, 0xc46071).nopw();
- AM_RANGE(0xffc000, 0xffffff) AM_RAM // ok
-ADDRESS_MAP_END
+ map(0xffc000, 0xffffff).ram(); // ok
+}
/*************************************
*
diff --git a/src/mame/drivers/tagteam.cpp b/src/mame/drivers/tagteam.cpp
index 2811347c761..f357602d65f 100644
--- a/src/mame/drivers/tagteam.cpp
+++ b/src/mame/drivers/tagteam.cpp
@@ -47,19 +47,20 @@ WRITE8_MEMBER(tagteam_state::irq_clear_w)
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
}
-ADDRESS_MAP_START(tagteam_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("P2") AM_WRITE(flipscreen_w)
- AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1") AM_WRITE(control_w)
- AM_RANGE(0x2002, 0x2002) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW2") AM_WRITE(irq_clear_w)
- AM_RANGE(0x4000, 0x43ff) AM_READWRITE(mirrorvideoram_r, mirrorvideoram_w)
- AM_RANGE(0x4400, 0x47ff) AM_READWRITE(mirrorcolorram_r, mirrorcolorram_w)
- AM_RANGE(0x4800, 0x4fff) AM_READONLY
- AM_RANGE(0x4800, 0x4bff) AM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tagteam_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x2000).portr("P2").w(this, FUNC(tagteam_state::flipscreen_w));
+ map(0x2001, 0x2001).portr("P1").w(this, FUNC(tagteam_state::control_w));
+ map(0x2002, 0x2002).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x2003, 0x2003).portr("DSW2").w(this, FUNC(tagteam_state::irq_clear_w));
+ map(0x4000, 0x43ff).rw(this, FUNC(tagteam_state::mirrorvideoram_r), FUNC(tagteam_state::mirrorvideoram_w));
+ map(0x4400, 0x47ff).rw(this, FUNC(tagteam_state::mirrorcolorram_r), FUNC(tagteam_state::mirrorcolorram_w));
+ map(0x4800, 0x4fff).readonly();
+ map(0x4800, 0x4bff).w(this, FUNC(tagteam_state::videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).w(this, FUNC(tagteam_state::colorram_w)).share("colorram");
+ map(0x8000, 0xffff).rom();
+}
WRITE8_MEMBER(tagteam_state::sound_nmi_mask_w)
{
@@ -67,15 +68,16 @@ WRITE8_MEMBER(tagteam_state::sound_nmi_mask_w)
}
/* Same as Syusse Oozumou */
-ADDRESS_MAP_START(tagteam_state::sound_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
- AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w)
- AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tagteam_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram();
+ map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x2002, 0x2003).w("ay2", FUNC(ay8910_device::data_address_w));
+ map(0x2004, 0x2004).w("dac", FUNC(dac_byte_interface::write));
+ map(0x2005, 0x2005).w(this, FUNC(tagteam_state::sound_nmi_mask_w));
+ map(0x2007, 0x2007).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(tagteam_state::coin_inserted)
diff --git a/src/mame/drivers/tail2nos.cpp b/src/mame/drivers/tail2nos.cpp
index 5eb7237b3aa..d5896f2dd5f 100644
--- a/src/mame/drivers/tail2nos.cpp
+++ b/src/mame/drivers/tail2nos.cpp
@@ -35,40 +35,44 @@ WRITE8_MEMBER(tail2nos_state::sound_bankswitch_w)
membank("bank3")->set_entry(data & 0x01);
}
-ADDRESS_MAP_START(tail2nos_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("user1", 0) /* extra ROM */
- AM_RANGE(0x2c0000, 0x2dffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(tail2nos_zoomdata_w) AM_SHARE("k051316")
- AM_RANGE(0x500000, 0x500fff) AM_DEVREADWRITE8("k051316", k051316_device, read, write, 0x00ff)
- AM_RANGE(0x510000, 0x51001f) AM_DEVWRITE8("k051316", k051316_device, ctrl_w, 0x00ff)
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */
- AM_RANGE(0xffc000, 0xffc2ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xffc300, 0xffcfff) AM_RAM
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(tail2nos_txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(tail2nos_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1")
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
- AM_RANGE(0xfff008, 0xfff009) AM_READ8(sound_semaphore_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
- AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tail2nos_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tail2nos_state::sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x08, 0x0b) AM_DEVWRITE("ymsnd", ym2608_device, write)
+void tail2nos_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x27ffff).rom().region("user1", 0); /* extra ROM */
+ map(0x2c0000, 0x2dffff).rom().region("user2", 0);
+ map(0x400000, 0x41ffff).ram().w(this, FUNC(tail2nos_state::tail2nos_zoomdata_w)).share("k051316");
+ map(0x500000, 0x500fff).rw(m_k051316, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff);
+ map(0x510000, 0x51001f).w(m_k051316, FUNC(k051316_device::ctrl_w)).umask16(0x00ff);
+ map(0xff8000, 0xffbfff).ram(); /* work RAM */
+ map(0xffc000, 0xffc2ff).ram().share("spriteram");
+ map(0xffc300, 0xffcfff).ram();
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(tail2nos_state::tail2nos_txvideoram_w)).share("txvideoram");
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(tail2nos_state::tail2nos_gfxbank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff004, 0xfff005).portr("DSW");
+ map(0xfff009, 0xfff009).r(this, FUNC(tail2nos_state::sound_semaphore_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+ map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
+
+void tail2nos_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank3");
+}
+
+void tail2nos_state::sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x07, 0x07).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x08, 0x0b).w("ymsnd", FUNC(ym2608_device::write));
#if 0
- AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_device, read)
+ map(0x18, 0x1b).r("ymsnd", FUNC(ym2608_device::read));
#endif
-ADDRESS_MAP_END
+}
CUSTOM_INPUT_MEMBER(tail2nos_state::analog_in_r)
{
diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp
index 5e5bb110bac..f923b6996e2 100644
--- a/src/mame/drivers/taito.cpp
+++ b/src/mame/drivers/taito.cpp
@@ -104,88 +104,94 @@ private:
};
-ADDRESS_MAP_START(taito_state::taito_map)
- AM_RANGE(0x0000, 0x27ff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x0080) AM_READ_PORT("X0")
- AM_RANGE(0x2801, 0x2801) AM_MIRROR(0x0080) AM_READ_PORT("X1")
- AM_RANGE(0x2802, 0x2802) AM_MIRROR(0x0080) AM_READ_PORT("X2")
- AM_RANGE(0x2803, 0x2803) AM_MIRROR(0x0080) AM_READ_PORT("X3")
- AM_RANGE(0x2804, 0x2804) AM_MIRROR(0x0080) AM_READ_PORT("X4")
- AM_RANGE(0x2805, 0x2805) AM_MIRROR(0x0080) AM_READ_PORT("X5")
- AM_RANGE(0x2806, 0x2806) AM_MIRROR(0x0080) AM_READ_PORT("X6")
- AM_RANGE(0x2807, 0x2807) AM_MIRROR(0x0080) AM_READ_PORT("X7")
- AM_RANGE(0x2808, 0x2808) AM_MIRROR(0x0080) AM_READ_PORT("X8")
- AM_RANGE(0x2838, 0x2838) AM_MIRROR(0x0080) AM_READ_PORT("X0")
- AM_RANGE(0x2839, 0x2839) AM_MIRROR(0x0080) AM_READ_PORT("X1")
- AM_RANGE(0x283a, 0x283a) AM_MIRROR(0x0080) AM_READ_PORT("X2")
- AM_RANGE(0x283b, 0x283b) AM_MIRROR(0x0080) AM_READ_PORT("X3")
- AM_RANGE(0x283c, 0x283c) AM_MIRROR(0x0080) AM_READ_PORT("X4")
- AM_RANGE(0x283d, 0x283d) AM_MIRROR(0x0080) AM_READ_PORT("X5")
- AM_RANGE(0x283e, 0x283e) AM_MIRROR(0x0080) AM_READ_PORT("X6")
- AM_RANGE(0x283f, 0x283f) AM_MIRROR(0x0080) AM_READ_PORT("X7")
- AM_RANGE(0x4000, 0x407f) AM_RAM
- AM_RANGE(0x4080, 0x408f) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x4090, 0x409f) AM_READWRITE(io_r,io_w)
- AM_RANGE(0x40a0, 0x40ff) AM_RAM
- AM_RANGE(0x4800, 0x48ff) AM_ROM AM_REGION("roms", 0x2000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taito_state::taito_sub_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x0800, 0x1fff) AM_ROM AM_REGION("cpu2", 0x0800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taito_state::taito_sub_map2)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("cpu2", 0x2000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taito_state::taito_sub_map5)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("aysnd_0", ay8910_device, address_w)
- AM_RANGE(0x1003, 0x1003) AM_DEVWRITE("aysnd_0", ay8910_device, address_w)
- AM_RANGE(0x1007, 0x1007) AM_DEVREAD("aysnd_0", ay8910_device, data_r)
- AM_RANGE(0x100c, 0x100c) AM_DEVWRITE("aysnd_1", ay8910_device, address_w)
- AM_RANGE(0x100a, 0x100a) AM_DEVWRITE("aysnd_0", ay8910_device, data_w)
- AM_RANGE(0x100b, 0x100b) AM_DEVWRITE("aysnd_0", ay8910_device, data_w)
- AM_RANGE(0x100d, 0x100d) AM_DEVREAD("aysnd_1", ay8910_device, data_r)
- AM_RANGE(0x100e, 0x100e) AM_DEVWRITE("aysnd_1", ay8910_device, data_w)
- AM_RANGE(0x2000, 0x7fff) AM_ROM AM_REGION("cpu2", 0x2000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taito_state::shock_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x1000, 0x100f) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1010, 0x101f) AM_READWRITE(io_r,io_w)
- AM_RANGE(0x1020, 0x10ff) AM_RAM
- AM_RANGE(0x1400, 0x1400) AM_READ_PORT("X0")
- AM_RANGE(0x1401, 0x1401) AM_READ_PORT("X1")
- AM_RANGE(0x1402, 0x1402) AM_READ_PORT("X2")
- AM_RANGE(0x1404, 0x1404) AM_READ_PORT("X4")
- AM_RANGE(0x1405, 0x1405) AM_READ_PORT("X5")
- AM_RANGE(0x1406, 0x1406) AM_READ_PORT("X6")
- AM_RANGE(0x14d8, 0x14d8) AM_READ_PORT("X0")
- AM_RANGE(0x14d9, 0x14d9) AM_READ_PORT("X1")
- AM_RANGE(0x14da, 0x14da) AM_READ_PORT("X2")
- AM_RANGE(0x14db, 0x14db) AM_READ_PORT("X3")
- AM_RANGE(0x14dc, 0x14dc) AM_READ_PORT("X4")
- AM_RANGE(0x14dd, 0x14dd) AM_READ_PORT("X5")
- AM_RANGE(0x1800, 0x1bff) AM_ROM AM_REGION("roms", 0x1800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taito_state::shock_sub_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0fff)
- AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
- AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("cpu2", 0)
-ADDRESS_MAP_END
+void taito_state::taito_map(address_map &map)
+{
+ map(0x0000, 0x27ff).rom().region("roms", 0);
+ map(0x2800, 0x2800).mirror(0x0080).portr("X0");
+ map(0x2801, 0x2801).mirror(0x0080).portr("X1");
+ map(0x2802, 0x2802).mirror(0x0080).portr("X2");
+ map(0x2803, 0x2803).mirror(0x0080).portr("X3");
+ map(0x2804, 0x2804).mirror(0x0080).portr("X4");
+ map(0x2805, 0x2805).mirror(0x0080).portr("X5");
+ map(0x2806, 0x2806).mirror(0x0080).portr("X6");
+ map(0x2807, 0x2807).mirror(0x0080).portr("X7");
+ map(0x2808, 0x2808).mirror(0x0080).portr("X8");
+ map(0x2838, 0x2838).mirror(0x0080).portr("X0");
+ map(0x2839, 0x2839).mirror(0x0080).portr("X1");
+ map(0x283a, 0x283a).mirror(0x0080).portr("X2");
+ map(0x283b, 0x283b).mirror(0x0080).portr("X3");
+ map(0x283c, 0x283c).mirror(0x0080).portr("X4");
+ map(0x283d, 0x283d).mirror(0x0080).portr("X5");
+ map(0x283e, 0x283e).mirror(0x0080).portr("X6");
+ map(0x283f, 0x283f).mirror(0x0080).portr("X7");
+ map(0x4000, 0x407f).ram();
+ map(0x4080, 0x408f).ram().share("ram");
+ map(0x4090, 0x409f).rw(this, FUNC(taito_state::io_r), FUNC(taito_state::io_w));
+ map(0x40a0, 0x40ff).ram();
+ map(0x4800, 0x48ff).rom().region("roms", 0x2000);
+}
+
+void taito_state::taito_sub_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0800, 0x1fff).rom().region("cpu2", 0x0800);
+}
+
+void taito_state::taito_sub_map2(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2000, 0x3fff).rom().region("cpu2", 0x2000);
+}
+
+void taito_state::taito_sub_map5(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x1000).w("aysnd_0", FUNC(ay8910_device::address_w));
+ map(0x1003, 0x1003).w("aysnd_0", FUNC(ay8910_device::address_w));
+ map(0x1007, 0x1007).r("aysnd_0", FUNC(ay8910_device::data_r));
+ map(0x100c, 0x100c).w("aysnd_1", FUNC(ay8910_device::address_w));
+ map(0x100a, 0x100a).w("aysnd_0", FUNC(ay8910_device::data_w));
+ map(0x100b, 0x100b).w("aysnd_0", FUNC(ay8910_device::data_w));
+ map(0x100d, 0x100d).r("aysnd_1", FUNC(ay8910_device::data_r));
+ map(0x100e, 0x100e).w("aysnd_1", FUNC(ay8910_device::data_w));
+ map(0x2000, 0x7fff).rom().region("cpu2", 0x2000);
+}
+
+void taito_state::shock_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x0fff).rom().region("roms", 0);
+ map(0x1000, 0x100f).ram().share("ram");
+ map(0x1010, 0x101f).rw(this, FUNC(taito_state::io_r), FUNC(taito_state::io_w));
+ map(0x1020, 0x10ff).ram();
+ map(0x1400, 0x1400).portr("X0");
+ map(0x1401, 0x1401).portr("X1");
+ map(0x1402, 0x1402).portr("X2");
+ map(0x1404, 0x1404).portr("X4");
+ map(0x1405, 0x1405).portr("X5");
+ map(0x1406, 0x1406).portr("X6");
+ map(0x14d8, 0x14d8).portr("X0");
+ map(0x14d9, 0x14d9).portr("X1");
+ map(0x14da, 0x14da).portr("X2");
+ map(0x14db, 0x14db).portr("X3");
+ map(0x14dc, 0x14dc).portr("X4");
+ map(0x14dd, 0x14dd).portr("X5");
+ map(0x1800, 0x1bff).rom().region("roms", 0x1800);
+}
+
+void taito_state::shock_sub_map(address_map &map)
+{
+ map.global_mask(0x0fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0800, 0x0fff).rom().region("cpu2", 0);
+}
static INPUT_PORTS_START( taito )
PORT_START("X0")
diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp
index cf7b56033b4..3d7367c7b04 100644
--- a/src/mame/drivers/taito_b.cpp
+++ b/src/mame/drivers/taito_b.cpp
@@ -457,272 +457,311 @@ WRITE16_MEMBER(taitob_state::realpunc_output_w)
}
-#define TC0180VCU_MEMRW( ADDR ) \
- AM_RANGE(ADDR+0x00000, ADDR+0x0ffff) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, word_r, word_w) \
- AM_RANGE(ADDR+0x10000, ADDR+0x1197f) AM_RAM AM_SHARE("spriteram") \
- AM_RANGE(ADDR+0x11980, ADDR+0x137ff) AM_RAM \
- AM_RANGE(ADDR+0x13800, ADDR+0x13fff) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, scroll_r, scroll_w) \
- AM_RANGE(ADDR+0x18000, ADDR+0x1801f) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, ctrl_r, ctrl_w) \
- AM_RANGE(ADDR+0x40000, ADDR+0x7ffff) AM_READWRITE(tc0180vcu_framebuffer_word_r, tc0180vcu_framebuffer_word_w)
-
-
-ADDRESS_MAP_START(taitob_state::rastsag2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x607fff) AM_RAM /* Main RAM */ /*ashura up to 603fff only*/
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::crimec_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x600001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa00000, 0xa0ffff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::tetrist_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- AM_RANGE(0x800000, 0x807fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::tetrista_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x600003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0xff00)
- AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::hitice_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- AM_RANGE(0x610000, 0x610001) AM_READ_PORT("P3_P4")
- AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb7ffff) AM_RAM_WRITE(hitice_pixelram_w) AM_SHARE("pixelram")
- AM_RANGE(0xbffff0, 0xbffff5) AM_WRITE(hitice_pixel_scroll_w)
+void taitob_state::tc0180vcu_memrw(address_map &map, u32 addr)
+{
+ map(addr+0x00000, addr+0x0ffff).rw(m_tc0180vcu, FUNC(tc0180vcu_device::word_r), FUNC(tc0180vcu_device::word_w));
+ map(addr+0x10000, addr+0x1197f).ram().share("spriteram");
+ map(addr+0x11980, addr+0x137ff).ram();
+ map(addr+0x13800, addr+0x13fff).rw(m_tc0180vcu, FUNC(tc0180vcu_device::scroll_r), FUNC(tc0180vcu_device::scroll_w));
+ map(addr+0x18000, addr+0x1801f).rw(m_tc0180vcu, FUNC(tc0180vcu_device::ctrl_r), FUNC(tc0180vcu_device::ctrl_w));
+ map(addr+0x40000, addr+0x7ffff).rw(this, FUNC(taitob_state::tc0180vcu_framebuffer_word_r), FUNC(taitob_state::tc0180vcu_framebuffer_word_w));
+}
+
+void taitob_state::rastsag2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x600000, 0x607fff).ram(); /* Main RAM */ /*ashura up to 603fff only*/
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x800000, 0x800001).nopr();
+ map(0x800000, 0x800000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x800002, 0x800002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xa00000, 0xa0000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+}
+
+
+void taitob_state::crimec_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x600001).nopr();
+ map(0x600000, 0x600000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x600002, 0x600002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xa00000, 0xa0ffff).ram(); /* Main RAM */
+}
+
+
+void taitob_state::tetrist_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200001).nopr();
+ map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x60000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ map(0x800000, 0x807fff).ram(); /* Main RAM */
+ map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void taitob_state::tetrista_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x600003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0xff00);
+ map(0x800000, 0x803fff).ram(); /* Main RAM */
+ map(0xa00000, 0xa00001).nopr();
+ map(0xa00000, 0xa00000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xa00002, 0xa00002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+}
+
+
+void taitob_state::hitice_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x60000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ map(0x610000, 0x610001).portr("P3_P4");
+ map(0x700000, 0x700001).nopr();
+ map(0x700000, 0x700000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x700002, 0x700002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x800000, 0x803fff).ram(); /* Main RAM */
+ map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xb00000, 0xb7ffff).ram().w(this, FUNC(taitob_state::hitice_pixelram_w)).share("pixelram");
+ map(0xbffff0, 0xbffff5).w(this, FUNC(taitob_state::hitice_pixel_scroll_w));
// { 0xbffffa, 0xbffffb, ???
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::rambo3_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- AM_RANGE(0x600010, 0x600011) AM_READ(tracky1_lo_r) /*player 1*/
- AM_RANGE(0x600012, 0x600013) AM_READ(tracky1_hi_r)
- AM_RANGE(0x600014, 0x600015) AM_READ(trackx1_lo_r)
- AM_RANGE(0x600016, 0x600017) AM_READ(trackx1_hi_r)
- AM_RANGE(0x600018, 0x600019) AM_READ(tracky2_lo_r) /*player 2*/
- AM_RANGE(0x60001a, 0x60001b) AM_READ(tracky2_hi_r)
- AM_RANGE(0x60001c, 0x60001d) AM_READ(trackx2_lo_r)
- AM_RANGE(0x60001e, 0x60001f) AM_READ(trackx2_hi_r)
- AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::pbobble_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w)
- AM_RANGE(0x500024, 0x500025) AM_READ_PORT("P3_P4_A") /* shown in service mode, game omits to read it */
- AM_RANGE(0x500026, 0x500027) AM_READWRITE(eep_latch_r, eeprom_w)
- AM_RANGE(0x500028, 0x500029) AM_WRITE(player_34_coin_ctrl_w) /* simply locks coins 3&4 out */
- AM_RANGE(0x50002e, 0x50002f) AM_READ_PORT("P3_P4_B") /* shown in service mode, game omits to read it */
- AM_RANGE(0x600000, 0x600003) AM_WRITE(gain_control_w)
- AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
+}
+
+
+void taitob_state::rambo3_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200001).nopr();
+ map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x60000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ map(0x600010, 0x600011).r(this, FUNC(taitob_state::tracky1_lo_r)); /*player 1*/
+ map(0x600012, 0x600013).r(this, FUNC(taitob_state::tracky1_hi_r));
+ map(0x600014, 0x600015).r(this, FUNC(taitob_state::trackx1_lo_r));
+ map(0x600016, 0x600017).r(this, FUNC(taitob_state::trackx1_hi_r));
+ map(0x600018, 0x600019).r(this, FUNC(taitob_state::tracky2_lo_r)); /*player 2*/
+ map(0x60001a, 0x60001b).r(this, FUNC(taitob_state::tracky2_hi_r));
+ map(0x60001c, 0x60001d).r(this, FUNC(taitob_state::trackx2_lo_r));
+ map(0x60001e, 0x60001f).r(this, FUNC(taitob_state::trackx2_hi_r));
+ map(0x800000, 0x803fff).ram(); /* Main RAM */
+ map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+
+void taitob_state::pbobble_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x500000, 0x50000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w));
+ map(0x500024, 0x500025).portr("P3_P4_A"); /* shown in service mode, game omits to read it */
+ map(0x500026, 0x500027).rw(this, FUNC(taitob_state::eep_latch_r), FUNC(taitob_state::eeprom_w));
+ map(0x500028, 0x500029).w(this, FUNC(taitob_state::player_34_coin_ctrl_w)); /* simply locks coins 3&4 out */
+ map(0x50002e, 0x50002f).portr("P3_P4_B"); /* shown in service mode, game omits to read it */
+ map(0x600000, 0x600003).w(this, FUNC(taitob_state::gain_control_w));
+ map(0x700000, 0x700001).nopr();
+ map(0x700000, 0x700000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x700002, 0x700002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x900000, 0x90ffff).ram(); /* Main RAM */
+}
/* identical to pbobble, above??? */
-ADDRESS_MAP_START(taitob_state::spacedx_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w)
- AM_RANGE(0x500024, 0x500025) AM_READ_PORT("P3_P4_A")
- AM_RANGE(0x500026, 0x500027) AM_READWRITE(eep_latch_r, eeprom_w)
- AM_RANGE(0x500028, 0x500029) AM_WRITE(player_34_coin_ctrl_w) /* simply locks coins 3&4 out */
- AM_RANGE(0x50002e, 0x50002f) AM_READ_PORT("P3_P4_B")
- AM_RANGE(0x600000, 0x600003) AM_WRITE(gain_control_w)
- AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::spacedxo_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x200000, 0x20000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_device, read, 0x00ff)
- AM_RANGE(0x200000, 0x20000f) AM_WRITE(spacedxo_tc0220ioc_w)
- AM_RANGE(0x210000, 0x210001) AM_READ_PORT("IN3")
- AM_RANGE(0x220000, 0x220001) AM_READ_PORT("IN4")
- AM_RANGE(0x230000, 0x230001) AM_READ_PORT("IN5")
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x302000, 0x303fff) AM_READONLY
- AM_RANGE(0x400000, 0x40ffff) AM_RAM /* Main RAM */
- TC0180VCU_MEMRW( 0x500000 )
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::qzshowby_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w)
- AM_RANGE(0x200024, 0x200025) AM_READ_PORT("P3_P4_A") /* player 3,4 start */
- AM_RANGE(0x200026, 0x200027) AM_WRITE(eeprom_w)
- AM_RANGE(0x200028, 0x200029) AM_READWRITE(player_34_coin_ctrl_r, player_34_coin_ctrl_w)
- AM_RANGE(0x20002e, 0x20002f) AM_READ_PORT("P3_P4_B") /* player 3,4 buttons */
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x600001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x700000, 0x700003) AM_WRITE(gain_control_w)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::viofight_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- AM_RANGE(0xa00000, 0xa03fff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::masterw_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM /* Main RAM */
- TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0xff00)
- AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::silentd_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
-// AM_RANGE(0x10001a, 0x10001b) AM_READNOP // ??? read at $1e344
-// AM_RANGE(0x10001c, 0x10001d) AM_READNOP // ??? read at $1e356
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x210000, 0x210001) AM_READ_PORT("IN3")
- AM_RANGE(0x220000, 0x220001) AM_READ_PORT("IN4")
- AM_RANGE(0x230000, 0x230001) AM_READ_PORT("IN5")
- AM_RANGE(0x240000, 0x240001) AM_WRITENOP // ???
-// AM_RANGE(0x240000, 0x240001) AM_READNOP /* read 4 times at init */
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x403fff) AM_RAM /* Main RAM */
- TC0180VCU_MEMRW( 0x500000 )
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::selfeena_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
- TC0180VCU_MEMRW( 0x200000 )
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- AM_RANGE(0x410000, 0x41000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) /* mirror address - seems to be only used for coin control */
- AM_RANGE(0x500000, 0x500001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitob_state::sbm_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Main RAM */
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
- AM_RANGE(0x320000, 0x320001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- TC0180VCU_MEMRW( 0x900000 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::realpunc_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x110000, 0x12ffff) AM_RAM
- AM_RANGE(0x130000, 0x13ffff) AM_RAM // Check me
- AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
- AM_RANGE(0x184000, 0x184001) AM_WRITE(realpunc_video_ctrl_w)
- AM_RANGE(0x188000, 0x188001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x188002, 0x188003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_comm_w, 0xff00)
- AM_RANGE(0x18c000, 0x18c001) AM_WRITE(realpunc_output_w)
- TC0180VCU_MEMRW( 0x200000 )
- AM_RANGE(0x280000, 0x281fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w)
-// AM_RANGE(0x320000, 0x320001) AM_NOP // ?
- AM_RANGE(0x320002, 0x320003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_comm_w, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::realpunc_hd63484_map)
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::masterw_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitob_state::viofight_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* yes, both addresses for the same chip */
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
-ADDRESS_MAP_END
+void taitob_state::spacedx_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x500000, 0x50000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w));
+ map(0x500024, 0x500025).portr("P3_P4_A");
+ map(0x500026, 0x500027).rw(this, FUNC(taitob_state::eep_latch_r), FUNC(taitob_state::eeprom_w));
+ map(0x500028, 0x500029).w(this, FUNC(taitob_state::player_34_coin_ctrl_w)); /* simply locks coins 3&4 out */
+ map(0x50002e, 0x50002f).portr("P3_P4_B");
+ map(0x600000, 0x600003).w(this, FUNC(taitob_state::gain_control_w));
+ map(0x700000, 0x700001).nopr();
+ map(0x700000, 0x700000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x700002, 0x700002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x900000, 0x90ffff).ram(); /* Main RAM */
+}
+
+void taitob_state::spacedxo_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).nopr();
+ map(0x100000, 0x100000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x100002, 0x100002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x200000, 0x20000f).r(m_tc0220ioc, FUNC(tc0220ioc_device::read)).umask16(0x00ff);
+ map(0x200000, 0x20000f).w(this, FUNC(taitob_state::spacedxo_tc0220ioc_w));
+ map(0x210000, 0x210001).portr("IN3");
+ map(0x220000, 0x220001).portr("IN4");
+ map(0x230000, 0x230001).portr("IN5");
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x302000, 0x303fff).readonly();
+ map(0x400000, 0x40ffff).ram(); /* Main RAM */
+ tc0180vcu_memrw(map, 0x500000);
+}
+
+
+void taitob_state::qzshowby_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w));
+ map(0x200024, 0x200025).portr("P3_P4_A"); /* player 3,4 start */
+ map(0x200026, 0x200027).w(this, FUNC(taitob_state::eeprom_w));
+ map(0x200028, 0x200029).rw(this, FUNC(taitob_state::player_34_coin_ctrl_r), FUNC(taitob_state::player_34_coin_ctrl_w));
+ map(0x20002e, 0x20002f).portr("P3_P4_B"); /* player 3,4 buttons */
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x600001).nopr();
+ map(0x600000, 0x600000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x600002, 0x600002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x700000, 0x700003).w(this, FUNC(taitob_state::gain_control_w));
+ map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x900000, 0x90ffff).ram(); /* Main RAM */
+}
+
+
+void taitob_state::viofight_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200001).nopr();
+ map(0x200000, 0x200000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x200002, 0x200002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ map(0xa00000, 0xa03fff).ram(); /* Main RAM */
+}
+
+
+void taitob_state::masterw_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x203fff).ram(); /* Main RAM */
+ tc0180vcu_memrw(map, 0x400000);
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x800003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0xff00);
+ map(0xa00000, 0xa00001).nopr();
+ map(0xa00000, 0xa00000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xa00002, 0xa00002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+}
+
+
+void taitob_state::silentd_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).nopr();
+ map(0x100000, 0x100000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x100002, 0x100002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+// map(0x10001a, 0x10001b).nopr(); // ??? read at $1e344
+// map(0x10001c, 0x10001d).nopr(); // ??? read at $1e356
+ map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x210000, 0x210001).portr("IN3");
+ map(0x220000, 0x220001).portr("IN4");
+ map(0x230000, 0x230001).portr("IN5");
+ map(0x240000, 0x240001).nopw(); // ???
+// map(0x240000, 0x240001).nopr(); /* read 4 times at init */
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x403fff).ram(); /* Main RAM */
+ tc0180vcu_memrw(map, 0x500000);
+}
+
+
+void taitob_state::selfeena_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* Main RAM */
+ tc0180vcu_memrw(map, 0x200000);
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ map(0x410000, 0x41000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); /* mirror address - seems to be only used for coin control */
+ map(0x500000, 0x500001).nopr();
+ map(0x500000, 0x500000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x500002, 0x500002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+}
+
+
+void taitob_state::sbm_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* Main RAM */
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w));
+ map(0x320000, 0x320001).nopr();
+ map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ tc0180vcu_memrw(map, 0x900000);
+}
+
+void taitob_state::realpunc_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x110000, 0x12ffff).ram();
+ map(0x130000, 0x13ffff).ram(); // Check me
+ map(0x180000, 0x18000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w));
+ map(0x184000, 0x184001).w(this, FUNC(taitob_state::realpunc_video_ctrl_w));
+ map(0x188000, 0x188001).nopr();
+ map(0x188000, 0x188000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x188002, 0x188003).nopr();
+ map(0x188002, 0x188002).w("tc0140syt", FUNC(tc0140syt_device::master_comm_w));
+ map(0x18c000, 0x18c001).w(this, FUNC(taitob_state::realpunc_output_w));
+ tc0180vcu_memrw(map, 0x200000);
+ map(0x280000, 0x281fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x300001).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x300002, 0x300003).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+// map(0x320000, 0x320001).nop(); // ?
+ map(0x320002, 0x320003).nopr();
+ map(0x320002, 0x320002).w("tc0140syt", FUNC(tc0140syt_device::master_comm_w));
+}
+
+void taitob_state::realpunc_hd63484_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).ram();
+}
+
+void taitob_state::masterw_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+}
+
+void taitob_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xe600, 0xe600).nopw(); /* ? */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitob_state::bankswitch_w));
+}
+
+void taitob_state::viofight_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xb000, 0xb001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* yes, both addresses for the same chip */
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp
index ccd3b65e23c..7c7b26f01e0 100644
--- a/src/mame/drivers/taito_f2.cpp
+++ b/src/mame/drivers/taito_f2.cpp
@@ -619,516 +619,549 @@ WRITE16_MEMBER(taitof2_state::driveout_sound_command_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(taitof2_state::finalb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x810000, 0x81ffff) AM_WRITENOP /* error in game init code ? */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb00002, 0xb00003) AM_WRITENOP /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::dondokod_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_device, tc0280grd_word_r, tc0280grd_word_w) /* ROZ tilemap */
- AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_device, tc0280grd_ctrl_word_w)
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::megab_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x120000, 0x12000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x180000, 0x1807ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff)
- AM_RANGE(0x180800, 0x180fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x40001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
- AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x610000, 0x61ffff) AM_RAM /* unused? */
- AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::thundfox_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x101fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x220000, 0x220001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x220002, 0x220003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x800000, 0x80001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::cameltry_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x813fff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_device, tc0280grd_word_r, tc0280grd_word_w) /* ROZ tilemap */
- AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_device, tc0280grd_ctrl_word_w)
- AM_RANGE(0xd00000, 0xd0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::cameltrya_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x813fff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_device, tc0280grd_word_r, tc0280grd_word_w) /* ROZ tilemap */
- AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_device, tc0280grd_ctrl_word_w)
- AM_RANGE(0xd00000, 0xd0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::qtorimon_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
- AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x910000, 0x9120ff) AM_WRITENOP /* error in init code ? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::liquidk_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::quizhq_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
- AM_RANGE(0x500004, 0x500005) AM_WRITE(growl_coin_word_w)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSWB")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN0")
- AM_RANGE(0x580000, 0x580001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* ??? */
- AM_RANGE(0x580006, 0x580007) AM_WRITENOP /* ??? */
- AM_RANGE(0x580000, 0x580001) AM_READ_PORT("DSWA")
- AM_RANGE(0x580002, 0x580003) AM_READ_PORT("IN1")
- AM_RANGE(0x580004, 0x580005) AM_READ_PORT("IN2")
- AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x680000, 0x680001) AM_WRITENOP /* ??? */
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x810000, 0x81ffff) AM_WRITENOP /* error in init code ? */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::ssi_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
+void taitof2_state::finalb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */
+ map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x320001, 0x320001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320003, 0x320003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x810000, 0x81ffff).nopw(); /* error in game init code ? */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xb00002, 0xb00003).nopw(); /* ?? */
+}
+
+void taitof2_state::dondokod_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa01fff).rw(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_word_r), FUNC(tc0280grd_device::tc0280grd_word_w)); /* ROZ tilemap */
+ map(0xa02000, 0xa0200f).w(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_ctrl_word_w));
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::megab_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x100002, 0x100002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x120000, 0x12000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x180000, 0x1807ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff);
+ map(0x180800, 0x180fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff);
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x40001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+ map(0x600000, 0x60ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x610000, 0x61ffff).ram(); /* unused? */
+ map(0x620000, 0x62000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x800000, 0x80ffff).ram().share("spriteram");
+}
+
+void taitof2_state::thundfox_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x101fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x220000, 0x220000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x220002, 0x220002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x300000, 0x30ffff).ram();
+ map(0x400000, 0x40ffff).rw(m_tc0100scn_1, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x420000, 0x42000f).rw(m_tc0100scn_1, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x500000, 0x50ffff).rw(m_tc0100scn_2, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x520000, 0x52000f).rw(m_tc0100scn_2, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x600000, 0x60ffff).ram().share("spriteram");
+ map(0x800000, 0x80001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00);
+}
+
+void taitof2_state::cameltry_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x300018, 0x30001f).r(this, FUNC(taitof2_state::cameltry_paddle_r));
+ map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x813fff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa01fff).rw(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_word_r), FUNC(tc0280grd_device::tc0280grd_word_w)); /* ROZ tilemap */
+ map(0xa02000, 0xa0200f).w(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_ctrl_word_w));
+ map(0xd00000, 0xd0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::cameltrya_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x300018, 0x30001f).r(this, FUNC(taitof2_state::cameltry_paddle_r));
+ map(0x320000, 0x320000).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x320002, 0x320002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x800000, 0x813fff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa01fff).rw(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_word_r), FUNC(tc0280grd_device::tc0280grd_word_w)); /* ROZ tilemap */
+ map(0xa02000, 0xa0200f).w(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_ctrl_word_w));
+ map(0xd00000, 0xd0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::qtorimon_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */
+ map(0x500000, 0x50000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x600000, 0x600000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x600002, 0x600002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0x910000, 0x9120ff).nopw(); /* error in init code ? */
+}
+
+void taitof2_state::liquidk_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x320001, 0x320001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320003, 0x320003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::quizhq_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */
+ map(0x500004, 0x500005).w(this, FUNC(taitof2_state::growl_coin_word_w));
+ map(0x500000, 0x500001).portr("DSWB");
+ map(0x500002, 0x500003).portr("IN0");
+ map(0x580000, 0x580001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* ??? */
+ map(0x580006, 0x580007).nopw(); /* ??? */
+ map(0x580000, 0x580001).portr("DSWA");
+ map(0x580002, 0x580003).portr("IN1");
+ map(0x580004, 0x580005).portr("IN2");
+ map(0x600001, 0x600001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x600003, 0x600003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x680000, 0x680001).nopw(); /* ??? */
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x810000, 0x81ffff).nopw(); /* error in init code ? */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+}
+
+void taitof2_state::ssi_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
// AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* ?? */
- AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps (not used) */
- AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::gunfront_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
+ map(0x600000, 0x60ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (not used) */
+ map(0x620000, 0x62000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x800000, 0x80ffff).ram().share("spriteram"); /* sprite ram */
+}
+
+void taitof2_state::gunfront_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w));
+ map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
// AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ?? */
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::growl_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w)
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB")
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN0")
- AM_RANGE(0x320002, 0x320003) AM_READ_PORT("IN1")
- AM_RANGE(0x320004, 0x320005) AM_READ_PORT("IN2")
- AM_RANGE(0x340000, 0x340001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w)
- AM_RANGE(0x504000, 0x504001) AM_WRITENOP /* unknown... various values */
- AM_RANGE(0x508000, 0x50800f) AM_READ_PORT("IN3")
- AM_RANGE(0x50c000, 0x50c00f) AM_READ_PORT("IN4")
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::mjnquest_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x110000, 0x11ffff) AM_RAM /* "sram" */
- AM_RANGE(0x120000, 0x12ffff) AM_RAM
- AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
- AM_RANGE(0x300000, 0x30000f) AM_READ(mjnquest_dsw_r)
- AM_RANGE(0x310000, 0x310001) AM_READ(mjnquest_input_r)
- AM_RANGE(0x320000, 0x320001) AM_WRITE(mjnquest_inputselect_w)
- AM_RANGE(0x330000, 0x330001) AM_WRITENOP /* watchdog ? */
- AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* watchdog ? */
- AM_RANGE(0x360000, 0x360001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x360002, 0x360003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x380000, 0x380001) AM_DEVWRITE("tc0100scn", tc0100scn_device, gfxbank_w) /* scr gfx bank select */
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::footchmp_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w) /* updated at $a6e, off irq5 */
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* 500002 written like a watchdog?! */
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE8("te7750", te7750_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) /* ??? */
- AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::koshien_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa20000, 0xa20001) AM_WRITE(koshien_spritebank_w)
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::yuyugogo_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb10fff) AM_RAM /* deliberate writes to $b10xxx, I think */
- AM_RANGE(0xc00000, 0xc01fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0xd00000, 0xdfffff) AM_ROM AM_REGION("extra", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::ninjak_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("te7750", te7750_device, read, write, 0xff00)
- AM_RANGE(0x380000, 0x380001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* ??? */
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x600000, 0x60000f) AM_WRITE(taitof2_spritebank_w)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* b00002 written like a watchdog?! */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::solfigtr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w) /* NOT VERIFIED */
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA")
- AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB")
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN0")
- AM_RANGE(0x320002, 0x320003) AM_READ_PORT("IN1")
- AM_RANGE(0x320004, 0x320005) AM_READ_PORT("IN2")
- AM_RANGE(0x340000, 0x340001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* NOT VERIFIED */
- AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w)
- AM_RANGE(0x504000, 0x504001) AM_WRITENOP /* unknown... various values */
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::qzquest_map)
- AM_RANGE(0x000000, 0x17ffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x50ffff) AM_RAM
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::pulirula_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
- AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */
- AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w)
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::growl_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300004, 0x300005).w(this, FUNC(taitof2_state::growl_coin_word_w));
+ map(0x300000, 0x300001).portr("DSWA");
+ map(0x300002, 0x300003).portr("DSWB");
+ map(0x320000, 0x320001).portr("IN0");
+ map(0x320002, 0x320003).portr("IN1");
+ map(0x320004, 0x320005).portr("IN2");
+ map(0x340000, 0x340001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x500000, 0x50000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w));
+ map(0x504000, 0x504001).nopw(); /* unknown... various values */
+ map(0x508000, 0x50800f).portr("IN3");
+ map(0x50c000, 0x50c00f).portr("IN4");
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::mjnquest_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x110000, 0x11ffff).ram(); /* "sram" */
+ map(0x120000, 0x12ffff).ram();
+ map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */
+ map(0x300000, 0x30000f).r(this, FUNC(taitof2_state::mjnquest_dsw_r));
+ map(0x310000, 0x310001).r(this, FUNC(taitof2_state::mjnquest_input_r));
+ map(0x320000, 0x320001).w(this, FUNC(taitof2_state::mjnquest_inputselect_w));
+ map(0x330000, 0x330001).nopw(); /* watchdog ? */
+ map(0x350000, 0x350001).nopw(); /* watchdog ? */
+ map(0x360000, 0x360000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x360002, 0x360002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x380000, 0x380001).w(m_tc0100scn, FUNC(tc0100scn_device::gfxbank_w)); /* scr gfx bank select */
+ map(0x400000, 0x40ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x420000, 0x42000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x500000, 0x50ffff).ram().share("spriteram");
+}
+
+void taitof2_state::footchmp_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x20ffff).ram().share("spriteram");
+ map(0x300000, 0x30000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w)); /* updated at $a6e, off irq5 */
+ map(0x400000, 0x40ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
+ map(0x430000, 0x43002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0x500000, 0x50001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* 500002 written like a watchdog?! */
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x70001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff);
+ map(0x800000, 0x800001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); /* ??? */
+ map(0xa00001, 0xa00001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0xa00003, 0xa00003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+}
+
+void taitof2_state::koshien_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa20000, 0xa20001).w(this, FUNC(taitof2_state::koshien_spritebank_w));
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00);
+}
+
+void taitof2_state::yuyugogo_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x200000, 0x20000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xb00000, 0xb10fff).ram(); /* deliberate writes to $b10xxx, I think */
+ map(0xc00000, 0xc01fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext");
+ map(0xd00000, 0xdfffff).rom().region("extra", 0);
+}
+
+void taitof2_state::ninjak_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0xff00);
+ map(0x380000, 0x380001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* ??? */
+ map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x600000, 0x60000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w));
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* b00002 written like a watchdog?! */
+}
+
+void taitof2_state::solfigtr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300004, 0x300005).w(this, FUNC(taitof2_state::growl_coin_word_w)); /* NOT VERIFIED */
+ map(0x300000, 0x300001).portr("DSWA");
+ map(0x300002, 0x300003).portr("DSWB");
+ map(0x320000, 0x320001).portr("IN0");
+ map(0x320002, 0x320003).portr("IN1");
+ map(0x320004, 0x320005).portr("IN2");
+ map(0x340000, 0x340001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* NOT VERIFIED */
+ map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x500000, 0x50000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w));
+ map(0x504000, 0x504001).nopw(); /* unknown... various values */
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::qzquest_map(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom();
+ map(0x200000, 0x20000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x400000, 0x401fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x50ffff).ram();
+ map(0x600000, 0x60ffff).ram().share("spriteram");
+ map(0x700000, 0x70ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x720000, 0x72000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
+
+void taitof2_state::pulirula_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x300000, 0x30ffff).ram();
+ map(0x400000, 0x401fff).rw(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_word_r), FUNC(tc0280grd_device::tc0430grw_word_w)); /* ROZ tilemap */
+ map(0x402000, 0x40200f).w(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_ctrl_word_w));
// AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* ??? */
- AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00)
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::metalb_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("spriteram")
+ map(0x600000, 0x603fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext");
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00);
+ map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+}
+
+void taitof2_state::metalb_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x300000, 0x30ffff).ram().share("spriteram");
// AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */
- AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff)
- AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
- AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x900002, 0x900003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
+ map(0x500000, 0x50ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
+ map(0x530000, 0x53002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0x600000, 0x60001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff);
+ map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w));
+ map(0x900000, 0x900000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x900002, 0x900002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
// AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::qzchikyu_map)
- AM_RANGE(0x000000, 0x17ffff) AM_ROM
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x50ffff) AM_RAM
- AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::yesnoj_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE8("rtc", tc8521_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x900002, 0x900003) AM_WRITENOP /* lots of similar writes */
- AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("IN0")
- AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("IN1")
- AM_RANGE(0xa00004, 0xa00005) AM_READ_PORT("IN2")
- AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("DSWA")
- AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* watchdog ?? */
- AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* lots of similar writes */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::deadconx_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w)
- AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
+}
+
+void taitof2_state::qzchikyu_map(address_map &map)
+{
+ map(0x000000, 0x17ffff).rom();
+ map(0x200000, 0x20000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x400000, 0x401fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x50ffff).ram();
+ map(0x600000, 0x60ffff).ram().share("spriteram");
+ map(0x700000, 0x70ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x720000, 0x72000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
+
+void taitof2_state::yesnoj_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x400000, 0x40ffff).ram().share("spriteram");
+ map(0x500000, 0x50ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x520000, 0x52000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x70001f).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write)).umask16(0x00ff);
+ map(0x800000, 0x800000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x800002, 0x800002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x900002, 0x900003).nopw(); /* lots of similar writes */
+ map(0xa00000, 0xa00001).portr("IN0");
+ map(0xa00002, 0xa00003).portr("IN1");
+ map(0xa00004, 0xa00005).portr("IN2");
+ map(0xb00000, 0xb00001).portr("DSWA");
+ map(0xc00000, 0xc00001).nopw(); /* watchdog ?? */
+ map(0xd00000, 0xd00001).nopw(); /* lots of similar writes */
+}
+
+void taitof2_state::deadconx_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x20ffff).ram().share("spriteram");
+ map(0x300000, 0x30000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w));
+ map(0x400000, 0x40ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
// AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */
- AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* uses 500002 like a watchdog !? */
- AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE8("te7750", te7750_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* ??? */
- AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::dinorex_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x400000, 0x400fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x500000, 0x501fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x60ffff) AM_RAM
- AM_RANGE(0x700000, 0x70001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0xb00000, 0xb00001) AM_WRITENOP /* watchdog? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::qjinsei_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
- AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* watchdog ? */
- AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::qcrayon_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
+ map(0x430000, 0x43002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0x500000, 0x50001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* uses 500002 like a watchdog !? */
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x70001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff);
+ map(0x800000, 0x800001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* ??? */
+ map(0xa00000, 0xa00000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0xa00002, 0xa00002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+}
+
+void taitof2_state::dinorex_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom();
+ map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x400000, 0x400fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext");
+ map(0x500000, 0x501fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x600000, 0x60ffff).ram();
+ map(0x700000, 0x70001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+ map(0x800000, 0x80ffff).ram().share("spriteram");
+ map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xa00000, 0xa00000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0xa00002, 0xa00002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xb00000, 0xb00001).nopw(); /* watchdog? */
+}
+
+void taitof2_state::qjinsei_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x300000, 0x30ffff).ram();
+ map(0x500000, 0x500001).nopw(); /* watchdog ? */
+ map(0x600000, 0x603fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext");
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+ map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+}
+
+void taitof2_state::qcrayon_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
// AM_RANGE(0x200000, 0x200001) AM_WRITENOP /* unknown */
- AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("extra", 0) /* extra data rom */
- AM_RANGE(0x500000, 0x500001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::qcrayon2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("extra", 0) /* extra data rom */
- AM_RANGE(0x700000, 0x70000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0x900000, 0x90001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
- AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0xb00000, 0xb017ff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitof2_state::driftout_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
- AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */
- AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00)
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0xb00018, 0xb00019) AM_READ_PORT("PADDLE1")
- AM_RANGE(0xb0001a, 0xb0001b) AM_READ_PORT("PADDLE2")
-ADDRESS_MAP_END
+ map(0x300000, 0x3fffff).rom().region("extra", 0); /* extra data rom */
+ map(0x500000, 0x500000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x500002, 0x500002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x600000, 0x603fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext");
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80ffff).ram().share("spriteram");
+ map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xa00000, 0xa0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+}
+
+void taitof2_state::qcrayon2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x40ffff).ram().share("spriteram");
+ map(0x500000, 0x50ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x520000, 0x52000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x600000, 0x67ffff).rom().region("extra", 0); /* extra data rom */
+ map(0x700000, 0x70000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0x900000, 0x90001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */
+ map(0xa00000, 0xa00000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0xa00002, 0xa00002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xb00000, 0xb017ff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext");
+}
+
+void taitof2_state::driftout_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x300000, 0x30ffff).ram();
+ map(0x400000, 0x401fff).rw(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_word_r), FUNC(tc0280grd_device::tc0430grw_word_w)); /* ROZ tilemap */
+ map(0x402000, 0x40200f).w(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_ctrl_word_w));
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00);
+ map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0xb00018, 0xb00019).portr("PADDLE1");
+ map(0xb0001a, 0xb0001b).portr("PADDLE2");
+}
/* same as driftout, except for sound address 0x200000 */
-ADDRESS_MAP_START(taitof2_state::driveout_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x200003) AM_READNOP AM_WRITE(driveout_sound_command_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM
- AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */
- AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00)
- AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
- AM_RANGE(0xb00018, 0xb00019) AM_READ_PORT("PADDLE1")
- AM_RANGE(0xb0001a, 0xb0001b) AM_READ_PORT("PADDLE2")
-ADDRESS_MAP_END
+void taitof2_state::driveout_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x200003).nopr().w(this, FUNC(taitof2_state::driveout_sound_command_w));
+ map(0x300000, 0x30ffff).ram();
+ map(0x400000, 0x401fff).rw(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_word_r), FUNC(tc0280grd_device::tc0430grw_word_w)); /* ROZ tilemap */
+ map(0x402000, 0x40200f).w(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_ctrl_word_w));
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x900000, 0x90ffff).ram().share("spriteram");
+ map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00);
+ map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w));
+ map(0xb00018, 0xb00019).portr("PADDLE1");
+ map(0xb0001a, 0xb0001b).portr("PADDLE2");
+}
/***************************************************************************/
-ADDRESS_MAP_START(taitof2_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) /* ?? */
-ADDRESS_MAP_END
+void taitof2_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitof2_state::sound_bankswitch_w)); /* ?? */
+}
/* Alt version of Cameltry, YM2203 + M6925 sound */
-ADDRESS_MAP_START(taitof2_state::cameltrya_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // I can't see a bank control, but there ARE some bytes past 0x8000
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
+void taitof2_state::cameltrya_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // I can't see a bank control, but there ARE some bytes past 0x8000
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
// AM_RANGE(0xb000, 0xb000) AM_WRITE(unknown_w) // probably controlling sample player?
- AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+ map(0xb000, 0xb001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
-ADDRESS_MAP_START(taitof2_state::driveout_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_bank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READ(driveout_sound_command_r)
-ADDRESS_MAP_END
+void taitof2_state::driveout_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(taitof2_state::oki_bank_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(this, FUNC(taitof2_state::driveout_sound_command_r));
+}
/***********************************************************
INPUT PORTS, DIPs
diff --git a/src/mame/drivers/taito_f3.cpp b/src/mame/drivers/taito_f3.cpp
index 3e6bab6092c..646149d05f0 100644
--- a/src/mame/drivers/taito_f3.cpp
+++ b/src/mame/drivers/taito_f3.cpp
@@ -184,44 +184,46 @@ WRITE16_MEMBER(taito_f3_state::f3_unk_w)
/******************************************************************************/
-ADDRESS_MAP_START(taito_f3_state::f3_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x300000, 0x30007f) AM_WRITE(f3_sound_bankswitch_w)
- AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x20000) AM_RAM AM_SHARE("f3_ram")
- AM_RANGE(0x440000, 0x447fff) AM_RAM_WRITE(f3_palette_24bit_w) AM_SHARE("paletteram")
- AM_RANGE(0x4a0000, 0x4a001f) AM_READWRITE(f3_control_r, f3_control_w)
- AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE16(f3_unk_w,0xffffffff)
- AM_RANGE(0x600000, 0x60ffff) AM_READWRITE16(f3_spriteram_r,f3_spriteram_w,0xffffffff) //AM_SHARE("spriteram")
- AM_RANGE(0x610000, 0x61bfff) AM_READWRITE16(f3_pf_data_r,f3_pf_data_w,0xffffffff) //AM_SHARE("f3_pf_data")
- AM_RANGE(0x61c000, 0x61dfff) AM_READWRITE16(f3_videoram_r,f3_videoram_w,0xffffffff) //AM_SHARE("videoram")
- AM_RANGE(0x61e000, 0x61ffff) AM_READWRITE16(f3_vram_r,f3_vram_w,0xffffffff) //AM_SHARE("f3_vram")
- AM_RANGE(0x620000, 0x62ffff) AM_READWRITE16(f3_lineram_r,f3_lineram_w,0xffffffff) //AM_SHARE("f3_line_ram")
- AM_RANGE(0x630000, 0x63ffff) AM_READWRITE16(f3_pivot_r,f3_pivot_w,0xffffffff) //AM_SHARE("f3_pivot_ram")
- AM_RANGE(0x660000, 0x66000f) AM_WRITE16(f3_control_0_w,0xffffffff)
- AM_RANGE(0x660010, 0x66001f) AM_WRITE16(f3_control_1_w,0xffffffff)
- AM_RANGE(0xc00000, 0xc007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff)
- AM_RANGE(0xc80000, 0xc80003) AM_WRITE(f3_sound_reset_0_w)
- AM_RANGE(0xc80100, 0xc80103) AM_WRITE(f3_sound_reset_1_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taito_f3_state::bubsympb_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x300000, 0x30007f) AM_WRITE(f3_sound_bankswitch_w)
- AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x20000) AM_RAM AM_SHARE("f3_ram")
- AM_RANGE(0x440000, 0x447fff) AM_RAM_WRITE(f3_palette_24bit_w) AM_SHARE("paletteram")
- AM_RANGE(0x4a0000, 0x4a001b) AM_READWRITE(f3_control_r, f3_control_w)
- AM_RANGE(0x4a001c, 0x4a001f) AM_READWRITE(bubsympb_oki_r, bubsympb_oki_w)
- AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE16(f3_unk_w,0xffffffff)
- AM_RANGE(0x600000, 0x60ffff) AM_READWRITE16(f3_spriteram_r,f3_spriteram_w,0xffffffff) //AM_SHARE("spriteram")
- AM_RANGE(0x610000, 0x61bfff) AM_READWRITE16(f3_pf_data_r,f3_pf_data_w,0xffffffff) //AM_SHARE("f3_pf_data")
- AM_RANGE(0x61c000, 0x61dfff) AM_READWRITE16(f3_videoram_r,f3_videoram_w,0xffffffff) //AM_SHARE("videoram")
- AM_RANGE(0x61e000, 0x61ffff) AM_READWRITE16(f3_vram_r,f3_vram_w,0xffffffff) //AM_SHARE("f3_vram")
- AM_RANGE(0x620000, 0x62ffff) AM_READWRITE16(f3_lineram_r,f3_lineram_w,0xffffffff) //AM_SHARE("f3_line_ram")
- AM_RANGE(0x630000, 0x63ffff) AM_READWRITE16(f3_pivot_r,f3_pivot_w,0xffffffff) //AM_SHARE("f3_pivot_ram")
- AM_RANGE(0x660000, 0x66000f) AM_WRITE16(f3_control_0_w,0xffffffff)
- AM_RANGE(0x660010, 0x66001f) AM_WRITE16(f3_control_1_w,0xffffffff)
- AM_RANGE(0xc00000, 0xc007ff) AM_RAM
-ADDRESS_MAP_END
+void taito_f3_state::f3_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x300000, 0x30007f).w(this, FUNC(taito_f3_state::f3_sound_bankswitch_w));
+ map(0x400000, 0x41ffff).mirror(0x20000).ram().share("f3_ram");
+ map(0x440000, 0x447fff).ram().w(this, FUNC(taito_f3_state::f3_palette_24bit_w)).share("paletteram");
+ map(0x4a0000, 0x4a001f).rw(this, FUNC(taito_f3_state::f3_control_r), FUNC(taito_f3_state::f3_control_w));
+ map(0x4c0000, 0x4c0003).w(this, FUNC(taito_f3_state::f3_unk_w));
+ map(0x600000, 0x60ffff).rw(this, FUNC(taito_f3_state::f3_spriteram_r), FUNC(taito_f3_state::f3_spriteram_w)); //AM_SHARE("spriteram")
+ map(0x610000, 0x61bfff).rw(this, FUNC(taito_f3_state::f3_pf_data_r), FUNC(taito_f3_state::f3_pf_data_w)); //AM_SHARE("f3_pf_data")
+ map(0x61c000, 0x61dfff).rw(this, FUNC(taito_f3_state::f3_videoram_r), FUNC(taito_f3_state::f3_videoram_w)); //AM_SHARE("videoram")
+ map(0x61e000, 0x61ffff).rw(this, FUNC(taito_f3_state::f3_vram_r), FUNC(taito_f3_state::f3_vram_w)); //AM_SHARE("f3_vram")
+ map(0x620000, 0x62ffff).rw(this, FUNC(taito_f3_state::f3_lineram_r), FUNC(taito_f3_state::f3_lineram_w)); //AM_SHARE("f3_line_ram")
+ map(0x630000, 0x63ffff).rw(this, FUNC(taito_f3_state::f3_pivot_r), FUNC(taito_f3_state::f3_pivot_w)); //AM_SHARE("f3_pivot_ram")
+ map(0x660000, 0x66000f).w(this, FUNC(taito_f3_state::f3_control_0_w));
+ map(0x660010, 0x66001f).w(this, FUNC(taito_f3_state::f3_control_1_w));
+ map(0xc00000, 0xc007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xc80000, 0xc80003).w(this, FUNC(taito_f3_state::f3_sound_reset_0_w));
+ map(0xc80100, 0xc80103).w(this, FUNC(taito_f3_state::f3_sound_reset_1_w));
+}
+
+void taito_f3_state::bubsympb_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x300000, 0x30007f).w(this, FUNC(taito_f3_state::f3_sound_bankswitch_w));
+ map(0x400000, 0x41ffff).mirror(0x20000).ram().share("f3_ram");
+ map(0x440000, 0x447fff).ram().w(this, FUNC(taito_f3_state::f3_palette_24bit_w)).share("paletteram");
+ map(0x4a0000, 0x4a001b).rw(this, FUNC(taito_f3_state::f3_control_r), FUNC(taito_f3_state::f3_control_w));
+ map(0x4a001c, 0x4a001f).rw(this, FUNC(taito_f3_state::bubsympb_oki_r), FUNC(taito_f3_state::bubsympb_oki_w));
+ map(0x4c0000, 0x4c0003).w(this, FUNC(taito_f3_state::f3_unk_w));
+ map(0x600000, 0x60ffff).rw(this, FUNC(taito_f3_state::f3_spriteram_r), FUNC(taito_f3_state::f3_spriteram_w)); //AM_SHARE("spriteram")
+ map(0x610000, 0x61bfff).rw(this, FUNC(taito_f3_state::f3_pf_data_r), FUNC(taito_f3_state::f3_pf_data_w)); //AM_SHARE("f3_pf_data")
+ map(0x61c000, 0x61dfff).rw(this, FUNC(taito_f3_state::f3_videoram_r), FUNC(taito_f3_state::f3_videoram_w)); //AM_SHARE("videoram")
+ map(0x61e000, 0x61ffff).rw(this, FUNC(taito_f3_state::f3_vram_r), FUNC(taito_f3_state::f3_vram_w)); //AM_SHARE("f3_vram")
+ map(0x620000, 0x62ffff).rw(this, FUNC(taito_f3_state::f3_lineram_r), FUNC(taito_f3_state::f3_lineram_w)); //AM_SHARE("f3_line_ram")
+ map(0x630000, 0x63ffff).rw(this, FUNC(taito_f3_state::f3_pivot_r), FUNC(taito_f3_state::f3_pivot_w)); //AM_SHARE("f3_pivot_ram")
+ map(0x660000, 0x66000f).w(this, FUNC(taito_f3_state::f3_control_0_w));
+ map(0x660010, 0x66001f).w(this, FUNC(taito_f3_state::f3_control_1_w));
+ map(0xc00000, 0xc007ff).ram();
+}
diff --git a/src/mame/drivers/taito_h.cpp b/src/mame/drivers/taito_h.cpp
index ff8856535d2..a917251b1c6 100644
--- a/src/mame/drivers/taito_h.cpp
+++ b/src/mame/drivers/taito_h.cpp
@@ -235,62 +235,71 @@ WRITE8_MEMBER(taitoh_state::coin_control_w)
***************************************************************************/
-ADDRESS_MAP_START(taitoh_state::syvalion_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram")
- AM_RANGE(0x200000, 0x200001) AM_READ8(syvalion_input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, port_r, port_w, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoh_state::recordbr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram")
- AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoh_state::tetristh_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram")
- AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
- AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoh_state::dleague_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram")
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* ?? writes zero once per frame */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoh_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan control */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void taitoh_state::syvalion_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram");
+ map(0x200001, 0x200001).r(this, FUNC(taitoh_state::syvalion_input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff);
+ map(0x200003, 0x200003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::port_r), FUNC(tc0040ioc_device::port_w));
+ map(0x300000, 0x300001).nopr();
+ map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w));
+ map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void taitoh_state::recordbr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram");
+ map(0x200000, 0x200003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300001).nopr();
+ map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w));
+ map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void taitoh_state::tetristh_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram");
+ map(0x200000, 0x200001).nopr();
+ map(0x200001, 0x200001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x200003, 0x200003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x300000, 0x300003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+ map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w));
+ map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void taitoh_state::dleague_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram");
+ map(0x200000, 0x20000f).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300001).nopr();
+ map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w));
+ map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x600000, 0x600001).nopw(); /* ?? writes zero once per frame */
+}
+
+
+void taitoh_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan control */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitoh_state::sound_bankswitch_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp
index e12b2e3cecc..11d1022c85a 100644
--- a/src/mame/drivers/taito_l.cpp
+++ b/src/mame/drivers/taito_l.cpp
@@ -377,68 +377,75 @@ WRITE8_MEMBER(champwr_state::msm5205_volume_w)
}
-ADDRESS_MAP_START(taitol_state::common_banks_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xcfff) AM_DEVICE("rambank1", address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xdfff) AM_DEVICE("rambank2", address_map_bank_device, amap8)
- AM_RANGE(0xe000, 0xefff) AM_DEVICE("rambank3", address_map_bank_device, amap8)
- AM_RANGE(0xf000, 0xfdff) AM_DEVICE("rambank4", address_map_bank_device, amap8)
- AM_RANGE(0xfe00, 0xfe03) AM_READWRITE(taitol_bankc_r, taitol_bankc_w)
- AM_RANGE(0xfe04, 0xfe04) AM_READWRITE(taitol_control_r, taitol_control_w)
- AM_RANGE(0xff00, 0xff02) AM_READWRITE(irq_adr_r, irq_adr_w)
- AM_RANGE(0xff03, 0xff03) AM_READWRITE(irq_enable_r, irq_enable_w)
- AM_RANGE(0xff04, 0xff07) AM_READWRITE(rambankswitch_r, rambankswitch_w)
- AM_RANGE(0xff08, 0xff08) AM_READWRITE(rombankswitch_r, rombankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_state::tc0090lvc_map)
- AM_RANGE(0x10000, 0x1ffff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE(0x80000, 0x801ff) AM_MIRROR(0x00e00) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fhawk_state::fhawk_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fhawk_state::fhawk_2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w)
- AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w)
- AM_RANGE(0xc801, 0xc801) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w)
- AM_RANGE(0xd000, 0xd007) AM_DEVREADWRITE("tc0220ioc", tc0220ioc_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fhawk_state::fhawk_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_2cpu_state::raimais_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x87ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w)
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("tc0040ioc", tc0040ioc_device, read, write)
- AM_RANGE(0x8c00, 0x8c00) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, master_port_w)
- AM_RANGE(0x8c01, 0x8c01) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w)
- AM_RANGE(0xa000, 0xbfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::raimais_2_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
-ADDRESS_MAP_END
+void taitol_state::common_banks_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).bankr("mainbank");
+ map(0xc000, 0xcfff).m("rambank1", FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xdfff).m("rambank2", FUNC(address_map_bank_device::amap8));
+ map(0xe000, 0xefff).m("rambank3", FUNC(address_map_bank_device::amap8));
+ map(0xf000, 0xfdff).m("rambank4", FUNC(address_map_bank_device::amap8));
+ map(0xfe00, 0xfe03).rw(this, FUNC(taitol_state::taitol_bankc_r), FUNC(taitol_state::taitol_bankc_w));
+ map(0xfe04, 0xfe04).rw(this, FUNC(taitol_state::taitol_control_r), FUNC(taitol_state::taitol_control_w));
+ map(0xff00, 0xff02).rw(this, FUNC(taitol_state::irq_adr_r), FUNC(taitol_state::irq_adr_w));
+ map(0xff03, 0xff03).rw(this, FUNC(taitol_state::irq_enable_r), FUNC(taitol_state::irq_enable_w));
+ map(0xff04, 0xff07).rw(this, FUNC(taitol_state::rambankswitch_r), FUNC(taitol_state::rambankswitch_w));
+ map(0xff08, 0xff08).rw(this, FUNC(taitol_state::rombankswitch_r), FUNC(taitol_state::rombankswitch_w));
+}
+
+
+void taitol_state::tc0090lvc_map(address_map &map)
+{
+ map(0x10000, 0x1ffff).ram().w(this, FUNC(taitol_state::vram_w)).share("vram");
+ map(0x80000, 0x801ff).mirror(0x00e00).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+
+void fhawk_state::fhawk_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram().share("share1");
+ map(0xa000, 0xbfff).ram();
+}
+
+void fhawk_state::fhawk_2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("slavebank");
+ map(0xc000, 0xc000).w(this, FUNC(fhawk_state::rombank2switch_w));
+ map(0xc800, 0xc800).nopr().w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xc801, 0xc801).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xd000, 0xd007).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write));
+ map(0xe000, 0xffff).ram().share("share1");
+}
+
+void fhawk_state::fhawk_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0x8000, 0x9fff).ram();
+ map(0xe000, 0xe000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xe001, 0xe001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
+
+
+void taitol_2cpu_state::raimais_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x87ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+ map(0x8800, 0x8801).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write));
+ map(0x8c00, 0x8c00).nopr().w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x8c01, 0x8c01).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xa000, 0xbfff).ram();
+}
+
+void taitol_2cpu_state::raimais_2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+}
WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w)
@@ -446,147 +453,164 @@ WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w)
m_audio_bnk->set_entry(data & 0x03);
}
-ADDRESS_MAP_START(taitol_2cpu_state::raimais_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(champwr_state::champwr_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(champwr_state::champwr_2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe000, 0xe007) AM_DEVREADWRITE("tc0220ioc", tc0220ioc_device, read, write)
- AM_RANGE(0xe008, 0xe00f) AM_READNOP
- AM_RANGE(0xe800, 0xe800) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w)
- AM_RANGE(0xe801, 0xe801) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w)
- AM_RANGE(0xf000, 0xf000) AM_READWRITE(rombank2switch_r, rombank2switch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(champwr_state::champwr_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(msm5205_hi_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(msm5205_lo_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(msm5205_start_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(msm5205_stop_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(taitol_2cpu_state::kurikint_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w)
- AM_RANGE(0xa800, 0xa801) AM_DEVREADWRITE("tc0040ioc", tc0040ioc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::kurikint_2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::puzznic_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
- AM_RANGE(0xb800, 0xb800) AM_DEVREADWRITE("mcu", arkanoid_68705p3_device, data_r, data_w)
- AM_RANGE(0xb801, 0xb801) AM_READWRITE(mcu_control_r, mcu_control_w)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // Control register, function unknown
-ADDRESS_MAP_END
+void taitol_2cpu_state::raimais_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xe600, 0xe600).nopw(); /* ? */
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitol_2cpu_state::sound_bankswitch_w));
+}
+
+
+void champwr_state::champwr_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).ram().share("share1");
+}
+
+void champwr_state::champwr_2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("slavebank");
+ map(0xc000, 0xdfff).ram().share("share1");
+ map(0xe000, 0xe007).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write));
+ map(0xe008, 0xe00f).nopr();
+ map(0xe800, 0xe800).nopr().w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xe801, 0xe801).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xf000, 0xf000).rw(this, FUNC(champwr_state::rombank2switch_r), FUNC(champwr_state::rombank2switch_w));
+}
+
+void champwr_state::champwr_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb000).w(this, FUNC(champwr_state::msm5205_hi_w));
+ map(0xc000, 0xc000).w(this, FUNC(champwr_state::msm5205_lo_w));
+ map(0xd000, 0xd000).w(this, FUNC(champwr_state::msm5205_start_w));
+ map(0xe000, 0xe000).w(this, FUNC(champwr_state::msm5205_stop_w));
+}
+
+
+
+void taitol_2cpu_state::kurikint_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+ map(0xa800, 0xa801).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write));
+}
+
+void taitol_2cpu_state::kurikint_2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xe800, 0xe801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
+
+
+
+void taitol_1cpu_state::puzznic_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).nopr(); // Watchdog
+ map(0xb800, 0xb800).rw("mcu", FUNC(arkanoid_68705p3_device::data_r), FUNC(arkanoid_68705p3_device::data_w));
+ map(0xb801, 0xb801).rw(this, FUNC(taitol_1cpu_state::mcu_control_r), FUNC(taitol_1cpu_state::mcu_control_w));
+ map(0xbc00, 0xbc00).nopw(); // Control register, function unknown
+}
/* bootleg, doesn't have the MCU */
-ADDRESS_MAP_START(taitol_1cpu_state::puzznici_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
- AM_RANGE(0xb801, 0xb801) AM_READ(mcu_control_r)
+void taitol_1cpu_state::puzznici_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).nopr(); // Watchdog
+ map(0xb801, 0xb801).r(this, FUNC(taitol_1cpu_state::mcu_control_r));
// AM_RANGE(0xb801, 0xb801) AM_WRITE(mcu_control_w)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // Control register, function unknown
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::plotting_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xa800, 0xa800) AM_WRITENOP // Watchdog or interrupt ack
- AM_RANGE(0xb800, 0xb800) AM_WRITENOP // Control register, function unknown
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::palamed_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // Control register, function unknown (copy of 8822)
- AM_RANGE(0xb001, 0xb001) AM_READNOP // Watchdog or interrupt ack
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::cachat_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // Control register, function unknown
- AM_RANGE(0xb001, 0xb001) AM_READNOP // Watchdog or interrupt ack (value ignored)
- AM_RANGE(0xfff8, 0xfff8) AM_READWRITE(rombankswitch_r, rombankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(horshoes_state::horshoes_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- ;map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_upd4701->read_xy(space, offset >> 2, mem_mask); });
- AM_RANGE(0xa802, 0xa802) AM_DEVREAD("upd4701", upd4701_device, reset_x)
- AM_RANGE(0xa803, 0xa803) AM_DEVREAD("upd4701", upd4701_device, reset_y)
- AM_RANGE(0xb801, 0xb801) AM_READNOP // Watchdog or interrupt ack
- AM_RANGE(0xb802, 0xb802) AM_WRITE(bankg_w)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::evilston_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w)
- AM_RANGE(0xa800, 0xa807) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::evilston_2_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audiobank")
-ADDRESS_MAP_END
+ map(0xbc00, 0xbc00).nopw(); // Control register, function unknown
+}
+
+
+void taitol_1cpu_state::plotting_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).nopw(); // Watchdog or interrupt ack
+ map(0xb800, 0xb800).nopw(); // Control register, function unknown
+}
+
+
+void taitol_1cpu_state::palamed_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).rw(m_ymsnd, FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa800, 0xa803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb000, 0xb000).nopw(); // Control register, function unknown (copy of 8822)
+ map(0xb001, 0xb001).nopr(); // Watchdog or interrupt ack
+}
+
+
+void taitol_1cpu_state::cachat_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).rw(m_ymsnd, FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa800, 0xa803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb000, 0xb000).nopw(); // Control register, function unknown
+ map(0xb001, 0xb001).nopr(); // Watchdog or interrupt ack (value ignored)
+ map(0xfff8, 0xfff8).rw(this, FUNC(taitol_1cpu_state::rombankswitch_r), FUNC(taitol_1cpu_state::rombankswitch_w));
+}
+
+
+void horshoes_state::horshoes_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(horshoes_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_upd4701->read_xy(space, offset >> 2, mem_mask);
+ });
+ map(0xa802, 0xa802).r(m_upd4701, FUNC(upd4701_device::reset_x));
+ map(0xa803, 0xa803).r(m_upd4701, FUNC(upd4701_device::reset_y));
+ map(0xb801, 0xb801).nopr(); // Watchdog or interrupt ack
+ map(0xb802, 0xb802).w(this, FUNC(horshoes_state::bankg_w));
+ map(0xbc00, 0xbc00).nopw();
+}
+
+void taitol_2cpu_state::evilston_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+ map(0xa800, 0xa807).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+}
+
+void taitol_2cpu_state::evilston_2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xe800, 0xe801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf000, 0xf7ff).bankr("audiobank");
+}
diff --git a/src/mame/drivers/taito_o.cpp b/src/mame/drivers/taito_o.cpp
index ec9ee0c7aa2..a58ed8abb80 100644
--- a/src/mame/drivers/taito_o.cpp
+++ b/src/mame/drivers/taito_o.cpp
@@ -65,14 +65,15 @@ READ16_MEMBER(taitoo_state::io_r)
return retval;
}
-ADDRESS_MAP_START(taitoo_state::parentj_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
- AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
- AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
+void taitoo_state::parentj_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x100000, 0x10ffff).mirror(0x010000).ram();
+ map(0x200000, 0x20000f).rw(this, FUNC(taitoo_state::io_r), FUNC(taitoo_state::io_w)); /* TC0220IOC ? */
+ map(0x300000, 0x300003).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
+ map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w));
+ map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
static INPUT_PORTS_START( parentj )
PORT_START("IN0")
diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp
index 87f24f43f4d..45206f523c2 100644
--- a/src/mame/drivers/taito_x.cpp
+++ b/src/mame/drivers/taito_x.cpp
@@ -417,98 +417,108 @@ WRITE8_MEMBER(taitox_state::sound_bankswitch_w)
/**************************************************************************/
-ADDRESS_MAP_START(taitox_state::superman_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* written each frame at $3a9c, mostly 0x10 */
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* written each frame at $3aa2, mostly 0x10 */
- AM_RANGE(0x500000, 0x500007) AM_READ(superman_dsw_input_r)
- AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* written each frame at $3ab0, mostly 0x10 */
- AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x900000, 0x9007ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff)
- AM_RANGE(0x900800, 0x900fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitox_state::daisenpu_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
-// AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* written each frame at $2ac, values change */
- AM_RANGE(0x500000, 0x50000f) AM_READ(superman_dsw_input_r)
-// AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* written each frame at $2a2, values change */
- AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitox_state::gigandes_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* 0x1 written each frame at $d42, watchdog? */
- AM_RANGE(0x500000, 0x500007) AM_READ(superman_dsw_input_r)
- AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* 0x1 written each frame at $d3c, watchdog? */
- AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitox_state::ballbros_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* 0x1 written each frame at $c56, watchdog? */
- AM_RANGE(0x500000, 0x50000f) AM_READ(superman_dsw_input_r)
- AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* 0x1 written each frame at $c4e, watchdog? */
- AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
- AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */
-ADDRESS_MAP_END
+void taitox_state::superman_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x300000, 0x300001).nopw(); /* written each frame at $3a9c, mostly 0x10 */
+ map(0x400000, 0x400001).nopw(); /* written each frame at $3aa2, mostly 0x10 */
+ map(0x500000, 0x500007).r(this, FUNC(taitox_state::superman_dsw_input_r));
+ map(0x600000, 0x600001).nopw(); /* written each frame at $3ab0, mostly 0x10 */
+ map(0x800000, 0x800001).nopr();
+ map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x900000, 0x9007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff);
+ map(0x900800, 0x900fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff);
+ map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xf00000, 0xf03fff).ram(); /* Main RAM */
+}
+
+void taitox_state::daisenpu_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+// map(0x400000, 0x400001).nopw(); /* written each frame at $2ac, values change */
+ map(0x500000, 0x50000f).r(this, FUNC(taitox_state::superman_dsw_input_r));
+// map(0x600000, 0x600001).nopw(); /* written each frame at $2a2, values change */
+ map(0x800000, 0x800001).nopr();
+ map(0x800001, 0x800001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x800003, 0x800003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x900000, 0x90000f).rw(this, FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w));
+ map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xf00000, 0xf03fff).ram(); /* Main RAM */
+}
+
+void taitox_state::gigandes_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $d42, watchdog? */
+ map(0x500000, 0x500007).r(this, FUNC(taitox_state::superman_dsw_input_r));
+ map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $d3c, watchdog? */
+ map(0x800000, 0x800001).nopr();
+ map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x900000, 0x90000f).rw(this, FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w));
+ map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xf00000, 0xf03fff).ram(); /* Main RAM */
+}
+
+void taitox_state::ballbros_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $c56, watchdog? */
+ map(0x500000, 0x50000f).r(this, FUNC(taitox_state::superman_dsw_input_r));
+ map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $c4e, watchdog? */
+ map(0x800000, 0x800001).nopr();
+ map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0x900000, 0x90000f).rw(this, FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w));
+ map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
+ map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
+ map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
+ map(0xf00000, 0xf03fff).ram(); /* Main RAM */
+}
/**************************************************************************/
-ADDRESS_MAP_START(taitox_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitox_state::daisenpu_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void taitox_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitox_state::sound_bankswitch_w));
+}
+
+void taitox_state::daisenpu_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe200, 0xe200).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xe201, 0xe201).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw();
+ map(0xf200, 0xf200).w(this, FUNC(taitox_state::sound_bankswitch_w));
+}
/**************************************************************************/
diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp
index 08b0554b042..dbf8e65cb52 100644
--- a/src/mame/drivers/taito_z.cpp
+++ b/src/mame/drivers/taito_z.cpp
@@ -1458,271 +1458,293 @@ WRITE8_MEMBER(taitoz_state::taitoz_pancontrol)
***********************************************************/
-ADDRESS_MAP_START(taitoz_state::contcirc_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x084000, 0x087fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x090000, 0x090001) AM_WRITE(contcirc_out_w) /* road palette bank, sub CPU reset, 3d glasses control */
- AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
- AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) /* "root ram" */
- AM_RANGE(0x400000, 0x4006ff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::contcirc_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x084000, 0x087fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x100000, 0x100001) AM_READ8(contcirc_input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff)
- AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, watchdog_r, port_w, 0x00ff)
- AM_RANGE(0x200000, 0x200003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::chasehq_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM
- AM_RANGE(0x400000, 0x400001) AM_READ8(chasehq_input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff)
- AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, watchdog_r, port_w, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(chasehq_cpua_ctrl_w)
- AM_RANGE(0x820000, 0x820003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe00000, 0xe003ff) AM_READWRITE(chasehq_motor_r, chasehq_motor_w) /* motor cpu */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::chq_cpub_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::enforce_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // works without?
- AM_RANGE(0x300000, 0x3006ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) /* "root ram" ??? */
- AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
- AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::enforce_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x200000, 0x200003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::bshark_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x800000, 0x800007) AM_READWRITE(bshark_stick_r, bshark_stick_w)
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::bsharkjjs_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w)
-// AM_RANGE(0x800000, 0x800007) AM_READWRITE(bshark_stick_r, bshark_stick_w) /* No analog stick, this is the Joystick version */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::bshark_cpub_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x108000, 0x10bfff) AM_RAM
- AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x400000, 0x400007) AM_WRITE8(taitoz_pancontrol, 0x00ff) /* pan */
-// AM_RANGE(0x40000a, 0x40000b) AM_READ(taitoz_unknown_r) // ???
- AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff)
- AM_RANGE(0x60000c, 0x60000d) AM_NOP // interrupt controller?
- AM_RANGE(0x60000e, 0x60000f) AM_NOP
- AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::sci_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x10c000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x200010, 0x20001f) AM_READ(sci_steer_input_r)
-// AM_RANGE(0x400000, 0x400001) AM_WRITE(cpua_ctrl_w) // ?? doesn't seem to fit what's written
- AM_RANGE(0x420000, 0x420003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xa20000, 0xa2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc08000, 0xc08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::sci_cpub_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM
- AM_RANGE(0x208000, 0x20bfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::nightstr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x820000, 0x820003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */
- AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe00000, 0xe00011) AM_WRITE(nightstr_motor_w) /* Motor outputs */
- AM_RANGE(0xe40000, 0xe40007) AM_READWRITE(nightstr_stick_r, bshark_stick_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::nightstr_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::aquajack_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // not needed, but it's probably like the others
- AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */
- AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
- AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xa20000, 0xa2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xc40000, 0xc403ff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::aquajack_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x300003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x800800, 0x80083f) AM_READ(aquajack_unknown_r) // Read regularly after write to 800800...
-// AM_RANGE(0x800800, 0x800801) AM_WRITE(taitoz_unknown_w)
-// AM_RANGE(0x900000, 0x900007) AM_READWRITE(taitoz_unknown_r, taitoz_unknown_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::spacegun_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x30c000, 0x30ffff) AM_RAM
- AM_RANGE(0x310000, 0x31ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x500000, 0x5005ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xb00000, 0xb00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::spacegun_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x20c000, 0x20ffff) AM_RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff)
- AM_RANGE(0xc0000c, 0xc0000d) AM_NOP // interrupt controller?
- AM_RANGE(0xc0000e, 0xc0000f) AM_NOP
- AM_RANGE(0xc20000, 0xc20007) AM_WRITE8(taitoz_pancontrol, 0x00ff) /* pan */
- AM_RANGE(0xe00000, 0xe00001) AM_WRITE(spacegun_gun_output_w) /* gun outputs */
- AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(spacegun_lightgun_r, spacegun_lightgun_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::dblaxle_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x203fff) AM_RAM
- AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
- AM_RANGE(0x400010, 0x40001f) AM_READ(dblaxle_steer_input_r)
- AM_RANGE(0x600000, 0x600001) AM_WRITE(dblaxle_cpua_ctrl_w) /* could this be causing int6 ? */
- AM_RANGE(0x620000, 0x620003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemap mirror */
- AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0xa30000, 0xa3002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */
- AM_RANGE(0xc08000, 0xc08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) /* set in int6, seems to stay zero */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::dblaxle_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
- AM_RANGE(0x500000, 0x503fff) AM_RAM /* network ram ? (see Gunbustr) */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitoz_state::racingb_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
- AM_RANGE(0x300010, 0x30001f) AM_READ(dblaxle_steer_input_r)
- AM_RANGE(0x500002, 0x500003) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x520000, 0x520003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x930000, 0x93002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */
- AM_RANGE(0xb08000, 0xb08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) /* alternates 0/0x100 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoz_state::racingb_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x403fff) AM_RAM
- AM_RANGE(0x410000, 0x41ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
- AM_RANGE(0xd00000, 0xd03fff) AM_RAM /* network ram ? */
-ADDRESS_MAP_END
+void taitoz_state::contcirc_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x083fff).ram();
+ map(0x084000, 0x087fff).ram().share("share1");
+ map(0x090000, 0x090001).w(this, FUNC(taitoz_state::contcirc_out_w)); /* road palette bank, sub CPU reset, 3d glasses control */
+ map(0x100000, 0x100007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */
+ map(0x200000, 0x20ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x220000, 0x22000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x300000, 0x301fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); /* "root ram" */
+ map(0x400000, 0x4006ff).ram().share("spriteram");
+}
+
+void taitoz_state::contcirc_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x083fff).ram();
+ map(0x084000, 0x087fff).ram().share("share1");
+ map(0x100001, 0x100001).r(this, FUNC(taitoz_state::contcirc_input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff);
+ map(0x100003, 0x100003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::watchdog_r), FUNC(tc0040ioc_device::port_w));
+ map(0x200000, 0x200003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+}
+
+
+void taitoz_state::chasehq_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x107fff).ram();
+ map(0x108000, 0x10bfff).ram().share("share1");
+ map(0x10c000, 0x10ffff).ram();
+ map(0x400001, 0x400001).r(this, FUNC(taitoz_state::chasehq_input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff);
+ map(0x400003, 0x400003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::watchdog_r), FUNC(tc0040ioc_device::port_w));
+ map(0x800000, 0x800001).w(this, FUNC(taitoz_state::chasehq_cpua_ctrl_w));
+ map(0x820000, 0x820003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0xa00000, 0xa00007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette */
+ map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xd00000, 0xd007ff).ram().share("spriteram");
+ map(0xe00000, 0xe003ff).rw(this, FUNC(taitoz_state::chasehq_motor_r), FUNC(taitoz_state::chasehq_motor_w)); /* motor cpu */
+}
+
+void taitoz_state::chq_cpub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x108000, 0x10bfff).ram().share("share1");
+ map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+}
+
+
+void taitoz_state::enforce_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x107fff).ram().share("share1");
+ map(0x200000, 0x200001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); // works without?
+ map(0x300000, 0x3006ff).ram().share("spriteram");
+ map(0x400000, 0x401fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); /* "root ram" ??? */
+ map(0x500000, 0x500007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */
+ map(0x600000, 0x60ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x620000, 0x62000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
+
+void taitoz_state::enforce_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x107fff).ram().share("share1");
+ map(0x200000, 0x200003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0x300000, 0x300003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff);
+}
+
+
+void taitoz_state::bshark_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x110000, 0x113fff).ram().share("share1");
+ map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x600000, 0x600001).w(this, FUNC(taitoz_state::cpua_ctrl_w));
+ map(0x800000, 0x800007).rw(this, FUNC(taitoz_state::bshark_stick_r), FUNC(taitoz_state::bshark_stick_w));
+ map(0xa00000, 0xa01fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc00fff).ram().share("spriteram");
+ map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
+
+void taitoz_state::bsharkjjs_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x110000, 0x113fff).ram().share("share1");
+ map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x600000, 0x600001).w(this, FUNC(taitoz_state::cpua_ctrl_w));
+// map(0x800000, 0x800007).rw(this, FUNC(taitoz_state::bshark_stick_r), FUNC(taitoz_state::bshark_stick_w)); /* No analog stick, this is the Joystick version */
+ map(0xa00000, 0xa01fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc00fff).ram().share("spriteram");
+ map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+}
+
+void taitoz_state::bshark_cpub_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x108000, 0x10bfff).ram();
+ map(0x110000, 0x113fff).ram().share("share1");
+ map(0x400000, 0x400007).w(this, FUNC(taitoz_state::taitoz_pancontrol)).umask16(0x00ff); /* pan */
+// map(0x40000a, 0x40000b).r(this, FUNC(taitoz_state::taitoz_unknown_r)); // ???
+ map(0x600000, 0x600007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff);
+ map(0x60000c, 0x60000d).noprw(); // interrupt controller?
+ map(0x60000e, 0x60000f).noprw();
+ map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+}
+
+
+void taitoz_state::sci_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x107fff).ram();
+ map(0x108000, 0x10bfff).ram().share("share1");
+ map(0x10c000, 0x10ffff).ram();
+ map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x200010, 0x20001f).r(this, FUNC(taitoz_state::sci_steer_input_r));
+// map(0x400000, 0x400001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); // ?? doesn't seem to fit what's written
+ map(0x420000, 0x420003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0x800000, 0x801fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xa00000, 0xa0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xa20000, 0xa2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xc00000, 0xc03fff).ram().share("spriteram");
+ map(0xc08000, 0xc08001).rw(this, FUNC(taitoz_state::sci_spriteframe_r), FUNC(taitoz_state::sci_spriteframe_w));
+}
+
+void taitoz_state::sci_cpub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x200000, 0x203fff).ram();
+ map(0x208000, 0x20bfff).ram().share("share1");
+ map(0xa00000, 0xa01fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+}
+
+
+void taitoz_state::nightstr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x110000, 0x113fff).ram().share("share1");
+ map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x800000, 0x800001).w(this, FUNC(taitoz_state::cpua_ctrl_w));
+ map(0x820000, 0x820003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0xa00000, 0xa00007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette */
+ map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xd00000, 0xd007ff).ram().share("spriteram");
+ map(0xe00000, 0xe00011).w(this, FUNC(taitoz_state::nightstr_motor_w)); /* Motor outputs */
+ map(0xe40000, 0xe40007).rw(this, FUNC(taitoz_state::nightstr_stick_r), FUNC(taitoz_state::bshark_stick_w));
+}
+
+void taitoz_state::nightstr_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x107fff).ram().share("share1");
+ map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+}
+
+
+void taitoz_state::aquajack_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x107fff).ram().share("share1");
+ map(0x200000, 0x200001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); // not needed, but it's probably like the others
+ map(0x300000, 0x300007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette */
+ map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+ map(0xa00000, 0xa0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0xa20000, 0xa2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xc40000, 0xc403ff).ram().share("spriteram");
+}
+
+void taitoz_state::aquajack_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x107fff).ram().share("share1");
+ map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
+ map(0x300000, 0x300003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0x800800, 0x80083f).r(this, FUNC(taitoz_state::aquajack_unknown_r)); // Read regularly after write to 800800...
+// map(0x800800, 0x800801).w(this, FUNC(taitoz_state::taitoz_unknown_w));
+// map(0x900000, 0x900007).rw(this, FUNC(taitoz_state::taitoz_unknown_r), FUNC(taitoz_state::taitoz_unknown_w));
+}
+
+
+void taitoz_state::spacegun_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x30c000, 0x30ffff).ram();
+ map(0x310000, 0x31ffff).ram().share("share1");
+ map(0x500000, 0x5005ff).ram().share("spriteram");
+ map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0xb00000, 0xb00007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */
+}
+
+void taitoz_state::spacegun_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x20c000, 0x20ffff).ram();
+ map(0x210000, 0x21ffff).ram().share("share1");
+ map(0x800000, 0x80000f).rw(m_tc0510nio, FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0x00ff).cswidth(16);
+ map(0xc00000, 0xc00007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff);
+ map(0xc0000c, 0xc0000d).noprw(); // interrupt controller?
+ map(0xc0000e, 0xc0000f).noprw();
+ map(0xc20000, 0xc20007).w(this, FUNC(taitoz_state::taitoz_pancontrol)).umask16(0x00ff); /* pan */
+ map(0xe00000, 0xe00001).w(this, FUNC(taitoz_state::spacegun_gun_output_w)); /* gun outputs */
+ map(0xf00000, 0xf00007).rw(this, FUNC(taitoz_state::spacegun_lightgun_r), FUNC(taitoz_state::spacegun_lightgun_w));
+}
+
+
+void taitoz_state::dblaxle_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x203fff).ram();
+ map(0x210000, 0x21ffff).ram().share("share1");
+ map(0x400000, 0x40000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w));
+ map(0x400010, 0x40001f).r(this, FUNC(taitoz_state::dblaxle_steer_input_r));
+ map(0x600000, 0x600001).w(this, FUNC(taitoz_state::dblaxle_cpua_ctrl_w)); /* could this be causing int6 ? */
+ map(0x620000, 0x620003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0x800000, 0x801fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x900000, 0x90ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemap mirror */
+ map(0xa00000, 0xa0ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
+ map(0xa30000, 0xa3002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0xc00000, 0xc03fff).ram().share("spriteram"); /* mostly unused ? */
+ map(0xc08000, 0xc08001).rw(this, FUNC(taitoz_state::sci_spriteframe_r), FUNC(taitoz_state::sci_spriteframe_w)); /* set in int6, seems to stay zero */
+}
+
+void taitoz_state::dblaxle_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x110000, 0x11ffff).ram().share("share1");
+ map(0x300000, 0x301fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+ map(0x500000, 0x503fff).ram(); /* network ram ? (see Gunbustr) */
+}
+
+
+void taitoz_state::racingb_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x110000, 0x11ffff).ram().share("share1");
+ map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w));
+ map(0x300010, 0x30001f).r(this, FUNC(taitoz_state::dblaxle_steer_input_r));
+ map(0x500002, 0x500003).w(this, FUNC(taitoz_state::cpua_ctrl_w));
+ map(0x520000, 0x520003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w));
+ map(0x700000, 0x701fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x900000, 0x90ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */
+ map(0x930000, 0x93002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w));
+ map(0xb00000, 0xb03fff).ram().share("spriteram"); /* mostly unused ? */
+ map(0xb08000, 0xb08001).rw(this, FUNC(taitoz_state::sci_spriteframe_r), FUNC(taitoz_state::sci_spriteframe_w)); /* alternates 0/0x100 */
+}
+
+void taitoz_state::racingb_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x403fff).ram();
+ map(0x410000, 0x41ffff).ram().share("share1");
+ map(0xa00000, 0xa01fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w));
+ map(0xd00000, 0xd03fff).ram(); /* network ram ? */
+}
/***************************************************************************/
-ADDRESS_MAP_START(taitoz_state::z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITE(taitoz_pancontrol) /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void taitoz_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).w(this, FUNC(taitoz_state::taitoz_pancontrol)); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitoz_state::sound_bankswitch_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp
index d8f9693edbb..81c2614f0ab 100644
--- a/src/mame/drivers/taitoair.cpp
+++ b/src/mame/drivers/taitoair.cpp
@@ -379,40 +379,43 @@ WRITE8_MEMBER(taitoair_state::coin_control_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(taitoair_state::airsys_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("m68000_mainram")
- AM_RANGE(0x140000, 0x140001) AM_WRITE(system_control_w) /* Pause the TMS32025 */
- AM_RANGE(0x180000, 0x187fff) AM_RAM_WRITE(airsys_gradram_w) AM_SHARE("gradram") /* "gradiation ram (0/1)" */
- AM_RANGE(0x188000, 0x189fff) AM_MIRROR(0x2000) AM_RAM_WRITE(airsys_paletteram16_w) AM_SHARE("paletteram")
- AM_RANGE(0x800000, 0x820fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) /* tilemaps, sprites */
- AM_RANGE(0x906000, 0x906007) AM_WRITE(dma_regs_w) // DMA?
- AM_RANGE(0x908000, 0x90ffff) AM_RAM AM_SHARE("line_ram") /* "line ram" */
- AM_RANGE(0x910000, 0x91ffff) AM_RAM AM_SHARE("dsp_ram") /* "dsp common ram" (TMS320C25) */
- AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("tc0430grw") /* TC0430GRW roz transform coefficients */
- AM_RANGE(0xa00000, 0xa00007) AM_READ(stick_input_r)
- AM_RANGE(0xa00100, 0xa00107) AM_READ(stick2_input_r)
- AM_RANGE(0xa00200, 0xa0020f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) /* other I/O */
- AM_RANGE(0xa80000, 0xa80001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0xa80002, 0xa80003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM /* "power common ram" (mecha drive) */
-ADDRESS_MAP_END
+void taitoair_state::airsys_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x0c0000, 0x0cffff).ram().share("m68000_mainram");
+ map(0x140000, 0x140001).w(this, FUNC(taitoair_state::system_control_w)); /* Pause the TMS32025 */
+ map(0x180000, 0x187fff).ram().w(this, FUNC(taitoair_state::airsys_gradram_w)).share("gradram"); /* "gradiation ram (0/1)" */
+ map(0x188000, 0x189fff).mirror(0x2000).ram().w(this, FUNC(taitoair_state::airsys_paletteram16_w)).share("paletteram");
+ map(0x800000, 0x820fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); /* tilemaps, sprites */
+ map(0x906000, 0x906007).w(this, FUNC(taitoair_state::dma_regs_w)); // DMA?
+ map(0x908000, 0x90ffff).ram().share("line_ram"); /* "line ram" */
+ map(0x910000, 0x91ffff).ram().share("dsp_ram"); /* "dsp common ram" (TMS320C25) */
+ map(0x980000, 0x98000f).ram().share("tc0430grw"); /* TC0430GRW roz transform coefficients */
+ map(0xa00000, 0xa00007).r(this, FUNC(taitoair_state::stick_input_r));
+ map(0xa00100, 0xa00107).r(this, FUNC(taitoair_state::stick2_input_r));
+ map(0xa00200, 0xa0020f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); /* other I/O */
+ map(0xa80000, 0xa80001).nopr();
+ map(0xa80001, 0xa80001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0xa80003, 0xa80003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xb00000, 0xb007ff).ram(); /* "power common ram" (mecha drive) */
+}
/************************** Z80 ****************************/
-ADDRESS_MAP_START(taitoair_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan control */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void taitoair_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan control */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitoair_state::sound_bankswitch_w));
+}
/********************************** TMS32025 ********************************/
@@ -512,33 +515,35 @@ READ16_MEMBER(taitoair_state::dsp_muldiv_2_r)
}
-ADDRESS_MAP_START(taitoair_state::DSP_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitoair_state::DSP_map_data)
- AM_RANGE(0x2003, 0x2003) AM_READNOP //bit 0 DMA status flag or vblank
- AM_RANGE(0x3000, 0x3002) AM_WRITE(dsp_flags_w)
- AM_RANGE(0x3404, 0x3404) AM_WRITE(dsp_muldiv_a_1_w)
- AM_RANGE(0x3405, 0x3405) AM_WRITE(dsp_muldiv_b_1_w)
- AM_RANGE(0x3406, 0x3406) AM_WRITE(dsp_muldiv_c_1_w)
- AM_RANGE(0x3407, 0x3407) AM_READ(dsp_muldiv_1_r)
-
- AM_RANGE(0x3408, 0x3408) AM_WRITE(dsp_muldiv_a_2_w)
- AM_RANGE(0x3409, 0x3409) AM_WRITE(dsp_muldiv_b_2_w)
- AM_RANGE(0x340a, 0x340a) AM_WRITE(dsp_muldiv_c_2_w)
- AM_RANGE(0x340b, 0x340b) AM_READ(dsp_muldiv_2_r)
-
- AM_RANGE(0x3418, 0x3418) AM_WRITE(dsp_test_x_w)
- AM_RANGE(0x3419, 0x3419) AM_WRITE(dsp_test_y_w)
- AM_RANGE(0x341a, 0x341a) AM_WRITE(dsp_test_z_w)
- AM_RANGE(0x341b, 0x341b) AM_READWRITE(dsp_test_point_r, dsp_test_start_w)
- AM_RANGE(0x341c, 0x341c) AM_READ(dsp_test_and_clip_r)
- AM_RANGE(0x341d, 0x341d) AM_READ(dsp_test_or_clip_r)
+void taitoair_state::DSP_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+}
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(lineram_r, lineram_w)
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram_r, dspram_w)
-ADDRESS_MAP_END
+void taitoair_state::DSP_map_data(address_map &map)
+{
+ map(0x2003, 0x2003).nopr(); //bit 0 DMA status flag or vblank
+ map(0x3000, 0x3002).w(this, FUNC(taitoair_state::dsp_flags_w));
+ map(0x3404, 0x3404).w(this, FUNC(taitoair_state::dsp_muldiv_a_1_w));
+ map(0x3405, 0x3405).w(this, FUNC(taitoair_state::dsp_muldiv_b_1_w));
+ map(0x3406, 0x3406).w(this, FUNC(taitoair_state::dsp_muldiv_c_1_w));
+ map(0x3407, 0x3407).r(this, FUNC(taitoair_state::dsp_muldiv_1_r));
+
+ map(0x3408, 0x3408).w(this, FUNC(taitoair_state::dsp_muldiv_a_2_w));
+ map(0x3409, 0x3409).w(this, FUNC(taitoair_state::dsp_muldiv_b_2_w));
+ map(0x340a, 0x340a).w(this, FUNC(taitoair_state::dsp_muldiv_c_2_w));
+ map(0x340b, 0x340b).r(this, FUNC(taitoair_state::dsp_muldiv_2_r));
+
+ map(0x3418, 0x3418).w(this, FUNC(taitoair_state::dsp_test_x_w));
+ map(0x3419, 0x3419).w(this, FUNC(taitoair_state::dsp_test_y_w));
+ map(0x341a, 0x341a).w(this, FUNC(taitoair_state::dsp_test_z_w));
+ map(0x341b, 0x341b).rw(this, FUNC(taitoair_state::dsp_test_point_r), FUNC(taitoair_state::dsp_test_start_w));
+ map(0x341c, 0x341c).r(this, FUNC(taitoair_state::dsp_test_and_clip_r));
+ map(0x341d, 0x341d).r(this, FUNC(taitoair_state::dsp_test_or_clip_r));
+
+ map(0x4000, 0x7fff).rw(this, FUNC(taitoair_state::lineram_r), FUNC(taitoair_state::lineram_w));
+ map(0x8000, 0xffff).rw(this, FUNC(taitoair_state::dspram_r), FUNC(taitoair_state::dspram_w));
+}
/************************************************************
diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp
index a8124297ae5..606fa93ccbd 100644
--- a/src/mame/drivers/taitogn.cpp
+++ b/src/mame/drivers/taitogn.cpp
@@ -635,53 +635,56 @@ DRIVER_INIT_MEMBER(taitogn_state,coh3002t_nz)
m_has_zoom = false;
}
-ADDRESS_MAP_START(taitogn_state::taitogn_map)
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_DEVICE16("flashbank", address_map_bank_device, amap16, 0xffffffff)
- AM_RANGE(0x1fa00000, 0x1fa00003) AM_READ_PORT("P1")
- AM_RANGE(0x1fa00100, 0x1fa00103) AM_READ_PORT("P2")
- AM_RANGE(0x1fa00200, 0x1fa00203) AM_READ_PORT("SERVICE")
- AM_RANGE(0x1fa00300, 0x1fa00303) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1fa10000, 0x1fa10003) AM_READ_PORT("P3")
- AM_RANGE(0x1fa10100, 0x1fa10103) AM_READ_PORT("P4")
- AM_RANGE(0x1fa10200, 0x1fa10203) AM_READ8(boardconfig_r, 0x000000ff)
- AM_RANGE(0x1fa10300, 0x1fa10303) AM_READWRITE8(znsecsel_r, znsecsel_w, 0x000000ff)
- AM_RANGE(0x1fa20000, 0x1fa20003) AM_READWRITE8(coin_r, coin_w, 0x000000ff)
- AM_RANGE(0x1fa30000, 0x1fa30003) AM_READWRITE8(control3_r, control3_w, 0x000000ff)
- AM_RANGE(0x1fa51c00, 0x1fa51dff) AM_READNOP // systematic read at spu_address + 250000, result dropped, maybe other accesses
- AM_RANGE(0x1fa60000, 0x1fa60003) AM_READ16(hack1_r, 0xffffffff)
- AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */
- AM_RANGE(0x1fb00000, 0x1fb0ffff) AM_DEVREADWRITE16("rf5c296", rf5c296_device, io_r, io_w, 0xffffffff)
- AM_RANGE(0x1fb40000, 0x1fb40003) AM_READWRITE8(control_r, control_w, 0x000000ff)
- AM_RANGE(0x1fb60000, 0x1fb60003) AM_WRITE16(control2_w, 0x0000ffff)
- AM_RANGE(0x1fb70000, 0x1fb70003) AM_READWRITE16(gn_1fb70000_r, gn_1fb70000_w, 0x0000ffff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_data_w, 0x0000ffff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_address_w, 0xffff0000)
- AM_RANGE(0x1fba0000, 0x1fba0003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, sound_irq_w, 0x0000ffff)
- AM_RANGE(0x1fbc0000, 0x1fbc0003) AM_DEVREAD16("taito_zoom", taito_zoom_device, sound_irq_r, 0x0000ffff)
- AM_RANGE(0x1fbe0000, 0x1fbe01ff) AM_DEVREADWRITE8("taito_zoom", taito_zoom_device, shared_ram_r, shared_ram_w, 0x00ff00ff) // M66220FP for comms with the MN10200
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitogn_state::flashbank_map)
+void taitogn_state::taitogn_map(address_map &map)
+{
+ map(0x1f000000, 0x1f7fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16));
+ map(0x1fa00000, 0x1fa00003).portr("P1");
+ map(0x1fa00100, 0x1fa00103).portr("P2");
+ map(0x1fa00200, 0x1fa00203).portr("SERVICE");
+ map(0x1fa00300, 0x1fa00303).portr("SYSTEM");
+ map(0x1fa10000, 0x1fa10003).portr("P3");
+ map(0x1fa10100, 0x1fa10103).portr("P4");
+ map(0x1fa10200, 0x1fa10200).r(this, FUNC(taitogn_state::boardconfig_r));
+ map(0x1fa10300, 0x1fa10300).rw(this, FUNC(taitogn_state::znsecsel_r), FUNC(taitogn_state::znsecsel_w));
+ map(0x1fa20000, 0x1fa20000).rw(this, FUNC(taitogn_state::coin_r), FUNC(taitogn_state::coin_w));
+ map(0x1fa30000, 0x1fa30000).rw(this, FUNC(taitogn_state::control3_r), FUNC(taitogn_state::control3_w));
+ map(0x1fa51c00, 0x1fa51dff).nopr(); // systematic read at spu_address + 250000, result dropped, maybe other accesses
+ map(0x1fa60000, 0x1fa60003).r(this, FUNC(taitogn_state::hack1_r));
+ map(0x1faf0000, 0x1faf07ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)); /* eeprom */
+ map(0x1fb00000, 0x1fb0ffff).rw("rf5c296", FUNC(rf5c296_device::io_r), FUNC(rf5c296_device::io_w));
+ map(0x1fb40000, 0x1fb40000).rw(this, FUNC(taitogn_state::control_r), FUNC(taitogn_state::control_w));
+ map(0x1fb60000, 0x1fb60001).w(this, FUNC(taitogn_state::control2_w));
+ map(0x1fb70000, 0x1fb70001).rw(this, FUNC(taitogn_state::gn_1fb70000_r), FUNC(taitogn_state::gn_1fb70000_w));
+ map(0x1fb80000, 0x1fb80001).w(m_zoom, FUNC(taito_zoom_device::reg_data_w));
+ map(0x1fb80002, 0x1fb80003).w(m_zoom, FUNC(taito_zoom_device::reg_address_w));
+ map(0x1fba0000, 0x1fba0001).w(m_zoom, FUNC(taito_zoom_device::sound_irq_w));
+ map(0x1fbc0000, 0x1fbc0001).r(m_zoom, FUNC(taito_zoom_device::sound_irq_r));
+ map(0x1fbe0000, 0x1fbe01ff).rw(m_zoom, FUNC(taito_zoom_device::shared_ram_r), FUNC(taito_zoom_device::shared_ram_w)).umask32(0x00ff00ff); // M66220FP for comms with the MN10200
+}
+
+void taitogn_state::flashbank_map(address_map &map)
+{
// Bank 0 has access to the sub-bios, the mn102 flash and the rf5c296 mem zone
- AM_RANGE(0x00000000, 0x001fffff) AM_DEVREADWRITE("biosflash", intelfsh16_device, read, write)
- AM_RANGE(0x00200000, 0x002fffff) AM_DEVREADWRITE("rf5c296", rf5c296_device, mem_r, mem_w )
- AM_RANGE(0x00300000, 0x0037ffff) AM_DEVREADWRITE("pgmflash", intelfsh16_device, read, write)
+ map(0x00000000, 0x001fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0x00200000, 0x002fffff).rw("rf5c296", FUNC(rf5c296_device::mem_r), FUNC(rf5c296_device::mem_w));
+ map(0x00300000, 0x0037ffff).rw(m_pgmflash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
// Bank 1 & 3 has access to the 3 samples flashes
- AM_RANGE(0x08000000, 0x081fffff) AM_MIRROR(0x10000000) AM_DEVREADWRITE("sndflash0", intelfsh16_device, read, write)
- AM_RANGE(0x08200000, 0x083fffff) AM_MIRROR(0x10000000) AM_DEVREADWRITE("sndflash1", intelfsh16_device, read, write)
- AM_RANGE(0x08400000, 0x085fffff) AM_MIRROR(0x10000000) AM_DEVREADWRITE("sndflash2", intelfsh16_device, read, write)
+ map(0x08000000, 0x081fffff).mirror(0x10000000).rw(m_sndflash0, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0x08200000, 0x083fffff).mirror(0x10000000).rw(m_sndflash1, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0x08400000, 0x085fffff).mirror(0x10000000).rw(m_sndflash2, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
// Bank 2 has access to the sub-bios, the mn102 flash and the mask eprom
- AM_RANGE(0x10000000, 0x100fffff) AM_ROM AM_REGION("bioseprom", 0)
- AM_RANGE(0x10100000, 0x1017ffff) AM_MIRROR(0x80000) AM_DEVREADWRITE("pgmflash", intelfsh16_device, read, write)
- AM_RANGE(0x10200000, 0x103fffff) AM_DEVREADWRITE("biosflash", intelfsh16_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitogn_state::taitogn_mp_map)
- AM_IMPORT_FROM(taitogn_map)
- AM_RANGE(0x1fa10100, 0x1fa10103) AM_READ8(gnet_mahjong_panel_r, 0x000000ff)
-ADDRESS_MAP_END
+ map(0x10000000, 0x100fffff).rom().region("bioseprom", 0);
+ map(0x10100000, 0x1017ffff).mirror(0x80000).rw(m_pgmflash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+ map(0x10200000, 0x103fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
+}
+
+void taitogn_state::taitogn_mp_map(address_map &map)
+{
+ taitogn_map(map);
+ map(0x1fa10100, 0x1fa10100).r(this, FUNC(taitogn_state::gnet_mahjong_panel_r));
+}
SLOT_INTERFACE_START(slot_ataflash)
SLOT_INTERFACE("taitopccard1", TAITO_PCCARD1)
diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp
index c6659cd4e3c..d25b3c3fb56 100644
--- a/src/mame/drivers/taitojc.cpp
+++ b/src/mame/drivers/taitojc.cpp
@@ -618,26 +618,27 @@ WRITE8_MEMBER(taitojc_state::jc_lan_w)
}
-ADDRESS_MAP_START(taitojc_state::taitojc_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_MIRROR(0x200000)
- AM_RANGE(0x00400000, 0x01bfffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0x04000000, 0x040f7fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x040f8000, 0x040fbfff) AM_READWRITE(taitojc_tile_r, taitojc_tile_w)
- AM_RANGE(0x040fc000, 0x040fefff) AM_READWRITE(taitojc_char_r, taitojc_char_w)
- AM_RANGE(0x040ff000, 0x040fffff) AM_RAM AM_SHARE("objlist")
- AM_RANGE(0x05800000, 0x0580003f) AM_READ8(jc_pcbid_r, 0xffffffff)
- AM_RANGE(0x05900000, 0x05900007) AM_READWRITE8(mcu_comm_r, mcu_comm_w, 0xffffffff)
- AM_RANGE(0x06400000, 0x0641ffff) AM_READWRITE(taitojc_palette_r, taitojc_palette_w) AM_SHARE("palette_ram")
- AM_RANGE(0x06600000, 0x0660001f) AM_DEVREADWRITE8("tc0640fio", tc0640fio_device, read, write, 0xff000000)
- AM_RANGE(0x0660004c, 0x0660004f) AM_WRITE_PORT("EEPROMOUT")
- AM_RANGE(0x06800000, 0x06800003) AM_WRITE8(jc_irq_unk_w, 0x00ff0000)
- AM_RANGE(0x06a00000, 0x06a01fff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xff000000)
- AM_RANGE(0x06c00000, 0x06c0001f) AM_READWRITE8(jc_lan_r, jc_lan_w, 0x00ff0000)
- AM_RANGE(0x08000000, 0x080fffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE16(dsp_shared_r, dsp_shared_w, 0xffff0000)
- AM_RANGE(0x10001ff8, 0x10001ffb) AM_READ16(dsp_to_main_7fe_r, 0xffff0000)
- AM_RANGE(0x10001ffc, 0x10001fff) AM_WRITE16(main_to_dsp_7ff_w, 0xffff0000)
-ADDRESS_MAP_END
+void taitojc_state::taitojc_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).rom().mirror(0x200000);
+ map(0x00400000, 0x01bfffff).rom().region("gfx1", 0);
+ map(0x04000000, 0x040f7fff).ram().share("vram");
+ map(0x040f8000, 0x040fbfff).rw(this, FUNC(taitojc_state::taitojc_tile_r), FUNC(taitojc_state::taitojc_tile_w));
+ map(0x040fc000, 0x040fefff).rw(this, FUNC(taitojc_state::taitojc_char_r), FUNC(taitojc_state::taitojc_char_w));
+ map(0x040ff000, 0x040fffff).ram().share("objlist");
+ map(0x05800000, 0x0580003f).r(this, FUNC(taitojc_state::jc_pcbid_r));
+ map(0x05900000, 0x05900007).rw(this, FUNC(taitojc_state::mcu_comm_r), FUNC(taitojc_state::mcu_comm_w));
+ map(0x06400000, 0x0641ffff).rw(this, FUNC(taitojc_state::taitojc_palette_r), FUNC(taitojc_state::taitojc_palette_w)).share("palette_ram");
+ map(0x06600000, 0x0660001f).rw(m_tc0640fio, FUNC(tc0640fio_device::read), FUNC(tc0640fio_device::write)).umask32(0xff000000);
+ map(0x0660004c, 0x0660004f).portw("EEPROMOUT");
+ map(0x06800001, 0x06800001).w(this, FUNC(taitojc_state::jc_irq_unk_w));
+ map(0x06a00000, 0x06a01fff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)).umask32(0xff000000);
+ map(0x06c00000, 0x06c0001f).rw(this, FUNC(taitojc_state::jc_lan_r), FUNC(taitojc_state::jc_lan_w)).umask32(0x00ff0000);
+ map(0x08000000, 0x080fffff).ram().share("main_ram");
+ map(0x10000000, 0x10001fff).rw(this, FUNC(taitojc_state::dsp_shared_r), FUNC(taitojc_state::dsp_shared_w)).umask32(0xffff0000);
+ map(0x10001ff8, 0x10001ff9).r(this, FUNC(taitojc_state::dsp_to_main_7fe_r));
+ map(0x10001ffc, 0x10001ffd).w(this, FUNC(taitojc_state::main_to_dsp_7ff_w));
+}
/*
@@ -668,12 +669,13 @@ WRITE8_MEMBER(taitojc_state::dendego_brakemeter_w)
}
}
-ADDRESS_MAP_START(taitojc_state::dendego_map)
- AM_IMPORT_FROM( taitojc_map )
- AM_RANGE(0x06e00000, 0x06e00003) AM_WRITE8(dendego_speedmeter_w, 0x00ff0000)
- AM_RANGE(0x06e00004, 0x06e00007) AM_WRITE8(dendego_brakemeter_w, 0x00ff0000)
- AM_RANGE(0x06e0000c, 0x06e0000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000)
-ADDRESS_MAP_END
+void taitojc_state::dendego_map(address_map &map)
+{
+ taitojc_map(map);
+ map(0x06e00001, 0x06e00001).w(this, FUNC(taitojc_state::dendego_speedmeter_w));
+ map(0x06e00005, 0x06e00005).w(this, FUNC(taitojc_state::dendego_brakemeter_w));
+ map(0x06e0000d, 0x06e0000d).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
@@ -743,18 +745,20 @@ READ8_MEMBER(taitojc_state::hc11_analog_r)
}
-ADDRESS_MAP_START(taitojc_state::hc11_pgm_map)
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void taitojc_state::hc11_pgm_map(address_map &map)
+{
+ map(0x4000, 0x5fff).ram();
+ map(0x8000, 0xffff).rom();
+}
-ADDRESS_MAP_START(taitojc_state::hc11_io_map)
- AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA ) AM_READNOP // ?
- AM_RANGE(MC68HC11_IO_PORTG, MC68HC11_IO_PORTG ) AM_READWRITE(hc11_comm_r, hc11_comm_w)
- AM_RANGE(MC68HC11_IO_PORTH, MC68HC11_IO_PORTH ) AM_READWRITE(hc11_output_r, hc11_output_w)
- AM_RANGE(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA) AM_READWRITE(hc11_data_r, hc11_data_w)
- AM_RANGE(MC68HC11_IO_AD0, MC68HC11_IO_AD7 ) AM_READ(hc11_analog_r)
-ADDRESS_MAP_END
+void taitojc_state::hc11_io_map(address_map &map)
+{
+ map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).nopr(); // ?
+ map(MC68HC11_IO_PORTG, MC68HC11_IO_PORTG).rw(this, FUNC(taitojc_state::hc11_comm_r), FUNC(taitojc_state::hc11_comm_w));
+ map(MC68HC11_IO_PORTH, MC68HC11_IO_PORTH).rw(this, FUNC(taitojc_state::hc11_output_r), FUNC(taitojc_state::hc11_output_w));
+ map(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA).rw(this, FUNC(taitojc_state::hc11_data_r), FUNC(taitojc_state::hc11_data_w));
+ map(MC68HC11_IO_AD0, MC68HC11_IO_AD7).r(this, FUNC(taitojc_state::hc11_analog_r));
+}
@@ -845,29 +849,31 @@ WRITE16_MEMBER(taitojc_state::dsp_rom_w)
}
}
-ADDRESS_MAP_START(taitojc_state::tms_program_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_MIRROR(0x4000)
- AM_RANGE(0x6000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitojc_state::tms_data_map)
- AM_RANGE(0x6a01, 0x6a02) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, render_w)
- AM_RANGE(0x6a11, 0x6a12) AM_NOP // same as 0x6a01..02 for the second renderer chip?
- AM_RANGE(0x6b20, 0x6b20) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w)
- AM_RANGE(0x6b22, 0x6b22) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w)
- AM_RANGE(0x6b23, 0x6b23) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w)
- AM_RANGE(0x6c00, 0x6c01) AM_READWRITE(dsp_rom_r, dsp_rom_w)
- AM_RANGE(0x7000, 0x7002) AM_WRITE(dsp_math_projection_w)
- AM_RANGE(0x7010, 0x7012) AM_WRITE(dsp_math_intersection_w)
- AM_RANGE(0x7013, 0x7015) AM_WRITE(dsp_math_viewport_w)
- AM_RANGE(0x701b, 0x701b) AM_READ(dsp_math_intersection_r)
- AM_RANGE(0x701d, 0x701d) AM_READ(dsp_math_projection_y_r)
- AM_RANGE(0x701f, 0x701f) AM_READ(dsp_math_projection_x_r)
- AM_RANGE(0x7022, 0x7022) AM_READ(dsp_math_unk_r)
- AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("dsp_shared")
- AM_RANGE(0x7ffe, 0x7ffe) AM_WRITE(dsp_to_main_7fe_w)
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void taitojc_state::tms_program_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().mirror(0x4000);
+ map(0x6000, 0x7fff).ram();
+}
+
+void taitojc_state::tms_data_map(address_map &map)
+{
+ map(0x6a01, 0x6a02).w(m_tc0780fpa, FUNC(tc0780fpa_device::render_w));
+ map(0x6a11, 0x6a12).noprw(); // same as 0x6a01..02 for the second renderer chip?
+ map(0x6b20, 0x6b20).w(m_tc0780fpa, FUNC(tc0780fpa_device::poly_fifo_w));
+ map(0x6b22, 0x6b22).w(m_tc0780fpa, FUNC(tc0780fpa_device::tex_w));
+ map(0x6b23, 0x6b23).rw(m_tc0780fpa, FUNC(tc0780fpa_device::tex_addr_r), FUNC(tc0780fpa_device::tex_addr_w));
+ map(0x6c00, 0x6c01).rw(this, FUNC(taitojc_state::dsp_rom_r), FUNC(taitojc_state::dsp_rom_w));
+ map(0x7000, 0x7002).w(this, FUNC(taitojc_state::dsp_math_projection_w));
+ map(0x7010, 0x7012).w(this, FUNC(taitojc_state::dsp_math_intersection_w));
+ map(0x7013, 0x7015).w(this, FUNC(taitojc_state::dsp_math_viewport_w));
+ map(0x701b, 0x701b).r(this, FUNC(taitojc_state::dsp_math_intersection_r));
+ map(0x701d, 0x701d).r(this, FUNC(taitojc_state::dsp_math_projection_y_r));
+ map(0x701f, 0x701f).r(this, FUNC(taitojc_state::dsp_math_projection_x_r));
+ map(0x7022, 0x7022).r(this, FUNC(taitojc_state::dsp_math_unk_r));
+ map(0x7800, 0x7fff).ram().share("dsp_shared");
+ map(0x7ffe, 0x7ffe).w(this, FUNC(taitojc_state::dsp_to_main_7fe_w));
+ map(0x8000, 0xffff).ram();
+}
diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp
index b3607153b87..ffdd0b7c9c6 100644
--- a/src/mame/drivers/taitopjc.cpp
+++ b/src/mame/drivers/taitopjc.cpp
@@ -526,14 +526,15 @@ WRITE64_MEMBER(taitopjc_state::dsp_w)
// DBAT2 U: 0xc0000003 L: 0xc0000022 (0xc0000000...0xc001ffff)
// DBAT3 U: 0xfe0003ff L: 0xfe000022 (0xfe000000...0xffffffff)
-ADDRESS_MAP_START(taitopjc_state::ppc603e_mem)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM // Work RAM
- AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(video_r, video_w)
- AM_RANGE(0x80000000, 0x80003fff) AM_READWRITE(dsp_r, dsp_w)
- AM_RANGE(0xc0000000, 0xc0003fff) AM_READWRITE(ppc_common_r, ppc_common_w)
- AM_RANGE(0xfe800000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void taitopjc_state::ppc603e_mem(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram(); // Work RAM
+ map(0x40000000, 0x4000000f).rw(this, FUNC(taitopjc_state::video_r), FUNC(taitopjc_state::video_w));
+ map(0x80000000, 0x80003fff).rw(this, FUNC(taitopjc_state::dsp_r), FUNC(taitopjc_state::dsp_w));
+ map(0xc0000000, 0xc0003fff).rw(this, FUNC(taitopjc_state::ppc_common_r), FUNC(taitopjc_state::ppc_common_w));
+ map(0xfe800000, 0xff7fffff).rom().region("gfx1", 0);
+ map(0xffe00000, 0xffffffff).rom().region("user1", 0);
+}
@@ -625,18 +626,20 @@ WRITE16_MEMBER(taitopjc_state::tlcs_unk_w)
// 0xfc0fb5: INTRX1
// 0xfc0f41: INTTX1
-ADDRESS_MAP_START(taitopjc_state::tlcs900h_mem)
- AM_RANGE(0x010000, 0x02ffff) AM_RAM // Work RAM
- AM_RANGE(0x040000, 0x0400ff) AM_READWRITE8(tlcs_sound_r, tlcs_sound_w, 0xffff)
- AM_RANGE(0x044000, 0x045fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x060000, 0x061fff) AM_READWRITE8(tlcs_common_r, tlcs_common_w, 0xffff)
- AM_RANGE(0x06c000, 0x06c00f) AM_WRITE(tlcs_unk_w)
- AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0)
-ADDRESS_MAP_END
+void taitopjc_state::tlcs900h_mem(address_map &map)
+{
+ map(0x010000, 0x02ffff).ram(); // Work RAM
+ map(0x040000, 0x0400ff).rw(this, FUNC(taitopjc_state::tlcs_sound_r), FUNC(taitopjc_state::tlcs_sound_w));
+ map(0x044000, 0x045fff).ram().share("nvram");
+ map(0x060000, 0x061fff).rw(this, FUNC(taitopjc_state::tlcs_common_r), FUNC(taitopjc_state::tlcs_common_w));
+ map(0x06c000, 0x06c00f).w(this, FUNC(taitopjc_state::tlcs_unk_w));
+ map(0xfc0000, 0xffffff).rom().region("io_cpu", 0);
+}
-ADDRESS_MAP_START(taitopjc_state::mn10200_map)
- AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mn10200", 0)
-ADDRESS_MAP_END
+void taitopjc_state::mn10200_map(address_map &map)
+{
+ map(0x080000, 0x0fffff).rom().region("mn10200", 0);
+}
@@ -676,25 +679,28 @@ WRITE16_MEMBER(taitopjc_state::dsp_romh_w)
}
-ADDRESS_MAP_START(taitopjc_state::tms_program_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x4c00, 0xefff) AM_ROM AM_REGION("user2", 0x9800)
-ADDRESS_MAP_END
+void taitopjc_state::tms_program_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("user2", 0);
+ map(0x4c00, 0xefff).rom().region("user2", 0x9800);
+}
-ADDRESS_MAP_START(taitopjc_state::tms_data_map)
- AM_RANGE(0x4000, 0x6fff) AM_ROM AM_REGION("user2", 0x8000)
- AM_RANGE(0x7000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_READWRITE(tms_dspshare_r, tms_dspshare_w)
-ADDRESS_MAP_END
+void taitopjc_state::tms_data_map(address_map &map)
+{
+ map(0x4000, 0x6fff).rom().region("user2", 0x8000);
+ map(0x7000, 0xefff).ram();
+ map(0xf000, 0xffff).rw(this, FUNC(taitopjc_state::tms_dspshare_r), FUNC(taitopjc_state::tms_dspshare_w));
+}
-ADDRESS_MAP_START(taitopjc_state::tms_io_map)
- AM_RANGE(0x0053, 0x0053) AM_WRITE(dsp_roml_w)
- AM_RANGE(0x0057, 0x0057) AM_WRITE(dsp_romh_w)
- AM_RANGE(0x0058, 0x0058) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w)
- AM_RANGE(0x005a, 0x005a) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w)
- AM_RANGE(0x005b, 0x005b) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w)
- AM_RANGE(0x005f, 0x005f) AM_READ(dsp_rom_r)
-ADDRESS_MAP_END
+void taitopjc_state::tms_io_map(address_map &map)
+{
+ map(0x0053, 0x0053).w(this, FUNC(taitopjc_state::dsp_roml_w));
+ map(0x0057, 0x0057).w(this, FUNC(taitopjc_state::dsp_romh_w));
+ map(0x0058, 0x0058).w(m_tc0780fpa, FUNC(tc0780fpa_device::poly_fifo_w));
+ map(0x005a, 0x005a).w(m_tc0780fpa, FUNC(tc0780fpa_device::tex_w));
+ map(0x005b, 0x005b).rw(m_tc0780fpa, FUNC(tc0780fpa_device::tex_addr_r), FUNC(tc0780fpa_device::tex_addr_w));
+ map(0x005f, 0x005f).r(this, FUNC(taitopjc_state::dsp_rom_r));
+}
static INPUT_PORTS_START( taitopjc )
diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp
index 275285baa36..194cf5fe6dd 100644
--- a/src/mame/drivers/taitosj.cpp
+++ b/src/mame/drivers/taitosj.cpp
@@ -202,51 +202,53 @@ CUSTOM_INPUT_MEMBER(taitosj_state::input_port_4_f0_r)
}
-ADDRESS_MAP_START(taitosj_state::taitosj_main_nomcu_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07fe) AM_READWRITE(taitosj_fake_data_r, taitosj_fake_data_w)
- AM_RANGE(0x8801, 0x8801) AM_MIRROR(0x07fe) AM_READ(taitosj_fake_status_r)
- AM_RANGE(0x9000, 0xbfff) AM_WRITE(taitosj_characterram_w) AM_SHARE("characterram")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram_1")
- AM_RANGE(0xc800, 0xcbff) AM_RAM AM_SHARE("videoram_2")
- AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram_3")
- AM_RANGE(0xd000, 0xd05f) AM_RAM AM_SHARE("colscrolly")
- AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd200, 0xd27f) AM_MIRROR(0x0080) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0xd300, 0xd300) AM_MIRROR(0x00ff) AM_WRITEONLY AM_SHARE("video_priority")
- AM_RANGE(0xd400, 0xd403) AM_MIRROR(0x00f0) AM_READONLY AM_SHARE("collision_reg")
- AM_RANGE(0xd404, 0xd404) AM_MIRROR(0x00f3) AM_READ(taitosj_gfxrom_r)
- AM_RANGE(0xd408, 0xd408) AM_MIRROR(0x00f0) AM_READ_PORT("IN0")
- AM_RANGE(0xd409, 0xd409) AM_MIRROR(0x00f0) AM_READ_PORT("IN1")
- AM_RANGE(0xd40a, 0xd40a) AM_MIRROR(0x00f0) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0xd40b, 0xd40b) AM_MIRROR(0x00f0) AM_READ_PORT("IN2")
- AM_RANGE(0xd40c, 0xd40c) AM_MIRROR(0x00f0) AM_READ_PORT("IN3") /* Service */
- AM_RANGE(0xd40d, 0xd40d) AM_MIRROR(0x00f0) AM_READ_PORT("IN4")
- AM_RANGE(0xd40e, 0xd40f) AM_MIRROR(0x00f0) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xd40f, 0xd40f) AM_MIRROR(0x00f0) AM_DEVREAD("ay1", ay8910_device, data_r) /* DSW2 and DSW3 */
- AM_RANGE(0xd500, 0xd505) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0xd506, 0xd507) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("colorbank")
- AM_RANGE(0xd508, 0xd508) AM_MIRROR(0x00f0) AM_WRITE(taitosj_collision_reg_clear_w)
- AM_RANGE(0xd509, 0xd50a) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("gfxpointer")
- AM_RANGE(0xd50b, 0xd50b) AM_MIRROR(0x00f0) AM_WRITE(soundlatch_w)
- AM_RANGE(0xd50c, 0xd50c) AM_MIRROR(0x00f0) AM_WRITE(sound_semaphore2_w)
- AM_RANGE(0xd50d, 0xd50d) AM_MIRROR(0x00f0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xd50e, 0xd50e) AM_MIRROR(0x00f0) AM_WRITE(taitosj_bankswitch_w)
- AM_RANGE(0xd50f, 0xd50f) AM_MIRROR(0x00f0) AM_WRITENOP
- AM_RANGE(0xd600, 0xd600) AM_MIRROR(0x00ff) AM_WRITEONLY AM_SHARE("video_mode")
- AM_RANGE(0xd700, 0xdfff) AM_NOP
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void taitosj_state::taitosj_main_nomcu_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).mirror(0x07fe).rw(this, FUNC(taitosj_state::taitosj_fake_data_r), FUNC(taitosj_state::taitosj_fake_data_w));
+ map(0x8801, 0x8801).mirror(0x07fe).r(this, FUNC(taitosj_state::taitosj_fake_status_r));
+ map(0x9000, 0xbfff).w(this, FUNC(taitosj_state::taitosj_characterram_w)).share("characterram");
+ map(0xc000, 0xc3ff).ram();
+ map(0xc400, 0xc7ff).ram().share("videoram_1");
+ map(0xc800, 0xcbff).ram().share("videoram_2");
+ map(0xcc00, 0xcfff).ram().share("videoram_3");
+ map(0xd000, 0xd05f).ram().share("colscrolly");
+ map(0xd100, 0xd1ff).ram().share("spriteram");
+ map(0xd200, 0xd27f).mirror(0x0080).ram().share("paletteram");
+ map(0xd300, 0xd300).mirror(0x00ff).writeonly().share("video_priority");
+ map(0xd400, 0xd403).mirror(0x00f0).readonly().share("collision_reg");
+ map(0xd404, 0xd404).mirror(0x00f3).r(this, FUNC(taitosj_state::taitosj_gfxrom_r));
+ map(0xd408, 0xd408).mirror(0x00f0).portr("IN0");
+ map(0xd409, 0xd409).mirror(0x00f0).portr("IN1");
+ map(0xd40a, 0xd40a).mirror(0x00f0).portr("DSW1"); /* DSW1 */
+ map(0xd40b, 0xd40b).mirror(0x00f0).portr("IN2");
+ map(0xd40c, 0xd40c).mirror(0x00f0).portr("IN3"); /* Service */
+ map(0xd40d, 0xd40d).mirror(0x00f0).portr("IN4");
+ map(0xd40e, 0xd40f).mirror(0x00f0).w(m_ay1, FUNC(ay8910_device::address_data_w));
+ map(0xd40f, 0xd40f).mirror(0x00f0).r(m_ay1, FUNC(ay8910_device::data_r)); /* DSW2 and DSW3 */
+ map(0xd500, 0xd505).mirror(0x00f0).writeonly().share("scroll");
+ map(0xd506, 0xd507).mirror(0x00f0).writeonly().share("colorbank");
+ map(0xd508, 0xd508).mirror(0x00f0).w(this, FUNC(taitosj_state::taitosj_collision_reg_clear_w));
+ map(0xd509, 0xd50a).mirror(0x00f0).writeonly().share("gfxpointer");
+ map(0xd50b, 0xd50b).mirror(0x00f0).w(this, FUNC(taitosj_state::soundlatch_w));
+ map(0xd50c, 0xd50c).mirror(0x00f0).w(this, FUNC(taitosj_state::sound_semaphore2_w));
+ map(0xd50d, 0xd50d).mirror(0x00f0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xd50e, 0xd50e).mirror(0x00f0).w(this, FUNC(taitosj_state::taitosj_bankswitch_w));
+ map(0xd50f, 0xd50f).mirror(0x00f0).nopw();
+ map(0xd600, 0xd600).mirror(0x00ff).writeonly().share("video_mode");
+ map(0xd700, 0xdfff).noprw();
+ map(0xe000, 0xffff).rom();
+}
/* only difference is taitosj_fake_ replaced with taitosj_mcu_ */
-ADDRESS_MAP_START(taitosj_state::taitosj_main_mcu_map)
- AM_IMPORT_FROM( taitosj_main_nomcu_map )
- AM_RANGE(0x8800, 0x8801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("bmcu", taito_sj_security_mcu_device, data_r, data_w)
-ADDRESS_MAP_END
+void taitosj_state::taitosj_main_mcu_map(address_map &map)
+{
+ taitosj_main_nomcu_map(map);
+ map(0x8800, 0x8801).mirror(0x07fe).rw(m_mcu, FUNC(taito_sj_security_mcu_device::data_r), FUNC(taito_sj_security_mcu_device::data_w));
+}
@@ -272,43 +274,44 @@ CUSTOM_INPUT_MEMBER(taitosj_state::kikstart_gear_r)
}
// TODO: merge with above
-ADDRESS_MAP_START(taitosj_state::kikstart_main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("bmcu", taito_sj_security_mcu_device, data_r, data_w)
- AM_RANGE(0x8802, 0x8802) AM_NOP
- AM_RANGE(0x8a00, 0x8a5f) AM_WRITEONLY AM_SHARE("colscrolly")
- AM_RANGE(0x9000, 0xbfff) AM_WRITE(taitosj_characterram_w) AM_SHARE("characterram")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram_1")
- AM_RANGE(0xc800, 0xcbff) AM_RAM AM_SHARE("videoram_2")
- AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram_3")
- AM_RANGE(0xd000, 0xd001) AM_WRITEONLY AM_SHARE("colorbank")
- AM_RANGE(0xd002, 0xd007) AM_WRITEONLY AM_SHARE("scroll")
- AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd200, 0xd27f) AM_RAM AM_SHARE("paletteram")
- AM_RANGE(0xd300, 0xd300) AM_WRITEONLY AM_SHARE("video_priority")
- AM_RANGE(0xd400, 0xd403) AM_READONLY AM_SHARE("collision_reg")
- AM_RANGE(0xd404, 0xd404) AM_READ(taitosj_gfxrom_r)
- AM_RANGE(0xd408, 0xd408) AM_MIRROR(0x00f0) AM_READ_PORT("IN0")
- AM_RANGE(0xd409, 0xd409) AM_MIRROR(0x00f0) AM_READ_PORT("IN1")
- AM_RANGE(0xd40a, 0xd40a) AM_MIRROR(0x00f0) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0xd40b, 0xd40b) AM_MIRROR(0x00f0) AM_READ_PORT("IN2")
- AM_RANGE(0xd40c, 0xd40c) AM_MIRROR(0x00f0) AM_READ_PORT("IN3") /* Service */
- AM_RANGE(0xd40d, 0xd40d) AM_MIRROR(0x00f0) AM_READ_PORT("IN4")
- AM_RANGE(0xd40e, 0xd40f) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xd40f, 0xd40f) AM_DEVREAD("ay1", ay8910_device, data_r) /* DSW2 and DSW3 */
- AM_RANGE(0xd508, 0xd508) AM_WRITE(taitosj_collision_reg_clear_w)
- AM_RANGE(0xd509, 0xd50a) AM_WRITEONLY AM_SHARE("gfxpointer")
- AM_RANGE(0xd50b, 0xd50b) AM_WRITE(soundlatch_w)
- AM_RANGE(0xd50c, 0xd50c) AM_WRITE(sound_semaphore2_w)
- AM_RANGE(0xd50d, 0xd50d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xd50e, 0xd50e) AM_WRITE(taitosj_bankswitch_w)
- AM_RANGE(0xd600, 0xd600) AM_WRITEONLY AM_SHARE("video_mode")
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("kikstart_scroll")// scroll ram + ???
- AM_RANGE(0xe000, 0xefff) AM_ROM
-ADDRESS_MAP_END
+void taitosj_state::kikstart_main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw(m_mcu, FUNC(taito_sj_security_mcu_device::data_r), FUNC(taito_sj_security_mcu_device::data_w));
+ map(0x8802, 0x8802).noprw();
+ map(0x8a00, 0x8a5f).writeonly().share("colscrolly");
+ map(0x9000, 0xbfff).w(this, FUNC(taitosj_state::taitosj_characterram_w)).share("characterram");
+ map(0xc000, 0xc3ff).ram();
+ map(0xc400, 0xc7ff).ram().share("videoram_1");
+ map(0xc800, 0xcbff).ram().share("videoram_2");
+ map(0xcc00, 0xcfff).ram().share("videoram_3");
+ map(0xd000, 0xd001).writeonly().share("colorbank");
+ map(0xd002, 0xd007).writeonly().share("scroll");
+ map(0xd100, 0xd1ff).ram().share("spriteram");
+ map(0xd200, 0xd27f).ram().share("paletteram");
+ map(0xd300, 0xd300).writeonly().share("video_priority");
+ map(0xd400, 0xd403).readonly().share("collision_reg");
+ map(0xd404, 0xd404).r(this, FUNC(taitosj_state::taitosj_gfxrom_r));
+ map(0xd408, 0xd408).mirror(0x00f0).portr("IN0");
+ map(0xd409, 0xd409).mirror(0x00f0).portr("IN1");
+ map(0xd40a, 0xd40a).mirror(0x00f0).portr("DSW1"); /* DSW1 */
+ map(0xd40b, 0xd40b).mirror(0x00f0).portr("IN2");
+ map(0xd40c, 0xd40c).mirror(0x00f0).portr("IN3"); /* Service */
+ map(0xd40d, 0xd40d).mirror(0x00f0).portr("IN4");
+ map(0xd40e, 0xd40f).w(m_ay1, FUNC(ay8910_device::address_data_w));
+ map(0xd40f, 0xd40f).r(m_ay1, FUNC(ay8910_device::data_r)); /* DSW2 and DSW3 */
+ map(0xd508, 0xd508).w(this, FUNC(taitosj_state::taitosj_collision_reg_clear_w));
+ map(0xd509, 0xd50a).writeonly().share("gfxpointer");
+ map(0xd50b, 0xd50b).w(this, FUNC(taitosj_state::soundlatch_w));
+ map(0xd50c, 0xd50c).w(this, FUNC(taitosj_state::sound_semaphore2_w));
+ map(0xd50d, 0xd50d).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xd50e, 0xd50e).w(this, FUNC(taitosj_state::taitosj_bankswitch_w));
+ map(0xd600, 0xd600).writeonly().share("video_mode");
+ map(0xd800, 0xdfff).ram().share("kikstart_scroll");// scroll ram + ???
+ map(0xe000, 0xefff).rom();
+}
TIMER_CALLBACK_MEMBER(taitosj_state::soundlatch_w_cb)
{
@@ -368,19 +371,20 @@ WRITE8_MEMBER(taitosj_state::sound_semaphore2_clear_w)
}
-ADDRESS_MAP_START(taitosj_state::taitosj_audio_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x4800, 0x4801) AM_MIRROR(0x07f8) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x4801, 0x4801) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x4802, 0x4803) AM_MIRROR(0x07f8) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay3", ay8910_device, data_r)
- AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay4", ay8910_device, address_data_w)
- AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay4", ay8910_device, data_r)
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x07fc) AM_READWRITE(soundlatch_r, soundlatch_clear7_w)
- AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x07fc) AM_READWRITE(soundlatch_flags_r, sound_semaphore2_clear_w)
- AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM */
-ADDRESS_MAP_END
+void taitosj_state::taitosj_audio_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x4800, 0x4801).mirror(0x07f8).w(m_ay2, FUNC(ay8910_device::address_data_w));
+ map(0x4801, 0x4801).mirror(0x07f8).r(m_ay2, FUNC(ay8910_device::data_r));
+ map(0x4802, 0x4803).mirror(0x07f8).w(m_ay3, FUNC(ay8910_device::address_data_w));
+ map(0x4803, 0x4803).mirror(0x07f8).r(m_ay3, FUNC(ay8910_device::data_r));
+ map(0x4804, 0x4805).mirror(0x07fa).w(m_ay4, FUNC(ay8910_device::address_data_w));
+ map(0x4805, 0x4805).mirror(0x07fa).r(m_ay4, FUNC(ay8910_device::data_r));
+ map(0x5000, 0x5000).mirror(0x07fc).rw(this, FUNC(taitosj_state::soundlatch_r), FUNC(taitosj_state::soundlatch_clear7_w));
+ map(0x5001, 0x5001).mirror(0x07fc).rw(this, FUNC(taitosj_state::soundlatch_flags_r), FUNC(taitosj_state::sound_semaphore2_clear_w));
+ map(0xe000, 0xefff).rom(); /* space for diagnostic ROM */
+}
#define DSW2_PORT \
diff --git a/src/mame/drivers/taitotx.cpp b/src/mame/drivers/taitotx.cpp
index 86d08588f2b..3ddfb66b0dc 100644
--- a/src/mame/drivers/taitotx.cpp
+++ b/src/mame/drivers/taitotx.cpp
@@ -151,9 +151,10 @@ uint32_t taito_type_x_state::screen_update_taito_type_x(screen_device &screen, b
return 0;
}
-ADDRESS_MAP_START(taito_type_x_state::taito_type_x_map)
- AM_RANGE(0x00, 0x0f) AM_ROM
-ADDRESS_MAP_END
+void taito_type_x_state::taito_type_x_map(address_map &map)
+{
+ map(0x00, 0x0f).rom();
+}
static INPUT_PORTS_START( taito_type_x )
INPUT_PORTS_END
diff --git a/src/mame/drivers/taitotz.cpp b/src/mame/drivers/taitotz.cpp
index f3eab35d8d1..d58b0eaa25a 100644
--- a/src/mame/drivers/taitotz.cpp
+++ b/src/mame/drivers/taitotz.cpp
@@ -2062,15 +2062,16 @@ WRITE64_MEMBER(taitotz_state::ppc_common_w)
// 0x40000000...0x400fffff: BIOS Work RAM
// 0x40100000...0x40ffffff: User Work RAM
-ADDRESS_MAP_START(taitotz_state::ppc603e_mem)
- AM_RANGE(0x00000000, 0x0000001f) AM_READWRITE(video_chip_r, video_chip_w)
- AM_RANGE(0x10000000, 0x1000001f) AM_READWRITE(video_fifo_r, video_fifo_w)
- AM_RANGE(0x40000000, 0x40ffffff) AM_RAM AM_SHARE("work_ram") // Work RAM
- AM_RANGE(0xa4000000, 0xa40000ff) AM_READWRITE(ieee1394_r, ieee1394_w) // IEEE1394 network
- AM_RANGE(0xa8000000, 0xa8003fff) AM_READWRITE(ppc_common_r, ppc_common_w) // Common RAM (with TLCS-900)
- AM_RANGE(0xac000000, 0xac0fffff) AM_ROM AM_REGION("user1", 0) // Apparently this should be flash ROM read/write access
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void taitotz_state::ppc603e_mem(address_map &map)
+{
+ map(0x00000000, 0x0000001f).rw(this, FUNC(taitotz_state::video_chip_r), FUNC(taitotz_state::video_chip_w));
+ map(0x10000000, 0x1000001f).rw(this, FUNC(taitotz_state::video_fifo_r), FUNC(taitotz_state::video_fifo_w));
+ map(0x40000000, 0x40ffffff).ram().share("work_ram"); // Work RAM
+ map(0xa4000000, 0xa40000ff).rw(this, FUNC(taitotz_state::ieee1394_r), FUNC(taitotz_state::ieee1394_w)); // IEEE1394 network
+ map(0xa8000000, 0xa8003fff).rw(this, FUNC(taitotz_state::ppc_common_r), FUNC(taitotz_state::ppc_common_w)); // Common RAM (with TLCS-900)
+ map(0xac000000, 0xac0fffff).rom().region("user1", 0); // Apparently this should be flash ROM read/write access
+ map(0xfff00000, 0xffffffff).rom().region("user1", 0);
+}
@@ -2222,27 +2223,29 @@ READ16_MEMBER(taitotz_state::tlcs_ide1_r)
// 0xfc0d55: INTRX1 Serial 1 receive
// 0xfc0ce1: INTTX1 Serial 1 transmit
-ADDRESS_MAP_START(taitotz_state::tlcs900h_mem)
- AM_RANGE(0x010000, 0x02ffff) AM_RAM // Work RAM
- AM_RANGE(0x040000, 0x041fff) AM_RAM AM_SHARE("nvram") // Backup RAM
- AM_RANGE(0x044000, 0x04400f) AM_READWRITE8(tlcs_rtc_r, tlcs_rtc_w, 0xffff)
- AM_RANGE(0x060000, 0x061fff) AM_READWRITE8(tlcs_common_r, tlcs_common_w, 0xffff)
- AM_RANGE(0x064000, 0x064fff) AM_RAM AM_SHARE("mbox_ram") // MBox
- AM_RANGE(0x068000, 0x06800f) AM_DEVWRITE("ata", ata_interface_device, write_cs0) AM_READ(tlcs_ide0_r)
- AM_RANGE(0x06c000, 0x06c00f) AM_DEVWRITE("ata", ata_interface_device, write_cs1) AM_READ(tlcs_ide1_r)
- AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitotz_state::landhigh_tlcs900h_mem)
- AM_RANGE(0x200000, 0x21ffff) AM_RAM // Work RAM
- AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("nvram") // Backup RAM
- AM_RANGE(0x404000, 0x40400f) AM_READWRITE8(tlcs_rtc_r, tlcs_rtc_w, 0xffff)
- AM_RANGE(0x900000, 0x901fff) AM_READWRITE8(tlcs_common_r, tlcs_common_w, 0xffff)
- AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("mbox_ram") // MBox
- AM_RANGE(0x908000, 0x90800f) AM_DEVWRITE("ata", ata_interface_device, write_cs0) AM_READ(tlcs_ide0_r)
- AM_RANGE(0x918000, 0x91800f) AM_DEVWRITE("ata", ata_interface_device, write_cs1) AM_READ(tlcs_ide1_r)
- AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0)
-ADDRESS_MAP_END
+void taitotz_state::tlcs900h_mem(address_map &map)
+{
+ map(0x010000, 0x02ffff).ram(); // Work RAM
+ map(0x040000, 0x041fff).ram().share("nvram"); // Backup RAM
+ map(0x044000, 0x04400f).rw(this, FUNC(taitotz_state::tlcs_rtc_r), FUNC(taitotz_state::tlcs_rtc_w));
+ map(0x060000, 0x061fff).rw(this, FUNC(taitotz_state::tlcs_common_r), FUNC(taitotz_state::tlcs_common_w));
+ map(0x064000, 0x064fff).ram().share("mbox_ram"); // MBox
+ map(0x068000, 0x06800f).w(m_ata, FUNC(ata_interface_device::write_cs0)).r(this, FUNC(taitotz_state::tlcs_ide0_r));
+ map(0x06c000, 0x06c00f).w(m_ata, FUNC(ata_interface_device::write_cs1)).r(this, FUNC(taitotz_state::tlcs_ide1_r));
+ map(0xfc0000, 0xffffff).rom().region("io_cpu", 0);
+}
+
+void taitotz_state::landhigh_tlcs900h_mem(address_map &map)
+{
+ map(0x200000, 0x21ffff).ram(); // Work RAM
+ map(0x400000, 0x401fff).ram().share("nvram"); // Backup RAM
+ map(0x404000, 0x40400f).rw(this, FUNC(taitotz_state::tlcs_rtc_r), FUNC(taitotz_state::tlcs_rtc_w));
+ map(0x900000, 0x901fff).rw(this, FUNC(taitotz_state::tlcs_common_r), FUNC(taitotz_state::tlcs_common_w));
+ map(0x910000, 0x910fff).ram().share("mbox_ram"); // MBox
+ map(0x908000, 0x90800f).w(m_ata, FUNC(ata_interface_device::write_cs0)).r(this, FUNC(taitotz_state::tlcs_ide0_r));
+ map(0x918000, 0x91800f).w(m_ata, FUNC(ata_interface_device::write_cs1)).r(this, FUNC(taitotz_state::tlcs_ide1_r));
+ map(0xfc0000, 0xffffff).rom().region("io_cpu", 0);
+}
diff --git a/src/mame/drivers/taitowlf.cpp b/src/mame/drivers/taitowlf.cpp
index ea2fc075de4..9014573d659 100644
--- a/src/mame/drivers/taitowlf.cpp
+++ b/src/mame/drivers/taitowlf.cpp
@@ -276,41 +276,43 @@ WRITE32_MEMBER(taitowlf_state::bios_ram_w)
}
-ADDRESS_MAP_START(taitowlf_state::taitowlf_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
+void taitowlf_state::taitowlf_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
#if ENABLE_VGA
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
#else
- AM_RANGE(0x000a0000, 0x000bffff) AM_RAM
+ map(0x000a0000, 0x000bffff).ram();
#endif
#if ENABLE_VGA
- AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0)
+ map(0x000c0000, 0x000c7fff).ram().region("video_bios", 0);
#else
- AM_RANGE(0x000c0000, 0x000c7fff) AM_NOP
+ map(0x000c0000, 0x000c7fff).noprw();
#endif
- AM_RANGE(0x000e0000, 0x000effff) AM_RAM
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x01ffffff) AM_RAM
+ map(0x000e0000, 0x000effff).ram();
+ map(0x000f0000, 0x000fffff).bankr("bank1");
+ map(0x000f0000, 0x000fffff).w(this, FUNC(taitowlf_state::bios_ram_w));
+ map(0x00100000, 0x01ffffff).ram();
// AM_RANGE(0xf8000000, 0xf83fffff) AM_ROM AM_REGION("user3", 0)
- AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
+ map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
-ADDRESS_MAP_START(taitowlf_state::taitowlf_io)
- AM_IMPORT_FROM(pcat32_io_common)
+void taitowlf_state::taitowlf_io(address_map &map)
+{
+ pcat32_io_common(map);
- AM_RANGE(0x00e8, 0x00eb) AM_NOP
- AM_RANGE(0x0300, 0x03af) AM_NOP
- AM_RANGE(0x03b0, 0x03df) AM_NOP
- AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w)
+ map(0x00e8, 0x00eb).noprw();
+ map(0x0300, 0x03af).noprw();
+ map(0x03b0, 0x03df).noprw();
+ map(0x0278, 0x027b).w(this, FUNC(taitowlf_state::pnp_config_w));
#if ENABLE_VGA
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
#endif
- AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+ map(0x0a78, 0x0a7b).w(this, FUNC(taitowlf_state::pnp_data_w));
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp
index b401b24ef22..c2545f9b193 100644
--- a/src/mame/drivers/tandy1t.cpp
+++ b/src/mame/drivers/tandy1t.cpp
@@ -548,66 +548,74 @@ static INPUT_PORTS_START( t1000_101key )
PORT_INCLUDE(at_keyboard)
INPUT_PORTS_END
-ADDRESS_MAP_START(tandy1000_state::tandy1000_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_t1000:vram", address_map_bank_device, amap8)
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::tandy1000_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", t1000_mb_device, map)
- AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r, tandy1000_pio_w)
- AM_RANGE(0x00a0, 0x00a0) AM_WRITE(nmi_vram_bank_w)
- AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", ncr7496_device, write)
- AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w)
- AM_RANGE(0x0378, 0x037f) AM_READWRITE(pc_t1t_p37x_r, pc_t1t_p37x_w)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREAD("pcvideo_t1000", pcvideo_t1000_device, read) AM_DEVWRITE("pcvideo_t1000", pcvideo_t1000_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::tandy1000_bank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff)
- AM_RANGE(0xe0000, 0xeffff) AM_DEVICE("biosbank", address_map_bank_device, amap16)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "rom", 0x70000 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::biosbank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("rom", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::tandy1000_16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", t1000_mb_device, map, 0xffff)
- AM_RANGE(0x0060, 0x0063) AM_READWRITE8(tandy1000_pio_r, tandy1000_pio_w, 0xffff)
- AM_RANGE(0x0064, 0x0065) AM_WRITE8(devctrl_w, 0xff00)
- AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff)
- AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8("sn76496", ncr7496_device, write, 0xffff)
- AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
- AM_RANGE(0x0378, 0x037f) AM_READWRITE8(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREAD8("pcvideo_t1000", pcvideo_t1000_device, read, 0xffff) AM_DEVWRITE8("pcvideo_t1000", pcvideo_t1000_device, write, 0xffff)
- AM_RANGE(0xffe8, 0xffe9) AM_WRITE8(vram_bank_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::tandy1000_bank_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(tandy1000_16_io)
- AM_RANGE(0xffea, 0xffeb) AM_READWRITE8(tandy1000_bank_r, tandy1000_bank_w, 0xffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::tandy1000tx_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(tandy1000_16_io)
- AM_RANGE(0x00a0, 0x00a1) AM_WRITE8(nmi_vram_bank_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy1000_state::tandy1000_286_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x000fffff)
- AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff)
- AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
+void tandy1000_state::tandy1000_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xb8000, 0xbffff).m("pcvideo_t1000:vram", FUNC(address_map_bank_device::amap8));
+ map(0xe0000, 0xfffff).rom().region("bios", 0);
+}
+
+void tandy1000_state::tandy1000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(t1000_mb_device::map));
+ map(0x0060, 0x0063).rw(this, FUNC(tandy1000_state::tandy1000_pio_r), FUNC(tandy1000_state::tandy1000_pio_w));
+ map(0x00a0, 0x00a0).w(this, FUNC(tandy1000_state::nmi_vram_bank_w));
+ map(0x00c0, 0x00c0).w("sn76496", FUNC(ncr7496_device::write));
+ map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
+ map(0x0378, 0x037f).rw(this, 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));
+}
+
+void tandy1000_state::tandy1000_bank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xb8000, 0xbffff).m("pcvideo_t1000:vram", FUNC(address_map_bank_device::amap8));
+ map(0xe0000, 0xeffff).m(m_biosbank, FUNC(address_map_bank_device::amap16));
+ map(0xf0000, 0xfffff).rom().region("rom", 0x70000);
+}
+
+void tandy1000_state::biosbank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x80000, 0xfffff).rom().region("rom", 0);
+}
+
+void tandy1000_state::tandy1000_16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m(m_mb, FUNC(t1000_mb_device::map));
+ map(0x0060, 0x0063).rw(this, FUNC(tandy1000_state::tandy1000_pio_r), FUNC(tandy1000_state::tandy1000_pio_w));
+ map(0x0065, 0x0065).w(this, FUNC(tandy1000_state::devctrl_w));
+ map(0x00a0, 0x00a0).r(this, FUNC(tandy1000_state::unk_r));
+ map(0x00c0, 0x00c1).w("sn76496", FUNC(ncr7496_device::write));
+ map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w));
+ map(0x0378, 0x037f).rw(this, 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));
+ map(0xffe8, 0xffe8).w(this, FUNC(tandy1000_state::vram_bank_w));
+}
+
+void tandy1000_state::tandy1000_bank_io(address_map &map)
+{
+ map.unmap_value_high();
+ tandy1000_16_io(map);
+ map(0xffea, 0xffeb).rw(this, FUNC(tandy1000_state::tandy1000_bank_r), FUNC(tandy1000_state::tandy1000_bank_w));
+}
+
+void tandy1000_state::tandy1000tx_io(address_map &map)
+{
+ map.unmap_value_high();
+ tandy1000_16_io(map);
+ map(0x00a0, 0x00a0).w(this, FUNC(tandy1000_state::nmi_vram_bank_w));
+}
+
+void tandy1000_state::tandy1000_286_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x000fffff);
+ map(0xb8000, 0xbffff).m("pcvideo_t1000:vram", FUNC(address_map_bank_device::amap8));
+ map(0xe0000, 0xfffff).rom().region("bios", 0);
+}
static const gfx_layout t1000_charlayout =
{
diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp
index b5ad126df75..19d627b6d40 100644
--- a/src/mame/drivers/tandy2k.cpp
+++ b/src/mame/drivers/tandy2k.cpp
@@ -307,45 +307,49 @@ WRITE8_MEMBER( tandy2k_state::addr_ctrl_w )
// Memory Maps
-ADDRESS_MAP_START(tandy2k_state::tandy2k_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void tandy2k_state::tandy2k_mem(address_map &map)
+{
+ map.unmap_value_high();
// AM_RANGE(0x00000, 0xdffff) AM_RAM
- AM_RANGE(0xe0000, 0xf7fff) AM_RAM AM_SHARE("hires_ram")
- AM_RANGE(0xf8000, 0xfbfff) AM_READWRITE8(char_ram_r, char_ram_w, 0x00ff)
- AM_RANGE(0xfc000, 0xfdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION(I80186_TAG, 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tandy2k_state::tandy2k_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x00001) AM_MIRROR(0x8) AM_READWRITE8(enable_r, enable_w, 0x00ff)
- AM_RANGE(0x00002, 0x00003) AM_MIRROR(0x8) AM_WRITE8(dma_mux_w, 0x00ff)
- AM_RANGE(0x00004, 0x00005) AM_MIRROR(0x8) AM_READWRITE8(fldtc_r, fldtc_w, 0x00ff)
- AM_RANGE(0x00010, 0x00013) AM_MIRROR(0xc) AM_DEVREADWRITE8(I8251A_TAG, i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x00030, 0x00033) AM_MIRROR(0xc) AM_DEVICE8(I8272A_TAG, i8272a_device, map, 0x00ff)
- AM_RANGE(0x00040, 0x00047) AM_MIRROR(0x8) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x00050, 0x00057) AM_MIRROR(0x8) AM_DEVREADWRITE8(I8255A_TAG, i8255_device, read, write, 0x00ff)
- AM_RANGE(0x00052, 0x00053) AM_MIRROR(0x8) AM_READ8(kbint_clr_r, 0x00ff)
- AM_RANGE(0x00060, 0x00063) AM_MIRROR(0xc) AM_DEVREADWRITE8(I8259A_0_TAG, pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00070, 0x00073) AM_MIRROR(0xc) AM_DEVREADWRITE8(I8259A_1_TAG, pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x00080, 0x00081) AM_MIRROR(0xe) AM_DEVREADWRITE8(I8272A_TAG, i8272a_device, mdma_r, mdma_w, 0x00ff)
+ map(0xe0000, 0xf7fff).ram().share("hires_ram");
+ map(0xf8000, 0xfbfff).rw(this, FUNC(tandy2k_state::char_ram_r), FUNC(tandy2k_state::char_ram_w)).umask16(0x00ff);
+ map(0xfc000, 0xfdfff).mirror(0x2000).rom().region(I80186_TAG, 0);
+}
+
+void tandy2k_state::tandy2k_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x00000).mirror(0x8).rw(this, FUNC(tandy2k_state::enable_r), FUNC(tandy2k_state::enable_w));
+ map(0x00002, 0x00002).mirror(0x8).w(this, FUNC(tandy2k_state::dma_mux_w));
+ map(0x00004, 0x00004).mirror(0x8).rw(this, FUNC(tandy2k_state::fldtc_r), FUNC(tandy2k_state::fldtc_w));
+ map(0x00010, 0x00013).mirror(0xc).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)).umask16(0x00ff);
+ map(0x00030, 0x00033).mirror(0xc).m(m_fdc, FUNC(i8272a_device::map)).umask16(0x00ff);
+ map(0x00040, 0x00047).mirror(0x8).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x00050, 0x00057).mirror(0x8).rw(m_i8255a, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x00052, 0x00052).mirror(0x8).r(this, 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::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)
- AM_RANGE(0x00100, 0x0017f) AM_READWRITE(vpac_r, vpac_w)
+ map(0x00100, 0x0017f).rw(this, 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)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(tandy2k_state::tandy2k_hd_io)
- AM_IMPORT_FROM(tandy2k_io)
+void tandy2k_state::tandy2k_hd_io(address_map &map)
+{
+ tandy2k_io(map);
// AM_RANGE(0x000e0, 0x000ff) AM_WRITE8(hdc_dack_w, 0x00ff)
// AM_RANGE(0x0026c, 0x0026d) AM_DEVREADWRITE8(WD1010_TAG, wd1010_device, hdc_reset_r, hdc_reset_w, 0x00ff)
// AM_RANGE(0x0026e, 0x0027f) AM_DEVREADWRITE8(WD1010_TAG, wd1010_device, wd1010_r, wd1010_w, 0x00ff)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(tandy2k_state::vpac_mem)
- AM_RANGE(0x0000, 0x3fff) AM_READ(videoram_r)
-ADDRESS_MAP_END
+void tandy2k_state::vpac_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(tandy2k_state::videoram_r));
+}
// Input Ports
diff --git a/src/mame/drivers/tank8.cpp b/src/mame/drivers/tank8.cpp
index 0a6313f5f1c..8672031c5db 100644
--- a/src/mame/drivers/tank8.cpp
+++ b/src/mame/drivers/tank8.cpp
@@ -95,42 +95,43 @@ WRITE8_MEMBER(tank8_state::motor_w)
m_discrete->write(space, NODE_RELATIVE(TANK8_MOTOR1_EN, offset), data);
}
-ADDRESS_MAP_START(tank8_state::tank8_cpu_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0400, 0x17ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_ROM
-
- AM_RANGE(0x1c00, 0x1c00) AM_READ(collision_r)
-
- AM_RANGE(0x1c01, 0x1c01) AM_READ_PORT("P1")
- AM_RANGE(0x1c02, 0x1c02) AM_READ_PORT("P2")
- AM_RANGE(0x1c03, 0x1c03) AM_READ_PORT("P3")
- AM_RANGE(0x1c04, 0x1c04) AM_READ_PORT("P4")
- AM_RANGE(0x1c05, 0x1c05) AM_READ_PORT("P5")
- AM_RANGE(0x1c06, 0x1c06) AM_READ_PORT("P6")
- AM_RANGE(0x1c07, 0x1c07) AM_READ_PORT("P7")
- AM_RANGE(0x1c08, 0x1c08) AM_READ_PORT("P8")
- AM_RANGE(0x1c09, 0x1c09) AM_READ_PORT("DSW1")
- AM_RANGE(0x1c0a, 0x1c0a) AM_READ_PORT("DSW2")
- AM_RANGE(0x1c0b, 0x1c0b) AM_READ_PORT("RC")
- AM_RANGE(0x1c0f, 0x1c0f) AM_READ_PORT("VBLANK")
-
- AM_RANGE(0x1800, 0x1bff) AM_WRITE(video_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("pos_h_ram")
- AM_RANGE(0x1c10, 0x1c1f) AM_WRITEONLY AM_SHARE("pos_v_ram")
- AM_RANGE(0x1c20, 0x1c2f) AM_WRITEONLY AM_SHARE("pos_d_ram")
-
- AM_RANGE(0x1c30, 0x1c37) AM_WRITE(lockout_w)
- AM_RANGE(0x1d00, 0x1d00) AM_WRITE(int_reset_w)
- AM_RANGE(0x1d01, 0x1d01) AM_WRITE(crash_w)
- AM_RANGE(0x1d02, 0x1d02) AM_WRITE(explosion_w)
- AM_RANGE(0x1d03, 0x1d03) AM_WRITE(bugle_w)
- AM_RANGE(0x1d04, 0x1d04) AM_WRITE(bug_w)
- AM_RANGE(0x1d05, 0x1d05) AM_WRITEONLY AM_SHARE("team")
- AM_RANGE(0x1d06, 0x1d06) AM_WRITE(attract_w)
- AM_RANGE(0x1e00, 0x1e07) AM_WRITE(motor_w)
-
-ADDRESS_MAP_END
+void tank8_state::tank8_cpu_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x0400, 0x17ff).rom();
+ map(0xf800, 0xffff).rom();
+
+ map(0x1c00, 0x1c00).r(this, FUNC(tank8_state::collision_r));
+
+ map(0x1c01, 0x1c01).portr("P1");
+ map(0x1c02, 0x1c02).portr("P2");
+ map(0x1c03, 0x1c03).portr("P3");
+ map(0x1c04, 0x1c04).portr("P4");
+ map(0x1c05, 0x1c05).portr("P5");
+ map(0x1c06, 0x1c06).portr("P6");
+ map(0x1c07, 0x1c07).portr("P7");
+ map(0x1c08, 0x1c08).portr("P8");
+ map(0x1c09, 0x1c09).portr("DSW1");
+ map(0x1c0a, 0x1c0a).portr("DSW2");
+ map(0x1c0b, 0x1c0b).portr("RC");
+ map(0x1c0f, 0x1c0f).portr("VBLANK");
+
+ map(0x1800, 0x1bff).w(this, FUNC(tank8_state::video_ram_w)).share("video_ram");
+ map(0x1c00, 0x1c0f).writeonly().share("pos_h_ram");
+ map(0x1c10, 0x1c1f).writeonly().share("pos_v_ram");
+ map(0x1c20, 0x1c2f).writeonly().share("pos_d_ram");
+
+ map(0x1c30, 0x1c37).w(this, FUNC(tank8_state::lockout_w));
+ map(0x1d00, 0x1d00).w(this, FUNC(tank8_state::int_reset_w));
+ map(0x1d01, 0x1d01).w(this, FUNC(tank8_state::crash_w));
+ map(0x1d02, 0x1d02).w(this, FUNC(tank8_state::explosion_w));
+ map(0x1d03, 0x1d03).w(this, FUNC(tank8_state::bugle_w));
+ map(0x1d04, 0x1d04).w(this, FUNC(tank8_state::bug_w));
+ map(0x1d05, 0x1d05).writeonly().share("team");
+ map(0x1d06, 0x1d06).w(this, FUNC(tank8_state::attract_w));
+ map(0x1e00, 0x1e07).w(this, FUNC(tank8_state::motor_w));
+
+}
static INPUT_PORTS_START( tank8 )
diff --git a/src/mame/drivers/tankbatt.cpp b/src/mame/drivers/tankbatt.cpp
index 22da1c044b9..654cf18b126 100644
--- a/src/mame/drivers/tankbatt.cpp
+++ b/src/mame/drivers/tankbatt.cpp
@@ -167,21 +167,22 @@ WRITE_LINE_MEMBER(tankbatt_state::coinlockout_w)
machine().bookkeeping().coin_lockout_w(1, state);
}
-ADDRESS_MAP_START(tankbatt_state::main_map)
- AM_RANGE(0x0000, 0x000f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x0010, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0c07) AM_READ(in0_r) AM_DEVWRITE("outlatch", cd4099_device, write_d0)
- AM_RANGE(0x0c08, 0x0c0f) AM_READ(in1_r) AM_DEVWRITE("mainlatch", cd4099_device, write_d0)
- AM_RANGE(0x0c10, 0x0c10) AM_WRITE(irq_ack_w)
- AM_RANGE(0x0c18, 0x0c1f) AM_READ(dsw_r)
- AM_RANGE(0x0c18, 0x0c18) AM_WRITENOP /* watchdog ?? */
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("maincpu",0)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu",0) //mirror for the reset/irq vectors
- AM_RANGE(0x2000, 0x5fff) AM_READNOP //anything else might be left-over for a diagnostic ROM or something related to the discrete sound HW
- AM_RANGE(0x8000, 0xdfff) AM_READNOP
-ADDRESS_MAP_END
+void tankbatt_state::main_map(address_map &map)
+{
+ map(0x0000, 0x000f).ram().share("bulletsram");
+ map(0x0010, 0x01ff).ram();
+ map(0x0200, 0x07ff).ram();
+ map(0x0800, 0x0bff).ram().w(this, FUNC(tankbatt_state::videoram_w)).share("videoram");
+ map(0x0c00, 0x0c07).r(this, FUNC(tankbatt_state::in0_r)).w("outlatch", FUNC(cd4099_device::write_d0));
+ map(0x0c08, 0x0c0f).r(this, FUNC(tankbatt_state::in1_r)).w("mainlatch", FUNC(cd4099_device::write_d0));
+ map(0x0c10, 0x0c10).w(this, FUNC(tankbatt_state::irq_ack_w));
+ map(0x0c18, 0x0c1f).r(this, FUNC(tankbatt_state::dsw_r));
+ map(0x0c18, 0x0c18).nopw(); /* watchdog ?? */
+ map(0x6000, 0x7fff).rom().region("maincpu", 0);
+ map(0xe000, 0xffff).rom().region("maincpu", 0); //mirror for the reset/irq vectors
+ map(0x2000, 0x5fff).nopr(); //anything else might be left-over for a diagnostic ROM or something related to the discrete sound HW
+ map(0x8000, 0xdfff).nopr();
+}
INTERRUPT_GEN_MEMBER(tankbatt_state::interrupt)
{
diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp
index 9fe3b3adda7..0556ece64f7 100644
--- a/src/mame/drivers/tankbust.cpp
+++ b/src/mame/drivers/tankbust.cpp
@@ -190,42 +190,45 @@ READ8_MEMBER(tankbust_state::some_changing_input)
return m_variable_data;
}
-ADDRESS_MAP_START(tankbust_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank2")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(background_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txtram_w) AM_SHARE("txtram")
- AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe007) AM_READWRITE(debug_output_area_r, e0xx_w)
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("INPUTS") AM_WRITE(yscroll_w)
- AM_RANGE(0xe801, 0xe801) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSW")
- AM_RANGE(0xe801, 0xe802) AM_WRITE(xscroll_w)
- AM_RANGE(0xe803, 0xe803) AM_READWRITE(some_changing_input, soundlatch_w) /*unknown. Game expects this to change so this is not player input */
- AM_RANGE(0xe804, 0xe804) AM_WRITENOP /* watchdog ? ; written in long-lasting loops */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
+void tankbust_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xbfff).bankr("bank2");
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(tankbust_state::background_videoram_w)).share("videoram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(tankbust_state::background_colorram_w)).share("colorram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(tankbust_state::txtram_w)).share("txtram");
+ map(0xd800, 0xd8ff).ram().share("spriteram");
+ map(0xe000, 0xe007).rw(this, FUNC(tankbust_state::debug_output_area_r), FUNC(tankbust_state::e0xx_w));
+ map(0xe800, 0xe800).portr("INPUTS").w(this, FUNC(tankbust_state::yscroll_w));
+ map(0xe801, 0xe801).portr("SYSTEM");
+ map(0xe802, 0xe802).portr("DSW");
+ map(0xe801, 0xe802).w(this, FUNC(tankbust_state::xscroll_w));
+ map(0xe803, 0xe803).rw(this, FUNC(tankbust_state::some_changing_input), FUNC(tankbust_state::soundlatch_w)); /*unknown. Game expects this to change so this is not player input */
+ map(0xe804, 0xe804).nopw(); /* watchdog ? ; written in long-lasting loops */
+ map(0xf000, 0xf7ff).ram();
//AM_RANGE(0xf800, 0xffff) AM_READ(read_from_unmapped_memory) /* a bug in game code ? */
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(tankbust_state::port_map_cpu2)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_w)
-ADDRESS_MAP_END
+void tankbust_state::port_map_cpu2(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).w("ay2", FUNC(ay8910_device::data_w));
+ map(0x30, 0x30).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0x40, 0x40).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xc0, 0xc0).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+}
-ADDRESS_MAP_START(tankbust_state::map_cpu2)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_WRITENOP /* garbage, written in initialization loop */
+void tankbust_state::map_cpu2(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).nopw(); /* garbage, written in initialization loop */
//0x4000 and 0x4040-0x4045 seem to be used (referenced in the code)
- AM_RANGE(0x4000, 0x7fff) AM_WRITENOP /* garbage, written in initialization loop */
- AM_RANGE(0x8000, 0x87ff) AM_READONLY
- AM_RANGE(0x8000, 0x87ff) AM_WRITEONLY
-ADDRESS_MAP_END
+ map(0x4000, 0x7fff).nopw(); /* garbage, written in initialization loop */
+ map(0x8000, 0x87ff).readonly();
+ map(0x8000, 0x87ff).writeonly();
+}
static INPUT_PORTS_START( tankbust )
diff --git a/src/mame/drivers/taotaido.cpp b/src/mame/drivers/taotaido.cpp
index c80d79e92c1..82c4a436742 100644
--- a/src/mame/drivers/taotaido.cpp
+++ b/src/mame/drivers/taotaido.cpp
@@ -96,23 +96,24 @@ WRITE8_MEMBER(taotaido_state::unknown_output_w)
// Bits 5, 4 also used?
}
-ADDRESS_MAP_START(taotaido_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgram") // bg ram?
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM AM_SHARE("spriteram") // sprite ram
- AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("spriteram2") // sprite tile lookup ram
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // main ram
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette ram
- AM_RANGE(0xffe000, 0xffe3ff) AM_RAM AM_SHARE("scrollram") // rowscroll / rowselect / scroll ram
- AM_RANGE(0xffff80, 0xffff9f) AM_DEVREADWRITE8("io1", vs9209_device, read, write, 0x00ff)
- AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io2", vs9209_device, read, write, 0x00ff)
- AM_RANGE(0xffff00, 0xffff0f) AM_WRITE(tileregs_w)
- AM_RANGE(0xffff10, 0xffff11) AM_WRITENOP // unknown
- AM_RANGE(0xffff20, 0xffff21) AM_WRITENOP // unknown - flip screen related
- AM_RANGE(0xffff40, 0xffff47) AM_WRITE(sprite_character_bank_select_w)
- AM_RANGE(0xffffc0, 0xffffc1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // seems right
- AM_RANGE(0xffffe0, 0xffffe1) AM_READ(pending_command_r) // guess - seems to be needed for all the sounds to work
-ADDRESS_MAP_END
+void taotaido_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x800000, 0x803fff).ram().w(this, FUNC(taotaido_state::bgvideoram_w)).share("bgram"); // bg ram?
+ map(0xa00000, 0xa01fff).ram().share("spriteram"); // sprite ram
+ map(0xc00000, 0xc0ffff).ram().share("spriteram2"); // sprite tile lookup ram
+ map(0xfe0000, 0xfeffff).ram(); // main ram
+ map(0xffc000, 0xffcfff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); // palette ram
+ map(0xffe000, 0xffe3ff).ram().share("scrollram"); // rowscroll / rowselect / scroll ram
+ map(0xffff80, 0xffff9f).rw("io1", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff);
+ map(0xffffa0, 0xffffbf).rw("io2", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff);
+ map(0xffff00, 0xffff0f).w(this, FUNC(taotaido_state::tileregs_w));
+ map(0xffff10, 0xffff11).nopw(); // unknown
+ map(0xffff20, 0xffff21).nopw(); // unknown - flip screen related
+ map(0xffff40, 0xffff47).w(this, FUNC(taotaido_state::sprite_character_bank_select_w));
+ map(0xffffc1, 0xffffc1).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // seems right
+ map(0xffffe0, 0xffffe1).r(this, FUNC(taotaido_state::pending_command_r)); // guess - seems to be needed for all the sounds to work
+}
/* sound cpu - same as aerofgt */
@@ -122,19 +123,21 @@ WRITE8_MEMBER(taotaido_state::sh_bankswitch_w)
membank("soundbank")->set_entry(data & 0x03);
}
-ADDRESS_MAP_START(taotaido_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taotaido_state::sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void taotaido_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
+
+void taotaido_state::sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x04, 0x04).w(this, FUNC(taotaido_state::sh_bankswitch_w));
+ map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( taotaido )
diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp
index 0f807177b1d..09ecf71b679 100644
--- a/src/mame/drivers/tapatune.cpp
+++ b/src/mame/drivers/tapatune.cpp
@@ -280,41 +280,44 @@ READ8_MEMBER(tapatune_state::read_data_from_68k)
*
*************************************/
-ADDRESS_MAP_START(tapatune_state::video_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM
- AM_RANGE(0x300000, 0x31ffff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x320000, 0x33ffff) AM_RAM
- AM_RANGE(0x400000, 0x400003) AM_READWRITE(read_from_z80, write_to_z80)
- AM_RANGE(0x400010, 0x400011) AM_NOP // Watchdog?
- AM_RANGE(0x600000, 0x600005) AM_WRITE(palette_w)
- AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0xff00)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tapatune_state::maincpu_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tapatune_state::maincpu_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(bsmt_data_lo_w)
- AM_RANGE(0x08, 0x08) AM_WRITE(bsmt_data_hi_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(bsmt_reg_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(controls_mux)
- AM_RANGE(0x20, 0x20) AM_READ(sound_irq_clear)
- AM_RANGE(0x28, 0x28) AM_READ(status_r)
- AM_RANGE(0x30, 0x30) AM_READ(controls_r)
- AM_RANGE(0x38, 0x38) AM_READ_PORT("COINS")
- AM_RANGE(0x60, 0x60) AM_WRITE(write_index_to_68k)
- AM_RANGE(0x61, 0x61) AM_WRITE(write_data_to_68k)
- AM_RANGE(0x63, 0x63) AM_WRITE(lamps_w)
- AM_RANGE(0x68, 0x68) AM_READ(read_index_from_68k)
- AM_RANGE(0x69, 0x69) AM_READ(read_data_from_68k)
- AM_RANGE(0x6b, 0x6b) AM_READ(special_r)
-ADDRESS_MAP_END
+void tapatune_state::video_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom();
+ map(0x300000, 0x31ffff).ram().share("videoram");
+ map(0x320000, 0x33ffff).ram();
+ map(0x400000, 0x400003).rw(this, FUNC(tapatune_state::read_from_z80), FUNC(tapatune_state::write_to_z80));
+ map(0x400010, 0x400011).noprw(); // Watchdog?
+ map(0x600000, 0x600005).w(this, FUNC(tapatune_state::palette_w));
+ map(0x800000, 0x800000).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x800002, 0x800002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
+
+
+void tapatune_state::maincpu_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().nopw();
+ map(0xe000, 0xffff).ram().share("nvram");
+}
+
+
+void tapatune_state::maincpu_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(tapatune_state::bsmt_data_lo_w));
+ map(0x08, 0x08).w(this, FUNC(tapatune_state::bsmt_data_hi_w));
+ map(0x10, 0x10).w(this, FUNC(tapatune_state::bsmt_reg_w));
+ map(0x18, 0x18).w(this, FUNC(tapatune_state::controls_mux));
+ map(0x20, 0x20).r(this, FUNC(tapatune_state::sound_irq_clear));
+ map(0x28, 0x28).r(this, FUNC(tapatune_state::status_r));
+ map(0x30, 0x30).r(this, FUNC(tapatune_state::controls_r));
+ map(0x38, 0x38).portr("COINS");
+ map(0x60, 0x60).w(this, FUNC(tapatune_state::write_index_to_68k));
+ map(0x61, 0x61).w(this, FUNC(tapatune_state::write_data_to_68k));
+ map(0x63, 0x63).w(this, FUNC(tapatune_state::lamps_w));
+ map(0x68, 0x68).r(this, FUNC(tapatune_state::read_index_from_68k));
+ map(0x69, 0x69).r(this, FUNC(tapatune_state::read_data_from_68k));
+ map(0x6b, 0x6b).r(this, FUNC(tapatune_state::special_r));
+}
/*************************************
diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp
index 9a4f0417c6c..3da07cfb23a 100644
--- a/src/mame/drivers/targeth.cpp
+++ b/src/mame/drivers/targeth.cpp
@@ -138,39 +138,42 @@ READ8_MEMBER(targeth_state::shareram_r)
}
-ADDRESS_MAP_START(targeth_state::mcu_hostmem_map)
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(shareram_r, shareram_w) // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(targeth_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x108000, 0x108001) AM_READ_PORT("GUNX1")
- AM_RANGE(0x108002, 0x108003) AM_READ_PORT("GUNY1")
- AM_RANGE(0x108004, 0x108005) AM_READ_PORT("GUNX2")
- AM_RANGE(0x108006, 0x108007) AM_READ_PORT("GUNY2")
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR Video INT */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("SYSTEM") /* Coins, Start & Fire buttons */
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SERVICE") /* Service & Guns Reload? */
- AM_RANGE(0x70000a, 0x70000b) AM_SELECT(0x000070) AM_WRITE(output_latch_w)
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */
- AM_RANGE(0x700010, 0x700011) AM_WRITENOP /* ??? Guns reload related? */
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(targeth_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void targeth_state::mcu_hostmem_map(address_map &map)
+{
+ map(0x8000, 0xffff).rw(this, FUNC(targeth_state::shareram_r), FUNC(targeth_state::shareram_w)); // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM
+}
+
+void targeth_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x103fff).ram().w(this, FUNC(targeth_state::vram_w)).share("videoram"); /* Video RAM */
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
+ map(0x108000, 0x108001).portr("GUNX1");
+ map(0x108002, 0x108003).portr("GUNY1");
+ map(0x108004, 0x108005).portr("GUNX2");
+ map(0x108006, 0x108007).portr("GUNY2");
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
+ map(0x10800c, 0x10800d).nopw(); /* CLR Video INT */
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW2");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700006, 0x700007).portr("SYSTEM"); /* Coins, Start & Fire buttons */
+ map(0x700008, 0x700009).portr("SERVICE"); /* Service & Guns Reload? */
+ map(0x70000a, 0x70000b).select(0x000070).w(this, FUNC(targeth_state::output_latch_w));
+ map(0x70000c, 0x70000d).w(this, FUNC(targeth_state::OKIM6295_bankswitch_w)); /* OKI6295 bankswitch */
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */
+ map(0x700010, 0x700011).nopw(); /* ??? Guns reload related? */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
+}
+
+
+void targeth_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
void targeth_state::machine_start()
{
diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp
index 2101853715c..a50c095dde5 100644
--- a/src/mame/drivers/tasman.cpp
+++ b/src/mame/drivers/tasman.cpp
@@ -208,71 +208,73 @@ WRITE8_MEMBER(kongambl_state::kongambl_ff_w)
// printf("%02x\n",data);
}
-ADDRESS_MAP_START(kongambl_state::kongambl_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program
- AM_RANGE(0x100000, 0x11ffff) AM_RAM // work RAM
+void kongambl_state::kongambl_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // main program
+ map(0x100000, 0x11ffff).ram(); // work RAM
- AM_RANGE(0x200000, 0x207fff) AM_RAM // backup RAM 24F
+ map(0x200000, 0x207fff).ram(); // backup RAM 24F
- AM_RANGE(0x300000, 0x307fff) AM_RAM // backup RAM 24H
+ map(0x300000, 0x307fff).ram(); // backup RAM 24H
// override konami chips with custom areas until that code is removed
- AM_RANGE(0x400000, 0x401fff) AM_ROM AM_REGION("gfx1",0)
- AM_RANGE(0x420000, 0x43ffff) AM_RAM AM_SHARE("vram")
+ map(0x400000, 0x401fff).rom().region("gfx1", 0);
+ map(0x420000, 0x43ffff).ram().share("vram");
//AM_RANGE(0x480000, 0x48003f) AM_RAM // vregs
//0x400000 0x400001 "13M" even addresses
//0x400002,0x400003 "13J" odd addresses
// AM_RANGE(0x400000, 0x401fff) AM_DEVREAD("k056832", k056832_device, rom_long_r)
// AM_RANGE(0x420000, 0x43ffff) AM_DEVREADWRITE("k056832", k056832_device, unpaged_ram_long_r, unpaged_ram_long_w)
- AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device, long_w)
+ map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::long_w));
- AM_RANGE(0x440000, 0x443fff) AM_RAM // OBJ RAM
+ map(0x440000, 0x443fff).ram(); // OBJ RAM
- AM_RANGE(0x460000, 0x47ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
+ map(0x460000, 0x47ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
- AM_RANGE(0x4b0000, 0x4b001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00ff00)
+ map(0x4b0000, 0x4b001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask32(0xff00ff00);
- AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff)
+ map(0x4c0000, 0x4c0007).w(m_k055673, FUNC(k055673_device::k053246_word_w));
//AM_RANGE(0x4c4000, 0x4c4003) AM_WRITENOP
//AM_RANGE(0x4c4004, 0x4c4007) AM_WRITENOP
//AM_RANGE(0x4c801c, 0x4c801f) AM_WRITENOP
//AM_RANGE(0x4cc01c, 0x4cc01f) AM_WRITENOP
- AM_RANGE(0x4cc000, 0x4cc00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff)
+ map(0x4cc000, 0x4cc00f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r));
- AM_RANGE(0x4d0000, 0x4d0003) AM_WRITE8(kongambl_ff_w,0xff000000)
+ map(0x4d0000, 0x4d0000).w(this, FUNC(kongambl_state::kongambl_ff_w));
- AM_RANGE(0x500000, 0x5007ff) AM_RAM
- AM_RANGE(0x500380, 0x500383) AM_READ(test_r)
+ map(0x500000, 0x5007ff).ram();
+ map(0x500380, 0x500383).r(this, FUNC(kongambl_state::test_r));
// AM_RANGE(0x500400, 0x500403) AM_NOP //dual port?
// AM_RANGE(0x500420, 0x500423) AM_NOP //dual port?
// AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k?
- AM_RANGE(0x580000, 0x580007) AM_READ(test_r)
+ map(0x580000, 0x580007).r(this, FUNC(kongambl_state::test_r));
- AM_RANGE(0x600000, 0x60000f) AM_READ(test_r)
+ map(0x600000, 0x60000f).r(this, FUNC(kongambl_state::test_r));
- AM_RANGE(0x700000, 0x700003) AM_READ(eeprom_r)
- AM_RANGE(0x700004, 0x700007) AM_READ_PORT("IN1")
- AM_RANGE(0x700008, 0x70000b) AM_READ_PORT("IN3")
- AM_RANGE(0x780000, 0x780003) AM_WRITE8(eeprom_w,0xffffffff)
+ map(0x700000, 0x700003).r(this, FUNC(kongambl_state::eeprom_r));
+ map(0x700004, 0x700007).portr("IN1");
+ map(0x700008, 0x70000b).portr("IN3");
+ map(0x780000, 0x780003).w(this, FUNC(kongambl_state::eeprom_w));
//AM_RANGE(0x780004, 0x780007) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kongambl_state::kongamaud_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM // main program (mirrored?)
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // work RAM
- AM_RANGE(0x180000, 0x180001) AM_WRITENOP
- AM_RANGE(0x190000, 0x190001) AM_WRITENOP
- AM_RANGE(0x1a0000, 0x1a0001) AM_WRITENOP
- AM_RANGE(0x1b0000, 0x1b0001) AM_READNOP
- AM_RANGE(0x1c0000, 0x1c0001) AM_READNOP
- AM_RANGE(0x200000, 0x2000ff) AM_RAM // unknown (YMZ280b? Shared with 68020?)
- AM_RANGE(0x280000, 0x2800ff) AM_RAM
- AM_RANGE(0x300000, 0x3007ff) AM_RAM
-ADDRESS_MAP_END
+}
+
+void kongambl_state::kongamaud_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom(); // main program (mirrored?)
+ map(0x100000, 0x10ffff).ram(); // work RAM
+ map(0x180000, 0x180001).nopw();
+ map(0x190000, 0x190001).nopw();
+ map(0x1a0000, 0x1a0001).nopw();
+ map(0x1b0000, 0x1b0001).nopr();
+ map(0x1c0000, 0x1c0001).nopr();
+ map(0x200000, 0x2000ff).ram(); // unknown (YMZ280b? Shared with 68020?)
+ map(0x280000, 0x2800ff).ram();
+ map(0x300000, 0x3007ff).ram();
+}
diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp
index f2b3603e58f..82438786cf3 100644
--- a/src/mame/drivers/tatsumi.cpp
+++ b/src/mame/drivers/tatsumi.cpp
@@ -192,178 +192,190 @@ WRITE16_MEMBER(cyclwarr_state::cyclwarr_sound_w)
/***************************************************************************/
-ADDRESS_MAP_START(apache3_state::apache3_v30_map)
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x08000, 0x08fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0c000, 0x0dfff) AM_RAM_WRITE(text_w) AM_SHARE("videoram")
- AM_RANGE(0x0e800, 0x0e803) AM_WRITENOP // CRT
- AM_RANGE(0x0f000, 0x0f001) AM_READ_PORT("DSW")
- AM_RANGE(0x0f000, 0x0f001) AM_WRITENOP // todo
- AM_RANGE(0x0f800, 0x0f801) AM_READWRITE(apache3_bank_r, apache3_bank_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(apache3_v30_v20_r, apache3_v30_v20_w)
- AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(tatsumi_v30_68000_r, tatsumi_v30_68000_w)
- AM_RANGE(0xa0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apache3_state::apache3_68000_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x80000, 0x83fff) AM_RAM AM_SHARE("68k_ram")
- AM_RANGE(0x90000, 0x93fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9a000, 0x9a1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram")
- AM_RANGE(0xa0000, 0xa0001) AM_WRITE(apache3_rotate_w) // /BNKCS
- AM_RANGE(0xb0000, 0xb0001) AM_WRITE(apache3_z80_ctrl_w)
- AM_RANGE(0xc0000, 0xc0001) AM_WRITE(apache3_road_z_w) // /LINCS
- AM_RANGE(0xd0000, 0xdffff) AM_RAM AM_SHARE("apache3_g_ram") // /GRDCS
- AM_RANGE(0xe0000, 0xe7fff) AM_READWRITE(apache3_z80_r, apache3_z80_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apache3_state::apache3_v20_map)
- AM_RANGE(0x00000, 0x01fff) AM_RAM
- AM_RANGE(0x04000, 0x04003) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw
- AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
- AM_RANGE(0x0a000, 0x0a000) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(apache3_state::apache3_z80_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("apache3_z80_ram")
- AM_RANGE(0x8000, 0xffff) AM_WRITE(apache3_road_x_w)
-ADDRESS_MAP_END
+void apache3_state::apache3_v30_map(address_map &map)
+{
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x07fff).ram().share("nvram");
+ map(0x08000, 0x08fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0c000, 0x0dfff).ram().w(this, FUNC(apache3_state::text_w)).share("videoram");
+ map(0x0e800, 0x0e803).nopw(); // CRT
+ map(0x0f000, 0x0f001).portr("DSW");
+ map(0x0f000, 0x0f001).nopw(); // todo
+ map(0x0f800, 0x0f801).rw(this, FUNC(apache3_state::apache3_bank_r), FUNC(apache3_state::apache3_bank_w));
+ map(0x10000, 0x1ffff).rw(this, FUNC(apache3_state::apache3_v30_v20_r), FUNC(apache3_state::apache3_v30_v20_w));
+ map(0x20000, 0x2ffff).rw(this, FUNC(apache3_state::tatsumi_v30_68000_r), FUNC(apache3_state::tatsumi_v30_68000_w));
+ map(0xa0000, 0xfffff).rom();
+}
+
+void apache3_state::apache3_68000_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0x80000, 0x83fff).ram().share("68k_ram");
+ map(0x90000, 0x93fff).ram().share("spriteram");
+ map(0x9a000, 0x9a1ff).w(this, FUNC(apache3_state::tatsumi_sprite_control_w)).share("sprite_ctlram");
+ map(0xa0000, 0xa0001).w(this, FUNC(apache3_state::apache3_rotate_w)); // /BNKCS
+ map(0xb0000, 0xb0001).w(this, FUNC(apache3_state::apache3_z80_ctrl_w));
+ map(0xc0000, 0xc0001).w(this, FUNC(apache3_state::apache3_road_z_w)); // /LINCS
+ map(0xd0000, 0xdffff).ram().share("apache3_g_ram"); // /GRDCS
+ map(0xe0000, 0xe7fff).rw(this, FUNC(apache3_state::apache3_z80_r), FUNC(apache3_state::apache3_z80_w));
+}
+
+void apache3_state::apache3_v20_map(address_map &map)
+{
+ map(0x00000, 0x01fff).ram();
+ map(0x04000, 0x04003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x06000, 0x06001).portr("IN0"); // esw
+ map(0x08000, 0x08001).r(this, FUNC(apache3_state::tatsumi_hack_ym2151_r)).w("ymsnd", FUNC(ym2151_device::write));
+ map(0x0a000, 0x0a000).r(this, FUNC(apache3_state::tatsumi_hack_oki_r)).w(m_oki, FUNC(okim6295_device::write));
+ map(0x0e000, 0x0e007).rw(this, FUNC(apache3_state::apache3_adc_r), FUNC(apache3_state::apache3_adc_w)); //adc select
+ map(0xf0000, 0xfffff).rom();
+}
+
+void apache3_state::apache3_z80_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("apache3_z80_ram");
+ map(0x8000, 0xffff).w(this, FUNC(apache3_state::apache3_road_x_w));
+}
/*****************************************************************/
-ADDRESS_MAP_START(roundup5_state::roundup5_v30_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM
- AM_RANGE(0x08000, 0x0bfff) AM_RAM_WRITE(text_w) AM_SHARE("videoram")
- AM_RANGE(0x0c000, 0x0c003) AM_WRITE(roundup5_crt_w)
- AM_RANGE(0x0d000, 0x0d001) AM_READ_PORT("DSW")
- AM_RANGE(0x0d400, 0x0d40f) AM_WRITEONLY AM_SHARE("ru5_unknown0")
- AM_RANGE(0x0d800, 0x0d801) AM_WRITEONLY AM_SHARE("ru5_unknown1") // VRAM2 X scroll (todo)
- AM_RANGE(0x0dc00, 0x0dc01) AM_WRITEONLY AM_SHARE("ru5_unknown2") // VRAM2 Y scroll (todo)
- AM_RANGE(0x0e000, 0x0e001) AM_WRITE(roundup5_control_w)
- AM_RANGE(0x0f000, 0x0ffff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(roundup_v30_z80_r, roundup_v30_z80_w)
- AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(tatsumi_v30_68000_r, tatsumi_v30_68000_w)
- AM_RANGE(0x30000, 0x3ffff) AM_READWRITE(roundup5_vram_r, roundup5_vram_w)
- AM_RANGE(0x80000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(roundup5_state::roundup5_68000_map)
- AM_RANGE(0x00000, 0x7ffff) AM_ROM
- AM_RANGE(0x80000, 0x83fff) AM_RAM AM_SHARE("68k_ram")
- AM_RANGE(0x90000, 0x93fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9a000, 0x9a1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram")
- AM_RANGE(0xa0000, 0xa0fff) AM_RAM AM_SHARE("roundup_r_ram") // Road control data
- AM_RANGE(0xb0000, 0xb0fff) AM_RAM AM_SHARE("roundup_p_ram") // Road pixel data
- AM_RANGE(0xc0000, 0xc0fff) AM_RAM AM_SHARE("roundup_l_ram") // Road colour data
- AM_RANGE(0xd0000, 0xd0003) AM_WRITE(roundup5_d0000_w) AM_SHARE("ru5_d0000_ram")
- AM_RANGE(0xe0000, 0xe0001) AM_WRITE(roundup5_e0000_w) AM_SHARE("ru5_e0000_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(roundup5_state::roundup5_z80_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffef) AM_RAM
- AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
- AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xfff8, 0xfffb) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xfffc, 0xfffc) AM_READ_PORT("STICKX")
-ADDRESS_MAP_END
+void roundup5_state::roundup5_v30_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x08000, 0x0bfff).ram().w(this, FUNC(roundup5_state::text_w)).share("videoram");
+ map(0x0c000, 0x0c003).w(this, FUNC(roundup5_state::roundup5_crt_w));
+ map(0x0d000, 0x0d001).portr("DSW");
+ map(0x0d400, 0x0d40f).writeonly().share("ru5_unknown0");
+ map(0x0d800, 0x0d801).writeonly().share("ru5_unknown1"); // VRAM2 X scroll (todo)
+ map(0x0dc00, 0x0dc01).writeonly().share("ru5_unknown2"); // VRAM2 Y scroll (todo)
+ map(0x0e000, 0x0e001).w(this, FUNC(roundup5_state::roundup5_control_w));
+ map(0x0f000, 0x0ffff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x10000, 0x1ffff).rw(this, FUNC(roundup5_state::roundup_v30_z80_r), FUNC(roundup5_state::roundup_v30_z80_w));
+ map(0x20000, 0x2ffff).rw(this, FUNC(roundup5_state::tatsumi_v30_68000_r), FUNC(roundup5_state::tatsumi_v30_68000_w));
+ map(0x30000, 0x3ffff).rw(this, FUNC(roundup5_state::roundup5_vram_r), FUNC(roundup5_state::roundup5_vram_w));
+ map(0x80000, 0xfffff).rom();
+}
+
+void roundup5_state::roundup5_68000_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).rom();
+ map(0x80000, 0x83fff).ram().share("68k_ram");
+ map(0x90000, 0x93fff).ram().share("spriteram");
+ map(0x9a000, 0x9a1ff).w(this, FUNC(roundup5_state::tatsumi_sprite_control_w)).share("sprite_ctlram");
+ map(0xa0000, 0xa0fff).ram().share("roundup_r_ram"); // Road control data
+ map(0xb0000, 0xb0fff).ram().share("roundup_p_ram"); // Road pixel data
+ map(0xc0000, 0xc0fff).ram().share("roundup_l_ram"); // Road colour data
+ map(0xd0000, 0xd0003).w(this, FUNC(roundup5_state::roundup5_d0000_w)).share("ru5_d0000_ram");
+ map(0xe0000, 0xe0001).w(this, FUNC(roundup5_state::roundup5_e0000_w)).share("ru5_e0000_ram");
+}
+
+void roundup5_state::roundup5_z80_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xffef).ram();
+ map(0xfff0, 0xfff1).r(this, FUNC(roundup5_state::tatsumi_hack_ym2151_r)).w("ymsnd", FUNC(ym2151_device::write));
+ map(0xfff4, 0xfff4).r(this, FUNC(roundup5_state::tatsumi_hack_oki_r)).w(m_oki, FUNC(okim6295_device::write));
+ map(0xfff8, 0xfffb).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfffc, 0xfffc).portr("STICKX");
+}
/******************************************************************************/
-ADDRESS_MAP_START(cyclwarr_state::cyclwarr_68000a_map)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpua_ram")
- AM_RANGE(0x03e000, 0x03efff) AM_RAM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("cw_cpub_ram")
- AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w) AM_SHARE("cw_videoram1")
- AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w) AM_SHARE("cw_videoram0")
-
- AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w)
- AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w)
- AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w)
-
- AM_RANGE(0x0b8000, 0x0b8001) AM_WRITE(cyclwarr_sound_w)
- AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram")
- AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram")
- AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x1bffff) AM_ROMBANK("bank2") /* CPU B ROM */
- AM_RANGE(0x2c0000, 0x33ffff) AM_ROMBANK("bank1") /* CPU A ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cyclwarr_state::cyclwarr_68000b_map)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpub_ram")
-
- AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w)
- AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w)
-
- AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w)
- AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w)
- AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w)
-
- AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w)
- AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w)
- AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x1bffff) AM_ROMBANK("bank2") /* CPU B ROM */
- AM_RANGE(0x2c0000, 0x33ffff) AM_ROMBANK("bank1") /* CPU A ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cyclwarr_state::cyclwarr_z80_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffef) AM_RAM
- AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
- AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xfffc, 0xfffc) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP
-ADDRESS_MAP_END
+void cyclwarr_state::cyclwarr_68000a_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).ram().share("cw_cpua_ram");
+ map(0x03e000, 0x03efff).ram();
+ map(0x040000, 0x04ffff).ram().share("cw_cpub_ram");
+ map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w)).share("cw_videoram1");
+ map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w)).share("cw_videoram0");
+
+ map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w));
+ map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w));
+ map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w));
+
+ map(0x0b8000, 0x0b8001).w(this, FUNC(cyclwarr_state::cyclwarr_sound_w));
+ map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)).share("spriteram");
+ map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w)).share("sprite_ctlram");
+ map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x1bffff).bankr("bank2"); /* CPU B ROM */
+ map(0x2c0000, 0x33ffff).bankr("bank1"); /* CPU A ROM */
+}
+
+void cyclwarr_state::cyclwarr_68000b_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).ram().share("cw_cpub_ram");
+
+ map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w));
+ map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w));
+
+ map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w));
+ map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w));
+ map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w));
+
+ map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w));
+ map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w));
+ map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x1bffff).bankr("bank2"); /* CPU B ROM */
+ map(0x2c0000, 0x33ffff).bankr("bank1"); /* CPU A ROM */
+}
+
+void cyclwarr_state::cyclwarr_z80_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xffef).ram();
+ map(0xfff0, 0xfff1).r(this, FUNC(cyclwarr_state::tatsumi_hack_ym2151_r)).w("ymsnd", FUNC(ym2151_device::write));
+ map(0xfff4, 0xfff4).r(this, FUNC(cyclwarr_state::tatsumi_hack_oki_r)).w(m_oki, FUNC(okim6295_device::write));
+ map(0xfffc, 0xfffc).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xfffe, 0xfffe).nopw();
+}
/******************************************************************************/
-ADDRESS_MAP_START(cyclwarr_state::bigfight_68000a_map)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpua_ram")
-
- AM_RANGE(0x03e000, 0x03efff) AM_RAM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("cw_cpub_ram")
-
- AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w) AM_SHARE("cw_videoram1")
- AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w) AM_SHARE("cw_videoram0")
-
- AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w)
- AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w)
- AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w)
-
- AM_RANGE(0x0b8000, 0x0b8001) AM_WRITE(cyclwarr_sound_w)
- AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram")
- AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram")
- AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("bank2") /* CPU A ROM */
- AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* CPU B ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cyclwarr_state::bigfight_68000b_map)
- AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpub_ram")
- AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w)
- AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w)
- AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w)
- AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w)
- AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w)
-
- AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16)
- AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w)
- AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w)
- AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("bank2") /* CPU A ROM */
- AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* CPU B ROM */
-ADDRESS_MAP_END
+void cyclwarr_state::bigfight_68000a_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).ram().share("cw_cpua_ram");
+
+ map(0x03e000, 0x03efff).ram();
+ map(0x040000, 0x04ffff).ram().share("cw_cpub_ram");
+
+ map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w)).share("cw_videoram1");
+ map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w)).share("cw_videoram0");
+
+ map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w));
+ map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w));
+ map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w));
+
+ map(0x0b8000, 0x0b8001).w(this, FUNC(cyclwarr_state::cyclwarr_sound_w));
+ map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)).share("spriteram");
+ map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w)).share("sprite_ctlram");
+ map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x100000, 0x17ffff).bankr("bank2"); /* CPU A ROM */
+ map(0x200000, 0x27ffff).bankr("bank1"); /* CPU B ROM */
+}
+
+void cyclwarr_state::bigfight_68000b_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).ram().share("cw_cpub_ram");
+ map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w));
+ map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w));
+ map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w));
+ map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w));
+ map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w));
+
+ map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w));
+ map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w));
+ map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x100000, 0x17ffff).bankr("bank2"); /* CPU A ROM */
+ map(0x200000, 0x27ffff).bankr("bank1"); /* CPU B ROM */
+}
/******************************************************************************/
diff --git a/src/mame/drivers/tattack.cpp b/src/mame/drivers/tattack.cpp
index 3948f60b36c..f355eb75e30 100644
--- a/src/mame/drivers/tattack.cpp
+++ b/src/mame/drivers/tattack.cpp
@@ -264,20 +264,21 @@ WRITE8_MEMBER(tattack_state::sound_w)
}
}
-ADDRESS_MAP_START(tattack_state::tattack_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_READ_PORT("AN_PADDLE") // $315, checks again with same memory, loops if different (?)
- AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW2")
- AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("colorram") // color map ? something else .. only bits 1-3 are used
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW1") // dsw ? something else ?
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("INPUTS") AM_WRITE(sound_w) // sound
- AM_RANGE(0xc001, 0xc001) AM_WRITE(brick_dma_w) // bit 7 = strobe ($302)
- AM_RANGE(0xc002, 0xc002) AM_WRITENOP // same as sound port, outputs?
- AM_RANGE(0xc005, 0xc005) AM_WRITE(paddle_w)
- AM_RANGE(0xc006, 0xc007) AM_WRITE(ball_w)
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+void tattack_state::tattack_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x4000, 0x4000).portr("AN_PADDLE"); // $315, checks again with same memory, loops if different (?)
+ map(0x5000, 0x53ff).ram().share("videoram");
+ map(0x6000, 0x6000).portr("DSW2");
+ map(0x7000, 0x73ff).ram().share("colorram"); // color map ? something else .. only bits 1-3 are used
+ map(0xa000, 0xa000).portr("DSW1"); // dsw ? something else ?
+ map(0xc000, 0xc000).portr("INPUTS").w(this, FUNC(tattack_state::sound_w)); // sound
+ map(0xc001, 0xc001).w(this, FUNC(tattack_state::brick_dma_w)); // bit 7 = strobe ($302)
+ map(0xc002, 0xc002).nopw(); // same as sound port, outputs?
+ map(0xc005, 0xc005).w(this, FUNC(tattack_state::paddle_w));
+ map(0xc006, 0xc007).w(this, FUNC(tattack_state::ball_w));
+ map(0xe000, 0xe3ff).ram().share("ram");
+}
static INPUT_PORTS_START( tattack )
PORT_START("INPUTS")
diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp
index 37916118257..b5ea7a9184c 100644
--- a/src/mame/drivers/tavernie.cpp
+++ b/src/mame/drivers/tavernie.cpp
@@ -116,30 +116,32 @@ private:
};
-ADDRESS_MAP_START(tavernie_state::cpu09_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x1000, 0x1fff) AM_NOP
- AM_RANGE(0xeb00, 0xeb03) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xeb04, 0xeb05) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xeb08, 0xeb0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xec00, 0xefff) AM_RAM // 1Kx8 RAM MK4118
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tavernie_state::ivg09_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia_ivg", pia6821_device, read, write)
- AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
- AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("fdc", fd1795_device, read, write)
- AM_RANGE(0xe080, 0xe080) AM_WRITE(ds_w)
- AM_RANGE(0xeb00, 0xeb03) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xeb04, 0xeb05) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0xeb08, 0xeb0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xec00, 0xefff) AM_RAM // 1Kx8 RAM MK4118
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void tavernie_state::cpu09_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x1000, 0x1fff).noprw();
+ map(0xeb00, 0xeb03).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xeb04, 0xeb05).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xeb08, 0xeb0f).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xec00, 0xefff).ram(); // 1Kx8 RAM MK4118
+ map(0xf000, 0xffff).rom().region("roms", 0);
+}
+
+void tavernie_state::ivg09_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x1000, 0x1fff).ram().share("videoram");
+ map(0x2000, 0x2003).rw(m_pia_ivg, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ 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(0xe000, 0xe003).rw(m_fdc, FUNC(fd1795_device::read), FUNC(fd1795_device::write));
+ map(0xe080, 0xe080).w(this, FUNC(tavernie_state::ds_w));
+ map(0xeb00, 0xeb03).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xeb04, 0xeb05).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0xeb08, 0xeb0f).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xec00, 0xefff).ram(); // 1Kx8 RAM MK4118
+ map(0xf000, 0xffff).rom().region("roms", 0);
+}
/* Input ports */
diff --git a/src/mame/drivers/taxidriv.cpp b/src/mame/drivers/taxidriv.cpp
index 808e0636cea..cdaed919d08 100644
--- a/src/mame/drivers/taxidriv.cpp
+++ b/src/mame/drivers/taxidriv.cpp
@@ -110,55 +110,59 @@ WRITE8_MEMBER(taxidriv_state::p8910_0b_w)
m_s4 = data & 1;
}
-ADDRESS_MAP_START(taxidriv_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM /* ??? */
- AM_RANGE(0x9000, 0x9fff) AM_RAM /* ??? */
- AM_RANGE(0xa000, 0xafff) AM_RAM /* ??? */
- AM_RANGE(0xb000, 0xbfff) AM_RAM /* ??? */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("vram4") /* radar bitmap */
- AM_RANGE(0xc800, 0xcfff) AM_WRITEONLY AM_SHARE("vram5") /* "sprite1" bitmap */
- AM_RANGE(0xd000, 0xd7ff) AM_WRITEONLY AM_SHARE("vram6") /* "sprite2" bitmap */
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("vram7") /* "sprite3" bitmap */
- AM_RANGE(0xe000, 0xf3ff) AM_READONLY
- AM_RANGE(0xe000, 0xe3ff) AM_WRITEONLY AM_SHARE("vram1") /* car tilemap */
- AM_RANGE(0xe400, 0xebff) AM_WRITEONLY AM_SHARE("vram2") /* bg1 tilemap */
- AM_RANGE(0xec00, 0xefff) AM_WRITEONLY AM_SHARE("vram0") /* fg tilemap */
- AM_RANGE(0xf000, 0xf3ff) AM_WRITEONLY AM_SHARE("vram3") /* bg2 tilemap */
- AM_RANGE(0xf400, 0xf403) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0xf480, 0xf483) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* "sprite1" placement */
- AM_RANGE(0xf500, 0xf503) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* "sprite2" placement */
- AM_RANGE(0xf580, 0xf583) AM_DEVREADWRITE("ppi8255_4", i8255_device, read, write) /* "sprite3" placement */
+void taxidriv_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram(); /* ??? */
+ map(0x9000, 0x9fff).ram(); /* ??? */
+ map(0xa000, 0xafff).ram(); /* ??? */
+ map(0xb000, 0xbfff).ram(); /* ??? */
+ map(0xc000, 0xc7ff).ram().share("vram4"); /* radar bitmap */
+ map(0xc800, 0xcfff).writeonly().share("vram5"); /* "sprite1" bitmap */
+ map(0xd000, 0xd7ff).writeonly().share("vram6"); /* "sprite2" bitmap */
+ map(0xd800, 0xdfff).ram().share("vram7"); /* "sprite3" bitmap */
+ map(0xe000, 0xf3ff).readonly();
+ map(0xe000, 0xe3ff).writeonly().share("vram1"); /* car tilemap */
+ map(0xe400, 0xebff).writeonly().share("vram2"); /* bg1 tilemap */
+ map(0xec00, 0xefff).writeonly().share("vram0"); /* fg tilemap */
+ map(0xf000, 0xf3ff).writeonly().share("vram3"); /* bg2 tilemap */
+ map(0xf400, 0xf403).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf480, 0xf483).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* "sprite1" placement */
+ map(0xf500, 0xf503).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* "sprite2" placement */
+ map(0xf580, 0xf583).rw("ppi8255_4", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* "sprite3" placement */
//AM_RANGE(0xf780, 0xf781) AM_WRITEONLY /* more scroll registers? */
- AM_RANGE(0xf782, 0xf787) AM_WRITEONLY AM_SHARE("scroll") /* bg scroll (three copies always identical) */
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taxidriv_state::cpu2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW0")
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW2")
- AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P1")
- AM_RANGE(0xe004, 0xe004) AM_READ_PORT("P2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taxidriv_state::cpu3_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2000) AM_READNOP /* irq ack? */
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taxidriv_state::cpu3_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x03, 0x03) AM_DEVREAD("ay2", ay8910_device, data_r)
-ADDRESS_MAP_END
+ map(0xf782, 0xf787).writeonly().share("scroll"); /* bg scroll (three copies always identical) */
+ map(0xf800, 0xffff).ram();
+}
+
+void taxidriv_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x67ff).ram();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe000, 0xe000).portr("DSW0");
+ map(0xe001, 0xe001).portr("DSW1");
+ map(0xe002, 0xe002).portr("DSW2");
+ map(0xe003, 0xe003).portr("P1");
+ map(0xe004, 0xe004).portr("P2");
+}
+
+void taxidriv_state::cpu3_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x2000).nopr(); /* irq ack? */
+ map(0xfc00, 0xffff).ram();
+}
+
+void taxidriv_state::cpu3_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x01, 0x01).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x03, 0x03).r("ay2", FUNC(ay8910_device::data_r));
+}
static INPUT_PORTS_START( taxidriv )
diff --git a/src/mame/drivers/tbowl.cpp b/src/mame/drivers/tbowl.cpp
index 9b8d5ae3d5a..f0441cfdd7b 100644
--- a/src/mame/drivers/tbowl.cpp
+++ b/src/mame/drivers/tbowl.cpp
@@ -57,39 +57,40 @@ WRITE8_MEMBER(tbowl_state::boardc_bankswitch_w)
/* Board B */
-ADDRESS_MAP_START(tbowl_state::_6206B_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
+void tbowl_state::_6206B_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).ram().w(this, FUNC(tbowl_state::bg2videoram_w)).share("bg2videoram");
+ map(0xc000, 0xdfff).ram().w(this, FUNC(tbowl_state::bgvideoram_w)).share("bgvideoram");
+ map(0xe000, 0xefff).ram().w(this, FUNC(tbowl_state::txvideoram_w)).share("txvideoram");
// AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown_write) * written during start-up, not again */
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("mainbank")
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("shared_ram") /* check */
- AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1") AM_WRITE(boardb_bankswitch_w)
- AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("P2")
+ map(0xf000, 0xf7ff).bankr("mainbank");
+ map(0xf800, 0xfbff).ram().share("shared_ram"); /* check */
+ map(0xfc00, 0xfc00).portr("P1").w(this, FUNC(tbowl_state::boardb_bankswitch_w));
+ map(0xfc01, 0xfc01).portr("P2");
// AM_RANGE(0xfc01, 0xfc01) AM_WRITE(unknown_write) /* written during start-up, not again */
- AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P3")
+ map(0xfc02, 0xfc02).portr("P3");
// AM_RANGE(0xfc02, 0xfc02) AM_WRITE(unknown_write) /* written during start-up, not again */
- AM_RANGE(0xfc03, 0xfc03) AM_READ_PORT("P4") AM_WRITE(coincounter_w)
+ map(0xfc03, 0xfc03).portr("P4").w(this, FUNC(tbowl_state::coincounter_w));
// AM_RANGE(0xfc05, 0xfc05) AM_WRITE(unknown_write) /* no idea */
// AM_RANGE(0xfc06, 0xfc06) AM_READ(dummy_r) /* Read During NMI */
- AM_RANGE(0xfc07, 0xfc07) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfc08, 0xfc08) AM_READ_PORT("DSW1")
+ map(0xfc07, 0xfc07).portr("SYSTEM");
+ map(0xfc08, 0xfc08).portr("DSW1");
// AM_RANGE(0xfc08, 0xfc08) AM_WRITE(unknown_write) /* hardly used .. */
- AM_RANGE(0xfc09, 0xfc09) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc0a, 0xfc0a) AM_READ_PORT("DSW3")
+ map(0xfc09, 0xfc09).portr("DSW2");
+ map(0xfc0a, 0xfc0a).portr("DSW3");
// AM_RANGE(0xfc0a, 0xfc0a) AM_WRITE(unknown_write) /* hardly used .. */
- AM_RANGE(0xfc0d, 0xfc0d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xfc10, 0xfc10) AM_WRITE(bg2xscroll_lo)
- AM_RANGE(0xfc11, 0xfc11) AM_WRITE(bg2xscroll_hi)
- AM_RANGE(0xfc12, 0xfc12) AM_WRITE(bg2yscroll_lo)
- AM_RANGE(0xfc13, 0xfc13) AM_WRITE(bg2yscroll_hi)
- AM_RANGE(0xfc14, 0xfc14) AM_WRITE(bgxscroll_lo)
- AM_RANGE(0xfc15, 0xfc15) AM_WRITE(bgxscroll_hi)
- AM_RANGE(0xfc16, 0xfc16) AM_WRITE(bgyscroll_lo)
- AM_RANGE(0xfc17, 0xfc17) AM_WRITE(bgyscroll_hi)
-ADDRESS_MAP_END
+ map(0xfc0d, 0xfc0d).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xfc10, 0xfc10).w(this, FUNC(tbowl_state::bg2xscroll_lo));
+ map(0xfc11, 0xfc11).w(this, FUNC(tbowl_state::bg2xscroll_hi));
+ map(0xfc12, 0xfc12).w(this, FUNC(tbowl_state::bg2yscroll_lo));
+ map(0xfc13, 0xfc13).w(this, FUNC(tbowl_state::bg2yscroll_hi));
+ map(0xfc14, 0xfc14).w(this, FUNC(tbowl_state::bgxscroll_lo));
+ map(0xfc15, 0xfc15).w(this, FUNC(tbowl_state::bgxscroll_hi));
+ map(0xfc16, 0xfc16).w(this, FUNC(tbowl_state::bgyscroll_lo));
+ map(0xfc17, 0xfc17).w(this, FUNC(tbowl_state::bgyscroll_hi));
+}
/* Board C */
WRITE8_MEMBER(tbowl_state::trigger_nmi)
@@ -98,20 +99,21 @@ WRITE8_MEMBER(tbowl_state::trigger_nmi)
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(tbowl_state::_6206C_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_READONLY
- AM_RANGE(0xc000, 0xd7ff) AM_WRITEONLY
- AM_RANGE(0xd800, 0xdfff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // 2x palettes, one for each monitor?
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("subbank")
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(boardc_bankswitch_w)
- AM_RANGE(0xfc01, 0xfc01) AM_WRITENOP /* ? */
- AM_RANGE(0xfc02, 0xfc02) AM_WRITE(trigger_nmi) /* ? */
- AM_RANGE(0xfc03, 0xfc03) AM_WRITENOP /* ? */
- AM_RANGE(0xfc06, 0xfc06) AM_WRITENOP /* ? */
-ADDRESS_MAP_END
+void tbowl_state::_6206C_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).readonly();
+ map(0xc000, 0xd7ff).writeonly();
+ map(0xd800, 0xdfff).writeonly().share("spriteram");
+ map(0xe000, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // 2x palettes, one for each monitor?
+ map(0xf000, 0xf7ff).bankr("subbank");
+ map(0xf800, 0xfbff).ram().share("shared_ram");
+ map(0xfc00, 0xfc00).w(this, FUNC(tbowl_state::boardc_bankswitch_w));
+ map(0xfc01, 0xfc01).nopw(); /* ? */
+ map(0xfc02, 0xfc02).w(this, FUNC(tbowl_state::trigger_nmi)); /* ? */
+ map(0xfc03, 0xfc03).nopw(); /* ? */
+ map(0xfc06, 0xfc06).nopw(); /* ? */
+}
/* Board A */
@@ -162,18 +164,19 @@ WRITE_LINE_MEMBER(tbowl_state::adpcm_int_2)
adpcm_int(m_msm2, 1);
}
-ADDRESS_MAP_START(tbowl_state::_6206A_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ym1", ym3812_device, write)
- AM_RANGE(0xd800, 0xd801) AM_DEVWRITE("ym2", ym3812_device, write)
- AM_RANGE(0xe000, 0xe001) AM_WRITE(adpcm_end_w)
- AM_RANGE(0xe002, 0xe003) AM_WRITE(adpcm_start_w)
- AM_RANGE(0xe004, 0xe005) AM_WRITE(adpcm_vol_w)
- AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0xe007, 0xe007) AM_WRITENOP // sound watchdog
- AM_RANGE(0xe010, 0xe010) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void tbowl_state::_6206A_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd001).w("ym1", FUNC(ym3812_device::write));
+ map(0xd800, 0xd801).w("ym2", FUNC(ym3812_device::write));
+ map(0xe000, 0xe001).w(this, FUNC(tbowl_state::adpcm_end_w));
+ map(0xe002, 0xe003).w(this, FUNC(tbowl_state::adpcm_start_w));
+ map(0xe004, 0xe005).w(this, FUNC(tbowl_state::adpcm_vol_w));
+ map(0xe006, 0xe006).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xe007, 0xe007).nopw(); // sound watchdog
+ map(0xe010, 0xe010).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*** Input Ports
diff --git a/src/mame/drivers/tceptor.cpp b/src/mame/drivers/tceptor.cpp
index 763ebc6a2b0..0a03fffce8c 100644
--- a/src/mame/drivers/tceptor.cpp
+++ b/src/mame/drivers/tceptor.cpp
@@ -145,84 +145,90 @@ READ8_MEMBER(tceptor_state::input1_r)
/*******************************************************************/
-ADDRESS_MAP_START(tceptor_state::m6809_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(tceptor_tile_ram_w) AM_SHARE("tile_ram")
- AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(tceptor_tile_attr_w) AM_SHARE("tile_attr")
- AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(tceptor_bg_ram_w) AM_SHARE("bg_ram") // background (VIEW RAM)
- AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w)
- AM_RANGE(0x4800, 0x4800) AM_WRITE(tceptor2_shutter_w)
- AM_RANGE(0x4f00, 0x4f00) AM_READNOP // unknown
- AM_RANGE(0x4f01, 0x4f01) AM_READ_PORT("PEDAL") // analog input (accel)
- AM_RANGE(0x4f02, 0x4f02) AM_READ_PORT("STICKX") // analog input (left/right)
- AM_RANGE(0x4f03, 0x4f03) AM_READ_PORT("STICKY") // analog input (up/down)
- AM_RANGE(0x4f00, 0x4f03) AM_WRITENOP // analog input control?
- AM_RANGE(0x5000, 0x5006) AM_WRITE(tceptor_bg_scroll_w) // bg scroll
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("m68k_shared_ram") // COM RAM
- AM_RANGE(0x8000, 0x8000) AM_WRITE(m6809_irq_disable_w)
- AM_RANGE(0x8800, 0x8800) AM_WRITE(m6809_irq_enable_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tceptor_state::m6502_a_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x0100, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x02ff) AM_RAM
- AM_RANGE(0x0300, 0x030f) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0x3c01, 0x3c01) AM_WRITEONLY
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tceptor_state::m6502_b_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x0100, 0x01ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0x5000, 0x5000) AM_WRITEONLY // voice ctrl??
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tceptor_state::m68k_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM // M68K ERROR 1
- AM_RANGE(0x100000, 0x10ffff) AM_ROM // not sure
- AM_RANGE(0x200000, 0x203fff) AM_RAM // M68K ERROR 0
- AM_RANGE(0x300000, 0x300001) AM_WRITEONLY
- AM_RANGE(0x400000, 0x4001ff) AM_WRITEONLY AM_SHARE("sprite_ram")
- AM_RANGE(0x500000, 0x51ffff) AM_DEVWRITE("c45_road", namco_c45_road_device, write)
- AM_RANGE(0x600000, 0x600001) AM_WRITE(m68k_irq_enable_w) // not sure
- AM_RANGE(0x700000, 0x703fff) AM_READWRITE8(m68k_shared_r, m68k_shared_w, 0x00ff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tceptor_state::mcu_map)
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
- AM_RANGE(0x0080, 0x00ff) AM_RAM
- AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w)
- AM_RANGE(0x1400, 0x154d) AM_RAM
- AM_RANGE(0x17c0, 0x17ff) AM_RAM
- AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("share3")
- AM_RANGE(0x2100, 0x2100) AM_READ(dsw0_r)
- AM_RANGE(0x2101, 0x2101) AM_READ(dsw1_r)
- AM_RANGE(0x2200, 0x2200) AM_READ(input0_r)
- AM_RANGE(0x2201, 0x2201) AM_READ(input1_r)
- AM_RANGE(0x8000, 0x8000) AM_WRITE(mcu_irq_disable_w)
- AM_RANGE(0x8800, 0x8800) AM_WRITE(mcu_irq_enable_w)
- AM_RANGE(0x8000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("nvram") // Battery Backup
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tceptor_state::mcu_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITENOP
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITENOP
-ADDRESS_MAP_END
+void tceptor_state::m6809_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram();
+ map(0x1800, 0x1bff).ram().w(this, FUNC(tceptor_state::tceptor_tile_ram_w)).share("tile_ram");
+ map(0x1c00, 0x1fff).ram().w(this, FUNC(tceptor_state::tceptor_tile_attr_w)).share("tile_attr");
+ map(0x2000, 0x3fff).ram().w(this, FUNC(tceptor_state::tceptor_bg_ram_w)).share("bg_ram"); // background (VIEW RAM)
+ map(0x4000, 0x43ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w));
+ map(0x4800, 0x4800).w(this, FUNC(tceptor_state::tceptor2_shutter_w));
+ map(0x4f00, 0x4f00).nopr(); // unknown
+ map(0x4f01, 0x4f01).portr("PEDAL"); // analog input (accel)
+ map(0x4f02, 0x4f02).portr("STICKX"); // analog input (left/right)
+ map(0x4f03, 0x4f03).portr("STICKY"); // analog input (up/down)
+ map(0x4f00, 0x4f03).nopw(); // analog input control?
+ map(0x5000, 0x5006).w(this, FUNC(tceptor_state::tceptor_bg_scroll_w)); // bg scroll
+ map(0x6000, 0x7fff).ram().share("m68k_shared_ram"); // COM RAM
+ map(0x8000, 0x8000).w(this, FUNC(tceptor_state::m6809_irq_disable_w));
+ map(0x8800, 0x8800).w(this, FUNC(tceptor_state::m6809_irq_enable_w));
+ map(0x8000, 0xffff).rom();
+}
+
+
+void tceptor_state::m6502_a_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().share("share2");
+ map(0x0100, 0x01ff).ram();
+ map(0x0200, 0x02ff).ram();
+ map(0x0300, 0x030f).ram();
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x3000, 0x30ff).ram().share("share3");
+ map(0x3c01, 0x3c01).writeonly();
+ map(0x8000, 0xffff).rom();
+}
+
+
+void tceptor_state::m6502_b_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().share("share2");
+ map(0x0100, 0x01ff).ram();
+ map(0x4000, 0x4000).w("dac", FUNC(dac_byte_interface::write));
+ map(0x5000, 0x5000).writeonly(); // voice ctrl??
+ map(0x8000, 0xffff).rom();
+}
+
+
+void tceptor_state::m68k_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); // M68K ERROR 1
+ map(0x100000, 0x10ffff).rom(); // not sure
+ map(0x200000, 0x203fff).ram(); // M68K ERROR 0
+ map(0x300000, 0x300001).writeonly();
+ map(0x400000, 0x4001ff).writeonly().share("sprite_ram");
+ map(0x500000, 0x51ffff).w(m_c45_road, FUNC(namco_c45_road_device::write));
+ map(0x600000, 0x600001).w(this, FUNC(tceptor_state::m68k_irq_enable_w)); // not sure
+ map(0x700000, 0x703fff).rw(this, FUNC(tceptor_state::m68k_shared_r), FUNC(tceptor_state::m68k_shared_w)).umask16(0x00ff);
+}
+
+
+void tceptor_state::mcu_map(address_map &map)
+{
+ map(0x0000, 0x001f).rw("mcu", FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));
+ map(0x0080, 0x00ff).ram();
+ map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w));
+ map(0x1400, 0x154d).ram();
+ map(0x17c0, 0x17ff).ram();
+ map(0x2000, 0x20ff).ram().share("share3");
+ map(0x2100, 0x2100).r(this, FUNC(tceptor_state::dsw0_r));
+ map(0x2101, 0x2101).r(this, FUNC(tceptor_state::dsw1_r));
+ map(0x2200, 0x2200).r(this, FUNC(tceptor_state::input0_r));
+ map(0x2201, 0x2201).r(this, FUNC(tceptor_state::input1_r));
+ map(0x8000, 0x8000).w(this, FUNC(tceptor_state::mcu_irq_disable_w));
+ map(0x8800, 0x8800).w(this, FUNC(tceptor_state::mcu_irq_enable_w));
+ map(0x8000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xdfff).ram().share("nvram"); // Battery Backup
+ map(0xf000, 0xffff).rom();
+}
+
+
+void tceptor_state::mcu_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(M6801_PORT1, M6801_PORT1).nopw();
+ map(M6801_PORT2, M6801_PORT2).nopw();
+}
diff --git a/src/mame/drivers/tcl.cpp b/src/mame/drivers/tcl.cpp
index 5dcf8e10f64..644f6f5beb3 100644
--- a/src/mame/drivers/tcl.cpp
+++ b/src/mame/drivers/tcl.cpp
@@ -72,9 +72,10 @@ uint32_t tcl_state::screen_update_tcl(screen_device &screen, bitmap_ind16 &bitma
return 0;
}
-ADDRESS_MAP_START(tcl_state::tcl_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* bfff ? */
-ADDRESS_MAP_END
+void tcl_state::tcl_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* bfff ? */
+}
static INPUT_PORTS_START( tcl )
diff --git a/src/mame/drivers/tdv2324.cpp b/src/mame/drivers/tdv2324.cpp
index 7a4311fdae2..fd66194ebce 100644
--- a/src/mame/drivers/tdv2324.cpp
+++ b/src/mame/drivers/tdv2324.cpp
@@ -132,67 +132,72 @@ WRITE8_MEMBER( tdv2324_state::tdv2324_main_io_e2 )
// ADDRESS_MAP( tdv2324_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(tdv2324_state::tdv2324_mem)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_ROM AM_REGION(P8085AH_0_TAG, 0)
+void tdv2324_state::tdv2324_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x0800).rom().region(P8085AH_0_TAG, 0);
/* when copying code to 4000 area it runs right off the end of rom;
* I'm not sure if its supposed to mirror or read as open bus */
// AM_RANGE(0x4000, 0x5fff) AM_RAM // 0x4000 has the boot code copied to it, 5fff and down are the stack
// AM_RANGE(0x6000, 0x6fff) AM_RAM // used by the relocated boot code; shared?
- AM_RANGE(0x0800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x0800, 0xffff).ram();
+}
//-------------------------------------------------
// ADDRESS_MAP( tdv2324_io )
//-------------------------------------------------
-ADDRESS_MAP_START(tdv2324_state::tdv2324_io)
+void tdv2324_state::tdv2324_io(address_map &map)
+{
//ADDRESS_MAP_GLOBAL_MASK(0xff)
/* 0x30 is read by main code and if high bit isn't set at some point it will never get anywhere */
/* e0, e2, e8, ea are written to */
/* 30, e6 and e2 are readable */
- AM_RANGE(0x30, 0x30) AM_READ(tdv2324_main_io_30)
+ map(0x30, 0x30).r(this, FUNC(tdv2324_state::tdv2324_main_io_30));
// AM_RANGE(0xe2, 0xe2) AM_WRITE(tdv2324_main_io_e2) console output
- AM_RANGE(0xe6, 0xe6) AM_READ(tdv2324_main_io_e6)
+ map(0xe6, 0xe6).r(this, FUNC(tdv2324_state::tdv2324_main_io_e6));
// AM_RANGE(0x, 0x) AM_DEVREADWRITE(P8253_5_0_TAG, pit8253_device, read, write)
// AM_RANGE(0x, 0x) AM_DEVREADWRITE(MK3887N4_TAG, z80dart_device, ba_cd_r, ba_cd_w)
// AM_RANGE(0x, 0x) AM_DEVREADWRITE(P8259A_TAG, pic8259_device, read, write)
-ADDRESS_MAP_END
+}
//-------------------------------------------------
// ADDRESS_MAP( tdv2324_sub_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(tdv2324_state::tdv2324_sub_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION(P8085AH_1_TAG, 0)
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_RAM // EAROM
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void tdv2324_state::tdv2324_sub_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region(P8085AH_1_TAG, 0);
+ map(0x4000, 0x47ff).ram();
+ map(0x5000, 0x53ff).ram(); // EAROM
+ map(0x6000, 0x7fff).ram().share("video_ram");
+}
//-------------------------------------------------
// ADDRESS_MAP( tdv2324_sub_io )
//-------------------------------------------------
-ADDRESS_MAP_START(tdv2324_state::tdv2324_sub_io)
+void tdv2324_state::tdv2324_sub_io(address_map &map)
+{
//ADDRESS_MAP_GLOBAL_MASK(0xff)
/* 20, 23, 30-36, 38, 3a, 3c, 3e, 60, 70 are written to */
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE(P8253_5_1_TAG, pit8253_device, read, write)
- AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE(TMS9937NL_TAG, tms9927_device, read, write) // TODO: this is supposed to be a 9937, which is not quite the same as 9927
-ADDRESS_MAP_END
+ map(0x20, 0x23).rw(m_pit1, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x30, 0x3f).rw(m_tms, FUNC(tms9927_device::read), FUNC(tms9927_device::write)); // TODO: this is supposed to be a 9937, which is not quite the same as 9927
+}
//-------------------------------------------------
// ADDRESS_MAP( tdv2324_fdc_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(tdv2324_state::tdv2324_fdc_mem)
+void tdv2324_state::tdv2324_fdc_mem(address_map &map)
+{
// the following two are probably enabled/disabled via the JP2 jumper block next to the fdc cpu
//AM_RANGE(0x0000, 0x001f) AM_RAM // on-6802-die ram (optionally battery backed)
//AM_RANGE(0x0020, 0x007f) AM_RAM // on-6802-die ram
- AM_RANGE(0x0000, 0x07ff) AM_RAM // TMM2016AP-12 @ U14, tested with A5,5A pattern
+ map(0x0000, 0x07ff).ram(); // TMM2016AP-12 @ U14, tested with A5,5A pattern
//AM_RANGE(0x1000, 0x17ff) AM_RAM // TMM2016AP-12 @ U80, address is wrong
// the 3xxx area appears to be closely involved in fdc or other i/o
// in particular, reads from 30xx, 38xx, 3Cxx may be actually writes to certain fdc registers with data xx?
@@ -201,8 +206,8 @@ ADDRESS_MAP_START(tdv2324_state::tdv2324_fdc_mem)
// 0x8000 can also be written to
// 0x6000 can also be read from and written to
// Somewhere in here, the FDC chip and the hard disk interface live
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION(MC68B02P_TAG, 0) // rom "962014 // -4-" @U15
-ADDRESS_MAP_END
+ map(0xe000, 0xffff).rom().region(MC68B02P_TAG, 0); // rom "962014 // -4-" @U15
+}
diff --git a/src/mame/drivers/tec1.cpp b/src/mame/drivers/tec1.cpp
index c022c5bedd2..8a261532970 100644
--- a/src/mame/drivers/tec1.cpp
+++ b/src/mame/drivers/tec1.cpp
@@ -327,37 +327,41 @@ void tec1_state::machine_reset()
***************************************************************************/
-ADDRESS_MAP_START(tec1_state::tec1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x0fff) AM_RAM // on main board
- AM_RANGE(0x1000, 0x3fff) AM_RAM // expansion
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tec1_state::tec1_io)
- ADDRESS_MAP_GLOBAL_MASK(0x07)
- AM_RANGE(0x00, 0x00) AM_READ(tec1_kbd_r)
- AM_RANGE(0x01, 0x01) AM_WRITE(tec1_digit_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(tec1_segment_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tec1_state::tecjmon_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x37ff) AM_RAM
- AM_RANGE(0x3800, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tec1_state::tecjmon_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(tec1_kbd_r)
- AM_RANGE(0x01, 0x01) AM_WRITE(tecjmon_digit_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(tec1_segment_w)
- AM_RANGE(0x03, 0x03) AM_READ(latch_r)
+void tec1_state::tec1_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x0fff).ram(); // on main board
+ map(0x1000, 0x3fff).ram(); // expansion
+}
+
+void tec1_state::tec1_io(address_map &map)
+{
+ map.global_mask(0x07);
+ map(0x00, 0x00).r(this, FUNC(tec1_state::tec1_kbd_r));
+ map(0x01, 0x01).w(this, FUNC(tec1_state::tec1_digit_w));
+ map(0x02, 0x02).w(this, FUNC(tec1_state::tec1_segment_w));
+}
+
+
+void tec1_state::tecjmon_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x37ff).ram();
+ map(0x3800, 0x3fff).rom();
+}
+
+void tec1_state::tecjmon_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(tec1_state::tec1_kbd_r));
+ map(0x01, 0x01).w(this, FUNC(tec1_state::tecjmon_digit_w));
+ map(0x02, 0x02).w(this, FUNC(tec1_state::tec1_segment_w));
+ map(0x03, 0x03).r(this, FUNC(tec1_state::latch_r));
//AM_RANGE(0x04, 0x04) AM_WRITE(lcd_en_w)
//AM_RANGE(0x84, 0x84) AM_WRITE(lcd_2nd_w)
-ADDRESS_MAP_END
+}
/**************************************************************************
diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp
index 72be8dab968..c5b37c03a71 100644
--- a/src/mame/drivers/techno.cpp
+++ b/src/mame/drivers/techno.cpp
@@ -72,20 +72,21 @@ private:
};
-ADDRESS_MAP_START(techno_state::techno_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
- AM_RANGE(0x00000, 0x03fff) AM_ROM
- AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("nvram") // battery backed-up
- AM_RANGE(0x06000, 0x0ffff) AM_ROM
- AM_RANGE(0x14000, 0x147ff) AM_READWRITE(key_r,lamp1_w)
- AM_RANGE(0x14800, 0x14fff) AM_READWRITE(sound_r,lamp2_w)
- AM_RANGE(0x15000, 0x157ff) AM_READWRITE(rtrg_r,sol1_w)
- AM_RANGE(0x15800, 0x15fff) AM_READNOP AM_WRITE(sol2_w) // reads from 15800, but shown as not connected
- AM_RANGE(0x16000, 0x167ff) AM_WRITE(sound_w)
- AM_RANGE(0x16800, 0x16fff) AM_WRITE(disp1_w)
- AM_RANGE(0x17000, 0x177ff) AM_WRITE(disp2_w)
- AM_RANGE(0x17800, 0x17fff) AM_WRITE(setout_w)
-ADDRESS_MAP_END
+void techno_state::techno_map(address_map &map)
+{
+ map.global_mask(0x1ffff);
+ map(0x00000, 0x03fff).rom();
+ map(0x04000, 0x04fff).ram().share("nvram"); // battery backed-up
+ map(0x06000, 0x0ffff).rom();
+ map(0x14000, 0x147ff).rw(this, FUNC(techno_state::key_r), FUNC(techno_state::lamp1_w));
+ map(0x14800, 0x14fff).rw(this, FUNC(techno_state::sound_r), FUNC(techno_state::lamp2_w));
+ map(0x15000, 0x157ff).rw(this, FUNC(techno_state::rtrg_r), FUNC(techno_state::sol1_w));
+ map(0x15800, 0x15fff).nopr().w(this, FUNC(techno_state::sol2_w)); // reads from 15800, but shown as not connected
+ map(0x16000, 0x167ff).w(this, FUNC(techno_state::sound_w));
+ map(0x16800, 0x16fff).w(this, FUNC(techno_state::disp1_w));
+ map(0x17000, 0x177ff).w(this, FUNC(techno_state::disp2_w));
+ map(0x17800, 0x17fff).w(this, FUNC(techno_state::setout_w));
+}
ADDRESS_MAP_START(techno_state::techno_sub_map)
// no ram here, must be internal to the cpu
diff --git a/src/mame/drivers/tecmo.cpp b/src/mame/drivers/tecmo.cpp
index 001bc1b08e8..86d584ea5a3 100644
--- a/src/mame/drivers/tecmo.cpp
+++ b/src/mame/drivers/tecmo.cpp
@@ -136,112 +136,117 @@ READ8_MEMBER(tecmo_state::dswb_h_r)
}
-ADDRESS_MAP_START(tecmo_state::rygar_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("JOY2")
- AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
- AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
- AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
- AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
- AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
- AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
- AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
- AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
- AM_RANGE(0xf806, 0xf806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
- AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
- AM_RANGE(0xf80b, 0xf80b) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmo_state::gemini_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("JOY2")
- AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
- AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
- AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
- AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
- AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
- AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
- AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
- AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
- AM_RANGE(0xf806, 0xf806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
- AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
- AM_RANGE(0xf80b, 0xf80b) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmo_state::silkworm_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("JOY2")
- AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
- AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
- AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
- AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
- AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
- AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
- AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
- AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
- AM_RANGE(0xf806, 0xf806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
- AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
- AM_RANGE(0xf809, 0xf809) AM_WRITENOP /* ? */
- AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP /* ? if mapped to watchdog like in the others, causes reset */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmo_state::rygar_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmo_state::tecmo_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x2000, 0x207f) AM_RAM /* Silkworm set #2 has a custom CPU which */
+void tecmo_state::rygar_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(tecmo_state::txvideoram_w)).share("txvideoram");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(tecmo_state::fgvideoram_w)).share("fgvideoram");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(tecmo_state::bgvideoram_w)).share("bgvideoram");
+ map(0xe000, 0xe7ff).ram().share("spriteram");
+ map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf000, 0xf7ff).bankr("bank1");
+ map(0xf800, 0xf800).portr("JOY1");
+ map(0xf801, 0xf801).portr("BUTTONS1");
+ map(0xf802, 0xf802).portr("JOY2");
+ map(0xf803, 0xf803).portr("BUTTONS2");
+ map(0xf804, 0xf804).portr("SYS_0");
+ map(0xf805, 0xf805).portr("SYS_1");
+ map(0xf806, 0xf806).r(this, FUNC(tecmo_state::dswa_l_r));
+ map(0xf807, 0xf807).r(this, FUNC(tecmo_state::dswa_h_r));
+ map(0xf808, 0xf808).r(this, FUNC(tecmo_state::dswb_l_r));
+ map(0xf809, 0xf809).r(this, FUNC(tecmo_state::dswb_h_r));
+ map(0xf80f, 0xf80f).portr("SYS_2");
+ map(0xf800, 0xf802).w(this, FUNC(tecmo_state::fgscroll_w));
+ map(0xf803, 0xf805).w(this, FUNC(tecmo_state::bgscroll_w));
+ map(0xf806, 0xf806).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf807, 0xf807).w(this, FUNC(tecmo_state::flipscreen_w));
+ map(0xf808, 0xf808).w(this, FUNC(tecmo_state::bankswitch_w));
+ map(0xf80b, 0xf80b).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
+
+void tecmo_state::gemini_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(tecmo_state::txvideoram_w)).share("txvideoram");
+ map(0xd800, 0xdbff).ram().w(this, FUNC(tecmo_state::fgvideoram_w)).share("fgvideoram");
+ map(0xdc00, 0xdfff).ram().w(this, FUNC(tecmo_state::bgvideoram_w)).share("bgvideoram");
+ map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe800, 0xefff).ram().share("spriteram");
+ map(0xf000, 0xf7ff).bankr("bank1");
+ map(0xf800, 0xf800).portr("JOY1");
+ map(0xf801, 0xf801).portr("BUTTONS1");
+ map(0xf802, 0xf802).portr("JOY2");
+ map(0xf803, 0xf803).portr("BUTTONS2");
+ map(0xf804, 0xf804).portr("SYS_0");
+ map(0xf805, 0xf805).portr("SYS_1");
+ map(0xf806, 0xf806).r(this, FUNC(tecmo_state::dswa_l_r));
+ map(0xf807, 0xf807).r(this, FUNC(tecmo_state::dswa_h_r));
+ map(0xf808, 0xf808).r(this, FUNC(tecmo_state::dswb_l_r));
+ map(0xf809, 0xf809).r(this, FUNC(tecmo_state::dswb_h_r));
+ map(0xf80f, 0xf80f).portr("SYS_2");
+ map(0xf800, 0xf802).w(this, FUNC(tecmo_state::fgscroll_w));
+ map(0xf803, 0xf805).w(this, FUNC(tecmo_state::bgscroll_w));
+ map(0xf806, 0xf806).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf807, 0xf807).w(this, FUNC(tecmo_state::flipscreen_w));
+ map(0xf808, 0xf808).w(this, FUNC(tecmo_state::bankswitch_w));
+ map(0xf80b, 0xf80b).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
+
+void tecmo_state::silkworm_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc3ff).ram().w(this, FUNC(tecmo_state::bgvideoram_w)).share("bgvideoram");
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(tecmo_state::fgvideoram_w)).share("fgvideoram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(tecmo_state::txvideoram_w)).share("txvideoram");
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().share("spriteram");
+ map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf000, 0xf7ff).bankr("bank1");
+ map(0xf800, 0xf800).portr("JOY1");
+ map(0xf801, 0xf801).portr("BUTTONS1");
+ map(0xf802, 0xf802).portr("JOY2");
+ map(0xf803, 0xf803).portr("BUTTONS2");
+ map(0xf804, 0xf804).portr("SYS_0");
+ map(0xf805, 0xf805).portr("SYS_1");
+ map(0xf806, 0xf806).r(this, FUNC(tecmo_state::dswa_l_r));
+ map(0xf807, 0xf807).r(this, FUNC(tecmo_state::dswa_h_r));
+ map(0xf808, 0xf808).r(this, FUNC(tecmo_state::dswb_l_r));
+ map(0xf809, 0xf809).r(this, FUNC(tecmo_state::dswb_h_r));
+ map(0xf80f, 0xf80f).portr("SYS_2");
+ map(0xf800, 0xf802).w(this, FUNC(tecmo_state::fgscroll_w));
+ map(0xf803, 0xf805).w(this, FUNC(tecmo_state::bgscroll_w));
+ map(0xf806, 0xf806).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf807, 0xf807).w(this, FUNC(tecmo_state::flipscreen_w));
+ map(0xf808, 0xf808).w(this, FUNC(tecmo_state::bankswitch_w));
+ map(0xf809, 0xf809).nopw(); /* ? */
+ map(0xf80b, 0xf80b).nopw(); /* ? if mapped to watchdog like in the others, causes reset */
+}
+
+void tecmo_state::rygar_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8000, 0x8001).w("ymsnd", FUNC(ym3526_device::write));
+ map(0xc000, 0xc000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(tecmo_state::adpcm_start_w));
+ map(0xd000, 0xd000).w(this, FUNC(tecmo_state::adpcm_end_w));
+ map(0xe000, 0xe000).w(this, FUNC(tecmo_state::adpcm_vol_w));
+ map(0xf000, 0xf000).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+}
+
+void tecmo_state::tecmo_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x2000, 0x207f).ram(); /* Silkworm set #2 has a custom CPU which */
/* writes code to this area */
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w)
- AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w)
- AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w)
- AM_RANGE(0xcc00, 0xcc00) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xc000, 0xc000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(tecmo_state::adpcm_start_w));
+ map(0xc400, 0xc400).w(this, FUNC(tecmo_state::adpcm_end_w));
+ map(0xc800, 0xc800).w(this, FUNC(tecmo_state::adpcm_vol_w));
+ map(0xcc00, 0xcc00).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w));
+}
diff --git a/src/mame/drivers/tecmo16.cpp b/src/mame/drivers/tecmo16.cpp
index 5540216c42a..ce5f1b12354 100644
--- a/src/mame/drivers/tecmo16.cpp
+++ b/src/mame/drivers/tecmo16.cpp
@@ -38,63 +38,66 @@ Notes:
/******************************************************************************/
-ADDRESS_MAP_START(tecmo16_state::fstarfrc_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */
- AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x150010, 0x150011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */
- AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
- AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
- AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
- AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
- AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
- AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
- AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmo16_state::ginkun_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
- AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */
- AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x150010, 0x150011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP /* ??? */
- AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */
- AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
- AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
- AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
- AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w)
- AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
- AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
- AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
- AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmo16_state::sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xfbff) AM_RAM /* Sound RAM */
- AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfc08, 0xfc08) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xfc0c, 0xfc0c) AM_NOP
- AM_RANGE(0xfffe, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void tecmo16_state::fstarfrc_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* Main RAM */
+ map(0x110000, 0x110fff).ram().w(this, FUNC(tecmo16_state::charram_w)).share("charram");
+ map(0x120000, 0x1207ff).ram().w(this, FUNC(tecmo16_state::videoram_w)).share("videoram");
+ map(0x120800, 0x120fff).ram().w(this, FUNC(tecmo16_state::colorram_w)).share("colorram");
+ map(0x121000, 0x1217ff).ram().w(this, FUNC(tecmo16_state::videoram2_w)).share("videoram2");
+ map(0x121800, 0x121fff).ram().w(this, FUNC(tecmo16_state::colorram2_w)).share("colorram2");
+ map(0x122000, 0x127fff).ram(); /* work area */
+ map(0x130000, 0x130fff).ram().share("spriteram");
+ map(0x140000, 0x141fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x150000, 0x150001).w(this, FUNC(tecmo16_state::flipscreen_w));
+ map(0x150011, 0x150011).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x150030, 0x150031).portr("DSW2").nopw(); /* ??? */
+ map(0x150040, 0x150041).portr("DSW1");
+ map(0x150050, 0x150051).portr("P1_P2");
+ map(0x160000, 0x160001).w(this, FUNC(tecmo16_state::scroll_char_x_w));
+ map(0x16000c, 0x16000d).w(this, FUNC(tecmo16_state::scroll_x_w));
+ map(0x160012, 0x160013).w(this, FUNC(tecmo16_state::scroll_y_w));
+ map(0x160018, 0x160019).w(this, FUNC(tecmo16_state::scroll2_x_w));
+ map(0x16001e, 0x16001f).w(this, FUNC(tecmo16_state::scroll2_y_w));
+}
+
+void tecmo16_state::ginkun_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* Main RAM */
+ map(0x110000, 0x110fff).ram().w(this, FUNC(tecmo16_state::charram_w)).share("charram");
+ map(0x120000, 0x120fff).ram().w(this, FUNC(tecmo16_state::videoram_w)).share("videoram");
+ map(0x121000, 0x121fff).ram().w(this, FUNC(tecmo16_state::colorram_w)).share("colorram");
+ map(0x122000, 0x122fff).ram().w(this, FUNC(tecmo16_state::videoram2_w)).share("videoram2");
+ map(0x123000, 0x123fff).ram().w(this, FUNC(tecmo16_state::colorram2_w)).share("colorram2");
+ map(0x124000, 0x124fff).ram(); /* extra RAM for Riot */
+ map(0x130000, 0x130fff).ram().share("spriteram");
+ map(0x140000, 0x141fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x150000, 0x150001).w(this, FUNC(tecmo16_state::flipscreen_w));
+ map(0x150011, 0x150011).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x150020, 0x150021).portr("EXTRA").nopw(); /* ??? */
+ map(0x150030, 0x150031).portr("DSW2").nopw(); /* ??? */
+ map(0x150040, 0x150041).portr("DSW1");
+ map(0x150050, 0x150051).portr("P1_P2");
+ map(0x160000, 0x160001).w(this, FUNC(tecmo16_state::scroll_char_x_w));
+ map(0x160006, 0x160007).w(this, FUNC(tecmo16_state::scroll_char_y_w));
+ map(0x16000c, 0x16000d).w(this, FUNC(tecmo16_state::scroll_x_w));
+ map(0x160012, 0x160013).w(this, FUNC(tecmo16_state::scroll_y_w));
+ map(0x160018, 0x160019).w(this, FUNC(tecmo16_state::scroll2_x_w));
+ map(0x16001e, 0x16001f).w(this, FUNC(tecmo16_state::scroll2_y_w));
+}
+
+void tecmo16_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xfbff).ram(); /* Sound RAM */
+ map(0xfc00, 0xfc00).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfc04, 0xfc05).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfc08, 0xfc08).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xfc0c, 0xfc0c).noprw();
+ map(0xfffe, 0xffff).ram();
+}
/******************************************************************************/
diff --git a/src/mame/drivers/tecmosys.cpp b/src/mame/drivers/tecmosys.cpp
index 834ffd9a7ba..61f3d050621 100644
--- a/src/mame/drivers/tecmosys.cpp
+++ b/src/mame/drivers/tecmosys.cpp
@@ -274,44 +274,45 @@ WRITE16_MEMBER(tecmosys_state::eeprom_w)
}
}
-ADDRESS_MAP_START(tecmosys_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM // work ram
- AM_RANGE(0x210000, 0x210001) AM_READNOP // single byte overflow on stack defined as 0x210000
- AM_RANGE(0x300000, 0x300fff) AM_RAM_WRITE(bg0_tilemap_w) AM_SHARE("bg0tilemap_ram") // bg0 ram
- AM_RANGE(0x301000, 0x3013ff) AM_RAM_WRITE(bg0_tilemap_lineram_w) AM_SHARE("bg0_lineram")// bg0 linescroll? (guess)
+void tecmosys_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram(); // work ram
+ map(0x210000, 0x210001).nopr(); // single byte overflow on stack defined as 0x210000
+ map(0x300000, 0x300fff).ram().w(this, FUNC(tecmosys_state::bg0_tilemap_w)).share("bg0tilemap_ram"); // bg0 ram
+ map(0x301000, 0x3013ff).ram().w(this, FUNC(tecmosys_state::bg0_tilemap_lineram_w)).share("bg0_lineram");// bg0 linescroll? (guess)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(bg1_tilemap_w) AM_SHARE("bg1tilemap_ram") // bg1 ram
- AM_RANGE(0x401000, 0x4013ff) AM_RAM_WRITE(bg1_tilemap_lineram_w) AM_SHARE("bg1_lineram")// bg1 linescroll? (guess)
+ map(0x400000, 0x400fff).ram().w(this, FUNC(tecmosys_state::bg1_tilemap_w)).share("bg1tilemap_ram"); // bg1 ram
+ map(0x401000, 0x4013ff).ram().w(this, FUNC(tecmosys_state::bg1_tilemap_lineram_w)).share("bg1_lineram");// bg1 linescroll? (guess)
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(bg2_tilemap_w) AM_SHARE("bg2tilemap_ram") // bg2 ram
- AM_RANGE(0x501000, 0x5013ff) AM_RAM_WRITE(bg2_tilemap_lineram_w) AM_SHARE("bg2_lineram") // bg2 linescroll? (guess)
+ map(0x500000, 0x500fff).ram().w(this, FUNC(tecmosys_state::bg2_tilemap_w)).share("bg2tilemap_ram"); // bg2 ram
+ map(0x501000, 0x5013ff).ram().w(this, FUNC(tecmosys_state::bg2_tilemap_lineram_w)).share("bg2_lineram"); // bg2 linescroll? (guess)
- AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(fg_tilemap_w) AM_SHARE("fgtilemap_ram") // fix ram
- AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") // obj ram
- AM_RANGE(0x880000, 0x88000b) AM_READ(unk880000_r)
- AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // AM_WRITEONLY // obj pal
+ map(0x700000, 0x703fff).ram().w(this, FUNC(tecmosys_state::fg_tilemap_w)).share("fgtilemap_ram"); // fix ram
+ map(0x800000, 0x80ffff).ram().share("spriteram"); // obj ram
+ map(0x880000, 0x88000b).r(this, FUNC(tecmosys_state::unk880000_r));
+ map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // AM_WRITEONLY // obj pal
//AM_RANGE(0x980000, 0x9807ff) AM_WRITEONLY // bg pal
//AM_RANGE(0x980800, 0x980fff) AM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // fix pal
// the two above are as tested by the game code, I've only rolled them into one below to get colours to show right.
- AM_RANGE(0x980000, 0x980fff) AM_RAM_WRITE(tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("tmap_palette")
-
- AM_RANGE(0x880000, 0x88002f) AM_WRITE(unk880000_w ) AM_SHARE("880000regs") // 10 byte dta@88000c, 880022=watchdog?
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(eeprom_w )
- AM_RANGE(0xa80000, 0xa80005) AM_WRITEONLY AM_SHARE("a80000regs") // a80000-3 scroll? a80004 inverted ? 3 : 0
- AM_RANGE(0xb00000, 0xb00005) AM_WRITEONLY AM_SHARE("b00000regs") // b00000-3 scrool?, b00004 inverted ? 3 : 0
- AM_RANGE(0xb80000, 0xb80001) AM_READWRITE(prot_status_r, prot_status_w)
- AM_RANGE(0xc00000, 0xc00005) AM_WRITEONLY AM_SHARE("c00000regs") // c00000-3 scroll? c00004 inverted ? 13 : 10
- AM_RANGE(0xc80000, 0xc80005) AM_WRITEONLY AM_SHARE("c80000regs") // c80000-3 scrool? c80004 inverted ? 3 : 0
- AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("P1")
- AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("P2")
- AM_RANGE(0xd80000, 0xd80001) AM_READ(eeprom_r)
- AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xe80000, 0xe80001) AM_WRITE(prot_data_w)
- AM_RANGE(0xf00000, 0xf00001) AM_READ8(sound_command_pending_r, 0x00ff)
- AM_RANGE(0xf80000, 0xf80001) AM_READ(prot_data_r)
-ADDRESS_MAP_END
+ map(0x980000, 0x980fff).ram().w(this, FUNC(tecmosys_state::tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w)).share("tmap_palette");
+
+ map(0x880000, 0x88002f).w(this, FUNC(tecmosys_state::unk880000_w)).share("880000regs"); // 10 byte dta@88000c, 880022=watchdog?
+ map(0xa00000, 0xa00001).w(this, FUNC(tecmosys_state::eeprom_w));
+ map(0xa80000, 0xa80005).writeonly().share("a80000regs"); // a80000-3 scroll? a80004 inverted ? 3 : 0
+ map(0xb00000, 0xb00005).writeonly().share("b00000regs"); // b00000-3 scrool?, b00004 inverted ? 3 : 0
+ map(0xb80000, 0xb80001).rw(this, FUNC(tecmosys_state::prot_status_r), FUNC(tecmosys_state::prot_status_w));
+ map(0xc00000, 0xc00005).writeonly().share("c00000regs"); // c00000-3 scroll? c00004 inverted ? 13 : 10
+ map(0xc80000, 0xc80005).writeonly().share("c80000regs"); // c80000-3 scrool? c80004 inverted ? 3 : 0
+ map(0xd00000, 0xd00001).portr("P1");
+ map(0xd00002, 0xd00003).portr("P2");
+ map(0xd80000, 0xd80001).r(this, FUNC(tecmosys_state::eeprom_r));
+ map(0xe00001, 0xe00001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xe80000, 0xe80001).w(this, FUNC(tecmosys_state::prot_data_w));
+ map(0xf00001, 0xf00001).r(this, FUNC(tecmosys_state::sound_command_pending_r));
+ map(0xf80000, 0xf80001).r(this, FUNC(tecmosys_state::prot_data_r));
+}
WRITE8_MEMBER(tecmosys_state::z80_bank_w)
@@ -329,22 +330,24 @@ WRITE8_MEMBER(tecmosys_state::oki_bank_w)
memcpy( region+0x20000, region+0x80000 + upperbank * 0x20000, 0x20000 );
}
-ADDRESS_MAP_START(tecmosys_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tecmosys_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymf", ymf262_device, read, write)
- AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x20, 0x20) AM_WRITE(oki_bank_w)
- AM_RANGE(0x30, 0x30) AM_WRITE(z80_bank_w)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x50, 0x50) AM_WRITE(sound_nmi_disable_w)
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
-ADDRESS_MAP_END
+void tecmosys_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xe000, 0xf7ff).ram();
+}
+
+void tecmosys_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymf", FUNC(ymf262_device::read), FUNC(ymf262_device::write));
+ map(0x10, 0x10).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x20, 0x20).w(this, FUNC(tecmosys_state::oki_bank_w));
+ map(0x30, 0x30).w(this, FUNC(tecmosys_state::z80_bank_w));
+ map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x50, 0x50).w(this, FUNC(tecmosys_state::sound_nmi_disable_w));
+ map(0x60, 0x61).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+}
diff --git a/src/mame/drivers/tecnbras.cpp b/src/mame/drivers/tecnbras.cpp
index 0c6fdc00785..0e33d5298db 100644
--- a/src/mame/drivers/tecnbras.cpp
+++ b/src/mame/drivers/tecnbras.cpp
@@ -58,16 +58,18 @@ private:
char m_digit[14][7];
};
-ADDRESS_MAP_START(tecnbras_state::i80c31_prg)
- AM_RANGE(0x0000, 0x7FFF) AM_ROM
- AM_RANGE(0x8000, 0xFFFF) AM_RAM
-ADDRESS_MAP_END
+void tecnbras_state::i80c31_prg(address_map &map)
+{
+ map(0x0000, 0x7FFF).rom();
+ map(0x8000, 0xFFFF).ram();
+}
#define DMD_OFFSET 24 //This is a guess. We should verify the real hardware behaviour
-ADDRESS_MAP_START(tecnbras_state::i80c31_io)
- AM_RANGE(0x0100+DMD_OFFSET, 0x0145+DMD_OFFSET) AM_WRITE(set_x_position_w)
- AM_RANGE(0x06B8, 0x06BC) AM_WRITE(print_column_w)
-ADDRESS_MAP_END
+void tecnbras_state::i80c31_io(address_map &map)
+{
+ map(0x0100+DMD_OFFSET, 0x0145+DMD_OFFSET).w(this, FUNC(tecnbras_state::set_x_position_w));
+ map(0x06B8, 0x06BC).w(this, FUNC(tecnbras_state::print_column_w));
+}
WRITE8_MEMBER(tecnbras_state::set_x_position_w)
{
diff --git a/src/mame/drivers/tehkanwc.cpp b/src/mame/drivers/tehkanwc.cpp
index 4f88a38b07b..bcc0fe195db 100644
--- a/src/mame/drivers/tehkanwc.cpp
+++ b/src/mame/drivers/tehkanwc.cpp
@@ -229,63 +229,67 @@ WRITE_LINE_MEMBER(tehkanwc_state::adpcm_int)
-ADDRESS_MAP_START(tehkanwc_state::main_mem)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */
- AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(scroll_x_w)
- AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(scroll_y_w)
- AM_RANGE(0xf800, 0xf801) AM_READWRITE(track_0_r, track_0_reset_w) /* track 0 x/y */
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(gridiron_led0_w)
- AM_RANGE(0xf803, 0xf803) AM_READ_PORT("P1BUT")
- AM_RANGE(0xf806, 0xf806) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf810, 0xf811) AM_READWRITE(track_1_r, track_1_reset_w) /* track 1 x/y */
- AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w)
- AM_RANGE(0xf813, 0xf813) AM_READ_PORT("P2BUT")
- AM_RANGE(0xf820, 0xf820) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(sound_command_w) /* answer from the sound CPU */
- AM_RANGE(0xf840, 0xf840) AM_READ_PORT("DSW2") AM_WRITE(sub_cpu_halt_w)
- AM_RANGE(0xf850, 0xf850) AM_READ_PORT("DSW3") AM_WRITENOP /* ?? writes 0x00 or 0xff */
- AM_RANGE(0xf860, 0xf860) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(flipscreen_x_w)
- AM_RANGE(0xf870, 0xf870) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_y_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tehkanwc_state::sub_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */
- AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(scroll_x_w)
- AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(scroll_y_w)
- AM_RANGE(0xf860, 0xf860) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tehkanwc_state::sound_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x8001, 0x8001) AM_WRITE(msm_reset_w)/* MSM51xx reset */
- AM_RANGE(0x8002, 0x8002) AM_WRITENOP /* ?? written in the IRQ handler */
- AM_RANGE(0x8003, 0x8003) AM_WRITENOP /* ?? written in the NMI handler */
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_answer_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tehkanwc_state::sound_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void tehkanwc_state::main_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(tehkanwc_state::videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(tehkanwc_state::colorram_w)).share("colorram");
+ map(0xd800, 0xddff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xde00, 0xdfff).ram().share("share5"); /* unused part of the palette RAM, I think? Gridiron uses it */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(tehkanwc_state::videoram2_w)).share("videoram2");
+ map(0xe800, 0xebff).ram().share("spriteram"); /* sprites */
+ map(0xec00, 0xec01).ram().w(this, FUNC(tehkanwc_state::scroll_x_w));
+ map(0xec02, 0xec02).ram().w(this, FUNC(tehkanwc_state::scroll_y_w));
+ map(0xf800, 0xf801).rw(this, FUNC(tehkanwc_state::track_0_r), FUNC(tehkanwc_state::track_0_reset_w)); /* track 0 x/y */
+ map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tehkanwc_state::gridiron_led0_w));
+ map(0xf803, 0xf803).portr("P1BUT");
+ map(0xf806, 0xf806).portr("SYSTEM");
+ map(0xf810, 0xf811).rw(this, FUNC(tehkanwc_state::track_1_r), FUNC(tehkanwc_state::track_1_reset_w)); /* track 1 x/y */
+ map(0xf812, 0xf812).w(this, FUNC(tehkanwc_state::gridiron_led1_w));
+ map(0xf813, 0xf813).portr("P2BUT");
+ map(0xf820, 0xf820).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(this, FUNC(tehkanwc_state::sound_command_w)); /* answer from the sound CPU */
+ map(0xf840, 0xf840).portr("DSW2").w(this, FUNC(tehkanwc_state::sub_cpu_halt_w));
+ map(0xf850, 0xf850).portr("DSW3").nopw(); /* ?? writes 0x00 or 0xff */
+ map(0xf860, 0xf860).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(tehkanwc_state::flipscreen_x_w));
+ map(0xf870, 0xf870).portr("DSW1").w(this, FUNC(tehkanwc_state::flipscreen_y_w));
+}
+
+void tehkanwc_state::sub_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xc7ff).ram();
+ map(0xc800, 0xcfff).ram().share("share1");
+ map(0xd000, 0xd3ff).ram().w(this, FUNC(tehkanwc_state::videoram_w)).share("videoram");
+ map(0xd400, 0xd7ff).ram().w(this, FUNC(tehkanwc_state::colorram_w)).share("colorram");
+ map(0xd800, 0xddff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xde00, 0xdfff).ram().share("share5"); /* unused part of the palette RAM, I think? Gridiron uses it */
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(tehkanwc_state::videoram2_w)).share("videoram2");
+ map(0xe800, 0xebff).ram().share("spriteram"); /* sprites */
+ map(0xec00, 0xec01).ram().w(this, FUNC(tehkanwc_state::scroll_x_w));
+ map(0xec02, 0xec02).ram().w(this, FUNC(tehkanwc_state::scroll_y_w));
+ map(0xf860, 0xf860).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void tehkanwc_state::sound_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x8001, 0x8001).w(this, FUNC(tehkanwc_state::msm_reset_w));/* MSM51xx reset */
+ map(0x8002, 0x8002).nopw(); /* ?? written in the IRQ handler */
+ map(0x8003, 0x8003).nopw(); /* ?? written in the NMI handler */
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(tehkanwc_state::sound_answer_w));
+}
+
+void tehkanwc_state::sound_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x02, 0x02).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::data_address_w));
+}
diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp
index 1890f45a9ad..ab1861617b9 100644
--- a/src/mame/drivers/tek405x.cpp
+++ b/src/mame/drivers/tek405x.cpp
@@ -169,32 +169,34 @@ WRITE8_MEMBER( tek4051_state::lbs_w )
// ADDRESS_MAP( tek4051_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(tek4051_state::tek4051_mem)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x7fff) AM_RAM // optional RAM
- AM_RANGE(0x8000, 0x877f) AM_ROM AM_REGION(MC6800_TAG, 0)
- AM_RANGE(0x878c, 0x878f) AM_DEVREADWRITE(MC6820_Y_TAG, pia6821_device, read, write)
- AM_RANGE(0x8794, 0x8797) AM_DEVREADWRITE(MC6820_X_TAG, pia6821_device, read, write)
- AM_RANGE(0x8798, 0x879b) AM_DEVREADWRITE(MC6820_TAPE_TAG, pia6821_device, read, write)
- AM_RANGE(0x87a8, 0x87ab) AM_DEVREADWRITE(MC6820_KB_TAG, pia6821_device, read, write)
- AM_RANGE(0x87b0, 0x87b3) AM_DEVREADWRITE(MC6820_GPIB_TAG, pia6821_device, read, write)
- AM_RANGE(0x87c0, 0x87c0) AM_MIRROR(0x03) AM_WRITE(lbs_w)
+void tek4051_state::tek4051_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x7fff).ram(); // optional RAM
+ map(0x8000, 0x877f).rom().region(MC6800_TAG, 0);
+ map(0x878c, 0x878f).rw(MC6820_Y_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8794, 0x8797).rw(MC6820_X_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8798, 0x879b).rw(MC6820_TAPE_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x87a8, 0x87ab).rw(MC6820_KB_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x87b0, 0x87b3).rw(m_gpib_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x87c0, 0x87c0).mirror(0x03).w(this, FUNC(tek4051_state::lbs_w));
// AM_RANGE(0x87c0, 0x87c3) AM_DEVREADWRITE(MC6820_COM_TAG, pia6821_device, read, write)
// AM_RANGE(0x87c4, 0x87c5) AM_MIRROR(0x02) AM_DEVREADWRITE(MC6850_TAG, acia6850_device, read, write)
// AM_RANGE(0x87c8, 0x87cb) XPC2
// AM_RANGE(0x87cc, 0x87cf) XPC3
// AM_RANGE(0x87d0, 0x87d3) XPC4
- AM_RANGE(0x8800, 0xa7ff) AM_ROM AM_REGION(MC6800_TAG, 0x800)
- AM_RANGE(0xa800, 0xffff) AM_ROM AM_REGION(MC6800_TAG, 0x2800)
-ADDRESS_MAP_END
+ map(0x8800, 0xa7ff).rom().region(MC6800_TAG, 0x800);
+ map(0xa800, 0xffff).rom().region(MC6800_TAG, 0x2800);
+}
//-------------------------------------------------
// ADDRESS_MAP( tek4052_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(tek4052_state::tek4052_mem)
-ADDRESS_MAP_END
+void tek4052_state::tek4052_mem(address_map &map)
+{
+}
diff --git a/src/mame/drivers/tek410x.cpp b/src/mame/drivers/tek410x.cpp
index cc9823090c7..25c454502d9 100644
--- a/src/mame/drivers/tek410x.cpp
+++ b/src/mame/drivers/tek410x.cpp
@@ -43,13 +43,15 @@ public:
/* Memory Maps */
-ADDRESS_MAP_START(tek4107a_state::tek4107a_mem)
- AM_RANGE(0x00000, 0xbffff) AM_RAM
- AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION(I80188_TAG, 0)
-ADDRESS_MAP_END
+void tek4107a_state::tek4107a_mem(address_map &map)
+{
+ map(0x00000, 0xbffff).ram();
+ map(0xc0000, 0xfffff).rom().region(I80188_TAG, 0);
+}
-ADDRESS_MAP_START(tek4107a_state::tek4107a_io)
-ADDRESS_MAP_END
+void tek4107a_state::tek4107a_io(address_map &map)
+{
+}
/* Input Ports */
diff --git a/src/mame/drivers/tek440x.cpp b/src/mame/drivers/tek440x.cpp
index ef7518876a7..7d4648eaee9 100644
--- a/src/mame/drivers/tek440x.cpp
+++ b/src/mame/drivers/tek440x.cpp
@@ -147,31 +147,33 @@ uint32_t tek440x_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
*
*************************************/
-ADDRESS_MAP_START(tek440x_state::maincpu_map)
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x740000, 0x747fff) AM_ROM AM_REGION("maincpu", 0)
+void tek440x_state::maincpu_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).ram().share("mainram");
+ map(0x600000, 0x61ffff).ram().share("vram");
+ map(0x740000, 0x747fff).rom().region("maincpu", 0);
// 760000 - optional debug ROM
- AM_RANGE(0x780000, 0x781fff) AM_RAM // map registers
+ map(0x780000, 0x781fff).ram(); // map registers
// 782000-783fff: video address registers
// 784000-785fff: video control registers
- AM_RANGE(0x788000, 0x788001) AM_DEVWRITE8("snsnd", sn76496_device, write, 0xff00)
+ map(0x788000, 0x788000).w("snsnd", FUNC(sn76496_device::write));
// 78a000-78bfff: NS32081 FPU
- AM_RANGE(0x78c000, 0x78c007) AM_DEVREADWRITE8("aica", mos6551_device, read, write, 0xff00)
+ map(0x78c000, 0x78c007).rw("aica", FUNC(mos6551_device::read), FUNC(mos6551_device::write)).umask16(0xff00);
// 7b1000-7b2fff: diagnostic registers
// 7b2000-7b3fff: Centronics printer data
// 7b4000-7b5fff: 68681 DUART
// 7b6000-7b7fff: Mouse
- AM_RANGE(0x7b8000, 0x7b8003) AM_MIRROR(0x100) AM_DEVREADWRITE("timer", am9513_device, read16, write16)
+ map(0x7b8000, 0x7b8003).mirror(0x100).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16));
// 7ba000-7bbfff: MC146818 RTC
// 7bc000-7bdfff: SCSI bus address registers
// 7be000-7bffff: SCSI (NCR 5385)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(tek440x_state::fdccpu_map)
- AM_RANGE(0x0000, 0x1000) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("fdccpu", 0)
-ADDRESS_MAP_END
+void tek440x_state::fdccpu_map(address_map &map)
+{
+ map(0x0000, 0x1000).ram();
+ map(0xf000, 0xffff).rom().region("fdccpu", 0);
+}
/*************************************
*
diff --git a/src/mame/drivers/tekxp33x.cpp b/src/mame/drivers/tekxp33x.cpp
index bdc7c856dee..0ec4ad04210 100644
--- a/src/mame/drivers/tekxp33x.cpp
+++ b/src/mame/drivers/tekxp33x.cpp
@@ -60,13 +60,15 @@ public:
/* Memory Maps */
-ADDRESS_MAP_START(tekxp330_state::cpu_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM
- AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void tekxp330_state::cpu_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram();
+ map(0x1fc00000, 0x1fdfffff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(tekxp330_state::tms_map)
-ADDRESS_MAP_END
+void tekxp330_state::tms_map(address_map &map)
+{
+}
/* Input Ports */
diff --git a/src/mame/drivers/tempest.cpp b/src/mame/drivers/tempest.cpp
index 5426037c77a..f9a759d72a0 100644
--- a/src/mame/drivers/tempest.cpp
+++ b/src/mame/drivers/tempest.cpp
@@ -445,31 +445,32 @@ READ8_MEMBER(tempest_state::rom_ae1f_r)
}
-ADDRESS_MAP_START(tempest_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x080f) AM_WRITEONLY AM_SHARE("colorram")
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("IN0")
- AM_RANGE(0x0d00, 0x0d00) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e00, 0x0e00) AM_READ_PORT("DSW2")
- AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x3000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x4000) AM_WRITE(tempest_coin_w)
- AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("avg", avg_tempest_device, go_w)
- AM_RANGE(0x5000, 0x5000) AM_WRITE(wdclr_w)
- AM_RANGE(0x5800, 0x5800) AM_DEVWRITE("avg", avg_tempest_device, reset_w)
- AM_RANGE(0x6000, 0x603f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
- AM_RANGE(0x6040, 0x6040) AM_DEVREAD("mathbox", mathbox_device, status_r) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
- AM_RANGE(0x6050, 0x6050) AM_DEVREAD("earom", atari_vg_earom_device, read)
- AM_RANGE(0x6060, 0x6060) AM_DEVREAD("mathbox", mathbox_device, lo_r)
- AM_RANGE(0x6070, 0x6070) AM_DEVREAD("mathbox", mathbox_device, hi_r)
- AM_RANGE(0x6080, 0x609f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
- AM_RANGE(0x60c0, 0x60cf) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x60d0, 0x60df) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x60e0, 0x60e0) AM_WRITE(tempest_led_w)
- AM_RANGE(0x9000, 0xdfff) AM_ROM
- AM_RANGE(0xae1f, 0xae1f) AM_READ(rom_ae1f_r)
- AM_RANGE(0xf000, 0xffff) AM_ROM /* for the reset / interrupt vectors */
-ADDRESS_MAP_END
+void tempest_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x080f).writeonly().share("colorram");
+ map(0x0c00, 0x0c00).portr("IN0");
+ map(0x0d00, 0x0d00).portr("DSW1");
+ map(0x0e00, 0x0e00).portr("DSW2");
+ map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000);
+ map(0x3000, 0x3fff).rom();
+ map(0x4000, 0x4000).w(this, FUNC(tempest_state::tempest_coin_w));
+ map(0x4800, 0x4800).w(m_avg, FUNC(avg_tempest_device::go_w));
+ map(0x5000, 0x5000).w(this, FUNC(tempest_state::wdclr_w));
+ map(0x5800, 0x5800).w(m_avg, FUNC(avg_tempest_device::reset_w));
+ map(0x6000, 0x603f).w("earom", FUNC(atari_vg_earom_device::write));
+ map(0x6040, 0x6040).r(m_mathbox, FUNC(mathbox_device::status_r)).w("earom", FUNC(atari_vg_earom_device::ctrl_w));
+ map(0x6050, 0x6050).r("earom", FUNC(atari_vg_earom_device::read));
+ map(0x6060, 0x6060).r(m_mathbox, FUNC(mathbox_device::lo_r));
+ map(0x6070, 0x6070).r(m_mathbox, FUNC(mathbox_device::hi_r));
+ map(0x6080, 0x609f).w(m_mathbox, FUNC(mathbox_device::go_w));
+ map(0x60c0, 0x60cf).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x60d0, 0x60df).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x60e0, 0x60e0).w(this, FUNC(tempest_state::tempest_led_w));
+ map(0x9000, 0xdfff).rom();
+ map(0xae1f, 0xae1f).r(this, FUNC(tempest_state::rom_ae1f_r));
+ map(0xf000, 0xffff).rom(); /* for the reset / interrupt vectors */
+}
/*************************************
diff --git a/src/mame/drivers/terak.cpp b/src/mame/drivers/terak.cpp
index 0917f65e756..edf8710c5f6 100644
--- a/src/mame/drivers/terak.cpp
+++ b/src/mame/drivers/terak.cpp
@@ -69,15 +69,16 @@ WRITE16_MEMBER( terak_state::terak_fdc_data_w )
logerror("terak_fdc_data_w %04x\n",data);
}
-ADDRESS_MAP_START(terak_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xf5ff ) AM_RAM // RAM
+void terak_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xf5ff).ram(); // RAM
// octal
- AM_RANGE( 0173000, 0173177 ) AM_ROM // ROM
- AM_RANGE( 0177000, 0177001 ) AM_READWRITE(terak_fdc_status_r,terak_fdc_command_w)
- AM_RANGE( 0177002, 0177003 ) AM_READWRITE(terak_fdc_data_r,terak_fdc_data_w)
-ADDRESS_MAP_END
+ map(0173000, 0173177).rom(); // ROM
+ map(0177000, 0177001).rw(this, FUNC(terak_state::terak_fdc_status_r), FUNC(terak_state::terak_fdc_command_w));
+ map(0177002, 0177003).rw(this, FUNC(terak_state::terak_fdc_data_r), FUNC(terak_state::terak_fdc_data_w));
+}
/* Input ports */
static INPUT_PORTS_START( terak )
diff --git a/src/mame/drivers/terco.cpp b/src/mame/drivers/terco.cpp
index 74de2532a5a..28a44dd8a42 100644
--- a/src/mame/drivers/terco.cpp
+++ b/src/mame/drivers/terco.cpp
@@ -278,15 +278,16 @@ private:
//required_device<ay3600_device> m_ay3600;
};
-ADDRESS_MAP_START(t4490_state::t4490_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x3000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x3000)
- AM_RANGE(0x9500, 0x95ff) AM_RAM
- AM_RANGE(0x9030, 0x9031) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0x9034, 0x9037) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0x9038, 0x903b) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000)
-ADDRESS_MAP_END
+void t4490_state::t4490_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x3000, 0x3fff).rom().region("maincpu", 0x3000);
+ map(0x9500, 0x95ff).ram();
+ map(0x9030, 0x9031).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x9034, 0x9037).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x9038, 0x903b).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xa000, 0xffff).rom().region("maincpu", 0xa000);
+}
/* Input ports */
static INPUT_PORTS_START( t4490 )
diff --git a/src/mame/drivers/terminals.cpp b/src/mame/drivers/terminals.cpp
index ffc7c743115..7523d5c38a5 100644
--- a/src/mame/drivers/terminals.cpp
+++ b/src/mame/drivers/terminals.cpp
@@ -27,8 +27,9 @@ private:
//required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(terminals_state::mem_map)
-ADDRESS_MAP_END
+void terminals_state::mem_map(address_map &map)
+{
+}
static INPUT_PORTS_START( terminals )
INPUT_PORTS_END
diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp
index 0d3cb8bbadb..091871f6154 100644
--- a/src/mame/drivers/terracre.cpp
+++ b/src/mame/drivers/terracre.cpp
@@ -231,71 +231,77 @@ MACHINE_START_MEMBER(terracre_state,amazon)
save_item(NAME(m_mAmazonProtReg));
}
-ADDRESS_MAP_START(terracre_state::terracre_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x020000, 0x0201ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x020200, 0x021fff) AM_RAM
- AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x023000, 0x023fff) AM_RAM
- AM_RANGE(0x024000, 0x024001) AM_READ_PORT("P1")
- AM_RANGE(0x024002, 0x024003) AM_READ_PORT("P2")
- AM_RANGE(0x024004, 0x024005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x024006, 0x024007) AM_READ_PORT("DSW")
- AM_RANGE(0x026000, 0x026001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */
- AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w)
- AM_RANGE(0x026004, 0x026005) AM_READNOP AM_WRITE(amazon_scrolly_w)
- AM_RANGE(0x02600a, 0x02600b) AM_NOP // video related
- AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w)
- AM_RANGE(0x02600e, 0x02600f) AM_NOP // video related
- AM_RANGE(0x028000, 0x0287ff) AM_RAM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(terracre_state::amazon_base_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x0401ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x040200, 0x040fff) AM_RAM
- AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x044000, 0x044001) AM_READ_PORT("IN0")
- AM_RANGE(0x044002, 0x044003) AM_READ_PORT("IN1")
- AM_RANGE(0x044004, 0x044005) AM_READ_PORT("IN2")
- AM_RANGE(0x044006, 0x044007) AM_READ_PORT("IN3")
- AM_RANGE(0x046000, 0x046001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */
- AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w)
- AM_RANGE(0x046004, 0x046005) AM_READNOP AM_WRITE(amazon_scrolly_w)
- AM_RANGE(0x04600a, 0x04600b) AM_NOP // video related
- AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w)
- AM_RANGE(0x04600e, 0x04600f) AM_NOP // video related
- AM_RANGE(0x050000, 0x050fff) AM_RAM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x070000, 0x070003) AM_NOP // protection (nop for bootlegs)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(terracre_state::amazon_1412m2_map)
- AM_IMPORT_FROM( amazon_base_map )
- AM_RANGE(0x070000, 0x070003) AM_READWRITE(amazon_protection_r, amazon_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(terracre_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(terracre_state::sound_3526_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(terracre_state::sound_2203_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r)
- AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void terracre_state::terracre_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x020000, 0x0201ff).ram().share("spriteram");
+ map(0x020200, 0x021fff).ram();
+ map(0x022000, 0x022fff).w(this, FUNC(terracre_state::amazon_background_w)).share("bg_videoram");
+ map(0x023000, 0x023fff).ram();
+ map(0x024000, 0x024001).portr("P1");
+ map(0x024002, 0x024003).portr("P2");
+ map(0x024004, 0x024005).portr("SYSTEM");
+ map(0x024006, 0x024007).portr("DSW");
+ map(0x026000, 0x026001).w(this, FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */
+ map(0x026002, 0x026003).w(this, FUNC(terracre_state::amazon_scrollx_w));
+ map(0x026004, 0x026005).nopr().w(this, FUNC(terracre_state::amazon_scrolly_w));
+ map(0x02600a, 0x02600b).noprw(); // video related
+ map(0x02600c, 0x02600d).w(this, FUNC(terracre_state::amazon_sound_w));
+ map(0x02600e, 0x02600f).noprw(); // video related
+ map(0x028000, 0x0287ff).ram().w(this, FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram");
+}
+
+void terracre_state::amazon_base_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x0401ff).ram().share("spriteram");
+ map(0x040200, 0x040fff).ram();
+ map(0x042000, 0x042fff).w(this, FUNC(terracre_state::amazon_background_w)).share("bg_videoram");
+ map(0x044000, 0x044001).portr("IN0");
+ map(0x044002, 0x044003).portr("IN1");
+ map(0x044004, 0x044005).portr("IN2");
+ map(0x044006, 0x044007).portr("IN3");
+ map(0x046000, 0x046001).w(this, FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */
+ map(0x046002, 0x046003).w(this, FUNC(terracre_state::amazon_scrollx_w));
+ map(0x046004, 0x046005).nopr().w(this, FUNC(terracre_state::amazon_scrolly_w));
+ map(0x04600a, 0x04600b).noprw(); // video related
+ map(0x04600c, 0x04600d).w(this, FUNC(terracre_state::amazon_sound_w));
+ map(0x04600e, 0x04600f).noprw(); // video related
+ map(0x050000, 0x050fff).ram().w(this, FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram");
+ map(0x070000, 0x070003).noprw(); // protection (nop for bootlegs)
+}
+
+void terracre_state::amazon_1412m2_map(address_map &map)
+{
+ amazon_base_map(map);
+ map(0x070000, 0x070003).rw(this, FUNC(terracre_state::amazon_protection_r), FUNC(terracre_state::amazon_protection_w));
+}
+
+void terracre_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+}
+
+void terracre_state::sound_3526_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write));
+ map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x04, 0x04).r(this, FUNC(terracre_state::soundlatch_clear_r));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void terracre_state::sound_2203_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write));
+ map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x04, 0x04).r(this, FUNC(terracre_state::soundlatch_clear_r));
+ map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( terracre )
PORT_START("P1")
diff --git a/src/mame/drivers/testconsole.cpp b/src/mame/drivers/testconsole.cpp
index 41f65dba165..a7f3b1ce608 100644
--- a/src/mame/drivers/testconsole.cpp
+++ b/src/mame/drivers/testconsole.cpp
@@ -102,27 +102,29 @@ protected:
};
-ADDRESS_MAP_START(whouse_testcons_state::program_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x2003) AM_DEVWRITE("dsp0", dl1416_device, bus_w)
- AM_RANGE(0x2004, 0x2007) AM_DEVWRITE("dsp1", dl1416_device, bus_w)
- AM_RANGE(0x2008, 0x200b) AM_DEVWRITE("dsp2", dl1416_device, bus_w)
- AM_RANGE(0x200c, 0x200f) AM_DEVWRITE("dsp3", dl1416_device, bus_w)
- AM_RANGE(0x2800, 0x28ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w)
- AM_RANGE(0x3000, 0x3fff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("row0")
- AM_RANGE(0x8801, 0x8801) AM_READ_PORT("row1")
- AM_RANGE(0x8802, 0x8802) AM_READ_PORT("row2")
- AM_RANGE(0x8803, 0x8803) AM_READ_PORT("row3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(whouse_testcons_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x80, 0x87) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w)
- AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE("i8255", i8255_device, read, write)
-ADDRESS_MAP_END
+void whouse_testcons_state::program_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x2003).w("dsp0", FUNC(dl1416_device::bus_w));
+ map(0x2004, 0x2007).w("dsp1", FUNC(dl1416_device::bus_w));
+ map(0x2008, 0x200b).w("dsp2", FUNC(dl1416_device::bus_w));
+ map(0x200c, 0x200f).w("dsp3", FUNC(dl1416_device::bus_w));
+ map(0x2800, 0x28ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x3000, 0x3fff).ram();
+ map(0x8800, 0x8800).portr("row0");
+ map(0x8801, 0x8801).portr("row1");
+ map(0x8802, 0x8802).portr("row2");
+ map(0x8803, 0x8803).portr("row3");
+}
+
+void whouse_testcons_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x80, 0x87).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0x88, 0x8b).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
INPUT_PORTS_START(whousetc)
diff --git a/src/mame/drivers/tetrisp2.cpp b/src/mame/drivers/tetrisp2.cpp
index 6f62e39db0b..0a66c1f456f 100644
--- a/src/mame/drivers/tetrisp2.cpp
+++ b/src/mame/drivers/tetrisp2.cpp
@@ -301,35 +301,36 @@ WRITE16_MEMBER(tetrisp2_state::tetrisp2_coincounter_w)
***************************************************************************/
-ADDRESS_MAP_START(tetrisp2_state::tetrisp2_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w)
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground
- AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background
- AM_RANGE(0x408000, 0x409fff) AM_RAM // ???
- AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation
- AM_RANGE(0x650000, 0x651fff) AM_RAM_WRITE(tetrisp2_vram_rot_w) // Rotation (mirror)
- AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound
- AM_RANGE(0x900000, 0x903fff) AM_READ(tetrisp2_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM
- AM_RANGE(0x904000, 0x907fff) AM_READ(tetrisp2_nvram_r) AM_WRITE(tetrisp2_nvram_w) // NVRAM (mirror)
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter
- AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ???
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(tetrisp2_systemregs_w) // system param
- AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") // Inputs
- AM_RANGE(0xbe0004, 0xbe0005) AM_READ(tetrisp2_ip_1_word_r) // Inputs & protection
- AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
-ADDRESS_MAP_END
+void tetrisp2_state::tetrisp2_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM
+ map(0x104000, 0x107fff).ram(); // Spare Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w));
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette
+ map(0x400000, 0x403fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground
+ map(0x404000, 0x407fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background
+ map(0x408000, 0x409fff).ram(); // ???
+ map(0x500000, 0x50ffff).ram(); // Line
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation
+ map(0x650000, 0x651fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)); // Rotation (mirror)
+ map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound
+ map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::tetrisp2_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM
+ map(0x904000, 0x907fff).r(this, FUNC(tetrisp2_state::tetrisp2_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)); // NVRAM (mirror)
+ map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter
+ map(0xb20000, 0xb20001).nopw(); // ???
+ map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).nopw(); // scr_size
+ map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers
+ map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::tetrisp2_systemregs_w)); // system param
+ map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).portr("PLAYERS"); // Inputs
+ map(0xbe0004, 0xbe0005).r(this, FUNC(tetrisp2_state::tetrisp2_ip_1_word_r)); // Inputs & protection
+ map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+}
WRITE16_MEMBER(tetrisp2_state::nndmseal_coincounter_w)
@@ -356,174 +357,179 @@ WRITE16_MEMBER(tetrisp2_state::nndmseal_b20000_w)
// popmessage("%04x",data);
}
-ADDRESS_MAP_START(tetrisp2_state::nndmseal_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w)
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground
- AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background
-
- AM_RANGE(0x408000, 0x409fff) AM_RAM // ???
- AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
-
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation
- AM_RANGE(0x650000, 0x651fff) AM_RAM_WRITE(tetrisp2_vram_rot_w) // Rotation (mirror)
-
- AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) // Sound
-
- AM_RANGE(0x900000, 0x903fff) AM_READWRITE(tetrisp2_nvram_r, tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM
-
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(nndmseal_coincounter_w) // Coin Counter
- AM_RANGE(0xb20000, 0xb20001) AM_WRITE(nndmseal_b20000_w) // ???
-
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size
-
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers
-
- AM_RANGE(0xb80000, 0xb80001) AM_WRITE(nndmseal_sound_bank_w)
-
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w ) // system param
-
- AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("BUTTONS" ) // Inputs
- AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("COINS" ) // ""
- AM_RANGE(0xbe0006, 0xbe0007) AM_READ_PORT("PRINT" ) // ""
- AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW" ) // ""
-
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tetrisp2_state::rockn1_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w)
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground
- AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background
- AM_RANGE(0x408000, 0x409fff) AM_RAM // ???
- AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation
- AM_RANGE(0x900000, 0x903fff) AM_READ(rockn_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM
- AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume
- AM_RANGE(0xa40000, 0xa40003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xa44000, 0xa44001) AM_READWRITE(rockn_adpcmbank_r, rockn_adpcmbank_w) // Sound Bank
- AM_RANGE(0xa48000, 0xa48001) AM_NOP // YMZ280 Reset
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter
- AM_RANGE(0xb20000, 0xb20001) AM_NOP // ???
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // system param
- AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") // Inputs
- AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("SYSTEM") // Inputs
- AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tetrisp2_state::rockn2_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w)
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground
- AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background
- AM_RANGE(0x808000, 0x809fff) AM_RAM // ???
- AM_RANGE(0x900000, 0x903fff) AM_READ(rockn_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM
- AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume
- AM_RANGE(0xa40000, 0xa40003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xa44000, 0xa44001) AM_READWRITE(rockn_adpcmbank_r, rockn2_adpcmbank_w) // Sound Bank
- AM_RANGE(0xa48000, 0xa48001) AM_WRITENOP // YMZ280 Reset
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter
- AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ???
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // system param
- AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") // Inputs
- AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("SYSTEM") // Inputs
- AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tetrisp2_state::rocknms_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w)
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette
-// AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground
- AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background
-// AM_RANGE(0x808000, 0x809fff) AM_RAM // ???
- AM_RANGE(0x900000, 0x903fff) AM_READ(rockn_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM
- AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume
- AM_RANGE(0xa40000, 0xa40003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound
- AM_RANGE(0xa44000, 0xa44001) AM_READWRITE(rockn_adpcmbank_r, rockn_adpcmbank_w) // Sound Bank
- AM_RANGE(0xa48000, 0xa48001) AM_WRITENOP // YMZ280 Reset
- AM_RANGE(0xa00000, 0xa00001) AM_WRITE(rocknms_main2sub_w) // MAIN -> SUB Communication
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter
- AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ???
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // system param
- AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS")
- AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("SYSTEM") // Inputs
- AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tetrisp2_state::rocknms_sub_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram2") // Object RAM
- AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_RAM_WRITE(rocknms_sub_priority_w) AM_SHARE("sub_priority") // Priority
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(rocknms_sub_palette_w) AM_SHARE("sub_paletteram") // Palette
-// AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(rocknms_sub_vram_rot_w) AM_SHARE("sub_vram_rot") // Rotation
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(rocknms_sub_vram_fg_w) AM_SHARE("sub_vram_fg") // Foreground
- AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(rocknms_sub_vram_bg_w) AM_SHARE("sub_vram_bg") // Background
-// AM_RANGE(0x808000, 0x809fff) AM_RAM // ???
- AM_RANGE(0x900000, 0x907fff) AM_RAM // NVRAM
- AM_RANGE(0xa30000, 0xa30001) AM_WRITE(rockn_soundvolume_w) // Sound Volume
- AM_RANGE(0xa40000, 0xa40003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // Sound
- AM_RANGE(0xa44000, 0xa44001) AM_WRITE(rockn_adpcmbank_w) // Sound Bank
- AM_RANGE(0xa48000, 0xa48001) AM_WRITENOP // YMZ280 Reset
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(rocknms_sub2main_w) // MAIN <- SUB Communication
- AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ???
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("sub_scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("sub_scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("sub_rotregs") // Rotation Registers
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rocknms_sub_systemregs_w) // system param
-// AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READWRITE(rocknms_main2sub_r, rocknms_sub2main_w) // MAIN <-> SUB Communication
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
-ADDRESS_MAP_END
+void tetrisp2_state::nndmseal_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM
+ map(0x104000, 0x107fff).ram(); // Spare Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w));
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette
+ map(0x400000, 0x403fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground
+ map(0x404000, 0x407fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background
+
+ map(0x408000, 0x409fff).ram(); // ???
+ map(0x500000, 0x50ffff).ram(); // Line
+
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation
+ map(0x650000, 0x651fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)); // Rotation (mirror)
+
+ map(0x800000, 0x800003).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // Sound
+
+ map(0x900000, 0x903fff).rw(this, FUNC(tetrisp2_state::tetrisp2_nvram_r), FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM
+
+ map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::nndmseal_coincounter_w)); // Coin Counter
+ map(0xb20000, 0xb20001).w(this, FUNC(tetrisp2_state::nndmseal_b20000_w)); // ???
+
+ map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).nopw(); // scr_size
+
+ map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers
+
+ map(0xb80000, 0xb80001).w(this, FUNC(tetrisp2_state::nndmseal_sound_bank_w));
+
+ map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param
+
+ map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).portr("BUTTONS"); // Inputs
+ map(0xbe0004, 0xbe0005).portr("COINS"); // ""
+ map(0xbe0006, 0xbe0007).portr("PRINT"); // ""
+ map(0xbe0008, 0xbe0009).portr("DSW"); // ""
+
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+}
+
+
+void tetrisp2_state::rockn1_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM
+ map(0x104000, 0x107fff).ram(); // Spare Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w));
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette
+ map(0x400000, 0x403fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground
+ map(0x404000, 0x407fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background
+ map(0x408000, 0x409fff).ram(); // ???
+ map(0x500000, 0x50ffff).ram(); // Line
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation
+ map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::rockn_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM
+ map(0xa30000, 0xa30001).rw(this, FUNC(tetrisp2_state::rockn_soundvolume_r), FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume
+ map(0xa40000, 0xa40003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound
+ map(0xa44000, 0xa44001).rw(this, FUNC(tetrisp2_state::rockn_adpcmbank_r), FUNC(tetrisp2_state::rockn_adpcmbank_w)); // Sound Bank
+ map(0xa48000, 0xa48001).noprw(); // YMZ280 Reset
+ map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter
+ map(0xb20000, 0xb20001).noprw(); // ???
+ map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).nopw(); // scr_size
+ map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers
+ map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param
+ map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).portr("PLAYERS"); // Inputs
+ map(0xbe0004, 0xbe0005).portr("SYSTEM"); // Inputs
+ map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+}
+
+
+void tetrisp2_state::rockn2_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM
+ map(0x104000, 0x107fff).ram(); // Spare Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w));
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette
+ map(0x500000, 0x50ffff).ram(); // Line
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation
+ map(0x800000, 0x803fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground
+ map(0x804000, 0x807fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background
+ map(0x808000, 0x809fff).ram(); // ???
+ map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::rockn_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM
+ map(0xa30000, 0xa30001).rw(this, FUNC(tetrisp2_state::rockn_soundvolume_r), FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume
+ map(0xa40000, 0xa40003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound
+ map(0xa44000, 0xa44001).rw(this, FUNC(tetrisp2_state::rockn_adpcmbank_r), FUNC(tetrisp2_state::rockn2_adpcmbank_w)); // Sound Bank
+ map(0xa48000, 0xa48001).nopw(); // YMZ280 Reset
+ map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter
+ map(0xb20000, 0xb20001).nopw(); // ???
+ map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).nopw(); // scr_size
+ map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers
+ map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param
+ map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).portr("PLAYERS"); // Inputs
+ map(0xbe0004, 0xbe0005).portr("SYSTEM"); // Inputs
+ map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+}
+
+
+void tetrisp2_state::rocknms_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM
+ map(0x104000, 0x107fff).ram(); // Spare Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w));
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette
+// map(0x500000, 0x50ffff).ram(); // Line
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation
+ map(0x800000, 0x803fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground
+ map(0x804000, 0x807fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background
+// map(0x808000, 0x809fff).ram(); // ???
+ map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::rockn_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM
+ map(0xa30000, 0xa30001).rw(this, FUNC(tetrisp2_state::rockn_soundvolume_r), FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume
+ map(0xa40000, 0xa40003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound
+ map(0xa44000, 0xa44001).rw(this, FUNC(tetrisp2_state::rockn_adpcmbank_r), FUNC(tetrisp2_state::rockn_adpcmbank_w)); // Sound Bank
+ map(0xa48000, 0xa48001).nopw(); // YMZ280 Reset
+ map(0xa00000, 0xa00001).w(this, FUNC(tetrisp2_state::rocknms_main2sub_w)); // MAIN -> SUB Communication
+ map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter
+ map(0xb20000, 0xb20001).nopw(); // ???
+ map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).nopw(); // scr_size
+ map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers
+ map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param
+ map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).portr("PLAYERS");
+ map(0xbe0004, 0xbe0005).portr("SYSTEM"); // Inputs
+ map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+}
+
+
+void tetrisp2_state::rocknms_sub_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0x100000, 0x103fff).ram().share("spriteram2"); // Object RAM
+ map(0x104000, 0x107fff).ram(); // Spare Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_priority_w)).share("sub_priority"); // Priority
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_palette_w)).share("sub_paletteram"); // Palette
+// map(0x500000, 0x50ffff).ram(); // Line
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_vram_rot_w)).share("sub_vram_rot"); // Rotation
+ map(0x800000, 0x803fff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_vram_fg_w)).share("sub_vram_fg"); // Foreground
+ map(0x804000, 0x807fff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_vram_bg_w)).share("sub_vram_bg"); // Background
+// map(0x808000, 0x809fff).ram(); // ???
+ map(0x900000, 0x907fff).ram(); // NVRAM
+ map(0xa30000, 0xa30001).w(this, FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume
+ map(0xa40000, 0xa40003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound
+ map(0xa44000, 0xa44001).w(this, FUNC(tetrisp2_state::rockn_adpcmbank_w)); // Sound Bank
+ map(0xa48000, 0xa48001).nopw(); // YMZ280 Reset
+ map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::rocknms_sub2main_w)); // MAIN <- SUB Communication
+ map(0xb20000, 0xb20001).nopw(); // ???
+ map(0xb40000, 0xb4000b).writeonly().share("sub_scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("sub_scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).nopw(); // scr_size
+ map(0xb60000, 0xb6002f).writeonly().share("sub_rotregs"); // Rotation Registers
+ map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rocknms_sub_systemregs_w)); // system param
+// map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).rw(this, FUNC(tetrisp2_state::rocknms_main2sub_r), FUNC(tetrisp2_state::rocknms_sub2main_w)); // MAIN <-> SUB Communication
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+}
/***************************************************************************
@@ -644,92 +650,95 @@ WRITE16_MEMBER(stepstag_state::stepstag_button_leds_w)
// Main CPU
-ADDRESS_MAP_START(stepstag_state::stepstag_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM
- AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM
- AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w)
- AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground
- AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background
-// AM_RANGE(0x408000, 0x409fff) AM_RAM // ???
- AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation
- AM_RANGE(0x900000, 0x903fff) AM_READWRITE(rockn_nvram_r, tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM
-// AM_RANGE(0x904000, 0x907fff) AM_READWRITE(rockn_nvram_r, tetrisp2_nvram_w) // NVRAM (mirror)
- AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_WRITE(stepstag_neon_w) // Neon??
- AM_RANGE(0xa10000, 0xa10001) AM_READ_PORT("RHYTHM") AM_WRITE(stepstag_step_leds_w) // I/O
- AM_RANGE(0xa20000, 0xa20001) AM_READNOP AM_WRITE(stepstag_button_leds_w) // I/O
- AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume
- AM_RANGE(0xa42000, 0xa42001) AM_READ( stepstag_pc2main_r )
- AM_RANGE(0xa44000, 0xa44001) AM_READNOP // watchdog
- AM_RANGE(0xa48000, 0xa48001) AM_WRITE(stepstag_main2pc_w) // PC Comm
-// AM_RANGE(0xa4c000, 0xa4c001) AM_WRITENOP // PC?
- AM_RANGE(0xa50000, 0xa50001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_WRITE(stepstag_soundlatch_word_w)
- AM_RANGE(0xa60000, 0xa60003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // Sound
-
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(stepstag_b00000_w) // init xilinx uploading??
- AM_RANGE(0xb20000, 0xb20001) AM_WRITE(stepstag_b20000_w) // 98343 interface board xilinx uploading?
- AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling
- AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling
- AM_RANGE(0xb4003e, 0xb4003f) AM_RAM // scr_size
- AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers
- AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // System param
- AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read
- AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("BUTTONS") // Inputs
- AM_RANGE(0xbe0004, 0xbe0005) AM_READ(stepstag_coins_r) // Inputs & protection
- AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs
- AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog
-ADDRESS_MAP_END
+void stepstag_state::stepstag_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM
+ map(0x108000, 0x10ffff).ram(); // Work RAM
+ map(0x200000, 0x23ffff).rw(this, FUNC(stepstag_state::tetrisp2_priority_r), FUNC(stepstag_state::tetrisp2_priority_w));
+ map(0x300000, 0x31ffff).ram().w(this, FUNC(stepstag_state::tetrisp2_palette_w)).share("paletteram"); // Palette
+ map(0x400000, 0x403fff).ram().w(this, FUNC(stepstag_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground
+ map(0x404000, 0x407fff).ram().w(this, FUNC(stepstag_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background
+// map(0x408000, 0x409fff).ram(); // ???
+ map(0x500000, 0x50ffff).ram(); // Line
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(stepstag_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation
+ map(0x900000, 0x903fff).rw(this, FUNC(stepstag_state::rockn_nvram_r), FUNC(stepstag_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM
+// map(0x904000, 0x907fff).rw(this, FUNC(stepstag_state::rockn_nvram_r), FUNC(stepstag_state::tetrisp2_nvram_w); // NVRAM (mirror)
+ map(0xa00000, 0xa00001).nopr().w(this, FUNC(stepstag_state::stepstag_neon_w)); // Neon??
+ map(0xa10000, 0xa10001).portr("RHYTHM").w(this, FUNC(stepstag_state::stepstag_step_leds_w)); // I/O
+ map(0xa20000, 0xa20001).nopr().w(this, FUNC(stepstag_state::stepstag_button_leds_w)); // I/O
+ map(0xa30000, 0xa30001).rw(this, FUNC(stepstag_state::rockn_soundvolume_r), FUNC(stepstag_state::rockn_soundvolume_w)); // Sound Volume
+ map(0xa42000, 0xa42001).r(this, FUNC(stepstag_state::stepstag_pc2main_r));
+ map(0xa44000, 0xa44001).nopr(); // watchdog
+ map(0xa48000, 0xa48001).w(this, FUNC(stepstag_state::stepstag_main2pc_w)); // PC Comm
+// map(0xa4c000, 0xa4c001).nopw(); // PC?
+ map(0xa50000, 0xa50001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(this, FUNC(stepstag_state::stepstag_soundlatch_word_w));
+ map(0xa60000, 0xa60003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound
+
+ map(0xb00000, 0xb00001).w(this, FUNC(stepstag_state::stepstag_b00000_w)); // init xilinx uploading??
+ map(0xb20000, 0xb20001).w(this, FUNC(stepstag_state::stepstag_b20000_w)); // 98343 interface board xilinx uploading?
+ map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling
+ map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling
+ map(0xb4003e, 0xb4003f).ram(); // scr_size
+ map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers
+ map(0xba0000, 0xba001f).w(this, FUNC(stepstag_state::rockn_systemregs_w)); // System param
+ map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read
+ map(0xbe0002, 0xbe0003).portr("BUTTONS"); // Inputs
+ map(0xbe0004, 0xbe0005).r(this, FUNC(stepstag_state::stepstag_coins_r)); // Inputs & protection
+ map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs
+ map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog
+}
// Sub CPU (sprites)
-ADDRESS_MAP_START(stepstag_state::stepstag_sub_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
+void stepstag_state::stepstag_sub_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
// scrambled palettes?
- AM_RANGE(0x300000, 0x33ffff) AM_RAM/*_WRITE(stepstag_palette_w)*/ AM_SHARE("paletteram1")
+ map(0x300000, 0x33ffff).ram() /* .w(this, FUNC(stepstag_sub_map::stepstag_palette_w))*/ .share("paletteram1");
- AM_RANGE(0x400000, 0x43ffff) AM_RAM/*_WRITE(stepstag_palette_w)*/ AM_SHARE("paletteram2")
+ map(0x400000, 0x43ffff).ram() /* .w(this, FUNC(stepstag_sub_map::stepstag_palette_w))*/ .share("paletteram2");
- AM_RANGE(0x500000, 0x53ffff) AM_RAM/*_WRITE(stepstag_palette_w)*/ AM_SHARE("paletteram3")
+ map(0x500000, 0x53ffff).ram() /* .w(this, FUNC(stepstag_sub_map::stepstag_palette_w))*/ .share("paletteram3");
// rgb brightness?
- AM_RANGE(0x700000, 0x700001) AM_WRITENOP // 0-f
- AM_RANGE(0x700002, 0x700003) AM_WRITENOP // 0-f
- AM_RANGE(0x700004, 0x700005) AM_WRITENOP // 0-f
- AM_RANGE(0x700006, 0x700007) AM_WRITENOP // 0-3f (high bits?)
+ map(0x700000, 0x700001).nopw(); // 0-f
+ map(0x700002, 0x700003).nopw(); // 0-f
+ map(0x700004, 0x700005).nopw(); // 0-f
+ map(0x700006, 0x700007).nopw(); // 0-3f (high bits?)
// left screen sprites
- AM_RANGE(0x800000, 0x803fff) AM_RAM AM_SHARE("spriteram1") // Object RAM
- AM_RANGE(0x804000, 0x87ffff) AM_RAM
- AM_RANGE(0x880000, 0x880001) AM_WRITENOP // cleared after writing this sprite list
-// AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP // cleared at boot
+ map(0x800000, 0x803fff).ram().share("spriteram1"); // Object RAM
+ map(0x804000, 0x87ffff).ram();
+ map(0x880000, 0x880001).nopw(); // cleared after writing this sprite list
+// map(0x8c0000, 0x8c0001).nopw(); // cleared at boot
// middle screen sprites
- AM_RANGE(0x900000, 0x903fff) AM_RAM AM_SHARE("spriteram2") // Object RAM
- AM_RANGE(0x904000, 0x97ffff) AM_RAM
- AM_RANGE(0x980000, 0x980001) AM_WRITENOP // cleared after writing this sprite list
-// AM_RANGE(0x9c0000, 0x9c0001) AM_WRITENOP // cleared at boot
+ map(0x900000, 0x903fff).ram().share("spriteram2"); // Object RAM
+ map(0x904000, 0x97ffff).ram();
+ map(0x980000, 0x980001).nopw(); // cleared after writing this sprite list
+// map(0x9c0000, 0x9c0001).nopw(); // cleared at boot
// right screen sprites
- AM_RANGE(0xa00000, 0xa03fff) AM_RAM AM_SHARE("spriteram3") // Object RAM
- AM_RANGE(0xa04000, 0xa7ffff) AM_RAM
- AM_RANGE(0xa80000, 0xa80001) AM_WRITENOP // cleared after writing this sprite list
-// AM_RANGE(0xac0000, 0xac0001) AM_WRITENOP // cleared at boot
+ map(0xa00000, 0xa03fff).ram().share("spriteram3"); // Object RAM
+ map(0xa04000, 0xa7ffff).ram();
+ map(0xa80000, 0xa80001).nopw(); // cleared after writing this sprite list
+// map(0xac0000, 0xac0001).nopw(); // cleared at boot
- AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE("soundlatch", generic_latch_16_device, read, write)
+ map(0xb00000, 0xb00001).rw(m_soundlatch, FUNC(generic_latch_16_device::read), FUNC(generic_latch_16_device::write));
- AM_RANGE(0xc00000, 0xc00001) AM_READ(unknown_read_0xc00000) AM_WRITENOP //??
- AM_RANGE(0xd00000, 0xd00001) AM_READNOP // watchdog
- AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP //??
- AM_RANGE(0xffff00, 0xffff01) AM_READ(unknown_read_0xffff00)
-ADDRESS_MAP_END
+ map(0xc00000, 0xc00001).r(this, FUNC(stepstag_state::unknown_read_0xc00000)).nopw(); //??
+ map(0xd00000, 0xd00001).nopr(); // watchdog
+ map(0xf00000, 0xf00001).nopw(); //??
+ map(0xffff00, 0xffff01).r(this, FUNC(stepstag_state::unknown_read_0xffff00));
+}
-ADDRESS_MAP_START(stepstag_state::vjdash_map)
- AM_IMPORT_FROM(stepstag_map)
-ADDRESS_MAP_END
+void stepstag_state::vjdash_map(address_map &map)
+{
+ stepstag_map(map);
+}
/***************************************************************************
diff --git a/src/mame/drivers/tg100.cpp b/src/mame/drivers/tg100.cpp
index 12bf5d83162..56818379047 100644
--- a/src/mame/drivers/tg100.cpp
+++ b/src/mame/drivers/tg100.cpp
@@ -52,21 +52,24 @@ public:
};
/* all memory accesses are decoded by the gate array... */
-ADDRESS_MAP_START(tg100_state::tg100_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM /* gate array stuff */
- AM_RANGE(0x00080000, 0x0009ffff) AM_ROM AM_REGION("prgrom", 0x00000)
-ADDRESS_MAP_END
+void tg100_state::tg100_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).ram(); /* gate array stuff */
+ map(0x00080000, 0x0009ffff).rom().region("prgrom", 0x00000);
+}
-ADDRESS_MAP_START(tg100_state::tg100_io_map)
+void tg100_state::tg100_io_map(address_map &map)
+{
// ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( tg100 )
INPUT_PORTS_END
-ADDRESS_MAP_START(tg100_state::ymw258_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
-ADDRESS_MAP_END
+void tg100_state::ymw258_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+}
MACHINE_CONFIG_START(tg100_state::tg100)
/* basic machine hardware */
diff --git a/src/mame/drivers/tgtpanic.cpp b/src/mame/drivers/tgtpanic.cpp
index 6bb7adabf56..6696e755814 100644
--- a/src/mame/drivers/tgtpanic.cpp
+++ b/src/mame/drivers/tgtpanic.cpp
@@ -102,16 +102,18 @@ WRITE8_MEMBER(tgtpanic_state::color_w)
*
*************************************/
-ADDRESS_MAP_START(tgtpanic_state::prg_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tgtpanic_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(color_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
-ADDRESS_MAP_END
+void tgtpanic_state::prg_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).ram().share("ram");
+}
+
+void tgtpanic_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(tgtpanic_state::color_w));
+ map(0x01, 0x01).portr("IN1");
+}
/*************************************
diff --git a/src/mame/drivers/thayers.cpp b/src/mame/drivers/thayers.cpp
index 712e69bfc9e..d1e6018588f 100644
--- a/src/mame/drivers/thayers.cpp
+++ b/src/mame/drivers/thayers.cpp
@@ -617,29 +617,31 @@ READ8_MEMBER(thayers_state::ssi263_register_r)
/* Memory Maps */
-ADDRESS_MAP_START(thayers_state::thayers_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thayers_state::thayers_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_READWRITE(ssi263_register_r, ssi263_register_w)
- AM_RANGE(0x20, 0x20) AM_WRITE(control_w)
- AM_RANGE(0x40, 0x40) AM_READWRITE(irqstate_r, control2_w)
- AM_RANGE(0x80, 0x80) AM_READWRITE(cop_data_r, cop_data_w)
- AM_RANGE(0xa0, 0xa0) AM_WRITE(timer_int_ack_w)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(data_rdy_int_ack_w)
- AM_RANGE(0xf0, 0xf0) AM_READ(laserdsc_data_r)
- AM_RANGE(0xf1, 0xf1) AM_READ(dsw_b_r)
- AM_RANGE(0xf2, 0xf2) AM_READ_PORT("DSWA")
- AM_RANGE(0xf3, 0xf3) AM_WRITE(intrq_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(laserdsc_data_w)
- AM_RANGE(0xf5, 0xf5) AM_WRITE(laserdsc_control_w)
- AM_RANGE(0xf6, 0xf6) AM_WRITE(den1_w)
- AM_RANGE(0xf7, 0xf7) AM_WRITE(den2_w)
-ADDRESS_MAP_END
+void thayers_state::thayers_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xdfff).rom();
+}
+
+void thayers_state::thayers_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x07).rw(this, FUNC(thayers_state::ssi263_register_r), FUNC(thayers_state::ssi263_register_w));
+ map(0x20, 0x20).w(this, FUNC(thayers_state::control_w));
+ map(0x40, 0x40).rw(this, FUNC(thayers_state::irqstate_r), FUNC(thayers_state::control2_w));
+ map(0x80, 0x80).rw(this, FUNC(thayers_state::cop_data_r), FUNC(thayers_state::cop_data_w));
+ map(0xa0, 0xa0).w(this, FUNC(thayers_state::timer_int_ack_w));
+ map(0xc0, 0xc0).w(this, FUNC(thayers_state::data_rdy_int_ack_w));
+ map(0xf0, 0xf0).r(this, FUNC(thayers_state::laserdsc_data_r));
+ map(0xf1, 0xf1).r(this, FUNC(thayers_state::dsw_b_r));
+ map(0xf2, 0xf2).portr("DSWA");
+ map(0xf3, 0xf3).w(this, FUNC(thayers_state::intrq_w));
+ map(0xf4, 0xf4).w(this, FUNC(thayers_state::laserdsc_data_w));
+ map(0xf5, 0xf5).w(this, FUNC(thayers_state::laserdsc_control_w));
+ map(0xf6, 0xf6).w(this, FUNC(thayers_state::den1_w));
+ map(0xf7, 0xf7).w(this, FUNC(thayers_state::den2_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp
index 898f84bc288..28e34a5f84e 100644
--- a/src/mame/drivers/thedealr.cpp
+++ b/src/mame/drivers/thedealr.cpp
@@ -273,33 +273,34 @@ WRITE8_MEMBER(thedealr_state::unk_w)
// popmessage("UNK %02x", data);
}
-ADDRESS_MAP_START(thedealr_state::thedealr)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
+void thedealr_state::thedealr(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("nvram");
- AM_RANGE(0x2000, 0x2000) AM_RAM // w ff at boot (after clearing commram)
+ map(0x2000, 0x2000).ram(); // w ff at boot (after clearing commram)
- AM_RANGE(0x2400, 0x2400) AM_READ(irq_ack_r) // r = irq ack.
- AM_RANGE(0x2400, 0x2400) AM_WRITE(unk_w) // w = ?
+ map(0x2400, 0x2400).r(this, FUNC(thedealr_state::irq_ack_r)); // r = irq ack.
+ map(0x2400, 0x2400).w(this, FUNC(thedealr_state::unk_w)); // w = ?
- AM_RANGE(0x2800, 0x2800) AM_READ_PORT("COINS") AM_WRITENOP // rw
+ map(0x2800, 0x2800).portr("COINS").nopw(); // rw
- AM_RANGE(0x2801, 0x2801) AM_READ_PORT("DSW4")
- AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("DSW3")
+ map(0x2801, 0x2801).portr("DSW4");
+ map(0x2c00, 0x2c00).portr("DSW3");
- AM_RANGE(0x3400, 0x3400) AM_READWRITE(iox_r, iox_w)
- AM_RANGE(0x3401, 0x3401) AM_READ(iox_status_r)
+ map(0x3400, 0x3400).rw(this, FUNC(thedealr_state::iox_r), FUNC(thedealr_state::iox_w));
+ map(0x3401, 0x3401).r(this, FUNC(thedealr_state::iox_status_r));
- AM_RANGE(0x3000, 0x3000) AM_RAM // rw, comm in test mode
- AM_RANGE(0x3001, 0x3001) AM_RAM // rw, ""
+ map(0x3000, 0x3000).ram(); // rw, comm in test mode
+ map(0x3001, 0x3001).ram(); // rw, ""
- AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("commram")
+ map(0x3800, 0x3bff).ram().share("commram");
- AM_RANGE(0x3c00, 0x3c00) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_w)
- AM_RANGE(0x3c01, 0x3c01) AM_DEVWRITE ("aysnd", ay8910_device, data_w)
+ map(0x3c00, 0x3c00).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0x3c01, 0x3c01).w("aysnd", FUNC(ay8910_device::data_w));
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+ map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0xffff).rom().region("maincpu", 0);
+}
/***************************************************************************
@@ -307,25 +308,26 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(thedealr_state::thedealr_sub)
+void thedealr_state::thedealr_sub(address_map &map)
+{
// Work RAM
- AM_RANGE(0x0000, 0x00ff) AM_RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM
+ map(0x0000, 0x00ff).ram();
+ map(0x0100, 0x01ff).ram();
// Sprites
- AM_RANGE(0x0800, 0x27ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0x2800, 0x3fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
- AM_RANGE(0x4000, 0x42ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0x4300, 0x4303) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8)
- AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) // enable / disable background transparency
+ map(0x0800, 0x27ff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0x2800, 0x3fff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+ map(0x4000, 0x42ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0x4300, 0x4303).w(m_seta001, FUNC(seta001_device::spritectrl_w8));
+ map(0x4800, 0x4800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); // enable / disable background transparency
// Comm RAM
- AM_RANGE(0x5800, 0x5bff) AM_RAM AM_SHARE("commram")
+ map(0x5800, 0x5bff).ram().share("commram");
// ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("subcpu", 0x0000)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("subcpu", 0x8000)
-ADDRESS_MAP_END
+ map(0x6000, 0x7fff).rom().region("subcpu", 0x0000);
+ map(0x8000, 0xffff).rom().region("subcpu", 0x8000);
+}
/***************************************************************************
diff --git a/src/mame/drivers/thedeep.cpp b/src/mame/drivers/thedeep.cpp
index bfcb13d7832..92694707734 100644
--- a/src/mame/drivers/thedeep.cpp
+++ b/src/mame/drivers/thedeep.cpp
@@ -148,26 +148,27 @@ WRITE8_MEMBER(thedeep_state::e100_w)
logerror("pc %04x: e100 = %02x\n", m_maincpu->pc(),data);
}
-ADDRESS_MAP_START(thedeep_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // ROM (banked)
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM // RAM (MCU data copied here)
- AM_RANGE(0xe000, 0xe000) AM_READWRITE(protection_r, protection_w) // To MCU
- AM_RANGE(0xe004, 0xe004) AM_READWRITE(e004_r, nmi_w) //
- AM_RANGE(0xe008, 0xe008) AM_READ_PORT("e008") // P1 (Inputs)
- AM_RANGE(0xe009, 0xe009) AM_READ_PORT("e009") // P2
- AM_RANGE(0xe00a, 0xe00a) AM_READ_PORT("e00a") // DSW1
- AM_RANGE(0xe00b, 0xe00b) AM_READ_PORT("e00b") // DSW2
- AM_RANGE(0xe00c, 0xe00c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE(0xe100, 0xe100) AM_WRITE(e100_w) // ?
- AM_RANGE(0xe210, 0xe213) AM_WRITEONLY AM_SHARE("scroll") // Scroll
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Text Layer
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Background Layer
- AM_RANGE(0xf800, 0xf83f) AM_RAM AM_SHARE("scroll2") // Column Scroll
- AM_RANGE(0xf840, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void thedeep_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1"); // ROM (banked)
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xdfff).ram(); // RAM (MCU data copied here)
+ map(0xe000, 0xe000).rw(this, FUNC(thedeep_state::protection_r), FUNC(thedeep_state::protection_w)); // To MCU
+ map(0xe004, 0xe004).rw(this, FUNC(thedeep_state::e004_r), FUNC(thedeep_state::nmi_w)); //
+ map(0xe008, 0xe008).portr("e008"); // P1 (Inputs)
+ map(0xe009, 0xe009).portr("e009"); // P2
+ map(0xe00a, 0xe00a).portr("e00a"); // DSW1
+ map(0xe00b, 0xe00b).portr("e00b"); // DSW2
+ map(0xe00c, 0xe00c).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0xe100, 0xe100).w(this, FUNC(thedeep_state::e100_w)); // ?
+ map(0xe210, 0xe213).writeonly().share("scroll"); // Scroll
+ map(0xe400, 0xe7ff).ram().share("spriteram"); // Sprites
+ map(0xe800, 0xefff).ram().w(this, FUNC(thedeep_state::vram_1_w)).share("vram_1"); // Text Layer
+ map(0xf000, 0xf7ff).ram().w(this, FUNC(thedeep_state::vram_0_w)).share("vram_0"); // Background Layer
+ map(0xf800, 0xf83f).ram().share("scroll2"); // Column Scroll
+ map(0xf840, 0xffff).ram();
+}
/***************************************************************************
@@ -176,12 +177,13 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(thedeep_state::audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ymsnd", ym2203_device, write) //
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void thedeep_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x0801).w("ymsnd", FUNC(ym2203_device::write)); //
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/thepit.cpp b/src/mame/drivers/thepit.cpp
index f014168a1ab..93b9794c79f 100644
--- a/src/mame/drivers/thepit.cpp
+++ b/src/mame/drivers/thepit.cpp
@@ -206,67 +206,72 @@ WRITE_LINE_MEMBER(thepit_state::nmi_mask_w)
}
-ADDRESS_MAP_START(thepit_state::thepit_main_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) AM_WRITENOP // Not hooked up according to the schematics
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thepit_state::desertdan_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) AM_WRITENOP // Not hooked up according to the schematics
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thepit_state::intrepid_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8c00, 0x8fff) AM_READ(intrepid_colorram_mirror_r) AM_WRITE(colorram_w) /* mirror for intrepi2 */
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("attributesram")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9860, 0x98ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r)
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thepit_state::audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3800, 0x3bff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thepit_state::audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8d, 0x8d) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r)
-ADDRESS_MAP_END
+void thepit_state::thepit_main_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).mirror(0x0400).ram().w(this, FUNC(thepit_state::colorram_w)).share("colorram");
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(thepit_state::videoram_w)).share("videoram");
+ map(0x9800, 0x983f).mirror(0x0700).ram().share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x98ff).ram();
+ map(0xa000, 0xa000).r(this, FUNC(thepit_state::input_port_0_r)).nopw(); // Not hooked up according to the schematics
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
+
+void thepit_state::desertdan_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8bff).mirror(0x0400).ram().w(this, FUNC(thepit_state::colorram_w)).share("colorram");
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(thepit_state::videoram_w)).share("videoram");
+ map(0x9800, 0x983f).mirror(0x0700).ram().share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x98ff).ram();
+ map(0xa000, 0xa000).r(this, FUNC(thepit_state::input_port_0_r)).nopw(); // Not hooked up according to the schematics
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
+
+void thepit_state::intrepid_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8c00, 0x8fff).r(this, FUNC(thepit_state::intrepid_colorram_mirror_r)).w(this, FUNC(thepit_state::colorram_w)); /* mirror for intrepi2 */
+ map(0x9000, 0x93ff).ram().w(this, FUNC(thepit_state::videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(thepit_state::colorram_w)).share("colorram");
+ map(0x9800, 0x983f).mirror(0x0700).ram().share("attributesram");
+ map(0x9840, 0x985f).ram().share("spriteram");
+ map(0x9860, 0x98ff).ram();
+ map(0xa000, 0xa000).r(this, FUNC(thepit_state::input_port_0_r));
+ map(0xa800, 0xa800).portr("IN1");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
+
+
+void thepit_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3800, 0x3bff).ram();
+}
+
+
+void thepit_state::audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::clear_w));
+ map(0x8c, 0x8d).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8d, 0x8d).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x8e, 0x8f).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8f, 0x8f).r("ay1", FUNC(ay8910_device::data_r));
+}
static INPUT_PORTS_START( in0_real)
diff --git a/src/mame/drivers/thief.cpp b/src/mame/drivers/thief.cpp
index f8b0a22a279..63f3c55cb99 100644
--- a/src/mame/drivers/thief.cpp
+++ b/src/mame/drivers/thief.cpp
@@ -133,38 +133,41 @@ READ8_MEMBER( thief_state::thief_io_r )
return data;
}
-ADDRESS_MAP_START(thief_state::sharkatt_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM /* 2114 */
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(thief_videoram_r, thief_videoram_w) /* 4116 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thief_state::thief_main_map)
- AM_RANGE(0x0000, 0x0000) AM_WRITE(thief_blit_w)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM /* 2114 */
- AM_RANGE(0xa000, 0xafff) AM_ROM /* NATO Defense diagnostic ROM */
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(thief_videoram_r, thief_videoram_w) /* 4116 */
- AM_RANGE(0xe000, 0xe008) AM_READWRITE(thief_coprocessor_r, thief_coprocessor_w)
- AM_RANGE(0xe010, 0xe02f) AM_ROM
- AM_RANGE(0xe080, 0xe0bf) AM_READWRITE(thief_context_ram_r, thief_context_ram_w)
- AM_RANGE(0xe0c0, 0xe0c0) AM_WRITE(thief_context_bank_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thief_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */
- AM_RANGE(0x10, 0x10) AM_WRITE(thief_video_control_w)
- AM_RANGE(0x30, 0x33) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x41, 0x41) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x42, 0x43) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x43, 0x43) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x50, 0x50) AM_WRITE(thief_color_plane_w)
- AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("tms", tms9927_device, read, write)
- AM_RANGE(0x70, 0x7f) AM_WRITE(thief_color_map_w)
-ADDRESS_MAP_END
+void thief_state::sharkatt_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram(); /* 2114 */
+ map(0xc000, 0xdfff).rw(this, FUNC(thief_state::thief_videoram_r), FUNC(thief_state::thief_videoram_w)); /* 4116 */
+}
+
+void thief_state::thief_main_map(address_map &map)
+{
+ map(0x0000, 0x0000).w(this, FUNC(thief_state::thief_blit_w));
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram(); /* 2114 */
+ map(0xa000, 0xafff).rom(); /* NATO Defense diagnostic ROM */
+ map(0xc000, 0xdfff).rw(this, FUNC(thief_state::thief_videoram_r), FUNC(thief_state::thief_videoram_w)); /* 4116 */
+ map(0xe000, 0xe008).rw(this, FUNC(thief_state::thief_coprocessor_r), FUNC(thief_state::thief_coprocessor_w));
+ map(0xe010, 0xe02f).rom();
+ map(0xe080, 0xe0bf).rw(this, FUNC(thief_state::thief_context_ram_r), FUNC(thief_state::thief_context_ram_w));
+ map(0xe0c0, 0xe0c0).w(this, FUNC(thief_state::thief_context_bank_w));
+}
+
+
+void thief_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); /* watchdog */
+ map(0x10, 0x10).w(this, FUNC(thief_state::thief_video_control_w));
+ map(0x30, 0x33).mirror(0x0c).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x41).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x41, 0x41).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x42, 0x43).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x43, 0x43).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x50, 0x50).w(this, FUNC(thief_state::thief_color_plane_w));
+ map(0x60, 0x6f).rw(m_tms, FUNC(tms9927_device::read), FUNC(tms9927_device::write));
+ map(0x70, 0x7f).w(this, FUNC(thief_state::thief_color_map_w));
+}
/**********************************************************/
diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp
index 3f7e8e5fc9e..9f973423720 100644
--- a/src/mame/drivers/thomson.cpp
+++ b/src/mame/drivers/thomson.cpp
@@ -309,23 +309,24 @@ They can run the same software and accept the same devices and extensions.
/* ------------ address maps ------------ */
-ADDRESS_MAP_START(thomson_state::to7)
-
- AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK ) AM_WRITE(to7_cartridge_w ) /* 4 * 16 KB */
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK ) AM_WRITE(to7_vram_w )
- AM_RANGE ( 0x6000, 0x7fff ) AM_RAMBANK ( THOM_BASE_BANK ) /* 1 * 8 KB */
- AM_RANGE ( 0x8000, 0xdfff ) AM_RAMBANK ( THOM_RAM_BANK ) /* 16 or 24 KB (for extension) */
- AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK )
- AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write)
- AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7d0, 0xe7df ) AM_READWRITE(to7_floppy_r, to7_floppy_w )
- AM_RANGE ( 0xe7e0, 0xe7e3 ) AM_DEVREADWRITE( "to7_io:pia_2", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
- AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w )
- AM_RANGE ( 0xe800, 0xffff ) AM_ROM /* system bios */
+void thomson_state::to7(address_map &map)
+{
+
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to7_cartridge_w)); /* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to7_vram_w));
+ map(0x6000, 0x7fff).bankrw(THOM_BASE_BANK); /* 1 * 8 KB */
+ map(0x8000, 0xdfff).bankrw(THOM_RAM_BANK); /* 16 or 24 KB (for extension) */
+ map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK);
+ map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
+ map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7d0, 0xe7df).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
+ map(0xe7e0, 0xe7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe800, 0xffff).rom(); /* system bios */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x247ff: 18 KB floppy / network ROM controllers */
@@ -336,7 +337,7 @@ ADDRESS_MAP_START(thomson_state::to7)
0x6000 - 0x9fff: 16 KB extended RAM
0xa000 - 0xbfff: 8 KB more extended RAM
*/
-ADDRESS_MAP_END
+}
@@ -820,24 +821,25 @@ In arabic mode, Ctrl+E / Ctrl+X to start / stop typing in-line latin.
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::to770)
-
- AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(to7_cartridge_w ) /* 4 * 16 KB */
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x6000, 0x9fff ) AM_RAMBANK ( THOM_BASE_BANK ) /* 16 KB */
- AM_RANGE ( 0xa000, 0xdfff ) AM_RAMBANK ( THOM_RAM_BANK ) /* 6 * 16 KB */
- AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK )
- AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write)
- AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7d0, 0xe7df ) AM_READWRITE(to7_floppy_r, to7_floppy_w )
- AM_RANGE ( 0xe7e0, 0xe7e3 ) AM_DEVREADWRITE( "to7_io:pia_2", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to770_gatearray_r, to770_gatearray_w )
- AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
- AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w )
- AM_RANGE ( 0xe800, 0xffff ) AM_ROM /* system bios */
+void thomson_state::to770(address_map &map)
+{
+
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to7_cartridge_w)); /* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x6000, 0x9fff).bankrw(THOM_BASE_BANK); /* 16 KB */
+ map(0xa000, 0xdfff).bankrw(THOM_RAM_BANK); /* 6 * 16 KB */
+ map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK);
+ map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
+ map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7d0, 0xe7df).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
+ map(0xe7e0, 0xe7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to770_gatearray_r), FUNC(thomson_state::to770_gatearray_w));
+ map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe800, 0xffff).rom(); /* system bios */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x247ff: 18 KB floppy / network ROM controllers */
@@ -848,7 +850,7 @@ ADDRESS_MAP_START(thomson_state::to770)
0x08000 - 0x1ffff: 6 * 16 KB banked extended RAM
*/
-ADDRESS_MAP_END
+}
@@ -1021,22 +1023,23 @@ Differences include:
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::mo5)
-
- AM_RANGE ( 0x0000, 0x1fff ) AM_READ_BANK ( THOM_VRAM_BANK ) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x2000, 0x9fff ) AM_RAMBANK ( THOM_BASE_BANK )
- AM_RANGE ( 0xa000, 0xa7bf ) AM_ROMBANK ( THOM_FLOP_BANK )
- AM_RANGE ( 0xa7c0, 0xa7c3 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xa7cb, 0xa7cb ) AM_WRITE(mo5_ext_w )
- AM_RANGE ( 0xa7cc, 0xa7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xa7d0, 0xa7df ) AM_READWRITE(to7_floppy_r, to7_floppy_w )
- AM_RANGE ( 0xa7e0, 0xa7e3 ) AM_DEVREADWRITE( "to7_io:pia_2", pia6821_device, read_alt, write_alt )
- AM_RANGE ( 0xa7e4, 0xa7e7 ) AM_READWRITE(mo5_gatearray_r, mo5_gatearray_w )
- AM_RANGE ( 0xa7e8, 0xa7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
- AM_RANGE ( 0xa7f2, 0xa7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xa7fe, 0xa7ff ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write)
- AM_RANGE ( 0xb000, 0xefff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(mo5_cartridge_w )
- AM_RANGE ( 0xf000, 0xffff ) AM_ROM /* system bios */
+void thomson_state::mo5(address_map &map)
+{
+
+ map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x2000, 0x9fff).bankrw(THOM_BASE_BANK);
+ map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK);
+ map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7cb, 0xa7cb).w(this, FUNC(thomson_state::mo5_ext_w));
+ map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7d0, 0xa7df).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
+ map(0xa7e0, 0xa7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7e4, 0xa7e7).rw(this, FUNC(thomson_state::mo5_gatearray_r), FUNC(thomson_state::mo5_gatearray_w));
+ map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xa7f2, 0xa7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write));
+ map(0xb000, 0xefff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::mo5_cartridge_w));
+ map(0xf000, 0xffff).rom(); /* system bios */
/* 0x10000 - 0x1ffff: 16 KB integrated BASIC / 64 KB external cartridge */
/* 0x20000 - 0x247ff: 18 KB floppy / network ROM controllers */
@@ -1047,7 +1050,7 @@ ADDRESS_MAP_START(thomson_state::mo5)
0x0c000 - 0x1bfff: 4 * 16 KB bank extended RAM
*/
-ADDRESS_MAP_END
+}
@@ -1244,26 +1247,27 @@ It was replaced quickly with the improved TO9+.
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::to9)
-
- AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK ) AM_WRITE(to9_cartridge_w )/* 4 * 16 KB */
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK ) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x6000, 0x9fff ) AM_RAMBANK ( THOM_BASE_BANK ) /* 16 KB */
- AM_RANGE ( 0xa000, 0xdfff ) AM_RAMBANK ( THOM_RAM_BANK ) /* 10 * 16 KB */
- AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK )
- AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write)
- AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7d0, 0xe7d9 ) AM_READWRITE(to9_floppy_r, to9_floppy_w )
- AM_RANGE ( 0xe7da, 0xe7dd ) AM_READWRITE(to9_vreg_r, to9_vreg_w )
- AM_RANGE ( 0xe7de, 0xe7df ) AM_READWRITE(to9_kbd_r, to9_kbd_w )
- AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to9_gatearray_r, to9_gatearray_w )
- AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
+void thomson_state::to9(address_map &map)
+{
+
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to9_cartridge_w));/* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x6000, 0x9fff).bankrw(THOM_BASE_BANK); /* 16 KB */
+ map(0xa000, 0xdfff).bankrw(THOM_RAM_BANK); /* 10 * 16 KB */
+ map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK);
+ map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
+ map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7d0, 0xe7d9).rw(this, FUNC(thomson_state::to9_floppy_r), FUNC(thomson_state::to9_floppy_w));
+ map(0xe7da, 0xe7dd).rw(this, FUNC(thomson_state::to9_vreg_r), FUNC(thomson_state::to9_vreg_w));
+ map(0xe7de, 0xe7df).rw(this, FUNC(thomson_state::to9_kbd_r), FUNC(thomson_state::to9_kbd_w));
+ map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to9_gatearray_r), FUNC(thomson_state::to9_gatearray_w));
+ map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
/* AM_RANGE ( 0xe7f0, 0xe7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */
- AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w )
- AM_RANGE ( 0xe800, 0xffff ) AM_ROM /* system bios */
+ map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe800, 0xffff).rom(); /* system bios */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x3ffff: 128 KB internal software ROM */
@@ -1275,7 +1279,7 @@ ADDRESS_MAP_START(thomson_state::to9)
0x08000 - 0x2ffff: 10 * 16 KB banked extended RAM
*/
-ADDRESS_MAP_END
+}
@@ -1573,27 +1577,28 @@ The TO8D is simply a TO8 with an integrated 3"1/2 floppy drive.
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::to8)
-
- AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(to8_cartridge_w ) /* 4 * 16 KB */
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w )
- AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w )
- AM_RANGE ( 0xa000, 0xbfff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w )
- AM_RANGE ( 0xc000, 0xdfff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w )
- AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) /* 2 * 2 KB */
- AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write)
- AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7d0, 0xe7d9 ) AM_READWRITE(to8_floppy_r, to8_floppy_w )
- AM_RANGE ( 0xe7da, 0xe7dd ) AM_READWRITE(to8_vreg_r, to8_vreg_w )
- AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to8_gatearray_r, to8_gatearray_w )
- AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
+void thomson_state::to8(address_map &map)
+{
+
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w));
+ map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w));
+ map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w));
+ map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); /* 2 * 2 KB */
+ map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
+ map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7d0, 0xe7d9).rw(this, FUNC(thomson_state::to8_floppy_r), FUNC(thomson_state::to8_floppy_w));
+ map(0xe7da, 0xe7dd).rw(this, FUNC(thomson_state::to8_vreg_r), FUNC(thomson_state::to8_vreg_w));
+ map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to8_gatearray_r), FUNC(thomson_state::to8_gatearray_w));
+ map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
/* AM_RANGE ( 0xe7f0, 0xe7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */
- AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w )
- AM_RANGE ( 0xe800, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK ) /* 2 * 6 KB */
+ map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe800, 0xffff).bankr(TO8_BIOS_BANK); /* 2 * 6 KB */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x2ffff: 64 KB internal software ROM */
@@ -1602,7 +1607,7 @@ ADDRESS_MAP_START(thomson_state::to8)
/* RAM mapping: 512 KB flat (including video) */
-ADDRESS_MAP_END
+}
/* ------------ ROMS ------------ */
@@ -1786,28 +1791,29 @@ The differences with the TO8 are:
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::to9p)
-
- AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(to8_cartridge_w ) /* 4 * 16 KB */
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w )
- AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w )
- AM_RANGE ( 0xa000, 0xbfff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w )
- AM_RANGE ( 0xc000, 0xdfff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w )
- AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) /* 2 * 2 KB */
- AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write)
- AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7d0, 0xe7d9 ) AM_READWRITE(to8_floppy_r, to8_floppy_w )
- AM_RANGE ( 0xe7da, 0xe7dd ) AM_READWRITE(to8_vreg_r, to8_vreg_w )
- AM_RANGE ( 0xe7de, 0xe7df ) AM_READWRITE(to9_kbd_r, to9_kbd_w )
- AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to8_gatearray_r, to8_gatearray_w )
- AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
+void thomson_state::to9p(address_map &map)
+{
+
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w));
+ map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w));
+ map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w));
+ map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); /* 2 * 2 KB */
+ map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
+ map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7d0, 0xe7d9).rw(this, FUNC(thomson_state::to8_floppy_r), FUNC(thomson_state::to8_floppy_w));
+ map(0xe7da, 0xe7dd).rw(this, FUNC(thomson_state::to8_vreg_r), FUNC(thomson_state::to8_vreg_w));
+ map(0xe7de, 0xe7df).rw(this, FUNC(thomson_state::to9_kbd_r), FUNC(thomson_state::to9_kbd_w));
+ map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to8_gatearray_r), FUNC(thomson_state::to8_gatearray_w));
+ map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
/* AM_RANGE ( 0xe7f0, 0xe7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */
- AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w )
- AM_RANGE ( 0xe800, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK ) /* 2 * 6 KB */
+ map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe800, 0xffff).bankr(TO8_BIOS_BANK); /* 2 * 6 KB */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x2ffff: 64 KB internal software ROM */
@@ -1816,7 +1822,7 @@ ADDRESS_MAP_START(thomson_state::to9p)
/* RAM mapping: 512 KB flat (including video) */
-ADDRESS_MAP_END
+}
/* ------------ ROMS ------------ */
@@ -1966,29 +1972,28 @@ a PC XT.
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::mo6)
-
- AM_RANGE ( 0x0000, 0x1fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x2000, 0x3fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w )
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w )
- AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w )
- AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w )
- AM_RANGE ( 0xa000, 0xa7bf ) AM_ROMBANK ( THOM_FLOP_BANK )
- AM_RANGE ( 0xa7c0, 0xa7c3 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xa7cb, 0xa7cb ) AM_WRITE(mo6_ext_w )
- AM_RANGE ( 0xa7cc, 0xa7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xa7d0, 0xa7d9 ) AM_READWRITE(to7_floppy_r, to7_floppy_w )
- AM_RANGE ( 0xa7da, 0xa7dd ) AM_READWRITE(mo6_vreg_r, mo6_vreg_w )
- AM_RANGE ( 0xa7e4, 0xa7e7 ) AM_READWRITE(mo6_gatearray_r, mo6_gatearray_w )
- AM_RANGE ( 0xa7e8, 0xa7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
-/* AM_RANGE ( 0xa7f0, 0xa7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w )*/
- AM_RANGE ( 0xa7f2, 0xa7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xa7fe, 0xa7ff ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write)
- AM_RANGE ( 0xb000, 0xbfff ) AM_ROMBANK ( MO6_CART_LO )
- AM_WRITE ( mo6_cartridge_w )
- AM_RANGE ( 0xc000, 0xefff ) AM_ROMBANK ( MO6_CART_HI )
- AM_WRITE ( mo6_cartridge_w )
- AM_RANGE ( 0xf000, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK )
+void thomson_state::mo6(address_map &map)
+{
+
+ map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w));
+ map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w));
+ map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w));
+ map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK);
+ map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7cb, 0xa7cb).w(this, FUNC(thomson_state::mo6_ext_w));
+ map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7d0, 0xa7d9).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
+ map(0xa7da, 0xa7dd).rw(this, FUNC(thomson_state::mo6_vreg_r), FUNC(thomson_state::mo6_vreg_w));
+ map(0xa7e4, 0xa7e7).rw(this, FUNC(thomson_state::mo6_gatearray_r), FUNC(thomson_state::mo6_gatearray_w));
+ map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+/* map(0xa7f0, 0xa7f7).rw(this, FUNC(thomson_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/
+ map(0xa7f2, 0xa7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write));
+ map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(this, FUNC(thomson_state::mo6_cartridge_w));
+ map(0xc000, 0xefff).bankr(MO6_CART_HI).w(this, FUNC(thomson_state::mo6_cartridge_w));
+ map(0xf000, 0xffff).bankr(TO8_BIOS_BANK);
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x2ffff: 64 KB BIOS ROM */
@@ -1996,7 +2001,7 @@ ADDRESS_MAP_START(thomson_state::mo6)
/* RAM mapping: 128 KB flat (including video) */
-ADDRESS_MAP_END
+}
/* ------------ ROMS ------------ */
@@ -2321,33 +2326,32 @@ Here are the differences between the MO6 and MO5NR:
**********************************************************************/
-ADDRESS_MAP_START(thomson_state::mo5nr)
-
- AM_RANGE ( 0x0000, 0x1fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w )
- AM_RANGE ( 0x2000, 0x3fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w )
- AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w )
- AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w )
- AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w )
- AM_RANGE ( 0xa000, 0xa7bf ) AM_ROMBANK ( THOM_FLOP_BANK )
- AM_RANGE ( 0xa7c0, 0xa7c3 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xa7cb, 0xa7cb ) AM_WRITE(mo6_ext_w )
- AM_RANGE ( 0xa7cc, 0xa7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xa7d0, 0xa7d9 ) AM_READWRITE(mo5nr_net_r, mo5nr_net_w )
- AM_RANGE ( 0xa7da, 0xa7dd ) AM_READWRITE(mo6_vreg_r, mo6_vreg_w )
- AM_RANGE ( 0xa7e1, 0xa7e1 ) AM_DEVREAD("cent_data_in", input_buffer_device, read)
- AM_RANGE ( 0xa7e1, 0xa7e1 ) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE ( 0xa7e3, 0xa7e3 ) AM_READWRITE(mo5nr_prn_r, mo5nr_prn_w )
- AM_RANGE ( 0xa7e4, 0xa7e7 ) AM_READWRITE(mo6_gatearray_r, mo6_gatearray_w )
- AM_RANGE ( 0xa7e8, 0xa7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write )
-/* AM_RANGE ( 0xa7f0, 0xa7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */
- AM_RANGE ( 0xa7f2, 0xa7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w )
- AM_RANGE ( 0xa7f8, 0xa7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt)
- AM_RANGE ( 0xa7fe, 0xa7ff ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write)
- AM_RANGE ( 0xb000, 0xbfff ) AM_ROMBANK ( MO6_CART_LO )
- AM_WRITE ( mo6_cartridge_w )
- AM_RANGE ( 0xc000, 0xefff ) AM_ROMBANK ( MO6_CART_HI )
- AM_WRITE ( mo6_cartridge_w )
- AM_RANGE ( 0xf000, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK )
+void thomson_state::mo5nr(address_map &map)
+{
+
+ map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w));
+ map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w));
+ map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w));
+ map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w));
+ map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK);
+ map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7cb, 0xa7cb).w(this, FUNC(thomson_state::mo6_ext_w));
+ map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7d0, 0xa7d9).rw(this, FUNC(thomson_state::mo5nr_net_r), FUNC(thomson_state::mo5nr_net_w));
+ map(0xa7da, 0xa7dd).rw(this, FUNC(thomson_state::mo6_vreg_r), FUNC(thomson_state::mo6_vreg_w));
+ map(0xa7e1, 0xa7e1).r("cent_data_in", FUNC(input_buffer_device::read));
+ map(0xa7e1, 0xa7e1).w(m_cent_data_out, FUNC(output_latch_device::write));
+ map(0xa7e3, 0xa7e3).rw(this, FUNC(thomson_state::mo5nr_prn_r), FUNC(thomson_state::mo5nr_prn_w));
+ map(0xa7e4, 0xa7e7).rw(this, FUNC(thomson_state::mo6_gatearray_r), FUNC(thomson_state::mo6_gatearray_w));
+ map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+/* map(0xa7f0, 0xa7f7).rw(this, FUNC(thomson_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/
+ map(0xa7f2, 0xa7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xa7f8, 0xa7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write));
+ map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(this, FUNC(thomson_state::mo6_cartridge_w));
+ map(0xc000, 0xefff).bankr(MO6_CART_HI).w(this, FUNC(thomson_state::mo6_cartridge_w));
+ map(0xf000, 0xffff).bankr(TO8_BIOS_BANK);
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
/* 0x20000 - 0x2ffff: 64 KB BIOS ROM */
@@ -2355,7 +2359,7 @@ ADDRESS_MAP_START(thomson_state::mo5nr)
/* RAM mapping: 128 KB flat (including video) */
-ADDRESS_MAP_END
+}
/* ------------ ROMS ------------ */
diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp
index 9e62bd48cdb..eb02555da59 100644
--- a/src/mame/drivers/thoop2.cpp
+++ b/src/mame/drivers/thoop2.cpp
@@ -116,35 +116,41 @@ READ8_MEMBER(thoop2_state::shareram_r)
}
-ADDRESS_MAP_START(thoop2_state::mcu_hostmem_map)
- AM_RANGE(0x8000, 0xffff) AM_READWRITE(shareram_r, shareram_w) // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thoop2_state::thoop2_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x10800c, 0x10800d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM")
- ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff) /* OKI6295 bankswitch */
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 data register */
- AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
- AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thoop2_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void thoop2_state::mcu_hostmem_map(address_map &map)
+{
+ map(0x8000, 0xffff).rw(this, FUNC(thoop2_state::shareram_r), FUNC(thoop2_state::shareram_w)); // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM
+}
+
+
+void thoop2_state::thoop2_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x100000, 0x101fff).ram().w(this, FUNC(thoop2_state::vram_w)).share("videoram"); /* Video RAM */
+ map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */
+ map(0x10800c, 0x10800d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* INT 6 ACK/Watchdog timer */
+ map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW2");
+ map(0x700002, 0x700003).portr("DSW1");
+ map(0x700004, 0x700005).portr("P1");
+ map(0x700006, 0x700007).portr("P2");
+ map(0x700008, 0x700009).portr("SYSTEM");
+ map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x70000d, 0x70000d).w(this, FUNC(thoop2_state::OKIM6295_bankswitch_w)); /* OKI6295 bankswitch */
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 data register */
+ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */
+ map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */
+}
+
+
+void thoop2_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( thoop2 )
diff --git a/src/mame/drivers/thunderj.cpp b/src/mame/drivers/thunderj.cpp
index 3765a7a5b41..feb189cff05 100644
--- a/src/mame/drivers/thunderj.cpp
+++ b/src/mame/drivers/thunderj.cpp
@@ -110,30 +110,31 @@ WRITE16_MEMBER(thunderj_state::latch_w)
*
*************************************/
-ADDRESS_MAP_START(thunderj_state::main_map)
- AM_RANGE(0x000000, 0x09ffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
- AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
- AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r)
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff)
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x360010, 0x360011) AM_WRITE(latch_w)
- AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w)
- AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff)
- AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write)
- AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2")
- AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield")
- AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext")
- AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM AM_SHARE("vad:mob")
- AM_RANGE(0x3f8000, 0x3f8eff) AM_RAM_DEVWRITE("vad", atari_vad_device, alpha_w) AM_SHARE("vad:alpha")
- AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_SHARE("vad:eof")
- AM_RANGE(0x3f8f80, 0x3f8fff) AM_RAM AM_SHARE("vad:mob:slip")
- AM_RANGE(0x3f9000, 0x3fffff) AM_RAM
-ADDRESS_MAP_END
+void thunderj_state::main_map(address_map &map)
+{
+ map(0x000000, 0x09ffff).rom();
+ map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x160000, 0x16ffff).ram().share("share1");
+ map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x26000f).portr("260000");
+ map(0x260010, 0x260011).portr("260010");
+ map(0x260012, 0x260013).r(this, FUNC(thunderj_state::special_port2_r));
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r));
+ map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x360010, 0x360011).w(this, FUNC(thunderj_state::latch_w));
+ map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w));
+ map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w));
+ map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write));
+ map(0x3f0000, 0x3f1fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2");
+ map(0x3f2000, 0x3f3fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield");
+ map(0x3f4000, 0x3f5fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext");
+ map(0x3f6000, 0x3f7fff).ram().share("vad:mob");
+ map(0x3f8000, 0x3f8eff).ram().w(m_vad, FUNC(atari_vad_device::alpha_w)).share("vad:alpha");
+ map(0x3f8f00, 0x3f8f7f).ram().share("vad:eof");
+ map(0x3f8f80, 0x3f8fff).ram().share("vad:mob:slip");
+ map(0x3f9000, 0x3fffff).ram();
+}
@@ -143,19 +144,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(thunderj_state::extra_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x07ffff) AM_ROM
- AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
- AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
- AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r)
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x360010, 0x360011) AM_WRITE(latch_w)
- AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w)
- AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff)
-ADDRESS_MAP_END
+void thunderj_state::extra_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x07ffff).rom();
+ map(0x160000, 0x16ffff).ram().share("share1");
+ map(0x260000, 0x26000f).portr("260000");
+ map(0x260010, 0x260011).portr("260010");
+ map(0x260012, 0x260013).r(this, FUNC(thunderj_state::special_port2_r));
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r));
+ map(0x360000, 0x360001).w(this, FUNC(thunderj_state::video_int_ack_w));
+ map(0x360010, 0x360011).w(this, FUNC(thunderj_state::latch_w));
+ map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w));
+ map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w));
+}
diff --git a/src/mame/drivers/thunderx.cpp b/src/mame/drivers/thunderx.cpp
index 4b352ffea0c..741243b114c 100644
--- a/src/mame/drivers/thunderx.cpp
+++ b/src/mame/drivers/thunderx.cpp
@@ -402,63 +402,70 @@ WRITE8_MEMBER(thunderx_state::k052109_051960_w)
/***************************************************************************/
-ADDRESS_MAP_START(thunderx_state::scontra_map)
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) /* video RAM + sprite RAM */
-
- AM_RANGE(0x1f80, 0x1f80) AM_WRITE(scontra_bankswitch_w) /* bankswitch control + coin counters */
- AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sh_irqtrigger_w) /* cause interrupt on audio CPU */
- AM_RANGE(0x1f8c, 0x1f8c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P1")
- AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P2")
- AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("DSW3")
- AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW1")
- AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("DSW2")
- AM_RANGE(0x1f98, 0x1f98) AM_READWRITE(_1f98_r, scontra_1f98_w)
-
- AM_RANGE(0x4000, 0x57ff) AM_RAM
- AM_RANGE(0x5800, 0x5fff) AM_DEVICE("bank5800", address_map_bank_device, amap8) /* palette + work RAM + PMC */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thunderx_state::thunderx_map)
- AM_IMPORT_FROM(scontra_map)
- AM_RANGE(0x1f80, 0x1f80) AM_WRITE(thunderx_videobank_w)
- AM_RANGE(0x1f98, 0x1f98) AM_READWRITE(_1f98_r, thunderx_1f98_w) /* registers */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thunderx_state::gbusters_map)
- AM_IMPORT_FROM(scontra_map)
- AM_RANGE(0x1f80, 0x1f80) AM_WRITE(gbusters_videobank_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thunderx_state::scontra_bank5800_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x0800, 0x0fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thunderx_state::thunderx_bank5800_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x0800, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_READWRITE(pmc_r, pmc_w) AM_SHARE("pmcram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(thunderx_state::thunderx_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(thunderx_state::scontra_sound_map)
- AM_IMPORT_FROM(thunderx_sound_map)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(k007232_bankswitch_w)
-ADDRESS_MAP_END
+void thunderx_state::scontra_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rw(this, FUNC(thunderx_state::k052109_051960_r), FUNC(thunderx_state::k052109_051960_w)); /* video RAM + sprite RAM */
+
+ map(0x1f80, 0x1f80).w(this, FUNC(thunderx_state::scontra_bankswitch_w)); /* bankswitch control + coin counters */
+ map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1f88, 0x1f88).w(this, FUNC(thunderx_state::sh_irqtrigger_w)); /* cause interrupt on audio CPU */
+ map(0x1f8c, 0x1f8c).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1f90, 0x1f90).portr("SYSTEM");
+ map(0x1f91, 0x1f91).portr("P1");
+ map(0x1f92, 0x1f92).portr("P2");
+ map(0x1f93, 0x1f93).portr("DSW3");
+ map(0x1f94, 0x1f94).portr("DSW1");
+ map(0x1f95, 0x1f95).portr("DSW2");
+ map(0x1f98, 0x1f98).rw(this, FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::scontra_1f98_w));
+
+ map(0x4000, 0x57ff).ram();
+ map(0x5800, 0x5fff).m(m_bank5800, FUNC(address_map_bank_device::amap8)); /* palette + work RAM + PMC */
+ map(0x6000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom();
+}
+
+void thunderx_state::thunderx_map(address_map &map)
+{
+ scontra_map(map);
+ map(0x1f80, 0x1f80).w(this, FUNC(thunderx_state::thunderx_videobank_w));
+ map(0x1f98, 0x1f98).rw(this, FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::thunderx_1f98_w)); /* registers */
+}
+
+void thunderx_state::gbusters_map(address_map &map)
+{
+ scontra_map(map);
+ map(0x1f80, 0x1f80).w(this, FUNC(thunderx_state::gbusters_videobank_w));
+}
+
+
+void thunderx_state::scontra_bank5800_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x0800, 0x0fff).ram();
+}
+
+void thunderx_state::thunderx_bank5800_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x0800, 0x0fff).ram();
+ map(0x1000, 0x17ff).rw(this, FUNC(thunderx_state::pmc_r), FUNC(thunderx_state::pmc_w)).share("pmcram");
+}
+
+
+void thunderx_state::thunderx_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+}
+
+void thunderx_state::scontra_sound_map(address_map &map)
+{
+ thunderx_sound_map(map);
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xf000, 0xf000).w(this, FUNC(thunderx_state::k007232_bankswitch_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/ti630.cpp b/src/mame/drivers/ti630.cpp
index 92d4a45e337..282f29a49e9 100644
--- a/src/mame/drivers/ti630.cpp
+++ b/src/mame/drivers/ti630.cpp
@@ -67,20 +67,22 @@ private:
#define LOG_IO_PORTS 0
-ADDRESS_MAP_START(ti630_state::i80c31_prg)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void ti630_state::i80c31_prg(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
DRIVER_INIT_MEMBER( ti630_state, ti630 )
{
}
-ADDRESS_MAP_START(ti630_state::i80c31_io)
- AM_RANGE(0x0000,0x0000) /*AM_MIRROR(?)*/ AM_DEVWRITE("hd44780", hd44780_device, control_write)
- AM_RANGE(0x1000,0x1000) /*AM_MIRROR(?)*/ AM_DEVWRITE("hd44780", hd44780_device, data_write)
- AM_RANGE(0x2000,0x2000) /*AM_MIRROR(?)*/ AM_DEVREAD("hd44780", hd44780_device, control_read)
- AM_RANGE(0x8000,0xffff) AM_RAM /*TODO: verify the ammont of RAM and the correct address range to which it is mapped. This is just a first reasonable guess that apparently yields good results in the emulation */
-ADDRESS_MAP_END
+void ti630_state::i80c31_io(address_map &map)
+{
+ map(0x0000, 0x0000) /*.mirror(?)*/ .w("hd44780", FUNC(hd44780_device::control_write));
+ map(0x1000, 0x1000) /*.mirror(?)*/ .w("hd44780", FUNC(hd44780_device::data_write));
+ map(0x2000, 0x2000) /*.mirror(?)*/ .r("hd44780", FUNC(hd44780_device::control_read));
+ map(0x8000, 0xffff).ram(); /*TODO: verify the ammont of RAM and the correct address range to which it is mapped. This is just a first reasonable guess that apparently yields good results in the emulation */
+}
void ti630_state::machine_start()
{
diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp
index ddecc778809..49c52b93a52 100644
--- a/src/mame/drivers/ti74.cpp
+++ b/src/mame/drivers/ti74.cpp
@@ -266,13 +266,14 @@ WRITE8_MEMBER(ti74_state::bankswitch_w)
// d3: N/C
}
-ADDRESS_MAP_START(ti74_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("sysram.ic3")
+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");
//AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot
- AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("sysbank")
-ADDRESS_MAP_END
+ map(0xc000, 0xdfff).bankr("sysbank");
+}
diff --git a/src/mame/drivers/ti85.cpp b/src/mame/drivers/ti85.cpp
index 299dacc005d..b6cf54c7cc0 100644
--- a/src/mame/drivers/ti85.cpp
+++ b/src/mame/drivers/ti85.cpp
@@ -212,159 +212,173 @@ TI-86 ports:
/* port i/o functions */
-ADDRESS_MAP_START(ti85_state::ti81_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti85_port_0000_r, ti85_port_0000_w )
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti85_port_0002_r, ti85_port_0002_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w )
- AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti85_port_0005_r, ti85_port_0005_w )
- AM_RANGE(0x0007, 0x0007) AM_WRITE(ti81_port_0007_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti85_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti85_port_0000_r, ti85_port_0000_w )
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti85_port_0002_r, ti85_port_0002_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w )
- AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti85_port_0005_r, ti85_port_0005_w )
- AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti85_port_0006_r, ti85_port_0006_w )
- AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti8x_serial_r, ti8x_serial_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti82_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti8x_serial_r, ti8x_serial_w )
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti82_port_0002_r, ti82_port_0002_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w )
- AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write)
- AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti81v2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti82_port_0002_r, ti82_port_0002_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w )
- AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write)
- AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti83_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti83_port_0000_r, ti83_port_0000_w ) //TODO
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti83_port_0002_r, ti83_port_0002_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti83_port_0003_r, ti83_port_0003_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w )
- AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write)
- AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write)
- AM_RANGE(0x0014, 0x0014) AM_READ_PORT( "BATTERY" )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti83p_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti8x_plus_serial_r, ti8x_plus_serial_w)
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READ(ti83p_port_0002_r)
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti83_port_0003_r, ti83p_int_mask_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti83p_port_0004_r, ti83p_port_0004_w )
- AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti86_port_0005_r, ti83p_port_0006_w )
- AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti86_port_0006_r, ti83p_port_0007_w )
- AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write)
- AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write)
+void ti85_state::ti81_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti85_port_0000_r), FUNC(ti85_state::ti85_port_0000_w));
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti85_port_0002_r), FUNC(ti85_state::ti85_port_0002_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w));
+ map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti85_port_0005_r), FUNC(ti85_state::ti85_port_0005_w));
+ map(0x0007, 0x0007).w(this, FUNC(ti85_state::ti81_port_0007_w));
+}
+
+void ti85_state::ti85_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti85_port_0000_r), FUNC(ti85_state::ti85_port_0000_w));
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti85_port_0002_r), FUNC(ti85_state::ti85_port_0002_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w));
+ map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti85_port_0005_r), FUNC(ti85_state::ti85_port_0005_w));
+ map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti85_port_0006_r), FUNC(ti85_state::ti85_port_0006_w));
+ map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti8x_serial_r), FUNC(ti85_state::ti8x_serial_w));
+}
+
+void ti85_state::ti82_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti8x_serial_r), FUNC(ti85_state::ti8x_serial_w));
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti82_port_0002_r), FUNC(ti85_state::ti82_port_0002_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w));
+ map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write));
+ map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write));
+}
+
+void ti85_state::ti81v2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti82_port_0002_r), FUNC(ti85_state::ti82_port_0002_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w));
+ map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write));
+ map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write));
+}
+
+void ti85_state::ti83_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti83_port_0000_r), FUNC(ti85_state::ti83_port_0000_w)); //TODO
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti83_port_0002_r), FUNC(ti85_state::ti83_port_0002_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti83_port_0003_r), FUNC(ti85_state::ti83_port_0003_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w));
+ map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write));
+ map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write));
+ map(0x0014, 0x0014).portr("BATTERY");
+}
+
+void ti85_state::ti83p_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti8x_plus_serial_r), FUNC(ti85_state::ti8x_plus_serial_w));
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).r(this, FUNC(ti85_state::ti83p_port_0002_r));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti83_port_0003_r), FUNC(ti85_state::ti83p_int_mask_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti83p_port_0004_r), FUNC(ti85_state::ti83p_port_0004_w));
+ map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti86_port_0005_r), FUNC(ti85_state::ti83p_port_0006_w));
+ map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti86_port_0006_r), FUNC(ti85_state::ti83p_port_0007_w));
+ map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write));
+ map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write));
// AM_RANGE(0x0014, 0x0014) AM_WRITE(ti83p_port_0014_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti83pse_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti8x_plus_serial_r, ti8x_plus_serial_w)
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti83pse_port_0002_r, ti83pse_int_ack_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti83_port_0003_r, ti83p_int_mask_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti83p_port_0004_r, ti83pse_port_0004_w )
- AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti83pse_port_0005_r, ti83pse_port_0005_w )
- AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti86_port_0005_r, ti83pse_port_0006_w )
- AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti86_port_0006_r, ti83pse_port_0007_w )
- AM_RANGE(0x0009, 0x0009) AM_READ(ti83pse_port_0009_r)
- AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write)
- AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write)
- AM_RANGE(0x0012, 0x0012) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write)
- AM_RANGE(0x0013, 0x0013) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write)
- AM_RANGE(0x0014, 0x0014) AM_WRITE(ti83p_port_0014_w )
- AM_RANGE(0x0015, 0x0015) AM_READ(ti83pse_port_0015_r)
- AM_RANGE(0x0020, 0x0020) AM_READWRITE(ti83pse_port_0020_r, ti83pse_port_0020_w )
- AM_RANGE(0x0021, 0x0021) AM_READWRITE(ti83pse_port_0021_r, ti83pse_port_0021_w )
-
- AM_RANGE(0x0030, 0x0030) AM_READWRITE(ti83pse_ctimer1_setup_r, ti83pse_ctimer1_setup_w )
- AM_RANGE(0x0031, 0x0031) AM_READWRITE(ti83pse_ctimer1_loop_r, ti83pse_ctimer1_loop_w )
- AM_RANGE(0x0032, 0x0032) AM_READWRITE(ti83pse_ctimer1_count_r, ti83pse_ctimer1_count_w )
- AM_RANGE(0x0033, 0x0033) AM_READWRITE(ti83pse_ctimer2_setup_r, ti83pse_ctimer2_setup_w )
- AM_RANGE(0x0034, 0x0034) AM_READWRITE(ti83pse_ctimer2_loop_r, ti83pse_ctimer2_loop_w )
- AM_RANGE(0x0035, 0x0035) AM_READWRITE(ti83pse_ctimer2_count_r, ti83pse_ctimer2_count_w )
- AM_RANGE(0x0036, 0x0036) AM_READWRITE(ti83pse_ctimer3_setup_r, ti83pse_ctimer3_setup_w )
- AM_RANGE(0x0037, 0x0037) AM_READWRITE(ti83pse_ctimer3_loop_r, ti83pse_ctimer3_loop_w )
- AM_RANGE(0x0038, 0x0038) AM_READWRITE(ti83pse_ctimer3_count_r, ti83pse_ctimer3_count_w )
-
- AM_RANGE(0x0055, 0x0055) AM_READ(ti84pse_port_0055_r)
- AM_RANGE(0x0056, 0x0056) AM_READ(ti84pse_port_0056_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti86_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti85_port_0000_r, ti85_port_0000_w )
- AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w )
- AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti85_port_0002_r, ti85_port_0002_w )
- AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w )
- AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0006_r, ti85_port_0006_w )
- AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti86_port_0005_r, ti86_port_0005_w )
- AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti86_port_0006_r, ti86_port_0006_w )
- AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti8x_serial_r, ti8x_serial_w )
-ADDRESS_MAP_END
+}
+
+void ti85_state::ti83pse_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti8x_plus_serial_r), FUNC(ti85_state::ti8x_plus_serial_w));
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti83pse_port_0002_r), FUNC(ti85_state::ti83pse_int_ack_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti83_port_0003_r), FUNC(ti85_state::ti83p_int_mask_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti83p_port_0004_r), FUNC(ti85_state::ti83pse_port_0004_w));
+ map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti83pse_port_0005_r), FUNC(ti85_state::ti83pse_port_0005_w));
+ map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti86_port_0005_r), FUNC(ti85_state::ti83pse_port_0006_w));
+ map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti86_port_0006_r), FUNC(ti85_state::ti83pse_port_0007_w));
+ map(0x0009, 0x0009).r(this, FUNC(ti85_state::ti83pse_port_0009_r));
+ map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write));
+ map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write));
+ map(0x0012, 0x0012).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write));
+ map(0x0013, 0x0013).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write));
+ map(0x0014, 0x0014).w(this, FUNC(ti85_state::ti83p_port_0014_w));
+ map(0x0015, 0x0015).r(this, FUNC(ti85_state::ti83pse_port_0015_r));
+ map(0x0020, 0x0020).rw(this, FUNC(ti85_state::ti83pse_port_0020_r), FUNC(ti85_state::ti83pse_port_0020_w));
+ map(0x0021, 0x0021).rw(this, FUNC(ti85_state::ti83pse_port_0021_r), FUNC(ti85_state::ti83pse_port_0021_w));
+
+ map(0x0030, 0x0030).rw(this, FUNC(ti85_state::ti83pse_ctimer1_setup_r), FUNC(ti85_state::ti83pse_ctimer1_setup_w));
+ map(0x0031, 0x0031).rw(this, FUNC(ti85_state::ti83pse_ctimer1_loop_r), FUNC(ti85_state::ti83pse_ctimer1_loop_w));
+ map(0x0032, 0x0032).rw(this, FUNC(ti85_state::ti83pse_ctimer1_count_r), FUNC(ti85_state::ti83pse_ctimer1_count_w));
+ map(0x0033, 0x0033).rw(this, FUNC(ti85_state::ti83pse_ctimer2_setup_r), FUNC(ti85_state::ti83pse_ctimer2_setup_w));
+ map(0x0034, 0x0034).rw(this, FUNC(ti85_state::ti83pse_ctimer2_loop_r), FUNC(ti85_state::ti83pse_ctimer2_loop_w));
+ map(0x0035, 0x0035).rw(this, FUNC(ti85_state::ti83pse_ctimer2_count_r), FUNC(ti85_state::ti83pse_ctimer2_count_w));
+ map(0x0036, 0x0036).rw(this, FUNC(ti85_state::ti83pse_ctimer3_setup_r), FUNC(ti85_state::ti83pse_ctimer3_setup_w));
+ map(0x0037, 0x0037).rw(this, FUNC(ti85_state::ti83pse_ctimer3_loop_r), FUNC(ti85_state::ti83pse_ctimer3_loop_w));
+ map(0x0038, 0x0038).rw(this, FUNC(ti85_state::ti83pse_ctimer3_count_r), FUNC(ti85_state::ti83pse_ctimer3_count_w));
+
+ map(0x0055, 0x0055).r(this, FUNC(ti85_state::ti84pse_port_0055_r));
+ map(0x0056, 0x0056).r(this, FUNC(ti85_state::ti84pse_port_0056_r));
+}
+
+void ti85_state::ti86_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti85_port_0000_r), FUNC(ti85_state::ti85_port_0000_w));
+ map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w));
+ map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti85_port_0002_r), FUNC(ti85_state::ti85_port_0002_w));
+ map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w));
+ map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0006_r), FUNC(ti85_state::ti85_port_0006_w));
+ map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti86_port_0005_r), FUNC(ti85_state::ti86_port_0005_w));
+ map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti86_port_0006_r), FUNC(ti85_state::ti86_port_0006_w));
+ map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti8x_serial_r), FUNC(ti85_state::ti8x_serial_w));
+}
/* memory w/r functions */
-ADDRESS_MAP_START(ti85_state::ti81_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti86_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti83pse_banked_mem)
- AM_RANGE(0x0000, 0x1fffff) AM_DEVREADWRITE("flash", intelfsh8_device, read, write)
- AM_RANGE(0x200000, 0x21BFFF) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ti85_state::ti84p_banked_mem)
- AM_RANGE(0x0000, 0xfffff) AM_DEVREADWRITE("flash", intelfsh8_device, read, write)
- AM_RANGE(0x200000, 0x21BFFF) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti83p_banked_mem)
- AM_RANGE(0x00000, 0x7ffff) AM_DEVREADWRITE("flash", intelfsh8_device, read, write)
- AM_RANGE(0x100000, 0x107fff) AM_RAM AM_SHARE("nvram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ti85_state::ti83p_asic_mem)
- AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("membank1", address_map_bank_device, read8, write8)
- AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("membank2", address_map_bank_device, write8) AM_READ(ti83p_membank2_r)
- AM_RANGE(0x8000, 0xbfff) AM_DEVWRITE("membank3", address_map_bank_device, write8) AM_READ(ti83p_membank3_r)
- AM_RANGE(0xc000, 0xffff) AM_DEVREADWRITE("membank4", address_map_bank_device, read8, write8)
-ADDRESS_MAP_END
+void ti85_state::ti81_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xffff).ram().share("nvram");
+}
+
+void ti85_state::ti86_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void ti85_state::ti83pse_banked_mem(address_map &map)
+{
+ map(0x0000, 0x1fffff).rw(m_flash, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x200000, 0x21BFFF).ram().share("nvram");
+}
+
+
+void ti85_state::ti84p_banked_mem(address_map &map)
+{
+ map(0x0000, 0xfffff).rw(m_flash, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x200000, 0x21BFFF).ram().share("nvram");
+}
+
+void ti85_state::ti83p_banked_mem(address_map &map)
+{
+ map(0x00000, 0x7ffff).rw(m_flash, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x100000, 0x107fff).ram().share("nvram");
+}
+
+void ti85_state::ti83p_asic_mem(address_map &map)
+{
+ 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(this, FUNC(ti85_state::ti83p_membank2_r));
+ map(0x8000, 0xbfff).w(m_membank3, FUNC(address_map_bank_device::write8)).r(this, 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 */
diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp
index 07840cfe46d..a98327eb8ff 100644
--- a/src/mame/drivers/ti89.cpp
+++ b/src/mame/drivers/ti89.cpp
@@ -196,51 +196,56 @@ TIMER_DEVICE_CALLBACK_MEMBER(ti68k_state::ti68k_timer_callback)
}
-ADDRESS_MAP_START(ti68k_state::ti92_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x200000, 0x5fffff) AM_UNMAP // ROM
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ti68k_state::ti89_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x200000, 0x3fffff) AM_READWRITE(flash_r, flash_w)
- AM_RANGE(0x400000, 0x5fffff) AM_NOP
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w)
- AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ti68k_state::ti92p_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x200000, 0x3fffff) AM_NOP
- AM_RANGE(0x400000, 0x5fffff) AM_READWRITE(flash_r, flash_w)
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w)
- AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ti68k_state::v200_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x200000, 0x5fffff) AM_READWRITE(flash_r, flash_w)
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w)
- AM_RANGE(0x700000, 0x70ffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(ti68k_state::ti89t_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_MIRROR(0x200000) AM_SHARE("nvram")
- AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w)
- AM_RANGE(0x700000, 0x70ffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w)
- AM_RANGE(0x800000, 0xbfffff) AM_READWRITE(flash_r, flash_w)
- AM_RANGE(0xc00000, 0xffffff) AM_NOP
-ADDRESS_MAP_END
+void ti68k_state::ti92_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().share("nvram");
+ map(0x200000, 0x5fffff).unmaprw(); // ROM
+ map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w));
+}
+
+
+void ti68k_state::ti89_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().share("nvram");
+ map(0x200000, 0x3fffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w));
+ map(0x400000, 0x5fffff).noprw();
+ map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w));
+ map(0x700000, 0x7fffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w));
+}
+
+
+void ti68k_state::ti92p_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().share("nvram");
+ map(0x200000, 0x3fffff).noprw();
+ map(0x400000, 0x5fffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w));
+ map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w));
+ map(0x700000, 0x7fffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w));
+}
+
+
+void ti68k_state::v200_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().share("nvram");
+ map(0x200000, 0x5fffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w));
+ map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w));
+ map(0x700000, 0x70ffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w));
+}
+
+
+void ti68k_state::ti89t_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).ram().mirror(0x200000).share("nvram");
+ map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w));
+ map(0x700000, 0x70ffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w));
+ map(0x800000, 0xbfffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w));
+ map(0xc00000, 0xffffff).noprw();
+}
INPUT_CHANGED_MEMBER(ti68k_state::ti68k_on_key)
diff --git a/src/mame/drivers/ti990_10.cpp b/src/mame/drivers/ti990_10.cpp
index 6be8da03640..9cef52ba5f4 100644
--- a/src/mame/drivers/ti990_10.cpp
+++ b/src/mame/drivers/ti990_10.cpp
@@ -277,34 +277,36 @@ WRITE_LINE_MEMBER(ti990_10_state::key_interrupt)
Memory map - see description above
*/
-ADDRESS_MAP_START(ti990_10_state::ti990_10_memmap)
+void ti990_10_state::ti990_10_memmap(address_map &map)
+{
- AM_RANGE(0x000000, 0x0fffff) AM_RAM /* let's say we have 1MB of RAM */
- AM_RANGE(0x100000, 0x1ff7ff) AM_NOP /* free TILINE space */
- AM_RANGE(0x1ff800, 0x1ff81f) AM_DEVREADWRITE("hdc", ti990_hdc_device, read, write) /* disk controller TPCS */
- AM_RANGE(0x1ff820, 0x1ff87f) AM_NOP /* free TPCS */
- AM_RANGE(0x1ff880, 0x1ff89f) AM_DEVREADWRITE("tpc", tap_990_device, read, write) /* tape controller TPCS */
- AM_RANGE(0x1ff8a0, 0x1ffbff) AM_NOP /* free TPCS */
- AM_RANGE(0x1ffc00, 0x1fffff) AM_ROM /* LOAD ROM */
+ map(0x000000, 0x0fffff).ram(); /* let's say we have 1MB of RAM */
+ map(0x100000, 0x1ff7ff).noprw(); /* free TILINE space */
+ map(0x1ff800, 0x1ff81f).rw("hdc", FUNC(ti990_hdc_device::read), FUNC(ti990_hdc_device::write)); /* disk controller TPCS */
+ map(0x1ff820, 0x1ff87f).noprw(); /* free TPCS */
+ map(0x1ff880, 0x1ff89f).rw("tpc", FUNC(tap_990_device::read), FUNC(tap_990_device::write)); /* tape controller TPCS */
+ map(0x1ff8a0, 0x1ffbff).noprw(); /* free TPCS */
+ map(0x1ffc00, 0x1fffff).rom(); /* LOAD ROM */
-ADDRESS_MAP_END
+}
/*
CRU map
*/
-ADDRESS_MAP_START(ti990_10_state::ti990_10_io)
- AM_RANGE(0x10, 0x11) AM_DEVREAD("vdt911", vdt911_device, cru_r)
- AM_RANGE(0x80, 0x8f) AM_DEVWRITE("vdt911", vdt911_device, cru_w)
- AM_RANGE(0x1fa, 0x1fb) AM_NOP // AM_READ(ti990_10_mapper_cru_r)
- AM_RANGE(0x1fc, 0x1fd) AM_NOP // AM_READ(ti990_10_eir_cru_r)
- AM_RANGE(0x1fe, 0x1ff) AM_READ(ti990_panel_read)
- AM_RANGE(0xfd0, 0xfdf) AM_NOP // AM_WRITE(ti990_10_mapper_cru_w)
- AM_RANGE(0xfe0, 0xfef) AM_NOP // AM_WRITE(ti990_10_eir_cru_w)
- AM_RANGE(0xff0, 0xfff) AM_WRITE(ti990_panel_write)
-
-ADDRESS_MAP_END
+void ti990_10_state::ti990_10_io(address_map &map)
+{
+ map(0x10, 0x11).r("vdt911", FUNC(vdt911_device::cru_r));
+ map(0x80, 0x8f).w("vdt911", FUNC(vdt911_device::cru_w));
+ map(0x1fa, 0x1fb).noprw(); // AM_READ(ti990_10_mapper_cru_r)
+ map(0x1fc, 0x1fd).noprw(); // AM_READ(ti990_10_eir_cru_r)
+ map(0x1fe, 0x1ff).r(this, FUNC(ti990_10_state::ti990_panel_read));
+ map(0xfd0, 0xfdf).noprw(); // AM_WRITE(ti990_10_mapper_cru_w)
+ map(0xfe0, 0xfef).noprw(); // AM_WRITE(ti990_10_eir_cru_w)
+ map(0xff0, 0xfff).w(this, FUNC(ti990_10_state::ti990_panel_write));
+
+}
/*
Callback from the tape controller.
diff --git a/src/mame/drivers/ti990_4.cpp b/src/mame/drivers/ti990_4.cpp
index 769c2face14..a4c70d175ea 100644
--- a/src/mame/drivers/ti990_4.cpp
+++ b/src/mame/drivers/ti990_4.cpp
@@ -213,12 +213,13 @@ READ8_MEMBER( ti990_4_state::interrupt_level )
Memory map - see description above
*/
-ADDRESS_MAP_START(ti990_4_state::memmap)
- AM_RANGE(0x0000, 0x7fff) AM_RAM /* dynamic RAM */
- AM_RANGE(0x8000, 0xf7ff) AM_NOP /* reserved for expansion */
- AM_RANGE(0xf800, 0xfbff) AM_RAM /* static RAM? */
- AM_RANGE(0xfc00, 0xffff) AM_ROM /* LOAD ROM */
-ADDRESS_MAP_END
+void ti990_4_state::memmap(address_map &map)
+{
+ map(0x0000, 0x7fff).ram(); /* dynamic RAM */
+ map(0x8000, 0xf7ff).noprw(); /* reserved for expansion */
+ map(0xf800, 0xfbff).ram(); /* static RAM? */
+ map(0xfc00, 0xffff).rom(); /* LOAD ROM */
+}
/*
@@ -243,27 +244,29 @@ ADDRESS_MAP_END
0x0a0-0x0bf: VDT3 (int ??? - wired to int 9, unused)
*/
-ADDRESS_MAP_START(ti990_4_state::cru_map)
- AM_RANGE(0x00, 0x01) AM_DEVREAD("asr733", asr733_device, cru_r)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("asr733", asr733_device, cru_w)
+void ti990_4_state::cru_map(address_map &map)
+{
+ map(0x00, 0x01).r("asr733", FUNC(asr733_device::cru_r));
+ map(0x00, 0x0f).w("asr733", FUNC(asr733_device::cru_w));
- AM_RANGE(0x08, 0x0b) AM_DEVREAD( "fd800", fd800_legacy_device, cru_r )
- AM_RANGE(0x40, 0x5f) AM_DEVWRITE( "fd800", fd800_legacy_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));
- AM_RANGE(0x1fe, 0x1ff) AM_READ( panel_read )
- AM_RANGE(0xff0, 0xfff) AM_WRITE( panel_write )
-ADDRESS_MAP_END
+ map(0x1fe, 0x1ff).r(this, FUNC(ti990_4_state::panel_read));
+ map(0xff0, 0xfff).w(this, FUNC(ti990_4_state::panel_write));
+}
-ADDRESS_MAP_START(ti990_4_state::cru_map_v)
- AM_RANGE(0x10, 0x11) AM_DEVREAD("vdt911", vdt911_device, cru_r)
- AM_RANGE(0x80, 0x8f) AM_DEVWRITE("vdt911", vdt911_device, cru_w)
+void ti990_4_state::cru_map_v(address_map &map)
+{
+ map(0x10, 0x11).r("vdt911", FUNC(vdt911_device::cru_r));
+ map(0x80, 0x8f).w("vdt911", FUNC(vdt911_device::cru_w));
- AM_RANGE(0x08, 0x0b) AM_DEVREAD( "fd800", fd800_legacy_device, cru_r )
- AM_RANGE(0x40, 0x5f) AM_DEVWRITE( "fd800", fd800_legacy_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));
- AM_RANGE(0x1fe, 0x1ff) AM_READ( panel_read )
- AM_RANGE(0xff0, 0xfff) AM_WRITE( panel_write )
-ADDRESS_MAP_END
+ map(0x1fe, 0x1ff).r(this, FUNC(ti990_4_state::panel_read));
+ map(0xff0, 0xfff).w(this, FUNC(ti990_4_state::panel_write));
+}
/* static const floppy_interface ti990_4_floppy_interface =
diff --git a/src/mame/drivers/ti99_2.cpp b/src/mame/drivers/ti99_2.cpp
index 0257ad2f5cf..9a43dd681de 100644
--- a/src/mame/drivers/ti99_2.cpp
+++ b/src/mame/drivers/ti99_2.cpp
@@ -219,15 +219,16 @@ GFXDECODE_END
Memory map - see description above
*/
-ADDRESS_MAP_START(ti99_2_state::ti99_2_memmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* system ROM */
- AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* system ROM, banked on 32kb ROMs protos */
- AM_RANGE(0x6000, 0xdfff) AM_NOP /* free for expansion */
- AM_RANGE(0xe000, 0xebff) AM_RAM /* system RAM */
- AM_RANGE(0xec00, 0xeeff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xef00, 0xefff) AM_RAM /* system RAM */
- AM_RANGE(0xf000, 0xffff) AM_NOP /* free for expansion (and internal processor RAM) */
-ADDRESS_MAP_END
+void ti99_2_state::ti99_2_memmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); /* system ROM */
+ map(0x4000, 0x5fff).bankr("bank1"); /* system ROM, banked on 32kb ROMs protos */
+ map(0x6000, 0xdfff).noprw(); /* free for expansion */
+ map(0xe000, 0xebff).ram(); /* system RAM */
+ map(0xec00, 0xeeff).ram().share("videoram");
+ map(0xef00, 0xefff).ram(); /* system RAM */
+ map(0xf000, 0xffff).noprw(); /* free for expansion (and internal processor RAM) */
+}
/*
@@ -296,12 +297,13 @@ READ8_MEMBER(ti99_2_state::ti99_2_read_misc_cru)
return 0;
}
-ADDRESS_MAP_START(ti99_2_state::ti99_2_io)
- AM_RANGE(0x0E00, 0x0E7f) AM_READ(ti99_2_read_kbd)
- AM_RANGE(0x0E80, 0x0Eff) AM_READ(ti99_2_read_misc_cru)
- AM_RANGE(0x7000, 0x73ff) AM_WRITE(ti99_2_write_kbd)
- AM_RANGE(0x7400, 0x77ff) AM_WRITE(ti99_2_write_misc_cru)
-ADDRESS_MAP_END
+void ti99_2_state::ti99_2_io(address_map &map)
+{
+ map(0x0E00, 0x0E7f).r(this, FUNC(ti99_2_state::ti99_2_read_kbd));
+ map(0x0E80, 0x0Eff).r(this, FUNC(ti99_2_state::ti99_2_read_misc_cru));
+ map(0x7000, 0x73ff).w(this, FUNC(ti99_2_state::ti99_2_write_kbd));
+ map(0x7400, 0x77ff).w(this, FUNC(ti99_2_state::ti99_2_write_misc_cru));
+}
/* ti99/2 : 54-key keyboard */
diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp
index ae6bd4a6acd..97875ca843a 100644
--- a/src/mame/drivers/ti99_4p.cpp
+++ b/src/mame/drivers/ti99_4p.cpp
@@ -284,17 +284,19 @@ enum
ROM6UBASE = 0xe000
};
-ADDRESS_MAP_START(ti99_4p_state::memmap)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE( memread, memwrite ) AM_SETOFFSET( setoffset )
-ADDRESS_MAP_END
+void ti99_4p_state::memmap(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(ti99_4p_state::memread), FUNC(ti99_4p_state::memwrite)).setoffset(this, FUNC(ti99_4p_state::setoffset));
+}
-ADDRESS_MAP_START(ti99_4p_state::cru_map)
- AM_RANGE(0x0000, 0x01ff) AM_READ( cruread )
- AM_RANGE(0x0000, 0x003f) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read)
+void ti99_4p_state::cru_map(address_map &map)
+{
+ map(0x0000, 0x01ff).r(this, FUNC(ti99_4p_state::cruread));
+ map(0x0000, 0x003f).r(m_tms9901, FUNC(tms9901_device::read));
- AM_RANGE(0x0000, 0x0fff) AM_WRITE( cruwrite )
- AM_RANGE(0x0000, 0x01ff) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write)
-ADDRESS_MAP_END
+ map(0x0000, 0x0fff).w(this, FUNC(ti99_4p_state::cruwrite));
+ map(0x0000, 0x01ff).w(m_tms9901, FUNC(tms9901_device::write));
+}
/*
Input ports, used by machine code for TI keyboard and joystick emulation.
diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp
index 7bb28249132..d2f4156605a 100644
--- a/src/mame/drivers/ti99_4x.cpp
+++ b/src/mame/drivers/ti99_4x.cpp
@@ -216,10 +216,11 @@ enum
/*
Memory map. All of the work is done in the datamux (see datamux.c).
*/
-ADDRESS_MAP_START(ti99_4x_state::memmap)
- ADDRESS_MAP_GLOBAL_MASK(0xffff)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE(TI99_DATAMUX_TAG, bus::ti99::internal::datamux_device, read, write) AM_DEVSETOFFSET(TI99_DATAMUX_TAG, bus::ti99::internal::datamux_device, setoffset)
-ADDRESS_MAP_END
+void ti99_4x_state::memmap(address_map &map)
+{
+ map.global_mask(0xffff);
+ map(0x0000, 0xffff).rw(TI99_DATAMUX_TAG, FUNC(bus::ti99::internal::datamux_device::read), FUNC(bus::ti99::internal::datamux_device::write)).setoffset(TI99_DATAMUX_TAG, FUNC(bus::ti99::internal::datamux_device::setoffset));
+}
/*
CRU map
@@ -241,13 +242,14 @@ ADDRESS_MAP_END
Write:0000 - 01ff corresponds to bit 0 of base address 0000 - 03fe
*/
-ADDRESS_MAP_START(ti99_4x_state::cru_map)
- AM_RANGE(0x0000, 0x01ff) AM_READ(cruread)
- AM_RANGE(0x0000, 0x0003) AM_MIRROR(0x003c) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read)
+void ti99_4x_state::cru_map(address_map &map)
+{
+ map(0x0000, 0x01ff).r(this, FUNC(ti99_4x_state::cruread));
+ map(0x0000, 0x0003).mirror(0x003c).r(m_tms9901, FUNC(tms9901_device::read));
- AM_RANGE(0x0000, 0x0fff) AM_WRITE(cruwrite)
- AM_RANGE(0x0000, 0x001f) AM_MIRROR(0x01e0) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write)
-ADDRESS_MAP_END
+ map(0x0000, 0x0fff).w(this, FUNC(ti99_4x_state::cruwrite));
+ map(0x0000, 0x001f).mirror(0x01e0).w(m_tms9901, FUNC(tms9901_device::write));
+}
/*****************************************************************************
diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp
index 66cb6e44a0b..cc515c5ae1a 100644
--- a/src/mame/drivers/ti99_8.cpp
+++ b/src/mame/drivers/ti99_8.cpp
@@ -292,9 +292,10 @@ private:
Memory map. We have a configurable mapper, so we need to delegate the
job to the mapper completely.
*/
-ADDRESS_MAP_START(ti99_8_state::memmap)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE(TI998_MAINBOARD_TAG, bus::ti99::internal::mainboard8_device, read, write) AM_DEVSETOFFSET(TI998_MAINBOARD_TAG, bus::ti99::internal::mainboard8_device, setoffset)
-ADDRESS_MAP_END
+void ti99_8_state::memmap(address_map &map)
+{
+ map(0x0000, 0xffff).rw(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::read), FUNC(bus::ti99::internal::mainboard8_device::write)).setoffset(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::setoffset));
+}
/*
CRU map - see description above
@@ -303,13 +304,14 @@ ADDRESS_MAP_END
(decoded by the "Vaquerro" chip, signal NNOICS*)
*/
-ADDRESS_MAP_START(ti99_8_state::crumap)
- AM_RANGE(0x0000, 0x02ff) AM_READ(cruread)
- AM_RANGE(0x0000, 0x0003) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read)
+void ti99_8_state::crumap(address_map &map)
+{
+ map(0x0000, 0x02ff).r(this, FUNC(ti99_8_state::cruread));
+ map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read));
- AM_RANGE(0x0000, 0x17ff) AM_WRITE(cruwrite)
- AM_RANGE(0x0000, 0x001f) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write)
-ADDRESS_MAP_END
+ map(0x0000, 0x17ff).w(this, FUNC(ti99_8_state::cruwrite));
+ map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write));
+}
/* ti99/8 : 54-key keyboard */
static INPUT_PORTS_START(ti99_8)
diff --git a/src/mame/drivers/tiamc1.cpp b/src/mame/drivers/tiamc1.cpp
index be02841f019..da3c0553167 100644
--- a/src/mame/drivers/tiamc1.cpp
+++ b/src/mame/drivers/tiamc1.cpp
@@ -151,48 +151,52 @@ WRITE_LINE_MEMBER(tiamc1_state::pit8253_2_w)
}
-ADDRESS_MAP_START(tiamc1_state::tiamc1_map)
- AM_RANGE(0xb000, 0xb7ff) AM_WRITE(tiamc1_videoram_w)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tiamc1_state::kotrybolov_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xf000, 0xf3ff) AM_WRITE(kot_videoram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tiamc1_state::tiamc1_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x4f) AM_WRITE(tiamc1_sprite_y_w) /* sprites Y */
- AM_RANGE(0x50, 0x5f) AM_WRITE(tiamc1_sprite_x_w) /* sprites X */
- AM_RANGE(0x60, 0x6f) AM_WRITE(tiamc1_sprite_n_w) /* sprites # */
- AM_RANGE(0x70, 0x7f) AM_WRITE(tiamc1_sprite_a_w) /* sprites attributes */
- AM_RANGE(0xa0, 0xaf) AM_WRITE(tiamc1_palette_w) /* color ram */
- AM_RANGE(0xbc, 0xbc) AM_WRITE(tiamc1_bg_vshift_w)/* background V scroll */
- AM_RANGE(0xbd, 0xbd) AM_WRITE(tiamc1_bg_hshift_w)/* background H scroll */
- AM_RANGE(0xbe, 0xbe) AM_WRITE(tiamc1_bankswitch_w) /* VRAM selector */
- AM_RANGE(0xbf, 0xbf) AM_WRITE(tiamc1_bg_bplctrl_w) /* charset control */
- AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer0_w) /* timer 0 */
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("kr580vv55a", i8255_device, read, write) /* input ports + coin counters & lockout */
- AM_RANGE(0xd4, 0xd7) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer1_w) /* timer 1 */
- AM_RANGE(0xda, 0xda) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer1_gate_w) /* timer 1 gate control */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tiamc1_state::kotrybolov_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_WRITE(tiamc1_sprite_y_w) // sprites Y
- AM_RANGE(0x10, 0x1f) AM_WRITE(tiamc1_sprite_x_w) // sprites X
- AM_RANGE(0x20, 0x2f) AM_WRITE(tiamc1_sprite_n_w) // sprites #
- AM_RANGE(0x30, 0x3f) AM_WRITE(tiamc1_sprite_a_w) // sprites attributes
- AM_RANGE(0xe0, 0xef) AM_WRITE(tiamc1_palette_w) // color ram
- AM_RANGE(0xf0, 0xf0) AM_WRITE(tiamc1_bg_vshift_w) // background V scroll
- AM_RANGE(0xf4, 0xf4) AM_WRITE(tiamc1_bg_hshift_w) // background H scroll
- AM_RANGE(0xf8, 0xf8) AM_WRITE(kot_bankswitch_w) // character rom offset
- AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("kr580vv55a", i8255_device, read, write) /* input ports + coin counters & lockout */
-ADDRESS_MAP_END
+void tiamc1_state::tiamc1_map(address_map &map)
+{
+ map(0xb000, 0xb7ff).w(this, FUNC(tiamc1_state::tiamc1_videoram_w));
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xffff).ram();
+}
+
+void tiamc1_state::kotrybolov_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xf000, 0xf3ff).w(this, FUNC(tiamc1_state::kot_videoram_w));
+}
+
+void tiamc1_state::tiamc1_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x4f).w(this, FUNC(tiamc1_state::tiamc1_sprite_y_w)); /* sprites Y */
+ map(0x50, 0x5f).w(this, FUNC(tiamc1_state::tiamc1_sprite_x_w)); /* sprites X */
+ map(0x60, 0x6f).w(this, FUNC(tiamc1_state::tiamc1_sprite_n_w)); /* sprites # */
+ map(0x70, 0x7f).w(this, FUNC(tiamc1_state::tiamc1_sprite_a_w)); /* sprites attributes */
+ map(0xa0, 0xaf).w(this, FUNC(tiamc1_state::tiamc1_palette_w)); /* color ram */
+ map(0xbc, 0xbc).w(this, FUNC(tiamc1_state::tiamc1_bg_vshift_w));/* background V scroll */
+ map(0xbd, 0xbd).w(this, FUNC(tiamc1_state::tiamc1_bg_hshift_w));/* background H scroll */
+ map(0xbe, 0xbe).w(this, FUNC(tiamc1_state::tiamc1_bankswitch_w)); /* VRAM selector */
+ map(0xbf, 0xbf).w(this, FUNC(tiamc1_state::tiamc1_bg_bplctrl_w)); /* charset control */
+ map(0xc0, 0xc3).w("2x8253", FUNC(tiamc1_sound_device::tiamc1_timer0_w)); /* timer 0 */
+ map(0xd0, 0xd3).rw("kr580vv55a", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* input ports + coin counters & lockout */
+ map(0xd4, 0xd7).w("2x8253", FUNC(tiamc1_sound_device::tiamc1_timer1_w)); /* timer 1 */
+ map(0xda, 0xda).w("2x8253", FUNC(tiamc1_sound_device::tiamc1_timer1_gate_w)); /* timer 1 gate control */
+}
+
+void tiamc1_state::kotrybolov_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).w(this, FUNC(tiamc1_state::tiamc1_sprite_y_w)); // sprites Y
+ map(0x10, 0x1f).w(this, FUNC(tiamc1_state::tiamc1_sprite_x_w)); // sprites X
+ map(0x20, 0x2f).w(this, FUNC(tiamc1_state::tiamc1_sprite_n_w)); // sprites #
+ map(0x30, 0x3f).w(this, FUNC(tiamc1_state::tiamc1_sprite_a_w)); // sprites attributes
+ map(0xe0, 0xef).w(this, FUNC(tiamc1_state::tiamc1_palette_w)); // color ram
+ map(0xf0, 0xf0).w(this, FUNC(tiamc1_state::tiamc1_bg_vshift_w)); // background V scroll
+ map(0xf4, 0xf4).w(this, FUNC(tiamc1_state::tiamc1_bg_hshift_w)); // background H scroll
+ map(0xf8, 0xf8).w(this, FUNC(tiamc1_state::kot_bankswitch_w)); // character rom offset
+ map(0xc0, 0xc3).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xd0, 0xd3).rw("kr580vv55a", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* input ports + coin counters & lockout */
+}
static INPUT_PORTS_START( tiamc1 )
diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp
index b0537830952..89dcf1165fd 100644
--- a/src/mame/drivers/tickee.cpp
+++ b/src/mame/drivers/tickee.cpp
@@ -53,7 +53,7 @@ public:
m_vram(*this, "vram"),
m_control(*this, "control") { }
- required_device<cpu_device> m_maincpu;
+ required_device<tms34010_device> m_maincpu;
optional_device<okim6295_device> m_oki;
required_device<screen_device> m_screen;
required_device<tlc34076_device> m_tlc34076;
@@ -440,79 +440,83 @@ WRITE16_MEMBER(tickee_state::sound_bank_w)
*
*************************************/
-ADDRESS_MAP_START(tickee_state::tickee_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8("ym1", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x04200000, 0x0420001f) AM_DEVWRITE8("ym1", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x04200100, 0x0420010f) AM_DEVREAD8("ym2", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x04200100, 0x0420011f) AM_DEVWRITE8("ym2", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x04400000, 0x0440007f) AM_WRITE(tickee_control_w) AM_SHARE("control")
- AM_RANGE(0x04400040, 0x0440004f) AM_READ_PORT("IN2")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */
- AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void tickee_state::tickee_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("vram");
+ map(0x02000000, 0x02ffffff).rom().region("user1", 0);
+ map(0x04000000, 0x04003fff).ram().share("nvram");
+ map(0x04100000, 0x041000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0x04200000, 0x0420000f).r("ym1", FUNC(ay8910_device::data_r)).umask16(0x00ff);
+ map(0x04200000, 0x0420001f).w("ym1", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x04200100, 0x0420010f).r("ym2", FUNC(ay8910_device::data_r)).umask16(0x00ff);
+ map(0x04200100, 0x0420011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x04400000, 0x0440007f).w(this, 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);
+}
/* addreses in the 04x range shifted slightly...*/
-ADDRESS_MAP_START(tickee_state::ghoshunt_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x04100000, 0x04103fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x04200000, 0x042000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0x04300000, 0x0430000f) AM_DEVREAD8("ym1", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x04300000, 0x0430001f) AM_DEVWRITE8("ym1", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x04300100, 0x0430010f) AM_DEVREAD8("ym2", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x04300100, 0x0430011f) AM_DEVWRITE8("ym2", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x04500000, 0x0450007f) AM_WRITE(tickee_control_w) AM_SHARE("control")
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */
- AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tickee_state::mouseatk_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8("ym", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x04200000, 0x0420000f) AM_DEVWRITE8("ym", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x04200100, 0x0420010f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x04400000, 0x0440007f) AM_WRITE(tickee_control_w) AM_SHARE("control")
- AM_RANGE(0x04400040, 0x0440004f) AM_READ_PORT("IN2") // ?
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */
- AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void tickee_state::ghoshunt_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("vram");
+ map(0x02000000, 0x02ffffff).rom().region("user1", 0);
+ map(0x04100000, 0x04103fff).ram().share("nvram");
+ map(0x04200000, 0x042000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0x04300000, 0x0430000f).r("ym1", FUNC(ay8910_device::data_r)).umask16(0x00ff);
+ map(0x04300000, 0x0430001f).w("ym1", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ 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(this, 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);
+}
+
+
+void tickee_state::mouseatk_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("vram");
+ map(0x02000000, 0x02ffffff).rom().region("user1", 0);
+ map(0x04000000, 0x04003fff).ram().share("nvram");
+ map(0x04100000, 0x041000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0x04200000, 0x0420000f).r("ym", FUNC(ay8910_device::data_r)).umask16(0x00ff);
+ map(0x04200000, 0x0420000f).w("ym", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x04200100, 0x0420010f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x04400000, 0x0440007f).w(this, 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);
+}
/* newer hardware */
-ADDRESS_MAP_START(tickee_state::rapidfir_map)
- AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02000000, 0x027fffff) AM_READWRITE(rapidfir_transparent_r, rapidfir_transparent_w)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xfc000000, 0xfc00000f) AM_READ(rapidfir_gun1_r)
- AM_RANGE(0xfc000100, 0xfc00010f) AM_READ(rapidfir_gun2_r)
- AM_RANGE(0xfc000400, 0xfc00040f) AM_READ(ffff_r)
- AM_RANGE(0xfc000500, 0xfc00050f) AM_NOP
- AM_RANGE(0xfc000600, 0xfc00060f) AM_WRITE(rapidfir_control_w)
- AM_RANGE(0xfc000700, 0xfc00070f) AM_WRITE(sound_bank_w)
- AM_RANGE(0xfc000800, 0xfc00080f) AM_READ_PORT("IN0")
- AM_RANGE(0xfc000900, 0xfc00090f) AM_READ_PORT("IN1")
- AM_RANGE(0xfc000a00, 0xfc000a0f) AM_READ_PORT("IN2")
- AM_RANGE(0xfc000b00, 0xfc000b0f) AM_READ_PORT("DSW0")
- AM_RANGE(0xfc000c00, 0xfc000c1f) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc000e00, 0xfc000e1f) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
- AM_RANGE(0xfc100000, 0xfc1000ff) AM_MIRROR(0x80000) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfc400010, 0xfc40001f) AM_READWRITE(ff7f_r, ff7f_w)
- AM_RANGE(0xfe000000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void tickee_state::rapidfir_map(address_map &map)
+{
+ map(0x00000000, 0x007fffff).ram().share("vram");
+ map(0x02000000, 0x027fffff).rw(this, 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(this, FUNC(tickee_state::rapidfir_gun1_r));
+ map(0xfc000100, 0xfc00010f).r(this, FUNC(tickee_state::rapidfir_gun2_r));
+ map(0xfc000400, 0xfc00040f).r(this, FUNC(tickee_state::ffff_r));
+ map(0xfc000500, 0xfc00050f).noprw();
+ map(0xfc000600, 0xfc00060f).w(this, FUNC(tickee_state::rapidfir_control_w));
+ map(0xfc000700, 0xfc00070f).w(this, FUNC(tickee_state::sound_bank_w));
+ map(0xfc000800, 0xfc00080f).portr("IN0");
+ map(0xfc000900, 0xfc00090f).portr("IN1");
+ map(0xfc000a00, 0xfc000a0f).portr("IN2");
+ map(0xfc000b00, 0xfc000b0f).portr("DSW0");
+ map(0xfc000c00, 0xfc000c1f).portr("DSW1");
+ map(0xfc000e00, 0xfc000e1f).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
+ map(0xfc100000, 0xfc1000ff).mirror(0x80000).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0xfc200000, 0xfc207fff).ram().share("nvram");
+ map(0xfc300000, 0xfc30000f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0xfc400010, 0xfc40001f).rw(this, FUNC(tickee_state::ff7f_r), FUNC(tickee_state::ff7f_w));
+ map(0xfe000000, 0xffffffff).rom().region("user1", 0);
+}
diff --git a/src/mame/drivers/tigeroad.cpp b/src/mame/drivers/tigeroad.cpp
index c81298ab9df..38a843c684b 100644
--- a/src/mame/drivers/tigeroad.cpp
+++ b/src/mame/drivers/tigeroad.cpp
@@ -70,84 +70,93 @@ WRITE8_MEMBER(tigeroad_state::msm5205_w)
/***************************************************************************/
-ADDRESS_MAP_START(tigeroad_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
-
- AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xfe0d00, 0xfe1807) AM_RAM /* still part of OBJ RAM */
- AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE(tigeroad_videoctrl_w) /* char bank, coin counters, + ? */
- AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE(tigeroad_soundcmd_w) /* AM_WRITE(tigeroad_soundcmd_w) is replaced in init for for f1dream protection */
- AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW")
- AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(tigeroad_scroll_w)
- AM_RANGE(0xfe800e, 0xfe800f) AM_WRITEONLY /* fe800e = watchdog or IRQ acknowledge */
- AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_SHARE("videoram")
-
- AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("ram16")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pushman_state::pushman_map)
- AM_IMPORT_FROM(main_map)
-
- AM_RANGE(0x060000, 0x060007) AM_READ(mcu_comm_r)
- AM_RANGE(0x060000, 0x060003) AM_WRITE(pushman_mcu_comm_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pushman_state::bballs_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x00000, 0x3ffff) AM_ROM
- AM_RANGE(0x60000, 0x60007) AM_READ(mcu_comm_r)
- AM_RANGE(0x60000, 0x60001) AM_WRITE(bballs_mcu_comm_w)
+void tigeroad_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+
+ map(0xfe0800, 0xfe0cff).ram().share("spriteram");
+ map(0xfe0d00, 0xfe1807).ram(); /* still part of OBJ RAM */
+ map(0xfe4000, 0xfe4001).portr("P1_P2").w(this, FUNC(tigeroad_state::tigeroad_videoctrl_w)); /* char bank, coin counters, + ? */
+ map(0xfe4002, 0xfe4003).portr("SYSTEM").w(this, FUNC(tigeroad_state::tigeroad_soundcmd_w)); /* AM_WRITE(tigeroad_soundcmd_w) is replaced in init for for f1dream protection */
+ map(0xfe4004, 0xfe4005).portr("DSW");
+ map(0xfe8000, 0xfe8003).w(this, FUNC(tigeroad_state::tigeroad_scroll_w));
+ map(0xfe800e, 0xfe800f).writeonly(); /* fe800e = watchdog or IRQ acknowledge */
+ map(0xfec000, 0xfec7ff).ram().w(this, FUNC(tigeroad_state::tigeroad_videoram_w)).share("videoram");
+
+ map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xffc000, 0xffffff).ram().share("ram16");
+}
+
+void pushman_state::pushman_map(address_map &map)
+{
+ main_map(map);
+
+ map(0x060000, 0x060007).r(this, FUNC(pushman_state::mcu_comm_r));
+ map(0x060000, 0x060003).w(this, FUNC(pushman_state::pushman_mcu_comm_w));
+}
+
+void pushman_state::bballs_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x00000, 0x3ffff).rom();
+ map(0x60000, 0x60007).r(this, FUNC(pushman_state::mcu_comm_r));
+ map(0x60000, 0x60001).w(this, FUNC(pushman_state::bballs_mcu_comm_w));
// are these mirror addresses or does this PCB have a different addressing?
- AM_RANGE(0xe0800, 0xe17ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe4000, 0xe4001) AM_READ_PORT("P1_P2") AM_WRITE(tigeroad_videoctrl_w)
- AM_RANGE(0xe4002, 0xe4003) AM_READ_PORT("SYSTEM") AM_WRITE(tigeroad_soundcmd_w)
- AM_RANGE(0xe4004, 0xe4005) AM_READ_PORT("DSW")
- AM_RANGE(0xe8000, 0xe8003) AM_WRITE(tigeroad_scroll_w)
- AM_RANGE(0xe800e, 0xe800f) AM_WRITENOP /* ? */
- AM_RANGE(0xec000, 0xec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_SHARE("videoram")
-
- AM_RANGE(0xf8000, 0xf87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfc000, 0xfffff) AM_RAM AM_SHARE("ram16")
-ADDRESS_MAP_END
+ map(0xe0800, 0xe17ff).ram().share("spriteram");
+ map(0xe4000, 0xe4001).portr("P1_P2").w(this, FUNC(pushman_state::tigeroad_videoctrl_w));
+ map(0xe4002, 0xe4003).portr("SYSTEM").w(this, FUNC(pushman_state::tigeroad_soundcmd_w));
+ map(0xe4004, 0xe4005).portr("DSW");
+ map(0xe8000, 0xe8003).w(this, FUNC(pushman_state::tigeroad_scroll_w));
+ map(0xe800e, 0xe800f).nopw(); /* ? */
+ map(0xec000, 0xec7ff).ram().w(this, FUNC(pushman_state::tigeroad_videoram_w)).share("videoram");
+
+ map(0xf8000, 0xf87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfc000, 0xfffff).ram().share("ram16");
+}
/* Capcom games ONLY */
-ADDRESS_MAP_START(tigeroad_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tigeroad_state::sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void tigeroad_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void tigeroad_state::sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7f, 0x7f).w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
/* toramich ONLY */
-ADDRESS_MAP_START(tigeroad_state::sample_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tigeroad_state::sample_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
-ADDRESS_MAP_START(tigeroad_state::sample_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w)
-ADDRESS_MAP_END
+void tigeroad_state::sample_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w(this, FUNC(tigeroad_state::msm5205_w));
+}
/* Pushman / Bouncing Balls */
-ADDRESS_MAP_START(tigeroad_state::comad_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tigeroad_state::comad_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ym2203_device, write)
-ADDRESS_MAP_END
+void tigeroad_state::comad_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void tigeroad_state::comad_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write));
+ map(0x80, 0x81).w("ym2", FUNC(ym2203_device::write));
+}
diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp
index ea82836c2b8..05b2eccc0ea 100644
--- a/src/mame/drivers/tiki100.cpp
+++ b/src/mame/drivers/tiki100.cpp
@@ -293,15 +293,17 @@ WRITE8_MEMBER( tiki100_state::system_w )
/* Memory Maps */
-ADDRESS_MAP_START(tiki100_state::tiki100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mrq_r, mrq_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tiki100_state::tiki100_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(iorq_r, iorq_w)
-ADDRESS_MAP_END
+void tiki100_state::tiki100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(tiki100_state::mrq_r), FUNC(tiki100_state::mrq_w));
+}
+
+void tiki100_state::tiki100_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(tiki100_state::iorq_r), FUNC(tiki100_state::iorq_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/tim011.cpp b/src/mame/drivers/tim011.cpp
index a7889a13901..fd025940f76 100644
--- a/src/mame/drivers/tim011.cpp
+++ b/src/mame/drivers/tim011.cpp
@@ -49,21 +49,23 @@ public:
};
-ADDRESS_MAP_START(tim011_state::tim011_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x01fff) AM_ROM AM_MIRROR(0x3e000)
- AM_RANGE(0x40000, 0x7ffff) AM_RAM // 256KB RAM 8 * 41256 DRAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tim011_state::tim011_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM /* Z180 internal registers */
- AM_RANGE(0x0080, 0x009f) AM_DEVICE(FDC9266_TAG, upd765a_device, map)
+void tim011_state::tim011_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x01fff).rom().mirror(0x3e000);
+ map(0x40000, 0x7ffff).ram(); // 256KB RAM 8 * 41256 DRAM
+}
+
+void tim011_state::tim011_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram(); /* Z180 internal registers */
+ map(0x0080, 0x009f).m(m_fdc, FUNC(upd765a_device::map));
//AM_RANGE(0x00a0, 0x00a0) AM_MIRROR(0x001f) AM_WRITE(fdc_dma_w)
//AM_RANGE(0x00c0, 0x00c1) AM_MIRROR(0x000e) AM_READWRITE(print_r,print_w)
//AM_RANGE(0x00d0, 0x00d0) AM_MIRROR(0x000f) AM_READWRITE(scroll_r,scroll_w)
- AM_RANGE(0x8000, 0xffff) AM_RAM // Video RAM 43256 SRAM (32KB)
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).ram(); // Video RAM 43256 SRAM (32KB)
+}
/* Input ports */
static INPUT_PORTS_START( tim011 )
diff --git a/src/mame/drivers/tim100.cpp b/src/mame/drivers/tim100.cpp
index 2ad54a9ecf0..e7cfe6a057f 100644
--- a/src/mame/drivers/tim100.cpp
+++ b/src/mame/drivers/tim100.cpp
@@ -51,22 +51,24 @@ private:
required_device<i8275_device> m_crtc;
};
-ADDRESS_MAP_START(tim100_state::tim100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM // 2764 at U16
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("videoram") // 2KB static ram CDM6116A at U15
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("uart_u17", i8251_device, data_r, data_w)
- AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("uart_u17", i8251_device, status_r, control_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("uart_u18", i8251_device, data_r, data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREADWRITE("uart_u18", i8251_device, status_r, control_w)
- AM_RANGE(0xa000, 0xa000) AM_WRITENOP // continuously writes 00 here
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("crtc", i8275_device, read, write) // i8276
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tim100_state::tim100_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void tim100_state::tim100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom(); // 2764 at U16
+ map(0x2000, 0x27ff).ram().share("videoram"); // 2KB static ram CDM6116A at U15
+ map(0x6000, 0x6000).rw("uart_u17", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x6001, 0x6001).rw("uart_u17", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x8000, 0x8000).rw("uart_u18", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x8001, 0x8001).rw("uart_u18", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0xa000, 0xa000).nopw(); // continuously writes 00 here
+ map(0xc000, 0xc001).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); // i8276
+}
+
+void tim100_state::tim100_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
/* Input ports */
diff --git a/src/mame/drivers/timelimt.cpp b/src/mame/drivers/timelimt.cpp
index 510fb48783b..8ae5f0aafe7 100644
--- a/src/mame/drivers/timelimt.cpp
+++ b/src/mame/drivers/timelimt.cpp
@@ -48,41 +48,45 @@ WRITE_LINE_MEMBER(timelimt_state::coin_lockout_w)
/***************************************************************************/
-ADDRESS_MAP_START(timelimt_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* rom */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* ram */
- AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* video ram */
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")/* background ram */
- AM_RANGE(0x9800, 0x98ff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound write */
- AM_RANGE(0xb800, 0xb800) AM_READNOP /* NMI ack? */
- AM_RANGE(0xc800, 0xc800) AM_WRITE(scroll_x_lsb_w)
- AM_RANGE(0xc801, 0xc801) AM_WRITE(scroll_x_msb_w)
- AM_RANGE(0xc802, 0xc802) AM_WRITE(scroll_y_w)
- AM_RANGE(0xc803, 0xc803) AM_WRITENOP /* ???? bit 0 used only */
- AM_RANGE(0xc804, 0xc804) AM_WRITENOP /* ???? not used */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(timelimt_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(timelimt_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3800, 0x3bff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(timelimt_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
- AM_RANGE(0x8c, 0x8d) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
- AM_RANGE(0x8e, 0x8f) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
-ADDRESS_MAP_END
+void timelimt_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* rom */
+ map(0x8000, 0x87ff).ram(); /* ram */
+ map(0x8800, 0x8bff).ram().w(this, FUNC(timelimt_state::videoram_w)).share("videoram"); /* video ram */
+ map(0x9000, 0x97ff).ram().w(this, FUNC(timelimt_state::bg_videoram_w)).share("bg_videoram");/* background ram */
+ map(0x9800, 0x98ff).ram().share("spriteram"); /* sprite ram */
+ map(0xa000, 0xa000).portr("INPUTS");
+ map(0xa800, 0xa800).portr("SYSTEM");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xb800, 0xb800).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound write */
+ map(0xb800, 0xb800).nopr(); /* NMI ack? */
+ map(0xc800, 0xc800).w(this, FUNC(timelimt_state::scroll_x_lsb_w));
+ map(0xc801, 0xc801).w(this, FUNC(timelimt_state::scroll_x_msb_w));
+ map(0xc802, 0xc802).w(this, FUNC(timelimt_state::scroll_y_w));
+ map(0xc803, 0xc803).nopw(); /* ???? bit 0 used only */
+ map(0xc804, 0xc804).nopw(); /* ???? not used */
+}
+
+void timelimt_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+}
+
+void timelimt_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3800, 0x3bff).ram();
+}
+
+void timelimt_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::clear_w));
+ map(0x8c, 0x8d).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+ map(0x8e, 0x8f).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
+}
/***************************************************************************/
diff --git a/src/mame/drivers/timeplt.cpp b/src/mame/drivers/timeplt.cpp
index fedaf34cbb7..b23570161b0 100644
--- a/src/mame/drivers/timeplt.cpp
+++ b/src/mame/drivers/timeplt.cpp
@@ -129,32 +129,38 @@ CUSTOM_INPUT_MEMBER(timeplt_state::chkun_hopper_status_r)
*
*************************************/
-ADDRESS_MAP_START(timeplt_state::timeplt_main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM
- AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb400, 0xb4ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(scanline_r) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w)
- AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0c9f) AM_READ_PORT("IN0")
- ;map(0xc300, 0xc30f).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 1, data, mem_mask); });
- AM_RANGE(0xc320, 0xc320) AM_MIRROR(0x0c9f) AM_READ_PORT("IN1")
- AM_RANGE(0xc340, 0xc340) AM_MIRROR(0x0c9f) AM_READ_PORT("IN2")
- AM_RANGE(0xc360, 0xc360) AM_MIRROR(0x0c9f) AM_READ_PORT("DSW0")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(timeplt_state::psurge_main_map)
- AM_IMPORT_FROM(timeplt_main_map)
- AM_RANGE(0x6004, 0x6004) AM_READ(psurge_protection_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(timeplt_state::chkun_main_map)
- AM_IMPORT_FROM(timeplt_main_map)
- AM_RANGE(0x6000, 0x67ff) AM_RAM
-ADDRESS_MAP_END
+void timeplt_state::timeplt_main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5fff).rom();
+ map(0xa000, 0xa3ff).ram().w(this, FUNC(timeplt_state::colorram_w)).share("colorram");
+ map(0xa400, 0xa7ff).ram().w(this, FUNC(timeplt_state::videoram_w)).share("videoram");
+ map(0xa800, 0xafff).ram();
+ map(0xb000, 0xb0ff).mirror(0x0b00).ram().share("spriteram");
+ map(0xb400, 0xb4ff).mirror(0x0b00).ram().share("spriteram2");
+ map(0xc000, 0xc000).mirror(0x0cff).r(this, FUNC(timeplt_state::scanline_r)).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w));
+ map(0xc200, 0xc200).mirror(0x0cff).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xc300, 0xc300).mirror(0x0c9f).portr("IN0");
+ map(0xc300, 0xc30f).lw8("mainlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_mainlatch->write_d0(space, offset >> 1, data, mem_mask);
+ });
+ map(0xc320, 0xc320).mirror(0x0c9f).portr("IN1");
+ map(0xc340, 0xc340).mirror(0x0c9f).portr("IN2");
+ map(0xc360, 0xc360).mirror(0x0c9f).portr("DSW0");
+}
+
+void timeplt_state::psurge_main_map(address_map &map)
+{
+ timeplt_main_map(map);
+ map(0x6004, 0x6004).r(this, FUNC(timeplt_state::psurge_protection_r));
+}
+
+void timeplt_state::chkun_main_map(address_map &map)
+{
+ timeplt_main_map(map);
+ map(0x6000, 0x67ff).ram();
+}
diff --git a/src/mame/drivers/timetrv.cpp b/src/mame/drivers/timetrv.cpp
index 03b62dafd9a..39fd71c5867 100644
--- a/src/mame/drivers/timetrv.cpp
+++ b/src/mame/drivers/timetrv.cpp
@@ -84,21 +84,23 @@ READ8_MEMBER(timetrv_state::in_r)
return 0xff;
}
-ADDRESS_MAP_START(timetrv_state::timetrv_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM //irq vectors + work ram
- AM_RANGE(0x10000, 0x107ff) AM_DEVREADWRITE("eeprom", eeprom_parallel_28xx_device, read, write)
- AM_RANGE(0xc0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(timetrv_state::timetrv_io)
- AM_RANGE(0x0122, 0x0123) AM_WRITENOP //eeprom write bits
- AM_RANGE(0x1000, 0x1003) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0x1080, 0x1083) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE("uart", ins8250_device, ins8250_r, ins8250_w)
- AM_RANGE(0x1180, 0x1187) AM_RAM AM_SHARE("led_vralo")//led string,part 1
- AM_RANGE(0x1200, 0x1207) AM_RAM AM_SHARE("led_vrahi")//led string,part 2
- AM_RANGE(0xff80, 0xffff) AM_RAM //am80188-em-like cpu internal regs?
-ADDRESS_MAP_END
+void timetrv_state::timetrv_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram(); //irq vectors + work ram
+ map(0x10000, 0x107ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
+ map(0xc0000, 0xfffff).rom();
+}
+
+void timetrv_state::timetrv_io(address_map &map)
+{
+ map(0x0122, 0x0123).nopw(); //eeprom write bits
+ map(0x1000, 0x1003).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1080, 0x1083).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1100, 0x1107).rw("uart", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
+ map(0x1180, 0x1187).ram().share("led_vralo");//led string,part 1
+ map(0x1200, 0x1207).ram().share("led_vrahi");//led string,part 2
+ map(0xff80, 0xffff).ram(); //am80188-em-like cpu internal regs?
+}
static INPUT_PORTS_START( timetrv )
diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp
index e563bf8043c..8f1416178b2 100644
--- a/src/mame/drivers/timex.cpp
+++ b/src/mame/drivers/timex.cpp
@@ -525,24 +525,26 @@ void spectrum_state::ts2068_update_memory()
}
}
-ADDRESS_MAP_START(spectrum_state::ts2068_io)
- AM_RANGE(0xf4, 0xf4) AM_READWRITE(ts2068_port_f4_r,ts2068_port_f4_w ) AM_MIRROR(0xff00)
- AM_RANGE(0xf5, 0xf5) AM_DEVWRITE("ay8912", ay8910_device, address_w ) AM_MIRROR(0xff00)
- AM_RANGE(0xf6, 0xf6) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, data_w ) AM_MIRROR(0xff00)
- AM_RANGE(0xfe, 0xfe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w ) AM_SELECT(0xff00)
- AM_RANGE(0xff, 0xff) AM_READWRITE(ts2068_port_ff_r,ts2068_port_ff_w ) AM_MIRROR(0xff00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(spectrum_state::ts2068_mem)
- AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank9")
- AM_RANGE(0x2000, 0x3fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank10")
- AM_RANGE(0x4000, 0x5fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank11")
- AM_RANGE(0x6000, 0x7fff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank12")
- AM_RANGE(0x8000, 0x9fff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank13")
- AM_RANGE(0xa000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank14")
- AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank15")
- AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank8") AM_WRITE_BANK("bank16")
-ADDRESS_MAP_END
+void spectrum_state::ts2068_io(address_map &map)
+{
+ map(0xf4, 0xf4).rw(this, FUNC(spectrum_state::ts2068_port_f4_r), FUNC(spectrum_state::ts2068_port_f4_w)).mirror(0xff00);
+ map(0xf5, 0xf5).w("ay8912", FUNC(ay8910_device::address_w)).mirror(0xff00);
+ map(0xf6, 0xf6).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)).mirror(0xff00);
+ map(0xfe, 0xfe).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xff00);
+ map(0xff, 0xff).rw(this, FUNC(spectrum_state::ts2068_port_ff_r), FUNC(spectrum_state::ts2068_port_ff_w)).mirror(0xff00);
+}
+
+void spectrum_state::ts2068_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bank1").bankw("bank9");
+ map(0x2000, 0x3fff).bankr("bank2").bankw("bank10");
+ map(0x4000, 0x5fff).bankr("bank3").bankw("bank11");
+ map(0x6000, 0x7fff).bankr("bank4").bankw("bank12");
+ map(0x8000, 0x9fff).bankr("bank5").bankw("bank13");
+ map(0xa000, 0xbfff).bankr("bank6").bankw("bank14");
+ map(0xc000, 0xdfff).bankr("bank7").bankw("bank15");
+ map(0xe000, 0xffff).bankr("bank8").bankw("bank16");
+}
MACHINE_RESET_MEMBER(spectrum_state,ts2068)
@@ -569,15 +571,17 @@ WRITE8_MEMBER( spectrum_state::tc2048_port_ff_w )
logerror("Port %04x write %02x\n", offset, data);
}
-ADDRESS_MAP_START(spectrum_state::tc2048_io)
- AM_RANGE(0x00, 0x00) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xfffe)
- AM_RANGE(0xff, 0xff) AM_READWRITE(ts2068_port_ff_r,tc2048_port_ff_w) AM_MIRROR(0xff00)
-ADDRESS_MAP_END
+void spectrum_state::tc2048_io(address_map &map)
+{
+ map(0x00, 0x00).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe);
+ map(0xff, 0xff).rw(this, FUNC(spectrum_state::ts2068_port_ff_r), FUNC(spectrum_state::tc2048_port_ff_w)).mirror(0xff00);
+}
-ADDRESS_MAP_START(spectrum_state::tc2048_mem)
- AM_RANGE( 0x0000, 0x3fff) AM_ROM
- AM_RANGE( 0x4000, 0xffff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
-ADDRESS_MAP_END
+void spectrum_state::tc2048_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0xffff).bankr("bank1").bankw("bank2");
+}
MACHINE_RESET_MEMBER(spectrum_state,tc2048)
{
diff --git a/src/mame/drivers/tk2000.cpp b/src/mame/drivers/tk2000.cpp
index 567a5856e4c..e6a75db7ce0 100644
--- a/src/mame/drivers/tk2000.cpp
+++ b/src/mame/drivers/tk2000.cpp
@@ -453,17 +453,19 @@ WRITE8_MEMBER(tk2000_state::ram_w)
}
}
-ADDRESS_MAP_START(tk2000_state::apple2_map)
- AM_RANGE(0x0000, 0xbfff) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w)
- AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w)
- AM_RANGE(0xc100, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tk2000_state::inhbank_map)
- AM_RANGE(0x0000, 0x3eff) AM_ROM AM_REGION("maincpu", 0x100)
- AM_RANGE(0x4000, 0x7eff) AM_READWRITE(c100_r, c100_w)
-ADDRESS_MAP_END
+void tk2000_state::apple2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rw(this, FUNC(tk2000_state::ram_r), FUNC(tk2000_state::ram_w));
+ map(0xc000, 0xc07f).rw(this, FUNC(tk2000_state::c000_r), FUNC(tk2000_state::c000_w));
+ map(0xc080, 0xc0ff).rw(this, FUNC(tk2000_state::c080_r), FUNC(tk2000_state::c080_w));
+ map(0xc100, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8));
+}
+
+void tk2000_state::inhbank_map(address_map &map)
+{
+ map(0x0000, 0x3eff).rom().region("maincpu", 0x100);
+ map(0x4000, 0x7eff).rw(this, FUNC(tk2000_state::c100_r), FUNC(tk2000_state::c100_w));
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/tk80.cpp b/src/mame/drivers/tk80.cpp
index 0c2961c7cf9..1ed95effc2e 100644
--- a/src/mame/drivers/tk80.cpp
+++ b/src/mame/drivers/tk80.cpp
@@ -120,49 +120,55 @@ WRITE8_MEMBER( tk80_state::display_w )
m_digit[offset & 0x7] = data;
}
-ADDRESS_MAP_START(tk80_state::tk80_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x83ff) // A10-14 not connected
- AM_RANGE(0x0000, 0x02ff) AM_ROM
- AM_RANGE(0x0300, 0x03ff) AM_RAM // EEPROM
- AM_RANGE(0x8000, 0x83f7) AM_RAM // RAM
- AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tk80_state::tk85_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x87ff) // A10-14 not connected
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x8000, 0x83f7) AM_RAM
- AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tk80_state::ics8080_mem)
- ADDRESS_MAP_UNMAP_HIGH
+void tk80_state::tk80_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x83ff); // A10-14 not connected
+ map(0x0000, 0x02ff).rom();
+ map(0x0300, 0x03ff).ram(); // EEPROM
+ map(0x8000, 0x83f7).ram(); // RAM
+ map(0x83f8, 0x83ff).ram().rw(this, FUNC(tk80_state::display_r), FUNC(tk80_state::display_w));
+}
+
+void tk80_state::tk85_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x87ff); // A10-14 not connected
+ map(0x0000, 0x07ff).rom();
+ map(0x8000, 0x83f7).ram();
+ map(0x83f8, 0x83ff).ram().rw(this, FUNC(tk80_state::display_r), FUNC(tk80_state::display_w));
+}
+
+void tk80_state::ics8080_mem(address_map &map)
+{
+ map.unmap_value_high();
//ADDRESS_MAP_GLOBAL_MASK(0x87ff) // A10-14 not connected
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x8000, 0x83f7) AM_RAM
- AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w)
- AM_RANGE(0x8400, 0x8fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tk80_state::tk80_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x03)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tk80_state::mikrolab_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x03)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tk80_state::nd80z_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x03)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0x0000, 0x1fff).rom();
+ map(0x8000, 0x83f7).ram();
+ map(0x83f8, 0x83ff).ram().rw(this, FUNC(tk80_state::display_r), FUNC(tk80_state::display_w));
+ map(0x8400, 0x8fff).ram();
+}
+
+void tk80_state::tk80_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x03);
+ map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void tk80_state::mikrolab_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x03);
+ map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void tk80_state::nd80z_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x03);
+ map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( tk80 )
diff --git a/src/mame/drivers/tk80bs.cpp b/src/mame/drivers/tk80bs.cpp
index edf84e06a2e..1bb5c5c3f8e 100644
--- a/src/mame/drivers/tk80bs.cpp
+++ b/src/mame/drivers/tk80bs.cpp
@@ -108,17 +108,18 @@ WRITE8_MEMBER( tk80bs_state::ppi_custom_w )
}
}
-ADDRESS_MAP_START(tk80bs_state::tk80bs_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
+void tk80bs_state::tk80bs_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
// AM_RANGE(0x0c00, 0x7bff) AM_ROM // ext
- AM_RANGE(0x7df8, 0x7df9) AM_NOP // i8251 sio
- AM_RANGE(0x7dfc, 0x7dff) AM_READWRITE(ppi_custom_r,ppi_custom_w)
- AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_SHARE("videoram") // video ram
- AM_RANGE(0x8000, 0xcfff) AM_RAM // RAM
- AM_RANGE(0xd000, 0xefff) AM_ROM // BASIC
- AM_RANGE(0xf000, 0xffff) AM_ROM // BSMON
-ADDRESS_MAP_END
+ map(0x7df8, 0x7df9).noprw(); // i8251 sio
+ map(0x7dfc, 0x7dff).rw(this, FUNC(tk80bs_state::ppi_custom_r), FUNC(tk80bs_state::ppi_custom_w));
+ map(0x7e00, 0x7fff).ram().share("videoram"); // video ram
+ map(0x8000, 0xcfff).ram(); // RAM
+ map(0xd000, 0xefff).rom(); // BASIC
+ map(0xf000, 0xffff).rom(); // BSMON
+}
/* Input ports */
diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp
index 34aa497cfbd..b1693254fae 100644
--- a/src/mame/drivers/tm990189.cpp
+++ b/src/mame/drivers/tm990189.cpp
@@ -720,24 +720,26 @@ static const tms9901_interface sys9901reset_param =
0x3000-0x3fff: 4kb onboard ROM
*/
-ADDRESS_MAP_START(tm990189_state::tm990_189_memmap)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */
- AM_RANGE(0x0800, 0x0fff) AM_ROM /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */
- AM_RANGE(0x1000, 0x2fff) AM_NOP /* reserved for expansion (RAM and/or tms9918 video controller) */
- AM_RANGE(0x3000, 0x3fff) AM_ROM /* main ROM - unibug or university basic */
-ADDRESS_MAP_END
+void tm990189_state::tm990_189_memmap(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* RAM */
+ map(0x0800, 0x0fff).rom(); /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */
+ map(0x1000, 0x2fff).noprw(); /* reserved for expansion (RAM and/or tms9918 video controller) */
+ map(0x3000, 0x3fff).rom(); /* main ROM - unibug or university basic */
+}
-ADDRESS_MAP_START(tm990189_state::tm990_189_v_memmap)
- AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */
- AM_RANGE(0x0800, 0x0fff) AM_ROM /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */
+void tm990189_state::tm990_189_v_memmap(address_map &map)
+{
+ map(0x0000, 0x07ff).ram(); /* RAM */
+ map(0x0800, 0x0fff).rom(); /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */
- AM_RANGE(0x1000, 0x17ff) AM_ROM AM_WRITENOP /* video board ROM 1 */
- AM_RANGE(0x1800, 0x1fff) AM_ROM AM_WRITE(video_joy_w) /* video board ROM 2 and joystick write port*/
- AM_RANGE(0x2000, 0x27ff) AM_READ(video_vdp_r) AM_WRITENOP /* video board tms9918 read ports (bogus) */
- AM_RANGE(0x2800, 0x2fff) AM_READWRITE(video_joy_r, video_vdp_w) /* video board joystick read port and tms9918 write ports */
+ map(0x1000, 0x17ff).rom().nopw(); /* video board ROM 1 */
+ map(0x1800, 0x1fff).rom().w(this, FUNC(tm990189_state::video_joy_w)); /* video board ROM 2 and joystick write port*/
+ map(0x2000, 0x27ff).r(this, FUNC(tm990189_state::video_vdp_r)).nopw(); /* video board tms9918 read ports (bogus) */
+ map(0x2800, 0x2fff).rw(this, FUNC(tm990189_state::video_joy_r), FUNC(tm990189_state::video_vdp_w)); /* video board joystick read port and tms9918 write ports */
- AM_RANGE(0x3000, 0x3fff) AM_ROM /* main ROM - unibug or university basic */
-ADDRESS_MAP_END
+ map(0x3000, 0x3fff).rom(); /* main ROM - unibug or university basic */
+}
/*
CRU map
@@ -795,15 +797,16 @@ ADDRESS_MAP_END
d
*/
-ADDRESS_MAP_START(tm990189_state::tm990_189_cru_map)
- AM_RANGE(0x0000, 0x003f) AM_DEVREAD(TMS9901_0_TAG, tms9901_device, read) /* user I/O tms9901 */
- AM_RANGE(0x0040, 0x006f) AM_DEVREAD(TMS9901_1_TAG, tms9901_device, read) /* system I/O tms9901 */
- AM_RANGE(0x0080, 0x00cf) AM_DEVREAD("tms9902", tms9902_device, cruread) /* optional tms9902 */
+void tm990189_state::tm990_189_cru_map(address_map &map)
+{
+ 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("tms9902", FUNC(tms9902_device::cruread)); /* optional tms9902 */
- AM_RANGE(0x0000, 0x01ff) AM_DEVWRITE(TMS9901_0_TAG, tms9901_device, write) /* user I/O tms9901 */
- AM_RANGE(0x0200, 0x03ff) AM_DEVWRITE(TMS9901_1_TAG, tms9901_device, write) /* system I/O tms9901 */
- AM_RANGE(0x0400, 0x05ff) AM_DEVWRITE("tms9902", tms9902_device, cruwrite) /* optional tms9902 */
-ADDRESS_MAP_END
+ 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("tms9902", FUNC(tms9902_device::cruwrite)); /* optional tms9902 */
+}
MACHINE_CONFIG_START(tm990189_state::tm990_189)
/* basic machine hardware */
diff --git a/src/mame/drivers/tmaster.cpp b/src/mame/drivers/tmaster.cpp
index 079f129a6bd..82c8a2c7e7c 100644
--- a/src/mame/drivers/tmaster.cpp
+++ b/src/mame/drivers/tmaster.cpp
@@ -257,31 +257,32 @@ READ_LINE_MEMBER(tmaster_state::read_rand)
return machine().rand() & 1;
}
-ADDRESS_MAP_START(tmaster_state::tmaster_map)
- AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
- AM_RANGE( 0x200000, 0x27ffff ) AM_RAM
- AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_SHARE("nvram")
- AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE(rtc_r, rtc_w )
+void tmaster_state::tmaster_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x27ffff).ram();
+ map(0x280000, 0x28ffef).ram().share("nvram");
+ map(0x28fff0, 0x28ffff).rw(this, FUNC(tmaster_state::rtc_r), FUNC(tmaster_state::rtc_w));
- AM_RANGE( 0x300010, 0x300011 ) AM_READ_PORT("COIN")
+ map(0x300010, 0x300011).portr("COIN");
- AM_RANGE( 0x300020, 0x30003f ) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
+ map(0x300020, 0x30003f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
- AM_RANGE( 0x300040, 0x300041 ) AM_WRITE_PORT("OUT")
+ map(0x300040, 0x300041).portw("OUT");
- AM_RANGE( 0x300070, 0x300071 ) AM_DEVWRITE("blitter", cesblit_device, addr_hi_w )
+ map(0x300070, 0x300071).w(m_blitter, FUNC(cesblit_device::addr_hi_w));
- AM_RANGE( 0x500000, 0x500011 ) AM_DEVWRITE("blitter", cesblit_device, regs_w )
- AM_RANGE( 0x500010, 0x500011 ) AM_DEVREAD( "blitter", cesblit_device, status_r )
+ map(0x500000, 0x500011).w(m_blitter, FUNC(cesblit_device::regs_w));
+ map(0x500010, 0x500011).r(m_blitter, FUNC(cesblit_device::status_r));
- AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often
+ map(0x580000, 0x580001).nopw(); // often
- AM_RANGE( 0x600000, 0x601fff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
+ map(0x800001, 0x800001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE( 0x800010, 0x800011 ) AM_DEVWRITE("blitter", cesblit_device, color_w )
-ADDRESS_MAP_END
+ map(0x800010, 0x800011).w(m_blitter, FUNC(cesblit_device::color_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp
index 795f9969896..22c218d0645 100644
--- a/src/mame/drivers/tmc1800.cpp
+++ b/src/mame/drivers/tmc1800.cpp
@@ -253,54 +253,62 @@ WRITE8_MEMBER( tmc1800_state::dispoff_w )
// Telmac 1800
-ADDRESS_MAP_START(tmc1800_state::tmc1800_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x7800) AM_RAM
- AM_RANGE(0x8000, 0x81ff) AM_MIRROR(0x7e00) AM_ROM AM_REGION(CDP1802_TAG, 0)
-ADDRESS_MAP_END
+void tmc1800_state::tmc1800_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x7800).ram();
+ map(0x8000, 0x81ff).mirror(0x7e00).rom().region(CDP1802_TAG, 0);
+}
-ADDRESS_MAP_START(tmc1800_state::tmc1800_io_map)
- AM_RANGE(0x01, 0x01) AM_READWRITE(dispon_r, dispoff_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
-ADDRESS_MAP_END
+void tmc1800_state::tmc1800_io_map(address_map &map)
+{
+ map(0x01, 0x01).rw(this, FUNC(tmc1800_state::dispon_r), FUNC(tmc1800_state::dispoff_w));
+ map(0x02, 0x02).w(this, FUNC(tmc1800_state::keylatch_w));
+}
// OSCOM 1000B
-ADDRESS_MAP_START(osc1000b_state::osc1000b_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x7800) AM_RAM
- AM_RANGE(0x8000, 0x81ff) AM_MIRROR(0x7e00) AM_ROM AM_REGION(CDP1802_TAG, 0)
-ADDRESS_MAP_END
+void osc1000b_state::osc1000b_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x7800).ram();
+ map(0x8000, 0x81ff).mirror(0x7e00).rom().region(CDP1802_TAG, 0);
+}
-ADDRESS_MAP_START(osc1000b_state::osc1000b_io_map)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
-ADDRESS_MAP_END
+void osc1000b_state::osc1000b_io_map(address_map &map)
+{
+ map(0x02, 0x02).w(this, FUNC(osc1000b_state::keylatch_w));
+}
// Telmac 2000
-ADDRESS_MAP_START(tmc2000_state::tmc2000_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) // RAM / monitor ROM
- AM_RANGE(0x8000, 0xffff) // color RAM / monitor ROM
-ADDRESS_MAP_END
+void tmc2000_state::tmc2000_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff); // RAM / monitor ROM
+ map(0x8000, 0xffff); // color RAM / monitor ROM
+}
-ADDRESS_MAP_START(tmc2000_state::tmc2000_io_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
- AM_RANGE(0x04, 0x04) AM_DEVREAD(CDP1864_TAG, cdp1864_device, dispoff_r) AM_WRITE(bankswitch_w)
-ADDRESS_MAP_END
+void tmc2000_state::tmc2000_io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w));
+ map(0x02, 0x02).w(this, FUNC(tmc2000_state::keylatch_w));
+ map(0x04, 0x04).r(m_cti, FUNC(cdp1864_device::dispoff_r)).w(this, FUNC(tmc2000_state::bankswitch_w));
+}
// OSCOM Nano
-ADDRESS_MAP_START(nano_state::nano_map)
- AM_RANGE(0x0000, 0x7fff) // RAM / monitor ROM
- AM_RANGE(0x8000, 0x81ff) AM_MIRROR(0x7e00) AM_ROM AM_REGION(CDP1802_TAG, 0)
-ADDRESS_MAP_END
+void nano_state::nano_map(address_map &map)
+{
+ map(0x0000, 0x7fff); // RAM / monitor ROM
+ map(0x8000, 0x81ff).mirror(0x7e00).rom().region(CDP1802_TAG, 0);
+}
-ADDRESS_MAP_START(nano_state::nano_io_map)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w)
- AM_RANGE(0x04, 0x04) AM_DEVREAD(CDP1864_TAG, cdp1864_device, dispoff_r) AM_WRITE(bankswitch_w)
-ADDRESS_MAP_END
+void nano_state::nano_io_map(address_map &map)
+{
+ map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w));
+ map(0x02, 0x02).w(this, FUNC(nano_state::keylatch_w));
+ map(0x04, 0x04).r(m_cti, FUNC(cdp1864_device::dispoff_r)).w(this, FUNC(nano_state::bankswitch_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/tmc2000e.cpp b/src/mame/drivers/tmc2000e.cpp
index 3cc6a35eafd..95916d9070c 100644
--- a/src/mame/drivers/tmc2000e.cpp
+++ b/src/mame/drivers/tmc2000e.cpp
@@ -82,21 +82,23 @@ WRITE8_MEMBER( tmc2000e_state::keyboard_latch_w )
/* Memory Maps */
-ADDRESS_MAP_START(tmc2000e_state::tmc2000e_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xfc00, 0xffff) AM_WRITEONLY AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tmc2000e_state::tmc2000e_io_map)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE(CDP1864_TAG, cdp1864_device, tone_latch_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE(CDP1864_TAG, cdp1864_device, step_bgcolor_w)
- AM_RANGE(0x03, 0x03) AM_READWRITE(ascii_keyboard_r, keyboard_latch_w)
- AM_RANGE(0x04, 0x04) AM_READWRITE(io_r, io_w)
- AM_RANGE(0x05, 0x05) AM_READWRITE(vismac_r, vismac_w)
- AM_RANGE(0x06, 0x06) AM_READWRITE(floppy_r, floppy_w)
- AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW0") AM_WRITE(io_select_w)
-ADDRESS_MAP_END
+void tmc2000e_state::tmc2000e_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0xc000, 0xdfff).rom();
+ map(0xfc00, 0xffff).writeonly().share("colorram");
+}
+
+void tmc2000e_state::tmc2000e_io_map(address_map &map)
+{
+ map(0x01, 0x01).w(m_cti, FUNC(cdp1864_device::tone_latch_w));
+ map(0x02, 0x02).w(m_cti, FUNC(cdp1864_device::step_bgcolor_w));
+ map(0x03, 0x03).rw(this, FUNC(tmc2000e_state::ascii_keyboard_r), FUNC(tmc2000e_state::keyboard_latch_w));
+ map(0x04, 0x04).rw(this, FUNC(tmc2000e_state::io_r), FUNC(tmc2000e_state::io_w));
+ map(0x05, 0x05).rw(this, FUNC(tmc2000e_state::vismac_r), FUNC(tmc2000e_state::vismac_w));
+ map(0x06, 0x06).rw(this, FUNC(tmc2000e_state::floppy_r), FUNC(tmc2000e_state::floppy_w));
+ map(0x07, 0x07).portr("DSW0").w(this, FUNC(tmc2000e_state::io_select_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/tmc600.cpp b/src/mame/drivers/tmc600.cpp
index 213bb466539..26cbf690de0 100644
--- a/src/mame/drivers/tmc600.cpp
+++ b/src/mame/drivers/tmc600.cpp
@@ -121,20 +121,22 @@ WRITE8_MEMBER( tmc600_state::printer_w )
/* Memory Maps */
-ADDRESS_MAP_START(tmc600_state::tmc600_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map)
- AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tmc600_state::tmc600_io_map)
- AM_RANGE(0x03, 0x03) AM_DEVWRITE(CDP1852_KB_TAG, cdp1852_device, write)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE(CDP1852_TMC700_TAG, cdp1852_device, write)
- AM_RANGE(0x05, 0x05) AM_READWRITE(rtc_r, vismac_data_w)
+void tmc600_state::tmc600_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).ram();
+ map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map));
+ map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map));
+}
+
+void tmc600_state::tmc600_io_map(address_map &map)
+{
+ map(0x03, 0x03).w(m_bwio, FUNC(cdp1852_device::write));
+ map(0x04, 0x04).w(CDP1852_TMC700_TAG, FUNC(cdp1852_device::write));
+ map(0x05, 0x05).rw(this, FUNC(tmc600_state::rtc_r), FUNC(tmc600_state::vismac_data_w));
// AM_RANGE(0x06, 0x06) AM_WRITE(floppy_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(vismac_register_w)
-ADDRESS_MAP_END
+ map(0x07, 0x07).w(this, FUNC(tmc600_state::vismac_register_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/tmmjprd.cpp b/src/mame/drivers/tmmjprd.cpp
index 46fa504795a..486b141d204 100644
--- a/src/mame/drivers/tmmjprd.cpp
+++ b/src/mame/drivers/tmmjprd.cpp
@@ -692,37 +692,38 @@ WRITE32_MEMBER(tmmjprd_state::brt_2_w)
}
}
-ADDRESS_MAP_START(tmmjprd_state::tmmjprd_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200010, 0x200013) AM_READ(randomtmmjprds) // gfx chip status?
+void tmmjprd_state::tmmjprd_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200010, 0x200013).r(this, FUNC(tmmjprd_state::randomtmmjprds)); // gfx chip status?
/* check these are used .. */
// AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_SHARE("viewregs0")
- AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_SHARE("tilemap_regs.0" ) // tilemap regs1
- AM_RANGE(0x200120, 0x200137) AM_WRITEONLY AM_SHARE("tilemap_regs.1" ) // tilemap regs2
- AM_RANGE(0x200140, 0x200157) AM_WRITEONLY AM_SHARE("tilemap_regs.2" ) // tilemap regs3
- AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_SHARE("tilemap_regs.3" ) // tilemap regs4
- AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_SHARE("spriteregs" ) // sprregs?
+ map(0x200100, 0x200117).writeonly().share("tilemap_regs.0"); // tilemap regs1
+ map(0x200120, 0x200137).writeonly().share("tilemap_regs.1"); // tilemap regs2
+ map(0x200140, 0x200157).writeonly().share("tilemap_regs.2"); // tilemap regs3
+ map(0x200160, 0x200177).writeonly().share("tilemap_regs.3"); // tilemap regs4
+ map(0x200200, 0x20021b).writeonly().share("spriteregs"); // sprregs?
// AM_RANGE(0x200300, 0x200303) AM_WRITE(rombank_w) // used during rom testing, rombank/area select + something else?
- AM_RANGE(0x20040c, 0x20040f) AM_WRITE(brt_1_w)
- AM_RANGE(0x200410, 0x200413) AM_WRITE(brt_2_w)
+ map(0x20040c, 0x20040f).w(this, FUNC(tmmjprd_state::brt_1_w));
+ map(0x200410, 0x200413).w(this, FUNC(tmmjprd_state::brt_2_w));
// AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_SHARE("viewregs7")
// AM_RANGE(0x200700, 0x20070f) AM_WRITE(blitter_w) AM_SHARE("blitterregs")
// AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_SHARE("viewregs9") // never changes?
- AM_RANGE(0x200900, 0x2009ff) AM_DEVREADWRITE16("i5000snd", i5000snd_device, read, write, 0xffffffff)
+ map(0x200900, 0x2009ff).rw("i5000snd", FUNC(i5000snd_device::read), FUNC(i5000snd_device::write));
/* hmm */
// AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("viewregs10")
/* tilemaps */
- AM_RANGE(0x280000, 0x283fff) AM_READWRITE(tilemap0_r,tilemap0_w)
- AM_RANGE(0x284000, 0x287fff) AM_READWRITE(tilemap1_r,tilemap1_w)
- AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(tilemap2_r,tilemap2_w)
- AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(tilemap3_r,tilemap3_w)
+ map(0x280000, 0x283fff).rw(this, FUNC(tmmjprd_state::tilemap0_r), FUNC(tmmjprd_state::tilemap0_w));
+ map(0x284000, 0x287fff).rw(this, FUNC(tmmjprd_state::tilemap1_r), FUNC(tmmjprd_state::tilemap1_w));
+ map(0x288000, 0x28bfff).rw(this, FUNC(tmmjprd_state::tilemap2_r), FUNC(tmmjprd_state::tilemap2_w));
+ map(0x28c000, 0x28ffff).rw(this, FUNC(tmmjprd_state::tilemap3_r), FUNC(tmmjprd_state::tilemap3_w));
/* ?? is palette ram shared with sprites in this case or just a different map */
- AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x29c000, 0x29ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
+ map(0x290000, 0x29bfff).ram().share("spriteram");
+ map(0x29c000, 0x29ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
- AM_RANGE(0x400000, 0x400003) AM_READ(mux_r) AM_WRITE(eeprom_write)
- AM_RANGE(0xf00000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x400000, 0x400003).r(this, FUNC(tmmjprd_state::mux_r)).w(this, FUNC(tmmjprd_state::eeprom_write));
+ map(0xf00000, 0xffffff).ram();
+}
diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp
index ddeca3654a1..6418d096e3e 100644
--- a/src/mame/drivers/tmnt.cpp
+++ b/src/mame/drivers/tmnt.cpp
@@ -469,105 +469,110 @@ WRITE8_MEMBER(tmnt_state::cuebrick_nvbank_w)
membank("nvrambank")->set_entry(data);
}
-ADDRESS_MAP_START(tmnt_state::cuebrick_main_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM /* main RAM */
- AM_RANGE(0x060000, 0x063fff) AM_RAM /* main RAM */
- AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w)
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2")
- AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1")
- AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
- AM_RANGE(0x0b0000, 0x0b03ff) AM_RAMBANK("nvrambank")
- AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE8(cuebrick_nvbank_w, 0xff00)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0xff00)
- AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
- AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff)
- AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::mia_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM /* main RAM */
- AM_RANGE(0x060000, 0x063fff) AM_RAM /* main RAM */
- AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w)
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2")
- AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2")
- AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
+void tmnt_state::cuebrick_main_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x043fff).ram(); /* main RAM */
+ map(0x060000, 0x063fff).ram(); /* main RAM */
+ map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).portr("COINS").w(this, FUNC(tmnt_state::tmnt_0a0000_w));
+ map(0x0a0002, 0x0a0003).portr("P1");
+ map(0x0a0004, 0x0a0005).portr("P2");
+ map(0x0a0010, 0x0a0011).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0012, 0x0a0013).portr("DSW1");
+ map(0x0a0018, 0x0a0019).portr("DSW3");
+ map(0x0b0000, 0x0b03ff).bankrw("nvrambank");
+ map(0x0b0400, 0x0b0400).w(this, FUNC(tmnt_state::cuebrick_nvbank_w));
+ map(0x0c0000, 0x0c0003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0xff00);
+ map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
+ map(0x140000, 0x140007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w));
+ map(0x140400, 0x1407ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w));
+}
+
+
+void tmnt_state::mia_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram(); /* main RAM */
+ map(0x060000, 0x063fff).ram(); /* main RAM */
+ map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).portr("COINS").w(this, FUNC(tmnt_state::tmnt_0a0000_w));
+ map(0x0a0002, 0x0a0003).portr("P1");
+ map(0x0a0004, 0x0a0005).portr("P2");
+ map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0a0010, 0x0a0011).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0012, 0x0a0013).portr("DSW2");
+ map(0x0a0018, 0x0a0019).portr("DSW3");
#if 0
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(tmnt_priority_w)
+ map(0x0c0000, 0x0c0001).w(this, FUNC(tmnt_state::tmnt_priority_w));
#endif
- AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
+ map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
// AM_RANGE(0x10e800, 0x10e801) AM_WRITENOP ???
- AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff)
- AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::tmnt_main_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM /* main RAM */
- AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w)
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2")
- AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P3")
- AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2")
- AM_RANGE(0x0a0014, 0x0a0015) AM_READ_PORT("P4")
- AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(tmnt_priority_w)
- AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
+ map(0x140000, 0x140007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w));
+ map(0x140400, 0x1407ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w));
+}
+
+
+void tmnt_state::tmnt_main_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x063fff).ram(); /* main RAM */
+ map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).portr("COINS").w(this, FUNC(tmnt_state::tmnt_0a0000_w));
+ map(0x0a0002, 0x0a0003).portr("P1");
+ map(0x0a0004, 0x0a0005).portr("P2");
+ map(0x0a0006, 0x0a0007).portr("P3");
+ map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0a0010, 0x0a0011).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0012, 0x0a0013).portr("DSW2");
+ map(0x0a0014, 0x0a0015).portr("P4");
+ map(0x0a0018, 0x0a0019).portr("DSW3");
+ map(0x0c0000, 0x0c0001).w(this, FUNC(tmnt_state::tmnt_priority_w));
+ map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
// AM_RANGE(0x10e800, 0x10e801) AM_WRITENOP ???
- AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff)
- AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::punkshot_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM /* main RAM */
- AM_RANGE(0x090000, 0x090fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("DSW1/DSW2")
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("COINS/DSW3")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P3/P4")
- AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P1/P2")
- AM_RANGE(0x0a0020, 0x0a0021) AM_WRITE(punkshot_0a0020_w)
- AM_RANGE(0x0a0040, 0x0a0043) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x0a0060, 0x0a007f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x0a0080, 0x0a0081) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, punkshot_k052109_word_noA12_w)
- AM_RANGE(0x110000, 0x110007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff)
- AM_RANGE(0x110400, 0x1107ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff)
- AM_RANGE(0xfffffc, 0xffffff) AM_READ(punkshot_kludge_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tmnt_state::lgtnfght_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x090000, 0x093fff) AM_RAM /*main RAM */
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS")
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2")
- AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("DSW1")
- AM_RANGE(0x0a0008, 0x0a0009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW3")
- AM_RANGE(0x0a0018, 0x0a0019) AM_WRITE(lgtnfght_0a0018_w)
- AM_RANGE(0x0a0020, 0x0a0023) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x0a0028, 0x0a0029) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0b0000, 0x0b3fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x0c0000, 0x0c001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
- AM_RANGE(0x0e0000, 0x0e001f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
-ADDRESS_MAP_END
+ map(0x140000, 0x140007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w));
+ map(0x140400, 0x1407ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w));
+}
+
+
+void tmnt_state::punkshot_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x083fff).ram(); /* main RAM */
+ map(0x090000, 0x090fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0a0000, 0x0a0001).portr("DSW1/DSW2");
+ map(0x0a0002, 0x0a0003).portr("COINS/DSW3");
+ map(0x0a0004, 0x0a0005).portr("P3/P4");
+ map(0x0a0006, 0x0a0007).portr("P1/P2");
+ map(0x0a0020, 0x0a0021).w(this, FUNC(tmnt_state::punkshot_0a0020_w));
+ map(0x0a0040, 0x0a0043).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x0a0060, 0x0a007f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x0a0080, 0x0a0081).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::punkshot_k052109_word_noA12_w));
+ map(0x110000, 0x110007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w));
+ map(0x110400, 0x1107ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w));
+ map(0xfffffc, 0xffffff).r(this, FUNC(tmnt_state::punkshot_kludge_r));
+}
+
+void tmnt_state::lgtnfght_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x090000, 0x093fff).ram(); /*main RAM */
+ map(0x0a0000, 0x0a0001).portr("COINS");
+ map(0x0a0002, 0x0a0003).portr("P1");
+ map(0x0a0004, 0x0a0005).portr("P2");
+ map(0x0a0006, 0x0a0007).portr("DSW1");
+ map(0x0a0008, 0x0a0009).portr("DSW2");
+ map(0x0a0010, 0x0a0011).portr("DSW3");
+ map(0x0a0018, 0x0a0019).w(this, FUNC(tmnt_state::lgtnfght_0a0018_w));
+ map(0x0a0020, 0x0a0023).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x0a0028, 0x0a0029).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0b0000, 0x0b3fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram");
+ map(0x0c0000, 0x0c001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w));
+ map(0x0e0000, 0x0e001f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
+}
WRITE16_MEMBER(tmnt_state::ssriders_soundkludge_w)
{
@@ -575,25 +580,26 @@ WRITE16_MEMBER(tmnt_state::ssriders_soundkludge_w)
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
-ADDRESS_MAP_START(tmnt_state::blswhstl_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x180000, 0x183fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
- AM_RANGE(0x204000, 0x207fff) AM_RAM /* main RAM */
- AM_RANGE(0x300000, 0x303fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w)
- AM_RANGE(0x680000, 0x68001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2")
- AM_RANGE(0x700004, 0x700005) AM_READ(blswhstl_coin_r)
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("EEPROM")
- AM_RANGE(0x700200, 0x700201) AM_WRITE(blswhstl_eeprom_w)
- AM_RANGE(0x700300, 0x700301) AM_WRITE(blswhstl_700300_w)
- AM_RANGE(0x700400, 0x700401) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0x780600, 0x780603) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x780604, 0x780605) AM_WRITE(ssriders_soundkludge_w)
- AM_RANGE(0x780700, 0x78071f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
-ADDRESS_MAP_END
+void tmnt_state::blswhstl_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x180000, 0x183fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w));
+ map(0x204000, 0x207fff).ram(); /* main RAM */
+ map(0x300000, 0x303fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram");
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x50003f).rw(m_k054000, FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w));
+ map(0x680000, 0x68001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w));
+ map(0x700000, 0x700001).portr("P1");
+ map(0x700002, 0x700003).portr("P2");
+ map(0x700004, 0x700005).r(this, FUNC(tmnt_state::blswhstl_coin_r));
+ map(0x700006, 0x700007).portr("EEPROM");
+ map(0x700200, 0x700201).w(this, FUNC(tmnt_state::blswhstl_eeprom_w));
+ map(0x700300, 0x700301).w(this, FUNC(tmnt_state::blswhstl_700300_w));
+ map(0x700400, 0x700401).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0x780600, 0x780603).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x780604, 0x780605).w(this, FUNC(tmnt_state::ssriders_soundkludge_w));
+ map(0x780700, 0x78071f).w(m_k053251, FUNC(k053251_device::lsb_w));
+}
WRITE16_MEMBER(tmnt_state::k053251_glfgreat_w)
{
@@ -616,49 +622,51 @@ WRITE16_MEMBER(tmnt_state::k053251_glfgreat_w)
}
}
-ADDRESS_MAP_START(tmnt_state::glfgreat_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
- AM_RANGE(0x104000, 0x107fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x108000, 0x108fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) /* 053936? */
- AM_RANGE(0x110000, 0x11001f) AM_WRITE(k053244_word_noA1_w) /* duplicate! */
- AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k05324x_device, k053244_lsb_r, k053244_lsb_w) /* duplicate! */
- AM_RANGE(0x118000, 0x11801f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0x11c000, 0x11c01f) AM_DEVWRITE("k053251", k053251_device, msb_w)
- AM_RANGE(0x120000, 0x120001) AM_READ_PORT("P1/P2")
- AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P3/P4")
- AM_RANGE(0x120004, 0x120005) AM_READ_PORT("COINS/DSW3")
- AM_RANGE(0x120006, 0x120007) AM_READ_PORT("DSW1/DSW2")
- AM_RANGE(0x121000, 0x121001) AM_READ(glfgreat_ball_r) /* returns the color of the center pixel of the roz layer */
- AM_RANGE(0x122000, 0x122001) AM_WRITE(glfgreat_122000_w)
- AM_RANGE(0x124000, 0x124001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x125000, 0x125003) AM_DEVREAD8("k053260", k053260_device, main_read, 0xff00) AM_WRITE8(glfgreat_sound_w, 0xff00)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
- AM_RANGE(0x300000, 0x3fffff) AM_READ(glfgreat_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tmnt_state::prmrsocr_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
- AM_RANGE(0x104000, 0x107fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x108000, 0x108fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w)
- AM_RANGE(0x110000, 0x11001f) AM_WRITE(k053244_word_noA1_w) /* duplicate! */
- AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k05324x_device, k053244_lsb_r, k053244_lsb_w) /* duplicate! */
- AM_RANGE(0x118000, 0x11801f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0x11c000, 0x11c01f) AM_DEVWRITE("k053251", k053251_device, msb_w)
- AM_RANGE(0x120000, 0x120001) AM_READ_PORT("P1/COINS")
- AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P2/EEPROM")
- AM_RANGE(0x12100c, 0x12100d) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x12100e, 0x12100f) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x121014, 0x121015) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x122000, 0x122001) AM_WRITE(prmrsocr_eeprom_w) /* EEPROM + video control */
- AM_RANGE(0x123000, 0x123001) AM_WRITE(prmrsocr_sound_irq_w)
- AM_RANGE(0x200000, 0x207fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
- AM_RANGE(0x280000, 0x280001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x300000, 0x33ffff) AM_READ(prmrsocr_rom_r)
-ADDRESS_MAP_END
+void tmnt_state::glfgreat_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* main RAM */
+ map(0x104000, 0x107fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram");
+ map(0x108000, 0x108fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x10c000, 0x10cfff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); /* 053936? */
+ map(0x110000, 0x11001f).w(this, FUNC(tmnt_state::k053244_word_noA1_w)); /* duplicate! */
+ map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); /* duplicate! */
+ map(0x118000, 0x11801f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0x11c000, 0x11c01f).w(m_k053251, FUNC(k053251_device::msb_w));
+ map(0x120000, 0x120001).portr("P1/P2");
+ map(0x120002, 0x120003).portr("P3/P4");
+ map(0x120004, 0x120005).portr("COINS/DSW3");
+ map(0x120006, 0x120007).portr("DSW1/DSW2");
+ map(0x121000, 0x121001).r(this, FUNC(tmnt_state::glfgreat_ball_r)); /* returns the color of the center pixel of the roz layer */
+ map(0x122000, 0x122001).w(this, FUNC(tmnt_state::glfgreat_122000_w));
+ map(0x124000, 0x124001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x125000, 0x125003).r(m_k053260, FUNC(k053260_device::main_read)).umask16(0xff00).w(this, FUNC(tmnt_state::glfgreat_sound_w)).umask16(0xff00);
+ map(0x200000, 0x207fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
+ map(0x300000, 0x3fffff).r(this, FUNC(tmnt_state::glfgreat_rom_r));
+}
+
+void tmnt_state::prmrsocr_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* main RAM */
+ map(0x104000, 0x107fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram");
+ map(0x108000, 0x108fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x10c000, 0x10cfff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w));
+ map(0x110000, 0x11001f).w(this, FUNC(tmnt_state::k053244_word_noA1_w)); /* duplicate! */
+ map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); /* duplicate! */
+ map(0x118000, 0x11801f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0x11c000, 0x11c01f).w(m_k053251, FUNC(k053251_device::msb_w));
+ map(0x120000, 0x120001).portr("P1/COINS");
+ map(0x120002, 0x120003).portr("P2/EEPROM");
+ map(0x12100d, 0x12100d).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x12100f, 0x12100f).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0x121015, 0x121015).r("soundlatch3", FUNC(generic_latch_8_device::read));
+ map(0x122000, 0x122001).w(this, FUNC(tmnt_state::prmrsocr_eeprom_w)); /* EEPROM + video control */
+ map(0x123000, 0x123001).w(this, FUNC(tmnt_state::prmrsocr_sound_irq_w));
+ map(0x200000, 0x207fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
+ map(0x280000, 0x280001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x300000, 0x33ffff).r(this, FUNC(tmnt_state::prmrsocr_rom_r));
+}
#if 1
@@ -897,160 +905,171 @@ logerror("copy command %04x sprite %08x data %08x: %04x%04x %04x%04x modifiers
}
#endif
-ADDRESS_MAP_START(tmnt_state::tmnt2_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_SHARE("tmnt2_rom")
- AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("sunset_104000") /* main RAM */
- AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x183fff) AM_RAM_WRITE(k053245_scattered_word_w) AM_SHARE("spriteram") // k053245_scattered_word_r
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P1")
- AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P2")
- AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P3")
- AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("P4")
- AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("COINS")
- AM_RANGE(0x1c0102, 0x1c0103) AM_READ(ssriders_eeprom_r)
- AM_RANGE(0x1c0200, 0x1c0201) AM_WRITE(ssriders_eeprom_w) /* EEPROM and gfx control */
- AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w)
- AM_RANGE(0x1c0400, 0x1c0401) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0x1c0500, 0x1c057f) AM_RAM /* TMNT2 only (1J) unknown, mostly MCU blit offsets */
+void tmnt_state::tmnt2_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom().share("tmnt2_rom");
+ map(0x104000, 0x107fff).ram().share("sunset_104000"); /* main RAM */
+ map(0x140000, 0x140fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x183fff).ram().w(this, FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); // k053245_scattered_word_r
+ map(0x1c0000, 0x1c0001).portr("P1");
+ map(0x1c0002, 0x1c0003).portr("P2");
+ map(0x1c0004, 0x1c0005).portr("P3");
+ map(0x1c0006, 0x1c0007).portr("P4");
+ map(0x1c0100, 0x1c0101).portr("COINS");
+ map(0x1c0102, 0x1c0103).r(this, FUNC(tmnt_state::ssriders_eeprom_r));
+ map(0x1c0200, 0x1c0201).w(this, FUNC(tmnt_state::ssriders_eeprom_w)); /* EEPROM and gfx control */
+ map(0x1c0300, 0x1c0301).w(this, FUNC(tmnt_state::ssriders_1c0300_w));
+ map(0x1c0400, 0x1c0401).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0x1c0500, 0x1c057f).ram(); /* TMNT2 only (1J) unknown, mostly MCU blit offsets */
// AM_RANGE(0x1c0800, 0x1c0801) AM_READ(ssriders_protection_r) /* protection device */
- AM_RANGE(0x1c0800, 0x1c081f) AM_WRITE(tmnt2_1c0800_w) AM_SHARE("tmnt2_1c0800") /* protection device */
- AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
- AM_RANGE(0x5c0600, 0x5c0603) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w)
- AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tmnt_state::ssriders_main_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
- AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P1")
- AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P2")
- AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P3")
- AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("P4")
- AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("COINS")
- AM_RANGE(0x1c0102, 0x1c0103) AM_READ(ssriders_eeprom_r)
- AM_RANGE(0x1c0200, 0x1c0201) AM_WRITE(ssriders_eeprom_w) /* EEPROM and gfx control */
- AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w)
- AM_RANGE(0x1c0400, 0x1c0401) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w)
- AM_RANGE(0x1c0500, 0x1c057f) AM_RAM /* TMNT2 only (1J) unknown */
- AM_RANGE(0x1c0800, 0x1c0801) AM_READ(ssriders_protection_r)
- AM_RANGE(0x1c0800, 0x1c0803) AM_WRITE(ssriders_protection_w)
- AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
- AM_RANGE(0x5c0600, 0x5c0603) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w)
- AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tmnt_state::sunsetbl_main_map)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
- AM_RANGE(0x14c000, 0x14cfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x14e700, 0x14e71f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x180000, 0x183fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x184000, 0x18ffff) AM_RAM
- AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w)
- AM_RANGE(0x1c0400, 0x1c0401) AM_WRITENOP
- AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
- AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
- AM_RANGE(0x604020, 0x60402f) AM_WRITENOP /* written every frame */
- AM_RANGE(0x604200, 0x604201) AM_WRITENOP /* watchdog */
- AM_RANGE(0x6119e2, 0x6119e3) AM_WRITENOP /* written a lot in some test menus (PC=18204) */
- AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("P1")
- AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P2")
- AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("P3")
- AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("P4")
- AM_RANGE(0xc00200, 0xc00201) AM_WRITE(ssriders_eeprom_w) /* EEPROM and gfx control */
- AM_RANGE(0xc00404, 0xc00405) AM_READ_PORT("COINS")
- AM_RANGE(0xc00406, 0xc00407) AM_READ(sunsetbl_eeprom_r)
- AM_RANGE(0xc00600, 0xc00601) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x75d288, 0x75d289) AM_READNOP // read repeatedly in some test menus (PC=181f2)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::thndrx2_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30001f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff)
- AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w)
- AM_RANGE(0x500100, 0x500101) AM_WRITE(thndrx2_eeprom_w)
- AM_RANGE(0x500200, 0x500201) AM_READ_PORT("P1/COINS")
- AM_RANGE(0x500202, 0x500203) AM_READ(thndrx2_eeprom_r)
- AM_RANGE(0x500300, 0x500301) AM_WRITENOP /* watchdog reset? irq enable? */
- AM_RANGE(0x600000, 0x607fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
- AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff)
- AM_RANGE(0x700400, 0x7007ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::mia_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::tmnt_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w) /* title music & UPD7759C reset */
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_device, port_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(tmnt_upd_start_w)
- AM_RANGE(0xf000, 0xf000) AM_READ(tmnt_upd_busy_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::punkshot_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
- AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::lgtnfght_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::glfgreat_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf82f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::ssriders_audio_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tmnt_state::thndrx2_audio_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
- AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
-ADDRESS_MAP_END
+ map(0x1c0800, 0x1c081f).w(this, FUNC(tmnt_state::tmnt2_1c0800_w)).share("tmnt2_1c0800"); /* protection device */
+ map(0x5a0000, 0x5a001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w));
+ map(0x5c0600, 0x5c0603).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x5c0604, 0x5c0605).w(this, FUNC(tmnt_state::ssriders_soundkludge_w));
+ map(0x5c0700, 0x5c071f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x600000, 0x603fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w));
+}
+
+void tmnt_state::ssriders_main_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x104000, 0x107fff).ram(); /* main RAM */
+ map(0x140000, 0x140fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x183fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram");
+ map(0x1c0000, 0x1c0001).portr("P1");
+ map(0x1c0002, 0x1c0003).portr("P2");
+ map(0x1c0004, 0x1c0005).portr("P3");
+ map(0x1c0006, 0x1c0007).portr("P4");
+ map(0x1c0100, 0x1c0101).portr("COINS");
+ map(0x1c0102, 0x1c0103).r(this, FUNC(tmnt_state::ssriders_eeprom_r));
+ map(0x1c0200, 0x1c0201).w(this, FUNC(tmnt_state::ssriders_eeprom_w)); /* EEPROM and gfx control */
+ map(0x1c0300, 0x1c0301).w(this, FUNC(tmnt_state::ssriders_1c0300_w));
+ map(0x1c0400, 0x1c0401).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
+ map(0x1c0500, 0x1c057f).ram(); /* TMNT2 only (1J) unknown */
+ map(0x1c0800, 0x1c0801).r(this, FUNC(tmnt_state::ssriders_protection_r));
+ map(0x1c0800, 0x1c0803).w(this, FUNC(tmnt_state::ssriders_protection_w));
+ map(0x5a0000, 0x5a001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w));
+ map(0x5c0600, 0x5c0603).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x5c0604, 0x5c0605).w(this, FUNC(tmnt_state::ssriders_soundkludge_w));
+ map(0x5c0700, 0x5c071f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x600000, 0x603fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w));
+}
+
+void tmnt_state::sunsetbl_main_map(address_map &map)
+{
+ map(0x000000, 0x0bffff).rom();
+ map(0x104000, 0x107fff).ram(); /* main RAM */
+ map(0x14c000, 0x14cfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x14e700, 0x14e71f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x180000, 0x183fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram");
+ map(0x184000, 0x18ffff).ram();
+ map(0x1c0300, 0x1c0301).w(this, FUNC(tmnt_state::ssriders_1c0300_w));
+ map(0x1c0400, 0x1c0401).nopw();
+ map(0x5a0000, 0x5a001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w));
+ map(0x600000, 0x603fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w));
+ map(0x604020, 0x60402f).nopw(); /* written every frame */
+ map(0x604200, 0x604201).nopw(); /* watchdog */
+ map(0x6119e2, 0x6119e3).nopw(); /* written a lot in some test menus (PC=18204) */
+ map(0xc00000, 0xc00001).portr("P1");
+ map(0xc00002, 0xc00003).portr("P2");
+ map(0xc00004, 0xc00005).portr("P3");
+ map(0xc00006, 0xc00007).portr("P4");
+ map(0xc00200, 0xc00201).w(this, FUNC(tmnt_state::ssriders_eeprom_w)); /* EEPROM and gfx control */
+ map(0xc00404, 0xc00405).portr("COINS");
+ map(0xc00406, 0xc00407).r(this, FUNC(tmnt_state::sunsetbl_eeprom_r));
+ map(0xc00601, 0xc00601).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x75d288, 0x75d289).nopr(); // read repeatedly in some test menus (PC=181f2)
+}
+
+
+void tmnt_state::thndrx2_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* main RAM */
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30001f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x400000, 0x400003).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff);
+ map(0x500000, 0x50003f).rw(m_k054000, FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w));
+ map(0x500100, 0x500101).w(this, FUNC(tmnt_state::thndrx2_eeprom_w));
+ map(0x500200, 0x500201).portr("P1/COINS");
+ map(0x500202, 0x500203).r(this, FUNC(tmnt_state::thndrx2_eeprom_r));
+ map(0x500300, 0x500301).nopw(); /* watchdog reset? irq enable? */
+ map(0x600000, 0x607fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w));
+ map(0x700000, 0x700007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w));
+ map(0x700400, 0x7007ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w));
+}
+
+
+void tmnt_state::mia_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+}
+
+
+void tmnt_state::tmnt_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).rw(this, FUNC(tmnt_state::tmnt_sres_r), FUNC(tmnt_state::tmnt_sres_w)); /* title music & UPD7759C reset */
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd000, 0xd000).w(m_upd7759, FUNC(upd7759_device::port_w));
+ map(0xe000, 0xe000).w(this, FUNC(tmnt_state::tmnt_upd_start_w));
+ map(0xf000, 0xf000).r(this, FUNC(tmnt_state::tmnt_upd_busy_r));
+}
+
+
+void tmnt_state::punkshot_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(tmnt_state::sound_arm_nmi_w));
+ map(0xfc00, 0xfc2f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write));
+}
+
+
+void tmnt_state::lgtnfght_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc000, 0xc02f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write));
+}
+
+
+void tmnt_state::glfgreat_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf82f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(tmnt_state::sound_arm_nmi_w));
+}
+
+
+void tmnt_state::ssriders_audio_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa2f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0xfc00, 0xfc00).w(this, FUNC(tmnt_state::sound_arm_nmi_w));
+}
+
+
+void tmnt_state::thndrx2_audio_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).mirror(0x0010).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(tmnt_state::sound_arm_nmi_w));
+ map(0xfc00, 0xfc2f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write));
+}
READ8_MEMBER(tmnt_state::k054539_ctrl_r)
@@ -1063,17 +1082,18 @@ WRITE8_MEMBER(tmnt_state::k054539_ctrl_w)
m_k054539->write(space, 0x200 + offset, data, 0xff);
}
-ADDRESS_MAP_START(tmnt_state::prmrsocr_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xe100, 0xe12f) AM_READWRITE(k054539_ctrl_r, k054539_ctrl_w)
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
- AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(prmrsocr_audio_bankswitch_w)
-ADDRESS_MAP_END
+void tmnt_state::prmrsocr_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe0ff).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe100, 0xe12f).rw(this, 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));
+ map(0xf800, 0xf800).w(this, FUNC(tmnt_state::prmrsocr_audio_bankswitch_w));
+}
static INPUT_PORTS_START( cuebrick )
diff --git a/src/mame/drivers/tmspoker.cpp b/src/mame/drivers/tmspoker.cpp
index 1adcc453648..6aeb15315d2 100644
--- a/src/mame/drivers/tmspoker.cpp
+++ b/src/mame/drivers/tmspoker.cpp
@@ -326,15 +326,16 @@ void tmspoker_state::machine_reset()
* Memory Map Information *
*************************/
//59a
-ADDRESS_MAP_START(tmspoker_state::tmspoker_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1")
- AM_RANGE(0x2800, 0x2800) AM_READNOP AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2801, 0x2801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(tmspoker_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM //NVRAM?
- AM_RANGE(0x2000, 0x20ff) AM_RAM //color RAM?
-ADDRESS_MAP_END
+void tmspoker_state::tmspoker_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x0fff).bankr("bank1");
+ map(0x2800, 0x2800).nopr().w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x3000, 0x33ff).ram().w(this, FUNC(tmspoker_state::tmspoker_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram(); //NVRAM?
+ map(0x2000, 0x20ff).ram(); //color RAM?
+}
READ8_MEMBER(tmspoker_state::unk_r)
@@ -343,9 +344,10 @@ READ8_MEMBER(tmspoker_state::unk_r)
return 0;//0xff;//mame_rand(machine);
}
-ADDRESS_MAP_START(tmspoker_state::tmspoker_cru_map)
- AM_RANGE(0x0000, 0x07ff) AM_READ(unk_r)
-ADDRESS_MAP_END
+void tmspoker_state::tmspoker_cru_map(address_map &map)
+{
+ map(0x0000, 0x07ff).r(this, FUNC(tmspoker_state::unk_r));
+}
/* I/O byte R/W
diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp
index 17b10691b3d..cc6b1ca8099 100644
--- a/src/mame/drivers/tnzs.cpp
+++ b/src/mame/drivers/tnzs.cpp
@@ -720,155 +720,172 @@ WRITE8_MEMBER(kageki_state::csport_w)
}
}
-ADDRESS_MAP_START(tnzs_base_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf000, 0xf2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */
- AM_RANGE(0xf600, 0xf600) AM_READNOP AM_WRITE(ramrom_bankswitch_w)
- AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(extrmatn_state::prompal_main_map)
- AM_IMPORT_FROM(main_map)
+void tnzs_base_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).m(m_mainbank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xcfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0xd000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+ map(0xe000, 0xefff).ram().share("share1");
+ map(0xf000, 0xf2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xf300, 0xf303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */
+ map(0xf400, 0xf400).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */
+ map(0xf600, 0xf600).nopr().w(this, FUNC(tnzs_base_state::ramrom_bankswitch_w));
+ map(0xf800, 0xfbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void extrmatn_state::prompal_main_map(address_map &map)
+{
+ main_map(map);
/* arknoid2, extrmatn, plumppop and drtoppel have PROMs instead of RAM */
/* drtoppel writes here anyway! (maybe leftover from tests during development) */
- AM_RANGE(0xf800, 0xfbff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tnzsb_state::tnzsb_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf000, 0xf2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */
- AM_RANGE(0xf600, 0xf600) AM_WRITE(ramrom_bankswitch_w)
+ map(0xf800, 0xfbff).nopw();
+}
+
+void tnzsb_state::tnzsb_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).m(m_mainbank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xcfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0xd000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+ map(0xe000, 0xefff).ram().share("share1");
+ map(0xf000, 0xf2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xf300, 0xf303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */
+ map(0xf400, 0xf400).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */
+ map(0xf600, 0xf600).w(this, FUNC(tnzsb_state::ramrom_bankswitch_w));
/* kabukiz still writes here but it's not used (it's paletteram in type1 map) */
- AM_RANGE(0xf800, 0xfbff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tnzs_base_state::base_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(bankswitch1_w)
- AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tnzs_mcu_state::tnzs_sub_map)
- AM_IMPORT_FROM(base_sub_map)
- AM_RANGE(0xc000, 0xc001) AM_READWRITE(mcu_r, mcu_w) /* not present in insectx */
- AM_RANGE(0xa000, 0xa000) AM_WRITE(bankswitch1_w)
- AM_RANGE(0xf000, 0xf003) AM_READ(analog_r) /* paddles in arkanoid2/plumppop. The ports are */
+ map(0xf800, 0xfbff).nopw();
+}
+
+void tnzs_base_state::base_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("subbank");
+ map(0xa000, 0xa000).w(this, FUNC(tnzs_base_state::bankswitch1_w));
+ map(0xb000, 0xb001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().share("share1");
+}
+
+void tnzs_mcu_state::tnzs_sub_map(address_map &map)
+{
+ base_sub_map(map);
+ map(0xc000, 0xc001).rw(this, FUNC(tnzs_mcu_state::mcu_r), FUNC(tnzs_mcu_state::mcu_w)); /* not present in insectx */
+ map(0xa000, 0xa000).w(this, FUNC(tnzs_mcu_state::bankswitch1_w));
+ map(0xf000, 0xf003).r(this, FUNC(tnzs_mcu_state::analog_r)); /* paddles in arkanoid2/plumppop. The ports are */
/* read but not used by the other games, and are not read at */
/* all by insectx. */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(arknoid2_state::arknoid2_sub_map)
- AM_IMPORT_FROM(tnzs_sub_map)
- AM_RANGE(0xc000, 0xc001) AM_READWRITE(mcu_r, mcu_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kageki_state::kageki_sub_map)
- AM_IMPORT_FROM(base_sub_map)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(insectx_state::insectx_sub_map)
- AM_IMPORT_FROM(base_sub_map)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
+}
+
+void arknoid2_state::arknoid2_sub_map(address_map &map)
+{
+ tnzs_sub_map(map);
+ map(0xc000, 0xc001).rw(this, FUNC(arknoid2_state::mcu_r), FUNC(arknoid2_state::mcu_w));
+}
+
+void kageki_state::kageki_sub_map(address_map &map)
+{
+ base_sub_map(map);
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc001, 0xc001).portr("IN1");
+ map(0xc002, 0xc002).portr("IN2");
+}
+
+void insectx_state::insectx_sub_map(address_map &map)
+{
+ base_sub_map(map);
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc001, 0xc001).portr("IN1");
+ map(0xc002, 0xc002).portr("IN2");
+}
/* the later board is different, it has a third CPU (and of course no mcu) */
-ADDRESS_MAP_START(tnzsb_state::tnzsb_base_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(bankswitch1_w)
- AM_RANGE(0xb002, 0xb002) AM_READ_PORT("DSWA")
- AM_RANGE(0xb003, 0xb003) AM_READ_PORT("DSWB")
- AM_RANGE(0xb004, 0xb004) AM_WRITE(sound_command_w)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tnzsb_state::tnzsb_sub_map)
- AM_IMPORT_FROM(tnzsb_base_sub_map)
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kabukiz_state::kabukiz_sub_map)
- AM_IMPORT_FROM(tnzsb_base_sub_map)
- AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tnzsb_state::tnzsb_cpu2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(kabukiz_state::kabukiz_cpu2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tnzsb_state::tnzsb_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jpopnics_state::jpopnics_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xcfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8)
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8)
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") /* WORK RAM (shared by the 2 z80's) */
- AM_RANGE(0xf000, 0xf2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8)
- AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */
- AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */
- AM_RANGE(0xf600, 0xf600) AM_READNOP AM_WRITE(ramrom_bankswitch_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jpopnics_state::jpopnics_sub_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank")
-
- AM_RANGE(0xa000, 0xa000) AM_WRITE(subbankswitch_w)
- AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN1")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN2")
- AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSWA")
- AM_RANGE(0xc601, 0xc601) AM_READ_PORT("DSWB")
-
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
-
- AM_RANGE(0xf000, 0xf003) AM_DEVREAD("upd4701", upd4701_device, read_xy)
-ADDRESS_MAP_END
+void tnzsb_state::tnzsb_base_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("subbank");
+ map(0xa000, 0xa000).w(this, FUNC(tnzsb_state::bankswitch1_w));
+ map(0xb002, 0xb002).portr("DSWA");
+ map(0xb003, 0xb003).portr("DSWB");
+ map(0xb004, 0xb004).w(this, FUNC(tnzsb_state::sound_command_w));
+ map(0xc000, 0xc000).portr("IN0");
+ map(0xc001, 0xc001).portr("IN1");
+ map(0xc002, 0xc002).portr("IN2");
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().share("share1");
+}
+
+void tnzsb_state::tnzsb_sub_map(address_map &map)
+{
+ tnzsb_base_sub_map(map);
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void kabukiz_state::kabukiz_sub_map(address_map &map)
+{
+ tnzsb_base_sub_map(map);
+ map(0xf800, 0xfbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void tnzsb_state::tnzsb_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram();
+}
+
+void kabukiz_state::kabukiz_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("audiobank");
+ map(0xe000, 0xffff).ram();
+}
+
+void tnzsb_state::tnzsb_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void jpopnics_state::jpopnics_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).m(m_mainbank, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xcfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8));
+ map(0xd000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8));
+ map(0xe000, 0xefff).ram().share("share1"); /* WORK RAM (shared by the 2 z80's) */
+ map(0xf000, 0xf2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8));
+ map(0xf300, 0xf303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */
+ map(0xf400, 0xf400).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */
+ map(0xf600, 0xf600).nopr().w(this, FUNC(jpopnics_state::ramrom_bankswitch_w));
+ map(0xf800, 0xffff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void jpopnics_state::jpopnics_sub_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).bankr("subbank");
+
+ map(0xa000, 0xa000).w(this, FUNC(jpopnics_state::subbankswitch_w));
+ map(0xb000, 0xb001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xc000, 0xc000).portr("IN1");
+ map(0xc001, 0xc001).portr("IN2");
+ map(0xc600, 0xc600).portr("DSWA");
+ map(0xc601, 0xc601).portr("DSWB");
+
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().share("share1");
+
+ map(0xf000, 0xf003).r(m_upd4701, FUNC(upd4701_device::read_xy));
+}
/* RAM/ROM bank that maps at 0x8000-0xbfff on maincpu */
-ADDRESS_MAP_START(tnzs_base_state::mainbank_map)
- AM_RANGE(0x00000, 0x07fff) AM_RAM // instead of the first two banks of ROM being repeated redundantly the hardware maps RAM here
- AM_RANGE(0x08000, 0x1ffff) AM_ROM AM_REGION(":maincpu", 0x8000)
-ADDRESS_MAP_END
+void tnzs_base_state::mainbank_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram(); // instead of the first two banks of ROM being repeated redundantly the hardware maps RAM here
+ map(0x08000, 0x1ffff).rom().region(":maincpu", 0x8000);
+}
MACHINE_CONFIG_START(tnzs_base_state::tnzs_mainbank)
MCFG_DEVICE_ADD("mainbank", ADDRESS_MAP_BANK, 0)
diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp
index 4b0f58ab831..ffe0db02351 100644
--- a/src/mame/drivers/toaplan1.cpp
+++ b/src/mame/drivers/toaplan1.cpp
@@ -619,349 +619,369 @@ Stephh's and AWJ's notes (based on the games M68000 and Z80 code and some tests)
/***************************** 68000 Memory Map *****************************/
-ADDRESS_MAP_START(toaplan1_rallybik_state::rallybik_main_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x100000, 0x100001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x100004, 0x100007) AM_READWRITE(rallybik_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x100010, 0x10001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x140000, 0x140001) AM_READ_PORT("VBLANK")
+void toaplan1_rallybik_state::rallybik_main_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x07ffff).rom();
+ map(0x080000, 0x083fff).ram();
+ map(0x0c0000, 0x0c0fff).ram().share("spriteram");
+ map(0x100000, 0x100001).w(this, FUNC(toaplan1_rallybik_state::toaplan1_bcu_flipscreen_w));
+ map(0x100002, 0x100003).rw(this, FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_w));
+ map(0x100004, 0x100007).rw(this, FUNC(toaplan1_rallybik_state::rallybik_tileram16_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram16_w));
+ map(0x100010, 0x10001f).rw(this, FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_r), FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_w));
+ map(0x140000, 0x140001).portr("VBLANK");
// AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x140002, 0x140003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x140008, 0x14000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x144000, 0x1447ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x146000, 0x1467ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x180000, 0x180fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x1c0000, 0x1c0003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x1c8000, 0x1c8001) AM_WRITE(toaplan1_reset_sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::truxton_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x0c0004, 0x0c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x0c0006, 0x0c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
- AM_RANGE(0x100000, 0x100001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x100004, 0x100007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x100010, 0x10001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x140000, 0x140001) AM_READ_PORT("VBLANK")
+ map(0x140002, 0x140003).w(this, FUNC(toaplan1_rallybik_state::toaplan1_intenable_w));
+ map(0x140008, 0x14000f).w(this, FUNC(toaplan1_rallybik_state::toaplan1_bcu_control_w));
+ map(0x144000, 0x1447ff).ram().w(this, FUNC(toaplan1_rallybik_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x146000, 0x1467ff).ram().w(this, FUNC(toaplan1_rallybik_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x180000, 0x180fff).rw(this, FUNC(toaplan1_rallybik_state::toaplan1_shared_r), FUNC(toaplan1_rallybik_state::toaplan1_shared_w));
+ map(0x1c0000, 0x1c0003).w(this, FUNC(toaplan1_rallybik_state::toaplan1_tile_offsets_w));
+ map(0x1c8000, 0x1c8001).w(this, 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(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x0c0002, 0x0c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x0c0004, 0x0c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x0c0006, 0x0c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x100000, 0x100001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x100002, 0x100003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x100004, 0x100007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x100010, 0x10001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x140000, 0x140001).portr("VBLANK");
// AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x140002, 0x140003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x140008, 0x14000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x144000, 0x1447ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x146000, 0x1467ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x180000, 0x180fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x1c0000, 0x1c0003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x1c0006, 0x1c0007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(toaplan1_reset_sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::hellfire_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("VBLANK")
+ map(0x140002, 0x140003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x140008, 0x14000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x144000, 0x1447ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x146000, 0x1467ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x180000, 0x180fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x1c0000, 0x1c0003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x1c0006, 0x1c0007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x1d0000, 0x1d0001).w(this, FUNC(toaplan1_state::toaplan1_reset_sound_w));
+}
+
+void toaplan1_state::hellfire_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x047fff).ram();
+ map(0x080000, 0x080001).portr("VBLANK");
// AM_RANGE(0x080000, 0x080001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x080002, 0x080003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x080008, 0x08000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x084000, 0x0847ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x086000, 0x0867ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x0c0000, 0x0c0fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x100000, 0x100001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x100004, 0x100007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x100010, 0x10001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x140000, 0x140001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0x140002, 0x140003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x140004, 0x140005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x140006, 0x140007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
- AM_RANGE(0x180000, 0x180003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x180006, 0x180007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0x180008, 0x180009) AM_WRITE(toaplan1_reset_sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::zerowing_main_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x0c0006, 0x0c0007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK")
+ map(0x080002, 0x080003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x080008, 0x08000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x084000, 0x0847ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x086000, 0x0867ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x0c0000, 0x0c0fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x100000, 0x100001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x100002, 0x100003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x100004, 0x100007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x100010, 0x10001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x140000, 0x140001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x140002, 0x140003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x140004, 0x140005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x140006, 0x140007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x180000, 0x180003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x180006, 0x180007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x180008, 0x180009).w(this, FUNC(toaplan1_state::toaplan1_reset_sound_w));
+}
+
+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(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x0c0006, 0x0c0007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x400000, 0x400001).portr("VBLANK");
// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x440000, 0x440fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x480000, 0x480001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x480002, 0x480003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x480004, 0x480007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x480010, 0x48001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x4c0000, 0x4c0001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0x4c0002, 0x4c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x4c0004, 0x4c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x4c0006, 0x4c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::demonwld_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK")
+ map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x440000, 0x440fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x480000, 0x480001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x480002, 0x480003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x480004, 0x480007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x480010, 0x48001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x4c0000, 0x4c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x4c0002, 0x4c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x4c0004, 0x4c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x4c0006, 0x4c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+}
+
+void toaplan1_state::demonwld_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x400001).portr("VBLANK");
// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x600000, 0x600fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x800000, 0x800001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x800002, 0x800003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x800004, 0x800007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x800010, 0x80001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0xa00000, 0xa00001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0xa00002, 0xa00003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0xa00004, 0xa00005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0xa00006, 0xa00007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
- AM_RANGE(0xc00000, 0xc03fff) AM_RAM
- AM_RANGE(0xe00000, 0xe00003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0xe00006, 0xe00007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0xe00008, 0xe00009) AM_WRITE(toaplan1_reset_sound_w)
- AM_RANGE(0xe0000a, 0xe0000b) AM_WRITE(demonwld_dsp_ctrl_w) /* DSP Comms control */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::samesame_main_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x080006, 0x080007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM /* Frame done at $c1ada */
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("VBLANK")
+ map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x600000, 0x600fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x800000, 0x800001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x800002, 0x800003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x800004, 0x800007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x800010, 0x80001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0xa00000, 0xa00001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0xa00002, 0xa00003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0xa00004, 0xa00005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0xa00006, 0xa00007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0xc00000, 0xc03fff).ram();
+ map(0xe00000, 0xe00003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0xe00006, 0xe00007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0xe00008, 0xe00009).w(this, FUNC(toaplan1_state::toaplan1_reset_sound_w));
+ map(0xe0000a, 0xe0000b).w(this, FUNC(toaplan1_state::demonwld_dsp_ctrl_w)); /* DSP Comms control */
+}
+
+void toaplan1_state::samesame_main_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x07ffff).rom();
+ map(0x080000, 0x080003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x080006, 0x080007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x0c0000, 0x0c3fff).ram(); /* Frame done at $c1ada */
+ map(0x100000, 0x100001).portr("VBLANK");
// AM_RANGE(0x100000, 0x100001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x100002, 0x100003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x100008, 0x10000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x104000, 0x1047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x106000, 0x1067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x140000, 0x140001) AM_READ_PORT("P1")
- AM_RANGE(0x140002, 0x140003) AM_READ_PORT("P2")
- AM_RANGE(0x140004, 0x140005) AM_READ_PORT("DSWA")
- AM_RANGE(0x140006, 0x140007) AM_READ_PORT("DSWB")
- AM_RANGE(0x140008, 0x140009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x14000a, 0x14000b) AM_READ(samesame_port_6_word_r) /* Territory, and MCU ready */
- AM_RANGE(0x14000c, 0x14000d) AM_WRITE(samesame_coin_w) /* Coin counter/lockout */
- AM_RANGE(0x14000e, 0x14000f) AM_WRITE(samesame_mcu_w) /* Commands sent to HD647180 */
- AM_RANGE(0x180000, 0x180001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x180002, 0x180003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x180004, 0x180007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x180010, 0x18001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ(toaplan1_frame_done_r)
+ map(0x100002, 0x100003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x100008, 0x10000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x104000, 0x1047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x106000, 0x1067ff).ram().w(this, 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(0x14000a, 0x14000b).r(this, FUNC(toaplan1_state::samesame_port_6_word_r)); /* Territory, and MCU ready */
+ map(0x14000c, 0x14000d).w(this, FUNC(toaplan1_state::samesame_coin_w)); /* Coin counter/lockout */
+ map(0x14000e, 0x14000f).w(this, FUNC(toaplan1_state::samesame_mcu_w)); /* Commands sent to HD647180 */
+ map(0x180000, 0x180001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x180002, 0x180003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x180004, 0x180007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x180010, 0x18001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x1c0000, 0x1c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
// AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(?? disable sprite refresh ??)
- AM_RANGE(0x1c0002, 0x1c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x1c0004, 0x1c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x1c0006, 0x1c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::outzone_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x100004, 0x100005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x100006, 0x100007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
- AM_RANGE(0x140000, 0x140fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x200000, 0x200001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x200002, 0x200003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x200004, 0x200007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x200010, 0x20001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x240000, 0x243fff) AM_RAM
- AM_RANGE(0x300000, 0x300001) AM_READ_PORT("VBLANK")
+ map(0x1c0002, 0x1c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x1c0004, 0x1c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x1c0006, 0x1c0007).rw(this, 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(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x100002, 0x100003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x100004, 0x100005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x100006, 0x100007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x140000, 0x140fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x200000, 0x200001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x200002, 0x200003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x200004, 0x200007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x200010, 0x20001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x240000, 0x243fff).ram();
+ map(0x300000, 0x300001).portr("VBLANK");
// AM_RANGE(0x300000, 0x300001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x300002, 0x300003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x300008, 0x30000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x304000, 0x3047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x306000, 0x3067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x340000, 0x340003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x340006, 0x340007) AM_WRITE(toaplan1_fcu_flipscreen_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::outzonecv_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
+ map(0x300002, 0x300003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x300008, 0x30000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x304000, 0x3047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x306000, 0x3067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x340000, 0x340003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x340006, 0x340007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+}
+
+void toaplan1_state::outzonecv_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
// AM_RANGE(0x040000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x0c0006, 0x0c0007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK")
+ map(0x080000, 0x087fff).ram();
+ map(0x0c0000, 0x0c0003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x0c0006, 0x0c0007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x400000, 0x400001).portr("VBLANK");
// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x440000, 0x440fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w)
- AM_RANGE(0x480000, 0x480001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x480002, 0x480003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x480004, 0x480007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x480010, 0x48001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
- AM_RANGE(0x4c0000, 0x4c0001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0x4c0002, 0x4c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x4c0004, 0x4c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x4c0006, 0x4c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::vimana_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080003) AM_WRITE(toaplan1_tile_offsets_w)
- AM_RANGE(0x080006, 0x080007) AM_WRITE(toaplan1_fcu_flipscreen_w)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ(toaplan1_frame_done_r)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w)
- AM_RANGE(0x0c0004, 0x0c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w)
- AM_RANGE(0x0c0006, 0x0c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w)
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK")
+ map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x440000, 0x440fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w));
+ map(0x480000, 0x480001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x480002, 0x480003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x480004, 0x480007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x480010, 0x48001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+ map(0x4c0000, 0x4c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x4c0002, 0x4c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x4c0004, 0x4c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x4c0006, 0x4c0007).rw(this, 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(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w));
+ map(0x080006, 0x080007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w));
+ map(0x0c0000, 0x0c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r));
+ map(0x0c0002, 0x0c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w));
+ map(0x0c0004, 0x0c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w));
+ map(0x0c0006, 0x0c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w));
+ map(0x400000, 0x400001).portr("VBLANK");
// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??)
- AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w)
- AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w)
- AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette")
- AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette")
- AM_RANGE(0x440000, 0x4407ff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) /* inputs, coins and sound handled by 647180 MCU via this space */
- AM_RANGE(0x480000, 0x487fff) AM_RAM
- AM_RANGE(0x4c0000, 0x4c0001) AM_WRITE(toaplan1_bcu_flipscreen_w)
- AM_RANGE(0x4c0002, 0x4c0003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w)
- AM_RANGE(0x4c0004, 0x4c0007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w)
- AM_RANGE(0x4c0010, 0x4c001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w)
-ADDRESS_MAP_END
+ map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w));
+ map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w));
+ map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette");
+ map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette");
+ map(0x440000, 0x4407ff).rw(this, 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(0x4c0000, 0x4c0001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w));
+ map(0x4c0002, 0x4c0003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w));
+ map(0x4c0004, 0x4c0007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w));
+ map(0x4c0010, 0x4c001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w));
+}
/***************************** Z80 Memory Map *******************************/
-ADDRESS_MAP_START(toaplan1_state::toaplan1_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_rallybik_state::rallybik_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("P2")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x30, 0x30) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0) /* Coin counter/lockout */
- AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
- AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB")
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::truxton_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("P2")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x30, 0x30) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */
- AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
- AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB")
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x70, 0x70) AM_READ_PORT("TJUMP")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::hellfire_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSWB")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("TJUMP")
- AM_RANGE(0x30, 0x30) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */
- AM_RANGE(0x40, 0x40) AM_READ_PORT("P1")
- AM_RANGE(0x50, 0x50) AM_READ_PORT("P2")
- AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::zerowing_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("P2")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWA")
- AM_RANGE(0x28, 0x28) AM_READ_PORT("DSWB")
- AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x88, 0x88) AM_READ_PORT("TJUMP")
- AM_RANGE(0xa0, 0xa0) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */
- AM_RANGE(0xa8, 0xa9) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::demonwld_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("TJUMP")
- AM_RANGE(0x40, 0x40) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */
- AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0xa0, 0xa0) AM_READ_PORT("DSWB")
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P2")
- AM_RANGE(0xe0, 0xe0) AM_READ_PORT("DSWA")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan1_state::outzone_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */
- AM_RANGE(0x08, 0x08) AM_READ_PORT("DSWA")
- AM_RANGE(0x0c, 0x0c) AM_READ_PORT("DSWB")
- AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x14, 0x14) AM_READ_PORT("P1")
- AM_RANGE(0x18, 0x18) AM_READ_PORT("P2")
- AM_RANGE(0x1c, 0x1c) AM_READ_PORT("TJUMP")
-ADDRESS_MAP_END
+void toaplan1_state::toaplan1_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("sharedram");
+}
+
+void toaplan1_rallybik_state::rallybik_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x10, 0x10).portr("P2");
+ map(0x20, 0x20).portr("SYSTEM");
+ map(0x30, 0x30).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* 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));
+}
+
+void toaplan1_state::truxton_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x10, 0x10).portr("P2");
+ map(0x20, 0x20).portr("SYSTEM");
+ map(0x30, 0x30).w(this, 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));
+ map(0x70, 0x70).portr("TJUMP");
+}
+
+void toaplan1_state::hellfire_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSWA");
+ map(0x10, 0x10).portr("DSWB");
+ map(0x20, 0x20).portr("TJUMP");
+ map(0x30, 0x30).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
+ map(0x40, 0x40).portr("P1");
+ map(0x50, 0x50).portr("P2");
+ map(0x60, 0x60).portr("SYSTEM");
+ map(0x70, 0x71).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+}
+
+void toaplan1_state::zerowing_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("P1");
+ map(0x08, 0x08).portr("P2");
+ map(0x20, 0x20).portr("DSWA");
+ map(0x28, 0x28).portr("DSWB");
+ map(0x80, 0x80).portr("SYSTEM");
+ map(0x88, 0x88).portr("TJUMP");
+ map(0xa0, 0xa0).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
+ map(0xa8, 0xa9).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+}
+
+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(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
+ map(0x60, 0x60).portr("SYSTEM");
+ map(0x80, 0x80).portr("P1");
+ map(0xa0, 0xa0).portr("DSWB");
+ map(0xc0, 0xc0).portr("P2");
+ map(0xe0, 0xe0).portr("DSWA");
+}
+
+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(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */
+ map(0x08, 0x08).portr("DSWA");
+ map(0x0c, 0x0c).portr("DSWB");
+ map(0x10, 0x10).portr("SYSTEM");
+ map(0x14, 0x14).portr("P1");
+ map(0x18, 0x18).portr("P2");
+ map(0x1c, 0x1c).portr("TJUMP");
+}
/***************************** TMS32010 Memory Map **************************/
-ADDRESS_MAP_START(toaplan1_state::DSP_program_map)
- AM_RANGE(0x000, 0x7ff) AM_ROM
-ADDRESS_MAP_END
+void toaplan1_state::DSP_program_map(address_map &map)
+{
+ map(0x000, 0x7ff).rom();
+}
/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */
-ADDRESS_MAP_START(toaplan1_state::DSP_io_map)
- AM_RANGE(0, 0) AM_WRITE(demonwld_dsp_addrsel_w)
- AM_RANGE(1, 1) AM_READWRITE(demonwld_dsp_r, demonwld_dsp_w)
- AM_RANGE(3, 3) AM_WRITE(demonwld_dsp_bio_w)
-ADDRESS_MAP_END
+void toaplan1_state::DSP_io_map(address_map &map)
+{
+ map(0, 0).w(this, FUNC(toaplan1_state::demonwld_dsp_addrsel_w));
+ map(1, 1).rw(this, FUNC(toaplan1_state::demonwld_dsp_r), FUNC(toaplan1_state::demonwld_dsp_w));
+ map(3, 3).w(this, FUNC(toaplan1_state::demonwld_dsp_bio_w));
+}
/***************************** HD647180 Memory Map **************************/
-ADDRESS_MAP_START(toaplan1_state::vimana_hd647180_mem_map)
- AM_RANGE(0x00000, 0x03fff) AM_ROM /* Internal 16k byte ROM */
- AM_RANGE(0x08000, 0x087ff) AM_RAM AM_SHARE("sharedram") /* 2048 bytes of shared ram w/maincpu */
- AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 byte RAM */
-ADDRESS_MAP_END
+void toaplan1_state::vimana_hd647180_mem_map(address_map &map)
+{
+ map(0x00000, 0x03fff).rom(); /* Internal 16k byte ROM */
+ map(0x08000, 0x087ff).ram().share("sharedram"); /* 2048 bytes of shared ram w/maincpu */
+ map(0x0fe00, 0x0ffff).ram(); /* Internal 512 byte RAM */
+}
-ADDRESS_MAP_START(toaplan1_state::vimana_hd647180_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void toaplan1_state::vimana_hd647180_io_map(address_map &map)
+{
+ map.global_mask(0xff);
// lots of low level 647180 peripherals are not emulated yet, ddr regs, timer regs etc, see comments below
// also see http://bitsavers.trailing-edge.com/pdf/hitachi/_dataBooks/U94_HD647180X_8-Bit_Microcontroller_Hardware_Manual_Jan88.pdf particularly page 38 (pdf page 56)
- AM_RANGE(0x32, 0x32) AM_WRITENOP // DMA WAIT/Control register
- AM_RANGE(0x33, 0x33) AM_WRITENOP // IL (int vector low) register
- AM_RANGE(0x36, 0x36) AM_WRITENOP // refresh control register for RFSH pin
+ map(0x32, 0x32).nopw(); // DMA WAIT/Control register
+ map(0x33, 0x33).nopw(); // IL (int vector low) register
+ map(0x36, 0x36).nopw(); // refresh control register for RFSH pin
// 53: disable reg for port A
- AM_RANGE(0x60, 0x60) AM_READ(vimana_dswb_invert_r) // read/write port A; note these inputs seem to be inverted, unlike the DSWA ones.
+ map(0x60, 0x60).r(this, FUNC(toaplan1_state::vimana_dswb_invert_r)); // read/write port A; note these inputs seem to be inverted, unlike the DSWA ones.
// 61: read/write port B
// 62: read/write port C
// 63: read/write port D
// 64: read/write port E
// 65: read/write port F
- AM_RANGE(0x66, 0x66) AM_READ(vimana_tjump_invert_r) // read/write port G, bits 7 and 6 ALWAYS read as 1 due to port G being just 6 bits; note these inputs seem to be inverted, unlike the DSWA ones.
+ map(0x66, 0x66).r(this, FUNC(toaplan1_state::vimana_tjump_invert_r)); // read/write port G, bits 7 and 6 ALWAYS read as 1 due to port G being just 6 bits; note these inputs seem to be inverted, unlike the DSWA ones.
// 70: ddr for port A
- AM_RANGE(0x71, 0x71) AM_WRITENOP // ddr for port B
- AM_RANGE(0x72, 0x72) AM_WRITENOP // ddr for port C
- AM_RANGE(0x73, 0x73) AM_WRITENOP // ddr for port D
- AM_RANGE(0x74, 0x74) AM_WRITENOP // ddr for port E
- AM_RANGE(0x75, 0x75) AM_WRITENOP // ddr for port F
- AM_RANGE(0x80, 0x80) AM_READ_PORT("P1")
- AM_RANGE(0x81, 0x81) AM_READ_PORT("P2")
- AM_RANGE(0x82, 0x82) AM_READ_PORT("DSWA")
- AM_RANGE(0x83, 0x83) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x84, 0x84) AM_WRITE(toaplan1_coin_w) // Coin counter/lockout // needs verify
- AM_RANGE(0x87, 0x87) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x8f, 0x8f) AM_DEVREADWRITE("ymsnd", ym3812_device, read_port_r, write_port_w)
-ADDRESS_MAP_END
+ map(0x71, 0x71).nopw(); // ddr for port B
+ map(0x72, 0x72).nopw(); // ddr for port C
+ map(0x73, 0x73).nopw(); // ddr for port D
+ map(0x74, 0x74).nopw(); // ddr for port E
+ map(0x75, 0x75).nopw(); // ddr for port F
+ map(0x80, 0x80).portr("P1");
+ map(0x81, 0x81).portr("P2");
+ map(0x82, 0x82).portr("DSWA");
+ map(0x83, 0x83).portr("SYSTEM");
+ map(0x84, 0x84).w(this, 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));
+}
READ8_MEMBER(toaplan1_state::vimana_dswb_invert_r)
{
@@ -996,21 +1016,23 @@ READ8_MEMBER(toaplan1_state::samesame_cmdavailable_r)
else return 0x00;
};
-ADDRESS_MAP_START(toaplan1_state::samesame_hd647180_mem_map)
- AM_RANGE(0x00000, 0x03fff) AM_ROM /* Internal 16k byte ROM */
- AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 byte RAM */
-ADDRESS_MAP_END
+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 */
+}
-ADDRESS_MAP_START(toaplan1_state::samesame_hd647180_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void toaplan1_state::samesame_hd647180_io_map(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE(0x63, 0x63) AM_READ( samesame_cmdavailable_r )
- AM_RANGE(0xa0, 0xa0) AM_READ( samesame_soundlatch_r )
- AM_RANGE(0xb0, 0xb0) AM_WRITE( samesame_sound_done_w )
+ map(0x63, 0x63).r(this, FUNC(toaplan1_state::samesame_cmdavailable_r));
+ map(0xa0, 0xa0).r(this, FUNC(toaplan1_state::samesame_soundlatch_r));
+ map(0xb0, 0xb0).w(this, FUNC(toaplan1_state::samesame_sound_done_w));
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("ymsnd", ym3812_device, read_port_r, write_port_w)
-ADDRESS_MAP_END
+ 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));
+}
/*****************************************************************************
Generic Input Port definitions
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index c3ee8621b97..cb94b39099c 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -867,257 +867,271 @@ INTERRUPT_GEN_MEMBER(toaplan2_state::bbakraid_snd_interrupt)
-ADDRESS_MAP_START(toaplan2_state::tekipaki_68k_mem)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x020000, 0x03ffff) AM_ROM // extra for Whoopee
- AM_RANGE(0x080000, 0x082fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSWA")
- AM_RANGE(0x180010, 0x180011) AM_READ_PORT("DSWB")
- AM_RANGE(0x180020, 0x180021) AM_READ_PORT("SYS")
- AM_RANGE(0x180030, 0x180031) AM_READ_PORT("JMPR") // CPU 2 busy and Region Jumper block
- AM_RANGE(0x180040, 0x180041) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x180050, 0x180051) AM_READ_PORT("IN1")
- AM_RANGE(0x180060, 0x180061) AM_READ_PORT("IN2")
- AM_RANGE(0x180070, 0x180071) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(toaplan2_state::ghox_68k_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_READ(ghox_p2_h_analog_r)
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x100000, 0x100001) AM_READ(ghox_p1_h_analog_r)
- AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x180000, 0x180fff) AM_READWRITE(shared_ram_r, shared_ram_w)
- AM_RANGE(0x181000, 0x181001) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x18100c, 0x18100d) AM_READ_PORT("JMPR")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::dogyuun_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
- AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
- AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line
- AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x50000d) AM_DEVREADWRITE("gp9001_1", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) // test bit 8
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::kbash_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_READWRITE(shared_ram_r, shared_ram_w )
- AM_RANGE(0x208010, 0x208011) AM_READ_PORT("IN1")
- AM_RANGE(0x208014, 0x208015) AM_READ_PORT("IN2")
- AM_RANGE(0x208018, 0x208019) AM_READ_PORT("SYS")
- AM_RANGE(0x20801c, 0x20801d) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) // test bit 8
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::kbash2_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x104000, 0x10401f) AM_RAM // Sound related?
- AM_RANGE(0x200000, 0x200001) AM_NOP // Left over from original code - Sound Number write, Status read
- AM_RANGE(0x200002, 0x200003) AM_WRITENOP // Left over from original code - Reset Sound
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSWA")
- AM_RANGE(0x200008, 0x200009) AM_READ_PORT("DSWB")
- AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("JMPR")
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
- AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
- AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x200020, 0x200021) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x200024, 0x200025) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x200028, 0x200029) AM_WRITE(oki1_bankswitch_w)
- AM_RANGE(0x20002c, 0x20002d) AM_READ(video_count_r)
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::truxton2_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x20000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x300000, 0x300fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x402000, 0x402fff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x403000, 0x4031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x403200, 0x403fff) AM_RAM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM_WRITE(toaplan2_tx_gfxram16_w) AM_SHARE("tx_gfxram16")
- AM_RANGE(0x600000, 0x600001) AM_READ(video_count_r)
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSWB")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("JMPR")
- AM_RANGE(0x700006, 0x700007) AM_READ_PORT("IN1")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN2")
- AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("SYS")
- AM_RANGE(0x700010, 0x700011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x70001e, 0x70001f) AM_WRITE(toaplan2_coin_word_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::pipibibs_68k_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x082fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x190000, 0x190fff) AM_READWRITE(shared_ram_r, shared_ram_w)
- AM_RANGE(0x19c01c, 0x19c01d) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x19c020, 0x19c021) AM_READ_PORT("DSWA")
- AM_RANGE(0x19c024, 0x19c025) AM_READ_PORT("DSWB")
- AM_RANGE(0x19c028, 0x19c029) AM_READ_PORT("JMPR")
- AM_RANGE(0x19c02c, 0x19c02d) AM_READ_PORT("SYS")
- AM_RANGE(0x19c030, 0x19c031) AM_READ_PORT("IN1")
- AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
+void toaplan2_state::tekipaki_68k_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x020000, 0x03ffff).rom(); // extra for Whoopee
+ map(0x080000, 0x082fff).ram();
+ map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x14000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x180000, 0x180001).portr("DSWA");
+ map(0x180010, 0x180011).portr("DSWB");
+ map(0x180020, 0x180021).portr("SYS");
+ map(0x180030, 0x180031).portr("JMPR"); // CPU 2 busy and Region Jumper block
+ map(0x180040, 0x180041).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x180050, 0x180051).portr("IN1");
+ map(0x180060, 0x180061).portr("IN2");
+ map(0x180071, 0x180071).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+
+
+void toaplan2_state::ghox_68k_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x040001).r(this, FUNC(toaplan2_state::ghox_p2_h_analog_r));
+ map(0x080000, 0x083fff).ram();
+ map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x100000, 0x100001).r(this, FUNC(toaplan2_state::ghox_p1_h_analog_r));
+ map(0x140000, 0x14000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x180000, 0x180fff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x181000, 0x181001).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x18100c, 0x18100d).portr("JMPR");
+}
+
+
+void toaplan2_state::dogyuun_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x200010, 0x200011).portr("IN1");
+ map(0x200014, 0x200015).portr("IN2");
+ map(0x200018, 0x200019).portr("SYS");
+ map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line
+ map(0x210000, 0x21ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x50000d).rw(m_vdp1, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); // test bit 8
+}
+
+
+void toaplan2_state::kbash_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x200000, 0x200fff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x208010, 0x208011).portr("IN1");
+ map(0x208014, 0x208015).portr("IN2");
+ map(0x208018, 0x208019).portr("SYS");
+ map(0x20801c, 0x20801d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); // test bit 8
+}
+
+
+void toaplan2_state::kbash2_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x104000, 0x10401f).ram(); // Sound related?
+ map(0x200000, 0x200001).noprw(); // Left over from original code - Sound Number write, Status read
+ map(0x200002, 0x200003).nopw(); // Left over from original code - Reset Sound
+ map(0x200004, 0x200005).portr("DSWA");
+ map(0x200008, 0x200009).portr("DSWB");
+ map(0x20000c, 0x20000d).portr("JMPR");
+ map(0x200010, 0x200011).portr("IN1");
+ map(0x200014, 0x200015).portr("IN2");
+ map(0x200018, 0x200019).portr("SYS");
+ map(0x200021, 0x200021).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x200025, 0x200025).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x200028, 0x200029).w(this, FUNC(toaplan2_state::oki1_bankswitch_w));
+ map(0x20002c, 0x20002d).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+
+void toaplan2_state::truxton2_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200000, 0x20000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x401fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x402000, 0x402fff).ram().share("tx_lineselect");
+ map(0x403000, 0x4031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x403200, 0x403fff).ram();
+ map(0x500000, 0x50ffff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16");
+ map(0x600000, 0x600001).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x700000, 0x700001).portr("DSWA");
+ map(0x700002, 0x700003).portr("DSWB");
+ map(0x700004, 0x700005).portr("JMPR");
+ map(0x700006, 0x700007).portr("IN1");
+ map(0x700008, 0x700009).portr("IN2");
+ map(0x70000a, 0x70000b).portr("SYS");
+ map(0x700011, 0x700011).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700014, 0x700017).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x70001e, 0x70001f).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+}
+
+
+void toaplan2_state::pipibibs_68k_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x082fff).ram();
+ map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x140000, 0x14000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x190000, 0x190fff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x19c01c, 0x19c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x19c020, 0x19c021).portr("DSWA");
+ map(0x19c024, 0x19c025).portr("DSWB");
+ map(0x19c028, 0x19c029).portr("JMPR");
+ map(0x19c02c, 0x19c02d).portr("SYS");
+ map(0x19c030, 0x19c031).portr("IN1");
+ map(0x19c034, 0x19c035).portr("IN2");
+}
// odd scroll registers
-ADDRESS_MAP_START(toaplan2_state::pipibibi_bootleg_68k_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x082fff) AM_RAM
- AM_RANGE(0x083000, 0x0837ff) AM_DEVREADWRITE("gp9001", gp9001vdp_device, pipibibi_bootleg_spriteram16_r, pipibibi_bootleg_spriteram16_w) // SpriteRAM
- AM_RANGE(0x083800, 0x087fff) AM_RAM // SpriteRAM (unused)
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x120000, 0x120fff) AM_RAM // Copy of SpriteRAM ?
+void toaplan2_state::pipibibi_bootleg_68k_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x082fff).ram();
+ map(0x083000, 0x0837ff).rw(m_vdp0, FUNC(gp9001vdp_device::pipibibi_bootleg_spriteram16_r), FUNC(gp9001vdp_device::pipibibi_bootleg_spriteram16_w)); // SpriteRAM
+ map(0x083800, 0x087fff).ram(); // SpriteRAM (unused)
+ map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x120000, 0x120fff).ram(); // Copy of SpriteRAM ?
// AM_RANGE(0x13f000, 0x13f001) AM_WRITENOP // ???
- AM_RANGE(0x180000, 0x182fff) AM_DEVREADWRITE("gp9001", gp9001vdp_device, pipibibi_bootleg_videoram16_r, pipibibi_bootleg_videoram16_w) // TileRAM
- AM_RANGE(0x188000, 0x18800f) AM_DEVWRITE("gp9001", gp9001vdp_device, pipibibi_bootleg_scroll_w)
- AM_RANGE(0x190002, 0x190003) AM_READ(shared_ram_r) // Z80 ready ?
- AM_RANGE(0x190010, 0x190011) AM_WRITE(shared_ram_w) // Z80 task to perform
- AM_RANGE(0x19c01c, 0x19c01d) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x19c020, 0x19c021) AM_READ_PORT("DSWA")
- AM_RANGE(0x19c024, 0x19c025) AM_READ_PORT("DSWB")
- AM_RANGE(0x19c028, 0x19c029) AM_READ_PORT("JMPR")
- AM_RANGE(0x19c02c, 0x19c02d) AM_READ_PORT("SYS")
- AM_RANGE(0x19c030, 0x19c031) AM_READ_PORT("IN1")
- AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::fixeight_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1")
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN2")
- AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3")
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x280000, 0x28ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x502000, 0x5021ff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(toaplan2_tx_gfxram16_w) AM_SHARE("tx_gfxram16")
- AM_RANGE(0x700000, 0x700001) AM_WRITE(fixeight_subcpu_ctrl_w)
- AM_RANGE(0x800000, 0x800001) AM_READ(video_count_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::fixeightbl_68k_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // 0-7ffff ?
- AM_RANGE(0x100000, 0x10ffff) AM_RAM // 100000-107fff 105000-105xxx 106000-106xxx 108000 - related to sound ?
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1")
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN2")
- AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3")
- AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("DSWB")
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS")
- AM_RANGE(0x200014, 0x200015) AM_WRITE(fixeightbl_oki_bankswitch_w) // Sound banking. Code at $4084c, $5070
- AM_RANGE(0x200018, 0x200019) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x20001c, 0x20001d) AM_READ_PORT("DSWA")
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
- AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("maincpu", 0x80000)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::vfive_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
+ map(0x180000, 0x182fff).rw(m_vdp0, FUNC(gp9001vdp_device::pipibibi_bootleg_videoram16_r), FUNC(gp9001vdp_device::pipibibi_bootleg_videoram16_w)); // TileRAM
+ map(0x188000, 0x18800f).w(m_vdp0, FUNC(gp9001vdp_device::pipibibi_bootleg_scroll_w));
+ map(0x190002, 0x190003).r(this, FUNC(toaplan2_state::shared_ram_r)); // Z80 ready ?
+ map(0x190010, 0x190011).w(this, FUNC(toaplan2_state::shared_ram_w)); // Z80 task to perform
+ map(0x19c01c, 0x19c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x19c020, 0x19c021).portr("DSWA");
+ map(0x19c024, 0x19c025).portr("DSWB");
+ map(0x19c028, 0x19c029).portr("JMPR");
+ map(0x19c02c, 0x19c02d).portr("SYS");
+ map(0x19c030, 0x19c031).portr("IN1");
+ map(0x19c034, 0x19c035).portr("IN2");
+}
+
+
+void toaplan2_state::fixeight_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x200000, 0x200001).portr("IN1");
+ map(0x200004, 0x200005).portr("IN2");
+ map(0x200008, 0x200009).portr("IN3");
+ map(0x200010, 0x200011).portr("SYS");
+ map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x280000, 0x28ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x502000, 0x5021ff).ram().share("tx_lineselect");
+ map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x600000, 0x60ffff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16");
+ map(0x700000, 0x700001).w(this, FUNC(toaplan2_state::fixeight_subcpu_ctrl_w));
+ map(0x800000, 0x800001).r(this, FUNC(toaplan2_state::video_count_r));
+}
+
+
+void toaplan2_state::fixeightbl_68k_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // 0-7ffff ?
+ map(0x100000, 0x10ffff).ram(); // 100000-107fff 105000-105xxx 106000-106xxx 108000 - related to sound ?
+ map(0x200000, 0x200001).portr("IN1");
+ map(0x200004, 0x200005).portr("IN2");
+ map(0x200008, 0x200009).portr("IN3");
+ map(0x20000c, 0x20000d).portr("DSWB");
+ map(0x200010, 0x200011).portr("SYS");
+ map(0x200014, 0x200015).w(this, FUNC(toaplan2_state::fixeightbl_oki_bankswitch_w)); // Sound banking. Code at $4084c, $5070
+ map(0x200019, 0x200019).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x20001c, 0x20001d).portr("DSWA");
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x800000, 0x87ffff).rom().region("maincpu", 0x80000);
+}
+
+
+void toaplan2_state::vfive_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram();
// AM_RANGE(0x200000, 0x20ffff) AM_NOP // Read at startup by broken ROM checksum code - see notes
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
- AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
- AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line
- AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::batsugun_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
- AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
- AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line
- AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x50000d) AM_DEVREADWRITE("gp9001_1", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan2_state::pwrkick_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") // Only 10022C-10037B is actually saved as NVRAM
- AM_RANGE(0x104000, 0x10ffff) AM_RAM
-
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff )
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSWB")
- AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("IN2")
- AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSWC")
- AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS")
- AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w)
- AM_RANGE(0x700034, 0x700035) AM_WRITE8(pwrkick_coin_w, 0x00ff)
- AM_RANGE(0x700038, 0x700039) AM_WRITE8(pwrkick_coin_lockout_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan2_state::othldrby_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") // Only 10331E-103401 is actually saved as NVRAM
- AM_RANGE(0x104000, 0x10ffff) AM_RAM
-
- AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff )
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSWB")
- AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1")
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("IN2")
- AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS")
- AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w)
- AM_RANGE(0x700034, 0x700035) AM_WRITE(toaplan2_coin_word_w)
-ADDRESS_MAP_END
+ map(0x200010, 0x200011).portr("IN1");
+ map(0x200014, 0x200015).portr("IN2");
+ map(0x200018, 0x200019).portr("SYS");
+ map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line
+ map(0x210000, 0x21ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r));
+}
+
+
+void toaplan2_state::batsugun_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x200010, 0x200011).portr("IN1");
+ map(0x200014, 0x200015).portr("IN2");
+ map(0x200018, 0x200019).portr("SYS");
+ map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line
+ map(0x210000, 0x21ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x50000d).rw(m_vdp1, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r));
+}
+
+void toaplan2_state::pwrkick_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("nvram"); // Only 10022C-10037B is actually saved as NVRAM
+ map(0x104000, 0x10ffff).ram();
+
+ map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x700004, 0x700005).portr("DSWA");
+ map(0x700008, 0x700009).portr("DSWB");
+ map(0x70000c, 0x70000d).portr("IN1");
+ map(0x700014, 0x700015).portr("IN2");
+ map(0x700018, 0x700019).portr("DSWC");
+ map(0x70001c, 0x70001d).portr("SYS");
+ map(0x700030, 0x700031).w(this, FUNC(toaplan2_state::oki_bankswitch_w));
+ map(0x700035, 0x700035).w(this, FUNC(toaplan2_state::pwrkick_coin_w));
+ map(0x700039, 0x700039).w(this, FUNC(toaplan2_state::pwrkick_coin_lockout_w));
+}
+
+void toaplan2_state::othldrby_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram().share("nvram"); // Only 10331E-103401 is actually saved as NVRAM
+ map(0x104000, 0x10ffff).ram();
+
+ map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x700004, 0x700005).portr("DSWA");
+ map(0x700008, 0x700009).portr("DSWB");
+ map(0x70000c, 0x70000d).portr("IN1");
+ map(0x700010, 0x700011).portr("IN2");
+ map(0x70001c, 0x70001d).portr("SYS");
+ map(0x700030, 0x700031).w(this, FUNC(toaplan2_state::oki_bankswitch_w));
+ map(0x700034, 0x700035).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+}
WRITE16_MEMBER(toaplan2_state::enmadaio_oki_bank_w)
@@ -1135,290 +1149,310 @@ WRITE16_MEMBER(toaplan2_state::enmadaio_oki_bank_w)
}
-ADDRESS_MAP_START(toaplan2_state::enmadaio_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM // AM_SHARE("nvram")
- AM_RANGE(0x104000, 0x10ffff) AM_RAM
-
- AM_RANGE(0x200000, 0x20000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x300000, 0x300fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
-
- AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
-
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA")
- AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("MISC2")
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("MISC3")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("MISC4")
- AM_RANGE(0x700018, 0x700019) AM_READ_PORT("SYS")
- AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("UNK") //AM_READ_PORT("SYS")
-
- AM_RANGE(0x700020, 0x700021) AM_WRITE(enmadaio_oki_bank_w) // oki bank
-
- AM_RANGE(0x700028, 0x700029) AM_WRITENOP
- AM_RANGE(0x70003c, 0x70003d) AM_WRITENOP
- AM_RANGE(0x70002c, 0x70002d) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan2_state::snowbro2_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSWB")
- AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1")
- AM_RANGE(0x700010, 0x700011) AM_READ_PORT("IN2")
- AM_RANGE(0x700014, 0x700015) AM_READ_PORT("IN3")
- AM_RANGE(0x700018, 0x700019) AM_READ_PORT("IN4")
- AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS")
- AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w)
- AM_RANGE(0x700034, 0x700035) AM_WRITE(toaplan2_coin_word_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::mahoudai_68k_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x218000, 0x21bfff) AM_READWRITE(shared_ram_r, shared_ram_w)
- AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1")
- AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2")
- AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS")
- AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA")
- AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB")
- AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
- AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x401000, 0x4017ff) AM_RAM // Unused palette RAM
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x503200, 0x503fff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::shippumd_68k_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x218000, 0x21bfff) AM_READWRITE(shared_ram_r, shared_ram_w)
+void toaplan2_state::enmadaio_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x103fff).ram(); // AM_SHARE("nvram")
+ map(0x104000, 0x10ffff).ram();
+
+ map(0x200000, 0x20000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x400000, 0x400003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x500001, 0x500001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+
+ map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r));
+
+ map(0x700004, 0x700005).portr("DSWA");
+ map(0x70000c, 0x70000d).portr("MISC2");
+ map(0x700010, 0x700011).portr("MISC3");
+ map(0x700014, 0x700015).portr("MISC4");
+ map(0x700018, 0x700019).portr("SYS");
+ map(0x70001c, 0x70001d).portr("UNK"); //AM_READ_PORT("SYS")
+
+ map(0x700020, 0x700021).w(this, FUNC(toaplan2_state::enmadaio_oki_bank_w)); // oki bank
+
+ map(0x700028, 0x700029).nopw();
+ map(0x70003c, 0x70003d).nopw();
+ map(0x70002c, 0x70002d).nopw();
+}
+
+void toaplan2_state::snowbro2_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x500003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x700000, 0x700001).portr("JMPR");
+ map(0x700004, 0x700005).portr("DSWA");
+ map(0x700008, 0x700009).portr("DSWB");
+ map(0x70000c, 0x70000d).portr("IN1");
+ map(0x700010, 0x700011).portr("IN2");
+ map(0x700014, 0x700015).portr("IN3");
+ map(0x700018, 0x700019).portr("IN4");
+ map(0x70001c, 0x70001d).portr("SYS");
+ map(0x700030, 0x700031).w(this, FUNC(toaplan2_state::oki_bankswitch_w));
+ map(0x700034, 0x700035).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+}
+
+
+void toaplan2_state::mahoudai_68k_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x218000, 0x21bfff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x21c01c, 0x21c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x21c020, 0x21c021).portr("IN1");
+ map(0x21c024, 0x21c025).portr("IN2");
+ map(0x21c028, 0x21c029).portr("SYS");
+ map(0x21c02c, 0x21c02d).portr("DSWA");
+ map(0x21c030, 0x21c031).portr("DSWB");
+ map(0x21c034, 0x21c035).portr("JMPR");
+ map(0x21c03c, 0x21c03d).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x401000, 0x4017ff).ram(); // Unused palette RAM
+ map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x502000, 0x502fff).ram().share("tx_lineselect");
+ map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x503200, 0x503fff).ram();
+}
+
+
+void toaplan2_state::shippumd_68k_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x218000, 0x21bfff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
// AM_RANGE(0x21c008, 0x21c009) AM_WRITENOP // ???
- AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(shippumd_coin_word_w) // Coin count/lock + oki bankswitch
- AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1")
- AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2")
- AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS")
- AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA")
- AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB")
- AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
- AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x401000, 0x4017ff) AM_RAM // Unused palette RAM
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x503200, 0x503fff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::bgaregga_68k_mem)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x218000, 0x21bfff) AM_READWRITE(shared_ram_r, shared_ram_w)
- AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1")
- AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2")
- AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS")
- AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA")
- AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB")
- AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
- AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)
- AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x503200, 0x503fff) AM_RAM
- AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::batrider_68k_mem)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+ map(0x21c01c, 0x21c01d).w(this, FUNC(toaplan2_state::shippumd_coin_word_w)); // Coin count/lock + oki bankswitch
+ map(0x21c020, 0x21c021).portr("IN1");
+ map(0x21c024, 0x21c025).portr("IN2");
+ map(0x21c028, 0x21c029).portr("SYS");
+ map(0x21c02c, 0x21c02d).portr("DSWA");
+ map(0x21c030, 0x21c031).portr("DSWB");
+ map(0x21c034, 0x21c035).portr("JMPR");
+ map(0x21c03c, 0x21c03d).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x401000, 0x4017ff).ram(); // Unused palette RAM
+ map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x502000, 0x502fff).ram().share("tx_lineselect");
+ map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x503200, 0x503fff).ram();
+}
+
+
+void toaplan2_state::bgaregga_68k_mem(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram();
+ map(0x218000, 0x21bfff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
+ map(0x21c01c, 0x21c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x21c020, 0x21c021).portr("IN1");
+ map(0x21c024, 0x21c025).portr("IN2");
+ map(0x21c028, 0x21c029).portr("SYS");
+ map(0x21c02c, 0x21c02d).portr("DSWA");
+ map(0x21c030, 0x21c031).portr("DSWB");
+ map(0x21c034, 0x21c035).portr("JMPR");
+ map(0x21c03c, 0x21c03d).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
+ map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x502000, 0x502fff).ram().share("tx_lineselect");
+ map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x503200, 0x503fff).ram();
+ map(0x600001, 0x600001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
+
+
+void toaplan2_state::batrider_68k_mem(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x202000, 0x202fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x203000, 0x2031ff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x203200, 0x2033ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x203400, 0x207fff) AM_RAM AM_SHARE("mainram16")
- AM_RANGE(0x208000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x37ffff) AM_READ(batrider_z80rom_r)
- AM_RANGE(0x400000, 0x40000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_alt_r, gp9001_vdp_alt_w)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("SYS-DSW")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW")
- AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r)
- AM_RANGE(0x500008, 0x500009) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x50000a, 0x50000b) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x50000c, 0x50000d) AM_READ(batrider_z80_busack_r)
- AM_RANGE(0x500010, 0x500011) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x500020, 0x500021) AM_WRITE(batrider_soundlatch_w)
- AM_RANGE(0x500022, 0x500023) AM_WRITE(batrider_soundlatch2_w)
- AM_RANGE(0x500024, 0x500025) AM_WRITE(batrider_unknown_sound_w)
- AM_RANGE(0x500026, 0x500027) AM_WRITE(batrider_clear_sndirq_w)
- AM_RANGE(0x500060, 0x500061) AM_WRITE(batrider_z80_busreq_w)
- AM_RANGE(0x500080, 0x500081) AM_WRITE(batrider_textdata_dma_w)
- AM_RANGE(0x500082, 0x500083) AM_WRITE(batrider_unknown_dma_w)
- AM_RANGE(0x5000c0, 0x5000cf) AM_WRITE(batrider_objectbank_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::bbakraid_68k_mem)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
+ map(0x200000, 0x201fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x202000, 0x202fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x203000, 0x2031ff).ram().share("tx_lineselect");
+ map(0x203200, 0x2033ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x203400, 0x207fff).ram().share("mainram16");
+ map(0x208000, 0x20ffff).ram();
+ map(0x300000, 0x37ffff).r(this, FUNC(toaplan2_state::batrider_z80rom_r));
+ map(0x400000, 0x40000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_alt_r), FUNC(gp9001vdp_device::gp9001_vdp_alt_w));
+ map(0x500000, 0x500001).portr("IN");
+ map(0x500002, 0x500003).portr("SYS-DSW");
+ map(0x500004, 0x500005).portr("DSW");
+ map(0x500006, 0x500007).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x500009, 0x500009).r("soundlatch3", FUNC(generic_latch_8_device::read));
+ map(0x50000b, 0x50000b).r("soundlatch4", FUNC(generic_latch_8_device::read));
+ map(0x50000c, 0x50000d).r(this, FUNC(toaplan2_state::batrider_z80_busack_r));
+ map(0x500010, 0x500011).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x500020, 0x500021).w(this, FUNC(toaplan2_state::batrider_soundlatch_w));
+ map(0x500022, 0x500023).w(this, FUNC(toaplan2_state::batrider_soundlatch2_w));
+ map(0x500024, 0x500025).w(this, FUNC(toaplan2_state::batrider_unknown_sound_w));
+ map(0x500026, 0x500027).w(this, FUNC(toaplan2_state::batrider_clear_sndirq_w));
+ map(0x500060, 0x500061).w(this, FUNC(toaplan2_state::batrider_z80_busreq_w));
+ map(0x500080, 0x500081).w(this, FUNC(toaplan2_state::batrider_textdata_dma_w));
+ map(0x500082, 0x500083).w(this, FUNC(toaplan2_state::batrider_unknown_dma_w));
+ map(0x5000c0, 0x5000cf).w(this, FUNC(toaplan2_state::batrider_objectbank_w));
+}
+
+
+void toaplan2_state::bbakraid_68k_mem(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram")
- AM_RANGE(0x202000, 0x202fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x203000, 0x2031ff) AM_RAM AM_SHARE("tx_lineselect")
- AM_RANGE(0x203200, 0x2033ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll")
- AM_RANGE(0x203400, 0x207fff) AM_RAM AM_SHARE("mainram16")
- AM_RANGE(0x208000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x33ffff) AM_READ(batrider_z80rom_r)
- AM_RANGE(0x400000, 0x40000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_alt_r, gp9001_vdp_alt_w)
- AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN")
- AM_RANGE(0x500002, 0x500003) AM_READ_PORT("SYS-DSW")
- AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW")
- AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r)
- AM_RANGE(0x500008, 0x500009) AM_WRITE(toaplan2_coin_word_w)
- AM_RANGE(0x500010, 0x500011) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x500012, 0x500013) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff)
- AM_RANGE(0x500014, 0x500015) AM_WRITE(batrider_soundlatch_w)
- AM_RANGE(0x500016, 0x500017) AM_WRITE(batrider_soundlatch2_w)
- AM_RANGE(0x500018, 0x500019) AM_READ(bbakraid_eeprom_r)
- AM_RANGE(0x50001a, 0x50001b) AM_WRITE(batrider_unknown_sound_w)
- AM_RANGE(0x50001c, 0x50001d) AM_WRITE(batrider_clear_sndirq_w)
- AM_RANGE(0x50001e, 0x50001f) AM_WRITE(bbakraid_eeprom_w)
- AM_RANGE(0x500080, 0x500081) AM_WRITE(batrider_textdata_dma_w)
- AM_RANGE(0x500082, 0x500083) AM_WRITE(batrider_unknown_dma_w)
- AM_RANGE(0x5000c0, 0x5000cf) AM_WRITE(batrider_objectbank_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(toaplan2_state::pipibibs_sound_z80_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::raizing_sound_z80_mem)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe00e, 0xe00e) AM_WRITE(toaplan2_coin_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::bgaregga_sound_z80_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xe006, 0xe008) AM_WRITE(raizing_oki_bankswitch_w)
- AM_RANGE(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_w)
- AM_RANGE(0xe00c, 0xe00c) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0xe01c, 0xe01c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe01d, 0xe01d) AM_READ(bgaregga_E01D_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::batrider_sound_z80_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::batrider_sound_z80_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
- AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write)
- AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w)
- AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
- AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x88, 0x88) AM_WRITE(raizing_z80_bankswitch_w)
- AM_RANGE(0xc0, 0xc6) AM_WRITE(raizing_oki_bankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::bbakraid_sound_z80_mem)
- AM_RANGE(0x0000, 0xbfff) AM_ROM // No banking? ROM only contains code and data up to 0x28DC
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::bbakraid_sound_z80_port)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
- AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write)
- AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w)
- AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
- AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::v25_mem)
- AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x00004, 0x00004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::kbash_v25_mem)
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x04002, 0x04002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_ROM AM_REGION("audiocpu", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::fixeight_v25_mem)
- AM_RANGE(0x00000, 0x00000) AM_READ_PORT("IN1")
- AM_RANGE(0x00002, 0x00002) AM_READ_PORT("IN2")
- AM_RANGE(0x00004, 0x00004) AM_READ_PORT("IN3")
- AM_RANGE(0x0000a, 0x0000b) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x0000c, 0x0000c) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
+ map(0x200000, 0x201fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
+ map(0x202000, 0x202fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x203000, 0x2031ff).ram().share("tx_lineselect");
+ map(0x203200, 0x2033ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
+ map(0x203400, 0x207fff).ram().share("mainram16");
+ map(0x208000, 0x20ffff).ram();
+ map(0x300000, 0x33ffff).r(this, FUNC(toaplan2_state::batrider_z80rom_r));
+ map(0x400000, 0x40000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_alt_r), FUNC(gp9001vdp_device::gp9001_vdp_alt_w));
+ map(0x500000, 0x500001).portr("IN");
+ map(0x500002, 0x500003).portr("SYS-DSW");
+ map(0x500004, 0x500005).portr("DSW");
+ map(0x500006, 0x500007).r(this, FUNC(toaplan2_state::video_count_r));
+ map(0x500008, 0x500009).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w));
+ map(0x500011, 0x500011).r("soundlatch3", FUNC(generic_latch_8_device::read));
+ map(0x500013, 0x500013).r("soundlatch4", FUNC(generic_latch_8_device::read));
+ map(0x500014, 0x500015).w(this, FUNC(toaplan2_state::batrider_soundlatch_w));
+ map(0x500016, 0x500017).w(this, FUNC(toaplan2_state::batrider_soundlatch2_w));
+ map(0x500018, 0x500019).r(this, FUNC(toaplan2_state::bbakraid_eeprom_r));
+ map(0x50001a, 0x50001b).w(this, FUNC(toaplan2_state::batrider_unknown_sound_w));
+ map(0x50001c, 0x50001d).w(this, FUNC(toaplan2_state::batrider_clear_sndirq_w));
+ map(0x50001e, 0x50001f).w(this, FUNC(toaplan2_state::bbakraid_eeprom_w));
+ map(0x500080, 0x500081).w(this, FUNC(toaplan2_state::batrider_textdata_dma_w));
+ map(0x500082, 0x500083).w(this, FUNC(toaplan2_state::batrider_unknown_dma_w));
+ map(0x5000c0, 0x5000cf).w(this, FUNC(toaplan2_state::batrider_objectbank_w));
+}
+
+
+
+void toaplan2_state::pipibibs_sound_z80_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("shared_ram");
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+}
+
+
+void toaplan2_state::raizing_sound_z80_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram().share("shared_ram");
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe004, 0xe004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe00e, 0xe00e).w(this, FUNC(toaplan2_state::toaplan2_coin_w));
+}
+
+
+void toaplan2_state::bgaregga_sound_z80_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram().share("shared_ram");
+ map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe004, 0xe004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xe006, 0xe008).w(this, FUNC(toaplan2_state::raizing_oki_bankswitch_w));
+ map(0xe00a, 0xe00a).w(this, FUNC(toaplan2_state::raizing_z80_bankswitch_w));
+ map(0xe00c, 0xe00c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0xe01c, 0xe01c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe01d, 0xe01d).r(this, FUNC(toaplan2_state::bgaregga_E01D_r));
+}
+
+
+void toaplan2_state::batrider_sound_z80_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).ram();
+}
+
+
+void toaplan2_state::batrider_sound_z80_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).w("soundlatch3", FUNC(generic_latch_8_device::write));
+ map(0x42, 0x42).w("soundlatch4", FUNC(generic_latch_8_device::write));
+ map(0x44, 0x44).w(this, FUNC(toaplan2_state::batrider_sndirq_w));
+ map(0x46, 0x46).w(this, FUNC(toaplan2_state::batrider_clear_nmi_w));
+ map(0x48, 0x48).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4a, 0x4a).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0x80, 0x81).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x82, 0x82).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x84, 0x84).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x88, 0x88).w(this, FUNC(toaplan2_state::raizing_z80_bankswitch_w));
+ map(0xc0, 0xc6).w(this, FUNC(toaplan2_state::raizing_oki_bankswitch_w));
+}
+
+void toaplan2_state::bbakraid_sound_z80_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).rom(); // No banking? ROM only contains code and data up to 0x28DC
+ map(0xc000, 0xffff).ram();
+}
+
+
+void toaplan2_state::bbakraid_sound_z80_port(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).w("soundlatch3", FUNC(generic_latch_8_device::write));
+ map(0x42, 0x42).w("soundlatch4", FUNC(generic_latch_8_device::write));
+ map(0x44, 0x44).w(this, FUNC(toaplan2_state::batrider_sndirq_w));
+ map(0x46, 0x46).w(this, FUNC(toaplan2_state::batrider_clear_nmi_w));
+ map(0x48, 0x48).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4a, 0x4a).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
+ map(0x80, 0x81).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+}
+
+
+void toaplan2_state::v25_mem(address_map &map)
+{
+ map(0x00000, 0x00001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x00004, 0x00004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram");
+}
+
+
+void toaplan2_state::kbash_v25_mem(address_map &map)
+{
+ map(0x00000, 0x007ff).ram().share("shared_ram");
+ map(0x04000, 0x04001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x04002, 0x04002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x80000, 0x87fff).mirror(0x78000).rom().region("audiocpu", 0);
+}
+
+
+void toaplan2_state::fixeight_v25_mem(address_map &map)
+{
+ map(0x00000, 0x00000).portr("IN1");
+ map(0x00002, 0x00002).portr("IN2");
+ map(0x00004, 0x00004).portr("IN3");
+ map(0x0000a, 0x0000b).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x0000c, 0x0000c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram");
+}
-ADDRESS_MAP_START(toaplan2_state::vfive_v25_mem)
- AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(toaplan2_state::fixeightbl_oki)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toaplan2_state::enmadaio_oki)
- AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
+
+void toaplan2_state::vfive_v25_mem(address_map &map)
+{
+ map(0x00000, 0x00001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram");
+}
+
+
+void toaplan2_state::fixeightbl_oki(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("bank1");
+}
+
+void toaplan2_state::enmadaio_oki(address_map &map)
+{
+ map(0x00000, 0x3ffff).bankr("bank1");
+}
@@ -1428,39 +1462,42 @@ READ8_MEMBER(toaplan2_state::tekipaki_cmdavailable_r)
else return 0x00;
};
-ADDRESS_MAP_START(toaplan2_state::hd647180_mem_map)
- AM_RANGE(0x00000, 0x03fff) AM_ROM /* Internal 16k byte ROM */
- AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 byte RAM */
-ADDRESS_MAP_END
+void toaplan2_state::hd647180_mem_map(address_map &map)
+{
+ map(0x00000, 0x03fff).rom(); /* Internal 16k byte ROM */
+ map(0x0fe00, 0x0ffff).ram(); /* Internal 512 byte RAM */
+}
-ADDRESS_MAP_START(toaplan2_state::hd647180_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void toaplan2_state::hd647180_io_map(address_map &map)
+{
+ map.global_mask(0xff);
- AM_RANGE(0x60, 0x60) AM_READ(tekipaki_cmdavailable_r)
- AM_RANGE(0x84, 0x84) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ map(0x60, 0x60).r(this, FUNC(toaplan2_state::tekipaki_cmdavailable_r));
+ map(0x84, 0x84).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x83, 0x83) AM_DEVREADWRITE("ymsnd", ym3812_device, read_port_r, write_port_w)
-ADDRESS_MAP_END
+ map(0x82, 0x82).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x83, 0x83).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w));
+}
-ADDRESS_MAP_START(toaplan2_state::ghox_hd647180_mem_map)
- AM_RANGE(0x00000, 0x03fff) AM_ROM // Internal 16k byte ROM
- AM_RANGE(0x0fe00, 0x0ffff) AM_RAM // Internal 512 byte RAM
- AM_RANGE(0x3fe00, 0x3ffff) AM_RAM // Relocated internal RAM (RMCR = 30)
+void toaplan2_state::ghox_hd647180_mem_map(address_map &map)
+{
+ map(0x00000, 0x03fff).rom(); // Internal 16k byte ROM
+ map(0x0fe00, 0x0ffff).ram(); // Internal 512 byte RAM
+ map(0x3fe00, 0x3ffff).ram(); // Relocated internal RAM (RMCR = 30)
- AM_RANGE(0x40000, 0x407ff) AM_RAM AM_SHARE("shared_ram")
+ map(0x40000, 0x407ff).ram().share("shared_ram");
- AM_RANGE(0x80002, 0x80002) AM_READ_PORT("DSWA")
- AM_RANGE(0x80004, 0x80004) AM_READ_PORT("DSWB")
- AM_RANGE(0x80006, 0x80006) AM_READNOP // nothing?
- AM_RANGE(0x80008, 0x80008) AM_READ_PORT("IN1")
- AM_RANGE(0x8000a, 0x8000a) AM_READ_PORT("IN2")
+ map(0x80002, 0x80002).portr("DSWA");
+ map(0x80004, 0x80004).portr("DSWB");
+ map(0x80006, 0x80006).nopr(); // nothing?
+ map(0x80008, 0x80008).portr("IN1");
+ map(0x8000a, 0x8000a).portr("IN2");
- AM_RANGE(0x8000c, 0x8000e) AM_READ_PORT("SYS")
+ map(0x8000c, 0x8000e).portr("SYS");
- AM_RANGE(0x8000e, 0x8000f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
-ADDRESS_MAP_END
+ map(0x8000e, 0x8000f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+}
/*****************************************************************************
Input Port definitions
diff --git a/src/mame/drivers/toki.cpp b/src/mame/drivers/toki.cpp
index 60070204004..6aa854c7cb7 100644
--- a/src/mame/drivers/toki.cpp
+++ b/src/mame/drivers/toki.cpp
@@ -142,106 +142,113 @@ WRITE8_MEMBER(toki_state::tokib_adpcm_data_w)
/*****************************************************************************/
-ADDRESS_MAP_START(toki_state::toki_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x06d7ff) AM_RAM
- AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(background1_videoram_w) AM_SHARE("bg1_vram")
- AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(background2_videoram_w) AM_SHARE("bg2_vram")
- AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(foreground_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x080000, 0x08000d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_SHARE("scrollram")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW")
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void toki_state::toki_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x06d7ff).ram();
+ map(0x06d800, 0x06dfff).ram().share("spriteram");
+ map(0x06e000, 0x06e7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x06e800, 0x06efff).ram().w(this, FUNC(toki_state::background1_videoram_w)).share("bg1_vram");
+ map(0x06f000, 0x06f7ff).ram().w(this, FUNC(toki_state::background2_videoram_w)).share("bg2_vram");
+ map(0x06f800, 0x06ffff).ram().w(this, FUNC(toki_state::foreground_videoram_w)).share("videoram");
+ map(0x080000, 0x08000d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
+ map(0x0a0000, 0x0a005f).w(this, FUNC(toki_state::toki_control_w)).share("scrollram");
+ map(0x0c0000, 0x0c0001).portr("DSW");
+ map(0x0c0002, 0x0c0003).portr("INPUTS");
+ map(0x0c0004, 0x0c0005).portr("SYSTEM");
+}
/* In the bootleg, sound and sprites are remapped to 0x70000 */
-ADDRESS_MAP_START(toki_state::tokib_map)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x060000, 0x06dfff) AM_RAM
- AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(background1_videoram_w) AM_SHARE("bg1_vram")
- AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(background2_videoram_w) AM_SHARE("bg2_vram")
- AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(foreground_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x071000, 0x071001) AM_WRITENOP /* sprite related? seems another scroll register */
+void toki_state::tokib_map(address_map &map)
+{
+ map(0x000000, 0x05ffff).rom();
+ map(0x060000, 0x06dfff).ram();
+ map(0x06e000, 0x06e7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x06e800, 0x06efff).ram().w(this, FUNC(toki_state::background1_videoram_w)).share("bg1_vram");
+ map(0x06f000, 0x06f7ff).ram().w(this, FUNC(toki_state::background2_videoram_w)).share("bg2_vram");
+ map(0x06f800, 0x06ffff).ram().w(this, FUNC(toki_state::foreground_videoram_w)).share("videoram");
+ map(0x071000, 0x071001).nopw(); /* sprite related? seems another scroll register */
/* gets written the same value as 75000a (bg2 scrollx) */
- AM_RANGE(0x071804, 0x071807) AM_WRITENOP /* sprite related, always 01be0100 */
- AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x072000, 0x072001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) /* probably */
- AM_RANGE(0x075000, 0x075001) AM_WRITE(tokib_soundcommand_w)
- AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_SHARE("scrollram")
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW")
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c000e, 0x0c000f) AM_READ(pip_r) /* sound related, if we return 0 the code writes */
+ map(0x071804, 0x071807).nopw(); /* sprite related, always 01be0100 */
+ map(0x07180e, 0x071e45).writeonly().share("spriteram");
+ map(0x072000, 0x072001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); /* probably */
+ map(0x075000, 0x075001).w(this, FUNC(toki_state::tokib_soundcommand_w));
+ map(0x075004, 0x07500b).writeonly().share("scrollram");
+ map(0x0c0000, 0x0c0001).portr("DSW");
+ map(0x0c0002, 0x0c0003).portr("INPUTS");
+ map(0x0c0004, 0x0c0005).portr("SYSTEM");
+ map(0x0c000e, 0x0c000f).r(this, FUNC(toki_state::pip_r)); /* sound related, if we return 0 the code writes */
/* the sound command quickly followed by 0 and the */
/* sound CPU often misses the command. */
-ADDRESS_MAP_END
+}
/*****************************************************************************/
-ADDRESS_MAP_START(toki_state::toki_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toki_state::toki_audio_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toki_state::jujuba_audio_map)
- AM_RANGE(0x0000, 0x1fff) AM_READ(jujuba_z80_data_decrypt)
- AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w)
- AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w)
- AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w)
- AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w)
- AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w)
- AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w)
- AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r)
- AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r)
- AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
- AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w)
- AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(toki_state::jujuba_audio_opcodes_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiocpu", 0)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1")
-ADDRESS_MAP_END
+void toki_state::toki_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r));
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
+
+void toki_state::toki_audio_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
+
+void toki_state::jujuba_audio_map(address_map &map)
+{
+ map(0x0000, 0x1fff).r(this, FUNC(toki_state::jujuba_z80_data_decrypt));
+ map(0x2000, 0x27ff).ram();
+ map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w));
+ map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w));
+ map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w));
+ map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w));
+ map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w));
+ map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w));
+ map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r));
+ map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r));
+ map(0x4013, 0x4013).portr("COIN");
+ map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w));
+ map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w));
+ map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
+
+void toki_state::jujuba_audio_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("audiocpu", 0);
+ map(0x8000, 0xffff).bankr("seibu_bank1");
+}
READ8_MEMBER(toki_state::jujuba_z80_data_decrypt)
{
return m_audiocpu_rom[offset] ^ 0x55;
}
-ADDRESS_MAP_START(toki_state::tokib_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(tokib_adpcm_control_w) /* MSM5205 + ROM bank */
- AM_RANGE(0xe400, 0xe400) AM_WRITE(tokib_adpcm_data_w)
- AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void toki_state::tokib_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xe000, 0xe000).w(this, FUNC(toki_state::tokib_adpcm_control_w)); /* MSM5205 + ROM bank */
+ map(0xe400, 0xe400).w(this, FUNC(toki_state::tokib_adpcm_data_w));
+ map(0xec00, 0xec01).mirror(0x0008).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp
index d7ccfcca97a..0a433512fc4 100644
--- a/src/mame/drivers/tomcat.cpp
+++ b/src/mame/drivers/tomcat.cpp
@@ -248,24 +248,26 @@ WRITE8_MEMBER(tomcat_state::tomcat_nvram_w)
m_nvram[offset] = data;
}
-ADDRESS_MAP_START(tomcat_state::tomcat_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x402000, 0x402001) AM_READ(tomcat_adcread_r) AM_WRITE(tomcat_adcon_w)
- AM_RANGE(0x404000, 0x404001) AM_READ(tomcat_inputs_r) AM_DEVWRITE("avg", avg_tomcat_device, go_word_w)
- AM_RANGE(0x406000, 0x406001) AM_DEVWRITE("avg", avg_tomcat_device, reset_word_w)
- AM_RANGE(0x408000, 0x408001) AM_READ(tomcat_inputs2_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x40a000, 0x40a001) AM_READWRITE(tomcat_320bio_r, tomcat_irqclr_w)
- AM_RANGE(0x40e000, 0x40e01f) AM_WRITE(main_latch_w)
- AM_RANGE(0x800000, 0x803fff) AM_RAM AM_SHARE("vectorram")
- AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("shared_ram")
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM
- AM_RANGE(0xffd000, 0xffdfff) AM_DEVREADWRITE8("m48t02", timekeeper_device, read, write, 0xff00)
- AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE8(tomcat_nvram_r, tomcat_nvram_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tomcat_state::dsp_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
+void tomcat_state::tomcat_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x402000, 0x402001).r(this, FUNC(tomcat_state::tomcat_adcread_r)).w(this, FUNC(tomcat_state::tomcat_adcon_w));
+ map(0x404000, 0x404001).r(this, FUNC(tomcat_state::tomcat_inputs_r)).w("avg", FUNC(avg_tomcat_device::go_word_w));
+ map(0x406000, 0x406001).w("avg", FUNC(avg_tomcat_device::reset_word_w));
+ map(0x408000, 0x408001).r(this, FUNC(tomcat_state::tomcat_inputs2_r)).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x40a000, 0x40a001).rw(this, FUNC(tomcat_state::tomcat_320bio_r), FUNC(tomcat_state::tomcat_irqclr_w));
+ map(0x40e000, 0x40e01f).w(this, FUNC(tomcat_state::main_latch_w));
+ map(0x800000, 0x803fff).ram().share("vectorram");
+ map(0xffa000, 0xffbfff).ram().share("shared_ram");
+ map(0xffc000, 0xffcfff).ram();
+ map(0xffd000, 0xffdfff).rw("m48t02", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00);
+ map(0xffd000, 0xffdfff).rw(this, FUNC(tomcat_state::tomcat_nvram_r), FUNC(tomcat_state::tomcat_nvram_w)).umask16(0x00ff);
+}
+
+void tomcat_state::dsp_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram().share("shared_ram");
+}
WRITE8_MEMBER(tomcat_state::soundlatches_w)
@@ -282,17 +284,18 @@ WRITE8_MEMBER(tomcat_state::soundlatches_w)
}
}
-ADDRESS_MAP_START(tomcat_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w)
- AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG
- AM_RANGE(0x5000, 0x507f) AM_RAM // 6532 ram
- AM_RANGE(0x5080, 0x509f) AM_DEVREADWRITE("riot", riot6532_device, read, write)
- AM_RANGE(0x6000, 0x601f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x7000, 0x701f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x8000, 0xffff) AM_NOP // main sound program rom
-ADDRESS_MAP_END
+void tomcat_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x3000, 0x30df).w(this, FUNC(tomcat_state::soundlatches_w));
+ map(0x30e0, 0x30e0).noprw(); // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG
+ map(0x5000, 0x507f).ram(); // 6532 ram
+ map(0x5080, 0x509f).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x6000, 0x601f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x7000, 0x701f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x8000, 0xffff).noprw(); // main sound program rom
+}
static INPUT_PORTS_START( tomcat )
PORT_START("IN0") /* INPUTS */
diff --git a/src/mame/drivers/tonton.cpp b/src/mame/drivers/tonton.cpp
index e7b2d7c9198..41278f1858d 100644
--- a/src/mame/drivers/tonton.cpp
+++ b/src/mame/drivers/tonton.cpp
@@ -88,24 +88,26 @@ WRITE8_MEMBER(tonton_state::hopper_w)
* Memory Map *
*************************************************/
-ADDRESS_MAP_START(tonton_state::tonton_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tonton_state::tonton_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x00, 0x00) AM_WRITE(tonton_outport_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x01, 0x01) AM_WRITE(hopper_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2")
- AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE( "v9938", v9938_device, read, write )
- AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+void tonton_state::tonton_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe3ff).ram().share("nvram");
+ map(0xf000, 0xffff).ram();
+}
+
+void tonton_state::tonton_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x00, 0x00).w(this, FUNC(tonton_state::tonton_outport_w));
+ map(0x01, 0x01).portr("IN1");
+ map(0x01, 0x01).w(this, FUNC(tonton_state::hopper_w));
+ map(0x02, 0x02).portr("DSW1");
+ map(0x03, 0x03).portr("DSW2");
+ map(0x88, 0x8b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
+ map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r));
+}
/*************************************************
diff --git a/src/mame/drivers/toobin.cpp b/src/mame/drivers/toobin.cpp
index 2d15371f2f7..fb9ff722f55 100644
--- a/src/mame/drivers/toobin.cpp
+++ b/src/mame/drivers/toobin.cpp
@@ -75,30 +75,31 @@ WRITE16_MEMBER(toobin_state::interrupt_scan_w)
*************************************/
/* full address map decoded from schematics */
-ADDRESS_MAP_START(toobin_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0xc7ffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0xc00000, 0xc07fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_RAM AM_SHARE("mob")
- AM_RANGE(0xc10000, 0xc107ff) AM_MIRROR(0x047800) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x826000, 0x826001) AM_MIRROR(0x4500fe) AM_READNOP /* who knows? read at controls time */
- AM_RANGE(0x828000, 0x828001) AM_MIRROR(0x4500fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x828100, 0x828101) AM_MIRROR(0x4500fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff)
- AM_RANGE(0x828300, 0x828301) AM_MIRROR(0x45003e) AM_WRITE(intensity_w)
- AM_RANGE(0x828340, 0x828341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_SHARE("interrupt_scan")
- AM_RANGE(0x828380, 0x828381) AM_MIRROR(0x45003e) AM_RAM_WRITE(slip_w) AM_SHARE("mob:slip")
- AM_RANGE(0x8283c0, 0x8283c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0x828400, 0x828401) AM_MIRROR(0x4500fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w)
- AM_RANGE(0x828500, 0x828501) AM_MIRROR(0x4500fe) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x828600, 0x828601) AM_MIRROR(0x4500fe) AM_WRITE(xscroll_w) AM_SHARE("xscroll")
- AM_RANGE(0x828700, 0x828701) AM_MIRROR(0x4500fe) AM_WRITE(yscroll_w) AM_SHARE("yscroll")
- AM_RANGE(0x828800, 0x828801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800")
- AM_RANGE(0x829000, 0x829001) AM_MIRROR(0x4507fe) AM_READ_PORT("FF9000")
- AM_RANGE(0x829800, 0x829801) AM_MIRROR(0x4507fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
- AM_RANGE(0x82a000, 0x82afff) AM_MIRROR(0x451000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x82c000, 0x82ffff) AM_MIRROR(0x450000) AM_RAM
-ADDRESS_MAP_END
+void toobin_state::main_map(address_map &map)
+{
+ map.global_mask(0xc7ffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0xc00000, 0xc07fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0xc08000, 0xc097ff).mirror(0x046000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0xc09800, 0xc09fff).mirror(0x046000).ram().share("mob");
+ map(0xc10000, 0xc107ff).mirror(0x047800).ram().w(this, FUNC(toobin_state::paletteram_w)).share("paletteram");
+ map(0x826000, 0x826001).mirror(0x4500fe).nopr(); /* who knows? read at controls time */
+ map(0x828000, 0x828001).mirror(0x4500fe).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x828101, 0x828101).mirror(0x4500fe).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w));
+ map(0x828300, 0x828301).mirror(0x45003e).w(this, FUNC(toobin_state::intensity_w));
+ map(0x828340, 0x828341).mirror(0x45003e).w(this, FUNC(toobin_state::interrupt_scan_w)).share("interrupt_scan");
+ map(0x828380, 0x828381).mirror(0x45003e).ram().w(this, FUNC(toobin_state::slip_w)).share("mob:slip");
+ map(0x8283c0, 0x8283c1).mirror(0x45003e).w(this, FUNC(toobin_state::scanline_int_ack_w));
+ map(0x828400, 0x828401).mirror(0x4500fe).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w));
+ map(0x828500, 0x828501).mirror(0x4500fe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x828600, 0x828601).mirror(0x4500fe).w(this, FUNC(toobin_state::xscroll_w)).share("xscroll");
+ map(0x828700, 0x828701).mirror(0x4500fe).w(this, FUNC(toobin_state::yscroll_w)).share("yscroll");
+ map(0x828800, 0x828801).mirror(0x4507fe).portr("FF8800");
+ map(0x829000, 0x829001).mirror(0x4507fe).portr("FF9000");
+ map(0x829801, 0x829801).mirror(0x4507fe).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r));
+ map(0x82a000, 0x82afff).mirror(0x451000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x82c000, 0x82ffff).mirror(0x450000).ram();
+}
diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp
index 8fb71ca7edb..3ce9d47fc42 100644
--- a/src/mame/drivers/topspeed.cpp
+++ b/src/mame/drivers/topspeed.cpp
@@ -377,54 +377,59 @@ WRITE_LINE_MEMBER(topspeed_state::z80ctc_to0)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(topspeed_state::cpua_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600002, 0x600003) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x7e0000, 0x7e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x800000, 0x8003ff) AM_RAM AM_SHARE("raster_ctrl")
- AM_RANGE(0x800400, 0x80ffff) AM_RAM
- AM_RANGE(0x880000, 0x880007) AM_WRITENOP // Lamps/outputs?
- AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("pc080sn_1", pc080sn_device, word_r, word_w)
- AM_RANGE(0xa20000, 0xa20003) AM_DEVWRITE("pc080sn_1", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xa40000, 0xa40003) AM_DEVWRITE("pc080sn_1", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xa50000, 0xa50003) AM_DEVWRITE("pc080sn_1", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("pc080sn_2", pc080sn_device, word_r, word_w)
- AM_RANGE(0xb20000, 0xb20003) AM_DEVWRITE("pc080sn_2", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xb40000, 0xb40003) AM_DEVWRITE("pc080sn_2", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xb50000, 0xb50003) AM_DEVWRITE("pc080sn_2", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_SHARE("spritemap")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(topspeed_state::cpub_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x880000, 0x880001) AM_READ8(input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff)
- AM_RANGE(0x880002, 0x880003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, port_r, port_w, 0x00ff)
- AM_RANGE(0x900000, 0x9003ff) AM_READWRITE(motor_r, motor_w)
-ADDRESS_MAP_END
+void topspeed_state::cpua_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40ffff).ram().share("sharedram");
+ map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x600002, 0x600003).w(this, FUNC(topspeed_state::cpua_ctrl_w));
+ map(0x7e0000, 0x7e0001).nopr();
+ map(0x7e0001, 0x7e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x7e0003, 0x7e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x800000, 0x8003ff).ram().share("raster_ctrl");
+ map(0x800400, 0x80ffff).ram();
+ map(0x880000, 0x880007).nopw(); // Lamps/outputs?
+ map(0xa00000, 0xa0ffff).rw(m_pc080sn_1, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xa20000, 0xa20003).w(m_pc080sn_1, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xa40000, 0xa40003).w(m_pc080sn_1, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xa50000, 0xa50003).w(m_pc080sn_1, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xb00000, 0xb0ffff).rw(m_pc080sn_2, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xb20000, 0xb20003).w(m_pc080sn_2, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xb40000, 0xb40003).w(m_pc080sn_2, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xb50000, 0xb50003).w(m_pc080sn_2, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd00fff).ram().share("spriteram");
+ map(0xe00000, 0xe0ffff).ram().share("spritemap");
+}
+
+void topspeed_state::cpub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x400000, 0x40ffff).ram().share("sharedram");
+ map(0x880001, 0x880001).r(this, FUNC(topspeed_state::input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff);
+ map(0x880003, 0x880003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::port_r), FUNC(tc0040ioc_device::port_w));
+ map(0x900000, 0x9003ff).rw(this, FUNC(topspeed_state::motor_r), FUNC(topspeed_state::motor_w));
+}
/***************************************************************************/
-ADDRESS_MAP_START(topspeed_state::z80_prg)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("sndbank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xcfff) AM_WRITE(msm5205_command_w)
- AM_RANGE(0xd000, 0xdfff) AM_WRITE(volume_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(topspeed_state::z80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void topspeed_state::z80_prg(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("sndbank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xcfff).w(this, FUNC(topspeed_state::msm5205_command_w));
+ map(0xd000, 0xdfff).w(this, FUNC(topspeed_state::volume_w));
+}
+
+void topspeed_state::z80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/***********************************************************
diff --git a/src/mame/drivers/toratora.cpp b/src/mame/drivers/toratora.cpp
index e3665a0682c..07a60105f91 100644
--- a/src/mame/drivers/toratora.cpp
+++ b/src/mame/drivers/toratora.cpp
@@ -316,21 +316,22 @@ WRITE_LINE_MEMBER(toratora_state::sn2_ca2_u2_w)
*
*************************************/
-ADDRESS_MAP_START(toratora_state::main_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x7fff) AM_ROM /* not fully populated */
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xf047) AM_NOP
- AM_RANGE(0xf048, 0xf049) AM_NOP
- AM_RANGE(0xf04a, 0xf04a) AM_WRITE(clear_tv_w) /* the read is mark *LEDEN, but not used */
- AM_RANGE(0xf04b, 0xf04b) AM_READWRITE(timer_r, clear_timer_w)
- AM_RANGE(0xf04c, 0xf09f) AM_NOP
- AM_RANGE(0xf0a0, 0xf0a3) AM_DEVREADWRITE("pia_u1", pia6821_device, read, write)
- AM_RANGE(0xf0a4, 0xf0a7) AM_DEVREADWRITE("pia_u2", pia6821_device, read, write)
- AM_RANGE(0xf0a8, 0xf0ab) AM_DEVREADWRITE("pia_u3", pia6821_device, read, write)
- AM_RANGE(0xf0ac, 0xf7ff) AM_NOP
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void toratora_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x7fff).rom(); /* not fully populated */
+ map(0x8000, 0x9fff).ram().share("videoram");
+ map(0xa000, 0xf047).noprw();
+ map(0xf048, 0xf049).noprw();
+ map(0xf04a, 0xf04a).w(this, FUNC(toratora_state::clear_tv_w)); /* the read is mark *LEDEN, but not used */
+ map(0xf04b, 0xf04b).rw(this, FUNC(toratora_state::timer_r), FUNC(toratora_state::clear_timer_w));
+ map(0xf04c, 0xf09f).noprw();
+ map(0xf0a0, 0xf0a3).rw(m_pia_u1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf0a4, 0xf0a7).rw(m_pia_u2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf0a8, 0xf0ab).rw(m_pia_u3, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf0ac, 0xf7ff).noprw();
+ map(0xf800, 0xffff).rom();
+}
diff --git a/src/mame/drivers/tosh1000.cpp b/src/mame/drivers/tosh1000.cpp
index d93bb180ba9..4937372c79c 100644
--- a/src/mame/drivers/tosh1000.cpp
+++ b/src/mame/drivers/tosh1000.cpp
@@ -216,30 +216,33 @@ READ8_MEMBER(tosh1000_state::bram_r)
}
-ADDRESS_MAP_START(tosh1000_state::tosh1000_romdos)
- AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("romdos", 0)
- AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("romdos", 0x10000)
- AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("romdos", 0x20000)
- AM_RANGE(0x30000, 0x3ffff) AM_ROM AM_REGION("romdos", 0x30000)
- AM_RANGE(0x40000, 0x4ffff) AM_ROM AM_REGION("romdos", 0x40000)
- AM_RANGE(0x50000, 0x5ffff) AM_ROM AM_REGION("romdos", 0x50000)
- AM_RANGE(0x60000, 0x6ffff) AM_ROM AM_REGION("romdos", 0x60000)
- AM_RANGE(0x70000, 0x7ffff) AM_ROM AM_REGION("romdos", 0x70000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tosh1000_state::tosh1000_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xa0000, 0xaffff) AM_DEVREADWRITE("bankdev", address_map_bank_device, read8, write8)
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tosh1000_state::tosh1000_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
- AM_RANGE(0x00c0, 0x00c3) AM_READWRITE(bram_r, bram_w)
- AM_RANGE(0x00c8, 0x00c8) AM_WRITE(romdos_bank_w) // ROM-DOS page select [p. B-15]
- AM_RANGE(0x02c0, 0x02df) AM_DEVREADWRITE("rtc", tc8521_device, read, write)
-ADDRESS_MAP_END
+void tosh1000_state::tosh1000_romdos(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom().region("romdos", 0);
+ map(0x10000, 0x1ffff).rom().region("romdos", 0x10000);
+ map(0x20000, 0x2ffff).rom().region("romdos", 0x20000);
+ map(0x30000, 0x3ffff).rom().region("romdos", 0x30000);
+ map(0x40000, 0x4ffff).rom().region("romdos", 0x40000);
+ map(0x50000, 0x5ffff).rom().region("romdos", 0x50000);
+ map(0x60000, 0x6ffff).rom().region("romdos", 0x60000);
+ map(0x70000, 0x7ffff).rom().region("romdos", 0x70000);
+}
+
+void tosh1000_state::tosh1000_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0xa0000, 0xaffff).rw(m_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8));
+ map(0xf8000, 0xfffff).rom().region("bios", 0);
+}
+
+void tosh1000_state::tosh1000_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map));
+ map(0x00c0, 0x00c3).rw(this, FUNC(tosh1000_state::bram_r), FUNC(tosh1000_state::bram_w));
+ map(0x00c8, 0x00c8).w(this, FUNC(tosh1000_state::romdos_bank_w)); // ROM-DOS page select [p. B-15]
+ map(0x02c0, 0x02df).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write));
+}
void tosh1000_state::cfg_fdc_35(device_t *device)
diff --git a/src/mame/drivers/tourtabl.cpp b/src/mame/drivers/tourtabl.cpp
index e1a0a8c300a..9b61f13cb5b 100644
--- a/src/mame/drivers/tourtabl.cpp
+++ b/src/mame/drivers/tourtabl.cpp
@@ -66,15 +66,16 @@ READ8_MEMBER(tourtabl_state::tourtabl_get_databus_contents)
}
-ADDRESS_MAP_START(tourtabl_state::main_map)
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVREADWRITE("tia_video", tia_video_device, read, write)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_RAM
- AM_RANGE(0x0280, 0x029f) AM_DEVREADWRITE("riot1", riot6532_device, read, write)
- AM_RANGE(0x0400, 0x047f) AM_RAM
- AM_RANGE(0x0500, 0x051f) AM_DEVREADWRITE("riot2", riot6532_device, read, write)
- AM_RANGE(0x0800, 0x1fff) AM_ROM
- AM_RANGE(0xe800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tourtabl_state::main_map(address_map &map)
+{
+ map(0x0000, 0x007f).mirror(0x0100).rw("tia_video", FUNC(tia_video_device::read), FUNC(tia_video_device::write));
+ map(0x0080, 0x00ff).mirror(0x0100).ram();
+ map(0x0280, 0x029f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0400, 0x047f).ram();
+ map(0x0500, 0x051f).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
+ map(0x0800, 0x1fff).rom();
+ map(0xe800, 0xffff).rom();
+}
static INPUT_PORTS_START( tourtabl )
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index 8cfdbe99efc..1b8050708d1 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -333,38 +333,41 @@ static INPUT_PORTS_START( tourvision )
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) // games slot status in bits 3 to 7
INPUT_PORTS_END
-ADDRESS_MAP_START(tourvision_state::pce_mem)
- AM_RANGE( 0x000000, 0x0FFFFF) AM_ROM
- AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000)
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tourvision_state::pce_io)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
-ADDRESS_MAP_END
+void tourvision_state::pce_mem(address_map &map)
+{
+ map(0x000000, 0x0FFFFF).rom();
+ map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000);
+ map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+ map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(tourvision_state::pce_joystick_r), FUNC(tourvision_state::pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+}
+
+void tourvision_state::pce_io(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+}
WRITE8_MEMBER(tourvision_state::tourvision_8085_d000_w)
{
//logerror( "D000 (8085) write %02x\n", data );
}
-ADDRESS_MAP_START(tourvision_state::tourvision_8085_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x80ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w)
- AM_RANGE(0x8100, 0x8107) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w)
- AM_RANGE(0x9000, 0x9000) AM_READ_PORT("DSW1")
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW2")
- AM_RANGE(0xb000, 0xb000) AM_READNOP // unknown (must NOT be == 0x03 ? code at 0x1154)
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd000, 0xd000) AM_WRITE(tourvision_8085_d000_w )
- AM_RANGE(0xe000, 0xe1ff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_READNOP // protection or internal counter ? there is sometimes some data in BIOS0 which is replaced by 0xff in BIOS1
-ADDRESS_MAP_END
+void tourvision_state::tourvision_8085_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x80ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x8100, 0x8107).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+ map(0x9000, 0x9000).portr("DSW1");
+ map(0xa000, 0xa000).portr("DSW2");
+ map(0xb000, 0xb000).nopr(); // unknown (must NOT be == 0x03 ? code at 0x1154)
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xd000, 0xd000).w(this, FUNC(tourvision_state::tourvision_8085_d000_w));
+ map(0xe000, 0xe1ff).ram();
+ map(0xf000, 0xf000).nopr(); // protection or internal counter ? there is sometimes some data in BIOS0 which is replaced by 0xff in BIOS1
+}
WRITE8_MEMBER(tourvision_state::tourvision_i8155_a_w)
{
diff --git a/src/mame/drivers/toypop.cpp b/src/mame/drivers/toypop.cpp
index 356ea6d2ccc..73718804111 100644
--- a/src/mame/drivers/toypop.cpp
+++ b/src/mame/drivers/toypop.cpp
@@ -355,51 +355,56 @@ WRITE8_MEMBER(namcos16_state::pal_bank_w)
m_pal_bank = offset & 1;
}
-ADDRESS_MAP_START(namcos16_state::namcos16_master_base_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("fgvram")
- AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("fgattr")
- AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("master_workram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("slave_sharedram")
+void namcos16_state::namcos16_master_base_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("fgvram");
+ map(0x0400, 0x07ff).ram().share("fgattr");
+ map(0x0800, 0x1fff).ram().share("master_workram");
+ map(0x2800, 0x2fff).ram().share("slave_sharedram");
// 0x6000 - 0x7fff i/o specific, guessing PAL controlled.
- AM_RANGE(0x8000, 0x8fff) AM_WRITE(slave_halt_ctrl_w)
- AM_RANGE(0x9000, 0x9fff) AM_WRITE(sound_halt_ctrl_w)
- AM_RANGE(0xa000, 0xa001) AM_WRITE(pal_bank_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("master_rom",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos16_state::master_liblrabl_map)
- AM_IMPORT_FROM( namcos16_master_base_map )
- AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w)
- AM_RANGE(0x6800, 0x680f) AM_DEVREADWRITE("58xx", namco58xx_device, read, write)
- AM_RANGE(0x6810, 0x681f) AM_DEVREADWRITE("56xx_1", namco56xx_device, read, write)
- AM_RANGE(0x6820, 0x682f) AM_DEVREADWRITE("56xx_2", namco56xx_device, read, write)
- AM_RANGE(0x7000, 0x7fff) AM_READNOP AM_WRITE(irq_ctrl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos16_state::master_toypop_map)
- AM_IMPORT_FROM( namcos16_master_base_map )
- AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("58xx", namco58xx_device, read, write)
- AM_RANGE(0x6010, 0x601f) AM_DEVREADWRITE("56xx_1", namco56xx_device, read, write)
- AM_RANGE(0x6020, 0x602f) AM_DEVREADWRITE("56xx_2", namco56xx_device, read, write)
- AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w)
- AM_RANGE(0x7000, 0x7000) AM_READWRITE(irq_enable_r,irq_disable_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos16_state::slave_map)
- AM_RANGE(0x000000, 0x007fff) AM_ROM AM_REGION("slave_rom", 0)
- AM_RANGE(0x080000, 0x0bffff) AM_RAM
- AM_RANGE(0x100000, 0x100fff) AM_READWRITE8(slave_shared_r,slave_shared_w,0x00ff)
- AM_RANGE(0x180000, 0x187fff) AM_READWRITE8(bg_rmw_r,bg_rmw_w,0xffff)
- AM_RANGE(0x190000, 0x1dffff) AM_RAM AM_SHARE("bgvram")
- AM_RANGE(0x300000, 0x3fffff) AM_WRITE(slave_irq_enable_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(namcos16_state::sound_map)
- AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("sound_rom", 0)
-ADDRESS_MAP_END
+ map(0x8000, 0x8fff).w(this, FUNC(namcos16_state::slave_halt_ctrl_w));
+ map(0x9000, 0x9fff).w(this, FUNC(namcos16_state::sound_halt_ctrl_w));
+ map(0xa000, 0xa001).w(this, FUNC(namcos16_state::pal_bank_w));
+ map(0x8000, 0xffff).rom().region("master_rom", 0);
+}
+
+void namcos16_state::master_liblrabl_map(address_map &map)
+{
+ namcos16_master_base_map(map);
+ map(0x6000, 0x63ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w));
+ map(0x6800, 0x680f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write));
+ map(0x6810, 0x681f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
+ map(0x6820, 0x682f).rw(m_namco56xx_2, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
+ map(0x7000, 0x7fff).nopr().w(this, FUNC(namcos16_state::irq_ctrl_w));
+}
+
+void namcos16_state::master_toypop_map(address_map &map)
+{
+ namcos16_master_base_map(map);
+ map(0x6000, 0x600f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write));
+ map(0x6010, 0x601f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
+ map(0x6020, 0x602f).rw(m_namco56xx_2, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write));
+ map(0x6800, 0x6bff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w));
+ map(0x7000, 0x7000).rw(this, FUNC(namcos16_state::irq_enable_r), FUNC(namcos16_state::irq_disable_w));
+}
+
+void namcos16_state::slave_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rom().region("slave_rom", 0);
+ map(0x080000, 0x0bffff).ram();
+ map(0x100000, 0x100fff).rw(this, FUNC(namcos16_state::slave_shared_r), FUNC(namcos16_state::slave_shared_w)).umask16(0x00ff);
+ map(0x180000, 0x187fff).rw(this, FUNC(namcos16_state::bg_rmw_r), FUNC(namcos16_state::bg_rmw_w));
+ map(0x190000, 0x1dffff).ram().share("bgvram");
+ map(0x300000, 0x3fffff).w(this, FUNC(namcos16_state::slave_irq_enable_w));
+}
+
+void namcos16_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w));
+ map(0xe000, 0xffff).rom().region("sound_rom", 0);
+}
diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp
index 6ec33348cf2..3df862b27dd 100644
--- a/src/mame/drivers/tp84.cpp
+++ b/src/mame/drivers/tp84.cpp
@@ -170,45 +170,47 @@ WRITE8_MEMBER(tp84_state::tp84_sh_irqtrigger_w)
-ADDRESS_MAP_START(tp84_state::tp84_cpu1_map)
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2800, 0x2800) AM_READ_PORT("SYSTEM") AM_WRITEONLY AM_SHARE("palette_bank")
- AM_RANGE(0x2820, 0x2820) AM_READ_PORT("P1")
- AM_RANGE(0x2840, 0x2840) AM_READ_PORT("P2")
- AM_RANGE(0x2860, 0x2860) AM_READ_PORT("DSW1")
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2")
- AM_RANGE(0x3000, 0x3007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x3800, 0x3800) AM_WRITE(tp84_sh_irqtrigger_w)
- AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3c00, 0x3c00) AM_WRITEONLY AM_SHARE("scroll_x")
- AM_RANGE(0x3e00, 0x3e00) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("bg_videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM AM_SHARE("fg_videoram")
- AM_RANGE(0x4800, 0x4bff) AM_RAM AM_SHARE("bg_colorram")
- AM_RANGE(0x4c00, 0x4fff) AM_RAM AM_SHARE("fg_colorram")
- AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tp84_state::tp84b_cpu1_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("bg_videoram")
- AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("fg_videoram")
- AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("bg_colorram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("fg_colorram")
- AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("SYSTEM") AM_WRITEONLY AM_SHARE("palette_bank")
- AM_RANGE(0x1a20, 0x1a20) AM_READ_PORT("P1")
- AM_RANGE(0x1a40, 0x1a40) AM_READ_PORT("P2")
- AM_RANGE(0x1a60, 0x1a60) AM_READ_PORT("DSW1")
- AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW2")
- AM_RANGE(0x1c00, 0x1c07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x1e00, 0x1e00) AM_WRITE(tp84_sh_irqtrigger_w)
- AM_RANGE(0x1e80, 0x1e80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1f00, 0x1f00) AM_WRITEONLY AM_SHARE("scroll_x")
- AM_RANGE(0x1f80, 0x1f80) AM_WRITEONLY AM_SHARE("scroll_y")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tp84_state::tp84_cpu1_map(address_map &map)
+{
+ map(0x2000, 0x2000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x2800, 0x2800).portr("SYSTEM").writeonly().share("palette_bank");
+ map(0x2820, 0x2820).portr("P1");
+ map(0x2840, 0x2840).portr("P2");
+ map(0x2860, 0x2860).portr("DSW1");
+ map(0x3000, 0x3000).portr("DSW2");
+ map(0x3000, 0x3007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x3800, 0x3800).w(this, FUNC(tp84_state::tp84_sh_irqtrigger_w));
+ map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x3c00, 0x3c00).writeonly().share("scroll_x");
+ map(0x3e00, 0x3e00).writeonly().share("scroll_y");
+ map(0x4000, 0x43ff).ram().share("bg_videoram");
+ map(0x4400, 0x47ff).ram().share("fg_videoram");
+ map(0x4800, 0x4bff).ram().share("bg_colorram");
+ map(0x4c00, 0x4fff).ram().share("fg_colorram");
+ map(0x5000, 0x57ff).ram().share("share1");
+ map(0x8000, 0xffff).rom();
+}
+
+void tp84_state::tp84b_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("bg_videoram");
+ map(0x0400, 0x07ff).ram().share("fg_videoram");
+ map(0x0800, 0x0bff).ram().share("bg_colorram");
+ map(0x0c00, 0x0fff).ram().share("fg_colorram");
+ map(0x1000, 0x17ff).ram().share("share1");
+ map(0x1800, 0x1800).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x1a00, 0x1a00).portr("SYSTEM").writeonly().share("palette_bank");
+ map(0x1a20, 0x1a20).portr("P1");
+ map(0x1a40, 0x1a40).portr("P2");
+ map(0x1a60, 0x1a60).portr("DSW1");
+ map(0x1c00, 0x1c00).portr("DSW2");
+ map(0x1c00, 0x1c07).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x1e00, 0x1e00).w(this, FUNC(tp84_state::tp84_sh_irqtrigger_w));
+ map(0x1e80, 0x1e80).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1f00, 0x1f00).writeonly().share("scroll_x");
+ map(0x1f80, 0x1f80).writeonly().share("scroll_y");
+ map(0x8000, 0xffff).rom();
+}
WRITE8_MEMBER(tp84_state::sub_irq_mask_w)
@@ -217,28 +219,30 @@ WRITE8_MEMBER(tp84_state::sub_irq_mask_w)
}
-ADDRESS_MAP_START(tp84_state::cpu2_map)
+void tp84_state::cpu2_map(address_map &map)
+{
// AM_RANGE(0x0000, 0x0000) AM_RAM /* Watch dog ?*/
- AM_RANGE(0x2000, 0x2000) AM_READ(tp84_scanline_r) /* beam position */
- AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_irq_mask_w)
- AM_RANGE(0x6000, 0x679f) AM_RAM
- AM_RANGE(0x67a0, 0x67ff) AM_RAM_WRITE(tp84_spriteram_w) AM_SHARE("spriteram")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(tp84_state::audio_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8000) AM_READ(tp84_sh_timer_r)
- AM_RANGE(0xa000, 0xa1ff) AM_WRITE(tp84_filter_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITENOP
- AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("y2404_1", y2404_device, write)
- AM_RANGE(0xc003, 0xc003) AM_DEVWRITE("y2404_2", y2404_device, write)
- AM_RANGE(0xc004, 0xc004) AM_DEVWRITE("y2404_3", y2404_device, write)
-ADDRESS_MAP_END
+ map(0x2000, 0x2000).r(this, FUNC(tp84_state::tp84_scanline_r)); /* beam position */
+ map(0x4000, 0x4000).w(this, FUNC(tp84_state::sub_irq_mask_w));
+ map(0x6000, 0x679f).ram();
+ map(0x67a0, 0x67ff).ram().w(this, FUNC(tp84_state::tp84_spriteram_w)).share("spriteram");
+ map(0x8000, 0x87ff).ram().share("share1");
+ map(0xe000, 0xffff).rom();
+}
+
+
+void tp84_state::audio_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8000).r(this, FUNC(tp84_state::tp84_sh_timer_r));
+ map(0xa000, 0xa1ff).w(this, 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));
+}
diff --git a/src/mame/drivers/tr175.cpp b/src/mame/drivers/tr175.cpp
index 44ebbbbd2e9..b751d640407 100644
--- a/src/mame/drivers/tr175.cpp
+++ b/src/mame/drivers/tr175.cpp
@@ -49,34 +49,37 @@ READ8_MEMBER(tr175_state::fff400_r)
return 0;
}
-ADDRESS_MAP_START(tr175_state::mem_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xfe8000, 0xfebfff) AM_RAM // 8-bit?
- AM_RANGE(0xfefe00, 0xfefedd) AM_WRITENOP // 8-bit; cleared at startup
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM // main RAM
- AM_RANGE(0xff0000, 0xff7fff) AM_RAM // video RAM?
- AM_RANGE(0xffe000, 0xffe01f) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0xff00)
- AM_RANGE(0xffe400, 0xffe40f) AM_DEVREADWRITE8("avdc", scn2674_device, read, write, 0xff00)
- AM_RANGE(0xffe800, 0xffe805) AM_UNMAP //AM_DEVREADWRITE8("pai", um82c11_device, read, write, 0xff00)
- AM_RANGE(0xffec00, 0xffec01) AM_WRITE8(ffec01_w, 0x00ff)
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE8(fff000_w, 0xff00)
- AM_RANGE(0xfff400, 0xfff401) AM_READ8(fff400_r, 0xff00)
- AM_RANGE(0xfffc00, 0xfffc01) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
- AM_RANGE(0xfffc02, 0xfffc03) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
- AM_RANGE(0xfffc04, 0xfffc05) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
-ADDRESS_MAP_END
+void tr175_state::mem_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom().region("maincpu", 0);
+ map(0xfe8000, 0xfebfff).ram(); // 8-bit?
+ map(0xfefe00, 0xfefedd).nopw(); // 8-bit; cleared at startup
+ map(0xff8000, 0xffbfff).ram(); // main RAM
+ map(0xff0000, 0xff7fff).ram(); // video RAM?
+ map(0xffe000, 0xffe01f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0xff00);
+ map(0xffe400, 0xffe40f).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0xff00);
+ map(0xffe800, 0xffe805).unmaprw(); //AM_DEVREADWRITE8("pai", um82c11_device, read, write, 0xff00)
+ map(0xffec01, 0xffec01).w(this, FUNC(tr175_state::ffec01_w));
+ map(0xfff000, 0xfff000).w(this, FUNC(tr175_state::fff000_w));
+ map(0xfff400, 0xfff400).r(this, FUNC(tr175_state::fff400_r));
+ map(0xfffc01, 0xfffc01).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0xfffc03, 0xfffc03).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0xfffc05, 0xfffc05).w("ramdac", FUNC(ramdac_device::mask_w));
+}
SCN2674_DRAW_CHARACTER_MEMBER(tr175_state::draw_character)
{
}
-ADDRESS_MAP_START(tr175_state::vram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READNOP
-ADDRESS_MAP_END
+void tr175_state::vram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).nopr();
+}
-ADDRESS_MAP_START(tr175_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w)
-ADDRESS_MAP_END
+void tr175_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
static INPUT_PORTS_START( tr175 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp
index 56b975a6d00..348eb13d665 100644
--- a/src/mame/drivers/trackfld.cpp
+++ b/src/mame/drivers/trackfld.cpp
@@ -235,27 +235,28 @@ WRITE_LINE_MEMBER(trackfld_state::irq_mask_w)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-ADDRESS_MAP_START(trackfld_state::main_map)
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* AFE */
- AM_RANGE(0x1080, 0x1087) AM_MIRROR(0x0078) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */
- AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2")
- AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1281, 0x1281) AM_MIRROR(0x007c) AM_READ_PORT("IN0")
- AM_RANGE(0x1282, 0x1282) AM_MIRROR(0x007c) AM_READ_PORT("IN1")
- AM_RANGE(0x1283, 0x1283) AM_MIRROR(0x007c) AM_READ_PORT("DSW1")
+void trackfld_state::main_map(address_map &map)
+{
+ map(0x1000, 0x1000).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* AFE */
+ map(0x1080, 0x1087).mirror(0x0078).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x1100, 0x1100).mirror(0x007f).w("soundlatch", FUNC(generic_latch_8_device::write)); /* 32 */
+ map(0x1200, 0x1200).mirror(0x007f).portr("DSW2");
+ map(0x1280, 0x1280).mirror(0x007c).portr("SYSTEM");
+ map(0x1281, 0x1281).mirror(0x007c).portr("IN0");
+ map(0x1282, 0x1282).mirror(0x007c).portr("IN1");
+ map(0x1283, 0x1283).mirror(0x007c).portr("DSW1");
/* not used according to schems: AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x007f) AM_READ_PORT("DSW3") */
- AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x1860, 0x1bff) AM_RAM
- AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2")
- AM_RANGE(0x1c60, 0x1fff) AM_RAM
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x1800, 0x183f).ram().share("spriteram2");
+ map(0x1840, 0x185f).ram().share("scroll");
+ map(0x1860, 0x1bff).ram();
+ map(0x1c00, 0x1c3f).ram().share("spriteram");
+ map(0x1c40, 0x1c5f).ram().share("scroll2");
+ map(0x1c60, 0x1fff).ram();
+ map(0x2800, 0x2fff).ram().share("nvram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram");
+ map(0x6000, 0xffff).rom();
+}
WRITE_LINE_MEMBER(trackfld_state::nmi_mask_w)
{
@@ -280,111 +281,116 @@ WRITE8_MEMBER(trackfld_state::trackfld_VLM5030_control_w)
}
-ADDRESS_MAP_START(trackfld_state::yieartf_map)
- AM_RANGE(0x0000, 0x0000) AM_READ(trackfld_speech_r) AM_WRITE(konami_SN76496_latch_w)
- AM_RANGE(0x0001, 0x0001) AM_WRITE(konami_SN76496_w)
- AM_RANGE(0x0002, 0x0002) AM_WRITE(trackfld_VLM5030_control_w)
- AM_RANGE(0x0003, 0x0003) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* AFE */
- AM_RANGE(0x1080, 0x1087) AM_MIRROR(0x0078) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
+void trackfld_state::yieartf_map(address_map &map)
+{
+ map(0x0000, 0x0000).r(this, FUNC(trackfld_state::trackfld_speech_r)).w(this, FUNC(trackfld_state::konami_SN76496_latch_w));
+ map(0x0001, 0x0001).w(this, FUNC(trackfld_state::konami_SN76496_w));
+ map(0x0002, 0x0002).w(this, FUNC(trackfld_state::trackfld_VLM5030_control_w));
+ map(0x0003, 0x0003).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0x1000, 0x1000).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* AFE */
+ map(0x1080, 0x1087).mirror(0x0078).w("mainlatch", FUNC(ls259_device::write_d0));
// AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */
- AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2")
- AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1281, 0x1281) AM_MIRROR(0x007c) AM_READ_PORT("IN0")
- AM_RANGE(0x1282, 0x1282) AM_MIRROR(0x007c) AM_READ_PORT("IN1")
- AM_RANGE(0x1283, 0x1283) AM_MIRROR(0x007c) AM_READ_PORT("DSW1")
- AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x007f) AM_READ_PORT("DSW3")
- AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x1860, 0x1bff) AM_RAM
- AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2")
- AM_RANGE(0x1c60, 0x1fff) AM_RAM
- AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trackfld_state::reaktor_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+ map(0x1200, 0x1200).mirror(0x007f).portr("DSW2");
+ map(0x1280, 0x1280).mirror(0x007c).portr("SYSTEM");
+ map(0x1281, 0x1281).mirror(0x007c).portr("IN0");
+ map(0x1282, 0x1282).mirror(0x007c).portr("IN1");
+ map(0x1283, 0x1283).mirror(0x007c).portr("DSW1");
+ map(0x1300, 0x1300).mirror(0x007f).portr("DSW3");
+ map(0x1800, 0x183f).ram().share("spriteram2");
+ map(0x1840, 0x185f).ram().share("scroll");
+ map(0x1860, 0x1bff).ram();
+ map(0x1c00, 0x1c3f).ram().share("spriteram");
+ map(0x1c40, 0x1c5f).ram().share("scroll2");
+ map(0x1c60, 0x1fff).ram();
+ map(0x2800, 0x2fff).ram().share("nvram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram");
+ map(0x6000, 0xffff).rom();
+}
+
+void trackfld_state::reaktor_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
/* all usual addresses +0x8000 */
- AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x9080, 0x9087) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x9100, 0x9100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x9200, 0x9200) AM_READ_PORT("DSW2")
- AM_RANGE(0x9280, 0x9280) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x9281, 0x9281) AM_READ_PORT("IN0")
- AM_RANGE(0x9282, 0x9282) AM_READ_PORT("IN1")
- AM_RANGE(0x9283, 0x9283) AM_READ_PORT("DSW1")
- AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x9860, 0x9bff) AM_RAM
- AM_RANGE(0x9c00, 0x9c3f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9c40, 0x9c5f) AM_RAM AM_SHARE("scroll2")
- AM_RANGE(0x9c60, 0x9fff) AM_RAM
- AM_RANGE(0xa800, 0xabff) AM_RAM
- AM_RANGE(0xac00, 0xafff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
+ map(0x9000, 0x9000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x9080, 0x9087).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x9100, 0x9100).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x9200, 0x9200).portr("DSW2");
+ map(0x9280, 0x9280).portr("SYSTEM");
+ map(0x9281, 0x9281).portr("IN0");
+ map(0x9282, 0x9282).portr("IN1");
+ map(0x9283, 0x9283).portr("DSW1");
+ map(0x9800, 0x983f).ram().share("spriteram2");
+ map(0x9840, 0x985f).ram().share("scroll");
+ map(0x9860, 0x9bff).ram();
+ map(0x9c00, 0x9c3f).ram().share("spriteram");
+ map(0x9c40, 0x9c5f).ram().share("scroll2");
+ map(0x9c60, 0x9fff).ram();
+ map(0xa800, 0xabff).ram();
+ map(0xac00, 0xafff).ram().share("nvram");
+ map(0xb000, 0xb7ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram");
+ map(0xb800, 0xbfff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram");
+}
/* Reaktor reads / writes some I/O ports, no idea what they're connected to, if anything */
-ADDRESS_MAP_START(trackfld_state::reaktor_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP
- AM_RANGE(0x01, 0x01) AM_NOP
- AM_RANGE(0x02, 0x02) AM_WRITENOP
- AM_RANGE(0x03, 0x03) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trackfld_state::mastkin_map)
- AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x10b0, 0x10b7) AM_READNOP AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2")
- AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1281, 0x1281) AM_READ_PORT("IN0")
+void trackfld_state::reaktor_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw();
+ map(0x01, 0x01).noprw();
+ map(0x02, 0x02).nopw();
+ map(0x03, 0x03).nopw();
+}
+
+void trackfld_state::mastkin_map(address_map &map)
+{
+ map(0x1000, 0x1000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x10b0, 0x10b7).nopr().w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x1100, 0x1100).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1200, 0x1200).portr("DSW2");
+ map(0x1280, 0x1280).portr("SYSTEM");
+ map(0x1281, 0x1281).portr("IN0");
// AM_RANGE(0x1282, 0x1282) AM_READ_PORT("IN1") /* unused */
- AM_RANGE(0x1283, 0x1283) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x1860, 0x1bff) AM_RAM
- AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2")
- AM_RANGE(0x1c60, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x27ff) AM_RAM // initialized at POST
- AM_RANGE(0x2800, 0x2bff) AM_RAM
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x6000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trackfld_state::wizzquiz_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w)
- AM_RANGE(0x1080, 0x1087) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2")
- AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1281, 0x1281) AM_READ_PORT("IN0")
- AM_RANGE(0x1282, 0x1282) AM_READ_PORT("IN1")
- AM_RANGE(0x1283, 0x1283) AM_READ_PORT("DSW1")
- AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x1860, 0x1bff) AM_RAM
- AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2")
- AM_RANGE(0x1c60, 0x1fff) AM_RAM
- AM_RANGE(0x2800, 0x2bff) AM_RAM
- AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(questions_bank_w)
- AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1")
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x1283, 0x1283).portr("DSW1");
+ map(0x1800, 0x183f).ram().share("spriteram2");
+ map(0x1840, 0x185f).ram().share("scroll");
+ map(0x1860, 0x1bff).ram();
+ map(0x1c00, 0x1c3f).ram().share("spriteram");
+ map(0x1c40, 0x1c5f).ram().share("scroll2");
+ map(0x1c60, 0x1fff).ram();
+ map(0x2000, 0x27ff).ram(); // initialized at POST
+ map(0x2800, 0x2bff).ram();
+ map(0x2c00, 0x2fff).ram().share("nvram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram");
+ map(0x6000, 0xffff).rom();
+}
+
+void trackfld_state::wizzquiz_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x1000, 0x1000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w));
+ map(0x1080, 0x1087).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x1100, 0x1100).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x1200, 0x1200).portr("DSW2");
+ map(0x1280, 0x1280).portr("SYSTEM");
+ map(0x1281, 0x1281).portr("IN0");
+ map(0x1282, 0x1282).portr("IN1");
+ map(0x1283, 0x1283).portr("DSW1");
+ map(0x1800, 0x183f).ram().share("spriteram2");
+ map(0x1840, 0x185f).ram().share("scroll");
+ map(0x1860, 0x1bff).ram();
+ map(0x1c00, 0x1c3f).ram().share("spriteram");
+ map(0x1c40, 0x1c5f).ram().share("scroll2");
+ map(0x1c60, 0x1fff).ram();
+ map(0x2800, 0x2bff).ram();
+ map(0x2c00, 0x2fff).ram().share("nvram");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram");
+ map(0xc000, 0xc000).w(this, FUNC(trackfld_state::questions_bank_w));
+ map(0x6000, 0xdfff).bankr("bank1");
+ map(0xe000, 0xffff).rom();
+}
READ8_MEMBER(trackfld_state::trackfld_SN76496_r)
@@ -393,38 +399,41 @@ READ8_MEMBER(trackfld_state::trackfld_SN76496_r)
return 0xff; // ?
}
-ADDRESS_MAP_START(trackfld_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_sh_timer_r)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP /* watch dog ?; reaktor reads here */
- AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_speech_r)
- AM_RANGE(0xe003, 0xe003) AM_MIRROR(0x1c78) AM_SELECT(0x0380) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, trackfld_sound_w)
- AM_RANGE(0xe004, 0xe004) AM_MIRROR(0x1ff8) AM_DEVWRITE("vlm", vlm5030_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trackfld_state::hyprolyb_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_sh_timer_r)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w)
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w)
- AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP /* watch dog ?; reaktor reads here */
- AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, busy_r)
- AM_RANGE(0xe003, 0xe003) AM_MIRROR(0x1ff8) AM_WRITENOP
- AM_RANGE(0xe004, 0xe004) AM_MIRROR(0x1ff8) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trackfld_state::vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void trackfld_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0x1c00).ram();
+ map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8000).mirror(0x1fff).r("trackfld_audio", FUNC(trackfld_audio_device::trackfld_sh_timer_r));
+ map(0xa000, 0xa000).mirror(0x1fff).w(this, FUNC(trackfld_state::konami_SN76496_latch_w));
+ map(0xc000, 0xc000).mirror(0x1fff).r(this, FUNC(trackfld_state::trackfld_SN76496_r)).w(this, FUNC(trackfld_state::konami_SN76496_w));
+ map(0xe000, 0xe000).mirror(0x1ff8).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe001, 0xe001).mirror(0x1ff8).noprw(); /* watch dog ?; reaktor reads here */
+ map(0xe002, 0xe002).mirror(0x1ff8).r("trackfld_audio", FUNC(trackfld_audio_device::trackfld_speech_r));
+ map(0xe003, 0xe003).mirror(0x1c78).select(0x0380).w("trackfld_audio", FUNC(trackfld_audio_device::trackfld_sound_w));
+ map(0xe004, 0xe004).mirror(0x1ff8).w(m_vlm, FUNC(vlm5030_device::data_w));
+}
+
+void trackfld_state::hyprolyb_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).mirror(0x1c00).ram();
+ map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8000).mirror(0x1fff).r("trackfld_audio", FUNC(trackfld_audio_device::trackfld_sh_timer_r));
+ map(0xa000, 0xa000).mirror(0x1fff).w(this, FUNC(trackfld_state::konami_SN76496_latch_w));
+ map(0xc000, 0xc000).mirror(0x1fff).r(this, FUNC(trackfld_state::trackfld_SN76496_r)).w(this, FUNC(trackfld_state::konami_SN76496_w));
+ map(0xe000, 0xe000).mirror(0x1ff8).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe001, 0xe001).mirror(0x1ff8).noprw(); /* watch dog ?; reaktor reads here */
+ map(0xe002, 0xe002).mirror(0x1ff8).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::busy_r));
+ map(0xe003, 0xe003).mirror(0x1ff8).nopw();
+ map(0xe004, 0xe004).mirror(0x1ff8).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::write));
+}
+
+void trackfld_state::vlm_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x1fff).rom();
+}
static INPUT_PORTS_START( trackfld )
PORT_START("SYSTEM")
@@ -1030,12 +1039,13 @@ MACHINE_CONFIG_START(trackfld_state::yieartf)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
-ADDRESS_MAP_START(trackfld_state::hyprolyb_adpcm_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, data_r)
- AM_RANGE(0x1001, 0x1001) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, ready_r)
- AM_RANGE(0x1002, 0x1002) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_data_w)
- AM_RANGE(0x1003, 0x1003) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_vck_r)
+void trackfld_state::hyprolyb_adpcm_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram();
+ map(0x1000, 0x1000).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::data_r));
+ map(0x1001, 0x1001).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::ready_r));
+ map(0x1002, 0x1002).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_data_w));
+ map(0x1003, 0x1003).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_vck_r));
// on init:
// $1003 = $00
// $1002 = $FF
@@ -1049,8 +1059,8 @@ ADDRESS_MAP_START(trackfld_state::hyprolyb_adpcm_map)
// $1002 & $0f (out) = 5205 data
// $1001 & $80 (in) = sound latch request
// $1000 (in) = sound latch data
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x8000, 0xffff).rom();
+}
/* same as the original, but uses ADPCM instead of VLM5030 */
/* also different memory handlers do handle that */
diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp
index 62db4842a73..90a3d698804 100644
--- a/src/mame/drivers/travrusa.cpp
+++ b/src/mame/drivers/travrusa.cpp
@@ -58,21 +58,22 @@ and 2764 eprom (swapped D3/D4 and D5/D6 data lines)
#include "screen.h"
-ADDRESS_MAP_START(travrusa_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9000, 0x9000) AM_WRITE(travrusa_scroll_x_low_w)
- AM_RANGE(0xa000, 0xa000) AM_WRITE(travrusa_scroll_x_high_w)
- AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
- AM_RANGE(0xd001, 0xd001) AM_WRITE(travrusa_flipscreen_w) /* + coin counters - not written by shtrider */
- AM_RANGE(0xd000, 0xd000) AM_READ_PORT("SYSTEM") /* IN0 */
- AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P1") /* IN1 */
- AM_RANGE(0xd002, 0xd002) AM_READ_PORT("P2") /* IN2 */
- AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1") /* DSW1 */
- AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2") /* DSW2 */
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
+void travrusa_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(travrusa_state::travrusa_videoram_w)).share("videoram");
+ map(0x9000, 0x9000).w(this, FUNC(travrusa_state::travrusa_scroll_x_low_w));
+ map(0xa000, 0xa000).w(this, FUNC(travrusa_state::travrusa_scroll_x_high_w));
+ map(0xc800, 0xc9ff).writeonly().share("spriteram");
+ map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w));
+ map(0xd001, 0xd001).w(this, FUNC(travrusa_state::travrusa_flipscreen_w)); /* + coin counters - not written by shtrider */
+ map(0xd000, 0xd000).portr("SYSTEM"); /* IN0 */
+ map(0xd001, 0xd001).portr("P1"); /* IN1 */
+ map(0xd002, 0xd002).portr("P2"); /* IN2 */
+ map(0xd003, 0xd003).portr("DSW1"); /* DSW1 */
+ map(0xd004, 0xd004).portr("DSW2"); /* DSW2 */
+ map(0xe000, 0xefff).ram();
+}
static INPUT_PORTS_START( travrusa )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/tricep.cpp b/src/mame/drivers/tricep.cpp
index 183e92d4a4e..87f4de064ec 100644
--- a/src/mame/drivers/tricep.cpp
+++ b/src/mame/drivers/tricep.cpp
@@ -51,12 +51,13 @@ WRITE16_MEMBER( tricep_state::tricep_terminal_w )
m_terminal->write(space, 0, data >> 8);
}
-ADDRESS_MAP_START(tricep_state::tricep_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("p_ram")
- AM_RANGE(0x00fd0000, 0x00fd1fff) AM_ROM AM_REGION("user1",0)
- AM_RANGE(0x00ff0028, 0x00ff0029) AM_READWRITE(tricep_terminal_r,tricep_terminal_w)
-ADDRESS_MAP_END
+void tricep_state::tricep_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000000, 0x0007ffff).ram().share("p_ram");
+ map(0x00fd0000, 0x00fd1fff).rom().region("user1", 0);
+ map(0x00ff0028, 0x00ff0029).rw(this, FUNC(tricep_state::tricep_terminal_r), FUNC(tricep_state::tricep_terminal_w));
+}
/* Input ports */
static INPUT_PORTS_START( tricep )
diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp
index fb06de6ca6a..85b3c004cbb 100644
--- a/src/mame/drivers/triforce.cpp
+++ b/src/mame/drivers/triforce.cpp
@@ -484,12 +484,13 @@ WRITE64_MEMBER(triforce_state::gc_exi_w)
{
}
-ADDRESS_MAP_START(triforce_state::gc_map)
- AM_RANGE(0x00000000, 0x017fffff) AM_RAM
- AM_RANGE(0x0c003000, 0x0c003fff) AM_READWRITE(gc_pi_r, gc_pi_w)
- AM_RANGE(0x0c006800, 0x0c0068ff) AM_READWRITE(gc_exi_r, gc_exi_w)
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
+void triforce_state::gc_map(address_map &map)
+{
+ map(0x00000000, 0x017fffff).ram();
+ map(0x0c003000, 0x0c003fff).rw(this, FUNC(triforce_state::gc_pi_r), FUNC(triforce_state::gc_pi_w));
+ map(0x0c006800, 0x0c0068ff).rw(this, FUNC(triforce_state::gc_exi_r), FUNC(triforce_state::gc_exi_w));
+ map(0xfff00000, 0xffffffff).rom().region("maincpu", 0).share("share2"); /* Program ROM */
+}
void triforce_state::video_start()
diff --git a/src/mame/drivers/triplhnt.cpp b/src/mame/drivers/triplhnt.cpp
index ac40901a816..be1955f6246 100644
--- a/src/mame/drivers/triplhnt.cpp
+++ b/src/mame/drivers/triplhnt.cpp
@@ -114,26 +114,27 @@ READ8_MEMBER(triplhnt_state::da_latch_r)
}
-ADDRESS_MAP_START(triplhnt_state::triplhnt_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x300)
- AM_RANGE(0x0400, 0x04ff) AM_WRITEONLY AM_SHARE("playfield_ram")
- AM_RANGE(0x0800, 0x080f) AM_WRITEONLY AM_SHARE("vpos_ram")
- AM_RANGE(0x0810, 0x081f) AM_WRITEONLY AM_SHARE("hpos_ram")
- AM_RANGE(0x0820, 0x082f) AM_WRITEONLY AM_SHARE("orga_ram")
- AM_RANGE(0x0830, 0x083f) AM_WRITEONLY AM_SHARE("code_ram")
- AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("0C00")
- AM_RANGE(0x0c08, 0x0c08) AM_READ_PORT("0C08")
- AM_RANGE(0x0c09, 0x0c09) AM_READ_PORT("0C09")
- AM_RANGE(0x0c0a, 0x0c0a) AM_READ_PORT("0C0A")
- AM_RANGE(0x0c0b, 0x0c0b) AM_READ(input_port_4_r)
- AM_RANGE(0x0c10, 0x0c1f) AM_READ(da_latch_r)
- AM_RANGE(0x0c20, 0x0c2f) AM_READ(cmos_r) AM_SHARE("nvram")
- AM_RANGE(0x0c30, 0x0c3f) AM_READ(misc_r) AM_DEVWRITE("latch", f9334_device, write_a0)
- AM_RANGE(0x0c40, 0x0c40) AM_READ_PORT("0C40")
- AM_RANGE(0x0c48, 0x0c48) AM_READ_PORT("0C48")
- AM_RANGE(0x7000, 0x7fff) AM_ROM /* program */
-ADDRESS_MAP_END
+void triplhnt_state::triplhnt_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x00ff).ram().mirror(0x300);
+ map(0x0400, 0x04ff).writeonly().share("playfield_ram");
+ map(0x0800, 0x080f).writeonly().share("vpos_ram");
+ map(0x0810, 0x081f).writeonly().share("hpos_ram");
+ map(0x0820, 0x082f).writeonly().share("orga_ram");
+ map(0x0830, 0x083f).writeonly().share("code_ram");
+ map(0x0c00, 0x0c00).portr("0C00");
+ map(0x0c08, 0x0c08).portr("0C08");
+ map(0x0c09, 0x0c09).portr("0C09");
+ map(0x0c0a, 0x0c0a).portr("0C0A");
+ map(0x0c0b, 0x0c0b).r(this, FUNC(triplhnt_state::input_port_4_r));
+ map(0x0c10, 0x0c1f).r(this, FUNC(triplhnt_state::da_latch_r));
+ map(0x0c20, 0x0c2f).r(this, FUNC(triplhnt_state::cmos_r)).share("nvram");
+ map(0x0c30, 0x0c3f).r(this, FUNC(triplhnt_state::misc_r)).w(m_latch, FUNC(f9334_device::write_a0));
+ map(0x0c40, 0x0c40).portr("0C40");
+ map(0x0c48, 0x0c48).portr("0C48");
+ map(0x7000, 0x7fff).rom(); /* program */
+}
static INPUT_PORTS_START( triplhnt )
diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp
index b39f3a72520..09a3c5775e1 100644
--- a/src/mame/drivers/trs80.cpp
+++ b/src/mame/drivers/trs80.cpp
@@ -145,183 +145,197 @@ There don't seem to be any JV1 boot disks for Model III/4.
#include "formats/dmk_dsk.h"
-ADDRESS_MAP_START(trs80_state::trs80_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x3800, 0x38ff) AM_READ(trs80_keyboard_r)
- AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::trs80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::model1_map)
- AM_RANGE(0x0000, 0x377f) AM_ROM // sys80,ht1080 needs up to 375F
- AM_RANGE(0x37de, 0x37de) AM_READWRITE(sys80_f9_r, sys80_f8_w)
- AM_RANGE(0x37df, 0x37df) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0x37e0, 0x37e3) AM_READWRITE(trs80_irq_status_r, trs80_motor_w)
- AM_RANGE(0x37e4, 0x37e7) AM_WRITE(trs80_cassunit_w)
- AM_RANGE(0x37e8, 0x37eb) AM_READWRITE(trs80_printer_r, trs80_printer_w)
- AM_RANGE(0x37ec, 0x37ec) AM_READ(trs80_wd179x_r)
- AM_RANGE(0x37ec, 0x37ec) AM_DEVWRITE("fdc", fd1793_device, cmd_w)
- AM_RANGE(0x37ed, 0x37ed) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w)
- AM_RANGE(0x37ee, 0x37ee) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w)
- AM_RANGE(0x37ef, 0x37ef) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w)
- AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r)
- AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::model1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::sys80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xf8, 0xf8) AM_DEVREAD("uart", ay31015_device, receive) AM_WRITE(sys80_f8_w)
- AM_RANGE(0xf9, 0xf9) AM_READ(sys80_f9_r) AM_DEVWRITE("uart", ay31015_device, transmit)
- AM_RANGE(0xfd, 0xfd) AM_READWRITE(trs80_printer_r, trs80_printer_w)
- AM_RANGE(0xfe, 0xfe) AM_WRITE(sys80_fe_w)
- AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::lnw80_map)
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::lnw80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w)
- AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9")
- AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w)
- AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xfe, 0xfe) AM_READWRITE(lnw80_fe_r, lnw80_fe_w)
- AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::model3_map)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::model3_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w)
- AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w)
- AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w)
- AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w)
- AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w)
- AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w)
- AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w)
- AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w)
- AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w)
- AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::model4_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x84, 0x87) AM_WRITE(trs80m4_84_w)
- AM_RANGE(0x88, 0x89) AM_WRITE(trs80m4_88_w)
- AM_RANGE(0x90, 0x93) AM_WRITE(trs80m4_90_w)
- AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w)
- AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w)
- AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w)
- AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w)
- AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w)
- AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w)
- AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w)
- AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w)
- AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w)
- AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::model4p_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x84, 0x87) AM_WRITE(trs80m4_84_w)
- AM_RANGE(0x88, 0x89) AM_WRITE(trs80m4_88_w)
- AM_RANGE(0x90, 0x93) AM_WRITE(trs80m4_90_w)
- AM_RANGE(0x9c, 0x9f) AM_WRITE(trs80m4p_9c_w)
- AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w)
- AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w)
- AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w)
- AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w)
- AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w)
- AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w)
- AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w)
- AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w)
- AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w)
- AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::meritum_map)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r)
- AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::meritum_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
+void trs80_state::trs80_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x3800, 0x38ff).r(this, FUNC(trs80_state::trs80_keyboard_r));
+ map(0x3c00, 0x3fff).rw(this, FUNC(trs80_state::trs80_videoram_r), FUNC(trs80_state::trs80_videoram_w)).share("videoram");
+ map(0x4000, 0x7fff).ram();
+}
+
+void trs80_state::trs80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w));
+}
+
+void trs80_state::model1_map(address_map &map)
+{
+ map(0x0000, 0x377f).rom(); // sys80,ht1080 needs up to 375F
+ map(0x37de, 0x37de).rw(this, FUNC(trs80_state::sys80_f9_r), FUNC(trs80_state::sys80_f8_w));
+ map(0x37df, 0x37df).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0x37e0, 0x37e3).rw(this, FUNC(trs80_state::trs80_irq_status_r), FUNC(trs80_state::trs80_motor_w));
+ map(0x37e4, 0x37e7).w(this, FUNC(trs80_state::trs80_cassunit_w));
+ map(0x37e8, 0x37eb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
+ map(0x37ec, 0x37ec).r(this, FUNC(trs80_state::trs80_wd179x_r));
+ map(0x37ec, 0x37ec).w(m_fdc, FUNC(fd1793_device::cmd_w));
+ map(0x37ed, 0x37ed).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
+ map(0x37ee, 0x37ee).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
+ map(0x37ef, 0x37ef).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
+ map(0x3800, 0x38ff).mirror(0x300).r(this, FUNC(trs80_state::trs80_keyboard_r));
+ map(0x3c00, 0x3fff).rw(this, FUNC(trs80_state::trs80_videoram_r), FUNC(trs80_state::trs80_videoram_w)).share("videoram");
+ map(0x4000, 0xffff).ram();
+}
+
+void trs80_state::model1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w));
+}
+
+void trs80_state::sys80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xf8, 0xf8).r("uart", FUNC(ay31015_device::receive)).w(this, FUNC(trs80_state::sys80_f8_w));
+ map(0xf9, 0xf9).r(this, FUNC(trs80_state::sys80_f9_r)).w("uart", FUNC(ay31015_device::transmit));
+ map(0xfd, 0xfd).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
+ map(0xfe, 0xfe).w(this, FUNC(trs80_state::sys80_fe_w));
+ map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w));
+}
+
+void trs80_state::lnw80_map(address_map &map)
+{
+ map(0x4000, 0xffff).ram();
+}
+
+void trs80_state::lnw80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w));
+ map(0xe9, 0xe9).portr("E9");
+ map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w));
+ map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xfe, 0xfe).rw(this, FUNC(trs80_state::lnw80_fe_r), FUNC(trs80_state::lnw80_fe_w));
+ map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w));
+}
+
+void trs80_state::model3_map(address_map &map)
+{
+}
+
+void trs80_state::model3_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w));
+ map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w));
+ map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w));
+ map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w));
+ map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w));
+ map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w));
+ map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r));
+ map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w));
+ map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
+ map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
+ map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
+ map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w));
+ map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
+ map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w));
+}
+
+void trs80_state::model4_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x84, 0x87).w(this, FUNC(trs80_state::trs80m4_84_w));
+ map(0x88, 0x89).w(this, FUNC(trs80_state::trs80m4_88_w));
+ map(0x90, 0x93).w(this, FUNC(trs80_state::trs80m4_90_w));
+ map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w));
+ map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w));
+ map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w));
+ map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w));
+ map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w));
+ map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w));
+ map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r));
+ map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w));
+ map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
+ map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
+ map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
+ map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w));
+ map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
+ map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w));
+}
+
+void trs80_state::model4p_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x84, 0x87).w(this, FUNC(trs80_state::trs80m4_84_w));
+ map(0x88, 0x89).w(this, FUNC(trs80_state::trs80m4_88_w));
+ map(0x90, 0x93).w(this, FUNC(trs80_state::trs80m4_90_w));
+ map(0x9c, 0x9f).w(this, FUNC(trs80_state::trs80m4p_9c_w));
+ map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w));
+ map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w));
+ map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w));
+ map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w));
+ map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w));
+ map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w));
+ map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r));
+ map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w));
+ map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
+ map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
+ map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
+ map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w));
+ map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
+ map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w));
+}
+
+void trs80_state::meritum_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0x3800, 0x38ff).mirror(0x300).r(this, FUNC(trs80_state::trs80_keyboard_r));
+ map(0x3c00, 0x3fff).rw(this, FUNC(trs80_state::trs80_videoram_r), FUNC(trs80_state::trs80_videoram_w)).share("videoram");
+ map(0x4000, 0xffff).ram();
+}
+
+void trs80_state::meritum_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
// There are specific writes to ports 03, F3, F7, F8, FA, FB, FD
// so perhaps this system uses devices at these locations.
// The disk input expects values that are different to the usual,
// eg. port F0 should be 5, port F2 should have bit 3 set.
//AM_RANGE(0x03, 0x03) unknown
- AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w)
- AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w)
- AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w)
+ map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r));
+ map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w));
+ map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
+ map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
+ map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
+ map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w));
+ map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
//AM_RANGE(0xfc, 0xfd) unknown
- AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80_state::cp500_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w)
- AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w)
- AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w)
- AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w)
- AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w)
- AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w)
- AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r)
- AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w)
- AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w)
- AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w)
- AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w)
- AM_RANGE(0xf4, 0xf7) AM_READ(cp500_a11_flipflop_toggle)
- AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w)
- AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w)
-ADDRESS_MAP_END
+ map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w));
+}
+
+void trs80_state::cp500_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w));
+ map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w));
+ map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w));
+ map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w));
+ map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w));
+ map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w));
+ map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r));
+ map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w));
+ map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
+ map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
+ map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
+ map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w));
+ map(0xf4, 0xf7).r(this, FUNC(trs80_state::cp500_a11_flipflop_toggle));
+ map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w));
+ map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w));
+}
/**************************************************************************
w/o SHIFT with SHIFT
diff --git a/src/mame/drivers/trs80dt1.cpp b/src/mame/drivers/trs80dt1.cpp
index ea83fab4e9f..1977a415d4d 100644
--- a/src/mame/drivers/trs80dt1.cpp
+++ b/src/mame/drivers/trs80dt1.cpp
@@ -143,20 +143,22 @@ WRITE8_MEMBER( trs80dt1_state::port3_w )
m_beep->set_state(BIT(data, 4));
}
-ADDRESS_MAP_START(trs80dt1_state::prg_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x27ff) AM_READ(dma_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trs80dt1_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xbfff) // A14 not used
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xa800, 0xa83f) AM_MIRROR(0x3c0) AM_DEVREADWRITE("nvram", x2210_device, read, write) // X2210
- AM_RANGE(0xac00, 0xafff) AM_READ(key_r)
- AM_RANGE(0xb000, 0xb3ff) AM_READ_PORT("X9") // also reads some RS232 inputs
- AM_RANGE(0xb400, 0xb7ff) AM_WRITE(store_w)
- AM_RANGE(0xbc00, 0xbc01) AM_MIRROR(0x3fe) AM_DEVREADWRITE("crtc", i8275_device, read, write) // i8276
-ADDRESS_MAP_END
+void trs80dt1_state::prg_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x27ff).r(this, FUNC(trs80dt1_state::dma_r));
+}
+
+void trs80dt1_state::io_map(address_map &map)
+{
+ map.global_mask(0xbfff); // A14 not used
+ map(0xa000, 0xa7ff).ram().share("videoram");
+ map(0xa800, 0xa83f).mirror(0x3c0).rw(m_nvram, FUNC(x2210_device::read), FUNC(x2210_device::write)); // X2210
+ map(0xac00, 0xafff).r(this, FUNC(trs80dt1_state::key_r));
+ map(0xb000, 0xb3ff).portr("X9"); // also reads some RS232 inputs
+ map(0xb400, 0xb7ff).w(this, FUNC(trs80dt1_state::store_w));
+ map(0xbc00, 0xbc01).mirror(0x3fe).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); // i8276
+}
/* Input ports */
static INPUT_PORTS_START( trs80dt1 )
diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp
index 2d103a844fa..8d90f060809 100644
--- a/src/mame/drivers/trs80m2.cpp
+++ b/src/mame/drivers/trs80m2.cpp
@@ -319,40 +319,43 @@ WRITE8_MEMBER( trs80m16_state::ual_w )
// ADDRESS_MAP( z80_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(trs80m2_state::z80_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void trs80m2_state::z80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(trs80m2_state::read), FUNC(trs80m2_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( z80_io )
//-------------------------------------------------
-ADDRESS_MAP_START(trs80m2_state::z80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
- AM_RANGE(0xe4, 0xe7) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0xef, 0xef) AM_WRITE(drvslt_w)
- AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0xf8, 0xf8) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write)
- AM_RANGE(0xf9, 0xf9) AM_WRITE(rom_enable_w)
- AM_RANGE(0xfc, 0xfc) AM_READ(keyboard_r) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0xfd, 0xfd) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0xfe, 0xfe) AM_READ(rtc_r)
- AM_RANGE(0xff, 0xff) AM_READWRITE(nmi_r, nmi_w)
-ADDRESS_MAP_END
+void trs80m2_state::z80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xe0, 0xe3).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xe4, 0xe7).rw(this, FUNC(trs80m2_state::fdc_r), FUNC(trs80m2_state::fdc_w));
+ map(0xef, 0xef).w(this, FUNC(trs80m2_state::drvslt_w));
+ map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0xf4, 0xf7).rw(Z80SIO_TAG, FUNC(z80sio0_device::cd_ba_r), FUNC(z80sio0_device::cd_ba_w));
+ map(0xf8, 0xf8).rw(m_dmac, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0xf9, 0xf9).w(this, FUNC(trs80m2_state::rom_enable_w));
+ map(0xfc, 0xfc).r(this, FUNC(trs80m2_state::keyboard_r)).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0xfd, 0xfd).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xfe, 0xfe).r(this, FUNC(trs80m2_state::rtc_r));
+ map(0xff, 0xff).rw(this, FUNC(trs80m2_state::nmi_r), FUNC(trs80m2_state::nmi_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( m16_z80_io )
//-------------------------------------------------
-ADDRESS_MAP_START(trs80m16_state::m16_z80_io)
- AM_IMPORT_FROM(z80_io)
- AM_RANGE(0xde, 0xde) AM_WRITE(tcl_w)
- AM_RANGE(0xdf, 0xdf) AM_WRITE(ual_w)
-ADDRESS_MAP_END
+void trs80m16_state::m16_z80_io(address_map &map)
+{
+ z80_io(map);
+ map(0xde, 0xde).w(this, FUNC(trs80m16_state::tcl_w));
+ map(0xdf, 0xdf).w(this, FUNC(trs80m16_state::ual_w));
+}
//-------------------------------------------------
diff --git a/src/mame/drivers/truco.cpp b/src/mame/drivers/truco.cpp
index be5bc6f72c3..e98057f3f56 100644
--- a/src/mame/drivers/truco.cpp
+++ b/src/mame/drivers/truco.cpp
@@ -261,15 +261,16 @@ WRITE_LINE_MEMBER(truco_state::pia_irqb_w)
* Memory Map *
*******************************************/
-ADDRESS_MAP_START(truco_state::main_map)
- AM_RANGE(0x0000, 0x17ff) AM_RAM /* General purpose RAM */
- AM_RANGE(0x1800, 0x7bff) AM_RAM AM_SHARE("videoram") /* Video RAM */
- AM_RANGE(0x7c00, 0x7fff) AM_RAM AM_SHARE("battery_ram") /* Battery backed RAM */
- AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x8004, 0x8004) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x8005, 0x8005) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x8008, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void truco_state::main_map(address_map &map)
+{
+ map(0x0000, 0x17ff).ram(); /* General purpose RAM */
+ map(0x1800, 0x7bff).ram().share("videoram"); /* Video RAM */
+ map(0x7c00, 0x7fff).ram().share("battery_ram"); /* Battery backed RAM */
+ map(0x8000, 0x8003).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x8004, 0x8004).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x8005, 0x8005).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x8008, 0xffff).rom();
+}
/*
CRTC:
diff --git a/src/mame/drivers/trucocl.cpp b/src/mame/drivers/trucocl.cpp
index 4b233a0690f..5d370dde5c2 100644
--- a/src/mame/drivers/trucocl.cpp
+++ b/src/mame/drivers/trucocl.cpp
@@ -92,17 +92,18 @@ WRITE8_MEMBER(trucocl_state::audio_dac_w)
m_dac_irq_timer->adjust(attotime::from_hz( 16000 ));
}
-ADDRESS_MAP_START(trucocl_state::main_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(trucocl_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(trucocl_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4c00, 0x4fff) AM_RAM
- AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_enable_w)
- AM_RANGE(0x5000, 0x503f) AM_READ_PORT("IN0")
- AM_RANGE(0x5080, 0x5080) AM_WRITE(audio_dac_w)
- AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void trucocl_state::main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x43ff).ram().w(this, FUNC(trucocl_state::trucocl_videoram_w)).share("videoram");
+ map(0x4400, 0x47ff).ram().w(this, FUNC(trucocl_state::trucocl_colorram_w)).share("colorram");
+ map(0x4c00, 0x4fff).ram();
+ map(0x5000, 0x5000).w(this, FUNC(trucocl_state::irq_enable_w));
+ map(0x5000, 0x503f).portr("IN0");
+ map(0x5080, 0x5080).w(this, FUNC(trucocl_state::audio_dac_w));
+ map(0x50c0, 0x50c0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x8000, 0xffff).rom();
+}
static INPUT_PORTS_START( trucocl )
PORT_START("IN0")
diff --git a/src/mame/drivers/trvmadns.cpp b/src/mame/drivers/trvmadns.cpp
index 59f3e0398f3..11d3ae6b6dc 100644
--- a/src/mame/drivers/trvmadns.cpp
+++ b/src/mame/drivers/trvmadns.cpp
@@ -256,24 +256,26 @@ WRITE8_MEMBER(trvmadns_state::trvmadns_tileram_w)
}
-ADDRESS_MAP_START(trvmadns_state::cpu_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank1")
- AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x6000, 0x7fff) AM_WRITE(trvmadns_gfxram_w) AM_SHARE("gfxram")
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(trvmadns_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0xc000, 0xc01f) AM_RAM_WRITE(trvmadns_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(w2)//NOP
- AM_RANGE(0xe004, 0xe004) AM_WRITE(w3)//NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(trvmadns_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
- AM_RANGE(0x80, 0x80) AM_WRITE(trvmadns_banking_w)
-ADDRESS_MAP_END
+void trvmadns_state::cpu_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).bankr("bank1");
+ map(0x7000, 0x7fff).bankr("bank2");
+ map(0x6000, 0x7fff).w(this, FUNC(trvmadns_state::trvmadns_gfxram_w)).share("gfxram");
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(trvmadns_state::trvmadns_tileram_w)).share("tileram");
+ map(0xc000, 0xc01f).ram().w(this, FUNC(trvmadns_state::trvmadns_palette_w)).share("paletteram");
+ map(0xe000, 0xe000).w(this, FUNC(trvmadns_state::w2));//NOP
+ map(0xe004, 0xe004).w(this, FUNC(trvmadns_state::w3));//NOP
+}
+
+void trvmadns_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).portr("IN0");
+ map(0x80, 0x80).w(this, FUNC(trvmadns_state::trvmadns_banking_w));
+}
static INPUT_PORTS_START( trvmadns )
PORT_START("IN0")
diff --git a/src/mame/drivers/trvquest.cpp b/src/mame/drivers/trvquest.cpp
index 48addfaf38b..70a8faaad89 100644
--- a/src/mame/drivers/trvquest.cpp
+++ b/src/mame/drivers/trvquest.cpp
@@ -61,20 +61,21 @@ WRITE_LINE_MEMBER(gameplan_state::trvquest_misc_w)
// data & 1 -> led on/off ?
}
-ADDRESS_MAP_START(gameplan_state::cpu_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") // cmos ram
- AM_RANGE(0x2000, 0x27ff) AM_RAM // main ram
- AM_RANGE(0x3800, 0x380f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)
- AM_RANGE(0x3810, 0x381f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write)
- AM_RANGE(0x3820, 0x382f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
- AM_RANGE(0x3830, 0x3831) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x3840, 0x3841) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x3850, 0x3850) AM_READNOP //watchdog_reset_r ?
- AM_RANGE(0x8000, 0x9fff) AM_READ(trvquest_question_r)
- AM_RANGE(0xa000, 0xa000) AM_WRITEONLY AM_SHARE("trvquest_q")
- AM_RANGE(0xa000, 0xa000) AM_READNOP // bogus read from the game code when reads question roms
- AM_RANGE(0xb000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void gameplan_state::cpu_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram"); // cmos ram
+ map(0x2000, 0x27ff).ram(); // main ram
+ map(0x3800, 0x380f).rw(m_via_1, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x3810, 0x381f).rw(m_via_2, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x3820, 0x382f).rw(m_via_0, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x3830, 0x3831).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x3840, 0x3841).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x3850, 0x3850).nopr(); //watchdog_reset_r ?
+ map(0x8000, 0x9fff).r(this, FUNC(gameplan_state::trvquest_question_r));
+ map(0xa000, 0xa000).writeonly().share("trvquest_q");
+ map(0xa000, 0xa000).nopr(); // bogus read from the game code when reads question roms
+ map(0xb000, 0xffff).rom();
+}
static INPUT_PORTS_START( trvquest )
PORT_START("IN0")
diff --git a/src/mame/drivers/tryout.cpp b/src/mame/drivers/tryout.cpp
index 74e5ffbe42e..bfb81950633 100644
--- a/src/mame/drivers/tryout.cpp
+++ b/src/mame/drivers/tryout.cpp
@@ -56,34 +56,36 @@ WRITE8_MEMBER(tryout_state::bankswitch_w)
membank("bank1")->set_entry(data & 0x01);
}
-ADDRESS_MAP_START(tryout_state::main_cpu)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
- AM_RANGE(0x4000, 0xbfff) AM_ROM
- AM_RANGE(0xc800, 0xc87f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vram_r, vram_w)
- AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW")
- AM_RANGE(0xe001, 0xe001) AM_READ_PORT("P1")
- AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P2")
- AM_RANGE(0xe003, 0xe003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe301, 0xe301) AM_WRITE(flipscreen_w)
- AM_RANGE(0xe302, 0xe302) AM_WRITE(bankswitch_w)
- AM_RANGE(0xe401, 0xe401) AM_WRITE(vram_bankswitch_w)
- AM_RANGE(0xe402, 0xe404) AM_WRITEONLY AM_SHARE("gfx_control")
- AM_RANGE(0xe414, 0xe414) AM_WRITE(sound_w)
- AM_RANGE(0xe417, 0xe417) AM_WRITE(nmi_ack_w)
- AM_RANGE(0xfff0, 0xffff) AM_ROM AM_REGION("maincpu", 0xbff0) /* reset vectors */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tryout_state::sound_cpu)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(sound_irq_ack_w)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tryout_state::main_cpu(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x17ff).ram().w(this, FUNC(tryout_state::videoram_w)).share("videoram");
+ map(0x2000, 0x3fff).bankr("bank1");
+ map(0x4000, 0xbfff).rom();
+ map(0xc800, 0xc87f).ram().share("spriteram");
+ map(0xcc00, 0xcc7f).ram().share("spriteram2");
+ map(0xd000, 0xd7ff).rw(this, FUNC(tryout_state::vram_r), FUNC(tryout_state::vram_w));
+ map(0xe000, 0xe000).portr("DSW");
+ map(0xe001, 0xe001).portr("P1");
+ map(0xe002, 0xe002).portr("P2");
+ map(0xe003, 0xe003).portr("SYSTEM");
+ map(0xe301, 0xe301).w(this, FUNC(tryout_state::flipscreen_w));
+ map(0xe302, 0xe302).w(this, FUNC(tryout_state::bankswitch_w));
+ map(0xe401, 0xe401).w(this, FUNC(tryout_state::vram_bankswitch_w));
+ map(0xe402, 0xe404).writeonly().share("gfx_control");
+ map(0xe414, 0xe414).w(this, FUNC(tryout_state::sound_w));
+ map(0xe417, 0xe417).w(this, FUNC(tryout_state::nmi_ack_w));
+ map(0xfff0, 0xffff).rom().region("maincpu", 0xbff0); /* reset vectors */
+}
+
+void tryout_state::sound_cpu(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w(this, FUNC(tryout_state::sound_irq_ack_w));
+ map(0xc000, 0xffff).rom();
+}
INPUT_CHANGED_MEMBER(tryout_state::coin_inserted)
{
diff --git a/src/mame/drivers/ts3000.cpp b/src/mame/drivers/ts3000.cpp
index 399f375844e..75b18664f74 100644
--- a/src/mame/drivers/ts3000.cpp
+++ b/src/mame/drivers/ts3000.cpp
@@ -28,13 +28,15 @@ private:
// required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(ts3000_state::mem_map)
- AM_RANGE(0x00000,0x0ffff) AM_RAM
- AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void ts3000_state::mem_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram();
+ map(0xfc000, 0xfffff).rom().region("roms", 0);
+}
-ADDRESS_MAP_START(ts3000_state::io_map)
-ADDRESS_MAP_END
+void ts3000_state::io_map(address_map &map)
+{
+}
static INPUT_PORTS_START( ts3000 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/ts802.cpp b/src/mame/drivers/ts802.cpp
index 16f082f598e..8166445d100 100644
--- a/src/mame/drivers/ts802.cpp
+++ b/src/mame/drivers/ts802.cpp
@@ -65,38 +65,40 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-ADDRESS_MAP_START(ts802_state::ts802_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x1000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void ts802_state::ts802_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0");
+ map(0x1000, 0xffff).ram();
+}
-ADDRESS_MAP_START(ts802_state::ts802_io)
+void ts802_state::ts802_io(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_READ(port00_r) // DIP switches
+ map.global_mask(0xff);
+ map(0x00, 0x03).r(this, FUNC(ts802_state::port00_r)); // DIP switches
// 04 - written once after OS boot to bank in RAM from 0000-3FFF instead of ROM. 4000-FFFF is always RAM.
- AM_RANGE(0x04, 0x07) AM_WRITE(port04_w)
+ map(0x04, 0x07).w(this, FUNC(ts802_state::port04_w));
// 08-0B: Z80 CTC
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
+ map(0x08, 0x0b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
// 0C-0F: Z80 SIO #1
//AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x0c, 0x0c) AM_READ(port0c_r)
- AM_RANGE(0x0d, 0x0d) AM_READ(port0d_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
- AM_RANGE(0x0e, 0x0e) AM_READ(port0e_r)
- AM_RANGE(0x0f, 0x0f) AM_READ(port0f_r)
+ map(0x0c, 0x0c).r(this, FUNC(ts802_state::port0c_r));
+ map(0x0d, 0x0d).r(this, FUNC(ts802_state::port0d_r)).w(m_terminal, FUNC(generic_terminal_device::write));
+ map(0x0e, 0x0e).r(this, FUNC(ts802_state::port0e_r));
+ map(0x0f, 0x0f).r(this, FUNC(ts802_state::port0f_r));
// 10: Z80 DMA
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("dma", z80dma_device, read, write)
+ map(0x10, 0x13).rw("dma", FUNC(z80dma_device::read), FUNC(z80dma_device::write));
// 14-17: WD 1793
- AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
+ map(0x14, 0x17).rw("fdc", FUNC(fd1793_device::read), FUNC(fd1793_device::write));
// 18: floppy misc.
- AM_RANGE(0x18, 0x1c) AM_WRITE(port18_w)
+ map(0x18, 0x1c).w(this, FUNC(ts802_state::port18_w));
// 20-23: Z80 SIO #2
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("dart2", z80dart_device, ba_cd_r, ba_cd_w)
+ map(0x20, 0x23).rw("dart2", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
// 48-4F: WD1000 harddisk controller
// 80: LEDs
- AM_RANGE(0x80, 0x80) AM_WRITE(port80_w)
-ADDRESS_MAP_END
+ map(0x80, 0x80).w(this, FUNC(ts802_state::port80_w));
+}
/* Input ports */
diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp
index 5c6b936bdb0..20a2b33ae39 100644
--- a/src/mame/drivers/ts803.cpp
+++ b/src/mame/drivers/ts803.cpp
@@ -102,11 +102,12 @@ private:
required_ioport m_io_dsw;
};
-ADDRESS_MAP_START(ts803_state::ts803_mem)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x4000, 0xbfff) AM_RAMBANK("bank4")
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void ts803_state::ts803_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0");
+ map(0x4000, 0xbfff).bankrw("bank4");
+ map(0xc000, 0xffff).ram();
+}
/*
@@ -131,20 +132,21 @@ Winchester Disk Controller B0-BF (WDC CE)
Graphics Controller C0-CF (GIO SEL)
*/
-ADDRESS_MAP_START(ts803_state::ts803_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x0f) AM_READ_PORT("DSW")
- AM_RANGE(0x10, 0x1f) AM_READWRITE(port10_r, port10_w)
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("sti", z80sti_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0x90, 0x9f) AM_READWRITE(disk_0_control_r,disk_0_control_w)
- AM_RANGE(0xa0, 0xbf) AM_READWRITE(porta0_r, porta0_w)
- AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("crtc", sy6545_1_device, status_r, address_w)
- AM_RANGE(0xc2, 0xc2) AM_DEVREADWRITE("crtc", sy6545_1_device, register_r, register_w)
- AM_RANGE(0xc4, 0xc4) AM_WRITE(crtc_controlreg_w)
-ADDRESS_MAP_END
+void ts803_state::ts803_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ map(0x00, 0x0f).portr("DSW");
+ map(0x10, 0x1f).rw(this, FUNC(ts803_state::port10_r), FUNC(ts803_state::port10_w));
+ map(0x20, 0x2f).rw("sti", FUNC(z80sti_device::read), FUNC(z80sti_device::write));
+ map(0x30, 0x33).rw("dart", FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w));
+ map(0x80, 0x83).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x90, 0x9f).rw(this, FUNC(ts803_state::disk_0_control_r), FUNC(ts803_state::disk_0_control_w));
+ map(0xa0, 0xbf).rw(this, FUNC(ts803_state::porta0_r), FUNC(ts803_state::porta0_w));
+ map(0xc0, 0xc0).rw("crtc", FUNC(sy6545_1_device::status_r), FUNC(sy6545_1_device::address_w));
+ map(0xc2, 0xc2).rw("crtc", FUNC(sy6545_1_device::register_r), FUNC(sy6545_1_device::register_w));
+ map(0xc4, 0xc4).w(this, FUNC(ts803_state::crtc_controlreg_w));
+}
/* Input ports */
static INPUT_PORTS_START( ts803 )
diff --git a/src/mame/drivers/ts816.cpp b/src/mame/drivers/ts816.cpp
index 4de66497282..88c9298501a 100644
--- a/src/mame/drivers/ts816.cpp
+++ b/src/mame/drivers/ts816.cpp
@@ -58,47 +58,49 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-ADDRESS_MAP_START(ts816_state::ts816_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE(0x4000, 0xdfff ) AM_RAMBANK("bank1")
- AM_RANGE(0xe000, 0xffff ) AM_RAMBANK("bank2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ts816_state::ts816_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) // Tape status byte 1
- AM_RANGE(0x01, 0x01) // Tape status byte 2 and diagnostics mode
- AM_RANGE(0x02, 0x02) // Hard Disk status
- AM_RANGE(0x03, 0x03) // Hard Disk output latch
- AM_RANGE(0x04, 0x04) // Tape output latch byte 2
- AM_RANGE(0x05, 0x05) // Tape output latch byte 1
- AM_RANGE(0x07, 0x07) // Indicator load (LED)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio1", z80sio_device, cd_ba_r, cd_ba_w) // SIO 1 for user 1 & 2
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("sio5", z80sio_device, cd_ba_r, cd_ba_w) // SIO 5 for user 9 & 10
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("sio2", z80sio_device, cd_ba_r, cd_ba_w) // SIO 2 for user 3 & 4
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio6", z80sio_device, cd_ba_r, cd_ba_w) // SIO 6 for user 11 & 12
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("sio3", z80sio_device, cd_ba_r, cd_ba_w) // SIO 3 for user 5 & 6
- AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("sio7", z80sio_device, cd_ba_r, cd_ba_w) // SIO 7 for user 13 & 14
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("sio4", z80sio_device, cd_ba_r, cd_ba_w) // SIO 4 for user 7 & 8
- AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("sio8", z80sio_device, cd_ba_r, cd_ba_w) // SIO 8 for user 15 & 16
+void ts816_state::ts816_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0");
+ map(0x4000, 0xdfff).bankrw("bank1");
+ map(0xe000, 0xffff).bankrw("bank2");
+}
+
+void ts816_state::ts816_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00); // Tape status byte 1
+ map(0x01, 0x01); // Tape status byte 2 and diagnostics mode
+ map(0x02, 0x02); // Hard Disk status
+ map(0x03, 0x03); // Hard Disk output latch
+ map(0x04, 0x04); // Tape output latch byte 2
+ map(0x05, 0x05); // Tape output latch byte 1
+ map(0x07, 0x07); // Indicator load (LED)
+ map(0x10, 0x13).rw("sio1", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 1 for user 1 & 2
+ map(0x18, 0x1b).rw("sio5", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 5 for user 9 & 10
+ map(0x20, 0x23).rw("sio2", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 2 for user 3 & 4
+ map(0x28, 0x2b).rw("sio6", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 6 for user 11 & 12
+ map(0x30, 0x33).rw("sio3", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 3 for user 5 & 6
+ map(0x38, 0x3b).rw("sio7", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 7 for user 13 & 14
+ map(0x40, 0x43).rw("sio4", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 4 for user 7 & 8
+ map(0x48, 0x4b).rw("sio8", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 8 for user 15 & 16
//AM_RANGE(0x50, 0x53) // SIO 0 for RS232 1 and part of tape interface
- AM_RANGE(0x50, 0x50) AM_READ(keyin_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
- AM_RANGE(0x52, 0x52) AM_READ(status_r)
- AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("sio9", z80sio_device, cd_ba_r, cd_ba_w) // SIO 9 for RS232 2 & 3
- AM_RANGE(0x60, 0x60) AM_READ_PORT("DSW")
- AM_RANGE(0x68, 0x68) AM_WRITE(port68_w) // set 2nd bank latch
- AM_RANGE(0x70, 0x78) AM_WRITE(port78_w) // reset 2nd bank latch (manual can't decide between 70 and 78, so we take both)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // CTC 1 (ch 0 baud A)
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("dma", z80dma_device, read, write) // DMA
- AM_RANGE(0xA0, 0xA0) // WDC status / command
- AM_RANGE(0xA1, 0xA1) // WDC data
- AM_RANGE(0xB0, 0xB0) AM_NOP // undocumented, written to at @0707 and @0710
- AM_RANGE(0xC0, 0xC3) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // CTC 2 (ch 0 baud B, ch 1 baud C)
- AM_RANGE(0xD0, 0xD3) AM_DEVREADWRITE("pio", z80pio_device, read, write)
- AM_RANGE(0xE0, 0xE0) AM_WRITE(porte0_w) // set ENDRAM memory banking
- AM_RANGE(0xF0, 0xF0) AM_WRITE(portf0_w) // reset ENDRAM memory banking
-ADDRESS_MAP_END
+ map(0x50, 0x50).r(this, FUNC(ts816_state::keyin_r)).w(m_terminal, FUNC(generic_terminal_device::write));
+ map(0x52, 0x52).r(this, FUNC(ts816_state::status_r));
+ map(0x58, 0x5b).rw("sio9", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 9 for RS232 2 & 3
+ map(0x60, 0x60).portr("DSW");
+ map(0x68, 0x68).w(this, FUNC(ts816_state::port68_w)); // set 2nd bank latch
+ map(0x70, 0x78).w(this, FUNC(ts816_state::port78_w)); // reset 2nd bank latch (manual can't decide between 70 and 78, so we take both)
+ map(0x80, 0x83).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // CTC 1 (ch 0 baud A)
+ map(0x90, 0x93).rw("dma", FUNC(z80dma_device::read), FUNC(z80dma_device::write)); // DMA
+ map(0xA0, 0xA0); // WDC status / command
+ map(0xA1, 0xA1); // WDC data
+ map(0xB0, 0xB0).noprw(); // undocumented, written to at @0707 and @0710
+ map(0xC0, 0xC3).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // CTC 2 (ch 0 baud B, ch 1 baud C)
+ map(0xD0, 0xD3).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0xE0, 0xE0).w(this, FUNC(ts816_state::porte0_w)); // set ENDRAM memory banking
+ map(0xF0, 0xF0).w(this, FUNC(ts816_state::portf0_w)); // reset ENDRAM memory banking
+}
/* Input ports */
diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp
index 21bbdc4154b..24f67c7db49 100644
--- a/src/mame/drivers/tsamurai.cpp
+++ b/src/mame/drivers/tsamurai.cpp
@@ -143,83 +143,88 @@ WRITE_LINE_MEMBER(tsamurai_state::coin2_counter_w)
}
-ADDRESS_MAP_START(tsamurai_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
+void tsamurai_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
/* protection? - there are writes as well...*/
- AM_RANGE(0xd803, 0xd803) AM_READ(tsamurai_unknown_d803_r)
- AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r)
- AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r)
- AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r)
-
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe440, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
-
- AM_RANGE(0xf400, 0xf400) AM_WRITENOP
- AM_RANGE(0xf401, 0xf401) AM_WRITE(sound_command1_w)
- AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w)
-
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w)
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::m660_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
+ map(0xd803, 0xd803).r(this, FUNC(tsamurai_state::tsamurai_unknown_d803_r));
+ map(0xd806, 0xd806).r(this, FUNC(tsamurai_state::unknown_d806_r));
+ map(0xd900, 0xd900).r(this, FUNC(tsamurai_state::unknown_d900_r));
+ map(0xd938, 0xd938).r(this, FUNC(tsamurai_state::unknown_d938_r));
+
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram");
+ map(0xe400, 0xe43f).ram().w(this, FUNC(tsamurai_state::fg_colorram_w)).share("colorram");
+ map(0xe440, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(tsamurai_state::bg_videoram_w)).share("bg_videoram");
+ map(0xf000, 0xf3ff).ram().share("spriteram");
+
+ map(0xf400, 0xf400).nopw();
+ map(0xf401, 0xf401).w(this, FUNC(tsamurai_state::sound_command1_w));
+ map(0xf402, 0xf402).w(this, FUNC(tsamurai_state::sound_command2_w));
+
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2").w(this, FUNC(tsamurai_state::bgcolor_w));
+ map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tsamurai_state::scrolly_w));
+ map(0xf803, 0xf803).w(this, FUNC(tsamurai_state::scrollx_w));
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void tsamurai_state::m660_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
/* protection? - there are writes as well...*/
- AM_RANGE(0xd803, 0xd803) AM_READ(m660_unknown_d803_r)
- AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r)
- AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r)
- AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r)
-
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe440, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
-
- AM_RANGE(0xf400, 0xf400) AM_WRITENOP/* This is always written with F401, F402 & F403 data */
- AM_RANGE(0xf401, 0xf401) AM_WRITE(m660_sound_command3_w)
- AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w)
- AM_RANGE(0xf403, 0xf403) AM_WRITE(sound_command1_w)
-
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w)
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::z80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::z80_m660_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* ? */
- AM_RANGE(0x01, 0x01) AM_WRITENOP /* Written continuously. Increments with level. */
- AM_RANGE(0x02, 0x02) AM_WRITENOP /* Always follows above with 0x01 data */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::vsgongf_audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+ map(0xd803, 0xd803).r(this, FUNC(tsamurai_state::m660_unknown_d803_r));
+ map(0xd806, 0xd806).r(this, FUNC(tsamurai_state::unknown_d806_r));
+ map(0xd900, 0xd900).r(this, FUNC(tsamurai_state::unknown_d900_r));
+ map(0xd938, 0xd938).r(this, FUNC(tsamurai_state::unknown_d938_r));
+
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram");
+ map(0xe400, 0xe43f).ram().w(this, FUNC(tsamurai_state::fg_colorram_w)).share("colorram");
+ map(0xe440, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(tsamurai_state::bg_videoram_w)).share("bg_videoram");
+ map(0xf000, 0xf3ff).ram().share("spriteram");
+
+ map(0xf400, 0xf400).nopw();/* This is always written with F401, F402 & F403 data */
+ map(0xf401, 0xf401).w(this, FUNC(tsamurai_state::m660_sound_command3_w));
+ map(0xf402, 0xf402).w(this, FUNC(tsamurai_state::sound_command2_w));
+ map(0xf403, 0xf403).w(this, FUNC(tsamurai_state::sound_command1_w));
+
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2").w(this, FUNC(tsamurai_state::bgcolor_w));
+ map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tsamurai_state::scrolly_w));
+ map(0xf803, 0xf803).w(this, FUNC(tsamurai_state::scrollx_w));
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void tsamurai_state::z80_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
+
+void tsamurai_state::z80_m660_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); /* ? */
+ map(0x01, 0x01).nopw(); /* Written continuously. Increments with level. */
+ map(0x02, 0x02).nopw(); /* Always follows above with 0x01 data */
+}
+
+void tsamurai_state::vsgongf_audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
READ8_MEMBER(tsamurai_state::sound_command1_r)
{
@@ -237,58 +242,64 @@ READ8_MEMBER(tsamurai_state::m660_sound_command3_r)
}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_READ(sound_command1_r)
- AM_RANGE(0x6001, 0x6001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x7f00, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x6000).r(this, FUNC(tsamurai_state::sound_command1_r));
+ map(0x6001, 0x6001).nopw(); /* ? - probably clear IRQ */
+ map(0x6002, 0x6002).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x7f00, 0x7fff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_READ(sound_command2_r)
- AM_RANGE(0x6001, 0x6001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x7f00, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x6000).r(this, FUNC(tsamurai_state::sound_command2_r));
+ map(0x6001, 0x6001).nopw(); /* ? - probably clear IRQ */
+ map(0x6002, 0x6002).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x7f00, 0x7fff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound1_m660_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(sound_command1_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound1_m660_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::sound_command1_r));
+ map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */
+ map(0xc002, 0xc002).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x8000, 0x87ff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound2_m660_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(sound_command2_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound2_m660_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::sound_command2_r));
+ map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */
+ map(0xc002, 0xc002).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x8000, 0x87ff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound3_m660_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(m660_sound_command3_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xfffc, 0xffff) AM_RAM /* CPU writes here - music data */
-ADDRESS_MAP_END
+void tsamurai_state::sound3_m660_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::m660_sound_command3_r));
+ map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */
+ map(0x8000, 0x87ff).ram();
+ map(0xfffc, 0xffff).ram(); /* CPU writes here - music data */
+}
-ADDRESS_MAP_START(tsamurai_state::sound3_m660_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void tsamurai_state::sound3_m660_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/*******************************************************************************/
@@ -332,36 +343,38 @@ WRITE8_MEMBER(tsamurai_state::vsgongf_sound_command_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(tsamurai_state::vsgongf_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa003, 0xa003) AM_READONLY
- AM_RANGE(0xa006, 0xa006) AM_READ(vsgongf_a006_r) /* protection */
- AM_RANGE(0xa100, 0xa100) AM_READ(vsgongf_a100_r) /* protection */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* work ram */
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe43f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe440, 0xe47b) AM_RAM
- AM_RANGE(0xe800, 0xe800) AM_WRITE(vsgongf_sound_command_w)
- AM_RANGE(0xec00, 0xec06) AM_WRITEONLY
- AM_RANGE(0xf000, 0xf000) AM_WRITE(vsgongf_color_w)
- AM_RANGE(0xf400, 0xf400) AM_WRITEONLY /* vreg? always 0 */
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP
- AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* vreg? always 0 */
- AM_RANGE(0xf803, 0xf803) AM_WRITENOP /* vreg? always 0 */
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::sound_vsgongf_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM /* work RAM */
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(vsgongf_sound_nmi_enable_w) /* NMI enable */
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void tsamurai_state::vsgongf_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa003, 0xa003).readonly();
+ map(0xa006, 0xa006).r(this, FUNC(tsamurai_state::vsgongf_a006_r)); /* protection */
+ map(0xa100, 0xa100).r(this, FUNC(tsamurai_state::vsgongf_a100_r)); /* protection */
+ map(0xc000, 0xc7ff).ram(); /* work ram */
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram");
+ map(0xe400, 0xe43f).ram().share("spriteram");
+ map(0xe440, 0xe47b).ram();
+ map(0xe800, 0xe800).w(this, FUNC(tsamurai_state::vsgongf_sound_command_w));
+ map(0xec00, 0xec06).writeonly();
+ map(0xf000, 0xf000).w(this, FUNC(tsamurai_state::vsgongf_color_w));
+ map(0xf400, 0xf400).writeonly(); /* vreg? always 0 */
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2");
+ map(0xf802, 0xf802).portr("SYSTEM");
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+ map(0xf800, 0xf800).nopw();
+ map(0xf801, 0xf801).nopw(); /* vreg? always 0 */
+ map(0xf803, 0xf803).nopw(); /* vreg? always 0 */
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void tsamurai_state::sound_vsgongf_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x63ff).ram(); /* work RAM */
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(tsamurai_state::vsgongf_sound_nmi_enable_w)); /* NMI enable */
+ map(0xa000, 0xa000).w("dac", FUNC(dac_byte_interface::write));
+}
/*******************************************************************************/
diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp
index 31a429454ea..17fe7af5025 100644
--- a/src/mame/drivers/tsispch.cpp
+++ b/src/mame/drivers/tsispch.cpp
@@ -311,31 +311,35 @@ DRIVER_INIT_MEMBER(tsispch_state,prose2k)
1 1 0 * * * * * * * * * * * * * * * * s ROMs 2 and 3
1 1 1 * * * * * * * * * * * * * * * * s ROMs 0 and 1
*/
-ADDRESS_MAP_START(tsispch_state::i8086_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x02FFF) AM_MIRROR(0x34000) AM_RAM // verified; 6264*2 sram, only first 3/4 used
- AM_RANGE(0x03000, 0x03001) AM_MIRROR(0x341FC) AM_DEVREADWRITE8("i8251a_u15", i8251_device, data_r, data_w, 0x00FF)
- AM_RANGE(0x03002, 0x03003) AM_MIRROR(0x341FC) AM_DEVREADWRITE8("i8251a_u15", i8251_device, status_r, control_w, 0x00FF)
- AM_RANGE(0x03200, 0x03203) AM_MIRROR(0x341FC) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00FF) // AMD P8259 PIC @ U5 (reads as 04 and 7c, upper byte is open bus)
- AM_RANGE(0x03400, 0x03401) AM_MIRROR(0x341FE) AM_READ8(dsw_r, 0x00FF) // verified, read from dipswitch s4
- AM_RANGE(0x03400, 0x03401) AM_MIRROR(0x341FE) AM_WRITE8(peripheral_w, 0xFF00) // verified, write to the 4 leds, plus 4 control bits
- AM_RANGE(0x03600, 0x03601) AM_MIRROR(0x341FC) AM_READWRITE(dsp_data_r, dsp_data_w) // verified; UPD77P20 data reg r/w
- AM_RANGE(0x03602, 0x03603) AM_MIRROR(0x341FC) AM_READWRITE(dsp_status_r, dsp_status_w) // verified; UPD77P20 status reg r
- AM_RANGE(0xc0000, 0xfffff) AM_ROM // verified
-ADDRESS_MAP_END
+void tsispch_state::i8086_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x02FFF).mirror(0x34000).ram(); // verified; 6264*2 sram, only first 3/4 used
+ map(0x03000, 0x03000).mirror(0x341FC).rw("i8251a_u15", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x03002, 0x03002).mirror(0x341FC).rw("i8251a_u15", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x03200, 0x03203).mirror(0x341FC).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // AMD P8259 PIC @ U5 (reads as 04 and 7c, upper byte is open bus)
+ map(0x03400, 0x03400).mirror(0x341FE).r(this, FUNC(tsispch_state::dsw_r)); // verified, read from dipswitch s4
+ map(0x03401, 0x03401).mirror(0x341FE).w(this, FUNC(tsispch_state::peripheral_w)); // verified, write to the 4 leds, plus 4 control bits
+ map(0x03600, 0x03601).mirror(0x341FC).rw(this, FUNC(tsispch_state::dsp_data_r), FUNC(tsispch_state::dsp_data_w)); // verified; UPD77P20 data reg r/w
+ map(0x03602, 0x03603).mirror(0x341FC).rw(this, FUNC(tsispch_state::dsp_status_r), FUNC(tsispch_state::dsp_status_w)); // verified; UPD77P20 status reg r
+ map(0xc0000, 0xfffff).rom(); // verified
+}
// Technically the IO line of the i8086 is completely ignored (it is running in 8086 MIN mode,I believe, which may ignore IO)
-ADDRESS_MAP_START(tsispch_state::i8086_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void tsispch_state::i8086_io(address_map &map)
+{
+ map.unmap_value_high();
+}
-ADDRESS_MAP_START(tsispch_state::dsp_prg_map)
- AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION("dspprg", 0)
-ADDRESS_MAP_END
+void tsispch_state::dsp_prg_map(address_map &map)
+{
+ map(0x0000, 0x01ff).rom().region("dspprg", 0);
+}
-ADDRESS_MAP_START(tsispch_state::dsp_data_map)
- AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION("dspdata", 0)
-ADDRESS_MAP_END
+void tsispch_state::dsp_data_map(address_map &map)
+{
+ map(0x0000, 0x01ff).rom().region("dspdata", 0);
+}
/******************************************************************************
diff --git a/src/mame/drivers/ttchamp.cpp b/src/mame/drivers/ttchamp.cpp
index 7835218f4b6..9939a3910e4 100644
--- a/src/mame/drivers/ttchamp.cpp
+++ b/src/mame/drivers/ttchamp.cpp
@@ -502,9 +502,10 @@ WRITE16_MEMBER(ttchamp_state::mem_w)
-ADDRESS_MAP_START(ttchamp_state::ttchamp_map)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mem_r, mem_w)
-ADDRESS_MAP_END
+void ttchamp_state::ttchamp_map(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(ttchamp_state::mem_r), FUNC(ttchamp_state::mem_w));
+}
/* Re-use same parameters as before (one-shot) */
READ16_MEMBER(ttchamp_state::port1e_r)
@@ -544,29 +545,30 @@ WRITE16_MEMBER(ttchamp_state::port62_w)
m_rombank = 0;
}
-ADDRESS_MAP_START(ttchamp_state::ttchamp_io)
- AM_RANGE(0x0000, 0x0001) AM_WRITENOP // startup only, nmi enable?
+void ttchamp_state::ttchamp_io(address_map &map)
+{
+ map(0x0000, 0x0001).nopw(); // startup only, nmi enable?
- AM_RANGE(0x0002, 0x0003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0004, 0x0005) AM_READ_PORT("P1_P2")
+ map(0x0002, 0x0003).portr("SYSTEM");
+ map(0x0004, 0x0005).portr("P1_P2");
- AM_RANGE(0x0006, 0x0007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+ map(0x0006, 0x0006).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- AM_RANGE(0x0018, 0x0019) AM_READ(blit_start_r) // read before using bus write offset as blit parameters
- AM_RANGE(0x001e, 0x001f) AM_READ(port1e_r) // read before some blit operations (but not all)
+ map(0x0018, 0x0019).r(this, FUNC(ttchamp_state::blit_start_r)); // read before using bus write offset as blit parameters
+ map(0x001e, 0x001f).r(this, FUNC(ttchamp_state::port1e_r)); // read before some blit operations (but not all)
- AM_RANGE(0x0008, 0x0009) AM_WRITE(paldat_w)
- AM_RANGE(0x000a, 0x000b) AM_WRITE(paloff_w) // bit 0x8000 sometimes gets set, why?
+ map(0x0008, 0x0009).w(this, FUNC(ttchamp_state::paldat_w));
+ map(0x000a, 0x000b).w(this, FUNC(ttchamp_state::paloff_w)); // bit 0x8000 sometimes gets set, why?
- AM_RANGE(0x0010, 0x0011) AM_WRITE(port10_w)
+ map(0x0010, 0x0011).w(this, FUNC(ttchamp_state::port10_w));
- AM_RANGE(0x0020, 0x0021) AM_WRITE(port20_w)
+ map(0x0020, 0x0021).w(this, FUNC(ttchamp_state::port20_w));
- AM_RANGE(0x0034, 0x0035) AM_READWRITE(pic_r, pic_w)
+ map(0x0034, 0x0035).rw(this, FUNC(ttchamp_state::pic_r), FUNC(ttchamp_state::pic_w));
- AM_RANGE(0x0062, 0x0063) AM_WRITE(port62_w)
+ map(0x0062, 0x0063).w(this, FUNC(ttchamp_state::port62_w));
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START(ttchamp)
diff --git a/src/mame/drivers/tti.cpp b/src/mame/drivers/tti.cpp
index 754e46ba7cb..5f4e191778c 100644
--- a/src/mame/drivers/tti.cpp
+++ b/src/mame/drivers/tti.cpp
@@ -48,12 +48,13 @@ IRQ_CALLBACK_MEMBER(tti_state::intack)
static INPUT_PORTS_START( tti )
INPUT_PORTS_END
-ADDRESS_MAP_START(tti_state::prg_map)
- AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x7e000, 0x7ffff) AM_RAM
- AM_RANGE(0x80000, 0x80017) AM_DEVREADWRITE("mfp", mc68901_device, read, write)
- AM_RANGE(0x80070, 0x80077) AM_DEVWRITE("bitlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+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(0x80070, 0x80077).w("bitlatch", FUNC(ls259_device::write_d0));
+}
MACHINE_CONFIG_START(tti_state::tti)
MCFG_DEVICE_ADD("maincpu", M68008, XTAL(20'000'000) / 2) // guess
diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp
index 8df55f97e02..5f63d00b9c2 100644
--- a/src/mame/drivers/tubep.cpp
+++ b/src/mame/drivers/tubep.cpp
@@ -131,13 +131,14 @@ WRITE_LINE_MEMBER(tubep_state::coin2_counter_w)
}
-ADDRESS_MAP_START(tubep_state::tubep_main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM
- AM_RANGE(0xc000, 0xc7ff) AM_WRITE(tubep_textram_w) AM_SHARE("textram") /* RAM on GFX PCB @B13 */
- AM_RANGE(0xe000, 0xe7ff) AM_WRITEONLY AM_SHARE("share1")
- AM_RANGE(0xe800, 0xebff) AM_WRITEONLY AM_SHARE("backgroundram") /* row of 8 x 2147 RAMs on main PCB */
-ADDRESS_MAP_END
+void tubep_state::tubep_main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa7ff).ram();
+ map(0xc000, 0xc7ff).w(this, FUNC(tubep_state::tubep_textram_w)).share("textram"); /* RAM on GFX PCB @B13 */
+ map(0xe000, 0xe7ff).writeonly().share("share1");
+ map(0xe800, 0xebff).writeonly().share("backgroundram"); /* row of 8 x 2147 RAMs on main PCB */
+}
WRITE8_MEMBER(tubep_state::main_cpu_irq_line_clear_w)
@@ -153,20 +154,21 @@ WRITE8_MEMBER(tubep_state::tubep_soundlatch_w)
m_sound_latch = (data&0x7f) | 0x80;
}
-ADDRESS_MAP_START(tubep_state::tubep_main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW1")
- AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW2")
- AM_RANGE(0xa0, 0xa0) AM_READ_PORT("DSW3")
-
- AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P2")
- AM_RANGE(0xd0, 0xd0) AM_READ_PORT("P1")
-
- AM_RANGE(0x80, 0x80) AM_WRITE(main_cpu_irq_line_clear_w)
- AM_RANGE(0xb0, 0xb7) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(tubep_soundlatch_w)
-ADDRESS_MAP_END
+void tubep_state::tubep_main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x80, 0x80).portr("DSW1");
+ map(0x90, 0x90).portr("DSW2");
+ map(0xa0, 0xa0).portr("DSW3");
+
+ map(0xb0, 0xb0).portr("SYSTEM");
+ map(0xc0, 0xc0).portr("P2");
+ map(0xd0, 0xd0).portr("P1");
+
+ map(0x80, 0x80).w(this, FUNC(tubep_state::main_cpu_irq_line_clear_w));
+ map(0xb0, 0xb7).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xd0, 0xd0).w(this, FUNC(tubep_state::tubep_soundlatch_w));
+}
@@ -184,21 +186,23 @@ WRITE8_MEMBER(tubep_state::second_cpu_irq_line_clear_w)
}
-ADDRESS_MAP_START(tubep_state::tubep_second_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa000) AM_WRITE(tubep_background_a000_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(tubep_background_c000_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") /* 6116 #1 */
- AM_RANGE(0xe800, 0xebff) AM_WRITEONLY AM_SHARE("backgroundram") /* row of 8 x 2147 RAMs on main PCB */
- AM_RANGE(0xf000, 0xf3ff) AM_WRITEONLY AM_SHARE("sprite_color") /* sprites color lookup table */
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share2") /* program copies here part of shared ram ?? */
-ADDRESS_MAP_END
+void tubep_state::tubep_second_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa000).w(this, FUNC(tubep_state::tubep_background_a000_w));
+ map(0xc000, 0xc000).w(this, FUNC(tubep_state::tubep_background_c000_w));
+ map(0xe000, 0xe7ff).ram().share("share1"); /* 6116 #1 */
+ map(0xe800, 0xebff).writeonly().share("backgroundram"); /* row of 8 x 2147 RAMs on main PCB */
+ map(0xf000, 0xf3ff).writeonly().share("sprite_color"); /* sprites color lookup table */
+ map(0xf800, 0xffff).ram().share("share2"); /* program copies here part of shared ram ?? */
+}
-ADDRESS_MAP_START(tubep_state::tubep_second_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x7f, 0x7f) AM_WRITE(second_cpu_irq_line_clear_w)
-ADDRESS_MAP_END
+void tubep_state::tubep_second_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x7f, 0x7f).w(this, FUNC(tubep_state::second_cpu_irq_line_clear_w));
+}
READ8_MEMBER(tubep_state::tubep_soundlatch_r)
@@ -224,21 +228,23 @@ WRITE8_MEMBER(tubep_state::tubep_sound_unknown)
}
-ADDRESS_MAP_START(tubep_state::tubep_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xd000, 0xd000) AM_READ(tubep_sound_irq_ack)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM /* 6116 #3 */
-ADDRESS_MAP_END
+void tubep_state::tubep_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xd000, 0xd000).r(this, FUNC(tubep_state::tubep_sound_irq_ack));
+ map(0xe000, 0xe7ff).ram(); /* 6116 #3 */
+}
-ADDRESS_MAP_START(tubep_state::tubep_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x06, 0x06) AM_READ(tubep_soundlatch_r)
- AM_RANGE(0x07, 0x07) AM_WRITE(tubep_sound_unknown)
-ADDRESS_MAP_END
+void tubep_state::tubep_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x04, 0x05).w("ay3", FUNC(ay8910_device::address_data_w));
+ map(0x06, 0x06).r(this, FUNC(tubep_state::tubep_soundlatch_r));
+ map(0x07, 0x07).w(this, FUNC(tubep_state::tubep_sound_unknown));
+}
void tubep_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
@@ -362,13 +368,14 @@ MACHINE_RESET_MEMBER(tubep_state,tubep)
*************************************/
/* MS2010-A CPU (equivalent to NSC8105 with one new opcode: 0xec) on graphics PCB */
-ADDRESS_MAP_START(tubep_state::nsc_map)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("sprite_color")
- AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0x2000, 0x2009) AM_WRITE(tubep_sprite_control_w)
- AM_RANGE(0x200a, 0x200b) AM_WRITENOP /* not used by the games - perhaps designed for debugging */
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tubep_state::nsc_map(address_map &map)
+{
+ map(0x0000, 0x03ff).ram().share("sprite_color");
+ map(0x0800, 0x0fff).ram().share("share2");
+ map(0x2000, 0x2009).w(this, FUNC(tubep_state::tubep_sprite_control_w));
+ map(0x200a, 0x200b).nopw(); /* not used by the games - perhaps designed for debugging */
+ map(0xc000, 0xffff).rom();
+}
@@ -378,43 +385,47 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(tubep_state::rjammer_main_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM /* MB8416 SRAM on daughterboard on main PCB (there are two SRAMs, this is the one on the left) */
- AM_RANGE(0xc000, 0xc7ff) AM_WRITE(tubep_textram_w) AM_SHARE("textram")/* RAM on GFX PCB @B13 */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") /* MB8416 SRAM on daughterboard (the one on the right) */
-ADDRESS_MAP_END
-
+void tubep_state::rjammer_main_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa7ff).ram(); /* MB8416 SRAM on daughterboard on main PCB (there are two SRAMs, this is the one on the left) */
+ map(0xc000, 0xc7ff).w(this, FUNC(tubep_state::tubep_textram_w)).share("textram");/* RAM on GFX PCB @B13 */
+ map(0xe000, 0xe7ff).ram().share("share1"); /* MB8416 SRAM on daughterboard (the one on the right) */
+}
-ADDRESS_MAP_START(tubep_state::rjammer_main_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW2") /* a bug in game code (during attract mode) */
- AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW2")
- AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW1")
- AM_RANGE(0xa0, 0xa0) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb0, 0xb0) AM_READ_PORT("P1")
- AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P2")
- AM_RANGE(0xd0, 0xd7) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(main_cpu_irq_line_clear_w) /* clear IRQ interrupt */
- AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void tubep_state::rjammer_main_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW2"); /* a bug in game code (during attract mode) */
+ map(0x80, 0x80).portr("DSW2");
+ map(0x90, 0x90).portr("DSW1");
+ map(0xa0, 0xa0).portr("SYSTEM");
+ map(0xb0, 0xb0).portr("P1");
+ map(0xc0, 0xc0).portr("P2");
+
+ map(0xd0, 0xd7).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xe0, 0xe0).w(this, FUNC(tubep_state::main_cpu_irq_line_clear_w)); /* clear IRQ interrupt */
+ map(0xf0, 0xf0).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
-ADDRESS_MAP_START(tubep_state::rjammer_second_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM /* M5M5117P @21G */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") /* MB8416 on daughterboard (the one on the right) */
- AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("rjammer_bgram")/* M5M5117P @19B (background) */
- AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
+void tubep_state::rjammer_second_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa7ff).ram(); /* M5M5117P @21G */
+ map(0xe000, 0xe7ff).ram().share("share1"); /* MB8416 on daughterboard (the one on the right) */
+ map(0xe800, 0xefff).ram().share("rjammer_bgram");/* M5M5117P @19B (background) */
+ map(0xf800, 0xffff).ram().share("share2");
+}
-ADDRESS_MAP_START(tubep_state::rjammer_second_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xb0, 0xb0) AM_WRITE(rjammer_background_page_w)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(rjammer_background_LS377_w)
-ADDRESS_MAP_END
+void tubep_state::rjammer_second_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xb0, 0xb0).w(this, FUNC(tubep_state::rjammer_background_page_w));
+ map(0xd0, 0xd0).w(this, FUNC(tubep_state::rjammer_background_LS377_w));
+}
TIMER_CALLBACK_MEMBER(tubep_state::rjammer_scanline_callback)
@@ -562,23 +573,25 @@ WRITE8_MEMBER(tubep_state::rjammer_voice_intensity_control_w)
}
-ADDRESS_MAP_START(tubep_state::rjammer_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM /* M5M5117P (M58125P @2C on schematics) */
-ADDRESS_MAP_END
+void tubep_state::rjammer_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xe000, 0xe7ff).ram(); /* M5M5117P (M58125P @2C on schematics) */
+}
-ADDRESS_MAP_START(tubep_state::rjammer_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x10, 0x10) AM_WRITE(rjammer_voice_startstop_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(rjammer_voice_frequency_select_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(rjammer_voice_input_w)
- AM_RANGE(0x90, 0x91) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x92, 0x93) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x94, 0x95) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
- AM_RANGE(0x96, 0x96) AM_WRITE(rjammer_voice_intensity_control_w)
-ADDRESS_MAP_END
+void tubep_state::rjammer_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x10, 0x10).w(this, FUNC(tubep_state::rjammer_voice_startstop_w));
+ map(0x18, 0x18).w(this, FUNC(tubep_state::rjammer_voice_frequency_select_w));
+ map(0x80, 0x80).w(this, FUNC(tubep_state::rjammer_voice_input_w));
+ map(0x90, 0x91).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x92, 0x93).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x94, 0x95).w("ay3", FUNC(ay8910_device::address_data_w));
+ map(0x96, 0x96).w(this, FUNC(tubep_state::rjammer_voice_intensity_control_w));
+}
WRITE8_MEMBER(tubep_state::ay8910_portA_0_w)
diff --git a/src/mame/drivers/tugboat.cpp b/src/mame/drivers/tugboat.cpp
index b23cf5e52d2..d346d2a1234 100644
--- a/src/mame/drivers/tugboat.cpp
+++ b/src/mame/drivers/tugboat.cpp
@@ -233,19 +233,20 @@ void tugboat_state::machine_reset()
}
-ADDRESS_MAP_START(tugboat_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1060, 0x1061) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x10a0, 0x10a1) AM_WRITE(hd46505_0_w) /* scrolling is performed changing the start_addr register (0C/0D) */
- AM_RANGE(0x10c0, 0x10c1) AM_WRITE(hd46505_1_w)
- AM_RANGE(0x11e4, 0x11e7) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x11e8, 0x11eb) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
+void tugboat_state::main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x01ff).ram().share("ram");
+ map(0x1060, 0x1061).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x10a0, 0x10a1).w(this, FUNC(tugboat_state::hd46505_0_w)); /* scrolling is performed changing the start_addr register (0C/0D) */
+ map(0x10c0, 0x10c1).w(this, FUNC(tugboat_state::hd46505_1_w));
+ map(0x11e4, 0x11e7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x11e8, 0x11eb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
//AM_RANGE(0x1700, 0x1fff) AM_RAM
- AM_RANGE(0x18e0, 0x18ef) AM_WRITE(score_w)
- AM_RANGE(0x2000, 0x2fff) AM_RAM /* tilemap RAM */
- AM_RANGE(0x4000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+ map(0x18e0, 0x18ef).w(this, FUNC(tugboat_state::score_w));
+ map(0x2000, 0x2fff).ram(); /* tilemap RAM */
+ map(0x4000, 0x7fff).rom();
+}
static INPUT_PORTS_START( tugboat )
diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp
index f6f2032e26c..3ff73f94e12 100644
--- a/src/mame/drivers/tumbleb.cpp
+++ b/src/mame/drivers/tumbleb.cpp
@@ -628,50 +628,52 @@ WRITE16_MEMBER(tumbleb_state::tumbleb2_soundmcu_w)
/******************************************************************************/
-ADDRESS_MAP_START(tumbleb_state::tumblepopb_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+void tumbleb_state::tumblepopb_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
#if TUMBLEP_HACK
- AM_RANGE(0x000000, 0x07ffff) AM_WRITEONLY /* To write levels modifications */
+ map(0x000000, 0x07ffff).writeonly(); /* To write levels modifications */
#endif
- AM_RANGE(0x100000, 0x100001) AM_READWRITE(tumblepb_prot_r, tumblepb_oki_w)
- AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
- AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */
- AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
- AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w)
- AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data")
- AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */
- AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */
- AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP
- AM_RANGE(0x342400, 0x34247f) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tumbleb_state::fncywld_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ map(0x100000, 0x100001).rw(this, FUNC(tumbleb_state::tumblepb_prot_r), FUNC(tumbleb_state::tumblepb_oki_w));
+ map(0x120000, 0x123fff).ram().share("mainram");
+ map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x1607ff).ram().share("spriteram"); /* Bootleg sprite buffer */
+ map(0x160800, 0x160807).writeonly(); /* writes past the end of spriteram */
+ map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r));
+ map(0x18000c, 0x18000d).nopw();
+ map(0x1a0000, 0x1a07ff).ram();
+ map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w));
+ map(0x320000, 0x320fff).w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data");
+ map(0x322000, 0x322fff).w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data");
+ map(0x340000, 0x3401ff).nopw(); /* Unused row scroll */
+ map(0x340400, 0x34047f).nopw(); /* Unused col scroll */
+ map(0x342000, 0x3421ff).nopw();
+ map(0x342400, 0x34247f).nopw();
+}
+
+void tumbleb_state::fncywld_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
#if FNCYWLD_HACK
- AM_RANGE(0x000000, 0x0fffff) AM_WRITEONLY /* To write levels modifications */
+ map(0x000000, 0x0fffff).writeonly(); /* To write levels modifications */
#endif
- AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* sprites */
- AM_RANGE(0x160800, 0x16080f) AM_WRITEONLY /* goes slightly past the end of spriteram? */
- AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
- AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w)
- AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(fncywld_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fncywld_pf2_data_w) AM_SHARE("pf2_data")
- AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */
- AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */
- AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP
- AM_RANGE(0x342400, 0x34247f) AM_WRITENOP
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+ map(0x100000, 0x100003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x100005, 0x100005).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x1607ff).ram().share("spriteram"); /* sprites */
+ map(0x160800, 0x16080f).writeonly(); /* goes slightly past the end of spriteram? */
+ map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r));
+ map(0x18000c, 0x18000d).nopw();
+ map(0x1a0000, 0x1a07ff).ram();
+ map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w));
+ map(0x320000, 0x321fff).ram().w(this, FUNC(tumbleb_state::fncywld_pf1_data_w)).share("pf1_data");
+ map(0x322000, 0x323fff).ram().w(this, FUNC(tumbleb_state::fncywld_pf2_data_w)).share("pf2_data");
+ map(0x340000, 0x3401ff).nopw(); /* Unused row scroll */
+ map(0x340400, 0x34047f).nopw(); /* Unused col scroll */
+ map(0x342000, 0x3421ff).nopw();
+ map(0x342400, 0x34247f).nopw();
+ map(0xff0000, 0xffffff).ram();
+}
READ16_MEMBER(tumbleb_state::semibase_unknown_r)
@@ -679,23 +681,24 @@ READ16_MEMBER(tumbleb_state::semibase_unknown_r)
return machine().rand();
}
-ADDRESS_MAP_START(tumbleb_state::htchctch_main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10000f) AM_READ(semibase_unknown_r)
- AM_RANGE(0x100000, 0x100001) AM_WRITE(semicom_soundcmd_w)
- AM_RANGE(0x100002, 0x100003) AM_WRITE(bcstory_tilebank_w)
- AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x160fff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
- AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
- AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
- AM_RANGE(0x1a0000, 0x1a0fff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w)
- AM_RANGE(0x320000, 0x321fff) AM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data")
- AM_RANGE(0x323000, 0x331fff) AM_NOP // metal saver writes there when clearing the above tilemaps, flaw in the program routine
- AM_RANGE(0x341000, 0x342fff) AM_RAM // Extra ram?
-ADDRESS_MAP_END
+void tumbleb_state::htchctch_main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10000f).r(this, FUNC(tumbleb_state::semibase_unknown_r));
+ map(0x100000, 0x100001).w(this, FUNC(tumbleb_state::semicom_soundcmd_w));
+ map(0x100002, 0x100003).w(this, FUNC(tumbleb_state::bcstory_tilebank_w));
+ map(0x120000, 0x123fff).ram().share("mainram");
+ map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x160fff).ram().share("spriteram"); /* Bootleg sprite buffer */
+ map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r));
+ map(0x18000c, 0x18000d).nopw();
+ map(0x1a0000, 0x1a0fff).ram();
+ map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w));
+ map(0x320000, 0x321fff).w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data");
+ map(0x322000, 0x322fff).w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data");
+ map(0x323000, 0x331fff).noprw(); // metal saver writes there when clearing the above tilemaps, flaw in the program routine
+ map(0x341000, 0x342fff).ram(); // Extra ram?
+}
@@ -705,32 +708,34 @@ WRITE16_MEMBER(tumbleb_state::jumpkids_sound_w)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(tumbleb_state::suprtrio_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa0000f) AM_RAM AM_SHARE("control")
- AM_RANGE(0xa20000, 0xa20fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0xa22000, 0xa22fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data")
- AM_RANGE(0xcf0000, 0xcf05ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("PLAYERS") AM_WRITE(suprtrio_tilebank_w)
- AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xe80002, 0xe80003) AM_READ_PORT("DSW")
- AM_RANGE(0xec0000, 0xec0001) AM_WRITE(semicom_soundcmd_w)
- AM_RANGE(0xf00000, 0xf07fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tumbleb_state::pangpang_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
- AM_RANGE(0x160800, 0x160807) AM_WRITEONLY // writes past the end of spriteram
- AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w)
- AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(pangpang_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0x340000, 0x341fff) AM_RAM_WRITE(pangpang_pf2_data_w) AM_SHARE("pf2_data")
-ADDRESS_MAP_END
+void tumbleb_state::suprtrio_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x700000, 0x700fff).ram().share("spriteram");
+ map(0xa00000, 0xa0000f).ram().share("control");
+ map(0xa20000, 0xa20fff).ram().w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data");
+ map(0xa22000, 0xa22fff).ram().w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data");
+ map(0xcf0000, 0xcf05ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xe00000, 0xe00001).portr("PLAYERS").w(this, FUNC(tumbleb_state::suprtrio_tilebank_w));
+ map(0xe40000, 0xe40001).portr("SYSTEM");
+ map(0xe80002, 0xe80003).portr("DSW");
+ map(0xec0000, 0xec0001).w(this, FUNC(tumbleb_state::semicom_soundcmd_w));
+ map(0xf00000, 0xf07fff).ram();
+}
+
+void tumbleb_state::pangpang_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x120000, 0x123fff).ram().share("mainram");
+ map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x1607ff).ram().share("spriteram"); /* Bootleg sprite buffer */
+ map(0x160800, 0x160807).writeonly(); // writes past the end of spriteram
+ map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r));
+ map(0x1a0000, 0x1a07ff).ram();
+ map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w));
+ map(0x320000, 0x321fff).ram().w(this, FUNC(tumbleb_state::pangpang_pf1_data_w)).share("pf1_data");
+ map(0x340000, 0x341fff).ram().w(this, FUNC(tumbleb_state::pangpang_pf2_data_w)).share("pf2_data");
+}
/******************************************************************************/
@@ -753,45 +758,48 @@ WRITE8_MEMBER(tumbleb_state::oki_sound_bank_w)
memcpy(&oki[0x30000], &oki[(data * 0x10000) + 0x40000], 0x10000);
}
-ADDRESS_MAP_START(tumbleb_state::semicom_sound_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+void tumbleb_state::semicom_sound_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom();
+ map(0xd000, 0xd7ff).ram();
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
//AM_RANGE(0xf006, 0xf006) ??
- AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf00e, 0xf00e) AM_WRITE(oki_sound_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tumbleb_state::suprtrio_sound_map)
- AM_RANGE(0x0000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM
- AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf00e, 0xf00e).w(this, FUNC(tumbleb_state::oki_sound_bank_w));
+}
+
+void tumbleb_state::suprtrio_sound_map(address_map &map)
+{
+ map(0x0000, 0xcfff).rom();
+ map(0xd000, 0xd7ff).ram();
+ map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
//AM_RANGE(0xf006, 0xf006) ??
- AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xf00e, 0xf00e) AM_WRITE(oki_sound_bank_w)
-ADDRESS_MAP_END
+ map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf00e, 0xf00e).w(this, FUNC(tumbleb_state::oki_sound_bank_w));
+}
/* Jump Kids */
-ADDRESS_MAP_START(tumbleb_state::jumpkids_main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_WRITE(jumpkids_sound_w)
- AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
- AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */
- AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
- AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM
- AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w)
- AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data")
- AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data")
- AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */
- AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */
- AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP
- AM_RANGE(0x342400, 0x34247f) AM_WRITENOP
-ADDRESS_MAP_END
+void tumbleb_state::jumpkids_main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).w(this, FUNC(tumbleb_state::jumpkids_sound_w));
+ map(0x120000, 0x123fff).ram().share("mainram");
+ map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x160000, 0x1607ff).ram().share("spriteram"); /* Bootleg sprite buffer */
+ map(0x160800, 0x160807).writeonly(); /* writes past the end of spriteram */
+ map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r));
+ map(0x18000c, 0x18000d).nopw();
+ map(0x1a0000, 0x1a07ff).ram();
+ map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w));
+ map(0x320000, 0x320fff).w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data");
+ map(0x322000, 0x322fff).w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data");
+ map(0x340000, 0x3401ff).nopw(); /* Unused row scroll */
+ map(0x340400, 0x34047f).nopw(); /* Unused col scroll */
+ map(0x342000, 0x3421ff).nopw();
+ map(0x342400, 0x34247f).nopw();
+}
WRITE8_MEMBER(tumbleb_state::jumpkids_oki_bank_w)
{
@@ -802,13 +810,14 @@ WRITE8_MEMBER(tumbleb_state::jumpkids_oki_bank_w)
memcpy(sound1 + 0x20000, sound2 + bank * 0x20000, 0x20000);
}
-ADDRESS_MAP_START(tumbleb_state::jumpkids_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(jumpkids_oki_bank_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void tumbleb_state::jumpkids_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(tumbleb_state::jumpkids_oki_bank_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/* Semicom AT89C52 MCU */
diff --git a/src/mame/drivers/tunhunt.cpp b/src/mame/drivers/tunhunt.cpp
index 33ba35a2cce..bb91e646063 100644
--- a/src/mame/drivers/tunhunt.cpp
+++ b/src/mame/drivers/tunhunt.cpp
@@ -129,26 +129,27 @@ READ8_MEMBER(tunhunt_state::dsw2_4r)
*
*************************************/
-ADDRESS_MAP_START(tunhunt_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("workram") /* Work RAM */
- AM_RANGE(0x1080, 0x10ff) AM_WRITEONLY
- AM_RANGE(0x1200, 0x12ff) AM_WRITEONLY
- AM_RANGE(0x1400, 0x14ff) AM_WRITEONLY
- AM_RANGE(0x1600, 0x160f) AM_WRITEONLY AM_SHARE("paletteram") /* COLRAM (D7-D4 SHADE; D3-D0 COLOR) */
- AM_RANGE(0x1800, 0x1800) AM_WRITEONLY /* SHEL0H */
- AM_RANGE(0x1a00, 0x1a00) AM_WRITEONLY /* SHEL1H */
- AM_RANGE(0x1c00, 0x1c00) AM_WRITEONLY /* MOBJV */
- AM_RANGE(0x1e00, 0x1eff) AM_WRITE(videoram_w) AM_SHARE("videoram") /* ALPHA */
- AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* watchdog */
- AM_RANGE(0x2000, 0x2007) AM_READ(button_r)
- AM_RANGE(0x2400, 0x2400) AM_WRITENOP /* INT ACK */
- AM_RANGE(0x2800, 0x2800) AM_WRITE(control_w)
- AM_RANGE(0x2c00, 0x2fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x300f) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
- AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
- AM_RANGE(0x5000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
+void tunhunt_state::main_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x03ff).ram().share("workram"); /* Work RAM */
+ map(0x1080, 0x10ff).writeonly();
+ map(0x1200, 0x12ff).writeonly();
+ map(0x1400, 0x14ff).writeonly();
+ map(0x1600, 0x160f).writeonly().share("paletteram"); /* COLRAM (D7-D4 SHADE; D3-D0 COLOR) */
+ map(0x1800, 0x1800).writeonly(); /* SHEL0H */
+ map(0x1a00, 0x1a00).writeonly(); /* SHEL1H */
+ map(0x1c00, 0x1c00).writeonly(); /* MOBJV */
+ map(0x1e00, 0x1eff).w(this, FUNC(tunhunt_state::videoram_w)).share("videoram"); /* ALPHA */
+ map(0x2000, 0x2000).nopw(); /* watchdog */
+ map(0x2000, 0x2007).r(this, FUNC(tunhunt_state::button_r));
+ map(0x2400, 0x2400).nopw(); /* INT ACK */
+ map(0x2800, 0x2800).w(this, FUNC(tunhunt_state::control_w));
+ map(0x2c00, 0x2fff).writeonly().share("spriteram");
+ map(0x3000, 0x300f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x4000, 0x400f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0x5000, 0x7fff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp
index da8517c36bc..904bbcd5d8a 100644
--- a/src/mame/drivers/turbo.cpp
+++ b/src/mame/drivers/turbo.cpp
@@ -499,23 +499,24 @@ WRITE8_MEMBER(turbo_state::spriteram_w)
*
*************************************/
-ADDRESS_MAP_START(turbo_state::turbo_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x0700) AM_READWRITE(spriteram_r, spriteram_w)
- AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0)
- AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("spritepos")
- AM_RANGE(0xb800, 0xbfff) AM_WRITE(turbo_analog_reset_w)
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xefff) AM_WRITE(turbo_collision_clear_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf803) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
- AM_RANGE(0xf900, 0xf903) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write)
- AM_RANGE(0xfa00, 0xfa03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_2", i8255_device, read, write)
- AM_RANGE(0xfb00, 0xfb03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_3", i8255_device, read, write)
- AM_RANGE(0xfc00, 0xfc01) AM_MIRROR(0x00fe) AM_DEVREADWRITE("i8279", i8279_device, read, write)
- AM_RANGE(0xfd00, 0xfdff) AM_READ_PORT("INPUT")
- AM_RANGE(0xfe00, 0xfeff) AM_READ(turbo_collision_r)
-ADDRESS_MAP_END
+void turbo_state::turbo_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0xa000, 0xa0ff).mirror(0x0700).rw(this, FUNC(turbo_state::spriteram_r), FUNC(turbo_state::spriteram_w));
+ map(0xa800, 0xa807).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0));
+ map(0xb000, 0xb3ff).mirror(0x0400).ram().share("spritepos");
+ map(0xb800, 0xbfff).w(this, FUNC(turbo_state::turbo_analog_reset_w));
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram");
+ map(0xe800, 0xefff).w(this, FUNC(turbo_state::turbo_collision_clear_w));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf803).mirror(0x00fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf900, 0xf903).mirror(0x00fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfa00, 0xfa03).mirror(0x00fc).rw(m_i8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfb00, 0xfb03).mirror(0x00fc).rw(m_i8255_3, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfc00, 0xfc01).mirror(0x00fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0xfd00, 0xfdff).portr("INPUT");
+ map(0xfe00, 0xfeff).r(this, FUNC(turbo_state::turbo_collision_r));
+}
@@ -525,21 +526,22 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(turbo_state::subroc3d_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("spritepos") // CONT RAM
- AM_RANGE(0xa400, 0xa7ff) AM_RAM AM_SHARE("spriteram") // CONT RAM
- AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07fc) AM_READ_PORT("IN0") // INPUT 253
- AM_RANGE(0xa801, 0xa801) AM_MIRROR(0x07fc) AM_READ_PORT("IN1") // INPUT 253
- AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x07fc) AM_READ_PORT("DSW2") // INPUT 253
- AM_RANGE(0xa803, 0xa803) AM_MIRROR(0x07fc) AM_READ_PORT("DSW3") // INPUT 253
- AM_RANGE(0xb000, 0xb7ff) AM_RAM // SCRATCH
- AM_RANGE(0xb800, 0xbfff) // HANDLE CL
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") // FIX PAGE
- AM_RANGE(0xe800, 0xe803) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
- AM_RANGE(0xf000, 0xf003) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write)
- AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("i8279", i8279_device, read, write)
-ADDRESS_MAP_END
+void turbo_state::subroc3d_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xa000, 0xa3ff).ram().share("spritepos"); // CONT RAM
+ map(0xa400, 0xa7ff).ram().share("spriteram"); // CONT RAM
+ map(0xa800, 0xa800).mirror(0x07fc).portr("IN0"); // INPUT 253
+ map(0xa801, 0xa801).mirror(0x07fc).portr("IN1"); // INPUT 253
+ map(0xa802, 0xa802).mirror(0x07fc).portr("DSW2"); // INPUT 253
+ map(0xa803, 0xa803).mirror(0x07fc).portr("DSW3"); // INPUT 253
+ map(0xb000, 0xb7ff).ram(); // SCRATCH
+ map(0xb800, 0xbfff); // HANDLE CL
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE
+ map(0xe800, 0xe803).mirror(0x07fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf000, 0xf003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf800, 0xf801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+}
@@ -549,37 +551,41 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(turbo_state::buckrog_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") // FIX PAGE
- AM_RANGE(0xc800, 0xc803) AM_MIRROR(0x07fc) AM_DEVREAD("i8255_0", i8255_device, read) AM_WRITE(buckrog_i8255_0_w) // 8255
- AM_RANGE(0xd000, 0xd003) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) // 8255
- AM_RANGE(0xd800, 0xd801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("i8279", i8279_device, read, write)
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("spritepos") // CONT RAM
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") // CONT RAM
- AM_RANGE(0xe800, 0xe800) AM_MIRROR(0x07fc) AM_READ_PORT("IN0") // INPUT
- AM_RANGE(0xe801, 0xe801) AM_MIRROR(0x07fc) AM_READ_PORT("IN1")
- AM_RANGE(0xe802, 0xe802) AM_MIRROR(0x07fc) AM_READ(buckrog_port_2_r)
- AM_RANGE(0xe803, 0xe803) AM_MIRROR(0x07fc) AM_READ(buckrog_port_3_r)
- AM_RANGE(0xf000, 0xf000)
- AM_RANGE(0xf800, 0xffff) AM_RAM // SCRATCH
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(turbo_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(turbo_state::buckrog_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x0000, 0xdfff) AM_WRITE(buckrog_bitmap_w)
- AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(turbo_state::buckrog_cpu2_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READ(buckrog_cpu2_command_r)
-ADDRESS_MAP_END
+void turbo_state::buckrog_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE
+ map(0xc800, 0xc803).mirror(0x07fc).r(m_i8255_0, FUNC(i8255_device::read)).w(this, FUNC(turbo_state::buckrog_i8255_0_w)); // 8255
+ map(0xd000, 0xd003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); // 8255
+ map(0xd800, 0xd801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write));
+ map(0xe000, 0xe3ff).ram().share("spritepos"); // CONT RAM
+ map(0xe400, 0xe7ff).ram().share("spriteram"); // CONT RAM
+ map(0xe800, 0xe800).mirror(0x07fc).portr("IN0"); // INPUT
+ map(0xe801, 0xe801).mirror(0x07fc).portr("IN1");
+ map(0xe802, 0xe802).mirror(0x07fc).r(this, FUNC(turbo_state::buckrog_port_2_r));
+ map(0xe803, 0xe803).mirror(0x07fc).r(this, FUNC(turbo_state::buckrog_port_3_r));
+ map(0xf000, 0xf000);
+ map(0xf800, 0xffff).ram(); // SCRATCH
+}
+
+void turbo_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+void turbo_state::buckrog_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x0000, 0xdfff).w(this, FUNC(turbo_state::buckrog_bitmap_w));
+ map(0xe000, 0xe7ff).mirror(0x1800).ram();
+}
+
+
+void turbo_state::buckrog_cpu2_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).r(this, FUNC(turbo_state::buckrog_cpu2_command_r));
+}
diff --git a/src/mame/drivers/turrett.cpp b/src/mame/drivers/turrett.cpp
index eb54eac40e6..1c877e3f620 100644
--- a/src/mame/drivers/turrett.cpp
+++ b/src/mame/drivers/turrett.cpp
@@ -85,26 +85,28 @@ void turrett_state::machine_reset()
*
*************************************/
-ADDRESS_MAP_START(turrett_state::cpu_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAM
- AM_RANGE(0x02000010, 0x02000013) AM_RAM
- AM_RANGE(0x02000040, 0x02000043) AM_RAM
- AM_RANGE(0x02000050, 0x02000053) AM_RAM
- AM_RANGE(0x02000060, 0x02000063) AM_RAM
- AM_RANGE(0x02000070, 0x02000073) AM_RAM // TODO: What are these?
- AM_RANGE(0x04000000, 0x0400000f) AM_WRITE(dma_w)
- AM_RANGE(0x04000100, 0x04000103) AM_READWRITE(int_r, int_w)
- AM_RANGE(0x04000200, 0x040003ff) AM_DEVREADWRITE("ttsound", turrett_device, read, write)
- AM_RANGE(0x08000000, 0x0800000f) AM_READWRITE(video_r, video_w)
- AM_RANGE(0x08000200, 0x080003ff) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(turrett_state::turrett_sound_map)
- AM_RANGE(0x0000000, 0x7ffffff) AM_RAM AM_SHARE("bank_a")
- AM_RANGE(0x8000000, 0xfffffff) AM_RAM AM_SHARE("bank_b")
-ADDRESS_MAP_END
+void turrett_state::cpu_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).ram();
+ map(0x02000010, 0x02000013).ram();
+ map(0x02000040, 0x02000043).ram();
+ map(0x02000050, 0x02000053).ram();
+ map(0x02000060, 0x02000063).ram();
+ map(0x02000070, 0x02000073).ram(); // TODO: What are these?
+ map(0x04000000, 0x0400000f).w(this, FUNC(turrett_state::dma_w));
+ map(0x04000100, 0x04000103).rw(this, FUNC(turrett_state::int_r), FUNC(turrett_state::int_w));
+ map(0x04000200, 0x040003ff).rw("ttsound", FUNC(turrett_device::read), FUNC(turrett_device::write));
+ map(0x08000000, 0x0800000f).rw(this, FUNC(turrett_state::video_r), FUNC(turrett_state::video_w));
+ map(0x08000200, 0x080003ff).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0));
+ map(0x1fc00000, 0x1fdfffff).rom().region("maincpu", 0);
+}
+
+
+void turrett_state::turrett_sound_map(address_map &map)
+{
+ map(0x0000000, 0x7ffffff).ram().share("bank_a");
+ map(0x8000000, 0xfffffff).ram().share("bank_b");
+}
diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp
index 8ad4891e72a..1b834115eb5 100644
--- a/src/mame/drivers/tutankhm.cpp
+++ b/src/mame/drivers/tutankhm.cpp
@@ -127,24 +127,25 @@ WRITE8_MEMBER(tutankhm_state::sound_on_w)
*
*************************************/
-ADDRESS_MAP_START(tutankhm_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x8000, 0x800f) AM_MIRROR(0x00f0) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x8100, 0x8100) AM_MIRROR(0x000f) AM_RAM AM_SHARE("scroll")
- AM_RANGE(0x8120, 0x8120) AM_MIRROR(0x000f) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8160, 0x8160) AM_MIRROR(0x000f) AM_READ_PORT("DSW2") /* DSW2 (inverted bits) */
- AM_RANGE(0x8180, 0x8180) AM_MIRROR(0x000f) AM_READ_PORT("IN0") /* IN0 I/O: Coin slots, service, 1P/2P buttons */
- AM_RANGE(0x81a0, 0x81a0) AM_MIRROR(0x000f) AM_READ_PORT("IN1") /* IN1: Player 1 I/O */
- AM_RANGE(0x81c0, 0x81c0) AM_MIRROR(0x000f) AM_READ_PORT("IN2") /* IN2: Player 2 I/O */
- AM_RANGE(0x81e0, 0x81e0) AM_MIRROR(0x000f) AM_READ_PORT("DSW1") /* DSW1 (inverted bits) */
- AM_RANGE(0x8200, 0x8207) AM_MIRROR(0x00f8) AM_READNOP AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x8300, 0x8300) AM_MIRROR(0x00ff) AM_WRITE(tutankhm_bankselect_w)
- AM_RANGE(0x8600, 0x8600) AM_MIRROR(0x00ff) AM_WRITE(sound_on_w)
- AM_RANGE(0x8700, 0x8700) AM_MIRROR(0x00ff) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w)
- AM_RANGE(0x8800, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void tutankhm_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).ram().share("videoram");
+ map(0x8000, 0x800f).mirror(0x00f0).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x8100, 0x8100).mirror(0x000f).ram().share("scroll");
+ map(0x8120, 0x8120).mirror(0x000f).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8160, 0x8160).mirror(0x000f).portr("DSW2"); /* DSW2 (inverted bits) */
+ map(0x8180, 0x8180).mirror(0x000f).portr("IN0"); /* IN0 I/O: Coin slots, service, 1P/2P buttons */
+ map(0x81a0, 0x81a0).mirror(0x000f).portr("IN1"); /* IN1: Player 1 I/O */
+ map(0x81c0, 0x81c0).mirror(0x000f).portr("IN2"); /* IN2: Player 2 I/O */
+ map(0x81e0, 0x81e0).mirror(0x000f).portr("DSW1"); /* DSW1 (inverted bits) */
+ map(0x8200, 0x8207).mirror(0x00f8).nopr().w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x8300, 0x8300).mirror(0x00ff).w(this, FUNC(tutankhm_state::tutankhm_bankselect_w));
+ map(0x8600, 0x8600).mirror(0x00ff).w(this, FUNC(tutankhm_state::sound_on_w));
+ map(0x8700, 0x8700).mirror(0x00ff).w(m_timeplt_audio, FUNC(timeplt_audio_device::sound_data_w));
+ map(0x8800, 0x8fff).ram();
+ map(0x9000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp
index 539434e6d66..db5581b2d37 100644
--- a/src/mame/drivers/tutor.cpp
+++ b/src/mame/drivers/tutor.cpp
@@ -550,39 +550,41 @@ WRITE8_MEMBER( tutor_state::test_w )
}
#endif
-ADDRESS_MAP_START(tutor_state::tutor_memmap)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_NOP /*free for expansion, or cartridge ROM?*/
-
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) /*VDP data*/
- AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)/*VDP status*/
- AM_RANGE(0xe100, 0xe1ff) AM_READWRITE(tutor_mapper_r, tutor_mapper_w) /*cartridge mapper*/
- AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("sn76489a", sn76489a_device, write) /*sound chip*/
- AM_RANGE(0xe800, 0xe8ff) AM_READWRITE(tutor_printer_r, tutor_printer_w) /*printer*/
- AM_RANGE(0xee00, 0xeeff) AM_READNOP AM_WRITE( tutor_cassette_w) /*cassette interface*/
-
- AM_RANGE(0xf000, 0xffff) AM_READ(tutor_highmem_r) AM_WRITENOP /*free for expansion (and internal processor RAM)*/
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tutor_state::pyuutajr_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") AM_WRITENOP
- AM_RANGE(0xc000, 0xdfff) AM_NOP /*free for expansion, or cartridge ROM?*/
-
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) /*VDP data*/
- AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)/*VDP status*/
- AM_RANGE(0xe100, 0xe1ff) AM_READWRITE(tutor_mapper_r, tutor_mapper_w) /*cartridge mapper*/
- AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("sn76489a", sn76489a_device, write) /*sound chip*/
- AM_RANGE(0xe800, 0xe800) AM_READ_PORT("LINE0")
- AM_RANGE(0xea00, 0xea00) AM_READ_PORT("LINE1")
- AM_RANGE(0xec00, 0xec00) AM_READ_PORT("LINE2")
- AM_RANGE(0xee00, 0xee00) AM_READ_PORT("LINE3")
-
- AM_RANGE(0xf000, 0xffff) AM_READ(tutor_highmem_r) AM_WRITENOP /*free for expansion (and internal processor RAM)*/
-ADDRESS_MAP_END
+void tutor_state::tutor_memmap(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1").nopw();
+ 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(0xe100, 0xe1ff).rw(this, 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(0xe800, 0xe8ff).rw(this, FUNC(tutor_state::tutor_printer_r), FUNC(tutor_state::tutor_printer_w)); /*printer*/
+ map(0xee00, 0xeeff).nopr().w(this, FUNC(tutor_state::tutor_cassette_w)); /*cassette interface*/
+
+ map(0xf000, 0xffff).r(this, FUNC(tutor_state::tutor_highmem_r)).nopw(); /*free for expansion (and internal processor RAM)*/
+}
+
+void tutor_state::pyuutajr_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1").nopw();
+ 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(0xe100, 0xe1ff).rw(this, 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(0xe800, 0xe800).portr("LINE0");
+ map(0xea00, 0xea00).portr("LINE1");
+ map(0xec00, 0xec00).portr("LINE2");
+ map(0xee00, 0xee00).portr("LINE3");
+
+ map(0xf000, 0xffff).r(this, FUNC(tutor_state::tutor_highmem_r)).nopw(); /*free for expansion (and internal processor RAM)*/
+}
/*
CRU map summary:
@@ -594,10 +596,11 @@ ADDRESS_MAP_END
>ed00(r): tape input
*/
-ADDRESS_MAP_START(tutor_state::tutor_io)
- AM_RANGE(0xec0, 0xec7) AM_READ(key_r) /*keyboard interface*/
- AM_RANGE(0xed0, 0xed0) AM_READ(tutor_cassette_r) /*cassette interface*/
-ADDRESS_MAP_END
+void tutor_state::tutor_io(address_map &map)
+{
+ map(0xec0, 0xec7).r(this, FUNC(tutor_state::key_r)); /*keyboard interface*/
+ map(0xed0, 0xed0).r(this, FUNC(tutor_state::tutor_cassette_r)); /*cassette interface*/
+}
/* tutor keyboard: 56 keys
diff --git a/src/mame/drivers/tv910.cpp b/src/mame/drivers/tv910.cpp
index 902063754de..a0dadea416c 100644
--- a/src/mame/drivers/tv910.cpp
+++ b/src/mame/drivers/tv910.cpp
@@ -103,23 +103,24 @@ private:
uint8_t m_control;
};
-ADDRESS_MAP_START(tv910_state::tv910_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vram") // VRAM
- AM_RANGE(0x8010, 0x801f) AM_READ(charset_r)
- AM_RANGE(0x8020, 0x8020) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, status_r, address_w)
- AM_RANGE(0x8021, 0x8021) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, register_r, register_w)
- AM_RANGE(0x8030, 0x8033) AM_DEVREADWRITE(ACIA_TAG, mos6551_device, read, write)
- AM_RANGE(0x8040, 0x804f) AM_WRITE(vbl_ack_w)
- AM_RANGE(0x8050, 0x805f) AM_WRITE(nmi_ack_w)
- AM_RANGE(0x8060, 0x806f) AM_READ(kbd_ascii_r)
- AM_RANGE(0x8070, 0x807f) AM_READ(kbd_flags_r)
- AM_RANGE(0x9000, 0x9000) AM_WRITE(control_w)
- AM_RANGE(0x9001, 0x9001) AM_READ_PORT("DSW1")
- AM_RANGE(0x9002, 0x9002) AM_READ_PORT("DSW2")
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void tv910_state::tv910_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).ram();
+ map(0x4000, 0x47ff).ram().share("vram"); // VRAM
+ map(0x8010, 0x801f).r(this, FUNC(tv910_state::charset_r));
+ map(0x8020, 0x8020).rw(m_crtc, FUNC(r6545_1_device::status_r), FUNC(r6545_1_device::address_w));
+ map(0x8021, 0x8021).rw(m_crtc, FUNC(r6545_1_device::register_r), FUNC(r6545_1_device::register_w));
+ map(0x8030, 0x8033).rw(ACIA_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x8040, 0x804f).w(this, FUNC(tv910_state::vbl_ack_w));
+ map(0x8050, 0x805f).w(this, FUNC(tv910_state::nmi_ack_w));
+ map(0x8060, 0x806f).r(this, FUNC(tv910_state::kbd_ascii_r));
+ map(0x8070, 0x807f).r(this, FUNC(tv910_state::kbd_flags_r));
+ map(0x9000, 0x9000).w(this, FUNC(tv910_state::control_w));
+ map(0x9001, 0x9001).portr("DSW1");
+ map(0x9002, 0x9002).portr("DSW2");
+ map(0xf000, 0xffff).rom().region("maincpu", 0);
+}
WRITE8_MEMBER(tv910_state::control_w)
{
diff --git a/src/mame/drivers/tv912.cpp b/src/mame/drivers/tv912.cpp
index 17830f6be63..23712d030a8 100644
--- a/src/mame/drivers/tv912.cpp
+++ b/src/mame/drivers/tv912.cpp
@@ -352,24 +352,27 @@ void tv912_state::machine_reset()
m_uart->write_cs(1);
}
-ADDRESS_MAP_START(tv912_state::prog_map)
- AM_RANGE(0x000, 0xfff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void tv912_state::prog_map(address_map &map)
+{
+ map(0x000, 0xfff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(tv912_state::io_map)
- AM_RANGE(0x00, 0xff) AM_DEVICE("bankdev", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void tv912_state::io_map(address_map &map)
+{
+ map(0x00, 0xff).m(m_bankdev, FUNC(address_map_bank_device::amap8));
+}
-ADDRESS_MAP_START(tv912_state::bank_map)
- AM_RANGE(0x000, 0x0ff) AM_MIRROR(0x300) AM_RAM
- AM_RANGE(0x400, 0x403) AM_MIRROR(0x3c0) AM_SELECT(0x030) AM_READWRITE(crtc_r, crtc_w)
- AM_RANGE(0x404, 0x404) AM_MIRROR(0x3f3) AM_DEVREAD("uart", ay51013_device, receive)
- AM_RANGE(0x408, 0x40b) AM_MIRROR(0x3f0) AM_READ(uart_status_r)
- AM_RANGE(0x408, 0x408) AM_MIRROR(0x3f3) AM_DEVWRITE("uart", ay51013_device, transmit)
- AM_RANGE(0x40c, 0x40f) AM_MIRROR(0x3f0) AM_READ(keyboard_r)
- AM_RANGE(0x40c, 0x40c) AM_MIRROR(0x3f3) AM_WRITE(output_40c)
- AM_RANGE(0x800, 0xfff) AM_RAMBANK("dispram")
-ADDRESS_MAP_END
+void tv912_state::bank_map(address_map &map)
+{
+ map(0x000, 0x0ff).mirror(0x300).ram();
+ map(0x400, 0x403).mirror(0x3c0).select(0x030).rw(this, FUNC(tv912_state::crtc_r), FUNC(tv912_state::crtc_w));
+ map(0x404, 0x404).mirror(0x3f3).r(m_uart, FUNC(ay51013_device::receive));
+ map(0x408, 0x40b).mirror(0x3f0).r(this, FUNC(tv912_state::uart_status_r));
+ map(0x408, 0x408).mirror(0x3f3).w(m_uart, FUNC(ay51013_device::transmit));
+ map(0x40c, 0x40f).mirror(0x3f0).r(this, FUNC(tv912_state::keyboard_r));
+ map(0x40c, 0x40c).mirror(0x3f3).w(this, FUNC(tv912_state::output_40c));
+ map(0x800, 0xfff).bankrw("dispram");
+}
INPUT_CHANGED_MEMBER(tv912_state::uart_settings_changed)
{
diff --git a/src/mame/drivers/tv950.cpp b/src/mame/drivers/tv950.cpp
index 825e0bd66fc..5882163affd 100644
--- a/src/mame/drivers/tv950.cpp
+++ b/src/mame/drivers/tv950.cpp
@@ -92,19 +92,20 @@ private:
int m_row;
};
-ADDRESS_MAP_START(tv950_state::tv950_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("vram") // VRAM
- AM_RANGE(0x8100, 0x8100) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, status_r, address_w)
- AM_RANGE(0x8101, 0x8101) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, register_r, register_w)
- AM_RANGE(0x9000, 0x9000) AM_WRITE(row_addr_w)
- AM_RANGE(0x9300, 0x9303) AM_DEVREADWRITE(ACIA1_TAG, mos6551_device, read, write)
- AM_RANGE(0x9500, 0x9503) AM_DEVREADWRITE(ACIA2_TAG, mos6551_device, read, write)
- AM_RANGE(0x9900, 0x9903) AM_DEVREADWRITE(ACIA3_TAG, mos6551_device, read, write)
- AM_RANGE(0xb100, 0xb10f) AM_DEVREADWRITE(VIA_TAG, via6522_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void tv950_state::tv950_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).ram();
+ map(0x2000, 0x3fff).ram().share("vram"); // VRAM
+ map(0x8100, 0x8100).rw(m_crtc, FUNC(r6545_1_device::status_r), FUNC(r6545_1_device::address_w));
+ map(0x8101, 0x8101).rw(m_crtc, FUNC(r6545_1_device::register_r), FUNC(r6545_1_device::register_w));
+ map(0x9000, 0x9000).w(this, FUNC(tv950_state::row_addr_w));
+ map(0x9300, 0x9303).rw(ACIA1_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x9500, 0x9503).rw(ACIA2_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x9900, 0x9903).rw(ACIA3_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0xb100, 0xb10f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe000, 0xffff).rom().region("maincpu", 0);
+}
/* Input ports */
diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp
index edda41f49aa..8d66b73b2b6 100644
--- a/src/mame/drivers/tv990.cpp
+++ b/src/mame/drivers/tv990.cpp
@@ -310,17 +310,18 @@ WRITE8_MEMBER(tv990_state::kbdc_w)
m_kbdc->data_w(space, 0, data);
}
-ADDRESS_MAP_START(tv990_state::tv990_mem)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x060000, 0x06ffff) AM_RAM AM_SHARE("vram") // character/attribute RAM
- AM_RANGE(0x080000, 0x087fff) AM_RAM AM_SHARE("fontram") // font RAM
- AM_RANGE(0x090000, 0x0900ff) AM_READWRITE(tvi1111_r, tvi1111_w)
- AM_RANGE(0x0a0000, 0x0a000f) AM_DEVREADWRITE8(UART0_TAG, ns16450_device, ins8250_r, ins8250_w, 0x00ff)
- AM_RANGE(0x0a0010, 0x0a001f) AM_DEVREADWRITE8(UART1_TAG, ns16450_device, ins8250_r, ins8250_w, 0x00ff)
- AM_RANGE(0x0a0028, 0x0a002d) AM_DEVREADWRITE8(LPT_TAG, pc_lpt_device, read, write, 0x00ff)
- AM_RANGE(0x0b0000, 0x0b0003) AM_READWRITE8(kbdc_r, kbdc_w, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c7fff) AM_RAM AM_SHARE("nvram")// work RAM
-ADDRESS_MAP_END
+void tv990_state::tv990_mem(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().region("maincpu", 0);
+ map(0x060000, 0x06ffff).ram().share("vram"); // character/attribute RAM
+ map(0x080000, 0x087fff).ram().share("fontram"); // font RAM
+ map(0x090000, 0x0900ff).rw(this, FUNC(tv990_state::tvi1111_r), FUNC(tv990_state::tvi1111_w));
+ map(0x0a0000, 0x0a000f).rw(m_uart0, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff);
+ map(0x0a0010, 0x0a001f).rw(UART1_TAG, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff);
+ map(0x0a0028, 0x0a002d).rw(LPT_TAG, FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask16(0x00ff);
+ map(0x0b0000, 0x0b0003).rw(this, FUNC(tv990_state::kbdc_r), FUNC(tv990_state::kbdc_w)).umask16(0x00ff);
+ map(0x0c0000, 0x0c7fff).ram().share("nvram");// work RAM
+}
/* Input ports */
static INPUT_PORTS_START( tv990 )
diff --git a/src/mame/drivers/tvboy.cpp b/src/mame/drivers/tvboy.cpp
index d0fb7f2b7f3..0c7c62da27c 100644
--- a/src/mame/drivers/tvboy.cpp
+++ b/src/mame/drivers/tvboy.cpp
@@ -62,17 +62,18 @@ WRITE8_MEMBER(tvboy_state::bank_write)
m_crom->set_entry(data);
}
-ADDRESS_MAP_START(tvboy_state::tvboy_mem) // 6507 has 13-bit address space, 0x0000 - 0x1fff
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0f00) AM_DEVREADWRITE("tia_video", tia_video_device, read, write)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0d00) AM_RAM AM_SHARE("riot_ram")
+void tvboy_state::tvboy_mem(address_map &map)
+{ // 6507 has 13-bit address space, 0x0000 - 0x1fff
+ map(0x0000, 0x007f).mirror(0x0f00).rw("tia_video", FUNC(tia_video_device::read), FUNC(tia_video_device::write));
+ map(0x0080, 0x00ff).mirror(0x0d00).ram().share("riot_ram");
#if USE_NEW_RIOT
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVICE("riot", mos6532_t, io_map)
+ map(0x0280, 0x029f).mirror(0x0d00).m("riot", FUNC(mos6532_t::io_map));
#else
- AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVREADWRITE("riot", riot6532_device, read, write)
+ map(0x0280, 0x029f).mirror(0x0d00).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write));
#endif
- AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_write)
- AM_RANGE(0x1000, 0x1fff) AM_ROMBANK("crom")
-ADDRESS_MAP_END
+ map(0x1000, 0x1fff).w(this, FUNC(tvboy_state::bank_write));
+ map(0x1000, 0x1fff).bankr("crom");
+}
#define MASTER_CLOCK_PAL 3546894
diff --git a/src/mame/drivers/tvc.cpp b/src/mame/drivers/tvc.cpp
index 5c52d9e345d..64875a8a08c 100644
--- a/src/mame/drivers/tvc.cpp
+++ b/src/mame/drivers/tvc.cpp
@@ -352,37 +352,39 @@ WRITE8_MEMBER(tvc_state::cassette_w)
m_cassette->output(m_cassette_ff ? +1 : -1);
}
-ADDRESS_MAP_START(tvc_state::tvc_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tvc_state::tvc_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(border_color_w)
- AM_RANGE(0x01, 0x01) AM_DEVWRITE("cent_data_out", output_latch_device, write)
- AM_RANGE(0x02, 0x02) AM_WRITE(bank_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(keyboard_w)
- AM_RANGE(0x04, 0x06) AM_WRITE(sound_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(flipflop_w)
- AM_RANGE(0x0f, 0x0f) AM_WRITE(vram_bank_w)
- AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("exp1", tvcexp_slot_device, io_read, io_write)
- AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("exp2", tvcexp_slot_device, io_read, io_write)
- AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE("exp3", tvcexp_slot_device, io_read, io_write)
- AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("exp4", tvcexp_slot_device, io_read, io_write)
- AM_RANGE(0x50, 0x50) AM_WRITE(cassette_w)
- AM_RANGE(0x58, 0x58) AM_READ(keyboard_r)
- AM_RANGE(0x59, 0x59) AM_READ(int_state_r)
- AM_RANGE(0x5a, 0x5a) AM_READ(exp_id_r)
- AM_RANGE(0x5b, 0x5b) AM_READ(_5b_r)
- AM_RANGE(0x58, 0x5b) AM_WRITE(expint_ack_w)
- AM_RANGE(0x60, 0x63) AM_WRITE(palette_w)
- AM_RANGE(0x70, 0x70) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x71, 0x71) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
-ADDRESS_MAP_END
+void tvc_state::tvc_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void tvc_state::tvc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(tvc_state::border_color_w));
+ map(0x01, 0x01).w("cent_data_out", FUNC(output_latch_device::write));
+ map(0x02, 0x02).w(this, FUNC(tvc_state::bank_w));
+ map(0x03, 0x03).w(this, FUNC(tvc_state::keyboard_w));
+ map(0x04, 0x06).w(this, FUNC(tvc_state::sound_w));
+ map(0x07, 0x07).w(this, FUNC(tvc_state::flipflop_w));
+ map(0x0f, 0x0f).w(this, FUNC(tvc_state::vram_bank_w));
+ map(0x10, 0x1f).rw("exp1", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write));
+ map(0x20, 0x2f).rw("exp2", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write));
+ map(0x30, 0x3f).rw("exp3", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write));
+ map(0x40, 0x4f).rw("exp4", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write));
+ map(0x50, 0x50).w(this, FUNC(tvc_state::cassette_w));
+ map(0x58, 0x58).r(this, FUNC(tvc_state::keyboard_r));
+ map(0x59, 0x59).r(this, FUNC(tvc_state::int_state_r));
+ map(0x5a, 0x5a).r(this, FUNC(tvc_state::exp_id_r));
+ map(0x5b, 0x5b).r(this, FUNC(tvc_state::_5b_r));
+ map(0x58, 0x5b).w(this, FUNC(tvc_state::expint_ack_w));
+ map(0x60, 0x63).w(this, FUNC(tvc_state::palette_w));
+ map(0x70, 0x70).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x71, 0x71).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+}
/* Input ports */
static INPUT_PORTS_START( tvc )
diff --git a/src/mame/drivers/tvcapcom.cpp b/src/mame/drivers/tvcapcom.cpp
index 655b7b218e2..1e55af9bdbb 100644
--- a/src/mame/drivers/tvcapcom.cpp
+++ b/src/mame/drivers/tvcapcom.cpp
@@ -29,8 +29,9 @@ public:
void gc_map(address_map &map);
};
-ADDRESS_MAP_START(tvcapcom_state::gc_map)
-ADDRESS_MAP_END
+void tvcapcom_state::gc_map(address_map &map)
+{
+}
void tvcapcom_state::machine_start()
diff --git a/src/mame/drivers/tvgame.cpp b/src/mame/drivers/tvgame.cpp
index 5a76fb844c6..6b89c78935e 100644
--- a/src/mame/drivers/tvgame.cpp
+++ b/src/mame/drivers/tvgame.cpp
@@ -39,18 +39,20 @@ private:
required_shared_ptr<uint8_t> m_p_videoram;
};
-ADDRESS_MAP_START(tvgame_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_ROM
- AM_RANGE( 0x8000, 0xbfff ) AM_RAM
- AM_RANGE( 0xc000, 0xdfff ) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tvgame_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(3)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x0003) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
+void tvgame_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xdfff).ram().share("videoram");
+}
+
+void tvgame_state::io_map(address_map &map)
+{
+ map.global_mask(3);
+ map.unmap_value_high();
+ map(0x0000, 0x0003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input ports */
INPUT_PORTS_START( tvgame )
diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp
index 5e66aed7c84..74a423c1328 100644
--- a/src/mame/drivers/twin16.cpp
+++ b/src/mame/drivers/twin16.cpp
@@ -164,80 +164,84 @@ WRITE8_MEMBER(twin16_state::upd_start_w)
/* Memory Maps */
-ADDRESS_MAP_START(twin16_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(upd_reset_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_device, port_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(upd_start_w)
- AM_RANGE(0xf000, 0xf000) AM_READ(upd_busy_r) // miaj writes 0 to it
- ADDRESS_MAP_END
-
-ADDRESS_MAP_START(twin16_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("comram")
+void twin16_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(twin16_state::upd_reset_w));
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd000, 0xd000).w(m_upd7759, FUNC(upd7759_device::port_w));
+ map(0xe000, 0xe000).w(this, FUNC(twin16_state::upd_start_w));
+ map(0xf000, 0xf000).r(this, FUNC(twin16_state::upd_busy_r)); // miaj writes 0 to it
+ }
+
+void twin16_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram().share("comram");
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x081000, 0x081fff) AM_WRITENOP
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("SYSTEM") AM_WRITE(CPUA_register_w)
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2")
- AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P3")
- AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1")
- AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
- AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(video_register_w)
- AM_RANGE(0x0c000e, 0x0c000f) AM_READ(sprite_status_r)
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixram")
+ map(0x060000, 0x063fff).ram();
+ map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x081000, 0x081fff).nopw();
+ map(0x0a0000, 0x0a0001).portr("SYSTEM").w(this, FUNC(twin16_state::CPUA_register_w));
+ map(0x0a0002, 0x0a0003).portr("P1");
+ map(0x0a0004, 0x0a0005).portr("P2");
+ map(0x0a0006, 0x0a0007).portr("P3");
+ map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0a0010, 0x0a0011).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0012, 0x0a0013).portr("DSW1");
+ map(0x0a0018, 0x0a0019).portr("DSW3");
+ map(0x0c0000, 0x0c000f).w(this, FUNC(twin16_state::video_register_w));
+ map(0x0c000e, 0x0c000f).r(this, FUNC(twin16_state::sprite_status_r));
+ map(0x100000, 0x103fff).ram().w(this, FUNC(twin16_state::fixram_w)).share("fixram");
// AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj
- AM_RANGE(0x120000, 0x121fff) AM_RAM_WRITE(videoram0_w) AM_SHARE("videoram.0")
- AM_RANGE(0x122000, 0x123fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram.1")
- AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("spriteram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(twin16_state::sub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("comram")
+ map(0x120000, 0x121fff).ram().w(this, FUNC(twin16_state::videoram0_w)).share("videoram.0");
+ map(0x122000, 0x123fff).ram().w(this, FUNC(twin16_state::videoram1_w)).share("videoram.1");
+ map(0x140000, 0x143fff).ram().share("spriteram");
+}
+
+void twin16_state::sub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram().share("comram");
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x080000, 0x09ffff) AM_ROM AM_REGION("data", 0)
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(CPUB_register_w)
- AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x480000, 0x481fff) AM_RAM_WRITE(videoram0_w) AM_SHARE("videoram.0")
- AM_RANGE(0x482000, 0x483fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram.1")
- AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(zipram_w) AM_SHARE("zipram")
- AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gfxrom", 0)
- AM_RANGE(0x700000, 0x77ffff) AM_ROMBANK("gfxrombank")
- AM_RANGE(0x780000, 0x79ffff) AM_RAM AM_SHARE("sprite_gfx_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fround_state::fround_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("comram")
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("SYSTEM") AM_WRITE(fround_CPU_register_w)
- AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
- AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2")
- AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1")
- AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
- AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(video_register_w)
- AM_RANGE(0x0c000e, 0x0c000f) AM_READ(sprite_status_r)
- AM_RANGE(0x0e0000, 0x0e0001) AM_WRITE(gfx_bank_w)
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixram")
- AM_RANGE(0x120000, 0x121fff) AM_RAM_WRITE(videoram0_w) AM_SHARE("videoram.0")
- AM_RANGE(0x122000, 0x123fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram.1")
- AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x500000, 0x5fffff) AM_ROM AM_REGION("tiles", 0)
- AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gfxrom", 0)
-ADDRESS_MAP_END
+ map(0x060000, 0x063fff).ram();
+ map(0x080000, 0x09ffff).rom().region("data", 0);
+ map(0x0a0000, 0x0a0001).w(this, FUNC(twin16_state::CPUB_register_w));
+ map(0x400000, 0x403fff).ram().share("spriteram");
+ map(0x480000, 0x481fff).ram().w(this, FUNC(twin16_state::videoram0_w)).share("videoram.0");
+ map(0x482000, 0x483fff).ram().w(this, FUNC(twin16_state::videoram1_w)).share("videoram.1");
+ map(0x500000, 0x53ffff).ram().w(this, FUNC(twin16_state::zipram_w)).share("zipram");
+ map(0x600000, 0x6fffff).rom().region("gfxrom", 0);
+ map(0x700000, 0x77ffff).bankr("gfxrombank");
+ map(0x780000, 0x79ffff).ram().share("sprite_gfx_ram");
+}
+
+void fround_state::fround_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x043fff).ram().share("comram");
+ map(0x060000, 0x063fff).ram();
+ map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).portr("SYSTEM").w(this, FUNC(fround_state::fround_CPU_register_w));
+ map(0x0a0002, 0x0a0003).portr("P1");
+ map(0x0a0004, 0x0a0005).portr("P2");
+ map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0a0010, 0x0a0011).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x0a0012, 0x0a0013).portr("DSW1");
+ map(0x0a0018, 0x0a0019).portr("DSW3");
+ map(0x0c0000, 0x0c000f).w(this, FUNC(fround_state::video_register_w));
+ map(0x0c000e, 0x0c000f).r(this, FUNC(fround_state::sprite_status_r));
+ map(0x0e0000, 0x0e0001).w(this, FUNC(fround_state::gfx_bank_w));
+ map(0x100000, 0x103fff).ram().w(this, FUNC(fround_state::fixram_w)).share("fixram");
+ map(0x120000, 0x121fff).ram().w(this, FUNC(fround_state::videoram0_w)).share("videoram.0");
+ map(0x122000, 0x123fff).ram().w(this, FUNC(fround_state::videoram1_w)).share("videoram.1");
+ map(0x140000, 0x143fff).ram().share("spriteram");
+ map(0x500000, 0x5fffff).rom().region("tiles", 0);
+ map(0x600000, 0x6fffff).rom().region("gfxrom", 0);
+}
/* Input Ports */
diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp
index e7bd1c44342..276870da5cb 100644
--- a/src/mame/drivers/twincobr.cpp
+++ b/src/mame/drivers/twincobr.cpp
@@ -393,65 +393,70 @@ Shark Zame
/***************************** 68000 Memory Map *****************************/
-ADDRESS_MAP_START(twincobr_state::main_program_map)
- AM_RANGE(0x000000, 0x02ffff) AM_ROM
- AM_RANGE(0x030000, 0x033fff) AM_RAM /* 68K and DSP shared RAM */
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("spriteram16")
- AM_RANGE(0x050000, 0x050dff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0x00ff)
- AM_RANGE(0x060002, 0x060003) AM_DEVWRITE8("crtc", mc6845_device, register_w, 0x00ff)
- AM_RANGE(0x070000, 0x070003) AM_WRITE(twincobr_txscroll_w) /* text layer scroll */
- AM_RANGE(0x070004, 0x070005) AM_WRITE(twincobr_txoffs_w) /* offset in text video RAM */
- AM_RANGE(0x072000, 0x072003) AM_WRITE(twincobr_bgscroll_w) /* bg layer scroll */
- AM_RANGE(0x072004, 0x072005) AM_WRITE(twincobr_bgoffs_w) /* offset in bg video RAM */
- AM_RANGE(0x074000, 0x074003) AM_WRITE(twincobr_fgscroll_w) /* fg layer scroll */
- AM_RANGE(0x074004, 0x074005) AM_WRITE(twincobr_fgoffs_w) /* offset in fg video RAM */
- AM_RANGE(0x076000, 0x076003) AM_WRITE(twincobr_exscroll_w) /* Spare layer scroll */
- AM_RANGE(0x078000, 0x078001) AM_READ_PORT("DSWA")
- AM_RANGE(0x078002, 0x078003) AM_READ_PORT("DSWB")
- AM_RANGE(0x078004, 0x078005) AM_READ_PORT("P1")
- AM_RANGE(0x078006, 0x078007) AM_READ_PORT("P2")
- AM_RANGE(0x078008, 0x078009) AM_READ_PORT("VBLANK") /* V-Blank & FShark Coin/Start */
- AM_RANGE(0x07800a, 0x07800b) AM_DEVWRITE8("coinlatch", ls259_device, write_nibble_d0, 0x00ff) /* Flying Shark DSP Comms & coin stuff */
- AM_RANGE(0x07800c, 0x07800d) AM_DEVWRITE8("mainlatch", ls259_device, write_nibble_d0, 0x00ff) /* Twin Cobra DSP Comms & system control */
- AM_RANGE(0x07a000, 0x07afff) AM_READWRITE(twincobr_sharedram_r, twincobr_sharedram_w) /* 16-bit on 68000 side, 8-bit on Z80 side */
- AM_RANGE(0x07e000, 0x07e001) AM_READWRITE(twincobr_txram_r, twincobr_txram_w) /* data for text video RAM */
- AM_RANGE(0x07e002, 0x07e003) AM_READWRITE(twincobr_bgram_r, twincobr_bgram_w) /* data for bg video RAM */
- AM_RANGE(0x07e004, 0x07e005) AM_READWRITE(twincobr_fgram_r, twincobr_fgram_w) /* data for fg video RAM */
-ADDRESS_MAP_END
+void twincobr_state::main_program_map(address_map &map)
+{
+ map(0x000000, 0x02ffff).rom();
+ map(0x030000, 0x033fff).ram(); /* 68K and DSP shared RAM */
+ map(0x040000, 0x040fff).ram().share("spriteram16");
+ map(0x050000, 0x050dff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x060001, 0x060001).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x060003, 0x060003).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x070000, 0x070003).w(this, FUNC(twincobr_state::twincobr_txscroll_w)); /* text layer scroll */
+ map(0x070004, 0x070005).w(this, FUNC(twincobr_state::twincobr_txoffs_w)); /* offset in text video RAM */
+ map(0x072000, 0x072003).w(this, FUNC(twincobr_state::twincobr_bgscroll_w)); /* bg layer scroll */
+ map(0x072004, 0x072005).w(this, FUNC(twincobr_state::twincobr_bgoffs_w)); /* offset in bg video RAM */
+ map(0x074000, 0x074003).w(this, FUNC(twincobr_state::twincobr_fgscroll_w)); /* fg layer scroll */
+ map(0x074004, 0x074005).w(this, FUNC(twincobr_state::twincobr_fgoffs_w)); /* offset in fg video RAM */
+ map(0x076000, 0x076003).w(this, FUNC(twincobr_state::twincobr_exscroll_w)); /* Spare layer scroll */
+ map(0x078000, 0x078001).portr("DSWA");
+ map(0x078002, 0x078003).portr("DSWB");
+ map(0x078004, 0x078005).portr("P1");
+ map(0x078006, 0x078007).portr("P2");
+ map(0x078008, 0x078009).portr("VBLANK"); /* V-Blank & FShark Coin/Start */
+ map(0x07800b, 0x07800b).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Flying Shark DSP Comms & coin stuff */
+ map(0x07800d, 0x07800d).w("mainlatch", FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra DSP Comms & system control */
+ map(0x07a000, 0x07afff).rw(this, 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(this, FUNC(twincobr_state::twincobr_txram_r), FUNC(twincobr_state::twincobr_txram_w)); /* data for text video RAM */
+ map(0x07e002, 0x07e003).rw(this, FUNC(twincobr_state::twincobr_bgram_r), FUNC(twincobr_state::twincobr_bgram_w)); /* data for bg video RAM */
+ map(0x07e004, 0x07e005).rw(this, FUNC(twincobr_state::twincobr_fgram_r), FUNC(twincobr_state::twincobr_fgram_w)); /* data for fg video RAM */
+}
/***************************** Z80 Memory Map *******************************/
-ADDRESS_MAP_START(twincobr_state::sound_program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
+void twincobr_state::sound_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("sharedram");
+}
-ADDRESS_MAP_START(twincobr_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM") /* Twin Cobra - Coin/Start */
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0) /* Twin Cobra coin count-lockout */
- AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
- AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB")
-ADDRESS_MAP_END
+void twincobr_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x10, 0x10).portr("SYSTEM"); /* Twin Cobra - Coin/Start */
+ map(0x20, 0x20).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra coin count-lockout */
+ map(0x40, 0x40).portr("DSWA");
+ map(0x50, 0x50).portr("DSWB");
+}
/***************************** TMS32010 Memory Map **************************/
-ADDRESS_MAP_START(twincobr_state::DSP_program_map)
- AM_RANGE(0x000, 0x7ff) AM_ROM
-ADDRESS_MAP_END
+void twincobr_state::DSP_program_map(address_map &map)
+{
+ map(0x000, 0x7ff).rom();
+}
/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */
-ADDRESS_MAP_START(twincobr_state::DSP_io_map)
- AM_RANGE(0, 0) AM_WRITE(twincobr_dsp_addrsel_w)
- AM_RANGE(1, 1) AM_READWRITE(twincobr_dsp_r, twincobr_dsp_w)
- AM_RANGE(2, 2) AM_READWRITE(fsharkbt_dsp_r, fsharkbt_dsp_w)
- AM_RANGE(3, 3) AM_WRITE(twincobr_dsp_bio_w)
-ADDRESS_MAP_END
+void twincobr_state::DSP_io_map(address_map &map)
+{
+ map(0, 0).w(this, FUNC(twincobr_state::twincobr_dsp_addrsel_w));
+ map(1, 1).rw(this, FUNC(twincobr_state::twincobr_dsp_r), FUNC(twincobr_state::twincobr_dsp_w));
+ map(2, 2).rw(this, FUNC(twincobr_state::fsharkbt_dsp_r), FUNC(twincobr_state::fsharkbt_dsp_w));
+ map(3, 3).w(this, FUNC(twincobr_state::twincobr_dsp_bio_w));
+}
/*****************************************************************************
diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp
index cb5fa5c04d1..71815fbe78e 100644
--- a/src/mame/drivers/twinkle.cpp
+++ b/src/mame/drivers/twinkle.cpp
@@ -814,24 +814,25 @@ READ8_MEMBER(twinkle_state::shared_psx_r)
return result;
}
-ADDRESS_MAP_START(twinkle_state::main_map)
- AM_RANGE(0x1f000000, 0x1f0007ff) AM_READWRITE8(shared_psx_r, shared_psx_w, 0x00ff00ff)
- AM_RANGE(0x1f200000, 0x1f20001f) AM_DEVREADWRITE8("am53cf96", am53cf96_device, read, write, 0x00ff00ff)
- AM_RANGE(0x1f20a01c, 0x1f20a01f) AM_WRITENOP /* scsi? */
- AM_RANGE(0x1f210000, 0x1f2107ff) AM_DEVREADWRITE8("fdc37c665gt", fdc37c665gt_device, read, write, 0x00ff00ff)
- AM_RANGE(0x1f218000, 0x1f218003) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x000000ff) /* LTC1232 */
- AM_RANGE(0x1f220000, 0x1f220003) AM_WRITE8(twinkle_io_w, 0x00ff00ff)
- AM_RANGE(0x1f220004, 0x1f220007) AM_READ8(twinkle_io_r, 0x00ff00ff)
- AM_RANGE(0x1f230000, 0x1f230003) AM_WRITE16(led_w, 0x0000ffff)
- AM_RANGE(0x1f240000, 0x1f240003) AM_READ_PORT("IN6")
- AM_RANGE(0x1f250000, 0x1f250003) AM_WRITE16(key_led_w, 0x0000ffff)
- AM_RANGE(0x1f260000, 0x1f260003) AM_WRITE16(serial_w, 0x0000ffff)
- AM_RANGE(0x1f270000, 0x1f270003) AM_WRITE_PORT("OUTSEC")
- AM_RANGE(0x1f280000, 0x1f280003) AM_READ_PORT("INSEC")
- AM_RANGE(0x1f290000, 0x1f29007f) AM_DEVREADWRITE8("rtc", rtc65271_device, rtc_r, rtc_w, 0x00ff00ff)
- AM_RANGE(0x1f2a0000, 0x1f2a007f) AM_DEVREADWRITE8("rtc", rtc65271_device, xram_r, xram_w, 0x00ff00ff)
- AM_RANGE(0x1f2b0000, 0x1f2b00ff) AM_WRITE16(twinkle_output_w, 0xffffffff)
-ADDRESS_MAP_END
+void twinkle_state::main_map(address_map &map)
+{
+ map(0x1f000000, 0x1f0007ff).rw(this, FUNC(twinkle_state::shared_psx_r), FUNC(twinkle_state::shared_psx_w)).umask32(0x00ff00ff);
+ map(0x1f200000, 0x1f20001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff);
+ map(0x1f20a01c, 0x1f20a01f).nopw(); /* scsi? */
+ map(0x1f210000, 0x1f2107ff).rw("fdc37c665gt", FUNC(fdc37c665gt_device::read), FUNC(fdc37c665gt_device::write)).umask32(0x00ff00ff);
+ map(0x1f218000, 0x1f218000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* LTC1232 */
+ map(0x1f220000, 0x1f220003).w(this, FUNC(twinkle_state::twinkle_io_w)).umask32(0x00ff00ff);
+ map(0x1f220004, 0x1f220007).r(this, FUNC(twinkle_state::twinkle_io_r)).umask32(0x00ff00ff);
+ map(0x1f230000, 0x1f230001).w(this, FUNC(twinkle_state::led_w));
+ map(0x1f240000, 0x1f240003).portr("IN6");
+ map(0x1f250000, 0x1f250001).w(this, FUNC(twinkle_state::key_led_w));
+ map(0x1f260000, 0x1f260001).w(this, FUNC(twinkle_state::serial_w));
+ map(0x1f270000, 0x1f270003).portw("OUTSEC");
+ map(0x1f280000, 0x1f280003).portr("INSEC");
+ map(0x1f290000, 0x1f29007f).rw("rtc", FUNC(rtc65271_device::rtc_r), FUNC(rtc65271_device::rtc_w)).umask32(0x00ff00ff);
+ map(0x1f2a0000, 0x1f2a007f).rw("rtc", FUNC(rtc65271_device::xram_r), FUNC(rtc65271_device::xram_w)).umask32(0x00ff00ff);
+ map(0x1f2b0000, 0x1f2b00ff).w(this, FUNC(twinkle_state::twinkle_output_w));
+}
/* SPU board */
@@ -963,26 +964,28 @@ WRITE16_MEMBER(twinkle_state::spu_led_w)
m_spu_leds[7] = BIT(~data, 7);
}
-ADDRESS_MAP_START(twinkle_state::sound_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x13ffff) AM_RAM
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("SPU_DSW")
- AM_RANGE(0x220000, 0x220001) AM_WRITE(spu_led_w)
- AM_RANGE(0x230000, 0x230003) AM_WRITE(twinkle_spu_ctrl_w)
- AM_RANGE(0x240000, 0x240003) AM_WRITE(spu_ata_dma_low_w) AM_READNOP
- AM_RANGE(0x250000, 0x250003) AM_WRITE(spu_ata_dma_high_w) AM_READNOP
- AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_wavebank_w) AM_READNOP
- AM_RANGE(0x280000, 0x280fff) AM_READWRITE(shared_68k_r, shared_68k_w)
- AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0)
+void twinkle_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x13ffff).ram();
+ map(0x200000, 0x200001).portr("SPU_DSW");
+ map(0x220000, 0x220001).w(this, FUNC(twinkle_state::spu_led_w));
+ map(0x230000, 0x230003).w(this, FUNC(twinkle_state::twinkle_spu_ctrl_w));
+ map(0x240000, 0x240003).w(this, FUNC(twinkle_state::spu_ata_dma_low_w)).nopr();
+ map(0x250000, 0x250003).w(this, FUNC(twinkle_state::spu_ata_dma_high_w)).nopr();
+ map(0x260000, 0x260001).w(this, FUNC(twinkle_state::spu_wavebank_w)).nopr();
+ map(0x280000, 0x280fff).rw(this, FUNC(twinkle_state::shared_68k_r), FUNC(twinkle_state::shared_68k_w));
+ map(0x300000, 0x30000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0));
// 34000E = ???
- AM_RANGE(0x34000e, 0x34000f) AM_WRITENOP
- AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w)
- AM_RANGE(0x800000, 0xffffff) AM_READWRITE(twinkle_waveram_r, twinkle_waveram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(twinkle_state::rf5c400_map)
- AM_RANGE(0x0000000, 0x1ffffff) AM_RAM AM_SHARE("rfsnd")
-ADDRESS_MAP_END
+ map(0x34000e, 0x34000f).nopw();
+ map(0x400000, 0x400fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w));
+ map(0x800000, 0xffffff).rw(this, FUNC(twinkle_state::twinkle_waveram_r), FUNC(twinkle_state::twinkle_waveram_w));
+}
+
+void twinkle_state::rf5c400_map(address_map &map)
+{
+ map(0x0000000, 0x1ffffff).ram().share("rfsnd");
+}
/* SCSI */
diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp
index 524ca02f10d..76a73f1a050 100644
--- a/src/mame/drivers/twins.cpp
+++ b/src/mame/drivers/twins.cpp
@@ -282,17 +282,19 @@ WRITE16_MEMBER(twins_state::spider_blitter_w)
}
-ADDRESS_MAP_START(twins_state::twins_map)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(spider_blitter_r, spider_blitter_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(twins_state::twins_io)
- AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w)
- AM_RANGE(0x0006, 0x0007) AM_WRITE(twins_pal_w) AM_SHARE("paletteram")
- AM_RANGE(0x000e, 0x000f) AM_WRITE(porte_paloff0_w)
-ADDRESS_MAP_END
+void twins_state::twins_map(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(twins_state::spider_blitter_r), FUNC(twins_state::spider_blitter_w));
+}
+
+void twins_state::twins_io(address_map &map)
+{
+ map(0x0000, 0x0003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x0002, 0x0002).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x0004, 0x0005).rw(this, FUNC(twins_state::twins_port4_r), FUNC(twins_state::twins_port4_w));
+ map(0x0006, 0x0007).w(this, FUNC(twins_state::twins_pal_w)).share("paletteram");
+ map(0x000e, 0x000f).w(this, FUNC(twins_state::porte_paloff0_w));
+}
void twins_state::video_start()
{
@@ -420,19 +422,21 @@ MACHINE_CONFIG_END
-ADDRESS_MAP_START(twins_state::twinsa_io)
- AM_RANGE(0x0000, 0x0001) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff)
- AM_RANGE(0x0002, 0x0003) AM_DEVWRITE8("ramdac",ramdac_device,mask_w,0x00ff)
- AM_RANGE(0x0004, 0x0005) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff)
- AM_RANGE(0x0008, 0x0009) AM_DEVWRITE8("aysnd", ay8910_device, address_w, 0x00ff)
- AM_RANGE(0x0010, 0x0011) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, data_w, 0x00ff)
- AM_RANGE(0x0018, 0x0019) AM_READ(twins_port4_r) AM_WRITE(twins_port4_w)
-ADDRESS_MAP_END
+void twins_state::twinsa_io(address_map &map)
+{
+ map(0x0000, 0x0000).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x0002, 0x0002).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x0004, 0x0004).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w));
+ map(0x0008, 0x0008).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x0010, 0x0010).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x0018, 0x0019).r(this, FUNC(twins_state::twins_port4_r)).w(this, FUNC(twins_state::twins_port4_w));
+}
-ADDRESS_MAP_START(twins_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void twins_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
MACHINE_CONFIG_START(twins_state::twinsa)
@@ -545,20 +549,21 @@ READ16_MEMBER(twins_state::spider_port_1e_r)
}
-ADDRESS_MAP_START(twins_state::spider_io)
- AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff)
- AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
- AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w)
- AM_RANGE(0x0008, 0x0009) AM_WRITE(spider_pal_w) AM_SHARE("paletteram")
- AM_RANGE(0x0010, 0x0011) AM_WRITE(spider_paloff0_w)
+void twins_state::spider_io(address_map &map)
+{
+ map(0x0000, 0x0003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
+ map(0x0002, 0x0002).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x0004, 0x0005).rw(this, FUNC(twins_state::twins_port4_r), FUNC(twins_state::twins_port4_w));
+ map(0x0008, 0x0009).w(this, FUNC(twins_state::spider_pal_w)).share("paletteram");
+ map(0x0010, 0x0011).w(this, FUNC(twins_state::spider_paloff0_w));
- AM_RANGE(0x0018, 0x0019) AM_READ(spider_port_18_r)
- AM_RANGE(0x001a, 0x001b) AM_WRITE(spider_port_1a_w)
- AM_RANGE(0x001c, 0x001d) AM_WRITE(spider_port_1c_w)
- AM_RANGE(0x001e, 0x001f) AM_READ(spider_port_1e_r)
+ map(0x0018, 0x0019).r(this, FUNC(twins_state::spider_port_18_r));
+ map(0x001a, 0x001b).w(this, FUNC(twins_state::spider_port_1a_w));
+ map(0x001c, 0x001d).w(this, FUNC(twins_state::spider_port_1c_w));
+ map(0x001e, 0x001f).r(this, FUNC(twins_state::spider_port_1e_r));
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/tx0.cpp b/src/mame/drivers/tx0.cpp
index 514e9aa8775..ccc1ff44400 100644
--- a/src/mame/drivers/tx0.cpp
+++ b/src/mame/drivers/tx0.cpp
@@ -80,14 +80,16 @@ DRIVER_INIT_MEMBER(tx0_state,tx0)
}
-ADDRESS_MAP_START(tx0_state::tx0_64kw_map)
- AM_RANGE(0x0000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void tx0_state::tx0_64kw_map(address_map &map)
+{
+ map(0x0000, 0xffff).ram();
+}
-ADDRESS_MAP_START(tx0_state::tx0_8kw_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
-ADDRESS_MAP_END
+void tx0_state::tx0_8kw_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+}
static INPUT_PORTS_START( tx0 )
diff --git a/src/mame/drivers/tx1.cpp b/src/mame/drivers/tx1.cpp
index 0a334e8cbc5..aaddeba89e1 100644
--- a/src/mame/drivers/tx1.cpp
+++ b/src/mame/drivers/tx1.cpp
@@ -478,49 +478,53 @@ READ8_MEMBER(tx1_state::bbjr_analog_r)
*
*************************************/
-ADDRESS_MAP_START(tx1_state::tx1_main)
- AM_RANGE(0x00000, 0x00fff) AM_MIRROR(0x1000) AM_RAM
- AM_RANGE(0x02000, 0x02fff) AM_MIRROR(0x1000) AM_RAM
- AM_RANGE(0x04000, 0x04fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x06000, 0x06fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w)
- AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("rcram")
- AM_RANGE(0x0b000, 0x0b001) AM_READWRITE(dipswitches_r, z80_busreq_w)
- AM_RANGE(0x0c000, 0x0c001) AM_WRITE(tx1_scolst_w)
- AM_RANGE(0x0d000, 0x0d003) AM_WRITE(tx1_slincs_w)
- AM_RANGE(0x0e000, 0x0e001) AM_WRITE(tx1_slock_w)
- AM_RANGE(0x0f000, 0x0f001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) AM_WRITE(resume_math_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(z80_shared_r, z80_shared_w)
- AM_RANGE(0x20000, 0x2ffff) AM_MIRROR(0xd0000) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tx1_state::tx1_math)
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("math_ram")
- AM_RANGE(0x00800, 0x00fff) AM_READWRITE(tx1_spcs_ram_r, tx1_spcs_ram_w)
- AM_RANGE(0x01000, 0x01fff) AM_RAM AM_SHARE("rcram")
- AM_RANGE(0x02000, 0x022ff) AM_RAM AM_SHARE("objram")
- AM_RANGE(0x02400, 0x027ff) AM_WRITE(tx1_bankcs_w)
- AM_RANGE(0x02800, 0x02bff) AM_WRITE(halt_math_w)
- AM_RANGE(0x02C00, 0x02fff) AM_WRITE(tx1_flgcs_w)
- AM_RANGE(0x03000, 0x03fff) AM_READWRITE(tx1_math_r, tx1_math_w)
- AM_RANGE(0x04000, 0x07fff) AM_MIRROR(0xf8000) AM_ROM
- AM_RANGE(0x05000, 0x07fff) AM_READ(tx1_spcs_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tx1_state::tx1_sound_prg)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_MIRROR(0x800) AM_SHARE("z80_ram")
- AM_RANGE(0x4000, 0x4000) AM_WRITE(z80_intreq_w)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("tx1", tx1_sound_device, pit8253_r, pit8253_w)
- AM_RANGE(0x7000, 0x7fff) AM_WRITE(tx1_ppi_latch_w)
- AM_RANGE(0xb000, 0xbfff) AM_READWRITE(ts_r, ts_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tx1_state::tx1_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void tx1_state::tx1_main(address_map &map)
+{
+ map(0x00000, 0x00fff).mirror(0x1000).ram();
+ map(0x02000, 0x02fff).mirror(0x1000).ram();
+ map(0x04000, 0x04fff).mirror(0x1000).ram().share("nvram");
+ map(0x06000, 0x06fff).rw(this, FUNC(tx1_state::tx1_crtc_r), FUNC(tx1_state::tx1_crtc_w));
+ map(0x08000, 0x09fff).ram().share("vram");
+ map(0x0a000, 0x0afff).ram().share("rcram");
+ map(0x0b000, 0x0b001).rw(this, FUNC(tx1_state::dipswitches_r), FUNC(tx1_state::z80_busreq_w));
+ map(0x0c000, 0x0c001).w(this, FUNC(tx1_state::tx1_scolst_w));
+ map(0x0d000, 0x0d003).w(this, FUNC(tx1_state::tx1_slincs_w));
+ map(0x0e000, 0x0e001).w(this, FUNC(tx1_state::tx1_slock_w));
+ map(0x0f000, 0x0f001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)).w(this, FUNC(tx1_state::resume_math_w));
+ map(0x10000, 0x1ffff).rw(this, FUNC(tx1_state::z80_shared_r), FUNC(tx1_state::z80_shared_w));
+ map(0x20000, 0x2ffff).mirror(0xd0000).rom();
+}
+
+void tx1_state::tx1_math(address_map &map)
+{
+ map(0x00000, 0x007ff).ram().share("math_ram");
+ map(0x00800, 0x00fff).rw(this, FUNC(tx1_state::tx1_spcs_ram_r), FUNC(tx1_state::tx1_spcs_ram_w));
+ map(0x01000, 0x01fff).ram().share("rcram");
+ map(0x02000, 0x022ff).ram().share("objram");
+ map(0x02400, 0x027ff).w(this, FUNC(tx1_state::tx1_bankcs_w));
+ map(0x02800, 0x02bff).w(this, FUNC(tx1_state::halt_math_w));
+ map(0x02C00, 0x02fff).w(this, FUNC(tx1_state::tx1_flgcs_w));
+ map(0x03000, 0x03fff).rw(this, FUNC(tx1_state::tx1_math_r), FUNC(tx1_state::tx1_math_w));
+ map(0x04000, 0x07fff).mirror(0xf8000).rom();
+ map(0x05000, 0x07fff).r(this, FUNC(tx1_state::tx1_spcs_rom_r));
+}
+
+void tx1_state::tx1_sound_prg(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x3000, 0x37ff).ram().mirror(0x800).share("z80_ram");
+ map(0x4000, 0x4000).w(this, FUNC(tx1_state::z80_intreq_w));
+ map(0x5000, 0x5003).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6000, 0x6003).rw("tx1", FUNC(tx1_sound_device::pit8253_r), FUNC(tx1_sound_device::pit8253_w));
+ map(0x7000, 0x7fff).w(this, FUNC(tx1_state::tx1_ppi_latch_w));
+ map(0xb000, 0xbfff).rw(this, FUNC(tx1_state::ts_r), FUNC(tx1_state::ts_w));
+}
+
+void tx1_state::tx1_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::data_address_w));
+}
/*************************************
@@ -529,76 +533,82 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(tx1_state::buggyboy_main)
- AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x04000, 0x04fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w)
- AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("rcram")
- AM_RANGE(0x0b000, 0x0b001) AM_READWRITE(dipswitches_r, z80_busreq_w)
- AM_RANGE(0x0c000, 0x0c001) AM_WRITE(buggyboy_scolst_w)
- AM_RANGE(0x0d000, 0x0d003) AM_WRITE(tx1_slincs_w)
- AM_RANGE(0x0e000, 0x0e001) AM_WRITE(buggyboy_sky_w)
- AM_RANGE(0x0f000, 0x0f003) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) AM_WRITE(resume_math_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(z80_shared_r, z80_shared_w)
- AM_RANGE(0x20000, 0x2ffff) AM_ROM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tx1_state::buggybjr_main)
- AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x04000, 0x04fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w)
- AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("rcram")
- AM_RANGE(0x0b000, 0x0b001) AM_READWRITE(dipswitches_r, z80_busreq_w)
- AM_RANGE(0x0c000, 0x0c001) AM_WRITE(buggyboy_scolst_w)
- AM_RANGE(0x0d000, 0x0d003) AM_WRITE(tx1_slincs_w)
- AM_RANGE(0x0e000, 0x0e001) AM_WRITE(buggyboy_sky_w)
- AM_RANGE(0x0f000, 0x0f003) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) AM_WRITE(resume_math_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(z80_shared_r, z80_shared_w)
- AM_RANGE(0x20000, 0x2ffff) AM_ROM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tx1_state::buggyboy_math)
- AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("math_ram")
- AM_RANGE(0x00800, 0x00fff) AM_READWRITE(buggyboy_spcs_ram_r, buggyboy_spcs_ram_w)
- AM_RANGE(0x01000, 0x01fff) AM_RAM AM_SHARE("rcram")
- AM_RANGE(0x02000, 0x022ff) AM_RAM AM_SHARE("objram")
- AM_RANGE(0x02400, 0x024ff) AM_WRITE(buggyboy_gas_w)
- AM_RANGE(0x03000, 0x03fff) AM_READWRITE(buggyboy_math_r, buggyboy_math_w)
- AM_RANGE(0x04000, 0x07fff) AM_MIRROR(0xf8000) AM_ROM
- AM_RANGE(0x05000, 0x07fff) AM_READ(buggyboy_spcs_rom_r)
-ADDRESS_MAP_END
+void tx1_state::buggyboy_main(address_map &map)
+{
+ map(0x00000, 0x03fff).ram().share("nvram");
+ map(0x04000, 0x04fff).rw(this, FUNC(tx1_state::tx1_crtc_r), FUNC(tx1_state::tx1_crtc_w));
+ map(0x08000, 0x09fff).ram().share("vram");
+ map(0x0a000, 0x0afff).ram().share("rcram");
+ map(0x0b000, 0x0b001).rw(this, FUNC(tx1_state::dipswitches_r), FUNC(tx1_state::z80_busreq_w));
+ map(0x0c000, 0x0c001).w(this, FUNC(tx1_state::buggyboy_scolst_w));
+ map(0x0d000, 0x0d003).w(this, FUNC(tx1_state::tx1_slincs_w));
+ map(0x0e000, 0x0e001).w(this, FUNC(tx1_state::buggyboy_sky_w));
+ map(0x0f000, 0x0f003).r("watchdog", FUNC(watchdog_timer_device::reset16_r)).w(this, FUNC(tx1_state::resume_math_w));
+ map(0x10000, 0x1ffff).rw(this, FUNC(tx1_state::z80_shared_r), FUNC(tx1_state::z80_shared_w));
+ map(0x20000, 0x2ffff).rom();
+ map(0xf0000, 0xfffff).rom();
+}
+
+void tx1_state::buggybjr_main(address_map &map)
+{
+ map(0x00000, 0x03fff).ram().share("nvram");
+ map(0x04000, 0x04fff).rw(this, FUNC(tx1_state::tx1_crtc_r), FUNC(tx1_state::tx1_crtc_w));
+ map(0x08000, 0x08fff).ram().share("vram");
+ map(0x0a000, 0x0afff).ram().share("rcram");
+ map(0x0b000, 0x0b001).rw(this, FUNC(tx1_state::dipswitches_r), FUNC(tx1_state::z80_busreq_w));
+ map(0x0c000, 0x0c001).w(this, FUNC(tx1_state::buggyboy_scolst_w));
+ map(0x0d000, 0x0d003).w(this, FUNC(tx1_state::tx1_slincs_w));
+ map(0x0e000, 0x0e001).w(this, FUNC(tx1_state::buggyboy_sky_w));
+ map(0x0f000, 0x0f003).r("watchdog", FUNC(watchdog_timer_device::reset16_r)).w(this, FUNC(tx1_state::resume_math_w));
+ map(0x10000, 0x1ffff).rw(this, FUNC(tx1_state::z80_shared_r), FUNC(tx1_state::z80_shared_w));
+ map(0x20000, 0x2ffff).rom();
+ map(0xf0000, 0xfffff).rom();
+}
+
+void tx1_state::buggyboy_math(address_map &map)
+{
+ map(0x00000, 0x007ff).ram().share("math_ram");
+ map(0x00800, 0x00fff).rw(this, FUNC(tx1_state::buggyboy_spcs_ram_r), FUNC(tx1_state::buggyboy_spcs_ram_w));
+ map(0x01000, 0x01fff).ram().share("rcram");
+ map(0x02000, 0x022ff).ram().share("objram");
+ map(0x02400, 0x024ff).w(this, FUNC(tx1_state::buggyboy_gas_w));
+ map(0x03000, 0x03fff).rw(this, FUNC(tx1_state::buggyboy_math_r), FUNC(tx1_state::buggyboy_math_w));
+ map(0x04000, 0x07fff).mirror(0xf8000).rom();
+ map(0x05000, 0x07fff).r(this, FUNC(tx1_state::buggyboy_spcs_rom_r));
+}
/* Buggy Boy Sound PCB TC033A */
-ADDRESS_MAP_START(tx1_state::buggyboy_sound_prg)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("z80_ram")
- AM_RANGE(0x6000, 0x6001) AM_READ(bb_analog_r)
- AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("buggyboy", buggyboy_sound_device, pit8253_r, pit8253_w)
- AM_RANGE(0x7800, 0x7800) AM_WRITE(z80_intreq_w)
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(ts_r, ts_w)
-ADDRESS_MAP_END
+void tx1_state::buggyboy_sound_prg(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().share("z80_ram");
+ map(0x6000, 0x6001).r(this, FUNC(tx1_state::bb_analog_r));
+ map(0x6800, 0x6803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7000, 0x7003).rw("buggyboy", FUNC(buggyboy_sound_device::pit8253_r), FUNC(buggyboy_sound_device::pit8253_w));
+ map(0x7800, 0x7800).w(this, FUNC(tx1_state::z80_intreq_w));
+ map(0xc000, 0xc7ff).rw(this, FUNC(tx1_state::ts_r), FUNC(tx1_state::ts_w));
+}
/* Buggy Boy Jr Sound PCB TC043 */
-ADDRESS_MAP_START(tx1_state::buggybjr_sound_prg)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("z80_ram")
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("buggyboy", buggyboy_sound_device, pit8253_r, pit8253_w)
- AM_RANGE(0x6000, 0x6001) AM_READ(bbjr_analog_r)
- AM_RANGE(0x7000, 0x7000) AM_WRITE(z80_intreq_w)
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(ts_r, ts_w)
-ADDRESS_MAP_END
+void tx1_state::buggybjr_sound_prg(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram().share("z80_ram");
+ map(0x5000, 0x5003).rw("buggyboy", FUNC(buggyboy_sound_device::pit8253_r), FUNC(buggyboy_sound_device::pit8253_w));
+ map(0x6000, 0x6001).r(this, FUNC(tx1_state::bbjr_analog_r));
+ map(0x7000, 0x7000).w(this, FUNC(tx1_state::z80_intreq_w));
+ map(0xc000, 0xc7ff).rw(this, FUNC(tx1_state::ts_r), FUNC(tx1_state::ts_w));
+}
/* Common */
-ADDRESS_MAP_START(tx1_state::buggyboy_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVREAD("ym1", ay8910_device, data_r)
- AM_RANGE(0x40, 0x41) AM_DEVWRITE("ym1", ay8910_device, data_address_w)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("ym2", ay8910_device, data_r)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+void tx1_state::buggyboy_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).r("ym1", FUNC(ay8910_device::data_r));
+ map(0x40, 0x41).w("ym1", FUNC(ay8910_device::data_address_w));
+ map(0x80, 0x80).r("ym2", FUNC(ay8910_device::data_r));
+ map(0x80, 0x81).w("ym2", FUNC(ay8910_device::data_address_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/uapce.cpp b/src/mame/drivers/uapce.cpp
index d79666573fa..957135cd496 100644
--- a/src/mame/drivers/uapce.cpp
+++ b/src/mame/drivers/uapce.cpp
@@ -243,14 +243,15 @@ void uapce_state::machine_reset()
m_jamma_if_control_latch = 0;
}
-ADDRESS_MAP_START(uapce_state::z80_map)
- AM_RANGE( 0x0000, 0x07FF) AM_ROM
- AM_RANGE( 0x0800, 0x0FFF) AM_RAM
- AM_RANGE( 0x1000, 0x17FF) AM_WRITE(jamma_if_control_latch_w )
- AM_RANGE( 0x1800, 0x1FFF) AM_READ(jamma_if_read_dsw )
- AM_RANGE( 0x2000, 0x27FF) AM_READ_PORT( "COIN" )
- AM_RANGE( 0x2800, 0x2FFF) AM_READ(jamma_if_control_latch_r )
-ADDRESS_MAP_END
+void uapce_state::z80_map(address_map &map)
+{
+ map(0x0000, 0x07FF).rom();
+ map(0x0800, 0x0FFF).ram();
+ map(0x1000, 0x17FF).w(this, FUNC(uapce_state::jamma_if_control_latch_w));
+ map(0x1800, 0x1FFF).r(this, FUNC(uapce_state::jamma_if_read_dsw));
+ map(0x2000, 0x27FF).portr("COIN");
+ map(0x2800, 0x2FFF).r(this, FUNC(uapce_state::jamma_if_control_latch_r));
+}
static INPUT_PORTS_START( uapce )
@@ -286,20 +287,22 @@ static INPUT_PORTS_START( uapce )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
INPUT_PORTS_END
-ADDRESS_MAP_START(uapce_state::pce_mem)
- AM_RANGE( 0x000000, 0x09FFFF) AM_ROM
- AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000)
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(uapce_state::pce_io)
- AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
-ADDRESS_MAP_END
+void uapce_state::pce_mem(address_map &map)
+{
+ map(0x000000, 0x09FFFF).rom();
+ map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000);
+ map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+ map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write));
+ map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(uapce_state::pce_joystick_r), FUNC(uapce_state::pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+}
+
+void uapce_state::pce_io(address_map &map)
+{
+ map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write));
+}
MACHINE_CONFIG_START(uapce_state::uapce)
diff --git a/src/mame/drivers/uknc.cpp b/src/mame/drivers/uknc.cpp
index 45f07b80426..88f918f382a 100644
--- a/src/mame/drivers/uknc.cpp
+++ b/src/mame/drivers/uknc.cpp
@@ -30,17 +30,19 @@ public:
};
-ADDRESS_MAP_START(uknc_state::uknc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROM // ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(uknc_state::uknc_sub_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x7fff ) AM_RAM // RAM
- AM_RANGE( 0x8000, 0xffff ) AM_ROM // ROM
-ADDRESS_MAP_END
+void uknc_state::uknc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram(); // RAM
+ map(0x8000, 0xffff).rom(); // ROM
+}
+
+void uknc_state::uknc_sub_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).ram(); // RAM
+ map(0x8000, 0xffff).rom(); // ROM
+}
/* Input ports */
static INPUT_PORTS_START( uknc )
diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp
index 6f4ba3918cb..f9859d1eae0 100644
--- a/src/mame/drivers/ultraman.cpp
+++ b/src/mame/drivers/ultraman.cpp
@@ -28,42 +28,45 @@ WRITE8_MEMBER(ultraman_state::sound_nmi_enable_w)
}
-ADDRESS_MAP_START(ultraman_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x180000, 0x183fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette */
- AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P1")
- AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P2")
- AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("DSW1")
- AM_RANGE(0x1c0008, 0x1c0009) AM_READ_PORT("DSW2")
- AM_RANGE(0x1c0018, 0x1c0019) AM_WRITE(ultraman_gfxctrl_w) /* counters + gfx ctrl */
- AM_RANGE(0x1c0020, 0x1c0021) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x1c0028, 0x1c0029) AM_DEVWRITE8("soundnmi", input_merger_device, in_set<0>, 0x00ff)
- AM_RANGE(0x1c0030, 0x1c0031) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x204000, 0x204fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0x00ff) /* K051316 #0 RAM */
- AM_RANGE(0x205000, 0x205fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0x00ff) /* K051316 #1 RAM */
- AM_RANGE(0x206000, 0x206fff) AM_DEVREADWRITE8("k051316_3", k051316_device, read, write, 0x00ff) /* K051316 #2 RAM */
- AM_RANGE(0x207f80, 0x207f9f) AM_DEVWRITE8("k051316_1", k051316_device, ctrl_w, 0x00ff) /* K051316 #0 registers */
- AM_RANGE(0x207fa0, 0x207fbf) AM_DEVWRITE8("k051316_2", k051316_device, ctrl_w, 0x00ff) /* K051316 #1 registers */
- AM_RANGE(0x207fc0, 0x207fdf) AM_DEVWRITE8("k051316_3", k051316_device, ctrl_w, 0x00ff) /* K051316 #2 registers */
- AM_RANGE(0x304000, 0x30400f) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0x00ff) /* Sprite control */
- AM_RANGE(0x304800, 0x304fff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0x00ff) /* Sprite RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ultraman_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(sound_nmi_enable_w)
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* M6295 */
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ultraman_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>)
-ADDRESS_MAP_END
+void ultraman_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x08ffff).ram();
+ map(0x180000, 0x183fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");/* Palette */
+ map(0x1c0000, 0x1c0001).portr("SYSTEM");
+ map(0x1c0002, 0x1c0003).portr("P1");
+ map(0x1c0004, 0x1c0005).portr("P2");
+ map(0x1c0006, 0x1c0007).portr("DSW1");
+ map(0x1c0008, 0x1c0009).portr("DSW2");
+ map(0x1c0018, 0x1c0019).w(this, FUNC(ultraman_state::ultraman_gfxctrl_w)); /* counters + gfx ctrl */
+ map(0x1c0021, 0x1c0021).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1c0029, 0x1c0029).w(m_soundnmi, FUNC(input_merger_device::in_set<0>));
+ map(0x1c0030, 0x1c0031).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x204000, 0x204fff).rw(m_k051316_1, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); /* K051316 #0 RAM */
+ map(0x205000, 0x205fff).rw(m_k051316_2, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); /* K051316 #1 RAM */
+ map(0x206000, 0x206fff).rw(m_k051316_3, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); /* K051316 #2 RAM */
+ map(0x207f80, 0x207f9f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); /* K051316 #0 registers */
+ map(0x207fa0, 0x207fbf).w(m_k051316_2, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); /* K051316 #1 registers */
+ map(0x207fc0, 0x207fdf).w(m_k051316_3, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); /* K051316 #2 registers */
+ map(0x304000, 0x30400f).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)).umask16(0x00ff); /* Sprite control */
+ map(0x304800, 0x304fff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)).umask16(0x00ff); /* Sprite RAM */
+}
+
+void ultraman_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).ram();
+ map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w(this, FUNC(ultraman_state::sound_nmi_enable_w));
+ map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* M6295 */
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */
+}
+
+void ultraman_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>));
+}
static INPUT_PORTS_START( ultraman )
diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp
index ddc996441a2..98d0b09c524 100644
--- a/src/mame/drivers/ultratnk.cpp
+++ b/src/mame/drivers/ultratnk.cpp
@@ -161,33 +161,34 @@ WRITE8_MEMBER(ultratnk_state::explosion_w)
}
-ADDRESS_MAP_START(ultratnk_state::ultratnk_cpu_map)
+void ultratnk_state::ultratnk_cpu_map(address_map &map)
+{
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ map.global_mask(0x3fff);
- AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x700) AM_RAM
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w)
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram")
+ map(0x0000, 0x007f).mirror(0x700).ram();
+ map(0x0080, 0x00ff).mirror(0x700).rw(this, FUNC(ultratnk_state::wram_r), FUNC(ultratnk_state::wram_w));
+ map(0x0800, 0x0bff).mirror(0x400).ram().w(this, FUNC(ultratnk_state::video_ram_w)).share("videoram");
- AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0")
- AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1")
+ map(0x1000, 0x17ff).portr("IN0");
+ map(0x1800, 0x1fff).portr("IN1");
- AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x718) AM_READ(analog_r)
- AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_READ(coin_r)
- AM_RANGE(0x2040, 0x2047) AM_MIRROR(0x718) AM_READ(collision_r)
- AM_RANGE(0x2060, 0x2063) AM_MIRROR(0x71c) AM_READ(options_r)
+ map(0x2000, 0x2007).mirror(0x718).r(this, FUNC(ultratnk_state::analog_r));
+ map(0x2020, 0x2027).mirror(0x718).r(this, FUNC(ultratnk_state::coin_r));
+ map(0x2040, 0x2047).mirror(0x718).r(this, FUNC(ultratnk_state::collision_r));
+ map(0x2060, 0x2063).mirror(0x71c).r(this, FUNC(ultratnk_state::options_r));
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x71f) AM_WRITE(attract_w)
- AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w)
- AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(da_latch_w)
- AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(explosion_w)
- AM_RANGE(0x2044, 0x2045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2060, 0x206f) AM_MIRROR(0x710) AM_DEVWRITE("latch", f9334_device, write_a0)
+ map(0x2000, 0x2000).mirror(0x71f).w(this, FUNC(ultratnk_state::attract_w));
+ map(0x2020, 0x2027).mirror(0x718).w(this, FUNC(ultratnk_state::collision_reset_w));
+ map(0x2040, 0x2041).mirror(0x718).w(this, FUNC(ultratnk_state::da_latch_w));
+ map(0x2042, 0x2043).mirror(0x718).w(this, FUNC(ultratnk_state::explosion_w));
+ map(0x2044, 0x2045).mirror(0x718).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+ map(0x2060, 0x206f).mirror(0x710).w("latch", FUNC(f9334_device::write_a0));
- AM_RANGE(0x2800, 0x2fff) AM_NOP /* diagnostic ROM */
- AM_RANGE(0x3000, 0x3fff) AM_ROM
+ map(0x2800, 0x2fff).noprw(); /* diagnostic ROM */
+ map(0x3000, 0x3fff).rom();
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( ultratnk )
diff --git a/src/mame/drivers/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp
index 8ae6b10c297..3c8cc7b7bbb 100644
--- a/src/mame/drivers/ultrsprt.cpp
+++ b/src/mame/drivers/ultrsprt.cpp
@@ -148,28 +148,30 @@ READ16_MEMBER(ultrsprt_state::upd2_r)
/*****************************************************************************/
-ADDRESS_MAP_START(ultrsprt_state::ultrsprt_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_RAMBANK("vram")
- AM_RANGE(0x70000000, 0x70000003) AM_READWRITE8(eeprom_r, eeprom_w, 0xff000000)
- AM_RANGE(0x70000020, 0x70000023) AM_READ16(upd1_r, 0xffffffff)
- AM_RANGE(0x70000040, 0x70000043) AM_READ16(upd2_r, 0xffffffff)
- AM_RANGE(0x70000080, 0x7000008f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x700000c0, 0x700000cf) AM_WRITENOP // Written following DMA interrupt - unused int ack?
- AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE(int_ack_w)
- AM_RANGE(0x7f000000, 0x7f01ffff) AM_RAM AM_SHARE("workram")
- AM_RANGE(0x7f700000, 0x7f703fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x7f800000, 0x7f9fffff) AM_MIRROR(0x00600000) AM_ROM AM_REGION("program", 0)
-ADDRESS_MAP_END
+void ultrsprt_state::ultrsprt_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).bankrw("vram");
+ map(0x70000000, 0x70000000).rw(this, FUNC(ultrsprt_state::eeprom_r), FUNC(ultrsprt_state::eeprom_w));
+ map(0x70000020, 0x70000023).r(this, FUNC(ultrsprt_state::upd1_r));
+ map(0x70000040, 0x70000043).r(this, FUNC(ultrsprt_state::upd2_r));
+ map(0x70000080, 0x7000008f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x700000c0, 0x700000cf).nopw(); // Written following DMA interrupt - unused int ack?
+ map(0x700000e0, 0x700000e3).w(this, FUNC(ultrsprt_state::int_ack_w));
+ map(0x7f000000, 0x7f01ffff).ram().share("workram");
+ map(0x7f700000, 0x7f703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x7f800000, 0x7f9fffff).mirror(0x00600000).rom().region("program", 0);
+}
/*****************************************************************************/
-ADDRESS_MAP_START(ultrsprt_state::sound_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM
- AM_RANGE(0x00100000, 0x00101fff) AM_RAM
- AM_RANGE(0x00200000, 0x0020000f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0xffff)
- AM_RANGE(0x00400000, 0x004002ff) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0xffff)
-ADDRESS_MAP_END
+void ultrsprt_state::sound_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom();
+ map(0x00100000, 0x00101fff).ram();
+ map(0x00200000, 0x0020000f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w));
+ map(0x00400000, 0x004002ff).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/umipoker.cpp b/src/mame/drivers/umipoker.cpp
index 91cc5211003..e65d31bae03 100644
--- a/src/mame/drivers/umipoker.cpp
+++ b/src/mame/drivers/umipoker.cpp
@@ -315,42 +315,45 @@ WRITE16_MEMBER(umipoker_state::saiyu_counters_w)
}
-ADDRESS_MAP_START(umipoker_state::umipoker_map)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(umipoker_vram_0_w) AM_SHARE("vra0")
- AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(umipoker_vram_1_w) AM_SHARE("vra1")
- AM_RANGE(0x804000, 0x805fff) AM_RAM_WRITE(umipoker_vram_2_w) AM_SHARE("vra2")
- AM_RANGE(0x806000, 0x807fff) AM_RAM_WRITE(umipoker_vram_3_w) AM_SHARE("vra3")
- AM_RANGE(0xc00000, 0xc0ffff) AM_READ8(z80_rom_readback_r,0x00ff)
- AM_RANGE(0xc1f000, 0xc1ffff) AM_READWRITE8(z80_shared_ram_r,z80_shared_ram_w,0x00ff)
- AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("IN0")
- AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN1") // unused?
- AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2")
+void umipoker_state::umipoker_map(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x403fff).ram().share("nvram");
+ map(0x600000, 0x6007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x800000, 0x801fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_0_w)).share("vra0");
+ map(0x802000, 0x803fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_1_w)).share("vra1");
+ map(0x804000, 0x805fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_2_w)).share("vra2");
+ map(0x806000, 0x807fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_3_w)).share("vra3");
+ map(0xc00000, 0xc0ffff).r(this, FUNC(umipoker_state::z80_rom_readback_r)).umask16(0x00ff);
+ map(0xc1f000, 0xc1ffff).rw(this, FUNC(umipoker_state::z80_shared_ram_r), FUNC(umipoker_state::z80_shared_ram_w)).umask16(0x00ff);
+ map(0xe00000, 0xe00001).portr("IN0");
+ map(0xe00004, 0xe00005).portr("IN1"); // unused?
+ map(0xe00008, 0xe00009).portr("IN2");
// AM_RANGE(0xe0000c, 0xe0000d) AM_WRITE(lamps_w) -----> lamps only for saiyukip.
// AM_RANGE(0xe00010, 0xe00011) AM_WRITE(counters_w) --> coin counters for both games.
- AM_RANGE(0xe00014, 0xe00015) AM_READ_PORT("DSW1-2")
- AM_RANGE(0xe00018, 0xe00019) AM_READ_PORT("DSW3-4")
- AM_RANGE(0xe00020, 0xe00021) AM_WRITE(umipoker_scrolly_0_w)
- AM_RANGE(0xe00022, 0xe00023) AM_WRITE(umipoker_irq_ack_w)
- AM_RANGE(0xe00026, 0xe00027) AM_WRITE(umipoker_scrolly_2_w)
- AM_RANGE(0xe0002a, 0xe0002b) AM_WRITE(umipoker_scrolly_1_w)
- AM_RANGE(0xe0002c, 0xe0002d) AM_WRITENOP // unknown meaning, bit 0 goes from 0 -> 1 on IRQ service routine
- AM_RANGE(0xe0002e, 0xe0002f) AM_WRITE(umipoker_scrolly_3_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(umipoker_state::umipoker_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(z80_shared_ram_r,z80_shared_ram_w) AM_SHARE("z80_wram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(umipoker_state::umipoker_audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ym", ym3812_device, read, write)
-ADDRESS_MAP_END
+ map(0xe00014, 0xe00015).portr("DSW1-2");
+ map(0xe00018, 0xe00019).portr("DSW3-4");
+ map(0xe00020, 0xe00021).w(this, FUNC(umipoker_state::umipoker_scrolly_0_w));
+ map(0xe00022, 0xe00023).w(this, FUNC(umipoker_state::umipoker_irq_ack_w));
+ map(0xe00026, 0xe00027).w(this, FUNC(umipoker_state::umipoker_scrolly_2_w));
+ map(0xe0002a, 0xe0002b).w(this, FUNC(umipoker_state::umipoker_scrolly_1_w));
+ map(0xe0002c, 0xe0002d).nopw(); // unknown meaning, bit 0 goes from 0 -> 1 on IRQ service routine
+ map(0xe0002e, 0xe0002f).w(this, FUNC(umipoker_state::umipoker_scrolly_3_w));
+}
+
+void umipoker_state::umipoker_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xf800, 0xffff).rw(this, FUNC(umipoker_state::z80_shared_ram_r), FUNC(umipoker_state::z80_shared_ram_w)).share("z80_wram");
+}
+
+void umipoker_state::umipoker_audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x10, 0x11).rw("ym", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+}
static INPUT_PORTS_START( common )
diff --git a/src/mame/drivers/undrfire.cpp b/src/mame/drivers/undrfire.cpp
index cb10ea8f41a..862c8924527 100644
--- a/src/mame/drivers/undrfire.cpp
+++ b/src/mame/drivers/undrfire.cpp
@@ -399,53 +399,56 @@ WRITE8_MEMBER(undrfire_state::cbombers_adc_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(undrfire_state::undrfire_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram")
+void undrfire_state::undrfire_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x21ffff).ram().share("ram");
+ map(0x300000, 0x303fff).ram().share("spriteram");
// AM_RANGE(0x304000, 0x304003) AM_RAM // debugging - doesn't change ???
// AM_RANGE(0x304400, 0x304403) AM_RAM // debugging - doesn't change ???
- AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w) /* gun vibration */
- AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff)
- AM_RANGE(0x600000, 0x600007) AM_READWRITE(unknown_hardware_r, unknown_int_req_w) /* int request for unknown hardware */
- AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */
- AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb003ff) AM_RAM /* single bytes, blending ??? */
- AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w) /* perhaps port based rotate control? */
- AM_RANGE(0xf00000, 0xf00007) AM_READ(undrfire_lightgun_r) /* stick coords read at $11b2-bc */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(undrfire_state::cbombers_cpua_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x21ffff) AM_RAM
- AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x400000, 0x400003) AM_WRITE(cbombers_cpua_ctrl_w)
- AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff)
- AM_RANGE(0x600000, 0x600007) AM_READ(cbombers_adc_r) AM_WRITE8(cbombers_adc_w,0xffffffff)
- AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff)
- AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
- AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */
- AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
- AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xb00000, 0xb0000f) AM_RAM /* ? */
- AM_RANGE(0xc00000, 0xc00007) AM_RAM /* LAN controller? */
- AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w) /* perhaps port based rotate control? */
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_SHARE("shared_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(undrfire_state::cbombers_cpub_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM /* local ram */
+ map(0x400000, 0x400003).w(this, FUNC(undrfire_state::motor_control_w)); /* gun vibration */
+ map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+ map(0x600000, 0x600007).rw(this, FUNC(undrfire_state::unknown_hardware_r), FUNC(undrfire_state::unknown_int_req_w)); /* int request for unknown hardware */
+ map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ 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, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* 6bpp tilemaps */
+ map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w));
+ map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xb00000, 0xb003ff).ram(); /* single bytes, blending ??? */
+ map(0xd00000, 0xd00003).w(this, FUNC(undrfire_state::rotate_control_w)); /* perhaps port based rotate control? */
+ map(0xf00000, 0xf00007).r(this, FUNC(undrfire_state::undrfire_lightgun_r)); /* stick coords read at $11b2-bc */
+}
+
+
+void undrfire_state::cbombers_cpua_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x21ffff).ram();
+ map(0x300000, 0x303fff).ram().share("spriteram");
+ map(0x400000, 0x400003).w(this, FUNC(undrfire_state::cbombers_cpua_ctrl_w));
+ map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+ map(0x600000, 0x600007).r(this, FUNC(undrfire_state::cbombers_adc_r)).w(this, FUNC(undrfire_state::cbombers_adc_w));
+ map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ 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, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* 6bpp tilemaps */
+ map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w));
+ map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xb00000, 0xb0000f).ram(); /* ? */
+ map(0xc00000, 0xc00007).ram(); /* LAN controller? */
+ map(0xd00000, 0xd00003).w(this, FUNC(undrfire_state::rotate_control_w)); /* perhaps port based rotate control? */
+ map(0xe00000, 0xe0ffff).ram().share("shared_ram");
+}
+
+void undrfire_state::cbombers_cpub_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x400000, 0x40ffff).ram(); /* local ram */
// AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */
- AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w)
+ map(0x800000, 0x80ffff).rw(this, FUNC(undrfire_state::shared_ram_r), FUNC(undrfire_state::shared_ram_w));
// AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */
-ADDRESS_MAP_END
+}
/***********************************************************
diff --git a/src/mame/drivers/unianapc.cpp b/src/mame/drivers/unianapc.cpp
index 5a96394791e..2119015442a 100644
--- a/src/mame/drivers/unianapc.cpp
+++ b/src/mame/drivers/unianapc.cpp
@@ -54,8 +54,9 @@ uint32_t unianapc_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
return 0;
}
-ADDRESS_MAP_START(unianapc_state::unianapc_map)
-ADDRESS_MAP_END
+void unianapc_state::unianapc_map(address_map &map)
+{
+}
static INPUT_PORTS_START( unianapc )
INPUT_PORTS_END
diff --git a/src/mame/drivers/unichamp.cpp b/src/mame/drivers/unichamp.cpp
index 4d288407f7e..d25f2bedd36 100644
--- a/src/mame/drivers/unichamp.cpp
+++ b/src/mame/drivers/unichamp.cpp
@@ -106,12 +106,13 @@ PALETTE_INIT_MEMBER(unichamp_state, unichamp)
}
-ADDRESS_MAP_START(unichamp_state::unichamp_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x1FFF) //B13/B14/B15 are grounded!
- AM_RANGE(0x0000, 0x00FF) AM_READWRITE8(unichamp_gicram_r, unichamp_gicram_w, 0x00ff)
- AM_RANGE(0x0100, 0x07FF) AM_READWRITE(unichamp_trapl_r, unichamp_trapl_w)
- AM_RANGE(0x0800, 0x0FFF) AM_ROM AM_REGION("maincpu", 0) // Carts and EXE ROM, 10-bits wide
-ADDRESS_MAP_END
+void unichamp_state::unichamp_mem(address_map &map)
+{
+ map.global_mask(0x1FFF); //B13/B14/B15 are grounded!
+ map(0x0000, 0x00FF).rw(this, FUNC(unichamp_state::unichamp_gicram_r), FUNC(unichamp_state::unichamp_gicram_w)).umask16(0x00ff);
+ map(0x0100, 0x07FF).rw(this, FUNC(unichamp_state::unichamp_trapl_r), FUNC(unichamp_state::unichamp_trapl_w));
+ map(0x0800, 0x0FFF).rom().region("maincpu", 0); // Carts and EXE ROM, 10-bits wide
+}
static INPUT_PORTS_START( unichamp )
diff --git a/src/mame/drivers/unico.cpp b/src/mame/drivers/unico.cpp
index 2ab3a68e4a5..966464f79f4 100644
--- a/src/mame/drivers/unico.cpp
+++ b/src/mame/drivers/unico.cpp
@@ -56,25 +56,26 @@ WRITE16_MEMBER(unico_state::burglarx_sound_bank_w)
}
}
-ADDRESS_MAP_START(unico_state::burglarx_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1")
- AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2")
- AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? 0
- AM_RANGE(0x80010c, 0x800121) AM_READWRITE(unico_scroll_r, unico_scroll_w) // Scroll
- AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_device, write_port_w, 0xff00)
- AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_device, status_port_r, control_port_w, 0xff00)
- AM_RANGE(0x80018e, 0x80018f) AM_WRITE(burglarx_sound_bank_w) //
- AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP // IRQ Ack
- AM_RANGE(0x904000, 0x90ffff) AM_READWRITE(unico_vram_r, unico_vram_w) // Layers 1, 2, 0
- AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0
- AM_RANGE(0x930000, 0x9307ff) AM_READWRITE(unico_spriteram_r, unico_spriteram_w) // Sprites
- AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette_w) AM_SHARE("paletteram") // Palette
-ADDRESS_MAP_END
+void unico_state::burglarx_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0xff0000, 0xffffff).ram(); // RAM
+ map(0x800000, 0x800001).portr("INPUTS");
+ map(0x800018, 0x800019).portr("SYSTEM");
+ map(0x80001a, 0x80001b).portr("DSW1");
+ map(0x80001c, 0x80001d).portr("DSW2");
+ map(0x800030, 0x800031).nopw(); // ? 0
+ map(0x80010c, 0x800121).rw(this, FUNC(unico_state::unico_scroll_r), FUNC(unico_state::unico_scroll_w)); // Scroll
+ map(0x800189, 0x800189).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x80018a, 0x80018a).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x80018c, 0x80018c).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x80018e, 0x80018f).w(this, FUNC(unico_state::burglarx_sound_bank_w)); //
+ map(0x8001e0, 0x8001e1).nopw(); // IRQ Ack
+ map(0x904000, 0x90ffff).rw(this, FUNC(unico_state::unico_vram_r), FUNC(unico_state::unico_vram_w)); // Layers 1, 2, 0
+ map(0x920000, 0x923fff).ram(); // ? 0
+ map(0x930000, 0x9307ff).rw(this, FUNC(unico_state::unico_spriteram_r), FUNC(unico_state::unico_spriteram_w)); // Sprites
+ map(0x940000, 0x947fff).ram().w(this, FUNC(unico_state::unico_palette_w)).share("paletteram"); // Palette
+}
@@ -141,28 +142,29 @@ READ16_MEMBER(zeropnt_state::unico_guny_1_msb_r)
return ((y&0xff) ^ (m_screen->frame_number()&1))<<8;
}
-ADDRESS_MAP_START(zeropnt_state::zeropnt_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
- AM_RANGE(0xef0000, 0xefffff) AM_RAM // RAM
- AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? 0
- AM_RANGE(0x800018, 0x800019) AM_READ_PORT("INPUTS")
- AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1")
- AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2")
- AM_RANGE(0x80010c, 0x800121) AM_READWRITE( unico_scroll_r, unico_scroll_w ) // Scroll
- AM_RANGE(0x800170, 0x800171) AM_READ(unico_guny_0_msb_r) // Light Guns
- AM_RANGE(0x800174, 0x800175) AM_READ(unico_gunx_0_msb_r) //
- AM_RANGE(0x800178, 0x800179) AM_READ(unico_guny_1_msb_r) //
- AM_RANGE(0x80017c, 0x80017d) AM_READ(unico_gunx_1_msb_r) //
- AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) // Sound
- AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_device, write_port_w, 0xff00)
- AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_device, status_port_r, control_port_w, 0xff00)
- AM_RANGE(0x80018e, 0x80018f) AM_WRITE(zeropnt_sound_bank_w) //
- AM_RANGE(0x8001e0, 0x8001e1) AM_WRITEONLY // ? IRQ Ack
- AM_RANGE(0x904000, 0x90ffff) AM_READWRITE( unico_vram_r, unico_vram_w ) // Layers 1, 2, 0
- AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0
- AM_RANGE(0x930000, 0x9307ff) AM_READWRITE( unico_spriteram_r, unico_spriteram_w ) // Sprites
- AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette_w) AM_SHARE("paletteram") // Palette
-ADDRESS_MAP_END
+void zeropnt_state::zeropnt_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); // ROM
+ map(0xef0000, 0xefffff).ram(); // RAM
+ map(0x800030, 0x800031).nopw(); // ? 0
+ map(0x800018, 0x800019).portr("INPUTS");
+ map(0x80001a, 0x80001b).portr("DSW1");
+ map(0x80001c, 0x80001d).portr("DSW2");
+ map(0x80010c, 0x800121).rw(this, FUNC(zeropnt_state::unico_scroll_r), FUNC(zeropnt_state::unico_scroll_w)); // Scroll
+ map(0x800170, 0x800171).r(this, FUNC(zeropnt_state::unico_guny_0_msb_r)); // Light Guns
+ map(0x800174, 0x800175).r(this, FUNC(zeropnt_state::unico_gunx_0_msb_r)); //
+ map(0x800178, 0x800179).r(this, FUNC(zeropnt_state::unico_guny_1_msb_r)); //
+ map(0x80017c, 0x80017d).r(this, FUNC(zeropnt_state::unico_gunx_1_msb_r)); //
+ map(0x800189, 0x800189).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x80018a, 0x80018a).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x80018c, 0x80018c).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x80018e, 0x80018f).w(this, FUNC(zeropnt_state::zeropnt_sound_bank_w)); //
+ map(0x8001e0, 0x8001e1).writeonly(); // ? IRQ Ack
+ map(0x904000, 0x90ffff).rw(this, FUNC(zeropnt_state::unico_vram_r), FUNC(zeropnt_state::unico_vram_w)); // Layers 1, 2, 0
+ map(0x920000, 0x923fff).ram(); // ? 0
+ map(0x930000, 0x9307ff).rw(this, FUNC(zeropnt_state::unico_spriteram_r), FUNC(zeropnt_state::unico_spriteram_w)); // Sprites
+ map(0x940000, 0x947fff).ram().w(this, FUNC(zeropnt_state::unico_palette_w)).share("paletteram"); // Palette
+}
/***************************************************************************
@@ -213,30 +215,31 @@ WRITE32_MEMBER(zeropnt2_state::zeropnt2_eeprom_w)
}
}
-ADDRESS_MAP_START(zeropnt2_state::zeropnt2_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
- AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x800024, 0x800027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000) // Sound
- AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000) //
- AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000) //
- AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w) //
- AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w) // ?
- AM_RANGE(0x80010c, 0x800123) AM_READWRITE16(unico_scroll_r, unico_scroll_w, 0xffffffff) // Scroll
- AM_RANGE(0x800140, 0x800143) AM_READ(zeropnt2_guny_0_msb_r) // Light Guns
- AM_RANGE(0x800144, 0x800147) AM_READ(zeropnt2_gunx_0_msb_r) //
- AM_RANGE(0x800148, 0x80014b) AM_READ(zeropnt2_guny_1_msb_r) //
- AM_RANGE(0x80014c, 0x80014f) AM_READ(zeropnt2_gunx_1_msb_r) //
- AM_RANGE(0x800150, 0x800153) AM_READ_PORT("DSW1")
- AM_RANGE(0x800154, 0x800157) AM_READ_PORT("DSW2")
- AM_RANGE(0x80015c, 0x80015f) AM_READ_PORT("BUTTONS")
- AM_RANGE(0x8001e0, 0x8001e3) AM_WRITENOP // ? IRQ Ack
- AM_RANGE(0x8001f0, 0x8001f3) AM_WRITE(zeropnt2_eeprom_w) // EEPROM
- AM_RANGE(0x904000, 0x90ffff) AM_READWRITE16(unico_vram_r, unico_vram_w, 0xffffffff) // Layers 1, 2, 0
- AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0
- AM_RANGE(0x930000, 0x9307ff) AM_READWRITE16(unico_spriteram_r, unico_spriteram_w, 0xffffffff) // Sprites
- AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette32_w) AM_SHARE("paletteram") // Palette
- AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM
-ADDRESS_MAP_END
+void zeropnt2_state::zeropnt2_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom(); // ROM
+ map(0x800018, 0x80001b).portr("SYSTEM");
+ map(0x800025, 0x800025).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x800028, 0x80002f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x00ff0000); //
+ map(0x800031, 0x800031).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //
+ map(0x800034, 0x800037).w(this, FUNC(zeropnt2_state::zeropnt2_sound_bank_w)); //
+ map(0x800038, 0x80003b).w(this, FUNC(zeropnt2_state::zeropnt2_leds_w)); // ?
+ map(0x80010c, 0x800123).rw(this, FUNC(zeropnt2_state::unico_scroll_r), FUNC(zeropnt2_state::unico_scroll_w)); // Scroll
+ map(0x800140, 0x800143).r(this, FUNC(zeropnt2_state::zeropnt2_guny_0_msb_r)); // Light Guns
+ map(0x800144, 0x800147).r(this, FUNC(zeropnt2_state::zeropnt2_gunx_0_msb_r)); //
+ map(0x800148, 0x80014b).r(this, FUNC(zeropnt2_state::zeropnt2_guny_1_msb_r)); //
+ map(0x80014c, 0x80014f).r(this, FUNC(zeropnt2_state::zeropnt2_gunx_1_msb_r)); //
+ map(0x800150, 0x800153).portr("DSW1");
+ map(0x800154, 0x800157).portr("DSW2");
+ map(0x80015c, 0x80015f).portr("BUTTONS");
+ map(0x8001e0, 0x8001e3).nopw(); // ? IRQ Ack
+ map(0x8001f0, 0x8001f3).w(this, FUNC(zeropnt2_state::zeropnt2_eeprom_w)); // EEPROM
+ map(0x904000, 0x90ffff).rw(this, FUNC(zeropnt2_state::unico_vram_r), FUNC(zeropnt2_state::unico_vram_w)); // Layers 1, 2, 0
+ map(0x920000, 0x923fff).ram(); // ? 0
+ map(0x930000, 0x9307ff).rw(this, FUNC(zeropnt2_state::unico_spriteram_r), FUNC(zeropnt2_state::unico_spriteram_w)); // Sprites
+ map(0x940000, 0x947fff).ram().w(this, FUNC(zeropnt2_state::unico_palette32_w)).share("paletteram"); // Palette
+ map(0xfe0000, 0xffffff).ram(); // RAM
+}
/***************************************************************************
diff --git a/src/mame/drivers/unior.cpp b/src/mame/drivers/unior.cpp
index a5316a103a0..9b83a23b713 100644
--- a/src/mame/drivers/unior.cpp
+++ b/src/mame/drivers/unior.cpp
@@ -90,24 +90,26 @@ private:
required_region_ptr<u8> m_p_vram;
};
-ADDRESS_MAP_START(unior_state::unior_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_WRITE(vram_w) // main video
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(unior_state::unior_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x30, 0x38) AM_DEVREADWRITE("dma", i8257_device, read, write) // dma data
- AM_RANGE(0x3c, 0x3f) AM_DEVREADWRITE("ppi0", i8255_device, read, write) // cassette player control
- AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0x50, 0x50) AM_WRITE(scroll_w)
- AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("crtc", i8275_device, read, write)
- AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("pit", pit8253_device, read, write )
- AM_RANGE(0xec, 0xec) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w)
- AM_RANGE(0xed, 0xed) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void unior_state::unior_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xf7ff).ram();
+ map(0xf800, 0xffff).rom().w(this, FUNC(unior_state::vram_w)); // main video
+}
+
+void unior_state::unior_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x30, 0x38).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write)); // dma data
+ map(0x3c, 0x3f).rw("ppi0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // cassette player control
+ map(0x4c, 0x4f).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x50, 0x50).w(this, FUNC(unior_state::scroll_w));
+ map(0x60, 0x61).rw("crtc", FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0xdc, 0xdf).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xec, 0xec).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0xed, 0xed).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( unior )
diff --git a/src/mame/drivers/unistar.cpp b/src/mame/drivers/unistar.cpp
index b9903f5e95e..9ba207b4360 100644
--- a/src/mame/drivers/unistar.cpp
+++ b/src/mame/drivers/unistar.cpp
@@ -39,20 +39,22 @@ private:
};
-ADDRESS_MAP_START(unistar_state::unistar_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
-ADDRESS_MAP_END
+void unistar_state::unistar_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x2fff).rom();
+ map(0x8000, 0x8fff).ram();
+}
-ADDRESS_MAP_START(unistar_state::unistar_io)
+void unistar_state::unistar_io(address_map &map)
+{
//ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x8c, 0x8d) AM_DEVREADWRITE("stc", am9513_device, read8, write8)
- AM_RANGE(0x94, 0x97) AM_DEVREADWRITE("ppi", i8255_device, read, write)
+ map.global_mask(0xff);
+ map(0x8c, 0x8d).rw("stc", FUNC(am9513_device::read8), FUNC(am9513_device::write8));
+ map(0x94, 0x97).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
// ports used: 00,02,03(W),08(RW),09,0A,0B,0D,0F(W),80,81(R),82,83(W),84(R),8C,8D(W),94(R),97,98(W),99(RW)
// if nonzero returned from port 94, it goes into test mode.
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( unistar )
diff --git a/src/mame/drivers/univac.cpp b/src/mame/drivers/univac.cpp
index 88f836e95d0..fd5b5139970 100644
--- a/src/mame/drivers/univac.cpp
+++ b/src/mame/drivers/univac.cpp
@@ -188,23 +188,25 @@ WRITE8_MEMBER( univac_state::porte6_w )
}
-ADDRESS_MAP_START(univac_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x4fff ) AM_ROM AM_REGION("roms", 0)
- AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(bank_r, bank_w)
- AM_RANGE( 0xc000, 0xffff ) AM_RAM_WRITE(ram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(univac_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("uart", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x43, 0x43) AM_WRITE(port43_w)
- AM_RANGE(0x80, 0xbf) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
- AM_RANGE(0xc4, 0xc4) AM_WRITE(portc4_w)
- AM_RANGE(0xe6, 0xe6) AM_WRITE(porte6_w)
-ADDRESS_MAP_END
+void univac_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x4fff).rom().region("roms", 0);
+ map(0x8000, 0xbfff).rw(this, FUNC(univac_state::bank_r), FUNC(univac_state::bank_w));
+ map(0xc000, 0xffff).ram().w(this, FUNC(univac_state::ram_w)).share("videoram");
+}
+
+void univac_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+ 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(0x43, 0x43).w(this, FUNC(univac_state::port43_w));
+ map(0x80, 0xbf).ram().w(this, FUNC(univac_state::nvram_w)).share("nvram");
+ map(0xc4, 0xc4).w(this, FUNC(univac_state::portc4_w));
+ map(0xe6, 0xe6).w(this, FUNC(univac_state::porte6_w));
+}
/* Input ports */
static INPUT_PORTS_START( uts20 )
diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp
index a52392e00af..3a56d232efe 100644
--- a/src/mame/drivers/unixpc.cpp
+++ b/src/mame/drivers/unixpc.cpp
@@ -278,30 +278,32 @@ uint32_t unixpc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(unixpc_state::unixpc_mem)
- AM_RANGE(0x000000, 0x3fffff) AM_DEVICE("ramrombank", address_map_bank_device, amap16)
- AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("mapram")
- AM_RANGE(0x420000, 0x427fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x460000, 0x460001) AM_READWRITE(diskdma_size_r, diskdma_size_w)
- AM_RANGE(0x470000, 0x470001) AM_READ(line_printer_r)
- AM_RANGE(0x480000, 0x480001) AM_WRITE(rtc_w)
- AM_RANGE(0x4a0000, 0x4a0001) AM_WRITE(misc_control_w)
- AM_RANGE(0x4d0000, 0x4d7fff) AM_WRITE(diskdma_ptr_w)
- AM_RANGE(0x4e0000, 0x4e0001) AM_WRITE(disk_control_w)
- AM_RANGE(0xe10000, 0xe10007) AM_DEVREADWRITE8("wd2797", wd_fdc_device_base, read, write, 0x00ff)
- AM_RANGE(0xe30000, 0xe30001) AM_READ(rtc_r)
- AM_RANGE(0xe40000, 0xe40001) AM_WRITE(error_enable_w)
- AM_RANGE(0xe41000, 0xe41001) AM_WRITE(parity_enable_w)
- AM_RANGE(0xe42000, 0xe42001) AM_WRITE(bpplus_w)
- AM_RANGE(0xe43000, 0xe43001) AM_WRITE(romlmap_w)
- AM_RANGE(0x800000, 0x803fff) AM_MIRROR(0x7fc000) AM_ROM AM_REGION("bootrom", 0)
+void unixpc_state::unixpc_mem(address_map &map)
+{
+ map(0x000000, 0x3fffff).m(m_ramrombank, FUNC(address_map_bank_device::amap16));
+ map(0x400000, 0x4007ff).ram().share("mapram");
+ map(0x420000, 0x427fff).ram().share("videoram");
+ map(0x460000, 0x460001).rw(this, FUNC(unixpc_state::diskdma_size_r), FUNC(unixpc_state::diskdma_size_w));
+ map(0x470000, 0x470001).r(this, FUNC(unixpc_state::line_printer_r));
+ map(0x480000, 0x480001).w(this, FUNC(unixpc_state::rtc_w));
+ map(0x4a0000, 0x4a0001).w(this, FUNC(unixpc_state::misc_control_w));
+ map(0x4d0000, 0x4d7fff).w(this, FUNC(unixpc_state::diskdma_ptr_w));
+ map(0x4e0000, 0x4e0001).w(this, FUNC(unixpc_state::disk_control_w));
+ map(0xe10000, 0xe10007).rw(m_wd2797, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)).umask16(0x00ff);
+ map(0xe30000, 0xe30001).r(this, FUNC(unixpc_state::rtc_r));
+ map(0xe40000, 0xe40001).w(this, FUNC(unixpc_state::error_enable_w));
+ map(0xe41000, 0xe41001).w(this, FUNC(unixpc_state::parity_enable_w));
+ map(0xe42000, 0xe42001).w(this, FUNC(unixpc_state::bpplus_w));
+ map(0xe43000, 0xe43001).w(this, FUNC(unixpc_state::romlmap_w));
+ map(0x800000, 0x803fff).mirror(0x7fc000).rom().region("bootrom", 0);
// e70000 / e70002 = keyboard 6850 status/control and Rx data / Tx data
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(unixpc_state::ramrombank_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("bootrom", 0)
- AM_RANGE(0x400000, 0x7fffff) AM_READWRITE(ram_mmu_r, ram_mmu_w)
-ADDRESS_MAP_END
+void unixpc_state::ramrombank_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom().region("bootrom", 0);
+ map(0x400000, 0x7fffff).rw(this, FUNC(unixpc_state::ram_mmu_r), FUNC(unixpc_state::ram_mmu_w));
+}
/***************************************************************************
INPUT PORTS
diff --git a/src/mame/drivers/unkhorse.cpp b/src/mame/drivers/unkhorse.cpp
index 1204c6eb629..ab6603c6eeb 100644
--- a/src/mame/drivers/unkhorse.cpp
+++ b/src/mame/drivers/unkhorse.cpp
@@ -99,16 +99,18 @@ uint32_t horse_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
***************************************************************************/
-ADDRESS_MAP_START(horse_state::horse_map)
- AM_RANGE(0x0000, 0x37ff) AM_ROM
- AM_RANGE(0x4000, 0x40ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_READWRITE(colorram_r, colorram_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(horse_state::horse_io_map)
- AM_RANGE(0x40, 0x47) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w)
-ADDRESS_MAP_END
+void horse_state::horse_map(address_map &map)
+{
+ map(0x0000, 0x37ff).rom();
+ map(0x4000, 0x40ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w));
+ map(0x6000, 0x7fff).ram().share("vram");
+ map(0x8000, 0x87ff).mirror(0x0800).rw(this, FUNC(horse_state::colorram_r), FUNC(horse_state::colorram_w));
+}
+
+void horse_state::horse_io_map(address_map &map)
+{
+ map(0x40, 0x47).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
+}
READ8_MEMBER(horse_state::input_r)
diff --git a/src/mame/drivers/upscope.cpp b/src/mame/drivers/upscope.cpp
index 5c0089ccf78..6a6ea53f5ac 100644
--- a/src/mame/drivers/upscope.cpp
+++ b/src/mame/drivers/upscope.cpp
@@ -207,29 +207,32 @@ WRITE8_MEMBER( upscope_state::coin_counter_w )
*
*************************************/
-ADDRESS_MAP_START(upscope_state::overlay_512kb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(upscope_state::a500_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(upscope_state::main_map)
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0)
-ADDRESS_MAP_END
+void upscope_state::overlay_512kb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
+
+void upscope_state::a500_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16));
+ map(0xa00000, 0xbfffff).rw(this, FUNC(upscope_state::cia_r), FUNC(upscope_state::cia_w));
+ map(0xc00000, 0xd7ffff).rw(this, FUNC(upscope_state::custom_chip_r), FUNC(upscope_state::custom_chip_w));
+ map(0xd80000, 0xddffff).noprw();
+ map(0xde0000, 0xdeffff).rw(this, FUNC(upscope_state::custom_chip_r), FUNC(upscope_state::custom_chip_w));
+ map(0xdf0000, 0xdfffff).rw(this, FUNC(upscope_state::custom_chip_r), FUNC(upscope_state::custom_chip_w));
+ map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(upscope_state::rom_mirror_r));
+ map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices)
+ map(0xf80000, 0xffffff).rom().region("kickstart", 0);
+}
+
+void upscope_state::main_map(address_map &map)
+{
+ a500_mem(map);
+ map(0xf00000, 0xf7ffff).rom().region("user2", 0);
+}
diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp
index 919038be4f4..e6a2df3a9ca 100644
--- a/src/mame/drivers/usgames.cpp
+++ b/src/mame/drivers/usgames.cpp
@@ -64,42 +64,44 @@ WRITE8_MEMBER(usgames_state::lamps2_w)
}
-ADDRESS_MAP_START(usgames_state::usgames_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
- AM_RANGE(0x2010, 0x2010) AM_READ_PORT("INPUTS")
- AM_RANGE(0x2020, 0x2020) AM_WRITE(lamps1_w)
- AM_RANGE(0x2030, 0x2030) AM_WRITE(lamps2_w)
- AM_RANGE(0x2040, 0x2040) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2041, 0x2041) AM_READ_PORT("UNK1")
- AM_RANGE(0x2041, 0x2041) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x2060, 0x2060) AM_WRITE(rombank_w)
- AM_RANGE(0x2070, 0x2070) AM_READ_PORT("UNK2")
- AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("aysnd", ay8912_device, address_data_w)
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(usgames_state::usg185_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("aysnd", ay8912_device, address_data_w)
- AM_RANGE(0x2400, 0x2400) AM_READ_PORT("DSW")
- AM_RANGE(0x2410, 0x2410) AM_READ_PORT("INPUTS")
- AM_RANGE(0x2420, 0x2420) AM_WRITE(lamps1_w)
- AM_RANGE(0x2430, 0x2430) AM_WRITE(lamps2_w)
- AM_RANGE(0x2440, 0x2440) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x2441, 0x2441) AM_READ_PORT("UNK1")
- AM_RANGE(0x2441, 0x2441) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x2460, 0x2460) AM_WRITE(rombank_w)
- AM_RANGE(0x2470, 0x2470) AM_READ_PORT("UNK2")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void usgames_state::usgames_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x2000).portr("DSW");
+ map(0x2010, 0x2010).portr("INPUTS");
+ map(0x2020, 0x2020).w(this, FUNC(usgames_state::lamps1_w));
+ map(0x2030, 0x2030).w(this, FUNC(usgames_state::lamps2_w));
+ map(0x2040, 0x2040).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2041, 0x2041).portr("UNK1");
+ map(0x2041, 0x2041).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x2060, 0x2060).w(this, FUNC(usgames_state::rombank_w));
+ map(0x2070, 0x2070).portr("UNK2");
+ map(0x2400, 0x2401).w("aysnd", FUNC(ay8912_device::address_data_w));
+ map(0x2800, 0x2fff).ram().w(this, FUNC(usgames_state::charram_w)).share("charram");
+ map(0x3000, 0x3fff).ram().w(this, FUNC(usgames_state::videoram_w)).share("videoram");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void usgames_state::usg185_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2000, 0x2001).w("aysnd", FUNC(ay8912_device::address_data_w));
+ map(0x2400, 0x2400).portr("DSW");
+ map(0x2410, 0x2410).portr("INPUTS");
+ map(0x2420, 0x2420).w(this, FUNC(usgames_state::lamps1_w));
+ map(0x2430, 0x2430).w(this, FUNC(usgames_state::lamps2_w));
+ map(0x2440, 0x2440).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x2441, 0x2441).portr("UNK1");
+ map(0x2441, 0x2441).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x2460, 0x2460).w(this, FUNC(usgames_state::rombank_w));
+ map(0x2470, 0x2470).portr("UNK2");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(usgames_state::charram_w)).share("charram");
+ map(0x3000, 0x3fff).ram().w(this, FUNC(usgames_state::videoram_w)).share("videoram");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
static INPUT_PORTS_START( usg32 )
diff --git a/src/mame/drivers/ut88.cpp b/src/mame/drivers/ut88.cpp
index 3eabca2aa25..5d54df9693a 100644
--- a/src/mame/drivers/ut88.cpp
+++ b/src/mame/drivers/ut88.cpp
@@ -38,31 +38,35 @@ static GFXDECODE_START( ut88 )
GFXDECODE_END
/* Address maps */
-ADDRESS_MAP_START(ut88_state::ut88mini_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x03ff ) AM_ROM // System ROM
- AM_RANGE( 0xc000, 0xc3ff ) AM_RAM // RAM
- AM_RANGE( 0x9000, 0x9fff ) AM_WRITE(ut88mini_write_led) // 7seg LED
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ut88_state::ut88_mem)
- AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") // First bank
- AM_RANGE( 0x0800, 0xdfff ) AM_RAM // RAM
- AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // Video RAM (not used)
- AM_RANGE( 0xe800, 0xefff ) AM_RAM AM_SHARE("videoram") // Video RAM
- AM_RANGE( 0xf400, 0xf7ff ) AM_RAM // System RAM
- AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ut88_state::ut88mini_io)
- AM_RANGE( 0xA0, 0xA0) AM_READ(ut88mini_keyboard_r)
- AM_RANGE( 0xA1, 0xA1) AM_READ(ut88_tape_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ut88_state::ut88_io)
- AM_RANGE( 0x04, 0x07) AM_READWRITE(ut88_keyboard_r, ut88_keyboard_w)
- AM_RANGE( 0xA1, 0xA1) AM_READWRITE(ut88_tape_r, ut88_sound_w)
-ADDRESS_MAP_END
+void ut88_state::ut88mini_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).rom(); // System ROM
+ map(0xc000, 0xc3ff).ram(); // RAM
+ map(0x9000, 0x9fff).w(this, FUNC(ut88_state::ut88mini_write_led)); // 7seg LED
+}
+
+void ut88_state::ut88_mem(address_map &map)
+{
+ map(0x0000, 0x07ff).bankrw("bank1"); // First bank
+ map(0x0800, 0xdfff).ram(); // RAM
+ map(0xe000, 0xe7ff).ram(); // Video RAM (not used)
+ map(0xe800, 0xefff).ram().share("videoram"); // Video RAM
+ map(0xf400, 0xf7ff).ram(); // System RAM
+ map(0xf800, 0xffff).rom(); // System ROM
+}
+
+void ut88_state::ut88mini_io(address_map &map)
+{
+ map(0xA0, 0xA0).r(this, FUNC(ut88_state::ut88mini_keyboard_r));
+ map(0xA1, 0xA1).r(this, FUNC(ut88_state::ut88_tape_r));
+}
+
+void ut88_state::ut88_io(address_map &map)
+{
+ map(0x04, 0x07).rw(this, FUNC(ut88_state::ut88_keyboard_r), FUNC(ut88_state::ut88_keyboard_w));
+ map(0xA1, 0xA1).rw(this, FUNC(ut88_state::ut88_tape_r), FUNC(ut88_state::ut88_sound_w));
+}
/* Input ports */
static INPUT_PORTS_START( ut88 )
diff --git a/src/mame/drivers/uzebox.cpp b/src/mame/drivers/uzebox.cpp
index d76ffed64b2..8a7a4674d77 100644
--- a/src/mame/drivers/uzebox.cpp
+++ b/src/mame/drivers/uzebox.cpp
@@ -199,20 +199,23 @@ READ8_MEMBER(uzebox_state::port_d_r)
* Address maps *
\****************************************************/
-ADDRESS_MAP_START(uzebox_state::uzebox_prg_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM // 64 KB internal eprom ATmega644
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(uzebox_state::uzebox_data_map)
- AM_RANGE(0x0100, 0x10ff) AM_RAM // 4KB RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(uzebox_state::uzebox_io_map)
- AM_RANGE(AVR8_REG_A, AVR8_REG_A) AM_READWRITE( port_a_r, port_a_w )
- AM_RANGE(AVR8_REG_B, AVR8_REG_B) AM_READWRITE( port_b_r, port_b_w )
- AM_RANGE(AVR8_REG_C, AVR8_REG_C) AM_READWRITE( port_c_r, port_c_w )
- AM_RANGE(AVR8_REG_D, AVR8_REG_D) AM_READWRITE( port_d_r, port_d_w )
-ADDRESS_MAP_END
+void uzebox_state::uzebox_prg_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom(); // 64 KB internal eprom ATmega644
+}
+
+void uzebox_state::uzebox_data_map(address_map &map)
+{
+ map(0x0100, 0x10ff).ram(); // 4KB RAM
+}
+
+void uzebox_state::uzebox_io_map(address_map &map)
+{
+ map(AVR8_REG_A, AVR8_REG_A).rw(this, FUNC(uzebox_state::port_a_r), FUNC(uzebox_state::port_a_w));
+ map(AVR8_REG_B, AVR8_REG_B).rw(this, FUNC(uzebox_state::port_b_r), FUNC(uzebox_state::port_b_w));
+ map(AVR8_REG_C, AVR8_REG_C).rw(this, FUNC(uzebox_state::port_c_r), FUNC(uzebox_state::port_c_w));
+ map(AVR8_REG_D, AVR8_REG_D).rw(this, FUNC(uzebox_state::port_d_r), FUNC(uzebox_state::port_d_w));
+}
/****************************************************\
* Input ports *
diff --git a/src/mame/drivers/v100.cpp b/src/mame/drivers/v100.cpp
index dde5ff1965c..3350b2de521 100644
--- a/src/mame/drivers/v100.cpp
+++ b/src/mame/drivers/v100.cpp
@@ -227,28 +227,30 @@ WRITE8_MEMBER(v100_state::ppi_porta_w)
//logerror("Writing %02X to PPI port A\n", data);
}
-ADDRESS_MAP_START(v100_state::mem_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x5fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(v100_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_DEVWRITE("vtac", crt5037_device, write)
- AM_RANGE(0x10, 0x10) AM_WRITE(brg_w<0>)
- AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("usart1", i8251_device, data_r, data_w)
- AM_RANGE(0x13, 0x13) AM_DEVREADWRITE("usart1", i8251_device, status_r, control_w)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("usart2", i8251_device, data_r, data_w)
- AM_RANGE(0x15, 0x15) AM_DEVREADWRITE("usart2", i8251_device, status_r, control_w)
- AM_RANGE(0x16, 0x16) AM_WRITE(brg_w<1>)
- AM_RANGE(0x20, 0x20) AM_READ(earom_r)
- AM_RANGE(0x30, 0x30) AM_WRITE(port30_w)
- AM_RANGE(0x40, 0x40) AM_READWRITE(keyboard_r, key_row_w)
- AM_RANGE(0x48, 0x48) AM_WRITE(port48_w)
- AM_RANGE(0x60, 0x60) AM_WRITE(picu_w)
- AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
+void v100_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("maincpu", 0);
+ map(0x4000, 0x4fff).ram().share("videoram");
+ map(0x5000, 0x5fff).ram();
+}
+
+void v100_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x0f).w(m_vtac, FUNC(crt5037_device::write));
+ map(0x10, 0x10).w(this, FUNC(v100_state::brg_w<0>));
+ map(0x12, 0x12).rw("usart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x13, 0x13).rw("usart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x14, 0x14).rw("usart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x15, 0x15).rw("usart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x16, 0x16).w(this, FUNC(v100_state::brg_w<1>));
+ map(0x20, 0x20).r(this, FUNC(v100_state::earom_r));
+ map(0x30, 0x30).w(this, FUNC(v100_state::port30_w));
+ map(0x40, 0x40).rw(this, FUNC(v100_state::keyboard_r), FUNC(v100_state::key_row_w));
+ map(0x48, 0x48).w(this, FUNC(v100_state::port48_w));
+ map(0x60, 0x60).w(this, FUNC(v100_state::picu_w));
+ map(0x70, 0x73).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
static INPUT_PORTS_START( v100 )
diff --git a/src/mame/drivers/v102.cpp b/src/mame/drivers/v102.cpp
index 03943feee47..05be661af58 100644
--- a/src/mame/drivers/v102.cpp
+++ b/src/mame/drivers/v102.cpp
@@ -46,29 +46,32 @@ u32 v102_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const
}
-ADDRESS_MAP_START(v102_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xa000, 0xafff) AM_RAM
- AM_RANGE(0xb800, 0xb9ff) AM_DEVREADWRITE("eeprom", eeprom_parallel_28xx_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(v102_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void v102_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom().region("maincpu", 0);
+ map(0x8000, 0x8fff).ram();
+ map(0xa000, 0xafff).ram();
+ map(0xb800, 0xb9ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
+}
+
+void v102_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
//AM_RANGE(0x00, 0x3f) AM_DEVREADWRITE("vpac", crt9007_device, read, write)
- AM_RANGE(0x18, 0x19) AM_WRITENOP
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("mpsc", upd7201_new_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w)
- AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w)
- AM_RANGE(0x80, 0x83) AM_DEVWRITE("pit", pit8253_device, write)
- AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("ppi", i8255_device, read, write)
+ map(0x18, 0x19).nopw();
+ map(0x40, 0x43).rw("mpsc", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w));
+ map(0x60, 0x60).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x61, 0x61).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x80, 0x83).w("pit", FUNC(pit8253_device::write));
+ map(0xa0, 0xa3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
//AM_RANGE(0xbf, 0xbf) ???
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(v102_state::kbd_map)
- AM_RANGE(0x000, 0x7ff) AM_ROM AM_REGION("keyboard", 0)
-ADDRESS_MAP_END
+void v102_state::kbd_map(address_map &map)
+{
+ map(0x000, 0x7ff).rom().region("keyboard", 0);
+}
static INPUT_PORTS_START( v102 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp
index ba65f8db471..4b93fbc93aa 100644
--- a/src/mame/drivers/v1050.cpp
+++ b/src/mame/drivers/v1050.cpp
@@ -466,46 +466,49 @@ WRITE8_MEMBER( v1050_state::sasi_ctrl_w )
// Memory Maps
-ADDRESS_MAP_START(v1050_state::v1050_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1")
- AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("bank2")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank3")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank4")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(v1050_state::v1050_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x84, 0x87) AM_DEVREADWRITE(I8255A_DISP_TAG, i8255_device, read, write)
+void v1050_state::v1050_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x3fff).bankrw("bank2");
+ map(0x4000, 0x7fff).bankrw("bank3");
+ map(0x8000, 0xbfff).bankrw("bank4");
+ map(0xc000, 0xffff).bankrw("bank5");
+}
+
+void v1050_state::v1050_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x84, 0x87).rw(m_ppi_disp, FUNC(i8255_device::read), FUNC(i8255_device::write));
// AM_RANGE(0x88, 0x88) AM_DEVREADWRITE(I8251A_KB_TAG, i8251_device, data_r, data_w)
// AM_RANGE(0x89, 0x89) AM_DEVREADWRITE(I8251A_KB_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x88, 0x88) AM_READ(kb_data_r) AM_DEVWRITE(I8251A_KB_TAG, i8251_device, data_w)
- AM_RANGE(0x89, 0x89) AM_READ(kb_status_r) AM_DEVWRITE(I8251A_KB_TAG, i8251_device, control_w)
- AM_RANGE(0x8c, 0x8c) AM_DEVREADWRITE(I8251A_SIO_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x8d, 0x8d) AM_DEVREADWRITE(I8251A_SIO_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x90, 0x93) AM_DEVREADWRITE(I8255A_MISC_TAG, i8255_device, read, write)
- AM_RANGE(0x94, 0x97) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write)
- AM_RANGE(0x9c, 0x9f) AM_DEVREADWRITE(I8255A_RTC_TAG, i8255_device, read, write)
- AM_RANGE(0xa0, 0xa0) AM_READWRITE(vint_clr_r, vint_clr_w)
- AM_RANGE(0xb0, 0xb0) AM_READWRITE(dint_clr_r, dint_clr_w)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(v1050_i8214_w)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(bank_w)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(sasi_data_w) AM_DEVREAD("scsi_data_in", input_buffer_device, read)
- AM_RANGE(0xe1, 0xe1) AM_DEVREAD("scsi_ctrl_in", input_buffer_device, read) AM_WRITE(sasi_ctrl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(v1050_state::v1050_crt_mem)
- AM_RANGE(0x0000, 0x7fff) AM_READWRITE(videoram_r, videoram_w) AM_SHARE("video_ram")
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE(H46505_TAG, mc6845_device, address_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREADWRITE(H46505_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0x9000, 0x9003) AM_DEVREADWRITE(I8255A_M6502_TAG, i8255_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READWRITE(attr_r, attr_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(dint_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(dvint_clr_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x88, 0x88).r(this, FUNC(v1050_state::kb_data_r)).w(m_uart_kb, FUNC(i8251_device::data_w));
+ map(0x89, 0x89).r(this, FUNC(v1050_state::kb_status_r)).w(m_uart_kb, FUNC(i8251_device::control_w));
+ map(0x8c, 0x8c).rw(m_uart_sio, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x8d, 0x8d).rw(m_uart_sio, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x90, 0x93).rw(I8255A_MISC_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x94, 0x97).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write));
+ map(0x9c, 0x9f).rw(I8255A_RTC_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa0, 0xa0).rw(this, FUNC(v1050_state::vint_clr_r), FUNC(v1050_state::vint_clr_w));
+ map(0xb0, 0xb0).rw(this, FUNC(v1050_state::dint_clr_r), FUNC(v1050_state::dint_clr_w));
+ map(0xc0, 0xc0).w(this, FUNC(v1050_state::v1050_i8214_w));
+ map(0xd0, 0xd0).w(this, FUNC(v1050_state::bank_w));
+ map(0xe0, 0xe0).w(this, FUNC(v1050_state::sasi_data_w)).r(m_sasi_data_in, FUNC(input_buffer_device::read));
+ map(0xe1, 0xe1).r(m_sasi_ctrl_in, FUNC(input_buffer_device::read)).w(this, FUNC(v1050_state::sasi_ctrl_w));
+}
+
+void v1050_state::v1050_crt_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(this, FUNC(v1050_state::videoram_r), FUNC(v1050_state::videoram_w)).share("video_ram");
+ map(0x8000, 0x8000).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x8001, 0x8001).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x9000, 0x9003).rw(m_ppi_6502, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa000, 0xa000).rw(this, FUNC(v1050_state::attr_r), FUNC(v1050_state::attr_w));
+ map(0xb000, 0xb000).w(this, FUNC(v1050_state::dint_w));
+ map(0xc000, 0xc000).w(this, FUNC(v1050_state::dvint_clr_w));
+ map(0xe000, 0xffff).rom();
+}
// Input Ports
diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp
index a7130a479c7..4b30ac80bd3 100644
--- a/src/mame/drivers/v6809.cpp
+++ b/src/mame/drivers/v6809.cpp
@@ -113,21 +113,22 @@ private:
};
-ADDRESS_MAP_START(v6809_state::v6809_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf000) AM_MIRROR(0xfe) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(v6809_address_w)
- AM_RANGE(0xf001, 0xf001) AM_MIRROR(0xfe) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(v6809_register_w)
- AM_RANGE(0xf200, 0xf200) AM_MIRROR(0xff) AM_WRITE(videoram_w)
- AM_RANGE(0xf500, 0xf501) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, read, write) // modem
- AM_RANGE(0xf508, 0xf509) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // printer
- AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x3c) AM_DEVREADWRITE("fdc", mb8876_device, read, write)
- AM_RANGE(0xf640, 0xf64f) AM_MIRROR(0x30) AM_DEVREADWRITE("rtc", mm58274c_device, read, write)
- AM_RANGE(0xf680, 0xf683) AM_MIRROR(0x3c) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0xf6c0, 0xf6c7) AM_MIRROR(0x08) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
- AM_RANGE(0xf6d0, 0xf6d3) AM_MIRROR(0x0c) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
- AM_RANGE(0xf800, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void v6809_state::v6809_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).ram();
+ map(0xf000, 0xf000).mirror(0xfe).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(v6809_state::v6809_address_w));
+ map(0xf001, 0xf001).mirror(0xfe).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(v6809_state::v6809_register_w));
+ map(0xf200, 0xf200).mirror(0xff).w(this, FUNC(v6809_state::videoram_w));
+ map(0xf500, 0xf501).mirror(0x36).rw("acia0", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // modem
+ map(0xf508, 0xf509).mirror(0x36).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // printer
+ map(0xf600, 0xf603).mirror(0x3c).rw(m_fdc, FUNC(mb8876_device::read), FUNC(mb8876_device::write));
+ map(0xf640, 0xf64f).mirror(0x30).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write));
+ map(0xf680, 0xf683).mirror(0x3c).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf6c0, 0xf6c7).mirror(0x08).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xf6d0, 0xf6d3).mirror(0x0c).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xf800, 0xffff).rom();
+}
/* Input ports */
diff --git a/src/mame/drivers/vamphalf.cpp b/src/mame/drivers/vamphalf.cpp
index b8148c71fee..96529999c67 100644
--- a/src/mame/drivers/vamphalf.cpp
+++ b/src/mame/drivers/vamphalf.cpp
@@ -443,183 +443,201 @@ WRITE8_MEMBER( vamphalf_state::qs1000_p3_w )
}
-ADDRESS_MAP_START(vamphalf_state::common_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram")
- AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles")
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::common_32bit_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32")
- AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32")
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::yorijori_32bit_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32")
- AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32")
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::vamphalf_io)
- AM_RANGE(0x0c0, 0x0c1) AM_NOP // return 0, when oki chip is read / written
- AM_RANGE(0x0c2, 0x0c3) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x140, 0x143) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
- AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
- AM_RANGE(0x1c0, 0x1c3) AM_READ(eeprom_r)
- AM_RANGE(0x240, 0x243) AM_WRITE(flipscreen_w)
- AM_RANGE(0x600, 0x603) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x604, 0x607) AM_READ_PORT("P1_P2")
- AM_RANGE(0x608, 0x60b) AM_WRITE(eeprom_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::misncrft_io)
- AM_RANGE(0x100, 0x103) AM_WRITE(flipscreen_w)
- AM_RANGE(0x200, 0x203) AM_READ_PORT("P1_P2")
- AM_RANGE(0x240, 0x243) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x3c0, 0x3c3) AM_WRITE(eeprom_w)
- AM_RANGE(0x400, 0x403) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16)
- AM_RANGE(0x580, 0x583) AM_READ(eeprom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::coolmini_io)
- AM_RANGE(0x200, 0x203) AM_WRITE(flipscreen_w)
- AM_RANGE(0x300, 0x303) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x304, 0x307) AM_READ_PORT("P1_P2")
- AM_RANGE(0x308, 0x30b) AM_WRITE(eeprom_w)
- AM_RANGE(0x4c0, 0x4c1) AM_NOP // return 0, when oki chip is read / written
- AM_RANGE(0x4c2, 0x4c3) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x540, 0x543) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
- AM_RANGE(0x544, 0x547) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
- AM_RANGE(0x7c0, 0x7c3) AM_READ(eeprom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::mrkicker_io)
- AM_RANGE(0x002, 0x003) AM_WRITE(mrkicker_oki_bank_w)
- AM_IMPORT_FROM(coolmini_io)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::suplup_io)
- AM_RANGE(0x020, 0x023) AM_WRITE(eeprom_w)
- AM_RANGE(0x040, 0x043) AM_READ_PORT("P1_P2")
- AM_RANGE(0x060, 0x063) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written
- AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
- AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
- AM_RANGE(0x100, 0x103) AM_READ(eeprom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::wyvernwg_io)
- AM_RANGE(0x1800, 0x1803) AM_READWRITE(wyvernwg_prot_r, wyvernwg_prot_w)
- AM_RANGE(0x2000, 0x2003) AM_WRITE(flipscreen32_w)
- AM_RANGE(0x2800, 0x2803) AM_READ_PORT("P1_P2")
- AM_RANGE(0x3000, 0x3003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x5400, 0x5403) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
- AM_RANGE(0x7000, 0x7003) AM_WRITE(eeprom32_w)
- AM_RANGE(0x7c00, 0x7c03) AM_READ(eeprom32_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::finalgdr_io)
- AM_RANGE(0x2400, 0x2403) AM_READ(finalgdr_prot_r)
- AM_RANGE(0x2800, 0x2803) AM_WRITE(finalgdr_backupram_bank_w)
- AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(finalgdr_backupram_r, finalgdr_backupram_w)
- AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
- AM_RANGE(0x3800, 0x3803) AM_READ_PORT("P1_P2")
- AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x0000ff00)
- AM_RANGE(0x3c00, 0x3c03) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x4400, 0x4403) AM_READ(eeprom32_r)
- AM_RANGE(0x6000, 0x6003) AM_READNOP //?
- AM_RANGE(0x6000, 0x6003) AM_WRITE(finalgdr_eeprom_w)
- AM_RANGE(0x6040, 0x6043) AM_WRITE(finalgdr_prot_w)
+void vamphalf_state::common_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("wram");
+ map(0x40000000, 0x4003ffff).ram().share("tiles");
+ map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void vamphalf_state::common_32bit_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("wram32");
+ map(0x40000000, 0x4003ffff).ram().share("tiles32");
+ map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xfff00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void vamphalf_state::yorijori_32bit_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().share("wram32");
+ map(0x40000000, 0x4003ffff).ram().share("tiles32");
+ map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0xffe00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void vamphalf_state::vamphalf_io(address_map &map)
+{
+ map(0x0c0, 0x0c1).noprw(); // return 0, when oki chip is read / written
+ map(0x0c3, 0x0c3).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140, 0x143).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
+ map(0x147, 0x147).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
+ map(0x1c0, 0x1c3).r(this, FUNC(vamphalf_state::eeprom_r));
+ map(0x240, 0x243).w(this, FUNC(vamphalf_state::flipscreen_w));
+ map(0x600, 0x603).portr("SYSTEM");
+ map(0x604, 0x607).portr("P1_P2");
+ map(0x608, 0x60b).w(this, FUNC(vamphalf_state::eeprom_w));
+}
+
+void vamphalf_state::misncrft_io(address_map &map)
+{
+ map(0x100, 0x103).w(this, FUNC(vamphalf_state::flipscreen_w));
+ map(0x200, 0x203).portr("P1_P2");
+ map(0x240, 0x243).portr("SYSTEM");
+ map(0x3c0, 0x3c3).w(this, FUNC(vamphalf_state::eeprom_w));
+ map(0x400, 0x403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x580, 0x583).r(this, FUNC(vamphalf_state::eeprom_r));
+}
+
+void vamphalf_state::coolmini_io(address_map &map)
+{
+ map(0x200, 0x203).w(this, FUNC(vamphalf_state::flipscreen_w));
+ map(0x300, 0x303).portr("SYSTEM");
+ map(0x304, 0x307).portr("P1_P2");
+ map(0x308, 0x30b).w(this, FUNC(vamphalf_state::eeprom_w));
+ map(0x4c0, 0x4c1).noprw(); // return 0, when oki chip is read / written
+ map(0x4c3, 0x4c3).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x540, 0x543).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
+ map(0x544, 0x547).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
+ map(0x7c0, 0x7c3).r(this, FUNC(vamphalf_state::eeprom_r));
+}
+
+void vamphalf_state::mrkicker_io(address_map &map)
+{
+ map(0x002, 0x003).w(this, FUNC(vamphalf_state::mrkicker_oki_bank_w));
+ coolmini_io(map);
+}
+
+void vamphalf_state::suplup_io(address_map &map)
+{
+ map(0x020, 0x023).w(this, FUNC(vamphalf_state::eeprom_w));
+ map(0x040, 0x043).portr("P1_P2");
+ map(0x060, 0x063).portr("SYSTEM");
+ map(0x080, 0x081).noprw(); // return 0, when oki chip is read / written
+ map(0x083, 0x083).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0c0, 0x0c3).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
+ map(0x0c4, 0x0c7).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
+ map(0x100, 0x103).r(this, FUNC(vamphalf_state::eeprom_r));
+}
+
+void vamphalf_state::wyvernwg_io(address_map &map)
+{
+ map(0x1800, 0x1803).rw(this, FUNC(vamphalf_state::wyvernwg_prot_r), FUNC(vamphalf_state::wyvernwg_prot_w));
+ map(0x2000, 0x2003).w(this, FUNC(vamphalf_state::flipscreen32_w));
+ map(0x2800, 0x2803).portr("P1_P2");
+ map(0x3000, 0x3003).portr("SYSTEM");
+ map(0x5400, 0x5403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
+ map(0x7000, 0x7003).w(this, FUNC(vamphalf_state::eeprom32_w));
+ map(0x7c00, 0x7c03).r(this, FUNC(vamphalf_state::eeprom32_r));
+}
+
+void vamphalf_state::finalgdr_io(address_map &map)
+{
+ map(0x2400, 0x2403).r(this, FUNC(vamphalf_state::finalgdr_prot_r));
+ map(0x2800, 0x2803).w(this, FUNC(vamphalf_state::finalgdr_backupram_bank_w));
+ map(0x2c00, 0x2dff).rw(this, FUNC(vamphalf_state::finalgdr_backupram_r), FUNC(vamphalf_state::finalgdr_backupram_w));
+ map(0x3000, 0x3007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
+ map(0x3800, 0x3803).portr("P1_P2");
+ map(0x3402, 0x3402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x3c00, 0x3c03).portr("SYSTEM");
+ map(0x4400, 0x4403).r(this, FUNC(vamphalf_state::eeprom32_r));
+ map(0x6000, 0x6003).nopr(); //?
+ map(0x6000, 0x6003).w(this, FUNC(vamphalf_state::finalgdr_eeprom_w));
+ map(0x6040, 0x6043).w(this, FUNC(vamphalf_state::finalgdr_prot_w));
//AM_RANGE(0x6080, 0x6083) AM_WRITE(flipscreen32_w) //?
- AM_RANGE(0x6060, 0x6063) AM_WRITE(finalgdr_prize_w)
- AM_RANGE(0x60a0, 0x60a3) AM_WRITE(finalgdr_oki_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::mrkickera_io)
- AM_RANGE(0x2400, 0x2403) AM_READ(eeprom32_r)
- AM_RANGE(0x4000, 0x4003) AM_READNOP //?
- AM_RANGE(0x4000, 0x4003) AM_WRITE(finalgdr_eeprom_w)
- AM_RANGE(0x4040, 0x4043) AM_WRITE(finalgdr_prot_w)
- AM_RANGE(0x4084, 0x4087) AM_WRITENOP //?
- AM_RANGE(0x40a0, 0x40a3) AM_WRITE(finalgdr_oki_bank_w)
- AM_RANGE(0x6400, 0x6403) AM_READ(finalgdr_prot_r)
- AM_RANGE(0x7000, 0x7007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
- AM_RANGE(0x7400, 0x7403) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x0000ff00)
- AM_RANGE(0x7800, 0x7803) AM_READ_PORT("P1_P2")
- AM_RANGE(0x7c00, 0x7c03) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(vamphalf_state::jmpbreak_io)
- AM_RANGE(0x0c0, 0x0c3) AM_NOP // ?
- AM_RANGE(0x100, 0x103) AM_WRITENOP // ?
- AM_RANGE(0x240, 0x243) AM_READ_PORT("P1_P2")
- AM_RANGE(0x280, 0x283) AM_WRITE(eeprom_w)
- AM_RANGE(0x2c0, 0x2c3) AM_READ(eeprom_r)
- AM_RANGE(0x440, 0x441) AM_NOP // return 0, when oki chip is read / written
- AM_RANGE(0x442, 0x443) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x540, 0x543) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x680, 0x683) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
- AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::mrdig_io)
- AM_RANGE(0x500, 0x503) AM_READ_PORT("P1_P2")
- AM_RANGE(0x3c0, 0x3c3) AM_WRITE(eeprom_w)
- AM_RANGE(0x180, 0x183) AM_READ(eeprom_r)
- AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written
- AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x280, 0x283) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
- AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::aoh_map)
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("wram32")
- AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32")
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette")
- AM_RANGE(0x80210000, 0x80210003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x80220000, 0x80220003) AM_READ_PORT("P1_P2")
- AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::aoh_io)
- AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w)
- AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x0000ff00)
- AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki_1", okim6295_device, read, write, 0x0000ff00)
- AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
- AM_RANGE(0x0680, 0x0683) AM_WRITE(aoh_oki_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::boonggab_io)
- AM_RANGE(0x0c0, 0x0c3) AM_READ(eeprom_r)
- AM_RANGE(0x200, 0x203) AM_NOP // seems unused
- AM_RANGE(0x300, 0x303) AM_WRITE(flipscreen_w)
- AM_RANGE(0x400, 0x403) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x404, 0x407) AM_READ_PORT("P1_P2")
- AM_RANGE(0x408, 0x40b) AM_WRITE(eeprom_w)
- AM_RANGE(0x410, 0x413) AM_WRITE(boonggab_prize_w)
- AM_RANGE(0x414, 0x41b) AM_WRITE(boonggab_lamps_w)
- AM_RANGE(0x600, 0x603) AM_WRITE(boonggab_oki_bank_w)
- AM_RANGE(0x700, 0x701) AM_NOP // return 0, when oki chip is read / written
- AM_RANGE(0x702, 0x703) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x740, 0x743) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
- AM_RANGE(0x744, 0x747) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::yorijori_io)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vamphalf_state::banked_oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+ map(0x6060, 0x6063).w(this, FUNC(vamphalf_state::finalgdr_prize_w));
+ map(0x60a0, 0x60a3).w(this, FUNC(vamphalf_state::finalgdr_oki_bank_w));
+}
+
+void vamphalf_state::mrkickera_io(address_map &map)
+{
+ map(0x2400, 0x2403).r(this, FUNC(vamphalf_state::eeprom32_r));
+ map(0x4000, 0x4003).nopr(); //?
+ map(0x4000, 0x4003).w(this, FUNC(vamphalf_state::finalgdr_eeprom_w));
+ map(0x4040, 0x4043).w(this, FUNC(vamphalf_state::finalgdr_prot_w));
+ map(0x4084, 0x4087).nopw(); //?
+ map(0x40a0, 0x40a3).w(this, FUNC(vamphalf_state::finalgdr_oki_bank_w));
+ map(0x6400, 0x6403).r(this, FUNC(vamphalf_state::finalgdr_prot_r));
+ map(0x7000, 0x7007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
+ map(0x7402, 0x7402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x7800, 0x7803).portr("P1_P2");
+ map(0x7c00, 0x7c03).portr("SYSTEM");
+}
+
+
+
+void vamphalf_state::jmpbreak_io(address_map &map)
+{
+ map(0x0c0, 0x0c3).noprw(); // ?
+ map(0x100, 0x103).nopw(); // ?
+ map(0x240, 0x243).portr("P1_P2");
+ map(0x280, 0x283).w(this, FUNC(vamphalf_state::eeprom_w));
+ map(0x2c0, 0x2c3).r(this, FUNC(vamphalf_state::eeprom_r));
+ map(0x440, 0x441).noprw(); // return 0, when oki chip is read / written
+ map(0x443, 0x443).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x540, 0x543).portr("SYSTEM");
+ map(0x680, 0x683).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
+ map(0x684, 0x687).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
+}
+
+void vamphalf_state::mrdig_io(address_map &map)
+{
+ map(0x500, 0x503).portr("P1_P2");
+ map(0x3c0, 0x3c3).w(this, FUNC(vamphalf_state::eeprom_w));
+ map(0x180, 0x183).r(this, FUNC(vamphalf_state::eeprom_r));
+ map(0x080, 0x081).noprw(); // return 0, when oki chip is read / written
+ map(0x083, 0x083).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x280, 0x283).portr("SYSTEM");
+ map(0x0c0, 0x0c3).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff);
+ map(0x0c4, 0x0c7).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff);
+}
+
+void vamphalf_state::aoh_map(address_map &map)
+{
+ map(0x00000000, 0x003fffff).ram().share("wram32");
+ map(0x40000000, 0x4003ffff).ram().share("tiles32");
+ map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
+ map(0x80210000, 0x80210003).portr("SYSTEM");
+ map(0x80220000, 0x80220003).portr("P1_P2");
+ map(0xffc00000, 0xffffffff).rom().region("maincpu", 0);
+}
+
+void vamphalf_state::aoh_io(address_map &map)
+{
+ map(0x0480, 0x0483).w(this, FUNC(vamphalf_state::eeprom32_w));
+ map(0x0622, 0x0622).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0662, 0x0662).rw("oki_1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x0640, 0x0647).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00);
+ map(0x0680, 0x0683).w(this, FUNC(vamphalf_state::aoh_oki_bank_w));
+}
+
+void vamphalf_state::boonggab_io(address_map &map)
+{
+ map(0x0c0, 0x0c3).r(this, FUNC(vamphalf_state::eeprom_r));
+ map(0x200, 0x203).noprw(); // seems unused
+ map(0x300, 0x303).w(this, FUNC(vamphalf_state::flipscreen_w));
+ map(0x400, 0x403).portr("SYSTEM");
+ map(0x404, 0x407).portr("P1_P2");
+ map(0x408, 0x40b).w(this, FUNC(vamphalf_state::eeprom_w));
+ map(0x410, 0x413).w(this, FUNC(vamphalf_state::boonggab_prize_w));
+ map(0x414, 0x41b).w(this, FUNC(vamphalf_state::boonggab_lamps_w));
+ map(0x600, 0x603).w(this, FUNC(vamphalf_state::boonggab_oki_bank_w));
+ map(0x700, 0x701).noprw(); // return 0, when oki chip is read / written
+ map(0x702, 0x703).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask32(0x000000ff);
+ map(0x743, 0x743).w("ymsnd", FUNC(ym2151_device::register_w));
+ map(0x747, 0x747).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w));
+}
+
+void vamphalf_state::yorijori_io(address_map &map)
+{
+}
+
+void vamphalf_state::banked_oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
/*
Sprite list:
diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp
index 9671a913645..37c9cbd00fd 100644
--- a/src/mame/drivers/vaportra.cpp
+++ b/src/mame/drivers/vaportra.cpp
@@ -20,7 +20,6 @@
#include "includes/vaportra.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/h6280/h6280.h"
#include "sound/2203intf.h"
#include "sound/ym2151.h"
#include "sound/okim6295.h"
@@ -44,41 +43,43 @@ WRITE8_MEMBER(vaportra_state::irq6_ack_w)
/******************************************************************************/
-ADDRESS_MAP_START(vaportra_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("PLAYERS")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("COINS")
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
- AM_RANGE(0x100000, 0x100003) AM_WRITE(vaportra_priority_w)
- AM_RANGE(0x100006, 0x100007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w)
- AM_RANGE(0x280000, 0x281fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w)
- AM_RANGE(0x282000, 0x283fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w)
- AM_RANGE(0x2c0000, 0x2c000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
- AM_RANGE(0x300000, 0x3009ff) AM_RAM_WRITE(vaportra_palette_24bit_rg_w) AM_SHARE("paletteram")
- AM_RANGE(0x304000, 0x3049ff) AM_RAM_WRITE(vaportra_palette_24bit_b_w) AM_SHARE("paletteram2")
- AM_RANGE(0x308000, 0x308001) AM_READWRITE8(irq6_ack_r, irq6_ack_w, 0x00ff)
- AM_RANGE(0x30c000, 0x30c001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
- AM_RANGE(0x318000, 0x3187ff) AM_MIRROR(0xce0000) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xffc000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void vaportra_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100001).portr("PLAYERS");
+ map(0x100002, 0x100003).portr("COINS");
+ map(0x100004, 0x100005).portr("DSW");
+ map(0x100000, 0x100003).w(this, FUNC(vaportra_state::vaportra_priority_w));
+ map(0x100007, 0x100007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x200000, 0x201fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x202000, 0x203fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x240000, 0x24000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w));
+ map(0x280000, 0x281fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w));
+ map(0x282000, 0x283fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w));
+ map(0x2c0000, 0x2c000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w));
+ map(0x300000, 0x3009ff).ram().w(this, FUNC(vaportra_state::vaportra_palette_24bit_rg_w)).share("paletteram");
+ map(0x304000, 0x3049ff).ram().w(this, FUNC(vaportra_state::vaportra_palette_24bit_b_w)).share("paletteram2");
+ map(0x308001, 0x308001).rw(this, FUNC(vaportra_state::irq6_ack_r), FUNC(vaportra_state::irq6_ack_w));
+ map(0x30c000, 0x30c001).w(m_spriteram, FUNC(buffered_spriteram16_device::write));
+ map(0x318000, 0x3187ff).mirror(0xce0000).ram().share("spriteram");
+ map(0xffc000, 0xffffff).ram();
+}
/******************************************************************************/
-ADDRESS_MAP_START(vaportra_state::sound_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
- AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
- AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
- AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* ??? LOOKUP ??? */
- AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
- AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
-ADDRESS_MAP_END
+void vaportra_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x1f0000, 0x1f1fff).bankrw("bank8"); /* ??? LOOKUP ??? */
+ map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w));
+ map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w));
+}
/******************************************************************************/
diff --git a/src/mame/drivers/vastar.cpp b/src/mame/drivers/vastar.cpp
index fcffdf37afa..33908279968 100644
--- a/src/mame/drivers/vastar.cpp
+++ b/src/mame/drivers/vastar.cpp
@@ -140,35 +140,39 @@ WRITE_LINE_MEMBER(vastar_state::nmi_mask_w)
}
-ADDRESS_MAP_START(vastar_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram") AM_MIRROR(0x2000)
- AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") AM_MIRROR(0x2000)
- AM_RANGE(0xc000, 0xc000) AM_WRITEONLY AM_SHARE("sprite_priority") /* sprite/BG priority */
- AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") // fg videoram + sprites
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vastar_state::main_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(vastar_state::cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P2")
- AM_RANGE(0x8040, 0x8040) AM_READ_PORT("P1")
- AM_RANGE(0x8080, 0x8080) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vastar_state::cpu2_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
+void vastar_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram().w(this, FUNC(vastar_state::bg2videoram_w)).share("bg2videoram").mirror(0x2000);
+ map(0x9000, 0x9fff).ram().w(this, FUNC(vastar_state::bg1videoram_w)).share("bg1videoram").mirror(0x2000);
+ map(0xc000, 0xc000).writeonly().share("sprite_priority"); /* sprite/BG priority */
+ map(0xc400, 0xcfff).ram().w(this, FUNC(vastar_state::fgvideoram_w)).share("fgvideoram"); // fg videoram + sprites
+ map(0xe000, 0xe000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w));
+ map(0xf000, 0xf7ff).ram().share("sharedram");
+}
+
+void vastar_state::main_port_map(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+
+void vastar_state::cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram().share("sharedram");
+ map(0x8000, 0x8000).portr("P2");
+ map(0x8040, 0x8040).portr("P1");
+ map(0x8080, 0x8080).portr("SYSTEM");
+}
+
+void vastar_state::cpu2_port_map(address_map &map)
+{
+ map.global_mask(0x0f);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r));
+}
static INPUT_PORTS_START( vastar )
diff --git a/src/mame/drivers/vax11.cpp b/src/mame/drivers/vax11.cpp
index af30b8493d5..97003bf6f81 100644
--- a/src/mame/drivers/vax11.cpp
+++ b/src/mame/drivers/vax11.cpp
@@ -116,18 +116,19 @@ READ16_MEMBER(vax11_state::term_rx_status_r)
return m_term_status;
}
-ADDRESS_MAP_START(vax11_state::vax11_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xbfff ) AM_RAM // RAM
- AM_RANGE( 0xc000, 0xd7ff ) AM_ROM
-
- AM_RANGE( 0xfe78, 0xfe7b ) AM_DEVREADWRITE("rx01", rx01_device, read, write)
-
- AM_RANGE( 0xff70, 0xff71 ) AM_READ(term_rx_status_r)
- AM_RANGE( 0xff72, 0xff73 ) AM_READ(term_r)
- AM_RANGE( 0xff74, 0xff75 ) AM_READ(term_tx_status_r)
- AM_RANGE( 0xff76, 0xff77 ) AM_WRITE(term_w)
-ADDRESS_MAP_END
+void vax11_state::vax11_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xbfff).ram(); // RAM
+ map(0xc000, 0xd7ff).rom();
+
+ map(0xfe78, 0xfe7b).rw("rx01", FUNC(rx01_device::read), FUNC(rx01_device::write));
+
+ map(0xff70, 0xff71).r(this, FUNC(vax11_state::term_rx_status_r));
+ map(0xff72, 0xff73).r(this, FUNC(vax11_state::term_r));
+ map(0xff74, 0xff75).r(this, FUNC(vax11_state::term_tx_status_r));
+ map(0xff76, 0xff77).w(this, FUNC(vax11_state::term_w));
+}
/* Input ports */
static INPUT_PORTS_START( vax11 )
diff --git a/src/mame/drivers/vball.cpp b/src/mame/drivers/vball.cpp
index 38abc99d6aa..16c24551058 100644
--- a/src/mame/drivers/vball.cpp
+++ b/src/mame/drivers/vball.cpp
@@ -197,35 +197,37 @@ WRITE8_MEMBER(vball_state::scrollx_lo_w)
//Cheaters note: Scores are stored in ram @ 0x57-0x58 (though the space is used for other things between matches)
-ADDRESS_MAP_START(vball_state::main_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x0800, 0x08ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1")
- AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2")
- AM_RANGE(0x1002, 0x1002) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW1")
- AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2")
- AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3")
- AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4")
- AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w)
- AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w)
- AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w) /* is there a scanline counter here? */
- AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w)
- AM_RANGE(0x100d, 0x100d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo")
- AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vball_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void vball_state::main_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x0800, 0x08ff).ram().share("spriteram");
+ map(0x1000, 0x1000).portr("P1");
+ map(0x1001, 0x1001).portr("P2");
+ map(0x1002, 0x1002).portr("SYSTEM");
+ map(0x1003, 0x1003).portr("DSW1");
+ map(0x1004, 0x1004).portr("DSW2");
+ map(0x1005, 0x1005).portr("P3");
+ map(0x1006, 0x1006).portr("P4");
+ map(0x1008, 0x1008).w(this, FUNC(vball_state::scrollx_hi_w));
+ map(0x1009, 0x1009).w(this, FUNC(vball_state::bankswitch_w));
+ map(0x100a, 0x100b).w(this, FUNC(vball_state::irq_ack_w)); /* is there a scanline counter here? */
+ map(0x100c, 0x100c).w(this, FUNC(vball_state::scrollx_lo_w));
+ map(0x100d, 0x100d).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x100e, 0x100e).writeonly().share("scrolly_lo");
+ map(0x2000, 0x2fff).w(this, FUNC(vball_state::videoram_w)).share("videoram");
+ map(0x3000, 0x3fff).w(this, FUNC(vball_state::attrib_w)).share("attribram");
+ map(0x4000, 0x7fff).bankr("mainbank");
+ map(0x8000, 0xffff).rom();
+}
+
+void vball_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9803).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( vball )
diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp
index 0161a248069..2db0706d211 100644
--- a/src/mame/drivers/vboy.cpp
+++ b/src/mame/drivers/vboy.cpp
@@ -1094,63 +1094,65 @@ WRITE8_MEMBER( vboy_state::rfb0_w ) { m_r_frame_0[offset] = data; }
WRITE8_MEMBER( vboy_state::rfb1_w ) { m_r_frame_1[offset] = data; }
-ADDRESS_MAP_START(vboy_state::vboy_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x07ffffff)
- AM_RANGE( 0x00000000, 0x00005fff ) AM_READWRITE8(lfb0_r, lfb0_w,0xffffffff) // L frame buffer 0
- AM_RANGE( 0x00006000, 0x00007fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511
- AM_RANGE( 0x00008000, 0x0000dfff ) AM_READWRITE8(lfb1_r, lfb1_w,0xffffffff) // L frame buffer 1
- AM_RANGE( 0x0000e000, 0x0000ffff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023
- AM_RANGE( 0x00010000, 0x00015fff ) AM_READWRITE8(rfb0_r, rfb0_w,0xffffffff) // R frame buffer 0
- AM_RANGE( 0x00016000, 0x00017fff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535
- AM_RANGE( 0x00018000, 0x0001dfff ) AM_READWRITE8(rfb1_r, rfb1_w,0xffffffff) // R frame buffer 1
- AM_RANGE( 0x0001e000, 0x0001ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047
-
- AM_RANGE( 0x00020000, 0x0003ffff ) AM_READWRITE16(vboy_bgmap_r,vboy_bgmap_w, 0xffffffff) // VIPC memory
+void vboy_state::vboy_mem(address_map &map)
+{
+ map.global_mask(0x07ffffff);
+ map(0x00000000, 0x00005fff).rw(this, FUNC(vboy_state::lfb0_r), FUNC(vboy_state::lfb0_w)); // L frame buffer 0
+ map(0x00006000, 0x00007fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511
+ map(0x00008000, 0x0000dfff).rw(this, FUNC(vboy_state::lfb1_r), FUNC(vboy_state::lfb1_w)); // L frame buffer 1
+ map(0x0000e000, 0x0000ffff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023
+ map(0x00010000, 0x00015fff).rw(this, FUNC(vboy_state::rfb0_r), FUNC(vboy_state::rfb0_w)); // R frame buffer 0
+ map(0x00016000, 0x00017fff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535
+ map(0x00018000, 0x0001dfff).rw(this, FUNC(vboy_state::rfb1_r), FUNC(vboy_state::rfb1_w)); // R frame buffer 1
+ map(0x0001e000, 0x0001ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047
+
+ map(0x00020000, 0x0003ffff).rw(this, FUNC(vboy_state::vboy_bgmap_r), FUNC(vboy_state::vboy_bgmap_w)); // VIPC memory
//AM_RANGE( 0x00040000, 0x0005ffff ) AM_RAM // VIPC
- AM_RANGE( 0x0005f800, 0x0005f87f ) AM_READWRITE16(vip_r, vip_w, 0xffffffff)
+ map(0x0005f800, 0x0005f87f).rw(this, FUNC(vboy_state::vip_r), FUNC(vboy_state::vip_w));
- AM_RANGE( 0x00078000, 0x00079fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511 mirror
- AM_RANGE( 0x0007a000, 0x0007bfff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023 mirror
- AM_RANGE( 0x0007c000, 0x0007dfff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535 mirror
- AM_RANGE( 0x0007e000, 0x0007ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047 mirror
+ map(0x00078000, 0x00079fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511 mirror
+ map(0x0007a000, 0x0007bfff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023 mirror
+ map(0x0007c000, 0x0007dfff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535 mirror
+ map(0x0007e000, 0x0007ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047 mirror
- AM_RANGE( 0x01000000, 0x010005ff ) AM_DEVREADWRITE8("vbsnd", vboysnd_device, read, write, 0xffffffff)
- AM_RANGE( 0x02000000, 0x0200002b ) AM_MIRROR(0x0ffff00) AM_READWRITE(io_r, io_w) // Hardware control registers mask 0xff
+ map(0x01000000, 0x010005ff).rw("vbsnd", FUNC(vboysnd_device::read), FUNC(vboysnd_device::write));
+ map(0x02000000, 0x0200002b).mirror(0x0ffff00).rw(this, FUNC(vboy_state::io_r), FUNC(vboy_state::io_w)); // Hardware control registers mask 0xff
//AM_RANGE( 0x04000000, 0x04ffffff ) // Expansion area
- AM_RANGE( 0x05000000, 0x0500ffff ) AM_MIRROR(0x0ff0000) AM_RAM AM_SHARE("wram")// Main RAM - 64K mask 0xffff
- AM_RANGE( 0x06000000, 0x06003fff ) AM_DEVREADWRITE("cartslot", vboy_cart_slot_device, read_eeprom, write_eeprom) // Cart RAM - 8K NVRAM
+ map(0x05000000, 0x0500ffff).mirror(0x0ff0000).ram().share("wram");// Main RAM - 64K mask 0xffff
+ map(0x06000000, 0x06003fff).rw(m_cart, FUNC(vboy_cart_slot_device::read_eeprom), FUNC(vboy_cart_slot_device::write_eeprom)); // Cart RAM - 8K NVRAM
// AM_RANGE( 0x07000000, 0x071fffff ) AM_MIRROR(0x0e00000) AM_DEVREAD("cartslot", vboy_cart_slot_device, read_cart) /* ROM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vboy_state::vboy_io)
- ADDRESS_MAP_GLOBAL_MASK(0x07ffffff)
- AM_RANGE( 0x00000000, 0x00005fff ) AM_RAM AM_SHARE("l_frame_0") // L frame buffer 0
- AM_RANGE( 0x00006000, 0x00007fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511
- AM_RANGE( 0x00008000, 0x0000dfff ) AM_RAM AM_SHARE("l_frame_1") // L frame buffer 1
- AM_RANGE( 0x0000e000, 0x0000ffff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023
- AM_RANGE( 0x00010000, 0x00015fff ) AM_RAM AM_SHARE("r_frame_0") // R frame buffer 0
- AM_RANGE( 0x00016000, 0x00017fff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535
- AM_RANGE( 0x00018000, 0x0001dfff ) AM_RAM AM_SHARE("r_frame_1") // R frame buffer 1
- AM_RANGE( 0x0001e000, 0x0001ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047
+}
- AM_RANGE( 0x00020000, 0x0003ffff ) AM_READWRITE16(vboy_bgmap_r,vboy_bgmap_w, 0xffffffff) // VIPC memory
+void vboy_state::vboy_io(address_map &map)
+{
+ map.global_mask(0x07ffffff);
+ map(0x00000000, 0x00005fff).ram().share("l_frame_0"); // L frame buffer 0
+ map(0x00006000, 0x00007fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511
+ map(0x00008000, 0x0000dfff).ram().share("l_frame_1"); // L frame buffer 1
+ map(0x0000e000, 0x0000ffff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023
+ map(0x00010000, 0x00015fff).ram().share("r_frame_0"); // R frame buffer 0
+ map(0x00016000, 0x00017fff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535
+ map(0x00018000, 0x0001dfff).ram().share("r_frame_1"); // R frame buffer 1
+ map(0x0001e000, 0x0001ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047
+
+ map(0x00020000, 0x0003ffff).rw(this, FUNC(vboy_state::vboy_bgmap_r), FUNC(vboy_state::vboy_bgmap_w)); // VIPC memory
//AM_RANGE( 0x00040000, 0x0005ffff ) AM_RAM // VIPC
- AM_RANGE( 0x0005f800, 0x0005f87f ) AM_READWRITE16(vip_r, vip_w, 0xffffffff)
+ map(0x0005f800, 0x0005f87f).rw(this, FUNC(vboy_state::vip_r), FUNC(vboy_state::vip_w));
- AM_RANGE( 0x00078000, 0x00079fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511 mirror
- AM_RANGE( 0x0007a000, 0x0007bfff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023 mirror
- AM_RANGE( 0x0007c000, 0x0007dfff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535 mirror
- AM_RANGE( 0x0007e000, 0x0007ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047 mirror
+ map(0x00078000, 0x00079fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511 mirror
+ map(0x0007a000, 0x0007bfff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023 mirror
+ map(0x0007c000, 0x0007dfff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535 mirror
+ map(0x0007e000, 0x0007ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047 mirror
- AM_RANGE( 0x01000000, 0x010005ff ) AM_DEVREADWRITE8("vbsnd", vboysnd_device, read, write, 0xffffffff)
- AM_RANGE( 0x02000000, 0x0200002b ) AM_MIRROR(0x0ffff00) AM_READWRITE(io_r, io_w) // Hardware control registers mask 0xff
+ map(0x01000000, 0x010005ff).rw("vbsnd", FUNC(vboysnd_device::read), FUNC(vboysnd_device::write));
+ map(0x02000000, 0x0200002b).mirror(0x0ffff00).rw(this, FUNC(vboy_state::io_r), FUNC(vboy_state::io_w)); // Hardware control registers mask 0xff
// AM_RANGE( 0x04000000, 0x04ffffff ) // Expansion area
- AM_RANGE( 0x05000000, 0x0500ffff ) AM_MIRROR(0x0ff0000) AM_RAM AM_SHARE("wram") // Main RAM - 64K mask 0xffff
- AM_RANGE( 0x06000000, 0x06003fff ) AM_NOP // Cart RAM - 8K NVRAM ?
+ map(0x05000000, 0x0500ffff).mirror(0x0ff0000).ram().share("wram"); // Main RAM - 64K mask 0xffff
+ map(0x06000000, 0x06003fff).noprw(); // Cart RAM - 8K NVRAM ?
// AM_RANGE( 0x07000000, 0x071fffff ) AM_MIRROR(0x0e00000) AM_DEVREAD("cartslot", vboy_cart_slot_device, read_cart) /* ROM */
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( vboy )
diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp
index 09703716919..11fdaaaec9b 100644
--- a/src/mame/drivers/vc4000.cpp
+++ b/src/mame/drivers/vc4000.cpp
@@ -184,23 +184,25 @@ READ8_MEMBER( vc4000_state::elektor_cass_r )
return (m_cassette->input() > 0.03) ? 0xff : 0x7f;
}
-ADDRESS_MAP_START(vc4000_state::vc4000_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x1680, 0x16ff) AM_READWRITE(vc4000_key_r, vc4000_sound_ctl) AM_MIRROR(0x0800)
- AM_RANGE(0x1700, 0x17ff) AM_READWRITE(vc4000_video_r, vc4000_video_w) AM_MIRROR(0x0800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vc4000_state::elektor_mem)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x15ff) AM_RAM
- AM_RANGE(0x1980, 0x19ff) AM_MIRROR(0x400) AM_READWRITE(elektor_cass_r,elektor_cass_w)
- AM_RANGE(0x1680, 0x168f) AM_MIRROR(0x800) AM_READWRITE(vc4000_key_r,vc4000_sound_ctl)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x800) AM_READWRITE(vc4000_video_r, vc4000_video_w)
-ADDRESS_MAP_END
+void vc4000_state::vc4000_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fff);
+ map(0x0000, 0x07ff).rom();
+ map(0x1680, 0x16ff).rw(this, FUNC(vc4000_state::vc4000_key_r), FUNC(vc4000_state::vc4000_sound_ctl)).mirror(0x0800);
+ map(0x1700, 0x17ff).rw(this, FUNC(vc4000_state::vc4000_video_r), FUNC(vc4000_state::vc4000_video_w)).mirror(0x0800);
+}
+
+void vc4000_state::elektor_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x1fff);
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x15ff).ram();
+ map(0x1980, 0x19ff).mirror(0x400).rw(this, FUNC(vc4000_state::elektor_cass_r), FUNC(vc4000_state::elektor_cass_w));
+ map(0x1680, 0x168f).mirror(0x800).rw(this, FUNC(vc4000_state::vc4000_key_r), FUNC(vc4000_state::vc4000_sound_ctl));
+ map(0x1700, 0x17ff).mirror(0x800).rw(this, FUNC(vc4000_state::vc4000_video_r), FUNC(vc4000_state::vc4000_video_w));
+}
static INPUT_PORTS_START( vc4000 )
PORT_START("PANEL")
diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp
index f9a1432d416..12663eb6fe5 100644
--- a/src/mame/drivers/vcombat.cpp
+++ b/src/mame/drivers/vcombat.cpp
@@ -355,72 +355,76 @@ WRITE16_MEMBER(vcombat_state::vcombat_dac_w)
fprintf(stderr, "dac overflow %04x\n", data & 0x801f);
}
-ADDRESS_MAP_START(vcombat_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x30ffff) AM_WRITE(main_video_write)
-
- AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("vid_0_ram") /* First i860 shared RAM */
- AM_RANGE(0x440000, 0x440003) AM_RAM AM_SHARE("share6") /* M0->P0 i860 #1 com 1 */
- AM_RANGE(0x480000, 0x480003) AM_RAM AM_SHARE("share7") /* M0<-P0 i860 #1 com 2 */
- AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE(wiggle_i860p0_pins_w) /* i860 #1 stop/start/reset */
-
- AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("vid_1_ram") /* Second i860 shared RAM */
- AM_RANGE(0x540000, 0x540003) AM_RAM AM_SHARE("share8") /* M0->P1 i860 #2 com 1 */
- AM_RANGE(0x580000, 0x580003) AM_RAM AM_SHARE("share9") /* M0<-P1 i860 #2 com 2 */
- AM_RANGE(0x5c0000, 0x5c0003) AM_WRITE(wiggle_i860p1_pins_w) /* i860 #2 stop/start/reset */
-
- AM_RANGE(0x600000, 0x600001) AM_READ(control_1_r) /* IN0 port */
- AM_RANGE(0x600004, 0x600005) AM_RAM AM_SHARE("share5") /* M0<-M1 */
- AM_RANGE(0x600008, 0x600009) AM_READ(control_2_r) /* IN1 port */
- AM_RANGE(0x60001c, 0x60001d) AM_NOP
-
- AM_RANGE(0x60000c, 0x60000d) AM_WRITE(crtc_w)
- AM_RANGE(0x600010, 0x600011) AM_RAM AM_SHARE("fb_control")
- AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x701000, 0x701001) AM_READ(main_irqiack_r)
- AM_RANGE(0x702000, 0x702001) AM_READ(control_3_r)
- AM_RANGE(0x705000, 0x705001) AM_RAM AM_SHARE("share4") /* M1->M0 */
+void vcombat_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x30ffff).w(this, FUNC(vcombat_state::main_video_write));
+
+ map(0x400000, 0x43ffff).ram().share("vid_0_ram"); /* First i860 shared RAM */
+ map(0x440000, 0x440003).ram().share("share6"); /* M0->P0 i860 #1 com 1 */
+ map(0x480000, 0x480003).ram().share("share7"); /* M0<-P0 i860 #1 com 2 */
+ map(0x4c0000, 0x4c0003).w(this, FUNC(vcombat_state::wiggle_i860p0_pins_w)); /* i860 #1 stop/start/reset */
+
+ map(0x500000, 0x53ffff).ram().share("vid_1_ram"); /* Second i860 shared RAM */
+ map(0x540000, 0x540003).ram().share("share8"); /* M0->P1 i860 #2 com 1 */
+ map(0x580000, 0x580003).ram().share("share9"); /* M0<-P1 i860 #2 com 2 */
+ map(0x5c0000, 0x5c0003).w(this, FUNC(vcombat_state::wiggle_i860p1_pins_w)); /* i860 #2 stop/start/reset */
+
+ map(0x600000, 0x600001).r(this, FUNC(vcombat_state::control_1_r)); /* IN0 port */
+ map(0x600004, 0x600005).ram().share("share5"); /* M0<-M1 */
+ map(0x600008, 0x600009).r(this, FUNC(vcombat_state::control_2_r)); /* IN1 port */
+ map(0x60001c, 0x60001d).noprw();
+
+ map(0x60000c, 0x60000d).w(this, FUNC(vcombat_state::crtc_w));
+ map(0x600010, 0x600011).ram().share("fb_control");
+ map(0x700000, 0x7007ff).ram().share("nvram");
+ map(0x701000, 0x701001).r(this, FUNC(vcombat_state::main_irqiack_r));
+ map(0x702000, 0x702001).r(this, FUNC(vcombat_state::control_3_r));
+ map(0x705000, 0x705001).ram().share("share4"); /* M1->M0 */
//AM_RANGE(0x703000, 0x703001) /* Headset rotation axis? */
//AM_RANGE(0x704000, 0x704001) /* Headset rotation axis? */
- AM_RANGE(0x706000, 0x70601f) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0x706000, 0x70601f).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+}
/* The first i860 - middle board */
-ADDRESS_MAP_START(vcombat_state::vid_0_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v0_fb_w) /* Shared framebuffer - half of the bits lost to 32-bit bus */
- AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share6") /* M0<-P0 com 1 (0x440000 in 68k-land) */
- AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share7") /* M0->P0 com 2 (0x480000 in 68k-land) */
- AM_RANGE(0xc0000000, 0xc0000fff) AM_NOP /* Dummy D$ flush page. */
- AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE("vid_0_ram") /* Shared RAM with main */
-ADDRESS_MAP_END
+void vcombat_state::vid_0_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().w(this, FUNC(vcombat_state::v0_fb_w)); /* Shared framebuffer - half of the bits lost to 32-bit bus */
+ map(0x20000000, 0x20000007).ram().share("share6"); /* M0<-P0 com 1 (0x440000 in 68k-land) */
+ map(0x40000000, 0x401fffff).rom().region("gfx", 0);
+ map(0x80000000, 0x80000007).ram().share("share7"); /* M0->P0 com 2 (0x480000 in 68k-land) */
+ map(0xc0000000, 0xc0000fff).noprw(); /* Dummy D$ flush page. */
+ map(0xfffc0000, 0xffffffff).ram().share("vid_0_ram"); /* Shared RAM with main */
+}
/* The second i860 - top board */
-ADDRESS_MAP_START(vcombat_state::vid_1_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v1_fb_w) /* Half of the bits lost to 32-bit bus */
- AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share8") /* M0->P1 com 1 (0x540000 in 68k-land) */
- AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share9") /* M0<-P1 com 2 (0x580000 in 68k-land) */
- AM_RANGE(0xc0000000, 0xc0000fff) AM_NOP /* Dummy D$ flush page. */
- AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE("vid_1_ram") /* Shared RAM with main */
-ADDRESS_MAP_END
+void vcombat_state::vid_1_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().w(this, FUNC(vcombat_state::v1_fb_w)); /* Half of the bits lost to 32-bit bus */
+ map(0x20000000, 0x20000007).ram().share("share8"); /* M0->P1 com 1 (0x540000 in 68k-land) */
+ map(0x40000000, 0x401fffff).rom().region("gfx", 0);
+ map(0x80000000, 0x80000007).ram().share("share9"); /* M0<-P1 com 2 (0x580000 in 68k-land) */
+ map(0xc0000000, 0xc0000fff).noprw(); /* Dummy D$ flush page. */
+ map(0xfffc0000, 0xffffffff).ram().share("vid_1_ram"); /* Shared RAM with main */
+}
/* Sound CPU */
-ADDRESS_MAP_START(vcombat_state::sound_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(vcombat_dac_w)
- AM_RANGE(0x140000, 0x140001) AM_READ(sound_resetmain_r) /* Ping M0's reset line */
- AM_RANGE(0x180000, 0x180001) AM_RAM AM_SHARE("share4") /* M1<-M0 */
- AM_RANGE(0x1c0000, 0x1c0001) AM_RAM AM_SHARE("share5") /* M1->M0 */
- AM_RANGE(0x200000, 0x37ffff) AM_ROM AM_REGION("samples", 0)
-ADDRESS_MAP_END
+void vcombat_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x08ffff).ram();
+ map(0x0c0000, 0x0c0001).w(this, FUNC(vcombat_state::vcombat_dac_w));
+ map(0x140000, 0x140001).r(this, FUNC(vcombat_state::sound_resetmain_r)); /* Ping M0's reset line */
+ map(0x180000, 0x180001).ram().share("share4"); /* M1<-M0 */
+ map(0x1c0000, 0x1c0001).ram().share("share5"); /* M1->M0 */
+ map(0x200000, 0x37ffff).rom().region("samples", 0);
+}
MACHINE_RESET_MEMBER(vcombat_state,vcombat)
diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp
index 6a7e27515e6..30f0afe2c5b 100644
--- a/src/mame/drivers/vcs80.cpp
+++ b/src/mame/drivers/vcs80.cpp
@@ -65,19 +65,22 @@ WRITE8_MEMBER( vcs80_state::pio_w )
/* Memory Maps */
-ADDRESS_MAP_START(vcs80_state::vcs80_bd_mem)
- AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION(Z80_TAG, 0)
- AM_RANGE(0x0400, 0x07ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vcs80_state::vcs80_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vcs80_state::vcs80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void vcs80_state::vcs80_bd_mem(address_map &map)
+{
+ map(0x0000, 0x01ff).rom().region(Z80_TAG, 0);
+ map(0x0400, 0x07ff).ram();
+}
+
+void vcs80_state::vcs80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(vcs80_state::mem_r), FUNC(vcs80_state::mem_w));
+}
+
+void vcs80_state::vcs80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(vcs80_state::io_r), FUNC(vcs80_state::io_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/vd.cpp b/src/mame/drivers/vd.cpp
index 14e2e81edb3..587934dfed5 100644
--- a/src/mame/drivers/vd.cpp
+++ b/src/mame/drivers/vd.cpp
@@ -61,32 +61,34 @@ READ8_MEMBER(vd_state::ack_r)
return 0; // this value is not used
}
-ADDRESS_MAP_START(vd_state::vd_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x62ff) AM_RAM
- AM_RANGE(0x6700, 0x67ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vd_state::vd_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("X0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("X1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("X2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("X3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("X4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("X5")
- AM_RANGE(0x20, 0x27) AM_WRITE(lamp_w)
- AM_RANGE(0x28, 0x28) AM_WRITE(sol_w)
- AM_RANGE(0x40, 0x44) AM_WRITE(disp_w)
- AM_RANGE(0x60, 0x60) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0x61, 0x61) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x62, 0x62) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0x81, 0x81) AM_DEVREAD("ay2", ay8910_device, data_r) // probably never read
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("ay2", ay8910_device, data_w)
- AM_RANGE(0xa0, 0xa0) AM_READ(ack_r)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(col_w)
-ADDRESS_MAP_END
+void vd_state::vd_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x62ff).ram();
+ map(0x6700, 0x67ff).ram();
+}
+
+void vd_state::vd_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("X0");
+ map(0x01, 0x01).portr("X1");
+ map(0x02, 0x02).portr("X2");
+ map(0x03, 0x03).portr("X3");
+ map(0x04, 0x04).portr("X4");
+ map(0x05, 0x05).portr("X5");
+ map(0x20, 0x27).w(this, FUNC(vd_state::lamp_w));
+ map(0x28, 0x28).w(this, FUNC(vd_state::sol_w));
+ map(0x40, 0x44).w(this, FUNC(vd_state::disp_w));
+ map(0x60, 0x60).w("ay1", FUNC(ay8910_device::address_w));
+ map(0x61, 0x61).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x62, 0x62).w("ay1", FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w("ay2", FUNC(ay8910_device::address_w));
+ map(0x81, 0x81).r("ay2", FUNC(ay8910_device::data_r)); // probably never read
+ map(0x82, 0x82).w("ay2", FUNC(ay8910_device::data_w));
+ map(0xa0, 0xa0).r(this, FUNC(vd_state::ack_r));
+ map(0xc0, 0xc0).w(this, FUNC(vd_state::col_w));
+}
static INPUT_PORTS_START( break86 )
PORT_START("DSW1") // "Micro Swicher Nº 1"
diff --git a/src/mame/drivers/vector06.cpp b/src/mame/drivers/vector06.cpp
index 99dcfc48e63..40d9c779a20 100644
--- a/src/mame/drivers/vector06.cpp
+++ b/src/mame/drivers/vector06.cpp
@@ -33,28 +33,30 @@ TODO:
#include "speaker.h"
/* Address maps */
-ADDRESS_MAP_START(vector06_state::vector06_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE_BANK("bank1")
- AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank2")
- AM_RANGE(0xa000, 0xdfff) AM_READWRITE_BANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vector06_state::vector06_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
+void vector06_state::vector06_mem(address_map &map)
+{
+ map(0x0000, 0xffff).bankrw("bank1");
+ map(0x0000, 0x7fff).bankr("bank2");
+ map(0xa000, 0xdfff).bankrw("bank3");
+}
+
+void vector06_state::vector06_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
;
map(0x00, 0x03).lrw8("ppi8255_rw", [this](address_space &space, offs_t offset, u8 mem_mask) -> u8 { return m_ppi8255->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ppi8255->write(space, offset^3, data, mem_mask); });
map(0x04, 0x07).lrw8("ppi8255_2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) -> u8 { return m_ppi8255_2->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ppi8255_2->write(space, offset^3, data, mem_mask); });
map(0x08, 0x0b).lrw8("pit8253_rw", [this](address_space &space, offs_t offset, u8 mem_mask) -> u8 { return m_pit8253->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pit8253->write(space, offset^3, data, mem_mask); });
- AM_RANGE(0x0c, 0x0c) AM_WRITE(vector06_color_set)
- AM_RANGE(0x10, 0x10) AM_WRITE(vector06_ramdisk_w)
- AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_address_w)
- AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("wd1793", kr1818vg93_device, data_r, data_w)
- AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("wd1793", kr1818vg93_device, sector_r, sector_w)
- AM_RANGE(0x1a, 0x1a) AM_DEVREADWRITE("wd1793", kr1818vg93_device, track_r, track_w)
- AM_RANGE(0x1b, 0x1b) AM_DEVREADWRITE("wd1793", kr1818vg93_device, status_r, cmd_w)
- AM_RANGE(0x1c, 0x1c) AM_WRITE(vector06_disc_w)
-ADDRESS_MAP_END
+ map(0x0c, 0x0c).w(this, FUNC(vector06_state::vector06_color_set));
+ map(0x10, 0x10).w(this, FUNC(vector06_state::vector06_ramdisk_w));
+ map(0x14, 0x15).rw(m_ay, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w));
+ map(0x18, 0x18).rw(m_fdc, FUNC(kr1818vg93_device::data_r), FUNC(kr1818vg93_device::data_w));
+ map(0x19, 0x19).rw(m_fdc, FUNC(kr1818vg93_device::sector_r), FUNC(kr1818vg93_device::sector_w));
+ map(0x1a, 0x1a).rw(m_fdc, FUNC(kr1818vg93_device::track_r), FUNC(kr1818vg93_device::track_w));
+ map(0x1b, 0x1b).rw(m_fdc, FUNC(kr1818vg93_device::status_r), FUNC(kr1818vg93_device::cmd_w));
+ map(0x1c, 0x1c).w(this, FUNC(vector06_state::vector06_disc_w));
+}
/* Input ports */
static INPUT_PORTS_START( vector06 )
diff --git a/src/mame/drivers/vector4.cpp b/src/mame/drivers/vector4.cpp
index 382458ae40d..ccbbefb563a 100644
--- a/src/mame/drivers/vector4.cpp
+++ b/src/mame/drivers/vector4.cpp
@@ -33,25 +33,27 @@ private:
};
-ADDRESS_MAP_START(vector4_state::vector4_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf8ff) AM_ROM
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vector4_state::vector4_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
- AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart3", i8251_device, data_r, data_w)
- AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart3", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void vector4_state::vector4_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xdfff).ram();
+ map(0xe000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf8ff).rom();
+ map(0xfc00, 0xffff).ram();
+}
+
+void vector4_state::vector4_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x02, 0x02).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x03, 0x03).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x04, 0x04).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x05, 0x05).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x06, 0x06).rw("uart3", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x07, 0x07).rw("uart3", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/* Input ports */
static INPUT_PORTS_START( vector4 )
diff --git a/src/mame/drivers/vectrex.cpp b/src/mame/drivers/vectrex.cpp
index 2da98c59f89..77c2d3f011f 100644
--- a/src/mame/drivers/vectrex.cpp
+++ b/src/mame/drivers/vectrex.cpp
@@ -24,12 +24,13 @@ Bruce Tomlin (hardware info)
#include "speaker.h"
-ADDRESS_MAP_START(vectrex_state::vectrex_map)
- AM_RANGE(0x0000, 0x7fff) AM_NOP // cart area, handled at machine_start
- AM_RANGE(0xc800, 0xcbff) AM_RAM AM_MIRROR(0x0400) AM_SHARE("gce_vectorram")
- AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vectrex_via_r, vectrex_via_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void vectrex_state::vectrex_map(address_map &map)
+{
+ map(0x0000, 0x7fff).noprw(); // cart area, handled at machine_start
+ map(0xc800, 0xcbff).ram().mirror(0x0400).share("gce_vectorram");
+ map(0xd000, 0xd7ff).rw(this, FUNC(vectrex_state::vectrex_via_r), FUNC(vectrex_state::vectrex_via_w));
+ map(0xe000, 0xffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START(vectrex)
PORT_START("CONTR1X")
@@ -193,14 +194,15 @@ ROM_END
*****************************************************************/
-ADDRESS_MAP_START(raaspec_state::raaspec_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(raaspec_led_w)
- AM_RANGE(0xc800, 0xcbff) AM_RAM AM_MIRROR(0x0400) AM_SHARE("gce_vectorram")
- AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vectrex_via_r, vectrex_via_w)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void raaspec_state::raaspec_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0xa000, 0xa000).w(this, FUNC(raaspec_state::raaspec_led_w));
+ map(0xc800, 0xcbff).ram().mirror(0x0400).share("gce_vectorram");
+ map(0xd000, 0xd7ff).rw(this, FUNC(raaspec_state::vectrex_via_r), FUNC(raaspec_state::vectrex_via_w));
+ map(0xe000, 0xffff).rom();
+}
static INPUT_PORTS_START(raaspec)
PORT_START("LPENCONF")
diff --git a/src/mame/drivers/vectrix.cpp b/src/mame/drivers/vectrix.cpp
index fc4fb33e93b..d3dc9bfc80c 100644
--- a/src/mame/drivers/vectrix.cpp
+++ b/src/mame/drivers/vectrix.cpp
@@ -33,16 +33,18 @@ private:
// required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(vectrix_state::mem_map)
- AM_RANGE(0x00000,0x07fff) AM_RAM
- AM_RANGE(0x0c000,0x0ffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("roms", 0)
-ADDRESS_MAP_END
+void vectrix_state::mem_map(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0x0c000, 0x0ffff).rom().region("roms", 0);
+ map(0xfc000, 0xfffff).rom().region("roms", 0);
+}
-ADDRESS_MAP_START(vectrix_state::io_map)
- AM_RANGE(0x3000, 0x3000) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x3001, 0x3001) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
-ADDRESS_MAP_END
+void vectrix_state::io_map(address_map &map)
+{
+ map(0x3000, 0x3000).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x3001, 0x3001).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
static INPUT_PORTS_START( vectrix )
INPUT_PORTS_END
diff --git a/src/mame/drivers/vega.cpp b/src/mame/drivers/vega.cpp
index 90662bcb5d3..7f2e0f6f0aa 100644
--- a/src/mame/drivers/vega.cpp
+++ b/src/mame/drivers/vega.cpp
@@ -388,14 +388,16 @@ WRITE8_MEMBER(vega_state::rombank_w)
membank("bank1")->set_entry(data >>7);
}
-ADDRESS_MAP_START(vega_state::vega_map)
- AM_RANGE(0x000, 0x7ff) AM_ROMBANK("bank1")
- AM_RANGE(0x800, 0xfff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vega_state::vega_io_map)
- AM_RANGE(0x00, 0xff) AM_READWRITE(extern_r, extern_w)
-ADDRESS_MAP_END
+void vega_state::vega_map(address_map &map)
+{
+ map(0x000, 0x7ff).bankr("bank1");
+ map(0x800, 0xfff).rom();
+}
+
+void vega_state::vega_io_map(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(vega_state::extern_r), FUNC(vega_state::extern_w));
+}
static INPUT_PORTS_START( vega )
diff --git a/src/mame/drivers/vegaeo.cpp b/src/mame/drivers/vegaeo.cpp
index d6fbdd0e0e3..82ee30d0d7b 100644
--- a/src/mame/drivers/vegaeo.cpp
+++ b/src/mame/drivers/vegaeo.cpp
@@ -102,19 +102,20 @@ READ32_MEMBER(vegaeo_state::vegaeo_custom_read)
}
-ADDRESS_MAP_START(vegaeo_state::vega_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM
- AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE8(vram_r, vram_w, 0xffffffff)
- AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x000000ff)
- AM_RANGE(0xfc200000, 0xfc2003ff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette")
- AM_RANGE(0xfc400000, 0xfc40005b) AM_WRITENOP // crt registers ?
- AM_RANGE(0xfc600000, 0xfc600003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32)
- AM_RANGE(0xfca00000, 0xfca00003) AM_WRITE(vega_misc_w)
- AM_RANGE(0xfcc00000, 0xfcc00003) AM_READ(vegaeo_custom_read)
- AM_RANGE(0xfce00000, 0xfce00003) AM_READ_PORT("P1_P2")
- AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("maindata", 0)
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void vegaeo_state::vega_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram();
+ map(0x80000000, 0x80013fff).rw(this, FUNC(vegaeo_state::vram_r), FUNC(vegaeo_state::vram_w));
+ map(0xfc000000, 0xfc0000ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x000000ff);
+ map(0xfc200000, 0xfc2003ff).rw("palette", FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette");
+ map(0xfc400000, 0xfc40005b).nopw(); // crt registers ?
+ map(0xfc600000, 0xfc600003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32);
+ map(0xfca00000, 0xfca00003).w(this, FUNC(vegaeo_state::vega_misc_w));
+ map(0xfcc00000, 0xfcc00003).r(this, FUNC(vegaeo_state::vegaeo_custom_read));
+ map(0xfce00000, 0xfce00003).portr("P1_P2");
+ map(0xfd000000, 0xfeffffff).rom().region("maindata", 0);
+ map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
+}
static INPUT_PORTS_START( crazywar )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/vendetta.cpp b/src/mame/drivers/vendetta.cpp
index ddd02a919ff..e060f7cdec2 100644
--- a/src/mame/drivers/vendetta.cpp
+++ b/src/mame/drivers/vendetta.cpp
@@ -199,77 +199,82 @@ READ8_MEMBER(vendetta_state::z80_irq_r)
/********************************************/
-ADDRESS_MAP_START(vendetta_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1")
- AM_RANGE(0x2000, 0x3fff) AM_RAM
+void vendetta_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).bankr("bank1");
+ map(0x2000, 0x3fff).ram();
/* what is the desired effect of overlapping these memory regions anyway? */
- AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
-
- AM_RANGE(0x4000, 0x4fff) AM_DEVICE("videobank0", address_map_bank_device, amap8)
- AM_RANGE(0x5f80, 0x5f9f) AM_DEVREADWRITE("k054000", k054000_device, read, write)
- AM_RANGE(0x5fa0, 0x5faf) AM_DEVWRITE("k053251", k053251_device, write)
- AM_RANGE(0x5fb0, 0x5fb7) AM_DEVWRITE("k053246", k053247_device, k053246_w)
- AM_RANGE(0x5fc0, 0x5fc0) AM_READ_PORT("P1")
- AM_RANGE(0x5fc1, 0x5fc1) AM_READ_PORT("P2")
- AM_RANGE(0x5fc2, 0x5fc2) AM_READ_PORT("P3")
- AM_RANGE(0x5fc3, 0x5fc3) AM_READ_PORT("P4")
- AM_RANGE(0x5fd0, 0x5fd0) AM_READ_PORT("EEPROM")
- AM_RANGE(0x5fd1, 0x5fd1) AM_READ_PORT("SERVICE")
- AM_RANGE(0x5fe0, 0x5fe0) AM_WRITE(_5fe0_w)
- AM_RANGE(0x5fe2, 0x5fe2) AM_WRITE(eeprom_w)
- AM_RANGE(0x5fe4, 0x5fe4) AM_READWRITE(z80_irq_r, z80_irq_w)
- AM_RANGE(0x5fe6, 0x5fe7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write)
- AM_RANGE(0x5fe8, 0x5fe9) AM_DEVREAD("k053246", k053247_device, k053246_r)
- AM_RANGE(0x5fea, 0x5fea) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x6000, 0x6fff) AM_DEVICE("videobank1", address_map_bank_device, amap8)
-
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vendetta_state::esckids_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM // 053248 64K SRAM
+ map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+
+ map(0x4000, 0x4fff).m(m_videobank0, FUNC(address_map_bank_device::amap8));
+ map(0x5f80, 0x5f9f).rw(m_k054000, FUNC(k054000_device::read), FUNC(k054000_device::write));
+ map(0x5fa0, 0x5faf).w(m_k053251, FUNC(k053251_device::write));
+ map(0x5fb0, 0x5fb7).w(m_k053246, FUNC(k053247_device::k053246_w));
+ map(0x5fc0, 0x5fc0).portr("P1");
+ map(0x5fc1, 0x5fc1).portr("P2");
+ map(0x5fc2, 0x5fc2).portr("P3");
+ map(0x5fc3, 0x5fc3).portr("P4");
+ map(0x5fd0, 0x5fd0).portr("EEPROM");
+ map(0x5fd1, 0x5fd1).portr("SERVICE");
+ map(0x5fe0, 0x5fe0).w(this, FUNC(vendetta_state::_5fe0_w));
+ map(0x5fe2, 0x5fe2).w(this, FUNC(vendetta_state::eeprom_w));
+ map(0x5fe4, 0x5fe4).rw(this, FUNC(vendetta_state::z80_irq_r), FUNC(vendetta_state::z80_irq_w));
+ map(0x5fe6, 0x5fe7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write));
+ map(0x5fe8, 0x5fe9).r(m_k053246, FUNC(k053247_device::k053246_r));
+ map(0x5fea, 0x5fea).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x6000, 0x6fff).m(m_videobank1, FUNC(address_map_bank_device::amap8));
+
+ map(0x8000, 0xffff).rom().region("maincpu", 0x38000);
+}
+
+void vendetta_state::esckids_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram(); // 053248 64K SRAM
/* what is the desired effect of overlapping these memory regions anyway? */
- AM_RANGE(0x2000, 0x5fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) // 052109 (Tilemap)
-
- AM_RANGE(0x2000, 0x2fff) AM_DEVICE("videobank0", address_map_bank_device, amap8) // 052109 (Tilemap) 0x0000-0x0fff - 052109 (Tilemap)
- AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("P1")
- AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P2")
- AM_RANGE(0x3f82, 0x3f82) AM_READ_PORT("P3") // ??? (But not used)
- AM_RANGE(0x3f83, 0x3f83) AM_READ_PORT("P4") // ??? (But not used)
- AM_RANGE(0x3f92, 0x3f92) AM_READ_PORT("EEPROM")
- AM_RANGE(0x3f93, 0x3f93) AM_READ_PORT("SERVICE")
- AM_RANGE(0x3fa0, 0x3fa7) AM_DEVWRITE("k053246", k053247_device, k053246_w) // 053246 (Sprite)
- AM_RANGE(0x3fb0, 0x3fbf) AM_DEVWRITE("k053251", k053251_device, write) // 053251 (Priority Encoder)
- AM_RANGE(0x3fc0, 0x3fcf) AM_DEVREADWRITE("k053252", k053252_device, read, write) // Not Emulated (053252 ???)
- AM_RANGE(0x3fd0, 0x3fd0) AM_WRITE(_5fe0_w) // Coin Counter, 052109 RMRD, 053246 OBJCHA
- AM_RANGE(0x3fd2, 0x3fd2) AM_WRITE(eeprom_w) // EEPROM, Video banking
- AM_RANGE(0x3fd4, 0x3fd4) AM_READWRITE(z80_irq_r, z80_irq_w) // Sound
- AM_RANGE(0x3fd6, 0x3fd7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write) // Sound
- AM_RANGE(0x3fd8, 0x3fd9) AM_DEVREAD("k053246", k053247_device, k053246_r) // 053246 (Sprite)
- AM_RANGE(0x3fda, 0x3fda) AM_WRITENOP // Not Emulated (Watchdog ???)
- AM_RANGE(0x4000, 0x4fff) AM_DEVICE("videobank1", address_map_bank_device, amap8) // 0x2000-0x3fff, Tilemap MASK-ROM bank selector (MASK-ROM Test)
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") // 053248 '975r01' 1M ROM (Banked)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x18000) // 053248 '975r01' 1M ROM (0x18000-0x1ffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vendetta_state::videobank0_map)
- AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x1000, 0x1fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_r, k053247_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vendetta_state::videobank1_map)
- AM_RANGE(0x0000, 0x0fff) AM_READWRITE(K052109_r, K052109_w)
- AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vendetta_state::sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
- AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
-ADDRESS_MAP_END
+ map(0x2000, 0x5fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); // 052109 (Tilemap)
+
+ map(0x2000, 0x2fff).m(m_videobank0, FUNC(address_map_bank_device::amap8)); // 052109 (Tilemap) 0x0000-0x0fff - 052109 (Tilemap)
+ map(0x3f80, 0x3f80).portr("P1");
+ map(0x3f81, 0x3f81).portr("P2");
+ map(0x3f82, 0x3f82).portr("P3"); // ??? (But not used)
+ map(0x3f83, 0x3f83).portr("P4"); // ??? (But not used)
+ map(0x3f92, 0x3f92).portr("EEPROM");
+ map(0x3f93, 0x3f93).portr("SERVICE");
+ map(0x3fa0, 0x3fa7).w(m_k053246, FUNC(k053247_device::k053246_w)); // 053246 (Sprite)
+ map(0x3fb0, 0x3fbf).w(m_k053251, FUNC(k053251_device::write)); // 053251 (Priority Encoder)
+ map(0x3fc0, 0x3fcf).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); // Not Emulated (053252 ???)
+ map(0x3fd0, 0x3fd0).w(this, FUNC(vendetta_state::_5fe0_w)); // Coin Counter, 052109 RMRD, 053246 OBJCHA
+ map(0x3fd2, 0x3fd2).w(this, FUNC(vendetta_state::eeprom_w)); // EEPROM, Video banking
+ map(0x3fd4, 0x3fd4).rw(this, FUNC(vendetta_state::z80_irq_r), FUNC(vendetta_state::z80_irq_w)); // Sound
+ map(0x3fd6, 0x3fd7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); // Sound
+ map(0x3fd8, 0x3fd9).r(m_k053246, FUNC(k053247_device::k053246_r)); // 053246 (Sprite)
+ map(0x3fda, 0x3fda).nopw(); // Not Emulated (Watchdog ???)
+ map(0x4000, 0x4fff).m(m_videobank1, FUNC(address_map_bank_device::amap8)); // 0x2000-0x3fff, Tilemap MASK-ROM bank selector (MASK-ROM Test)
+ map(0x6000, 0x7fff).bankr("bank1"); // 053248 '975r01' 1M ROM (Banked)
+ map(0x8000, 0xffff).rom().region("maincpu", 0x18000); // 053248 '975r01' 1M ROM (0x18000-0x1ffff)
+}
+
+void vendetta_state::videobank0_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x1000, 0x1fff).rw(m_k053246, FUNC(k053247_device::k053247_r), FUNC(k053247_device::k053247_w));
+}
+
+void vendetta_state::videobank1_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(this, FUNC(vendetta_state::K052109_r), FUNC(vendetta_state::K052109_w));
+ map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+void vendetta_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(vendetta_state::z80_arm_nmi_w));
+ map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
+}
/***************************************************************************
diff --git a/src/mame/drivers/vertigo.cpp b/src/mame/drivers/vertigo.cpp
index 47339d6106a..d0ca658f4b7 100644
--- a/src/mame/drivers/vertigo.cpp
+++ b/src/mame/drivers/vertigo.cpp
@@ -35,36 +35,38 @@
*
*************************************/
-ADDRESS_MAP_START(vertigo_state::vertigo_map)
- AM_RANGE(0x000000, 0x000007) AM_ROM
- AM_RANGE(0x000008, 0x001fff) AM_RAM AM_MIRROR(0x010000)
- AM_RANGE(0x002000, 0x003fff) AM_RAM AM_SHARE("vectorram")
- AM_RANGE(0x004000, 0x00400f) AM_READ(vertigo_io_convert) AM_MIRROR(0x001000)
- AM_RANGE(0x004010, 0x00401f) AM_READ(vertigo_io_adc) AM_MIRROR(0x001000)
- AM_RANGE(0x004020, 0x00402f) AM_READ(vertigo_coin_r) AM_MIRROR(0x001000)
- AM_RANGE(0x004030, 0x00403f) AM_READ_PORT("GIO") AM_MIRROR(0x001000)
- AM_RANGE(0x004040, 0x00404f) AM_READ(vertigo_sio_r) AM_MIRROR(0x001000)
- AM_RANGE(0x004050, 0x00405f) AM_WRITE(vertigo_audio_w) AM_MIRROR(0x001000)
- AM_RANGE(0x004060, 0x00406f) AM_WRITE(vertigo_motor_w) AM_MIRROR(0x001000)
- AM_RANGE(0x004070, 0x00407f) AM_WRITE(vertigo_wsot_w) AM_MIRROR(0x001000)
- AM_RANGE(0x006000, 0x006007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff)
- AM_RANGE(0x007000, 0x0073ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x800000, 0x81ffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vertigo_state::exidy440_audio_map)
- AM_RANGE(0x0000, 0x7fff) AM_NOP
- AM_RANGE(0x8000, 0x801f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("custom", exidy440_sound_device, m6844_r, m6844_w)
- AM_RANGE(0x8400, 0x840f) AM_MIRROR(0x03f0) AM_DEVREADWRITE("custom", exidy440_sound_device, sound_volume_r, sound_volume_w)
- AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_DEVREAD("custom", exidy440_sound_device, sound_command_r) AM_WRITENOP
- AM_RANGE(0x8c00, 0x93ff) AM_NOP
- AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x03fc) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_banks_w)
- AM_RANGE(0x9800, 0x9800) AM_MIRROR(0x03ff) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_interrupt_clear_w)
- AM_RANGE(0x9c00, 0x9fff) AM_NOP
- AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xdfff) AM_NOP
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void vertigo_state::vertigo_map(address_map &map)
+{
+ map(0x000000, 0x000007).rom();
+ map(0x000008, 0x001fff).ram().mirror(0x010000);
+ map(0x002000, 0x003fff).ram().share("vectorram");
+ map(0x004000, 0x00400f).r(this, FUNC(vertigo_state::vertigo_io_convert)).mirror(0x001000);
+ map(0x004010, 0x00401f).r(this, FUNC(vertigo_state::vertigo_io_adc)).mirror(0x001000);
+ map(0x004020, 0x00402f).r(this, FUNC(vertigo_state::vertigo_coin_r)).mirror(0x001000);
+ map(0x004030, 0x00403f).portr("GIO").mirror(0x001000);
+ map(0x004040, 0x00404f).r(this, FUNC(vertigo_state::vertigo_sio_r)).mirror(0x001000);
+ map(0x004050, 0x00405f).w(this, FUNC(vertigo_state::vertigo_audio_w)).mirror(0x001000);
+ map(0x004060, 0x00406f).w(this, FUNC(vertigo_state::vertigo_motor_w)).mirror(0x001000);
+ map(0x004070, 0x00407f).w(this, FUNC(vertigo_state::vertigo_wsot_w)).mirror(0x001000);
+ map(0x006000, 0x006007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
+ map(0x007000, 0x0073ff).ram().share("nvram");
+ map(0x800000, 0x81ffff).rom();
+}
+
+void vertigo_state::exidy440_audio_map(address_map &map)
+{
+ map(0x0000, 0x7fff).noprw();
+ map(0x8000, 0x801f).mirror(0x03e0).rw(m_custom, FUNC(exidy440_sound_device::m6844_r), FUNC(exidy440_sound_device::m6844_w));
+ map(0x8400, 0x840f).mirror(0x03f0).rw(m_custom, FUNC(exidy440_sound_device::sound_volume_r), FUNC(exidy440_sound_device::sound_volume_w));
+ map(0x8800, 0x8800).mirror(0x03ff).r(m_custom, FUNC(exidy440_sound_device::sound_command_r)).nopw();
+ map(0x8c00, 0x93ff).noprw();
+ map(0x9400, 0x9403).mirror(0x03fc).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_banks_w));
+ map(0x9800, 0x9800).mirror(0x03ff).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_interrupt_clear_w));
+ map(0x9c00, 0x9fff).noprw();
+ map(0xa000, 0xbfff).ram();
+ map(0xc000, 0xdfff).noprw();
+ map(0xe000, 0xffff).rom();
+}
/*************************************
diff --git a/src/mame/drivers/vg5k.cpp b/src/mame/drivers/vg5k.cpp
index 74bb0dae6e4..416caa68ffe 100644
--- a/src/mame/drivers/vg5k.cpp
+++ b/src/mame/drivers/vg5k.cpp
@@ -159,42 +159,44 @@ WRITE8_MEMBER ( vg5k_state::cassette_w )
}
-ADDRESS_MAP_START(vg5k_state::vg5k_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0xffff ) AM_NOP /* messram expansion memory */
-ADDRESS_MAP_END
+void vg5k_state::vg5k_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0xffff).noprw(); /* messram expansion memory */
+}
-ADDRESS_MAP_START(vg5k_state::vg5k_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK (0xff)
+void vg5k_state::vg5k_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
/* joystick */
- AM_RANGE( 0x07, 0x07 ) AM_READ_PORT("JOY0")
- AM_RANGE( 0x08, 0x08 ) AM_READ_PORT("JOY1")
+ map(0x07, 0x07).portr("JOY0");
+ map(0x08, 0x08).portr("JOY1");
/* printer */
- AM_RANGE( 0x10, 0x10 ) AM_READ(printer_r)
- AM_RANGE( 0x11, 0x11 ) AM_WRITE(printer_w)
+ map(0x10, 0x10).r(this, FUNC(vg5k_state::printer_r));
+ map(0x11, 0x11).w(this, FUNC(vg5k_state::printer_w));
/* keyboard */
- AM_RANGE( 0x80, 0x80 ) AM_READ_PORT("ROW1")
- AM_RANGE( 0x81, 0x81 ) AM_READ_PORT("ROW2")
- AM_RANGE( 0x82, 0x82 ) AM_READ_PORT("ROW3")
- AM_RANGE( 0x83, 0x83 ) AM_READ_PORT("ROW4")
- AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("ROW5")
- AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("ROW6")
- AM_RANGE( 0x86, 0x86 ) AM_READ_PORT("ROW7")
- AM_RANGE( 0x87, 0x87 ) AM_READ_PORT("ROW8")
+ map(0x80, 0x80).portr("ROW1");
+ map(0x81, 0x81).portr("ROW2");
+ map(0x82, 0x82).portr("ROW3");
+ map(0x83, 0x83).portr("ROW4");
+ map(0x84, 0x84).portr("ROW5");
+ map(0x85, 0x85).portr("ROW6");
+ map(0x86, 0x86).portr("ROW7");
+ map(0x87, 0x87).portr("ROW8");
/* EF9345 */
- AM_RANGE( 0x8f, 0x8f ) AM_WRITE(ef9345_offset_w)
- AM_RANGE( 0xcf, 0xcf ) AM_READWRITE(ef9345_io_r, ef9345_io_w)
+ map(0x8f, 0x8f).w(this, FUNC(vg5k_state::ef9345_offset_w));
+ map(0xcf, 0xcf).rw(this, FUNC(vg5k_state::ef9345_io_r), FUNC(vg5k_state::ef9345_io_w));
/* cassette */
- AM_RANGE( 0xaf,0xaf ) AM_READWRITE(cassette_r, cassette_w)
-ADDRESS_MAP_END
+ map(0xaf, 0xaf).rw(this, FUNC(vg5k_state::cassette_r), FUNC(vg5k_state::cassette_w));
+}
/* Input ports */
static INPUT_PORTS_START( vg5k )
diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp
index 4befce870df..43607e47968 100644
--- a/src/mame/drivers/vgmplay.cpp
+++ b/src/mame/drivers/vgmplay.cpp
@@ -1476,124 +1476,142 @@ WRITE8_MEMBER(vgmplay_state::scc_w)
static INPUT_PORTS_START( vgmplay )
INPUT_PORTS_END
-ADDRESS_MAP_START(vgmplay_state::file_map)
- AM_RANGE(0x00000000, 0xffffffff) AM_READ(file_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::soundchips16_map)
- AM_RANGE(vgmplay_device::A_C352, vgmplay_device::A_C352+0x7fff) AM_DEVWRITE ("c352", c352_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::soundchips_map)
- AM_RANGE(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3) AM_READ(file_size_r)
- AM_RANGE(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3) AM_DEVWRITE ("ym2612", ym2612_device, write)
- AM_RANGE(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1) AM_DEVWRITE ("ym2151", ym2151_device, write)
- AM_RANGE(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1) AM_DEVWRITE ("ym2413", ym2413_device, write)
- AM_RANGE(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1) AM_DEVWRITE ("ym2203a", ym2203_device, write)
- AM_RANGE(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1) AM_DEVWRITE ("ym2203b", ym2203_device, write)
- AM_RANGE(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1) AM_DEVWRITE ("ym3526", ym3526_device, write)
- AM_RANGE(vgmplay_device::A_YM3812, vgmplay_device::A_YM3812+1) AM_DEVWRITE ("ym3812", ym3812_device, write)
- AM_RANGE(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A) AM_DEVWRITE ("ay8910a", ay8910_device, data_w)
- AM_RANGE(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1) AM_DEVWRITE ("ay8910a", ay8910_device, address_w)
- AM_RANGE(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B) AM_DEVWRITE ("ay8910b", ay8910_device, data_w)
- AM_RANGE(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1) AM_DEVWRITE ("ay8910b", ay8910_device, address_w)
+void vgmplay_state::file_map(address_map &map)
+{
+ map(0x00000000, 0xffffffff).r(this, FUNC(vgmplay_state::file_r));
+}
+
+void vgmplay_state::soundchips16_map(address_map &map)
+{
+ map(vgmplay_device::A_C352, vgmplay_device::A_C352+0x7fff).w(m_c352, FUNC(c352_device::write));
+}
+
+void vgmplay_state::soundchips_map(address_map &map)
+{
+ map(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3).r(this, FUNC(vgmplay_state::file_size_r));
+ map(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3).w(m_ym2612, FUNC(ym2612_device::write));
+ map(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1).w(m_ym2151, FUNC(ym2151_device::write));
+ map(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1).w(m_ym2413, FUNC(ym2413_device::write));
+ map(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1).w("ym2203a", FUNC(ym2203_device::write));
+ map(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1).w("ym2203b", FUNC(ym2203_device::write));
+ map(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1).w(m_ym3526, FUNC(ym3526_device::write));
+ map(vgmplay_device::A_YM3812, vgmplay_device::A_YM3812+1).w(m_ym3812, FUNC(ym3812_device::write));
+ map(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A).w("ay8910a", FUNC(ay8910_device::data_w));
+ map(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1).w("ay8910a", FUNC(ay8910_device::address_w));
+ map(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B).w("ay8910b", FUNC(ay8910_device::data_w));
+ map(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1).w("ay8910b", FUNC(ay8910_device::address_w));
// AM_RANGE(vgmplay_device::A_SN76496+0, vgmplay_device::A_SN76496+0) AM_DEVWRITE ("sn76496", sn76496_device, stereo_w)
- AM_RANGE(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1) AM_DEVWRITE ("sn76496", sn76496_device, write)
- AM_RANGE(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f) AM_DEVWRITE ("k053260", k053260_device, write)
- AM_RANGE(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf) AM_DEVWRITE ("c6280", c6280_device, c6280_w)
- AM_RANGE(vgmplay_device::A_OKIM6295A, vgmplay_device::A_OKIM6295A) AM_DEVWRITE ("okim6295a", okim6295_device, write)
- AM_RANGE(vgmplay_device::A_OKIM6295A+0x8, vgmplay_device::A_OKIM6295A+0xb) AM_WRITE (okim6295_clock_w<0>)
- AM_RANGE(vgmplay_device::A_OKIM6295A+0xc, vgmplay_device::A_OKIM6295A+0xc) AM_WRITE (okim6295_pin7_w<0>)
- AM_RANGE(vgmplay_device::A_OKIM6295A+0xe, vgmplay_device::A_OKIM6295A+0xe) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_enable_w<0>)
- AM_RANGE(vgmplay_device::A_OKIM6295A+0xf, vgmplay_device::A_OKIM6295A+0xf) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_bank_w<0>)
- AM_RANGE(vgmplay_device::A_OKIM6295A+0x10, vgmplay_device::A_OKIM6295A+0x13) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_bank_w<0>)
- AM_RANGE(vgmplay_device::A_OKIM6295B, vgmplay_device::A_OKIM6295B) AM_DEVWRITE ("okim6295b", okim6295_device, write)
- AM_RANGE(vgmplay_device::A_OKIM6295B+0x8, vgmplay_device::A_OKIM6295B+0xb) AM_WRITE (okim6295_clock_w<1>)
- AM_RANGE(vgmplay_device::A_OKIM6295B+0xc, vgmplay_device::A_OKIM6295B+0xc) AM_WRITE (okim6295_pin7_w<1>)
- AM_RANGE(vgmplay_device::A_OKIM6295B+0xe, vgmplay_device::A_OKIM6295B+0xe) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_enable_w<1>)
- AM_RANGE(vgmplay_device::A_OKIM6295B+0xf, vgmplay_device::A_OKIM6295B+0xf) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_bank_w<1>)
- AM_RANGE(vgmplay_device::A_OKIM6295B+0x10, vgmplay_device::A_OKIM6295B+0x13) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_bank_w<1>)
- AM_RANGE(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff) AM_DEVWRITE ("segapcm", segapcm_device, sega_pcm_w)
- AM_RANGE(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16) AM_DEVWRITE ("dmg", gameboy_sound_device, sound_w)
- AM_RANGE(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f) AM_DEVWRITE ("dmg", gameboy_sound_device, wave_w)
- AM_RANGE(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f) AM_DEVWRITE ("nescpu:nesapu", nesapu_device, write)
- AM_RANGE(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff) AM_RAM AM_SHARE("nesapu_ram")
- AM_RANGE(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3) AM_DEVWRITE ("multipcma", multipcm_device, write)
- AM_RANGE(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_w<0>)
- AM_RANGE(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_w<0>)
- AM_RANGE(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3) AM_DEVWRITE ("multipcmb", multipcm_device, write)
- AM_RANGE(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_w<1>)
- AM_RANGE(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_w<1>)
- AM_RANGE(vgmplay_device::A_POKEYA, vgmplay_device::A_POKEYA+0xf) AM_DEVWRITE ("pokeya", pokey_device, write)
- AM_RANGE(vgmplay_device::A_POKEYB, vgmplay_device::A_POKEYB+0xf) AM_DEVWRITE ("pokeyb", pokey_device, write)
- AM_RANGE(vgmplay_device::A_YMF271, vgmplay_device::A_YMF271+0xf) AM_DEVWRITE ("ymf271", ymf271_device, write)
- AM_RANGE(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1) AM_DEVWRITE ("ymz280b", ymz280b_device, write)
- AM_RANGE(vgmplay_device::A_YM2608, vgmplay_device::A_YM2608+0x3) AM_DEVWRITE ("ym2608", ym2608_device, write)
- AM_RANGE(vgmplay_device::A_K054539A, vgmplay_device::A_K054539A+0x22f) AM_DEVWRITE ("k054539a", k054539_device, write)
- AM_RANGE(vgmplay_device::A_K054539B, vgmplay_device::A_K054539B+0x22f) AM_DEVWRITE ("k054539b", k054539_device, write)
- AM_RANGE(vgmplay_device::A_QSOUND, vgmplay_device::A_QSOUND+0x2) AM_DEVWRITE ("qsound", qsound_device, qsound_w)
- AM_RANGE(vgmplay_device::A_K051649, vgmplay_device::A_K051649+0xf) AM_WRITE (scc_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::segapcm_map)
- AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, segapcm_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::multipcma_map)
- AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcm_rom_r<0>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::multipcmb_map)
- AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcm_rom_r<1>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::k053260_map)
- AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, k053260_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::okim6295a_map)
- AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295_rom_r<0>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::okim6295b_map)
- AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295_rom_r<1>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::k054539a_map)
- AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, k054539_rom_r<0>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::k054539b_map)
- AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, k054539_rom_r<1>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::c352_map)
- AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, c352_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::qsound_map)
- AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, qsound_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::ymf271_map)
- AM_RANGE(0, 0x7fffff) AM_DEVREAD("vgmplay", vgmplay_device, ymf271_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::ymz280b_map)
- AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, ymz280b_rom_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::nescpu_map)
- AM_RANGE(0, 0xffff) AM_RAM AM_SHARE("nesapu_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::h6280_map)
- AM_RANGE(0, 0xffff) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vgmplay_state::h6280_io_map)
- AM_RANGE(0, 3) AM_NOP
-ADDRESS_MAP_END
+ map(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1).w(m_sn76496, FUNC(sn76496_device::write));
+ map(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f).w(m_k053260, FUNC(k053260_device::write));
+ map(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf).w(m_c6280, FUNC(c6280_device::c6280_w));
+ map(vgmplay_device::A_OKIM6295A, vgmplay_device::A_OKIM6295A).w("okim6295a", FUNC(okim6295_device::write));
+ map(vgmplay_device::A_OKIM6295A+0x8, vgmplay_device::A_OKIM6295A+0xb).w(this, FUNC(vgmplay_state::okim6295_clock_w<0>));
+ map(vgmplay_device::A_OKIM6295A+0xc, vgmplay_device::A_OKIM6295A+0xc).w(this, FUNC(vgmplay_state::okim6295_pin7_w<0>));
+ map(vgmplay_device::A_OKIM6295A+0xe, vgmplay_device::A_OKIM6295A+0xe).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_enable_w<0>));
+ map(vgmplay_device::A_OKIM6295A+0xf, vgmplay_device::A_OKIM6295A+0xf).w("vgmplay", FUNC(vgmplay_device::okim6295_bank_w<0>));
+ map(vgmplay_device::A_OKIM6295A+0x10, vgmplay_device::A_OKIM6295A+0x13).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_bank_w<0>));
+ map(vgmplay_device::A_OKIM6295B, vgmplay_device::A_OKIM6295B).w("okim6295b", FUNC(okim6295_device::write));
+ map(vgmplay_device::A_OKIM6295B+0x8, vgmplay_device::A_OKIM6295B+0xb).w(this, FUNC(vgmplay_state::okim6295_clock_w<1>));
+ map(vgmplay_device::A_OKIM6295B+0xc, vgmplay_device::A_OKIM6295B+0xc).w(this, FUNC(vgmplay_state::okim6295_pin7_w<1>));
+ map(vgmplay_device::A_OKIM6295B+0xe, vgmplay_device::A_OKIM6295B+0xe).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_enable_w<1>));
+ map(vgmplay_device::A_OKIM6295B+0xf, vgmplay_device::A_OKIM6295B+0xf).w("vgmplay", FUNC(vgmplay_device::okim6295_bank_w<1>));
+ map(vgmplay_device::A_OKIM6295B+0x10, vgmplay_device::A_OKIM6295B+0x13).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_bank_w<1>));
+ map(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff).w(m_segapcm, FUNC(segapcm_device::sega_pcm_w));
+ map(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16).w(m_dmg, FUNC(gameboy_sound_device::sound_w));
+ map(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f).w(m_dmg, FUNC(gameboy_sound_device::wave_w));
+ map(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f).w("nescpu:nesapu", FUNC(nesapu_device::write));
+ map(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff).ram().share("nesapu_ram");
+ map(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3).w("multipcma", FUNC(multipcm_device::write));
+ map(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_hi_w<0>));
+ map(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_lo_w<0>));
+ map(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3).w("multipcmb", FUNC(multipcm_device::write));
+ map(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_hi_w<1>));
+ map(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_lo_w<1>));
+ map(vgmplay_device::A_POKEYA, vgmplay_device::A_POKEYA+0xf).w("pokeya", FUNC(pokey_device::write));
+ map(vgmplay_device::A_POKEYB, vgmplay_device::A_POKEYB+0xf).w("pokeyb", FUNC(pokey_device::write));
+ map(vgmplay_device::A_YMF271, vgmplay_device::A_YMF271+0xf).w(m_ymf271, FUNC(ymf271_device::write));
+ map(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1).w(m_ymz280b, FUNC(ymz280b_device::write));
+ map(vgmplay_device::A_YM2608, vgmplay_device::A_YM2608+0x3).w(m_ym2608, FUNC(ym2608_device::write));
+ map(vgmplay_device::A_K054539A, vgmplay_device::A_K054539A+0x22f).w("k054539a", FUNC(k054539_device::write));
+ map(vgmplay_device::A_K054539B, vgmplay_device::A_K054539B+0x22f).w("k054539b", FUNC(k054539_device::write));
+ map(vgmplay_device::A_QSOUND, vgmplay_device::A_QSOUND+0x2).w(m_qsound, FUNC(qsound_device::qsound_w));
+ map(vgmplay_device::A_K051649, vgmplay_device::A_K051649+0xf).w(this, FUNC(vgmplay_state::scc_w));
+}
+
+void vgmplay_state::segapcm_map(address_map &map)
+{
+ map(0, 0x1fffff).r("vgmplay", FUNC(vgmplay_device::segapcm_rom_r));
+}
+
+void vgmplay_state::multipcma_map(address_map &map)
+{
+ map(0, 0x3fffff).r("vgmplay", FUNC(vgmplay_device::multipcm_rom_r<0>));
+}
+
+void vgmplay_state::multipcmb_map(address_map &map)
+{
+ map(0, 0x3fffff).r("vgmplay", FUNC(vgmplay_device::multipcm_rom_r<1>));
+}
+
+void vgmplay_state::k053260_map(address_map &map)
+{
+ map(0, 0x1fffff).r("vgmplay", FUNC(vgmplay_device::k053260_rom_r));
+}
+
+void vgmplay_state::okim6295a_map(address_map &map)
+{
+ map(0, 0x3ffff).r("vgmplay", FUNC(vgmplay_device::okim6295_rom_r<0>));
+}
+
+void vgmplay_state::okim6295b_map(address_map &map)
+{
+ map(0, 0x3ffff).r("vgmplay", FUNC(vgmplay_device::okim6295_rom_r<1>));
+}
+
+void vgmplay_state::k054539a_map(address_map &map)
+{
+ map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::k054539_rom_r<0>));
+}
+
+void vgmplay_state::k054539b_map(address_map &map)
+{
+ map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::k054539_rom_r<1>));
+}
+
+void vgmplay_state::c352_map(address_map &map)
+{
+ map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::c352_rom_r));
+}
+
+void vgmplay_state::qsound_map(address_map &map)
+{
+ map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::qsound_rom_r));
+}
+
+void vgmplay_state::ymf271_map(address_map &map)
+{
+ map(0, 0x7fffff).r("vgmplay", FUNC(vgmplay_device::ymf271_rom_r));
+}
+
+void vgmplay_state::ymz280b_map(address_map &map)
+{
+ map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::ymz280b_rom_r));
+}
+
+void vgmplay_state::nescpu_map(address_map &map)
+{
+ map(0, 0xffff).ram().share("nesapu_ram");
+}
+
+void vgmplay_state::h6280_map(address_map &map)
+{
+ map(0, 0xffff).noprw();
+}
+
+void vgmplay_state::h6280_io_map(address_map &map)
+{
+ map(0, 3).noprw();
+}
MACHINE_CONFIG_START(vgmplay_state::vgmplay)
MCFG_CPU_ADD("vgmplay", VGMPLAY, 44100)
diff --git a/src/mame/drivers/vic10.cpp b/src/mame/drivers/vic10.cpp
index a081cf28d52..c85b375d683 100644
--- a/src/mame/drivers/vic10.cpp
+++ b/src/mame/drivers/vic10.cpp
@@ -245,27 +245,30 @@ READ8_MEMBER( vic10_state::vic_colorram_r )
// ADDRESS_MAP( vic10_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(vic10_state::vic10_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void vic10_state::vic10_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(vic10_state::read), FUNC(vic10_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(vic10_state::vic_videoram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r)
-ADDRESS_MAP_END
+void vic10_state::vic_videoram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(vic10_state::vic_videoram_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_colorram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(vic10_state::vic_colorram_map)
- AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r)
-ADDRESS_MAP_END
+void vic10_state::vic_colorram_map(address_map &map)
+{
+ map(0x000, 0x3ff).r(this, FUNC(vic10_state::vic_colorram_r));
+}
diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp
index 6511ad43f5b..5bd39d91024 100644
--- a/src/mame/drivers/vic20.cpp
+++ b/src/mame/drivers/vic20.cpp
@@ -359,27 +359,30 @@ READ8_MEMBER( vic20_state::vic_videoram_r )
// ADDRESS_MAP( vic20_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(vic20_state::vic20_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void vic20_state::vic20_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(vic20_state::read), FUNC(vic20_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_videoram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(vic20_state::vic_videoram_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r)
-ADDRESS_MAP_END
+void vic20_state::vic_videoram_map(address_map &map)
+{
+ map(0x0000, 0x3fff).r(this, FUNC(vic20_state::vic_videoram_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vic_colorram_map )
//-------------------------------------------------
-ADDRESS_MAP_START(vic20_state::vic_colorram_map)
- AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("color_ram")
-ADDRESS_MAP_END
+void vic20_state::vic_colorram_map(address_map &map)
+{
+ map(0x000, 0x3ff).ram().share("color_ram");
+}
diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp
index 2c886d044b3..ae7b67b01f6 100644
--- a/src/mame/drivers/vicdual.cpp
+++ b/src/mame/drivers/vicdual.cpp
@@ -288,21 +288,23 @@ WRITE8_MEMBER(vicdual_state::depthch_io_w)
}
-ADDRESS_MAP_START(vicdual_state::depthch_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::depthch_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).mirror(0x7000).ram();
+ map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::depthch_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::depthch_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(depthch_io_r, depthch_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(vicdual_state::depthch_io_r), FUNC(vicdual_state::depthch_io_w));
+}
static INPUT_PORTS_START( depthch )
@@ -370,23 +372,25 @@ WRITE8_MEMBER(vicdual_state::safari_io_w)
}
-ADDRESS_MAP_START(vicdual_state::safari_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_NOP /* unused */
- AM_RANGE(0x8000, 0x8fff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::safari_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).noprw(); /* unused */
+ map(0x8000, 0x8fff).mirror(0x3000).ram();
+ map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0xc400, 0xc7ff).mirror(0x3000).ram();
+ map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::safari_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::safari_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(safari_io_r, safari_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(vicdual_state::safari_io_r), FUNC(vicdual_state::safari_io_w));
+}
static INPUT_PORTS_START( safari )
@@ -454,21 +458,23 @@ WRITE8_MEMBER(vicdual_state::frogs_io_w)
}
-ADDRESS_MAP_START(vicdual_state::frogs_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::frogs_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).mirror(0x7000).ram();
+ map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::frogs_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::frogs_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(frogs_io_r, frogs_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(vicdual_state::frogs_io_r), FUNC(vicdual_state::frogs_io_w));
+}
static INPUT_PORTS_START( frogs )
@@ -579,31 +585,34 @@ WRITE8_MEMBER(vicdual_state::headon_io_w)
}
-ADDRESS_MAP_START(vicdual_state::headon_map)
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::headon_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x6000).rom();
+ map(0x8000, 0xbfff).noprw(); /* unused */
+ map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0xc400, 0xc7ff).mirror(0x3000).ram();
+ map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::headon_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::headon_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(headon_io_r, headon_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(vicdual_state::headon_io_r), FUNC(vicdual_state::headon_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::sspaceat_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::sspaceat_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(sspaceat_io_r, headon_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(vicdual_state::sspaceat_io_r), FUNC(vicdual_state::headon_io_w));
+}
static INPUT_PORTS_START( headon )
@@ -848,28 +857,31 @@ WRITE8_MEMBER(vicdual_state::digger_io_w)
}
-ADDRESS_MAP_START(vicdual_state::headon2_map)
- AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM
+void vicdual_state::headon2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).mirror(0x6000).rom();
/* AM_RANGE(0x8000, 0x80ff) AM_MIRROR(0x3f00) */ /* schematics show this as battery backed RAM, but doesn't appear to be used */
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+ map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0xc400, 0xc7ff).mirror(0x3000).ram();
+ map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::headon2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
- AM_RANGE(0x00, 0x1f) AM_READWRITE(headon2_io_r, headon2_io_w)
-ADDRESS_MAP_END
+void vicdual_state::headon2_io_map(address_map &map)
+{
+ map.global_mask(0x1f);
+ map(0x00, 0x1f).rw(this, FUNC(vicdual_state::headon2_io_r), FUNC(vicdual_state::headon2_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::digger_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1f)
+void vicdual_state::digger_io_map(address_map &map)
+{
+ map.global_mask(0x1f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x1f) AM_READWRITE(headon2_io_r, digger_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x1f).rw(this, FUNC(vicdual_state::headon2_io_r), FUNC(vicdual_state::digger_io_w));
+}
static INPUT_PORTS_START( headon2 )
@@ -1158,184 +1170,198 @@ WRITE8_MEMBER(vicdual_state::headonn_io_w)
}
-ADDRESS_MAP_START(vicdual_state::vicdual_dualgame_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::vicdual_dualgame_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).mirror(0x7000).ram();
+ map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::carhntds_dualgame_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM // also has part of a rom mapped at 0x4000
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::carhntds_dualgame_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); // also has part of a rom mapped at 0x4000
+ map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).mirror(0x7000).ram();
+ map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::invho2_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::invho2_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(invho2_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::invho2_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::invds_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::invds_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(invds_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::invds_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::carhntds_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::carhntds_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(carhntds_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::carhntds_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::sspacaho_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::sspacaho_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(sspacaho_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::sspacaho_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::tranqgun_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::tranqgun_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x0c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x0c).portr("IN0");
+ map(0x01, 0x01).mirror(0x0c).portr("IN1");
+ map(0x02, 0x02).mirror(0x0c).portr("IN2");
+ map(0x03, 0x03).mirror(0x0c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_WRITE(tranqgun_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).w(this, FUNC(vicdual_state::tranqgun_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::spacetrk_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::spacetrk_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(spacetrk_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::spacetrk_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::carnival_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::carnival_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(carnival_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::carnival_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::brdrline_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::brdrline_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x0c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x0c).portr("IN0");
+ map(0x01, 0x01).mirror(0x0c).portr("IN1");
+ map(0x02, 0x02).mirror(0x0c).portr("IN2");
+ map(0x03, 0x03).mirror(0x0c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_WRITE(brdrline_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).w(this, FUNC(vicdual_state::brdrline_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::pulsar_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::pulsar_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(pulsar_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::pulsar_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::heiankyo_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::heiankyo_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x0c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x0c).portr("IN0");
+ map(0x01, 0x01).mirror(0x0c).portr("IN1");
+ map(0x02, 0x02).mirror(0x0c).portr("IN2");
+ map(0x03, 0x03).mirror(0x0c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_WRITE(heiankyo_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).w(this, FUNC(vicdual_state::heiankyo_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::alphaho_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::alphaho_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(alphaho_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::alphaho_io_w));
+}
-ADDRESS_MAP_START(vicdual_state::headonn_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::headonn_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(headonn_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::headonn_io_w));
+}
/* several of the games' lives DIPs are spread across two input ports */
@@ -2247,26 +2273,28 @@ WRITE8_MEMBER(vicdual_state::samurai_io_w)
/* dual game hardware */
-ADDRESS_MAP_START(vicdual_state::samurai_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM AM_WRITE(samurai_protection_w)
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM
- AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::samurai_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom().w(this, FUNC(vicdual_state::samurai_protection_w));
+ map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0x8400, 0x87ff).mirror(0x7000).ram();
+ map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::samurai_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7f)
+void vicdual_state::samurai_io_map(address_map &map)
+{
+ map.global_mask(0x7f);
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3")
+ map(0x00, 0x00).mirror(0x7c).portr("IN0");
+ map(0x01, 0x01).mirror(0x7c).portr("IN1");
+ map(0x02, 0x02).mirror(0x7c).portr("IN2");
+ map(0x03, 0x03).mirror(0x7c).portr("IN3");
/* no decoder, just logic gates, so in theory the
game can write to multiple locations at once */
- AM_RANGE(0x00, 0x7f) AM_WRITE(samurai_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x7f).w(this, FUNC(vicdual_state::samurai_io_w));
+}
static INPUT_PORTS_START( samurai )
@@ -2377,22 +2405,24 @@ WRITE8_MEMBER(nsub_state::nsub_io_w)
}
-ADDRESS_MAP_START(nsub_state::nsub_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void nsub_state::nsub_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0xbfff).noprw(); /* unused */
+ map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(nsub_state::videoram_w)).share("videoram");
+ map(0xc400, 0xc7ff).mirror(0x3000).ram();
+ map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(nsub_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(nsub_state::nsub_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void nsub_state::nsub_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(nsub_io_r, nsub_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(nsub_state::nsub_io_r), FUNC(nsub_state::nsub_io_w));
+}
// coinage is handled by extra hardware on a daughterboard, put before the coin-in pin on the main logic board
@@ -2564,22 +2594,24 @@ WRITE8_MEMBER(vicdual_state::invinco_io_w)
}
-ADDRESS_MAP_START(vicdual_state::invinco_map)
- AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */
- AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram")
-ADDRESS_MAP_END
+void vicdual_state::invinco_map(address_map &map)
+{
+ map(0x0000, 0x3fff).mirror(0x4000).rom();
+ map(0x8000, 0xbfff).noprw(); /* unused */
+ map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram");
+ map(0xc400, 0xc7ff).mirror(0x3000).ram();
+ map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram");
+}
-ADDRESS_MAP_START(vicdual_state::invinco_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0x0f)
+void vicdual_state::invinco_io_map(address_map &map)
+{
+ map.global_mask(0x0f);
/* no decoder, just logic gates, so in theory the
game can read/write from multiple locations at once */
- AM_RANGE(0x00, 0x0f) AM_READWRITE(invinco_io_r, invinco_io_w)
-ADDRESS_MAP_END
+ map(0x00, 0x0f).rw(this, FUNC(vicdual_state::invinco_io_r), FUNC(vicdual_state::invinco_io_w));
+}
static INPUT_PORTS_START( invinco )
diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp
index 82d858be2cf..71298463a79 100644
--- a/src/mame/drivers/victor9k.cpp
+++ b/src/mame/drivers/victor9k.cpp
@@ -191,24 +191,25 @@ public:
// ADDRESS_MAP( victor9k_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(victor9k_state::victor9k_mem)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0x20000, 0xdffff) AM_NOP
- AM_RANGE(0xe0000, 0xe0001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write)
- AM_RANGE(0xe0020, 0xe0023) AM_MIRROR(0x7f00) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
- AM_RANGE(0xe0040, 0xe0043) AM_MIRROR(0x7f00) AM_DEVREADWRITE(UPD7201_TAG, upd7201_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0xe8000, 0xe8000) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, status_r, address_w)
- AM_RANGE(0xe8001, 0xe8001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0xe8020, 0xe802f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
- AM_RANGE(0xe8040, 0xe804f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write)
- AM_RANGE(0xe8060, 0xe8061) AM_MIRROR(0x7f00) AM_DEVREADWRITE(MC6852_TAG, mc6852_device, read, write)
- AM_RANGE(0xe8080, 0xe808f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_3_TAG, via6522_device, read, write)
- AM_RANGE(0xe80a0, 0xe80af) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs5_r, cs5_w)
- AM_RANGE(0xe80c0, 0xe80cf) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs6_r, cs6_w)
- AM_RANGE(0xe80e0, 0xe80ef) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs7_r, cs7_w)
- AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xf8000, 0xf9fff) AM_MIRROR(0x6000) AM_ROM AM_REGION(I8088_TAG, 0)
-ADDRESS_MAP_END
+void victor9k_state::victor9k_mem(address_map &map)
+{
+ map(0x00000, 0x1ffff).ram();
+ map(0x20000, 0xdffff).noprw();
+ map(0xe0000, 0xe0001).mirror(0x7f00).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xe0020, 0xe0023).mirror(0x7f00).rw(I8253_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xe0040, 0xe0043).mirror(0x7f00).rw(m_upd7201, FUNC(upd7201_device::cd_ba_r), FUNC(upd7201_device::cd_ba_w));
+ map(0xe8000, 0xe8000).mirror(0x7f00).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0xe8001, 0xe8001).mirror(0x7f00).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xe8020, 0xe802f).mirror(0x7f00).rw(m_via1, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe8040, 0xe804f).mirror(0x7f00).rw(m_via2, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe8060, 0xe8061).mirror(0x7f00).rw(m_ssda, FUNC(mc6852_device::read), FUNC(mc6852_device::write));
+ map(0xe8080, 0xe808f).mirror(0x7f00).rw(m_via3, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0xe80a0, 0xe80af).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs5_r), FUNC(victor_9000_fdc_device::cs5_w));
+ map(0xe80c0, 0xe80cf).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs6_r), FUNC(victor_9000_fdc_device::cs6_w));
+ map(0xe80e0, 0xe80ef).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs7_r), FUNC(victor_9000_fdc_device::cs7_w));
+ map(0xf0000, 0xf0fff).mirror(0x1000).ram().share("video_ram");
+ map(0xf8000, 0xf9fff).mirror(0x6000).rom().region(I8088_TAG, 0);
+}
diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp
index d8fe9277f59..f27544c7c01 100644
--- a/src/mame/drivers/victory.cpp
+++ b/src/mame/drivers/victory.cpp
@@ -126,29 +126,31 @@ WRITE8_MEMBER(victory_state::lamp_control_w)
*
*************************************/
-ADDRESS_MAP_START(victory_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc0ff) AM_READ(video_control_r)
- AM_RANGE(0xc100, 0xc1ff) AM_WRITE(video_control_w)
- AM_RANGE(0xc200, 0xc3ff) AM_WRITE(paletteram_w)
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("charram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x07fc) AM_DEVREADWRITE("custom", victory_sound_device, response_r, command_w)
- AM_RANGE(0xf801, 0xf801) AM_MIRROR(0x07fc) AM_DEVREAD("custom", victory_sound_device, status_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(victory_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("SW2")
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("SW1")
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_WRITE(lamp_control_w)
- AM_RANGE(0x14, 0xff) AM_NOP
-ADDRESS_MAP_END
+void victory_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc0ff).r(this, FUNC(victory_state::video_control_r));
+ map(0xc100, 0xc1ff).w(this, FUNC(victory_state::video_control_w));
+ map(0xc200, 0xc3ff).w(this, FUNC(victory_state::paletteram_w));
+ map(0xc400, 0xc7ff).ram().share("videoram");
+ map(0xc800, 0xdfff).ram().share("charram");
+ map(0xe000, 0xefff).ram();
+ map(0xf000, 0xf7ff).ram().share("nvram");
+ map(0xf800, 0xf800).mirror(0x07fc).rw("custom", FUNC(victory_sound_device::response_r), FUNC(victory_sound_device::command_w));
+ map(0xf801, 0xf801).mirror(0x07fc).r("custom", FUNC(victory_sound_device::status_r));
+}
+
+
+void victory_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x03).portr("SW2");
+ map(0x04, 0x04).mirror(0x03).portr("SW1");
+ map(0x08, 0x0b).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0c, 0x0f).rw("pio2", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x10, 0x10).mirror(0x03).w(this, FUNC(victory_state::lamp_control_w));
+ map(0x14, 0xff).noprw();
+}
diff --git a/src/mame/drivers/vidbrain.cpp b/src/mame/drivers/vidbrain.cpp
index ec946198d24..e4962f226a7 100644
--- a/src/mame/drivers/vidbrain.cpp
+++ b/src/mame/drivers/vidbrain.cpp
@@ -226,28 +226,30 @@ WRITE8_MEMBER( vidbrain_state::f3853_w )
// ADDRESS_MAP( vidbrain_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(vidbrain_state::vidbrain_mem)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("res1", 0)
- AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x2300) AM_DEVREADWRITE(UV201_TAG, uv201_device, read, write)
- AM_RANGE(0x0c00, 0x0fff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE(VIDEOBRAIN_EXPANSION_SLOT_TAG, videobrain_expansion_slot_device, cs1_r, cs1_w)
- AM_RANGE(0x1800, 0x1fff) AM_DEVREADWRITE(VIDEOBRAIN_EXPANSION_SLOT_TAG, videobrain_expansion_slot_device, cs2_r, cs2_w)
- AM_RANGE(0x2000, 0x27ff) AM_ROM AM_REGION("res2", 0)
- AM_RANGE(0x3000, 0x3fff) AM_DEVREADWRITE(VIDEOBRAIN_EXPANSION_SLOT_TAG, videobrain_expansion_slot_device, unmap_r, unmap_w)
-ADDRESS_MAP_END
+void vidbrain_state::vidbrain_mem(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x07ff).rom().region("res1", 0);
+ map(0x0800, 0x08ff).mirror(0x2300).rw(m_uv, FUNC(uv201_device::read), FUNC(uv201_device::write));
+ map(0x0c00, 0x0fff).mirror(0x2000).ram();
+ map(0x1000, 0x17ff).rw(m_exp, FUNC(videobrain_expansion_slot_device::cs1_r), FUNC(videobrain_expansion_slot_device::cs1_w));
+ map(0x1800, 0x1fff).rw(m_exp, FUNC(videobrain_expansion_slot_device::cs2_r), FUNC(videobrain_expansion_slot_device::cs2_w));
+ map(0x2000, 0x27ff).rom().region("res2", 0);
+ map(0x3000, 0x3fff).rw(m_exp, FUNC(videobrain_expansion_slot_device::unmap_r), FUNC(videobrain_expansion_slot_device::unmap_w));
+}
//-------------------------------------------------
// ADDRESS_MAP( vidbrain_io )
//-------------------------------------------------
-ADDRESS_MAP_START(vidbrain_state::vidbrain_io)
- AM_RANGE(0x00, 0x00) AM_WRITE(keyboard_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(keyboard_r, sound_w)
- AM_RANGE(0x0c, 0x0f) AM_WRITE(f3853_w)
+void vidbrain_state::vidbrain_io(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(vidbrain_state::keyboard_w));
+ map(0x01, 0x01).rw(this, FUNC(vidbrain_state::keyboard_r), FUNC(vidbrain_state::sound_w));
+ map(0x0c, 0x0f).w(this, FUNC(vidbrain_state::f3853_w));
// AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(F3853_TAG, f3853_device, read, write)
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/videopin.cpp b/src/mame/drivers/videopin.cpp
index 34e2d7a92b0..1fdcb2bfe37 100644
--- a/src/mame/drivers/videopin.cpp
+++ b/src/mame/drivers/videopin.cpp
@@ -218,20 +218,21 @@ WRITE8_MEMBER(videopin_state::note_dvsr_w)
*
*************************************/
-ADDRESS_MAP_START(videopin_state::main_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x0200, 0x07ff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram")
- AM_RANGE(0x0800, 0x0800) AM_READ(misc_r) AM_WRITE(note_dvsr_w)
- AM_RANGE(0x0801, 0x0801) AM_WRITE(led_w)
- AM_RANGE(0x0802, 0x0802) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0804, 0x0804) AM_WRITE(ball_w)
- AM_RANGE(0x0805, 0x0805) AM_WRITE(out1_w)
- AM_RANGE(0x0806, 0x0806) AM_WRITE(out2_w)
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN0")
- AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW")
- AM_RANGE(0x2000, 0x3fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM /* mirror for 6502 vectors */
-ADDRESS_MAP_END
+void videopin_state::main_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x0200, 0x07ff).ram().w(this, FUNC(videopin_state::video_ram_w)).share("video_ram");
+ map(0x0800, 0x0800).r(this, FUNC(videopin_state::misc_r)).w(this, FUNC(videopin_state::note_dvsr_w));
+ map(0x0801, 0x0801).w(this, FUNC(videopin_state::led_w));
+ map(0x0802, 0x0802).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x0804, 0x0804).w(this, FUNC(videopin_state::ball_w));
+ map(0x0805, 0x0805).w(this, FUNC(videopin_state::out1_w));
+ map(0x0806, 0x0806).w(this, FUNC(videopin_state::out2_w));
+ map(0x1000, 0x1000).portr("IN0");
+ map(0x1800, 0x1800).portr("DSW");
+ map(0x2000, 0x3fff).rom();
+ map(0xe000, 0xffff).rom(); /* mirror for 6502 vectors */
+}
/*************************************
diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp
index e3d6b6f6670..b09187a9c4c 100644
--- a/src/mame/drivers/videopkr.cpp
+++ b/src/mame/drivers/videopkr.cpp
@@ -974,43 +974,51 @@ TIMER_DEVICE_CALLBACK_MEMBER(videopkr_state::sound_t1_callback)
* Memory Map Information *
*************************/
-ADDRESS_MAP_START(videopkr_state::i8039_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(videopkr_state::i8039_io_port)
- AM_RANGE(0x00, 0xff) AM_READWRITE(videopkr_io_r, videopkr_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(videopkr_state::i8751_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(videopkr_state::i8751_io_port)
- AM_RANGE(0x0000, 0x0fff) AM_RAM // NVRAM?
- AM_RANGE(0x8000, 0x8000) AM_NOP // ???
- AM_RANGE(0x9000, 0x9000) AM_WRITEONLY // ???
- AM_RANGE(0xa000, 0xbfff) AM_RAM // video RAM?
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_WRITEONLY // ???
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(videopkr_state::i8039_sound_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(videopkr_state::i8039_sound_port)
- AM_RANGE(0x00, 0xff) AM_READWRITE(sound_io_r, sound_io_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(videopkr_state::i8051_sound_mem)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(videopkr_state::i8051_sound_port)
- AM_RANGE(0x0000, 0x1ff) AM_RAM
-ADDRESS_MAP_END
+void videopkr_state::i8039_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void videopkr_state::i8039_io_port(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(videopkr_state::videopkr_io_r), FUNC(videopkr_state::videopkr_io_w));
+}
+
+void videopkr_state::i8751_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
+
+void videopkr_state::i8751_io_port(address_map &map)
+{
+ map(0x0000, 0x0fff).ram(); // NVRAM?
+ map(0x8000, 0x8000).noprw(); // ???
+ map(0x9000, 0x9000).writeonly(); // ???
+ map(0xa000, 0xbfff).ram(); // video RAM?
+ map(0xc000, 0xc003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xf000, 0xf000).writeonly(); // ???
+}
+
+void videopkr_state::i8039_sound_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void videopkr_state::i8039_sound_port(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(videopkr_state::sound_io_r), FUNC(videopkr_state::sound_io_w));
+}
+
+
+void videopkr_state::i8051_sound_mem(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+}
+
+void videopkr_state::i8051_sound_port(address_map &map)
+{
+ map(0x0000, 0x1ff).ram();
+}
/************************
diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp
index 2dea471ef4c..5b34a31efef 100644
--- a/src/mame/drivers/vigilant.cpp
+++ b/src/mame/drivers/vigilant.cpp
@@ -74,71 +74,78 @@ WRITE8_MEMBER(vigilant_state::kikcubic_coin_w)
-ADDRESS_MAP_START(vigilant_state::vigilant_map)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* Fallthrough */
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc020, 0xc0df) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vigilant_state::vigilant_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* SD */
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(vigilant_out2_w) /* OUT2 */
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_WRITE(bank_select_w) /* PBANK */
- AM_RANGE(0x80, 0x81) AM_WRITE(vigilant_horiz_scroll_w) /* HSPL, HSPH */
- AM_RANGE(0x82, 0x83) AM_WRITE(vigilant_rear_horiz_scroll_w) /* RHSPL, RHSPH */
- AM_RANGE(0x84, 0x84) AM_WRITE(vigilant_rear_color_w) /* RCOD */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vigilant_state::kikcubic_map)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* Fallthrough */
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vigilant_state::kikcubic_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(kikcubic_coin_w) /* also flip screen, and...? */
- AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(bank_select_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+void vigilant_state::vigilant_map(address_map &map)
+{
+ map(0x8000, 0xbfff).bankr("bank1"); /* Fallthrough */
+ map(0x0000, 0x7fff).rom();
+ map(0xc020, 0xc0df).ram().share("spriteram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(vigilant_state::paletteram_w)).share("paletteram");
+ map(0xd000, 0xdfff).ram().share("videoram");
+ map(0xe000, 0xefff).ram();
+}
+
+void vigilant_state::vigilant_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write)); /* SD */
+ map(0x01, 0x01).portr("IN1").w(this, FUNC(vigilant_state::vigilant_out2_w)); /* OUT2 */
+ map(0x02, 0x02).portr("IN2");
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2").w(this, FUNC(vigilant_state::bank_select_w)); /* PBANK */
+ map(0x80, 0x81).w(this, FUNC(vigilant_state::vigilant_horiz_scroll_w)); /* HSPL, HSPH */
+ map(0x82, 0x83).w(this, FUNC(vigilant_state::vigilant_rear_horiz_scroll_w)); /* RHSPL, RHSPH */
+ map(0x84, 0x84).w(this, FUNC(vigilant_state::vigilant_rear_color_w)); /* RCOD */
+}
+
+void vigilant_state::kikcubic_map(address_map &map)
+{
+ map(0x8000, 0xbfff).bankr("bank1"); /* Fallthrough */
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc0ff).ram().share("spriteram");
+ map(0xc800, 0xcaff).ram().w(this, FUNC(vigilant_state::paletteram_w)).share("paletteram");
+ map(0xd000, 0xdfff).ram().share("videoram");
+ map(0xe000, 0xffff).ram();
+}
+
+void vigilant_state::kikcubic_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("DSW1").w(this, FUNC(vigilant_state::kikcubic_coin_w)); /* also flip screen, and...? */
+ map(0x01, 0x01).portr("DSW2");
+ map(0x02, 0x02).portr("IN0");
+ map(0x03, 0x03).portr("IN1");
+ map(0x04, 0x04).portr("IN2").w(this, FUNC(vigilant_state::bank_select_w));
+ map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::write));
// AM_RANGE(0x07, 0x07) AM_WRITENOP /* ?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vigilant_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vigilant_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x81) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) /* IRQ clear */
- AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vigilant_state::buccanrs_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* SDRE */
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */
- AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) /* IRQ clear */
- AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */
-ADDRESS_MAP_END
+}
+
+void vigilant_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xf000, 0xffff).ram();
+}
+
+void vigilant_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x81).r("soundlatch", FUNC(generic_latch_8_device::read)).w(m_audio, FUNC(m72_audio_device::vigilant_sample_addr_w)); /* STL / STH */
+ map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); /* COUNT UP */
+ map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); /* IRQ clear */
+ map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); /* S ROM C */
+}
+
+void vigilant_state::buccanrs_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x02, 0x03).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); /* SDRE */
+ map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::vigilant_sample_addr_w)); /* STL / STH */
+ map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); /* COUNT UP */
+ map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); /* IRQ clear */
+ map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); /* S ROM C */
+}
static INPUT_PORTS_START( vigilant )
diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp
index 7ce8a1013ba..7c301ef9158 100644
--- a/src/mame/drivers/vii.cpp
+++ b/src/mame/drivers/vii.cpp
@@ -1010,17 +1010,18 @@ WRITE16_MEMBER( spg2xx_game_state::spriteram_w )
}
*/
-ADDRESS_MAP_START(spg2xx_game_state::vii_mem)
- AM_RANGE( 0x000000, 0x3fffff ) AM_ROMBANK("cart")
-
- AM_RANGE( 0x000000, 0x0027ff ) AM_RAM AM_SHARE("p_ram")
- AM_RANGE( 0x002800, 0x0028ff ) AM_READWRITE(video_r, video_w)
- AM_RANGE( 0x002900, 0x002aff ) AM_RAM AM_SHARE("p_rowscroll")
- AM_RANGE( 0x002b00, 0x002bff ) AM_RAM AM_SHARE("p_palette")
- AM_RANGE( 0x002c00, 0x002fff ) AM_RAM AM_SHARE("p_spriteram")
- AM_RANGE( 0x003000, 0x0037ff ) AM_READWRITE(audio_r, audio_w)
- AM_RANGE( 0x003d00, 0x003eff ) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void spg2xx_game_state::vii_mem(address_map &map)
+{
+ map(0x000000, 0x3fffff).bankr("cart");
+
+ map(0x000000, 0x0027ff).ram().share("p_ram");
+ map(0x002800, 0x0028ff).rw(this, FUNC(spg2xx_game_state::video_r), FUNC(spg2xx_game_state::video_w));
+ map(0x002900, 0x002aff).ram().share("p_rowscroll");
+ map(0x002b00, 0x002bff).ram().share("p_palette");
+ map(0x002c00, 0x002fff).ram().share("p_spriteram");
+ map(0x003000, 0x0037ff).rw(this, FUNC(spg2xx_game_state::audio_r), FUNC(spg2xx_game_state::audio_w));
+ map(0x003d00, 0x003eff).rw(this, FUNC(spg2xx_game_state::io_r), FUNC(spg2xx_game_state::io_w));
+}
static INPUT_PORTS_START( vii )
PORT_START("P1")
diff --git a/src/mame/drivers/vindictr.cpp b/src/mame/drivers/vindictr.cpp
index 822774feafc..bf2bdc0c83a 100644
--- a/src/mame/drivers/vindictr.cpp
+++ b/src/mame/drivers/vindictr.cpp
@@ -71,28 +71,29 @@ READ16_MEMBER(vindictr_state::port1_r)
*
*************************************/
-ADDRESS_MAP_START(vindictr_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
- AM_RANGE(0x260010, 0x26001f) AM_READ(port1_r)
- AM_RANGE(0x260020, 0x26002f) AM_READ_PORT("260020")
- AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
- AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(scanline_int_ack_w)
- AM_RANGE(0x360010, 0x360011) AM_WRITENOP
- AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w)
- AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff)
- AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE(vindictr_paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x3f4000, 0x3f4f7f) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0x3f4f80, 0x3f4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x3f5000, 0x3f7fff) AM_MIRROR(0x8000) AM_RAM
-ADDRESS_MAP_END
+void vindictr_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0x3fffff);
+ map(0x000000, 0x05ffff).rom();
+ map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x260000, 0x26000f).portr("260000");
+ map(0x260010, 0x26001f).r(this, FUNC(vindictr_state::port1_r));
+ map(0x260020, 0x26002f).portr("260020");
+ map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r));
+ map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x360000, 0x360001).w(this, FUNC(vindictr_state::scanline_int_ack_w));
+ map(0x360010, 0x360011).nopw();
+ map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w));
+ map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w));
+ map(0x3e0000, 0x3e0fff).ram().w(this, FUNC(vindictr_state::vindictr_paletteram_w)).share("paletteram");
+ map(0x3f0000, 0x3f1fff).mirror(0x8000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x3f2000, 0x3f3fff).mirror(0x8000).ram().share("mob");
+ map(0x3f4000, 0x3f4f7f).mirror(0x8000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0x3f4f80, 0x3f4fff).mirror(0x8000).ram().share("mob:slip");
+ map(0x3f5000, 0x3f7fff).mirror(0x8000).ram();
+}
diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp
index a97f3fe7c09..e2e1fde661e 100644
--- a/src/mame/drivers/vip.cpp
+++ b/src/mame/drivers/vip.cpp
@@ -372,20 +372,22 @@ WRITE8_MEMBER( vip_state::io_w )
// ADDRESS_MAP( vip_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(vip_state::vip_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
-ADDRESS_MAP_END
+void vip_state::vip_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(vip_state::read), FUNC(vip_state::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( vip_io )
//-------------------------------------------------
-ADDRESS_MAP_START(vip_state::vip_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x07) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void vip_state::vip_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x07).rw(this, FUNC(vip_state::io_r), FUNC(vip_state::io_w));
+}
diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp
index e617ec261e4..5c6dc36d082 100644
--- a/src/mame/drivers/viper.cpp
+++ b/src/mame/drivers/viper.cpp
@@ -2073,35 +2073,36 @@ WRITE64_MEMBER(viper_state::unk_serial_w)
/*****************************************************************************/
-ADDRESS_MAP_START(viper_state::viper_map)
+void viper_state::viper_map(address_map &map)
+{
// ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram")
- AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU)
- AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w)
- AM_RANGE(0x84000000, 0x85ffffff) AM_READWRITE(voodoo3_lfb_r, voodoo3_lfb_w)
- AM_RANGE(0xfe800000, 0xfe8000ff) AM_READWRITE(voodoo3_io_r, voodoo3_io_w)
- AM_RANGE(0xfec00000, 0xfedfffff) AM_READWRITE(pci_config_addr_r, pci_config_addr_w)
- AM_RANGE(0xfee00000, 0xfeefffff) AM_READWRITE(pci_config_data_r, pci_config_data_w)
+ map(0x00000000, 0x00ffffff).mirror(0x1000000).ram().share("workram");
+ map(0x80000000, 0x800fffff).rw(this, FUNC(viper_state::epic_r), FUNC(viper_state::epic_w));
+ map(0x82000000, 0x83ffffff).rw(this, FUNC(viper_state::voodoo3_r), FUNC(viper_state::voodoo3_w));
+ map(0x84000000, 0x85ffffff).rw(this, FUNC(viper_state::voodoo3_lfb_r), FUNC(viper_state::voodoo3_lfb_w));
+ map(0xfe800000, 0xfe8000ff).rw(this, FUNC(viper_state::voodoo3_io_r), FUNC(viper_state::voodoo3_io_w));
+ map(0xfec00000, 0xfedfffff).rw(this, FUNC(viper_state::pci_config_addr_r), FUNC(viper_state::pci_config_addr_w));
+ map(0xfee00000, 0xfeefffff).rw(this, FUNC(viper_state::pci_config_data_r), FUNC(viper_state::pci_config_data_w));
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
// 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd))
// AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device
- AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
- AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
- AM_RANGE(0xffe08000, 0xffe08007) AM_NOP
- AM_RANGE(0xffe10000, 0xffe10007) AM_READ8(input_r, 0xffffffffffffffffU)
- AM_RANGE(0xffe28000, 0xffe28007) AM_WRITENOP // ppp2nd lamps
- AM_RANGE(0xffe30000, 0xffe31fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffffffffffffU)
- AM_RANGE(0xffe40000, 0xffe4000f) AM_NOP
- AM_RANGE(0xffe50000, 0xffe50007) AM_WRITE(unk2_w)
- AM_RANGE(0xffe60000, 0xffe60007) AM_NOP
- AM_RANGE(0xffe70000, 0xffe7000f) AM_READWRITE(e70000_r, e70000_w)
- AM_RANGE(0xffe80000, 0xffe80007) AM_WRITE(unk1a_w)
- AM_RANGE(0xffe88000, 0xffe88007) AM_WRITE(unk1b_w)
- AM_RANGE(0xffe98000, 0xffe98007) AM_NOP
- AM_RANGE(0xffe9a000, 0xffe9bfff) AM_RAM // World Combat uses this
- AM_RANGE(0xfff00000, 0xfff3ffff) AM_ROM AM_REGION("user1", 0) // Boot ROM
-ADDRESS_MAP_END
+ map(0xffe00000, 0xffe00007).r(this, FUNC(viper_state::e00000_r));
+ map(0xffe00008, 0xffe0000f).rw(this, FUNC(viper_state::e00008_r), FUNC(viper_state::e00008_w));
+ map(0xffe08000, 0xffe08007).noprw();
+ map(0xffe10000, 0xffe10007).r(this, FUNC(viper_state::input_r));
+ map(0xffe28000, 0xffe28007).nopw(); // ppp2nd lamps
+ map(0xffe30000, 0xffe31fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
+ map(0xffe40000, 0xffe4000f).noprw();
+ map(0xffe50000, 0xffe50007).w(this, FUNC(viper_state::unk2_w));
+ map(0xffe60000, 0xffe60007).noprw();
+ map(0xffe70000, 0xffe7000f).rw(this, FUNC(viper_state::e70000_r), FUNC(viper_state::e70000_w));
+ map(0xffe80000, 0xffe80007).w(this, FUNC(viper_state::unk1a_w));
+ map(0xffe88000, 0xffe88007).w(this, FUNC(viper_state::unk1b_w));
+ map(0xffe98000, 0xffe98007).noprw();
+ map(0xffe9a000, 0xffe9bfff).ram(); // World Combat uses this
+ map(0xfff00000, 0xfff3ffff).rom().region("user1", 0); // Boot ROM
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp
index 3ecbc006231..25e2ecf486d 100644
--- a/src/mame/drivers/vis.cpp
+++ b/src/mame/drivers/vis.cpp
@@ -830,32 +830,34 @@ WRITE8_MEMBER(vis_state::sysctl_w)
m_sysctl = data;
}
-ADDRESS_MAP_START(vis_state::at16_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x09ffff) AM_RAM
- AM_RANGE(0x0d8000, 0x0fffff) AM_ROM AM_REGION("bios", 0xd8000)
- AM_RANGE(0x100000, 0x15ffff) AM_RAM
- AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("bios", 0)
- AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("bios", 0xf0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vis_state::at16_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("mb:dma8237_1", am9517a_device, read, write, 0xffff)
- AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("mb:pic8259_master", pic8259_device, read, write, 0xffff)
- AM_RANGE(0x0026, 0x0027) AM_READWRITE8(unk_r, unk_w, 0xffff)
- AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("mb:pit8254", pit8254_device, read, write, 0xffff)
- AM_RANGE(0x0060, 0x0065) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffff)
- AM_RANGE(0x006a, 0x006b) AM_READ8(unk2_r, 0x00ff)
- AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("mb", at_mb_device, page8_r, page8_w, 0xffff)
- AM_RANGE(0x0092, 0x0093) AM_READWRITE8(sysctl_r, sysctl_w, 0x00ff)
- AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("mb:pic8259_slave", pic8259_device, read, write, 0xffff)
- AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("mb:dma8237_2", am9517a_device, read, write, 0x00ff)
- AM_RANGE(0x00e0, 0x00e1) AM_NOP
- AM_RANGE(0x023c, 0x023f) AM_READWRITE8(unk1_r, unk1_w, 0xffff)
- AM_RANGE(0x0268, 0x026f) AM_READWRITE(pad_r, pad_w)
- AM_RANGE(0x031a, 0x031b) AM_READ8(unk3_r, 0x00ff)
-ADDRESS_MAP_END
+void vis_state::at16_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x09ffff).ram();
+ map(0x0d8000, 0x0fffff).rom().region("bios", 0xd8000);
+ map(0x100000, 0x15ffff).ram();
+ map(0x300000, 0x3fffff).rom().region("bios", 0);
+ map(0xff0000, 0xffffff).rom().region("bios", 0xf0000);
+}
+
+void vis_state::at16_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x0020, 0x003f).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0026, 0x0027).rw(this, FUNC(vis_state::unk_r), FUNC(vis_state::unk_w));
+ map(0x0040, 0x005f).rw("mb:pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write));
+ map(0x0060, 0x0065).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w));
+ map(0x006a, 0x006a).r(this, FUNC(vis_state::unk2_r));
+ map(0x0080, 0x009f).rw("mb", FUNC(at_mb_device::page8_r), FUNC(at_mb_device::page8_w));
+ map(0x0092, 0x0092).rw(this, FUNC(vis_state::sysctl_r), FUNC(vis_state::sysctl_w));
+ map(0x00a0, 0x00bf).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x00c0, 0x00df).rw("mb:dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff);
+ map(0x00e0, 0x00e1).noprw();
+ map(0x023c, 0x023f).rw(this, FUNC(vis_state::unk1_r), FUNC(vis_state::unk1_w));
+ map(0x0268, 0x026f).rw(this, FUNC(vis_state::pad_r), FUNC(vis_state::pad_w));
+ map(0x031a, 0x031a).r(this, FUNC(vis_state::unk3_r));
+}
static SLOT_INTERFACE_START(vis_cards)
SLOT_INTERFACE("visaudio", VIS_AUDIO)
diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp
index 01b1e74ba02..8e8ee570d74 100644
--- a/src/mame/drivers/vixen.cpp
+++ b/src/mame/drivers/vixen.cpp
@@ -260,40 +260,43 @@ READ8_MEMBER( vixen_state::port3_r )
//-------------------------------------------------
// when M1 is inactive: read and write of data
-ADDRESS_MAP_START(vixen_state::vixen_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank4") AM_SHARE("video_ram")
-ADDRESS_MAP_END
+void vixen_state::vixen_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).ram();
+ map(0xf000, 0xffff).bankr("bank3").bankw("bank4").share("video_ram");
+}
// when M1 is active: read opcodes
-ADDRESS_MAP_START(vixen_state::bios_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_READ(opram_r)
- AM_RANGE(0xf000, 0xffff) AM_READ(oprom_r)
-ADDRESS_MAP_END
+void vixen_state::bios_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).r(this, FUNC(vixen_state::opram_r));
+ map(0xf000, 0xffff).r(this, FUNC(vixen_state::oprom_r));
+}
//-------------------------------------------------
// ADDRESS_MAP( vixen_io )
//-------------------------------------------------
-ADDRESS_MAP_START(vixen_state::vixen_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(FDC1797_TAG, fd1797_device, read, write)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READWRITE(status_r, cmd_w)
- AM_RANGE(0x08, 0x08) AM_MIRROR(0x01) AM_DEVREADWRITE(P8155H_TAG, i8155_device, read, write)
- AM_RANGE(0x0c, 0x0d) AM_DEVWRITE(P8155H_TAG, i8155_device, ale_w)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0x07) AM_DEVREAD(IEEE488_TAG, ieee488_device, dio_r)
- AM_RANGE(0x18, 0x18) AM_MIRROR(0x07) AM_READ(ieee488_r)
- AM_RANGE(0x20, 0x21) AM_MIRROR(0x04) AM_DEVWRITE(P8155H_IO_TAG, i8155_device, ale_w)
- AM_RANGE(0x28, 0x28) AM_MIRROR(0x05) AM_DEVREADWRITE(P8155H_IO_TAG, i8155_device, read, write)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0x06) AM_DEVREADWRITE(P8251A_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREADWRITE(P8251A_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x38, 0x38) AM_MIRROR(0x07) AM_READ(port3_r)
+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(this, FUNC(vixen_state::status_r), FUNC(vixen_state::cmd_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(this, 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::read), FUNC(i8155_device::write));
+ map(0x30, 0x30).mirror(0x06).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x31, 0x31).mirror(0x06).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x38, 0x38).mirror(0x07).r(this, FUNC(vixen_state::port3_r));
// AM_RANGE(0xf0, 0xff) Hard Disk?
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp
index 6e57f728e90..ee95c27928f 100644
--- a/src/mame/drivers/vk100.cpp
+++ b/src/mame/drivers/vk100.cpp
@@ -687,12 +687,13 @@ READ8_MEMBER(vk100_state::vk100_keyboard_column_r)
return code;
}
-ADDRESS_MAP_START(vk100_state::vk100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x6fff ) AM_ROM
- AM_RANGE( 0x7000, 0x700f ) AM_MIRROR(0x0ff0) AM_READ(vk100_keyboard_column_r)
- AM_RANGE( 0x8000, 0xbfff ) AM_RAM
-ADDRESS_MAP_END
+void vk100_state::vk100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x700f).mirror(0x0ff0).r(this, FUNC(vk100_state::vk100_keyboard_column_r));
+ map(0x8000, 0xbfff).ram();
+}
/*
* 8085 IO address map (x = ignored; * = selects address within this range; ? = not sure; ** = subparts check this bit)
@@ -735,37 +736,38 @@ ADDRESS_MAP_END
x 1 1 1 1 0 x x W unused
x 1 1 1 1 1 x x W unused
*/
-ADDRESS_MAP_START(vk100_state::vk100_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff) // guess, probably correct
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xBE) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0xBE) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+void vk100_state::vk100_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff); // guess, probably correct
+ map(0x00, 0x00).mirror(0xBE).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x01, 0x01).mirror(0xBE).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
// Comments are from page 118 (5-14) of http://web.archive.org/web/20091015205827/http://www.computer.museum.uq.edu.au/pdf/EK-VK100-TM-001%20VK100%20Technical%20Manual.pdf
- AM_RANGE (0x40, 0x41) AM_MIRROR(0x98) AM_WRITE(vgLD_X) //LD X LO + HI 12 bits
- AM_RANGE (0x42, 0x43) AM_MIRROR(0x98) AM_WRITE(vgLD_Y) //LD Y LO + HI 12 bits
- AM_RANGE (0x44, 0x44) AM_MIRROR(0x98) AM_WRITE(vgERR) //LD ERR ('error' in bresenham algorithm)
- AM_RANGE (0x45, 0x45) AM_MIRROR(0x98) AM_WRITE(vgSOPS) //LD SOPS (screen options (plus uart dest))
- AM_RANGE (0x46, 0x46) AM_MIRROR(0x98) AM_WRITE(vgPAT) //LD PAT (pattern register)
- AM_RANGE (0x47, 0x47) AM_MIRROR(0x98) AM_WRITE(vgPMUL) //LD PMUL (pattern multiplier)
- AM_RANGE (0x60, 0x63) AM_MIRROR(0x80) AM_WRITE(vgREG) //LD DU, DVM, DIR, WOPS (register file)
- AM_RANGE (0x64, 0x67) AM_MIRROR(0x80) AM_WRITE(vgEX) //EX MOV, DOT, VEC, ER
- AM_RANGE (0x68, 0x68) AM_MIRROR(0x83) AM_WRITE(KBDW) //KBDW (probably AM_MIRROR(0x03))
- AM_RANGE (0x6C, 0x6C) AM_MIRROR(0x83) AM_WRITE(BAUD) //LD BAUD (baud rate clock divider setting for i8251 tx and rx clocks) (probably AM_MIRROR(0x03))
- AM_RANGE (0x70, 0x70) AM_MIRROR(0x82) AM_DEVWRITE("i8251", i8251_device, data_w) //LD COMD (i8251 data reg)
- AM_RANGE (0x71, 0x71) AM_MIRROR(0x82) AM_DEVWRITE("i8251", i8251_device, control_w) //LD COM (i8251 control reg)
+ map(0x40, 0x41).mirror(0x98).w(this, FUNC(vk100_state::vgLD_X)); //LD X LO + HI 12 bits
+ map(0x42, 0x43).mirror(0x98).w(this, FUNC(vk100_state::vgLD_Y)); //LD Y LO + HI 12 bits
+ map(0x44, 0x44).mirror(0x98).w(this, FUNC(vk100_state::vgERR)); //LD ERR ('error' in bresenham algorithm)
+ map(0x45, 0x45).mirror(0x98).w(this, FUNC(vk100_state::vgSOPS)); //LD SOPS (screen options (plus uart dest))
+ map(0x46, 0x46).mirror(0x98).w(this, FUNC(vk100_state::vgPAT)); //LD PAT (pattern register)
+ map(0x47, 0x47).mirror(0x98).w(this, FUNC(vk100_state::vgPMUL)); //LD PMUL (pattern multiplier)
+ map(0x60, 0x63).mirror(0x80).w(this, FUNC(vk100_state::vgREG)); //LD DU, DVM, DIR, WOPS (register file)
+ map(0x64, 0x67).mirror(0x80).w(this, FUNC(vk100_state::vgEX)); //EX MOV, DOT, VEC, ER
+ map(0x68, 0x68).mirror(0x83).w(this, FUNC(vk100_state::KBDW)); //KBDW (probably AM_MIRROR(0x03))
+ map(0x6C, 0x6C).mirror(0x83).w(this, FUNC(vk100_state::BAUD)); //LD BAUD (baud rate clock divider setting for i8251 tx and rx clocks) (probably AM_MIRROR(0x03))
+ map(0x70, 0x70).mirror(0x82).w(m_uart, FUNC(i8251_device::data_w)); //LD COMD (i8251 data reg)
+ map(0x71, 0x71).mirror(0x82).w(m_uart, FUNC(i8251_device::control_w)); //LD COM (i8251 control reg)
//AM_RANGE (0x74, 0x74) AM_MIRROR(0x83) AM_WRITE(unknown_74)
//AM_RANGE (0x78, 0x78) AM_MIRROR(0x83) AM_WRITE(kbdw) //KBDW ?(mirror?)
//AM_RANGE (0x7C, 0x7C) AM_MIRROR(0x83) AM_WRITE(unknown_7C)
- AM_RANGE (0x40, 0x47) AM_MIRROR(0x80) AM_READ(SYSTAT_A) // SYSTAT A (state machine done and last 4 bits of vram, as well as dipswitches)
- AM_RANGE (0x48, 0x48) AM_MIRROR(0x87/*0x80*/) AM_READ(SYSTAT_B) // SYSTAT B (uart stuff)
- AM_RANGE (0x50, 0x50) AM_MIRROR(0x86) AM_DEVREAD("i8251", i8251_device, data_r) // UART O
- AM_RANGE (0x51, 0x51) AM_MIRROR(0x86) AM_DEVREAD("i8251", i8251_device, status_r) // UAR
+ map(0x40, 0x47).mirror(0x80).r(this, FUNC(vk100_state::SYSTAT_A)); // SYSTAT A (state machine done and last 4 bits of vram, as well as dipswitches)
+ map(0x48, 0x48).mirror(0x87/*0x80*/).r(this, FUNC(vk100_state::SYSTAT_B)); // SYSTAT B (uart stuff)
+ map(0x50, 0x50).mirror(0x86).r(m_uart, FUNC(i8251_device::data_r)); // UART O
+ map(0x51, 0x51).mirror(0x86).r(m_uart, FUNC(i8251_device::status_r)); // UAR
//AM_RANGE (0x58, 0x58) AM_MIRROR(0x87) AM_READ(unknown_58)
//AM_RANGE (0x60, 0x60) AM_MIRROR(0x87) AM_READ(unknown_60)
//AM_RANGE (0x68, 0x68) AM_MIRROR(0x87) AM_READ(unknown_68) // NOT USED
//AM_RANGE (0x70, 0x70) AM_MIRROR(0x87) AM_READ(unknown_70)
//AM_RANGE (0x78, 0x7f) AM_MIRROR(0x87) AM_READ(unknown_78)
-ADDRESS_MAP_END
+}
/* Input ports */
static INPUT_PORTS_START( vk100 )
diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp
index d8d7fa170c6..a2dcec825aa 100644
--- a/src/mame/drivers/vlc.cpp
+++ b/src/mame/drivers/vlc.cpp
@@ -512,25 +512,26 @@ U40 MC68681 Pin27 OP4 JCM Bill Acceptor (J4-6, J4-7 Control)
00E000x0 68681 CS UART U18 RS1..RS4 REGISTER (A4..A7 ON RS1..RS4) Data bus on D15..D8
*/
/***************************************************************************/
-ADDRESS_MAP_START(nevada_state::nevada_map)
- AM_RANGE(0x00000000, 0x0000ffff) AM_RAM AM_SHARE("ram62256")
- AM_RANGE(0x00010000, 0x00021fff) AM_RAM AM_SHARE("backup")
- AM_RANGE(0x00900000, 0x00900001) AM_DEVWRITE8("crtc",mc6845_device, address_w,0x00ff )
- AM_RANGE(0x00908000, 0x00908001) AM_DEVWRITE8("crtc",mc6845_device,register_w,0x00ff )
- AM_RANGE(0x00a00000, 0x00a00001) AM_READWRITE(io_board_r,io_board_w)
- AM_RANGE(0x00a08000, 0x00a08001) AM_WRITE(io_board_x)
- AM_RANGE(0x00a10000, 0x00a10001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x00a20000, 0x00a20001) AM_DEVWRITE8("aysnd", ay8910_device, address_w, 0x00ff)
- AM_RANGE(0x00a28000, 0x00a28001) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff)
- AM_RANGE(0x00a30000, 0x00A300ff) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
- AM_RANGE(0x00a40000, 0x00A40001) AM_READWRITE( nevada_sec_r, nevada_sec_w)
- AM_RANGE(0x00b00000, 0x00b03fff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE(0x00b10000, 0x00b100ff) AM_DEVREADWRITE8( "duart40_68681", mc68681_device, read, write, 0x00ff ) // Lower byte
- AM_RANGE(0x00b20000, 0x00b200ff) AM_DEVREADWRITE8( "duart39_68681", mc68681_device, read, write, 0x00ff ) // Lower byte
- AM_RANGE(0x00e00000, 0x00e000ff) AM_DEVREADWRITE8( "duart18_68681", mc68681_device, read, write, 0xff00 ) // Upper byte
- AM_RANGE(0x00fa0000, 0x00fbffff) AM_RAM // not used
- AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM // ROM ext + ROM boot
-ADDRESS_MAP_END
+void nevada_state::nevada_map(address_map &map)
+{
+ map(0x00000000, 0x0000ffff).ram().share("ram62256");
+ map(0x00010000, 0x00021fff).ram().share("backup");
+ map(0x00900001, 0x00900001).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x00908001, 0x00908001).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x00a00000, 0x00a00001).rw(this, FUNC(nevada_state::io_board_r), FUNC(nevada_state::io_board_w));
+ map(0x00a08000, 0x00a08001).w(this, FUNC(nevada_state::io_board_x));
+ map(0x00a10000, 0x00a10001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x00a20001, 0x00a20001).w("aysnd", FUNC(ay8910_device::address_w));
+ map(0x00a28001, 0x00a28001).w("aysnd", FUNC(ay8910_device::data_w));
+ map(0x00a30000, 0x00A300ff).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff);
+ map(0x00a40000, 0x00A40001).rw(this, FUNC(nevada_state::nevada_sec_r), FUNC(nevada_state::nevada_sec_w));
+ map(0x00b00000, 0x00b03fff).ram().w(this, FUNC(nevada_state::vram_w)).share("vram");
+ map(0x00b10000, 0x00b100ff).rw(m_duart40_68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); // Lower byte
+ map(0x00b20000, 0x00b200ff).rw(m_duart39_68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); // Lower byte
+ map(0x00e00000, 0x00e000ff).rw(m_duart18_68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00); // Upper byte
+ map(0x00fa0000, 0x00fbffff).ram(); // not used
+ map(0x00fc0000, 0x00ffffff).rom(); // ROM ext + ROM boot
+}
/***************************************************************************/
diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp
index bc612b40c61..77b0013642f 100644
--- a/src/mame/drivers/volfied.cpp
+++ b/src/mame/drivers/volfied.cpp
@@ -66,30 +66,32 @@ Stephh's notes (based on the game M68000 code and some tests) :
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(volfied_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM /* program */
- AM_RANGE(0x080000, 0x0fffff) AM_ROM /* tiles */
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* main */
- AM_RANGE(0x200000, 0x203fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w)
- AM_RANGE(0x400000, 0x47ffff) AM_READWRITE(video_ram_r, video_ram_w)
- AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600000, 0x600001) AM_WRITE(video_mask_w)
- AM_RANGE(0x700000, 0x700001) AM_WRITE(sprite_ctrl_w)
- AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(video_ctrl_r, video_ctrl_w)
- AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0xe00002, 0xe00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0xf00000, 0xf007ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff)
- AM_RANGE(0xf00800, 0xf00fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(volfied_state::z80_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0x8801, 0x8801) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_WRITENOP /* ? */
-ADDRESS_MAP_END
+void volfied_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); /* program */
+ map(0x080000, 0x0fffff).rom(); /* tiles */
+ map(0x100000, 0x103fff).ram(); /* main */
+ map(0x200000, 0x203fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w));
+ map(0x400000, 0x47ffff).rw(this, FUNC(volfied_state::video_ram_r), FUNC(volfied_state::video_ram_w));
+ map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x600000, 0x600001).w(this, FUNC(volfied_state::video_mask_w));
+ map(0x700000, 0x700001).w(this, FUNC(volfied_state::sprite_ctrl_w));
+ map(0xd00000, 0xd00001).rw(this, FUNC(volfied_state::video_ctrl_r), FUNC(volfied_state::video_ctrl_w));
+ map(0xe00001, 0xe00001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xe00003, 0xe00003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xf00000, 0xf007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff);
+ map(0xf00800, 0xf00fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff);
+}
+
+void volfied_state::z80_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0x8801, 0x8801).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x9800, 0x9800).nopw(); /* ? */
+}
/***********************************************************
diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp
index ee2bb5fb289..afab1535aa0 100644
--- a/src/mame/drivers/votrpss.cpp
+++ b/src/mame/drivers/votrpss.cpp
@@ -119,25 +119,27 @@ private:
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(votrpss_state::votrpss_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM /* main roms (in potted module) */
- AM_RANGE(0x4000, 0x7fff) AM_NOP /* open bus/space for expansion rom (reads as 0xFF) */
- AM_RANGE(0x8000, 0x8fff) AM_RAM /* onboard memory (2x 6116) */
- AM_RANGE(0x9000, 0xbfff) AM_NOP /* open bus (space for memory expansion, checked by main roms, will be used if found)*/
- AM_RANGE(0xc000, 0xdfff) AM_ROM /* 'personality rom', containing self-test code and optional user code */
- AM_RANGE(0xe000, 0xffff) AM_NOP /* open bus (space for more personality rom, not normally used) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(votrpss_state::votrpss_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3e) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
- AM_RANGE(0x41, 0x41) AM_MIRROR(0x3e) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE("pit", pit8253_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3e) AM_DEVREADWRITE("ay", ay8910_device, data_r, address_w)
- AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3e) AM_DEVREADWRITE("ay", ay8910_device, data_r, data_w)
-ADDRESS_MAP_END
+void votrpss_state::votrpss_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom(); /* main roms (in potted module) */
+ map(0x4000, 0x7fff).noprw(); /* open bus/space for expansion rom (reads as 0xFF) */
+ map(0x8000, 0x8fff).ram(); /* onboard memory (2x 6116) */
+ map(0x9000, 0xbfff).noprw(); /* open bus (space for memory expansion, checked by main roms, will be used if found)*/
+ map(0xc000, 0xdfff).rom(); /* 'personality rom', containing self-test code and optional user code */
+ map(0xe000, 0xffff).noprw(); /* open bus (space for more personality rom, not normally used) */
+}
+
+void votrpss_state::votrpss_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).mirror(0x3c).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x40, 0x40).mirror(0x3e).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x41, 0x41).mirror(0x3e).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x80, 0x83).mirror(0x3c).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0xc0, 0xc0).mirror(0x3e).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
+ map(0xc1, 0xc1).mirror(0x3e).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+}
/******************************************************************************
diff --git a/src/mame/drivers/votrtnt.cpp b/src/mame/drivers/votrtnt.cpp
index d83a2e7a385..fc091edc8e4 100644
--- a/src/mame/drivers/votrtnt.cpp
+++ b/src/mame/drivers/votrtnt.cpp
@@ -80,13 +80,14 @@ private:
x 1 1 x * * * * * * * * * * * * R ROM (2332 4kx8 Mask ROM, inside potted brick)
*/
-ADDRESS_MAP_START(votrtnt_state::_6802_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x9c00) AM_RAM /* RAM, 2114*2 (0x400 bytes) mirrored 4x */
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x9ffe) AM_DEVREADWRITE("acia", acia6850_device, read, write)
- AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x9fff) AM_DEVWRITE("votrax", votrax_sc01_device, write)
- AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x9000) AM_ROM /* ROM in potted block */
-ADDRESS_MAP_END
+void votrtnt_state::_6802_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x03ff).mirror(0x9c00).ram(); /* RAM, 2114*2 (0x400 bytes) mirrored 4x */
+ map(0x2000, 0x2001).mirror(0x9ffe).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x4000, 0x4000).mirror(0x9fff).w(m_votrax, FUNC(votrax_sc01_device::write));
+ map(0x6000, 0x6fff).mirror(0x9000).rom(); /* ROM in potted block */
+}
/******************************************************************************
diff --git a/src/mame/drivers/voyager.cpp b/src/mame/drivers/voyager.cpp
index ee4fbb30282..4b2ba7c8e5d 100644
--- a/src/mame/drivers/voyager.cpp
+++ b/src/mame/drivers/voyager.cpp
@@ -240,23 +240,24 @@ WRITE32_MEMBER(voyager_state::bios_ram_w)
}
}
-ADDRESS_MAP_START(voyager_state::voyager_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) // VGA VRAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0)
- AM_RANGE(0x000c8000, 0x000cffff) AM_NOP
+void voyager_state::voyager_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w)); // VGA VRAM
+ map(0x000c0000, 0x000c7fff).ram().region("video_bios", 0);
+ map(0x000c8000, 0x000cffff).noprw();
//AM_RANGE(0x000d0000, 0x000d0003) AM_RAM // XYLINX - Sincronus serial communication
- AM_RANGE(0x000d0008, 0x000d000b) AM_WRITENOP // ???
- AM_RANGE(0x000d0800, 0x000d0fff) AM_ROM AM_REGION("nvram",0) //
+ map(0x000d0008, 0x000d000b).nopw(); // ???
+ map(0x000d0800, 0x000d0fff).rom().region("nvram", 0); //
// AM_RANGE(0x000d0800, 0x000d0fff) AM_RAM // GAME_CMOS
//GRULL AM_RANGE(0x000e0000, 0x000effff) AM_RAM
//GRULL-AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
//GRULL AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w)
- AM_RANGE(0x000e0000, 0x000fffff) AM_ROMBANK("bank1")
- AM_RANGE(0x000e0000, 0x000fffff) AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x03ffffff) AM_RAM // 64MB
- AM_RANGE(0x04000000, 0x28ffffff) AM_NOP
+ map(0x000e0000, 0x000fffff).bankr("bank1");
+ map(0x000e0000, 0x000fffff).w(this, FUNC(voyager_state::bios_ram_w));
+ map(0x00100000, 0x03ffffff).ram(); // 64MB
+ map(0x04000000, 0x28ffffff).noprw();
//AM_RANGE(0x04000000, 0x040001ff) AM_RAM
//AM_RANGE(0x08000000, 0x080001ff) AM_RAM
//AM_RANGE(0x0c000000, 0x0c0001ff) AM_RAM
@@ -265,45 +266,46 @@ ADDRESS_MAP_START(voyager_state::voyager_map)
//AM_RANGE(0x18000000, 0x180001ff) AM_RAM
//AM_RANGE(0x20000000, 0x200001ff) AM_RAM
//AM_RANGE(0x28000000, 0x280001ff) AM_RAM
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
-ADDRESS_MAP_START(voyager_state::voyager_io)
- AM_IMPORT_FROM(pcat32_io_common)
+void voyager_state::voyager_io(address_map &map)
+{
+ pcat32_io_common(map);
//AM_RANGE(0x00e8, 0x00eb) AM_NOP
- AM_RANGE(0x00e8, 0x00ef) AM_NOP //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY
- AM_RANGE(0x0170, 0x0177) AM_NOP //To debug
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x0200, 0x021f) AM_NOP //To debug
- AM_RANGE(0x0260, 0x026f) AM_NOP //To debug
- AM_RANGE(0x0278, 0x027b) AM_WRITENOP//AM_WRITE(pnp_config_w)
- AM_RANGE(0x0280, 0x0287) AM_NOP //To debug
- AM_RANGE(0x02a0, 0x02a7) AM_NOP //To debug
- AM_RANGE(0x02c0, 0x02c7) AM_NOP //To debug
- AM_RANGE(0x02e0, 0x02ef) AM_NOP //To debug
- AM_RANGE(0x02f8, 0x02ff) AM_NOP //To debug
- AM_RANGE(0x0320, 0x038f) AM_NOP //To debug
- AM_RANGE(0x03a0, 0x03a7) AM_NOP //To debug
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
- AM_RANGE(0x03e0, 0x03ef) AM_NOP //To debug
- AM_RANGE(0x0378, 0x037f) AM_NOP //To debug
+ map(0x00e8, 0x00ef).noprw(); //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY
+ map(0x0170, 0x0177).noprw(); //To debug
+ map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0));
+ map(0x0200, 0x021f).noprw(); //To debug
+ map(0x0260, 0x026f).noprw(); //To debug
+ map(0x0278, 0x027b).nopw();//AM_WRITE(pnp_config_w)
+ map(0x0280, 0x0287).noprw(); //To debug
+ map(0x02a0, 0x02a7).noprw(); //To debug
+ map(0x02c0, 0x02c7).noprw(); //To debug
+ map(0x02e0, 0x02ef).noprw(); //To debug
+ map(0x02f8, 0x02ff).noprw(); //To debug
+ map(0x0320, 0x038f).noprw(); //To debug
+ map(0x03a0, 0x03a7).noprw(); //To debug
+ map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w));
+ map(0x03e0, 0x03ef).noprw(); //To debug
+ map(0x0378, 0x037f).noprw(); //To debug
// AM_RANGE(0x0300, 0x03af) AM_NOP
// AM_RANGE(0x03b0, 0x03df) AM_NOP
- AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff)
- AM_RANGE(0x03f8, 0x03ff) AM_NOP // To debug Serial Port COM1:
- AM_RANGE(0x0a78, 0x0a7b) AM_WRITENOP//AM_WRITE(pnp_data_w)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
- AM_RANGE(0x42e8, 0x43ef) AM_NOP //To debug
- AM_RANGE(0x43c0, 0x43cf) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x46e8, 0x46ef) AM_NOP //To debug
- AM_RANGE(0x4ae8, 0x4aef) AM_NOP //To debug
- AM_RANGE(0x83c0, 0x83cf) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x92e8, 0x92ef) AM_NOP //To debug
-
-ADDRESS_MAP_END
+ map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1));
+ map(0x03f8, 0x03ff).noprw(); // To debug Serial Port COM1:
+ map(0x0a78, 0x0a7b).nopw();//AM_WRITE(pnp_data_w)
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+ map(0x42e8, 0x43ef).noprw(); //To debug
+ map(0x43c0, 0x43cf).ram().share("share1");
+ map(0x46e8, 0x46ef).noprw(); //To debug
+ map(0x4ae8, 0x4aef).noprw(); //To debug
+ map(0x83c0, 0x83cf).ram().share("share1");
+ map(0x92e8, 0x92ef).noprw(); //To debug
+
+}
#define AT_KEYB_HELPER(bit, text, key1) \
PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1)
diff --git a/src/mame/drivers/vp101.cpp b/src/mame/drivers/vp101.cpp
index c8bdf61cd55..919ebff2591 100644
--- a/src/mame/drivers/vp101.cpp
+++ b/src/mame/drivers/vp101.cpp
@@ -311,39 +311,41 @@ WRITE32_MEMBER(vp10x_state::tty_w) // set breakpoint at bfc01430 to catch when
// printf("%c", data);
}
-ADDRESS_MAP_START(vp10x_state::main_map)
- AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x14000000, 0x14000003) AM_READ(test_r)
- AM_RANGE(0x1c000000, 0x1c000003) AM_WRITE(tty_w) // RSS OS code uses this one
- AM_RANGE(0x1c000014, 0x1c000017) AM_READ(tty_ready_r)
- AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one
- AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r)
- AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0")
- AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff
- AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP
- AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address
- AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff)
- AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff)
- AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w)
- AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vp10x_state::vp50_map)
- AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff)
- AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download?
- AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
+void vp10x_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x07ffffff).ram().share("mainram");
+ map(0x14000000, 0x14000003).r(this, FUNC(vp10x_state::test_r));
+ map(0x1c000000, 0x1c000003).w(this, FUNC(vp10x_state::tty_w)); // RSS OS code uses this one
+ map(0x1c000014, 0x1c000017).r(this, FUNC(vp10x_state::tty_ready_r));
+ map(0x1c400000, 0x1c400003).w(this, FUNC(vp10x_state::tty_w)); // boot ROM code uses this one
+ map(0x1c400014, 0x1c400017).r(this, FUNC(vp10x_state::tty_ready_r));
+ map(0x1ca0000c, 0x1ca0000f).portr("IN0");
+ map(0x1ca00010, 0x1ca00013).r(this, FUNC(vp10x_state::test_r)); // bits here cause various test mode stuff
+ map(0x1cf00000, 0x1cf00003).noprw().nopr();
+ map(0x1d000030, 0x1d000033).w(this, FUNC(vp10x_state::dmaaddr_w)); // ATA DMA destination address
+ map(0x1d000040, 0x1d00005f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)).umask32(0x0000ffff);
+ map(0x1d000060, 0x1d00007f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)).umask32(0x0000ffff);
+ map(0x1f200000, 0x1f200003).rw(this, FUNC(vp10x_state::pic_r), FUNC(vp10x_state::pic_w));
+ map(0x1f807000, 0x1f807fff).ram().share("nvram");
+ map(0x1fc00000, 0x1fffffff).rom().region("maincpu", 0);
+}
+
+void vp10x_state::vp50_map(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).ram().share("mainram");
+ map(0x1f000010, 0x1f00001f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1));
+ map(0x1f000020, 0x1f00002f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0));
+ map(0x1f400000, 0x1f400003).noprw(); // FPGA bitstream download?
+ map(0x1f400800, 0x1f400bff).ram().share("nvram");
+ map(0x1fc00000, 0x1fffffff).rom().region("maincpu", 0);
// TX4925 peripherals
- AM_RANGE(0xff1ff40c, 0xff1ff40f) AM_READ(tty_4925_rdy_r)
- AM_RANGE(0xff1ff41c, 0xff1ff41f) AM_WRITE(tty_w)
- AM_RANGE(0xff1ff500, 0xff1ff503) AM_NOP
- AM_RANGE(0xff1ff814, 0xff1ff817) AM_READ(spi_status_r)
- AM_RANGE(0xff1ff818, 0xff1ff81b) AM_READWRITE(spi_r, spi_w)
-ADDRESS_MAP_END
+ map(0xff1ff40c, 0xff1ff40f).r(this, FUNC(vp10x_state::tty_4925_rdy_r));
+ map(0xff1ff41c, 0xff1ff41f).w(this, FUNC(vp10x_state::tty_w));
+ map(0xff1ff500, 0xff1ff503).noprw();
+ map(0xff1ff814, 0xff1ff817).r(this, FUNC(vp10x_state::spi_status_r));
+ map(0xff1ff818, 0xff1ff81b).rw(this, FUNC(vp10x_state::spi_r), FUNC(vp10x_state::spi_w));
+}
static INPUT_PORTS_START( vp101 )
PORT_START("IN0")
diff --git a/src/mame/drivers/vp122.cpp b/src/mame/drivers/vp122.cpp
index 620a64f492b..20c7884ff36 100644
--- a/src/mame/drivers/vp122.cpp
+++ b/src/mame/drivers/vp122.cpp
@@ -37,31 +37,34 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(vp122_state::mem_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe000, 0xe7ff) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vp122_state::io_map)
- AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("avdc", scn2674_device, read, write)
- AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("duart", scn2681_device, read, write)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w)
- AM_RANGE(0x50, 0x50) AM_WRITENOP
- AM_RANGE(0x60, 0x60) AM_WRITENOP
- AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("pit", pit8253_device, read, write)
-ADDRESS_MAP_END
+void vp122_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom().region("maincpu", 0);
+ map(0xa000, 0xa7ff).ram().share("nvram");
+ map(0xe000, 0xe7ff).noprw();
+}
+
+void vp122_state::io_map(address_map &map)
+{
+ map(0x00, 0x07).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write));
+ map(0x10, 0x1f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+ map(0x20, 0x20).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x50, 0x50).nopw();
+ map(0x60, 0x60).nopw();
+ map(0x70, 0x73).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+}
SCN2674_DRAW_CHARACTER_MEMBER(vp122_state::draw_character)
{
}
-ADDRESS_MAP_START(vp122_state::vram_map)
- AM_RANGE(0x0000, 0x07ff) AM_NOP
- AM_RANGE(0x1800, 0x2fff) AM_NOP
-ADDRESS_MAP_END
+void vp122_state::vram_map(address_map &map)
+{
+ map(0x0000, 0x07ff).noprw();
+ map(0x1800, 0x2fff).noprw();
+}
static INPUT_PORTS_START( vp122 )
diff --git a/src/mame/drivers/vp60.cpp b/src/mame/drivers/vp60.cpp
index 92689f58a1c..14345928c55 100644
--- a/src/mame/drivers/vp60.cpp
+++ b/src/mame/drivers/vp60.cpp
@@ -39,17 +39,20 @@ u32 vp60_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const
return 0;
}
-ADDRESS_MAP_START(vp60_state::mem_map)
- AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
+void vp60_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rom().region("maincpu", 0);
+}
-ADDRESS_MAP_START(vp60_state::io_map)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void vp60_state::io_map(address_map &map)
+{
+ map(0x8000, 0x87ff).ram();
+}
-ADDRESS_MAP_START(vp60_state::kbd_map)
- AM_RANGE(0x000, 0x3ff) AM_ROM AM_REGION("keyboard", 0)
-ADDRESS_MAP_END
+void vp60_state::kbd_map(address_map &map)
+{
+ map(0x000, 0x3ff).rom().region("keyboard", 0);
+}
static INPUT_PORTS_START( vp60 )
INPUT_PORTS_END
diff --git a/src/mame/drivers/vpoker.cpp b/src/mame/drivers/vpoker.cpp
index c2f21614c49..938bca83805 100644
--- a/src/mame/drivers/vpoker.cpp
+++ b/src/mame/drivers/vpoker.cpp
@@ -182,13 +182,14 @@ WRITE8_MEMBER(vpoker_state::blitter_w)
}
}
-ADDRESS_MAP_START(vpoker_state::main_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x01ff) AM_RAM /* vpoker has 0x100, 5acespkr has 0x200 */
- AM_RANGE(0x0400, 0x0407) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write)
- AM_RANGE(0x0800, 0x0807) AM_READ(blitter_r) AM_WRITE(blitter_w)
- AM_RANGE(0x2000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
+void vpoker_state::main_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x01ff).ram(); /* vpoker has 0x100, 5acespkr has 0x200 */
+ map(0x0400, 0x0407).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0x0800, 0x0807).r(this, FUNC(vpoker_state::blitter_r)).w(this, FUNC(vpoker_state::blitter_w));
+ map(0x2000, 0x3fff).rom();
+}
static INPUT_PORTS_START( vpoker )
diff --git a/src/mame/drivers/vroulet.cpp b/src/mame/drivers/vroulet.cpp
index 849ba2271fc..e045df879ee 100644
--- a/src/mame/drivers/vroulet.cpp
+++ b/src/mame/drivers/vroulet.cpp
@@ -150,24 +150,26 @@ uint32_t vroulet_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
/* Memory Maps */
-ADDRESS_MAP_START(vroulet_state::vroulet_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8000, 0x8000) AM_NOP
- AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa001) AM_RAM AM_SHARE("ball")
- AM_RANGE(0xb000, 0xb0ff) AM_WRITE(paletteram_w) AM_SHARE("paletteram")
- AM_RANGE(0xc000, 0xc000) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vroulet_state::vroulet_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
-ADDRESS_MAP_END
+void vroulet_state::vroulet_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram");
+ map(0x8000, 0x8000).noprw();
+ map(0x9000, 0x93ff).ram().w(this, FUNC(vroulet_state::videoram_w)).share("videoram");
+ map(0x9400, 0x97ff).ram().w(this, FUNC(vroulet_state::colorram_w)).share("colorram");
+ map(0xa000, 0xa001).ram().share("ball");
+ map(0xb000, 0xb0ff).w(this, FUNC(vroulet_state::paletteram_w)).share("paletteram");
+ map(0xc000, 0xc000).noprw();
+}
+
+void vroulet_state::vroulet_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("aysnd", FUNC(ay8910_device::data_r));
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w));
+ map(0x10, 0x13).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/vsmilepro.cpp b/src/mame/drivers/vsmilepro.cpp
index 1bb911cfb1b..1e7e39e50d0 100644
--- a/src/mame/drivers/vsmilepro.cpp
+++ b/src/mame/drivers/vsmilepro.cpp
@@ -40,9 +40,10 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(vsmilpro_state::vsmilpro_map)
- AM_RANGE(0x00000000, 0x0007ffff) AM_ROM
-ADDRESS_MAP_END
+void vsmilpro_state::vsmilpro_map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).rom();
+}
/* Input ports */
diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp
index 371cc6a761b..1e72d26fdb2 100644
--- a/src/mame/drivers/vsnes.cpp
+++ b/src/mame/drivers/vsnes.cpp
@@ -195,27 +195,29 @@ WRITE8_MEMBER(vsnes_state::vsnes_coin_counter_1_w)
/******************************************************************************/
-ADDRESS_MAP_START(vsnes_state::vsnes_cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu1", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_0_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vsnes_state::vsnes_cpu2_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram_1")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu2", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_1_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_1_r, vsnes_in0_1_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4020, 0x4020) AM_WRITE(vsnes_coin_counter_1_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void vsnes_state::vsnes_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram");
+ map(0x2000, 0x3fff).rw(m_ppu1, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_0_w));
+ map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_r), FUNC(vsnes_state::vsnes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4020, 0x4020).rw(this, FUNC(vsnes_state::vsnes_coin_counter_r), FUNC(vsnes_state::vsnes_coin_counter_w));
+ map(0x6000, 0x7fff).bankrw("extra1");
+ map(0x8000, 0xffff).rom();
+}
+
+void vsnes_state::vsnes_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram_1");
+ map(0x2000, 0x3fff).rw(m_ppu2, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_1_w));
+ map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_1_r), FUNC(vsnes_state::vsnes_in0_1_w));
+ map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4020, 0x4020).w(this, FUNC(vsnes_state::vsnes_coin_counter_1_w));
+ map(0x6000, 0x7fff).bankrw("extra2");
+ map(0x8000, 0xffff).rom();
+}
@@ -244,38 +246,40 @@ READ8_MEMBER(vsnes_state::vsnes_bootleg_z80_data_r)
// the bootleg still makes writes to the PSG addresses, it seems the Z80 should interpret them to play the sounds
-ADDRESS_MAP_START(vsnes_state::vsnes_cpu1_bootleg_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu1", ppu2c0x_device, read, write)
- AM_RANGE(0x4000, 0x4017) AM_WRITE(bootleg_sound_write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_0_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void vsnes_state::vsnes_cpu1_bootleg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram");
+ map(0x2000, 0x3fff).rw(m_ppu1, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4000, 0x4017).w(this, FUNC(vsnes_state::bootleg_sound_write));
+ map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_0_w));
+ map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_r), FUNC(vsnes_state::vsnes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4020, 0x4020).rw(this, FUNC(vsnes_state::vsnes_coin_counter_r), FUNC(vsnes_state::vsnes_coin_counter_w));
+ map(0x6000, 0x7fff).bankrw("extra1");
+ map(0x8000, 0xffff).rom();
+}
READ8_MEMBER( vsnes_state::vsnes_bootleg_z80_latch_r )
{
return 0x00;
}
-ADDRESS_MAP_START(vsnes_state::vsnes_bootleg_z80_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
+void vsnes_state::vsnes_bootleg_z80_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
- AM_RANGE(0x4000, 0x4000) AM_READ( vsnes_bootleg_z80_data_r ) // read in IRQ & NMI
+ map(0x4000, 0x4000).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_data_r)); // read in IRQ & NMI
- AM_RANGE(0x6000, 0x6000) AM_READ( vsnes_bootleg_z80_latch_r ) // read in NMI, not explicitly stored (purpose? maybe clear IRQ ?)
- AM_RANGE(0x6001, 0x6001) AM_READ( vsnes_bootleg_z80_address_r ) // ^
+ map(0x6000, 0x6000).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_latch_r)); // read in NMI, not explicitly stored (purpose? maybe clear IRQ ?)
+ map(0x6001, 0x6001).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_address_r)); // ^
- AM_RANGE(0x60FA, 0x60FA) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x60F9, 0x60F9) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x60FF, 0x60FF) AM_DEVWRITE("sn3", sn76489_device, write)
+ 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));
-ADDRESS_MAP_END
+}
/******************************************************************************/
diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp
index 9d6fd03e59d..a8f568f4680 100644
--- a/src/mame/drivers/vt100.cpp
+++ b/src/mame/drivers/vt100.cpp
@@ -116,28 +116,31 @@ public:
-ADDRESS_MAP_START(vt100_state::vt100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x1fff ) AM_ROM // ROM ( 4 * 2K)
- AM_RANGE( 0x2000, 0x2bff ) AM_RAM AM_SHARE("p_ram") // Screen and scratch RAM
- AM_RANGE( 0x2c00, 0x2fff ) AM_RAM // AVO Screen RAM
- AM_RANGE( 0x3000, 0x3fff ) AM_RAM // AVO Attribute RAM (4 bits wide)
+void vt100_state::vt100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom(); // ROM ( 4 * 2K)
+ map(0x2000, 0x2bff).ram().share("p_ram"); // Screen and scratch RAM
+ map(0x2c00, 0x2fff).ram(); // AVO Screen RAM
+ map(0x3000, 0x3fff).ram(); // AVO Attribute RAM (4 bits wide)
// 0x4000, 0x7fff is unassigned
- AM_RANGE( 0x8000, 0x9fff ) AM_ROM // Program memory expansion ROM (4 * 2K)
- AM_RANGE( 0xa000, 0xbfff ) AM_ROM // Program memory expansion ROM (1 * 8K)
+ map(0x8000, 0x9fff).rom(); // Program memory expansion ROM (4 * 2K)
+ map(0xa000, 0xbfff).rom(); // Program memory expansion ROM (1 * 8K)
// 0xc000, 0xffff is unassigned
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(vt100_state::vt180_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x1fff ) AM_ROM
- AM_RANGE( 0x2000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
+void vt100_state::vt180_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0xffff).ram();
+}
-ADDRESS_MAP_START(vt100_state::vt180_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void vt100_state::vt180_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
// 0 - XMIT flag H
// 1 - Advance Video L
@@ -187,31 +190,32 @@ WRITE8_MEMBER(vt100_state::nvr_latch_w)
m_nvr->data_w(BIT(data, 2) ? 0 : !BIT(data, 0));
}
-ADDRESS_MAP_START(vt100_state::vt100_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void vt100_state::vt100_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// 0x00, 0x01 PUSART (Intel 8251)
- AM_RANGE (0x00, 0x00) AM_DEVREADWRITE("pusart", i8251_device, data_r, data_w)
- AM_RANGE (0x01, 0x01) AM_DEVREADWRITE("pusart", i8251_device, status_r, control_w)
+ map(0x00, 0x00).rw("pusart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw("pusart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
// 0x02 Baud rate generator
- AM_RANGE (0x02, 0x02) AM_WRITE(baud_rate_w)
+ map(0x02, 0x02).w(this, FUNC(vt100_state::baud_rate_w));
// 0x22 Modem buffer
- AM_RANGE (0x22, 0x22) AM_READ(modem_r)
+ map(0x22, 0x22).r(this, FUNC(vt100_state::modem_r));
// 0x42 Flags buffer
- AM_RANGE (0x42, 0x42) AM_READ(flags_r)
+ map(0x42, 0x42).r(this, FUNC(vt100_state::flags_r));
// 0x42 Brightness D/A latch
- AM_RANGE (0x42, 0x42) AM_DEVWRITE("vt100_video", vt100_video_device, brightness_w)
+ map(0x42, 0x42).w(m_crtc, FUNC(vt100_video_device::brightness_w));
// 0x62 NVR latch
- AM_RANGE (0x62, 0x62) AM_WRITE(nvr_latch_w)
+ map(0x62, 0x62).w(this, FUNC(vt100_state::nvr_latch_w));
// 0x82 Keyboard UART data
- AM_RANGE (0x82, 0x82) AM_DEVREADWRITE("kbduart", ay31015_device, receive, transmit)
+ map(0x82, 0x82).rw("kbduart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
// 0xA2 Video processor DC012
- AM_RANGE (0xa2, 0xa2) AM_DEVWRITE("vt100_video", vt100_video_device, dc012_w)
+ map(0xa2, 0xa2).w(m_crtc, FUNC(vt100_video_device::dc012_w));
// 0xC2 Video processor DC011
- AM_RANGE (0xc2, 0xc2) AM_DEVWRITE("vt100_video", vt100_video_device, dc011_w)
+ map(0xc2, 0xc2).w(m_crtc, FUNC(vt100_video_device::dc011_w));
// 0xE2 Graphics port
// AM_RANGE (0xe2, 0xe2)
-ADDRESS_MAP_END
+}
READ8_MEMBER(vt100_state::printer_r)
{
diff --git a/src/mame/drivers/vt220.cpp b/src/mame/drivers/vt220.cpp
index b45b2ead7ea..1e8475e69cf 100644
--- a/src/mame/drivers/vt220.cpp
+++ b/src/mame/drivers/vt220.cpp
@@ -62,23 +62,27 @@ public:
};
-ADDRESS_MAP_START(vt220_state::vt220_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vt220_state::vt220a_mem)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vt220_state::vt220_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x2000, 0x2fff) AM_MIRROR(0xc000) AM_RAM
- AM_RANGE(0x3800, 0x380f) AM_MIRROR(0xc7f0) AM_DEVREADWRITE("duart", scn2681_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vt220_state::vt220a_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void vt220_state::vt220_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("maincpu", 0);
+}
+
+void vt220_state::vt220a_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rom().region("maincpu", 0);
+}
+
+void vt220_state::vt220_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x2000, 0x2fff).mirror(0xc000).ram();
+ map(0x3800, 0x380f).mirror(0xc7f0).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write));
+}
+
+void vt220_state::vt220a_io(address_map &map)
+{
+ map.unmap_value_high();
+}
/* Input ports */
static INPUT_PORTS_START( vt220 )
diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp
index 5045a6a78c1..d576850a41c 100644
--- a/src/mame/drivers/vt240.cpp
+++ b/src/mame/drivers/vt240.cpp
@@ -542,70 +542,75 @@ WRITE8_MEMBER(vt240_state::hbscrl_w)
m_scrl = (m_scrl & 0xff) | ((data & 0x3f) << 8);
}
-ADDRESS_MAP_START(vt240_state::bank_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x80000, 0x87fff) AM_RAM
-ADDRESS_MAP_END
+void vt240_state::bank_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).rom().region("maincpu", 0);
+ map(0x80000, 0x87fff).ram();
+}
// PDF page 78 (4-25)
-ADDRESS_MAP_START(vt240_state::vt240_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE (0000000, 0167777) AM_READWRITE(mem_r, mem_w)
- AM_RANGE (0170000, 0170037) AM_READWRITE8(mem_map_cs_r, mem_map_cs_w, 0x00ff)
- AM_RANGE (0170040, 0170041) AM_WRITE8(mem_map_sel_w, 0x00ff)
- AM_RANGE (0170100, 0170101) AM_READ8(ctrl_r, 0x00ff)
- AM_RANGE (0170140, 0170141) AM_READWRITE8(nvr_store_r, nvr_store_w, 0x00ff)
- AM_RANGE (0171000, 0171003) AM_DEVREADWRITE8("i8251", i8251_device, data_r, data_w, 0x00ff)
- AM_RANGE (0171004, 0171007) AM_DEVREADWRITE8("i8251", i8251_device, status_r, control_w, 0x00ff)
- AM_RANGE (0172000, 0172077) AM_READWRITE8(duart_r, duart_w, 0x00ff)
- AM_RANGE (0173000, 0173003) AM_DEVREAD8("upd7220", upd7220_device, read, 0x00ff)
- AM_RANGE (0173040, 0173077) AM_READ8(vom_r, 0x00ff)
- AM_RANGE (0173140, 0173141) AM_READ8(char_buf_r, 0x00ff)
- AM_RANGE (0174000, 0174003) AM_DEVWRITE8("upd7220", upd7220_device, write, 0x00ff)
- AM_RANGE (0174040, 0174077) AM_WRITE8(vom_w, 0x00ff)
- AM_RANGE (0174140, 0174141) AM_WRITE8(char_buf_w, 0x00ff)
- AM_RANGE (0174400, 0174401) AM_WRITE8(patmult_w, 0x00ff)
- AM_RANGE (0174440, 0174441) AM_WRITE8(mask_w, 0x00ff)
- AM_RANGE (0174500, 0174501) AM_WRITE8(vpat_w, 0x00ff)
- AM_RANGE (0174540, 0174541) AM_WRITE8(lu_w, 0x00ff)
- AM_RANGE (0174600, 0174601) AM_WRITE8(reg0_w, 0x00ff)
- AM_RANGE (0174640, 0174641) AM_WRITE8(reg1_w, 0x00ff)
- AM_RANGE (0174700, 0174701) AM_WRITE8(hbscrl_w, 0x00ff)
- AM_RANGE (0174740, 0174741) AM_WRITE8(lbscrl_w, 0x00ff)
- AM_RANGE (0175000, 0175005) AM_READWRITE8(i8085_comm_r, i8085_comm_w, 0x00ff)
- AM_RANGE (0176000, 0176777) AM_DEVREADWRITE8("x2212", x2212_device, read, write, 0x00ff)
+void vt240_state::vt240_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0000000, 0167777).rw(this, FUNC(vt240_state::mem_r), FUNC(vt240_state::mem_w));
+ map(0170000, 0170037).rw(this, FUNC(vt240_state::mem_map_cs_r), FUNC(vt240_state::mem_map_cs_w)).umask16(0x00ff);
+ map(0170040, 0170040).w(this, FUNC(vt240_state::mem_map_sel_w));
+ map(0170100, 0170100).r(this, FUNC(vt240_state::ctrl_r));
+ map(0170140, 0170140).rw(this, FUNC(vt240_state::nvr_store_r), FUNC(vt240_state::nvr_store_w));
+ map(0171000, 0171003).rw(m_i8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)).umask16(0x00ff);
+ map(0171004, 0171007).rw(m_i8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)).umask16(0x00ff);
+ map(0172000, 0172077).rw(this, FUNC(vt240_state::duart_r), FUNC(vt240_state::duart_w)).umask16(0x00ff);
+ map(0173000, 0173003).r(m_hgdc, FUNC(upd7220_device::read)).umask16(0x00ff);
+ map(0173040, 0173077).r(this, FUNC(vt240_state::vom_r)).umask16(0x00ff);
+ map(0173140, 0173140).r(this, FUNC(vt240_state::char_buf_r));
+ map(0174000, 0174003).w(m_hgdc, FUNC(upd7220_device::write)).umask16(0x00ff);
+ map(0174040, 0174077).w(this, FUNC(vt240_state::vom_w)).umask16(0x00ff);
+ map(0174140, 0174140).w(this, FUNC(vt240_state::char_buf_w));
+ map(0174400, 0174400).w(this, FUNC(vt240_state::patmult_w));
+ map(0174440, 0174440).w(this, FUNC(vt240_state::mask_w));
+ map(0174500, 0174500).w(this, FUNC(vt240_state::vpat_w));
+ map(0174540, 0174540).w(this, FUNC(vt240_state::lu_w));
+ map(0174600, 0174600).w(this, FUNC(vt240_state::reg0_w));
+ map(0174640, 0174640).w(this, FUNC(vt240_state::reg1_w));
+ map(0174700, 0174700).w(this, FUNC(vt240_state::hbscrl_w));
+ map(0174740, 0174740).w(this, FUNC(vt240_state::lbscrl_w));
+ map(0175000, 0175005).rw(this, FUNC(vt240_state::i8085_comm_r), FUNC(vt240_state::i8085_comm_w)).umask16(0x00ff);
+ map(0176000, 0176777).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff);
// 017700x System comm logic
-ADDRESS_MAP_END
+}
// PDF page 134 (6-9)
-ADDRESS_MAP_START(vt240_state::vt240_char_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("charcpu", 0)
- AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("charcpu", 0x8000)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vt240_state::vt240_char_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("upd7220", upd7220_device, read, write)
- AM_RANGE(0x10, 0x1f) AM_READWRITE(vom_r, vom_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(t11_comm_r, t11_comm_w)
- AM_RANGE(0x30, 0x30) AM_READWRITE(char_buf_r, char_buf_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(patmult_w)
- AM_RANGE(0x90, 0x90) AM_WRITE(mask_w)
- AM_RANGE(0xa0, 0xa0) AM_WRITE(vpat_w)
- AM_RANGE(0xb0, 0xb0) AM_WRITE(lu_w)
- AM_RANGE(0xc0, 0xc0) AM_WRITE(reg0_w)
- AM_RANGE(0xd0, 0xd0) AM_WRITE(reg1_w)
- AM_RANGE(0xe0, 0xe0) AM_WRITE(hbscrl_w)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(lbscrl_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vt240_state::upd7220_map)
- AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram")
-ADDRESS_MAP_END
+void vt240_state::vt240_char_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom().region("charcpu", 0);
+ map(0x4000, 0x5fff).rom().region("charcpu", 0x8000);
+ map(0x8000, 0x87ff).ram();
+}
+
+void vt240_state::vt240_char_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write));
+ map(0x10, 0x1f).rw(this, FUNC(vt240_state::vom_r), FUNC(vt240_state::vom_w));
+ map(0x20, 0x20).rw(this, FUNC(vt240_state::t11_comm_r), FUNC(vt240_state::t11_comm_w));
+ map(0x30, 0x30).rw(this, FUNC(vt240_state::char_buf_r), FUNC(vt240_state::char_buf_w));
+ map(0x80, 0x80).w(this, FUNC(vt240_state::patmult_w));
+ map(0x90, 0x90).w(this, FUNC(vt240_state::mask_w));
+ map(0xa0, 0xa0).w(this, FUNC(vt240_state::vpat_w));
+ map(0xb0, 0xb0).w(this, FUNC(vt240_state::lu_w));
+ map(0xc0, 0xc0).w(this, FUNC(vt240_state::reg0_w));
+ map(0xd0, 0xd0).w(this, FUNC(vt240_state::reg1_w));
+ map(0xe0, 0xe0).w(this, FUNC(vt240_state::hbscrl_w));
+ map(0xf0, 0xf0).w(this, FUNC(vt240_state::lbscrl_w));
+}
+
+void vt240_state::upd7220_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).rw(this, FUNC(vt240_state::vram_r), FUNC(vt240_state::vram_w)).share("vram");
+}
void vt240_state::machine_reset()
diff --git a/src/mame/drivers/vt320.cpp b/src/mame/drivers/vt320.cpp
index d7796cae164..99226d3cec2 100644
--- a/src/mame/drivers/vt320.cpp
+++ b/src/mame/drivers/vt320.cpp
@@ -61,12 +61,14 @@ Texas Inst. 749X 75146
Signetics? 74LS373N
8-bit D-type latch. This has eight inputs and eight outputs.
*/
-ADDRESS_MAP_START(vt320_state::vt320_mem)
- AM_RANGE(0x0000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void vt320_state::vt320_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rom();
+}
-ADDRESS_MAP_START(vt320_state::vt320_io)
-ADDRESS_MAP_END
+void vt320_state::vt320_io(address_map &map)
+{
+}
/* Input ports */
static INPUT_PORTS_START( vt320 )
diff --git a/src/mame/drivers/vt520.cpp b/src/mame/drivers/vt520.cpp
index b834c38f910..8a3c96842ad 100644
--- a/src/mame/drivers/vt520.cpp
+++ b/src/mame/drivers/vt520.cpp
@@ -36,9 +36,10 @@ public:
};
-ADDRESS_MAP_START(vt520_state::vt520_mem)
- AM_RANGE(0x0000, 0xffff) AM_RAMBANK("bank1")
-ADDRESS_MAP_END
+void vt520_state::vt520_mem(address_map &map)
+{
+ map(0x0000, 0xffff).bankrw("bank1");
+}
/*
On the board there is TC160G41AF (1222) custom chip
@@ -53,10 +54,11 @@ READ8_MEMBER( vt520_state::vt520_some_r )
return 0x40;
}
-ADDRESS_MAP_START(vt520_state::vt520_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x7ffb, 0x7ffb) AM_READ(vt520_some_r)
-ADDRESS_MAP_END
+void vt520_state::vt520_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x7ffb, 0x7ffb).r(this, FUNC(vt520_state::vt520_some_r));
+}
/* Input ports */
static INPUT_PORTS_START( vt520 )
diff --git a/src/mame/drivers/vta2000.cpp b/src/mame/drivers/vta2000.cpp
index da34f8f3b72..dfad5117d14 100644
--- a/src/mame/drivers/vta2000.cpp
+++ b/src/mame/drivers/vta2000.cpp
@@ -46,17 +46,19 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(vta2000_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_REGION("roms", 0)
- AM_RANGE( 0x8000, 0xc7ff ) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0xc800, 0xc8ff ) AM_ROM AM_REGION("roms", 0x5000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vta2000_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
+void vta2000_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x5fff).rom().region("roms", 0);
+ map(0x8000, 0xc7ff).ram().share("videoram");
+ map(0xc800, 0xc8ff).rom().region("roms", 0x5000);
+}
+
+void vta2000_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map.unmap_value_high();
+}
/* Input ports */
static INPUT_PORTS_START( vta2000 )
diff --git a/src/mame/drivers/vtech1.cpp b/src/mame/drivers/vtech1.cpp
index 907866fea3b..8f08c7dae40 100644
--- a/src/mame/drivers/vtech1.cpp
+++ b/src/mame/drivers/vtech1.cpp
@@ -303,36 +303,41 @@ DRIVER_INIT_MEMBER( vtech1_state, vtech1h )
ADDRESS MAPS
***************************************************************************/
-ADDRESS_MAP_START(vtech1_state::laser110_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // basic rom
- AM_RANGE(0x6800, 0x6fff) AM_READWRITE(vtech1_keyboard_r, vtech1_latch_w)
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("videoram") // 6847
- AM_RANGE(0x7800, 0x7fff) AM_RAM // 2k user ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vtech1_state::laser210_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // basic rom
- AM_RANGE(0x6800, 0x6fff) AM_READWRITE(vtech1_keyboard_r, vtech1_latch_w)
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("videoram") // 6847
- AM_RANGE(0x7800, 0x8fff) AM_RAM // 6k user ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vtech1_state::laser310_mem)
- AM_RANGE(0x0000, 0x3fff) AM_ROM // basic rom
- AM_RANGE(0x6800, 0x6fff) AM_READWRITE(vtech1_keyboard_r, vtech1_latch_w)
- AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("videoram") // 6847
- AM_RANGE(0x7800, 0xb7ff) AM_RAM // 16k user ram
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vtech1_state::vtech1_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x4f) AM_READ(vtech1_lightpen_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vtech1_state::vtech1_shrg_io)
- AM_IMPORT_FROM(vtech1_io)
- AM_RANGE(0xd0, 0xdf) AM_WRITE(vtech1_video_bank_w)
-ADDRESS_MAP_END
+void vtech1_state::laser110_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // basic rom
+ map(0x6800, 0x6fff).rw(this, FUNC(vtech1_state::vtech1_keyboard_r), FUNC(vtech1_state::vtech1_latch_w));
+ map(0x7000, 0x77ff).ram().share("videoram"); // 6847
+ map(0x7800, 0x7fff).ram(); // 2k user ram
+}
+
+void vtech1_state::laser210_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // basic rom
+ map(0x6800, 0x6fff).rw(this, FUNC(vtech1_state::vtech1_keyboard_r), FUNC(vtech1_state::vtech1_latch_w));
+ map(0x7000, 0x77ff).ram().share("videoram"); // 6847
+ map(0x7800, 0x8fff).ram(); // 6k user ram
+}
+
+void vtech1_state::laser310_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom(); // basic rom
+ map(0x6800, 0x6fff).rw(this, FUNC(vtech1_state::vtech1_keyboard_r), FUNC(vtech1_state::vtech1_latch_w));
+ map(0x7000, 0x77ff).ram().share("videoram"); // 6847
+ map(0x7800, 0xb7ff).ram(); // 16k user ram
+}
+
+void vtech1_state::vtech1_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x4f).r(this, FUNC(vtech1_state::vtech1_lightpen_r));
+}
+
+void vtech1_state::vtech1_shrg_io(address_map &map)
+{
+ vtech1_io(map);
+ map(0xd0, 0xdf).w(this, FUNC(vtech1_state::vtech1_video_bank_w));
+}
/***************************************************************************
diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp
index bfa6030d575..51641e8dfcc 100644
--- a/src/mame/drivers/vtech2.cpp
+++ b/src/mame/drivers/vtech2.cpp
@@ -78,21 +78,23 @@
#include "formats/vt_cas.h"
-ADDRESS_MAP_START(vtech2_state::vtech2_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vtech2_state::vtech2_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x1f) AM_READWRITE(laser_fdc_r, laser_fdc_w)
- AM_RANGE(0x40, 0x43) AM_WRITE(laser_bank_select_w)
- AM_RANGE(0x44, 0x44) AM_WRITE(laser_bg_mode_w)
- AM_RANGE(0x45, 0x45) AM_WRITE(laser_two_color_w)
-ADDRESS_MAP_END
+void vtech2_state::vtech2_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).bankrw("bank1");
+ map(0x4000, 0x7fff).bankrw("bank2");
+ map(0x8000, 0xbfff).bankrw("bank3");
+ map(0xc000, 0xffff).bankrw("bank4");
+}
+
+void vtech2_state::vtech2_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x1f).rw(this, FUNC(vtech2_state::laser_fdc_r), FUNC(vtech2_state::laser_fdc_w));
+ map(0x40, 0x43).w(this, FUNC(vtech2_state::laser_bank_select_w));
+ map(0x44, 0x44).w(this, FUNC(vtech2_state::laser_bg_mode_w));
+ map(0x45, 0x45).w(this, FUNC(vtech2_state::laser_two_color_w));
+}
/* 2008-05 FP:
Small note about natural keyboard: currently,
diff --git a/src/mame/drivers/vulgus.cpp b/src/mame/drivers/vulgus.cpp
index eb959b3b3ba..2d0447cfbe5 100644
--- a/src/mame/drivers/vulgus.cpp
+++ b/src/mame/drivers/vulgus.cpp
@@ -58,32 +58,34 @@ INTERRUPT_GEN_MEMBER(vulgus_state::vblank_irq)
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* RST 10h - vblank */
}
-ADDRESS_MAP_START(vulgus_state::main_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
- AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
- AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
- AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
- AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xc801, 0xc801) AM_WRITENOP // ?
- AM_RANGE(0xc802, 0xc803) AM_RAM AM_SHARE("scroll_low")
- AM_RANGE(0xc804, 0xc804) AM_WRITE(c804_w)
- AM_RANGE(0xc805, 0xc805) AM_WRITE(palette_bank_w)
- AM_RANGE(0xc902, 0xc903) AM_RAM AM_SHARE("scroll_high")
- AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xefff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vulgus_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void vulgus_state::main_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom();
+ map(0xc000, 0xc000).portr("SYSTEM");
+ map(0xc001, 0xc001).portr("P1");
+ map(0xc002, 0xc002).portr("P2");
+ map(0xc003, 0xc003).portr("DSW1");
+ map(0xc004, 0xc004).portr("DSW2");
+ map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xc801, 0xc801).nopw(); // ?
+ map(0xc802, 0xc803).ram().share("scroll_low");
+ map(0xc804, 0xc804).w(this, FUNC(vulgus_state::c804_w));
+ map(0xc805, 0xc805).w(this, FUNC(vulgus_state::palette_bank_w));
+ map(0xc902, 0xc903).ram().share("scroll_high");
+ map(0xcc00, 0xcc7f).ram().share("spriteram");
+ map(0xd000, 0xd7ff).ram().w(this, FUNC(vulgus_state::fgvideoram_w)).share("fgvideoram");
+ map(0xd800, 0xdfff).ram().w(this, FUNC(vulgus_state::bgvideoram_w)).share("bgvideoram");
+ map(0xe000, 0xefff).ram();
+}
+
+void vulgus_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xc000, 0xc001).w("ay2", FUNC(ay8910_device::address_data_w));
+}
static INPUT_PORTS_START( vulgus )
diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp
index 7837ba110fa..467df58ba99 100644
--- a/src/mame/drivers/wacky_gator.cpp
+++ b/src/mame/drivers/wacky_gator.cpp
@@ -261,27 +261,28 @@ WRITE_LINE_MEMBER(wackygtr_state::adpcm_int)
}
}
-ADDRESS_MAP_START(wackygtr_state::program_map)
- AM_RANGE(0x0200, 0x0200) AM_READNOP AM_WRITE(irq_ack_w)
- AM_RANGE(0x0400, 0x0400) AM_READNOP AM_WRITE(firq_ack_w)
- AM_RANGE(0x0600, 0x0600) AM_WRITE(disp_w<0>)
- AM_RANGE(0x0800, 0x0800) AM_WRITE(disp_w<1>)
- AM_RANGE(0x0a00, 0x0a00) AM_WRITE(disp_w<2>)
- AM_RANGE(0x0c00, 0x0c00) AM_WRITE(disp_w<3>)
- AM_RANGE(0x0e00, 0x0e00) AM_WRITE(sample_ctrl_w)
-
- AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym2413_device, write)
-
- AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pit8253_0", pit8253_device, read, write)
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pit8253_1", pit8253_device, read, write)
-
- AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("i8255_1", i8255_device, read, write)
- AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("i8255_2", i8255_device, read, write)
-
- AM_RANGE(0x7000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void wackygtr_state::program_map(address_map &map)
+{
+ map(0x0200, 0x0200).nopr().w(this, FUNC(wackygtr_state::irq_ack_w));
+ map(0x0400, 0x0400).nopr().w(this, FUNC(wackygtr_state::firq_ack_w));
+ map(0x0600, 0x0600).w(this, FUNC(wackygtr_state::disp_w<0>));
+ map(0x0800, 0x0800).w(this, FUNC(wackygtr_state::disp_w<1>));
+ map(0x0a00, 0x0a00).w(this, FUNC(wackygtr_state::disp_w<2>));
+ map(0x0c00, 0x0c00).w(this, FUNC(wackygtr_state::disp_w<3>));
+ map(0x0e00, 0x0e00).w(this, FUNC(wackygtr_state::sample_ctrl_w));
+
+ map(0x1000, 0x1001).w("ymsnd", FUNC(ym2413_device::write));
+
+ map(0x2000, 0x2003).rw(m_pit8253_0, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+ map(0x3000, 0x3003).rw(m_pit8253_1, FUNC(pit8253_device::read), FUNC(pit8253_device::write));
+
+ map(0x4000, 0x4003).rw("i8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x5000, 0x5003).rw("i8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x6000, 0x6003).rw("i8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0xffff).rom();
+}
MACHINE_CONFIG_START(wackygtr_state::wackygtr)
diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp
index 76417032c61..6a07beff412 100644
--- a/src/mame/drivers/wallc.cpp
+++ b/src/mame/drivers/wallc.cpp
@@ -264,40 +264,42 @@ WRITE8_MEMBER(wallc_state::unkitpkr_out2_w)
{
}
-ADDRESS_MAP_START(wallc_state::wallc_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(videoram_w) AM_MIRROR(0xc00) AM_SHARE("videoram") /* 2114, 2114 */
- AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */
-
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1")
- AM_RANGE(0xb200, 0xb200) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xb400, 0xb400) AM_READ_PORT("DIAL")
- AM_RANGE(0xb600, 0xb600) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP
- AM_RANGE(0xb100, 0xb100) AM_WRITE(wallc_coin_counter_w)
- AM_RANGE(0xb200, 0xb200) AM_WRITENOP
- AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("aysnd", ay8912_device, address_w)
- AM_RANGE(0xb600, 0xb600) AM_DEVWRITE("aysnd", ay8912_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wallc_state::unkitpkr_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(videoram_w) AM_MIRROR(0xc00) AM_SHARE("videoram") /* 2114, 2114 */
- AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */
-
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("IN0")
- AM_RANGE(0xb100, 0xb100) AM_READ_PORT("IN1")
- AM_RANGE(0xb200, 0xb200) AM_READ_PORT("IN2")
- AM_RANGE(0xb300, 0xb300) AM_READ_PORT("IN3")
- AM_RANGE(0xb500, 0xb5ff) AM_READNOP // read by memory test routine. left over from some other game
-
- AM_RANGE(0xb000, 0xb000) AM_WRITE(unkitpkr_out0_w)
- AM_RANGE(0xb100, 0xb100) AM_WRITE(unkitpkr_out1_w)
- AM_RANGE(0xb200, 0xb200) AM_WRITE(unkitpkr_out2_w)
- AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("aysnd", ay8912_device, address_w)
- AM_RANGE(0xb600, 0xb600) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) // Port A = DSW
-ADDRESS_MAP_END
+void wallc_state::wallc_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(wallc_state::videoram_w)).mirror(0xc00).share("videoram"); /* 2114, 2114 */
+ map(0xa000, 0xa3ff).ram(); /* 2114, 2114 */
+
+ map(0xb000, 0xb000).portr("DSW1");
+ map(0xb200, 0xb200).portr("SYSTEM");
+ map(0xb400, 0xb400).portr("DIAL");
+ map(0xb600, 0xb600).portr("DSW2");
+
+ map(0xb000, 0xb000).nopw();
+ map(0xb100, 0xb100).w(this, FUNC(wallc_state::wallc_coin_counter_w));
+ map(0xb200, 0xb200).nopw();
+ map(0xb500, 0xb500).w("aysnd", FUNC(ay8912_device::address_w));
+ map(0xb600, 0xb600).w("aysnd", FUNC(ay8912_device::data_w));
+}
+
+void wallc_state::unkitpkr_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram().w(this, FUNC(wallc_state::videoram_w)).mirror(0xc00).share("videoram"); /* 2114, 2114 */
+ map(0xa000, 0xa3ff).ram(); /* 2114, 2114 */
+
+ map(0xb000, 0xb000).portr("IN0");
+ map(0xb100, 0xb100).portr("IN1");
+ map(0xb200, 0xb200).portr("IN2");
+ map(0xb300, 0xb300).portr("IN3");
+ map(0xb500, 0xb5ff).nopr(); // read by memory test routine. left over from some other game
+
+ map(0xb000, 0xb000).w(this, FUNC(wallc_state::unkitpkr_out0_w));
+ map(0xb100, 0xb100).w(this, FUNC(wallc_state::unkitpkr_out1_w));
+ map(0xb200, 0xb200).w(this, FUNC(wallc_state::unkitpkr_out2_w));
+ map(0xb500, 0xb500).w("aysnd", FUNC(ay8912_device::address_w));
+ map(0xb600, 0xb600).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // Port A = DSW
+}
static INPUT_PORTS_START( wallc )
diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp
index ad2cc9b8f5a..8a9f101045b 100644
--- a/src/mame/drivers/wangpc.cpp
+++ b/src/mame/drivers/wangpc.cpp
@@ -730,51 +730,53 @@ READ8_MEMBER( wangpc_state::option_id_r )
// ADDRESS_MAP( wangpc_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(wangpc_state::wangpc_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_RAM
- AM_RANGE(0x40000, 0xf3fff) AM_DEVREADWRITE(WANGPC_BUS_TAG, wangpcbus_device, mrdc_r, amwc_w)
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
-ADDRESS_MAP_END
+void wangpc_state::wangpc_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x1ffff).ram();
+ map(0x40000, 0xf3fff).rw(m_bus, FUNC(wangpcbus_device::mrdc_r), FUNC(wangpcbus_device::amwc_w));
+ map(0xfc000, 0xfffff).rom().region(I8086_TAG, 0);
+}
//-------------------------------------------------
// ADDRESS_MAP( wangpc_io )
//-------------------------------------------------
-ADDRESS_MAP_START(wangpc_state::wangpc_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x1000, 0x1001) AM_WRITE8(fdc_ctrl_w, 0x00ff)
- AM_RANGE(0x1004, 0x1005) AM_READWRITE8(deselect_drive1_r, deselect_drive1_w, 0x00ff)
- AM_RANGE(0x1006, 0x1007) AM_READWRITE8(select_drive1_r, select_drive1_w, 0x00ff)
- AM_RANGE(0x1008, 0x1009) AM_READWRITE8(deselect_drive2_r, deselect_drive2_w, 0x00ff)
- AM_RANGE(0x100a, 0x100b) AM_READWRITE8(select_drive2_r, select_drive2_w, 0x00ff)
- AM_RANGE(0x100c, 0x100d) AM_READWRITE8(motor1_off_r, motor1_off_w, 0x00ff)
- AM_RANGE(0x100e, 0x100f) AM_READWRITE8(motor1_on_r, motor1_on_w, 0x00ff)
- AM_RANGE(0x1010, 0x1011) AM_READWRITE8(motor2_off_r, motor2_off_w, 0x00ff)
- AM_RANGE(0x1012, 0x1013) AM_READWRITE8(motor2_on_r, motor2_on_w, 0x00ff)
- AM_RANGE(0x1014, 0x1017) AM_DEVICE8(UPD765_TAG, upd765a_device, map, 0x00ff)
- AM_RANGE(0x1018, 0x1019) AM_MIRROR(0x0002) AM_READWRITE8(fdc_reset_r, fdc_reset_w, 0x00ff)
- AM_RANGE(0x101c, 0x101d) AM_MIRROR(0x0002) AM_READWRITE8(fdc_tc_r, fdc_tc_w, 0x00ff)
- AM_RANGE(0x1020, 0x1027) AM_DEVREADWRITE8(I8255A_TAG, i8255_device, read, write, 0x00ff)
- AM_RANGE(0x1028, 0x1029) //AM_WRITE(?)
- AM_RANGE(0x1040, 0x1047) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x1060, 0x1063) AM_DEVREADWRITE8(I8259A_TAG, pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x1080, 0x1087) AM_DEVREAD8(SCN2661_TAG, mc2661_device, read, 0x00ff)
- AM_RANGE(0x1088, 0x108f) AM_DEVWRITE8(SCN2661_TAG, mc2661_device, write, 0x00ff)
- AM_RANGE(0x10a0, 0x10bf) AM_DEVREADWRITE8(AM9517A_TAG, am9517a_device, read, write, 0x00ff)
- AM_RANGE(0x10c2, 0x10c7) AM_WRITE8(dma_page_w, 0x00ff)
- AM_RANGE(0x10e0, 0x10e1) AM_READWRITE8(status_r, timer0_irq_clr_w, 0x00ff)
- AM_RANGE(0x10e2, 0x10e3) AM_READWRITE8(timer2_irq_clr_r, nmi_mask_w, 0x00ff)
- AM_RANGE(0x10e4, 0x10e5) AM_READWRITE8(led_on_r, fpu_mask_w, 0x00ff)
- AM_RANGE(0x10e6, 0x10e7) AM_READWRITE8(dma_eop_clr_r, uart_tbre_clr_w, 0x00ff)
- AM_RANGE(0x10e8, 0x10e9) AM_READWRITE8(uart_r, uart_w, 0x00ff)
- AM_RANGE(0x10ea, 0x10eb) AM_READWRITE8(centronics_r, centronics_w, 0x00ff)
- AM_RANGE(0x10ec, 0x10ed) AM_READWRITE8(busy_clr_r, acknlg_clr_w, 0x00ff)
- AM_RANGE(0x10ee, 0x10ef) AM_READWRITE8(led_off_r, parity_nmi_clr_w, 0x00ff)
- AM_RANGE(0x10fe, 0x10ff) AM_READ8(option_id_r, 0x00ff)
- AM_RANGE(0x1100, 0x1fff) AM_DEVREADWRITE(WANGPC_BUS_TAG, wangpcbus_device, sad_r, sad_w)
-ADDRESS_MAP_END
+void wangpc_state::wangpc_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x1000, 0x1000).w(this, FUNC(wangpc_state::fdc_ctrl_w));
+ map(0x1004, 0x1004).rw(this, FUNC(wangpc_state::deselect_drive1_r), FUNC(wangpc_state::deselect_drive1_w));
+ map(0x1006, 0x1006).rw(this, FUNC(wangpc_state::select_drive1_r), FUNC(wangpc_state::select_drive1_w));
+ map(0x1008, 0x1008).rw(this, FUNC(wangpc_state::deselect_drive2_r), FUNC(wangpc_state::deselect_drive2_w));
+ map(0x100a, 0x100a).rw(this, FUNC(wangpc_state::select_drive2_r), FUNC(wangpc_state::select_drive2_w));
+ map(0x100c, 0x100c).rw(this, FUNC(wangpc_state::motor1_off_r), FUNC(wangpc_state::motor1_off_w));
+ map(0x100e, 0x100e).rw(this, FUNC(wangpc_state::motor1_on_r), FUNC(wangpc_state::motor1_on_w));
+ map(0x1010, 0x1010).rw(this, FUNC(wangpc_state::motor2_off_r), FUNC(wangpc_state::motor2_off_w));
+ map(0x1012, 0x1012).rw(this, FUNC(wangpc_state::motor2_on_r), FUNC(wangpc_state::motor2_on_w));
+ map(0x1014, 0x1017).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
+ map(0x1018, 0x1018).mirror(0x0002).rw(this, FUNC(wangpc_state::fdc_reset_r), FUNC(wangpc_state::fdc_reset_w));
+ map(0x101c, 0x101c).mirror(0x0002).rw(this, FUNC(wangpc_state::fdc_tc_r), FUNC(wangpc_state::fdc_tc_w));
+ map(0x1020, 0x1027).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+ map(0x1028, 0x1029); //AM_WRITE(?)
+ map(0x1040, 0x1047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x1060, 0x1063).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x1080, 0x1087).r(m_epci, FUNC(mc2661_device::read)).umask16(0x00ff);
+ map(0x1088, 0x108f).w(m_epci, FUNC(mc2661_device::write)).umask16(0x00ff);
+ map(0x10a0, 0x10bf).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff);
+ map(0x10c2, 0x10c7).w(this, FUNC(wangpc_state::dma_page_w)).umask16(0x00ff);
+ map(0x10e0, 0x10e0).rw(this, FUNC(wangpc_state::status_r), FUNC(wangpc_state::timer0_irq_clr_w));
+ map(0x10e2, 0x10e2).rw(this, FUNC(wangpc_state::timer2_irq_clr_r), FUNC(wangpc_state::nmi_mask_w));
+ map(0x10e4, 0x10e4).rw(this, FUNC(wangpc_state::led_on_r), FUNC(wangpc_state::fpu_mask_w));
+ map(0x10e6, 0x10e6).rw(this, FUNC(wangpc_state::dma_eop_clr_r), FUNC(wangpc_state::uart_tbre_clr_w));
+ map(0x10e8, 0x10e8).rw(this, FUNC(wangpc_state::uart_r), FUNC(wangpc_state::uart_w));
+ map(0x10ea, 0x10ea).rw(this, FUNC(wangpc_state::centronics_r), FUNC(wangpc_state::centronics_w));
+ map(0x10ec, 0x10ec).rw(this, FUNC(wangpc_state::busy_clr_r), FUNC(wangpc_state::acknlg_clr_w));
+ map(0x10ee, 0x10ee).rw(this, FUNC(wangpc_state::led_off_r), FUNC(wangpc_state::parity_nmi_clr_w));
+ map(0x10fe, 0x10fe).r(this, FUNC(wangpc_state::option_id_r));
+ map(0x1100, 0x1fff).rw(m_bus, FUNC(wangpcbus_device::sad_r), FUNC(wangpcbus_device::sad_w));
+}
diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp
index 0ea5fcc56d0..2f0bd26d82e 100644
--- a/src/mame/drivers/wardner.cpp
+++ b/src/mame/drivers/wardner.cpp
@@ -173,77 +173,84 @@ WRITE8_MEMBER(wardner_state::wardner_bank_w)
m_membank->set_bank(data & 7);
}
-ADDRESS_MAP_START(wardner_state::main_program_map)
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x8fff) AM_WRITE(wardner_sprite_w) // AM_SHARE("spriteram8")
- AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("palette", palette_device, write8) // AM_SHARE("palette")
- AM_RANGE(0xc000, 0xc7ff) AM_WRITEONLY AM_SHARE("sharedram")
- AM_RANGE(0x8000, 0xffff) AM_DEVREAD("membank", address_map_bank_device, read8)
-ADDRESS_MAP_END
+void wardner_state::main_program_map(address_map &map)
+{
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7fff).ram();
+ map(0x8000, 0x8fff).w(this, 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 AM_RANGE(0x00000, 0x3ffff) for ROM because the shared pointers get messed up somehow
-ADDRESS_MAP_START(wardner_state::main_bank_map)
- AM_RANGE(0x00000, 0x00fff) AM_READ(wardner_sprite_r) AM_SHARE("spriteram8")
- AM_RANGE(0x01000, 0x01fff) AM_ROM AM_REGION("maincpu", 0x1000)
- AM_RANGE(0x02000, 0x02fff) AM_READONLY AM_SHARE("palette")
- AM_RANGE(0x03000, 0x03fff) AM_ROM AM_REGION("maincpu", 0x3000)
- AM_RANGE(0x04000, 0x047ff) AM_READONLY AM_SHARE("sharedram")
- AM_RANGE(0x04800, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x4800)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wardner_state::main_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x02, 0x02) AM_DEVWRITE("crtc", mc6845_device, register_w)
- AM_RANGE(0x10, 0x13) AM_WRITE(wardner_txscroll_w) /* scroll text layer */
- AM_RANGE(0x14, 0x15) AM_WRITE(wardner_txlayer_w) /* offset in text video RAM */
- AM_RANGE(0x20, 0x23) AM_WRITE(wardner_bgscroll_w) /* scroll bg layer */
- AM_RANGE(0x24, 0x25) AM_WRITE(wardner_bglayer_w) /* offset in bg video RAM */
- AM_RANGE(0x30, 0x33) AM_WRITE(wardner_fgscroll_w) /* scroll fg layer */
- AM_RANGE(0x34, 0x35) AM_WRITE(wardner_fglayer_w) /* offset in fg video RAM */
- AM_RANGE(0x40, 0x43) AM_WRITE(wardner_exscroll_w) /* scroll extra layer (not used) */
- AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWA")
- AM_RANGE(0x52, 0x52) AM_READ_PORT("DSWB")
- AM_RANGE(0x54, 0x54) AM_READ_PORT("P1")
- AM_RANGE(0x56, 0x56) AM_READ_PORT("P2")
- AM_RANGE(0x58, 0x58) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x5a, 0x5a) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0)
- AM_RANGE(0x5c, 0x5c) AM_DEVWRITE("mainlatch", ls259_device, write_nibble_d0)
- AM_RANGE(0x60, 0x65) AM_READWRITE(wardner_videoram_r, wardner_videoram_w)
- AM_RANGE(0x70, 0x70) AM_WRITE(wardner_bank_w)
-ADDRESS_MAP_END
+void wardner_state::main_bank_map(address_map &map)
+{
+ map(0x00000, 0x00fff).r(this, FUNC(wardner_state::wardner_sprite_r)).share("spriteram8");
+ map(0x01000, 0x01fff).rom().region("maincpu", 0x1000);
+ map(0x02000, 0x02fff).readonly().share("palette");
+ map(0x03000, 0x03fff).rom().region("maincpu", 0x3000);
+ map(0x04000, 0x047ff).readonly().share("sharedram");
+ map(0x04800, 0x3ffff).rom().region("maincpu", 0x4800);
+}
+
+void wardner_state::main_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x02, 0x02).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x10, 0x13).w(this, FUNC(wardner_state::wardner_txscroll_w)); /* scroll text layer */
+ map(0x14, 0x15).w(this, FUNC(wardner_state::wardner_txlayer_w)); /* offset in text video RAM */
+ map(0x20, 0x23).w(this, FUNC(wardner_state::wardner_bgscroll_w)); /* scroll bg layer */
+ map(0x24, 0x25).w(this, FUNC(wardner_state::wardner_bglayer_w)); /* offset in bg video RAM */
+ map(0x30, 0x33).w(this, FUNC(wardner_state::wardner_fgscroll_w)); /* scroll fg layer */
+ map(0x34, 0x35).w(this, FUNC(wardner_state::wardner_fglayer_w)); /* offset in fg video RAM */
+ map(0x40, 0x43).w(this, FUNC(wardner_state::wardner_exscroll_w)); /* scroll extra layer (not used) */
+ map(0x50, 0x50).portr("DSWA");
+ map(0x52, 0x52).portr("DSWB");
+ map(0x54, 0x54).portr("P1");
+ map(0x56, 0x56).portr("P2");
+ map(0x58, 0x58).portr("SYSTEM");
+ map(0x5a, 0x5a).w("coinlatch", FUNC(ls259_device::write_nibble_d0));
+ map(0x5c, 0x5c).w("mainlatch", FUNC(ls259_device::write_nibble_d0));
+ map(0x60, 0x65).rw(this, FUNC(wardner_state::wardner_videoram_r), FUNC(wardner_state::wardner_videoram_w));
+ map(0x70, 0x70).w(this, FUNC(wardner_state::wardner_bank_w));
+}
/***************************** Z80 Sound Memory Map *************************/
-ADDRESS_MAP_START(wardner_state::sound_program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x807f) AM_RAM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM
-ADDRESS_MAP_END
+void wardner_state::sound_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x807f).ram();
+ map(0xc000, 0xc7ff).ram().share("sharedram");
+ map(0xc800, 0xcfff).ram();
+}
-ADDRESS_MAP_START(wardner_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
-ADDRESS_MAP_END
+void wardner_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+}
/***************************** TMS32010 Memory Map **************************/
-ADDRESS_MAP_START(wardner_state::DSP_program_map)
- AM_RANGE(0x000, 0x5ff) AM_ROM
-ADDRESS_MAP_END
+void wardner_state::DSP_program_map(address_map &map)
+{
+ map(0x000, 0x5ff).rom();
+}
/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */
-ADDRESS_MAP_START(wardner_state::DSP_io_map)
- AM_RANGE(0x00, 0x00) AM_WRITE(wardner_dsp_addrsel_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(wardner_dsp_r, wardner_dsp_w)
- AM_RANGE(0x03, 0x03) AM_WRITE(twincobr_dsp_bio_w)
-ADDRESS_MAP_END
+void wardner_state::DSP_io_map(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(wardner_state::wardner_dsp_addrsel_w));
+ map(0x01, 0x01).rw(this, FUNC(wardner_state::wardner_dsp_r), FUNC(wardner_state::wardner_dsp_w));
+ map(0x03, 0x03).w(this, FUNC(wardner_state::twincobr_dsp_bio_w));
+}
/*****************************************************************************
diff --git a/src/mame/drivers/warpsped.cpp b/src/mame/drivers/warpsped.cpp
index 3ac351519ff..5bb75367d5f 100644
--- a/src/mame/drivers/warpsped.cpp
+++ b/src/mame/drivers/warpsped.cpp
@@ -233,20 +233,22 @@ uint32_t warpspeed_state::screen_update(screen_device &screen, bitmap_ind16 &bit
return 0;
}
-ADDRESS_MAP_START(warpspeed_state::warpspeed_map)
- AM_RANGE(0x0000, 0x0dff) AM_ROM
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(vidram_w ) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1cff) AM_RAM AM_SHARE("workram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(warpspeed_state::warpspeed_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("IN2")
- AM_RANGE(0x00, 0x27) AM_WRITE(hardware_w )
-ADDRESS_MAP_END
+void warpspeed_state::warpspeed_map(address_map &map)
+{
+ map(0x0000, 0x0dff).rom();
+ map(0x1800, 0x1bff).ram().w(this, FUNC(warpspeed_state::vidram_w)).share("videoram");
+ map(0x1c00, 0x1cff).ram().share("workram");
+}
+
+void warpspeed_state::warpspeed_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0");
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("DSW");
+ map(0x03, 0x03).portr("IN2");
+ map(0x00, 0x27).w(this, FUNC(warpspeed_state::hardware_w));
+}
static INPUT_PORTS_START( warpspeed )
PORT_START("IN0")
diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp
index 8c6200c6663..9eab2a885b8 100644
--- a/src/mame/drivers/warpwarp.cpp
+++ b/src/mame/drivers/warpwarp.cpp
@@ -290,44 +290,48 @@ WRITE8_MEMBER(warpwarp_state::warpwarp_out0_w)
-ADDRESS_MAP_START(warpwarp_state::geebee_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x400) AM_RAM_WRITE(geebee_videoram_w) AM_SHARE("geebee_videoram") // mirror used by kaitei due to a bug
- AM_RANGE(0x3000, 0x37ff) AM_ROM AM_REGION("gfx1", 0) // 3000-33ff in geebee
- AM_RANGE(0x4000, 0x40ff) AM_RAM
- AM_RANGE(0x5000, 0x53ff) AM_READ(geebee_in_r)
- AM_RANGE(0x6000, 0x6fff) AM_WRITE(geebee_out6_w)
- AM_RANGE(0x7000, 0x7007) AM_MIRROR(0x0ff8) AM_DEVWRITE("latch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(warpwarp_state::geebee_port_map)
- AM_RANGE(0x50, 0x53) AM_READ(geebee_in_r)
- AM_RANGE(0x60, 0x6f) AM_WRITE(geebee_out6_w)
- AM_RANGE(0x70, 0x77) AM_MIRROR(0x08) AM_DEVWRITE("latch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(warpwarp_state::bombbee_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(warpwarp_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0x6000, 0x600f) AM_READWRITE(warpwarp_sw_r, warpwarp_out0_w)
- AM_RANGE(0x6010, 0x601f) AM_READ(warpwarp_vol_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music1_w)
- AM_RANGE(0x6020, 0x602f) AM_READ(warpwarp_dsw1_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music2_w)
- AM_RANGE(0x6030, 0x6037) AM_MIRROR(0x0008) AM_DEVWRITE("latch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(warpwarp_state::warpwarp_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(warpwarp_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_ROM AM_REGION("gfx1", 0)
- AM_RANGE(0xc000, 0xc00f) AM_READWRITE(warpwarp_sw_r, warpwarp_out0_w)
- AM_RANGE(0xc010, 0xc01f) AM_READ(warpwarp_vol_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music1_w)
- AM_RANGE(0xc020, 0xc02f) AM_READ(warpwarp_dsw1_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music2_w)
- AM_RANGE(0xc030, 0xc037) AM_MIRROR(0x0008) AM_DEVWRITE("latch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void warpwarp_state::geebee_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).mirror(0x400).ram().w(this, FUNC(warpwarp_state::geebee_videoram_w)).share("geebee_videoram"); // mirror used by kaitei due to a bug
+ map(0x3000, 0x37ff).rom().region("gfx1", 0); // 3000-33ff in geebee
+ map(0x4000, 0x40ff).ram();
+ map(0x5000, 0x53ff).r(this, FUNC(warpwarp_state::geebee_in_r));
+ map(0x6000, 0x6fff).w(this, FUNC(warpwarp_state::geebee_out6_w));
+ map(0x7000, 0x7007).mirror(0x0ff8).w("latch", FUNC(ls259_device::write_d0));
+}
+
+void warpwarp_state::geebee_port_map(address_map &map)
+{
+ map(0x50, 0x53).r(this, FUNC(warpwarp_state::geebee_in_r));
+ map(0x60, 0x6f).w(this, FUNC(warpwarp_state::geebee_out6_w));
+ map(0x70, 0x77).mirror(0x08).w("latch", FUNC(ls259_device::write_d0));
+}
+
+
+void warpwarp_state::bombbee_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x47ff).ram().w(this, FUNC(warpwarp_state::warpwarp_videoram_w)).share("videoram");
+ map(0x4800, 0x4fff).rom().region("gfx1", 0);
+ map(0x6000, 0x600f).rw(this, FUNC(warpwarp_state::warpwarp_sw_r), FUNC(warpwarp_state::warpwarp_out0_w));
+ map(0x6010, 0x601f).r(this, FUNC(warpwarp_state::warpwarp_vol_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music1_w));
+ map(0x6020, 0x602f).r(this, FUNC(warpwarp_state::warpwarp_dsw1_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music2_w));
+ map(0x6030, 0x6037).mirror(0x0008).w("latch", FUNC(ls259_device::write_d0));
+}
+
+void warpwarp_state::warpwarp_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x4000, 0x47ff).ram().w(this, FUNC(warpwarp_state::warpwarp_videoram_w)).share("videoram");
+ map(0x4800, 0x4fff).rom().region("gfx1", 0);
+ map(0xc000, 0xc00f).rw(this, FUNC(warpwarp_state::warpwarp_sw_r), FUNC(warpwarp_state::warpwarp_out0_w));
+ map(0xc010, 0xc01f).r(this, FUNC(warpwarp_state::warpwarp_vol_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music1_w));
+ map(0xc020, 0xc02f).r(this, FUNC(warpwarp_state::warpwarp_dsw1_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music2_w));
+ map(0xc030, 0xc037).mirror(0x0008).w("latch", FUNC(ls259_device::write_d0));
+}
diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp
index c8e63829079..f065cfbe817 100644
--- a/src/mame/drivers/warriorb.cpp
+++ b/src/mame/drivers/warriorb.cpp
@@ -223,52 +223,55 @@ WRITE16_MEMBER(warriorb_state::tc0100scn_dual_screen_w)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(warriorb_state::darius2d_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main ram */
- AM_RANGE(0x200000, 0x213fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_dual_screen_w) /* tilemaps (all screens) */
- AM_RANGE(0x214000, 0x2141ff) AM_WRITENOP /* error in screen clearing code ? */
- AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x240000, 0x253fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */
- AM_RANGE(0x260000, 0x26000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
- AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
- AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
+void warriorb_state::darius2d_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* main ram */
+ map(0x200000, 0x213fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(warriorb_state::tc0100scn_dual_screen_w)); /* tilemaps (all screens) */
+ map(0x214000, 0x2141ff).nopw(); /* error in screen clearing code ? */
+ map(0x220000, 0x22000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x240000, 0x253fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */
+ map(0x260000, 0x26000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x400000, 0x400007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */
+ map(0x420000, 0x420007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */
+ map(0x600000, 0x6013ff).ram().share("spriteram");
+ map(0x800000, 0x80000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ???
- AM_RANGE(0x830000, 0x830003) AM_READWRITE(sound_r, sound_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(warriorb_state::warriorb_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM
- AM_RANGE(0x200000, 0x213fff) AM_RAM
- AM_RANGE(0x300000, 0x313fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_dual_screen_w) /* tilemaps (all screens) */
- AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x340000, 0x353fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */
- AM_RANGE(0x360000, 0x36000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
- AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
- AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0x00ff)
+ map(0x830000, 0x830003).rw(this, FUNC(warriorb_state::sound_r), FUNC(warriorb_state::sound_w));
+}
+
+void warriorb_state::warriorb_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom();
+ map(0x200000, 0x213fff).ram();
+ map(0x300000, 0x313fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(warriorb_state::tc0100scn_dual_screen_w)); /* tilemaps (all screens) */
+ map(0x320000, 0x32000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x340000, 0x353fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */
+ map(0x360000, 0x36000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x400000, 0x400007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */
+ map(0x420000, 0x420007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */
+ map(0x600000, 0x6013ff).ram().share("spriteram");
+ map(0x800000, 0x80000f).rw(m_tc0510nio, FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0x00ff);
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ? uses bits 0,2,3
- AM_RANGE(0x830000, 0x830003) AM_READWRITE(sound_r, sound_w)
-ADDRESS_MAP_END
+ map(0x830000, 0x830003).rw(this, FUNC(warriorb_state::sound_r), FUNC(warriorb_state::sound_w));
+}
/***************************************************************************/
-ADDRESS_MAP_START(warriorb_state::z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol_w) /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void warriorb_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).w(this, FUNC(warriorb_state::pancontrol_w)); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(warriorb_state::sound_bankswitch_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/wc90.cpp b/src/mame/drivers/wc90.cpp
index f2c44228d3a..95f342e5052 100644
--- a/src/mame/drivers/wc90.cpp
+++ b/src/mame/drivers/wc90.cpp
@@ -75,57 +75,60 @@ WRITE8_MEMBER(wc90_state::bankswitch1_w)
-ADDRESS_MAP_START(wc90_state::wc90_map_1)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* fg video ram */
- AM_RANGE(0xb000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") /* tx video ram */
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("mainbank")
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1")
- AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P2")
- AM_RANGE(0xfc05, 0xfc05) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xfc06, 0xfc06) AM_READ_PORT("DSW1")
- AM_RANGE(0xfc07, 0xfc07) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc02, 0xfc02) AM_WRITEONLY AM_SHARE("scroll0ylo")
- AM_RANGE(0xfc03, 0xfc03) AM_WRITEONLY AM_SHARE("scroll0yhi")
- AM_RANGE(0xfc06, 0xfc06) AM_WRITEONLY AM_SHARE("scroll0xlo")
- AM_RANGE(0xfc07, 0xfc07) AM_WRITEONLY AM_SHARE("scroll0xhi")
- AM_RANGE(0xfc22, 0xfc22) AM_WRITEONLY AM_SHARE("scroll1ylo")
- AM_RANGE(0xfc23, 0xfc23) AM_WRITEONLY AM_SHARE("scroll1yhi")
- AM_RANGE(0xfc26, 0xfc26) AM_WRITEONLY AM_SHARE("scroll1xlo")
- AM_RANGE(0xfc27, 0xfc27) AM_WRITEONLY AM_SHARE("scroll1xhi")
- AM_RANGE(0xfc42, 0xfc42) AM_WRITEONLY AM_SHARE("scroll2ylo")
- AM_RANGE(0xfc43, 0xfc43) AM_WRITEONLY AM_SHARE("scroll2yhi")
- AM_RANGE(0xfc46, 0xfc46) AM_WRITEONLY AM_SHARE("scroll2xlo")
- AM_RANGE(0xfc47, 0xfc47) AM_WRITEONLY AM_SHARE("scroll2xhi")
- AM_RANGE(0xfcc0, 0xfcc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xfcd0, 0xfcd0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xfce0, 0xfce0) AM_WRITE(bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wc90_state::wc90_map_2)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("subbank")
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch1_w)
- AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wc90_state::sound_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write)
- AM_RANGE(0xfc00, 0xfc00) AM_NOP // IRQ acknowledge? (data read and immediately written back)
- AM_RANGE(0xfc10, 0xfc10) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void wc90_state::wc90_map_1(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram(); /* Main RAM */
+ map(0xa000, 0xafff).ram().w(this, FUNC(wc90_state::fgvideoram_w)).share("fgvideoram"); /* fg video ram */
+ map(0xb000, 0xbfff).ram();
+ map(0xc000, 0xcfff).ram().w(this, FUNC(wc90_state::bgvideoram_w)).share("bgvideoram");
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xefff).ram().w(this, FUNC(wc90_state::txvideoram_w)).share("txvideoram"); /* tx video ram */
+ map(0xf000, 0xf7ff).bankr("mainbank");
+ map(0xf800, 0xfbff).ram().share("share1");
+ map(0xfc00, 0xfc00).portr("P1");
+ map(0xfc02, 0xfc02).portr("P2");
+ map(0xfc05, 0xfc05).portr("SYSTEM");
+ map(0xfc06, 0xfc06).portr("DSW1");
+ map(0xfc07, 0xfc07).portr("DSW2");
+ map(0xfc02, 0xfc02).writeonly().share("scroll0ylo");
+ map(0xfc03, 0xfc03).writeonly().share("scroll0yhi");
+ map(0xfc06, 0xfc06).writeonly().share("scroll0xlo");
+ map(0xfc07, 0xfc07).writeonly().share("scroll0xhi");
+ map(0xfc22, 0xfc22).writeonly().share("scroll1ylo");
+ map(0xfc23, 0xfc23).writeonly().share("scroll1yhi");
+ map(0xfc26, 0xfc26).writeonly().share("scroll1xlo");
+ map(0xfc27, 0xfc27).writeonly().share("scroll1xhi");
+ map(0xfc42, 0xfc42).writeonly().share("scroll2ylo");
+ map(0xfc43, 0xfc43).writeonly().share("scroll2yhi");
+ map(0xfc46, 0xfc46).writeonly().share("scroll2xlo");
+ map(0xfc47, 0xfc47).writeonly().share("scroll2xhi");
+ map(0xfcc0, 0xfcc0).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xfcd0, 0xfcd0).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xfce0, 0xfce0).w(this, FUNC(wc90_state::bankswitch_w));
+}
+
+void wc90_state::wc90_map_2(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf000, 0xf7ff).bankr("subbank");
+ map(0xf800, 0xfbff).ram().share("share1");
+ map(0xfc00, 0xfc00).w(this, FUNC(wc90_state::bankswitch1_w));
+ map(0xfc01, 0xfc01).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
+
+void wc90_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf803).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write));
+ map(0xfc00, 0xfc00).noprw(); // IRQ acknowledge? (data read and immediately written back)
+ map(0xfc10, 0xfc10).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( wc90 )
diff --git a/src/mame/drivers/wc90b.cpp b/src/mame/drivers/wc90b.cpp
index 12bfc75443a..504f466f2c8 100644
--- a/src/mame/drivers/wc90b.cpp
+++ b/src/mame/drivers/wc90b.cpp
@@ -140,51 +140,54 @@ WRITE8_MEMBER(wc90b_state::slave_irq_ack_w)
}
-ADDRESS_MAP_START(wc90b_state::wc90b_map1)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x9fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("mainbank")
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch_w)
- AM_RANGE(0xfd00, 0xfd00) AM_WRITE(sound_command_w)
- AM_RANGE(0xfd04, 0xfd04) AM_WRITEONLY AM_SHARE("scroll1y")
- AM_RANGE(0xfd06, 0xfd06) AM_WRITEONLY AM_SHARE("scroll1x")
- AM_RANGE(0xfd08, 0xfd08) AM_WRITEONLY AM_SHARE("scroll2y")
- AM_RANGE(0xfd0a, 0xfd0a) AM_WRITEONLY AM_SHARE("scroll2x")
- AM_RANGE(0xfd0e, 0xfd0e) AM_WRITEONLY AM_SHARE("scroll_x_lo")
- AM_RANGE(0xfd00, 0xfd00) AM_READ_PORT("P1")
- AM_RANGE(0xfd02, 0xfd02) AM_READ_PORT("P2")
- AM_RANGE(0xfd06, 0xfd06) AM_READ_PORT("DSW1")
- AM_RANGE(0xfd08, 0xfd08) AM_READ_PORT("DSW2")
- AM_RANGE(0xfd0c, 0xfd0c) AM_READ(master_irq_ack_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wc90b_state::wc90b_map2)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe800, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("subbank")
- AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch1_w)
- AM_RANGE(0xfd0c, 0xfd0c) AM_WRITE(slave_irq_ack_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wc90b_state::sound_cpu)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_control_w)
- AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w)
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd1", ym2203_device, read, write)
- AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd2", ym2203_device, read, write)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void wc90b_state::wc90b_map1(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x9fff).ram(); /* Main RAM */
+ map(0xa000, 0xafff).ram().w(this, FUNC(wc90b_state::fgvideoram_w)).share("fgvideoram");
+ map(0xc000, 0xcfff).ram().w(this, FUNC(wc90b_state::bgvideoram_w)).share("bgvideoram");
+ map(0xe000, 0xefff).ram().w(this, FUNC(wc90b_state::txvideoram_w)).share("txvideoram");
+ map(0xf000, 0xf7ff).bankr("mainbank");
+ map(0xf800, 0xfbff).ram().share("share1");
+ map(0xfc00, 0xfc00).w(this, FUNC(wc90b_state::bankswitch_w));
+ map(0xfd00, 0xfd00).w(this, FUNC(wc90b_state::sound_command_w));
+ map(0xfd04, 0xfd04).writeonly().share("scroll1y");
+ map(0xfd06, 0xfd06).writeonly().share("scroll1x");
+ map(0xfd08, 0xfd08).writeonly().share("scroll2y");
+ map(0xfd0a, 0xfd0a).writeonly().share("scroll2x");
+ map(0xfd0e, 0xfd0e).writeonly().share("scroll_x_lo");
+ map(0xfd00, 0xfd00).portr("P1");
+ map(0xfd02, 0xfd02).portr("P2");
+ map(0xfd06, 0xfd06).portr("DSW1");
+ map(0xfd08, 0xfd08).portr("DSW2");
+ map(0xfd0c, 0xfd0c).r(this, FUNC(wc90b_state::master_irq_ack_r));
+}
+
+void wc90b_state::wc90b_map2(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe800, 0xefff).rom();
+ map(0xf000, 0xf7ff).bankr("subbank");
+ map(0xf800, 0xfbff).ram().share("share1");
+ map(0xfc00, 0xfc00).w(this, FUNC(wc90b_state::bankswitch1_w));
+ map(0xfd0c, 0xfd0c).w(this, FUNC(wc90b_state::slave_irq_ack_w));
+}
+
+void wc90b_state::sound_cpu(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("audiobank");
+ map(0xe000, 0xe000).w(this, FUNC(wc90b_state::adpcm_control_w));
+ map(0xe400, 0xe400).w(this, FUNC(wc90b_state::adpcm_data_w));
+ map(0xe800, 0xe801).rw("ymsnd1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xec00, 0xec01).rw("ymsnd2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp
index c060c0c336e..4a3435b60e3 100644
--- a/src/mame/drivers/wecleman.cpp
+++ b/src/mame/drivers/wecleman.cpp
@@ -509,30 +509,31 @@ WRITE16_MEMBER(wecleman_state::blitter_w)
WEC Le Mans 24 Main CPU Handlers
***************************************************************************/
-ADDRESS_MAP_START(wecleman_state::wecleman_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM (03c000-03ffff used as RAM sometimes!)
- AM_RANGE(0x040000, 0x043fff) AM_RAM // RAM
- AM_RANGE(0x040494, 0x040495) AM_WRITE(wecleman_videostatus_w) AM_SHARE("videostatus") // cloud blending control (HACK)
- AM_RANGE(0x060000, 0x060005) AM_WRITE(wecleman_protection_w) AM_SHARE("protection_ram")
- AM_RANGE(0x060006, 0x060007) AM_READ(wecleman_protection_r) // MCU read
- AM_RANGE(0x080000, 0x080011) AM_RAM_WRITE(blitter_w) AM_SHARE("blitter_regs") // Blitter
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(wecleman_pageram_w) AM_SHARE("pageram") // Background Layers
- AM_RANGE(0x108000, 0x108fff) AM_RAM_WRITE(wecleman_txtram_w) AM_SHARE("txtram") // Text Layer
- AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x124000, 0x127fff) AM_RAM AM_SHARE("share1") // Shared with main CPU
- AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x140000, 0x140001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To sound CPU
- AM_RANGE(0x140002, 0x140003) AM_WRITE(selected_ip_w) // Selects accelerator / wheel / ..
- AM_RANGE(0x140004, 0x140005) AM_WRITE(irqctrl_w) // Main CPU controls the other CPUs
- AM_RANGE(0x140006, 0x140007) AM_WRITENOP // Watchdog reset
- AM_RANGE(0x140010, 0x140011) AM_READ_PORT("IN0") // Coins + brake + gear
- AM_RANGE(0x140012, 0x140013) AM_READ_PORT("IN1") // ??
- AM_RANGE(0x140014, 0x140015) AM_READ_PORT("DSWA") // DSW 2
- AM_RANGE(0x140016, 0x140017) AM_READ_PORT("DSWB") // DSW 1
- AM_RANGE(0x140020, 0x140021) AM_WRITEONLY // Paired with writes to $140003
- AM_RANGE(0x140020, 0x140021) AM_READ(selected_ip_r) // Accelerator or Wheel or ..
- AM_RANGE(0x140030, 0x140031) AM_WRITENOP // toggles between 0 & 1 on hitting bumps and crashes (vibration?)
-ADDRESS_MAP_END
+void wecleman_state::wecleman_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom(); // ROM (03c000-03ffff used as RAM sometimes!)
+ map(0x040000, 0x043fff).ram(); // RAM
+ map(0x040494, 0x040495).w(this, FUNC(wecleman_state::wecleman_videostatus_w)).share("videostatus"); // cloud blending control (HACK)
+ map(0x060000, 0x060005).w(this, FUNC(wecleman_state::wecleman_protection_w)).share("protection_ram");
+ map(0x060006, 0x060007).r(this, FUNC(wecleman_state::wecleman_protection_r)); // MCU read
+ map(0x080000, 0x080011).ram().w(this, FUNC(wecleman_state::blitter_w)).share("blitter_regs"); // Blitter
+ map(0x100000, 0x103fff).ram().w(this, FUNC(wecleman_state::wecleman_pageram_w)).share("pageram"); // Background Layers
+ map(0x108000, 0x108fff).ram().w(this, FUNC(wecleman_state::wecleman_txtram_w)).share("txtram"); // Text Layer
+ map(0x110000, 0x110fff).ram().w(this, FUNC(wecleman_state::wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w)).share("paletteram");
+ map(0x124000, 0x127fff).ram().share("share1"); // Shared with main CPU
+ map(0x130000, 0x130fff).ram().share("spriteram"); // Sprites
+ map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write)); // To sound CPU
+ map(0x140002, 0x140003).w(this, FUNC(wecleman_state::selected_ip_w)); // Selects accelerator / wheel / ..
+ map(0x140004, 0x140005).w(this, FUNC(wecleman_state::irqctrl_w)); // Main CPU controls the other CPUs
+ map(0x140006, 0x140007).nopw(); // Watchdog reset
+ map(0x140010, 0x140011).portr("IN0"); // Coins + brake + gear
+ map(0x140012, 0x140013).portr("IN1"); // ??
+ map(0x140014, 0x140015).portr("DSWA"); // DSW 2
+ map(0x140016, 0x140017).portr("DSWB"); // DSW 1
+ map(0x140020, 0x140021).writeonly(); // Paired with writes to $140003
+ map(0x140020, 0x140021).r(this, FUNC(wecleman_state::selected_ip_r)); // Accelerator or Wheel or ..
+ map(0x140030, 0x140031).nopw(); // toggles between 0 & 1 on hitting bumps and crashes (vibration?)
+}
/***************************************************************************
@@ -541,54 +542,57 @@ ADDRESS_MAP_END
-ADDRESS_MAP_START(wecleman_state::hotchase_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x041fff) AM_RAM // RAM
- AM_RANGE(0x060000, 0x063fff) AM_RAM // RAM
- AM_RANGE(0x080000, 0x080011) AM_RAM_WRITE(blitter_w) AM_SHARE("blitter_regs") // Blitter
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0x00ff) // Background
- AM_RANGE(0x101000, 0x10101f) AM_DEVWRITE8("k051316_1", k051316_device, ctrl_w, 0x00ff) // Background Ctrl
- AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0x00ff) // Foreground
- AM_RANGE(0x103000, 0x10301f) AM_DEVWRITE8("k051316_2", k051316_device, ctrl_w, 0x00ff) // Foreground Ctrl
- AM_RANGE(0x110000, 0x111fff) AM_RAM_WRITE(hotchase_paletteram16_SBGRBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("share1") // Shared with sub CPU
- AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x140000, 0x140001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To sound CPU
- AM_RANGE(0x140002, 0x140003) AM_WRITE(selected_ip_w) // Selects accelerator / wheel /
- AM_RANGE(0x140004, 0x140005) AM_WRITE(irqctrl_w) // Main CPU controls the other CPUs
- AM_RANGE(0x140006, 0x140007) AM_READNOP // Watchdog reset
- AM_RANGE(0x140010, 0x140011) AM_READ_PORT("IN0") // Coins + brake + gear
- AM_RANGE(0x140012, 0x140013) AM_READ_PORT("IN1") // ?? bit 4 from sound cpu
- AM_RANGE(0x140014, 0x140015) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0x140016, 0x140017) AM_READ_PORT("DSW1") // DSW 1
- AM_RANGE(0x140020, 0x140021) AM_READ(selected_ip_r) AM_WRITENOP // Paired with writes to $140003
- AM_RANGE(0x140022, 0x140023) AM_READNOP // read and written at $601c0, unknown purpose
- AM_RANGE(0x140030, 0x140031) AM_WRITENOP // signal to cabinet vibration motors?
-ADDRESS_MAP_END
+void wecleman_state::hotchase_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x041fff).ram(); // RAM
+ map(0x060000, 0x063fff).ram(); // RAM
+ map(0x080000, 0x080011).ram().w(this, FUNC(wecleman_state::blitter_w)).share("blitter_regs"); // Blitter
+ map(0x100000, 0x100fff).rw("k051316_1", FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); // Background
+ map(0x101000, 0x10101f).w("k051316_1", FUNC(k051316_device::ctrl_w)).umask16(0x00ff); // Background Ctrl
+ map(0x102000, 0x102fff).rw("k051316_2", FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); // Foreground
+ map(0x103000, 0x10301f).w("k051316_2", FUNC(k051316_device::ctrl_w)).umask16(0x00ff); // Foreground Ctrl
+ map(0x110000, 0x111fff).ram().w(this, FUNC(wecleman_state::hotchase_paletteram16_SBGRBBBBGGGGRRRR_word_w)).share("paletteram");
+ map(0x120000, 0x123fff).ram().share("share1"); // Shared with sub CPU
+ map(0x130000, 0x130fff).ram().share("spriteram"); // Sprites
+ map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write)); // To sound CPU
+ map(0x140002, 0x140003).w(this, FUNC(wecleman_state::selected_ip_w)); // Selects accelerator / wheel /
+ map(0x140004, 0x140005).w(this, FUNC(wecleman_state::irqctrl_w)); // Main CPU controls the other CPUs
+ map(0x140006, 0x140007).nopr(); // Watchdog reset
+ map(0x140010, 0x140011).portr("IN0"); // Coins + brake + gear
+ map(0x140012, 0x140013).portr("IN1"); // ?? bit 4 from sound cpu
+ map(0x140014, 0x140015).portr("DSW2"); // DSW 2
+ map(0x140016, 0x140017).portr("DSW1"); // DSW 1
+ map(0x140020, 0x140021).r(this, FUNC(wecleman_state::selected_ip_r)).nopw(); // Paired with writes to $140003
+ map(0x140022, 0x140023).nopr(); // read and written at $601c0, unknown purpose
+ map(0x140030, 0x140031).nopw(); // signal to cabinet vibration motors?
+}
/***************************************************************************
WEC Le Mans 24 Sub CPU Handlers
***************************************************************************/
-ADDRESS_MAP_START(wecleman_state::wecleman_sub_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM
- AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("roadram") // Road
- AM_RANGE(0x070000, 0x073fff) AM_RAM AM_SHARE("share1") // RAM (Shared with main CPU)
-ADDRESS_MAP_END
+void wecleman_state::wecleman_sub_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); // ROM
+ map(0x060000, 0x060fff).ram().share("roadram"); // Road
+ map(0x070000, 0x073fff).ram().share("share1"); // RAM (Shared with main CPU)
+}
/***************************************************************************
Hot Chase Sub CPU Handlers
***************************************************************************/
-ADDRESS_MAP_START(wecleman_state::hotchase_sub_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM // ROM
- AM_RANGE(0x020000, 0x020fff) AM_RAM AM_SHARE("roadram") // Road
- AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("share1") // Shared with main CPU
- AM_RANGE(0x060000, 0x060fff) AM_RAM // a table, presumably road related
- AM_RANGE(0x061000, 0x06101f) AM_RAM // road vregs?
-ADDRESS_MAP_END
+void wecleman_state::hotchase_sub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom(); // ROM
+ map(0x020000, 0x020fff).ram().share("roadram"); // Road
+ map(0x040000, 0x043fff).ram().share("share1"); // Shared with main CPU
+ map(0x060000, 0x060fff).ram(); // a table, presumably road related
+ map(0x061000, 0x06101f).ram(); // road vregs?
+}
/***************************************************************************
@@ -633,18 +637,19 @@ WRITE8_MEMBER(wecleman_state::wecleman_K00723216_bank_w)
m_k007232[0]->set_bank(0, ~data&1 ); //* (wecleman062gre)
}
-ADDRESS_MAP_START(wecleman_state::wecleman_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8500, 0x8500) AM_WRITENOP // increased with speed (global volume)?
- AM_RANGE(0x9000, 0x9000) AM_READ(multiply_r) // 007452: Protection
- AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w) // 007452: Protection
- AM_RANGE(0x9006, 0x9006) AM_WRITENOP // 007452: ?
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From main CPU
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) // K007232 (Reading offset 5/b triggers the sample)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(wecleman_K00723216_bank_w) // Samples banking
-ADDRESS_MAP_END
+void wecleman_state::wecleman_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x83ff).ram();
+ map(0x8500, 0x8500).nopw(); // increased with speed (global volume)?
+ map(0x9000, 0x9000).r(this, FUNC(wecleman_state::multiply_r)); // 007452: Protection
+ map(0x9000, 0x9001).w(this, FUNC(wecleman_state::multiply_w)); // 007452: Protection
+ map(0x9006, 0x9006).nopw(); // 007452: ?
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); // From main CPU
+ map(0xb000, 0xb00d).rw("k007232_1", FUNC(k007232_device::read), FUNC(k007232_device::write)); // K007232 (Reading offset 5/b triggers the sample)
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf000, 0xf000).w(this, FUNC(wecleman_state::wecleman_K00723216_bank_w)); // Samples banking
+}
/***************************************************************************
@@ -717,17 +722,18 @@ WRITE8_MEMBER(wecleman_state::hotchase_k007232_w)
m_k007232[Chip]->write(space, offset ^ 1, data);
}
-ADDRESS_MAP_START(wecleman_state::hotchase_sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x100d) AM_READWRITE(hotchase_k007232_r<0>, hotchase_k007232_w<0>) // 3 x K007232
- AM_RANGE(0x2000, 0x200d) AM_READWRITE(hotchase_k007232_r<1>, hotchase_k007232_w<1>)
- AM_RANGE(0x3000, 0x300d) AM_READWRITE(hotchase_k007232_r<2>, hotchase_k007232_w<2>)
- AM_RANGE(0x4000, 0x4007) AM_WRITE(hotchase_sound_control_w) // Sound volume, banking, etc.
- AM_RANGE(0x5000, 0x5000) AM_WRITENOP // 0 at start of IRQ service, 1 at end (irq mask?)
- AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From main CPU (Read on IRQ)
- AM_RANGE(0x7000, 0x7000) AM_WRITE(hotchase_sound_hs_w) // ACK signal to main CPU
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void wecleman_state::hotchase_sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x100d).rw(this, FUNC(wecleman_state::hotchase_k007232_r<0>), FUNC(wecleman_state::hotchase_k007232_w<0>)); // 3 x K007232
+ map(0x2000, 0x200d).rw(this, FUNC(wecleman_state::hotchase_k007232_r<1>), FUNC(wecleman_state::hotchase_k007232_w<1>));
+ map(0x3000, 0x300d).rw(this, FUNC(wecleman_state::hotchase_k007232_r<2>), FUNC(wecleman_state::hotchase_k007232_w<2>));
+ map(0x4000, 0x4007).w(this, FUNC(wecleman_state::hotchase_sound_control_w)); // Sound volume, banking, etc.
+ map(0x5000, 0x5000).nopw(); // 0 at start of IRQ service, 1 at end (irq mask?)
+ map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); // From main CPU (Read on IRQ)
+ map(0x7000, 0x7000).w(this, FUNC(wecleman_state::hotchase_sound_hs_w)); // ACK signal to main CPU
+ map(0x8000, 0xffff).rom();
+}
/***************************************************************************
diff --git a/src/mame/drivers/welltris.cpp b/src/mame/drivers/welltris.cpp
index 1d0319f5d62..06651ed9539 100644
--- a/src/mame/drivers/welltris.cpp
+++ b/src/mame/drivers/welltris.cpp
@@ -332,42 +332,45 @@ WRITE8_MEMBER(welltris_state::sound_bankswitch_w)
}
-ADDRESS_MAP_START(welltris_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROM
- AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_SHARE("pixelram") /* Graph_1 & 2*/
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work */
- AM_RANGE(0xffc000, 0xffc3ff) AM_RAM AM_SHARE("spriteram") /* Sprite */
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(charvideoram_w) AM_SHARE("charvideoram") /* Char */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") /* Bottom Controls */
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE(palette_bank_w)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2") /* Top Controls */
- AM_RANGE(0xfff002, 0xfff003) AM_WRITE(gfxbank_w)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("P3") /* Left Side Ctrls */
- AM_RANGE(0xfff004, 0xfff007) AM_WRITE(scrollreg_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("P4") /* Right Side Ctrls */
- AM_RANGE(0xfff008, 0xfff009) AM_READ_PORT("SYSTEM") /* Bit 5 Tested at start of irq 1 */
- AM_RANGE(0xfff008, 0xfff009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("EXTRA") /* P3+P4 Coin + Start Buttons */
- AM_RANGE(0xfff00c, 0xfff00d) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff00c, 0xfff00f) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(welltris_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(welltris_state::sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x10, 0x10) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
+void welltris_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x17ffff).rom();
+ map(0x800000, 0x81ffff).ram().share("pixelram"); /* Graph_1 & 2*/
+ map(0xff8000, 0xffbfff).ram(); /* work */
+ map(0xffc000, 0xffc3ff).ram().share("spriteram"); /* Sprite */
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(welltris_state::charvideoram_w)).share("charvideoram"); /* Char */
+ map(0xffe000, 0xffefff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0xfff000, 0xfff001).portr("P1"); /* Bottom Controls */
+ map(0xfff000, 0xfff001).w(this, FUNC(welltris_state::palette_bank_w));
+ map(0xfff002, 0xfff003).portr("P2"); /* Top Controls */
+ map(0xfff002, 0xfff003).w(this, FUNC(welltris_state::gfxbank_w));
+ map(0xfff004, 0xfff005).portr("P3"); /* Left Side Ctrls */
+ map(0xfff004, 0xfff007).w(this, FUNC(welltris_state::scrollreg_w));
+ map(0xfff006, 0xfff007).portr("P4"); /* Right Side Ctrls */
+ map(0xfff008, 0xfff009).portr("SYSTEM"); /* Bit 5 Tested at start of irq 1 */
+ map(0xfff009, 0xfff009).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xfff00a, 0xfff00b).portr("EXTRA"); /* P3+P4 Coin + Start Buttons */
+ map(0xfff00c, 0xfff00d).portr("DSW1");
+ map(0xfff00e, 0xfff00f).portr("DSW2");
+ map(0xfff00c, 0xfff00f).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void welltris_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
+
+void welltris_state::sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(welltris_state::sound_bankswitch_w));
+ map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x10, 0x10).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x18, 0x18).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
static INPUT_PORTS_START( welltris )
PORT_START("SYSTEM")
diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp
index d12739b038e..be0e4f3d272 100644
--- a/src/mame/drivers/wgp.cpp
+++ b/src/mame/drivers/wgp.cpp
@@ -609,54 +609,57 @@ WRITE8_MEMBER(wgp_state::sound_bankswitch_w)
MEMORY STRUCTURES
*****************************************************************/
-ADDRESS_MAP_START(wgp_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main CPUA ram */
- AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
- AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x200000, 0x20000f) AM_READWRITE(adinput_r, adinput_w)
- AM_RANGE(0x300000, 0x30ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
- AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x400000, 0x40bfff) AM_RAM AM_SHARE("spritemap") /* sprite tilemaps */
- AM_RANGE(0x40c000, 0x40dfff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0x40fff0, 0x40fff1) AM_WRITENOP /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */
- AM_RANGE(0x500000, 0x501fff) AM_RAM /* unknown/unused */
- AM_RANGE(0x502000, 0x517fff) AM_RAM_WRITE(pivram_word_w) AM_SHARE("pivram") /* piv tilemaps */
- AM_RANGE(0x520000, 0x52001f) AM_RAM_WRITE(piv_ctrl_word_w) AM_SHARE("piv_ctrlram")
- AM_RANGE(0x600000, 0x600003) AM_WRITE(rotate_port_w) /* rotation control ? */
- AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wgp_state::cpu2_map) /* LAN areas not mapped... */
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM
- AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff)
- AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff)
+void wgp_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* main CPUA ram */
+ map(0x140000, 0x143fff).ram().share("sharedram");
+ map(0x180000, 0x18000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00);
+ map(0x1c0000, 0x1c0001).w(this, FUNC(wgp_state::cpua_ctrl_w));
+ map(0x200000, 0x20000f).rw(this, FUNC(wgp_state::adinput_r), FUNC(wgp_state::adinput_w));
+ map(0x300000, 0x30ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */
+ map(0x320000, 0x32000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w));
+ map(0x400000, 0x40bfff).ram().share("spritemap"); /* sprite tilemaps */
+ map(0x40c000, 0x40dfff).ram().share("spriteram"); /* sprite ram */
+ map(0x40fff0, 0x40fff1).nopw(); /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */
+ map(0x500000, 0x501fff).ram(); /* unknown/unused */
+ map(0x502000, 0x517fff).ram().w(this, FUNC(wgp_state::pivram_word_w)).share("pivram"); /* piv tilemaps */
+ map(0x520000, 0x52001f).ram().w(this, FUNC(wgp_state::piv_ctrl_word_w)).share("piv_ctrlram");
+ map(0x600000, 0x600003).w(this, FUNC(wgp_state::rotate_port_w)); /* rotation control ? */
+ map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+}
+
+void wgp_state::cpu2_map(address_map &map)
+{ /* LAN areas not mapped... */
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x103fff).ram();
+ map(0x140000, 0x143fff).ram().share("sharedram");
+ map(0x200001, 0x200001).w(m_tc0140syt, FUNC(tc0140syt_device::master_port_w));
+ map(0x200003, 0x200003).rw(m_tc0140syt, FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
// AM_RANGE(0x380000, 0x383fff) AM_READONLY // LAN RAM
// AM_RANGE(0x380000, 0x383fff) AM_WRITEONLY // LAN RAM
- AM_RANGE(0x380000, 0x380001) AM_READ(lan_status_r) // ??
+ map(0x380000, 0x380001).r(this, FUNC(wgp_state::lan_status_r)); // ??
// a lan input area is read somewhere above the status
// (make the status return 0 and log)...
-ADDRESS_MAP_END
+}
/***************************************************************************/
-ADDRESS_MAP_START(wgp_state::z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xea00, 0xea00) AM_READNOP
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void wgp_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xea00, 0xea00).nopr();
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(wgp_state::sound_bankswitch_w));
+}
/***********************************************************
diff --git a/src/mame/drivers/wheelfir.cpp b/src/mame/drivers/wheelfir.cpp
index 96477b66f21..6598b677845 100644
--- a/src/mame/drivers/wheelfir.cpp
+++ b/src/mame/drivers/wheelfir.cpp
@@ -609,36 +609,38 @@ WRITE16_MEMBER(wheelfir_state::coin_cnt_w)
machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
-ADDRESS_MAP_START(wheelfir_state::wheelfir_main)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
-
- AM_RANGE(0x700000, 0x70001f) AM_WRITE(wheelfir_blit_w)
- AM_RANGE(0x720000, 0x720001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x00ff )
- AM_RANGE(0x720002, 0x720003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
- AM_RANGE(0x720004, 0x720005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x00ff ) // word write?
- AM_RANGE(0x740000, 0x740001) AM_DEVWRITE("soundlatch", generic_latch_16_device, write)
- AM_RANGE(0x760000, 0x760001) AM_WRITE(coin_cnt_w)
- AM_RANGE(0x780000, 0x780005) AM_WRITENOP // Start ADC0808 conversion
- AM_RANGE(0x780000, 0x780001) AM_READ_PORT("STEERING")
- AM_RANGE(0x780002, 0x780003) AM_READ_PORT("ACCELERATOR")
- AM_RANGE(0x780004, 0x780005) AM_READ_PORT("BRAKE")
- AM_RANGE(0x7a0000, 0x7a0001) AM_WRITE(wheelfir_scanline_cnt_w)
- AM_RANGE(0x7c0000, 0x7c0001) AM_READWRITE(wheelfir_7c0000_r, wheelfir_7c0000_w)
- AM_RANGE(0x7e0000, 0x7e0001) AM_READ_PORT("P1")
- AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(wheelfir_state::wheelfir_sub)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
-
- AM_RANGE(0x780000, 0x780001) AM_DEVREAD("soundlatch", generic_latch_16_device, read)
-
- AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("ldac", dac_word_interface, write)
- AM_RANGE(0x740000, 0x740001) AM_DEVWRITE("rdac", dac_word_interface, write)
-ADDRESS_MAP_END
+void wheelfir_state::wheelfir_main(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+
+ map(0x700000, 0x70001f).w(this, FUNC(wheelfir_state::wheelfir_blit_w));
+ map(0x720001, 0x720001).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x720003, 0x720003).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x720005, 0x720005).w("ramdac", FUNC(ramdac_device::mask_w)); // word write?
+ map(0x740000, 0x740001).w("soundlatch", FUNC(generic_latch_16_device::write));
+ map(0x760000, 0x760001).w(this, FUNC(wheelfir_state::coin_cnt_w));
+ map(0x780000, 0x780005).nopw(); // Start ADC0808 conversion
+ map(0x780000, 0x780001).portr("STEERING");
+ map(0x780002, 0x780003).portr("ACCELERATOR");
+ map(0x780004, 0x780005).portr("BRAKE");
+ map(0x7a0000, 0x7a0001).w(this, FUNC(wheelfir_state::wheelfir_scanline_cnt_w));
+ map(0x7c0000, 0x7c0001).rw(this, FUNC(wheelfir_state::wheelfir_7c0000_r), FUNC(wheelfir_state::wheelfir_7c0000_w));
+ map(0x7e0000, 0x7e0001).portr("P1");
+ map(0x7e0002, 0x7e0003).portr("P2");
+}
+
+
+void wheelfir_state::wheelfir_sub(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+
+ map(0x780000, 0x780001).r("soundlatch", FUNC(generic_latch_16_device::read));
+
+ map(0x700000, 0x700001).w("ldac", FUNC(dac_word_interface::write));
+ map(0x740000, 0x740001).w("rdac", FUNC(dac_word_interface::write));
+}
static INPUT_PORTS_START( wheelfir )
@@ -747,9 +749,10 @@ void wheelfir_state::machine_start()
}
}
-ADDRESS_MAP_START(wheelfir_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w)
-ADDRESS_MAP_END
+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));
+}
MACHINE_CONFIG_START(wheelfir_state::wheelfir)
diff --git a/src/mame/drivers/white_mod.cpp b/src/mame/drivers/white_mod.cpp
index 4cb4e61f28e..be641c81839 100644
--- a/src/mame/drivers/white_mod.cpp
+++ b/src/mame/drivers/white_mod.cpp
@@ -30,9 +30,10 @@ public:
};
-ADDRESS_MAP_START(whitestar_mod_state::whitestar_mod_map)
- AM_RANGE(0x0000, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void whitestar_mod_state::whitestar_mod_map(address_map &map)
+{
+ map(0x0000, 0xffff).noprw();
+}
static INPUT_PORTS_START( whitestar_mod )
INPUT_PORTS_END
diff --git a/src/mame/drivers/whitestar.cpp b/src/mame/drivers/whitestar.cpp
index 78c35824531..babdd01fcd5 100644
--- a/src/mame/drivers/whitestar.cpp
+++ b/src/mame/drivers/whitestar.cpp
@@ -67,20 +67,21 @@ static INPUT_PORTS_START( whitestar )
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-ADDRESS_MAP_START(whitestar_state::whitestar_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DEDICATED")
- AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW0")
- AM_RANGE(0x3200, 0x3200) AM_WRITE(bank_w)
- AM_RANGE(0x3300, 0x3300) AM_WRITE(switch_w)
- AM_RANGE(0x3400, 0x3400) AM_READ(switch_r)
- AM_RANGE(0x3600, 0x3600) AM_WRITE(dmddata_w)
- AM_RANGE(0x3601, 0x3601) AM_DEVREADWRITE("decodmd",decodmd_type2_device,ctrl_r, ctrl_w)
- AM_RANGE(0x3700, 0x3700) AM_DEVREAD("decodmd",decodmd_type2_device,busy_r)
- AM_RANGE(0x3800, 0x3800) AM_DEVWRITE(DECOBSMT_TAG, decobsmt_device, bsmt_comms_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0x18000)
-ADDRESS_MAP_END
+void whitestar_state::whitestar_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x3000, 0x3000).portr("DEDICATED");
+ map(0x3100, 0x3100).portr("DSW0");
+ map(0x3200, 0x3200).w(this, FUNC(whitestar_state::bank_w));
+ map(0x3300, 0x3300).w(this, FUNC(whitestar_state::switch_w));
+ map(0x3400, 0x3400).r(this, FUNC(whitestar_state::switch_r));
+ map(0x3600, 0x3600).w(this, FUNC(whitestar_state::dmddata_w));
+ map(0x3601, 0x3601).rw(m_decodmd, FUNC(decodmd_type2_device::ctrl_r), FUNC(decodmd_type2_device::ctrl_w));
+ map(0x3700, 0x3700).r(m_decodmd, FUNC(decodmd_type2_device::busy_r));
+ map(0x3800, 0x3800).w(DECOBSMT_TAG, FUNC(decobsmt_device::bsmt_comms_w));
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom().region("user1", 0x18000);
+}
READ8_MEMBER(whitestar_state::switch_r)
{
diff --git a/src/mame/drivers/wicat.cpp b/src/mame/drivers/wicat.cpp
index 494d8d5163a..4c7fcba9b83 100644
--- a/src/mame/drivers/wicat.cpp
+++ b/src/mame/drivers/wicat.cpp
@@ -160,62 +160,67 @@ private:
};
-ADDRESS_MAP_START(wicat_state::wicat_mem)
- ADDRESS_MAP_UNMAP_LOW
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_RANGE(0x000000, 0x001fff) AM_ROM AM_REGION("c2", 0x0000)
- AM_RANGE(0x020000, 0x1fffff) AM_RAM
- AM_RANGE(0x200000, 0x2fffff) AM_RAM
- AM_RANGE(0x300000, 0xdfffff) AM_READWRITE(invalid_r,invalid_w)
- AM_RANGE(0xeff800, 0xeffbff) AM_RAM // memory mapping SRAM, used during boot sequence for storing various data (TODO)
- AM_RANGE(0xeffc00, 0xeffc01) AM_READWRITE(memmap_r,memmap_w)
- AM_RANGE(0xf00000, 0xf00007) AM_DEVREADWRITE8("uart0",mc2661_device,read,write,0xff00) // UARTs
- AM_RANGE(0xf00008, 0xf0000f) AM_DEVREADWRITE8("uart1",mc2661_device,read,write,0xff00)
- AM_RANGE(0xf00010, 0xf00017) AM_DEVREADWRITE8("uart2",mc2661_device,read,write,0xff00)
- AM_RANGE(0xf00018, 0xf0001f) AM_DEVREADWRITE8("uart3",mc2661_device,read,write,0xff00)
- AM_RANGE(0xf00020, 0xf00027) AM_DEVREADWRITE8("uart4",mc2661_device,read,write,0xff00)
- AM_RANGE(0xf00028, 0xf0002f) AM_DEVREADWRITE8("uart5",mc2661_device,read,write,0xff00)
- AM_RANGE(0xf00030, 0xf00037) AM_DEVREADWRITE8("uart6",mc2661_device,read,write,0xff00)
- AM_RANGE(0xf00040, 0xf0005f) AM_READWRITE(via_r, via_w)
- AM_RANGE(0xf00060, 0xf0007f) AM_DEVREADWRITE8("rtc",mm58274c_device,read,write,0xff00)
- AM_RANGE(0xf000d0, 0xf000d1) AM_WRITE(parallel_led_w)
- AM_RANGE(0xf00180, 0xf0018f) AM_READWRITE8(hdc_r,hdc_w,0xffff) // WD1000
- AM_RANGE(0xf00190, 0xf0019f) AM_READWRITE8(fdc_r,fdc_w,0xffff) // FD1795
- AM_RANGE(0xf00f00, 0xf00fff) AM_READWRITE(invalid_r,invalid_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wicat_state::wicat_video_mem)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("g1", 0x0000)
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wicat_state::wicat_video_io)
+void wicat_state::wicat_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map.global_mask(0xffffff);
+ map(0x000000, 0x001fff).rom().region("c2", 0x0000);
+ map(0x020000, 0x1fffff).ram();
+ map(0x200000, 0x2fffff).ram();
+ map(0x300000, 0xdfffff).rw(this, FUNC(wicat_state::invalid_r), FUNC(wicat_state::invalid_w));
+ map(0xeff800, 0xeffbff).ram(); // memory mapping SRAM, used during boot sequence for storing various data (TODO)
+ map(0xeffc00, 0xeffc01).rw(this, FUNC(wicat_state::memmap_r), FUNC(wicat_state::memmap_w));
+ map(0xf00000, 0xf00007).rw(m_uart0, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); // UARTs
+ map(0xf00008, 0xf0000f).rw(m_uart1, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00);
+ map(0xf00010, 0xf00017).rw(m_uart2, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00);
+ map(0xf00018, 0xf0001f).rw(m_uart3, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00);
+ map(0xf00020, 0xf00027).rw(m_uart4, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00);
+ map(0xf00028, 0xf0002f).rw(m_uart5, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00);
+ map(0xf00030, 0xf00037).rw(m_uart6, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00);
+ map(0xf00040, 0xf0005f).rw(this, FUNC(wicat_state::via_r), FUNC(wicat_state::via_w));
+ map(0xf00060, 0xf0007f).rw(m_rtc, FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)).umask16(0xff00);
+ map(0xf000d0, 0xf000d1).w(this, FUNC(wicat_state::parallel_led_w));
+ map(0xf00180, 0xf0018f).rw(this, FUNC(wicat_state::hdc_r), FUNC(wicat_state::hdc_w)); // WD1000
+ map(0xf00190, 0xf0019f).rw(this, FUNC(wicat_state::fdc_r), FUNC(wicat_state::fdc_w)); // FD1795
+ map(0xf00f00, 0xf00fff).rw(this, FUNC(wicat_state::invalid_r), FUNC(wicat_state::invalid_w));
+}
+
+void wicat_state::wicat_video_mem(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("g1", 0x0000);
+ map(0x8000, 0xffff).ram();
+}
+
+void wicat_state::wicat_video_io(address_map &map)
+{
// these are largely wild guesses...
- AM_RANGE(0x0000,0x0003) AM_READWRITE(video_timer_r,video_timer_w) // some sort of timer?
- AM_RANGE(0x0100,0x0107) AM_READWRITE(video_uart0_r,video_uart0_w) // INS2651 UART #1
- AM_RANGE(0x0200,0x0207) AM_READWRITE(video_uart1_r,video_uart1_w) // INS2651 UART #2
- AM_RANGE(0x0304,0x0304) AM_READ(video_status_r)
- AM_RANGE(0x0400,0x047f) AM_READWRITE(videosram_r,videosram_w) // XD2210 4-bit NOVRAM
- AM_RANGE(0x0500,0x0500) AM_WRITE(videosram_recall_w)
- AM_RANGE(0x0600,0x0600) AM_WRITE(videosram_store_w)
- AM_RANGE(0x0800,0x080f) AM_READWRITE(video_ctrl_r,video_ctrl_w)
- AM_RANGE(0x0a00,0x0a1f) AM_READWRITE(video_dma_r,video_dma_w) // AM9517A DMA
- AM_RANGE(0x0b00,0x0b03) AM_READWRITE(video_r,video_w) // i8275 CRTC
- AM_RANGE(0x0e00,0x0eff) AM_RAM
- AM_RANGE(0x4000,0x5fff) AM_RAM AM_SHARE("vram") // video RAM?
- AM_RANGE(0x8000,0x8fff) AM_ROM AM_REGION("g2char",0x0000)
- AM_RANGE(0x9000,0x9fff) AM_ROM AM_REGION("g2char",0x0000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wicat_state::wicat_wd1000_mem)
- AM_RANGE(0x0000, 0x17ff) AM_ROM AM_REGION("wd3", 0x0000)
- AM_RANGE(0x1800, 0x1fff) AM_NOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wicat_state::wicat_wd1000_io)
- AM_RANGE(0x0000, 0x00ff) AM_RAM // left bank - RAM
- AM_RANGE(0x0100, 0x01ff) AM_RAM // right bank - I/O ports (TODO)
-ADDRESS_MAP_END
+ map(0x0000, 0x0003).rw(this, FUNC(wicat_state::video_timer_r), FUNC(wicat_state::video_timer_w)); // some sort of timer?
+ map(0x0100, 0x0107).rw(this, FUNC(wicat_state::video_uart0_r), FUNC(wicat_state::video_uart0_w)); // INS2651 UART #1
+ map(0x0200, 0x0207).rw(this, FUNC(wicat_state::video_uart1_r), FUNC(wicat_state::video_uart1_w)); // INS2651 UART #2
+ map(0x0304, 0x0304).r(this, FUNC(wicat_state::video_status_r));
+ map(0x0400, 0x047f).rw(this, FUNC(wicat_state::videosram_r), FUNC(wicat_state::videosram_w)); // XD2210 4-bit NOVRAM
+ map(0x0500, 0x0500).w(this, FUNC(wicat_state::videosram_recall_w));
+ map(0x0600, 0x0600).w(this, FUNC(wicat_state::videosram_store_w));
+ map(0x0800, 0x080f).rw(this, FUNC(wicat_state::video_ctrl_r), FUNC(wicat_state::video_ctrl_w));
+ map(0x0a00, 0x0a1f).rw(this, FUNC(wicat_state::video_dma_r), FUNC(wicat_state::video_dma_w)); // AM9517A DMA
+ map(0x0b00, 0x0b03).rw(this, FUNC(wicat_state::video_r), FUNC(wicat_state::video_w)); // i8275 CRTC
+ map(0x0e00, 0x0eff).ram();
+ map(0x4000, 0x5fff).ram().share("vram"); // video RAM?
+ map(0x8000, 0x8fff).rom().region("g2char", 0x0000);
+ map(0x9000, 0x9fff).rom().region("g2char", 0x0000);
+}
+
+void wicat_state::wicat_wd1000_mem(address_map &map)
+{
+ map(0x0000, 0x17ff).rom().region("wd3", 0x0000);
+ map(0x1800, 0x1fff).noprw();
+}
+
+void wicat_state::wicat_wd1000_io(address_map &map)
+{
+ map(0x0000, 0x00ff).ram(); // left bank - RAM
+ map(0x0100, 0x01ff).ram(); // right bank - I/O ports (TODO)
+}
/* Input ports */
diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp
index 4c2403a9589..c6cb04da6f3 100644
--- a/src/mame/drivers/wico.cpp
+++ b/src/mame/drivers/wico.cpp
@@ -87,50 +87,52 @@ private:
};
// housekeeping cpu
-ADDRESS_MAP_START(wico_state::hcpu_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x1fe0, 0x1fe0) AM_WRITE(muxld_w)
+void wico_state::hcpu_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("sharedram");
+ map(0x1fe0, 0x1fe0).w(this, FUNC(wico_state::muxld_w));
//AM_RANGE(0x1fe1, 0x1fe1) AM_WRITE(store_w)
- AM_RANGE(0x1fe2, 0x1fe2) AM_WRITE(muxen_w)
+ map(0x1fe2, 0x1fe2).w(this, FUNC(wico_state::muxen_w));
//AM_RANGE(0x1fe3, 0x1fe3) AM_WRITE(csols_w)
- AM_RANGE(0x1fe4, 0x1fe4) AM_NOP
- AM_RANGE(0x1fe5, 0x1fe5) AM_DEVWRITE("sn76494", sn76494_device, write)
- AM_RANGE(0x1fe6, 0x1fe6) AM_WRITE(wdogcl_w)
- AM_RANGE(0x1fe7, 0x1fe7) AM_WRITE(zcres_w)
- AM_RANGE(0x1fe8, 0x1fe8) AM_WRITE(dled0_w)
- AM_RANGE(0x1fe9, 0x1fe9) AM_WRITE(dled1_w)
- AM_RANGE(0x1fea, 0x1fea) AM_READ(gentmrcl_r)
- AM_RANGE(0x1feb, 0x1feb) AM_READ(lampst_r)
+ map(0x1fe4, 0x1fe4).noprw();
+ map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::write));
+ map(0x1fe6, 0x1fe6).w(this, FUNC(wico_state::wdogcl_w));
+ map(0x1fe7, 0x1fe7).w(this, FUNC(wico_state::zcres_w));
+ map(0x1fe8, 0x1fe8).w(this, FUNC(wico_state::dled0_w));
+ map(0x1fe9, 0x1fe9).w(this, FUNC(wico_state::dled1_w));
+ map(0x1fea, 0x1fea).r(this, FUNC(wico_state::gentmrcl_r));
+ map(0x1feb, 0x1feb).r(this, FUNC(wico_state::lampst_r));
//AM_RANGE(0x1fec, 0x1fec) AM_READ(sast_r)
//AM_RANGE(0x1fed, 0x1fed) AM_READ(solst1_r)
//AM_RANGE(0x1fee, 0x1fee) AM_READ(solst0_r)
- AM_RANGE(0x1fef, 0x1fef) AM_READ(switch_r)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x1fef, 0x1fef).r(this, FUNC(wico_state::switch_r));
+ map(0xf000, 0xffff).rom();
+}
// command cpu
-ADDRESS_MAP_START(wico_state::ccpu_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram") // 2128 2k RAM
+void wico_state::ccpu_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram().share("sharedram"); // 2128 2k RAM
//AM_RANGE(0x1fe0, 0x1fe0) AM_WRITE(muxld_w) // to display module
//AM_RANGE(0x1fe1, 0x1fe1) AM_WRITE(store_w) // enable save to nvram
- AM_RANGE(0x1fe2, 0x1fe2) AM_WRITE(muxen_w) // digit to display on diagnostic LED; d0=L will disable main displays
- AM_RANGE(0x1fe3, 0x1fe3) AM_WRITE(csols_w) // solenoid column
- AM_RANGE(0x1fe4, 0x1fe4) AM_WRITE(msols_w) // solenoid row
- AM_RANGE(0x1fe5, 0x1fe5) AM_DEVWRITE("sn76494", sn76494_device, write)
- AM_RANGE(0x1fe6, 0x1fe6) AM_WRITE(wdogcl_w) // watchdog clear
- AM_RANGE(0x1fe7, 0x1fe7) AM_WRITE(zcres_w) // enable IRQ on hcpu
- AM_RANGE(0x1fe8, 0x1fe8) AM_WRITE(dled0_w) // turn off diagnostic LED
- AM_RANGE(0x1fe9, 0x1fe9) AM_WRITE(dled1_w) // turn on diagnostic LED
- AM_RANGE(0x1fea, 0x1fea) AM_READ(gentmrcl_r) // enable IRQ on ccpu
+ map(0x1fe2, 0x1fe2).w(this, FUNC(wico_state::muxen_w)); // digit to display on diagnostic LED; d0=L will disable main displays
+ map(0x1fe3, 0x1fe3).w(this, FUNC(wico_state::csols_w)); // solenoid column
+ map(0x1fe4, 0x1fe4).w(this, FUNC(wico_state::msols_w)); // solenoid row
+ map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::write));
+ map(0x1fe6, 0x1fe6).w(this, FUNC(wico_state::wdogcl_w)); // watchdog clear
+ map(0x1fe7, 0x1fe7).w(this, FUNC(wico_state::zcres_w)); // enable IRQ on hcpu
+ map(0x1fe8, 0x1fe8).w(this, FUNC(wico_state::dled0_w)); // turn off diagnostic LED
+ map(0x1fe9, 0x1fe9).w(this, FUNC(wico_state::dled1_w)); // turn on diagnostic LED
+ map(0x1fea, 0x1fea).r(this, FUNC(wico_state::gentmrcl_r)); // enable IRQ on ccpu
//AM_RANGE(0x1feb, 0x1feb) AM_READ(lampst_r) // lamps?
//AM_RANGE(0x1fec, 0x1fec) AM_READ(sast_r) // a pwron pulse to d0 L->H
//AM_RANGE(0x1fed, 0x1fed) AM_READ(solst1_r) // switches
//AM_RANGE(0x1fee, 0x1fee) AM_READ(solst0_r) // switches
//AM_RANGE(0x1fef, 0x1fef) AM_READ(switch_r) // switches
- AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram") // X2212 4bit x 256 NVRAM, stores only when store_w is active
- AM_RANGE(0x8000, 0x9fff) AM_ROM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0x4000, 0x40ff).ram().share("nvram"); // X2212 4bit x 256 NVRAM, stores only when store_w is active
+ map(0x8000, 0x9fff).rom();
+ map(0xe000, 0xffff).rom();
+}
static INPUT_PORTS_START( wico )
PORT_START("X0")
diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp
index 3c2aa2e9bfd..fac8dfcbda0 100644
--- a/src/mame/drivers/wildpkr.cpp
+++ b/src/mame/drivers/wildpkr.cpp
@@ -306,47 +306,50 @@ WRITE16_MEMBER(wildpkr_state::unknown_trigger_w)
* Memory Map *
*************************/
-ADDRESS_MAP_START(wildpkr_state::wildpkr_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x113fff) AM_RAM
- AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x800080, 0x80009f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x800180, 0x800181) AM_READ8(unknown_read8, 0xff00)
- AM_RANGE(0x800180, 0x800181) AM_WRITE8(unknown_write8, 0x00ff)
- AM_RANGE(0x800200, 0x800201) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00)
- AM_RANGE(0x800202, 0x800203) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0xff00)
- AM_RANGE(0x800204, 0x800205) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
- AM_RANGE(0x800280, 0x800281) AM_DEVWRITE8("aysnd", ay8930_device, data_w, 0xff00)
- AM_RANGE(0x800282, 0x800283) AM_DEVWRITE8("aysnd", ay8930_device, address_w, 0xff00)
- AM_RANGE(0x800284, 0x800285) AM_DEVREAD8("aysnd", ay8930_device, data_r, 0x00ff) // (odd!)
- AM_RANGE(0x800286, 0x800289) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wildpkr_state::tabpkr_map)
- AM_RANGE(0x000000, 0x2fffff) AM_ROM
- AM_RANGE(0x300000, 0x303fff) AM_RAM
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
- AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w)
- AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w)
- AM_RANGE(0x500020, 0x500021) AM_DEVREADWRITE8("ramdac", ramdac_device, index_r, index_w, 0x00ff)
- AM_RANGE(0x500022, 0x500023) AM_DEVREADWRITE8("ramdac", ramdac_device, pal_r, pal_w, 0x00ff)
- AM_RANGE(0x500024, 0x500025) AM_DEVREADWRITE8("ramdac", ramdac_device, mask_r, mask_w, 0x00ff)
- AM_RANGE(0x500040, 0x50005f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
- AM_RANGE(0x500060, 0x500061) AM_READWRITE(id_serial_r, id_serial_w)
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") AM_WRITE(out0_w)
- AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") AM_WRITE(out1_w)
- AM_RANGE(0x600004, 0x600005) AM_READ_PORT("IN2")
- AM_RANGE(0x600004, 0x600005) AM_WRITE8(dac_w, 0xff00)
- AM_RANGE(0x700000, 0x700001) AM_WRITE(clock_start_w)
- AM_RANGE(0x700002, 0x700003) AM_WRITE(clock_rate_w)
- AM_RANGE(0x700004, 0x700007) AM_WRITE(unknown_trigger_w)
- AM_RANGE(0x70000a, 0x70000b) AM_WRITENOP // only writes 0 at POST
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wildpkr_state::hd63484_map)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
-ADDRESS_MAP_END
+void wildpkr_state::wildpkr_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x113fff).ram();
+ map(0x800000, 0x800001).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x800002, 0x800003).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x800080, 0x80009f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x800180, 0x800180).r(this, FUNC(wildpkr_state::unknown_read8));
+ map(0x800181, 0x800181).w(this, FUNC(wildpkr_state::unknown_write8));
+ map(0x800200, 0x800200).w("ramdac", FUNC(ramdac_device::index_w));
+ map(0x800202, 0x800202).w("ramdac", FUNC(ramdac_device::pal_w));
+ map(0x800204, 0x800204).w("ramdac", FUNC(ramdac_device::mask_w));
+ map(0x800280, 0x800280).w("aysnd", FUNC(ay8930_device::data_w));
+ map(0x800282, 0x800282).w("aysnd", FUNC(ay8930_device::address_w));
+ map(0x800285, 0x800285).r("aysnd", FUNC(ay8930_device::data_r)); // (odd!)
+ map(0x800286, 0x800289).nopw();
+}
+
+void wildpkr_state::tabpkr_map(address_map &map)
+{
+ map(0x000000, 0x2fffff).rom();
+ map(0x300000, 0x303fff).ram();
+ map(0x400000, 0x400fff).ram().w(this, FUNC(wildpkr_state::nvram_w)).share("nvram");
+ map(0x500000, 0x500001).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w));
+ map(0x500002, 0x500003).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w));
+ map(0x500021, 0x500021).rw("ramdac", FUNC(ramdac_device::index_r), FUNC(ramdac_device::index_w));
+ map(0x500023, 0x500023).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w));
+ map(0x500025, 0x500025).rw("ramdac", FUNC(ramdac_device::mask_r), FUNC(ramdac_device::mask_w));
+ map(0x500040, 0x50005f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff);
+ map(0x500060, 0x500061).rw(this, FUNC(wildpkr_state::id_serial_r), FUNC(wildpkr_state::id_serial_w));
+ map(0x600000, 0x600001).portr("IN0").w(this, FUNC(wildpkr_state::out0_w));
+ map(0x600002, 0x600003).portr("IN1").w(this, FUNC(wildpkr_state::out1_w));
+ map(0x600004, 0x600005).portr("IN2");
+ map(0x600004, 0x600004).w(this, FUNC(wildpkr_state::dac_w));
+ map(0x700000, 0x700001).w(this, FUNC(wildpkr_state::clock_start_w));
+ map(0x700002, 0x700003).w(this, FUNC(wildpkr_state::clock_rate_w));
+ map(0x700004, 0x700007).w(this, FUNC(wildpkr_state::unknown_trigger_w));
+ map(0x70000a, 0x70000b).nopw(); // only writes 0 at POST
+}
+
+void wildpkr_state::hd63484_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+}
/* Unknown R/W:
@@ -436,9 +439,10 @@ void wildpkr_state::machine_start()
}
-ADDRESS_MAP_START(wildpkr_state::ramdac_map)
- AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
-ADDRESS_MAP_END
+void wildpkr_state::ramdac_map(address_map &map)
+{
+ map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
+}
IRQ_CALLBACK_MEMBER(wildpkr_state::tabpkr_irq_ack)
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 3497177fe9b..2abc3e65ffd 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -521,25 +521,27 @@ Reference video: https://www.youtube.com/watch?v=R5OeC6Wc_yI
*
*************************************/
-ADDRESS_MAP_START(williams_state::defender_map)
- AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xc000, 0xcfff) AM_DEVICE("bankc000", address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xdfff) AM_WRITE(defender_bank_select_w)
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams_state::defender_map(address_map &map)
+{
+ map(0x0000, 0xbfff).ram().share("videoram");
+ map(0xc000, 0xcfff).m(m_bankc000, FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xdfff).w(this, FUNC(williams_state::defender_bank_select_w));
+ map(0xd000, 0xffff).rom();
+}
-ADDRESS_MAP_START(williams_state::defender_bankc000_map)
- AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x03e0) AM_WRITEONLY AM_SHARE("paletteram")
- AM_RANGE(0x03ff, 0x03ff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x03e0) AM_WRITE(defender_video_control_w)
- AM_RANGE(0x0400, 0x04ff) AM_MIRROR(0x0300) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0x0800, 0x0bff) AM_READ(williams_video_counter_r)
- AM_RANGE(0x0c00, 0x0c03) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0x0c04, 0x0c07) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write)
- AM_RANGE(0x1000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x10000)
- AM_RANGE(0xa000, 0xffff) AM_NOP
-ADDRESS_MAP_END
+void williams_state::defender_bankc000_map(address_map &map)
+{
+ map(0x0000, 0x000f).mirror(0x03e0).writeonly().share("paletteram");
+ map(0x03ff, 0x03ff).w(this, FUNC(williams_state::williams_watchdog_reset_w));
+ map(0x0010, 0x001f).mirror(0x03e0).w(this, FUNC(williams_state::defender_video_control_w));
+ map(0x0400, 0x04ff).mirror(0x0300).ram().w(this, FUNC(williams_state::williams_cmos_w)).share("nvram");
+ map(0x0800, 0x0bff).r(this, FUNC(williams_state::williams_video_counter_r));
+ map(0x0c00, 0x0c03).mirror(0x03e0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0c04, 0x0c07).mirror(0x03e0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x9fff).rom().region("maincpu", 0x10000);
+ map(0xa000, 0xffff).noprw();
+}
@@ -549,19 +551,20 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(williams_state::williams_map)
- AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram")
- AM_RANGE(0x9000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram")
- AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write)
- AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0xc900, 0xc9ff) AM_WRITE(williams_vram_select_w)
- AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
- AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
- AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams_state::williams_map(address_map &map)
+{
+ map(0x0000, 0x8fff).bankr("bank1").writeonly().share("videoram");
+ map(0x9000, 0xbfff).ram();
+ map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram");
+ map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc900, 0xc9ff).w(this, FUNC(williams_state::williams_vram_select_w));
+ map(0xca00, 0xca07).mirror(0x00f8).w(this, FUNC(williams_state::williams_blitter_w));
+ map(0xcb00, 0xcbff).r(this, FUNC(williams_state::williams_video_counter_r));
+ map(0xcbff, 0xcbff).w(this, FUNC(williams_state::williams_watchdog_reset_w));
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(williams_state::williams_cmos_w)).share("nvram");
+ map(0xd000, 0xffff).rom();
+}
@@ -571,20 +574,21 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(williams_state::sinistar_map)
- AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram")
- AM_RANGE(0x9000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram")
- AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write)
- AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0xc900, 0xc9ff) AM_WRITE(sinistar_vram_select_w)
- AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
- AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
- AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams_state::sinistar_map(address_map &map)
+{
+ map(0x0000, 0x8fff).bankr("bank1").writeonly().share("videoram");
+ map(0x9000, 0xbfff).ram();
+ map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram");
+ map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc900, 0xc9ff).w(this, FUNC(williams_state::sinistar_vram_select_w));
+ map(0xca00, 0xca07).mirror(0x00f8).w(this, FUNC(williams_state::williams_blitter_w));
+ map(0xcb00, 0xcbff).r(this, FUNC(williams_state::williams_video_counter_r));
+ map(0xcbff, 0xcbff).w(this, FUNC(williams_state::williams_watchdog_reset_w));
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(williams_state::williams_cmos_w)).share("nvram");
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xffff).rom();
+}
@@ -594,26 +598,27 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(blaster_state::blaster_map)
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram")
- AM_RANGE(0x4000, 0x8fff) AM_READ_BANK("bank2") AM_WRITEONLY
- AM_RANGE(0x9000, 0xbaff) AM_RAM
- AM_RANGE(0xbb00, 0xbbff) AM_RAM AM_SHARE("blaster_pal0")
- AM_RANGE(0xbc00, 0xbcff) AM_RAM AM_SHARE("blaster_scan")
- AM_RANGE(0xbd00, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram")
- AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write)
- AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0xc900, 0xc93f) AM_WRITE(blaster_vram_select_w)
- AM_RANGE(0xc940, 0xc97f) AM_WRITE(blaster_remap_select_w)
- AM_RANGE(0xc980, 0xc9bf) AM_WRITE(blaster_bank_select_w)
- AM_RANGE(0xc9c0, 0xc9ff) AM_WRITE(blaster_video_control_w)
- AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
- AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
- AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void blaster_state::blaster_map(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bank1").writeonly().share("videoram");
+ map(0x4000, 0x8fff).bankr("bank2").writeonly();
+ map(0x9000, 0xbaff).ram();
+ map(0xbb00, 0xbbff).ram().share("blaster_pal0");
+ map(0xbc00, 0xbcff).ram().share("blaster_scan");
+ map(0xbd00, 0xbfff).ram();
+ map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram");
+ map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc900, 0xc93f).w(this, FUNC(blaster_state::blaster_vram_select_w));
+ map(0xc940, 0xc97f).w(this, FUNC(blaster_state::blaster_remap_select_w));
+ map(0xc980, 0xc9bf).w(this, FUNC(blaster_state::blaster_bank_select_w));
+ map(0xc9c0, 0xc9ff).w(this, FUNC(blaster_state::blaster_video_control_w));
+ map(0xca00, 0xca07).mirror(0x00f8).w(this, FUNC(blaster_state::williams_blitter_w));
+ map(0xcb00, 0xcbff).r(this, FUNC(blaster_state::williams_video_counter_r));
+ map(0xcbff, 0xcbff).w(this, FUNC(blaster_state::williams_watchdog_reset_w));
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(blaster_state::williams_cmos_w)).share("nvram");
+ map(0xd000, 0xffff).rom();
+}
@@ -623,39 +628,42 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(williams2_state::williams2_common_map)
- AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1")
- AM_RANGE(0x8000, 0x87ff) AM_DEVICE("bank8000", address_map_bank_device, amap8)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(williams2_tileram_w) AM_SHARE("williams2_tile")
- AM_RANGE(0xc800, 0xc87f) AM_WRITE(williams2_bank_select_w)
- AM_RANGE(0xc880, 0xc887) AM_MIRROR(0x0078) AM_WRITE(williams_blitter_w)
- AM_RANGE(0xc900, 0xc97f) AM_WRITE(williams2_watchdog_reset_w)
- AM_RANGE(0xc980, 0xc983) AM_MIRROR(0x0070) AM_DEVREADWRITE("pia_1", pia6821_device, read, write)
- AM_RANGE(0xc984, 0xc987) AM_MIRROR(0x0070) AM_DEVREADWRITE("pia_0", pia6821_device, read, write)
- AM_RANGE(0xc98c, 0xc98f) AM_MIRROR(0x0070) AM_WRITE(williams2_7segment_w)
- AM_RANGE(0xcb00, 0xcb1f) AM_WRITE(williams2_fg_select_w)
- AM_RANGE(0xcb20, 0xcb3f) AM_WRITE(williams2_bg_select_w)
- AM_RANGE(0xcb40, 0xcb5f) AM_WRITE(williams2_xscroll_low_w)
- AM_RANGE(0xcb60, 0xcb7f) AM_WRITE(williams2_xscroll_high_w)
- AM_RANGE(0xcb80, 0xcb9f) AM_WRITE(defender_video_control_w)
- AM_RANGE(0xcba0, 0xcbbf) AM_WRITE(williams2_blit_window_enable_w)
- AM_RANGE(0xcbe0, 0xcbef) AM_READ(williams_video_counter_r)
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram")
-ADDRESS_MAP_END
+void williams2_state::williams2_common_map(address_map &map)
+{
+ map(0x0000, 0xbfff).ram().share("videoram");
+ map(0x0000, 0x7fff).bankr("bank1");
+ map(0x8000, 0x87ff).m(m_bank8000, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(williams2_state::williams2_tileram_w)).share("williams2_tile");
+ map(0xc800, 0xc87f).w(this, FUNC(williams2_state::williams2_bank_select_w));
+ map(0xc880, 0xc887).mirror(0x0078).w(this, FUNC(williams2_state::williams_blitter_w));
+ map(0xc900, 0xc97f).w(this, FUNC(williams2_state::williams2_watchdog_reset_w));
+ map(0xc980, 0xc983).mirror(0x0070).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc984, 0xc987).mirror(0x0070).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc98c, 0xc98f).mirror(0x0070).w(this, FUNC(williams2_state::williams2_7segment_w));
+ map(0xcb00, 0xcb1f).w(this, FUNC(williams2_state::williams2_fg_select_w));
+ map(0xcb20, 0xcb3f).w(this, FUNC(williams2_state::williams2_bg_select_w));
+ map(0xcb40, 0xcb5f).w(this, FUNC(williams2_state::williams2_xscroll_low_w));
+ map(0xcb60, 0xcb7f).w(this, FUNC(williams2_state::williams2_xscroll_high_w));
+ map(0xcb80, 0xcb9f).w(this, FUNC(williams2_state::defender_video_control_w));
+ map(0xcba0, 0xcbbf).w(this, FUNC(williams2_state::williams2_blit_window_enable_w));
+ map(0xcbe0, 0xcbef).r(this, FUNC(williams2_state::williams_video_counter_r));
+ map(0xcc00, 0xcfff).ram().w(this, FUNC(williams2_state::williams_cmos_w)).share("nvram");
+}
-ADDRESS_MAP_START(williams2_state::williams2_bank8000_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("vram8000")
- AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(williams2_paletteram_w) AM_SHARE("paletteram")
-ADDRESS_MAP_END
+void williams2_state::williams2_bank8000_map(address_map &map)
+{
+ map(0x0000, 0x07ff).bankrw("vram8000");
+ map(0x0800, 0x0fff).ram().w(this, FUNC(williams2_state::williams2_paletteram_w)).share("paletteram");
+}
/* mysticm and inferno: D000-DFFF is RAM */
-ADDRESS_MAP_START(williams2_state::williams2_d000_ram_map)
- AM_IMPORT_FROM(williams2_common_map)
- AM_RANGE(0xd000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams2_state::williams2_d000_ram_map(address_map &map)
+{
+ williams2_common_map(map);
+ map(0xd000, 0xdfff).ram();
+ map(0xe000, 0xffff).rom();
+}
/* tshoot and joust2: D000-DFFF is ROM */
@@ -672,27 +680,30 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(williams_state::defender_sound_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams_state::defender_sound_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xb000, 0xffff).rom();
+}
-ADDRESS_MAP_START(williams_state::sound_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */
- AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0080, 0x00ff).ram(); /* MC6810 RAM */
+ map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xb000, 0xffff).rom();
+}
/* Same as above, but for second sound board */
-ADDRESS_MAP_START(blaster_state::sound_map_b)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */
- AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2b", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void blaster_state::sound_map_b(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0080, 0x00ff).ram(); /* MC6810 RAM */
+ map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2b, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xb000, 0xffff).rom();
+}
@@ -702,12 +713,13 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(williams2_state::williams2_sound_map)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia_2", pia6821_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams2_state::williams2_sound_map(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0080, 0x00ff).ram(); /* MC6810 RAM */
+ map(0x2000, 0x2003).mirror(0x1ffc).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xe000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp
index 6aa368ff2ca..ea4118c66ca 100644
--- a/src/mame/drivers/wink.cpp
+++ b/src/mame/drivers/wink.cpp
@@ -137,12 +137,13 @@ WRITE8_MEMBER(wink_state::sound_irq_w)
//machine().scheduler().synchronize();
}
-ADDRESS_MAP_START(wink_state::wink_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(bgram_w) AM_SHARE("videoram")
-ADDRESS_MAP_END
+void wink_state::wink_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x97ff).ram().share("nvram");
+ map(0xa000, 0xa3ff).ram().w(this, FUNC(wink_state::bgram_w)).share("videoram");
+}
READ8_MEMBER(wink_state::prot_r)
@@ -170,40 +171,43 @@ WRITE8_MEMBER(wink_state::prot_w)
//take a9-a15 and stuff them in a variable for later use.
}
-ADDRESS_MAP_START(wink_state::wink_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") //0x10-0x1f is likely to be something else
+void wink_state::wink_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x1f).ram().w("palette", FUNC(palette_device::write8)).share("palette"); //0x10-0x1f is likely to be something else
// AM_RANGE(0x20, 0x20) AM_WRITENOP //??? seems unused..
- AM_RANGE(0x21, 0x21) AM_WRITE(player_mux_w) //??? no mux on the pcb.
- AM_RANGE(0x22, 0x22) AM_WRITE(tile_banking_w)
+ map(0x21, 0x21).w(this, FUNC(wink_state::player_mux_w)); //??? no mux on the pcb.
+ map(0x22, 0x22).w(this, FUNC(wink_state::tile_banking_w));
// AM_RANGE(0x23, 0x23) AM_WRITENOP //?
// AM_RANGE(0x24, 0x24) AM_WRITENOP //cab Knocker like in q-bert!
- AM_RANGE(0x25, 0x27) AM_WRITE(wink_coin_counter_w)
- AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x60, 0x60) AM_WRITE(sound_irq_w)
- AM_RANGE(0x80, 0x80) AM_READ(analog_port_r)
- AM_RANGE(0xa0, 0xa0) AM_READ(player_inputs_r)
- AM_RANGE(0xa4, 0xa4) AM_READ_PORT("DSW1") //dipswitch bank2
- AM_RANGE(0xa8, 0xa8) AM_READ_PORT("DSW2") //dipswitch bank1
+ map(0x25, 0x27).w(this, FUNC(wink_state::wink_coin_counter_w));
+ map(0x40, 0x40).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x60, 0x60).w(this, FUNC(wink_state::sound_irq_w));
+ map(0x80, 0x80).r(this, FUNC(wink_state::analog_port_r));
+ map(0xa0, 0xa0).r(this, FUNC(wink_state::player_inputs_r));
+ map(0xa4, 0xa4).portr("DSW1"); //dipswitch bank2
+ map(0xa8, 0xa8).portr("DSW2"); //dipswitch bank1
// AM_RANGE(0xac, 0xac) AM_WRITENOP //protection - loads video xor unit (written only once at startup)
- AM_RANGE(0xb0, 0xb0) AM_READ_PORT("DSW3") //unused inputs
- AM_RANGE(0xb4, 0xb4) AM_READ_PORT("DSW4") //dipswitch bank3
- AM_RANGE(0xc0, 0xdf) AM_WRITE(prot_w) //load load protection-buffer from upper address bus
- AM_RANGE(0xc3, 0xc3) AM_READNOP //watchdog?
- AM_RANGE(0xe0, 0xff) AM_READ(prot_r) //load math unit from buffer & lower address-bus
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wink_state::wink_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wink_state::wink_sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+ map(0xb0, 0xb0).portr("DSW3"); //unused inputs
+ map(0xb4, 0xb4).portr("DSW4"); //dipswitch bank3
+ map(0xc0, 0xdf).w(this, FUNC(wink_state::prot_w)); //load load protection-buffer from upper address bus
+ map(0xc3, 0xc3).nopr(); //watchdog?
+ map(0xe0, 0xff).r(this, FUNC(wink_state::prot_r)); //load math unit from buffer & lower address-bus
+}
+
+void wink_state::wink_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x8000, 0x8000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
+
+void wink_state::wink_sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w));
+}
static INPUT_PORTS_START( wink )
PORT_START("DIAL1")
diff --git a/src/mame/drivers/wiping.cpp b/src/mame/drivers/wiping.cpp
index 2e7265c2bf8..cdb48258630 100644
--- a/src/mame/drivers/wiping.cpp
+++ b/src/mame/drivers/wiping.cpp
@@ -78,27 +78,29 @@ WRITE_LINE_MEMBER(wiping_state::sound_irq_mask_w)
m_sound_irq_mask = state;
}
-ADDRESS_MAP_START(wiping_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x8000, 0x83ff) AM_SHARE("videoram")
- AM_RANGE(0x8400, 0x87ff) AM_SHARE("colorram")
- AM_RANGE(0x8800, 0x88ff) AM_SHARE("spriteram")
- AM_RANGE(0x8000, 0x8bff) AM_RAM
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa800, 0xa807) AM_READ(ports_r)
- AM_RANGE(0xb000, 0xb7ff) AM_RAM
- AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wiping_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("wiping", wiping_sound_device, sound_w)
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("share2")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
+void wiping_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x8000, 0x83ff).share("videoram");
+ map(0x8400, 0x87ff).share("colorram");
+ map(0x8800, 0x88ff).share("spriteram");
+ map(0x8000, 0x8bff).ram();
+ map(0x9000, 0x93ff).ram().share("share1");
+ map(0x9800, 0x9bff).ram().share("share2");
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0xa800, 0xa807).r(this, FUNC(wiping_state::ports_r));
+ map(0xb000, 0xb7ff).ram();
+ map(0xb800, 0xb800).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+}
+
+void wiping_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).w("wiping", FUNC(wiping_sound_device::sound_w));
+ map(0x9000, 0x93ff).ram().share("share1");
+ map(0x9800, 0x9bff).ram().share("share2");
+ map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0));
+}
static INPUT_PORTS_START( wiping )
diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp
index 0267e54e7f9..7422844bbee 100644
--- a/src/mame/drivers/witch.cpp
+++ b/src/mame/drivers/witch.cpp
@@ -483,41 +483,43 @@ WRITE8_MEMBER(witch_state::yscroll_w)
m_scrolly=data;
}
-ADDRESS_MAP_START(witch_state::map_main)
- AM_RANGE(0x0000, UNBANKED_SIZE-1) AM_ROM
- AM_RANGE(UNBANKED_SIZE, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0xa004, 0xa007) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0xa008, 0xa008) AM_WRITE(main_write_a008)
- AM_RANGE(0xa00c, 0xa00c) AM_READ_PORT("SERVICE") // stats / reset
- AM_RANGE(0xa00e, 0xa00e) AM_READ_PORT("COINS") // coins/attendant keys
- AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_WRITE(gfx0_vram_w) AM_SHARE("gfx0_vram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_WRITE(gfx0_cram_w) AM_SHARE("gfx0_cram")
- AM_RANGE(0xc800, 0xcbff) AM_READWRITE(gfx1_vram_r, gfx1_vram_w) AM_SHARE("gfx1_vram")
- AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(gfx1_cram_r, gfx1_cram_w) AM_SHARE("gfx1_cram")
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf100, 0xf1ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf200, 0xffff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(witch_state::map_sub)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0x8010, 0x8016) AM_DEVREADWRITE("essnd", es8712_device, read, write)
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0xa004, 0xa007) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0xa008, 0xa008) AM_WRITE(sub_write_a008)
- AM_RANGE(0xa00c, 0xa00c) AM_READ_PORT("SERVICE") // stats / reset
- AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf200, 0xffff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
+void witch_state::map_main(address_map &map)
+{
+ map(0x0000, UNBANKED_SIZE-1).rom();
+ map(UNBANKED_SIZE, 0x7fff).bankr("mainbank");
+ map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8008, 0x8009).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa003).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa004, 0xa007).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa008, 0xa008).w(this, FUNC(witch_state::main_write_a008));
+ map(0xa00c, 0xa00c).portr("SERVICE"); // stats / reset
+ map(0xa00e, 0xa00e).portr("COINS"); // coins/attendant keys
+ map(0xc000, 0xc3ff).ram().w(this, FUNC(witch_state::gfx0_vram_w)).share("gfx0_vram");
+ map(0xc400, 0xc7ff).ram().w(this, FUNC(witch_state::gfx0_cram_w)).share("gfx0_cram");
+ map(0xc800, 0xcbff).rw(this, FUNC(witch_state::gfx1_vram_r), FUNC(witch_state::gfx1_vram_w)).share("gfx1_vram");
+ map(0xcc00, 0xcfff).rw(this, FUNC(witch_state::gfx1_cram_r), FUNC(witch_state::gfx1_cram_w)).share("gfx1_cram");
+ map(0xd000, 0xdfff).ram().share("sprite_ram");
+ map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf000, 0xf0ff).ram().share("share1");
+ map(0xf100, 0xf1ff).ram().share("nvram");
+ map(0xf200, 0xffff).ram().share("share2");
+}
+
+
+void witch_state::map_sub(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8008, 0x8009).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8010, 0x8016).rw("essnd", FUNC(es8712_device::read), FUNC(es8712_device::write));
+ map(0xa000, 0xa003).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa004, 0xa007).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xa008, 0xa008).w(this, FUNC(witch_state::sub_write_a008));
+ map(0xa00c, 0xa00c).portr("SERVICE"); // stats / reset
+ map(0xf000, 0xf0ff).ram().share("share1");
+ map(0xf200, 0xffff).ram().share("share2");
+}
static INPUT_PORTS_START( witch )
PORT_START("SERVICE")
diff --git a/src/mame/drivers/wiz.cpp b/src/mame/drivers/wiz.cpp
index a0b047eb0e2..e13e546f340 100644
--- a/src/mame/drivers/wiz.cpp
+++ b/src/mame/drivers/wiz.cpp
@@ -309,48 +309,52 @@ WRITE8_MEMBER(wiz_state::wiz_main_nmi_mask_w)
}
-ADDRESS_MAP_START(wiz_state::kungfut_main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("colorram2")
- AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("attrram2")
- AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("attrram")
- AM_RANGE(0xe840, 0xe85f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW0")
- AM_RANGE(0xf001, 0xf001) AM_WRITE(wiz_main_nmi_mask_w)
- AM_RANGE(0xf002, 0xf003) AM_WRITE(wiz_palette_bank_w)
- AM_RANGE(0xf004, 0xf005) AM_WRITE(wiz_char_bank_w)
- AM_RANGE(0xf006, 0xf006) AM_WRITE(wiz_flipx_w)
- AM_RANGE(0xf007, 0xf007) AM_WRITE(wiz_flipy_w)
- AM_RANGE(0xf008, 0xf008) AM_READ_PORT("DSW1")
- AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0")
- AM_RANGE(0xf018, 0xf018) AM_READ_PORT("IN1")
- AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf818, 0xf818) AM_WRITE(wiz_bgcolor_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wiz_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wiz_state::wiz_main_map)
- AM_IMPORT_FROM( kungfut_main_map )
- AM_RANGE(0xc800, 0xc801) AM_WRITE(wiz_coin_counter_w)
- AM_RANGE(0xd400, 0xd400) AM_READ(wiz_protection_r)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(wiz_sprite_bank_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wiz_state::stinger_main_map)
- AM_IMPORT_FROM( kungfut_main_map )
+void wiz_state::kungfut_main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xd000, 0xd3ff).ram().share("videoram2");
+ map(0xd400, 0xd7ff).ram().share("colorram2");
+ map(0xd800, 0xd83f).ram().share("attrram2");
+ map(0xd840, 0xd85f).ram().share("spriteram2");
+ map(0xe000, 0xe3ff).ram().share("videoram");
+ map(0xe400, 0xe7ff).ram().share("colorram");
+ map(0xe800, 0xe83f).ram().share("attrram");
+ map(0xe840, 0xe85f).ram().share("spriteram");
+ map(0xf000, 0xf000).portr("DSW0");
+ map(0xf001, 0xf001).w(this, FUNC(wiz_state::wiz_main_nmi_mask_w));
+ map(0xf002, 0xf003).w(this, FUNC(wiz_state::wiz_palette_bank_w));
+ map(0xf004, 0xf005).w(this, FUNC(wiz_state::wiz_char_bank_w));
+ map(0xf006, 0xf006).w(this, FUNC(wiz_state::wiz_flipx_w));
+ map(0xf007, 0xf007).w(this, FUNC(wiz_state::wiz_flipy_w));
+ map(0xf008, 0xf008).portr("DSW1");
+ map(0xf010, 0xf010).portr("IN0");
+ map(0xf018, 0xf018).portr("IN1");
+ map(0xf800, 0xf800).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0xf818, 0xf818).w(this, FUNC(wiz_state::wiz_bgcolor_w));
+}
+
+void wiz_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom().share("decrypted_opcodes");
+}
+
+void wiz_state::wiz_main_map(address_map &map)
+{
+ kungfut_main_map(map);
+ map(0xc800, 0xc801).w(this, FUNC(wiz_state::wiz_coin_counter_w));
+ map(0xd400, 0xd400).r(this, FUNC(wiz_state::wiz_protection_r));
+ map(0xf000, 0xf000).w(this, FUNC(wiz_state::wiz_sprite_bank_w));
+}
+
+void wiz_state::stinger_main_map(address_map &map)
+{
+ kungfut_main_map(map);
// AM_RANGE(0xf008, 0xf00f) AM_WRITENOP // ?
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xf808, 0xf808) AM_WRITE(stinger_explosion_w)
- AM_RANGE(0xf80a, 0xf80a) AM_WRITE(stinger_shot_w)
-ADDRESS_MAP_END
+ map(0xf800, 0xf800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xf808, 0xf808).w(this, FUNC(wiz_state::stinger_explosion_w));
+ map(0xf80a, 0xf80a).w(this, FUNC(wiz_state::stinger_shot_w));
+}
/**************************************************************************/
@@ -361,26 +365,28 @@ WRITE8_MEMBER(wiz_state::wiz_sound_nmi_mask_w)
}
-ADDRESS_MAP_START(wiz_state::kungfut_sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("8910.3", ay8910_device, address_data_w)
- AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("8910.1", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("8910.2", ay8910_device, address_data_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(wiz_sound_nmi_mask_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wiz_state::stinger_sound_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(wiz_sound_nmi_mask_w)
- AM_RANGE(0x4000, 0x4000) AM_WRITENOP // ?
- AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("8910.1", ay8910_device, address_data_w)
- AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("8910.2", ay8910_device, address_data_w)
- AM_RANGE(0x5000, 0x7fff) AM_READNOP // prevent error.log spam, cpu jumps here by accident
-ADDRESS_MAP_END
+void wiz_state::kungfut_sound_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x4001).w("8910.3", FUNC(ay8910_device::address_data_w));
+ map(0x5000, 0x5001).w("8910.1", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).w("8910.2", FUNC(ay8910_device::address_data_w));
+ map(0x7000, 0x7000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(wiz_state::wiz_sound_nmi_mask_w));
+}
+
+void wiz_state::stinger_sound_map(address_map &map)
+{
+ map.global_mask(0x7fff);
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(wiz_state::wiz_sound_nmi_mask_w));
+ map(0x4000, 0x4000).nopw(); // ?
+ map(0x5000, 0x5001).w("8910.1", FUNC(ay8910_device::address_data_w));
+ map(0x6000, 0x6001).w("8910.2", FUNC(ay8910_device::address_data_w));
+ map(0x5000, 0x7fff).nopr(); // prevent error.log spam, cpu jumps here by accident
+}
diff --git a/src/mame/drivers/wmg.cpp b/src/mame/drivers/wmg.cpp
index ac7982eba5f..3b4f9fa65ff 100644
--- a/src/mame/drivers/wmg.cpp
+++ b/src/mame/drivers/wmg.cpp
@@ -122,23 +122,25 @@ private:
* Address Map
*
*************************************/
-ADDRESS_MAP_START(wmg_state::wmg_cpu1)
- AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram")
- AM_RANGE(0x9000, 0xbfff) AM_RAM
- AM_RANGE(0xc000, 0xcfff) AM_ROMBANK("bank7")
- AM_RANGE(0xd000, 0xffff) AM_ROMBANK("bank5")
- AM_RANGE(0xd000, 0xd000) AM_WRITE(wmg_d000_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wmg_state::wmg_cpu2)
- AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */
- AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2", pia6821_device, read, write)
+void wmg_state::wmg_cpu1(address_map &map)
+{
+ map(0x0000, 0x8fff).bankr("bank1").writeonly().share("videoram");
+ map(0x9000, 0xbfff).ram();
+ map(0xc000, 0xcfff).bankr("bank7");
+ map(0xd000, 0xffff).bankr("bank5");
+ map(0xd000, 0xd000).w(this, FUNC(wmg_state::wmg_d000_w));
+}
+
+void wmg_state::wmg_cpu2(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); /* internal RAM */
+ map(0x0080, 0x00ff).ram(); /* MC6810 RAM */
+ map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
/* These next 2 are actually banked in CPU 1, but its not something Mame can handle very well. Placed here instead. */
- AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram")
- AM_RANGE(0xd000, 0xefff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf000, 0xffff) AM_ROMBANK("bank6")
-ADDRESS_MAP_END
+ map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram");
+ map(0xd000, 0xefff).ram().share("nvram");
+ map(0xf000, 0xffff).bankr("bank6");
+}
/***************************************************************
*
diff --git a/src/mame/drivers/wms.cpp b/src/mame/drivers/wms.cpp
index 0484c351d58..dae417907c9 100644
--- a/src/mame/drivers/wms.cpp
+++ b/src/mame/drivers/wms.cpp
@@ -123,26 +123,30 @@ uint32_t wms_state::screen_update_wms(screen_device &screen, bitmap_ind16 &bitma
* Memory Map Information *
*********************************************/
-ADDRESS_MAP_START(wms_state::wms_map)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM
- AM_RANGE(0x60000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x60000) // TODO: fix me
-ADDRESS_MAP_END
+void wms_state::wms_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).ram();
+ map(0x60000, 0xfffff).rom().region("maincpu", 0x60000); // TODO: fix me
+}
READ8_MEMBER(wms_state::test_r)
{
return 1;
}
-ADDRESS_MAP_START(wms_state::wms_io)
- AM_RANGE(0x1207, 0x1207) AM_READ(test_r)
-ADDRESS_MAP_END
+void wms_state::wms_io(address_map &map)
+{
+ map(0x1207, 0x1207).r(this, FUNC(wms_state::test_r));
+}
-ADDRESS_MAP_START(wms_state::adsp_program_map)
-ADDRESS_MAP_END
+void wms_state::adsp_program_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(wms_state::adsp_data_map)
-ADDRESS_MAP_END
+void wms_state::adsp_data_map(address_map &map)
+{
+}
/*********************************************
diff --git a/src/mame/drivers/wolfpack.cpp b/src/mame/drivers/wolfpack.cpp
index 9967a8193b6..8ccce6375c4 100644
--- a/src/mame/drivers/wolfpack.cpp
+++ b/src/mame/drivers/wolfpack.cpp
@@ -127,44 +127,45 @@ WRITE8_MEMBER(wolfpack_state::coldetres_w)
}
-ADDRESS_MAP_START(wolfpack_state::main_map)
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100)
- AM_RANGE(0x1000, 0x1000) AM_READ_PORT("INPUTS")
- AM_RANGE(0x1000, 0x10ff) AM_WRITEONLY AM_SHARE("alpha_num_ram")
- AM_RANGE(0x2000, 0x2000) AM_READ(misc_r)
- AM_RANGE(0x2000, 0x2000) AM_WRITE(high_explo_w)
- AM_RANGE(0x2001, 0x2001) AM_WRITE(sonar_ping_w)
- AM_RANGE(0x2002, 0x2002) AM_WRITE(sirlat_w)
- AM_RANGE(0x2003, 0x2003) AM_WRITE(pt_sound_w)
- AM_RANGE(0x2004, 0x2004) AM_WRITE(start_speech_w)
- AM_RANGE(0x2005, 0x2005) AM_WRITE(launch_torpedo_w)
- AM_RANGE(0x2006, 0x2006) AM_WRITE(low_explo_w)
- AM_RANGE(0x2007, 0x2007) AM_WRITE(screw_cont_w)
- AM_RANGE(0x2008, 0x2008) AM_WRITE(video_invert_w)
- AM_RANGE(0x2009, 0x2009) AM_WRITE(ship_reflect_w)
- AM_RANGE(0x200a, 0x200a) AM_WRITE(lamp_flash_w)
- AM_RANGE(0x200c, 0x200c) AM_WRITE(credit_w)
- AM_RANGE(0x200d, 0x200d) AM_WRITE(attract_w)
- AM_RANGE(0x200e, 0x200e) AM_WRITE(pt_pos_select_w)
- AM_RANGE(0x200f, 0x200f) AM_WRITE(warning_light_w)
- AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW")
- AM_RANGE(0x3000, 0x3000) AM_WRITE(audamp_w)
- AM_RANGE(0x3001, 0x3001) AM_WRITE(pt_horz_w)
- AM_RANGE(0x3003, 0x3003) AM_WRITE(pt_pic_w)
- AM_RANGE(0x3004, 0x3004) AM_WRITE(word_w)
- AM_RANGE(0x3007, 0x3007) AM_WRITE(coldetres_w)
- AM_RANGE(0x4000, 0x4000) AM_WRITE(ship_h_w)
- AM_RANGE(0x4001, 0x4001) AM_WRITE(torpedo_pic_w)
- AM_RANGE(0x4002, 0x4002) AM_WRITE(ship_size_w)
- AM_RANGE(0x4003, 0x4003) AM_WRITE(ship_h_precess_w)
- AM_RANGE(0x4004, 0x4004) AM_WRITE(ship_pic_w)
- AM_RANGE(0x4005, 0x4005) AM_WRITE(torpedo_h_w)
- AM_RANGE(0x4006, 0x4006) AM_WRITE(torpedo_v_w)
- AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x7000, 0x7fff) AM_ROM
- AM_RANGE(0x9000, 0x9000) AM_READNOP /* debugger ROM location? */
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void wolfpack_state::main_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram().mirror(0x100);
+ map(0x1000, 0x1000).portr("INPUTS");
+ map(0x1000, 0x10ff).writeonly().share("alpha_num_ram");
+ map(0x2000, 0x2000).r(this, FUNC(wolfpack_state::misc_r));
+ map(0x2000, 0x2000).w(this, FUNC(wolfpack_state::high_explo_w));
+ map(0x2001, 0x2001).w(this, FUNC(wolfpack_state::sonar_ping_w));
+ map(0x2002, 0x2002).w(this, FUNC(wolfpack_state::sirlat_w));
+ map(0x2003, 0x2003).w(this, FUNC(wolfpack_state::pt_sound_w));
+ map(0x2004, 0x2004).w(this, FUNC(wolfpack_state::start_speech_w));
+ map(0x2005, 0x2005).w(this, FUNC(wolfpack_state::launch_torpedo_w));
+ map(0x2006, 0x2006).w(this, FUNC(wolfpack_state::low_explo_w));
+ map(0x2007, 0x2007).w(this, FUNC(wolfpack_state::screw_cont_w));
+ map(0x2008, 0x2008).w(this, FUNC(wolfpack_state::video_invert_w));
+ map(0x2009, 0x2009).w(this, FUNC(wolfpack_state::ship_reflect_w));
+ map(0x200a, 0x200a).w(this, FUNC(wolfpack_state::lamp_flash_w));
+ map(0x200c, 0x200c).w(this, FUNC(wolfpack_state::credit_w));
+ map(0x200d, 0x200d).w(this, FUNC(wolfpack_state::attract_w));
+ map(0x200e, 0x200e).w(this, FUNC(wolfpack_state::pt_pos_select_w));
+ map(0x200f, 0x200f).w(this, FUNC(wolfpack_state::warning_light_w));
+ map(0x3000, 0x3000).portr("DSW");
+ map(0x3000, 0x3000).w(this, FUNC(wolfpack_state::audamp_w));
+ map(0x3001, 0x3001).w(this, FUNC(wolfpack_state::pt_horz_w));
+ map(0x3003, 0x3003).w(this, FUNC(wolfpack_state::pt_pic_w));
+ map(0x3004, 0x3004).w(this, FUNC(wolfpack_state::word_w));
+ map(0x3007, 0x3007).w(this, FUNC(wolfpack_state::coldetres_w));
+ map(0x4000, 0x4000).w(this, FUNC(wolfpack_state::ship_h_w));
+ map(0x4001, 0x4001).w(this, FUNC(wolfpack_state::torpedo_pic_w));
+ map(0x4002, 0x4002).w(this, FUNC(wolfpack_state::ship_size_w));
+ map(0x4003, 0x4003).w(this, FUNC(wolfpack_state::ship_h_precess_w));
+ map(0x4004, 0x4004).w(this, FUNC(wolfpack_state::ship_pic_w));
+ map(0x4005, 0x4005).w(this, FUNC(wolfpack_state::torpedo_h_w));
+ map(0x4006, 0x4006).w(this, FUNC(wolfpack_state::torpedo_v_w));
+ map(0x5000, 0x5fff).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x7000, 0x7fff).rom();
+ map(0x9000, 0x9000).nopr(); /* debugger ROM location? */
+ map(0xf000, 0xffff).rom();
+}
static INPUT_PORTS_START( wolfpack )
diff --git a/src/mame/drivers/wpc_95.cpp b/src/mame/drivers/wpc_95.cpp
index 962b057ce6b..d8325ac856d 100644
--- a/src/mame/drivers/wpc_95.cpp
+++ b/src/mame/drivers/wpc_95.cpp
@@ -119,44 +119,45 @@ private:
bool sc_aux_lamps_handler(int sid, bool state);
};
-ADDRESS_MAP_START(wpc_95_state::wpc_95_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("mainram")
-
- AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmd0")
- AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmd2")
- AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmd4")
- AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmd6")
- AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmd8")
- AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmda")
-
- AM_RANGE(0x3fb8, 0x3fbf) AM_DEVICE("dmd", wpc_dmd_device, registers)
-
- AM_RANGE(0x3fdc, 0x3fdc) AM_READWRITE(dcs_data_r, dcs_data_w)
- AM_RANGE(0x3fdd, 0x3fdd) AM_READWRITE(dcs_ctrl_r, dcs_reset_w)
-
- AM_RANGE(0x3fe0, 0x3fe3) AM_DEVWRITE("out", wpc_out_device, out_w)
- AM_RANGE(0x3fe4, 0x3fe4) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, row_w)
- AM_RANGE(0x3fe5, 0x3fe5) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, col_w)
- AM_RANGE(0x3fe6, 0x3fe6) AM_DEVWRITE("out", wpc_out_device, gi_w)
- AM_RANGE(0x3fe7, 0x3fe7) AM_READ_PORT("DSW")
- AM_RANGE(0x3fe8, 0x3fe8) AM_READ_PORT("DOOR")
- AM_RANGE(0x3fe9, 0x3fe9) AM_DEVREAD("pic", wpc_pic_device, read)
- AM_RANGE(0x3fea, 0x3fea) AM_DEVWRITE("pic", wpc_pic_device, write)
-
- AM_RANGE(0x3fee, 0x3fee) AM_DEVWRITE("out", wpc_out_device, out4_w)
- AM_RANGE(0x3fef, 0x3fef) AM_READ_PORT("FLIPPERS")
-
- AM_RANGE(0x3ff2, 0x3ff2) AM_DEVWRITE("out", wpc_out_device, led_w)
- AM_RANGE(0x3ff3, 0x3ff3) AM_READNOP AM_WRITE(irq_ack_w)
- AM_RANGE(0x3ff4, 0x3ff7) AM_DEVICE("shift", wpc_shift_device, registers)
- AM_RANGE(0x3ff8, 0x3ff8) AM_READ(firq_src_r) AM_WRITENOP // ack?
- AM_RANGE(0x3ffa, 0x3ffb) AM_READ(rtc_r)
- AM_RANGE(0x3ffc, 0x3ffc) AM_WRITE(bank_w)
- AM_RANGE(0x3ffd, 0x3ffe) AM_NOP // memory protection stuff?
- AM_RANGE(0x3fff, 0x3fff) AM_READWRITE(zc_r, watchdog_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0xf8000)
-ADDRESS_MAP_END
+void wpc_95_state::wpc_95_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("mainram");
+
+ map(0x3000, 0x31ff).bankrw("dmd0");
+ map(0x3200, 0x33ff).bankrw("dmd2");
+ map(0x3400, 0x35ff).bankrw("dmd4");
+ map(0x3600, 0x37ff).bankrw("dmd6");
+ map(0x3800, 0x39ff).bankrw("dmd8");
+ map(0x3a00, 0x3bff).bankrw("dmda");
+
+ map(0x3fb8, 0x3fbf).m("dmd", FUNC(wpc_dmd_device::registers));
+
+ map(0x3fdc, 0x3fdc).rw(this, FUNC(wpc_95_state::dcs_data_r), FUNC(wpc_95_state::dcs_data_w));
+ map(0x3fdd, 0x3fdd).rw(this, FUNC(wpc_95_state::dcs_ctrl_r), FUNC(wpc_95_state::dcs_reset_w));
+
+ map(0x3fe0, 0x3fe3).w(out, FUNC(wpc_out_device::out_w));
+ map(0x3fe4, 0x3fe4).nopr().w(lamp, FUNC(wpc_lamp_device::row_w));
+ map(0x3fe5, 0x3fe5).nopr().w(lamp, FUNC(wpc_lamp_device::col_w));
+ map(0x3fe6, 0x3fe6).w(out, FUNC(wpc_out_device::gi_w));
+ map(0x3fe7, 0x3fe7).portr("DSW");
+ map(0x3fe8, 0x3fe8).portr("DOOR");
+ map(0x3fe9, 0x3fe9).r(pic, FUNC(wpc_pic_device::read));
+ map(0x3fea, 0x3fea).w(pic, FUNC(wpc_pic_device::write));
+
+ map(0x3fee, 0x3fee).w(out, FUNC(wpc_out_device::out4_w));
+ map(0x3fef, 0x3fef).portr("FLIPPERS");
+
+ map(0x3ff2, 0x3ff2).w(out, FUNC(wpc_out_device::led_w));
+ map(0x3ff3, 0x3ff3).nopr().w(this, FUNC(wpc_95_state::irq_ack_w));
+ map(0x3ff4, 0x3ff7).m("shift", FUNC(wpc_shift_device::registers));
+ map(0x3ff8, 0x3ff8).r(this, FUNC(wpc_95_state::firq_src_r)).nopw(); // ack?
+ map(0x3ffa, 0x3ffb).r(this, FUNC(wpc_95_state::rtc_r));
+ map(0x3ffc, 0x3ffc).w(this, FUNC(wpc_95_state::bank_w));
+ map(0x3ffd, 0x3ffe).noprw(); // memory protection stuff?
+ map(0x3fff, 0x3fff).rw(this, FUNC(wpc_95_state::zc_r), FUNC(wpc_95_state::watchdog_w));
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom().region("maincpu", 0xf8000);
+}
READ8_MEMBER(wpc_95_state::dcs_data_r)
{
diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp
index 1f773246ba2..dbc33ccfc15 100644
--- a/src/mame/drivers/wpc_an.cpp
+++ b/src/mame/drivers/wpc_an.cpp
@@ -71,13 +71,14 @@ private:
};
-ADDRESS_MAP_START(wpc_an_state::wpc_an_map)
- AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w)
- AM_RANGE(0x3000, 0x3faf) AM_RAM
- AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("fixed",0)
-ADDRESS_MAP_END
+void wpc_an_state::wpc_an_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rw(this, FUNC(wpc_an_state::ram_r), FUNC(wpc_an_state::ram_w));
+ map(0x3000, 0x3faf).ram();
+ map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device
+ map(0x4000, 0x7fff).bankr("cpubank");
+ map(0x8000, 0xffff).rom().region("fixed", 0);
+}
static INPUT_PORTS_START( wpc_an )
PORT_START("INP0")
diff --git a/src/mame/drivers/wpc_dcs.cpp b/src/mame/drivers/wpc_dcs.cpp
index fbf595d7f7d..63073bd7fda 100644
--- a/src/mame/drivers/wpc_dcs.cpp
+++ b/src/mame/drivers/wpc_dcs.cpp
@@ -73,43 +73,44 @@ private:
uint16_t rtc_base_day;
};
-ADDRESS_MAP_START(wpc_dcs_state::wpc_dcs_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("mainram")
-
- AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmd0")
- AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmd2")
- AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmd4")
- AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmd6")
- AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmd8")
- AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmda")
-
- AM_RANGE(0x3fb8, 0x3fbf) AM_DEVICE("dmd", wpc_dmd_device, registers)
-
- AM_RANGE(0x3fd4, 0x3fd4) AM_READ_PORT("FLIPPERS") AM_DEVWRITE("out", wpc_out_device, out4_w)
-
- AM_RANGE(0x3fdc, 0x3fdc) AM_READWRITE(dcs_data_r, dcs_data_w)
- AM_RANGE(0x3fdd, 0x3fdd) AM_READWRITE(dcs_ctrl_r, dcs_reset_w)
-
- AM_RANGE(0x3fe0, 0x3fe3) AM_DEVWRITE("out", wpc_out_device, out_w)
- AM_RANGE(0x3fe4, 0x3fe4) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, row_w)
- AM_RANGE(0x3fe5, 0x3fe5) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, col_w)
- AM_RANGE(0x3fe6, 0x3fe6) AM_DEVWRITE("out", wpc_out_device, gi_w)
- AM_RANGE(0x3fe7, 0x3fe7) AM_READ_PORT("DSW")
- AM_RANGE(0x3fe8, 0x3fe8) AM_READ_PORT("DOOR")
- AM_RANGE(0x3fe9, 0x3fe9) AM_READ(switches_r)
- AM_RANGE(0x3fea, 0x3fea) AM_WRITE(switches_w)
-
- AM_RANGE(0x3ff2, 0x3ff2) AM_DEVWRITE("out", wpc_out_device, led_w)
- AM_RANGE(0x3ff3, 0x3ff3) AM_READNOP AM_WRITE(irq_ack_w)
- AM_RANGE(0x3ff4, 0x3ff7) AM_DEVICE("shift", wpc_shift_device, registers)
- AM_RANGE(0x3ff8, 0x3ff8) AM_READ(firq_src_r) AM_WRITENOP // ack?
- AM_RANGE(0x3ffa, 0x3ffb) AM_READ(rtc_r)
- AM_RANGE(0x3ffc, 0x3ffc) AM_WRITE(bank_w)
- AM_RANGE(0x3ffd, 0x3ffe) AM_NOP // memory protection stuff?
- AM_RANGE(0x3fff, 0x3fff) AM_READWRITE(zc_r, watchdog_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000)
-ADDRESS_MAP_END
+void wpc_dcs_state::wpc_dcs_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("mainram");
+
+ map(0x3000, 0x31ff).bankrw("dmd0");
+ map(0x3200, 0x33ff).bankrw("dmd2");
+ map(0x3400, 0x35ff).bankrw("dmd4");
+ map(0x3600, 0x37ff).bankrw("dmd6");
+ map(0x3800, 0x39ff).bankrw("dmd8");
+ map(0x3a00, 0x3bff).bankrw("dmda");
+
+ map(0x3fb8, 0x3fbf).m("dmd", FUNC(wpc_dmd_device::registers));
+
+ map(0x3fd4, 0x3fd4).portr("FLIPPERS").w(out, FUNC(wpc_out_device::out4_w));
+
+ map(0x3fdc, 0x3fdc).rw(this, FUNC(wpc_dcs_state::dcs_data_r), FUNC(wpc_dcs_state::dcs_data_w));
+ map(0x3fdd, 0x3fdd).rw(this, FUNC(wpc_dcs_state::dcs_ctrl_r), FUNC(wpc_dcs_state::dcs_reset_w));
+
+ map(0x3fe0, 0x3fe3).w(out, FUNC(wpc_out_device::out_w));
+ map(0x3fe4, 0x3fe4).nopr().w(lamp, FUNC(wpc_lamp_device::row_w));
+ map(0x3fe5, 0x3fe5).nopr().w(lamp, FUNC(wpc_lamp_device::col_w));
+ map(0x3fe6, 0x3fe6).w(out, FUNC(wpc_out_device::gi_w));
+ map(0x3fe7, 0x3fe7).portr("DSW");
+ map(0x3fe8, 0x3fe8).portr("DOOR");
+ map(0x3fe9, 0x3fe9).r(this, FUNC(wpc_dcs_state::switches_r));
+ map(0x3fea, 0x3fea).w(this, FUNC(wpc_dcs_state::switches_w));
+
+ map(0x3ff2, 0x3ff2).w(out, FUNC(wpc_out_device::led_w));
+ map(0x3ff3, 0x3ff3).nopr().w(this, FUNC(wpc_dcs_state::irq_ack_w));
+ map(0x3ff4, 0x3ff7).m("shift", FUNC(wpc_shift_device::registers));
+ map(0x3ff8, 0x3ff8).r(this, FUNC(wpc_dcs_state::firq_src_r)).nopw(); // ack?
+ map(0x3ffa, 0x3ffb).r(this, FUNC(wpc_dcs_state::rtc_r));
+ map(0x3ffc, 0x3ffc).w(this, FUNC(wpc_dcs_state::bank_w));
+ map(0x3ffd, 0x3ffe).noprw(); // memory protection stuff?
+ map(0x3fff, 0x3fff).rw(this, FUNC(wpc_dcs_state::zc_r), FUNC(wpc_dcs_state::watchdog_w));
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x78000);
+}
READ8_MEMBER(wpc_dcs_state::dcs_data_r)
{
diff --git a/src/mame/drivers/wpc_dot.cpp b/src/mame/drivers/wpc_dot.cpp
index 7d4b046e972..9e7879dc3b8 100644
--- a/src/mame/drivers/wpc_dot.cpp
+++ b/src/mame/drivers/wpc_dot.cpp
@@ -9,19 +9,20 @@
#include "speaker.h"
-ADDRESS_MAP_START(wpc_dot_state::wpc_dot_map)
- AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w)
- AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1")
- AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2")
- AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3")
- AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4")
- AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5")
- AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6")
- AM_RANGE(0x3c00, 0x3faf) AM_RAM
- AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank")
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank")
-ADDRESS_MAP_END
+void wpc_dot_state::wpc_dot_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rw(this, FUNC(wpc_dot_state::ram_r), FUNC(wpc_dot_state::ram_w));
+ map(0x3000, 0x31ff).bankrw("dmdbank1");
+ map(0x3200, 0x33ff).bankrw("dmdbank2");
+ map(0x3400, 0x35ff).bankrw("dmdbank3");
+ map(0x3600, 0x37ff).bankrw("dmdbank4");
+ map(0x3800, 0x39ff).bankrw("dmdbank5");
+ map(0x3a00, 0x3bff).bankrw("dmdbank6");
+ map(0x3c00, 0x3faf).ram();
+ map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device
+ map(0x4000, 0x7fff).bankr("cpubank");
+ map(0x8000, 0xffff).bankr("fixedbank");
+}
static INPUT_PORTS_START( wpc_dot )
PORT_START("INP0")
diff --git a/src/mame/drivers/wpc_flip1.cpp b/src/mame/drivers/wpc_flip1.cpp
index 81ea8a18dfa..8bb7bf1d17e 100644
--- a/src/mame/drivers/wpc_flip1.cpp
+++ b/src/mame/drivers/wpc_flip1.cpp
@@ -9,19 +9,20 @@
#include "speaker.h"
-ADDRESS_MAP_START(wpc_flip1_state::wpc_flip1_map)
- AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w)
- AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1")
- AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2")
- AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3")
- AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4")
- AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5")
- AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6")
- AM_RANGE(0x3c00, 0x3faf) AM_RAM
- AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank")
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank")
-ADDRESS_MAP_END
+void wpc_flip1_state::wpc_flip1_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rw(this, FUNC(wpc_flip1_state::ram_r), FUNC(wpc_flip1_state::ram_w));
+ map(0x3000, 0x31ff).bankrw("dmdbank1");
+ map(0x3200, 0x33ff).bankrw("dmdbank2");
+ map(0x3400, 0x35ff).bankrw("dmdbank3");
+ map(0x3600, 0x37ff).bankrw("dmdbank4");
+ map(0x3800, 0x39ff).bankrw("dmdbank5");
+ map(0x3a00, 0x3bff).bankrw("dmdbank6");
+ map(0x3c00, 0x3faf).ram();
+ map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device
+ map(0x4000, 0x7fff).bankr("cpubank");
+ map(0x8000, 0xffff).bankr("fixedbank");
+}
static INPUT_PORTS_START( wpc_flip1 )
PORT_START("INP0")
diff --git a/src/mame/drivers/wpc_flip2.cpp b/src/mame/drivers/wpc_flip2.cpp
index ecd513bedf1..2ccd0564864 100644
--- a/src/mame/drivers/wpc_flip2.cpp
+++ b/src/mame/drivers/wpc_flip2.cpp
@@ -9,19 +9,20 @@
#include "speaker.h"
-ADDRESS_MAP_START(wpc_flip2_state::wpc_flip2_map)
- AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w)
- AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1")
- AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2")
- AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3")
- AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4")
- AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5")
- AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6")
- AM_RANGE(0x3c00, 0x3faf) AM_RAM
- AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank")
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank")
-ADDRESS_MAP_END
+void wpc_flip2_state::wpc_flip2_map(address_map &map)
+{
+ map(0x0000, 0x2fff).rw(this, FUNC(wpc_flip2_state::ram_r), FUNC(wpc_flip2_state::ram_w));
+ map(0x3000, 0x31ff).bankrw("dmdbank1");
+ map(0x3200, 0x33ff).bankrw("dmdbank2");
+ map(0x3400, 0x35ff).bankrw("dmdbank3");
+ map(0x3600, 0x37ff).bankrw("dmdbank4");
+ map(0x3800, 0x39ff).bankrw("dmdbank5");
+ map(0x3a00, 0x3bff).bankrw("dmdbank6");
+ map(0x3c00, 0x3faf).ram();
+ map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device
+ map(0x4000, 0x7fff).bankr("cpubank");
+ map(0x8000, 0xffff).bankr("fixedbank");
+}
static INPUT_PORTS_START( wpc_flip2 )
PORT_START("INP0")
diff --git a/src/mame/drivers/wpc_s.cpp b/src/mame/drivers/wpc_s.cpp
index 852e559af01..f0bea8e25e6 100644
--- a/src/mame/drivers/wpc_s.cpp
+++ b/src/mame/drivers/wpc_s.cpp
@@ -100,43 +100,44 @@ private:
uint16_t rtc_base_day;
};
-ADDRESS_MAP_START(wpc_s_state::wpc_s_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmd0")
- AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmd2")
- AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmd4")
- AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmd6")
- AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmd8")
- AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmda")
-
- AM_RANGE(0x3fb8, 0x3fbf) AM_DEVICE("dmd", wpc_dmd_device, registers)
-
- AM_RANGE(0x3fd4, 0x3fd4) AM_READ_PORT("FLIPPERS") AM_DEVWRITE("out", wpc_out_device, out4_w)
-
- AM_RANGE(0x3fdc, 0x3fdc) AM_READWRITE(dcs_data_r, dcs_data_w)
- AM_RANGE(0x3fdd, 0x3fdd) AM_READWRITE(dcs_ctrl_r, dcs_reset_w)
-
- AM_RANGE(0x3fe0, 0x3fe3) AM_DEVWRITE("out", wpc_out_device, out_w)
- AM_RANGE(0x3fe4, 0x3fe4) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, row_w)
- AM_RANGE(0x3fe5, 0x3fe5) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, col_w)
- AM_RANGE(0x3fe6, 0x3fe6) AM_DEVWRITE("out", wpc_out_device, gi_w)
- AM_RANGE(0x3fe7, 0x3fe7) AM_READ_PORT("DSW")
- AM_RANGE(0x3fe8, 0x3fe8) AM_READ_PORT("DOOR")
- AM_RANGE(0x3fe9, 0x3fe9) AM_DEVREAD("pic", wpc_pic_device, read)
- AM_RANGE(0x3fea, 0x3fea) AM_DEVWRITE("pic", wpc_pic_device, write)
-
- AM_RANGE(0x3ff2, 0x3ff2) AM_DEVWRITE("out", wpc_out_device, led_w)
- AM_RANGE(0x3ff3, 0x3ff3) AM_READNOP AM_WRITE(irq_ack_w)
- AM_RANGE(0x3ff4, 0x3ff7) AM_DEVICE("shift", wpc_shift_device, registers)
- AM_RANGE(0x3ff8, 0x3ff8) AM_READ(firq_src_r) AM_WRITENOP // ack?
- AM_RANGE(0x3ffa, 0x3ffb) AM_READ(rtc_r)
- AM_RANGE(0x3ffc, 0x3ffc) AM_WRITE(bank_w)
- AM_RANGE(0x3ffd, 0x3ffe) AM_NOP // memory protection stuff?
- AM_RANGE(0x3fff, 0x3fff) AM_READWRITE(zc_r, watchdog_w)
-
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000)
-ADDRESS_MAP_END
+void wpc_s_state::wpc_s_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("mainram");
+ map(0x3000, 0x31ff).bankrw("dmd0");
+ map(0x3200, 0x33ff).bankrw("dmd2");
+ map(0x3400, 0x35ff).bankrw("dmd4");
+ map(0x3600, 0x37ff).bankrw("dmd6");
+ map(0x3800, 0x39ff).bankrw("dmd8");
+ map(0x3a00, 0x3bff).bankrw("dmda");
+
+ map(0x3fb8, 0x3fbf).m("dmd", FUNC(wpc_dmd_device::registers));
+
+ map(0x3fd4, 0x3fd4).portr("FLIPPERS").w(out, FUNC(wpc_out_device::out4_w));
+
+ map(0x3fdc, 0x3fdc).rw(this, FUNC(wpc_s_state::dcs_data_r), FUNC(wpc_s_state::dcs_data_w));
+ map(0x3fdd, 0x3fdd).rw(this, FUNC(wpc_s_state::dcs_ctrl_r), FUNC(wpc_s_state::dcs_reset_w));
+
+ map(0x3fe0, 0x3fe3).w(out, FUNC(wpc_out_device::out_w));
+ map(0x3fe4, 0x3fe4).nopr().w(lamp, FUNC(wpc_lamp_device::row_w));
+ map(0x3fe5, 0x3fe5).nopr().w(lamp, FUNC(wpc_lamp_device::col_w));
+ map(0x3fe6, 0x3fe6).w(out, FUNC(wpc_out_device::gi_w));
+ map(0x3fe7, 0x3fe7).portr("DSW");
+ map(0x3fe8, 0x3fe8).portr("DOOR");
+ map(0x3fe9, 0x3fe9).r(pic, FUNC(wpc_pic_device::read));
+ map(0x3fea, 0x3fea).w(pic, FUNC(wpc_pic_device::write));
+
+ map(0x3ff2, 0x3ff2).w(out, FUNC(wpc_out_device::led_w));
+ map(0x3ff3, 0x3ff3).nopr().w(this, FUNC(wpc_s_state::irq_ack_w));
+ map(0x3ff4, 0x3ff7).m("shift", FUNC(wpc_shift_device::registers));
+ map(0x3ff8, 0x3ff8).r(this, FUNC(wpc_s_state::firq_src_r)).nopw(); // ack?
+ map(0x3ffa, 0x3ffb).r(this, FUNC(wpc_s_state::rtc_r));
+ map(0x3ffc, 0x3ffc).w(this, FUNC(wpc_s_state::bank_w));
+ map(0x3ffd, 0x3ffe).noprw(); // memory protection stuff?
+ map(0x3fff, 0x3fff).rw(this, FUNC(wpc_s_state::zc_r), FUNC(wpc_s_state::watchdog_w));
+
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x78000);
+}
READ8_MEMBER(wpc_s_state::dcs_data_r)
{
diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp
index 77b4d3be621..b9773a1f6da 100644
--- a/src/mame/drivers/wrally.cpp
+++ b/src/mame/drivers/wrally.cpp
@@ -138,34 +138,40 @@ The PCB has a layout that can either use the 4 rom set of I7, I9, I11 & I13 or l
#include "speaker.h"
-ADDRESS_MAP_START(wrally_state::mcu_hostmem_map)
- AM_RANGE(0x0000, 0xffff) AM_MASK(0x3fff) AM_READWRITE(shareram_r, shareram_w) // shared RAM with the main CPU
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(wrally_state::wrally_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
- AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* encrypted Video RAM */
- AM_RANGE(0x108000, 0x108007) AM_RAM AM_SHARE("vregs") /* Video Registers */
- AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR INT Video */
- AM_RANGE(0x200000, 0x203fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */
- AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
- AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW")
- AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x700004, 0x700005) AM_READ_PORT("WHEEL")
- AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM")
- ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff);
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okim6295_bankswitch_w) /* OKI6295 bankswitch */
- AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status/data register */
- AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with DS5002FP) */
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(wrally_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void wrally_state::mcu_hostmem_map(address_map &map)
+{
+ map(0x0000, 0xffff).mask(0x3fff).rw(this, FUNC(wrally_state::shareram_r), FUNC(wrally_state::shareram_w)); // shared RAM with the main CPU
+}
+
+
+void wrally_state::wrally_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom(); /* ROM */
+ map(0x100000, 0x103fff).ram().w(this, FUNC(wrally_state::vram_w)).share("videoram"); /* encrypted Video RAM */
+ map(0x108000, 0x108007).ram().share("vregs"); /* Video Registers */
+ map(0x10800c, 0x10800d).nopw(); /* CLR INT Video */
+ map(0x200000, 0x203fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */
+ map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */
+ map(0x700000, 0x700001).portr("DSW");
+ map(0x700002, 0x700003).portr("P1_P2");
+ map(0x700004, 0x700005).portr("WHEEL");
+ map(0x700008, 0x700009).portr("SYSTEM");
+ map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w",
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_outlatch->write_d0(space, offset >> 3, data, mem_mask);
+ });
+ map(0x70000c, 0x70000d).w(this, FUNC(wrally_state::okim6295_bankswitch_w)); /* OKI6295 bankswitch */
+ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status/data register */
+ map(0xfec000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with DS5002FP) */
+}
+
+
+
+void wrally_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( wrally )
PORT_START("DSW")
diff --git a/src/mame/drivers/wswan.cpp b/src/mame/drivers/wswan.cpp
index d60205c3ae1..d3b6d556e56 100644
--- a/src/mame/drivers/wswan.cpp
+++ b/src/mame/drivers/wswan.cpp
@@ -42,22 +42,25 @@
#include "wswan.lh"
-ADDRESS_MAP_START(wswan_state::wswan_mem)
- AM_RANGE(0x00000, 0x03fff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w) // 16kb RAM / 4 colour tiles
- AM_RANGE(0x04000, 0x0ffff) AM_NOP // nothing
+void wswan_state::wswan_mem(address_map &map)
+{
+ map(0x00000, 0x03fff).rw(m_vdp, FUNC(wswan_video_device::vram_r), FUNC(wswan_video_device::vram_w)); // 16kb RAM / 4 colour tiles
+ map(0x04000, 0x0ffff).noprw(); // nothing
//AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start
- AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r)
-ADDRESS_MAP_END
+ map(0xf0000, 0xfffff).r(this, FUNC(wswan_state::bios_r));
+}
-ADDRESS_MAP_START(wscolor_state::wscolor_mem)
- AM_RANGE(0x00000, 0x0ffff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w) // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes
+void wscolor_state::wscolor_mem(address_map &map)
+{
+ map(0x00000, 0x0ffff).rw("vdp", FUNC(wswan_video_device::vram_r), FUNC(wswan_video_device::vram_w)); // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes
//AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start
- AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r)
-ADDRESS_MAP_END
+ map(0xf0000, 0xfffff).r(this, FUNC(wscolor_state::bios_r));
+}
-ADDRESS_MAP_START(wswan_state::wswan_io)
- AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w) // I/O ports
-ADDRESS_MAP_END
+void wswan_state::wswan_io(address_map &map)
+{
+ map(0x00, 0xff).rw(this, FUNC(wswan_state::port_r), FUNC(wswan_state::port_w)); // I/O ports
+}
static INPUT_PORTS_START( wswan )
PORT_START("CURSX")
diff --git a/src/mame/drivers/wwfsstar.cpp b/src/mame/drivers/wwfsstar.cpp
index 7efdf31a5b3..09a746ca51c 100644
--- a/src/mame/drivers/wwfsstar.cpp
+++ b/src/mame/drivers/wwfsstar.cpp
@@ -174,31 +174,33 @@ static constexpr XTAL PIXEL_CLOCK = MASTER_CLOCK / 4;
Pretty Straightforward
*******************************************************************************/
-ADDRESS_MAP_START(wwfsstar_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram */
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(bg0_videoram_w) AM_SHARE("bg0_videoram") /* BG0 Ram */
- AM_RANGE(0x100000, 0x1003ff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */
- AM_RANGE(0x140000, 0x140fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x180000, 0x180003) AM_WRITE(irqack_w)
- AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW1")
- AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW2")
- AM_RANGE(0x180004, 0x180005) AM_READ_PORT("P1")
- AM_RANGE(0x180004, 0x180007) AM_WRITE(scroll_w)
- AM_RANGE(0x180006, 0x180007) AM_READ_PORT("P2")
- AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x180008, 0x180009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x18000a, 0x18000b) AM_WRITE(flipscreen_w)
- AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(wwfsstar_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void wwfsstar_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(wwfsstar_state::fg0_videoram_w)).share("fg0_videoram"); /* FG0 Ram */
+ map(0x0c0000, 0x0c0fff).ram().w(this, FUNC(wwfsstar_state::bg0_videoram_w)).share("bg0_videoram"); /* BG0 Ram */
+ map(0x100000, 0x1003ff).ram().share("spriteram"); /* SPR Ram */
+ map(0x140000, 0x140fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x180000, 0x180003).w(this, FUNC(wwfsstar_state::irqack_w));
+ map(0x180000, 0x180001).portr("DSW1");
+ map(0x180002, 0x180003).portr("DSW2");
+ map(0x180004, 0x180005).portr("P1");
+ map(0x180004, 0x180007).w(this, FUNC(wwfsstar_state::scroll_w));
+ map(0x180006, 0x180007).portr("P2");
+ map(0x180008, 0x180009).portr("SYSTEM");
+ map(0x180009, 0x180009).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x18000a, 0x18000b).w(this, FUNC(wwfsstar_state::flipscreen_w));
+ map(0x1c0000, 0x1c3fff).ram(); /* Work Ram */
+}
+
+void wwfsstar_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/*******************************************************************************
diff --git a/src/mame/drivers/wyse.cpp b/src/mame/drivers/wyse.cpp
index 66c21fce1b9..7d28a70596f 100644
--- a/src/mame/drivers/wyse.cpp
+++ b/src/mame/drivers/wyse.cpp
@@ -46,13 +46,15 @@ private:
// required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(wyse_state::mem_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
-ADDRESS_MAP_END
+void wyse_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0xc000, 0xffff).ram().share("videoram");
+}
-ADDRESS_MAP_START(wyse_state::io_map)
-ADDRESS_MAP_END
+void wyse_state::io_map(address_map &map)
+{
+}
static INPUT_PORTS_START( wyse )
INPUT_PORTS_END
diff --git a/src/mame/drivers/wyvernf0.cpp b/src/mame/drivers/wyvernf0.cpp
index 0a59e4331e2..47e1eff2461 100644
--- a/src/mame/drivers/wyvernf0.cpp
+++ b/src/mame/drivers/wyvernf0.cpp
@@ -385,60 +385,62 @@ WRITE8_MEMBER(wyvernf0_state::nmi_enable_w)
}
}
-ADDRESS_MAP_START(wyvernf0_state::wyvernf0_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
+void wyvernf0_state::wyvernf0_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
- AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("rambank")
+ map(0x9000, 0x9fff).bankrw("rambank");
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("rombank")
+ map(0xa000, 0xbfff).bankr("rombank");
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(wyvernf0_state::fgram_w)).share("fgram");
+ map(0xc800, 0xcfff).ram().w(this, FUNC(wyvernf0_state::bgram_w)).share("bgram");
- AM_RANGE(0xd000, 0xd000) AM_WRITENOP // d000 write (02)
- AM_RANGE(0xd100, 0xd100) AM_WRITE(rambank_w)
- AM_RANGE(0xd200, 0xd200) AM_WRITE(rombank_w)
+ map(0xd000, 0xd000).nopw(); // d000 write (02)
+ map(0xd100, 0xd100).w(this, FUNC(wyvernf0_state::rambank_w));
+ map(0xd200, 0xd200).w(this, FUNC(wyvernf0_state::rombank_w));
- AM_RANGE(0xd300, 0xd303) AM_RAM AM_SHARE("scrollram")
+ map(0xd300, 0xd303).ram().share("scrollram");
- AM_RANGE(0xd400, 0xd400) AM_READWRITE(fake_mcu_r, fake_mcu_w)
- AM_RANGE(0xd401, 0xd401) AM_READ(fake_status_r)
+ map(0xd400, 0xd400).rw(this, FUNC(wyvernf0_state::fake_mcu_r), FUNC(wyvernf0_state::fake_mcu_w));
+ map(0xd401, 0xd401).r(this, FUNC(wyvernf0_state::fake_status_r));
- AM_RANGE(0xd500, 0xd5ff) AM_RAM AM_SHARE("spriteram")
+ map(0xd500, 0xd5ff).ram().share("spriteram");
- AM_RANGE(0xd600, 0xd600) AM_READ_PORT("DSW1")
- AM_RANGE(0xd601, 0xd601) AM_READ_PORT("DSW2")
- AM_RANGE(0xd602, 0xd602) AM_READ_PORT("DSW3")
- AM_RANGE(0xd603, 0xd603) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xd604, 0xd604) AM_READ_PORT("JOY1")
- AM_RANGE(0xd605, 0xd605) AM_READ_PORT("FIRE1")
- AM_RANGE(0xd606, 0xd606) AM_READ_PORT("JOY2")
- AM_RANGE(0xd607, 0xd607) AM_READ_PORT("FIRE2")
+ map(0xd600, 0xd600).portr("DSW1");
+ map(0xd601, 0xd601).portr("DSW2");
+ map(0xd602, 0xd602).portr("DSW3");
+ map(0xd603, 0xd603).portr("SYSTEM");
+ map(0xd604, 0xd604).portr("JOY1");
+ map(0xd605, 0xd605).portr("FIRE1");
+ map(0xd606, 0xd606).portr("JOY2");
+ map(0xd607, 0xd607).portr("FIRE2");
- AM_RANGE(0xd610, 0xd610) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_command_w)
+ map(0xd610, 0xd610).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(wyvernf0_state::sound_command_w));
// d613 write (FF -> 00 at boot)
- AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE(0xdc00, 0xdc00) AM_WRITENOP // irq ack?
-ADDRESS_MAP_END
+ map(0xdc00, 0xdc00).nopw(); // irq ack?
+}
-ADDRESS_MAP_START(wyvernf0_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay1", ym2149_device, address_data_w)
- AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay2", ym2149_device, address_data_w)
- AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_device, write)
+void wyvernf0_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc801).w("ay1", FUNC(ym2149_device::address_data_w));
+ map(0xc802, 0xc803).w("ay2", FUNC(ym2149_device::address_data_w));
+ map(0xc900, 0xc90d).w("msm", FUNC(msm5232_device::write));
// ca00 write
// cb00 write
// cc00 write
- AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write)
- AM_RANGE(0xd200, 0xd200) AM_WRITE(nmi_enable_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
- AM_RANGE(0xd600, 0xd600) AM_DEVWRITE("dac", dac_byte_interface, write)
- AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostics ROM
-ADDRESS_MAP_END
+ map(0xd000, 0xd000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
+ map(0xd200, 0xd200).w(this, FUNC(wyvernf0_state::nmi_enable_w));
+ map(0xd400, 0xd400).w(this, FUNC(wyvernf0_state::nmi_disable_w));
+ map(0xd600, 0xd600).w("dac", FUNC(dac_byte_interface::write));
+ map(0xe000, 0xefff).rom(); // space for diagnostics ROM
+}
/***************************************************************************
diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp
index 6bdd855c928..9e0e512f8d0 100644
--- a/src/mame/drivers/x07.cpp
+++ b/src/mame/drivers/x07.cpp
@@ -1220,21 +1220,23 @@ WRITE8_MEMBER( x07_state::x07_io_w )
}
}
-ADDRESS_MAP_START(x07_state::x07_mem)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x1fff) AM_NOP //RAM installed at runtime
- AM_RANGE(0x2000, 0x7fff) AM_NOP //Memory Card RAM/ROM
- AM_RANGE(0x8000, 0x97ff) AM_RAM //TV VRAM
- AM_RANGE(0x9800, 0x9fff) AM_UNMAP //unused/unknown
- AM_RANGE(0xa000, 0xafff) AM_ROM AM_REGION("x720", 0) //TV ROM
- AM_RANGE(0xb000, 0xffff) AM_ROM AM_REGION("basic", 0) //BASIC ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(x07_state::x07_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK (0xff)
- AM_RANGE(0x00, 0xff) AM_READWRITE(x07_io_r, x07_io_w)
-ADDRESS_MAP_END
+void x07_state::x07_mem(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x1fff).noprw(); //RAM installed at runtime
+ map(0x2000, 0x7fff).noprw(); //Memory Card RAM/ROM
+ map(0x8000, 0x97ff).ram(); //TV VRAM
+ map(0x9800, 0x9fff).unmaprw(); //unused/unknown
+ map(0xa000, 0xafff).rom().region("x720", 0); //TV ROM
+ map(0xb000, 0xffff).rom().region("basic", 0); //BASIC ROM
+}
+
+void x07_state::x07_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0xff).rw(this, FUNC(x07_state::x07_io_r), FUNC(x07_state::x07_io_w));
+}
/* Input ports */
static INPUT_PORTS_START( x07 )
diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp
index aecac65c520..904186c23ec 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -1319,106 +1319,112 @@ WRITE8_MEMBER( x1_state::x1turbo_mem_w )
*
*************************************/
-ADDRESS_MAP_START(x1_state::x1_io_banks_common)
- ADDRESS_MAP_UNMAP_HIGH
+void x1_state::x1_io_banks_common(address_map &map)
+{
+ map.unmap_value_high();
- AM_RANGE(0x0e00, 0x0e02) AM_WRITE(x1_rom_w)
- AM_RANGE(0x0e03, 0x0e03) AM_READ(x1_rom_r)
+ map(0x0e00, 0x0e02).w(this, FUNC(x1_state::x1_rom_w));
+ map(0x0e03, 0x0e03).r(this, FUNC(x1_state::x1_rom_r));
- AM_RANGE(0x0ff8, 0x0fff) AM_READWRITE(x1_fdc_r, x1_fdc_w)
+ map(0x0ff8, 0x0fff).rw(this, FUNC(x1_state::x1_fdc_r), FUNC(x1_state::x1_fdc_w));
- AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x00ff) AM_WRITE(x1_pri_w)
- AM_RANGE(0x1400, 0x17ff) AM_READWRITE(x1_pcg_r, x1_pcg_w)
+ map(0x1300, 0x1300).mirror(0x00ff).w(this, FUNC(x1_state::x1_pri_w));
+ map(0x1400, 0x17ff).rw(this, FUNC(x1_state::x1_pcg_r), FUNC(x1_state::x1_pcg_w));
- AM_RANGE(0x1800, 0x1801) AM_WRITE(x1_6845_w)
+ map(0x1800, 0x1801).w(this, FUNC(x1_state::x1_6845_w));
- AM_RANGE(0x1900, 0x1900) AM_MIRROR(0x00ff) AM_READWRITE(x1_sub_io_r, x1_sub_io_w)
- AM_RANGE(0x1a00, 0x1a03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x1b00, 0x1b00) AM_MIRROR(0x00ff) AM_DEVREADWRITE("ay", ay8910_device, data_r, data_w)
- AM_RANGE(0x1c00, 0x1c00) AM_MIRROR(0x00ff) AM_DEVWRITE("ay", ay8910_device, address_w)
- AM_RANGE(0x1d00, 0x1d00) AM_MIRROR(0x00ff) AM_WRITE(x1_rom_bank_1_w)
- AM_RANGE(0x1e00, 0x1e00) AM_MIRROR(0x00ff) AM_WRITE(x1_rom_bank_0_w)
+ map(0x1900, 0x1900).mirror(0x00ff).rw(this, FUNC(x1_state::x1_sub_io_r), FUNC(x1_state::x1_sub_io_w));
+ map(0x1a00, 0x1a03).mirror(0x00fc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x1b00, 0x1b00).mirror(0x00ff).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x1c00, 0x1c00).mirror(0x00ff).w("ay", FUNC(ay8910_device::address_w));
+ map(0x1d00, 0x1d00).mirror(0x00ff).w(this, FUNC(x1_state::x1_rom_bank_1_w));
+ map(0x1e00, 0x1e00).mirror(0x00ff).w(this, FUNC(x1_state::x1_rom_bank_0_w));
- AM_RANGE(0x1fa0, 0x1fa3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x1fa8, 0x1fab) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
+ map(0x1fa0, 0x1fa3).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x1fa8, 0x1fab).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
- AM_RANGE(0x2000, 0x27ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("avram")
+ map(0x2000, 0x27ff).mirror(0x0800).ram().share("avram");
- AM_RANGE(0x4000, 0xffff) AM_READWRITE_BANK("bitmapbank")
+ map(0x4000, 0xffff).bankrw("bitmapbank");
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(x1_ex_gfxram_r, x1_ex_gfxram_w)
-ADDRESS_MAP_END
+ map(0x10000, 0x1ffff).rw(this, FUNC(x1_state::x1_ex_gfxram_r), FUNC(x1_state::x1_ex_gfxram_w));
+}
-ADDRESS_MAP_START(x1_state::x1_io_banks)
- AM_IMPORT_FROM(x1_io_banks_common)
+void x1_state::x1_io_banks(address_map &map)
+{
+ x1_io_banks_common(map);
// AM_RANGE(0x0700, 0x0701) TODO: user could install ym2151 on plain X1 too
- AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x00ff) AM_WRITE(x1_pal_b_w)
- AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x00ff) AM_WRITE(x1_pal_r_w)
- AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x00ff) AM_WRITE(x1_pal_g_w)
+ map(0x1000, 0x1000).mirror(0x00ff).w(this, FUNC(x1_state::x1_pal_b_w));
+ map(0x1100, 0x1100).mirror(0x00ff).w(this, FUNC(x1_state::x1_pal_r_w));
+ map(0x1200, 0x1200).mirror(0x00ff).w(this, FUNC(x1_state::x1_pal_g_w));
- AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("tvram") // Ys checks if it's a x1/x1turbo machine by checking if this area is a mirror
-ADDRESS_MAP_END
+ map(0x3000, 0x37ff).mirror(0x0800).ram().share("tvram"); // Ys checks if it's a x1/x1turbo machine by checking if this area is a mirror
+}
-ADDRESS_MAP_START(x1_state::x1turbo_io_banks)
- AM_IMPORT_FROM(x1_io_banks_common)
+void x1_state::x1turbo_io_banks(address_map &map)
+{
+ x1_io_banks_common(map);
// a * at the end states devices used on plain X1 too
- AM_RANGE(0x0700, 0x0701) AM_READ(ym_r) AM_DEVWRITE("ym", ym2151_device, write)
+ map(0x0700, 0x0701).r(this, FUNC(x1_state::ym_r)).w("ym", FUNC(ym2151_device::write));
// 0x704 is FM sound detection port on X1 turboZ
- AM_RANGE(0x0704, 0x0707) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-
- AM_RANGE(0x0800, 0x0800) AM_WRITE(color_board_w) // *
- AM_RANGE(0x0801, 0x0801) AM_READ(color_board_r) // *
- AM_RANGE(0x0802, 0x0802) AM_WRITE(color_board_2_w) // *
- AM_RANGE(0x0803, 0x0803) AM_READ(color_board_2_r) // *
- AM_RANGE(0x0a00, 0x0a07) AM_READWRITE(stereo_board_r, stereo_board_w) // *
- AM_RANGE(0x0b00, 0x0b00) AM_READWRITE(x1turbo_bank_r, x1turbo_bank_w)
- AM_RANGE(0x0c00, 0x0cff) AM_READWRITE(rs232_r, rs232_w) // *
- AM_RANGE(0x0d00, 0x0dff) AM_READWRITE(x1_emm_r, x1_emm_w) // *
- AM_RANGE(0x0e80, 0x0e81) AM_READ(x1_kanji_r)
- AM_RANGE(0x0e80, 0x0e83) AM_WRITE(x1_kanji_w)
- AM_RANGE(0x0fd0, 0x0fd3) AM_READWRITE(sasi_r, sasi_w) // *
- AM_RANGE(0x0fe8, 0x0fef) AM_READWRITE(fdd8_r, fdd8_w) // *
-
- AM_RANGE(0x1000, 0x12ff) AM_WRITE(x1turboz_4096_palette_w)
-
- AM_RANGE(0x1f80, 0x1f80) AM_MIRROR(0x000f) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0x1f90, 0x1f93) AM_DEVREADWRITE("sio", z80sio0_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x1f98, 0x1f9f) AM_READWRITE(ext_sio_ctc_r, ext_sio_ctc_w)
- AM_RANGE(0x1fb0, 0x1fb0) AM_READWRITE(x1turbo_pal_r, x1turbo_pal_w) // Z only!
- AM_RANGE(0x1fb8, 0x1fbf) AM_READWRITE(x1turbo_txpal_r, x1turbo_txpal_w) // Z only!
- AM_RANGE(0x1fc0, 0x1fc0) AM_READWRITE(x1turbo_txdisp_r, x1turbo_txdisp_w) // Z only!
- AM_RANGE(0x1fc1, 0x1fc1) AM_WRITE(z_img_cap_w) // Z only!
- AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(z_mosaic_w) // Z only!
- AM_RANGE(0x1fc3, 0x1fc3) AM_WRITE(z_chroma_key_w) // Z only!
- AM_RANGE(0x1fc4, 0x1fc4) AM_WRITE(z_extra_scroll_w) // Z only!
- AM_RANGE(0x1fc5, 0x1fc5) AM_READWRITE(x1turbo_gfxpal_r, x1turbo_gfxpal_w) // Z only!
+ map(0x0704, 0x0707).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+
+ map(0x0800, 0x0800).w(this, FUNC(x1_state::color_board_w)); // *
+ map(0x0801, 0x0801).r(this, FUNC(x1_state::color_board_r)); // *
+ map(0x0802, 0x0802).w(this, FUNC(x1_state::color_board_2_w)); // *
+ map(0x0803, 0x0803).r(this, FUNC(x1_state::color_board_2_r)); // *
+ map(0x0a00, 0x0a07).rw(this, FUNC(x1_state::stereo_board_r), FUNC(x1_state::stereo_board_w)); // *
+ map(0x0b00, 0x0b00).rw(this, FUNC(x1_state::x1turbo_bank_r), FUNC(x1_state::x1turbo_bank_w));
+ map(0x0c00, 0x0cff).rw(this, FUNC(x1_state::rs232_r), FUNC(x1_state::rs232_w)); // *
+ map(0x0d00, 0x0dff).rw(this, FUNC(x1_state::x1_emm_r), FUNC(x1_state::x1_emm_w)); // *
+ map(0x0e80, 0x0e81).r(this, FUNC(x1_state::x1_kanji_r));
+ map(0x0e80, 0x0e83).w(this, FUNC(x1_state::x1_kanji_w));
+ map(0x0fd0, 0x0fd3).rw(this, FUNC(x1_state::sasi_r), FUNC(x1_state::sasi_w)); // *
+ map(0x0fe8, 0x0fef).rw(this, FUNC(x1_state::fdd8_r), FUNC(x1_state::fdd8_w)); // *
+
+ map(0x1000, 0x12ff).w(this, FUNC(x1_state::x1turboz_4096_palette_w));
+
+ map(0x1f80, 0x1f80).mirror(0x000f).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x1f90, 0x1f93).rw("sio", FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w));
+ map(0x1f98, 0x1f9f).rw(this, FUNC(x1_state::ext_sio_ctc_r), FUNC(x1_state::ext_sio_ctc_w));
+ map(0x1fb0, 0x1fb0).rw(this, FUNC(x1_state::x1turbo_pal_r), FUNC(x1_state::x1turbo_pal_w)); // Z only!
+ map(0x1fb8, 0x1fbf).rw(this, FUNC(x1_state::x1turbo_txpal_r), FUNC(x1_state::x1turbo_txpal_w)); // Z only!
+ map(0x1fc0, 0x1fc0).rw(this, FUNC(x1_state::x1turbo_txdisp_r), FUNC(x1_state::x1turbo_txdisp_w)); // Z only!
+ map(0x1fc1, 0x1fc1).w(this, FUNC(x1_state::z_img_cap_w)); // Z only!
+ map(0x1fc2, 0x1fc2).w(this, FUNC(x1_state::z_mosaic_w)); // Z only!
+ map(0x1fc3, 0x1fc3).w(this, FUNC(x1_state::z_chroma_key_w)); // Z only!
+ map(0x1fc4, 0x1fc4).w(this, FUNC(x1_state::z_extra_scroll_w)); // Z only!
+ map(0x1fc5, 0x1fc5).rw(this, FUNC(x1_state::x1turbo_gfxpal_r), FUNC(x1_state::x1turbo_gfxpal_w)); // Z only!
// AM_RANGE(0x1fd0, 0x1fdf) AM_READ(x1_scrn_r) // Z only!
- AM_RANGE(0x1fd0, 0x1fd0) AM_MIRROR(0x000f) AM_WRITE(x1_scrn_w)
- AM_RANGE(0x1fe0, 0x1fe0) AM_READWRITE(x1turboz_blackclip_r, x1turbo_blackclip_w)
- AM_RANGE(0x1ff0, 0x1ff0) AM_READ_PORT("X1TURBO_DSW")
+ map(0x1fd0, 0x1fd0).mirror(0x000f).w(this, FUNC(x1_state::x1_scrn_w));
+ map(0x1fe0, 0x1fe0).rw(this, FUNC(x1_state::x1turboz_blackclip_r), FUNC(x1_state::x1turbo_blackclip_w));
+ map(0x1ff0, 0x1ff0).portr("X1TURBO_DSW");
- AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("tvram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("kvram")
-ADDRESS_MAP_END
+ map(0x3000, 0x37ff).ram().share("tvram");
+ map(0x3800, 0x3fff).ram().share("kvram");
+}
-ADDRESS_MAP_START(x1_state::x1_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(x1_mem_r,x1_mem_w)
-ADDRESS_MAP_END
+void x1_state::x1_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(x1_state::x1_mem_r), FUNC(x1_state::x1_mem_w));
+}
-ADDRESS_MAP_START(x1_state::x1turbo_mem)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(x1turbo_mem_r,x1turbo_mem_w)
-ADDRESS_MAP_END
+void x1_state::x1turbo_mem(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(x1_state::x1turbo_mem_r), FUNC(x1_state::x1turbo_mem_w));
+}
-ADDRESS_MAP_START(x1_state::x1_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVICE("iobank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void x1_state::x1_io(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_iobank, FUNC(address_map_bank_device::amap8));
+}
/*************************************
*
diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp
index 730a9175aab..5f0e3f2af72 100644
--- a/src/mame/drivers/x1twin.cpp
+++ b/src/mame/drivers/x1twin.cpp
@@ -52,15 +52,17 @@ uint32_t x1twin_state::screen_update_x1pce(screen_device &screen, bitmap_rgb32 &
return 0;
}
-ADDRESS_MAP_START(x1twin_state::x1_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(x1_mem_r,x1_mem_w)
-ADDRESS_MAP_END
+void x1twin_state::x1_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).rw(this, FUNC(x1twin_state::x1_mem_r), FUNC(x1twin_state::x1_mem_w));
+}
-ADDRESS_MAP_START(x1twin_state::x1_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xffff) AM_DEVICE("iobank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
+void x1twin_state::x1_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xffff).m(m_iobank, FUNC(address_map_bank_device::amap8));
+}
#if 0
ADDRESS_MAP_START(x1twin_state::pce_mem)
diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp
index 4cc0950fc44..a6d0a7aa4e8 100644
--- a/src/mame/drivers/x68k.cpp
+++ b/src/mame/drivers/x68k.cpp
@@ -1129,121 +1129,124 @@ WRITE_LINE_MEMBER(x68k_state::x68k_scsi_drq)
// TODO
}
-ADDRESS_MAP_START(x68k_state::x68k_map)
- AM_RANGE(0x000000, 0xbffffb) AM_READWRITE(x68k_emptyram_r, x68k_emptyram_w)
- AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(x68k_gvram_r, x68k_gvram_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE(x68k_tvram_r, x68k_tvram_w)
- AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE(x68k_crtc_r, x68k_crtc_w)
- AM_RANGE(0xe82000, 0xe821ff) AM_DEVREADWRITE("gfxpalette", palette_device, read16, write16) AM_SHARE("gfxpalette")
- AM_RANGE(0xe82200, 0xe823ff) AM_DEVREADWRITE("pcgpalette", palette_device, read16, write16) AM_SHARE("pcgpalette")
- AM_RANGE(0xe82400, 0xe83fff) AM_READWRITE(x68k_vid_r, x68k_vid_w)
- AM_RANGE(0xe84000, 0xe85fff) AM_DEVREADWRITE("hd63450", hd63450_device, read, write)
- AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE(x68k_areaset_r, x68k_areaset_w)
- AM_RANGE(0xe88000, 0xe89fff) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff)
- AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff)
+void x68k_state::x68k_map(address_map &map)
+{
+ map(0x000000, 0xbffffb).rw(this, FUNC(x68k_state::x68k_emptyram_r), FUNC(x68k_state::x68k_emptyram_w));
+ map(0xbffffc, 0xbfffff).rw(this, FUNC(x68k_state::x68k_rom0_r), FUNC(x68k_state::x68k_rom0_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(x68k_state::x68k_gvram_r), FUNC(x68k_state::x68k_gvram_w));
+ map(0xe00000, 0xe7ffff).rw(this, FUNC(x68k_state::x68k_tvram_r), FUNC(x68k_state::x68k_tvram_w));
+ map(0xe80000, 0xe81fff).rw(this, FUNC(x68k_state::x68k_crtc_r), FUNC(x68k_state::x68k_crtc_w));
+ map(0xe82000, 0xe821ff).rw(m_gfxpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("gfxpalette");
+ map(0xe82200, 0xe823ff).rw(m_pcgpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("pcgpalette");
+ map(0xe82400, 0xe83fff).rw(this, FUNC(x68k_state::x68k_vid_r), FUNC(x68k_state::x68k_vid_w));
+ map(0xe84000, 0xe85fff).rw(m_hd63450, FUNC(hd63450_device::read), FUNC(hd63450_device::write));
+ map(0xe86000, 0xe87fff).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_areaset_w));
+ map(0xe88000, 0xe89fff).rw(m_mfpdev, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
+ map(0xe8a000, 0xe8bfff).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
// AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w)
- AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w)
- AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, ctrl_w, 0x00ff)
- AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, data_w, 0x00ff)
- AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff)
- AM_RANGE(0xe94004, 0xe94007) AM_READWRITE(x68k_fdc_r, x68k_fdc_w)
- AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w)
- AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE(x68k_scc_r, x68k_scc_w)
- AM_RANGE(0xe9a000, 0xe9bfff) AM_READWRITE(x68k_ppi_r, x68k_ppi_w)
- AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE(x68k_ioc_r, x68k_ioc_w)
- AM_RANGE(0xe9e000, 0xe9e3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // FPU (Optional)
- AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // external SCSI ROM and controller
- AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE(x68k_exp_r, x68k_exp_w)
- AM_RANGE(0xeafa80, 0xeafa89) AM_READWRITE(x68k_areaset_r, x68k_enh_areaset_w)
- AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE(x68k_spritereg_r, x68k_spritereg_w)
- AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE(x68k_spriteram_r, x68k_spriteram_w)
- AM_RANGE(0xece000, 0xece3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // User I/O
- AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE(x68k_sram_r, x68k_sram_w)
- AM_RANGE(0xed4000, 0xefffff) AM_NOP
- AM_RANGE(0xf00000, 0xfbffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfdffff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // internal SCSI ROM
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(x68k_state::x68kxvi_map)
- AM_RANGE(0x000000, 0xbffffb) AM_READWRITE(x68k_emptyram_r, x68k_emptyram_w)
- AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(x68k_gvram_r, x68k_gvram_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE(x68k_tvram_r, x68k_tvram_w)
- AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE(x68k_crtc_r, x68k_crtc_w)
- AM_RANGE(0xe82000, 0xe821ff) AM_DEVREADWRITE("gfxpalette", palette_device, read16, write16) AM_SHARE("gfxpalette")
- AM_RANGE(0xe82200, 0xe823ff) AM_DEVREADWRITE("pcgpalette", palette_device, read16, write16) AM_SHARE("pcgpalette")
- AM_RANGE(0xe82400, 0xe83fff) AM_READWRITE(x68k_vid_r, x68k_vid_w)
- AM_RANGE(0xe84000, 0xe85fff) AM_DEVREADWRITE("hd63450", hd63450_device, read, write)
- AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE(x68k_areaset_r, x68k_areaset_w)
- AM_RANGE(0xe88000, 0xe89fff) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff)
- AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff)
+ map(0xe8e000, 0xe8ffff).rw(this, FUNC(x68k_state::x68k_sysport_r), FUNC(x68k_state::x68k_sysport_w));
+ map(0xe90000, 0xe91fff).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0xe92001, 0xe92001).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::ctrl_w));
+ map(0xe92003, 0xe92003).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::data_w));
+ map(0xe94000, 0xe94003).m(m_upd72065, FUNC(upd72065_device::map)).umask16(0x00ff);
+ map(0xe94004, 0xe94007).rw(this, FUNC(x68k_state::x68k_fdc_r), FUNC(x68k_state::x68k_fdc_w));
+ map(0xe96000, 0xe9601f).rw("x68k_hdc", FUNC(x68k_hdc_image_device::hdc_r), FUNC(x68k_hdc_image_device::hdc_w));
+ map(0xe98000, 0xe99fff).rw(this, FUNC(x68k_state::x68k_scc_r), FUNC(x68k_state::x68k_scc_w));
+ map(0xe9a000, 0xe9bfff).rw(this, FUNC(x68k_state::x68k_ppi_r), FUNC(x68k_state::x68k_ppi_w));
+ map(0xe9c000, 0xe9dfff).rw(this, FUNC(x68k_state::x68k_ioc_r), FUNC(x68k_state::x68k_ioc_w));
+ map(0xe9e000, 0xe9e3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // FPU (Optional)
+ map(0xea0000, 0xea1fff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // external SCSI ROM and controller
+ map(0xeafa00, 0xeafa1f).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w));
+ map(0xeafa80, 0xeafa89).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_enh_areaset_w));
+ map(0xeb0000, 0xeb7fff).rw(this, FUNC(x68k_state::x68k_spritereg_r), FUNC(x68k_state::x68k_spritereg_w));
+ map(0xeb8000, 0xebffff).rw(this, FUNC(x68k_state::x68k_spriteram_r), FUNC(x68k_state::x68k_spriteram_w));
+ map(0xece000, 0xece3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // User I/O
+ map(0xed0000, 0xed3fff).rw(this, FUNC(x68k_state::x68k_sram_r), FUNC(x68k_state::x68k_sram_w));
+ map(0xed4000, 0xefffff).noprw();
+ map(0xf00000, 0xfbffff).rom();
+ map(0xfc0000, 0xfdffff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // internal SCSI ROM
+ map(0xfe0000, 0xffffff).rom();
+}
+
+void x68k_state::x68kxvi_map(address_map &map)
+{
+ map(0x000000, 0xbffffb).rw(this, FUNC(x68k_state::x68k_emptyram_r), FUNC(x68k_state::x68k_emptyram_w));
+ map(0xbffffc, 0xbfffff).rw(this, FUNC(x68k_state::x68k_rom0_r), FUNC(x68k_state::x68k_rom0_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(x68k_state::x68k_gvram_r), FUNC(x68k_state::x68k_gvram_w));
+ map(0xe00000, 0xe7ffff).rw(this, FUNC(x68k_state::x68k_tvram_r), FUNC(x68k_state::x68k_tvram_w));
+ map(0xe80000, 0xe81fff).rw(this, FUNC(x68k_state::x68k_crtc_r), FUNC(x68k_state::x68k_crtc_w));
+ map(0xe82000, 0xe821ff).rw(m_gfxpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("gfxpalette");
+ map(0xe82200, 0xe823ff).rw(m_pcgpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("pcgpalette");
+ map(0xe82400, 0xe83fff).rw(this, FUNC(x68k_state::x68k_vid_r), FUNC(x68k_state::x68k_vid_w));
+ map(0xe84000, 0xe85fff).rw(m_hd63450, FUNC(hd63450_device::read), FUNC(hd63450_device::write));
+ map(0xe86000, 0xe87fff).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_areaset_w));
+ map(0xe88000, 0xe89fff).rw(m_mfpdev, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
+ map(0xe8a000, 0xe8bfff).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
// AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w)
- AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w)
- AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, ctrl_w, 0x00ff)
- AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, data_w, 0x00ff)
- AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff)
- AM_RANGE(0xe94004, 0xe94007) AM_READWRITE(x68k_fdc_r, x68k_fdc_w)
+ map(0xe8e000, 0xe8ffff).rw(this, FUNC(x68k_state::x68k_sysport_r), FUNC(x68k_state::x68k_sysport_w));
+ map(0xe90000, 0xe91fff).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0xe92001, 0xe92001).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::ctrl_w));
+ map(0xe92003, 0xe92003).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::data_w));
+ map(0xe94000, 0xe94003).m(m_upd72065, FUNC(upd72065_device::map)).umask16(0x00ff);
+ map(0xe94004, 0xe94007).rw(this, FUNC(x68k_state::x68k_fdc_r), FUNC(x68k_state::x68k_fdc_w));
// AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w)
- AM_RANGE(0xe96020, 0xe9603f) AM_DEVREADWRITE8("mb89352",mb89352_device,mb89352_r,mb89352_w,0x00ff)
- AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE(x68k_scc_r, x68k_scc_w)
- AM_RANGE(0xe9a000, 0xe9bfff) AM_READWRITE(x68k_ppi_r, x68k_ppi_w)
- AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE(x68k_ioc_r, x68k_ioc_w)
- AM_RANGE(0xe9e000, 0xe9e3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // FPU (Optional)
- AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // external SCSI ROM and controller
- AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE(x68k_exp_r, x68k_exp_w)
- AM_RANGE(0xeafa80, 0xeafa89) AM_READWRITE(x68k_areaset_r, x68k_enh_areaset_w)
- AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE(x68k_spritereg_r, x68k_spritereg_w)
- AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE(x68k_spriteram_r, x68k_spriteram_w)
- AM_RANGE(0xece000, 0xece3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // User I/O
- AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE(x68k_sram_r, x68k_sram_w)
- AM_RANGE(0xed4000, 0xefffff) AM_NOP
- AM_RANGE(0xf00000, 0xfbffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfdffff) AM_ROM // internal SCSI ROM
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(x68k_state::x68030_map)
- ADDRESS_MAP_GLOBAL_MASK(0x00ffffff) // Still only has 24-bit address space
- AM_RANGE(0x000000, 0xbffffb) AM_READWRITE16(x68k_emptyram_r, x68k_emptyram_w,0xffffffff)
- AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE16(x68k_rom0_r, x68k_rom0_w,0xffffffff)
- AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(x68k_gvram_r, x68k_gvram_w, 0xffffffff)
- AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE16(x68k_tvram_r, x68k_tvram_w, 0xffffffff)
- AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE16(x68k_crtc_r, x68k_crtc_w,0xffffffff)
- AM_RANGE(0xe82000, 0xe821ff) AM_DEVREADWRITE("gfxpalette", palette_device, read32, write32) AM_SHARE("gfxpalette")
- AM_RANGE(0xe82200, 0xe823ff) AM_DEVREADWRITE("pcgpalette", palette_device, read32, write32) AM_SHARE("pcgpalette")
- AM_RANGE(0xe82400, 0xe83fff) AM_READWRITE16(x68k_vid_r, x68k_vid_w,0xffffffff)
- AM_RANGE(0xe84000, 0xe85fff) AM_DEVREADWRITE16("hd63450", hd63450_device, read, write, 0xffffffff)
- AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE16(x68k_areaset_r, x68k_areaset_w,0xffffffff)
- AM_RANGE(0xe88000, 0xe89fff) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff00ff)
- AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff00ff)
+ map(0xe96020, 0xe9603f).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask16(0x00ff);
+ map(0xe98000, 0xe99fff).rw(this, FUNC(x68k_state::x68k_scc_r), FUNC(x68k_state::x68k_scc_w));
+ map(0xe9a000, 0xe9bfff).rw(this, FUNC(x68k_state::x68k_ppi_r), FUNC(x68k_state::x68k_ppi_w));
+ map(0xe9c000, 0xe9dfff).rw(this, FUNC(x68k_state::x68k_ioc_r), FUNC(x68k_state::x68k_ioc_w));
+ map(0xe9e000, 0xe9e3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // FPU (Optional)
+ map(0xea0000, 0xea1fff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // external SCSI ROM and controller
+ map(0xeafa00, 0xeafa1f).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w));
+ map(0xeafa80, 0xeafa89).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_enh_areaset_w));
+ map(0xeb0000, 0xeb7fff).rw(this, FUNC(x68k_state::x68k_spritereg_r), FUNC(x68k_state::x68k_spritereg_w));
+ map(0xeb8000, 0xebffff).rw(this, FUNC(x68k_state::x68k_spriteram_r), FUNC(x68k_state::x68k_spriteram_w));
+ map(0xece000, 0xece3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // User I/O
+ map(0xed0000, 0xed3fff).rw(this, FUNC(x68k_state::x68k_sram_r), FUNC(x68k_state::x68k_sram_w));
+ map(0xed4000, 0xefffff).noprw();
+ map(0xf00000, 0xfbffff).rom();
+ map(0xfc0000, 0xfdffff).rom(); // internal SCSI ROM
+ map(0xfe0000, 0xffffff).rom();
+}
+
+void x68k_state::x68030_map(address_map &map)
+{
+ map.global_mask(0x00ffffff); // Still only has 24-bit address space
+ map(0x000000, 0xbffffb).rw(this, FUNC(x68k_state::x68k_emptyram_r), FUNC(x68k_state::x68k_emptyram_w));
+ map(0xbffffc, 0xbfffff).rw(this, FUNC(x68k_state::x68k_rom0_r), FUNC(x68k_state::x68k_rom0_w));
+ map(0xc00000, 0xdfffff).rw(this, FUNC(x68k_state::x68k_gvram_r), FUNC(x68k_state::x68k_gvram_w));
+ map(0xe00000, 0xe7ffff).rw(this, FUNC(x68k_state::x68k_tvram_r), FUNC(x68k_state::x68k_tvram_w));
+ map(0xe80000, 0xe81fff).rw(this, FUNC(x68k_state::x68k_crtc_r), FUNC(x68k_state::x68k_crtc_w));
+ map(0xe82000, 0xe821ff).rw(m_gfxpalette, FUNC(palette_device::read32), FUNC(palette_device::write32)).share("gfxpalette");
+ map(0xe82200, 0xe823ff).rw(m_pcgpalette, FUNC(palette_device::read32), FUNC(palette_device::write32)).share("pcgpalette");
+ map(0xe82400, 0xe83fff).rw(this, FUNC(x68k_state::x68k_vid_r), FUNC(x68k_state::x68k_vid_w));
+ map(0xe84000, 0xe85fff).rw(m_hd63450, FUNC(hd63450_device::read), FUNC(hd63450_device::write));
+ map(0xe86000, 0xe87fff).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_areaset_w));
+ map(0xe88000, 0xe89fff).rw(m_mfpdev, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask32(0x00ff00ff);
+ map(0xe8a000, 0xe8bfff).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask32(0x00ff00ff);
// AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w)
- AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE16(x68k_sysport_r, x68k_sysport_w,0xffffffff)
- AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff00ff)
- AM_RANGE(0xe92000, 0xe92003) AM_DEVREAD8("okim6258", okim6258_device, status_r, 0x00ff00ff) AM_WRITE8(x68030_adpcm_w, 0x00ff00ff)
- AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff00ff)
- AM_RANGE(0xe94004, 0xe94007) AM_READWRITE16(x68k_fdc_r, x68k_fdc_w,0xffffffff)
+ map(0xe8e000, 0xe8ffff).rw(this, FUNC(x68k_state::x68k_sysport_r), FUNC(x68k_state::x68k_sysport_w));
+ map(0xe90000, 0xe91fff).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x00ff00ff);
+ map(0xe92000, 0xe92003).r(m_okim6258, FUNC(okim6258_device::status_r)).umask32(0x00ff00ff).w(this, FUNC(x68k_state::x68030_adpcm_w)).umask32(0x00ff00ff);
+ map(0xe94000, 0xe94003).m(m_upd72065, FUNC(upd72065_device::map)).umask32(0x00ff00ff);
+ map(0xe94004, 0xe94007).rw(this, FUNC(x68k_state::x68k_fdc_r), FUNC(x68k_state::x68k_fdc_w));
// AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE16("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w, 0xffffffff)
- AM_RANGE(0xe96020, 0xe9603f) AM_DEVREADWRITE8("mb89352",mb89352_device,mb89352_r,mb89352_w,0x00ff00ff)
- AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE16(x68k_scc_r, x68k_scc_w,0xffffffff)
- AM_RANGE(0xe9a000, 0xe9bfff) AM_READWRITE16(x68k_ppi_r, x68k_ppi_w,0xffffffff)
- AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE16(x68k_ioc_r, x68k_ioc_w,0xffffffff)
- AM_RANGE(0xe9e000, 0xe9e3ff) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // FPU (Optional)
- AM_RANGE(0xea0000, 0xea1fff) AM_NOP//AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // external SCSI ROM and controller
- AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff)
- AM_RANGE(0xeafa80, 0xeafa8b) AM_READWRITE16(x68k_areaset_r, x68k_enh_areaset_w,0xffffffff)
- AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE16(x68k_spritereg_r, x68k_spritereg_w,0xffffffff)
- AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE16(x68k_spriteram_r, x68k_spriteram_w,0xffffffff)
- AM_RANGE(0xece000, 0xece3ff) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // User I/O
- AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE16(x68k_sram_r, x68k_sram_w, 0xffffffff)
- AM_RANGE(0xed4000, 0xefffff) AM_NOP
- AM_RANGE(0xf00000, 0xfbffff) AM_ROM
- AM_RANGE(0xfc0000, 0xfdffff) AM_ROM // internal SCSI ROM
- AM_RANGE(0xfe0000, 0xffffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xe96020, 0xe9603f).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask32(0x00ff00ff);
+ map(0xe98000, 0xe99fff).rw(this, FUNC(x68k_state::x68k_scc_r), FUNC(x68k_state::x68k_scc_w));
+ map(0xe9a000, 0xe9bfff).rw(this, FUNC(x68k_state::x68k_ppi_r), FUNC(x68k_state::x68k_ppi_w));
+ map(0xe9c000, 0xe9dfff).rw(this, FUNC(x68k_state::x68k_ioc_r), FUNC(x68k_state::x68k_ioc_w));
+ map(0xe9e000, 0xe9e3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // FPU (Optional)
+ map(0xea0000, 0xea1fff).noprw();//AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // external SCSI ROM and controller
+ map(0xeafa00, 0xeafa1f).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w));
+ map(0xeafa80, 0xeafa8b).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_enh_areaset_w));
+ map(0xeb0000, 0xeb7fff).rw(this, FUNC(x68k_state::x68k_spritereg_r), FUNC(x68k_state::x68k_spritereg_w));
+ map(0xeb8000, 0xebffff).rw(this, FUNC(x68k_state::x68k_spriteram_r), FUNC(x68k_state::x68k_spriteram_w));
+ map(0xece000, 0xece3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // User I/O
+ map(0xed0000, 0xed3fff).rw(this, FUNC(x68k_state::x68k_sram_r), FUNC(x68k_state::x68k_sram_w));
+ map(0xed4000, 0xefffff).noprw();
+ map(0xf00000, 0xfbffff).rom();
+ map(0xfc0000, 0xfdffff).rom(); // internal SCSI ROM
+ map(0xfe0000, 0xffffff).rom();
+}
static INPUT_PORTS_START( x68000 )
PORT_START("ctrltype")
diff --git a/src/mame/drivers/xain.cpp b/src/mame/drivers/xain.cpp
index d201dc194e5..4a443931547 100644
--- a/src/mame/drivers/xain.cpp
+++ b/src/mame/drivers/xain.cpp
@@ -282,54 +282,58 @@ READ8_MEMBER(xain_state::mcu_comm_reset_r)
}
-ADDRESS_MAP_START(xain_state::bootleg_map)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(bgram1_w) AM_SHARE("bgram1")
- AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(bgram0_w) AM_SHARE("bgram0")
- AM_RANGE(0x3800, 0x397f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("P1")
- AM_RANGE(0x3a00, 0x3a01) AM_WRITE(scrollxP1_w)
- AM_RANGE(0x3a01, 0x3a01) AM_READ_PORT("P2")
- AM_RANGE(0x3a02, 0x3a02) AM_READ_PORT("DSW0")
- AM_RANGE(0x3a02, 0x3a03) AM_WRITE(scrollyP1_w)
- AM_RANGE(0x3a03, 0x3a03) AM_READ_PORT("DSW1")
- AM_RANGE(0x3a04, 0x3a05) AM_WRITE(scrollxP0_w)
- AM_RANGE(0x3a05, 0x3a05) AM_READ_PORT("VBLANK")
- AM_RANGE(0x3a06, 0x3a07) AM_WRITE(scrollyP0_w)
- AM_RANGE(0x3a08, 0x3a08) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x3a09, 0x3a0c) AM_WRITE(main_irq_w)
- AM_RANGE(0x3a0d, 0x3a0d) AM_WRITE(flipscreen_w)
- AM_RANGE(0x3a0f, 0x3a0f) AM_WRITE(cpuA_bankswitch_w)
- AM_RANGE(0x3c00, 0x3dff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x3e00, 0x3fff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xain_state::main_map)
- AM_IMPORT_FROM(bootleg_map)
- AM_RANGE(0x3a04, 0x3a04) AM_DEVREAD("mcu", taito68705_mcu_device, data_r)
- AM_RANGE(0x3a06, 0x3a06) AM_READ(mcu_comm_reset_r)
- AM_RANGE(0x3a0e, 0x3a0e) AM_DEVWRITE("mcu", taito68705_mcu_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xain_state::cpu_map_B)
- AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x2000, 0x2000) AM_WRITE(irqA_assert_w)
- AM_RANGE(0x2800, 0x2800) AM_WRITE(irqB_clear_w)
- AM_RANGE(0x3000, 0x3000) AM_WRITE(cpuB_bankswitch_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xain_state::sound_map)
- AM_RANGE(0x0000, 0x07ff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym2203_device, write)
- AM_RANGE(0x4000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void xain_state::bootleg_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("share1");
+ map(0x2000, 0x27ff).ram().w(this, FUNC(xain_state::charram_w)).share("charram");
+ map(0x2800, 0x2fff).ram().w(this, FUNC(xain_state::bgram1_w)).share("bgram1");
+ map(0x3000, 0x37ff).ram().w(this, FUNC(xain_state::bgram0_w)).share("bgram0");
+ map(0x3800, 0x397f).ram().share("spriteram");
+ map(0x3a00, 0x3a00).portr("P1");
+ map(0x3a00, 0x3a01).w(this, FUNC(xain_state::scrollxP1_w));
+ map(0x3a01, 0x3a01).portr("P2");
+ map(0x3a02, 0x3a02).portr("DSW0");
+ map(0x3a02, 0x3a03).w(this, FUNC(xain_state::scrollyP1_w));
+ map(0x3a03, 0x3a03).portr("DSW1");
+ map(0x3a04, 0x3a05).w(this, FUNC(xain_state::scrollxP0_w));
+ map(0x3a05, 0x3a05).portr("VBLANK");
+ map(0x3a06, 0x3a07).w(this, FUNC(xain_state::scrollyP0_w));
+ map(0x3a08, 0x3a08).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x3a09, 0x3a0c).w(this, FUNC(xain_state::main_irq_w));
+ map(0x3a0d, 0x3a0d).w(this, FUNC(xain_state::flipscreen_w));
+ map(0x3a0f, 0x3a0f).w(this, FUNC(xain_state::cpuA_bankswitch_w));
+ map(0x3c00, 0x3dff).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x3e00, 0x3fff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0x4000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom();
+}
+
+void xain_state::main_map(address_map &map)
+{
+ bootleg_map(map);
+ map(0x3a04, 0x3a04).r(m_mcu, FUNC(taito68705_mcu_device::data_r));
+ map(0x3a06, 0x3a06).r(this, FUNC(xain_state::mcu_comm_reset_r));
+ map(0x3a0e, 0x3a0e).w(m_mcu, FUNC(taito68705_mcu_device::data_w));
+}
+
+void xain_state::cpu_map_B(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("share1");
+ map(0x2000, 0x2000).w(this, FUNC(xain_state::irqA_assert_w));
+ map(0x2800, 0x2800).w(this, FUNC(xain_state::irqB_clear_w));
+ map(0x3000, 0x3000).w(this, FUNC(xain_state::cpuB_bankswitch_w));
+ map(0x4000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xffff).rom();
+}
+
+void xain_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x07ff).ram();
+ map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x2800, 0x2801).w("ym1", FUNC(ym2203_device::write));
+ map(0x3000, 0x3001).w("ym2", FUNC(ym2203_device::write));
+ map(0x4000, 0xffff).rom();
+}
static INPUT_PORTS_START( xsleena )
diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp
index 9175c1f16df..f752f187c12 100644
--- a/src/mame/drivers/xavix.cpp
+++ b/src/mame/drivers/xavix.cpp
@@ -1530,75 +1530,76 @@ WRITE8_MEMBER(xavix_state::irq_source_w)
// DATA reads from 0x8000-0xffff are banked by byte 0xff of 'ram' (this is handled in the CPU core)
-ADDRESS_MAP_START(xavix_state::xavix_map)
- AM_RANGE(0x000000, 0x0001ff) AM_RAM
- AM_RANGE(0x000200, 0x003fff) AM_RAM AM_SHARE("mainram")
+void xavix_state::xavix_map(address_map &map)
+{
+ map(0x000000, 0x0001ff).ram();
+ map(0x000200, 0x003fff).ram().share("mainram");
// this might not be a real area, the tilemap base register gets set to 0x40 in monster truck service mode, and expects a fixed layout.
// As that would point at this address maybe said layout is being read from here, or maybe it's just a magic tilemap register value that doesn't read address space at all.
- AM_RANGE(0x004000, 0x0041ff) AM_READ(xavix_4000_r)
+ map(0x004000, 0x0041ff).r(this, FUNC(xavix_state::xavix_4000_r));
// 6xxx ranges are the video hardware
// appears to be 256 sprites (shares will be renamed once their purpose is known)
- AM_RANGE(0x006000, 0x0060ff) AM_RAM AM_SHARE("spr_attr0")
- AM_RANGE(0x006100, 0x0061ff) AM_RAM AM_SHARE("spr_attr1")
- AM_RANGE(0x006200, 0x0062ff) AM_RAM AM_SHARE("spr_ypos") // cleared to 0x80 by both games, maybe enable registers?
- AM_RANGE(0x006300, 0x0063ff) AM_RAM AM_SHARE("spr_xpos")
- AM_RANGE(0x006400, 0x0064ff) AM_RAM // 6400 range gets populated in some cases, but it seems to be more like work ram, data doesn't matter and must be ignored?
- AM_RANGE(0x006500, 0x0065ff) AM_RAM AM_SHARE("spr_addr_lo")
- AM_RANGE(0x006600, 0x0066ff) AM_RAM AM_SHARE("spr_addr_md")
- AM_RANGE(0x006700, 0x0067ff) AM_RAM AM_SHARE("spr_addr_hi")
- AM_RANGE(0x006800, 0x0068ff) AM_RAM AM_SHARE("palram1") // written with 6900
- AM_RANGE(0x006900, 0x0069ff) AM_RAM AM_SHARE("palram2") // startup (taitons1)
- AM_RANGE(0x006a00, 0x006a1f) AM_RAM AM_SHARE("spr_attra") // test mode, pass flag 0x20
+ map(0x006000, 0x0060ff).ram().share("spr_attr0");
+ map(0x006100, 0x0061ff).ram().share("spr_attr1");
+ map(0x006200, 0x0062ff).ram().share("spr_ypos"); // cleared to 0x80 by both games, maybe enable registers?
+ map(0x006300, 0x0063ff).ram().share("spr_xpos");
+ map(0x006400, 0x0064ff).ram(); // 6400 range gets populated in some cases, but it seems to be more like work ram, data doesn't matter and must be ignored?
+ map(0x006500, 0x0065ff).ram().share("spr_addr_lo");
+ map(0x006600, 0x0066ff).ram().share("spr_addr_md");
+ map(0x006700, 0x0067ff).ram().share("spr_addr_hi");
+ map(0x006800, 0x0068ff).ram().share("palram1"); // written with 6900
+ map(0x006900, 0x0069ff).ram().share("palram2"); // startup (taitons1)
+ map(0x006a00, 0x006a1f).ram().share("spr_attra"); // test mode, pass flag 0x20
- AM_RANGE(0x006fc0, 0x006fc0) AM_WRITE(xavix_6fc0_w) // startup (maybe this is a mirror of tmap1_regs_w)
+ map(0x006fc0, 0x006fc0).w(this, FUNC(xavix_state::xavix_6fc0_w)); // startup (maybe this is a mirror of tmap1_regs_w)
- AM_RANGE(0x006fc8, 0x006fcf) AM_WRITE(tmap1_regs_w) // video registers
+ map(0x006fc8, 0x006fcf).w(this, FUNC(xavix_state::tmap1_regs_w)); // video registers
- AM_RANGE(0x006fd0, 0x006fd7) AM_READWRITE(tmap2_regs_r, tmap2_regs_w)
- AM_RANGE(0x006fd8, 0x006fd8) AM_WRITE(xavix_6fd8_w) // startup (mirror of tmap2_regs_w?)
+ map(0x006fd0, 0x006fd7).rw(this, FUNC(xavix_state::tmap2_regs_r), FUNC(xavix_state::tmap2_regs_w));
+ map(0x006fd8, 0x006fd8).w(this, FUNC(xavix_state::xavix_6fd8_w)); // startup (mirror of tmap2_regs_w?)
- AM_RANGE(0x006fe0, 0x006fe0) AM_READWRITE(vid_dma_trigger_r, vid_dma_trigger_w) // after writing to 6fe1/6fe2 and 6fe5/6fe6 rad_mtrk writes 0x43/0x44 here then polls on 0x40 (see function call at c273) write values are hardcoded, similar code at 18401
- AM_RANGE(0x006fe1, 0x006fe2) AM_WRITE(vid_dma_params_1_w)
- AM_RANGE(0x006fe5, 0x006fe6) AM_WRITE(vid_dma_params_2_w)
+ map(0x006fe0, 0x006fe0).rw(this, FUNC(xavix_state::vid_dma_trigger_r), FUNC(xavix_state::vid_dma_trigger_w)); // after writing to 6fe1/6fe2 and 6fe5/6fe6 rad_mtrk writes 0x43/0x44 here then polls on 0x40 (see function call at c273) write values are hardcoded, similar code at 18401
+ map(0x006fe1, 0x006fe2).w(this, FUNC(xavix_state::vid_dma_params_1_w));
+ map(0x006fe5, 0x006fe6).w(this, FUNC(xavix_state::vid_dma_params_2_w));
// function in rad_mtrk at 0184b7 uses this
- AM_RANGE(0x006fe8, 0x006fe8) AM_RAM // r/w tested
- AM_RANGE(0x006fe9, 0x006fe9) AM_RAM // r/w tested
+ map(0x006fe8, 0x006fe8).ram(); // r/w tested
+ map(0x006fe9, 0x006fe9).ram(); // r/w tested
//AM_RANGE(0x006fea, 0x006fea) AM_WRITENOP
- AM_RANGE(0x006ff0, 0x006ff0) AM_READWRITE(xavix_6ff0_r, xavix_6ff0_w) // r/w tested
+ map(0x006ff0, 0x006ff0).rw(this, FUNC(xavix_state::xavix_6ff0_r), FUNC(xavix_state::xavix_6ff0_w)); // r/w tested
//AM_RANGE(0x006ff1, 0x006ff1) AM_WRITENOP // startup - cleared in interrupt 0
//AM_RANGE(0x006ff2, 0x006ff2) AM_WRITENOP // set to 07 after clearing above things in interrupt 0
- AM_RANGE(0x006ff8, 0x006ff8) AM_READWRITE(xavix_6ff8_r, xavix_6ff8_w) // always seems to be a read/store or read/modify/store
- AM_RANGE(0x006ff9, 0x006ff9) AM_READ(pal_ntsc_r)
+ map(0x006ff8, 0x006ff8).rw(this, FUNC(xavix_state::xavix_6ff8_r), FUNC(xavix_state::xavix_6ff8_w)); // always seems to be a read/store or read/modify/store
+ map(0x006ff9, 0x006ff9).r(this, FUNC(xavix_state::pal_ntsc_r));
// 7xxx ranges system controller?
- AM_RANGE(0x0075f0, 0x0075f0) AM_READWRITE(xavix_75f0_r, xavix_75f0_w) // r/w tested read/written 8 times in a row
- AM_RANGE(0x0075f1, 0x0075f1) AM_READWRITE(xavix_75f1_r, xavix_75f1_w) // r/w tested read/written 8 times in a row
- AM_RANGE(0x0075f3, 0x0075f3) AM_RAM
- AM_RANGE(0x0075f4, 0x0075f4) AM_READ(xavix_75f4_r) // related to 75f0 (read after writing there - rad_mtrk)
- AM_RANGE(0x0075f5, 0x0075f5) AM_READ(xavix_75f5_r) // related to 75f1 (read after writing there - rad_mtrk)
+ map(0x0075f0, 0x0075f0).rw(this, FUNC(xavix_state::xavix_75f0_r), FUNC(xavix_state::xavix_75f0_w)); // r/w tested read/written 8 times in a row
+ map(0x0075f1, 0x0075f1).rw(this, FUNC(xavix_state::xavix_75f1_r), FUNC(xavix_state::xavix_75f1_w)); // r/w tested read/written 8 times in a row
+ map(0x0075f3, 0x0075f3).ram();
+ map(0x0075f4, 0x0075f4).r(this, FUNC(xavix_state::xavix_75f4_r)); // related to 75f0 (read after writing there - rad_mtrk)
+ map(0x0075f5, 0x0075f5).r(this, FUNC(xavix_state::xavix_75f5_r)); // related to 75f1 (read after writing there - rad_mtrk)
// taitons1 after 75f7/75f8
- AM_RANGE(0x0075f6, 0x0075f6) AM_READWRITE(xavix_75f6_r, xavix_75f6_w) // r/w tested
+ map(0x0075f6, 0x0075f6).rw(this, FUNC(xavix_state::xavix_75f6_r), FUNC(xavix_state::xavix_75f6_w)); // r/w tested
// taitons1 written as a pair
- AM_RANGE(0x0075f7, 0x0075f7) AM_WRITE(xavix_75f7_w)
- AM_RANGE(0x0075f8, 0x0075f8) AM_READWRITE(xavix_75f8_r, xavix_75f8_w) // r/w tested
+ map(0x0075f7, 0x0075f7).w(this, FUNC(xavix_state::xavix_75f7_w));
+ map(0x0075f8, 0x0075f8).rw(this, FUNC(xavix_state::xavix_75f8_r), FUNC(xavix_state::xavix_75f8_w)); // r/w tested
// taitons1 written after 75f6, then read
- AM_RANGE(0x0075f9, 0x0075f9) AM_READWRITE(xavix_75f9_r, xavix_75f9_w)
+ map(0x0075f9, 0x0075f9).rw(this, FUNC(xavix_state::xavix_75f9_r), FUNC(xavix_state::xavix_75f9_w));
// at another time
- AM_RANGE(0x0075fa, 0x0075fa) AM_READWRITE(xavix_75fa_r, xavix_75fa_w) // r/w tested
- AM_RANGE(0x0075fb, 0x0075fb) AM_READWRITE(xavix_75fb_r, xavix_75fb_w) // r/w tested
- AM_RANGE(0x0075fc, 0x0075fc) AM_READWRITE(xavix_75fc_r, xavix_75fc_w) // r/w tested
- AM_RANGE(0x0075fd, 0x0075fd) AM_READWRITE(xavix_75fd_r, xavix_75fd_w) // r/w tested
- AM_RANGE(0x0075fe, 0x0075fe) AM_WRITE(xavix_75fe_w)
+ map(0x0075fa, 0x0075fa).rw(this, FUNC(xavix_state::xavix_75fa_r), FUNC(xavix_state::xavix_75fa_w)); // r/w tested
+ map(0x0075fb, 0x0075fb).rw(this, FUNC(xavix_state::xavix_75fb_r), FUNC(xavix_state::xavix_75fb_w)); // r/w tested
+ map(0x0075fc, 0x0075fc).rw(this, FUNC(xavix_state::xavix_75fc_r), FUNC(xavix_state::xavix_75fc_w)); // r/w tested
+ map(0x0075fd, 0x0075fd).rw(this, FUNC(xavix_state::xavix_75fd_r), FUNC(xavix_state::xavix_75fd_w)); // r/w tested
+ map(0x0075fe, 0x0075fe).w(this, FUNC(xavix_state::xavix_75fe_w));
// taitons1 written other 75xx operations
- AM_RANGE(0x0075ff, 0x0075ff) AM_WRITE(xavix_75ff_w)
+ map(0x0075ff, 0x0075ff).w(this, FUNC(xavix_state::xavix_75ff_w));
//AM_RANGE(0x007810, 0x007810) AM_WRITENOP // startup
@@ -1606,21 +1607,21 @@ ADDRESS_MAP_START(xavix_state::xavix_map)
//AM_RANGE(0x007902, 0x007902) AM_WRITENOP // startup
// DMA trigger for below (written after the others) waits on status of bit 1 in a loop
- AM_RANGE(0x007980, 0x007980) AM_READWRITE(dma_trigger_r, dma_trigger_w)
+ map(0x007980, 0x007980).rw(this, FUNC(xavix_state::dma_trigger_r), FUNC(xavix_state::dma_trigger_w));
// DMA source
- AM_RANGE(0x007981, 0x007981) AM_WRITE(rom_dmasrc_lo_w)
- AM_RANGE(0x007982, 0x007982) AM_WRITE(rom_dmasrc_md_w)
- AM_RANGE(0x007983, 0x007983) AM_WRITE(rom_dmasrc_hi_w)
+ map(0x007981, 0x007981).w(this, FUNC(xavix_state::rom_dmasrc_lo_w));
+ map(0x007982, 0x007982).w(this, FUNC(xavix_state::rom_dmasrc_md_w));
+ map(0x007983, 0x007983).w(this, FUNC(xavix_state::rom_dmasrc_hi_w));
// DMA dest
- AM_RANGE(0x007984, 0x007984) AM_WRITE(rom_dmadst_lo_w)
- AM_RANGE(0x007985, 0x007985) AM_WRITE(rom_dmadst_hi_w)
+ map(0x007984, 0x007984).w(this, FUNC(xavix_state::rom_dmadst_lo_w));
+ map(0x007985, 0x007985).w(this, FUNC(xavix_state::rom_dmadst_hi_w));
// DMA length
- AM_RANGE(0x007986, 0x007986) AM_WRITE(rom_dmalen_lo_w)
- AM_RANGE(0x007987, 0x007987) AM_WRITE(rom_dmalen_hi_w)
+ map(0x007986, 0x007986).w(this, FUNC(xavix_state::rom_dmalen_lo_w));
+ map(0x007987, 0x007987).w(this, FUNC(xavix_state::rom_dmalen_hi_w));
// GPIO stuff
- AM_RANGE(0x007a00, 0x007a00) AM_READ(xavix_io_0_r)
- AM_RANGE(0x007a01, 0x007a01) AM_READ(xavix_io_1_r) //AM_WRITENOP // startup (taitons1)
+ map(0x007a00, 0x007a00).r(this, FUNC(xavix_state::xavix_io_0_r));
+ map(0x007a01, 0x007a01).r(this, FUNC(xavix_state::xavix_io_1_r)); //AM_WRITENOP // startup (taitons1)
//AM_RANGE(0x007a02, 0x007a02) AM_WRITENOP // startup, gets set to 20, 7a00 is then also written with 20
//AM_RANGE(0x007a03, 0x007a03) AM_READNOP AM_WRITENOP // startup (gets set to 84 which is the same as the bits checked on 7a01, possible port direction register?)
@@ -1634,24 +1635,24 @@ ADDRESS_MAP_START(xavix_state::xavix_map)
//AM_RANGE(0x007c02, 0x007c02) AM_WRITENOP // once
// this is a multiplication chip
- AM_RANGE(0x007ff2, 0x007ff4) AM_WRITE(mult_param_w)
- AM_RANGE(0x007ff5, 0x007ff6) AM_READ(mult_r)
+ map(0x007ff2, 0x007ff4).w(this, FUNC(xavix_state::mult_param_w));
+ map(0x007ff5, 0x007ff6).r(this, FUNC(xavix_state::mult_r));
// maybe irq enable, written after below
- AM_RANGE(0x007ff9, 0x007ff9) AM_WRITE(irq_enable_w) // interrupt related, but probalby not a simple 'enable' otherwise interrupts happen before we're ready for them.
+ map(0x007ff9, 0x007ff9).w(this, FUNC(xavix_state::irq_enable_w)); // interrupt related, but probalby not a simple 'enable' otherwise interrupts happen before we're ready for them.
// an IRQ vector (nmi?)
- AM_RANGE(0x007ffa, 0x007ffa) AM_WRITE(irq_vector0_lo_w)
- AM_RANGE(0x007ffb, 0x007ffb) AM_WRITE(irq_vector0_hi_w)
+ map(0x007ffa, 0x007ffa).w(this, FUNC(xavix_state::irq_vector0_lo_w));
+ map(0x007ffb, 0x007ffb).w(this, FUNC(xavix_state::irq_vector0_hi_w));
- AM_RANGE(0x007ffc, 0x007ffc) AM_READWRITE(irq_source_r, irq_source_w)
+ map(0x007ffc, 0x007ffc).rw(this, FUNC(xavix_state::irq_source_r), FUNC(xavix_state::irq_source_w));
// an IRQ vector (irq?)
- AM_RANGE(0x007ffe, 0x007ffe) AM_WRITE(irq_vector1_lo_w)
- AM_RANGE(0x007fff, 0x007fff) AM_WRITE(irq_vector1_hi_w)
+ map(0x007ffe, 0x007ffe).w(this, FUNC(xavix_state::irq_vector1_lo_w));
+ map(0x007fff, 0x007fff).w(this, FUNC(xavix_state::irq_vector1_hi_w));
// rom is installed in init due to different rom sizes and mirroring required
// AM_RANGE(0x008000, 0x7fffff) AM_ROM AM_REGION("bios", 0x008000) AM_MIRROR(0x800000) // rad_mtrk relies on rom mirroring
-ADDRESS_MAP_END
+}
static INPUT_PORTS_START( xavix )
PORT_START("IN0")
diff --git a/src/mame/drivers/xbox.cpp b/src/mame/drivers/xbox.cpp
index cf404468b0c..df2587fbaa9 100644
--- a/src/mame/drivers/xbox.cpp
+++ b/src/mame/drivers/xbox.cpp
@@ -55,14 +55,16 @@ void xbox_state::video_start()
{
}
-ADDRESS_MAP_START(xbox_state::xbox_map)
- AM_IMPORT_FROM(xbox_base_map)
- AM_RANGE(0xff000000, 0xff0fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f00000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xbox_state::xbox_map_io)
- AM_IMPORT_FROM(xbox_base_map_io)
-ADDRESS_MAP_END
+void xbox_state::xbox_map(address_map &map)
+{
+ xbox_base_map(map);
+ map(0xff000000, 0xff0fffff).rom().region("bios", 0).mirror(0x00f00000);
+}
+
+void xbox_state::xbox_map_io(address_map &map)
+{
+ xbox_base_map_io(map);
+}
static INPUT_PORTS_START( xbox )
/* dummy active high structure */
diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp
index 5de55077cf3..340ff5a3afc 100644
--- a/src/mame/drivers/xerox820.cpp
+++ b/src/mame/drivers/xerox820.cpp
@@ -165,49 +165,55 @@ WRITE8_MEMBER( xerox820ii_state::sync_w )
/* Memory Maps */
-ADDRESS_MAP_START(xerox820_state::xerox820_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xerox820_state::xerox820_io)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xff03) AM_DEVWRITE(COM8116_TAG, com8116_device, str_w)
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x08, 0x0b) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80PIO_GP_TAG, z80pio_device, read_alt, write_alt)
- AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff03) AM_DEVWRITE(COM8116_TAG, com8116_device, stt_w)
- AM_RANGE(0x10, 0x13) AM_MIRROR(0xff00) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0x14, 0x14) AM_MIRROR(0x0003) AM_SELECT(0xff00) AM_WRITE(scroll_w)
- AM_RANGE(0x18, 0x1b) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80PIO_KB_TAG, z80pio_device, read_alt, write_alt)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xerox820ii_state::xerox820ii_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0xc000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xerox820ii_state::xerox820ii_io)
- AM_IMPORT_FROM(xerox820_io)
- AM_RANGE(0x28, 0x29) AM_MIRROR(0xff00) AM_WRITE(bell_w)
- AM_RANGE(0x30, 0x31) AM_MIRROR(0xff00) AM_WRITE(slden_w)
- AM_RANGE(0x34, 0x35) AM_MIRROR(0xff00) AM_WRITE(chrom_w)
- AM_RANGE(0x36, 0x36) AM_MIRROR(0xff00) AM_WRITE(lowlite_w)
- AM_RANGE(0x68, 0x69) AM_MIRROR(0xff00) AM_WRITE(sync_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xerox820ii_state::xerox168_mem)
- AM_RANGE(0x00000, 0x3ffff) AM_RAM
- AM_RANGE(0xff000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xerox820_state::mk83_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x3000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("video_ram")
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void xerox820_state::xerox820_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x3000, 0x3fff).ram().share("video_ram");
+ map(0x4000, 0xffff).ram();
+}
+
+void xerox820_state::xerox820_io(address_map &map)
+{
+ map(0x00, 0x00).mirror(0xff03).w(COM8116_TAG, FUNC(com8116_device::str_w));
+ map(0x04, 0x07).mirror(0xff00).rw(m_sio, FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w));
+ map(0x08, 0x0b).mirror(0xff00).rw(Z80PIO_GP_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x0c, 0x0c).mirror(0xff03).w(COM8116_TAG, FUNC(com8116_device::stt_w));
+ map(0x10, 0x13).mirror(0xff00).rw(this, FUNC(xerox820_state::fdc_r), FUNC(xerox820_state::fdc_w));
+ map(0x14, 0x14).mirror(0x0003).select(0xff00).w(this, FUNC(xerox820_state::scroll_w));
+ map(0x18, 0x1b).mirror(0xff00).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x1c, 0x1f).mirror(0xff00).rw(m_kbpio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+}
+
+void xerox820ii_state::xerox820ii_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x3000, 0x3fff).ram().share("video_ram");
+ map(0xc000, 0xffff).ram();
+}
+
+void xerox820ii_state::xerox820ii_io(address_map &map)
+{
+ xerox820_io(map);
+ map(0x28, 0x29).mirror(0xff00).w(this, FUNC(xerox820ii_state::bell_w));
+ map(0x30, 0x31).mirror(0xff00).w(this, FUNC(xerox820ii_state::slden_w));
+ map(0x34, 0x35).mirror(0xff00).w(this, FUNC(xerox820ii_state::chrom_w));
+ map(0x36, 0x36).mirror(0xff00).w(this, FUNC(xerox820ii_state::lowlite_w));
+ map(0x68, 0x69).mirror(0xff00).w(this, FUNC(xerox820ii_state::sync_w));
+}
+
+void xerox820ii_state::xerox168_mem(address_map &map)
+{
+ map(0x00000, 0x3ffff).ram();
+ map(0xff000, 0xfffff).rom().region(I8086_TAG, 0);
+}
+
+void xerox820_state::mk83_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x3000, 0x6fff).ram();
+ map(0x7000, 0x7fff).ram().share("video_ram");
+ map(0x8000, 0xffff).ram();
+}
/* Input Ports */
diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp
index 0f9e81c6d56..f2e24ba08d5 100644
--- a/src/mame/drivers/xexex.cpp
+++ b/src/mame/drivers/xexex.cpp
@@ -334,59 +334,61 @@ TIMER_DEVICE_CALLBACK_MEMBER(xexex_state::xexex_interrupt)
}
-ADDRESS_MAP_START(xexex_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("workram") // work RAM
+void xexex_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x08ffff).ram().share("workram"); // work RAM
#if XE_SKIPIDLE
- AM_RANGE(0x080014, 0x080015) AM_READ(xexex_waitskip_r) // helps sound CPU by giving back control as early as possible
+ map(0x080014, 0x080015).r(this, FUNC(xexex_state::xexex_waitskip_r)); // helps sound CPU by giving back control as early as possible
#endif
- AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("spriteram") // K053247 sprite RAM
- AM_RANGE(0x098000, 0x09ffff) AM_READWRITE(spriteram_mirror_r, spriteram_mirror_w) // K053247 sprite RAM mirror read
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w) // VACSET (K054157)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) // OBJSET1
- AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) // Passthrough to sprite roms
- AM_RANGE(0x0c6000, 0x0c7fff) AM_DEVREADWRITE("k053250", k053250_device, ram_r, ram_w) // K053250 "road" RAM
- AM_RANGE(0x0c8000, 0x0c800f) AM_DEVREADWRITE("k053250", k053250_device, reg_r, reg_w)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) // priority encoder
+ map(0x090000, 0x097fff).ram().share("spriteram"); // K053247 sprite RAM
+ map(0x098000, 0x09ffff).rw(this, FUNC(xexex_state::spriteram_mirror_r), FUNC(xexex_state::spriteram_mirror_w)); // K053247 sprite RAM mirror read
+ map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET (K054157)
+ map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); // OBJSET1
+ map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); // Passthrough to sprite roms
+ map(0x0c6000, 0x0c7fff).rw(m_k053250, FUNC(k053250_device::ram_r), FUNC(k053250_device::ram_w)); // K053250 "road" RAM
+ map(0x0c8000, 0x0c800f).rw(m_k053250, FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w));
+ map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC
+ map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); // priority encoder
// AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU
- AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
- AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS regs
- AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1")
- AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2")
- AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("EEPROM")
- AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w)
- AM_RANGE(0x100000, 0x17ffff) AM_ROM
- AM_RANGE(0x180000, 0x181fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
- AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) // Passthrough to tile roms
- AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREAD("k053250", k053250_device, rom_r)
- AM_RANGE(0x1b0000, 0x1b1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ map(0x0d4000, 0x0d4001).w(this, FUNC(xexex_state::sound_irq_w));
+ map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS regs
+ map(0x0da000, 0x0da001).portr("P1");
+ map(0x0da002, 0x0da003).portr("P2");
+ map(0x0dc000, 0x0dc001).portr("SYSTEM");
+ map(0x0dc002, 0x0dc003).portr("EEPROM");
+ map(0x0de000, 0x0de001).rw(this, FUNC(xexex_state::control2_r), FUNC(xexex_state::control2_w));
+ map(0x100000, 0x17ffff).rom();
+ map(0x180000, 0x181fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x182000, 0x183fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w));
+ map(0x190000, 0x191fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); // Passthrough to tile roms
+ map(0x1a0000, 0x1a1fff).r(m_k053250, FUNC(k053250_device::rom_r));
+ map(0x1b0000, 0x1b1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
#if XE_DEBUG
- AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r)
- AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r)
- AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r)
- AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r)
- AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r)
+ map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r));
+ map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r));
+ map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r));
+ map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r));
+ map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r));
#endif
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(xexex_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
+void xexex_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xec00, 0xec01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(this, FUNC(xexex_state::sound_bankswitch_w));
+}
static INPUT_PORTS_START( xexex )
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index ea32ba47552..825f4944f3b 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -77,57 +77,60 @@ WRITE8_MEMBER(xmen_state::sound_bankswitch_w)
}
-ADDRESS_MAP_START(xmen_state::main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w)
- AM_RANGE(0x101000, 0x101fff) AM_RAM
- AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
- AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3")
- AM_RANGE(0x10a004, 0x10a005) AM_READ_PORT("EEPROM")
- AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
- AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */
- AM_RANGE(0x18c000, 0x197fff) AM_DEVREADWRITE("k052109", k052109_device, lsb_r, lsb_w)
- AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xmen_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
- AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
- AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(xmen_state::_6p_main_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteramleft") /* sprites (screen 1) */
- AM_RANGE(0x101000, 0x101fff) AM_RAM
- AM_RANGE(0x102000, 0x102fff) AM_RAM AM_SHARE("spriteramright") /* sprites (screen 2) */
- AM_RANGE(0x103000, 0x103fff) AM_RAM /* 6p - a buffer? */
- AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
- AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) /* sprites */
- AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
- AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
- AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3")
- AM_RANGE(0x10a004, 0x10a005) AM_READ_PORT("EEPROM")
- AM_RANGE(0x10a006, 0x10a007) AM_READ_PORT("P5_P6")
- AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053247_device, k053246_word_r) /* sprites */
- AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */
+void xmen_state::main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w));
+ map(0x101000, 0x101fff).ram();
+ map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x108000, 0x108001).w(this, FUNC(xmen_state::eeprom_w));
+ map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_word_w));
+ map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x10a002, 0x10a003).portr("P1_P3");
+ map(0x10a004, 0x10a005).portr("EEPROM");
+ map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r));
+ map(0x110000, 0x113fff).ram(); /* main RAM */
+ map(0x18c000, 0x197fff).rw(m_k052109, FUNC(k052109_device::lsb_r), FUNC(k052109_device::lsb_w));
+ map(0x18fa00, 0x18fa01).w(this, FUNC(xmen_state::xmen_18fa00_w));
+}
+
+void xmen_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("z80bank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe800, 0xe801).mirror(0x0400).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf800, 0xf800).w(this, FUNC(xmen_state::sound_bankswitch_w));
+}
+
+
+void xmen_state::_6p_main_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).ram().share("spriteramleft"); /* sprites (screen 1) */
+ map(0x101000, 0x101fff).ram();
+ map(0x102000, 0x102fff).ram().share("spriteramright"); /* sprites (screen 2) */
+ map(0x103000, 0x103fff).ram(); /* 6p - a buffer? */
+ map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x108000, 0x108001).w(this, FUNC(xmen_state::eeprom_w));
+ map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_word_w)); /* sprites */
+ map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::lsb_w));
+ map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x10a002, 0x10a003).portr("P1_P3");
+ map(0x10a004, 0x10a005).portr("EEPROM");
+ map(0x10a006, 0x10a007).portr("P5_P6");
+ map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r)); /* sprites */
+ map(0x110000, 0x113fff).ram(); /* main RAM */
/* AM_RANGE(0x18c000, 0x197fff) AM_DEVWRITE("k052109", k052109_device, lsb_w) AM_SHARE("tilemapleft") */
- AM_RANGE(0x18c000, 0x197fff) AM_RAM AM_SHARE("tilemapleft") /* left tilemap (p1,p2,p3 counters) */
- AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w)
+ map(0x18c000, 0x197fff).ram().share("tilemapleft"); /* left tilemap (p1,p2,p3 counters) */
+ map(0x18fa00, 0x18fa01).w(this, FUNC(xmen_state::xmen_18fa00_w));
/*
AM_RANGE(0x1ac000, 0x1af7ff) AM_READONLY
AM_RANGE(0x1ac000, 0x1af7ff) AM_WRITEONLY
@@ -138,7 +141,7 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map)
AM_RANGE(0x1b4000, 0x1b77ff) AM_READONLY
AM_RANGE(0x1b4000, 0x1b77ff) AM_WRITEONLY
*/
- AM_RANGE(0x1ac000, 0x1b7fff) AM_RAM AM_SHARE("tilemapright") /* right tilemap */
+ map(0x1ac000, 0x1b7fff).ram().share("tilemapright"); /* right tilemap */
/* what are the regions below buffers? (used by hw or software?) */
/*
@@ -148,7 +151,7 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map)
AM_RANGE(0x1d0000, 0x1d37ff) AM_READONLY
AM_RANGE(0x1d0000, 0x1d37ff) AM_WRITEONLY
*/
- AM_RANGE(0x1cc000, 0x1d7fff) AM_RAM /* tilemap ? */
+ map(0x1cc000, 0x1d7fff).ram(); /* tilemap ? */
/* whats the stuff below, buffers? */
/*
@@ -159,8 +162,8 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map)
AM_RANGE(0x1f4000, 0x1f77ff) AM_READONLY
AM_RANGE(0x1f4000, 0x1f77ff) AM_WRITEONLY
*/
- AM_RANGE(0x1ec000, 0x1f7fff) AM_RAM /* tilemap ? */
-ADDRESS_MAP_END
+ map(0x1ec000, 0x1f7fff).ram(); /* tilemap ? */
+}
static INPUT_PORTS_START( xmen )
diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp
index aa75582599e..1d57b537130 100644
--- a/src/mame/drivers/xor100.cpp
+++ b/src/mame/drivers/xor100.cpp
@@ -262,28 +262,30 @@ WRITE8_MEMBER( xor100_state::fdc_dsel_w )
/* Memory Maps */
-ADDRESS_MAP_START(xor100_state::xor100_mem)
- AM_RANGE(0x0000, 0xffff) AM_WRITE_BANK("bank1")
- AM_RANGE(0x0000, 0xf7ff) AM_READ_BANK("bank2")
- AM_RANGE(0xf800, 0xffff) AM_READ_BANK("bank3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xor100_state::xor100_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(I8251_A_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(I8251_A_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x02, 0x02) AM_DEVREADWRITE(I8251_B_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x03, 0x03) AM_DEVREADWRITE(I8251_B_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
- AM_RANGE(0x08, 0x08) AM_WRITE(mmu_w)
- AM_RANGE(0x09, 0x09) AM_WRITE(prom_toggle_w)
- AM_RANGE(0x0a, 0x0a) AM_READ(prom_disable_r)
- AM_RANGE(0x0b, 0x0b) AM_READ_PORT("DSW0") AM_WRITE(baud_w)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
- AM_RANGE(0xf8, 0xfb) AM_READWRITE(fdc_r, fdc_w)
- AM_RANGE(0xfc, 0xfc) AM_READWRITE(fdc_wait_r, fdc_dcont_w)
- AM_RANGE(0xfd, 0xfd) AM_WRITE(fdc_dsel_w)
-ADDRESS_MAP_END
+void xor100_state::xor100_mem(address_map &map)
+{
+ map(0x0000, 0xffff).bankw("bank1");
+ map(0x0000, 0xf7ff).bankr("bank2");
+ map(0xf800, 0xffff).bankr("bank3");
+}
+
+void xor100_state::xor100_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw(m_uart_a, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw(m_uart_a, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x02, 0x02).rw(m_uart_b, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x03, 0x03).rw(m_uart_b, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x04, 0x07).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x08).w(this, FUNC(xor100_state::mmu_w));
+ map(0x09, 0x09).w(this, FUNC(xor100_state::prom_toggle_w));
+ map(0x0a, 0x0a).r(this, FUNC(xor100_state::prom_disable_r));
+ map(0x0b, 0x0b).portr("DSW0").w(this, FUNC(xor100_state::baud_w));
+ map(0x0c, 0x0f).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0xf8, 0xfb).rw(this, FUNC(xor100_state::fdc_r), FUNC(xor100_state::fdc_w));
+ map(0xfc, 0xfc).rw(this, FUNC(xor100_state::fdc_wait_r), FUNC(xor100_state::fdc_dcont_w));
+ map(0xfd, 0xfd).w(this, FUNC(xor100_state::fdc_dsel_w));
+}
/* Input Ports */
diff --git a/src/mame/drivers/xorworld.cpp b/src/mame/drivers/xorworld.cpp
index 894e2cc3fd9..570406d2df3 100644
--- a/src/mame/drivers/xorworld.cpp
+++ b/src/mame/drivers/xorworld.cpp
@@ -61,19 +61,20 @@ WRITE16_MEMBER(xorworld_state::irq6_ack_w)
m_maincpu->set_input_line(6, CLEAR_LINE);
}
-ADDRESS_MAP_START(xorworld_state::xorworld_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1")
- AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P2")
- AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW")
- AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff)
- AM_RANGE(0xa00000, 0xa0000f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xffc880, 0xffc881) AM_WRITE(irq2_ack_w) AM_READNOP
- AM_RANGE(0xffc882, 0xffc883) AM_WRITE(irq6_ack_w) AM_READNOP
- AM_RANGE(0xffc884, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void xorworld_state::xorworld_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x200000, 0x200001).portr("P1");
+ map(0x400000, 0x400001).portr("P2");
+ map(0x600000, 0x600001).portr("DSW");
+ map(0x800000, 0x800003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
+ map(0xa00000, 0xa0000f).w("mainlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0xffc000, 0xffc7ff).ram().w(this, FUNC(xorworld_state::videoram_w)).share("videoram");
+ map(0xffc800, 0xffc87f).ram().share("spriteram");
+ map(0xffc880, 0xffc881).w(this, FUNC(xorworld_state::irq2_ack_w)).nopr();
+ map(0xffc882, 0xffc883).w(this, FUNC(xorworld_state::irq6_ack_w)).nopr();
+ map(0xffc884, 0xffffff).ram();
+}
static INPUT_PORTS_START( xorworld )
diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp
index 231411cfae5..e1c00624c15 100644
--- a/src/mame/drivers/xtheball.cpp
+++ b/src/mame/drivers/xtheball.cpp
@@ -35,7 +35,7 @@ public:
m_analog_x(*this, "ANALOGX"),
m_analog_y(*this, "ANALOGY") { }
- required_device<cpu_device> m_maincpu;
+ required_device<tms34010_device> m_maincpu;
required_device<watchdog_timer_device> m_watchdog;
required_device<tlc34076_device> m_tlc34076;
required_device<ticket_dispenser_device> m_ticket;
@@ -191,29 +191,30 @@ READ16_MEMBER(xtheball_state::analogy_watchdog_r)
*
*************************************/
-ADDRESS_MAP_START(xtheball_state::main_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_SHARE("vrabg")
- AM_RANGE(0x02000000, 0x020fffff) AM_RAM AM_SHARE("vrafg")
- AM_RANGE(0x03000000, 0x030000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
- AM_RANGE(0x03020000, 0x0302005f) AM_UNMAP // looks like a CRTC of some sort
- AM_RANGE(0x03040000, 0x0304007f) AM_DEVWRITE8("latch1", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x03040080, 0x0304008f) AM_READ_PORT("DSW")
- AM_RANGE(0x03040080, 0x030400ff) AM_DEVWRITE8("latch2", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x03040100, 0x0304010f) AM_READ(analogx_r)
- AM_RANGE(0x03040110, 0x0304011f) AM_READ_PORT("COIN1")
- AM_RANGE(0x03040130, 0x0304013f) AM_READ_PORT("SERVICE2")
- AM_RANGE(0x03040140, 0x0304014f) AM_READ_PORT("COIN3")
- AM_RANGE(0x03040150, 0x0304015f) AM_READ_PORT("BUTTON1")
- AM_RANGE(0x03040160, 0x0304016f) AM_READ_PORT("SERVICE")
- AM_RANGE(0x03040170, 0x0304017f) AM_READ_PORT("SERVICE1")
- AM_RANGE(0x03040100, 0x0304017f) AM_DEVWRITE8("latch3", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x03040180, 0x0304018f) AM_READ(analogy_watchdog_r) AM_WRITENOP
- AM_RANGE(0x03060000, 0x0306000f) AM_DEVWRITE8("dac", dac_byte_interface, write, 0xff00)
- AM_RANGE(0x04000000, 0x057fffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w)
- AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
-ADDRESS_MAP_END
+void xtheball_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().share("nvram");
+ map(0x01000000, 0x010fffff).ram().share("vrabg");
+ map(0x02000000, 0x020fffff).ram().share("vrafg");
+ map(0x03000000, 0x030000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+ map(0x03020000, 0x0302005f).unmaprw(); // looks like a CRTC of some sort
+ map(0x03040000, 0x0304007f).w("latch1", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x03040080, 0x0304008f).portr("DSW");
+ map(0x03040080, 0x030400ff).w("latch2", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x03040100, 0x0304010f).r(this, FUNC(xtheball_state::analogx_r));
+ map(0x03040110, 0x0304011f).portr("COIN1");
+ map(0x03040130, 0x0304013f).portr("SERVICE2");
+ map(0x03040140, 0x0304014f).portr("COIN3");
+ map(0x03040150, 0x0304015f).portr("BUTTON1");
+ map(0x03040160, 0x0304016f).portr("SERVICE");
+ map(0x03040170, 0x0304017f).portr("SERVICE1");
+ map(0x03040100, 0x0304017f).w("latch3", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x03040180, 0x0304018f).r(this, FUNC(xtheball_state::analogy_watchdog_r)).nopw();
+ map(0x03060000, 0x0306000f).w("dac", FUNC(dac_byte_interface::write)).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);
+}
diff --git a/src/mame/drivers/xtom3d.cpp b/src/mame/drivers/xtom3d.cpp
index 9599c7dfe88..8ec5817ac35 100644
--- a/src/mame/drivers/xtom3d.cpp
+++ b/src/mame/drivers/xtom3d.cpp
@@ -351,31 +351,33 @@ WRITE32_MEMBER(xtom3d_state::bios_ram_w)
}
}
-ADDRESS_MAP_START(xtom3d_state::xtom3d_map)
- AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000c3fff) AM_ROMBANK("video_bank1") AM_WRITE(isa_ram1_w)
- AM_RANGE(0x000c4000, 0x000c7fff) AM_ROMBANK("video_bank2") AM_WRITE(isa_ram2_w)
- AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_ext1") AM_WRITE(bios_ext1_ram_w)
- AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_ext2") AM_WRITE(bios_ext2_ram_w)
- AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_ext3") AM_WRITE(bios_ext3_ram_w)
- AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ext4") AM_WRITE(bios_ext4_ram_w)
- AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w)
- AM_RANGE(0x00100000, 0x01ffffff) AM_RAM
- AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xtom3d_state::xtom3d_io)
- AM_IMPORT_FROM(pcat32_io_common)
-
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
-
- AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff)
- AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff)
- AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff)
-
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
-ADDRESS_MAP_END
+void xtom3d_state::xtom3d_map(address_map &map)
+{
+ map(0x00000000, 0x0009ffff).ram();
+ map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w));
+ map(0x000c0000, 0x000c3fff).bankr("video_bank1").w(this, FUNC(xtom3d_state::isa_ram1_w));
+ map(0x000c4000, 0x000c7fff).bankr("video_bank2").w(this, FUNC(xtom3d_state::isa_ram2_w));
+ map(0x000e0000, 0x000e3fff).bankr("bios_ext1").w(this, FUNC(xtom3d_state::bios_ext1_ram_w));
+ map(0x000e4000, 0x000e7fff).bankr("bios_ext2").w(this, FUNC(xtom3d_state::bios_ext2_ram_w));
+ map(0x000e8000, 0x000ebfff).bankr("bios_ext3").w(this, FUNC(xtom3d_state::bios_ext3_ram_w));
+ map(0x000ec000, 0x000effff).bankr("bios_ext4").w(this, FUNC(xtom3d_state::bios_ext4_ram_w));
+ map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(xtom3d_state::bios_ram_w));
+ map(0x00100000, 0x01ffffff).ram();
+ map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */
+}
+
+void xtom3d_state::xtom3d_io(address_map &map)
+{
+ pcat32_io_common(map);
+
+ map(0x00e8, 0x00ef).noprw();
+
+ map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w));
+ map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w));
+ map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w));
+
+ map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write));
+}
void xtom3d_state::machine_start()
diff --git a/src/mame/drivers/xxmissio.cpp b/src/mame/drivers/xxmissio.cpp
index 05107c3b413..c0be4a065a4 100644
--- a/src/mame/drivers/xxmissio.cpp
+++ b/src/mame/drivers/xxmissio.cpp
@@ -90,52 +90,54 @@ void xxmissio_state::machine_start()
/****************************************************************************/
-ADDRESS_MAP_START(xxmissio_state::map1)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+void xxmissio_state::map1(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x8002, 0x8003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
+ map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8002, 0x8003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("STATUS")
- AM_RANGE(0xa002, 0xa002) AM_WRITE(status_m_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(flipscreen_w)
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa001, 0xa001).portr("P2");
+ map(0xa002, 0xa002).portr("STATUS");
+ map(0xa002, 0xa002).w(this, FUNC(xxmissio_state::status_m_w));
+ map(0xa003, 0xa003).w(this, FUNC(xxmissio_state::flipscreen_w));
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("fgram")
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(bgram_r, bgram_w) AM_SHARE("bgram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
+ map(0xc000, 0xc7ff).ram().share("fgram");
+ map(0xc800, 0xcfff).rw(this, FUNC(xxmissio_state::bgram_r), FUNC(xxmissio_state::bgram_w)).share("bgram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
- AM_RANGE(0xd800, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0xd800, 0xdaff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE(0xe000, 0xefff) AM_SHARE("share5") AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_SHARE("share6") AM_RAM
-ADDRESS_MAP_END
+ map(0xe000, 0xefff).share("share5").ram();
+ map(0xf000, 0xffff).share("share6").ram();
+}
-ADDRESS_MAP_START(xxmissio_state::map2)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+void xxmissio_state::map2(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("bank1");
- AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0x8002, 0x8003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0x8006, 0x8006) AM_WRITE(bank_sel_w)
+ map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8002, 0x8003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x8006, 0x8006).w(this, FUNC(xxmissio_state::bank_sel_w));
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("STATUS")
- AM_RANGE(0xa002, 0xa002) AM_WRITE(status_s_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(flipscreen_w)
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa001, 0xa001).portr("P2");
+ map(0xa002, 0xa002).portr("STATUS");
+ map(0xa002, 0xa002).w(this, FUNC(xxmissio_state::status_s_w));
+ map(0xa003, 0xa003).w(this, FUNC(xxmissio_state::flipscreen_w));
- AM_RANGE(0xc000, 0xc7ff) AM_SHARE("fgram") AM_RAM
- AM_RANGE(0xc800, 0xcfff) AM_SHARE("bgram") AM_READWRITE(bgram_r, bgram_w)
- AM_RANGE(0xd000, 0xd7ff) AM_SHARE("spriteram") AM_RAM
+ map(0xc000, 0xc7ff).share("fgram").ram();
+ map(0xc800, 0xcfff).share("bgram").rw(this, FUNC(xxmissio_state::bgram_r), FUNC(xxmissio_state::bgram_w));
+ map(0xd000, 0xd7ff).share("spriteram").ram();
- AM_RANGE(0xd800, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
+ map(0xd800, 0xdaff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
- AM_RANGE(0xe000, 0xefff) AM_SHARE("share6") AM_RAM
- AM_RANGE(0xf000, 0xffff) AM_SHARE("share5") AM_RAM
-ADDRESS_MAP_END
+ map(0xe000, 0xefff).share("share6").ram();
+ map(0xf000, 0xffff).share("share5").ram();
+}
/****************************************************************************/
diff --git a/src/mame/drivers/xybots.cpp b/src/mame/drivers/xybots.cpp
index 855435ebda8..15c25df660f 100644
--- a/src/mame/drivers/xybots.cpp
+++ b/src/mame/drivers/xybots.cpp
@@ -65,26 +65,27 @@ READ16_MEMBER(xybots_state::special_port1_r)
*************************************/
/* full map verified from schematics */
-ADDRESS_MAP_START(xybots_state::main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x007fff) AM_MIRROR(0x7c0000) AM_ROM
- AM_RANGE(0x008000, 0x00ffff) AM_MIRROR(0x7c0000) AM_ROM /* slapstic maps here */
- AM_RANGE(0x010000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM
- AM_RANGE(0x800000, 0x800fff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha")
- AM_RANGE(0x801000, 0x802dff) AM_MIRROR(0x7f8000) AM_RAM
- AM_RANGE(0x802e00, 0x802fff) AM_MIRROR(0x7f8000) AM_RAM AM_SHARE("mob")
- AM_RANGE(0x803000, 0x803fff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield")
- AM_RANGE(0x804000, 0x8047ff) AM_MIRROR(0x7f8800) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x805000, 0x805fff) AM_MIRROR(0x7f8000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
- AM_RANGE(0x806000, 0x8060ff) AM_MIRROR(0x7f8000) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
- AM_RANGE(0x806100, 0x8061ff) AM_MIRROR(0x7f8000) AM_READ_PORT("FFE100")
- AM_RANGE(0x806200, 0x8062ff) AM_MIRROR(0x7f8000) AM_READ(special_port1_r)
- AM_RANGE(0x806800, 0x8068ff) AM_MIRROR(0x7f8000) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16)
- AM_RANGE(0x806900, 0x8069ff) AM_MIRROR(0x7f8000) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff)
- AM_RANGE(0x806a00, 0x806aff) AM_MIRROR(0x7f8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
- AM_RANGE(0x806b00, 0x806bff) AM_MIRROR(0x7f8000) AM_WRITE(video_int_ack_w)
- AM_RANGE(0x806e00, 0x806eff) AM_MIRROR(0x7f8000) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w)
-ADDRESS_MAP_END
+void xybots_state::main_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x007fff).mirror(0x7c0000).rom();
+ map(0x008000, 0x00ffff).mirror(0x7c0000).rom(); /* slapstic maps here */
+ map(0x010000, 0x03ffff).mirror(0x7c0000).rom();
+ map(0x800000, 0x800fff).mirror(0x7f8000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha");
+ map(0x801000, 0x802dff).mirror(0x7f8000).ram();
+ map(0x802e00, 0x802fff).mirror(0x7f8000).ram().share("mob");
+ map(0x803000, 0x803fff).mirror(0x7f8000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield");
+ map(0x804000, 0x8047ff).mirror(0x7f8800).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x805000, 0x805fff).mirror(0x7f8000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff);
+ map(0x806000, 0x8060ff).mirror(0x7f8000).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r)).umask16(0x00ff);
+ map(0x806100, 0x8061ff).mirror(0x7f8000).portr("FFE100");
+ map(0x806200, 0x8062ff).mirror(0x7f8000).r(this, FUNC(xybots_state::special_port1_r));
+ map(0x806800, 0x8068ff).mirror(0x7f8000).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16));
+ map(0x806900, 0x8069ff).mirror(0x7f8000).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w)).umask16(0x00ff);
+ map(0x806a00, 0x806aff).mirror(0x7f8000).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
+ map(0x806b00, 0x806bff).mirror(0x7f8000).w(this, FUNC(xybots_state::video_int_ack_w));
+ map(0x806e00, 0x806eff).mirror(0x7f8000).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w));
+}
diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp
index a22ac8a1297..5da65c3d129 100644
--- a/src/mame/drivers/xyonix.cpp
+++ b/src/mame/drivers/xyonix.cpp
@@ -143,21 +143,23 @@ WRITE8_MEMBER(xyonix_state::io_w)
/* Mem / Port Maps ***********************************************************/
-ADDRESS_MAP_START(xyonix_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("vidram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(xyonix_state::port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x20) AM_READNOP AM_DEVWRITE("sn1", sn76496_device, write) /* SN76496 ready signal */
- AM_RANGE(0x21, 0x21) AM_READNOP AM_DEVWRITE("sn2", sn76496_device, write)
- AM_RANGE(0x40, 0x40) AM_WRITENOP /* NMI ack? */
- AM_RANGE(0x50, 0x50) AM_WRITE(irqack_w)
- AM_RANGE(0x60, 0x61) AM_WRITENOP /* mc6845 */
- AM_RANGE(0xe0, 0xe0) AM_READWRITE(io_r, io_w)
-ADDRESS_MAP_END
+void xyonix_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xffff).ram().w(this, FUNC(xyonix_state::vidram_w)).share("vidram");
+}
+
+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(0x40, 0x40).nopw(); /* NMI ack? */
+ map(0x50, 0x50).w(this, FUNC(xyonix_state::irqack_w));
+ map(0x60, 0x61).nopw(); /* mc6845 */
+ map(0xe0, 0xe0).rw(this, FUNC(xyonix_state::io_r), FUNC(xyonix_state::io_w));
+}
/* Inputs Ports **************************************************************/
diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp
index 277b361c03e..558e3870544 100644
--- a/src/mame/drivers/yiear.cpp
+++ b/src/mame/drivers/yiear.cpp
@@ -138,32 +138,34 @@ INTERRUPT_GEN_MEMBER(yiear_state::yiear_nmi_interrupt)
}
-ADDRESS_MAP_START(yiear_state::main_map)
- AM_RANGE(0x0000, 0x0000) AM_READ(yiear_speech_r)
- AM_RANGE(0x4000, 0x4000) AM_WRITE(yiear_control_w)
- AM_RANGE(0x4800, 0x4800) AM_WRITE(konami_SN76496_latch_w)
- AM_RANGE(0x4900, 0x4900) AM_WRITE(konami_SN76496_w)
- AM_RANGE(0x4a00, 0x4a00) AM_WRITE(yiear_VLM5030_control_w)
- AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0x4c00, 0x4c00) AM_READ_PORT("DSW2")
- AM_RANGE(0x4d00, 0x4d00) AM_READ_PORT("DSW3")
- AM_RANGE(0x4e00, 0x4e00) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x4e01, 0x4e01) AM_READ_PORT("P1")
- AM_RANGE(0x4e02, 0x4e02) AM_READ_PORT("P2")
- AM_RANGE(0x4e03, 0x4e03) AM_READ_PORT("DSW1")
- AM_RANGE(0x4f00, 0x4f00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x5000, 0x5fff) AM_RAM
- AM_RANGE(0x5000, 0x502f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x5400, 0x542f) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x5800, 0x5fff) AM_WRITE(yiear_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(yiear_state::vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
-ADDRESS_MAP_END
+void yiear_state::main_map(address_map &map)
+{
+ map(0x0000, 0x0000).r(this, FUNC(yiear_state::yiear_speech_r));
+ map(0x4000, 0x4000).w(this, FUNC(yiear_state::yiear_control_w));
+ map(0x4800, 0x4800).w(this, FUNC(yiear_state::konami_SN76496_latch_w));
+ map(0x4900, 0x4900).w(this, FUNC(yiear_state::konami_SN76496_w));
+ map(0x4a00, 0x4a00).w(this, FUNC(yiear_state::yiear_VLM5030_control_w));
+ map(0x4b00, 0x4b00).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0x4c00, 0x4c00).portr("DSW2");
+ map(0x4d00, 0x4d00).portr("DSW3");
+ map(0x4e00, 0x4e00).portr("SYSTEM");
+ map(0x4e01, 0x4e01).portr("P1");
+ map(0x4e02, 0x4e02).portr("P2");
+ map(0x4e03, 0x4e03).portr("DSW1");
+ map(0x4f00, 0x4f00).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0x5000, 0x5fff).ram();
+ map(0x5000, 0x502f).ram().share("spriteram");
+ map(0x5400, 0x542f).ram().share("spriteram2");
+ map(0x5800, 0x5fff).w(this, FUNC(yiear_state::yiear_videoram_w)).share("videoram");
+ map(0x8000, 0xffff).rom();
+}
+
+
+void yiear_state::vlm_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x1fff).rom();
+}
static INPUT_PORTS_START( yiear )
diff --git a/src/mame/drivers/ymmu100.cpp b/src/mame/drivers/ymmu100.cpp
index 22167a1727a..a77abfc646e 100644
--- a/src/mame/drivers/ymmu100.cpp
+++ b/src/mame/drivers/ymmu100.cpp
@@ -268,11 +268,12 @@ uint32_t mu100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
-ADDRESS_MAP_START(mu100_state::mu100_map)
- AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x200000, 0x21ffff) AM_RAM // 128K work RAM
- AM_RANGE(0x400000, 0x401fff) AM_READWRITE(snd_r, snd_w)
-ADDRESS_MAP_END
+void mu100_state::mu100_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).rom().region("maincpu", 0);
+ map(0x200000, 0x21ffff).ram(); // 128K work RAM
+ map(0x400000, 0x401fff).rw(this, FUNC(mu100_state::snd_r), FUNC(mu100_state::snd_w));
+}
READ16_MEMBER(mu100_state::snd_r)
{
@@ -418,21 +419,22 @@ WRITE16_MEMBER(mu100_state::pg_w)
logerror("pbsel3 %d\n", data & 1);
}
-ADDRESS_MAP_START(mu100_state::mu100_iomap)
- AM_RANGE(h8_device::PORT_1, h8_device::PORT_1) AM_READWRITE(p1_r, p1_w)
- AM_RANGE(h8_device::PORT_2, h8_device::PORT_2) AM_WRITE(p2_w)
- AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(p3_w)
- AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) AM_WRITE(p5_w)
- AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(p6_r, p6_w)
- AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(pa_r, pa_w)
- AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_WRITE(pf_w)
- AM_RANGE(h8_device::PORT_G, h8_device::PORT_G) AM_WRITE(pg_w)
- AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_READ(adc0_r)
- AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(adc2_r)
- AM_RANGE(h8_device::ADC_4, h8_device::ADC_4) AM_READ(adc4_r)
- AM_RANGE(h8_device::ADC_6, h8_device::ADC_6) AM_READ(adc6_r)
- AM_RANGE(h8_device::ADC_7, h8_device::ADC_7) AM_READ(adc7_r)
-ADDRESS_MAP_END
+void mu100_state::mu100_iomap(address_map &map)
+{
+ map(h8_device::PORT_1, h8_device::PORT_1).rw(this, FUNC(mu100_state::p1_r), FUNC(mu100_state::p1_w));
+ map(h8_device::PORT_2, h8_device::PORT_2).w(this, FUNC(mu100_state::p2_w));
+ map(h8_device::PORT_3, h8_device::PORT_3).w(this, FUNC(mu100_state::p3_w));
+ map(h8_device::PORT_5, h8_device::PORT_5).w(this, FUNC(mu100_state::p5_w));
+ map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(mu100_state::p6_r), FUNC(mu100_state::p6_w));
+ map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(mu100_state::pa_r), FUNC(mu100_state::pa_w));
+ map(h8_device::PORT_F, h8_device::PORT_F).w(this, FUNC(mu100_state::pf_w));
+ map(h8_device::PORT_G, h8_device::PORT_G).w(this, FUNC(mu100_state::pg_w));
+ map(h8_device::ADC_0, h8_device::ADC_0).r(this, FUNC(mu100_state::adc0_r));
+ map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(mu100_state::adc2_r));
+ map(h8_device::ADC_4, h8_device::ADC_4).r(this, FUNC(mu100_state::adc4_r));
+ map(h8_device::ADC_6, h8_device::ADC_6).r(this, FUNC(mu100_state::adc6_r));
+ map(h8_device::ADC_7, h8_device::ADC_7).r(this, FUNC(mu100_state::adc7_r));
+}
MACHINE_CONFIG_START(mu100_state::mu100)
MCFG_CPU_ADD( "maincpu", H8S2655, XTAL(16'000'000) )
diff --git a/src/mame/drivers/yunsun16.cpp b/src/mame/drivers/yunsun16.cpp
index 7c7b418bc8e..df815c20b0d 100644
--- a/src/mame/drivers/yunsun16.cpp
+++ b/src/mame/drivers/yunsun16.cpp
@@ -110,29 +110,30 @@ WRITE8_MEMBER(yunsun16_state::sound_bank_w)
membank("okibank")->set_entry(data & 3);
}
-ADDRESS_MAP_START(yunsun16_state::main_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x800000, 0x800001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1")
- AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2")
- AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? (value: don't care)
- AM_RANGE(0x800100, 0x800101) AM_WRITENOP // ? $9100
- AM_RANGE(0x800102, 0x800103) AM_WRITENOP // ? $9080
- AM_RANGE(0x800104, 0x800105) AM_WRITENOP // ? $90c0
- AM_RANGE(0x80010a, 0x80010b) AM_WRITENOP // ? $9000
- AM_RANGE(0x80010c, 0x80010f) AM_RAM AM_SHARE("scrollram_1") // Scrolling
- AM_RANGE(0x800114, 0x800117) AM_RAM AM_SHARE("scrollram_0") // Scrolling
- AM_RANGE(0x800154, 0x800155) AM_RAM AM_SHARE("priorityram") // Priority
- AM_RANGE(0x800180, 0x800181) AM_WRITE8(sound_bank_w, 0x00ff) // Sound
- AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
- AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // ? 0 (during int)
- AM_RANGE(0x900000, 0x903fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
- AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1
- AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0
- AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xff0000, 0xffffff) AM_RAM
-ADDRESS_MAP_END
+void yunsun16_state::main_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x800000, 0x800001).portr("INPUTS");
+ map(0x800018, 0x800019).portr("SYSTEM");
+ map(0x80001a, 0x80001b).portr("DSW1");
+ map(0x80001c, 0x80001d).portr("DSW2");
+ map(0x800030, 0x800031).nopw(); // ? (value: don't care)
+ map(0x800100, 0x800101).nopw(); // ? $9100
+ map(0x800102, 0x800103).nopw(); // ? $9080
+ map(0x800104, 0x800105).nopw(); // ? $90c0
+ map(0x80010a, 0x80010b).nopw(); // ? $9000
+ map(0x80010c, 0x80010f).ram().share("scrollram_1"); // Scrolling
+ map(0x800114, 0x800117).ram().share("scrollram_0"); // Scrolling
+ map(0x800154, 0x800155).ram().share("priorityram"); // Priority
+ map(0x800181, 0x800181).w(this, FUNC(yunsun16_state::sound_bank_w)); // Sound
+ map(0x800189, 0x800189).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound
+ map(0x8001fe, 0x8001ff).nopw(); // ? 0 (during int)
+ map(0x900000, 0x903fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette
+ map(0x908000, 0x90bfff).ram().w(this, FUNC(yunsun16_state::vram_1_w)).share("vram_1"); // Layer 1
+ map(0x90c000, 0x90ffff).ram().w(this, FUNC(yunsun16_state::vram_0_w)).share("vram_0"); // Layer 0
+ map(0x910000, 0x910fff).ram().share("spriteram"); // Sprites
+ map(0xff0000, 0xffffff).ram();
+}
WRITE16_MEMBER(yunsun16_state::magicbub_sound_command_w)
@@ -165,22 +166,25 @@ DRIVER_INIT_MEMBER(yunsun16_state,magicbub)
***************************************************************************/
-ADDRESS_MAP_START(yunsun16_state::sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(yunsun16_state::sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x18, 0x18) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
- AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(yunsun16_state::oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
- ADDRESS_MAP_END
+void yunsun16_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xe7ff).ram();
+}
+
+void yunsun16_state::sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x11).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x18, 0x18).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU
+ map(0x1c, 0x1c).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295
+}
+
+void yunsun16_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+ }
/***************************************************************************
diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp
index 7539d32ace9..c3d5a91b786 100644
--- a/src/mame/drivers/yunsung8.cpp
+++ b/src/mame/drivers/yunsung8.cpp
@@ -70,25 +70,27 @@ WRITE8_MEMBER(yunsung8_state::main_irq_ack_w)
d000-dfff Tiles ""
*/
-ADDRESS_MAP_START(yunsung8_state::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x0001, 0x0001) AM_WRITE(bankswitch_w) // ROM Bank (again?)
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") // Banked ROM
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(videoram_r, videoram_w) // Video RAM (Banked)
- AM_RANGE(0xe000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void yunsung8_state::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x0001, 0x0001).w(this, FUNC(yunsung8_state::bankswitch_w)); // ROM Bank (again?)
+ map(0x8000, 0xbfff).bankr("mainbank"); // Banked ROM
+ map(0xc000, 0xdfff).rw(this, FUNC(yunsung8_state::videoram_r), FUNC(yunsung8_state::videoram_w)); // Video RAM (Banked)
+ map(0xe000, 0xffff).ram();
+}
-ADDRESS_MAP_START(yunsung8_state::port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(videobank_w) // video RAM bank
- AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(bankswitch_w) // ROM Bank + Layers Enable
- AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
- AM_RANGE(0x06, 0x06) AM_WRITE(flipscreen_w) // Flip Screen
- AM_RANGE(0x07, 0x07) AM_WRITE(main_irq_ack_w)
-ADDRESS_MAP_END
+void yunsung8_state::port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("SYSTEM").w(this, FUNC(yunsung8_state::videobank_w)); // video RAM bank
+ map(0x01, 0x01).portr("P1").w(this, FUNC(yunsung8_state::bankswitch_w)); // ROM Bank + Layers Enable
+ map(0x02, 0x02).portr("P2").w("soundlatch", FUNC(generic_latch_8_device::write)); // To Sound CPU
+ map(0x03, 0x03).portr("DSW1");
+ map(0x04, 0x04).portr("DSW2");
+ map(0x06, 0x06).w(this, FUNC(yunsung8_state::flipscreen_w)); // Flip Screen
+ map(0x07, 0x07).w(this, FUNC(yunsung8_state::main_irq_ack_w));
+}
@@ -112,15 +114,16 @@ WRITE8_MEMBER(yunsung8_state::sound_bankswitch_w)
-ADDRESS_MAP_START(yunsung8_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") // Banked ROM
- AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w) // ROM Bank
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
-ADDRESS_MAP_END
+void yunsung8_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank"); // Banked ROM
+ map(0xe000, 0xe000).w(this, FUNC(yunsung8_state::sound_bankswitch_w)); // ROM Bank
+ map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read)); // From Main CPU
+}
diff --git a/src/mame/drivers/yuvomz80.cpp b/src/mame/drivers/yuvomz80.cpp
index 3d59b2c332d..dd32711be5c 100644
--- a/src/mame/drivers/yuvomz80.cpp
+++ b/src/mame/drivers/yuvomz80.cpp
@@ -59,33 +59,38 @@ private:
required_device<cpu_device> m_maincpu;
};
-ADDRESS_MAP_START(yuvomz80_state::mem_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(yuvomz80_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi0", i8255_device, read, write)
- AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
- AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi3", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(yuvomz80_state::audio_mem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(yuvomz80_state::audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(yuvomz80_state::hexapres_audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+void yuvomz80_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("maincpu", 0);
+ map(0x8000, 0x87ff).ram();
+}
+
+void yuvomz80_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ppi0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x04, 0x07).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x08, 0x0b).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x0c, 0x0f).rw("ppi3", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void yuvomz80_state::audio_mem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audiocpu", 0);
+ map(0x8000, 0x87ff).ram();
+}
+
+void yuvomz80_state::audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+}
+
+void yuvomz80_state::hexapres_audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
static INPUT_PORTS_START( goldhexa )
INPUT_PORTS_END
diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp
index 0404f54a82b..2a55cb3d3d8 100644
--- a/src/mame/drivers/z100.cpp
+++ b/src/mame/drivers/z100.cpp
@@ -308,16 +308,17 @@ WRITE8_MEMBER( z100_state::z100_vram_w )
}
}
-ADDRESS_MAP_START(z100_state::z100_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000,0x3ffff) AM_RAM // 128*2 KB RAM
+void z100_state::z100_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x3ffff).ram(); // 128*2 KB RAM
// AM_RANGE(0xb0000,0xbffff) AM_ROM // expansion ROM
- AM_RANGE(0xc0000,0xeffff) AM_READWRITE(z100_vram_r,z100_vram_w) // Blue / Red / Green
+ map(0xc0000, 0xeffff).rw(this, FUNC(z100_state::z100_vram_r), FUNC(z100_state::z100_vram_w)); // Blue / Red / Green
// AM_RANGE(0xf0000,0xf0fff) // network card (NET-100)
// AM_RANGE(0xf4000,0xf7fff) // MTRET-100 Firmware I expansion ROM
// AM_RANGE(0xf8000,0xfbfff) // MTRET-100 Firmware II expansion ROM check ID 0x4550
- AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("ipl", 0)
-ADDRESS_MAP_END
+ map(0xfc000, 0xfffff).rom().region("ipl", 0);
+}
READ8_MEMBER( z100_state::keyb_data_r )
{
@@ -384,9 +385,10 @@ WRITE8_MEMBER( z100_state::floppy_motor_w )
m_floppy->mon_w(!BIT(data, 1));
}
-ADDRESS_MAP_START(z100_state::z100_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void z100_state::z100_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
// AM_RANGE (0x00, 0x3f) reserved for non-ZDS vendors
// AM_RANGE (0x40, 0x5f) secondary Multiport card (Z-204)
// AM_RANGE (0x60, 0x7f) primary Multiport card (Z-204)
@@ -396,31 +398,31 @@ ADDRESS_MAP_START(z100_state::z100_io)
// AM_RANGE (0xa4, 0xa7) gateway (reserved)
// AM_RANGE (0xac, 0xad) Z-217 secondary disk controller (winchester)
// AM_RANGE (0xae, 0xaf) Z-217 primary disk controller (winchester)
- AM_RANGE (0xb0, 0xb3) AM_DEVREADWRITE("z207_fdc", fd1797_device, read, write)
- AM_RANGE (0xb4, 0xb4) AM_WRITE(floppy_select_w)
- AM_RANGE (0xb5, 0xb5) AM_WRITE(floppy_motor_w)
+ map(0xb0, 0xb3).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write));
+ map(0xb4, 0xb4).w(this, FUNC(z100_state::floppy_select_w));
+ map(0xb5, 0xb5).w(this, FUNC(z100_state::floppy_motor_w));
// z-207 secondary disk controller (wd1797)
// AM_RANGE (0xcd, 0xce) ET-100 CRT Controller
// AM_RANGE (0xd4, 0xd7) ET-100 Trainer Parallel I/O
- AM_RANGE (0xd8, 0xdb) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //video board
- AM_RANGE (0xdc, 0xdc) AM_WRITE(z100_6845_address_w)
- AM_RANGE (0xdd, 0xdd) AM_WRITE(z100_6845_data_w)
+ map(0xd8, 0xdb).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //video board
+ map(0xdc, 0xdc).w(this, FUNC(z100_state::z100_6845_address_w));
+ map(0xdd, 0xdd).w(this, FUNC(z100_state::z100_6845_data_w));
// AM_RANGE (0xde, 0xde) light pen
- AM_RANGE (0xe0, 0xe3) AM_DEVREADWRITE("pia1", pia6821_device, read, 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
// AM_RANGE (0xe8, 0xeb) First 2661-2 serial port (printer)
// AM_RANGE (0xec, 0xef) Second 2661-2 serial port (modem)
- AM_RANGE (0xf0, 0xf1) AM_DEVREADWRITE("pic8259_slave", pic8259_device, read, write)
- AM_RANGE (0xf2, 0xf3) AM_DEVREADWRITE("pic8259_master", pic8259_device, read, write)
- AM_RANGE (0xf4, 0xf4) AM_READ(keyb_data_r) // -> 8041 MCU
- AM_RANGE (0xf5, 0xf5) AM_READWRITE(keyb_status_r,keyb_command_w)
+ 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(this, FUNC(z100_state::keyb_data_r)); // -> 8041 MCU
+ map(0xf5, 0xf5).rw(this, FUNC(z100_state::keyb_status_r), FUNC(z100_state::keyb_command_w));
// AM_RANGE (0xf6, 0xf6) expansion ROM is present (bit 0, active low)
// AM_RANGE (0xfb, 0xfb) timer irq status
// AM_RANGE (0xfc, 0xfc) memory latch
// AM_RANGE (0xfd, 0xfd) Hi-address latch
// AM_RANGE (0xfe, 0xfe) Processor swap port
- AM_RANGE (0xff, 0xff) AM_READ_PORT("DSW101")
-ADDRESS_MAP_END
+ map(0xff, 0xff).portr("DSW101");
+}
INPUT_CHANGED_MEMBER(z100_state::key_stroke)
{
diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp
index f4b4a75dcde..42bdb8a8571 100644
--- a/src/mame/drivers/z1013.cpp
+++ b/src/mame/drivers/z1013.cpp
@@ -93,17 +93,19 @@ private:
/* Address maps */
-ADDRESS_MAP_START(z1013_state::z1013_mem)
- AM_RANGE( 0x0000, 0xebff ) AM_RAM
- AM_RANGE( 0xec00, 0xefff ) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0xf000, 0xffff ) AM_ROM // ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z1013_state::z1013_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
- AM_RANGE( 0x08, 0x08 ) AM_WRITE(z1013_keyboard_w)
-ADDRESS_MAP_END
+void z1013_state::z1013_mem(address_map &map)
+{
+ map(0x0000, 0xebff).ram();
+ map(0xec00, 0xefff).ram().share("videoram");
+ map(0xf000, 0xffff).rom(); // ROM
+}
+
+void z1013_state::z1013_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("z80pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt));
+ map(0x08, 0x08).w(this, FUNC(z1013_state::z1013_keyboard_w));
+}
/* Input ports */
static INPUT_PORTS_START( z1013_8x4 )
diff --git a/src/mame/drivers/z80dev.cpp b/src/mame/drivers/z80dev.cpp
index 0e15f06aa60..8698a50abe8 100644
--- a/src/mame/drivers/z80dev.cpp
+++ b/src/mame/drivers/z80dev.cpp
@@ -56,23 +56,25 @@ READ8_MEMBER( z80dev_state::test_r )
return machine().rand();
}
-ADDRESS_MAP_START(z80dev_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x1000, 0x10ff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80dev_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK (0xff)
- AM_RANGE(0x20, 0x20) AM_READ_PORT("LINE0")
- AM_RANGE(0x21, 0x21) AM_READ_PORT("LINE1")
- AM_RANGE(0x22, 0x22) AM_READ_PORT("LINE2")
- AM_RANGE(0x23, 0x23) AM_READ_PORT("LINE3")
- AM_RANGE(0x20, 0x25) AM_WRITE(display_w)
-
- AM_RANGE(0x13, 0x13) AM_READ(test_r)
-ADDRESS_MAP_END
+void z80dev_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x1000, 0x10ff).ram();
+}
+
+void z80dev_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x20, 0x20).portr("LINE0");
+ map(0x21, 0x21).portr("LINE1");
+ map(0x22, 0x22).portr("LINE2");
+ map(0x23, 0x23).portr("LINE3");
+ map(0x20, 0x25).w(this, FUNC(z80dev_state::display_w));
+
+ map(0x13, 0x13).r(this, FUNC(z80dev_state::test_r));
+}
/* Input ports */
INPUT_PORTS_START( z80dev )
diff --git a/src/mame/drivers/z80ne.cpp b/src/mame/drivers/z80ne.cpp
index 3483dcf2587..db6aa1866c4 100644
--- a/src/mame/drivers/z80ne.cpp
+++ b/src/mame/drivers/z80ne.cpp
@@ -113,67 +113,74 @@
/* LX.382 CPU Board RAM */
/* LX.382 CPU Board EPROM */
-ADDRESS_MAP_START(z80ne_state::z80ne_mem)
- AM_RANGE( 0x0000, 0x03ff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x0400, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0x83ff ) AM_ROMBANK("bank2")
- AM_RANGE( 0x8400, 0xffff ) AM_READNOP AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80ne_state::z80net_mem)
- AM_RANGE( 0x0000, 0x03ff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x0400, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0x83ff ) AM_ROMBANK("bank2")
- AM_RANGE( 0x8400, 0xebff ) AM_RAM
- AM_RANGE( 0xec00, 0xedff ) AM_RAM AM_SHARE("videoram") /* (6847) */
- AM_RANGE( 0xee00, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80ne_state::z80netb_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_ROM
- AM_RANGE( 0x4000, 0xebff ) AM_RAM
- AM_RANGE( 0xec00, 0xedff ) AM_RAM AM_SHARE("videoram") /* (6847) */
- AM_RANGE( 0xee00, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80ne_state::z80ne_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xee, 0xee) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xef, 0xef) AM_READWRITE(lx385_ctrl_r, lx385_ctrl_w )
- AM_RANGE(0xf0, 0xff) AM_READWRITE(lx383_r, lx383_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80ne_state::z80net_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xea, 0xea) AM_READ(lx387_data_r )
- AM_RANGE(0xeb, 0xeb) AM_READ(lx388_read_field_sync )
- AM_RANGE(0xee, 0xee) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xef, 0xef) AM_READWRITE(lx385_ctrl_r, lx385_ctrl_w )
- AM_RANGE(0xf0, 0xff) AM_READWRITE(lx383_r, lx383_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80ne_state::z80netf_mem)
- AM_RANGE( 0x0000, 0x03ff ) AM_RAMBANK("bank1")
- AM_RANGE( 0x0400, 0x3fff ) AM_RAMBANK("bank2")
- AM_RANGE( 0x4000, 0x7fff ) AM_RAM
- AM_RANGE( 0x8000, 0x83ff ) AM_RAMBANK("bank3")
- AM_RANGE( 0x8400, 0xdfff ) AM_RAM
- AM_RANGE( 0xe000, 0xebff ) AM_READNOP AM_WRITENOP
- AM_RANGE( 0xec00, 0xedff ) AM_RAM AM_SHARE("videoram") /* (6847) */
- AM_RANGE( 0xee00, 0xefff ) AM_READNOP AM_WRITENOP
- AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank4")
- AM_RANGE( 0xf400, 0xffff ) AM_READNOP AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z80ne_state::z80netf_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xd0, 0xd7) AM_READWRITE(lx390_fdc_r, lx390_fdc_w)
- AM_RANGE(0xea, 0xea) AM_READ(lx387_data_r )
- AM_RANGE(0xeb, 0xeb) AM_READ(lx388_read_field_sync )
- AM_RANGE(0xee, 0xee) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit)
- AM_RANGE(0xef, 0xef) AM_READWRITE(lx385_ctrl_r, lx385_ctrl_w )
- AM_RANGE(0xf0, 0xff) AM_READWRITE(lx383_r, lx383_w )
-ADDRESS_MAP_END
+void z80ne_state::z80ne_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).bankrw("bank1");
+ map(0x0400, 0x7fff).ram();
+ map(0x8000, 0x83ff).bankr("bank2");
+ map(0x8400, 0xffff).nopr().nopw();
+}
+
+void z80ne_state::z80net_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).bankrw("bank1");
+ map(0x0400, 0x7fff).ram();
+ map(0x8000, 0x83ff).bankr("bank2");
+ map(0x8400, 0xebff).ram();
+ map(0xec00, 0xedff).ram().share("videoram"); /* (6847) */
+ map(0xee00, 0xffff).ram();
+}
+
+void z80ne_state::z80netb_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0xebff).ram();
+ map(0xec00, 0xedff).ram().share("videoram"); /* (6847) */
+ map(0xee00, 0xffff).ram();
+}
+
+void z80ne_state::z80ne_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xee, 0xee).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xef, 0xef).rw(this, FUNC(z80ne_state::lx385_ctrl_r), FUNC(z80ne_state::lx385_ctrl_w));
+ map(0xf0, 0xff).rw(this, FUNC(z80ne_state::lx383_r), FUNC(z80ne_state::lx383_w));
+}
+
+void z80ne_state::z80net_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xea, 0xea).r(this, FUNC(z80ne_state::lx387_data_r));
+ map(0xeb, 0xeb).r(this, FUNC(z80ne_state::lx388_read_field_sync));
+ map(0xee, 0xee).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xef, 0xef).rw(this, FUNC(z80ne_state::lx385_ctrl_r), FUNC(z80ne_state::lx385_ctrl_w));
+ map(0xf0, 0xff).rw(this, FUNC(z80ne_state::lx383_r), FUNC(z80ne_state::lx383_w));
+}
+
+void z80ne_state::z80netf_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).bankrw("bank1");
+ map(0x0400, 0x3fff).bankrw("bank2");
+ map(0x4000, 0x7fff).ram();
+ map(0x8000, 0x83ff).bankrw("bank3");
+ map(0x8400, 0xdfff).ram();
+ map(0xe000, 0xebff).nopr().nopw();
+ map(0xec00, 0xedff).ram().share("videoram"); /* (6847) */
+ map(0xee00, 0xefff).nopr().nopw();
+ map(0xf000, 0xf3ff).bankrw("bank4");
+ map(0xf400, 0xffff).nopr().nopw();
+}
+
+void z80ne_state::z80netf_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xd0, 0xd7).rw(this, FUNC(z80ne_state::lx390_fdc_r), FUNC(z80ne_state::lx390_fdc_w));
+ map(0xea, 0xea).r(this, FUNC(z80ne_state::lx387_data_r));
+ map(0xeb, 0xeb).r(this, FUNC(z80ne_state::lx388_read_field_sync));
+ map(0xee, 0xee).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit));
+ map(0xef, 0xef).rw(this, FUNC(z80ne_state::lx385_ctrl_r), FUNC(z80ne_state::lx385_ctrl_w));
+ map(0xf0, 0xff).rw(this, FUNC(z80ne_state::lx383_r), FUNC(z80ne_state::lx383_w));
+}
diff --git a/src/mame/drivers/z88.cpp b/src/mame/drivers/z88.cpp
index a04e83e9fd0..cdee2567c0e 100644
--- a/src/mame/drivers/z88.cpp
+++ b/src/mame/drivers/z88.cpp
@@ -148,17 +148,19 @@ UPD65031_MEMORY_UPDATE(z88_state::bankswitch_update)
}
-ADDRESS_MAP_START(z88_state::z88_mem)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE_BANK("bank1")
- AM_RANGE(0x2000, 0x3fff) AM_READWRITE_BANK("bank2")
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE_BANK("bank3")
- AM_RANGE(0x8000, 0xbfff) AM_READWRITE_BANK("bank4")
- AM_RANGE(0xc000, 0xffff) AM_READWRITE_BANK("bank5")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z88_state::z88_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("blink", upd65031_device, read, write)
-ADDRESS_MAP_END
+void z88_state::z88_mem(address_map &map)
+{
+ map(0x0000, 0x1fff).bankrw("bank1");
+ map(0x2000, 0x3fff).bankrw("bank2");
+ map(0x4000, 0x7fff).bankrw("bank3");
+ map(0x8000, 0xbfff).bankrw("bank4");
+ map(0xc000, 0xffff).bankrw("bank5");
+}
+
+void z88_state::z88_io(address_map &map)
+{
+ map(0x0000, 0xffff).rw("blink", FUNC(upd65031_device::read), FUNC(upd65031_device::write));
+}
diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp
index 1060157aa10..f11aabb6fdd 100644
--- a/src/mame/drivers/z9001.cpp
+++ b/src/mame/drivers/z9001.cpp
@@ -79,21 +79,23 @@ private:
required_region_ptr<u8> m_p_chargen;
};
-ADDRESS_MAP_START(z9001_state::z9001_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xe7ff ) AM_RAM
- AM_RANGE( 0xe800, 0xebff ) AM_RAM AM_SHARE("colorram")
- AM_RANGE( 0xec00, 0xefff ) AM_RAM AM_SHARE("videoram")
- AM_RANGE( 0xf000, 0xffff ) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(z9001_state::z9001_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_MIRROR(4) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
- AM_RANGE(0x88, 0x8B) AM_MIRROR(4) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write)
- AM_RANGE(0x90, 0x93) AM_MIRROR(4) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write)
-ADDRESS_MAP_END
+void z9001_state::z9001_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xe7ff).ram();
+ map(0xe800, 0xebff).ram().share("colorram");
+ map(0xec00, 0xefff).ram().share("videoram");
+ map(0xf000, 0xffff).rom();
+}
+
+void z9001_state::z9001_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).mirror(4).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x88, 0x8B).mirror(4).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+ map(0x90, 0x93).mirror(4).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
+}
/* Input ports */
static INPUT_PORTS_START( z9001 )
diff --git a/src/mame/drivers/zac2650.cpp b/src/mame/drivers/zac2650.cpp
index f2d913c9e5f..159d99a0493 100644
--- a/src/mame/drivers/zac2650.cpp
+++ b/src/mame/drivers/zac2650.cpp
@@ -25,18 +25,19 @@
/***********************************************************************************************/
-ADDRESS_MAP_START(zac2650_state::main_map)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(tinvader_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x1c00, 0x1cff) AM_RAM
- AM_RANGE(0x1d00, 0x1dff) AM_RAM
- AM_RANGE(0x1e80, 0x1e80) AM_READ(tinvader_port_0_r) AM_WRITE(tinvader_sound_w)
- AM_RANGE(0x1e81, 0x1e81) AM_READ_PORT("1E81")
- AM_RANGE(0x1e82, 0x1e82) AM_READ_PORT("1E82")
- AM_RANGE(0x1e85, 0x1e85) AM_READ_PORT("1E85") /* Dodgem Only */
- AM_RANGE(0x1e86, 0x1e86) AM_READ_PORT("1E86") AM_WRITENOP /* Dodgem Only */
- AM_RANGE(0x1f00, 0x1fff) AM_READWRITE(zac_s2636_r, zac_s2636_w) AM_SHARE("s2636_0_ram")
-ADDRESS_MAP_END
+void zac2650_state::main_map(address_map &map)
+{
+ map(0x0000, 0x17ff).rom();
+ map(0x1800, 0x1bff).ram().w(this, FUNC(zac2650_state::tinvader_videoram_w)).share("videoram");
+ map(0x1c00, 0x1cff).ram();
+ map(0x1d00, 0x1dff).ram();
+ map(0x1e80, 0x1e80).r(this, FUNC(zac2650_state::tinvader_port_0_r)).w(this, FUNC(zac2650_state::tinvader_sound_w));
+ map(0x1e81, 0x1e81).portr("1E81");
+ map(0x1e82, 0x1e82).portr("1E82");
+ map(0x1e85, 0x1e85).portr("1E85"); /* Dodgem Only */
+ map(0x1e86, 0x1e86).portr("1E86").nopw(); /* Dodgem Only */
+ map(0x1f00, 0x1fff).rw(this, FUNC(zac2650_state::zac_s2636_r), FUNC(zac2650_state::zac_s2636_w)).share("s2636_0_ram");
+}
static INPUT_PORTS_START( tinvader )
PORT_START("1E80")
diff --git a/src/mame/drivers/zac_1.cpp b/src/mame/drivers/zac_1.cpp
index 3046ee11297..128017046b7 100644
--- a/src/mame/drivers/zac_1.cpp
+++ b/src/mame/drivers/zac_1.cpp
@@ -76,22 +76,25 @@ private:
};
-ADDRESS_MAP_START(zac_1_state::zac_1_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x13ff) AM_ROM
- AM_RANGE(0x1400, 0x17ff) AM_WRITE(reset_int_w)
- AM_RANGE(0x1800, 0x18ff) AM_MIRROR(0x300) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1c00, 0x1fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zac_1_state::zac_1_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zac_1_state::zac_1_data)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w)
-ADDRESS_MAP_END
+void zac_1_state::zac_1_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x13ff).rom();
+ map(0x1400, 0x17ff).w(this, FUNC(zac_1_state::reset_int_w));
+ map(0x1800, 0x18ff).mirror(0x300).ram().share("ram");
+ map(0x1c00, 0x1fff).rom();
+}
+
+void zac_1_state::zac_1_io(address_map &map)
+{
+ map.unmap_value_high();
+}
+
+void zac_1_state::zac_1_data(address_map &map)
+{
+ map.unmap_value_high();
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(zac_1_state::ctrl_r), FUNC(zac_1_state::ctrl_w));
+}
static INPUT_PORTS_START( zac_1 )
PORT_START("TEST")
@@ -277,21 +280,24 @@ MACHINE_CONFIG_END
/*************************** LOCOMOTION ********************************/
-ADDRESS_MAP_START(zac_1_state::locomotp_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fff)
- AM_RANGE(0x0000, 0x17ff) AM_ROM
- AM_RANGE(0x1800, 0x18ff) AM_MIRROR(0x300) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x1c00, 0x1fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zac_1_state::locomotp_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zac_1_state::locomotp_data)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(reset_int_r)
-ADDRESS_MAP_END
+void zac_1_state::locomotp_map(address_map &map)
+{
+ map.global_mask(0x1fff);
+ map(0x0000, 0x17ff).rom();
+ map(0x1800, 0x18ff).mirror(0x300).ram().share("ram");
+ map(0x1c00, 0x1fff).rom();
+}
+
+void zac_1_state::locomotp_io(address_map &map)
+{
+ map.unmap_value_high();
+}
+
+void zac_1_state::locomotp_data(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(zac_1_state::ctrl_r), FUNC(zac_1_state::ctrl_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(zac_1_state::reset_int_r));
+}
READ8_MEMBER( zac_1_state::reset_int_r )
{
diff --git a/src/mame/drivers/zac_2.cpp b/src/mame/drivers/zac_2.cpp
index 06df184004c..19ee625eab9 100644
--- a/src/mame/drivers/zac_2.cpp
+++ b/src/mame/drivers/zac_2.cpp
@@ -52,24 +52,27 @@ private:
};
-ADDRESS_MAP_START(zac_2_state::zac_2_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x0800, 0x17ff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6400) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x2000, 0x27ff) AM_ROM
- AM_RANGE(0x2800, 0x37ff) AM_MIRROR(0x4000) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_ROM
- AM_RANGE(0x6000, 0x67ff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zac_2_state::zac_2_io)
- ADDRESS_MAP_UNMAP_HIGH
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zac_2_state::zac_2_data)
- AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w)
- AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(data_r,data_w)
-ADDRESS_MAP_END
+void zac_2_state::zac_2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0x17ff).mirror(0x4000).rom();
+ map(0x1800, 0x1bff).mirror(0x6400).ram().share("ram");
+ map(0x2000, 0x27ff).rom();
+ map(0x2800, 0x37ff).mirror(0x4000).rom();
+ map(0x4000, 0x47ff).rom();
+ map(0x6000, 0x67ff).rom();
+}
+
+void zac_2_state::zac_2_io(address_map &map)
+{
+ map.unmap_value_high();
+}
+
+void zac_2_state::zac_2_data(address_map &map)
+{
+ map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(zac_2_state::ctrl_r), FUNC(zac_2_state::ctrl_w));
+ map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(zac_2_state::data_r), FUNC(zac_2_state::data_w));
+}
static INPUT_PORTS_START( zac_2 )
PORT_START("DSW")
diff --git a/src/mame/drivers/zac_proto.cpp b/src/mame/drivers/zac_proto.cpp
index 649e3b9cd21..b8dd01d2382 100644
--- a/src/mame/drivers/zac_proto.cpp
+++ b/src/mame/drivers/zac_proto.cpp
@@ -45,23 +45,24 @@ private:
};
-ADDRESS_MAP_START(zac_proto_state::zac_proto_map)
- AM_RANGE(0x0000, 0x0bff) AM_ROM
- AM_RANGE(0x0d00, 0x0dff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x0e00, 0x0e00) AM_READ_PORT("PL0")
- AM_RANGE(0x0e01, 0x0e01) AM_READ_PORT("PL1")
- AM_RANGE(0x0e02, 0x0e02) AM_READ_PORT("PL2")
- AM_RANGE(0x0e03, 0x0e03) AM_READ_PORT("PL3")
- AM_RANGE(0x0e04, 0x0e04) AM_READ_PORT("PL4")
- AM_RANGE(0x0e05, 0x0e05) AM_READ_PORT("PL5")
- AM_RANGE(0x0e06, 0x0e06) AM_READ_PORT("PL6")
- AM_RANGE(0x0e07, 0x0e07) AM_READ_PORT("PL7")
- AM_RANGE(0x0e00, 0x0e01) AM_WRITE(out0_w)
- AM_RANGE(0x0e02, 0x0e06) AM_WRITE(digit_w)
- AM_RANGE(0x0e07, 0x0e08) AM_WRITE(sound_w)
- AM_RANGE(0x0e09, 0x0e16) AM_WRITE(out1_w)
- AM_RANGE(0x1400, 0x1bff) AM_ROM
-ADDRESS_MAP_END
+void zac_proto_state::zac_proto_map(address_map &map)
+{
+ map(0x0000, 0x0bff).rom();
+ map(0x0d00, 0x0dff).ram().share("nvram");
+ map(0x0e00, 0x0e00).portr("PL0");
+ map(0x0e01, 0x0e01).portr("PL1");
+ map(0x0e02, 0x0e02).portr("PL2");
+ map(0x0e03, 0x0e03).portr("PL3");
+ map(0x0e04, 0x0e04).portr("PL4");
+ map(0x0e05, 0x0e05).portr("PL5");
+ map(0x0e06, 0x0e06).portr("PL6");
+ map(0x0e07, 0x0e07).portr("PL7");
+ map(0x0e00, 0x0e01).w(this, FUNC(zac_proto_state::out0_w));
+ map(0x0e02, 0x0e06).w(this, FUNC(zac_proto_state::digit_w));
+ map(0x0e07, 0x0e08).w(this, FUNC(zac_proto_state::sound_w));
+ map(0x0e09, 0x0e16).w(this, FUNC(zac_proto_state::out1_w));
+ map(0x1400, 0x1bff).rom();
+}
static INPUT_PORTS_START( zac_proto )
// playfield inputs
diff --git a/src/mame/drivers/zaccaria.cpp b/src/mame/drivers/zaccaria.cpp
index 18f21fd0e1e..49c033c1888 100644
--- a/src/mame/drivers/zaccaria.cpp
+++ b/src/mame/drivers/zaccaria.cpp
@@ -145,21 +145,22 @@ WRITE_LINE_MEMBER(zaccaria_state::nmi_mask_w)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
-ADDRESS_MAP_START(zaccaria_state::main_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_READONLY
- AM_RANGE(0x6400, 0x6407) AM_READ(prot1_r)
- AM_RANGE(0x6000, 0x67ff) AM_WRITE(videoram_w) AM_SHARE("videoram") /* 6400-67ff is 4 bits wide */
- AM_RANGE(0x6800, 0x683f) AM_WRITE(attributes_w) AM_SHARE("attributesram")
- AM_RANGE(0x6840, 0x685f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x6881, 0x68c0) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x6c00, 0x6c07) AM_MIRROR(0x81f8) AM_READ(prot2_r) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0x6e00, 0x6e00) AM_MIRROR(0x81f8) AM_READ(dsw_r) AM_DEVWRITE("audiopcb", zac1b11142_audio_device, hs_w)
- AM_RANGE(0x7000, 0x77ff) AM_RAM
- AM_RANGE(0x7800, 0x7803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0x7c00, 0x7c00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x8000, 0xdfff) AM_ROM
-ADDRESS_MAP_END
+void zaccaria_state::main_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x63ff).readonly();
+ map(0x6400, 0x6407).r(this, FUNC(zaccaria_state::prot1_r));
+ map(0x6000, 0x67ff).w(this, FUNC(zaccaria_state::videoram_w)).share("videoram"); /* 6400-67ff is 4 bits wide */
+ map(0x6800, 0x683f).w(this, FUNC(zaccaria_state::attributes_w)).share("attributesram");
+ map(0x6840, 0x685f).ram().share("spriteram");
+ map(0x6881, 0x68c0).ram().share("spriteram2");
+ map(0x6c00, 0x6c07).mirror(0x81f8).r(this, FUNC(zaccaria_state::prot2_r)).w("mainlatch", FUNC(ls259_device::write_d0));
+ map(0x6e00, 0x6e00).mirror(0x81f8).r(this, FUNC(zaccaria_state::dsw_r)).w(m_audiopcb, FUNC(zac1b11142_audio_device::hs_w));
+ map(0x7000, 0x77ff).ram();
+ map(0x7800, 0x7803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x7c00, 0x7c00).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x8000, 0xdfff).rom();
+}
static INPUT_PORTS_START( monymony )
diff --git a/src/mame/drivers/zapcomputer.cpp b/src/mame/drivers/zapcomputer.cpp
index c22a270a112..b5301eeba90 100644
--- a/src/mame/drivers/zapcomputer.cpp
+++ b/src/mame/drivers/zapcomputer.cpp
@@ -112,23 +112,25 @@ READ8_MEMBER( zapcomp_state::keyboard_r )
return retval;
}
-ADDRESS_MAP_START(zapcomp_state::zapcomp_mem)
- AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("roms", 0) /* system monitor */
- AM_RANGE(0x0400, 0x07ff) AM_RAM /* mandatory 1 kilobyte bank #0 */
- AM_RANGE(0x0800, 0x0bff) AM_RAM /* extra 1 kilobyte bank #1 (optional) */
- AM_RANGE(0x0c00, 0x0fff) AM_RAM /* extra 1 kilobyte bank #2 (optional) */
- AM_RANGE(0x1000, 0x13ff) AM_RAM /* extra 1 kilobyte bank #3 (optional) */
- AM_RANGE(0x1400, 0x17ff) AM_RAM /* extra 1 kilobyte bank #4 (optional) */
- AM_RANGE(0x1800, 0x1bff) AM_RAM /* extra 1 kilobyte bank #5 (optional) */
- AM_RANGE(0x1c00, 0x1fff) AM_RAM /* extra 1 kilobyte bank #6 (optional) */
- AM_RANGE(0x2000, 0x23ff) AM_RAM /* extra 1 kilobyte bank #7 (optional) */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zapcomp_state::zapcomp_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(keyboard_r)
- AM_RANGE(0x05, 0x07) AM_WRITE(display_7seg_w)
-ADDRESS_MAP_END
+void zapcomp_state::zapcomp_mem(address_map &map)
+{
+ map(0x0000, 0x03ff).rom().region("roms", 0); /* system monitor */
+ map(0x0400, 0x07ff).ram(); /* mandatory 1 kilobyte bank #0 */
+ map(0x0800, 0x0bff).ram(); /* extra 1 kilobyte bank #1 (optional) */
+ map(0x0c00, 0x0fff).ram(); /* extra 1 kilobyte bank #2 (optional) */
+ map(0x1000, 0x13ff).ram(); /* extra 1 kilobyte bank #3 (optional) */
+ map(0x1400, 0x17ff).ram(); /* extra 1 kilobyte bank #4 (optional) */
+ map(0x1800, 0x1bff).ram(); /* extra 1 kilobyte bank #5 (optional) */
+ map(0x1c00, 0x1fff).ram(); /* extra 1 kilobyte bank #6 (optional) */
+ map(0x2000, 0x23ff).ram(); /* extra 1 kilobyte bank #7 (optional) */
+}
+
+void zapcomp_state::zapcomp_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(zapcomp_state::keyboard_r));
+ map(0x05, 0x07).w(this, FUNC(zapcomp_state::display_7seg_w));
+}
static INPUT_PORTS_START( zapcomp )
PORT_START("X0")
diff --git a/src/mame/drivers/zaurus.cpp b/src/mame/drivers/zaurus.cpp
index 8007d621066..f1e82c02271 100644
--- a/src/mame/drivers/zaurus.cpp
+++ b/src/mame/drivers/zaurus.cpp
@@ -1712,13 +1712,14 @@ WRITE32_MEMBER(zaurus_state::pxa255_rtc_w)
}
-ADDRESS_MAP_START(zaurus_state::zaurus_map)
- AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_REGION("firmware", 0)
- AM_RANGE(0x40900000, 0x4090000f) AM_READWRITE(pxa255_rtc_r,pxa255_rtc_w)
- AM_RANGE(0x40a00000, 0x40a0001f) AM_READWRITE(pxa255_ostimer_r, pxa255_ostimer_w )
- AM_RANGE(0x40d00000, 0x40d00017) AM_READWRITE(pxa255_intc_r, pxa255_intc_w )
- AM_RANGE(0xa0000000, 0xa07fffff) AM_RAM AM_SHARE("ram")
-ADDRESS_MAP_END
+void zaurus_state::zaurus_map(address_map &map)
+{
+ map(0x00000000, 0x001fffff).ram().region("firmware", 0);
+ map(0x40900000, 0x4090000f).rw(this, FUNC(zaurus_state::pxa255_rtc_r), FUNC(zaurus_state::pxa255_rtc_w));
+ map(0x40a00000, 0x40a0001f).rw(this, FUNC(zaurus_state::pxa255_ostimer_r), FUNC(zaurus_state::pxa255_ostimer_w));
+ map(0x40d00000, 0x40d00017).rw(this, FUNC(zaurus_state::pxa255_intc_r), FUNC(zaurus_state::pxa255_intc_w));
+ map(0xa0000000, 0xa07fffff).ram().share("ram");
+}
static INPUT_PORTS_START( zaurus )
diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp
index 4e5b412a7ad..ec5341605b4 100644
--- a/src/mame/drivers/zaxxon.cpp
+++ b/src/mame/drivers/zaxxon.cpp
@@ -436,69 +436,74 @@ CUSTOM_INPUT_MEMBER(zaxxon_state::zaxxon_coin_r)
*************************************/
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(zaxxon_state::zaxxon_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM_WRITE(zaxxon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x1f00) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x18fc) AM_READ_PORT("SW00")
- AM_RANGE(0xc001, 0xc001) AM_MIRROR(0x18fc) AM_READ_PORT("SW01")
- AM_RANGE(0xc002, 0xc002) AM_MIRROR(0x18fc) AM_READ_PORT("DSW02")
- AM_RANGE(0xc003, 0xc003) AM_MIRROR(0x18fc) AM_READ_PORT("DSW03")
- AM_RANGE(0xc100, 0xc100) AM_MIRROR(0x18ff) AM_READ_PORT("SW100")
- AM_RANGE(0xc000, 0xc007) AM_MIRROR(0x18f8) AM_DEVWRITE("mainlatch1", ls259_device, write_d0)
- AM_RANGE(0xe03c, 0xe03f) AM_MIRROR(0x1f00) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0xe0f0, 0xe0f3) AM_MIRROR(0x1f00) AM_SELECT(0x0008) AM_WRITE(zaxxon_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zaxxon_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
+void zaxxon_state::zaxxon_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x8000, 0x83ff).mirror(0x1c00).ram().w(this, FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram");
+ map(0xa000, 0xa0ff).mirror(0x1f00).ram().share("spriteram");
+ map(0xc000, 0xc000).mirror(0x18fc).portr("SW00");
+ map(0xc001, 0xc001).mirror(0x18fc).portr("SW01");
+ map(0xc002, 0xc002).mirror(0x18fc).portr("DSW02");
+ map(0xc003, 0xc003).mirror(0x18fc).portr("DSW03");
+ map(0xc100, 0xc100).mirror(0x18ff).portr("SW100");
+ map(0xc000, 0xc007).mirror(0x18f8).w("mainlatch1", FUNC(ls259_device::write_d0));
+ map(0xe03c, 0xe03f).mirror(0x1f00).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xe0f0, 0xe0f3).mirror(0x1f00).select(0x0008).w(this, FUNC(zaxxon_state::zaxxon_control_w));
+}
+
+void zaxxon_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().share("decrypted_opcodes");
+}
/* derived from Zaxxon, different sound hardware */
-ADDRESS_MAP_START(zaxxon_state::ixion_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM_WRITE(zaxxon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x1f00) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x18fc) AM_READ_PORT("SW00")
- AM_RANGE(0xc001, 0xc001) AM_MIRROR(0x18fc) AM_READ_PORT("SW01")
- AM_RANGE(0xc002, 0xc002) AM_MIRROR(0x18fc) AM_READ_PORT("DSW02")
- AM_RANGE(0xc003, 0xc003) AM_MIRROR(0x18fc) AM_READ_PORT("DSW03")
- AM_RANGE(0xc100, 0xc100) AM_MIRROR(0x18ff) AM_READ_PORT("SW100")
- AM_RANGE(0xc000, 0xc007) AM_MIRROR(0x18f8) AM_DEVWRITE("mainlatch1", ls259_device, write_d0)
- AM_RANGE(0xe03c, 0xe03c) AM_MIRROR(0x1f00) AM_DEVREADWRITE("usbsnd", usb_sound_device, status_r, data_w)
- AM_RANGE(0xe0f0, 0xe0f3) AM_MIRROR(0x1f00) AM_SELECT(0x0008) AM_WRITE(zaxxon_control_w)
-ADDRESS_MAP_END
+void zaxxon_state::ixion_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x8000, 0x83ff).mirror(0x1c00).ram().w(this, FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram");
+ map(0xa000, 0xa0ff).mirror(0x1f00).ram().share("spriteram");
+ map(0xc000, 0xc000).mirror(0x18fc).portr("SW00");
+ map(0xc001, 0xc001).mirror(0x18fc).portr("SW01");
+ map(0xc002, 0xc002).mirror(0x18fc).portr("DSW02");
+ map(0xc003, 0xc003).mirror(0x18fc).portr("DSW03");
+ map(0xc100, 0xc100).mirror(0x18ff).portr("SW100");
+ map(0xc000, 0xc007).mirror(0x18f8).w("mainlatch1", FUNC(ls259_device::write_d0));
+ map(0xe03c, 0xe03c).mirror(0x1f00).rw("usbsnd", FUNC(usb_sound_device::status_r), FUNC(usb_sound_device::data_w));
+ map(0xe0f0, 0xe0f3).mirror(0x1f00).select(0x0008).w(this, FUNC(zaxxon_state::zaxxon_control_w));
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(zaxxon_state::congo_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x1800) AM_RAM_WRITE(zaxxon_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xa400, 0xa7ff) AM_MIRROR(0x1800) AM_RAM_WRITE(congo_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc4) AM_READ_PORT("SW00")
- AM_RANGE(0xc001, 0xc001) AM_MIRROR(0x1fc4) AM_READ_PORT("SW01")
- AM_RANGE(0xc002, 0xc002) AM_MIRROR(0x1fc4) AM_READ_PORT("DSW02")
- AM_RANGE(0xc003, 0xc003) AM_MIRROR(0x1fc4) AM_READ_PORT("DSW03")
- AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("SW100")
- AM_RANGE(0xc018, 0xc01f) AM_MIRROR(0x1fc0) AM_DEVWRITE("mainlatch1", ls259_device, write_d0)
- AM_RANGE(0xc020, 0xc027) AM_MIRROR(0x1fc0) AM_DEVWRITE("mainlatch2", ls259_device, write_d0)
- AM_RANGE(0xc028, 0xc029) AM_MIRROR(0x1fc4) AM_WRITE(bg_position_w)
- AM_RANGE(0xc030, 0xc033) AM_MIRROR(0x1fc4) AM_WRITE(congo_sprite_custom_w)
- AM_RANGE(0xc038, 0xc03f) AM_MIRROR(0x1fc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
-ADDRESS_MAP_END
+void zaxxon_state::congo_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0xa000, 0xa3ff).mirror(0x1800).ram().w(this, FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram");
+ map(0xa400, 0xa7ff).mirror(0x1800).ram().w(this, FUNC(zaxxon_state::congo_colorram_w)).share("colorram");
+ map(0xc000, 0xc000).mirror(0x1fc4).portr("SW00");
+ map(0xc001, 0xc001).mirror(0x1fc4).portr("SW01");
+ map(0xc002, 0xc002).mirror(0x1fc4).portr("DSW02");
+ map(0xc003, 0xc003).mirror(0x1fc4).portr("DSW03");
+ map(0xc008, 0xc008).mirror(0x1fc7).portr("SW100");
+ map(0xc018, 0xc01f).mirror(0x1fc0).w("mainlatch1", FUNC(ls259_device::write_d0));
+ map(0xc020, 0xc027).mirror(0x1fc0).w("mainlatch2", FUNC(ls259_device::write_d0));
+ map(0xc028, 0xc029).mirror(0x1fc4).w(this, FUNC(zaxxon_state::bg_position_w));
+ map(0xc030, 0xc033).mirror(0x1fc4).w(this, FUNC(zaxxon_state::congo_sprite_custom_w));
+ map(0xc038, 0xc03f).mirror(0x1fc0).w("soundlatch", FUNC(generic_latch_8_device::write));
+}
/* complete memory map derived from schematics */
-ADDRESS_MAP_START(zaxxon_state::congo_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x1800) AM_RAM
- AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn1", sn76489a_device, write)
- AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn2", sn76489a_device, write)
-ADDRESS_MAP_END
+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(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));
+}
diff --git a/src/mame/drivers/zerozone.cpp b/src/mame/drivers/zerozone.cpp
index cf847204585..ed64826346f 100644
--- a/src/mame/drivers/zerozone.cpp
+++ b/src/mame/drivers/zerozone.cpp
@@ -49,27 +49,29 @@ WRITE16_MEMBER( zerozone_state::sound_w )
}
-ADDRESS_MAP_START(zerozone_state::main_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("INPUTS")
- AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSWB")
- AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSWA")
- AM_RANGE(0x084000, 0x084001) AM_WRITE(sound_w)
- AM_RANGE(0x088000, 0x0881ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x098000, 0x098001) AM_RAM /* Watchdog? */
- AM_RANGE(0x09ce00, 0x09ffff) AM_RAM_WRITE(tilemap_w) AM_SHARE("videoram")
- AM_RANGE(0x0b4000, 0x0b4001) AM_WRITE(tilebank_w)
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM
- AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM /* Never read from */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zerozone_state::sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void zerozone_state::main_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x080000, 0x080001).portr("SYSTEM");
+ map(0x080002, 0x080003).portr("INPUTS");
+ map(0x080008, 0x080009).portr("DSWB");
+ map(0x08000a, 0x08000b).portr("DSWA");
+ map(0x084000, 0x084001).w(this, FUNC(zerozone_state::sound_w));
+ map(0x088000, 0x0881ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x098000, 0x098001).ram(); /* Watchdog? */
+ map(0x09ce00, 0x09ffff).ram().w(this, FUNC(zerozone_state::tilemap_w)).share("videoram");
+ map(0x0b4000, 0x0b4001).w(this, FUNC(zerozone_state::tilebank_w));
+ map(0x0c0000, 0x0cffff).ram();
+ map(0x0f8000, 0x0f87ff).ram(); /* Never read from */
+}
+
+void zerozone_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( zerozone )
diff --git a/src/mame/drivers/zexall.cpp b/src/mame/drivers/zexall.cpp
index fdaf71b0868..e47cb7642ba 100644
--- a/src/mame/drivers/zexall.cpp
+++ b/src/mame/drivers/zexall.cpp
@@ -136,12 +136,13 @@ WRITE8_MEMBER( zexall_state::output_data_w )
Address Maps
******************************************************************************/
-ADDRESS_MAP_START(zexall_state::z80_mem)
- AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("main_ram")
- AM_RANGE(0xfffd, 0xfffd) AM_READWRITE(output_ack_r, output_ack_w)
- AM_RANGE(0xfffe, 0xfffe) AM_READWRITE(output_req_r, output_req_w)
- AM_RANGE(0xffff, 0xffff) AM_READWRITE(output_data_r, output_data_w)
-ADDRESS_MAP_END
+void zexall_state::z80_mem(address_map &map)
+{
+ map(0x0000, 0xffff).ram().share("main_ram");
+ map(0xfffd, 0xfffd).rw(this, FUNC(zexall_state::output_ack_r), FUNC(zexall_state::output_ack_w));
+ map(0xfffe, 0xfffe).rw(this, FUNC(zexall_state::output_req_r), FUNC(zexall_state::output_req_w));
+ map(0xffff, 0xffff).rw(this, FUNC(zexall_state::output_data_r), FUNC(zexall_state::output_data_w));
+}
/******************************************************************************
diff --git a/src/mame/drivers/zms8085.cpp b/src/mame/drivers/zms8085.cpp
index 6f367efdbfd..ebbfcf1c20b 100644
--- a/src/mame/drivers/zms8085.cpp
+++ b/src/mame/drivers/zms8085.cpp
@@ -87,17 +87,19 @@ READ8_MEMBER(zms8085_state::uart_status_r)
}
-ADDRESS_MAP_START(zms8085_state::mem_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP
- AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("mainram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zms8085_state::io_map)
- AM_RANGE(0x61, 0x61) AM_READ(special_r) AM_DEVWRITE("uart", ay51013_device, transmit)
- AM_RANGE(0x62, 0x62) AM_DEVREAD("uart", ay51013_device, receive)
- AM_RANGE(0x63, 0x63) AM_READ(uart_status_r)
- AM_RANGE(0x68, 0x68) AM_WRITENOP
-ADDRESS_MAP_END
+void zms8085_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().region("maincpu", 0).nopw();
+ map(0x1000, 0x1fff).ram().share("mainram");
+}
+
+void zms8085_state::io_map(address_map &map)
+{
+ map(0x61, 0x61).r(this, FUNC(zms8085_state::special_r)).w(m_uart, FUNC(ay51013_device::transmit));
+ map(0x62, 0x62).r(m_uart, FUNC(ay51013_device::receive));
+ map(0x63, 0x63).r(this, FUNC(zms8085_state::uart_status_r));
+ map(0x68, 0x68).nopw();
+}
static INPUT_PORTS_START( zephyr )
diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp
index 21316c400e4..54bbd44e76e 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -357,22 +357,23 @@ WRITE8_MEMBER(zn_state::coin_w)
}
}
-ADDRESS_MAP_START(zn_state::zn_map)
- AM_RANGE(0x1fa00000, 0x1fa00003) AM_READ_PORT("P1")
- AM_RANGE(0x1fa00100, 0x1fa00103) AM_READ_PORT("P2")
- AM_RANGE(0x1fa00200, 0x1fa00203) AM_READ_PORT("SERVICE")
- AM_RANGE(0x1fa00300, 0x1fa00303) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x1fa10000, 0x1fa10003) AM_READ_PORT("P3")
- AM_RANGE(0x1fa10100, 0x1fa10103) AM_READ_PORT("P4")
- AM_RANGE(0x1fa10200, 0x1fa10203) AM_READ8(boardconfig_r, 0x000000ff)
- AM_RANGE(0x1fa10300, 0x1fa10303) AM_READWRITE8(znsecsel_r, znsecsel_w, 0x000000ff)
- AM_RANGE(0x1fa20000, 0x1fa20003) AM_WRITE8(coin_w, 0x000000ff)
- AM_RANGE(0x1fa30000, 0x1fa30003) AM_NOP /* ?? */
- AM_RANGE(0x1fa40000, 0x1fa40003) AM_READNOP /* ?? */
- AM_RANGE(0x1fa60000, 0x1fa60003) AM_READNOP /* ?? */
- AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */
- AM_RANGE(0x1fb20000, 0x1fb20007) AM_READ16(unknown_r, 0xffffffff)
-ADDRESS_MAP_END
+void zn_state::zn_map(address_map &map)
+{
+ map(0x1fa00000, 0x1fa00003).portr("P1");
+ map(0x1fa00100, 0x1fa00103).portr("P2");
+ map(0x1fa00200, 0x1fa00203).portr("SERVICE");
+ map(0x1fa00300, 0x1fa00303).portr("SYSTEM");
+ map(0x1fa10000, 0x1fa10003).portr("P3");
+ map(0x1fa10100, 0x1fa10103).portr("P4");
+ map(0x1fa10200, 0x1fa10200).r(this, FUNC(zn_state::boardconfig_r));
+ map(0x1fa10300, 0x1fa10300).rw(this, FUNC(zn_state::znsecsel_r), FUNC(zn_state::znsecsel_w));
+ map(0x1fa20000, 0x1fa20000).w(this, FUNC(zn_state::coin_w));
+ map(0x1fa30000, 0x1fa30003).noprw(); /* ?? */
+ map(0x1fa40000, 0x1fa40003).nopr(); /* ?? */
+ map(0x1fa60000, 0x1fa60003).nopr(); /* ?? */
+ map(0x1faf0000, 0x1faf07ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)); /* eeprom */
+ map(0x1fb20000, 0x1fb20007).r(this, FUNC(zn_state::unknown_r));
+}
MACHINE_CONFIG_START(zn_state::zn1_1mb_vram)
@@ -597,17 +598,18 @@ INTERRUPT_GEN_MEMBER(zn_state::qsound_interrupt)
device.execute().set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(zn_state::coh1000c_map)
- AM_IMPORT_FROM(zn_map)
-
- AM_RANGE(0x1f000000, 0x1f3fffff) AM_ROM AM_REGION("bankedroms", 0)
- AM_RANGE(0x1f400000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(bank_coh1000c_w, 0x000000ff)
- AM_RANGE(0x1fb40010, 0x1fb40013) AM_READ16(capcom_kickharness_r, 0x0000ffff)
- AM_RANGE(0x1fb40020, 0x1fb40023) AM_READ16(capcom_kickharness_r, 0x0000ffff)
- AM_RANGE(0x1fb80000, 0x1fbfffff) AM_ROM AM_REGION("countryrom", 0)
- AM_RANGE(0x1fb60000, 0x1fb60003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
-ADDRESS_MAP_END
+void zn_state::coh1000c_map(address_map &map)
+{
+ zn_map(map);
+
+ map(0x1f000000, 0x1f3fffff).rom().region("bankedroms", 0);
+ map(0x1f400000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fb00000, 0x1fb00000).w(this, FUNC(zn_state::bank_coh1000c_w));
+ map(0x1fb40010, 0x1fb40011).r(this, FUNC(zn_state::capcom_kickharness_r));
+ map(0x1fb40020, 0x1fb40021).r(this, FUNC(zn_state::capcom_kickharness_r));
+ map(0x1fb80000, 0x1fbfffff).rom().region("countryrom", 0);
+ map(0x1fb60000, 0x1fb60000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+}
MACHINE_START_MEMBER(zn_state,coh1000c)
{
@@ -627,19 +629,21 @@ MACHINE_RESET_MEMBER(zn_state,glpracr)
MACHINE_RESET_CALL_MEMBER(coh1000c);
}
-ADDRESS_MAP_START(zn_state::qsound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") /* banked (contains music data) */
- AM_RANGE(0xd000, 0xd002) AM_DEVWRITE("qsound", qsound_device, qsound_w)
- AM_RANGE(0xd003, 0xd003) AM_WRITE(qsound_bankswitch_w)
- AM_RANGE(0xd007, 0xd007) AM_DEVREAD("qsound", qsound_device, qsound_r)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void zn_state::qsound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank"); /* banked (contains music data) */
+ map(0xd000, 0xd002).w("qsound", FUNC(qsound_device::qsound_w));
+ map(0xd003, 0xd003).w(this, FUNC(zn_state::qsound_bankswitch_w));
+ map(0xd007, 0xd007).r("qsound", FUNC(qsound_device::qsound_r));
+ map(0xf000, 0xffff).ram();
+}
-ADDRESS_MAP_START(zn_state::qsound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void zn_state::qsound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
MACHINE_CONFIG_START(zn_state::coh1000c)
zn1_1mb_vram(config);
@@ -1084,14 +1088,15 @@ WRITE8_MEMBER(zn_state::fx1a_sound_bankswitch_w)
m_soundbank->set_entry( ( data - 1 ) & 0x07 );
}
-ADDRESS_MAP_START(zn_state::coh1000ta_map)
- AM_IMPORT_FROM(zn_map)
+void zn_state::coh1000ta_map(address_map &map)
+{
+ zn_map(map);
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fb40000, 0x1fb40003) AM_WRITE8(bank_coh1000t_w, 0x000000ff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x000000ff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff0000)
-ADDRESS_MAP_END
+ map(0x1f000000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fb40000, 0x1fb40000).w(this, FUNC(zn_state::bank_coh1000t_w));
+ map(0x1fb80000, 0x1fb80000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x1fb80002, 0x1fb80002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+}
MACHINE_START_MEMBER(zn_state,coh1000ta)
{
@@ -1107,18 +1112,19 @@ MACHINE_RESET_MEMBER(zn_state,coh1000ta)
m_soundbank->set_entry( 0 );
}
-ADDRESS_MAP_START(zn_state::fx1a_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xee00, 0xee00) AM_NOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(fx1a_sound_bankswitch_w)
-ADDRESS_MAP_END
+void zn_state::fx1a_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("soundbank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xee00, 0xee00).noprw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(zn_state::fx1a_sound_bankswitch_w));
+}
MACHINE_CONFIG_START(zn_state::coh1000ta)
@@ -1156,17 +1162,18 @@ READ8_MEMBER(zn_state::fx1b_fram_r)
return m_fx1b_fram[offset];
}
-ADDRESS_MAP_START(zn_state::coh1000tb_map)
- AM_IMPORT_FROM(zn_map)
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fb00000, 0x1fb003ff) AM_READWRITE8(fx1b_fram_r, fx1b_fram_w, 0x00ff00ff)
- AM_RANGE(0x1fb40000, 0x1fb40003) AM_WRITE8(bank_coh1000t_w, 0x000000ff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_data_w, 0x0000ffff)
- AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_address_w, 0xffff0000)
- AM_RANGE(0x1fba0000, 0x1fba0003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, sound_irq_w, 0x0000ffff)
- AM_RANGE(0x1fbc0000, 0x1fbc0003) AM_DEVREAD16("taito_zoom", taito_zoom_device, sound_irq_r, 0x0000ffff)
- AM_RANGE(0x1fbe0000, 0x1fbe01ff) AM_DEVREADWRITE8("taito_zoom", taito_zoom_device, shared_ram_r, shared_ram_w, 0x00ff00ff) // M66220FP for comm with the MN10200
-ADDRESS_MAP_END
+void zn_state::coh1000tb_map(address_map &map)
+{
+ zn_map(map);
+ map(0x1f000000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fb00000, 0x1fb003ff).rw(this, FUNC(zn_state::fx1b_fram_r), FUNC(zn_state::fx1b_fram_w)).umask32(0x00ff00ff);
+ map(0x1fb40000, 0x1fb40000).w(this, FUNC(zn_state::bank_coh1000t_w));
+ map(0x1fb80000, 0x1fb80001).w(m_zoom, FUNC(taito_zoom_device::reg_data_w));
+ map(0x1fb80002, 0x1fb80003).w(m_zoom, FUNC(taito_zoom_device::reg_address_w));
+ map(0x1fba0000, 0x1fba0001).w(m_zoom, FUNC(taito_zoom_device::sound_irq_w));
+ map(0x1fbc0000, 0x1fbc0001).r(m_zoom, FUNC(taito_zoom_device::sound_irq_r));
+ map(0x1fbe0000, 0x1fbe01ff).rw(m_zoom, FUNC(taito_zoom_device::shared_ram_r), FUNC(taito_zoom_device::shared_ram_w)).umask32(0x00ff00ff); // M66220FP for comm with the MN10200
+}
DRIVER_INIT_MEMBER(zn_state,coh1000tb)
{
@@ -1436,14 +1443,15 @@ DRIVER_INIT_MEMBER(zn_state,primrag2)
save_item(NAME(m_vt83c461_latch));
}
-ADDRESS_MAP_START(zn_state::coh1000w_map)
- AM_IMPORT_FROM(zn_map)
- AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x1f000000, 0x1f000003) AM_WRITENOP
- AM_RANGE(0x1f7e8000, 0x1f7e8003) AM_NOP
- AM_RANGE(0x1f7e4000, 0x1f7e4fff) AM_READWRITE16(vt83c461_16_r, vt83c461_16_w, 0xffffffff)
- AM_RANGE(0x1f7f4000, 0x1f7f4fff) AM_READWRITE16(vt83c461_32_r, vt83c461_32_w, 0xffffffff)
-ADDRESS_MAP_END
+void zn_state::coh1000w_map(address_map &map)
+{
+ zn_map(map);
+ map(0x1f000000, 0x1f1fffff).rom().region("roms", 0);
+ map(0x1f000000, 0x1f000003).nopw();
+ map(0x1f7e8000, 0x1f7e8003).noprw();
+ map(0x1f7e4000, 0x1f7e4fff).rw(this, FUNC(zn_state::vt83c461_16_r), FUNC(zn_state::vt83c461_16_w));
+ map(0x1f7f4000, 0x1f7f4fff).rw(this, FUNC(zn_state::vt83c461_32_r), FUNC(zn_state::vt83c461_32_w));
+}
MACHINE_CONFIG_START(zn_state::coh1000w)
zn1_2mb_vram(config);
@@ -1619,14 +1627,15 @@ WRITE8_MEMBER(zn_state::coh1002e_sound_irq_w)
m_audiocpu->set_input_line(2, HOLD_LINE); // irq 2 on the 68k
}
-ADDRESS_MAP_START(zn_state::coh1002e_map)
- AM_IMPORT_FROM(zn_map)
+void zn_state::coh1002e_map(address_map &map)
+{
+ zn_map(map);
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fa10300, 0x1fa10303) AM_WRITE8(coh1002e_bank_w, 0x000000ff)
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
- AM_RANGE(0x1fb00004, 0x1fb00007) AM_WRITE8(coh1002e_sound_irq_w, 0x000000ff)
-ADDRESS_MAP_END
+ map(0x1f000000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fa10300, 0x1fa10300).w(this, FUNC(zn_state::coh1002e_bank_w));
+ map(0x1fb00000, 0x1fb00000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x1fb00004, 0x1fb00004).w(this, FUNC(zn_state::coh1002e_sound_irq_w));
+}
MACHINE_START_MEMBER(zn_state,coh1002e)
{
@@ -1642,23 +1651,26 @@ MACHINE_RESET_MEMBER(zn_state,coh1002e)
m_okibank->set_entry( 0 );
}
-ADDRESS_MAP_START(zn_state::psarc_snd_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x0fffff) AM_RAM
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("ymf", ymf271_device, read, write, 0x00ff )
- AM_RANGE(0x180008, 0x180009) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff )
- AM_RANGE(0x000000, 0x07ffff) AM_WRITENOP
- AM_RANGE(0x100020, 0xffffff) AM_WRITENOP
-ADDRESS_MAP_END
+void zn_state::psarc_snd_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x0fffff).ram();
+ map(0x100000, 0x10001f).rw("ymf", FUNC(ymf271_device::read), FUNC(ymf271_device::write)).umask16(0x00ff);
+ map(0x180009, 0x180009).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x000000, 0x07ffff).nopw();
+ map(0x100020, 0xffffff).nopw();
+}
-ADDRESS_MAP_START(zn_state::beastrzrb_snd_map) // Internal ROM Not dumped
+void zn_state::beastrzrb_snd_map(address_map &map)
+{ // Internal ROM Not dumped
// AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(zn_state::oki_map)
- AM_RANGE(0x00000, 0x2ffff) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void zn_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr("okibank");
+}
MACHINE_CONFIG_START(zn_state::coh1002e)
zn1_2mb_vram(config);
@@ -1791,14 +1803,15 @@ READ16_MEMBER(zn_state::bam2_unk_r)
return 0;
}
-ADDRESS_MAP_START(zn_state::bam2_map)
- AM_IMPORT_FROM(zn_map)
+void zn_state::bam2_map(address_map &map)
+{
+ zn_map(map);
- AM_RANGE(0x1f000000, 0x1f3fffff) AM_ROM AM_REGION("bankedroms", 0)
- AM_RANGE(0x1f400000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fa20000, 0x1fa20003) AM_READ16(bam2_unk_r, 0x0000ffff)
- AM_RANGE(0x1fb00000, 0x1fb00007) AM_READWRITE16(bam2_mcu_r, bam2_mcu_w, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x1f000000, 0x1f3fffff).rom().region("bankedroms", 0);
+ map(0x1f400000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fa20000, 0x1fa20001).r(this, FUNC(zn_state::bam2_unk_r));
+ map(0x1fb00000, 0x1fb00007).rw(this, FUNC(zn_state::bam2_mcu_r), FUNC(zn_state::bam2_mcu_w));
+}
DRIVER_INIT_MEMBER(zn_state,bam2)
{
@@ -2101,27 +2114,30 @@ WRITE8_MEMBER(zn_state::nbajamex_backup_w)
-ADDRESS_MAP_START(zn_state::coh1000a_map)
- AM_IMPORT_FROM(zn_map)
- AM_RANGE(0x1fbfff00, 0x1fbfff03) AM_WRITE16(acpsx_00_w, 0xffffffff)
- AM_RANGE(0x1fbfff10, 0x1fbfff13) AM_WRITE16(acpsx_10_w, 0xffff0000)
-ADDRESS_MAP_END
+void zn_state::coh1000a_map(address_map &map)
+{
+ zn_map(map);
+ map(0x1fbfff00, 0x1fbfff03).w(this, FUNC(zn_state::acpsx_00_w));
+ map(0x1fbfff12, 0x1fbfff13).w(this, FUNC(zn_state::acpsx_10_w));
+}
-ADDRESS_MAP_START(zn_state::nbajamex_map)
- AM_IMPORT_FROM(coh1000a_map)
+void zn_state::nbajamex_map(address_map &map)
+{
+ coh1000a_map(map);
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_DEVICE("nbajamex_bankmap", address_map_bank_device, amap32)
- AM_RANGE(0x1fbfff00, 0x1fbfff07) AM_WRITE16(nbajamex_bank_w, 0xffffffff)
- AM_RANGE(0x1fbfff08, 0x1fbfff0b) AM_READ16(nbajamex_08_r, 0xffff)
- AM_RANGE(0x1fbfff80, 0x1fbfff83) AM_READWRITE16(nbajamex_80_r, nbajamex_80_w, 0xffff)
-ADDRESS_MAP_END
+ map(0x1f000000, 0x1f7fffff).m(m_nbajamex_bankmap, FUNC(address_map_bank_device::amap32));
+ map(0x1fbfff00, 0x1fbfff07).w(this, FUNC(zn_state::nbajamex_bank_w));
+ map(0x1fbfff08, 0x1fbfff09).r(this, FUNC(zn_state::nbajamex_08_r));
+ map(0x1fbfff80, 0x1fbfff81).rw(this, FUNC(zn_state::nbajamex_80_r), FUNC(zn_state::nbajamex_80_w));
+}
-ADDRESS_MAP_START(zn_state::nbajamex_bank_map)
- AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x800000) AM_ROMBANK("rombank1")
- AM_RANGE(0x200000, 0x207fff) AM_MIRROR(0x800000) AM_WRITE8(nbajamex_backup_w, 0xffffffff)
- AM_RANGE(0x200000, 0x207fff) AM_ROMBANK("sram")
- AM_RANGE(0xa00000, 0xffffff) AM_ROMBANK("rombank2")
-ADDRESS_MAP_END
+void zn_state::nbajamex_bank_map(address_map &map)
+{
+ map(0x000000, 0x1fffff).mirror(0x800000).bankr("rombank1");
+ map(0x200000, 0x207fff).mirror(0x800000).w(this, FUNC(zn_state::nbajamex_backup_w));
+ map(0x200000, 0x207fff).bankr("sram");
+ map(0xa00000, 0xffffff).bankr("rombank2");
+}
DRIVER_INIT_MEMBER(zn_state,nbajamex)
{
@@ -2153,13 +2169,14 @@ DRIVER_INIT_MEMBER(zn_state,jdredd)
save_item(NAME(m_jdredd_gun_mux));
}
-ADDRESS_MAP_START(zn_state::jdredd_map)
- AM_IMPORT_FROM(coh1000a_map)
+void zn_state::jdredd_map(address_map &map)
+{
+ coh1000a_map(map);
- AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x1fbfff80, 0x1fbfff8f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff)
- AM_RANGE(0x1fbfff90, 0x1fbfff9f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
-ADDRESS_MAP_END
+ map(0x1f000000, 0x1f1fffff).rom().region("roms", 0);
+ map(0x1fbfff80, 0x1fbfff8f).rw("ata", FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1));
+ map(0x1fbfff90, 0x1fbfff9f).rw("ata", FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0));
+}
MACHINE_CONFIG_START(zn_state::coh1000a)
zn1_2mb_vram(config);
@@ -2327,13 +2344,14 @@ WRITE8_MEMBER(zn_state::coh1001l_bank_w)
m_rombank[0]->set_entry( data & 3 );
}
-ADDRESS_MAP_START(zn_state::coh1001l_map)
- AM_IMPORT_FROM(zn_map)
+void zn_state::coh1001l_map(address_map &map)
+{
+ zn_map(map);
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE16("soundlatch16", generic_latch_16_device, write, 0x0000ffff)
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(coh1001l_bank_w, 0x00ff0000)
-ADDRESS_MAP_END
+ map(0x1f000000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fb00000, 0x1fb00001).w(m_soundlatch16, FUNC(generic_latch_16_device::write));
+ map(0x1fb00002, 0x1fb00002).w(this, FUNC(zn_state::coh1001l_bank_w));
+}
MACHINE_START_MEMBER(zn_state,coh1001l)
{
@@ -2345,12 +2363,13 @@ MACHINE_RESET_MEMBER(zn_state,coh1001l)
m_rombank[0]->set_entry( 0 );
}
-ADDRESS_MAP_START(zn_state::atlus_snd_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_DEVREAD("soundlatch16", generic_latch_16_device, read) AM_WRITE(coh1001l_sound_unk_w)
- AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff)
- AM_RANGE(0x700000, 0x70ffff) AM_RAM
-ADDRESS_MAP_END
+void zn_state::atlus_snd_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x100001).r(m_soundlatch16, FUNC(generic_latch_16_device::read)).w(this, FUNC(zn_state::coh1001l_sound_unk_w));
+ map(0x200000, 0x200003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff);
+ map(0x700000, 0x70ffff).ram();
+}
MACHINE_CONFIG_START(zn_state::coh1001l)
@@ -2391,12 +2410,13 @@ WRITE8_MEMBER(zn_state::coh1002v_bank_w)
m_rombank[0]->set_entry( data );
}
-ADDRESS_MAP_START(zn_state::coh1002v_map)
- AM_IMPORT_FROM(zn_map)
- AM_RANGE(0x1f000000, 0x1f27ffff) AM_ROM AM_REGION("fixedroms", 0)
- AM_RANGE(0x1fb00000, 0x1fbfffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(coh1002v_bank_w, 0x000000ff)
-ADDRESS_MAP_END
+void zn_state::coh1002v_map(address_map &map)
+{
+ zn_map(map);
+ map(0x1f000000, 0x1f27ffff).rom().region("fixedroms", 0);
+ map(0x1fb00000, 0x1fbfffff).bankr("rombank1");
+ map(0x1fb00000, 0x1fb00000).w(this, FUNC(zn_state::coh1002v_bank_w));
+}
MACHINE_START_MEMBER(zn_state,coh1002v)
{
@@ -2581,11 +2601,12 @@ WRITE8_MEMBER(zn_state::coh1002m_bank_w)
m_rombank[0]->set_entry( data );
}
-ADDRESS_MAP_START(zn_state::coh1002m_map)
- AM_IMPORT_FROM(zn_map)
- AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1")
- AM_RANGE(0x1fb00004, 0x1fb00007) AM_WRITE8(coh1002m_bank_w, 0x00ff0000)
-ADDRESS_MAP_END
+void zn_state::coh1002m_map(address_map &map)
+{
+ zn_map(map);
+ map(0x1f000000, 0x1f7fffff).bankr("rombank1");
+ map(0x1fb00006, 0x1fb00006).w(this, FUNC(zn_state::coh1002m_bank_w));
+}
MACHINE_START_MEMBER(zn_state,coh1002m)
{
@@ -2612,12 +2633,13 @@ READ8_MEMBER(zn_state::cbaj_sound_main_status_r)
return m_cbaj_fifo[1]->ef_r() << 1;
}
-ADDRESS_MAP_START(zn_state::coh1002msnd_map)
- AM_IMPORT_FROM(coh1002m_map)
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVREAD8("cbaj_fifo2", fifo7200_device, data_byte_r, 0x000000ff)
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE8("cbaj_fifo1", fifo7200_device, data_byte_w, 0x000000ff)
- AM_RANGE(0x1fb00000, 0x1fb00003) AM_READ8(cbaj_sound_main_status_r, 0xff000000)
-ADDRESS_MAP_END
+void zn_state::coh1002msnd_map(address_map &map)
+{
+ coh1002m_map(map);
+ map(0x1fb00000, 0x1fb00000).r("cbaj_fifo2", FUNC(fifo7200_device::data_byte_r));
+ map(0x1fb00000, 0x1fb00000).w("cbaj_fifo1", FUNC(fifo7200_device::data_byte_w));
+ map(0x1fb00003, 0x1fb00003).r(this, FUNC(zn_state::cbaj_sound_main_status_r));
+}
READ8_MEMBER(zn_state::cbaj_sound_z80_status_r)
{
@@ -2625,27 +2647,31 @@ READ8_MEMBER(zn_state::cbaj_sound_z80_status_r)
return m_cbaj_fifo[0]->ef_r() << 1;
}
-ADDRESS_MAP_START(zn_state::cbaj_z80_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zn_state::cbaj_z80_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x84, 0x85) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
- AM_RANGE(0x90, 0x90) AM_DEVREAD("cbaj_fifo1", fifo7200_device, data_byte_r)
- AM_RANGE(0x90, 0x90) AM_DEVWRITE("cbaj_fifo2", fifo7200_device, data_byte_w)
- AM_RANGE(0x91, 0x91) AM_READ(cbaj_sound_z80_status_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zn_state::coh1002ml_link_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zn_state::coh1002ml_link_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void zn_state::cbaj_z80_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).ram();
+}
+
+void zn_state::cbaj_z80_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x84, 0x85).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+ map(0x90, 0x90).r("cbaj_fifo1", FUNC(fifo7200_device::data_byte_r));
+ map(0x90, 0x90).w("cbaj_fifo2", FUNC(fifo7200_device::data_byte_w));
+ map(0x91, 0x91).r(this, FUNC(zn_state::cbaj_sound_z80_status_r));
+}
+
+void zn_state::coh1002ml_link_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xffff).ram();
+}
+
+void zn_state::coh1002ml_link_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+}
MACHINE_CONFIG_START(zn_state::coh1002msnd)
coh1002m(config);
diff --git a/src/mame/drivers/zodiack.cpp b/src/mame/drivers/zodiack.cpp
index 38c2f17b55c..f35cdc9dd73 100644
--- a/src/mame/drivers/zodiack.cpp
+++ b/src/mame/drivers/zodiack.cpp
@@ -147,37 +147,40 @@ WRITE8_MEMBER( zodiack_state::control_w )
}
-ADDRESS_MAP_START(zodiack_state::main_map)
- AM_RANGE(0x0000, 0x4fff) AM_ROM
- AM_RANGE(0x5800, 0x5fff) AM_RAM
- AM_RANGE(0x6081, 0x6081) AM_READ_PORT("DSW0") AM_WRITE(control_w)
- AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1")
- AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN0")
- AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN1")
- AM_RANGE(0x6090, 0x6090) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(master_soundlatch_w)
- AM_RANGE(0x7000, 0x7000) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* NOP??? */
- AM_RANGE(0x7100, 0x7100) AM_WRITE(nmi_mask_w)
- AM_RANGE(0x7200, 0x7200) AM_WRITE(flipscreen_w)
- AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(attributes_w) AM_SHARE("attributeram")
- AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram")
- AM_RANGE(0x9080, 0x93ff) AM_RAM
- AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram_2")
- AM_RANGE(0xc000, 0xcfff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zodiack_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x4000, 0x4000) AM_WRITE(sound_nmi_enable_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zodiack_state::io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void zodiack_state::main_map(address_map &map)
+{
+ map(0x0000, 0x4fff).rom();
+ map(0x5800, 0x5fff).ram();
+ map(0x6081, 0x6081).portr("DSW0").w(this, FUNC(zodiack_state::control_w));
+ map(0x6082, 0x6082).portr("DSW1");
+ map(0x6083, 0x6083).portr("IN0");
+ map(0x6084, 0x6084).portr("IN1");
+ map(0x6090, 0x6090).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(zodiack_state::master_soundlatch_w));
+ map(0x7000, 0x7000).nopr().w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* NOP??? */
+ map(0x7100, 0x7100).w(this, FUNC(zodiack_state::nmi_mask_w));
+ map(0x7200, 0x7200).w(this, FUNC(zodiack_state::flipscreen_w));
+ map(0x9000, 0x903f).ram().w(this, FUNC(zodiack_state::attributes_w)).share("attributeram");
+ map(0x9040, 0x905f).ram().share("spriteram");
+ map(0x9060, 0x907f).ram().share("bulletsram");
+ map(0x9080, 0x93ff).ram();
+ map(0xa000, 0xa3ff).ram().w(this, FUNC(zodiack_state::videoram_w)).share("videoram");
+ map(0xb000, 0xb3ff).ram().w(this, FUNC(zodiack_state::videoram2_w)).share("videoram_2");
+ map(0xc000, 0xcfff).rom();
+}
+
+void zodiack_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x4000, 0x4000).w(this, FUNC(zodiack_state::sound_nmi_enable_w));
+ map(0x6000, 0x6000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write));
+}
+
+void zodiack_state::io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
diff --git a/src/mame/drivers/zorba.cpp b/src/mame/drivers/zorba.cpp
index fd9ff169411..8eed437a14f 100644
--- a/src/mame/drivers/zorba.cpp
+++ b/src/mame/drivers/zorba.cpp
@@ -71,30 +71,32 @@ ToDo:
#include "speaker.h"
-ADDRESS_MAP_START(zorba_state::zorba_mem)
- AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
- AM_RANGE( 0x4000, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(zorba_state::zorba_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write)
- AM_RANGE(0x04, 0x04) AM_READWRITE(rom_r, rom_w)
- AM_RANGE(0x05, 0x05) AM_READWRITE(ram_r, ram_w)
- AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("crtc", i8275_device, read, write)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("uart0", i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("uart0", i8251_device, status_r, control_w)
- AM_RANGE(0x22, 0x22) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w)
- AM_RANGE(0x23, 0x23) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w)
- AM_RANGE(0x24, 0x24) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w)
- AM_RANGE(0x25, 0x25) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w)
- AM_RANGE(0x26, 0x26) AM_WRITE(intmask_w)
- AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("dma", z80dma_device, read, write)
- AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("fdc", fd1793_device, read, write)
- AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
- AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
-ADDRESS_MAP_END
+void zorba_state::zorba_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0");
+ map(0x4000, 0xffff).ram();
+}
+
+
+void zorba_state::zorba_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write));
+ map(0x04, 0x04).rw(this, FUNC(zorba_state::rom_r), FUNC(zorba_state::rom_w));
+ map(0x05, 0x05).rw(this, FUNC(zorba_state::ram_r), FUNC(zorba_state::ram_w));
+ map(0x10, 0x11).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write));
+ map(0x20, 0x20).rw(m_uart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).rw(m_uart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x22, 0x22).rw(m_uart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x23, 0x23).rw(m_uart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x24, 0x24).rw(m_uart2, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x25, 0x25).rw(m_uart2, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x26, 0x26).w(this, FUNC(zorba_state::intmask_w));
+ map(0x30, 0x30).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write));
+ map(0x40, 0x43).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write));
+ map(0x50, 0x53).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x60, 0x63).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+}
namespace {
diff --git a/src/mame/drivers/zr107.cpp b/src/mame/drivers/zr107.cpp
index fe43a736f8c..eb69c691dbc 100644
--- a/src/mame/drivers/zr107.cpp
+++ b/src/mame/drivers/zr107.cpp
@@ -476,24 +476,25 @@ void zr107_state::machine_start()
m_maincpu->ppcdrc_add_fastram(0x00000000, 0x000fffff, false, m_workram);
}
-ADDRESS_MAP_START(zr107_state::zr107_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("workram") /* Work RAM */
- AM_RANGE(0x74000000, 0x74003fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w)
- AM_RANGE(0x74020000, 0x7402003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w)
- AM_RANGE(0x74060000, 0x7406003f) AM_READWRITE(ccu_r, ccu_w)
- AM_RANGE(0x74080000, 0x74081fff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram")
- AM_RANGE(0x740a0000, 0x740a3fff) AM_DEVREAD("k056832", k056832_device, rom_long_r)
- AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */
- AM_RANGE(0x78010000, 0x7801ffff) AM_DEVWRITE("konppc", konppc_device, cgboard_dsp_shared_w_ppc)
- AM_RANGE(0x78040000, 0x7804000f) AM_DEVREADWRITE("k001006_1", k001006_device, read, write)
- AM_RANGE(0x780c0000, 0x780c0007) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
- AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
- AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff) /* LANC registers */
- AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */
- AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
+void zr107_state::zr107_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram().share("workram"); /* Work RAM */
+ map(0x74000000, 0x74003fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w));
+ map(0x74020000, 0x7402003f).rw(m_k056832, FUNC(k056832_device::long_r), FUNC(k056832_device::long_w));
+ map(0x74060000, 0x7406003f).rw(this, FUNC(zr107_state::ccu_r), FUNC(zr107_state::ccu_w));
+ map(0x74080000, 0x74081fff).ram().w(this, FUNC(zr107_state::paletteram32_w)).share("paletteram");
+ map(0x740a0000, 0x740a3fff).r(m_k056832, FUNC(k056832_device::rom_long_r));
+ map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); /* 21N 21K 23N 23K */
+ map(0x78010000, 0x7801ffff).w(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
+ map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write));
+ map(0x780c0000, 0x780c0007).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
+ map(0x7e000000, 0x7e003fff).rw(this, FUNC(zr107_state::sysreg_r), FUNC(zr107_state::sysreg_w));
+ map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); /* LANC registers */
+ map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); /* LANC Buffer RAM (27E) */
+ map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x7f800000, 0x7f9fffff).rom().share("share2");
+ map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
+}
WRITE32_MEMBER(zr107_state::jetwave_palette_w)
@@ -503,25 +504,26 @@ WRITE32_MEMBER(zr107_state::jetwave_palette_w)
m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
-ADDRESS_MAP_START(zr107_state::jetwave_map)
- AM_RANGE(0x00000000, 0x000fffff) AM_RAM /* Work RAM */
- AM_RANGE(0x74000000, 0x740000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w)
- AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(jetwave_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x74020000, 0x7403ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w)
- AM_RANGE(0x74040000, 0x7407ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w)
- AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */
- AM_RANGE(0x78010000, 0x7801ffff) AM_DEVWRITE("konppc", konppc_device, cgboard_dsp_shared_w_ppc)
- AM_RANGE(0x78040000, 0x7804000f) AM_DEVREADWRITE("k001006_1", k001006_device, read, write)
- AM_RANGE(0x78080000, 0x7808000f) AM_DEVREADWRITE("k001006_2", k001006_device, read, write)
- AM_RANGE(0x780c0000, 0x780c0007) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
- AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
- AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff) /* LANC registers */
- AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */
- AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff)
- AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2")
- AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
-ADDRESS_MAP_END
+void zr107_state::jetwave_map(address_map &map)
+{
+ map(0x00000000, 0x000fffff).ram(); /* Work RAM */
+ map(0x74000000, 0x740000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w));
+ map(0x74010000, 0x7401ffff).ram().w(this, FUNC(zr107_state::jetwave_palette_w)).share("paletteram");
+ map(0x74020000, 0x7403ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w));
+ map(0x74040000, 0x7407ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w));
+ map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); /* 21N 21K 23N 23K */
+ map(0x78010000, 0x7801ffff).w(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_w_ppc));
+ map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write));
+ map(0x78080000, 0x7808000f).rw(m_k001006_2, FUNC(k001006_device::read), FUNC(k001006_device::write));
+ map(0x780c0000, 0x780c0007).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc));
+ map(0x7e000000, 0x7e003fff).rw(this, FUNC(zr107_state::sysreg_r), FUNC(zr107_state::sysreg_w));
+ map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); /* LANC registers */
+ map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); /* LANC Buffer RAM (27E) */
+ map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w));
+ map(0x7f000000, 0x7f3fffff).rom().region("user2", 0);
+ map(0x7f800000, 0x7f9fffff).rom().share("share2");
+ map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */
+}
@@ -538,19 +540,21 @@ WRITE16_MEMBER(zr107_state::sound_ctrl_w)
}
}
-ADDRESS_MAP_START(zr107_state::sound_memmap)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x100000, 0x103fff) AM_RAM /* Work RAM */
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00)
- AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff)
- AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff)
- AM_RANGE(0x500000, 0x500001) AM_WRITE(sound_ctrl_w)
- AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET
-ADDRESS_MAP_END
+void zr107_state::sound_memmap(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x100000, 0x103fff).ram(); /* Work RAM */
+ map(0x200000, 0x2004ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00);
+ map(0x200000, 0x2004ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff);
+ map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff);
+ map(0x500000, 0x500001).w(this, FUNC(zr107_state::sound_ctrl_w));
+ map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET
+}
-ADDRESS_MAP_START(zr107_state::k054539_map)
- AM_RANGE(0x000000, 0x5fffff) AM_ROM AM_REGION("k054539", 0)
-ADDRESS_MAP_END
+void zr107_state::k054539_map(address_map &map)
+{
+ map(0x000000, 0x5fffff).rom().region("k054539", 0);
+}
/*****************************************************************************/
@@ -565,12 +569,13 @@ WRITE32_MEMBER(zr107_state::dsp_dataram_w)
m_sharc_dataram[offset] = data;
}
-ADDRESS_MAP_START(zr107_state::sharc_map)
- AM_RANGE(0x400000, 0x41ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
- AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram_r, dsp_dataram_w)
- AM_RANGE(0x600000, 0x6fffff) AM_DEVREADWRITE("k001005", k001005_device, read, write)
- AM_RANGE(0x700000, 0x7000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
-ADDRESS_MAP_END
+void zr107_state::sharc_map(address_map &map)
+{
+ map(0x400000, 0x41ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w));
+ map(0x500000, 0x5fffff).rw(this, FUNC(zr107_state::dsp_dataram_r), FUNC(zr107_state::dsp_dataram_w));
+ map(0x600000, 0x6fffff).rw(m_k001005, FUNC(k001005_device::read), FUNC(k001005_device::write));
+ map(0x700000, 0x7000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w));
+}
/*****************************************************************************/
diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp
index 9f47698b434..c7705338ded 100644
--- a/src/mame/drivers/zrt80.cpp
+++ b/src/mame/drivers/zrt80.cpp
@@ -100,28 +100,30 @@ WRITE8_MEMBER(zrt80_state::zrt80_38_w)
m_beep->set_state(1);
}
-ADDRESS_MAP_START(zrt80_state::mem_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM // Z25 - Main firmware
- AM_RANGE(0x1000, 0x1fff) AM_ROM // Z24 - Expansion
- AM_RANGE(0x4000, 0x43ff) AM_RAM // Board RAM
+void zrt80_state::mem_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x0fff).rom(); // Z25 - Main firmware
+ map(0x1000, 0x1fff).rom(); // Z24 - Expansion
+ map(0x4000, 0x43ff).ram(); // Board RAM
// Normally video RAM is 0x800 but could be expanded up to 8K
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") // Video RAM
-
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zrt80_state::io_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w )
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("crtc", mc6845_device, address_w)
- AM_RANGE(0x09, 0x09) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
- AM_RANGE(0x10, 0x17) AM_READ(zrt80_10_r)
- AM_RANGE(0x18, 0x1F) AM_READ_PORT("DIPSW2")
- AM_RANGE(0x20, 0x27) AM_READ_PORT("DIPSW3")
- AM_RANGE(0x30, 0x37) AM_WRITE(zrt80_30_w)
- AM_RANGE(0x38, 0x3F) AM_WRITE(zrt80_38_w)
-ADDRESS_MAP_END
+ map(0xc000, 0xdfff).ram().share("videoram"); // Video RAM
+
+}
+
+void zrt80_state::io_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x07).rw(m_8250, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
+ map(0x08, 0x08).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x09, 0x09).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x10, 0x17).r(this, FUNC(zrt80_state::zrt80_10_r));
+ map(0x18, 0x1F).portr("DIPSW2");
+ map(0x20, 0x27).portr("DIPSW3");
+ map(0x30, 0x37).w(this, FUNC(zrt80_state::zrt80_30_w));
+ map(0x38, 0x3F).w(this, FUNC(zrt80_state::zrt80_38_w));
+}
/* Input ports */
static INPUT_PORTS_START( zrt80 )
diff --git a/src/mame/drivers/zsbc3.cpp b/src/mame/drivers/zsbc3.cpp
index 081df4486fc..b5c11f06a14 100644
--- a/src/mame/drivers/zsbc3.cpp
+++ b/src/mame/drivers/zsbc3.cpp
@@ -59,20 +59,22 @@ private:
};
-ADDRESS_MAP_START(zsbc3_state::zsbc3_mem)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0x07ff ) AM_ROM
- AM_RANGE( 0x0800, 0xffff ) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zsbc3_state::zsbc3_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x0b) //AM_DEVREADWRITE("pio", z80pio_device, read, write) // the control bytes appear to be for a PIO
- AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
- AM_RANGE(0x38, 0x38) // unknown device, init byte = C3
-ADDRESS_MAP_END
+void zsbc3_state::zsbc3_mem(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).rom();
+ map(0x0800, 0xffff).ram();
+}
+
+void zsbc3_state::zsbc3_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x08, 0x0b); //AM_DEVREADWRITE("pio", z80pio_device, read, write) // the control bytes appear to be for a PIO
+ map(0x28, 0x2b).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w));
+ map(0x30, 0x33).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+ map(0x38, 0x38); // unknown device, init byte = C3
+}
/* Input ports */
static INPUT_PORTS_START( zsbc3 )
diff --git a/src/mame/drivers/zwackery.cpp b/src/mame/drivers/zwackery.cpp
index 1e0db425aad..1b29e4c1e82 100644
--- a/src/mame/drivers/zwackery.cpp
+++ b/src/mame/drivers/zwackery.cpp
@@ -102,19 +102,20 @@ private:
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(zwackery_state::zwackery_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x037fff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM
- AM_RANGE(0x084000, 0x084fff) AM_RAM
- AM_RANGE(0x100000, 0x10000f) AM_READ8(ptm_r, 0xff00) AM_DEVWRITE8("ptm", ptm6840_device, write, 0xff00)
- AM_RANGE(0x104000, 0x104007) AM_DEVREADWRITE8("pia0", pia6821_device, read, write, 0xff00)
- AM_RANGE(0x108000, 0x108007) AM_DEVREADWRITE8("pia1", pia6821_device, read, write, 0x00ff)
- AM_RANGE(0x10c000, 0x10c007) AM_DEVREADWRITE8("pia2", pia6821_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x802000, 0x803fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xc00000, 0xc00fff) AM_READWRITE8(spriteram_r, spriteram_w, 0x00ff)
-ADDRESS_MAP_END
+void zwackery_state::zwackery_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x037fff).rom();
+ map(0x080000, 0x080fff).ram();
+ map(0x084000, 0x084fff).ram();
+ map(0x100000, 0x10000f).r(this, FUNC(zwackery_state::ptm_r)).umask16(0xff00).w(m_ptm, FUNC(ptm6840_device::write)).umask16(0xff00);
+ map(0x104000, 0x104007).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0xff00);
+ map(0x108000, 0x108007).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff);
+ map(0x10c000, 0x10c007).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff);
+ map(0x800000, 0x800fff).ram().w(this, FUNC(zwackery_state::videoram_w)).share("videoram");
+ map(0x802000, 0x803fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0xc00000, 0xc00fff).rw(this, FUNC(zwackery_state::spriteram_r), FUNC(zwackery_state::spriteram_w)).umask16(0x00ff);
+}
//**************************************************************************
diff --git a/src/mame/drivers/zx.cpp b/src/mame/drivers/zx.cpp
index dccb0e973f9..91f1751d95f 100644
--- a/src/mame/drivers/zx.cpp
+++ b/src/mame/drivers/zx.cpp
@@ -51,36 +51,43 @@
/* Memory Maps */
-ADDRESS_MAP_START(zx_state::zx80_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM AM_MIRROR(0x3000)
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zx_state::zx81_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM AM_MIRROR(0x2000)
- AM_RANGE(0x4000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zx_state::ula_map)
- AM_RANGE(0x0000, 0x7fff) AM_READ(ula_low_r)
- AM_RANGE(0x8000, 0xffff) AM_READ(ula_high_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zx_state::zx80_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(zx80_io_r, zx80_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zx_state::zx81_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(zx81_io_r, zx81_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zx_state::pc8300_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(pc8300_io_r, zx81_io_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(zx_state::pow3000_io_map)
- AM_RANGE(0x0000, 0xffff) AM_READWRITE(pow3000_io_r, zx81_io_w)
-ADDRESS_MAP_END
+void zx_state::zx80_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom().mirror(0x3000);
+ map(0x4000, 0xffff).ram();
+}
+
+void zx_state::zx81_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().mirror(0x2000);
+ map(0x4000, 0xffff).ram();
+}
+
+void zx_state::ula_map(address_map &map)
+{
+ map(0x0000, 0x7fff).r(this, FUNC(zx_state::ula_low_r));
+ map(0x8000, 0xffff).r(this, FUNC(zx_state::ula_high_r));
+}
+
+void zx_state::zx80_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(zx_state::zx80_io_r), FUNC(zx_state::zx80_io_w));
+}
+
+void zx_state::zx81_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(zx_state::zx81_io_r), FUNC(zx_state::zx81_io_w));
+}
+
+void zx_state::pc8300_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(zx_state::pc8300_io_r), FUNC(zx_state::zx81_io_w));
+}
+
+void zx_state::pow3000_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).rw(this, FUNC(zx_state::pow3000_io_r), FUNC(zx_state::zx81_io_w));
+}
/* Input Ports */